dos33fsprogs/graphics/hgr/lines/vlin_test.s
2022-03-14 22:57:33 -04:00

269 lines
2.4 KiB
ArmAsm

; hgr fast vlin test
HGR_BITS = $1C
GBASL = $26
GBASH = $27
HGR_COLOR = $E4
HGR_PAGE = $E6
div7_table = $9000
mod7_table = $9100
KEYPRESS = $C000
KEYRESET = $C010
HGR2 = $F3D8 ; clear PAGE2 to 0
HGR = $F3E2 ; set hires page1 and clear $2000-$3fff
BKGND0 = $F3F4 ; clear screen to A
HPOSN = $F411 ; (Y,X),(A) (values stores in HGRX,XH,Y)
COLOR_SHIFT = $F47E
COLORTBL = $F6F6
main:
; set graphics
jsr HGR
; init tables
jsr vgi_init
; draw lines
; multicolor
; for y=0 to 150 step 2:hgr_vlin 10,10+y at y: next
ldy #0
loop1:
tya
lsr
lsr
and #$7
tax
jsr set_hcolor
tya
pha
tax ; X1=Y
lda #10 ; Y1=A
; ldy #100 ; Run = y
jsr hgr_vlin ; vlin (x,a) to (x,a+y)
pla
tay
iny
iny
iny
iny
cpy #160
bne loop1
jsr wait_until_keypress
; test 2
jsr HGR2
; draw lines
ldy #0
loop2:
ldx #7 ; draw white
jsr set_hcolor
tya ; save y on stack
pha
tax ; x1=Y
tay ; yrun=y
lda #0 ; y1=0
jsr hgr_vlin
pla
tay
iny
iny
iny
iny
iny
cpy #150
bne loop2
jsr wait_until_keypress
; test 3
; jsr HGR2
; note, clear to bgcolor=black2 or else edge looks a bit
; ragged when $FF touches $00
lda #$80
jsr BKGND0
; draw lines
ldy #0
loop3:
ldx #7 ; draw white
jsr set_hcolor
tya
pha
tax ; X1=Y
; Y1=A
pha
tya
eor #$ff
sec
adc #191
tay ; run=191-Y
pla
jsr hgr_vlin
pla
tay
iny
cpy #192
bne loop3
jsr wait_until_keypress
; test 4
jsr HGR2
; draw lines
ldy #0
loop4:
ldx #3 ; draw white1
jsr set_hcolor
tya
pha
tax ; X1=Y
eor #$ff
sec
adc #192 ; Y1=192-Y
; run = Y
jsr hgr_vlin
pla
tay
iny
cpy #192
bne loop4
jsr wait_until_keypress
; test 5
; jsr HGR2
; draw lines
ldy #0
loop5:
ldx #0 ; draw white1
jsr set_hcolor
tya
pha
tax ; X1=Y
eor #$ff
sec
adc #192 ; Y1=192-Y
; run = Y
jsr hgr_vlin
pla
tay
iny
cpy #192
bne loop5
jsr wait_until_keypress
done:
jmp main
wait_until_keypress:
bit KEYRESET
keypress_loop:
lda KEYPRESS
bpl keypress_loop
rts
;=====================
; make /7 %7 tables
;=====================
vgi_init:
vgi_make_tables:
ldy #0
lda #0
ldx #0
div7_loop:
sta div7_table,Y
inx
cpx #7
bne div7_not7
clc
adc #1
ldx #0
div7_not7:
iny
bne div7_loop
ldy #0
lda #0
mod7_loop:
sta mod7_table,Y
clc
adc #1
cmp #7
bne mod7_not7
lda #0
mod7_not7:
iny
bne mod7_loop
rts
.include "hgr_vlin.s"