mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-29 15:29:34 +00:00
60c3137e62
if I mess around with common asm_routines it will mess with the size optimized demo. So lock in place the files and make a copy here. Should have done this once when I was prepping the PoC||GTFO code.
81 lines
1.2 KiB
ArmAsm
81 lines
1.2 KiB
ArmAsm
;================================
|
|
; htab_vtab
|
|
;================================
|
|
; move to CH/CV
|
|
htab_vtab:
|
|
lda CV
|
|
asl
|
|
tay
|
|
lda gr_offsets,Y ; lookup low-res memory address
|
|
clc
|
|
adc CH ; add in xpos
|
|
sta BASL ; store out low byte of addy
|
|
|
|
lda gr_offsets+1,Y ; look up high byte
|
|
adc DRAW_PAGE ;
|
|
sta BASH ; and store it out
|
|
; BASH:BASL now points at right place
|
|
|
|
rts
|
|
|
|
;================================
|
|
; move_and_print
|
|
;================================
|
|
; move to CH/CV
|
|
move_and_print:
|
|
jsr htab_vtab
|
|
|
|
;================================
|
|
; print_string
|
|
;================================
|
|
|
|
print_string:
|
|
ldy #0
|
|
print_string_loop:
|
|
lda (OUTL),Y
|
|
beq done_print_string
|
|
ora #$80
|
|
sta (BASL),Y
|
|
iny
|
|
bne print_string_loop
|
|
done_print_string:
|
|
rts
|
|
|
|
;====================
|
|
; point_to_end_string
|
|
;====================
|
|
point_to_end_string:
|
|
iny
|
|
tya
|
|
clc
|
|
adc OUTL
|
|
sta OUTL
|
|
lda #0
|
|
adc OUTH
|
|
sta OUTH
|
|
|
|
rts
|
|
|
|
|
|
;================================
|
|
; print_both_pages
|
|
;================================
|
|
print_both_pages:
|
|
lda DRAW_PAGE
|
|
pha
|
|
|
|
lda #0
|
|
sta DRAW_PAGE
|
|
jsr move_and_print
|
|
|
|
lda #4
|
|
sta DRAW_PAGE
|
|
jsr move_and_print
|
|
|
|
pla
|
|
sta DRAW_PAGE
|
|
|
|
rts ; oops forgot this initially
|
|
; explains the weird vertical stripes on the screen
|
|
|