;C02 Module file.h02 Assembly Lamnguage ;Template Code ;Sample Device Numbers CASST1 EQU 0 MODEM1 EQU 2 PRNTR1 EQU 3 PRNTR2 EQU 4 DRIVE1 EQU 5 DRIVE2 EQU 6 DRIVE3 EQU 7 DRIVE4 EQU 8 ;Disk Numbers (Within Drive) DISK0 EQU $00 DISK1 EQU $40 ;File Open Modes MWRITE EQU $80 MREAD EQU $00 ;fflush(chan) - Flush Write Buffer to File ;Args: A = Mode + Drive ID ;Returns: A = File Channel (0=File Not Opened) FFLUSH: ;Return Success (fall through) ;fopen(args, &name) - Open File ;Args: A = Mode + Drive ID ; Y,X = Pointer to File Name ;Returns: A = File Channel (0=File Not Opened) FOPEN: LDA $00 ;Return File Not Opened (fall through) ;fclose(chan) - Close File ;Args: A = Channel Number FCLOSE: RTS ;No Action ;fgetc(chan) - Read Character from File ;Args: A = Channel Number ;Returns: A = Character ; Y = Error Code ; $00 - Success ; $FF - Not Implemented FGETC: ;Return Error - Not Implemented (fall through) ;fgets(chan, &s) - Read String from File ;Args: A = Channel Number ; Y,X = Pointer to String Array ;Returns: A = Number of Bytes Read ; Y = Error Code ; $00 - Success ; $FF - Not Implemented FGETS: ;Return Error - Not Implemented (fall through) ;fread(chan, count) - Read Bytes from File ;Args: A = Channel Number ; Y = Number of Bytes to Read ;Uses: DSTLO,DSTHI - Pointer Destination Array ;Returns: A = Number of Bytes Read ; Y = Error Code ; $00 - Success ; $FF - Not Implemented FREAD: ;Return Error - Not Implemented (fall through) ;fwrite(chan, count) - Write Bytes to File ;Args: A = Channel Number ; Y = Number of Bytes to Write ;Uses: DSTLO,DSTHI - Pointer to Source Array ;Returns: A = Number of Bytes Written ; Y = Error Code ; $00 - Success ; $FF - Not Implemented FWRITE: LDA $00 ;Return 0 Bytes Read/Written LDY $FF ;and Error - Not Implemented RTS ;feof(chan) - Check for End of File ;Args: A = Channel Number ;Returns: A = Platform Specific EOF Value ; $00 - Not End of File ; $FF - Not Implemented FEOF: ;Return Error - Not Implemented (fall through) ;ferror(chan) - Check for Error ;Args: A = Channel Number ;Returns: A = Error Code ; $00 - Success ; $FF - Not Implemented FERROR: ;Return Error - Not Implemented (fall through) ;fputc(chan, char) - Write Character to File ;Args: A = Channel Number ; Y = Character to Write ;Returns: A = Error Code ; $00 - Success ; $FF - Not Implemented FPUTC: ;Return Error - Not Implemented (fall through) ;fputs(chan, &s) - Write String from File ;Args: A = Channel Number ; Y,X = Pointer to String Array ;Returns: A = Error Code ; $00 - Success ; $FF - Not Implemented FPUTS: ;Return Error - Not Implemented (fall through) ;fload(name) - Load File into Memory ;Args: A = Option + DriveID ; Y,X = Pointer to File Name ;Uses: SRCLO,SRCHI = Start Address ; DSTLO,DSTHI = End Address ;Returns: A = Error Code ; $00 - Success ; $FF - Not Implemented ; X,Y = Load Address FLOAD: ;Return Error - Not Implemented (fall through) ;fsave(name) - Save File from Memory ;Args: A = Option + DriveID ;Args: Y,X = Pointer to File Name ;Uses: SRCLO,SRCHI = Start Address ; DSTLO,DSTHI = End Address ;Returns: A = Error Code ; $00 - Success ; $FF - Not Implemented FSAVE: LDA $FF ;Return Error - Not Implemented RTS ;Internal routines are all prefixed with FS ;fsetup() - Set Parameters for File Open ;Platform Specific ;fsinit() - Initialize Control Block ;For platforms that use File or Parameter Control Blocks ;fname(&name) - Set File Name ;If a seperate OS Call to set the File Name ;or a terminator other than NUL is required