finished MEGA65 screen scrolling
This commit is contained in:
1 parent
a25be2d083
commit
c1e0bfa0c9
4 files changed
+56
-9
No files matched your search
@@ -51,7 +51,7 @@
|
|||||||
.label M65_TXTWIN_Y0 = $58F // text window - top-left Y coordinate, starting from 0
|
.label M65_TXTWIN_Y0 = $58F // text window - top-left Y coordinate, starting from 0
|
||||||
.label M65_TXTWIN_X1 = $590 // text window - bottom-right X coordinate + 1
|
.label M65_TXTWIN_X1 = $590 // text window - bottom-right X coordinate + 1
|
||||||
.label M65_TXTWIN_Y1 = $591 // text window - bottom-right Y coordinate + 1
|
.label M65_TXTWIN_Y1 = $591 // text window - bottom-right Y coordinate + 1
|
||||||
.label M65_TXTROW_OFF = $592 // $592-$593 offset to the current text row
|
.label M65_TXTROW_OFF = $592 // $592-$593 offset to the current text row from the viewport start
|
||||||
// $594-$5EB -- UNUSED --
|
// $594-$5EB -- UNUSED --
|
||||||
.label M65_DMAGIC_LIST = $5EF // $5EF-$5FF reserved for DMAgic list, 17 bytes
|
.label M65_DMAGIC_LIST = $5EF // $5EF-$5FF reserved for DMAgic list, 17 bytes
|
||||||
.label M65_RS232_INBUF = $600 // $600-$6FF -- reserved for RS-232 input buffer --
|
.label M65_RS232_INBUF = $600 // $600-$6FF -- reserved for RS-232 input buffer --
|
||||||
|
|||||||
@@ -241,16 +241,49 @@ m65_chrout_fix_scroll_up_scroll:
|
|||||||
|
|
||||||
// Virtual screen is too small - we will lose one row
|
// Virtual screen is too small - we will lose one row
|
||||||
|
|
||||||
// XXX implement
|
// Calculate size of data to copy
|
||||||
|
|
||||||
// XXX set size
|
sec
|
||||||
|
lda M65_COLGUARD+0
|
||||||
|
sbc #$50
|
||||||
|
sta M65_DMAJOB_SIZE_0
|
||||||
|
lda M65_COLGUARD+1
|
||||||
|
sbc #$00
|
||||||
|
sta M65_DMAJOB_SIZE_1
|
||||||
|
|
||||||
// jsr m65_screen_dmasrcdst_screen
|
// Scroll up screen memory
|
||||||
// XXX add $50 to DST
|
|
||||||
// jsr m65_dmagic_oper_copy
|
|
||||||
|
|
||||||
// jsr m65_screen_dmasrcdst_color
|
jsr m65_screen_dmasrcdst_screen
|
||||||
// XXX add $50 to DST
|
jsr m65_screen_dmasrc_add_row
|
||||||
// jsr m65_dmagic_oper_copy
|
jsr m65_dmagic_oper_copy
|
||||||
|
|
||||||
|
// Scroll up color memory
|
||||||
|
|
||||||
|
jsr m65_screen_dmasrcdst_color
|
||||||
|
jsr m65_screen_dmasrc_add_row
|
||||||
|
jsr m65_dmagic_oper_copy
|
||||||
|
|
||||||
|
// Clear the last row - color and screen memory
|
||||||
|
|
||||||
|
phz
|
||||||
|
|
||||||
|
jsr m65_helper_scrlpnt_color
|
||||||
|
lda COLOR
|
||||||
|
and #$0F
|
||||||
|
ldz #$4F
|
||||||
|
!:
|
||||||
|
sta_lp (M65_LPNT_SCR), z
|
||||||
|
dez
|
||||||
|
bpl !-
|
||||||
|
|
||||||
|
jsr m65_helper_scrlpnt_to_screen
|
||||||
|
lda #$20
|
||||||
|
ldz #$4F
|
||||||
|
!:
|
||||||
|
sta_lp (M65_LPNT_SCR), z
|
||||||
|
dez
|
||||||
|
bpl !-
|
||||||
|
|
||||||
|
plz
|
||||||
|
|
||||||
rts
|
rts
|
||||||
@@ -22,6 +22,8 @@ M65_CLRWIN:
|
|||||||
|
|
||||||
// First initialize both pointers
|
// First initialize both pointers
|
||||||
|
|
||||||
|
// XXX use m65_helper_scrlpnt_color and m65_helper_scrlpnt_to_screen instead
|
||||||
|
|
||||||
clc
|
clc
|
||||||
lda M65_COLVIEW+0
|
lda M65_COLVIEW+0
|
||||||
adc M65_SCRBASE+0
|
adc M65_SCRBASE+0
|
||||||
|
|||||||
@@ -57,3 +57,15 @@ m65_screen_dmasrcdst_color:
|
|||||||
sta M65_DMAJOB_DST_2
|
sta M65_DMAJOB_DST_2
|
||||||
lda #$0F
|
lda #$0F
|
||||||
jmp_8 !-
|
jmp_8 !-
|
||||||
|
|
||||||
|
|
||||||
|
m65_screen_dmasrc_add_row:
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda M65_DMAJOB_SRC_0
|
||||||
|
adc #$50
|
||||||
|
sta M65_DMAJOB_SRC_0
|
||||||
|
bcc !+
|
||||||
|
inc M65_DMAJOB_SRC_1
|
||||||
|
!:
|
||||||
|
rts
|
||||||
Reference in new issue
Block a user