diff --git a/LIBSN.ZIP b/LIBSN.ZIP new file mode 100644 index 0000000..8d16ec3 Binary files /dev/null and b/LIBSN.ZIP differ diff --git a/pcdrv.c b/pcdrv.c new file mode 100644 index 0000000..718041c --- /dev/null +++ b/pcdrv.c @@ -0,0 +1,80 @@ +int waitForSIODone( int command ){ + + // This should wait for a signal from the SIO to send when it's done + // command can be 0 open, 1 close, 2 seek, 3 read, 4 write + // Returns val < 0 if wrong + +}; + +#define OPEN 0 +#define CLOSE 1 +#define SEEK 2 +#define READ 3 +#define WRITE 4 +#define CREATE 5 + +int open(const char * filename, int attributes) { + + // Send filename and attributes (ro,wo,rw..) + // expects an int referring to a file descriptor on the PC + + int fd = 0; // File Descriptor https://en.wikipedia.org/wiki/File_descriptor + + printf("open:%s:%i:%08x", filename, attributes, &fd); + + waitForSIODone(0) + + return fd; // If all is well, returns a positive int . If -1, wrong + +}; + +int create(const char * filename, int attributes) { + + // Send filename and attributes (ro,wo,rw..) + // expects an int referring to a file descriptor on the PC + + int fd = 0; // File Descriptor https://en.wikipedia.org/wiki/File_descriptor + + printf("create:%s:%i:%08x", filename, attributes, &fd); + + waitForSIODone(5); // Should return int fd, -1 else + + return fd; // If all is well, returns a positive int . If -1, wrong + +}; + +int close( int fd ) { + + // Send the close command and fd as int + + printf("close:%s:%08x", filename, fd); + + return waitForSIODone(1); // Should return 1 if ok, 0 if wrong, or -1 if wrong ? + +}; + +int seek( int fd, int offset, int accessMode){ + + // Move file pointer in fd at offset + // Access mode can be 0 abs, 1 rel to start, 2 rel to end + + printf("seek:%i:%08x:%i", fd, offset, accessMode); + + return waitForSIODone(2); + +}; + +int read( int fd, int len, char * buffer ){ + + // Read len bytes of fd and put them in buff + + int count = 0; + + printf("read:%i:%08x:%i", fd, len, buffer, count); + + waitForSIODone(3); + + return count; + +}; +