Prev: F864 Up: Map Next: F8D0
F875: tape read/write
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