]> git.sur5r.net Git - cc65/commitdiff
completed and testet cbm_read()
authormrintsch <mrintsch@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 21 Mar 2001 20:59:27 +0000 (20:59 +0000)
committermrintsch <mrintsch@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 21 Mar 2001 20:59:27 +0000 (20:59 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@639 b7a2c559-68d2-44c3-8de9-860c34a00d81

include/cbm.h
libsrc/cbm/Makefile
libsrc/cbm/cbm_read.c

index 80ad0de0bfe921566c9daf7352279bb067358d4e..b26673e1c69f4ab7718c612a66f5acd8f8a84936 100644 (file)
@@ -130,8 +130,12 @@ void __fastcall__ cbm_close (unsigned char lfn);
 /* Closes a file */
 
 int cbm_read(unsigned char lfn, void* buffer, unsigned int size);
+/* Reads up to "size" bytes from a file to "buffer".
+ * Returns the number of actually read bytes, 0 if there are no bytes left (EOF)
+ * or -1 in case of an error. _oserror contains an errorcode then (see table below).
+ */
 
-/* Errorcodes of load, save, open functions:
+/* Errorcodes of cbm_* I/O functions:
  *
  * errorcode   BASIC error
  *     1   =   too many files
index 3a184fe70003840d7b2953d13f291e15ed1f87e3..5bc350402c8f466c30e01c97b5bfc3bb6580150d 100644 (file)
@@ -23,5 +23,5 @@ S_OBJS = ctype.o getenv.o gotoxy.o gotox.o gotoy.o where.o\
 all:   $(C_OBJS) $(S_OBJS)
 
 clean:
-       @rm -f *~ $(C_OBJS:.c=.s) $(C_OBJS) $(S_OBJS)
+       @rm -f *~ *.bck $(C_OBJS:.o=.s) $(C_OBJS) $(S_OBJS)
 
index ce83bc91ef708a4656f77e382640f5bbc8157d16..1efd203a65c5699db420c28e108c9d16f1ce1448 100644 (file)
@@ -1,3 +1,8 @@
+/*
+ * Marc 'BlackJack' Rintsch, 19.03.2001
+ *
+ * int cbm_read(unsigned char lfn, void* buffer, unsigned int size);
+ */
 
 #include <cbm.h>
 
@@ -12,9 +17,9 @@ int cbm_read(unsigned char lfn, void* buffer, unsigned int size)
     
     bytesread = 0;
     
-    while (bytesread<size) {
+    while (bytesread<size && !cbm_k_readst()) {
         tmp = cbm_k_basin();
-        if (cbm_k_readst()) break;
+        if (cbm_k_readst() & 0xBF) break;
         ((unsigned char*)buffer)[bytesread++] = tmp;
     }