mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-10-25 14:26:11 +00:00
206 lines
3.1 KiB
ArmAsm
206 lines
3.1 KiB
ArmAsm
|
;=====================================================================
|
||
|
;= ROUTINES
|
||
|
;=====================================================================
|
||
|
|
||
|
|
||
|
clear_screens:
|
||
|
;===================================
|
||
|
; Clear top/bottom of page 0
|
||
|
;===================================
|
||
|
|
||
|
lda #$0
|
||
|
sta DRAW_PAGE
|
||
|
jsr clear_top
|
||
|
jsr clear_bottom
|
||
|
|
||
|
;===================================
|
||
|
; Clear top/bottom of page 1
|
||
|
;===================================
|
||
|
|
||
|
lda #$4
|
||
|
sta DRAW_PAGE
|
||
|
jsr clear_top
|
||
|
jsr clear_bottom
|
||
|
|
||
|
rts
|
||
|
|
||
|
;================================
|
||
|
; hlin_setup
|
||
|
;================================
|
||
|
; put address in GBASL/GBASH
|
||
|
; Ycoord in A, Xcoord in Y
|
||
|
hlin_setup:
|
||
|
sty TEMPY ; 3
|
||
|
tay ; y=A ; 2
|
||
|
lda gr_offsets,Y ; lookup low-res memory address ; 4
|
||
|
clc ; 2
|
||
|
adc TEMPY ; 3
|
||
|
sta GBASL ; 3
|
||
|
iny ; 2
|
||
|
|
||
|
lda gr_offsets,Y ; 4
|
||
|
adc DRAW_PAGE ; add in draw page offset ; 3
|
||
|
sta GBASH ; 3
|
||
|
rts ; 6
|
||
|
;===========
|
||
|
; 35
|
||
|
;================================
|
||
|
; hlin_double:
|
||
|
;================================
|
||
|
; HLIN Y, V2 AT A
|
||
|
; Y, X, A trashed
|
||
|
; start at Y, draw up to and including X
|
||
|
hlin_double:
|
||
|
;int hlin_double(int page, int x1, int x2, int at) {
|
||
|
|
||
|
jsr hlin_setup ; 41
|
||
|
|
||
|
sec ; 2
|
||
|
lda V2 ; 3
|
||
|
sbc TEMPY ; 3
|
||
|
|
||
|
tax ; 2
|
||
|
inx ; 2
|
||
|
;===========
|
||
|
; 53
|
||
|
; fallthrough
|
||
|
|
||
|
;=================================
|
||
|
; hlin_double_continue: width
|
||
|
;=================================
|
||
|
; width in X
|
||
|
|
||
|
hlin_double_continue:
|
||
|
|
||
|
ldy #0 ; 2
|
||
|
lda COLOR ; 3
|
||
|
hlin_double_loop:
|
||
|
sta (GBASL),Y ; 6
|
||
|
inc GBASL ; 5
|
||
|
dex ; 2
|
||
|
bne hlin_double_loop ; 2nt/3
|
||
|
|
||
|
rts ; 6
|
||
|
;=============
|
||
|
; 53+5+X*16+5
|
||
|
|
||
|
;================================
|
||
|
; hlin_single:
|
||
|
;================================
|
||
|
; HLIN Y, V2 AT A
|
||
|
; Y, X, A trashed
|
||
|
hlin_single:
|
||
|
|
||
|
jsr hlin_setup
|
||
|
|
||
|
sec
|
||
|
lda V2
|
||
|
sbc TEMPY
|
||
|
|
||
|
tax
|
||
|
|
||
|
; fallthrough
|
||
|
|
||
|
;=================================
|
||
|
; hlin_single_continue: width
|
||
|
;=================================
|
||
|
; width in X
|
||
|
|
||
|
hlin_single_continue:
|
||
|
|
||
|
hlin_single_top:
|
||
|
lda COLOR
|
||
|
and #$f0
|
||
|
sta COLOR
|
||
|
|
||
|
hlin_single_top_loop:
|
||
|
ldy #0
|
||
|
lda (GBASL),Y
|
||
|
and #$0f
|
||
|
ora COLOR
|
||
|
sta (GBASL),Y
|
||
|
inc GBASL
|
||
|
dex
|
||
|
bne hlin_single_top_loop
|
||
|
|
||
|
rts
|
||
|
|
||
|
hlin_single_bottom:
|
||
|
|
||
|
lda COLOR
|
||
|
and #$0f
|
||
|
sta COLOR
|
||
|
|
||
|
hlin_single_bottom_loop:
|
||
|
ldy #0
|
||
|
lda (GBASL),Y
|
||
|
and #$f0
|
||
|
sta (GBASL),Y
|
||
|
inc GBASL
|
||
|
dex
|
||
|
bne hlin_single_bottom_loop
|
||
|
|
||
|
rts
|
||
|
|
||
|
|
||
|
;=============================
|
||
|
; clear_top
|
||
|
;=============================
|
||
|
clear_top:
|
||
|
lda #$00
|
||
|
|
||
|
;=============================
|
||
|
; clear_top_a
|
||
|
;=============================
|
||
|
clear_top_a:
|
||
|
|
||
|
sta COLOR
|
||
|
|
||
|
; VLIN Y, V2 AT A
|
||
|
|
||
|
lda #40
|
||
|
sta V2
|
||
|
|
||
|
lda #0
|
||
|
|
||
|
clear_top_loop:
|
||
|
ldy #0
|
||
|
pha
|
||
|
|
||
|
jsr hlin_double
|
||
|
|
||
|
pla
|
||
|
clc
|
||
|
adc #$2
|
||
|
cmp #40
|
||
|
bne clear_top_loop
|
||
|
|
||
|
rts
|
||
|
|
||
|
clear_bottom:
|
||
|
lda #$a0 ; NORMAL space
|
||
|
sta COLOR
|
||
|
|
||
|
lda #40
|
||
|
sta V2
|
||
|
|
||
|
clear_bottom_loop:
|
||
|
ldy #0
|
||
|
pha
|
||
|
|
||
|
jsr hlin_double
|
||
|
|
||
|
pla
|
||
|
clc
|
||
|
adc #$2
|
||
|
cmp #48
|
||
|
bne clear_bottom_loop
|
||
|
|
||
|
rts
|
||
|
|
||
|
; move these to zero page for slight speed increase?
|
||
|
gr_offsets:
|
||
|
.word $400,$480,$500,$580,$600,$680,$700,$780
|
||
|
.word $428,$4a8,$528,$5a8,$628,$6a8,$728,$7a8
|
||
|
.word $450,$4d0,$550,$5d0,$650,$6d0,$750,$7d0
|