diff --git a/c64/kernal/screen/chrout_screen.s b/c64/kernal/screen/chrout_screen.s index a1700951..328cc0ba 100644 --- a/c64/kernal/screen/chrout_screen.s +++ b/c64/kernal/screen/chrout_screen.s @@ -63,15 +63,9 @@ chrout_screen_literal: tax // store screen code, we need .A for calculations - // First we need offset from PNT in .Y, we can take it from PNTR (0-79) + // First we need offset from PNT in .Y, we can take it from PNTR - lda PNTR - cmp #40 - bcc !+ - sec - sbc #40 -!: - tay + jsr screen_get_clipped_PNTR // Put the character on the screen diff --git a/c64/kernal/screen/cursor.s b/c64/kernal/screen/cursor.s index d9d3d66c..2e2d2748 100644 --- a/c64/kernal/screen/cursor.s +++ b/c64/kernal/screen/cursor.s @@ -28,10 +28,8 @@ cursor_blink: // FALLTROUGH cursor_draw: - jsr screen_calculate_PNT_USER // YYY try to make this call not needed - ldy PNTR - // XXX clip PNTR to 0-39 + jsr screen_get_clipped_PNTR lda (PNT),y sta GDBLN eor #$80 @@ -59,9 +57,8 @@ cursor_hide_if_visible: cursor_undraw: + jsr screen_get_clipped_PNTR lda GDBLN - ldy PNTR - // XXX clip PNTR to 0-39 sta (PNT),y lda GDCOL sta (USER),y diff --git a/c64/kernal/screen/screen_get_cliped_pntr.s b/c64/kernal/screen/screen_get_cliped_pntr.s new file mode 100644 index 00000000..c0c85963 --- /dev/null +++ b/c64/kernal/screen/screen_get_cliped_pntr.s @@ -0,0 +1,15 @@ + +// +// Get PNTR value clipped to 0-39 range in .Y, can trash .A +// + +screen_get_clipped_PNTR: + + ldy PNTR + cpy #40 + bcc !+ + tya + sbc #40 + tay +!: + rts diff --git a/c64/kernal/screen/screen_scroll_up.s b/c64/kernal/screen/screen_scroll_up.s index 74cfdf82..2314dd2a 100644 --- a/c64/kernal/screen/screen_scroll_up.s +++ b/c64/kernal/screen/screen_scroll_up.s @@ -28,7 +28,7 @@ screen_scroll_up: and #KEY_FLAG_CTRL beq screen_scroll_up_delay_done - ldy #$03 + ldy #$09 !: ldx #$FF jsr wait_x_bars