C64 ROM | Routines |
Prev: E8EA | Up: Map | Next: E9C8 |
Used by the routine at E716.
|
||||
E965 | A6 D6 | LDX $D6 | get the cursor row | |
This entry point is used by the routine at E6B6.
|
||||
E967 | E8 | INX | increment the row | |
E968 | B5 D9 | LDA $D9,X | get the start of line X pointer high byte | |
E96A | 10 FB | BPL $E967 | loop if not start of logical line | |
E96C | 8E A5 02 | STX $02A5 | save the screen row marker | |
E96F | E0 18 | CPX #$18 | compare it with the last line | |
E971 | F0 0E | BEQ $E981 | if = last line go ?? | |
E973 | 90 0C | BCC $E981 | if < last line go ?? | |
else it was > last line
|
||||
E975 | 20 EA E8 | JSR $E8EA | scroll the screen | |
E978 | AE A5 02 | LDX $02A5 | get the screen row marker | |
E97B | CA | DEX | decrement the screen row marker | |
E97C | C6 D6 | DEC $D6 | decrement the cursor row | |
E97E | 4C DA E6 | JMP $E6DA | add this row to the current logical line and return | |
E981 | A5 AC | LDA $AC | copy tape buffer pointer | |
E983 | 48 | PHA | save it | |
E984 | A5 AD | LDA $AD | copy tape buffer pointer | |
E986 | 48 | PHA | save it | |
E987 | A5 AE | LDA $AE | copy tape buffer end pointer | |
E989 | 48 | PHA | save it | |
E98A | A5 AF | LDA $AF | copy tape buffer end pointer | |
E98C | 48 | PHA | save it | |
E98D | A2 19 | LDX #$19 | set to end line + 1 for predecrement loop | |
E98F | CA | DEX | decrement the line number | |
E990 | 20 F0 E9 | JSR $E9F0 | fetch a screen address | |
E993 | EC A5 02 | CPX $02A5 | compare it with the screen row marker | |
E996 | 90 0E | BCC $E9A6 | if < screen row marker go ?? | |
E998 | F0 0C | BEQ $E9A6 | if = screen row marker go ?? | |
E99A | BD EF EC | LDA $ECEF,X | else get the start of the previous line low byte from the ROM table | |
E99D | 85 AC | STA $AC | save previous line pointer low byte | |
E99F | B5 D8 | LDA $D8,X | get the start of the previous line pointer high byte | |
E9A1 | 20 C8 E9 | JSR $E9C8 | shift the screen line down | |
E9A4 | 30 E9 | BMI $E98F | loop, branch always | |
E9A6 | 20 FF E9 | JSR $E9FF | clear screen line X | |
E9A9 | A2 17 | LDX #$17 | ||
E9AB | EC A5 02 | CPX $02A5 | compare it with the screen row marker | |
E9AE | 90 0F | BCC $E9BF | ||
E9B0 | B5 DA | LDA $DA,X | ||
E9B2 | 29 7F | AND #$7F | ||
E9B4 | B4 D9 | LDY $D9,X | get start of line X pointer high byte | |
E9B6 | 10 02 | BPL $E9BA | ||
E9B8 | 09 80 | ORA #$80 | ||
E9BA | 95 DA | STA $DA,X | ||
E9BC | CA | DEX | ||
E9BD | D0 EC | BNE $E9AB | ||
E9BF | AE A5 02 | LDX $02A5 | get the screen row marker | |
E9C2 | 20 DA E6 | JSR $E6DA | add this row to the current logical line | |
E9C5 | 4C 58 E9 | JMP $E958 | restore the tape buffer pointers and exit |
Prev: E8EA | Up: Map | Next: E9C8 |