diff --git a/src/system/boot/platform/amiga_m68k/Handle.cpp b/src/system/boot/platform/amiga_m68k/Handle.cpp new file mode 100644 index 0000000000..c8f17a0bfb --- /dev/null +++ b/src/system/boot/platform/amiga_m68k/Handle.cpp @@ -0,0 +1,117 @@ +/* + * Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved. + * Distributed under the terms of the MIT License. + */ + + +#include +#include +#include + +#include "Handle.h" +#include "toscalls.h" + +/* + * (X)BIOS supports char and block devices with a separate namespace + * for char devs handle is {DEV_PRINTER, ... DEV_CONSOLE, ...} + * for block devs handle is either: + * - the partition number {0=A:, 2=C:...} in logical mode. + * - the drive number {0=A:, 1=B:, 2=ACSI-0, 10=SCSI-0, ...} + * in phys mode (RW_NOTRANSLATE). + * BlockHandle is in devices.cpp + * + * XXX: handle network devices ? not sure how TOS net extensions do this + * not sure it'll ever be supported anyway. + * XXX: BIOSDrive/BIOSHandle : public BlockHandle ? + */ + +Handle::Handle(int handle) + : + fHandle(handle) +{ +} + + +Handle::Handle(void) + : + fHandle(-1) +{ +} + + +Handle::~Handle() +{ +} + + +void +Handle::SetHandle(int handle) +{ + fHandle = handle; +} + + +ssize_t +Handle::ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize) +{ + return B_ERROR; +} + + +ssize_t +Handle::WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize) +{ + return B_ERROR; +} + + +off_t +Handle::Size() const +{ + // ToDo: fix this! + return 1024LL * 1024 * 1024 * 1024; + // 1024 GB +} + + +// #pragma mark - + + +CharHandle::CharHandle(int handle) + : Handle(handle) +{ +} + + +CharHandle::CharHandle(void) + : Handle() +{ +} + + +CharHandle::~CharHandle() +{ +} + + +ssize_t +CharHandle::ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize) +{ + char *string = (char *)buffer; + int i; + + + return bufferSize; +} + + +ssize_t +CharHandle::WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize) +{ + const char *string = (const char *)buffer; + int i; + + return bufferSize; +} + + diff --git a/src/system/boot/platform/amiga_m68k/Handle.h b/src/system/boot/platform/amiga_m68k/Handle.h new file mode 100644 index 0000000000..e9b5134b47 --- /dev/null +++ b/src/system/boot/platform/amiga_m68k/Handle.h @@ -0,0 +1,49 @@ +/* + * Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef HANDLE_H +#define HANDLE_H + + +#include + + +#ifdef __cplusplus + +class Handle : public ConsoleNode { + public: + Handle(int handle); + Handle(); + virtual ~Handle(); + + void SetHandle(int handle); + + virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize); + virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize); + + virtual off_t Size() const; + + protected: + int fHandle; +}; + +/* character devices */ +class CharHandle : public Handle { + public: + CharHandle(int handle); + CharHandle(); + virtual ~CharHandle(); + + virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize); + virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize); + + protected: +}; + +/* block devices */ +/* cf. devices.cpp */ + +#endif /* __cplusplus */ + +#endif /* HANDLE_H */