Files
open-roms/c64/kernal/set_pointer_to_current_screen_line.s
T
2019-04-19 21:03:53 +09:30

35 lines
755 B
ArmAsm

;; Put the address of the screen current line
;; into the pointer at $D1 (current_screen_line_ptr).
;; It must take into account the screen line link table
;; (Compute's Mapping the 64 p216)
set_pointer_to_current_screen_line:
;; Get pointer to start of the screen
lda hibase
sta current_screen_line_ptr+1
lda #$00
sta current_screen_line_ptr+0
;; Now advance for the number of lines
ldx current_screen_y
sptcsl_l2:
;; XXX - Should we read the columns per line from
;; somewhere?
ldy #<40
;; Double line length if line is linked
lda screen_line_link_table,x
bpl sptcsl_l1
ldy #<80
sptcsl_l1:
tya
clc
adc current_screen_line_ptr+0
lda current_screen_line_ptr+1
adc #>40
sta current_screen_line_ptr+1
dex
bpl sptcsl_l2
rts