dos33fsprogs/graphics/dhgr/raster/raster3.s

105 lines
1.3 KiB
ArmAsm

GBASL = $26
GBASH = $27
HGRPAGE = $E6
LINE = $FD
YPOS = $FE
COLOR = $FF
HGR = $F3E2
HGR2 = $F3D8
HPOSN = $F411
raster:
jsr HGR
jsr HGR2
sta $C05E ; set double hires
sta $C00D ; 80 column
sta $C001 ; 80 store
lda #$20
sta HGRPAGE
sta YPOS
line_loop:
lda #7
sta LINE
lda YPOS
bmi go_neg
cmp #64
bcs do_add
go_pos:
ldx #$1
.byte $2C ; bit trick
go_neg:
ldx #$ff
blah:
stx smc+1
do_add:
clc
smc:
adc #1
sta YPOS
color_loop:
ldx LINE
lda colors,X
beq no_add
ldx smc+1
bmi no_add
clc
adc #$33
no_add:
sta COLOR
lda YPOS
sec
sbc LINE
; jsr draw_line_color
; inline!
;=====================================
;=============================
; draw line of color in COLOR
;=============================
draw_line_color:
ldx #0
ldy #0
jsr HPOSN
ldy #39
loop_it:
; set page2
sta $C055
jsr next_pixel
; set page1
sta $C054
jsr next_pixel
dey
bpl loop_it
;====================================
; rts
dec LINE
bmi line_loop
bpl color_loop
next_pixel:
lda COLOR ; 2
sta (GBASL),Y ; 3
cmp #$80 ; 2
rol COLOR ; 2
rts ; 1
colors:
; .byte $00,$DD,$EE,$FF,$FF,$EE,$DD,$00 ; aqua lblue white
; .byte $00,$AA,$BB,$CC,$CC,$BB,$AA,$00 ; grey yellow mblue
; .byte $00,$77,$88,$99,$99,$88,$77,$00 ; ugly green
; .byte $00,$44,$55,$66,$66,$55,$44,$00 ; purple
.byte $00,$11,$22,$33,$33,$22,$11,$00 ; red