fixed DEL key on the first column of the second part of logical line
This commit is contained in:
1 parent
33b8e2537e
commit
bb60a10f51
8 files changed
+79
-47
No files matched your search
@@ -13,10 +13,89 @@ chrout_screen_DEL:
|
||||
jmp chrout_screen_quote
|
||||
!:
|
||||
ldy PNTR
|
||||
beq chrout_screen_del_column_0
|
||||
cpy #40
|
||||
bne chrout_screen_del_column_normal
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
chrout_screen_del_column_40:
|
||||
|
||||
// First column of the extended line - decrement USER/PNT for copying
|
||||
|
||||
#if HAS_OPCODES_65CE02
|
||||
dew USER
|
||||
dew PNT
|
||||
#else
|
||||
lda USER+0
|
||||
bne !+
|
||||
dec USER+1
|
||||
dec PNT+1
|
||||
!:
|
||||
dec USER+0
|
||||
dec PNT+0
|
||||
#endif
|
||||
|
||||
// Copy characters
|
||||
ldx #39
|
||||
ldy #0
|
||||
|
||||
jsr chrout_screen_del_copy_loop
|
||||
|
||||
// Finish by moving the cursor left
|
||||
jmp chrout_screen_CRSR_LEFT
|
||||
|
||||
chrout_screen_del_column_normal:
|
||||
|
||||
// We need to scroll back the rest of the logical line
|
||||
|
||||
// First reduce PNTR to 0-39 range
|
||||
jsr screen_get_clipped_PNTR
|
||||
sty PNTR
|
||||
|
||||
// Now get the offset to the last logical line character
|
||||
jsr screen_get_logical_line_end_ptr
|
||||
tya
|
||||
|
||||
// Substract the PNTR value, this will tell us how many characters we need to move
|
||||
sec
|
||||
sbc PNTR
|
||||
tax
|
||||
|
||||
// Perform the character copy (scroll back) in a loop
|
||||
ldy PNTR
|
||||
dey
|
||||
jsr chrout_screen_del_copy_loop
|
||||
|
||||
dec PNTR
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
chrout_screen_del_done:
|
||||
|
||||
jmp chrout_screen_calc_lptr_done
|
||||
|
||||
chrout_screen_del_copy_loop:
|
||||
|
||||
iny
|
||||
lda (USER),y
|
||||
dey
|
||||
sta (USER),y
|
||||
iny
|
||||
lda (PNT),y
|
||||
dey
|
||||
sta (PNT),y
|
||||
iny
|
||||
|
||||
dex
|
||||
bpl chrout_screen_del_copy_loop
|
||||
|
||||
// Clear char at end of line (just the character - not color!)
|
||||
lda #$20
|
||||
sta (PNT),y
|
||||
|
||||
rts
|
||||
|
||||
chrout_screen_del_column_0:
|
||||
|
||||
ldy TBLX
|
||||
@@ -38,52 +117,5 @@ chrout_screen_del_column_0:
|
||||
// Finish with recalculating all the variables
|
||||
bne chrout_screen_del_done
|
||||
|
||||
chrout_screen_del_column_normal:
|
||||
|
||||
// We need to scroll back the rest of the logical line
|
||||
|
||||
// First reduce PNTR to 0-39 range
|
||||
jsr screen_get_clipped_PNTR
|
||||
sty PNTR
|
||||
|
||||
// Now get the offset to the last logical line character
|
||||
jsr screen_get_logical_line_end_ptr
|
||||
tya
|
||||
|
||||
// Substract the PNTR value, this will tell us how many characters we need to move
|
||||
sec
|
||||
sbc PNTR
|
||||
tax
|
||||
|
||||
// Perform the character copy (scroll back) in a loop
|
||||
ldy PNTR
|
||||
dey
|
||||
!:
|
||||
iny
|
||||
lda (USER),y
|
||||
dey
|
||||
sta (USER),y
|
||||
iny
|
||||
lda (PNT),y
|
||||
dey
|
||||
sta (PNT),y
|
||||
iny
|
||||
|
||||
dex
|
||||
bpl !-
|
||||
|
||||
// Clear char at end of line (just the character - not color!)
|
||||
|
||||
jsr screen_get_logical_line_end_ptr
|
||||
lda #$20
|
||||
sta (PNT),y
|
||||
dec PNTR
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
chrout_screen_del_done:
|
||||
|
||||
jmp chrout_screen_calc_lptr_done
|
||||
|
||||
|
||||
#endif // ROM layout
|
||||
Reference in new issue
Block a user