| C64 ROM | Routines |
| Prev: F864 | Up: Map | Next: F8D0 |
|
Used by the routine at F841.
|
||||
| F875 | A0 7F | LDY #$7F | disable all interrupts | |
| F877 | 8C 0D DC | STY $DC0D | save VIA 1 ICR, disable all interrupts | |
| F87A | 8D 0D DC | STA $DC0D | save VIA 1 ICR, enable interrupts according to A | |
|
check RS232 bus idle
|
||||
| F87D | AD 0E DC | LDA $DC0E | read VIA 1 CRA | |
| F880 | 09 19 | ORA #$19 | load timer B, timer B single shot, start timer B | |
| F882 | 8D 0F DC | STA $DC0F | save VIA 1 CRB | |
| F885 | 29 91 | AND #%10010001 | mask x00x 000x, TOD clock, load timer A, start timer A | |
| F887 | 8D A2 02 | STA $02A2 | save VIA 1 CRB shadow copy | |
| F88A | 20 A4 F0 | JSR $F0A4 | ||
| F88D | AD 11 D0 | LDA $D011 | read the vertical fine scroll and control register | |
| F890 | 29 EF | AND #%11101111 | mask xxx0 xxxx, blank the screen | |
| F892 | 8D 11 D0 | STA $D011 | save the vertical fine scroll and control register | |
| F895 | AD 14 03 | LDA $0314 | get IRQ vector low byte | |
| F898 | 8D 9F 02 | STA $029F | save IRQ vector low byte | |
| F89B | AD 15 03 | LDA $0315 | get IRQ vector high byte | |
| F89E | 8D A0 02 | STA $02A0 | save IRQ vector high byte | |
| F8A1 | 20 BD FC | JSR $FCBD | set the tape vector | |
| F8A4 | A9 02 | LDA #$02 | set copies count. the first copy is the load copy, the | |
|
second copy is the verify copy
|
||||
| F8A6 | 85 BE | STA $BE | save copies count | |
| F8A8 | 20 97 FB | JSR $FB97 | new tape byte setup | |
| F8AB | A5 01 | LDA $01 | read the 6510 I/O port | |
| F8AD | 29 1F | AND #%00011111 | mask 000x xxxx, cassette motor on ?? | |
| F8AF | 85 01 | STA $01 | save the 6510 I/O port | |
| F8B1 | 85 C0 | STA $C0 | set the tape motor interlock | |
|
326656 cycle delay, allow tape motor speed to stabilise
|
||||
| F8B3 | A2 FF | LDX #$FF | outer loop count | |
| F8B5 | A0 FF | LDY #$FF | inner loop count | |
| F8B7 | 88 | DEY | decrement inner loop count | |
| F8B8 | D0 FD | BNE $F8B7 | loop if more to do | |
| F8BA | CA | DEX | decrement outer loop count | |
| F8BB | D0 F8 | BNE $F8B5 | loop if more to do | |
| F8BD | 58 | CLI | enable tape interrupts | |
| F8BE | AD A0 02 | LDA $02A0 | get saved IRQ high byte | |
| F8C1 | CD 15 03 | CMP $0315 | compare with the current IRQ high byte | |
| F8C4 | 18 | CLC | flag ok | |
| F8C5 | F0 15 | BEQ $F8DC | if tape write done go clear saved IRQ address and exit | |
| F8C7 | 20 D0 F8 | JSR $F8D0 | scan stop key and flag abort if pressed | |
|
note if STOP was pressed the return is to the routine that called this one and not here
|
||||
| F8CA | 20 BC F6 | JSR $F6BC | increment real time clock | |
| F8CD | 4C BE F8 | JMP $F8BE | loop | |
| Prev: F864 | Up: Map | Next: F8D0 |