Splitting the Atom back exit forward page 22
F96E to F9A1 A subroutine which loads a file. This is normally called by JSR FFE0 (OSLOAD - pointed to by [20C] ).
X must point at zero-page vectors as follows:
0,X = file name string; 2,X 3,X = first data to be put here; if bit 7 of X is 0 the file's own start address is used.
F99A Print a series of spaces by INY until Y = 0F, so up to 15 spaces can be printed
(note - it's easier to use CA46 and monitor ?7).
F9A2 to FA07 A subroutine called by the F96E routine.
FA08 to FA18 A subroutine which increments a vector (2 bytes in page zero pointed at by X (X,X+1), and each time does a CMP with the vector pointed at by X+2,X+3. It returns with the zero flag set if the vectors are equal, otherwise clear.
FA19 to FA1F Executes the *MON and *NOMON commands.
FA19 = *NOMON, and FA1A = *MON.
FA20 to FA29 Executes the *RUN command.
FA2A to FA64 Executes the *CAT command.
FA65 to FA6A A subroutine that calls the routine at F893. If the data read by F893 were invalid then this routine prints "MON?" followed by a break.
FA76 to FA85 A subroutine to check that there is no rubbish after a valid * command. Only a carriage return or spaces leading to a carriage return are allowed. Otherwise it prints prints "MON?" followed by a break.
FA86 to FABA Saves an unnamed file. Called by FAE5.
FABB to FAE4 Executes the *SAVE command. This routine calls the operating system save-file routine pointed at by (20E), which normally contains FAE5.
FAE5 to FB3A Save file routine normally called by OSSAVE routines.
Enter with X pointing at a table of addresses in page zero as follows:
0,X 1,X file name string
2,X 3,X reload address
4,X 5,X execution address
6,X 7,X first byte to be saved
8,X 9,X last  byte + 1 to be saved
FB3B to FB89 Routines called by the save-file routine which commit the file to a tape. Useful parts are:
FB7D wait 2 seconds
FB81 wait 0.5 seconds
FB83 wait X/60 seconds *
FB8C wait 0.1 seconds
X = 0 on return from these routines.

* This uses the vertical sync signal, so waits for 60 video fields. It is thus independent of CPU speed.
The 6847 chip is internally hard-wired for 60 Hz field rate, but if it were recreated with a 50 Hz frame rate then this routine would wait 60/50 = 1.2 seconds instead.

back exit forward