Prev: E8EA Up: Map Next: E9C8
E965: open up a space on the screen
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