| C64 ROM | Routines | 
| Prev: FB97 | Up: Map | Next: FBC8 | 
| 
 
Used by the routine at FBCD.
 
this routine tests the least significant bit in the tape write byte and sets VIA 2 T2 depending on the state of the bit. if the bit is a 1 a time of $00B0 cycles is set, if the bot is a 0 a time of $0060 cycles is set. note that this routine does not shift the bits of the tape write byte but uses a copy of that byte, the byte itself is shifted elsewhere
 
 | 
||||
| FBA6 | A5 BD | LDA $BD | get tape write byte | |
| FBA8 | 4A | LSR A | shift lsb into Cb | |
| FBA9 | A9 60 | LDA #$60 | set time constant low byte for bit = 0 | |
| FBAB | 90 02 | BCC $FBAF | branch if bit was 0 | |
| 
 
This entry point is used by the routine at FBCD.
 
set time constant for bit = 1 and toggle tape
 
 | 
||||
| FBAD | A9 B0 | LDA #$B0 | set time constant low byte for bit = 1 | |
| 
 
This entry point is used by the routine at FC6A.
 
write time constant and toggle tape
 
 | 
||||
| FBAF | A2 00 | LDX #$00 | set time constant high byte | |
| 
 
This entry point is used by the routine at FBCD.
 
write time constant and toggle tape
 
 | 
||||
| FBB1 | 8D 06 DC | STA $DC06 | save VIA 1 timer B low byte | |
| FBB4 | 8E 07 DC | STX $DC07 | save VIA 1 timer B high byte | |
| FBB7 | AD 0D DC | LDA $DC0D | read VIA 1 ICR | |
| FBBA | A9 19 | LDA #$19 | load timer B, timer B single shot, start timer B | |
| FBBC | 8D 0F DC | STA $DC0F | save VIA 1 CRB | |
| FBBF | A5 01 | LDA $01 | read the 6510 I/O port | |
| FBC1 | 49 08 | EOR #%00001000 | toggle tape out bit | |
| FBC3 | 85 01 | STA $01 | save the 6510 I/O port | |
| FBC5 | 29 08 | AND #%00001000 | mask tape out bit | |
| FBC7 | 60 | RTS | ||
| Prev: FB97 | Up: Map | Next: FBC8 |