mirror of
https://github.com/RevCurtisP/C02.git
synced 2024-11-29 01:49:19 +00:00
187 lines
6.0 KiB
Plaintext
187 lines
6.0 KiB
Plaintext
|
/***************************************
|
||
|
* file - Standard File Functions for *
|
||
|
* all Commodore 8 bit machines *
|
||
|
***************************************/
|
||
|
|
||
|
/* Device IDs */
|
||
|
enum {KEYBRD, CASST1, MODEM1, SCREEN,
|
||
|
PRNTR1, PRNTR2, PRNTR3, PRNTR4,
|
||
|
DRIVE1, DRIVE2, DRIVE3, DRIVE4,
|
||
|
DRIVE5, DRIVE6, DRIVE7, DRIVE8};
|
||
|
|
||
|
#define MWRITE $80 //Open File for Write
|
||
|
#define MREAD $00 //Open File for Read
|
||
|
|
||
|
#define MRELCT $00 //Relocate (Load at Specified Address)
|
||
|
#define MABSLT $80 //Absolute (Load at Address in File Header)
|
||
|
|
||
|
|
||
|
/* RS-232 Errors */
|
||
|
|
||
|
/* Other Errors */
|
||
|
#define ERRFNA $FF //Error - Function Not Available
|
||
|
|
||
|
/* Zero Page System Variables *
|
||
|
* for diagnostic purposes *
|
||
|
* Names subject to change */
|
||
|
char fsiost; //Kernal I/O Status Word
|
||
|
char fsnofl; //Number of Open I/O Files
|
||
|
char fslfno; //Current Logical File Number
|
||
|
char fsdvno; //Current Device Number
|
||
|
char fssadr; //Current Secondary Address
|
||
|
char fsfnlo,fsfnhi; //Pointer: Current Filename
|
||
|
char fsfnln; //Length of Current Filename
|
||
|
char fsrcvb; //Serial Bus Received Byte
|
||
|
|
||
|
/* System Variables */
|
||
|
char fsbufr[]; //String Concatenation Buffer
|
||
|
char fscntr; //Directory Entry Count
|
||
|
|
||
|
/* File Load *
|
||
|
* Loads File into Memory *
|
||
|
* Args: md - Mode | DriveID *
|
||
|
^ &n - Filename *
|
||
|
* Returns: Error Code (0=None) *
|
||
|
* Load Address */
|
||
|
char fload();
|
||
|
|
||
|
/* File Save *
|
||
|
* Save File from Memory *
|
||
|
* Args: md - Mode | driveid *
|
||
|
^ &n - Filename *
|
||
|
* Returns: Error Code (0=None) */
|
||
|
char fsave();
|
||
|
|
||
|
/* File Open *
|
||
|
* Opens File Specified by Name *
|
||
|
* Args: m - mode | driveid *
|
||
|
* &f - string containing filename *
|
||
|
* Returns: file pointer if successful *
|
||
|
0 if an error occurs */
|
||
|
char fopen();
|
||
|
|
||
|
/* File Close *
|
||
|
* Closes File Opened to File Pointer *
|
||
|
* Args: fp - file pointer */
|
||
|
char fclose();
|
||
|
|
||
|
/* End of File *
|
||
|
* Check for End of File Condition *
|
||
|
* Args: fp - file pointer *
|
||
|
* Returns: EOF Indicator *
|
||
|
* (0 if not at end of file *
|
||
|
* 255 if not implemented *
|
||
|
or non-zero EOF value) */
|
||
|
char feof();
|
||
|
|
||
|
/* File Error *
|
||
|
* Check File Error Indicator *
|
||
|
* Args: fp - file pointer *
|
||
|
* &s - string for error text *
|
||
|
* Returns: platform specific error number *
|
||
|
* (0 if no error *
|
||
|
* 255 if not implemented) */
|
||
|
char ferror();
|
||
|
|
||
|
/* Flush File Buffer *
|
||
|
* Flush File Output Buffer *
|
||
|
* Args: fp - file pointer *
|
||
|
* Returns: platform specific error number *
|
||
|
* (0 if no error) */
|
||
|
char fflush();
|
||
|
|
||
|
/* Read Character from File *
|
||
|
* Args: fp - file pointer *
|
||
|
* Returns: ASCII value of character, *
|
||
|
* platform specific error number *
|
||
|
* (0 if no error *
|
||
|
* 255 if not implemented) */
|
||
|
char fgetc();
|
||
|
|
||
|
/* Load to Memory from File *
|
||
|
* Args: md - mode + device# *
|
||
|
* &f - string containing filename *
|
||
|
* Requires: setdst(); *
|
||
|
* Returns: platform specific error *
|
||
|
* (0 if no error *
|
||
|
* 255 if not implemented) *
|
||
|
* end address of load */
|
||
|
char fload();
|
||
|
|
||
|
/* Write Character to File *
|
||
|
* Args: fp - file pointer *
|
||
|
* c - ASCII character to write *
|
||
|
* Returns: platform specific error *
|
||
|
* (0 if no error *
|
||
|
* 255 if not implemented) */
|
||
|
char fputc();
|
||
|
|
||
|
/* Read String from File *
|
||
|
* Buffers up to 128 characters *
|
||
|
* until C/R is pressed *
|
||
|
* Args: fp - file pointer *
|
||
|
* &s - string read from file *
|
||
|
* Returns: number of characters read, *
|
||
|
* platform specific error *
|
||
|
* (0 if no error *
|
||
|
* 255 if not implemented) */
|
||
|
char fgets();
|
||
|
|
||
|
/* Write String to File *
|
||
|
* Writes up to 128 characters of a *
|
||
|
* null terminated string *
|
||
|
* Args: fp - file pointer *
|
||
|
* &s - string to print from *
|
||
|
* Returns: platform specific error *
|
||
|
* (0 if no error *
|
||
|
* 255 if not implemented) */
|
||
|
char fputs();
|
||
|
|
||
|
/* Write Line to File *
|
||
|
* Write String to File followed by C/R *
|
||
|
* Args: fp - file pointer *
|
||
|
* &s - string to print from *
|
||
|
* Returns: ending position in string *
|
||
|
* 255 if error during write */
|
||
|
char fputln();
|
||
|
|
||
|
/* Read Bytes from File *
|
||
|
* Reads until EOF is reached *
|
||
|
* Args: fp - file pointer *
|
||
|
* n - number of bytes to read *
|
||
|
* Requires: setdst(); *
|
||
|
* Returns: number of bytes read, *
|
||
|
* platform specific error *
|
||
|
* (0 if no error *
|
||
|
* 255 if not implemented) */
|
||
|
char fread();
|
||
|
|
||
|
/* Save Memory to File *
|
||
|
* Args: d - device# *
|
||
|
* &f - string containing filename *
|
||
|
* Requires: setsrc(); setdst(); *
|
||
|
* Returns: platform specific error *
|
||
|
* (0 if no error *
|
||
|
* 255 if not implemented) */
|
||
|
char fload();
|
||
|
|
||
|
/* Verify File against Memory *
|
||
|
* Args: md - mode + device# *
|
||
|
* &f - string containing filename *
|
||
|
* Requires: setdst(); *
|
||
|
* Returns: platform specific error *
|
||
|
* (0 if no error *
|
||
|
* 255 if not implemented) *
|
||
|
* end address of verify */
|
||
|
char fload();
|
||
|
|
||
|
/* Write Bytes to File *
|
||
|
* Args: fp - file pointer *
|
||
|
* n - number of bytes to write *
|
||
|
* Requires: setdst(); *
|
||
|
* Returns: number of bytes written, *
|
||
|
* platform specific error *
|
||
|
* (0 if no error *
|
||
|
* 255 if not implemented) */
|
||
|
char fwrite();
|