| C64 ROM | Routines |
| Prev: F250 | Up: Map | Next: F2EE |
|
|
||||
| F291 | 20 14 F3 | JSR $F314 | find file A | |
| F294 | F0 02 | BEQ $F298 | if file found go close it | |
| F296 | 18 | CLC | else the file was closed so just flag ok | |
| F297 | 60 | RTS | ||
|
file found so close it
|
||||
| F298 | 20 1F F3 | JSR $F31F | set file details from table,X | |
| F29B | 8A | TXA | copy file index to A | |
| F29C | 48 | PHA | save file index | |
| F29D | A5 BA | LDA $BA | get the device number | |
| F29F | F0 50 | BEQ $F2F1 | if it is the keyboard go restore the index and close the file | |
| F2A1 | C9 03 | CMP #$03 | compare the device number with the screen | |
| F2A3 | F0 4C | BEQ $F2F1 | if it is the screen go restore the index and close the file | |
| F2A5 | B0 47 | BCS $F2EE | if > screen go do serial bus device close | |
| F2A7 | C9 02 | CMP #$02 | compare the device with the RS232 device | |
| F2A9 | D0 1D | BNE $F2C8 | if not the RS232 device go ?? | |
|
else close RS232 device
|
||||
| F2AB | 68 | PLA | restore file index | |
| F2AC | 20 F2 F2 | JSR $F2F2 | close file index X | |
| F2AF | 20 83 F4 | JSR $F483 | initialise RS232 output | |
| F2B2 | 20 27 FE | JSR $FE27 | read the top of memory | |
| F2B5 | A5 F8 | LDA $F8 | get the RS232 input buffer pointer high byte | |
| F2B7 | F0 01 | BEQ $F2BA | if no RS232 input buffer go ?? | |
| F2B9 | C8 | INY | else reclaim RS232 input buffer memory | |
| F2BA | A5 FA | LDA $FA | get the RS232 output buffer pointer high byte | |
| F2BC | F0 01 | BEQ $F2BF | if no RS232 output buffer skip the reclaim | |
| F2BE | C8 | INY | else reclaim the RS232 output buffer memory | |
| F2BF | A9 00 | LDA #$00 | clear A | |
| F2C1 | 85 F8 | STA $F8 | clear the RS232 input buffer pointer high byte | |
| F2C3 | 85 FA | STA $FA | clear the RS232 output buffer pointer high byte | |
| F2C5 | 4C 7D F4 | JMP $F47D | go set the top of memory to F0xx | |
|
is not the RS232 device
|
||||
| F2C8 | A5 B9 | LDA $B9 | get the secondary address | |
| F2CA | 29 0F | AND #%00001111 | mask the device # | |
| F2CC | F0 23 | BEQ $F2F1 | if ?? restore index and close file | |
| F2CE | 20 D0 F7 | JSR $F7D0 | get tape buffer start pointer in XY | |
| F2D1 | A9 00 | LDA #$00 | character $00 | |
| F2D3 | 38 | SEC | flag the tape device | |
| F2D4 | 20 DD F1 | JSR $F1DD | output the character to the cassette or RS232 device | |
| F2D7 | 20 64 F8 | JSR $F864 | initiate tape write | |
| F2DA | 90 04 | BCC $F2E0 | ||
| F2DC | 68 | PLA | ||
| F2DD | A9 00 | LDA #$00 | ||
| F2DF | 60 | RTS | ||
| F2E0 | A5 B9 | LDA $B9 | get the secondary address | |
| F2E2 | C9 62 | CMP #$62 | ||
| F2E4 | D0 0B | BNE $F2F1 | if not ?? restore index and close file | |
| F2E6 | A9 05 | LDA #$05 | set logical end of the tape | |
| F2E8 | 20 6A F7 | JSR $F76A | write tape header | |
| F2EB | 4C F1 F2 | JMP $F2F1 | restore index and close file | |
| Prev: F250 | Up: Map | Next: F2EE |