mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-20 17:29:28 +00:00
second: implement VLIN and PLOT
this is so inefficient
This commit is contained in:
parent
739ddd312a
commit
fb33832144
|
@ -16,21 +16,21 @@ frame15:
|
||||||
.byte SET_COLOR | WHITE
|
.byte SET_COLOR | WHITE
|
||||||
.byte BOX, 4, 6, 35,41
|
.byte BOX, 4, 6, 35,41
|
||||||
|
|
||||||
.byte SET_COLOR | RED
|
; .byte SET_COLOR | RED
|
||||||
.byte HLIN,0,39,2
|
; .byte HLIN,0,39,2
|
||||||
.byte SET_COLOR | DARK_BLUE
|
; .byte SET_COLOR | DARK_BLUE
|
||||||
.byte HLIN,0,39,3
|
; .byte HLIN,0,39,3
|
||||||
|
|
||||||
.byte SET_COLOR | RED
|
; .byte SET_COLOR | RED
|
||||||
.byte HLIN,0,39,12
|
; .byte HLIN,0,39,12
|
||||||
.byte SET_COLOR | DARK_BLUE
|
; .byte SET_COLOR | DARK_BLUE
|
||||||
.byte HLIN,0,39,13
|
; .byte HLIN,0,39,13
|
||||||
|
|
||||||
.byte SET_COLOR | GREEN
|
; .byte SET_COLOR | GREEN
|
||||||
.byte BOX, 2,2,10,12 ; goes to 6 only top
|
; .byte BOX, 2,2,10,12 ; goes to 6 only top
|
||||||
.byte BOX, 12,3,20,12
|
; .byte BOX, 12,3,20,12
|
||||||
.byte BOX, 22,2,30,13 ; goes to 6 full
|
; .byte BOX, 22,2,30,13 ; goes to 6 full
|
||||||
.byte BOX, 32,3,39,13
|
; .byte BOX, 32,3,39,13
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -232,6 +232,77 @@ hlin_done:
|
||||||
;=================================
|
;=================================
|
||||||
;=================================
|
;=================================
|
||||||
draw_vlin:
|
draw_vlin:
|
||||||
|
iny
|
||||||
|
lda (INL),Y
|
||||||
|
sta Y1
|
||||||
|
iny
|
||||||
|
lda (INL),Y
|
||||||
|
sta Y2
|
||||||
|
iny
|
||||||
|
lda (INL),Y
|
||||||
|
sta X1
|
||||||
|
|
||||||
|
|
||||||
|
lda Y2
|
||||||
|
lsr
|
||||||
|
; if even, go to one less
|
||||||
|
; else, fine
|
||||||
|
bcs odd_bottom_vlin
|
||||||
|
even_bottom_vlin:
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
|
||||||
|
odd_bottom_vlin:
|
||||||
|
|
||||||
|
sta vlin_yend_smc+1
|
||||||
|
|
||||||
|
; see if we start at multiple of two
|
||||||
|
|
||||||
|
lda Y1
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
bcc even_vlin_start
|
||||||
|
|
||||||
|
; we're odd, need to call PLOT
|
||||||
|
|
||||||
|
jsr plot_mask_odd
|
||||||
|
iny
|
||||||
|
|
||||||
|
|
||||||
|
even_vlin_start:
|
||||||
|
|
||||||
|
vlin_yloop:
|
||||||
|
lda gr_offsets_l,Y
|
||||||
|
sta vlin_xloop_smc+1
|
||||||
|
|
||||||
|
lda gr_offsets_h,Y
|
||||||
|
clc
|
||||||
|
adc DRAW_PAGE
|
||||||
|
sta vlin_xloop_smc+2
|
||||||
|
|
||||||
|
lda COLOR
|
||||||
|
ldx X1
|
||||||
|
|
||||||
|
vlin_xloop_smc:
|
||||||
|
sta $400,X
|
||||||
|
|
||||||
|
iny
|
||||||
|
vlin_yend_smc:
|
||||||
|
cpy #0
|
||||||
|
bcc vlin_yloop ; less than
|
||||||
|
beq vlin_yloop ; equal
|
||||||
|
|
||||||
|
; done
|
||||||
|
|
||||||
|
; if Y2 was even we need to fixup and draw one more line
|
||||||
|
|
||||||
|
lda Y2
|
||||||
|
lsr
|
||||||
|
bcs definitely_odd_vlin
|
||||||
|
|
||||||
|
jsr plot_mask_even
|
||||||
|
|
||||||
|
definitely_odd_vlin:
|
||||||
; done
|
; done
|
||||||
|
|
||||||
lda #4
|
lda #4
|
||||||
|
@ -246,15 +317,24 @@ draw_vlin:
|
||||||
draw_plot:
|
draw_plot:
|
||||||
iny
|
iny
|
||||||
lda (INL),Y
|
lda (INL),Y
|
||||||
tax
|
sta X1
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (INL),Y
|
lda (INL),Y
|
||||||
|
|
||||||
|
; sta Y1
|
||||||
|
; lda Y1
|
||||||
|
|
||||||
|
|
||||||
|
lsr
|
||||||
tay
|
tay
|
||||||
|
bcs do_plot_mask_odd
|
||||||
|
jsr plot_mask_even
|
||||||
|
jmp plot_done
|
||||||
|
do_plot_mask_odd:
|
||||||
|
jsr plot_mask_odd
|
||||||
|
|
||||||
draw_plot_smc:
|
plot_done:
|
||||||
sta $400
|
|
||||||
|
|
||||||
|
|
||||||
; done
|
; done
|
||||||
|
|
||||||
|
@ -306,6 +386,46 @@ draw_hlin_s_xloop_smc:
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;===================================
|
||||||
|
;===================================
|
||||||
|
; plot common code
|
||||||
|
;===================================
|
||||||
|
;===================================
|
||||||
|
; X1, set up
|
||||||
|
; Y/2 is in Y
|
||||||
|
; call the proper entry point
|
||||||
|
; Y untouched
|
||||||
|
|
||||||
|
plot_mask_odd:
|
||||||
|
lda #$0F
|
||||||
|
.byte $2C ; bit trick
|
||||||
|
plot_mask_even:
|
||||||
|
lda #$F0
|
||||||
|
sta MASK
|
||||||
|
eor #$FF
|
||||||
|
and COLOR
|
||||||
|
sta COLOR2
|
||||||
|
|
||||||
|
lda gr_offsets_l,Y
|
||||||
|
sta plot_l_smc+1
|
||||||
|
sta plot_s_smc+1
|
||||||
|
|
||||||
|
lda gr_offsets_h,Y
|
||||||
|
clc
|
||||||
|
adc DRAW_PAGE
|
||||||
|
sta plot_l_smc+2
|
||||||
|
sta plot_s_smc+2
|
||||||
|
|
||||||
|
ldx X1
|
||||||
|
plot_l_smc:
|
||||||
|
lda $400,X
|
||||||
|
and MASK
|
||||||
|
ora COLOR2
|
||||||
|
plot_s_smc:
|
||||||
|
sta $400,X
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
.include "gr_fast_clear.s"
|
.include "gr_fast_clear.s"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user