mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-10 08:54:51 +00:00
93 lines
1.2 KiB
ArmAsm
93 lines
1.2 KiB
ArmAsm
; fake sierpinski
|
|
; 64-byte Apple II demo
|
|
|
|
; with scrolling and colors
|
|
|
|
; by Vince `deater` Weaver, dSr, Lovebyte 2021
|
|
|
|
; just plot XX AND YY
|
|
|
|
; zero page
|
|
COLOR = $30
|
|
XX = $66
|
|
YY = $67
|
|
FRAME = $68
|
|
;X2 = $69
|
|
|
|
; soft-switches
|
|
FULLGR = $C052
|
|
|
|
; rom routines
|
|
PLOT = $F800 ;; PLOT AT Y,A
|
|
PLOT1 = $F80E ;; PLOT at (GBASL),Y (need MASK to be $0f or $f0)
|
|
SETCOL = $F864 ;; COLOR=A
|
|
SETGR = $FB40
|
|
|
|
;================================
|
|
; Clear screen and setup graphics
|
|
;================================
|
|
sier:
|
|
|
|
jsr SETGR ; set lo-res 40x40 mode
|
|
bit FULLGR ; make it 40x48
|
|
|
|
; note we can save 4 bytes if we don't care about what boundary
|
|
; we start at??
|
|
|
|
lda #0
|
|
sta FRAME
|
|
|
|
sier_loop:
|
|
|
|
inc FRAME
|
|
|
|
ldx #47 ; YY
|
|
|
|
sier_yloop:
|
|
|
|
lda #39
|
|
sta XX
|
|
|
|
tay
|
|
txa
|
|
jsr PLOT ; PLOT AT Y,A
|
|
; sets GBASL/GBASH and MASK
|
|
|
|
sier_xloop:
|
|
|
|
txa
|
|
clc
|
|
adc FRAME
|
|
|
|
and XX
|
|
|
|
bne black
|
|
lda FRAME ; color is based on frame
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
bne not_zero ; but no color 0 (would be all black)
|
|
lda #3 ; how about purple instead
|
|
|
|
not_zero:
|
|
|
|
.byte $2C ; bit trick
|
|
black:
|
|
lda #$00
|
|
|
|
jsr SETCOL ; set top/bottom nibble same color
|
|
|
|
ldy XX
|
|
txa
|
|
jsr PLOT1 ; PLOT AT (GBASL),Y
|
|
|
|
dec XX
|
|
bpl sier_xloop
|
|
|
|
dex
|
|
bpl sier_yloop
|
|
|
|
done:
|
|
bmi sier_loop
|