started work on screen scroll

This commit is contained in:
FeralChild64 committed 2020-01-05 17:27:37 +01:00
1 parent 870de4e432
commit 44df124fc7
3 files changed
+108 -8

No files matched your search

+1 -5
View File
@@ -16,9 +16,8 @@ iec_wait1ms:
ldx #18 // we probably won't start with the beginning of raster
#endif // CONFIG_IEC
#if CONFIG_IEC || (!CONFIG_TAPE_NO_MOTOR_CONTROL && (CONFIG_TAPE_TURBO || CONFIG_TAPE_NORMAL))
wait_x_bars: // additional entry point for tape support
wait_x_bars: // additional entry point for delayy in screen and tape support
// has to preserve .Y and put .X to 0
lda VIC_RASTER
@@ -32,6 +31,3 @@ wait_x_bars: // additional entry point for tape support
iec_wait_rts: // dummy RTS, for very short waits
rts
#endif
@@ -4,12 +4,11 @@ screen_advance_to_next_line:
// Check if we are at the bottom of the screen
ldy TBLX
cpy #$24
cpy #24
bne !+
// We need to scroll the screen up
jsr screen_scroll_up
skip_2_bytes_trash_nvz
!:
inc TBLX
@@ -1,7 +1,110 @@
//
// Scroll the whole screen up by 1 logical line
//
screen_scroll_up:
// Preserve SAL and EAL
lda SAL+0
pha
lda SAL+1
pha
lda EAL+0
pha
lda EAL+1
pha
screen_scroll_up_next:
#if CONFIG_KEYBOARD_C128 || CONFIG_KEYBOARD_C65
// Do not scroll if NO_SCRL is pressed and interrupts are enabled
!:
php
pla
and #%00000010
bne !+ // branch if IRQs disabled, we cannot detect NO_SCRL status
lda SHFLAG
and #KEY_FLAG_NO_SCRL
bne !-
!:
#endif
// Check if CTRL key pressed - if so, perform a delay
lda SHFLAG
and #KEY_FLAG_CTRL
beq screen_scroll_up_delay_done
ldy #$03
!:
ldx #$FF
jsr wait_x_bars
dey
bne !-
screen_scroll_up_delay_done:
// First scroll the LDTBL (line link table)
ldy #$00
!:
lda LDTBL+1, y
sta LDTBL+0, y
iny
cpy #24
bne !-
lda #$80
sta LDTBL+24
// Now, we need to scroll both screen memory and color memory
// YYY implement
// Clear the newly introduced line
ldx #24
jsr screen_clear_line
// Decrement the current physical line number
dec TBLX
// If the first line is linked, scroll once more
bit LDTBL+0
bpl screen_scroll_up_next
// Restore SAL and EAL
pla
sta EAL+1
pla
sta EAL+0
pla
sta SAL+1
pla
sta SAL+0
// Return
rts
/* YYY disabled for rework, add CTRL and NO_SCROLL support
not_last_line:
@@ -30,7 +133,9 @@ is_last_line:
dec TBLX
// FALLTHROUGH
// FALLTHROUGH to screen_scroll_up
scroll_screen_up: