C64 ROM | Routines |
Prev: EA24 | Up: Map | Next: EA87 |
|
||||
EA31 | 20 EA FF | JSR $FFEA | increment the real time clock | |
EA34 | A5 CC | LDA $CC | get the cursor enable, $00 = flash cursor | |
EA36 | D0 29 | BNE $EA61 | if flash not enabled skip the flash | |
EA38 | C6 CD | DEC $CD | decrement the cursor timing countdown | |
EA3A | D0 25 | BNE $EA61 | if not counted out skip the flash | |
EA3C | A9 14 | LDA #$14 | set the flash count | |
EA3E | 85 CD | STA $CD | save the cursor timing countdown | |
EA40 | A4 D3 | LDY $D3 | get the cursor column | |
EA42 | 46 CF | LSR $CF | shift b0 cursor blink phase into carry | |
EA44 | AE 87 02 | LDX $0287 | get the colour under the cursor | |
EA47 | B1 D1 | LDA ($D1),Y | get the character from current screen line | |
EA49 | B0 11 | BCS $EA5C | branch if cursor phase b0 was 1 | |
EA4B | E6 CF | INC $CF | set the cursor blink phase to 1 | |
EA4D | 85 CE | STA $CE | save the character under the cursor | |
EA4F | 20 24 EA | JSR $EA24 | calculate the pointer to colour RAM | |
EA52 | B1 F3 | LDA ($F3),Y | get the colour RAM byte | |
EA54 | 8D 87 02 | STA $0287 | save the colour under the cursor | |
EA57 | AE 86 02 | LDX $0286 | get the current colour code | |
EA5A | A5 CE | LDA $CE | get the character under the cursor | |
EA5C | 49 80 | EOR #%10000000 | toggle b7 of character under cursor | |
EA5E | 20 1C EA | JSR $EA1C | save the character and colour to the screen @ the cursor | |
EA61 | A5 01 | LDA $01 | read the 6510 I/O port | |
EA63 | 29 10 | AND #%00010000 | mask 000x 0000, the cassette switch sense | |
EA65 | F0 0A | BEQ $EA71 | if the cassette sense is low skip the motor stop | |
the cassette sense was high, the switch was open, so turn off the motor and clear the interlock
|
||||
EA67 | A0 00 | LDY #$00 | clear Y | |
EA69 | 84 C0 | STY $C0 | clear the tape motor interlock | |
EA6B | A5 01 | LDA $01 | read the 6510 I/O port | |
EA6D | 09 20 | ORA #%00100000 | mask xx1x xxxx, turn off the motor | |
EA6F | D0 08 | BNE $EA79 | go save the port value, branch always | |
the cassette sense was low so turn the motor on, perhaps
|
||||
EA71 | A5 C0 | LDA $C0 | get the tape motor interlock | |
EA73 | D0 06 | BNE $EA7B | if the cassette interlock <> 0 don't turn on motor | |
EA75 | A5 01 | LDA $01 | read the 6510 I/O port | |
EA77 | 29 1F | AND #%00011111 | mask xx0x xxxx, turn on the motor | |
EA79 | 85 01 | STA $01 | save the 6510 I/O port | |
EA7B | 20 87 EA | JSR $EA87 | scan the keyboard | |
EA7E | AD 0D DC | LDA $DC0D | read VIA 1 ICR, clear the timer interrupt flag | |
EA81 | 68 | PLA | pull Y | |
EA82 | A8 | TAY | restore Y | |
EA83 | 68 | PLA | pull X | |
EA84 | AA | TAX | restore X | |
EA85 | 68 | PLA | restore A | |
EA86 | 40 | RTI |
Prev: EA24 | Up: Map | Next: EA87 |