136 lines
3.5 KiB
Tal
136 lines
3.5 KiB
Tal
|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1
|
|
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
|
|
|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &scrollx $2 &scrolly $2
|
|
|
|
|0100
|
|
|
|
@on-reset ( -> )
|
|
#375e .System/r DEO2
|
|
#286c .System/g DEO2
|
|
#2358 .System/b DEO2
|
|
;on-mouse .Mouse/vector DEO2
|
|
<draw-guide>
|
|
.Screen/width DEI2 #01 SFT2 .Screen/x DEO2
|
|
.Screen/height DEI2 #01 SFT2 .Screen/y DEO2
|
|
<redraw>
|
|
BRK
|
|
|
|
@on-mouse ( -> )
|
|
( | clear background )
|
|
( #0000 DUP2 .Screen/x DEO2
|
|
.Screen/y DEO2
|
|
#80 .Screen/pixel DEO )
|
|
<draw-guide>
|
|
( | cursor )
|
|
#41 ;cursor-icn <update-cursor>
|
|
<redraw>
|
|
BRK
|
|
|
|
@<redraw> ( -- )
|
|
.Screen/x DEI2k #0008 ADD2 ROT DEO2
|
|
.Screen/y DEI2k #0020 SUB2 ROT DEO2
|
|
[ LIT2 36 -Screen/auto ] DEO
|
|
#81 <draw-portrait>
|
|
.Screen/x DEI2k #0010 SUB2 ROT DEO2
|
|
.Screen/y DEI2k #0020 SUB2 ROT DEO2
|
|
#91 <draw-portrait>
|
|
.Screen/x DEI2k #0000 SUB2 ROT DEO2
|
|
.Screen/y DEI2k #0020 ADD2 ROT DEO2
|
|
#b1 <draw-portrait>
|
|
.Screen/x DEI2k #0010 ADD2 ROT DEO2
|
|
.Screen/y DEI2k #0020 ADD2 ROT DEO2
|
|
#a1 <draw-portrait>
|
|
JMP2r
|
|
|
|
@<draw-portrait> ( color -- )
|
|
;portrait-chr .Screen/addr DEO2
|
|
.Screen/sprite DEOk DEOk DEOk DEO
|
|
JMP2r
|
|
|
|
@<draw-box> ( -- )
|
|
;box-icn .Screen/addr DEO2
|
|
#05 .Screen/sprite DEOk DEOk DEOk DEO
|
|
JMP2r
|
|
|
|
@<draw-circle> ( color -- )
|
|
#01 .Screen/auto DEO
|
|
;circle-chr .Screen/addr DEO2
|
|
DUP .Screen/sprite DEO
|
|
DUP #10 ORA .Screen/sprite DEO
|
|
.Screen/y DEI2k #0008 ADD2 ROT DEO2
|
|
DUP #20 ORA .Screen/sprite DEO
|
|
#30 ORA .Screen/sprite DEO
|
|
JMP2r
|
|
|
|
@<draw-guide> ( -- )
|
|
.Screen/width DEI2 #01 SFT2 #0040 SUB2 .Screen/x DEO2
|
|
.Screen/height DEI2 #01 SFT2 #0040 SUB2 .Screen/y DEO2
|
|
#02 <draw-circle>
|
|
.Screen/y DEI2k #0008 ADD2 ROT DEO2
|
|
#82 <draw-circle>
|
|
.Screen/y DEI2k #0008 ADD2 ROT DEO2
|
|
#05 <draw-circle>
|
|
.Screen/y DEI2k #0008 ADD2 ROT DEO2
|
|
#85 <draw-circle>
|
|
.Screen/y DEI2k #0008 ADD2 ROT DEO2
|
|
#03 <draw-circle>
|
|
.Screen/y DEI2k #0008 ADD2 ROT DEO2
|
|
#83 <draw-circle>
|
|
.Screen/y DEI2k #0008 ADD2 ROT DEO2
|
|
#0a <draw-circle>
|
|
.Screen/y DEI2k #0008 ADD2 ROT DEO2
|
|
#8a <draw-circle>
|
|
JMP2r
|
|
|
|
@<update-cursor> ( color addr* -- )
|
|
[ LIT2 00 -Screen/auto ] DEO
|
|
;fill-icn .Screen/addr DEO2
|
|
#40 <draw-cursor>
|
|
.Mouse/x DEI2 ,<draw-cursor>/x STR2
|
|
.Mouse/y DEI2 ,<draw-cursor>/y STR2
|
|
.Screen/addr DEO2
|
|
|
|
@<draw-cursor> ( color -- )
|
|
[ LIT2 &x $2 ] .Screen/x DEO2
|
|
[ LIT2 &y $2 ] .Screen/y DEO2
|
|
.Screen/sprite DEO
|
|
JMP2r
|
|
|
|
@guide-icn [ 0101 0101 0101 01ff ]
|
|
|
|
@fill-icn [ ffff ffff ffff ffff ]
|
|
|
|
@cursor-icn [ 80c0 e0f0 f8e0 1000 ]
|
|
|
|
@portrait-chr [
|
|
070f 1e1d 1b3b 3b3b f0e0 c0c0 d08b 8080
|
|
f76f cf9f 9f5f 5f5f 0000 0007 1c40 4040
|
|
fffb f975 7576 7667 0000 3164 0406 0607
|
|
efef efef eddd 9e1e 0060 8000 0000 0000
|
|
3b2b 280d 0105 0506 8080 8081 e1f1 f1f0
|
|
5f6c 639b 0f27 77ab 4060 639b 0f27 67ab
|
|
0dc8 b0e5 cded fdfc 0dc8 b0e4 ccec fcfc
|
|
5e1e 1c9c 9d1d 5d59 4000 0080 8000 4040
|
|
0607 0707 070e 0e0e f0f0 f0f0 f0e0 e0e0
|
|
fb73 7fb7 bbbf bfdd f373 7b37 3b3f 3f1c
|
|
ffff ffff ffff ffff ffff ffff ffff ff7f
|
|
dba7 97f7 f7ed dd9d c080 90f0 f0e0 c080
|
|
1e0e 0000 0000 0000 c0c0 f0ff ffff ffff
|
|
ee03 0000 0000 0000 0e12 fcff ffff ffff
|
|
fffc f30f 1f1f 1f3f 9f3c f30f dfdf dfbf
|
|
3c80 8080 80c0 c0e0 0003 3fbf bfbf dfef ]
|
|
|
|
@box-icn [
|
|
001f 2050 4844 4241 00ff 0000 0000 0000
|
|
00ff 0000 0000 0000 00f8 040a 1222 4282
|
|
4040 4040 4040 4040 8040 2010 0804 0201
|
|
0102 0408 1020 4080 0202 0202 0202 0202
|
|
4040 4040 4040 4040 0102 0408 1020 4080
|
|
8040 2010 0804 0201 0202 0202 0202 0202
|
|
4142 4448 5020 1f00 0000 0000 0000 ff00
|
|
0000 0000 0000 ff00 8242 2212 0a04 f800 ]
|
|
|
|
@circle-chr [
|
|
071f 3c70 60e3 c7c7 0000 030f 1f1f 3f3f ]
|
|
|