mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-01-08 19:33:03 +00:00
60 lines
851 B
ArmAsm
60 lines
851 B
ArmAsm
; How does this work?
|
|
; seems mostly to be using $0004 - $FF04 as a shape table
|
|
; It's because we are passing ROT as the low byte of shape table
|
|
|
|
|
|
; zero page locations
|
|
HGR_SHAPE = $1A
|
|
A5H = $45
|
|
XREG = $46
|
|
YREG = $47
|
|
HGR_SCALE = $E7
|
|
HGR_ROTATION = $F9
|
|
FRAME = $FC
|
|
XPOS = $FD
|
|
YPOS = $FF
|
|
|
|
; ROM calls
|
|
HGR2 = $F3D8
|
|
HPOSN = $F411
|
|
XDRAW0 = $F65D ; shape table in Y:X
|
|
RESTORE = $FF3F
|
|
|
|
;.zeropage
|
|
|
|
tiny_tiny:
|
|
|
|
jsr HGR2 ; Hi-res graphics, no text at bottom
|
|
; Y=0, A=0 after this call
|
|
|
|
lda #1
|
|
sta HGR_SCALE
|
|
|
|
tiny_loop:
|
|
; setup X and Y co-ords
|
|
ldy #0 ; Y always 0
|
|
ldx #140
|
|
lda #96
|
|
jsr HPOSN ; X= (y,x) Y=(a)
|
|
|
|
ldx #$4
|
|
rot_smc:
|
|
lda #0 ; ROT=0
|
|
pha
|
|
|
|
and #$1f
|
|
clc
|
|
adc #208
|
|
tay ; ldy #>shape_table
|
|
|
|
pla
|
|
zurg:
|
|
jsr XDRAW0 ; XDRAW 1 AT X,Y
|
|
; Both A and X are 0 at exit
|
|
|
|
inc rot_smc+1
|
|
jmp tiny_loop
|
|
|
|
; d0..ff
|
|
; 208 .. 255 = 48
|