mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-27 02:31:00 +00:00
130 lines
1.8 KiB
ArmAsm
130 lines
1.8 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
|
|
|
|
lsr HGRPAGE ; set to $20 (HGR2 set this to $40)
|
|
|
|
sta YPOS
|
|
|
|
;forever_loop:
|
|
|
|
; jmp forever_loop
|
|
|
|
draw_raster:
|
|
|
|
line_loop:
|
|
lda #7 ; want 8 lines
|
|
sta LINE
|
|
|
|
lda YPOS ; check bounds
|
|
bmi go_neg ; if >128, flip to go up
|
|
cmp #64 ; if < 64, flip to go down
|
|
bcs do_add ; otherwise, nothing
|
|
go_pos:
|
|
ldx #$1
|
|
.byte $2C ; bit trick
|
|
go_neg:
|
|
ldx #$ff
|
|
stx smc+1
|
|
do_add:
|
|
clc ; move the bar
|
|
smc:
|
|
adc #1
|
|
sta YPOS
|
|
|
|
color_loop: ; get right color
|
|
lda LINE ;(2)
|
|
cmp #$4 ;(2)
|
|
bcc none ;(2)
|
|
eor #$3 ; 00 01 10 11 00 01 10 11
|
|
none: ; 11 10 01 00
|
|
and #$3 ;(2)
|
|
|
|
; ldx LINE
|
|
; lda order,X
|
|
clc
|
|
color_smc:
|
|
adc #0
|
|
tax
|
|
lda colors,X
|
|
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
|
|
|
|
;
|
|
; x-4 = fc fd fe ff 0 1 2 3
|
|
; lda LINE (2)
|
|
; cmp #$4 (2)
|
|
; bcc none (2)
|
|
; eor #$3 00 01 10 11 00 01 10 11
|
|
;none: 11 10 01 00
|
|
; and #$3 (2)
|
|
|
|
;order:
|
|
; .byte 0,1,2,3,3,2,1,0
|
|
colors:
|
|
.byte $00,$11,$22,$33 ; red
|
|
|
|
; .byte $00,$11,$22,$33,$33,$22,$11,$00 ; red
|
|
; .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
|
|
|