192 lines
3.3 KiB
Plaintext
192 lines
3.3 KiB
Plaintext
( a blank file )
|
|
|
|
%RTN { JMP2r }
|
|
%8+ { #0008 ADD2 } %8- { #0008 SUB2 }
|
|
%MOD { DUP2 DIV MUL SUB }
|
|
|
|
( variables )
|
|
|
|
;pointer { x 2 y 2 }
|
|
;color { byte 1 }
|
|
|
|
( devices )
|
|
|
|
|0100 ;Console { pad 8 char 1 byte 1 short 2 string 2 }
|
|
|0110 ;Screen { width 2 height 2 pad 4 x 2 y 2 color 1 }
|
|
|0120 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
|
|
|0130 ;Controller { p1 1 }
|
|
|0140 ;Keys { key 1 }
|
|
|0150 ;Mouse { x 2 y 2 state 1 chord 1 }
|
|
|0160 ;File { pad 8 name 2 length 2 load 2 save 2 }
|
|
|01F0 ;System { pad 8 r 2 g 2 b 2 }
|
|
|
|
( vectors )
|
|
|
|
|0200 ^RESET JMP
|
|
|0204 ,ERROR JMP2
|
|
|0208 ,FRAME JMP2
|
|
|
|
@RESET
|
|
|
|
( theme ) #f0fd =System.r #f0f3 =System.g #f0f2 =System.b
|
|
|
|
,draw-timeline JSR2
|
|
|
|
BRK
|
|
|
|
@FRAME
|
|
|
|
,draw-cursor JSR2
|
|
|
|
BRK
|
|
|
|
@ERROR
|
|
|
|
BRK
|
|
|
|
@draw-bars ( -- )
|
|
|
|
|
|
#0040 =Sprite.y
|
|
,font_hex =Sprite.addr
|
|
#0000 #0100
|
|
$loop
|
|
OVR2 SWP POP #02 DIV #0f AND #00 NEQ ^$skip JNZ
|
|
OVR2 #0060 ADD2 =Sprite.x
|
|
#01 =Sprite.color
|
|
~Sprite.addr 8+ =Sprite.addr
|
|
OVR2 #0060 ADD2 #0051 #00c1 #01 ,line-vertical-dotted JSR2
|
|
$skip
|
|
OVR2 #0060 ADD2 #0050 #00c0 #01 ,line-vertical-dotted JSR2
|
|
SWP2 #0008 ADD2 SWP2
|
|
OVR2 OVR2 LTH2 ^$loop JNZ
|
|
POP2
|
|
POP2
|
|
|
|
RTN
|
|
|
|
@draw-octave ( x y -- )
|
|
|
|
=Sprite.y
|
|
=Sprite.x
|
|
,octave_icn =Sprite.addr
|
|
|
|
~Sprite.y ~Sprite.y #0038 ADD2
|
|
$loop
|
|
OVR2 =Sprite.y
|
|
#01 =Sprite.color
|
|
~Sprite.addr 8+ =Sprite.addr
|
|
~Sprite.x 8+ =Sprite.x
|
|
#01 =Sprite.color
|
|
~Sprite.addr 8+ =Sprite.addr
|
|
~Sprite.x 8- =Sprite.x
|
|
SWP2 #0008 ADD2 SWP2
|
|
OVR2 OVR2 LTH2 ^$loop JNZ
|
|
POP2
|
|
POP2
|
|
|
|
|
|
RTN
|
|
|
|
@draw-octaves ( -- )
|
|
|
|
#0040 #0050 ,draw-octave JSR2
|
|
#0040 #0088 ,draw-octave JSR2
|
|
|
|
#0028 =Sprite.x
|
|
#0080 =Sprite.y
|
|
,font_hex #0060 ADD2 =Sprite.addr
|
|
#01 =Sprite.color
|
|
#0030 =Sprite.x
|
|
,font_hex #0018 ADD2 =Sprite.addr
|
|
#01 =Sprite.color
|
|
|
|
#0028 =Sprite.x
|
|
#00b8 =Sprite.y
|
|
,font_hex #0060 ADD2 =Sprite.addr
|
|
#01 =Sprite.color
|
|
#0030 =Sprite.x
|
|
,font_hex #0010 ADD2 =Sprite.addr
|
|
#01 =Sprite.color
|
|
|
|
RTN
|
|
|
|
@draw-timeline ( -- )
|
|
|
|
,draw-bars JSR2
|
|
,draw-octaves JSR2
|
|
|
|
RTN
|
|
|
|
@line-vertical-dotted ( x y0 y1 color -- )
|
|
|
|
=color STH2 SWP2 =Screen.x STH2r OVR2 =Screen.y
|
|
$draw-ver
|
|
( draw ) ~color =Screen.color
|
|
( incr ) SWP2 #0002 ADD2 DUP2 =Screen.y SWP2
|
|
OVR2 OVR2 LTH2 ^$draw-ver JNZ
|
|
POP2 POP2
|
|
|
|
RTN
|
|
|
|
@draw-cursor ( -- )
|
|
|
|
( clear last cursor )
|
|
,clear_icn =Sprite.addr
|
|
~pointer.x =Sprite.x
|
|
~pointer.y =Sprite.y
|
|
#10 =Sprite.color
|
|
|
|
( record pointer positions )
|
|
~Mouse.x =pointer.x ~Mouse.y =pointer.y
|
|
|
|
( draw new cursor )
|
|
,cursor_icn =Sprite.addr
|
|
~pointer.x =Sprite.x
|
|
~pointer.y =Sprite.y
|
|
#11 ~Mouse.state #00 NEQ ADD =Sprite.color
|
|
|
|
RTN
|
|
|
|
@clear_icn [ 0000 0000 0000 0000 ]
|
|
@cursor_icn [ 80c0 e0f0 f8e0 1000 ]
|
|
|
|
@piano-white [
|
|
ffc0 8080 80c0 ff00
|
|
fc02 0202 0202 fc00
|
|
]
|
|
|
|
@piano-black [
|
|
ffff fefe feff ff00
|
|
f008 0808 0808 f000
|
|
]
|
|
|
|
@octave_icn [
|
|
ff00 0000 fefe fffe
|
|
ff01 0101 0102 fc00
|
|
fffe fc00 fefe fffe
|
|
ff01 0101 0102 fc00
|
|
fffe fc00 fefe fffe
|
|
ff01 0101 0102 fc00
|
|
fffe fc00 0000 ff00
|
|
ff01 0101 0102 fc00
|
|
ff00 0000 fefe fffe
|
|
ff01 0101 0102 fc00
|
|
fffe fc00 fefe fffe
|
|
ff01 0101 0102 fc00
|
|
fffe fc00 0000 ff00
|
|
ff01 0101 0102 fc00
|
|
]
|
|
|
|
@font_hex ( 0-F )
|
|
[
|
|
007c 8282 8282 827c 0030 1010 1010 1010
|
|
007c 8202 7c80 80fe 007c 8202 1c02 827c
|
|
000c 1424 4484 fe04 00fe 8080 7c02 827c
|
|
007c 8280 fc82 827c 007c 8202 1e02 0202
|
|
007c 8282 7c82 827c 007c 8282 7e02 827c
|
|
007c 8202 7e82 827e 00fc 8282 fc82 82fc
|
|
007c 8280 8080 827c 00fc 8282 8282 82fc
|
|
007c 8280 f080 827c 007c 8280 f080 8080
|
|
]
|