|
|
|
@ -20,6 +20,9 @@
|
|
|
|
|
%DEBUG2 { ;print-hex JSR2 #0a18 DEO }
|
|
|
|
|
%RTN { JMP2r }
|
|
|
|
|
|
|
|
|
|
%MOD { DIVk MUL SUB }
|
|
|
|
|
%MOD2 { DIV2k MUL2 SUB2 }
|
|
|
|
|
|
|
|
|
|
( devices )
|
|
|
|
|
|
|
|
|
|
|00 @System &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1
|
|
|
|
@ -47,7 +50,7 @@
|
|
|
|
|
&speed $1
|
|
|
|
|
&songloop $1 ( if song loops or not )
|
|
|
|
|
&songpos $2 ( position in song table )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
( program )
|
|
|
|
|
|
|
|
|
|
|0100 ( -> )
|
|
|
|
@ -60,13 +63,15 @@
|
|
|
|
|
;module ;k-init-module/run JSR2
|
|
|
|
|
|
|
|
|
|
;screen-vector .Screen/vector DEO2
|
|
|
|
|
( #01 ;draw-pattern JSR2 )
|
|
|
|
|
BRK
|
|
|
|
|
|
|
|
|
|
@screen-vector ( -> )
|
|
|
|
|
#0000 .Screen/x DEO2
|
|
|
|
|
#0008 .Screen/y DEO2
|
|
|
|
|
;draw-song JSR2
|
|
|
|
|
#0008 .Screen/y DEO2
|
|
|
|
|
#0080 .Screen/x DEO2
|
|
|
|
|
#00 ;draw-pattern JSR2
|
|
|
|
|
BRK
|
|
|
|
|
|
|
|
|
|
@draw-song
|
|
|
|
@ -96,10 +101,67 @@ RTN
|
|
|
|
|
&pos $2
|
|
|
|
|
|
|
|
|
|
@draw-pattern ( p )
|
|
|
|
|
.Screen/x DEI2 ,&x STR2
|
|
|
|
|
;k-get-pattern JSR2
|
|
|
|
|
DEBUG2
|
|
|
|
|
DUP2 #0030 ADD2 STH2 ( stash address of end of pattern )
|
|
|
|
|
&loop ( addr )
|
|
|
|
|
DUP2 ;draw-pattern-line JSR2 ( addr )
|
|
|
|
|
#00 .Screen/auto DEO ( clear auto byte )
|
|
|
|
|
.Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
|
|
|
|
|
,&x LDR2 .Screen/x DEO2
|
|
|
|
|
#0003 ADD2 ( addr+3 ) DUP2 STH2rk ( addr+3 addr+3 end ) NEQ2 ,&loop JCN
|
|
|
|
|
POP2 POP2r
|
|
|
|
|
RTN
|
|
|
|
|
&x $2
|
|
|
|
|
|
|
|
|
|
@draw-pattern-line ( addr )
|
|
|
|
|
#01 .Screen/auto DEO
|
|
|
|
|
DUP2 LDA #01 ;draw-note JSR2 ( draw note name )
|
|
|
|
|
#00 .Screen/sprite DEO ( space )
|
|
|
|
|
DUP2 #0001 ADD2 ( effect letter )
|
|
|
|
|
LDA #00 SWP ;&effect-letters ADD2 LDA #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( draw effect letter )
|
|
|
|
|
#01 .Screen/sprite DEO
|
|
|
|
|
#0002 ADD2 LDA #01 ;draw-hex JSR2 ( draw effect argument )
|
|
|
|
|
RTN
|
|
|
|
|
@draw-hex ( n color -- )
|
|
|
|
|
&effect-letters '_ 'V 'I 'A 'D 'S 'R 'T
|
|
|
|
|
|
|
|
|
|
@draw-note ( n color -- )
|
|
|
|
|
#01 .Screen/auto DEO
|
|
|
|
|
STH ( stash color )
|
|
|
|
|
DUP #ff EQU ;¬e-off JCN2
|
|
|
|
|
DUP #00 EQU ;&blank JCN2
|
|
|
|
|
|
|
|
|
|
DUP #0c MOD ( note minus octave )
|
|
|
|
|
#00 SWP #0002 MUL2
|
|
|
|
|
;¬es ADD2 LDA2 SWP
|
|
|
|
|
#20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( first note character )
|
|
|
|
|
STHrk .Screen/sprite DEO
|
|
|
|
|
#20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( second note character )
|
|
|
|
|
STHrk .Screen/sprite DEO
|
|
|
|
|
|
|
|
|
|
#0c DIV #10 ADD #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( octave number )
|
|
|
|
|
STHr .Screen/sprite DEO
|
|
|
|
|
RTN
|
|
|
|
|
¬e-off
|
|
|
|
|
#5b #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( [ )
|
|
|
|
|
STHrk .Screen/sprite DEO
|
|
|
|
|
#00 .Screen/sprite DEO
|
|
|
|
|
#5d #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( ] )
|
|
|
|
|
STHr .Screen/sprite DEO
|
|
|
|
|
POP
|
|
|
|
|
RTN
|
|
|
|
|
&blank
|
|
|
|
|
#2d #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( - )
|
|
|
|
|
STHr
|
|
|
|
|
DUP .Screen/sprite DEO ( three times )
|
|
|
|
|
DUP .Screen/sprite DEO
|
|
|
|
|
.Screen/sprite DEO
|
|
|
|
|
POP
|
|
|
|
|
|
|
|
|
|
RTN
|
|
|
|
|
¬es "C- "C# "D- "D# "E- "F- "F# "G- "G# "A- "A# "B-
|
|
|
|
|
|
|
|
|
|
@draw-hex ( n color -- )
|
|
|
|
|
#01 .Screen/auto DEO
|
|
|
|
|
STH ( stash color )
|
|
|
|
|
DUP
|
|
|
|
|