0
0
Fork 0
mirror of https://git.sr.ht/~rabbits/uxn synced 2024-11-26 15:53:01 +00:00

Renamed PEK/POK to LDZ/STZ

This commit is contained in:
neauoire 2021-05-11 11:14:52 -07:00
parent 8630028e97
commit a206ed0b10
28 changed files with 1452 additions and 1452 deletions

View file

@ -18,10 +18,10 @@ contexts:
- match: '\.(\S+)\sDEO'
scope: constant.numeric
pop: true
- match: '\.(\S+)\sPOK2'
- match: '\.(\S+)\sSTZ2'
scope: constant.numeric
pop: true
- match: '\.(\S+)\sPOK'
- match: '\.(\S+)\sSTZ'
scope: constant.numeric
pop: true
- match: '\.(\S+)\sLDA2'
@ -37,10 +37,10 @@ contexts:
- match: '\.(\S+)\sDEI'
scope: entity.name.type.typedef
pop: true
- match: '\.(\S+)\sPEK2'
- match: '\.(\S+)\sLDZ2'
scope: entity.name.type.typedef
pop: true
- match: '\.(\S+)\sPEK'
- match: '\.(\S+)\sLDZ'
scope: entity.name.type.typedef
pop: true
- match: '\.(\S+)\sSTA2'

View file

@ -7,10 +7,10 @@ import P, R, S, C, Ct, Cp, V from require 'lpeg'
local labels, filename
opcode_translate =
PEK2: 'LDA'
POK2: 'STA'
LDR: 'PEK2'
STR: 'POK2'
LDZ2: 'LDA'
STZ2: 'STA'
LDR: 'LDZ2'
STR: 'STZ2'
LDR2: 'LDA2'
STR2: 'STA2'
@ -26,7 +26,7 @@ grammar = P {
r, w = if var\sub(1, 1) == var\sub(1, 1)\upper!
' DEI', ' DEO'
else
' PEK', ' POK'
' LDZ', ' STZ'
for i = 7, select('#', ...), 6
k = select i, ...
rr, ww = if '2' == select i + 3, ...

View file

@ -41,8 +41,8 @@
;on-mouse .Mouse/vector DEO2
( find center )
.Screen/width DEI2 2/ .center/x POK2
.Screen/height DEI2 2/ .center/y POK2
.Screen/width DEI2 2/ .center/x STZ2
.Screen/height DEI2 2/ .center/y STZ2
( background )
;tiles ;cover-pattern JSR2
@ -53,9 +53,9 @@ BRK
@on-frame ( -> )
( only draw once per second )
.DateTime/second DEI .last PEK NEQ #01 JCN [ BRK ]
.DateTime/second DEI .last LDZ NEQ #01 JCN [ BRK ]
.DateTime/second DEI .last POK
.DateTime/second DEI .last STZ
;redraw JSR2
@ -66,8 +66,8 @@ BRK
;draw-cursor JSR2
.Mouse/state DEI #00 EQU ,&no-touch JCN
( incr ) .style PEK INC #03 MOD .style POK
( bg ) ;tiles .style PEK #10 MUL TOS ADD2 ;cover-pattern JSR2
( incr ) .style LDZ INC #03 MOD .style STZ
( bg ) ;tiles .style LDZ #10 MUL TOS ADD2 ;cover-pattern JSR2
( fg ) ;redraw JSR2
( release ) #00 .Mouse/state DEO
&no-touch
@ -77,26 +77,26 @@ BRK
@redraw ( -- )
( hrs )
[ .center/x PEK2 #0018 SUB2 ]
[ .center/y PEK2 #0048 SUB2 ]
[ .center/x LDZ2 #0018 SUB2 ]
[ .center/y LDZ2 #0048 SUB2 ]
.DateTime/hour DEI #0a DIV ;draw-number JSR2
[ .center/x PEK2 #0008 ADD2 ]
[ .center/y PEK2 #0048 SUB2 ]
[ .center/x LDZ2 #0008 ADD2 ]
[ .center/y LDZ2 #0048 SUB2 ]
.DateTime/hour DEI #0a MOD ;draw-number JSR2
( min )
[ .center/x PEK2 #0018 SUB2 ]
[ .center/y PEK2 #0018 SUB2 ]
[ .center/x LDZ2 #0018 SUB2 ]
[ .center/y LDZ2 #0018 SUB2 ]
.DateTime/minute DEI #0a DIV ;draw-number JSR2
[ .center/x PEK2 #0008 ADD2 ]
[ .center/y PEK2 #0018 SUB2 ]
[ .center/x LDZ2 #0008 ADD2 ]
[ .center/y LDZ2 #0018 SUB2 ]
.DateTime/minute DEI #0a MOD ;draw-number JSR2
( sec )
[ .center/x PEK2 #0018 SUB2 ]
[ .center/y PEK2 #0018 ADD2 ]
[ .center/x LDZ2 #0018 SUB2 ]
[ .center/y LDZ2 #0018 ADD2 ]
.DateTime/second DEI #0a DIV
;draw-number JSR2
[ .center/x PEK2 #0008 ADD2 ]
[ .center/y PEK2 #0018 ADD2 ]
[ .center/x LDZ2 #0008 ADD2 ]
[ .center/y LDZ2 #0018 ADD2 ]
.DateTime/second DEI #0a MOD
;draw-number JSR2
@ -105,15 +105,15 @@ RTN
@draw-number ( x y n -- )
STH
( save pos ) .anchor/y POK2 .anchor/x POK2
( save pos ) .anchor/y STZ2 .anchor/x STZ2
#00 #0f
&loop
( save-x ) OVR #03 MOD TOS #0008 MUL2 .anchor/x PEK2 ADD2 .Screen/x DEO2
( save-y ) OVR #03 DIV TOS #0008 MUL2 .anchor/y PEK2 ADD2 .Screen/y DEO2
( save-x ) OVR #03 MOD TOS #0008 MUL2 .anchor/x LDZ2 ADD2 .Screen/x DEO2
( save-y ) OVR #03 DIV TOS #0008 MUL2 .anchor/y LDZ2 ADD2 .Screen/y DEO2
( get digit* ) OVR DUPr STHr #02 MUL TOS ;digits ADD2 LDA2
( get bit ) ROT #0e SWP SUB TOS SFT2 #0001 AND2
( set tile ) #0008 MUL2 ;tiles ADD2
( set style ) .style PEK #10 MUL TOS ADD2
( set style ) .style LDZ #10 MUL TOS ADD2
.Screen/addr DEO2
( draw ) #21 .Screen/color DEO
( incr ) SWP INC SWP
@ -146,15 +146,15 @@ RTN
( clear last cursor )
;cursor .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
( record pointer positions )
.Mouse/x DEI2 .pointer/x POK2
.Mouse/y DEI2 .pointer/y POK2
.Mouse/x DEI2 .pointer/x STZ2
.Mouse/y DEI2 .pointer/y STZ2
( draw new cursor )
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
( colorize on state )
#31 [ .Mouse/state DEI #00 NEQ ] ADD .Screen/color DEO

View file

@ -81,53 +81,53 @@
#1000 .Audio3/length DEO2
( defaults )
#01 .modes POK
#01 .piano/octave POK
#01 .modes STZ
#01 .piano/octave STZ
( find center )
.Screen/width DEI2 #0002 // .center/x POK2
.Screen/height DEI2 #0002 // .center/y POK2
.Screen/width DEI2 #0002 // .center/x STZ2
.Screen/height DEI2 #0002 // .center/y STZ2
( place frame )
.center/x PEK2 PAD-WIDTH #0003 ** -- #0010 -- .frame/x1 POK2
.center/y PEK2 #0050 -- .frame/y1 POK2
.center/x PEK2 PAD-WIDTH #0003 ** ++ #0010 ++ .frame/x2 POK2
.frame/y1 PEK2 PAD-HEIGHT #0004 ** ++ #0028 ++ .frame/y2 POK2
.center/x LDZ2 PAD-WIDTH #0003 ** -- #0010 -- .frame/x1 STZ2
.center/y LDZ2 #0050 -- .frame/y1 STZ2
.center/x LDZ2 PAD-WIDTH #0003 ** ++ #0010 ++ .frame/x2 STZ2
.frame/y1 LDZ2 PAD-HEIGHT #0004 ** ++ #0028 ++ .frame/y2 STZ2
( place pad-view )
.frame/x1 PEK2 .pad-view/x1 POK2
.frame/y1 PEK2 .pad-view/y1 POK2
.pad-view/x1 PEK2 #0004 PAD-WIDTH ** ++ .pad-view/x2 POK2
.pad-view/y1 PEK2 #0004 PAD-HEIGHT ** ++ .pad-view/y2 POK2
.frame/x1 LDZ2 .pad-view/x1 STZ2
.frame/y1 LDZ2 .pad-view/y1 STZ2
.pad-view/x1 LDZ2 #0004 PAD-WIDTH ** ++ .pad-view/x2 STZ2
.pad-view/y1 LDZ2 #0004 PAD-HEIGHT ** ++ .pad-view/y2 STZ2
( place mix-view )
.pad-view/x2 PEK2 #0006 ++ .mix-view/x1 POK2
.pad-view/y1 PEK2 .mix-view/y1 POK2
.mix-view/x1 PEK2 #007a ++ .mix-view/x2 POK2
.pad-view/y2 PEK2 .mix-view/y2 POK2
.pad-view/x2 LDZ2 #0006 ++ .mix-view/x1 STZ2
.pad-view/y1 LDZ2 .mix-view/y1 STZ2
.mix-view/x1 LDZ2 #007a ++ .mix-view/x2 STZ2
.pad-view/y2 LDZ2 .mix-view/y2 STZ2
( place oct-view )
.frame/x1 PEK2 .oct-view/x1 POK2
.mix-view/y2 PEK2 #0004 ++ .oct-view/y1 POK2
.oct-view/x1 PEK2 #0050 ++ .oct-view/x2 POK2
.oct-view/y1 PEK2 #0018 ++ .oct-view/y2 POK2
.frame/x1 LDZ2 .oct-view/x1 STZ2
.mix-view/y2 LDZ2 #0004 ++ .oct-view/y1 STZ2
.oct-view/x1 LDZ2 #0050 ++ .oct-view/x2 STZ2
.oct-view/y1 LDZ2 #0018 ++ .oct-view/y2 STZ2
( place wav-view )
.oct-view/x2 PEK2 .wav-view/x1 POK2
.mix-view/y2 PEK2 #0004 ++ .wav-view/y1 POK2
.frame/x2 PEK2 .wav-view/x2 POK2
.wav-view/y1 PEK2 #0020 ++ .wav-view/y2 POK2
.oct-view/x2 LDZ2 .wav-view/x1 STZ2
.mix-view/y2 LDZ2 #0004 ++ .wav-view/y1 STZ2
.frame/x2 LDZ2 .wav-view/x2 STZ2
.wav-view/y1 LDZ2 #0020 ++ .wav-view/y2 STZ2
( draw outlines )
.mix-view/x1 PEK2 #0004 --
.mix-view/y1 PEK2 #0000 --
.mix-view/x2 PEK2 #0002 --
.mix-view/y2 PEK2 #0002 --
.mix-view/x1 LDZ2 #0004 --
.mix-view/y1 LDZ2 #0000 --
.mix-view/x2 LDZ2 #0002 --
.mix-view/y2 LDZ2 #0002 --
#01 ;line-rect JSR2
.wav-view/x1 PEK2 #0000 --
.wav-view/y1 PEK2 #0002 --
.wav-view/x2 PEK2 #0002 --
.wav-view/y2 PEK2 #0002 ++
.wav-view/x1 LDZ2 #0000 --
.wav-view/y1 LDZ2 #0002 --
.wav-view/x2 LDZ2 #0002 --
.wav-view/y2 LDZ2 #0002 ++
#01 ;line-rect JSR2
( initial draw )
@ -155,8 +155,8 @@ BRK
#00 #04
&loop
OVR STH
( x ) .mix-view/x1 PEK2 #0074 ++
( y ) .mix-view/y1 PEK2 PAD-HEIGHT DUPr STHr TOS ** ++ #0002 ++
( x ) .mix-view/x1 LDZ2 #0074 ++
( y ) .mix-view/y1 LDZ2 PAD-HEIGHT DUPr STHr TOS ** ++ #0002 ++
( output ) .Audio0/output STHr #10 * + DEI
;draw-monitor JSR2
( incr ) SWP #01 + SWP
@ -171,16 +171,16 @@ BRK
.Mouse/state DEI #00 ! #01 JCN [ BRK ]
.Mouse/x DEI2 DUP2 .pad-view/x1 PEK2 >> ROT ROT .pad-view/x2 PEK2 #0001 ++ << #0101 ==
.Mouse/y DEI2 DUP2 .pad-view/y1 PEK2 >> ROT ROT .pad-view/y2 PEK2 << #0101 ==
.Mouse/x DEI2 DUP2 .pad-view/x1 LDZ2 >> ROT ROT .pad-view/x2 LDZ2 #0001 ++ << #0101 ==
.Mouse/y DEI2 DUP2 .pad-view/y1 LDZ2 >> ROT ROT .pad-view/y2 LDZ2 << #0101 ==
#0101 == ;on-touch-pad JCN2
.Mouse/x DEI2 DUP2 .mix-view/x1 PEK2 >> ROT ROT .mix-view/x2 PEK2 #0001 ++ << #0101 ==
.Mouse/y DEI2 DUP2 .mix-view/y1 PEK2 >> ROT ROT .mix-view/y2 PEK2 << #0101 ==
.Mouse/x DEI2 DUP2 .mix-view/x1 LDZ2 >> ROT ROT .mix-view/x2 LDZ2 #0001 ++ << #0101 ==
.Mouse/y DEI2 DUP2 .mix-view/y1 LDZ2 >> ROT ROT .mix-view/y2 LDZ2 << #0101 ==
#0101 == ;on-touch-mix JCN2
.Mouse/x DEI2 DUP2 .oct-view/x1 PEK2 >> ROT ROT .oct-view/x2 PEK2 #0001 ++ << #0101 ==
.Mouse/y DEI2 DUP2 .oct-view/y1 PEK2 >> ROT ROT .oct-view/y2 PEK2 << #0101 ==
.Mouse/x DEI2 DUP2 .oct-view/x1 LDZ2 >> ROT ROT .oct-view/x2 LDZ2 #0001 ++ << #0101 ==
.Mouse/y DEI2 DUP2 .oct-view/y1 LDZ2 >> ROT ROT .oct-view/y2 LDZ2 << #0101 ==
#0101 == ;on-touch-oct JCN2
BRK
@ -229,8 +229,8 @@ BRK
@on-touch-pad ( -> )
( x ) .Mouse/x DEI2 .pad-view/x1 PEK2 -- PAD-WIDTH // TOB
( y ) .Mouse/y DEI2 .pad-view/y1 PEK2 -- PAD-HEIGHT // TOB #04 * +
( x ) .Mouse/x DEI2 .pad-view/x1 LDZ2 -- PAD-WIDTH // TOB
( y ) .Mouse/y DEI2 .pad-view/y1 LDZ2 -- PAD-HEIGHT // TOB #04 * +
DUP SWP ;play-pad JSR2
@ -242,8 +242,8 @@ BRK
@on-touch-mix ( -> )
( channel ) .Mouse/y DEI2 .mix-view/y1 PEK2 -- PAD-HEIGHT // TOB STH
( knob ) .Mouse/x DEI2 .mix-view/x1 PEK2 -- #0010 // TOB
( channel ) .Mouse/y DEI2 .mix-view/y1 LDZ2 -- PAD-HEIGHT // TOB STH
( knob ) .Mouse/x DEI2 .mix-view/x1 LDZ2 -- #0010 // TOB
( adsr )
DUP #00 ! ,&no-a JCN
.Audio0/adsr [ DUPr STHr #10 * + ] DEI
@ -263,9 +263,9 @@ BRK
.Audio0/adsr [ DUPr STHr #10 * + ] #01 + DEO &no-r
( modes )
DUP #04 ! ,&no-repeat JCN
.modes [ DUPr STHr + ] PEK
.modes [ DUPr STHr + ] LDZ
#00 =
.modes [ DUPr STHr + ] POK &no-repeat
.modes [ DUPr STHr + ] STZ &no-repeat
( volume )
DUP #05 ! ,&no-left JCN
.Audio0/volume [ DUPr STHr #10 * + ] DEI
@ -287,26 +287,26 @@ BRK
@on-touch-oct ( -> )
.Mouse/x DEI2 .oct-view/x1 PEK2 -- #0008 // TOB #08 ! ,&no-mod JCN
.Mouse/y DEI2 .oct-view/y1 PEK2 -- #0008 // TOB
.Mouse/x DEI2 .oct-view/x1 LDZ2 -- #0008 // TOB #08 ! ,&no-mod JCN
.Mouse/y DEI2 .oct-view/y1 LDZ2 -- #0008 // TOB
DUP #00 ! ,&no-incr JCN
.piano/octave PEK #01 + .piano/octave POK &no-incr
.piano/octave LDZ #01 + .piano/octave STZ &no-incr
DUP #02 ! ,&no-decr JCN
.piano/octave PEK #01 - .piano/octave POK &no-decr
.piano/octave LDZ #01 - .piano/octave STZ &no-decr
POP
( release ) #00 .Mouse/state DEO
;draw-octave JSR2
BRK
&no-mod
.Mouse/x DEI2 .oct-view/x1 PEK2 -- #0008 // TOB #06 GTH ,&no-key JCN
.Mouse/x DEI2 .oct-view/x1 PEK2 -- #0008 //
.Mouse/x DEI2 .oct-view/x1 LDZ2 -- #0008 // TOB #06 GTH ,&no-key JCN
.Mouse/x DEI2 .oct-view/x1 LDZ2 -- #0008 //
( set pitch of pad )
DUP2 ;notes ++ LDA .pads/last PEK SWP .piano/octave PEK #02 - #0c * +
DUP2 ;notes ++ LDA .pads/last LDZ SWP .piano/octave LDZ #02 - #0c * +
( save ) SWP TOS ;pad-pitch ++ STA
( record last note )
TOB .piano/last POK
.pads/last PEK ;play-pad JSR2
TOB .piano/last STZ
.pads/last LDZ ;play-pad JSR2
( release ) #00 .Mouse/state DEO
;draw-octave JSR2
&no-key
@ -316,8 +316,8 @@ BRK
@play-pad ( note pad -- )
( unselect last )
.pads/last PEK #01 ;draw-pad JSR2
DUP .pads/last POK
.pads/last LDZ #01 ;draw-pad JSR2
DUP .pads/last STZ
( highlight )
DUP #02 ;draw-pad JSR2
( addr )
@ -325,7 +325,7 @@ BRK
DUP #04 / #10 * .Audio0/addr + STH2r ROT DEO2
( pitch )
DUP TOS ;pad-pitch ++ LDA STH
DUP #04 / .modes + PEK #00 = #80 * STH ADDr
DUP #04 / .modes + LDZ #00 = #80 * STH ADDr
DUP #04 / #10 * .Audio0/pitch + STHr SWP DEO
#04 / ;draw-mixer JSR2
@ -337,25 +337,25 @@ RTN
#02 * #00 SWP ;pad-addr ++ LDA2 STH2
( clear )
.wav-view/x1 PEK2 #0002 ++
.wav-view/y1 PEK2
.wav-view/x2 PEK2 #0002 --
.wav-view/y2 PEK2
.wav-view/x1 LDZ2 #0002 ++
.wav-view/y1 LDZ2
.wav-view/x2 LDZ2 #0002 --
.wav-view/y2 LDZ2
#00 ;fill-rect JSR2
.wav-view/x1 PEK2 #0002 ++ .Screen/x DEO2
.wav-view/x1 LDZ2 #0002 ++ .Screen/x DEO2
( waveform )
#00 #e8
&loop
( dotted line )
OVR #01 AND ,&no-dot JCN
.wav-view/y1 PEK2 #0010 ++ .Screen/y DEO2
.wav-view/y1 LDZ2 #0010 ++ .Screen/y DEO2
#01 .Screen/color DEO
&no-dot
OVR TOS #0010 ** [ DUP2r STH2r ] ++ LDA
#02 /
TOS #0004 // .wav-view/y1 PEK2 ++ .Screen/y DEO2
TOS #0004 // .wav-view/y1 LDZ2 ++ .Screen/y DEO2
.Screen/x DEI2 #0001 ++ .Screen/x DEO2
( draw ) #02 .Screen/color DEO
( incr ) SWP #01 + SWP
@ -367,24 +367,24 @@ RTN
@draw-mixer ( mixer -- )
DUP STH #00 SWP PAD-HEIGHT ** .mix-view/y1 PEK2 ++ #0003 ++
DUP STH #00 SWP PAD-HEIGHT ** .mix-view/y1 LDZ2 ++ #0003 ++
( adsr )
DUP2 .mix-view/x1 PEK2 SWP2
DUP2 .mix-view/x1 LDZ2 SWP2
.Audio0/adsr [ DUPr STHr #10 * + ] DEI #04 SFT ;draw-knob JSR2
DUP2 .mix-view/x1 PEK2 #0010 ++ SWP2
DUP2 .mix-view/x1 LDZ2 #0010 ++ SWP2
.Audio0/adsr [ DUPr STHr #10 * + ] DEI #0f AND ;draw-knob JSR2
DUP2 .mix-view/x1 PEK2 #0020 ++ SWP2
DUP2 .mix-view/x1 LDZ2 #0020 ++ SWP2
.Audio0/adsr [ DUPr STHr #10 * + ] #01 + DEI #04 SFT ;draw-knob JSR2
DUP2 .mix-view/x1 PEK2 #0030 ++ SWP2
DUP2 .mix-view/x1 LDZ2 #0030 ++ SWP2
.Audio0/adsr [ DUPr STHr #10 * + ] #01 + DEI #0f AND ;draw-knob JSR2
( once/repeat )
DUP2 .mix-view/x1 PEK2 #0040 ++ SWP2
.modes [ DUPr STHr + ] PEK ;draw-switch JSR2
DUP2 .mix-view/x1 LDZ2 #0040 ++ SWP2
.modes [ DUPr STHr + ] LDZ ;draw-switch JSR2
( volume )
DUP2 .mix-view/x1 PEK2 #0050 ++ SWP2
DUP2 .mix-view/x1 LDZ2 #0050 ++ SWP2
.Audio0/volume [ DUPr STHr #10 * + ] DEI #04 SFT ;draw-knob JSR2
DUP2 .mix-view/x1 PEK2 #0060 ++ SWP2
DUP2 .mix-view/x1 LDZ2 #0060 ++ SWP2
.Audio0/volume [ DUPr STHr #10 * + ] DEI #0f AND ;draw-knob JSR2
POP2
POPr
@ -397,8 +397,8 @@ RTN
DUPr STHr
DUP #04 / SWP #04 MOD TOS PAD-WIDTH ** ( center ) .pad-view/x1 PEK2 ++
ROT TOS PAD-HEIGHT ** ( center ) .pad-view/y1 PEK2 ++
DUP #04 / SWP #04 MOD TOS PAD-WIDTH ** ( center ) .pad-view/x1 LDZ2 ++
ROT TOS PAD-HEIGHT ** ( center ) .pad-view/y1 LDZ2 ++
( draw outline )
OVR2 OVR2
@ -435,28 +435,28 @@ RTN
@draw-octave ( -- )
.oct-view/x1 PEK2 .oct-view/y1 PEK2
.oct-view/x1 LDZ2 .oct-view/y1 LDZ2
OVR2 OVR2 ;keys-left-icns #21 .piano/last PEK #00 = + ;draw-key JSR2
OVR2 #0008 ++ OVR2 ;keys-middle-icns #21 .piano/last PEK #01 = + ;draw-key JSR2
OVR2 #0010 ++ OVR2 ;keys-right-icns #21 .piano/last PEK #02 = + ;draw-key JSR2
OVR2 #0018 ++ OVR2 ;keys-left-icns #21 .piano/last PEK #03 = + ;draw-key JSR2
OVR2 #0020 ++ OVR2 ;keys-middle-icns #21 .piano/last PEK #04 = + ;draw-key JSR2
OVR2 #0028 ++ OVR2 ;keys-middle-icns #21 .piano/last PEK #05 = + ;draw-key JSR2
SWP2 #0030 ++ SWP2 ;keys-right-icns #21 .piano/last PEK #06 = + ;draw-key JSR2
OVR2 OVR2 ;keys-left-icns #21 .piano/last LDZ #00 = + ;draw-key JSR2
OVR2 #0008 ++ OVR2 ;keys-middle-icns #21 .piano/last LDZ #01 = + ;draw-key JSR2
OVR2 #0010 ++ OVR2 ;keys-right-icns #21 .piano/last LDZ #02 = + ;draw-key JSR2
OVR2 #0018 ++ OVR2 ;keys-left-icns #21 .piano/last LDZ #03 = + ;draw-key JSR2
OVR2 #0020 ++ OVR2 ;keys-middle-icns #21 .piano/last LDZ #04 = + ;draw-key JSR2
OVR2 #0028 ++ OVR2 ;keys-middle-icns #21 .piano/last LDZ #05 = + ;draw-key JSR2
SWP2 #0030 ++ SWP2 ;keys-right-icns #21 .piano/last LDZ #06 = + ;draw-key JSR2
.oct-view/x1 PEK2 #0040 ++ .Screen/x DEO2
.oct-view/x1 LDZ2 #0040 ++ .Screen/x DEO2
;arrow-icns .Screen/addr DEO2
.oct-view/y1 PEK2 .Screen/y DEO2
.oct-view/y1 LDZ2 .Screen/y DEO2
#21 .Screen/color DEO
;arrow-icns #0008 ++ .Screen/addr DEO2
.oct-view/y1 PEK2 #0010 ++ .Screen/y DEO2
.oct-view/y1 LDZ2 #0010 ++ .Screen/y DEO2
#21 .Screen/color DEO
;font-hex .piano/octave PEK #03 + #00 SWP #0008 ** ++ .Screen/addr DEO2
.oct-view/y1 PEK2 #0008 ++ .Screen/y DEO2
;font-hex .piano/octave LDZ #03 + #00 SWP #0008 ** ++ .Screen/addr DEO2
.oct-view/y1 LDZ2 #0008 ++ .Screen/y DEO2
#23 .Screen/color DEO
RTN
@ -504,15 +504,15 @@ RTN
( clear last cursor )
;cursor-icn .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
( record pointer positions )
.Mouse/x DEI2 .pointer/x POK2
.Mouse/y DEI2 .pointer/y POK2
.Mouse/x DEI2 .pointer/x STZ2
.Mouse/y DEI2 .pointer/y STZ2
( draw new cursor )
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
( colorize on state )
#33 [ .Mouse/state DEI #00 ! ] - .Screen/color DEO
@ -564,20 +564,20 @@ RTN
@line-rect ( x1* y1* x2* y2* color -- )
( load ) .color POK DUP2 STH2 .rect/y2 POK2 .rect/x2 POK2 DUP2 STH2 .rect/y1 POK2 .rect/x1 POK2
( load ) .color STZ DUP2 STH2 .rect/y2 STZ2 .rect/x2 STZ2 DUP2 STH2 .rect/y1 STZ2 .rect/x1 STZ2
STH2r #0001 ++ STH2r
&ver
( save ) OVR2 .Screen/y DEO2
( draw ) .rect/x1 PEK2 .Screen/x DEO2 .color PEK DUP .Screen/color DEO
( draw ) .rect/x2 PEK2 .Screen/x DEO2 .Screen/color DEO
( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ DUP .Screen/color DEO
( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .Screen/color DEO
( incr ) SWP2 #0001 ++ SWP2
OVR2 OVR2 LTS2 ,&ver JCN
POP2 POP2
.rect/x1 PEK2 #0001 ++ .rect/x2 PEK2 #0001 --
.rect/x1 LDZ2 #0001 ++ .rect/x2 LDZ2 #0001 --
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .rect/y1 PEK2 .Screen/y DEO2 .color PEK DUP .Screen/color DEO
( draw ) .rect/y2 PEK2 .Screen/y DEO2 .Screen/color DEO
( draw ) .rect/y1 LDZ2 .Screen/y DEO2 .color LDZ DUP .Screen/color DEO
( draw ) .rect/y2 LDZ2 .Screen/y DEO2 .Screen/color DEO
( incr ) SWP2 #0001 ++ SWP2
OVR2 OVR2 #0001 ++ LTS2 ,&hor JCN
POP2 POP2
@ -601,14 +601,14 @@ RTN
@fill-rect ( x1* y1* x2* y2* color -- )
.color POK
.color STZ
( x1 x2 y1 y2 ) ROT2 SWP2
&ver
( save ) OVR2 .Screen/y DEO2
STH2 STH2 OVR2 OVR2
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 #0001 ++ SWP2
OVR2 OVR2 LTS2 ,&hor JCN
POP2 POP2 STH2r STH2r

View file

@ -55,20 +55,20 @@
#07 #05 ;set-cell JSR2
#06 #05 ;set-cell JSR2
.Screen/width DEI2 #0002 // WIDTH TOS -- .anchor/x POK2
.Screen/height DEI2 #0002 // HEIGHT TOS -- .anchor/y POK2
.Screen/width DEI2 #0002 // WIDTH TOS -- .anchor/x STZ2
.Screen/height DEI2 #0002 // HEIGHT TOS -- .anchor/y STZ2
#01 .world/paused POK
#01 .world/paused STZ
BRK
@on-frame ( -> )
.Mouse/state DEI #00 = #01 JCN [ BRK ]
.world/paused PEK #00 ! #01 JCN [ BRK ]
.world/paused LDZ #00 ! #01 JCN [ BRK ]
( incr frame ) .world/frame PEK INCR [ DUP ] .world/frame POK
( reset count ) #0000 .world/count POK2
( incr frame ) .world/frame LDZ INCR [ DUP ] .world/frame STZ
( reset count ) #0000 .world/count STZ2
#10 MOD #00 ! #01 JCN [ BRK ]
@ -94,9 +94,9 @@ BRK
;draw-grid JSR2
( draw cell count )
.anchor/x PEK2 .Screen/x DEO2
.anchor/y PEK2 HEIGHT #02 * TOS ++ .Screen/y DEO2
.world/count PEK2 #22 ;draw-short JSR2
.anchor/x LDZ2 .Screen/x DEO2
.anchor/y LDZ2 HEIGHT #02 * TOS ++ .Screen/y DEO2
.world/count LDZ2 #22 ;draw-short JSR2
BRK
@ -104,29 +104,29 @@ BRK
( clear last cursor )
;cursor .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
( record pointer positions )
.Mouse/x DEI2 .pointer/x POK2
.Mouse/y DEI2 .pointer/y POK2
.Mouse/x DEI2 .pointer/x STZ2
.Mouse/y DEI2 .pointer/y STZ2
( draw new cursor )
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
( colorize on state )
#32 [ .Mouse/state DEI #00 ! ] + .Screen/color DEO
.Mouse/state DEI #00 ! #01 JCN [ BRK ]
.Mouse/x DEI2 DUP2 .anchor/x PEK2 >> ROT ROT .anchor/x PEK2 WIDTH #02 * TOS ++ #0001 ++ << #0101 ==
.Mouse/y DEI2 DUP2 .anchor/y PEK2 >> ROT ROT .anchor/y PEK2 HEIGHT #02 * TOS ++ << #0101 ==
.Mouse/x DEI2 DUP2 .anchor/x LDZ2 >> ROT ROT .anchor/x LDZ2 WIDTH #02 * TOS ++ #0001 ++ << #0101 ==
.Mouse/y DEI2 DUP2 .anchor/y LDZ2 >> ROT ROT .anchor/y LDZ2 HEIGHT #02 * TOS ++ << #0101 ==
#0101 == #01 JCN [ BRK ]
.Mouse/x DEI2 .anchor/x PEK2 SUB2 #02 / TOB
.Mouse/y DEI2 .anchor/y PEK2 SUB2 #02 / TOB
.Mouse/x DEI2 .anchor/x LDZ2 SUB2 #02 / TOB
.Mouse/y DEI2 .anchor/y LDZ2 SUB2 #02 / TOB
;set-cell JSR2
;draw-grid JSR2
@ -138,7 +138,7 @@ BRK
.Controller/key DEI #00 ! #01 JCN [ BRK ]
.Controller/key DEI #20 ! ,&no-toggle JCN
.world/paused PEK #01 ! .world/paused POK
.world/paused LDZ #01 ! .world/paused STZ
&no-toggle
BRK
@ -147,11 +147,11 @@ BRK
#00 HEIGHT
&ver
OVR TOS #0002 ** .anchor/y PEK2 ++ .Screen/y DEO2
OVR TOS #0002 ** .anchor/y LDZ2 ++ .Screen/y DEO2
OVR STH
#00 WIDTH
&hor
OVR TOS #0002 ** .anchor/x PEK2 ++ .Screen/x DEO2
OVR TOS #0002 ** .anchor/x LDZ2 ++ .Screen/x DEO2
OVR DUPr STHr ,get-cell JSR INCR .Screen/color DEO
SWP INCR SWP
DUP2 ! ,&hor JCN
@ -242,7 +242,7 @@ RTN
HEIGHT MOD SWP WIDTH MOD SWP
WIDTH #08 / TOS ROT TOS ** ROT #08 / TOS ++ [ BANK2 ++ ]
( incr count )
.world/count PEK2 #0001 ADD2 .world/count POK2
.world/count LDZ2 #0001 ADD2 .world/count STZ2
( save in buffer )
STH2
DUP2 POP #08 MOD #01 SWP SFL

View file

@ -5,7 +5,7 @@
%8* { #0008 MUL2 } %8/ { #0008 DIV2 }
%++ { #0001 ADD2 }
%MOD { DUP2 DIV MUL SUB }
%TRACK { ;track/ch1 #00 .track/active PEK #0020 MUL2 ADD2 }
%TRACK { ;track/ch1 #00 .track/active LDZ #0020 MUL2 ADD2 }
( variables )
@ -43,16 +43,16 @@
( vectors ) ;on-mouse .Mouse/vector DEO2
( vectors ) ;on-button .Controller/vector DEO2
.Screen/width DEI2 #0002 DIV2 DUP2 #0080 SUB2 .trkframe/x1 POK2
#0080 ADD2 .trkframe/x2 POK2
.Screen/height DEI2 #0002 DIV2 DUP2 #0038 SUB2 #0010 SUB2 .trkframe/y1 POK2
#0038 ADD2 #0010 SUB2 .trkframe/y2 POK2
.Screen/width DEI2 #0002 DIV2 DUP2 #0080 SUB2 .trkframe/x1 STZ2
#0080 ADD2 .trkframe/x2 STZ2
.Screen/height DEI2 #0002 DIV2 DUP2 #0038 SUB2 #0010 SUB2 .trkframe/y1 STZ2
#0038 ADD2 #0010 SUB2 .trkframe/y2 STZ2
.trkframe/x1 PEK2 .chnframe/x1 POK2 .trkframe/y2 PEK2 .chnframe/y1 POK2
.chnframe/x1 PEK2 #0030 ADD2 .chnframe/x2 POK2 .chnframe/y1 PEK2 #0030 ADD2 .chnframe/y2 POK2
.trkframe/x1 LDZ2 .chnframe/x1 STZ2 .trkframe/y2 LDZ2 .chnframe/y1 STZ2
.chnframe/x1 LDZ2 #0030 ADD2 .chnframe/x2 STZ2 .chnframe/y1 LDZ2 #0030 ADD2 .chnframe/y2 STZ2
.chnframe/x2 PEK2 .ctlframe/x1 POK2 .chnframe/y1 PEK2 .ctlframe/y1 POK2
.trkframe/x2 PEK2 .ctlframe/x2 POK2 .chnframe/y2 PEK2 .ctlframe/y2 POK2
.chnframe/x2 LDZ2 .ctlframe/x1 STZ2 .chnframe/y1 LDZ2 .ctlframe/y1 STZ2
.trkframe/x2 LDZ2 .ctlframe/x2 STZ2 .chnframe/y2 LDZ2 .ctlframe/y2 STZ2
( default settings )
#048c .Audio0/adsr DEO2 #88 .Audio0/volume DEO
@ -79,7 +79,7 @@ BRK
;move-head JSR2
;draw-vu JSR2
.head/pos PEK #08 MOD #00 NEQ ,&skip JCN
.head/pos LDZ #08 MOD #00 NEQ ,&skip JCN
;bang JSR2
&skip
@ -88,14 +88,14 @@ BRK
@on-mouse ( -> )
.Mouse/state DEI #00 EQU ;&click-end JCN2
.Mouse/x DEI2 .trkframe/x1 PEK2 GTH2 .Mouse/x DEI2 .trkframe/x2 PEK2 LTH2 #0101 EQU2
.Mouse/y DEI2 .trkframe/y1 PEK2 GTH2 .Mouse/y DEI2 .trkframe/y2 PEK2 LTH2 #0101 EQU2
.Mouse/x DEI2 .trkframe/x1 LDZ2 GTH2 .Mouse/x DEI2 .trkframe/x2 LDZ2 LTH2 #0101 EQU2
.Mouse/y DEI2 .trkframe/y1 LDZ2 GTH2 .Mouse/y DEI2 .trkframe/y2 LDZ2 LTH2 #0101 EQU2
#0101 EQU2 ;touch-trk JCN2
.Mouse/x DEI2 .chnframe/x1 PEK2 GTH2 .Mouse/x DEI2 .chnframe/x2 PEK2 LTH2 #0101 EQU2
.Mouse/y DEI2 .chnframe/y1 PEK2 8+ GTH2 .Mouse/y DEI2 .chnframe/y2 PEK2 8- LTH2 #0101 EQU2
.Mouse/x DEI2 .chnframe/x1 LDZ2 GTH2 .Mouse/x DEI2 .chnframe/x2 LDZ2 LTH2 #0101 EQU2
.Mouse/y DEI2 .chnframe/y1 LDZ2 8+ GTH2 .Mouse/y DEI2 .chnframe/y2 LDZ2 8- LTH2 #0101 EQU2
#0101 EQU2 ;touch-chn JCN2
.Mouse/x DEI2 .ctlframe/x1 PEK2 GTH2 .Mouse/x DEI2 .ctlframe/x2 PEK2 LTH2 #0101 EQU2
.Mouse/y DEI2 .ctlframe/y1 PEK2 8+ GTH2 .Mouse/y DEI2 .ctlframe/y2 PEK2 8- LTH2 #0101 EQU2
.Mouse/x DEI2 .ctlframe/x1 LDZ2 GTH2 .Mouse/x DEI2 .ctlframe/x2 LDZ2 LTH2 #0101 EQU2
.Mouse/y DEI2 .ctlframe/y1 LDZ2 8+ GTH2 .Mouse/y DEI2 .ctlframe/y2 LDZ2 8- LTH2 #0101 EQU2
#0101 EQU2 ;touch-ctl JCN2
&click-end
@ -136,10 +136,10 @@ RTN
;clear-notes JSR2
( get note )
#0e .Mouse/y DEI2 .trkframe/y1 PEK2 SUB2 SWP POP #08 DIV SUB
#0e .Mouse/y DEI2 .trkframe/y1 LDZ2 SUB2 SWP POP #08 DIV SUB
.Mouse/state DEI #10 NEQ ,&no-erase JCN POP #00 &no-erase
( edit note )
TRACK #00 .Mouse/x DEI2 .trkframe/x1 PEK2 SUB2 SWP POP #08 DIV ADD2 STA
TRACK #00 .Mouse/x DEI2 .trkframe/x1 LDZ2 SUB2 SWP POP #08 DIV ADD2 STA
( release ) #00 .Mouse/state DEO
;draw-notes JSR2
@ -148,7 +148,7 @@ BRK
@touch-chn ( -- )
;clear-notes JSR2
( save ) .Mouse/y DEI2 .chnframe/y1 PEK2 SUB2 SWP POP #08 DIV #01 SUB .track/active POK
( save ) .Mouse/y DEI2 .chnframe/y1 LDZ2 SUB2 SWP POP #08 DIV #01 SUB .track/active STZ
( release ) #00 .Mouse/state DEO
;draw-channels JSR2
;draw-notes JSR2
@ -158,31 +158,31 @@ BRK
@touch-ctl ( -- )
.Mouse/x DEI2 .ctlframe/x1 PEK2 SUB2 8- 8/ SWP POP #02 DIV
.Mouse/x DEI2 .ctlframe/x1 LDZ2 SUB2 8- 8/ SWP POP #02 DIV
DUP #00 NEQ ,&no-a JCN
.Audio0/adsr .track/active PEK #10 MUL ADD DEI
.Audio0/adsr .track/active LDZ #10 MUL ADD DEI
#10 .Mouse/state DEI #10 EQU #e0 MUL ADD ADD
.Audio0/adsr .track/active PEK #10 MUL ADD DEO &no-a
.Audio0/adsr .track/active LDZ #10 MUL ADD DEO &no-a
DUP #01 NEQ ,&no-d JCN
.Audio0/adsr .track/active PEK #10 MUL ADD DEI
.Audio0/adsr .track/active LDZ #10 MUL ADD DEI
DUP #f0 AND STH #01 .Mouse/state DEI #10 EQU #0e MUL ADD ADD #0f AND STHr ADD
.Audio0/adsr .track/active PEK #10 MUL ADD DEO &no-d
.Audio0/adsr .track/active LDZ #10 MUL ADD DEO &no-d
DUP #02 NEQ ,&no-s JCN
.Audio0/adsr .track/active PEK #10 MUL ADD #01 ADD DEI
.Audio0/adsr .track/active LDZ #10 MUL ADD #01 ADD DEI
#10 .Mouse/state DEI #10 EQU #e0 MUL ADD ADD
.Audio0/adsr .track/active PEK #10 MUL ADD #01 ADD DEO &no-s
.Audio0/adsr .track/active LDZ #10 MUL ADD #01 ADD DEO &no-s
DUP #03 NEQ ,&no-r JCN
.Audio0/adsr .track/active PEK #10 MUL ADD #01 ADD DEI
.Audio0/adsr .track/active LDZ #10 MUL ADD #01 ADD DEI
DUP #f0 AND STH #01 .Mouse/state DEI #10 EQU #0e MUL ADD ADD #0f AND STHr ADD
.Audio0/adsr .track/active PEK #10 MUL ADD #01 ADD DEO &no-r
.Audio0/adsr .track/active LDZ #10 MUL ADD #01 ADD DEO &no-r
DUP #05 NEQ ,&no-left JCN
.Audio0/volume .track/active PEK #10 MUL ADD DEI
.Audio0/volume .track/active LDZ #10 MUL ADD DEI
#10 .Mouse/state DEI #10 EQU #e0 MUL ADD ADD
.Audio0/volume .track/active PEK #10 MUL ADD DEO &no-left
.Audio0/volume .track/active LDZ #10 MUL ADD DEO &no-left
DUP #06 NEQ ,&no-right JCN
.Audio0/volume .track/active PEK #10 MUL ADD DEI
.Audio0/volume .track/active LDZ #10 MUL ADD DEI
DUP #f0 AND STH #01 .Mouse/state DEI #10 EQU #0e MUL ADD ADD #0f AND STHr ADD
.Audio0/volume .track/active PEK #10 MUL ADD DEO &no-right
.Audio0/volume .track/active LDZ #10 MUL ADD DEO &no-right
POP
( release ) #00 .Mouse/state DEO
;draw-controls JSR2
@ -191,28 +191,28 @@ BRK
@bang ( -- )
;track/ch1 #00 .head/pos PEK #08 DIV ADD2 LDA
;track/ch1 #00 .head/pos LDZ #08 DIV ADD2 LDA
#01 SUB
DUP #ff NEQ ,&skip1 JCN
POP ,&listen2 JMP
&skip1
#00 SWP ;notes ADD2 LDA .Audio0/pitch DEO
&listen2
;track/ch2 #00 .head/pos PEK #08 DIV ADD2 LDA
;track/ch2 #00 .head/pos LDZ #08 DIV ADD2 LDA
#01 SUB
DUP #ff NEQ ,&skip2 JCN
POP ,&listen3 JMP
&skip2
#00 SWP ;notes ADD2 LDA .Audio1/pitch DEO
&listen3
;track/ch3 #00 .head/pos PEK #08 DIV ADD2 LDA
;track/ch3 #00 .head/pos LDZ #08 DIV ADD2 LDA
#01 SUB
DUP #ff NEQ ,&skip3 JCN
POP ,&listen4 JMP
&skip3
#00 SWP ;notes ADD2 LDA .Audio2/pitch DEO
&listen4
;track/ch4 #00 .head/pos PEK #08 DIV ADD2 LDA
;track/ch4 #00 .head/pos LDZ #08 DIV ADD2 LDA
#01 SUB
DUP #ff NEQ ,&skip4 JCN
POP ,&end JMP
@ -225,14 +225,14 @@ RTN
@move-head ( -- )
( clear )
.trkframe/y1 PEK2 8- .Screen/y DEO2
.trkframe/x1 PEK2 #00 .head/pos PEK ADD2 .Screen/x DEO2
.trkframe/y1 LDZ2 8- .Screen/y DEO2
.trkframe/x1 LDZ2 #00 .head/pos LDZ ADD2 .Screen/x DEO2
;head_icn .Screen/addr DEO2
#20 .Screen/color DEO
( incr ) .head/pos PEK #01 ADD .head/pos POK
.trkframe/x1 PEK2 #00 .head/pos PEK ADD2 .Screen/x DEO2
( incr ) .head/pos LDZ #01 ADD .head/pos STZ
.trkframe/x1 LDZ2 #00 .head/pos LDZ ADD2 .Screen/x DEO2
;head_icn .Screen/addr DEO2
#21 ( if note ) TRACK #00 .head/pos PEK #08 DIV ADD2 LDA #00 NEQ ADD .Screen/color DEO
#21 ( if note ) TRACK #00 .head/pos LDZ #08 DIV ADD2 LDA #00 NEQ ADD .Screen/color DEO
RTN
@ -241,8 +241,8 @@ RTN
#00 #20
&loop
( load ) OVR #00 SWP TRACK ADD2 LDA
DUP STH #00 SWP #0e SWP SUB 8* .trkframe/y1 PEK2 ADD2 .Screen/y DEO2
OVR #00 SWP 8* .trkframe/x1 PEK2 ADD2 .Screen/x DEO2
DUP STH #00 SWP #0e SWP SUB 8* .trkframe/y1 LDZ2 ADD2 .Screen/y DEO2
OVR #00 SWP 8* .trkframe/x1 LDZ2 ADD2 .Screen/x DEO2
STHr #00 EQU ,&skip JCN
#20 .Screen/color DEO
&skip
@ -257,8 +257,8 @@ RTN
#00 #20
&notes-loop
( load ) OVR #00 SWP TRACK ADD2 LDA
DUP STH #00 SWP #0e SWP SUB 8* .trkframe/y1 PEK2 ADD2 .Screen/y DEO2
OVR #00 SWP 8* .trkframe/x1 PEK2 ADD2 .Screen/x DEO2
DUP STH #00 SWP #0e SWP SUB 8* .trkframe/y1 LDZ2 ADD2 .Screen/y DEO2
OVR #00 SWP 8* .trkframe/x1 LDZ2 ADD2 .Screen/x DEO2
;note_icn .Screen/addr DEO2
STHr #00 EQU ,&skip JCN
#25 .Screen/color DEO
@ -272,27 +272,27 @@ RTN
@draw-bars ( -- )
.trkframe/x1 PEK2 .trkframe/y1 PEK2 .trkframe/x2 PEK2 .trkframe/y2 PEK2 #01 ;line-rect JSR2
.trkframe/x1 LDZ2 .trkframe/y1 LDZ2 .trkframe/x2 LDZ2 .trkframe/y2 LDZ2 #01 ;line-rect JSR2
( grid )
.trkframe/y1 PEK2 #0010 SUB2 .Screen/y DEO2
.trkframe/y1 LDZ2 #0010 SUB2 .Screen/y DEO2
;font_hex .Screen/addr DEO2
#0000 #0100
&loop
OVR2 SWP POP #02 DIV #0f AND #00 NEQ ,&skip JCN
OVR2 .trkframe/x1 PEK2 ADD2 .Screen/x DEO2
.trkframe/y1 PEK2 #0010 SUB2 .Screen/y DEO2
OVR2 .trkframe/x1 LDZ2 ADD2 .Screen/x DEO2
.trkframe/y1 LDZ2 #0010 SUB2 .Screen/y DEO2
#22 .Screen/color DEO
.Screen/addr DEI2 8+ .Screen/addr DEO2
OVR2 .trkframe/x1 PEK2 ADD2 .trkframe/y1 PEK2 ++ .trkframe/y2 PEK2 #01 ;line-vertical-dotted JSR2
OVR2 .trkframe/x1 LDZ2 ADD2 .trkframe/y1 LDZ2 ++ .trkframe/y2 LDZ2 #01 ;line-vertical-dotted JSR2
&skip
OVR2 .trkframe/x1 PEK2 ADD2 .trkframe/y1 PEK2 .trkframe/y2 PEK2 #01 ;line-vertical-dotted JSR2
OVR2 .trkframe/x1 LDZ2 ADD2 .trkframe/y1 LDZ2 .trkframe/y2 LDZ2 #01 ;line-vertical-dotted JSR2
SWP2 8+ SWP2
OVR2 OVR2 LTH2 ,&loop JCN
POP2
POP2
.trkframe/x1 PEK2 .trkframe/x2 PEK2 .trkframe/y1 PEK2 8- #0040 ADD2 #01 ;line-horizontal-dotted JSR2
.trkframe/x1 LDZ2 .trkframe/x2 LDZ2 .trkframe/y1 LDZ2 8- #0040 ADD2 #01 ;line-horizontal-dotted JSR2
RTN
@ -319,20 +319,20 @@ RTN
@draw-octaves ( -- )
.trkframe/x1 PEK2 #0018 SUB2 DUP2 .trkframe/y1 PEK2 ;draw-octave JSR2
.trkframe/y1 PEK2 #0038 ADD2 ;draw-octave JSR2
.trkframe/x1 PEK2 #0028 SUB2 .Screen/x DEO2
.trkframe/y1 PEK2 #0030 ADD2 .Screen/y DEO2
.trkframe/x1 LDZ2 #0018 SUB2 DUP2 .trkframe/y1 LDZ2 ;draw-octave JSR2
.trkframe/y1 LDZ2 #0038 ADD2 ;draw-octave JSR2
.trkframe/x1 LDZ2 #0028 SUB2 .Screen/x DEO2
.trkframe/y1 LDZ2 #0030 ADD2 .Screen/y DEO2
;font_hex #0020 ADD2 .Screen/addr DEO2
#23 .Screen/color DEO
.trkframe/x1 PEK2 #0030 SUB2 .Screen/x DEO2
.trkframe/x1 LDZ2 #0030 SUB2 .Screen/x DEO2
;font_hex #0060 ADD2 .Screen/addr DEO2
#23 .Screen/color DEO
.trkframe/x1 PEK2 #0028 SUB2 .Screen/x DEO2
.trkframe/y1 PEK2 #0068 ADD2 .Screen/y DEO2
.trkframe/x1 LDZ2 #0028 SUB2 .Screen/x DEO2
.trkframe/y1 LDZ2 #0068 ADD2 .Screen/y DEO2
;font_hex #0018 ADD2 .Screen/addr DEO2
#23 .Screen/color DEO
.trkframe/x1 PEK2 #0030 SUB2 .Screen/x DEO2
.trkframe/x1 LDZ2 #0030 SUB2 .Screen/x DEO2
;font_hex #0060 ADD2 .Screen/addr DEO2
#23 .Screen/color DEO
@ -346,74 +346,74 @@ RTN
RTN
@draw-knob ( x* y* value -- )
.track/active PEK #03 EQU ;&blank JCN2
.track/active LDZ #03 EQU ;&blank JCN2
&force
( load ) .knob/value POK .knob/y POK2 .knob/x POK2
( load ) .knob/value STZ .knob/y STZ2 .knob/x STZ2
.knob/x PEK2 .Screen/x DEO2
.knob/y PEK2 .Screen/y DEO2 ;knob_icns .Screen/addr DEO2 #21 .Screen/color DEO
.knob/x PEK2 8+ .Screen/x DEO2 ;knob_icns 8+ .Screen/addr DEO2 #21 .Screen/color DEO
.knob/y PEK2 8+ .Screen/y DEO2 ;knob_icns #0018 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO
.knob/x PEK2 .Screen/x DEO2 ;knob_icns #0010 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO
.knob/x PEK2 #00 #00 .knob/value PEK ;knob_offsetx ADD2 LDA ADD2 .Screen/x DEO2
.knob/y PEK2 #00 #00 .knob/value PEK ;knob_offsety ADD2 LDA ADD2 .Screen/y DEO2
.knob/x LDZ2 .Screen/x DEO2
.knob/y LDZ2 .Screen/y DEO2 ;knob_icns .Screen/addr DEO2 #21 .Screen/color DEO
.knob/x LDZ2 8+ .Screen/x DEO2 ;knob_icns 8+ .Screen/addr DEO2 #21 .Screen/color DEO
.knob/y LDZ2 8+ .Screen/y DEO2 ;knob_icns #0018 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO
.knob/x LDZ2 .Screen/x DEO2 ;knob_icns #0010 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO
.knob/x LDZ2 #00 #00 .knob/value LDZ ;knob_offsetx ADD2 LDA ADD2 .Screen/x DEO2
.knob/y LDZ2 #00 #00 .knob/value LDZ ;knob_offsety ADD2 LDA ADD2 .Screen/y DEO2
;knob_icns #0020 ADD2 .Screen/addr DEO2
#25 .Screen/color DEO
.knob/x PEK2 #0004 ADD2 .Screen/x DEO2
.knob/y PEK2 #0010 ADD2 .Screen/y DEO2
;font_hex #00 .knob/value PEK #08 MUL ADD2 .Screen/addr DEO2
.knob/x LDZ2 #0004 ADD2 .Screen/x DEO2
.knob/y LDZ2 #0010 ADD2 .Screen/y DEO2
;font_hex #00 .knob/value LDZ #08 MUL ADD2 .Screen/addr DEO2
#21 .Screen/color DEO
RTN
&blank
( load ) .knob/value POK .knob/y POK2 .knob/x POK2
( load ) .knob/value STZ .knob/y STZ2 .knob/x STZ2
.knob/x PEK2 .Screen/x DEO2
.knob/y PEK2 .Screen/y DEO2 #20 .Screen/color DEO
.knob/x PEK2 8+ .Screen/x DEO2 #20 .Screen/color DEO
.knob/y PEK2 8+ .Screen/y DEO2 #20 .Screen/color DEO
.knob/x PEK2 .Screen/x DEO2 #20 .Screen/color DEO
.knob/x PEK2 #0004 ADD2 .Screen/x DEO2
.knob/y PEK2 #0010 ADD2 .Screen/y DEO2
.knob/x LDZ2 .Screen/x DEO2
.knob/y LDZ2 .Screen/y DEO2 #20 .Screen/color DEO
.knob/x LDZ2 8+ .Screen/x DEO2 #20 .Screen/color DEO
.knob/y LDZ2 8+ .Screen/y DEO2 #20 .Screen/color DEO
.knob/x LDZ2 .Screen/x DEO2 #20 .Screen/color DEO
.knob/x LDZ2 #0004 ADD2 .Screen/x DEO2
.knob/y LDZ2 #0010 ADD2 .Screen/y DEO2
#20 .Screen/color DEO
RTN
@draw-controls ( -- )
.ctlframe/x1 PEK2 .ctlframe/y1 PEK2 .ctlframe/x2 PEK2 .ctlframe/y2 PEK2 #01 ;line-rect JSR2
.ctlframe/x1 LDZ2 .ctlframe/y1 LDZ2 .ctlframe/x2 LDZ2 .ctlframe/y2 LDZ2 #01 ;line-rect JSR2
( env )
.ctlframe/x1 PEK2 8+ .ctlframe/y1 PEK2 8+ #22 ;env_txt ;draw-label JSR2
.ctlframe/x1 PEK2 8+ .ctlframe/y1 PEK2 #0010 ADD2
.Audio0/adsr .track/active PEK #10 MUL ADD DEI #04 SFT
.ctlframe/x1 LDZ2 8+ .ctlframe/y1 LDZ2 8+ #22 ;env_txt ;draw-label JSR2
.ctlframe/x1 LDZ2 8+ .ctlframe/y1 LDZ2 #0010 ADD2
.Audio0/adsr .track/active LDZ #10 MUL ADD DEI #04 SFT
;draw-knob JSR2
.ctlframe/x1 PEK2 #0018 ADD2 .ctlframe/y1 PEK2 #0010 ADD2
.Audio0/adsr .track/active PEK #10 MUL ADD DEI #0f AND
.ctlframe/x1 LDZ2 #0018 ADD2 .ctlframe/y1 LDZ2 #0010 ADD2
.Audio0/adsr .track/active LDZ #10 MUL ADD DEI #0f AND
;draw-knob JSR2
.ctlframe/x1 PEK2 #0028 ADD2 .ctlframe/y1 PEK2 #0010 ADD2
.Audio0/adsr .track/active PEK #10 MUL ADD #01 ADD DEI #04 SFT
.ctlframe/x1 LDZ2 #0028 ADD2 .ctlframe/y1 LDZ2 #0010 ADD2
.Audio0/adsr .track/active LDZ #10 MUL ADD #01 ADD DEI #04 SFT
;draw-knob JSR2
.ctlframe/x1 PEK2 #0038 ADD2 .ctlframe/y1 PEK2 #0010 ADD2
.Audio0/adsr .track/active PEK #10 MUL ADD #01 ADD DEI #0f AND
.ctlframe/x1 LDZ2 #0038 ADD2 .ctlframe/y1 LDZ2 #0010 ADD2
.Audio0/adsr .track/active LDZ #10 MUL ADD #01 ADD DEI #0f AND
;draw-knob JSR2
( vol )
.ctlframe/x1 PEK2 #0058 ADD2 .ctlframe/y1 PEK2 8+ #22 ;vol_txt ;draw-label JSR2
.ctlframe/x1 PEK2 #0058 ADD2 .ctlframe/y1 PEK2 #0010 ADD2
.Audio0/volume .track/active PEK #10 MUL ADD DEI #04 SFT
.ctlframe/x1 LDZ2 #0058 ADD2 .ctlframe/y1 LDZ2 8+ #22 ;vol_txt ;draw-label JSR2
.ctlframe/x1 LDZ2 #0058 ADD2 .ctlframe/y1 LDZ2 #0010 ADD2
.Audio0/volume .track/active LDZ #10 MUL ADD DEI #04 SFT
;draw-knob/force JSR2
.ctlframe/x1 PEK2 #0068 ADD2 .ctlframe/y1 PEK2 #0010 ADD2
.Audio0/volume .track/active PEK #10 MUL ADD DEI #0f AND
.ctlframe/x1 LDZ2 #0068 ADD2 .ctlframe/y1 LDZ2 #0010 ADD2
.Audio0/volume .track/active LDZ #10 MUL ADD DEI #0f AND
;draw-knob/force JSR2
RTN
@draw-vu ( -- )
.ctlframe/x1 PEK2 #0088 ADD2 .ctlframe/y1 PEK2 #0010 ADD2
.Audio0/output .track/active PEK #10 MUL ADD DEI DUP STH #04 SFT
.ctlframe/x1 LDZ2 #0088 ADD2 .ctlframe/y1 LDZ2 #0010 ADD2
.Audio0/output .track/active LDZ #10 MUL ADD DEI DUP STH #04 SFT
;draw-knob/force JSR2
.ctlframe/x1 PEK2 #0098 ADD2 .ctlframe/y1 PEK2 #0010 ADD2
.ctlframe/x1 LDZ2 #0098 ADD2 .ctlframe/y1 LDZ2 #0010 ADD2
STHr #0f AND
;draw-knob/force JSR2
@ -421,11 +421,11 @@ RTN
@draw-channels
.chnframe/x1 PEK2 .chnframe/y1 PEK2 .chnframe/x2 PEK2 .chnframe/y2 PEK2 #01 ;line-rect JSR2
.chnframe/x1 PEK2 8+ .chnframe/y1 PEK2 8+ #21 .track/active PEK #00 EQU #07 MUL ADD ;ch1_txt ;draw-label JSR2
.chnframe/x1 PEK2 8+ .chnframe/y1 PEK2 #0010 ADD2 #21 .track/active PEK #01 EQU #07 MUL ADD ;ch2_txt ;draw-label JSR2
.chnframe/x1 PEK2 8+ .chnframe/y1 PEK2 #0018 ADD2 #21 .track/active PEK #02 EQU #07 MUL ADD ;ch3_txt ;draw-label JSR2
.chnframe/x1 PEK2 8+ .chnframe/y1 PEK2 #0020 ADD2 #21 .track/active PEK #03 EQU #07 MUL ADD ;ch4_txt ;draw-label JSR2
.chnframe/x1 LDZ2 .chnframe/y1 LDZ2 .chnframe/x2 LDZ2 .chnframe/y2 LDZ2 #01 ;line-rect JSR2
.chnframe/x1 LDZ2 8+ .chnframe/y1 LDZ2 8+ #21 .track/active LDZ #00 EQU #07 MUL ADD ;ch1_txt ;draw-label JSR2
.chnframe/x1 LDZ2 8+ .chnframe/y1 LDZ2 #0010 ADD2 #21 .track/active LDZ #01 EQU #07 MUL ADD ;ch2_txt ;draw-label JSR2
.chnframe/x1 LDZ2 8+ .chnframe/y1 LDZ2 #0018 ADD2 #21 .track/active LDZ #02 EQU #07 MUL ADD ;ch3_txt ;draw-label JSR2
.chnframe/x1 LDZ2 8+ .chnframe/y1 LDZ2 #0020 ADD2 #21 .track/active LDZ #03 EQU #07 MUL ADD ;ch4_txt ;draw-label JSR2
RTN
@ -433,15 +433,15 @@ RTN
( clear last cursor )
;clear_icn .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
( record pointer positions )
.Mouse/x DEI2 .pointer/x POK2 .Mouse/y DEI2 .pointer/y POK2
.Mouse/x DEI2 .pointer/x STZ2 .Mouse/y DEI2 .pointer/y STZ2
( draw new cursor )
;cursor_icn .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#32 .Mouse/state DEI #00 NEQ ADD .Screen/color DEO
RTN
@ -450,10 +450,10 @@ RTN
@draw-label ( x y color addr -- )
( load ) .label/addr POK2 .label/color POK .Screen/y DEO2 .Screen/x DEO2
.label/addr PEK2
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2 .Screen/x DEO2
.label/addr LDZ2
&loop
( draw ) DUP2 LDA #00 SWP 8* ;font ADD2 .Screen/addr DEO2 .label/color PEK .Screen/color DEO
( draw ) DUP2 LDA #00 SWP 8* ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/color DEO
( incr ) ++
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
DUP2 LDA #00 NEQ ,&loop JCN
@ -463,9 +463,9 @@ RTN
@line-vertical-dotted ( x y0 y1 color -- )
.color POK STH2 SWP2 .Screen/x DEO2 STH2r OVR2 .Screen/y DEO2
.color STZ STH2 SWP2 .Screen/x DEO2 STH2r OVR2 .Screen/y DEO2
&draw-ver
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 #0002 ADD2 DUP2 .Screen/y DEO2 SWP2
OVR2 OVR2 LTH2 ,&draw-ver JCN
POP2 POP2
@ -474,9 +474,9 @@ RTN
@line-horizontal-dotted ( x0 x1 y color -- )
.color POK .Screen/y DEO2 OVR2 .Screen/x DEO2
.color STZ .Screen/y DEO2 OVR2 .Screen/x DEO2
&draw-hor
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 #0002 ADD2 DUP2 .Screen/x DEO2 SWP2
OVR2 OVR2 LTH2 ,&draw-hor JCN
POP2 POP2
@ -485,18 +485,18 @@ RTN
@line-rect ( x1 y1 x2 y2 color )
( load ) .color POK .rect/y2 POK2 .rect/x2 POK2 DUP2 .Screen/y DEO2 .rect/y1 POK2 DUP2 .Screen/x DEO2 .rect/x1 POK2
( load ) .color STZ .rect/y2 STZ2 .rect/x2 STZ2 DUP2 .Screen/y DEO2 .rect/y1 STZ2 DUP2 .Screen/x DEO2 .rect/x1 STZ2
&hor
( incr ) .Screen/x DEI2 ++ .Screen/x DEO2
( draw ) .rect/y1 PEK2 .Screen/y DEO2 .color PEK .Screen/color DEO
( draw ) .rect/y2 PEK2 .Screen/y DEO2 .color PEK .Screen/color DEO
.Screen/x DEI2 .rect/x2 PEK2 LTH2 ,&hor JCN
.rect/y1 PEK2 .Screen/y DEO2
( draw ) .rect/y1 LDZ2 .Screen/y DEO2 .color LDZ .Screen/color DEO
( draw ) .rect/y2 LDZ2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.Screen/x DEI2 .rect/x2 LDZ2 LTH2 ,&hor JCN
.rect/y1 LDZ2 .Screen/y DEO2
&ver
( draw ) .rect/x1 PEK2 .Screen/x DEO2 .color PEK .Screen/color DEO
( draw ) .rect/x2 PEK2 .Screen/x DEO2 .color PEK .Screen/color DEO
( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ .Screen/color DEO
( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .color LDZ .Screen/color DEO
( incr ) .Screen/y DEI2 ++ .Screen/y DEO2
.Screen/y DEI2 .rect/y2 PEK2 ++ LTH2 ,&ver JCN
.Screen/y DEI2 .rect/y2 LDZ2 ++ LTH2 ,&ver JCN
RTN

View file

@ -61,29 +61,29 @@
;saw-path .File/name DEO2 #0100 .File/length DEO2 WAVEFORM #0500 ++ .File/load DEO2
( find center )
.Screen/width DEI2 #0002 // .center/x POK2
.Screen/height DEI2 #0002 // .center/y POK2
.Screen/width DEI2 #0002 // .center/x STZ2
.Screen/height DEI2 #0002 // .center/y STZ2
( place octave )
.center/x PEK2 #0080 -- .octave-view/x1 POK2
.center/y PEK2 #0008 ++ .octave-view/y1 POK2
.octave-view/x1 PEK2 #0050 ++ .octave-view/x2 POK2
.octave-view/y1 PEK2 #0018 ++ .octave-view/y2 POK2
.center/x LDZ2 #0080 -- .octave-view/x1 STZ2
.center/y LDZ2 #0008 ++ .octave-view/y1 STZ2
.octave-view/x1 LDZ2 #0050 ++ .octave-view/x2 STZ2
.octave-view/y1 LDZ2 #0018 ++ .octave-view/y2 STZ2
( place adsr )
.center/x PEK2 #0020 -- .adsr-view/x1 POK2
.center/y PEK2 #0008 ++ .adsr-view/y1 POK2
.adsr-view/x1 PEK2 #00a0 ++ .adsr-view/x2 POK2
.adsr-view/y1 PEK2 #0018 ++ .adsr-view/y2 POK2
.center/x LDZ2 #0020 -- .adsr-view/x1 STZ2
.center/y LDZ2 #0008 ++ .adsr-view/y1 STZ2
.adsr-view/x1 LDZ2 #00a0 ++ .adsr-view/x2 STZ2
.adsr-view/y1 LDZ2 #0018 ++ .adsr-view/y2 STZ2
( place waveform )
.center/x PEK2 #0080 -- .wave-view/x1 POK2
.center/y PEK2 #0020 -- .wave-view/y1 POK2
.wave-view/x1 PEK2 #0100 ++ .wave-view/x2 POK2
.wave-view/y1 PEK2 #0020 ++ .wave-view/y2 POK2
.center/x LDZ2 #0080 -- .wave-view/x1 STZ2
.center/y LDZ2 #0020 -- .wave-view/y1 STZ2
.wave-view/x1 LDZ2 #0100 ++ .wave-view/x2 STZ2
.wave-view/y1 LDZ2 #0020 ++ .wave-view/y2 STZ2
( default settings )
#ff .last-note POK
#ff .last-note STZ
#041c .Audio0/adsr DEO2
#88 .Audio0/volume DEO
WAVEFORM .Audio0/addr DEO2
@ -98,13 +98,13 @@ BRK
@on-frame ( -> )
.adsr-view/y2 PEK2 #0020 -- .Screen/y DEO2
.adsr-view/y2 LDZ2 #0020 -- .Screen/y DEO2
#00 #10
&loop
.adsr-view/x2 PEK2 #003a -- .Screen/x DEO2
.adsr-view/x2 LDZ2 #003a -- .Screen/x DEO2
OVR #10 SWP - .Audio0/output DEI #0f AND < .Screen/color DEO
.adsr-view/x2 PEK2 #003a -- #0002 ++ .Screen/x DEO2
.adsr-view/x2 LDZ2 #003a -- #0002 ++ .Screen/x DEO2
OVR #10 SWP - .Audio0/output DEI #04 SFT < .Screen/color DEO
.Screen/y DEI2 #0002 ++ .Screen/y DEO2
( incr ) SWP #01 + SWP
@ -125,23 +125,23 @@ BRK
;draw-cursor JSR2
.Mouse/state DEI #00 ! #01 JCN [ BRK ]
( wave-view )
.Mouse/x DEI2 DUP2 .wave-view/x1 PEK2 >> ROT ROT .wave-view/x2 PEK2 #0001 ++ << #0101 ==
.Mouse/y DEI2 DUP2 .wave-view/y1 PEK2 >> ROT ROT .wave-view/y2 PEK2 << #0101 ==
.Mouse/x DEI2 DUP2 .wave-view/x1 LDZ2 >> ROT ROT .wave-view/x2 LDZ2 #0001 ++ << #0101 ==
.Mouse/y DEI2 DUP2 .wave-view/y1 LDZ2 >> ROT ROT .wave-view/y2 LDZ2 << #0101 ==
#0101 == ;on-touch-wave-view JCN2
( adsr-view )
.Mouse/x DEI2 DUP2 .adsr-view/x1 PEK2 >> ROT ROT .adsr-view/x2 PEK2 << #0101 ==
.Mouse/y DEI2 DUP2 .adsr-view/y1 PEK2 >> ROT ROT .adsr-view/y2 PEK2 << #0101 ==
.Mouse/x DEI2 DUP2 .adsr-view/x1 LDZ2 >> ROT ROT .adsr-view/x2 LDZ2 << #0101 ==
.Mouse/y DEI2 DUP2 .adsr-view/y1 LDZ2 >> ROT ROT .adsr-view/y2 LDZ2 << #0101 ==
#0101 == ;on-touch-adsr-view JCN2
( octave-view )
.Mouse/x DEI2 DUP2 .octave-view/x1 PEK2 >> ROT ROT .octave-view/x2 PEK2 << #0101 ==
.Mouse/y DEI2 DUP2 .octave-view/y1 PEK2 >> ROT ROT .octave-view/y2 PEK2 << #0101 ==
.Mouse/x DEI2 DUP2 .octave-view/x1 LDZ2 >> ROT ROT .octave-view/x2 LDZ2 << #0101 ==
.Mouse/y DEI2 DUP2 .octave-view/y1 LDZ2 >> ROT ROT .octave-view/y2 LDZ2 << #0101 ==
#0101 == ;on-touch-octave-view JCN2
BRK
@on-touch-wave-view ( -> )
.Mouse/x DEI2 .wave-view/x1 PEK2 -- .Audio0/length DEO2
.Mouse/x DEI2 .wave-view/x1 LDZ2 -- .Audio0/length DEO2
;draw-wave JSR2
;draw-cursor JSR2
@ -149,20 +149,20 @@ BRK
@on-touch-octave-view ( -> )
.Mouse/x DEI2 .octave-view/x1 PEK2 -- #0008 // SWP POP #09 ! ,&no-mod JCN
.Mouse/y DEI2 .octave-view/y1 PEK2 -- #0008 // SWP POP
.Mouse/x DEI2 .octave-view/x1 LDZ2 -- #0008 // SWP POP #09 ! ,&no-mod JCN
.Mouse/y DEI2 .octave-view/y1 LDZ2 -- #0008 // SWP POP
DUP #00 ! ,&no-incr JCN
.octave PEK #01 + .octave POK &no-incr
.octave LDZ #01 + .octave STZ &no-incr
DUP #02 ! ,&no-decr JCN
.octave PEK #01 - .octave POK &no-decr
.octave LDZ #01 - .octave STZ &no-decr
POP
( release ) #00 .Mouse/state DEO
;draw-octave JSR2
BRK
&no-mod
.Mouse/x DEI2 .octave-view/x1 PEK2 -- #0008 // SWP POP #06 > ,&no-key JCN
.Mouse/x DEI2 .octave-view/x1 PEK2 -- #0008 // DUP2 SWP POP .last-note POK ;notes ++ LDA ;play JSR2
.Mouse/x DEI2 .octave-view/x1 LDZ2 -- #0008 // SWP POP #06 > ,&no-key JCN
.Mouse/x DEI2 .octave-view/x1 LDZ2 -- #0008 // DUP2 SWP POP .last-note STZ ;notes ++ LDA ;play JSR2
( release ) #00 .Mouse/state DEO
;draw-octave JSR2
&no-key
@ -171,7 +171,7 @@ BRK
@on-touch-adsr-view ( -> )
.Mouse/x DEI2 .adsr-view/x1 PEK2 -- #0008 // SWP POP #03 /
.Mouse/x DEI2 .adsr-view/x1 LDZ2 -- #0008 // SWP POP #03 /
DUP #00 ! ,&no-a JCN
.Audio0/adsr DEI
#10 .Mouse/state DEI #10 = #e0 * + +
@ -208,27 +208,27 @@ BRK
( clear last cursor )
#fff8 .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
.Controller/key DEI
DUP #61 ! ,&no-c JCN
#00 .last-note POK ;notes LDA ;play JSR2 &no-c
#00 .last-note STZ ;notes LDA ;play JSR2 &no-c
DUP #73 ! ,&no-d JCN
#01 .last-note POK ;notes #0001 ++ LDA ;play JSR2 &no-d
#01 .last-note STZ ;notes #0001 ++ LDA ;play JSR2 &no-d
DUP #64 ! ,&no-e JCN
#02 .last-note POK ;notes #0002 ++ LDA ;play JSR2 &no-e
#02 .last-note STZ ;notes #0002 ++ LDA ;play JSR2 &no-e
DUP #66 ! ,&no-f JCN
#03 .last-note POK ;notes #0003 ++ LDA ;play JSR2 &no-f
#03 .last-note STZ ;notes #0003 ++ LDA ;play JSR2 &no-f
DUP #67 ! ,&no-g JCN
#04 .last-note POK ;notes #0004 ++ LDA ;play JSR2 &no-g
#04 .last-note STZ ;notes #0004 ++ LDA ;play JSR2 &no-g
DUP #68 ! ,&no-a JCN
#05 .last-note POK ;notes #0005 ++ LDA ;play JSR2 &no-a
#05 .last-note STZ ;notes #0005 ++ LDA ;play JSR2 &no-a
DUP #6a ! ,&no-b JCN
#06 .last-note POK ;notes #0006 ++ LDA ;play JSR2 &no-b
#06 .last-note STZ ;notes #0006 ++ LDA ;play JSR2 &no-b
DUP #6b ! ,&no-c2 JCN
#07 .last-note POK ;notes #0007 ++ LDA ;play JSR2 &no-c2
#07 .last-note STZ ;notes #0007 ++ LDA ;play JSR2 &no-c2
POP
.Controller/button DEI #f0 AND
@ -249,7 +249,7 @@ BRK
@play ( pitch -- )
DUP .octave PEK #0c * + .Audio0/pitch DEO
DUP .octave LDZ #0c * + .Audio0/pitch DEO
RTN
@ -257,15 +257,15 @@ RTN
( clear last cursor )
;cursor .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
( record pointer positions )
.Mouse/x DEI2 .pointer/x POK2
.Mouse/y DEI2 .pointer/y POK2
.Mouse/x DEI2 .pointer/x STZ2
.Mouse/y DEI2 .pointer/y STZ2
( draw new cursor )
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
( colorize on state )
#31 [ .Mouse/state DEI #00 ! ] + .Screen/color DEO
@ -273,28 +273,28 @@ RTN
@draw-octave ( -- )
.octave-view/x1 PEK2 .octave-view/y1 PEK2
.octave-view/x1 LDZ2 .octave-view/y1 LDZ2
OVR2 OVR2 ;keys-left-icns #21 .last-note PEK #00 = + ;draw-key JSR2
OVR2 #0008 ++ OVR2 ;keys-middle-icns #21 .last-note PEK #01 = + ;draw-key JSR2
OVR2 #0010 ++ OVR2 ;keys-right-icns #21 .last-note PEK #02 = + ;draw-key JSR2
OVR2 #0018 ++ OVR2 ;keys-left-icns #21 .last-note PEK #03 = + ;draw-key JSR2
OVR2 #0020 ++ OVR2 ;keys-middle-icns #21 .last-note PEK #04 = + ;draw-key JSR2
OVR2 #0028 ++ OVR2 ;keys-middle-icns #21 .last-note PEK #05 = + ;draw-key JSR2
SWP2 #0030 ++ SWP2 ;keys-right-icns #21 .last-note PEK #06 = + ;draw-key JSR2
OVR2 OVR2 ;keys-left-icns #21 .last-note LDZ #00 = + ;draw-key JSR2
OVR2 #0008 ++ OVR2 ;keys-middle-icns #21 .last-note LDZ #01 = + ;draw-key JSR2
OVR2 #0010 ++ OVR2 ;keys-right-icns #21 .last-note LDZ #02 = + ;draw-key JSR2
OVR2 #0018 ++ OVR2 ;keys-left-icns #21 .last-note LDZ #03 = + ;draw-key JSR2
OVR2 #0020 ++ OVR2 ;keys-middle-icns #21 .last-note LDZ #04 = + ;draw-key JSR2
OVR2 #0028 ++ OVR2 ;keys-middle-icns #21 .last-note LDZ #05 = + ;draw-key JSR2
SWP2 #0030 ++ SWP2 ;keys-right-icns #21 .last-note LDZ #06 = + ;draw-key JSR2
.octave-view/x1 PEK2 #0048 ++ .Screen/x DEO2
.octave-view/x1 LDZ2 #0048 ++ .Screen/x DEO2
;arrow-icns .Screen/addr DEO2
.octave-view/y1 PEK2 .Screen/y DEO2
.octave-view/y1 LDZ2 .Screen/y DEO2
#21 .Screen/color DEO
;arrow-icns #0008 ++ .Screen/addr DEO2
.octave-view/y1 PEK2 #0010 ++ .Screen/y DEO2
.octave-view/y1 LDZ2 #0010 ++ .Screen/y DEO2
#21 .Screen/color DEO
;font-hex .octave PEK #03 + #00 SWP #0008 ** ++ .Screen/addr DEO2
.octave-view/y1 PEK2 #0008 ++ .Screen/y DEO2
;font-hex .octave LDZ #03 + #00 SWP #0008 ** ++ .Screen/addr DEO2
.octave-view/y1 LDZ2 #0008 ++ .Screen/y DEO2
#23 .Screen/color DEO
RTN
@ -319,23 +319,23 @@ RTN
@draw-adsr ( -- )
( adsr )
.adsr-view/x1 PEK2 .adsr-view/y1 PEK2
.adsr-view/x1 LDZ2 .adsr-view/y1 LDZ2
.Audio0/adsr DEI #04 SFT
;draw-knob JSR2
.adsr-view/x1 PEK2 #0018 ++ .adsr-view/y1 PEK2
.adsr-view/x1 LDZ2 #0018 ++ .adsr-view/y1 LDZ2
.Audio0/adsr DEI #0f AND
;draw-knob JSR2
.adsr-view/x1 PEK2 #0030 ++ .adsr-view/y1 PEK2
.adsr-view/x1 LDZ2 #0030 ++ .adsr-view/y1 LDZ2
.Audio0/adsr #01 + DEI #04 SFT
;draw-knob JSR2
.adsr-view/x1 PEK2 #0048 ++ .adsr-view/y1 PEK2
.adsr-view/x1 LDZ2 #0048 ++ .adsr-view/y1 LDZ2
.Audio0/adsr #01 + DEI #0f AND
;draw-knob JSR2
( volume )
.adsr-view/x2 PEK2 #0028 -- .adsr-view/y1 PEK2
.adsr-view/x2 LDZ2 #0028 -- .adsr-view/y1 LDZ2
.Audio0/volume DEI #04 SFT
;draw-knob JSR2
.adsr-view/x2 PEK2 #0010 -- .adsr-view/y1 PEK2
.adsr-view/x2 LDZ2 #0010 -- .adsr-view/y1 LDZ2
.Audio0/volume DEI #0f AND
;draw-knob JSR2
@ -344,27 +344,27 @@ RTN
@draw-wave ( -- )
( clear )
.wave-view/x1 PEK2
.wave-view/y1 PEK2
.wave-view/x2 PEK2 #0001 ++
.wave-view/y2 PEK2
.wave-view/x1 LDZ2
.wave-view/y1 LDZ2
.wave-view/x2 LDZ2 #0001 ++
.wave-view/y2 LDZ2
#00 ;fill-rect JSR2
#01 ;draw-wave-length JSR2
.wave-view/x1 PEK2 .Screen/x DEO2
.wave-view/x1 LDZ2 .Screen/x DEO2
( waveform )
#00 #ff
&loop
( dotted line )
OVR #01 AND ,&no-dot JCN
.wave-view/y1 PEK2 #0010 ++ .Screen/y DEO2
.wave-view/y1 LDZ2 #0010 ++ .Screen/y DEO2
#03 .Screen/color DEO
&no-dot
OVR TOS .Audio0/addr DEI2 ++ LDA
#02 /
TOS #0004 // .wave-view/y1 PEK2 ++ .Screen/y DEO2
TOS #0004 // .wave-view/y1 LDZ2 ++ .Screen/y DEO2
.Screen/x DEI2 #0001 ++ .Screen/x DEO2
( draw ) OVR .Audio0/length DEI2 SWP POP > #02 * #01 + .Screen/color DEO
( incr ) SWP #01 + SWP
@ -372,10 +372,10 @@ RTN
POP2
( range )
.wave-view/x1 PEK2 .Screen/x DEO2
.wave-view/y1 PEK2 #0010 -- .Screen/y DEO2
.wave-view/x1 LDZ2 .Screen/x DEO2
.wave-view/y1 LDZ2 #0010 -- .Screen/y DEO2
.Audio0/addr DEI2 #22 ;draw-short JSR2
.wave-view/x2 PEK2 #0020 -- .Screen/x DEO2
.wave-view/x2 LDZ2 #0020 -- .Screen/x DEO2
.Audio0/length DEI2 #22 ;draw-short JSR2
RTN
@ -383,8 +383,8 @@ RTN
@draw-wave-length ( color -- )
STH
.wave-view/x1 PEK2 .Audio0/length DEI2 ++ .Screen/x DEO2
.wave-view/y1 PEK2 DUP2 #0020 ++
.wave-view/x1 LDZ2 .Audio0/length DEI2 ++ .Screen/x DEO2
.wave-view/y1 LDZ2 DUP2 #0020 ++
&loop
OVR2 .Screen/y DEO2
( draw ) DUPr STHr .Screen/color DEO
@ -439,14 +439,14 @@ RTN
@fill-rect ( x1* y1* x2* y2* color -- )
.color POK
.color STZ
( x1 x2 y1 y2 ) ROT2 SWP2
&ver
( save ) OVR2 .Screen/y DEO2
STH2 STH2 OVR2 OVR2
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 #0001 ++ SWP2
OVR2 OVR2 LTS2 ,&hor JCN
POP2 POP2 STH2r STH2r

View file

@ -28,8 +28,8 @@
#0caf .System/b DEO2
( find center )
.Screen/width DEI2 #0002 / #0008 - .cat/x POK2
.Screen/height DEI2 #0004 / #0003 * #0018 - .cat/y POK2
.Screen/width DEI2 #0002 / #0008 - .cat/x STZ2
.Screen/height DEI2 #0004 / #0003 * #0018 - .cat/y STZ2
( vectors )
;on-mouse .Mouse/vector DEO2
@ -44,15 +44,15 @@ BRK
;draw-cursor JSR2
.Mouse/x DEI2 .cat/x PEK2 > #20 MUL
.Mouse/y DEI2 .cat/y PEK2 > #40 MUL
.Mouse/x DEI2 .cat/x LDZ2 > #20 MUL
.Mouse/y DEI2 .cat/y LDZ2 > #40 MUL
ADD #00 SWP ;draw-eye JSR2
BRK
@on-frame ( -> )
.cat/timer PEK #01 ADD [ DUP ] .cat/timer POK
.cat/timer LDZ #01 ADD [ DUP ] .cat/timer STZ
DUP #00 NEQ ,&skip0 JCN #0000 ;draw-tail JSR2 &skip0
DUP #10 NEQ ,&skip1 JCN #0001 ;draw-tail JSR2 &skip1
DUP #20 NEQ ,&skip2 JCN #0002 ;draw-tail JSR2 &skip2
@ -66,8 +66,8 @@ BRK
@draw-polycat ( -- )
( ears )
.cat/y PEK2 .Screen/y DEO2
.cat/x PEK2 DUP2 STH2 #0008 - .Screen/x DEO2
.cat/y LDZ2 .Screen/y DEO2
.cat/x LDZ2 DUP2 STH2 #0008 - .Screen/x DEO2
;ears .Screen/addr DEO2
#41 .Screen/color DEO
STH2r .Screen/x DEO2
@ -81,8 +81,8 @@ RTN
@draw-eye ( quad* -- )
.cat/y PEK2 #0008 + .Screen/y DEO2
.cat/x PEK2 DUP2 STH2 #0008 - .Screen/x DEO2
.cat/y LDZ2 #0008 + .Screen/y DEO2
.cat/x LDZ2 DUP2 STH2 #0008 - .Screen/x DEO2
DUP2 ;eye + .Screen/addr DEO2
( draw ) #41 .Screen/color DEO
STH2r .Screen/x DEO2
@ -93,8 +93,8 @@ RTN
@draw-tail ( frame* -- )
.cat/y PEK2 #0010 + .Screen/y DEO2
.cat/x PEK2 DUP2 STH2 #0008 - .Screen/x DEO2
.cat/y LDZ2 #0010 + .Screen/y DEO2
.cat/x LDZ2 DUP2 STH2 #0008 - .Screen/x DEO2
;body .Screen/addr DEO2
( draw ) #41 .Screen/color DEO
STH2r .Screen/x DEO2
@ -107,17 +107,17 @@ RTN
( clear last cursor )
;cursor .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
( record pointer positions )
.Mouse/x DEI2 .pointer/x POK2
.Mouse/y DEI2 .pointer/y POK2
.Mouse/x DEI2 .pointer/x STZ2
.Mouse/y DEI2 .pointer/y STZ2
( draw new cursor )
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
( colorize on state )
#31 [ .Mouse/state DEI #00 NEQ ] ADD .Screen/color DEO
@ -126,8 +126,8 @@ RTN
@draw-ground ( -- )
.cat/y PEK2 #0018 + .Screen/y DEO2
.cat/x PEK2 #0010 - .Screen/x DEO2
.cat/y LDZ2 #0018 + .Screen/y DEO2
.cat/x LDZ2 #0010 - .Screen/x DEO2
;ground .Screen/addr DEO2
#00 #10

View file

@ -44,21 +44,21 @@
;on-mouse .Mouse/vector DEO2
( size window )
#00b0 .window/w POK2
#0050 .window/h POK2
#00b0 .window/w STZ2
#0050 .window/h STZ2
( center window )
.Screen/width DEI2 2/ .window/w PEK2 2/ SUB2 .window/x1 POK2
.Screen/height DEI2 2/ .window/h PEK2 2/ SUB2 .window/y1 POK2
.Screen/width DEI2 2/ .window/w LDZ2 2/ SUB2 .window/x1 STZ2
.Screen/height DEI2 2/ .window/h LDZ2 2/ SUB2 .window/y1 STZ2
#01 .theme/r1 POK #02 .theme/g1 POK #03 .theme/b1 POK
#04 .theme/r2 POK #06 .theme/g2 POK #07 .theme/b2 POK
#0a .theme/r3 POK #09 .theme/g3 POK #08 .theme/b3 POK
#0c .theme/r4 POK #0b .theme/g4 POK #0d .theme/b4 POK
#01 .theme/r1 STZ #02 .theme/g1 STZ #03 .theme/b1 STZ
#04 .theme/r2 STZ #06 .theme/g2 STZ #07 .theme/b2 STZ
#0a .theme/r3 STZ #09 .theme/g3 STZ #08 .theme/b3 STZ
#0c .theme/r4 STZ #0b .theme/g4 STZ #0d .theme/b4 STZ
( find screen center )
.Screen/width DEI2 2/ .center/x POK2
.Screen/height DEI2 2/ .center/y POK2
.Screen/width DEI2 2/ .center/x STZ2
.Screen/height DEI2 2/ .center/y STZ2
;update-theme JSR2
;draw-background JSR2
@ -72,26 +72,26 @@ BRK
.Mouse/state DEI #00 NEQ #01 JCN [ BRK ]
.Mouse/y DEI2 .window/y1 PEK2 SUB2 STEP8
.Mouse/y DEI2 .window/y1 LDZ2 SUB2 STEP8
DUP2 #0010 NEQ2 ,&no-touch-red JCN
.Mouse/x DEI2 .window/x1 PEK2 #0060 ADD2 LTH2 ,&no-touch-red JCN
.Mouse/x DEI2 .window/x1 PEK2 #009c ADD2 GTH2 ,&no-touch-red JCN
( get new value ) .Mouse/x DEI2 .window/x1 PEK2 SUB2 #0060 SUB2 #0004 DIV2 SWP POP ;theme/r1 #00 .selection PEK ADD2 STA
.Mouse/x DEI2 .window/x1 LDZ2 #0060 ADD2 LTH2 ,&no-touch-red JCN
.Mouse/x DEI2 .window/x1 LDZ2 #009c ADD2 GTH2 ,&no-touch-red JCN
( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 #0004 DIV2 SWP POP ;theme/r1 #00 .selection LDZ ADD2 STA
&no-touch-red
DUP2 #0020 NEQ2 ,&no-touch-green JCN
.Mouse/x DEI2 .window/x1 PEK2 #0060 ADD2 LTH2 ,&no-touch-green JCN
.Mouse/x DEI2 .window/x1 PEK2 #009c ADD2 GTH2 ,&no-touch-green JCN
( get new value ) .Mouse/x DEI2 .window/x1 PEK2 SUB2 #0060 SUB2 #0004 DIV2 SWP POP ;theme/g1 #00 .selection PEK ADD2 STA
.Mouse/x DEI2 .window/x1 LDZ2 #0060 ADD2 LTH2 ,&no-touch-green JCN
.Mouse/x DEI2 .window/x1 LDZ2 #009c ADD2 GTH2 ,&no-touch-green JCN
( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 #0004 DIV2 SWP POP ;theme/g1 #00 .selection LDZ ADD2 STA
&no-touch-green
DUP2 #0030 NEQ2 ,&no-touch-blue JCN
.Mouse/x DEI2 .window/x1 PEK2 #0060 ADD2 LTH2 ,&no-touch-blue JCN
.Mouse/x DEI2 .window/x1 PEK2 #009c ADD2 GTH2 ,&no-touch-blue JCN
( get new value ) .Mouse/x DEI2 .window/x1 PEK2 SUB2 #0060 SUB2 #0004 DIV2 SWP POP ;theme/b1 #00 .selection PEK ADD2 STA
.Mouse/x DEI2 .window/x1 LDZ2 #0060 ADD2 LTH2 ,&no-touch-blue JCN
.Mouse/x DEI2 .window/x1 LDZ2 #009c ADD2 GTH2 ,&no-touch-blue JCN
( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 #0004 DIV2 SWP POP ;theme/b1 #00 .selection LDZ ADD2 STA
&no-touch-blue
DUP2 #0040 NEQ2 ,&no-touch-radio JCN
.Mouse/x DEI2 .window/x1 PEK2 #0050 ADD2 LTH2 ,&no-touch-radio JCN
.Mouse/x DEI2 .window/x1 PEK2 #008c ADD2 GTH2 ,&no-touch-radio JCN
.Mouse/x DEI2 .window/x1 PEK2 SUB2 #0050 SUB2 STEP8 2/ #0008 DIV2 SWP POP .selection POK
.Mouse/x DEI2 .window/x1 LDZ2 #0050 ADD2 LTH2 ,&no-touch-radio JCN
.Mouse/x DEI2 .window/x1 LDZ2 #008c ADD2 GTH2 ,&no-touch-radio JCN
.Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0050 SUB2 STEP8 2/ #0008 DIV2 SWP POP .selection STZ
&no-touch-radio
POP2
@ -102,25 +102,25 @@ BRK
@update-theme ( -- )
#08 DEI #0f AND .theme/r1 PEK #40 SFT ADD #08 DEO
#0a DEI #0f AND .theme/g1 PEK #40 SFT ADD #0a DEO
#0c DEI #0f AND .theme/b1 PEK #40 SFT ADD #0c DEO
#08 DEI #f0 AND .theme/r2 PEK ADD #08 DEO
#0a DEI #f0 AND .theme/g2 PEK ADD #0a DEO
#0c DEI #f0 AND .theme/b2 PEK ADD #0c DEO
#09 DEI #0f AND .theme/r3 PEK #40 SFT ADD #09 DEO
#0b DEI #0f AND .theme/g3 PEK #40 SFT ADD #0b DEO
#0d DEI #0f AND .theme/b3 PEK #40 SFT ADD #0d DEO
#09 DEI #f0 AND .theme/r4 PEK ADD #09 DEO
#0b DEI #f0 AND .theme/g4 PEK ADD #0b DEO
#0d DEI #f0 AND .theme/b4 PEK ADD #0d DEO
#08 DEI #0f AND .theme/r1 LDZ #40 SFT ADD #08 DEO
#0a DEI #0f AND .theme/g1 LDZ #40 SFT ADD #0a DEO
#0c DEI #0f AND .theme/b1 LDZ #40 SFT ADD #0c DEO
#08 DEI #f0 AND .theme/r2 LDZ ADD #08 DEO
#0a DEI #f0 AND .theme/g2 LDZ ADD #0a DEO
#0c DEI #f0 AND .theme/b2 LDZ ADD #0c DEO
#09 DEI #0f AND .theme/r3 LDZ #40 SFT ADD #09 DEO
#0b DEI #0f AND .theme/g3 LDZ #40 SFT ADD #0b DEO
#0d DEI #0f AND .theme/b3 LDZ #40 SFT ADD #0d DEO
#09 DEI #f0 AND .theme/r4 LDZ ADD #09 DEO
#0b DEI #f0 AND .theme/g4 LDZ ADD #0b DEO
#0d DEI #f0 AND .theme/b4 LDZ ADD #0d DEO
RTN
@draw-background ( -- )
( draw hor line )
#0000 .Screen/x DEO2 .center/y PEK2 .Screen/y DEO2
#0000 .Screen/x DEO2 .center/y LDZ2 .Screen/y DEO2
#0000 .Screen/width DEI2 ( from/to )
&draw-hor
( draw ) #01 .Screen/color DEO
@ -129,7 +129,7 @@ RTN
POP2 POP2
( draw ver line )
.center/x PEK2 .Screen/x DEO2 #0000 .Screen/y DEO2
.center/x LDZ2 .Screen/x DEO2 #0000 .Screen/y DEO2
#0000 .Screen/height DEI2 ( from/to )
&draw-ver
( draw ) #02 .Screen/color DEO
@ -192,46 +192,46 @@ RTN
@draw-window ( -- )
.window/x1 PEK2 .window/w PEK2 ADD2 .window/x2 POK2
.window/y1 PEK2 .window/h PEK2 ADD2 .window/y2 POK2
.window/x1 PEK2 .window/y1 PEK2 .window/x2 PEK2 .window/y2 PEK2 #02 ;fill-rect JSR2
.window/x1 PEK2 .window/y1 PEK2 .window/x2 PEK2 .window/y2 PEK2 #01 ;line-rect JSR2
.window/x1 PEK2 #0002 SUB2 .window/y1 PEK2 #0002 SUB2 .window/x2 PEK2 #0002 ADD2 .window/y2 PEK2 #0002 ADD2 #01 ;line-rect JSR2
.window/x1 LDZ2 .window/w LDZ2 ADD2 .window/x2 STZ2
.window/y1 LDZ2 .window/h LDZ2 ADD2 .window/y2 STZ2
.window/x1 LDZ2 .window/y1 LDZ2 .window/x2 LDZ2 .window/y2 LDZ2 #02 ;fill-rect JSR2
.window/x1 LDZ2 .window/y1 LDZ2 .window/x2 LDZ2 .window/y2 LDZ2 #01 ;line-rect JSR2
.window/x1 LDZ2 #0002 SUB2 .window/y1 LDZ2 #0002 SUB2 .window/x2 LDZ2 #0002 ADD2 .window/y2 LDZ2 #0002 ADD2 #01 ;line-rect JSR2
.window/x1 PEK2 #0008 ADD2 .window/y1 PEK2 #0010 ADD2 ;red_txt #25 ;draw-label JSR2
.window/x1 PEK2 #0038 ADD2 .Screen/x DEO2
.window/x1 LDZ2 #0008 ADD2 .window/y1 LDZ2 #0010 ADD2 ;red_txt #25 ;draw-label JSR2
.window/x1 LDZ2 #0038 ADD2 .Screen/x DEO2
.System/r DEI2 #28 ;draw-short JSR2
.window/x1 PEK2 #0008 ADD2 .window/y1 PEK2 #0020 ADD2 ;green_txt #25 ;draw-label JSR2
.window/x1 PEK2 #0038 ADD2 .Screen/x DEO2
.window/x1 LDZ2 #0008 ADD2 .window/y1 LDZ2 #0020 ADD2 ;green_txt #25 ;draw-label JSR2
.window/x1 LDZ2 #0038 ADD2 .Screen/x DEO2
.System/g DEI2 #28 ;draw-short JSR2
.window/x1 PEK2 #0008 ADD2 .window/y1 PEK2 #0030 ADD2 ;blue_txt #25 ;draw-label JSR2
.window/x1 PEK2 #0038 ADD2 .Screen/x DEO2
.window/x1 LDZ2 #0008 ADD2 .window/y1 LDZ2 #0030 ADD2 ;blue_txt #25 ;draw-label JSR2
.window/x1 LDZ2 #0038 ADD2 .Screen/x DEO2
.System/b DEI2 #28 ;draw-short JSR2
.window/x1 PEK2 #0060 ADD2 .window/y1 PEK2 #0010 ADD2 .window/x1 PEK2 #0090 ADD2 #00 ;theme/r1 .selection PEK ADD LDA #0004 MUL2 #01 ;draw-slider JSR2
.window/x1 PEK2 #0060 ADD2 .window/y1 PEK2 #0020 ADD2 .window/x1 PEK2 #0090 ADD2 #00 ;theme/g1 .selection PEK ADD LDA #0004 MUL2 #01 ;draw-slider JSR2
.window/x1 PEK2 #0060 ADD2 .window/y1 PEK2 #0030 ADD2 .window/x1 PEK2 #0090 ADD2 #00 ;theme/b1 .selection PEK ADD LDA #0004 MUL2 #01 ;draw-slider JSR2
.window/x1 LDZ2 #0060 ADD2 .window/y1 LDZ2 #0010 ADD2 .window/x1 LDZ2 #0090 ADD2 #00 ;theme/r1 .selection LDZ ADD LDA #0004 MUL2 #01 ;draw-slider JSR2
.window/x1 LDZ2 #0060 ADD2 .window/y1 LDZ2 #0020 ADD2 .window/x1 LDZ2 #0090 ADD2 #00 ;theme/g1 .selection LDZ ADD LDA #0004 MUL2 #01 ;draw-slider JSR2
.window/x1 LDZ2 #0060 ADD2 .window/y1 LDZ2 #0030 ADD2 .window/x1 LDZ2 #0090 ADD2 #00 ;theme/b1 .selection LDZ ADD LDA #0004 MUL2 #01 ;draw-slider JSR2
.window/x1 PEK2 #0050 ADD2 .Screen/x DEO2
.window/y1 PEK2 #0040 ADD2 .Screen/y DEO2
;radio_icns #00 .selection PEK #00 EQU #0008 MUL2 ADD2 .Screen/addr DEO2
.window/x1 LDZ2 #0050 ADD2 .Screen/x DEO2
.window/y1 LDZ2 #0040 ADD2 .Screen/y DEO2
;radio_icns #00 .selection LDZ #00 EQU #0008 MUL2 ADD2 .Screen/addr DEO2
#25 .Screen/color DEO
.window/x1 PEK2 #0060 ADD2 .Screen/x DEO2
.window/y1 PEK2 #0040 ADD2 .Screen/y DEO2
;radio_icns #00 .selection PEK #01 EQU #0008 MUL2 ADD2 .Screen/addr DEO2
.window/x1 LDZ2 #0060 ADD2 .Screen/x DEO2
.window/y1 LDZ2 #0040 ADD2 .Screen/y DEO2
;radio_icns #00 .selection LDZ #01 EQU #0008 MUL2 ADD2 .Screen/addr DEO2
#25 .Screen/color DEO
.window/x1 PEK2 #0070 ADD2 .Screen/x DEO2
.window/y1 PEK2 #0040 ADD2 .Screen/y DEO2
;radio_icns #00 .selection PEK #02 EQU #0008 MUL2 ADD2 .Screen/addr DEO2
.window/x1 LDZ2 #0070 ADD2 .Screen/x DEO2
.window/y1 LDZ2 #0040 ADD2 .Screen/y DEO2
;radio_icns #00 .selection LDZ #02 EQU #0008 MUL2 ADD2 .Screen/addr DEO2
#25 .Screen/color DEO
.window/x1 PEK2 #0080 ADD2 .Screen/x DEO2
.window/y1 PEK2 #0040 ADD2 .Screen/y DEO2
;radio_icns #00 .selection PEK #03 EQU #0008 MUL2 ADD2 .Screen/addr DEO2
.window/x1 LDZ2 #0080 ADD2 .Screen/x DEO2
.window/y1 LDZ2 #0040 ADD2 .Screen/y DEO2
;radio_icns #00 .selection LDZ #03 EQU #0008 MUL2 ADD2 .Screen/addr DEO2
#25 .Screen/color DEO
RTN
@ -240,27 +240,27 @@ RTN
( clear last cursor )
;pointer_icn .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
( record pointer positions )
.Mouse/x DEI2 .pointer/x POK2
.Mouse/y DEI2 .pointer/y POK2
.Mouse/x DEI2 .pointer/x STZ2
.Mouse/y DEI2 .pointer/y STZ2
( draw new cursor )
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#33 .Mouse/state DEI #00 NEQ #02 MUL SUB .Screen/color DEO
RTN
@draw-slider ( x1* y* x2* pos* color -- )
( load ) .color POK .slider/pos POK2 .slider/x2 POK2 .slider/y POK2 .slider/x1 POK2
( load ) .color STZ .slider/pos STZ2 .slider/x2 STZ2 .slider/y STZ2 .slider/x1 STZ2
.slider/x1 PEK2 .Screen/x DEO2
.slider/y PEK2 .Screen/y DEO2
.slider/x1 LDZ2 .Screen/x DEO2
.slider/y LDZ2 .Screen/y DEO2
;halftone_icn .Screen/addr DEO2
;slidera_icn .Screen/addr DEO2
@ -270,13 +270,13 @@ RTN
&loop
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
( draw ) #25 .Screen/color DEO
.Screen/x DEI2 .slider/x2 PEK2 #0008 ADD2 LTH2 ,&loop JCN
.Screen/x DEI2 .slider/x2 LDZ2 #0008 ADD2 LTH2 ,&loop JCN
( incr ) .Screen/x DEI2 #0004 ADD2 .Screen/x DEO2
;sliderc_icn .Screen/addr DEO2
( draw ) #25 .Screen/color DEO
.slider/x1 PEK2 .slider/pos PEK2 ADD2 .Screen/x DEO2
.slider/x1 LDZ2 .slider/pos LDZ2 ADD2 .Screen/x DEO2
;sliderd_icn .Screen/addr DEO2
( draw ) #2a .Screen/color DEO
@ -284,14 +284,14 @@ RTN
@fill-rect ( x1* y1* x2* y2* color -- )
.color POK
.color STZ
( x1 x2 y1 y2 ) ROT2 SWP2
&ver
( save ) OVR2 .Screen/y DEO2
STH2 STH2 OVR2 OVR2
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 #0001 ADD2 SWP2
OVR2 OVR2 LTH2 ,&hor JCN
POP2 POP2 STH2r STH2r
@ -303,18 +303,18 @@ RTN
@line-rect ( x1* y1* x2* y2* color -- )
( load ) .color POK .rect/y2 POK2 .rect/x2 POK2 DUP2 .Screen/y DEO2 .rect/y1 POK2 DUP2 .Screen/x DEO2 .rect/x1 POK2
( load ) .color STZ .rect/y2 STZ2 .rect/x2 STZ2 DUP2 .Screen/y DEO2 .rect/y1 STZ2 DUP2 .Screen/x DEO2 .rect/x1 STZ2
&hor
( incr ) .Screen/x DEI2 ++ .Screen/x DEO2
( draw ) .rect/y1 PEK2 .Screen/y DEO2 .color PEK .Screen/color DEO
( draw ) .rect/y2 PEK2 .Screen/y DEO2 .color PEK .Screen/color DEO
.Screen/x DEI2 .rect/x2 PEK2 LTH2 ,&hor JCN
.rect/y1 PEK2 .Screen/y DEO2
( draw ) .rect/y1 LDZ2 .Screen/y DEO2 .color LDZ .Screen/color DEO
( draw ) .rect/y2 LDZ2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.Screen/x DEI2 .rect/x2 LDZ2 LTH2 ,&hor JCN
.rect/y1 LDZ2 .Screen/y DEO2
&ver
( draw ) .rect/x1 PEK2 .Screen/x DEO2 .color PEK .Screen/color DEO
( draw ) .rect/x2 PEK2 .Screen/x DEO2 .color PEK .Screen/color DEO
( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ .Screen/color DEO
( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .color LDZ .Screen/color DEO
( incr ) .Screen/y DEI2 ++ .Screen/y DEO2
.Screen/y DEI2 .rect/y2 PEK2 ++ LTH2 ,&ver JCN
.Screen/y DEI2 .rect/y2 LDZ2 ++ LTH2 ,&ver JCN
RTN

View file

@ -31,11 +31,11 @@ BRK
@on-frame ( -> )
( incr ) .timer PEK #01 ADD .timer POK
( skip ) .timer PEK #10 EQU #01 JCN [ BRK ]
( incr ) .timer LDZ #01 ADD .timer STZ
( skip ) .timer LDZ #10 EQU #01 JCN [ BRK ]
( get note )
;melody #00 .progress PEK ADD2 LDA
;melody #00 .progress LDZ ADD2 LDA
( play note )
DUP .Audio0/pitch DEO
@ -45,13 +45,13 @@ BRK
( draw note )
#00 SWP #0004 MUL2 #0100 SUB2 .Screen/y DEO2
#00 .progress PEK #0008 MUL2 .Screen/x DEO2
#00 .progress LDZ #0008 MUL2 .Screen/x DEO2
;dot .Screen/addr DEO2
#21 .Screen/color DEO
( incr ) .progress PEK #01 ADD #20 MOD .progress POK
( incr ) .progress LDZ #01 ADD #20 MOD .progress STZ
#00 .timer POK
#00 .timer STZ
BRK

View file

@ -58,23 +58,23 @@ RTN
RTN
@print-decimal ( short -- )
#00 .number/started POK
#00 .number/started STZ
DUP2 #2710 DIV2 DUP2 ,&digit JSR #2710 MUL2 SUB2
DUP2 #03e8 DIV2 DUP2 ,&digit JSR #03e8 MUL2 SUB2
DUP2 #0064 DIV2 DUP2 ,&digit JSR #0064 MUL2 SUB2
DUP2 #000a DIV2 DUP2 ,&digit JSR #000a MUL2 SUB2
,&digit JSR
.number/started PEK ,&end JCN
.number/started LDZ ,&end JCN
LIT '0 .Console/char DEO
&end
RTN
&digit
SWP POP
DUP .number/started PEK ORA #02 JCN
DUP .number/started LDZ ORA #02 JCN
POP JMP2r
LIT '0 ADD .Console/char DEO
#01 .number/started POK
#01 .number/started STZ
RTN
@char-txt "char: 20 $1

View file

@ -33,19 +33,19 @@
;default_icn .Screen/addr DEO2
#31 .Screen/color DEO
#2a .slime POK
#2a .slime STZ
BRK
@on-frame ( -> )
#2a .slime POK
#2a .slime STZ
;default_icn .Screen/addr DEO2
( hold ctrl key to change slime color )
.Controller/button DEI #0f AND
DUP #01 NEQ ,&no-ctrl JCN #25 .slime POK &no-ctrl
DUP #02 NEQ ,&no-alt JCN #2f .slime POK &no-alt
DUP #01 NEQ ,&no-ctrl JCN #25 .slime STZ &no-ctrl
DUP #02 NEQ ,&no-alt JCN #2f .slime STZ &no-alt
POP
( clear ) #30 .Screen/color DEO
@ -75,7 +75,7 @@ BRK
( draw slime )
;slime_icn .Screen/addr DEO2
.slime PEK .Screen/color DEO
.slime LDZ .Screen/color DEO
BRK

View file

@ -41,30 +41,30 @@ BRK
@on-frame ( -> )
( only draw once per second )
( skip ) .DateTime/second DEI .current PEK NEQ #01 JCN [ BRK ]
( skip ) .DateTime/second DEI .current LDZ NEQ #01 JCN [ BRK ]
.DateTime/second DEI .current POK
.DateTime/second DEI .current STZ
( clear )
#0080 SCALEX #0080 SCALEY .needles/sx PEK2 .needles/sy PEK2 #00 ;draw-line JSR2
#0080 SCALEX #0080 SCALEY .needles/mx PEK2 .needles/my PEK2 #00 ;draw-line JSR2
#0080 SCALEX #0080 SCALEY .needles/hx PEK2 .needles/hy PEK2 #00 ;draw-line JSR2
#0080 SCALEX #0080 SCALEY .needles/sx LDZ2 .needles/sy LDZ2 #00 ;draw-line JSR2
#0080 SCALEX #0080 SCALEY .needles/mx LDZ2 .needles/my LDZ2 #00 ;draw-line JSR2
#0080 SCALEX #0080 SCALEY .needles/hx LDZ2 .needles/hy LDZ2 #00 ;draw-line JSR2
( place )
#00 .DateTime/second DEI #0002 MUL2 ;table ADD2 LDA2
#00 SWP SCALEY .needles/sy POK2
#00 SWP SCALEX .needles/sx POK2
#00 SWP SCALEY .needles/sy STZ2
#00 SWP SCALEX .needles/sx STZ2
#00 .DateTime/minute DEI #0002 MUL2 ;table ADD2 LDA2
#00 SWP #0004 DIV2 #0003 MUL2 #0020 ADD2 SCALEY .needles/my POK2
#00 SWP #0004 DIV2 #0003 MUL2 #0020 ADD2 SCALEX .needles/mx POK2
#00 SWP #0004 DIV2 #0003 MUL2 #0020 ADD2 SCALEY .needles/my STZ2
#00 SWP #0004 DIV2 #0003 MUL2 #0020 ADD2 SCALEX .needles/mx STZ2
#00 .DateTime/hour DEI 12HOURS #05 MUL #0002 MUL2 ;table ADD2 LDA2
#00 SWP #0002 DIV2 #0040 ADD2 SCALEY .needles/hy POK2
#00 SWP #0002 DIV2 #0040 ADD2 SCALEX .needles/hx POK2
#00 SWP #0002 DIV2 #0040 ADD2 SCALEY .needles/hy STZ2
#00 SWP #0002 DIV2 #0040 ADD2 SCALEX .needles/hx STZ2
( needles )
#0080 SCALEX #0080 SCALEY .needles/sx PEK2 .needles/sy PEK2 #02 ;draw-line JSR2
#0080 SCALEX #0080 SCALEY .needles/mx PEK2 .needles/my PEK2 #01 ;draw-line JSR2
#0080 SCALEX #0080 SCALEY .needles/hx PEK2 .needles/hy PEK2 #03 ;draw-line JSR2
#0080 SCALEX #0080 SCALEY .needles/sx LDZ2 .needles/sy LDZ2 #02 ;draw-line JSR2
#0080 SCALEX #0080 SCALEY .needles/mx LDZ2 .needles/my LDZ2 #01 ;draw-line JSR2
#0080 SCALEX #0080 SCALEY .needles/hx LDZ2 .needles/hy LDZ2 #03 ;draw-line JSR2
( circle )
#00 #3c
@ -109,26 +109,26 @@ RTN
@draw-line ( x1 y1 x2 y2 color -- )
( load ) .color POK .line/y0 POK2 .line/x0 POK2 .line/y POK2 .line/x POK2
.line/x0 PEK2 .line/x PEK2 SUB2 ABS2 .line/dx POK2
.line/y0 PEK2 .line/y PEK2 SUB2 ABS2 #0000 SWP2 SUB2 .line/dy POK2
#ffff #00 .line/x PEK2 .line/x0 PEK2 LTS2 #0002 MUL2 ADD2 .line/sx POK2
#ffff #00 .line/y PEK2 .line/y0 PEK2 LTS2 #0002 MUL2 ADD2 .line/sy POK2
.line/dx PEK2 .line/dy PEK2 ADD2 .line/e1 POK2
( load ) .color STZ .line/y0 STZ2 .line/x0 STZ2 .line/y STZ2 .line/x STZ2
.line/x0 LDZ2 .line/x LDZ2 SUB2 ABS2 .line/dx STZ2
.line/y0 LDZ2 .line/y LDZ2 SUB2 ABS2 #0000 SWP2 SUB2 .line/dy STZ2
#ffff #00 .line/x LDZ2 .line/x0 LDZ2 LTS2 #0002 MUL2 ADD2 .line/sx STZ2
#ffff #00 .line/y LDZ2 .line/y0 LDZ2 LTS2 #0002 MUL2 ADD2 .line/sy STZ2
.line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
&loop
.line/x PEK2 .Screen/x DEO2
.line/y PEK2 .Screen/y DEO2
.color PEK .Screen/color DEO
[ .line/x PEK2 .line/x0 PEK2 EQU2 ]
[ .line/y PEK2 .line/y0 PEK2 EQU2 ] #0101 EQU2 ,&end JCN
.line/e1 PEK2 #0002 MUL2 .line/e2 POK2
.line/e2 PEK2 .line/dy PEK2 LTS2 ,&skipy JCN
.line/e1 PEK2 .line/dy PEK2 ADD2 .line/e1 POK2
.line/x PEK2 .line/sx PEK2 ADD2 .line/x POK2
.line/x LDZ2 .Screen/x DEO2
.line/y LDZ2 .Screen/y DEO2
.color LDZ .Screen/color DEO
[ .line/x LDZ2 .line/x0 LDZ2 EQU2 ]
[ .line/y LDZ2 .line/y0 LDZ2 EQU2 ] #0101 EQU2 ,&end JCN
.line/e1 LDZ2 #0002 MUL2 .line/e2 STZ2
.line/e2 LDZ2 .line/dy LDZ2 LTS2 ,&skipy JCN
.line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
.line/x LDZ2 .line/sx LDZ2 ADD2 .line/x STZ2
&skipy
.line/e2 PEK2 .line/dx PEK2 GTS2 ,&skipx JCN
.line/e1 PEK2 .line/dx PEK2 ADD2 .line/e1 POK2
.line/y PEK2 .line/sy PEK2 ADD2 .line/y POK2
.line/e2 LDZ2 .line/dx LDZ2 GTS2 ,&skipx JCN
.line/e1 LDZ2 .line/dx LDZ2 ADD2 .line/e1 STZ2
.line/y LDZ2 .line/sy LDZ2 ADD2 .line/y STZ2
&skipx
;&loop JMP2
&end

View file

@ -36,37 +36,37 @@ BRK
;draw-cursor JSR2
( on down )
.Mouse/state DEI #00 NEQ .pointer/state PEK #00 EQU #0101 EQU2 ,on-mouse-down JCN
.Mouse/state DEI #00 NEQ .pointer/state LDZ #00 EQU #0101 EQU2 ,on-mouse-down JCN
( on drag )
.Mouse/state DEI #00 NEQ ,on-mouse-drag JCN
.Mouse/state DEI .pointer/state POK
.Mouse/state DEI .pointer/state STZ
BRK
@on-mouse-down ( -> )
( record start position )
.Mouse/x DEI2 DUP2 .pointer/x POK2 .pointer/lastx POK2
.Mouse/y DEI2 DUP2 .pointer/y POK2 .pointer/lasty POK2
.Mouse/state DEI .pointer/state POK
.Mouse/x DEI2 DUP2 .pointer/x STZ2 .pointer/lastx STZ2
.Mouse/y DEI2 DUP2 .pointer/y STZ2 .pointer/lasty STZ2
.Mouse/state DEI .pointer/state STZ
BRK
@on-mouse-drag ( -> )
( draw line )
.pointer/lastx PEK2
.pointer/lasty PEK2
.pointer/x PEK2
.pointer/y PEK2
.pointer/lastx LDZ2
.pointer/lasty LDZ2
.pointer/x LDZ2
.pointer/y LDZ2
#01 [ .Mouse/state DEI #10 EQU #02 MUL ADD ]
;draw-line JSR2
( record last position )
.Mouse/x DEI2 .pointer/lastx POK2
.Mouse/y DEI2 .pointer/lasty POK2
.Mouse/state DEI .pointer/state POK
.Mouse/x DEI2 .pointer/lastx STZ2
.Mouse/y DEI2 .pointer/lasty STZ2
.Mouse/state DEI .pointer/state STZ
BRK
@ -74,44 +74,44 @@ BRK
( clear last cursor )
#fff8 .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
( record pointer positions )
.Mouse/x DEI2 .pointer/x POK2
.Mouse/y DEI2 .pointer/y POK2
.Mouse/x DEI2 .pointer/x STZ2
.Mouse/y DEI2 .pointer/y STZ2
( draw new cursor )
;pointer_icn .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#33 .Mouse/state DEI #00 NEQ #02 MUL SUB .Screen/color DEO
RTN
@draw-line ( x1 y1 x2 y2 color -- )
( load ) .color POK .line/y0 POK2 .line/x0 POK2 .line/y POK2 .line/x POK2
.line/x0 PEK2 .line/x PEK2 SUB2 ABS2 .line/dx POK2
.line/y0 PEK2 .line/y PEK2 SUB2 ABS2 #0000 SWP2 SUB2 .line/dy POK2
#ffff #00 .line/x PEK2 .line/x0 PEK2 LTS2 #0002 MUL2 ADD2 .line/sx POK2
#ffff #00 .line/y PEK2 .line/y0 PEK2 LTS2 #0002 MUL2 ADD2 .line/sy POK2
.line/dx PEK2 .line/dy PEK2 ADD2 .line/e1 POK2
( load ) .color STZ .line/y0 STZ2 .line/x0 STZ2 .line/y STZ2 .line/x STZ2
.line/x0 LDZ2 .line/x LDZ2 SUB2 ABS2 .line/dx STZ2
.line/y0 LDZ2 .line/y LDZ2 SUB2 ABS2 #0000 SWP2 SUB2 .line/dy STZ2
#ffff #00 .line/x LDZ2 .line/x0 LDZ2 LTS2 #0002 MUL2 ADD2 .line/sx STZ2
#ffff #00 .line/y LDZ2 .line/y0 LDZ2 LTS2 #0002 MUL2 ADD2 .line/sy STZ2
.line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
&loop
.line/x PEK2 .Screen/x DEO2
.line/y PEK2 .Screen/y DEO2
.color PEK .Screen/color DEO
[ .line/x PEK2 .line/x0 PEK2 EQU2 ]
[ .line/y PEK2 .line/y0 PEK2 EQU2 ] #0101 EQU2 ,&end JCN
.line/e1 PEK2 #0002 MUL2 .line/e2 POK2
.line/e2 PEK2 .line/dy PEK2 LTS2 ,&skipy JCN
.line/e1 PEK2 .line/dy PEK2 ADD2 .line/e1 POK2
.line/x PEK2 .line/sx PEK2 ADD2 .line/x POK2
.line/x LDZ2 .Screen/x DEO2
.line/y LDZ2 .Screen/y DEO2
.color LDZ .Screen/color DEO
[ .line/x LDZ2 .line/x0 LDZ2 EQU2 ]
[ .line/y LDZ2 .line/y0 LDZ2 EQU2 ] #0101 EQU2 ,&end JCN
.line/e1 LDZ2 #0002 MUL2 .line/e2 STZ2
.line/e2 LDZ2 .line/dy LDZ2 LTS2 ,&skipy JCN
.line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
.line/x LDZ2 .line/sx LDZ2 ADD2 .line/x STZ2
&skipy
.line/e2 PEK2 .line/dx PEK2 GTS2 ,&skipx JCN
.line/e1 PEK2 .line/dx PEK2 ADD2 .line/e1 POK2
.line/y PEK2 .line/sy PEK2 ADD2 .line/y POK2
.line/e2 LDZ2 .line/dx LDZ2 GTS2 ,&skipx JCN
.line/e1 LDZ2 .line/dx LDZ2 ADD2 .line/e1 STZ2
.line/y LDZ2 .line/sy LDZ2 ADD2 .line/y STZ2
&skipx
;&loop JMP2
&end

View file

@ -24,8 +24,8 @@
#0da4 .System/b DEO2
( find screen center )
.Screen/width DEI2 #0002 DIV2 .center/x POK2
.Screen/height DEI2 #0002 DIV2 .center/y POK2
.Screen/width DEI2 #0002 DIV2 .center/x STZ2
.Screen/height DEI2 #0002 DIV2 .center/y STZ2
( draw )
;draw-table JSR2
@ -40,9 +40,9 @@ BRK
#00 #00
&loop
( move ) OVR #0f AND #40 SFT #02 DIV #00 SWP
.center/x PEK2 #0040 SUB2 ADD2 .Screen/x DEO2
.center/x LDZ2 #0040 SUB2 ADD2 .Screen/x DEO2
( move ) OVR #f0 AND #02 DIV #00 SWP
.center/y PEK2 #0040 SUB2 ADD2 .Screen/y DEO2
.center/y LDZ2 #0040 SUB2 ADD2 .Screen/y DEO2
( draw ) OVR .Screen/color DEO
( incr ) SWP #01 ADD SWP
DUP2 NEQ ,&loop JCN
@ -58,14 +58,14 @@ RTN
( x-axis )
OVR #08 MUL #00 SWP
.center/x PEK2 #0040 SUB2 ADD2 .Screen/x DEO2
.center/y PEK2 #0050 SUB2 .Screen/y DEO2
.center/x LDZ2 #0040 SUB2 ADD2 .Screen/x DEO2
.center/y LDZ2 #0050 SUB2 .Screen/y DEO2
( draw ) #21 .Screen/color DEO
( y-axis )
OVR #08 MUL #00 SWP
.center/y PEK2 #0040 SUB2 ADD2 .Screen/y DEO2
.center/x PEK2 #0050 SUB2 .Screen/x DEO2
.center/y LDZ2 #0040 SUB2 ADD2 .Screen/y DEO2
.center/x LDZ2 #0050 SUB2 .Screen/x DEO2
( draw ) #21 .Screen/color DEO
( incr ) SWP #01 ADD SWP
@ -78,15 +78,15 @@ RTN
;preview_icn .Screen/addr DEO2
.center/x PEK2 #0048 ADD2 .Screen/x DEO2
.center/y PEK2 #0030 ADD2 .Screen/y DEO2
.center/x LDZ2 #0048 ADD2 .Screen/x DEO2
.center/y LDZ2 #0030 ADD2 .Screen/y DEO2
#21 .Screen/color DEO
.center/x PEK2 #0050 ADD2 .Screen/x DEO2
.center/x LDZ2 #0050 ADD2 .Screen/x DEO2
#61 .Screen/color DEO
.center/x PEK2 #0048 ADD2 .Screen/x DEO2
.center/y PEK2 #0038 ADD2 .Screen/y DEO2
.center/x LDZ2 #0048 ADD2 .Screen/x DEO2
.center/y LDZ2 #0038 ADD2 .Screen/y DEO2
#a1 .Screen/color DEO
.center/x PEK2 #0050 ADD2 .Screen/x DEO2
.center/x LDZ2 #0050 ADD2 .Screen/x DEO2
#f1 .Screen/color DEO
RTN

View file

@ -20,8 +20,8 @@
;on-frame .Screen/vector DEO2
( starting position )
.Screen/width DEI2 #0002 DIV2 .dvd/x POK2
.Screen/height DEI2 #0002 DIV2 .dvd/y POK2
.Screen/width DEI2 #0002 DIV2 .dvd/x STZ2
.Screen/height DEI2 #0002 DIV2 .dvd/y STZ2
#21 ;draw-dvd JSR2
@ -30,16 +30,16 @@ BRK
@on-frame ( -> )
( clear ) #20 ;draw-dvd JSR2
( case: hit-right ) .dvd/x PEK2 .Screen/width DEI2 #0020 SUB2 EQU2
( case: hit-left ) .dvd/x PEK2 #0000 EQU2
( case: hit-right ) .dvd/x LDZ2 .Screen/width DEI2 #0020 SUB2 EQU2
( case: hit-left ) .dvd/x LDZ2 #0000 EQU2
#0000 EQU2 ,&no-flipx JCN
.dvd/dx PEK #00 EQU .dvd/dx POK &no-flipx
( case: hit-bottom ) .dvd/y PEK2 .Screen/height DEI2 #0010 SUB2 EQU2
( case: hit-top ) .dvd/y PEK2 #0000 EQU2
.dvd/dx LDZ #00 EQU .dvd/dx STZ &no-flipx
( case: hit-bottom ) .dvd/y LDZ2 .Screen/height DEI2 #0010 SUB2 EQU2
( case: hit-top ) .dvd/y LDZ2 #0000 EQU2
#0000 EQU2 ,&no-flipy JCN
.dvd/dy PEK #00 EQU .dvd/dy POK &no-flipy
( incr ) .dvd/x PEK2 #0001 #00 .dvd/dx PEK #00 EQU #fffe MUL2 ADD2 ADD2 .dvd/x POK2
( incr ) .dvd/y PEK2 #0001 #00 .dvd/dy PEK #00 EQU #fffe MUL2 ADD2 ADD2 .dvd/y POK2
.dvd/dy LDZ #00 EQU .dvd/dy STZ &no-flipy
( incr ) .dvd/x LDZ2 #0001 #00 .dvd/dx LDZ #00 EQU #fffe MUL2 ADD2 ADD2 .dvd/x STZ2
( incr ) .dvd/y LDZ2 #0001 #00 .dvd/dy LDZ #00 EQU #fffe MUL2 ADD2 ADD2 .dvd/y STZ2
( draw ) #21 ;draw-dvd JSR2
BRK
@ -48,10 +48,10 @@ BRK
( stash ) STH
;dvd_icn .Screen/addr DEO2
.dvd/y PEK2 [ .dvd/y PEK2 #0010 ADD2 ]
.dvd/y LDZ2 [ .dvd/y LDZ2 #0010 ADD2 ]
&ver
OVR2 .Screen/y DEO2
.dvd/x PEK2 [ .dvd/x PEK2 #0020 ADD2 ]
.dvd/x LDZ2 [ .dvd/x LDZ2 #0020 ADD2 ]
&hor
OVR2 .Screen/x DEO2
( draw ) DUPr STHr .Screen/color DEO

View file

@ -26,38 +26,38 @@
( theme ) #0f0f .System/r DEO2 #0fff .System/g DEO2 #0ff0 .System/b DEO2
( vectors ) ;on-mouse .Mouse/vector DEO2
#0020 #0030 #0060 #0060 .r1/y2 POK2 .r1/x2 POK2 .r1/y1 POK2 .r1/x1 POK2
#0058 #0050 #0090 #0080 .r2/y2 POK2 .r2/x2 POK2 .r2/y1 POK2 .r2/x1 POK2
#0048 #0048 #0080 #0098 .r3/y2 POK2 .r3/x2 POK2 .r3/y1 POK2 .r3/x1 POK2
#0020 #0030 #0060 #0060 .r1/y2 STZ2 .r1/x2 STZ2 .r1/y1 STZ2 .r1/x1 STZ2
#0058 #0050 #0090 #0080 .r2/y2 STZ2 .r2/x2 STZ2 .r2/y1 STZ2 .r2/x1 STZ2
#0048 #0048 #0080 #0098 .r3/y2 STZ2 .r3/x2 STZ2 .r3/y1 STZ2 .r3/x1 STZ2
( no BRK, run through to on-mouse )
@on-mouse
;pointer_icn .pointer/sprite POK2
;pointer_icn .pointer/sprite STZ2
#01 .color POK
#01 .color STZ
( matrix comparison )
.Mouse/x DEI2 .r1/x1 PEK2 GTH2 .Mouse/x DEI2 .r1/x2 PEK2 LTH2 #0101 EQU2
.Mouse/y DEI2 .r1/y1 PEK2 GTH2 .Mouse/y DEI2 .r1/y2 PEK2 LTH2 #0101 EQU2
#0101 NEQ2 ,&draw1 JCN #02 .color POK ;hand_icn .pointer/sprite POK2
&draw1 .r1/x1 PEK2 .r1/y1 PEK2 .r1/x2 PEK2 .r1/y2 PEK2 .color PEK ;line-rect JSR2
.Mouse/x DEI2 .r1/x1 LDZ2 GTH2 .Mouse/x DEI2 .r1/x2 LDZ2 LTH2 #0101 EQU2
.Mouse/y DEI2 .r1/y1 LDZ2 GTH2 .Mouse/y DEI2 .r1/y2 LDZ2 LTH2 #0101 EQU2
#0101 NEQ2 ,&draw1 JCN #02 .color STZ ;hand_icn .pointer/sprite STZ2
&draw1 .r1/x1 LDZ2 .r1/y1 LDZ2 .r1/x2 LDZ2 .r1/y2 LDZ2 .color LDZ ;line-rect JSR2
#01 .color POK
#01 .color STZ
( 2-step comparison )
.Mouse/x DEI2 .r2/x1 PEK2 GTH2 .Mouse/x DEI2 .r2/x2 PEK2 LTH2 #0101 NEQ2 ,&draw2 JCN
.Mouse/y DEI2 .r2/y1 PEK2 GTH2 .Mouse/y DEI2 .r2/y2 PEK2 LTH2 #0101 NEQ2 ,&draw2 JCN
#03 .color POK ;hand_icn .pointer/sprite POK2
&draw2 .r2/x1 PEK2 .r2/y1 PEK2 .r2/x2 PEK2 .r2/y2 PEK2 .color PEK ;line-rect JSR2
.Mouse/x DEI2 .r2/x1 LDZ2 GTH2 .Mouse/x DEI2 .r2/x2 LDZ2 LTH2 #0101 NEQ2 ,&draw2 JCN
.Mouse/y DEI2 .r2/y1 LDZ2 GTH2 .Mouse/y DEI2 .r2/y2 LDZ2 LTH2 #0101 NEQ2 ,&draw2 JCN
#03 .color STZ ;hand_icn .pointer/sprite STZ2
&draw2 .r2/x1 LDZ2 .r2/y1 LDZ2 .r2/x2 LDZ2 .r2/y2 LDZ2 .color LDZ ;line-rect JSR2
#01 .color POK
#01 .color STZ
( 4-step comparison )
.Mouse/x DEI2 .r3/x1 PEK2 LTH2 ,&draw3 JCN
.Mouse/x DEI2 .r3/x2 PEK2 GTH2 ,&draw3 JCN
.Mouse/y DEI2 .r3/y1 PEK2 LTH2 ,&draw3 JCN
.Mouse/y DEI2 .r3/y2 PEK2 GTH2 ,&draw3 JCN
#02 .color POK ;hand_icn .pointer/sprite POK2
&draw3 .r3/x1 PEK2 .r3/y1 PEK2 .r3/x2 PEK2 .r3/y2 PEK2 .color PEK ;line-rect JSR2
.Mouse/x DEI2 .r3/x1 LDZ2 LTH2 ,&draw3 JCN
.Mouse/x DEI2 .r3/x2 LDZ2 GTH2 ,&draw3 JCN
.Mouse/y DEI2 .r3/y1 LDZ2 LTH2 ,&draw3 JCN
.Mouse/y DEI2 .r3/y2 LDZ2 GTH2 ,&draw3 JCN
#02 .color STZ ;hand_icn .pointer/sprite STZ2
&draw3 .r3/x1 LDZ2 .r3/y1 LDZ2 .r3/x2 LDZ2 .r3/y2 LDZ2 .color LDZ ;line-rect JSR2
;draw-cursor JSR2
@ -67,35 +67,35 @@ BRK
( clear last cursor )
;clear_icn .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
( record pointer positions )
.Mouse/x DEI2 .pointer/x POK2 .Mouse/y DEI2 .pointer/y POK2
.Mouse/x DEI2 .pointer/x STZ2 .Mouse/y DEI2 .pointer/y STZ2
( draw new cursor )
.pointer/sprite PEK2 .Screen/addr DEO2
.pointer/x PEK2 .Screen/x DEO2
.pointer/y PEK2 .Screen/y DEO2
.pointer/sprite LDZ2 .Screen/addr DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#31 .Screen/color DEO
RTN
@line-rect ( x1* y1* x2* y2* color -- )
( load ) .color POK .rect/y2 POK2 .rect/x2 POK2 DUP2 .Screen/y DEO2 .rect/y1 POK2 DUP2 .Screen/x DEO2 .rect/x1 POK2
( load ) .color STZ .rect/y2 STZ2 .rect/x2 STZ2 DUP2 .Screen/y DEO2 .rect/y1 STZ2 DUP2 .Screen/x DEO2 .rect/x1 STZ2
&hor
( incr ) .Screen/x DEI2 #0001 ADD2 .Screen/x DEO2
( draw ) .rect/y1 PEK2 .Screen/y DEO2 .color PEK .Screen/color DEO
( draw ) .rect/y2 PEK2 .Screen/y DEO2 .color PEK .Screen/color DEO
.Screen/x DEI2 .rect/x2 PEK2 LTH2 ,&hor JCN
.rect/y1 PEK2 .Screen/y DEO2
( draw ) .rect/y1 LDZ2 .Screen/y DEO2 .color LDZ .Screen/color DEO
( draw ) .rect/y2 LDZ2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.Screen/x DEI2 .rect/x2 LDZ2 LTH2 ,&hor JCN
.rect/y1 LDZ2 .Screen/y DEO2
&ver
( draw ) .rect/x1 PEK2 .Screen/x DEO2 .color PEK .Screen/color DEO
( draw ) .rect/x2 PEK2 .Screen/x DEO2 .color PEK .Screen/color DEO
( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ .Screen/color DEO
( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .color LDZ .Screen/color DEO
( incr ) .Screen/y DEI2 #0001 ADD2 .Screen/y DEO2
.Screen/y DEI2 .rect/y2 PEK2 #0001 ADD2 LTH2 ,&ver JCN
.Screen/y DEI2 .rect/y2 LDZ2 #0001 ADD2 LTH2 ,&ver JCN
RTN

View file

@ -27,30 +27,30 @@ BRK
@draw ( -- )
( find screen center )
.Screen/width DEI2 #0002 DIV2 .center/x POK2
.Screen/height DEI2 #0002 DIV2 .center/y POK2
.Screen/width DEI2 #0002 DIV2 .center/x STZ2
.Screen/height DEI2 #0002 DIV2 .center/y STZ2
( draw ver line )
.center/x PEK2 .Screen/x DEO2 #0000 .Screen/y DEO2
.center/x LDZ2 .Screen/x DEO2 #0000 .Screen/y DEO2
&draw-ver
( draw ) #02 .Screen/color DEO
( incr ) .Screen/y DEI2 #0002 ADD2 .Screen/y DEO2
.Screen/y DEI2 .Screen/height DEI2 LTH2 ,&draw-ver JCN
.center/x PEK2 .center/y PEK2 #0010 SUB2 #2c ;text1 ;draw-label-left JSR2
.center/x PEK2 .center/y PEK2 #2c ;text2 ;draw-label-middle JSR2
.center/x PEK2 .center/y PEK2 #0010 ADD2 #2c ;text3 ;draw-label-right JSR2
.center/x PEK2 .center/y PEK2 #0020 ADD2 #2c ;text4 ;draw-label-middle JSR2
.center/x PEK2 .center/y PEK2 #0030 ADD2 #2c ;text5 ;draw-label-middle JSR2
.center/x LDZ2 .center/y LDZ2 #0010 SUB2 #2c ;text1 ;draw-label-left JSR2
.center/x LDZ2 .center/y LDZ2 #2c ;text2 ;draw-label-middle JSR2
.center/x LDZ2 .center/y LDZ2 #0010 ADD2 #2c ;text3 ;draw-label-right JSR2
.center/x LDZ2 .center/y LDZ2 #0020 ADD2 #2c ;text4 ;draw-label-middle JSR2
.center/x LDZ2 .center/y LDZ2 #0030 ADD2 #2c ;text5 ;draw-label-middle JSR2
RTN
@draw-label-left ( x y color addr -- )
( load ) .label/addr POK2 .label/color POK .Screen/y DEO2 .Screen/x DEO2
.label/addr PEK2
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2 .Screen/x DEO2
.label/addr LDZ2
&loop
( draw ) DUP2 LDA #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 .label/color PEK .Screen/color DEO
( draw ) DUP2 LDA #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/color DEO
( incr ) #0001 ADD2
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
DUP2 LDA #00 NEQ ,&loop JCN
@ -60,11 +60,11 @@ RTN
@draw-label-middle ( x y color addr -- )
( load ) .label/addr POK2 .label/color POK .Screen/y DEO2
( align ) .label/addr PEK2 ;get-text-length JSR2 #0008 MUL2 #0002 DIV2 SUB2 .Screen/x DEO2
.label/addr PEK2
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2
( align ) .label/addr LDZ2 ;get-text-length JSR2 #0008 MUL2 #0002 DIV2 SUB2 .Screen/x DEO2
.label/addr LDZ2
&loop
( draw ) DUP2 LDA #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 .label/color PEK .Screen/color DEO
( draw ) DUP2 LDA #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/color DEO
( incr ) #0001 ADD2
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
DUP2 LDA #00 NEQ ,&loop JCN
@ -74,11 +74,11 @@ RTN
@draw-label-right ( x y color addr -- )
( load ) .label/addr POK2 .label/color POK .Screen/y DEO2
( align ) .label/addr PEK2 ;get-text-length JSR2 #0008 MUL2 SUB2 #0008 SUB2 .Screen/x DEO2
.label/addr PEK2
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2
( align ) .label/addr LDZ2 ;get-text-length JSR2 #0008 MUL2 SUB2 #0008 SUB2 .Screen/x DEO2
.label/addr LDZ2
&loop
( draw ) DUP2 LDA #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 .label/color PEK .Screen/color DEO
( draw ) DUP2 LDA #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/color DEO
( incr ) #0001 ADD2
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
DUP2 LDA #00 NEQ ,&loop JCN

View file

@ -42,14 +42,14 @@ BRK
@draw-icn ( x y width height color addr -- )
( load ) .Screen/addr DEO2 .color POK .size/height POK2 .size/width POK2 .position/y POK2 .position/x POK2
#0000 .size/height PEK2
( load ) .Screen/addr DEO2 .color STZ .size/height STZ2 .size/width STZ2 .position/y STZ2 .position/x STZ2
#0000 .size/height LDZ2
&ver
( save ) OVR2 .position/y PEK2 ADD2 .Screen/y DEO2
#0000 .size/width PEK2
( save ) OVR2 .position/y LDZ2 ADD2 .Screen/y DEO2
#0000 .size/width LDZ2
&hor
( save ) OVR2 .position/x PEK2 ADD2 .Screen/x DEO2
( draw ) .color PEK .Screen/color DEO
( save ) OVR2 .position/x LDZ2 ADD2 .Screen/x DEO2
( draw ) .color LDZ .Screen/color DEO
( incr ) .Screen/addr DEI2 8+ .Screen/addr DEO2
( incr ) SWP2 8+ SWP2
OVR2 OVR2 LTH2 ,&hor JCN
@ -62,14 +62,14 @@ RTN
@draw-chr ( x y width height color addr -- )
( load ) .Screen/addr DEO2 .color POK .size/height POK2 .size/width POK2 .position/y POK2 .position/x POK2
#0000 .size/height PEK2
( load ) .Screen/addr DEO2 .color STZ .size/height STZ2 .size/width STZ2 .position/y STZ2 .position/x STZ2
#0000 .size/height LDZ2
&ver
( save ) OVR2 .position/y PEK2 ADD2 .Screen/y DEO2
#0000 .size/width PEK2
( save ) OVR2 .position/y LDZ2 ADD2 .Screen/y DEO2
#0000 .size/width LDZ2
&hor
( save ) OVR2 .position/x PEK2 ADD2 .Screen/x DEO2
( draw ) .color PEK .Screen/color DEO
( save ) OVR2 .position/x LDZ2 ADD2 .Screen/x DEO2
( draw ) .color LDZ .Screen/color DEO
( incr ) .Screen/addr DEI2 #0010 ADD2 .Screen/addr DEO2
( incr ) SWP2 8+ SWP2
OVR2 OVR2 LTH2 ,&hor JCN
@ -82,14 +82,14 @@ RTN
@cover-pattern ( addr color -- )
( load ) .color POK .Screen/addr DEO2
( load ) .color STZ .Screen/addr DEO2
#0000 .Screen/height DEI2
&ver
( save ) OVR2 .Screen/y DEO2
#0000 .Screen/width DEI2
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 8+ SWP2
OVR2 OVR2 LTH2 ,&hor JCN
POP2 POP2

View file

@ -46,23 +46,23 @@ BRK
@line-slow ( x1 y1 x2 y2 color -- )
( load ) .color POK -- .line/y0 POK2 -- .line/x0 POK2 .line/y POK2 .line/x POK2
.line/x0 PEK2 .line/x PEK2 SUB2 ABS2 .line/dx POK2
.line/y0 PEK2 .line/y PEK2 SUB2 ABS2 #0000 SWP2 SUB2 .line/dy POK2
#ffff #00 .line/x PEK2 .line/x0 PEK2 LTS2 #0002 MUL2 ADD2 .line/sx POK2
#ffff #00 .line/y PEK2 .line/y0 PEK2 LTS2 #0002 MUL2 ADD2 .line/sy POK2
.line/dx PEK2 .line/dy PEK2 ADD2 .line/e1 POK2
( load ) .color STZ -- .line/y0 STZ2 -- .line/x0 STZ2 .line/y STZ2 .line/x STZ2
.line/x0 LDZ2 .line/x LDZ2 SUB2 ABS2 .line/dx STZ2
.line/y0 LDZ2 .line/y LDZ2 SUB2 ABS2 #0000 SWP2 SUB2 .line/dy STZ2
#ffff #00 .line/x LDZ2 .line/x0 LDZ2 LTS2 #0002 MUL2 ADD2 .line/sx STZ2
#ffff #00 .line/y LDZ2 .line/y0 LDZ2 LTS2 #0002 MUL2 ADD2 .line/sy STZ2
.line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
&loop
.line/x PEK2 .Screen/x DEO2 .line/y PEK2 .Screen/y DEO2 .color PEK .Screen/color DEO
.line/x PEK2 .line/x0 PEK2 EQU2 .line/y PEK2 .line/y0 PEK2 EQU2 #0101 EQU2 ,&end JCN
.line/e1 PEK2 #0002 MUL2 .line/e2 POK2
.line/e2 PEK2 .line/dy PEK2 LTS2 ,&skipy JCN
.line/e1 PEK2 .line/dy PEK2 ADD2 .line/e1 POK2
.line/x PEK2 .line/sx PEK2 ADD2 .line/x POK2
.line/x LDZ2 .Screen/x DEO2 .line/y LDZ2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.line/x LDZ2 .line/x0 LDZ2 EQU2 .line/y LDZ2 .line/y0 LDZ2 EQU2 #0101 EQU2 ,&end JCN
.line/e1 LDZ2 #0002 MUL2 .line/e2 STZ2
.line/e2 LDZ2 .line/dy LDZ2 LTS2 ,&skipy JCN
.line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
.line/x LDZ2 .line/sx LDZ2 ADD2 .line/x STZ2
&skipy
.line/e2 PEK2 .line/dx PEK2 GTS2 ,&skipx JCN
.line/e1 PEK2 .line/dx PEK2 ADD2 .line/e1 POK2
.line/y PEK2 .line/sy PEK2 ADD2 .line/y POK2
.line/e2 LDZ2 .line/dx LDZ2 GTS2 ,&skipx JCN
.line/e1 LDZ2 .line/dx LDZ2 ADD2 .line/e1 STZ2
.line/y LDZ2 .line/sy LDZ2 ADD2 .line/y STZ2
&skipx
;&loop JMP2
@ -72,20 +72,20 @@ RTN
@line-rect ( x1 y1 x2 y2 color -- )
( load ) .color POK DUP2 STH2 -- .rect/y2 POK2 -- .rect/x2 POK2 DUP2 STH2 .rect/y1 POK2 .rect/x1 POK2
( load ) .color STZ DUP2 STH2 -- .rect/y2 STZ2 -- .rect/x2 STZ2 DUP2 STH2 .rect/y1 STZ2 .rect/x1 STZ2
STH2r STH2r
&ver
( save ) OVR2 .Screen/y DEO2
( draw ) .rect/x1 PEK2 .Screen/x DEO2 .color PEK DUP .Screen/color DEO
( draw ) .rect/x2 PEK2 .Screen/x DEO2 .Screen/color DEO
( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ DUP .Screen/color DEO
( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .Screen/color DEO
( incr ) SWP2 ++ SWP2
OVR2 OVR2 LTS2 ,&ver JCN
POP2 POP2
.rect/x1 PEK2 .rect/x2 PEK2
.rect/x1 LDZ2 .rect/x2 LDZ2
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .rect/y1 PEK2 .Screen/y DEO2 .color PEK DUP .Screen/color DEO
( draw ) .rect/y2 PEK2 .Screen/y DEO2 .Screen/color DEO
( draw ) .rect/y1 LDZ2 .Screen/y DEO2 .color LDZ DUP .Screen/color DEO
( draw ) .rect/y2 LDZ2 .Screen/y DEO2 .Screen/color DEO
( incr ) SWP2 ++ SWP2
OVR2 OVR2 ++ LTS2 ,&hor JCN
POP2 POP2
@ -94,14 +94,14 @@ RTN
@fill-rect ( x1 y1 x2 y2 color -- )
.color POK
.color STZ
( x1 x2 y1 y2 ) ROT2 SWP2
&ver
( save ) OVR2 .Screen/y DEO2
STH2 STH2 OVR2 OVR2
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 ++ SWP2
OVR2 OVR2 LTS2 ,&hor JCN
POP2 POP2 STH2r STH2r
@ -113,44 +113,44 @@ RTN
@draw-circle ( xc yc r color -- )
( load ) .color POK .circle/r POK2 .circle/yc POK2 .circle/xc POK2
#0000 .circle/x POK2 .circle/r PEK2 .circle/y POK2
.circle/r PEK2 #0002 MUL2 .circle/d POK2
( load ) .color STZ .circle/r STZ2 .circle/yc STZ2 .circle/xc STZ2
#0000 .circle/x STZ2 .circle/r LDZ2 .circle/y STZ2
.circle/r LDZ2 #0002 MUL2 .circle/d STZ2
( draw ) ;&seg JSR2
&loop
( incr ) .circle/x PEK2 ++ .circle/x POK2
.circle/d PEK2 #0001 LTS2 ,&else JCN
( decr ) .circle/y PEK2 -- .circle/y POK2
.circle/x PEK2 .circle/y PEK2 SUB2 #0004 MUL2 .circle/d PEK2 ADD2 .circle/d POK2
( incr ) .circle/x LDZ2 ++ .circle/x STZ2
.circle/d LDZ2 #0001 LTS2 ,&else JCN
( decr ) .circle/y LDZ2 -- .circle/y STZ2
.circle/x LDZ2 .circle/y LDZ2 SUB2 #0004 MUL2 .circle/d LDZ2 ADD2 .circle/d STZ2
;&end JMP2
&else
.circle/x PEK2 #0004 MUL2 .circle/d PEK2 ADD2 .circle/d POK2
.circle/x LDZ2 #0004 MUL2 .circle/d LDZ2 ADD2 .circle/d STZ2
&end
( draw ) ;&seg JSR2
.circle/y PEK2 .circle/x PEK2 -- GTS2 ,&loop JCN
.circle/y LDZ2 .circle/x LDZ2 -- GTS2 ,&loop JCN
RTN
&seg
.circle/xc PEK2 .circle/x PEK2 ADD2 .Screen/x DEO2 .circle/yc PEK2 .circle/y PEK2 ADD2 .Screen/y DEO2 .color PEK .Screen/color DEO
.circle/xc PEK2 .circle/x PEK2 SUB2 .Screen/x DEO2 .circle/yc PEK2 .circle/y PEK2 ADD2 .Screen/y DEO2 .color PEK .Screen/color DEO
.circle/xc PEK2 .circle/x PEK2 ADD2 .Screen/x DEO2 .circle/yc PEK2 .circle/y PEK2 SUB2 .Screen/y DEO2 .color PEK .Screen/color DEO
.circle/xc PEK2 .circle/x PEK2 SUB2 .Screen/x DEO2 .circle/yc PEK2 .circle/y PEK2 SUB2 .Screen/y DEO2 .color PEK .Screen/color DEO
.circle/xc PEK2 .circle/y PEK2 ADD2 .Screen/x DEO2 .circle/yc PEK2 .circle/x PEK2 ADD2 .Screen/y DEO2 .color PEK .Screen/color DEO
.circle/xc PEK2 .circle/y PEK2 SUB2 .Screen/x DEO2 .circle/yc PEK2 .circle/x PEK2 ADD2 .Screen/y DEO2 .color PEK .Screen/color DEO
.circle/xc PEK2 .circle/y PEK2 ADD2 .Screen/x DEO2 .circle/yc PEK2 .circle/x PEK2 SUB2 .Screen/y DEO2 .color PEK .Screen/color DEO
.circle/xc PEK2 .circle/y PEK2 SUB2 .Screen/x DEO2 .circle/yc PEK2 .circle/x PEK2 SUB2 .Screen/y DEO2 .color PEK .Screen/color DEO
.circle/xc LDZ2 .circle/x LDZ2 ADD2 .Screen/x DEO2 .circle/yc LDZ2 .circle/y LDZ2 ADD2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.circle/xc LDZ2 .circle/x LDZ2 SUB2 .Screen/x DEO2 .circle/yc LDZ2 .circle/y LDZ2 ADD2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.circle/xc LDZ2 .circle/x LDZ2 ADD2 .Screen/x DEO2 .circle/yc LDZ2 .circle/y LDZ2 SUB2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.circle/xc LDZ2 .circle/x LDZ2 SUB2 .Screen/x DEO2 .circle/yc LDZ2 .circle/y LDZ2 SUB2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.circle/xc LDZ2 .circle/y LDZ2 ADD2 .Screen/x DEO2 .circle/yc LDZ2 .circle/x LDZ2 ADD2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.circle/xc LDZ2 .circle/y LDZ2 SUB2 .Screen/x DEO2 .circle/yc LDZ2 .circle/x LDZ2 ADD2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.circle/xc LDZ2 .circle/y LDZ2 ADD2 .Screen/x DEO2 .circle/yc LDZ2 .circle/x LDZ2 SUB2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.circle/xc LDZ2 .circle/y LDZ2 SUB2 .Screen/x DEO2 .circle/yc LDZ2 .circle/x LDZ2 SUB2 .Screen/y DEO2 .color LDZ .Screen/color DEO
RTN
@cover-pattern ( addr color -- )
( load ) .color POK .Screen/addr DEO2
( load ) .color STZ .Screen/addr DEO2
#0000 .Screen/height DEI2
&ver
( save ) OVR2 .Screen/y DEO2
#0000 .Screen/width DEI2
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 8+ SWP2
OVR2 OVR2 LTH2 ,&hor JCN
POP2 POP2

View file

@ -11,10 +11,10 @@
|0100 ( -> )
#90ff .System/r DEO2 #9000 .System/g DEO2 #900f .System/b DEO2
#08e0 .Screen/width DEI2 #0001 SFT2 SUB2 .scroll/x POK2
#09b0 .scroll/y POK2
#08e0 .Screen/width DEI2 #0001 SFT2 SUB2 .scroll/x STZ2
#09b0 .scroll/y STZ2
;frame .Screen/vector DEO2
#30 .scroll/wait POK
#30 .scroll/wait STZ
BRK
@frame ( -> )
@ -24,22 +24,22 @@
#0001 ADD2
DUP2 .Screen/height DEI2 LTH2 ,&loop JCN
POP2
.scroll/wait PEK ,&noscroll JCN
.scroll/y PEK2 #0001 ADD2 .scroll/y POK2
.scroll/wait LDZ ,&noscroll JCN
.scroll/y LDZ2 #0001 ADD2 .scroll/y STZ2
BRK
&noscroll
.scroll/wait PEK #01 SUB .scroll/wait POK
.scroll/wait LDZ #01 SUB .scroll/wait STZ
BRK
@row ( y* -- )
DUP2 .Screen/y DEO2
.scroll/y PEK2 ADD2
.scroll/y LDZ2 ADD2
.Screen/width DEI2
&loop
#0001 SUB2
OVR2 OVR2 .scroll/x PEK2 ADD2 EOR2 DUP2 #0013 DIV2 #0013 MUL2 SUB2
OVR2 OVR2 .scroll/x LDZ2 ADD2 EOR2 DUP2 #0013 DIV2 #0013 MUL2 SUB2
DUP #00 EQU ,&draw JCN
DUP #05 EQU ,&draw JCN
POP2

View file

@ -426,7 +426,7 @@
;asma-parse-hex-string JSR2
,&valid JCN
;asma-msg-hex ;asma/error POK2
;asma-msg-hex ;asma/error STZ2
JMP2r
&valid
@ -732,8 +732,8 @@
&JCN $2 $2 "JCN 00
&JSR :&JMP :&LDR "JSR 00
&STH :&SFT :&SUB "STH 00
&PEK :&OVR :&POK "PEK 00
&POK $2 $2 "POK 00
&LDZ :&OVR :&STZ "LDZ 00
&STZ $2 $2 "STZ 00
&LDR :&LDA :&LIT "LDR 00
&STR $2 $2 "STR 00
&LDA $2 $2 "LDA 00
@ -745,7 +745,7 @@
&MUL $2 $2 "MUL 00
&DIV $2 $2 "DIV 00
&AND :&ADD $2 "AND 00
&ORA :&NEQ :&PEK "ORA 00
&ORA :&NEQ :&LDZ "ORA 00
&EOR $2 $2 "EOR 00
&SFT :&ROT :&STA "SFT 00

View file

@ -66,7 +66,7 @@
;filepath ;load-file JSR2
( place textarea )
#0018 .textarea/x1 POK2 .Screen/height DEI2 8- .textarea/y2 POK2
#0018 .textarea/x1 STZ2 .Screen/height DEI2 8- .textarea/y2 STZ2
;select JSR2
;redraw JSR2
@ -79,13 +79,13 @@ BRK
.Controller/button DEI #0f AND #02 NEQ ,&no-alt JCN
.Controller/button DEI #04 SFT
DUP #01 NEQ ,&no-aup JCN
( sel word ) ;find-wordstart JSR2 .selection/to POK2 &no-aup
( sel word ) ;find-wordstart JSR2 .selection/to STZ2 &no-aup
DUP #02 NEQ ,&no-adown JCN
( sel word ) ;find-wordend JSR2 .selection/to POK2 &no-adown
( sel word ) ;find-wordend JSR2 .selection/to STZ2 &no-adown
DUP #04 NEQ ,&no-aleft JCN
( sel decr ) .selection/to PEK2 -- .selection/to POK2 &no-aleft
( sel decr ) .selection/to LDZ2 -- .selection/to STZ2 &no-aleft
DUP #08 NEQ ,&no-aright JCN
( sel incr ) .selection/to PEK2 ++ .selection/to POK2 &no-aright
( sel incr ) .selection/to LDZ2 ++ .selection/to STZ2 &no-aright
POP
;clamp-selection JSR2
;redraw JSR2
@ -112,20 +112,20 @@ BRK
.Controller/button DEI #f0 AND #00 EQU ;&no-arrow JCN2
.Controller/button DEI #f0 AND
DUP #10 NEQ ,&no-arrowup JCN
( clamp ) .position/y PEK2 #0000 EQU2 ,&no-arrowup JCN
;find-lineoffset JSR2 .position/x POK2 .position/y PEK2 -- .position/y POK2
;find-selection JSR2 DUP2 .selection/from POK2 ++ .selection/to POK2 &no-arrowup
( clamp ) .position/y LDZ2 #0000 EQU2 ,&no-arrowup JCN
;find-lineoffset JSR2 .position/x STZ2 .position/y LDZ2 -- .position/y STZ2
;find-selection JSR2 DUP2 .selection/from STZ2 ++ .selection/to STZ2 &no-arrowup
DUP #20 NEQ ,&no-arrowdown JCN
( clamp:TODO )
;find-lineoffset JSR2 .position/x POK2 .position/y PEK2 ++ .position/y POK2
;find-selection JSR2 DUP2 .selection/from POK2 ++ .selection/to POK2 &no-arrowdown
;find-lineoffset JSR2 .position/x STZ2 .position/y LDZ2 ++ .position/y STZ2
;find-selection JSR2 DUP2 .selection/from STZ2 ++ .selection/to STZ2 &no-arrowdown
DUP #40 NEQ ,&no-arrowleft JCN
( clamp ) .selection/from PEK2 ;document/body EQU2 ,&no-arrowleft JCN
.selection/from PEK2 -- DUP2 .selection/from POK2 ++ .selection/to POK2 &no-arrowleft
( clamp ) .selection/from LDZ2 ;document/body EQU2 ,&no-arrowleft JCN
.selection/from LDZ2 -- DUP2 .selection/from STZ2 ++ .selection/to STZ2 &no-arrowleft
DUP #80 NEQ ,&no-arrowright JCN
( clamp:TODO )
#aa .Console/byte DEO
.selection/from PEK2 ++ DUP2 .selection/from POK2 ++ .selection/to POK2 &no-arrowright
.selection/from LDZ2 ++ DUP2 .selection/from STZ2 ++ .selection/to STZ2 &no-arrowright
POP
;clamp-selection JSR2
;follow-selection JSR2
@ -134,24 +134,24 @@ BRK
.Controller/key DEI #08 NEQ ,&no-backspace JCN
( erase )
.selection/to PEK2 .selection/from PEK2 SUB2 #0001 NEQ2 ,&erase-multiple JCN
.selection/to PEK2 .selection/from PEK2 SUB2 ;shift-left JSR2
.selection/to LDZ2 .selection/from LDZ2 SUB2 #0001 NEQ2 ,&erase-multiple JCN
.selection/to LDZ2 .selection/from LDZ2 SUB2 ;shift-left JSR2
;&erase-end JMP2
&erase-multiple
.selection/from PEK2 ++ .selection/from POK2
.selection/to PEK2 .selection/from PEK2 SUB2 ++ ;shift-left JSR2
.selection/from LDZ2 ++ .selection/from STZ2
.selection/to LDZ2 .selection/from LDZ2 SUB2 ++ ;shift-left JSR2
&erase-end
.selection/from PEK2 -- .selection/from POK2
.selection/from PEK2 ++ .selection/to POK2
.selection/from LDZ2 -- .selection/from STZ2
.selection/from LDZ2 ++ .selection/to STZ2
;redraw JSR2
BRK
&no-backspace
( insert )
.selection/to PEK2 .selection/from PEK2 SUB2 ;shift-right JSR2
.Controller/key DEI .selection/from PEK2 STA
.selection/from PEK2 ++ .selection/from POK2
.selection/from PEK2 ++ .selection/to POK2
.selection/to LDZ2 .selection/from LDZ2 SUB2 ;shift-right JSR2
.Controller/key DEI .selection/from LDZ2 STA
.selection/from LDZ2 ++ .selection/from STZ2
.selection/from LDZ2 ++ .selection/to STZ2
;redraw JSR2
BRK
@ -164,7 +164,7 @@ BRK
;touch-scrollbar JMP2
&touch-end
.Mouse/state DEI .touch/state POK
.Mouse/state DEI .touch/state STZ
;draw-cursor JSR2
@ -172,9 +172,9 @@ BRK
@touch-linebar ( -- )
#0000 .position/x POK2
.Mouse/y DEI2 8/ .scroll/y PEK2 ADD2 .position/y POK2
;find-selection JSR2 DUP2 .selection/from POK2 ++ .selection/to POK2
#0000 .position/x STZ2
.Mouse/y DEI2 8/ .scroll/y LDZ2 ADD2 .position/y STZ2
;find-selection JSR2 DUP2 .selection/from STZ2 ++ .selection/to STZ2
;goto-linestart JSR2
;redraw JSR2
;draw-cursor JSR2
@ -183,8 +183,8 @@ BRK
@touch-body ( -- )
.Mouse/y DEI2 8/ .scroll/y PEK2 ADD2 .position/y POK2
.Mouse/x DEI2 .textarea/x1 PEK2 SUB2 #0007 ADD2 #0007 DIV2 .position/x POK2
.Mouse/y DEI2 8/ .scroll/y LDZ2 ADD2 .position/y STZ2
.Mouse/x DEI2 .textarea/x1 LDZ2 SUB2 #0007 ADD2 #0007 DIV2 .position/x STZ2
( chords )
.Mouse/chord DEI #00 EQU ,&no-chords JCN
.Mouse/chord DEI
@ -197,16 +197,16 @@ BRK
BRK
&no-chords
( drag )
.Mouse/state DEI .touch/state PEK NEQ .Controller/button DEI #0f AND #02 NEQ #0101 EQU2 ,&no-drag JCN
.Mouse/state DEI .touch/state LDZ NEQ .Controller/button DEI #0f AND #02 NEQ #0101 EQU2 ,&no-drag JCN
( on drag )
;find-selection JSR2 ++ .selection/to POK2
;find-selection JSR2 ++ .selection/to STZ2
;clamp-selection JSR2
,&end JMP
&no-drag
( on click )
;find-selection JSR2 DUP2 .selection/from POK2 ++ .selection/to POK2
;find-selection JSR2 DUP2 .selection/from STZ2 ++ .selection/to STZ2
&end
.Mouse/state DEI .touch/state POK
.Mouse/state DEI .touch/state STZ
;draw-cursor JSR2
;redraw JSR2
@ -215,16 +215,16 @@ BRK
@touch-scrollbar ( -- )
.Mouse/y DEI2 #0008 GTH2 ,&no-up JCN
( decr ) .scroll/y PEK2 #00 .scroll/y PEK2 #0000 NEQ2 SUB2 .scroll/y POK2
( decr ) .scroll/y LDZ2 #00 .scroll/y LDZ2 #0000 NEQ2 SUB2 .scroll/y STZ2
,&end JMP
&no-up
.Mouse/y DEI2 .Screen/height DEI2 8- LTH2 ,&no-down JCN
( incr ) .scroll/y PEK2 ++ .scroll/y POK2
( incr ) .scroll/y LDZ2 ++ .scroll/y STZ2
,&end JMP
&no-down
.Mouse/y DEI2 8- .scroll/y POK2
.Mouse/y DEI2 8- .scroll/y STZ2
&end
.Mouse/state DEI .touch/state POK
.Mouse/state DEI .touch/state STZ
;draw-cursor JSR2
;redraw JSR2
@ -243,205 +243,205 @@ RTN
@scroll-up ( length -- )
DUP2 .scroll/y PEK2 LTH2 ,&clamp JCN
#0000 .scroll/y POK2 POP2 RTN
DUP2 .scroll/y LDZ2 LTH2 ,&clamp JCN
#0000 .scroll/y STZ2 POP2 RTN
&clamp
.scroll/y PEK2 SWP2 SUB2 .scroll/y POK2
.scroll/y LDZ2 SWP2 SUB2 .scroll/y STZ2
RTN
@scroll-down ( length -- )
( TODO: Clamp )
.scroll/y PEK2 SWP2 ADD2 .scroll/y POK2
.scroll/y LDZ2 SWP2 ADD2 .scroll/y STZ2
RTN
@shift-left ( length -- )
.i POK2
.selection/from PEK2 -- .j POK2 ( start -> end )
.i STZ2
.selection/from LDZ2 -- .j STZ2 ( start -> end )
&loop
( move ) .j PEK2 .i PEK2 ADD2 LDA .j PEK2 STA
( incr ) .j PEK2 ++ .j POK2
.j PEK2 ;document/eof LDA2 LTH2 ,&loop JCN
;document/eof LDA2 .i PEK2 SUB2 ;document/eof STA2
( move ) .j LDZ2 .i LDZ2 ADD2 LDA .j LDZ2 STA
( incr ) .j LDZ2 ++ .j STZ2
.j LDZ2 ;document/eof LDA2 LTH2 ,&loop JCN
;document/eof LDA2 .i LDZ2 SUB2 ;document/eof STA2
RTN
@shift-right ( length -- )
.i POK2
;document/eof LDA2 .j POK2 ( end -> start )
.i STZ2
;document/eof LDA2 .j STZ2 ( end -> start )
&loop
( move ) .j PEK2 .i PEK2 SUB2 LDA .j PEK2 STA
( decr ) .j PEK2 -- .j POK2
.j PEK2 .selection/from PEK2 GTH2 ,&loop JCN
;document/eof LDA2 .i PEK2 ADD2 ;document/eof STA2
( move ) .j LDZ2 .i LDZ2 SUB2 LDA .j LDZ2 STA
( decr ) .j LDZ2 -- .j STZ2
.j LDZ2 .selection/from LDZ2 GTH2 ,&loop JCN
;document/eof LDA2 .i LDZ2 ADD2 ;document/eof STA2
RTN
@follow-selection ( -- )
.position/y PEK2 .scroll/y PEK2 GTH2 ,&no-up JCN
.position/y PEK2 .scroll/y POK2 RTN
.position/y LDZ2 .scroll/y LDZ2 GTH2 ,&no-up JCN
.position/y LDZ2 .scroll/y STZ2 RTN
&no-up
.position/y PEK2 .Screen/height DEI2 #0010 SUB2 8/ .scroll/y PEK2 ADD2 LTH2 ,&no-down JCN
.position/y PEK2 .Screen/height DEI2 #0010 SUB2 8/ SUB2 .scroll/y POK2 RTN
.position/y LDZ2 .Screen/height DEI2 #0010 SUB2 8/ .scroll/y LDZ2 ADD2 LTH2 ,&no-down JCN
.position/y LDZ2 .Screen/height DEI2 #0010 SUB2 8/ SUB2 .scroll/y STZ2 RTN
&no-down
RTN
@clamp-selection ( -- )
.selection/from PEK2 .selection/to PEK2 LTH2 RTN?
.selection/from PEK2 ++ .selection/to POK2
.selection/from LDZ2 .selection/to LDZ2 LTH2 RTN?
.selection/from LDZ2 ++ .selection/to STZ2
RTN
@goto-linestart ( -- )
&loop
.selection/from PEK2 -- LDA #0a EQU RTN?
.selection/from PEK2 -- LDA #0d EQU RTN?
( decr ) .selection/from PEK2 DUP2 .selection/to POK2 -- .selection/from POK2
.selection/from PEK2 LDA #00 NEQ ,&loop JCN
.selection/from LDZ2 -- LDA #0a EQU RTN?
.selection/from LDZ2 -- LDA #0d EQU RTN?
( decr ) .selection/from LDZ2 DUP2 .selection/to STZ2 -- .selection/from STZ2
.selection/from LDZ2 LDA #00 NEQ ,&loop JCN
( clamp at document body )
.selection/from PEK2 ;document/body GTH2 RTN?
;document/body DUP2 .selection/from POK2 ++ .selection/to POK2
.selection/from LDZ2 ;document/body GTH2 RTN?
;document/body DUP2 .selection/from STZ2 ++ .selection/to STZ2
RTN
@goto-lineend ( -- )
&loop
.selection/from PEK2 LDA #0a EQU RTN?
.selection/from PEK2 LDA #0d EQU RTN?
( incr ) .selection/from PEK2 ++ DUP2 ++ .selection/to POK2 .selection/from POK2
.selection/from PEK2 LDA #00 NEQ ,&loop JCN
.selection/from LDZ2 LDA #0a EQU RTN?
.selection/from LDZ2 LDA #0d EQU RTN?
( incr ) .selection/from LDZ2 ++ DUP2 ++ .selection/to STZ2 .selection/from STZ2
.selection/from LDZ2 LDA #00 NEQ ,&loop JCN
( clamp at document body )
.selection/from PEK2 ;document/eof LTH2 RTN?
;document/eof -- DUP2 .selection/from POK2 ++ .selection/to POK2
.selection/from LDZ2 ;document/eof LTH2 RTN?
;document/eof -- DUP2 .selection/from STZ2 ++ .selection/to STZ2
RTN
@find-wordstart ( -- )
.selection/to PEK2 .j POK2
.selection/to LDZ2 .j STZ2
&loop
( decr ) .j PEK2 -- .j POK2
.j PEK2 LDA #20 EQU ,&end JCN
.j PEK2 LDA #0a EQU ,&end JCN
.j PEK2 LDA #0d EQU ,&end JCN
.j PEK2 ;document/body GTH2 ,&loop JCN
( decr ) .j LDZ2 -- .j STZ2
.j LDZ2 LDA #20 EQU ,&end JCN
.j LDZ2 LDA #0a EQU ,&end JCN
.j LDZ2 LDA #0d EQU ,&end JCN
.j LDZ2 ;document/body GTH2 ,&loop JCN
&end
( return ) .j PEK2 --
( return ) .j LDZ2 --
RTN
@find-wordend ( -- )
.selection/to PEK2 .j POK2
.selection/to LDZ2 .j STZ2
&loop
( incr ) .j PEK2 ++ .j POK2
.j PEK2 LDA #20 EQU ,&end JCN
.j PEK2 LDA #0a EQU ,&end JCN
.j PEK2 LDA #0d EQU ,&end JCN
.j PEK2 ;document/body GTH2 ,&loop JCN
( incr ) .j LDZ2 ++ .j STZ2
.j LDZ2 LDA #20 EQU ,&end JCN
.j LDZ2 LDA #0a EQU ,&end JCN
.j LDZ2 LDA #0d EQU ,&end JCN
.j LDZ2 ;document/body GTH2 ,&loop JCN
&end
( return ) .j PEK2 ++
( return ) .j LDZ2 ++
RTN
@find-lineoffset ( return character offset from linestart )
#0000 .j POK2
#0000 .j STZ2
&loop
( incr ) .j PEK2 ++ .j POK2
.selection/from PEK2 .j PEK2 SUB2 LDA #0a EQU ,&end JCN
.selection/from PEK2 .j PEK2 SUB2 LDA #0d EQU ,&end JCN
.selection/from PEK2 .j PEK2 SUB2 ;document/body GTH2 ,&loop JCN
( incr ) .j LDZ2 ++ .j STZ2
.selection/from LDZ2 .j LDZ2 SUB2 LDA #0a EQU ,&end JCN
.selection/from LDZ2 .j LDZ2 SUB2 LDA #0d EQU ,&end JCN
.selection/from LDZ2 .j LDZ2 SUB2 ;document/body GTH2 ,&loop JCN
&end
( return ) .j PEK2
( return ) .j LDZ2
RTN
@find-line ( position -> addr )
;document/body .j POK2 #0000 .pt/y POK2
;document/body .j STZ2 #0000 .pt/y STZ2
&loop
.pt/y PEK2 .position/y PEK2 -- GTH2 ,&end JCN
.j PEK2 LDA #0a NEQ .j PEK2 LDA #0d NEQ #0101 EQU2 ,&no-space JCN
( incr ) .pt/y PEK2 ++ .pt/y POK2
.pt/y LDZ2 .position/y LDZ2 -- GTH2 ,&end JCN
.j LDZ2 LDA #0a NEQ .j LDZ2 LDA #0d NEQ #0101 EQU2 ,&no-space JCN
( incr ) .pt/y LDZ2 ++ .pt/y STZ2
&no-space
( incr ) .j PEK2 ++ .j POK2
.j PEK2 LDA #00 NEQ ,&loop JCN
( incr ) .j LDZ2 ++ .j STZ2
.j LDZ2 LDA #00 NEQ ,&loop JCN
&end
( return ) .j PEK2
( return ) .j LDZ2
RTN
@find-selection ( position -> addr )
;find-line JSR2 ( find line )
#0000 .pt/x POK2
#0000 .pt/x STZ2
&loop
.j PEK2 .pt/x PEK2 ADD2 LDA #0a EQU ,&end JCN
.j PEK2 .pt/x PEK2 ADD2 LDA #0d EQU ,&end JCN
( incr ) .pt/x PEK2 ++ .pt/x POK2
.pt/x PEK2 .position/x PEK2 -- LTH2 ,&loop JCN
.j LDZ2 .pt/x LDZ2 ADD2 LDA #0a EQU ,&end JCN
.j LDZ2 .pt/x LDZ2 ADD2 LDA #0d EQU ,&end JCN
( incr ) .pt/x LDZ2 ++ .pt/x STZ2
.pt/x LDZ2 .position/x LDZ2 -- LTH2 ,&loop JCN
&end
( return ) .pt/x PEK2 ADD2
( return ) .pt/x LDZ2 ADD2
RTN
@cut ( -- )
;copy JSR2
.selection/to PEK2 .selection/from PEK2 SUB2 ;shift-left JSR2
.selection/from PEK2 ++ .selection/to POK2
.selection/to LDZ2 .selection/from LDZ2 SUB2 ;shift-left JSR2
.selection/from LDZ2 ++ .selection/to STZ2
RTN
@copy ( -- )
#0000 .i POK2 ( start )
.selection/to PEK2 .selection/from PEK2 SUB2 .j POK2 ( end )
.j PEK2 ;clip/len STA2
#0000 .i STZ2 ( start )
.selection/to LDZ2 .selection/from LDZ2 SUB2 .j STZ2 ( end )
.j LDZ2 ;clip/len STA2
&loop
.selection/from PEK2 .i PEK2 ADD2 LDA ;clip/body .i PEK2 ADD2 STA
( incr ) .i PEK2 ++ .i POK2
.i PEK2 .j PEK2 LTH2 ,&loop JCN
.selection/from LDZ2 .i LDZ2 ADD2 LDA ;clip/body .i LDZ2 ADD2 STA
( incr ) .i LDZ2 ++ .i STZ2
.i LDZ2 .j LDZ2 LTH2 ,&loop JCN
RTN
@paste ( -- )
;clip/len LDA2 ;shift-right JSR2
#0000 .i POK2 ( start )
;clip/len LDA2 .j POK2 ( end )
#0000 .i STZ2 ( start )
;clip/len LDA2 .j STZ2 ( end )
&loop
;clip/body .i PEK2 ADD2 LDA .selection/from PEK2 .i PEK2 ADD2 STA
( incr ) .i PEK2 ++ .i POK2
.i PEK2 .j PEK2 LTH2 ,&loop JCN
;clip/body .i LDZ2 ADD2 LDA .selection/from LDZ2 .i LDZ2 ADD2 STA
( incr ) .i LDZ2 ++ .i STZ2
.i LDZ2 .j LDZ2 LTH2 ,&loop JCN
RTN
@select ( position -> selection )
;document/body .selection/from POK2 #0000 .pt/x POK2 #0000 .pt/y POK2
;document/body .selection/from STZ2 #0000 .pt/x STZ2 #0000 .pt/y STZ2
&loop
.selection/from PEK2 LDA #0a NEQ .selection/from PEK2 LDA #0d NEQ #0101 EQU2 ,&no-space JCN
( incr ) .pt/y PEK2 ++ .pt/y POK2
#0000 .pt/x POK2
.selection/from LDZ2 LDA #0a NEQ .selection/from LDZ2 LDA #0d NEQ #0101 EQU2 ,&no-space JCN
( incr ) .pt/y LDZ2 ++ .pt/y STZ2
#0000 .pt/x STZ2
&no-space
.pt/y PEK2 .position/y PEK2 -- GTH2 .pt/x PEK2 .position/x PEK2 -- GTH2 #0101 NEQ2 ,&no-reached JCN
.selection/from PEK2 ++ .selection/to POK2
.pt/y LDZ2 .position/y LDZ2 -- GTH2 .pt/x LDZ2 .position/x LDZ2 -- GTH2 #0101 NEQ2 ,&no-reached JCN
.selection/from LDZ2 ++ .selection/to STZ2
RTN
&no-reached
( incr ) .pt/x PEK2 ++ .pt/x POK2
( incr ) .selection/from PEK2 ++ .selection/from POK2
.selection/from PEK2 LDA #00 NEQ ,&loop JCN
( incr ) .pt/x LDZ2 ++ .pt/x STZ2
( incr ) .selection/from LDZ2 ++ .selection/from STZ2
.selection/from LDZ2 LDA #00 NEQ ,&loop JCN
RTN
@ -476,7 +476,7 @@ RTN
@draw-short ( short )
.addr POK2
.addr STZ2
;font_hex #00 ;addr LDA #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
( draw ) #2e .Screen/color DEO
.Screen/x DEI2 8+ .Screen/x DEO2
@ -494,18 +494,18 @@ RTN
@draw-cursor
( clear last cursor )
.mouse/x PEK2 .Screen/x DEO2
.mouse/y PEK2 .Screen/y DEO2
.mouse/x LDZ2 .Screen/x DEO2
.mouse/y LDZ2 .Screen/y DEO2
;blank_icn .Screen/addr DEO2
#30 .Screen/color DEO
( record mouse positions )
.Mouse/x DEI2 .mouse/x POK2
.Mouse/y DEI2 .mouse/y POK2
.Mouse/x DEI2 .mouse/x STZ2
.Mouse/y DEI2 .mouse/y STZ2
( draw new cursor )
.mouse/x PEK2 .Screen/x DEO2
.mouse/y PEK2 .Screen/y DEO2
.mouse/x LDZ2 .Screen/x DEO2
.mouse/y LDZ2 .Screen/y DEO2
;cursor_icn .Screen/addr DEO2
#3f .Mouse/state DEI #01 EQU #0a MUL SUB .Screen/color DEO
@ -513,32 +513,32 @@ RTN
@draw-textarea ( x y color addr )
;document/body .textarea/addr POK2
;document/body .textarea/addr STZ2
( scroll to position )
#0000 .j POK2 ( j is linebreaks )
#0000 .j STZ2 ( j is linebreaks )
&find-offset
.scroll/y PEK2 .j PEK2 EQU2 ,&find-offset-end JCN
.textarea/addr PEK2 LDA #0a NEQ .textarea/addr PEK2 LDA #0d NEQ #0101 EQU2 ,&no-break JCN
( incr ) .j PEK2 ++ .j POK2 &no-break
( incr ) .textarea/addr PEK2 ++ .textarea/addr POK2
.textarea/addr PEK2 LDA #00 NEQ ,&find-offset JCN
.scroll/y LDZ2 .j LDZ2 EQU2 ,&find-offset-end JCN
.textarea/addr LDZ2 LDA #0a NEQ .textarea/addr LDZ2 LDA #0d NEQ #0101 EQU2 ,&no-break JCN
( incr ) .j LDZ2 ++ .j STZ2 &no-break
( incr ) .textarea/addr LDZ2 ++ .textarea/addr STZ2
.textarea/addr LDZ2 LDA #00 NEQ ,&find-offset JCN
&find-offset-end
#0018 .Screen/x DEO2 #0000 .Screen/y DEO2
.textarea/addr PEK2 .i POK2
.textarea/addr LDZ2 .i STZ2
&loop
.Screen/y DEI2 .Screen/height DEI2 #0010 SUB2 GTH2 ;&end JCN2
.i PEK2 LDA #0a NEQ .i PEK2 LDA #0d NEQ #0101 EQU2 ;&no-linebreak JCN2
.i LDZ2 LDA #0a NEQ .i LDZ2 LDA #0d NEQ #0101 EQU2 ;&no-linebreak JCN2
( draw linebreak )
;linebreak_icn .Screen/addr DEO2
( draw ) #02
.i PEK2 .selection/from PEK2 -- GTH2
.i PEK2 .selection/to PEK2 LTH2 #0101 EQU2
.i LDZ2 .selection/from LDZ2 -- GTH2
.i LDZ2 .selection/to LDZ2 LTH2 #0101 EQU2
#26 MUL ADD .Screen/color DEO
( fill clear )
&fill-clear
@ -549,13 +549,13 @@ RTN
( draw line number )
#0000 .Screen/x DEO2
.scroll/y PEK2 .Screen/y DEI2 8/ ADD2 DUP2 SWP POP .k POK
.position/y PEK2 EQU2 #05 MUL .l POK
;font_hex #00 .k PEK #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
#24 .l PEK ADD .Screen/color DEO
.scroll/y LDZ2 .Screen/y DEI2 8/ ADD2 DUP2 SWP POP .k STZ
.position/y LDZ2 EQU2 #05 MUL .l STZ
;font_hex #00 .k LDZ #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
#24 .l LDZ ADD .Screen/color DEO
#0008 .Screen/x DEO2
;font_hex #00 .k PEK #0f AND #08 MUL ADD2 .Screen/addr DEO2
#24 .l PEK ADD .Screen/color DEO
;font_hex #00 .k LDZ #0f AND #08 MUL ADD2 .Screen/addr DEO2
#24 .l LDZ ADD .Screen/color DEO
#0010 .Screen/x DEO2
( incr ) .Screen/y DEI2 8+ .Screen/y DEO2
@ -563,19 +563,19 @@ RTN
( get character )
;font #00 .i PEK2 LDA #20 SUB 8* ADD2 .Screen/addr DEO2
;font #00 .i LDZ2 LDA #20 SUB 8* ADD2 .Screen/addr DEO2
( is a special character )
.i PEK2 LDA #20 GTH ,&no-tab JCN ;font .Screen/addr DEO2 &no-tab
.i LDZ2 LDA #20 GTH ,&no-tab JCN ;font .Screen/addr DEO2 &no-tab
( draw ) #21
.i PEK2 .selection/from PEK2 -- GTH2
.i PEK2 .selection/to PEK2 LTH2 #0101 EQU2
.i LDZ2 .selection/from LDZ2 -- GTH2
.i LDZ2 .selection/to LDZ2 LTH2 #0101 EQU2
#05 MUL ADD .Screen/color DEO
( incr ) .i PEK2 ++ .i POK2
( incr ) .i LDZ2 ++ .i STZ2
( incr ) .Screen/x DEI2 #0007 ADD2 .Screen/x DEO2
.i PEK2 LDA #00 NEQ ;&loop JCN2
.i LDZ2 LDA #00 NEQ ;&loop JCN2
&end
@ -596,7 +596,7 @@ RTN
OVR2 OVR2 LTH2 ,&loop JCN
POP2 POP2
.scroll/y PEK2 8+ .Screen/y DEO2
.scroll/y LDZ2 8+ .Screen/y DEO2
DUP2 #0008 ADD2 .Screen/addr DEO2
( draw ) #21 .Screen/color DEO
@ -613,16 +613,16 @@ RTN
@draw-titlebar
#0018 .Screen/height DEI2 8- #29 ;filepath
( load ) .label/addr POK2 .label/color POK .Screen/y DEO2 .Screen/x DEO2
.label/addr PEK2
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2 .Screen/x DEO2
.label/addr LDZ2
&loop
( draw ) DUP2 LDA #00 SWP #20 SUB 8* ;font ADD2 .Screen/addr DEO2 .label/color PEK .Screen/color DEO
( draw ) DUP2 LDA #00 SWP #20 SUB 8* ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/color DEO
( incr ) ++
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
DUP2 LDA #00 NEQ ,&loop JCN
POP2
( selection )
.selection/from PEK2 ;document/body SUB2 ;draw-short JSR2
.selection/from LDZ2 ;document/body SUB2 ;draw-short JSR2
RTN

View file

@ -103,31 +103,31 @@
;on-transfer .File/vector DEO2
( set defaults )
#0130 .frame/width POK2
#00a8 .frame/height POK2
#01 .settings/brush POK
#32 .settings/ratio POK
#0130 .frame/width STZ2
#00a8 .frame/height STZ2
#01 .settings/brush STZ
#32 .settings/ratio STZ
.Screen/width DEI2 #0001 SFT2 .frame/width PEK2 #0001 SFT2 SUB2
.Screen/height DEI2 #0001 SFT2 .frame/height PEK2 #0001 SFT2 SUB2 #0010 ADD2
.frame/width PEK2 .frame/height PEK2
.Screen/width DEI2 #0001 SFT2 .frame/width LDZ2 #0001 SFT2 SUB2
.Screen/height DEI2 #0001 SFT2 .frame/height LDZ2 #0001 SFT2 SUB2 #0010 ADD2
.frame/width LDZ2 .frame/height LDZ2
SIZE-TO-RECT ;frame SET-RECT
.frame/x1 PEK2 #0010 ADD2 .bankview/x POK2
.frame/y1 PEK2 .bankview/y POK2
BANK .settings/page POK2
.frame/x1 LDZ2 #0010 ADD2 .bankview/x STZ2
.frame/y1 LDZ2 .bankview/y STZ2
BANK .settings/page STZ2
.frame/x2 PEK2 #0098 SUB2 .tileview/x POK2
.frame/y1 PEK2 .tileview/y POK2
BANK #0448 ADD2 .settings/tile POK2
.frame/x2 LDZ2 #0098 SUB2 .tileview/x STZ2
.frame/y1 LDZ2 .tileview/y STZ2
BANK #0448 ADD2 .settings/tile STZ2
.frame/x2 PEK2 #0010 SUB2 .frame/y1 PEK2 #0010 #0080 SIZE-TO-RECT ;dataview SET-RECT
.frame/x1 PEK2 #0010 ADD2 .frame/y2 PEK2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
.frame/x1 PEK2 #0060 ADD2 .frame/y2 PEK2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
.frame/x1 PEK2 #0038 ADD2 .frame/y2 PEK2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
.frame/x2 PEK2 #0098 SUB2 .frame/y1 PEK2 #0080 #0080 SIZE-TO-RECT ;editview SET-RECT
.frame/x2 LDZ2 #0010 SUB2 .frame/y1 LDZ2 #0010 #0080 SIZE-TO-RECT ;dataview SET-RECT
.frame/x1 LDZ2 #0010 ADD2 .frame/y2 LDZ2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
.frame/x1 LDZ2 #0060 ADD2 .frame/y2 LDZ2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
.frame/x1 LDZ2 #0038 ADD2 .frame/y2 LDZ2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
.frame/x2 LDZ2 #0098 SUB2 .frame/y1 LDZ2 #0080 #0080 SIZE-TO-RECT ;editview SET-RECT
#01 .settings/blending POK
#01 .settings/blending STZ
;filepath1 .File/name DEO2 #0800 .File/length DEO2 BANK .File/load DEO2
;filepath2 .File/name DEO2 #0800 .File/length DEO2 BANK #0800 ADD2 .File/load DEO2
@ -136,7 +136,7 @@
;filepath5 .File/name DEO2 #1000 .File/length DEO2 BANK #2800 ADD2 .File/load DEO2
;filepath6 .File/name DEO2 #1000 .File/length DEO2 BANK #3800 ADD2 .File/load DEO2
#40 DUP .bankview/selection POK ;select-tile JSR2
#40 DUP .bankview/selection STZ ;select-tile JSR2
BRK
@ -150,28 +150,28 @@ BRK
( skip ) .Controller/button DEI #00 NEQ #01 JCN [ BRK ]
.Controller/button DEI #11 NEQ ,&no-pageup JCN .settings/page PEK2
#0800 SUB2 .settings/page POK2
.Controller/button DEI #11 NEQ ,&no-pageup JCN .settings/page LDZ2
#0800 SUB2 .settings/page STZ2
;redraw JSR2
BRK &no-pageup
.Controller/button DEI #21 NEQ ,&no-pagedown JCN .settings/page PEK2
#0800 ADD2 .settings/page POK2
.Controller/button DEI #21 NEQ ,&no-pagedown JCN .settings/page LDZ2
#0800 ADD2 .settings/page STZ2
;redraw JSR2
BRK &no-pagedown
.Controller/button DEI #f0 AND
DUP #04 SFT #01 AND #01 NEQ ,&no-up JCN
( move ) .bankview/selection PEK #10 SUB .bankview/selection POK &no-up
( move ) .bankview/selection LDZ #10 SUB .bankview/selection STZ &no-up
DUP #05 SFT #01 AND #01 NEQ ,&no-down JCN
( move ) .bankview/selection PEK #10 ADD .bankview/selection POK &no-down
( move ) .bankview/selection LDZ #10 ADD .bankview/selection STZ &no-down
DUP #06 SFT #01 AND #01 NEQ ,&no-left JCN
( move ) .bankview/selection PEK #01 SUB .bankview/selection POK &no-left
( move ) .bankview/selection LDZ #01 SUB .bankview/selection STZ &no-left
DUP #07 SFT #01 AND #01 NEQ ,&no-right JCN
( move ) .bankview/selection PEK #01 ADD .bankview/selection POK &no-right
( move ) .bankview/selection LDZ #01 ADD .bankview/selection STZ &no-right
POP
.bankview/selection PEK ;select-tile JSR2
.bankview/selection LDZ ;select-tile JSR2
BRK
@ -182,13 +182,13 @@ BRK
( skip ) .Mouse/state DEI #00 NEQ #01 JCN [ BRK ]
( toolbar )
.Mouse/y DEI2 .bankview/y PEK2 #0010 SUB2 SUB2 #0008 DIV2 #0000 NEQ2 ;&no-toolbar-click JCN2
.Mouse/y DEI2 .bankview/y LDZ2 #0010 SUB2 SUB2 #0008 DIV2 #0000 NEQ2 ;&no-toolbar-click JCN2
( brush )
.Mouse/x DEI2 .bankview/x PEK2 SUB2 #0008 DIV2 #000d LTH2 ,&no-brush-click JCN
.Mouse/x DEI2 .bankview/x PEK2 SUB2 #0008 DIV2 #000f GTH2 ,&no-brush-click JCN
( select ) .mouse/x PEK2 .bankview/x PEK2 SUB2 #0008 DIV2 #000d SUB2 TOB .bankview/mode POK
.Mouse/x DEI2 .bankview/x LDZ2 SUB2 #0008 DIV2 #000d LTH2 ,&no-brush-click JCN
.Mouse/x DEI2 .bankview/x LDZ2 SUB2 #0008 DIV2 #000f GTH2 ,&no-brush-click JCN
( select ) .mouse/x LDZ2 .bankview/x LDZ2 SUB2 #0008 DIV2 #000d SUB2 TOB .bankview/mode STZ
&no-brush-click
.Mouse/x DEI2 .bankview/x PEK2 SUB2 #0008 DIV2 #0005 NEQ2 ,&no-toggle-depth JCN
.Mouse/x DEI2 .bankview/x LDZ2 SUB2 #0008 DIV2 #0005 NEQ2 ,&no-toggle-depth JCN
;toggle-depth JSR2
&no-toggle-depth
( release ) #00 .Mouse/state DEO
@ -196,77 +196,77 @@ BRK
&no-toolbar-click
( bankview )
.Mouse/x DEI2 .bankview/x PEK2 GTH2 .Mouse/x DEI2 .bankview/x PEK2 #0080 ADD2 LTH2 #0101 EQU2
.Mouse/y DEI2 .bankview/y PEK2 GTH2 .Mouse/y DEI2 .bankview/y PEK2 #0080 ADD2 LTH2 #0101 EQU2
.Mouse/x DEI2 .bankview/x LDZ2 GTH2 .Mouse/x DEI2 .bankview/x LDZ2 #0080 ADD2 LTH2 #0101 EQU2
.Mouse/y DEI2 .bankview/y LDZ2 GTH2 .Mouse/y DEI2 .bankview/y LDZ2 #0080 ADD2 LTH2 #0101 EQU2
#0101 EQU2 ;on-touch-bankview JCN2
( tileview )
.Mouse/x DEI2 .tileview/x PEK2 GTH2 .Mouse/x DEI2 .tileview/x PEK2 #0080 ADD2 LTH2 #0101 EQU2
.Mouse/y DEI2 .tileview/y PEK2 GTH2 .Mouse/y DEI2 .tileview/y PEK2 #0080 ADD2 LTH2 #0101 EQU2
.Mouse/x DEI2 .tileview/x LDZ2 GTH2 .Mouse/x DEI2 .tileview/x LDZ2 #0080 ADD2 LTH2 #0101 EQU2
.Mouse/y DEI2 .tileview/y LDZ2 GTH2 .Mouse/y DEI2 .tileview/y LDZ2 #0080 ADD2 LTH2 #0101 EQU2
#0101 EQU2 ;on-touch-tileview JCN2
( editview )
.Mouse/x DEI2 DUP2 .editview/x1 PEK2 GTH2 ROT ROT .editview/x2 PEK2 LTH2 #0101 EQU2
.Mouse/y DEI2 DUP2 .editview/y1 PEK2 GTH2 ROT ROT .editview/y2 PEK2 LTH2 #0101 EQU2
.Mouse/x DEI2 DUP2 .editview/x1 LDZ2 GTH2 ROT ROT .editview/x2 LDZ2 LTH2 #0101 EQU2
.Mouse/y DEI2 DUP2 .editview/y1 LDZ2 GTH2 ROT ROT .editview/y2 LDZ2 LTH2 #0101 EQU2
#0101 EQU2 ;on-touch-editview JCN2
( dataview )
.Mouse/x DEI2 DUP2 .dataview/x1 PEK2 GTH2 ROT ROT .dataview/x2 PEK2 LTH2 #0101 EQU2
.Mouse/y DEI2 DUP2 .dataview/y1 PEK2 GTH2 ROT ROT .dataview/y2 PEK2 LTH2 #0101 EQU2
.Mouse/x DEI2 DUP2 .dataview/x1 LDZ2 GTH2 ROT ROT .dataview/x2 LDZ2 LTH2 #0101 EQU2
.Mouse/y DEI2 DUP2 .dataview/y1 LDZ2 GTH2 ROT ROT .dataview/y2 LDZ2 LTH2 #0101 EQU2
#0101 EQU2 ;on-touch-dataview JCN2
( blendbiew )
.Mouse/x DEI2 DUP2 .blendview/x1 PEK2 GTH2 ROT ROT .blendview/x2 PEK2 LTH2 #0101 EQU2
.Mouse/y DEI2 DUP2 .blendview/y1 PEK2 GTH2 ROT ROT .blendview/y2 PEK2 LTH2 #0101 EQU2
.Mouse/x DEI2 DUP2 .blendview/x1 LDZ2 GTH2 ROT ROT .blendview/x2 LDZ2 LTH2 #0101 EQU2
.Mouse/y DEI2 DUP2 .blendview/y1 LDZ2 GTH2 ROT ROT .blendview/y2 LDZ2 LTH2 #0101 EQU2
#0101 EQU2 ;on-touch-blendview JCN2
( colorview )
.Mouse/x DEI2 DUP2 .colorview/x1 PEK2 GTH2 ROT ROT .colorview/x2 PEK2 LTH2 #0101 EQU2
.Mouse/y DEI2 DUP2 .colorview/y1 PEK2 GTH2 ROT ROT .colorview/y2 PEK2 LTH2 #0101 EQU2
.Mouse/x DEI2 DUP2 .colorview/x1 LDZ2 GTH2 ROT ROT .colorview/x2 LDZ2 LTH2 #0101 EQU2
.Mouse/y DEI2 DUP2 .colorview/y1 LDZ2 GTH2 ROT ROT .colorview/y2 LDZ2 LTH2 #0101 EQU2
#0101 EQU2 ;on-touch-colorview JCN2
( preview )
.Mouse/x DEI2 DUP2 .preview/x1 PEK2 GTH2 ROT ROT .preview/x2 PEK2 LTH2 #0101 EQU2
.Mouse/y DEI2 DUP2 .preview/y1 PEK2 GTH2 ROT ROT .preview/y2 PEK2 LTH2 #0101 EQU2
.Mouse/x DEI2 DUP2 .preview/x1 LDZ2 GTH2 ROT ROT .preview/x2 LDZ2 LTH2 #0101 EQU2
.Mouse/y DEI2 DUP2 .preview/y1 LDZ2 GTH2 ROT ROT .preview/y2 LDZ2 LTH2 #0101 EQU2
#0101 EQU2 ;on-touch-preview JCN2
BRK
@on-touch-bankview ( -> )
.bankview/mode PEK #01 NEQ ,&not-copy-mode JCN
#00 .i POK
.bankview/mode LDZ #01 NEQ ,&not-copy-mode JCN
#00 .i STZ
&copy-loop
( load ) .settings/tile PEK2 .i PEK ADD LDA
( load ) .settings/tile LDZ2 .i LDZ ADD LDA
( get touch addr )
.Mouse/x DEI2 .bankview/x PEK2 SUB2 STEP8
.Mouse/y DEI2 .bankview/y PEK2 SUB2 STEP8 #0010 MUL2 ADD2
( 2-bit mode ) #00 .settings/depth PEK #01 ADD MUL2
.settings/page PEK2 ADD2 #00 .i PEK ADD2 STA
( incr ) .i PEK #01 ADD .i POK
.i PEK #08 LTH ,&copy-loop JCN
.Mouse/x DEI2 .bankview/x LDZ2 SUB2 STEP8
.Mouse/y DEI2 .bankview/y LDZ2 SUB2 STEP8 #0010 MUL2 ADD2
( 2-bit mode ) #00 .settings/depth LDZ #01 ADD MUL2
.settings/page LDZ2 ADD2 #00 .i LDZ ADD2 STA
( incr ) .i LDZ #01 ADD .i STZ
.i LDZ #08 LTH ,&copy-loop JCN
;redraw JSR2 BRK
&not-copy-mode
.bankview/mode PEK #02 NEQ ,&not-erase-mode JCN
#00 .i POK
.bankview/mode LDZ #02 NEQ ,&not-erase-mode JCN
#00 .i STZ
&erase-loop
#00
( get touch addr )
.Mouse/x DEI2 .bankview/x PEK2 SUB2 STEP8
.Mouse/y DEI2 .bankview/y PEK2 SUB2 STEP8 #0010 MUL2 ADD2
( 2-bit mode ) #00 .settings/depth PEK #01 ADD MUL2
.settings/page PEK2 ADD2 #00 .i PEK ADD2 STA
( incr ) .i PEK #01 ADD .i POK
.i PEK #08 LTH ,&erase-loop JCN
.Mouse/x DEI2 .bankview/x LDZ2 SUB2 STEP8
.Mouse/y DEI2 .bankview/y LDZ2 SUB2 STEP8 #0010 MUL2 ADD2
( 2-bit mode ) #00 .settings/depth LDZ #01 ADD MUL2
.settings/page LDZ2 ADD2 #00 .i LDZ ADD2 STA
( incr ) .i LDZ #01 ADD .i STZ
.i LDZ #08 LTH ,&erase-loop JCN
;redraw JSR2 BRK
&not-erase-mode
( select )
.Mouse/x DEI2 .bankview/x PEK2 SUB2 #0008 DIV2 TOB
.Mouse/y DEI2 .bankview/y PEK2 SUB2 #0008 DIV2 TOB #40 SFT ADD
DUP .bankview/selection POK
.Mouse/x DEI2 .bankview/x LDZ2 SUB2 #0008 DIV2 TOB
.Mouse/y DEI2 .bankview/y LDZ2 SUB2 #0008 DIV2 TOB #40 SFT ADD
DUP .bankview/selection STZ
;select-tile JSR2
BRK
@ -284,8 +284,8 @@ BRK
@on-touch-dataview ( -> )
.Mouse/y DEI2 .dataview/y1 PEK2 SUB2 STEP8 TOB #60 EQU ,&skip JCN BRK &skip
.Mouse/x DEI2 .dataview/x1 PEK2 SUB2 #0008 DIV2 TOB
.Mouse/y DEI2 .dataview/y1 LDZ2 SUB2 STEP8 TOB #60 EQU ,&skip JCN BRK &skip
.Mouse/x DEI2 .dataview/x1 LDZ2 SUB2 #0008 DIV2 TOB
DUP #00 NEQ ,&no-move-up JCN
;op_shiftup JSR2
( release ) #00 .Mouse/state DEO
@ -300,9 +300,9 @@ BRK
@on-touch-blendview ( -> )
.Mouse/x DEI2 .blendview/x1 PEK2 SUB2 #0008 DIV2 TOB
.Mouse/y DEI2 .blendview/y1 PEK2 SUB2 #0008 DIV2 TOB #04 MUL ADD
.settings/blending POK
.Mouse/x DEI2 .blendview/x1 LDZ2 SUB2 #0008 DIV2 TOB
.Mouse/y DEI2 .blendview/y1 LDZ2 SUB2 #0008 DIV2 TOB #04 MUL ADD
.settings/blending STZ
( release ) #00 .Mouse/state DEO
;redraw JSR2
@ -310,10 +310,10 @@ BRK
@on-touch-colorview ( -> )
( channel ) .Mouse/y DEI2 .colorview/y1 PEK2 SUB2 #0008 DIV2 TOB STH
( rgb ) .Mouse/x DEI2 .colorview/x1 PEK2 SUB2 #0008 DIV2 TOB
( channel ) .Mouse/y DEI2 .colorview/y1 LDZ2 SUB2 #0008 DIV2 TOB STH
( rgb ) .Mouse/x DEI2 .colorview/x1 LDZ2 SUB2 #0008 DIV2 TOB
DUP #00 NEQ ,&no-brush JCN
DUPr STHr .settings/brush POK &no-brush
DUPr STHr .settings/brush STZ &no-brush
DUP #01 NEQ ,&no-red JCN
DUPr STHr .System/r ;set-color JSR2 &no-red
DUP #02 NEQ ,&no-green JCN
@ -328,11 +328,11 @@ BRK
@on-touch-preview ( -> )
( y ) .Mouse/y DEI2 .preview/y1 PEK2 SUB2 #0008 DIV2 TOB
( x ) .Mouse/x DEI2 .preview/x1 PEK2 SUB2 #0008 DIV2 TOB
( y ) .Mouse/y DEI2 .preview/y1 LDZ2 SUB2 #0008 DIV2 TOB
( x ) .Mouse/x DEI2 .preview/x1 LDZ2 SUB2 #0008 DIV2 TOB
#40 SFT ADD #11 ADD
.settings/ratio POK
.settings/ratio STZ
( release ) #00 .Mouse/state DEO
;redraw JSR2
@ -372,45 +372,45 @@ RTN
( x y ) DUP #0f AND SWP #04 SFT
( y ) #10 MOD #10 MUL #00 SWP #0008 MUL2
( x ) ROT #10 MOD #00 SWP #0008 MUL2 ADD2
( 2-bit mode ) #00 .settings/depth PEK #01 ADD MUL2
( offset ) .settings/page PEK2 ADD2 .settings/tile POK2
( 2-bit mode ) #00 .settings/depth LDZ #01 ADD MUL2
( offset ) .settings/page LDZ2 ADD2 .settings/tile STZ2
;redraw JSR2
RTN
@toggle-depth ( -- )
.bankview/selection PEK
.settings/depth PEK #00 EQU .settings/depth POK
.bankview/selection LDZ
.settings/depth LDZ #00 EQU .settings/depth STZ
;select-tile JSR2
RTN
@op_shiftup ( -- )
.settings/tile PEK2 LDA
.settings/tile PEK2 #0001 ADD2 LDA .settings/tile PEK2 STA
.settings/tile PEK2 #0002 ADD2 LDA .settings/tile PEK2 #0001 ADD2 STA
.settings/tile PEK2 #0003 ADD2 LDA .settings/tile PEK2 #0002 ADD2 STA
.settings/tile PEK2 #0004 ADD2 LDA .settings/tile PEK2 #0003 ADD2 STA
.settings/tile PEK2 #0005 ADD2 LDA .settings/tile PEK2 #0004 ADD2 STA
.settings/tile PEK2 #0006 ADD2 LDA .settings/tile PEK2 #0005 ADD2 STA
.settings/tile PEK2 #0007 ADD2 LDA .settings/tile PEK2 #0006 ADD2 STA
.settings/tile PEK2 #0007 ADD2 STA
.settings/tile LDZ2 LDA
.settings/tile LDZ2 #0001 ADD2 LDA .settings/tile LDZ2 STA
.settings/tile LDZ2 #0002 ADD2 LDA .settings/tile LDZ2 #0001 ADD2 STA
.settings/tile LDZ2 #0003 ADD2 LDA .settings/tile LDZ2 #0002 ADD2 STA
.settings/tile LDZ2 #0004 ADD2 LDA .settings/tile LDZ2 #0003 ADD2 STA
.settings/tile LDZ2 #0005 ADD2 LDA .settings/tile LDZ2 #0004 ADD2 STA
.settings/tile LDZ2 #0006 ADD2 LDA .settings/tile LDZ2 #0005 ADD2 STA
.settings/tile LDZ2 #0007 ADD2 LDA .settings/tile LDZ2 #0006 ADD2 STA
.settings/tile LDZ2 #0007 ADD2 STA
RTN
@op_shiftdown ( -- )
.settings/tile PEK2 #0007 ADD2 LDA
.settings/tile PEK2 #0006 ADD2 LDA .settings/tile PEK2 #0007 ADD2 STA
.settings/tile PEK2 #0005 ADD2 LDA .settings/tile PEK2 #0006 ADD2 STA
.settings/tile PEK2 #0004 ADD2 LDA .settings/tile PEK2 #0005 ADD2 STA
.settings/tile PEK2 #0003 ADD2 LDA .settings/tile PEK2 #0004 ADD2 STA
.settings/tile PEK2 #0002 ADD2 LDA .settings/tile PEK2 #0003 ADD2 STA
.settings/tile PEK2 #0001 ADD2 LDA .settings/tile PEK2 #0002 ADD2 STA
.settings/tile PEK2 LDA .settings/tile PEK2 #0001 ADD2 STA
.settings/tile PEK2 STA
.settings/tile LDZ2 #0007 ADD2 LDA
.settings/tile LDZ2 #0006 ADD2 LDA .settings/tile LDZ2 #0007 ADD2 STA
.settings/tile LDZ2 #0005 ADD2 LDA .settings/tile LDZ2 #0006 ADD2 STA
.settings/tile LDZ2 #0004 ADD2 LDA .settings/tile LDZ2 #0005 ADD2 STA
.settings/tile LDZ2 #0003 ADD2 LDA .settings/tile LDZ2 #0004 ADD2 STA
.settings/tile LDZ2 #0002 ADD2 LDA .settings/tile LDZ2 #0003 ADD2 STA
.settings/tile LDZ2 #0001 ADD2 LDA .settings/tile LDZ2 #0002 ADD2 STA
.settings/tile LDZ2 LDA .settings/tile LDZ2 #0001 ADD2 STA
.settings/tile LDZ2 STA
RTN
@ -427,42 +427,42 @@ RTN
@draw-bankview ( -- )
.bankview/x PEK2 #0002 SUB2 .bankview/y PEK2 #0002 SUB2 .bankview/x PEK2 #0081 ADD2 .bankview/y PEK2 #0081 ADD2 #03 ;line-rect JSR2
.bankview/x LDZ2 #0002 SUB2 .bankview/y LDZ2 #0002 SUB2 .bankview/x LDZ2 #0081 ADD2 .bankview/y LDZ2 #0081 ADD2 #03 ;line-rect JSR2
( position )
.bankview/x PEK2 .Screen/x DEO2
.bankview/y PEK2 #0010 SUB2 .Screen/y DEO2
.settings/page PEK2 #22 ;draw-short JSR2
.bankview/x LDZ2 .Screen/x DEO2
.bankview/y LDZ2 #0010 SUB2 .Screen/y DEO2
.settings/page LDZ2 #22 ;draw-short JSR2
( toolbar )
.bankview/y PEK2 #0010 SUB2 .Screen/y DEO2
.bankview/y LDZ2 #0010 SUB2 .Screen/y DEO2
.bankview/x PEK2 #0028 ADD2 .Screen/x DEO2
;depth_icns #00 .settings/depth PEK #0008 MUL2 ADD2 .Screen/addr DEO2
.bankview/x LDZ2 #0028 ADD2 .Screen/x DEO2
;depth_icns #00 .settings/depth LDZ #0008 MUL2 ADD2 .Screen/addr DEO2
#23 .Screen/color DEO
.bankview/x PEK2 #0068 ADD2 .Screen/x DEO2
.bankview/x LDZ2 #0068 ADD2 .Screen/x DEO2
;tool_selector .Screen/addr DEO2
#21 .bankview/mode PEK #00 EQU ADD .Screen/color DEO
#21 .bankview/mode LDZ #00 EQU ADD .Screen/color DEO
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
;tool_hand .Screen/addr DEO2
#21 .bankview/mode PEK #01 EQU ADD .Screen/color DEO
#21 .bankview/mode LDZ #01 EQU ADD .Screen/color DEO
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
;tool_eraser .Screen/addr DEO2
#21 .bankview/mode PEK #02 EQU ADD .Screen/color DEO
#21 .bankview/mode LDZ #02 EQU ADD .Screen/color DEO
( guides )
.bankview/x PEK2 #0010 SUB2 .Screen/x DEO2
.bankview/y PEK2 .Screen/y DEO2
.bankview/x LDZ2 #0010 SUB2 .Screen/x DEO2
.bankview/y LDZ2 .Screen/y DEO2
;font-hex .Screen/addr DEO2
#00 #10
&guides
( draw ) OVR .bankview/selection PEK #04 SFT EQU #22 ADD .Screen/color DEO
( draw ) OVR .bankview/selection LDZ #04 SFT EQU #22 ADD .Screen/color DEO
.Screen/addr DEI2 #0008 ADD2 .Screen/addr DEO2
.Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
SWP #01 ADD SWP
@ -471,19 +471,19 @@ RTN
( draw page )
( load ) .settings/page PEK2 .Screen/addr DEO2
.bankview/y PEK2 DUP2 #0080 ADD2
( load ) .settings/page LDZ2 .Screen/addr DEO2
.bankview/y LDZ2 DUP2 #0080 ADD2
&ver
( save ) OVR2 .Screen/y DEO2
.bankview/x PEK2 DUP2 #0080 ADD2
.bankview/x LDZ2 DUP2 #0080 ADD2
&hor
( save ) OVR2 .Screen/x DEO2
( get selected ) .Screen/addr DEI2 .settings/tile PEK2 EQU2
( get blending ) .settings/blending PEK
( get depth ) .settings/depth PEK #20 MUL
( get selected ) .Screen/addr DEI2 .settings/tile LDZ2 EQU2
( get blending ) .settings/blending LDZ
( get depth ) .settings/depth LDZ #20 MUL
( draw ) #20 ADD ADD ADD .Screen/color DEO
( incr ) SWP2 #0008 ADD2 SWP2
( incr ) .Screen/addr DEI2 #0008 ADD2 #00 .settings/depth PEK #0008 MUL2 ADD2 .Screen/addr DEO2
( incr ) .Screen/addr DEI2 #0008 ADD2 #00 .settings/depth LDZ #0008 MUL2 ADD2 .Screen/addr DEO2
OVR2 OVR2 LTH2 ,&hor JCN
POP2 POP2
( incr ) SWP2 #0008 ADD2 SWP2
@ -494,87 +494,87 @@ RTN
@draw-tileview ( -- )
.tileview/x PEK2 #0002 SUB2 .tileview/y PEK2 #0002 SUB2 .tileview/x PEK2 #0080 ADD2 .tileview/y PEK2 #0081 ADD2 #03 ;line-rect JSR2
.tileview/x LDZ2 #0002 SUB2 .tileview/y LDZ2 #0002 SUB2 .tileview/x LDZ2 #0080 ADD2 .tileview/y LDZ2 #0081 ADD2 #03 ;line-rect JSR2
.tileview/x PEK2 #0028 ADD2 .Screen/x DEO2
.tileview/y PEK2 #0010 SUB2 .Screen/y DEO2
.settings/tile PEK2 .Screen/addr DEO2
.tileview/x LDZ2 #0028 ADD2 .Screen/x DEO2
.tileview/y LDZ2 #0010 SUB2 .Screen/y DEO2
.settings/tile LDZ2 .Screen/addr DEO2
( get blending ) .settings/blending PEK
( get depth ) .settings/depth PEK #20 MUL
( get blending ) .settings/blending LDZ
( get depth ) .settings/depth LDZ #20 MUL
( draw ) #20 ADD ADD .Screen/color DEO
( position )
.tileview/x PEK2 .Screen/x DEO2
.tileview/y PEK2 #0010 SUB2 .Screen/y DEO2
.settings/tile PEK2 #22 ;draw-short JSR2
.tileview/x LDZ2 .Screen/x DEO2
.tileview/y LDZ2 #0010 SUB2 .Screen/y DEO2
.settings/tile LDZ2 #22 ;draw-short JSR2
( body )
.tileview/x PEK2 .Screen/x DEO2
.tileview/y PEK2 .Screen/y DEO2
.settings/tile PEK2 .settings/tile POK2
.tileview/x LDZ2 .Screen/x DEO2
.tileview/y LDZ2 .Screen/y DEO2
.settings/tile LDZ2 .settings/tile STZ2
;draw-tileview-icn JSR2
.tileview/x PEK2 #0040 ADD2 .Screen/x DEO2
.tileview/y PEK2 .Screen/y DEO2
.settings/tile PEK2 #0008 ADD2 .settings/tile POK2
.tileview/x LDZ2 #0040 ADD2 .Screen/x DEO2
.tileview/y LDZ2 .Screen/y DEO2
.settings/tile LDZ2 #0008 ADD2 .settings/tile STZ2
;draw-tileview-icn JSR2
.tileview/x PEK2 .Screen/x DEO2
.tileview/y PEK2 #0040 ADD2 .Screen/y DEO2
.settings/tile PEK2 #0008 ADD2 .settings/tile POK2
.tileview/x LDZ2 .Screen/x DEO2
.tileview/y LDZ2 #0040 ADD2 .Screen/y DEO2
.settings/tile LDZ2 #0008 ADD2 .settings/tile STZ2
;draw-tileview-icn JSR2
.tileview/x PEK2 #0040 ADD2 .Screen/x DEO2
.tileview/y PEK2 #0040 ADD2 .Screen/y DEO2
.settings/tile PEK2 #0008 ADD2 .settings/tile POK2
.tileview/x LDZ2 #0040 ADD2 .Screen/x DEO2
.tileview/y LDZ2 #0040 ADD2 .Screen/y DEO2
.settings/tile LDZ2 #0008 ADD2 .settings/tile STZ2
;draw-tileview-icn JSR2
( line hor )
.tileview/y PEK2 #003f ADD2 .Screen/y DEO2
.tileview/x PEK2 .Screen/x DEO2
.tileview/y LDZ2 #003f ADD2 .Screen/y DEO2
.tileview/x LDZ2 .Screen/x DEO2
&line-hor
( draw ) #03 .Screen/color DEO
( incr ) .Screen/x DEI2 #0002 ADD2 .Screen/x DEO2
.Screen/x DEI2 .tileview/x PEK2 #0082 ADD2 LTH2 ,&line-hor JCN
.Screen/x DEI2 .tileview/x LDZ2 #0082 ADD2 LTH2 ,&line-hor JCN
( line ver )
.tileview/y PEK2 .Screen/y DEO2
.tileview/x PEK2 #003f ADD2 .Screen/x DEO2
.tileview/y LDZ2 .Screen/y DEO2
.tileview/x LDZ2 #003f ADD2 .Screen/x DEO2
&line-ver
( draw ) #03 .Screen/color DEO
( incr ) .Screen/y DEI2 #0002 ADD2 .Screen/y DEO2
.Screen/y DEI2 .tileview/y PEK2 #0081 ADD2 LTH2 ,&line-ver JCN
.Screen/y DEI2 .tileview/y LDZ2 #0081 ADD2 LTH2 ,&line-ver JCN
( rewind ) .settings/tile PEK2 #0018 SUB2 .settings/tile POK2
( rewind ) .settings/tile LDZ2 #0018 SUB2 .settings/tile STZ2
RTN
@draw-editview ( -- )
.editview/x1 PEK2 #0002 SUB2 .editview/y1 PEK2 #0002 SUB2 .editview/x2 PEK2 #0001 ADD2 .editview/y2 PEK2 #0001 ADD2 #03 ;line-rect JSR2
.editview/x1 LDZ2 #0002 SUB2 .editview/y1 LDZ2 #0002 SUB2 .editview/x2 LDZ2 #0001 ADD2 .editview/y2 LDZ2 #0001 ADD2 #03 ;line-rect JSR2
( position )
.editview/x1 PEK2 .Screen/x DEO2
.editview/y1 PEK2 #0010 SUB2 .Screen/y DEO2
.settings/tile PEK2 #22 ;draw-short JSR2
.editview/x1 LDZ2 .Screen/x DEO2
.editview/y1 LDZ2 #0010 SUB2 .Screen/y DEO2
.settings/tile LDZ2 #22 ;draw-short JSR2
( tiles )
.settings/tile PEK2 DUP2 STH2 .Screen/addr DEO2
.settings/tile LDZ2 DUP2 STH2 .Screen/addr DEO2
#00 #04
&ver
OVR #08 MUL TOS #0004 MUL2 .editview/y1 PEK2 ADD2 .Screen/y DEO2
OVR #08 MUL TOS #0004 MUL2 .editview/y1 LDZ2 ADD2 .Screen/y DEO2
#00 #04
&hor
OVR #08 MUL TOS #0004 MUL2 .editview/x1 PEK2 ADD2 .Screen/x DEO2
OVR #08 MUL TOS #0004 MUL2 .editview/x1 LDZ2 ADD2 .Screen/x DEO2
( get x,y )
SWP2 OVR STH SWP2 OVR STHr
( check if within ratio )
.settings/ratio PEK #0f AND LTH STH
.settings/ratio PEK #04 SFT LTH STHr
.settings/ratio LDZ #0f AND LTH STH
.settings/ratio LDZ #04 SFT LTH STHr
#0101 NEQ2 ,&outside JCN
( get tile ) DUP2r STH2r .Screen/addr DEO2
@ -598,12 +598,12 @@ RTN
POP2r
( grid )
.editview/x1 PEK2 DUP2 #0080 ADD2 .editview/y1 PEK2 #0020 ADD2 #03 ;line-hor JSR2
.editview/x1 PEK2 DUP2 #0080 ADD2 .editview/y1 PEK2 #0040 ADD2 #03 ;line-hor JSR2
.editview/x1 PEK2 DUP2 #0080 ADD2 .editview/y1 PEK2 #0060 ADD2 #03 ;line-hor JSR2
.editview/x1 PEK2 #0020 ADD2 .editview/y1 PEK2 DUP2 #0080 ADD2 #03 ;line-ver JSR2
.editview/x1 PEK2 #0040 ADD2 .editview/y1 PEK2 DUP2 #0080 ADD2 #03 ;line-ver JSR2
.editview/x1 PEK2 #0060 ADD2 .editview/y1 PEK2 DUP2 #0080 ADD2 #03 ;line-ver JSR2
.editview/x1 LDZ2 DUP2 #0080 ADD2 .editview/y1 LDZ2 #0020 ADD2 #03 ;line-hor JSR2
.editview/x1 LDZ2 DUP2 #0080 ADD2 .editview/y1 LDZ2 #0040 ADD2 #03 ;line-hor JSR2
.editview/x1 LDZ2 DUP2 #0080 ADD2 .editview/y1 LDZ2 #0060 ADD2 #03 ;line-hor JSR2
.editview/x1 LDZ2 #0020 ADD2 .editview/y1 LDZ2 DUP2 #0080 ADD2 #03 ;line-ver JSR2
.editview/x1 LDZ2 #0040 ADD2 .editview/y1 LDZ2 DUP2 #0080 ADD2 #03 ;line-ver JSR2
.editview/x1 LDZ2 #0060 ADD2 .editview/y1 LDZ2 DUP2 #0080 ADD2 #03 ;line-ver JSR2
RTN
@ -651,44 +651,44 @@ RTN
@draw-tileview-icn ( -- )
#00 .pt/x POK #00 .pt/y POK
#00 .pt/x STZ #00 .pt/y STZ
&ver
#00 .pt/x POK
#00 .pt/x STZ
&hor
( get bit )
;blank_icn #00
.settings/tile PEK2 #00 .pt/y PEK ADD2 LDA #07 .pt/x PEK SUB SFT #01 AND ( get bit )
.settings/tile LDZ2 #00 .pt/y LDZ ADD2 LDA #07 .pt/x LDZ SUB SFT #01 AND ( get bit )
#0008 MUL2 ADD2 .Screen/addr DEO2 ( add *8 )
( draw ) #21 .Screen/color DEO
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
( incr ) .pt/x PEK #01 ADD .pt/x POK
.pt/x PEK #08 LTH ;&hor JCN2
( incr ) .pt/x LDZ #01 ADD .pt/x STZ
.pt/x LDZ #08 LTH ;&hor JCN2
( incr ) .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
( incr ) .pt/y PEK #01 ADD .pt/y POK
( incr ) .pt/y LDZ #01 ADD .pt/y STZ
.Screen/x DEI2 #0040 SUB2 .Screen/x DEO2
.pt/y PEK #08 LTH ;&ver JCN2
.pt/y LDZ #08 LTH ;&ver JCN2
RTN
@draw-blendview ( -- )
( .blendview/x1 PEK2 #0002 SUB2 .blendview/y1 PEK2 #0002 SUB2 .blendview/x2 PEK2 #0001 ADD2 .blendview/y2 PEK2 #0001 ADD2 #03 ;line-rect JSR2 )
( .blendview/x1 LDZ2 #0002 SUB2 .blendview/y1 LDZ2 #0002 SUB2 .blendview/x2 LDZ2 #0001 ADD2 .blendview/y2 LDZ2 #0001 ADD2 #03 ;line-rect JSR2 )
.settings/tile PEK2 .Screen/addr DEO2
.settings/tile LDZ2 .Screen/addr DEO2
#00 #10
&loop
OVR #04 MOD #00 SWP #0008 MUL2 .blendview/x1 PEK2 ADD2 .Screen/x DEO2
OVR #04 DIV #00 SWP #0008 MUL2 .blendview/y1 PEK2 ADD2 .Screen/y DEO2
OVR #04 MOD #00 SWP #0008 MUL2 .blendview/x1 LDZ2 ADD2 .Screen/x DEO2
OVR #04 DIV #00 SWP #0008 MUL2 .blendview/y1 LDZ2 ADD2 .Screen/y DEO2
#20 .Screen/color DEO
OVR #20 ADD .settings/depth PEK #20 MUL ADD .Screen/color DEO
OVR #20 ADD .settings/depth LDZ #20 MUL ADD .Screen/color DEO
SWP #01 ADD SWP
DUP2 LTH ,&loop JCN
POP2
.blendview/x1 PEK2 .Screen/x DEO2
.blendview/y2 PEK2 #0001 ADD2 .Screen/y DEO2
( get blending ) .settings/blending PEK
( get depth ) .settings/depth PEK #20 MUL
.blendview/x1 LDZ2 .Screen/x DEO2
.blendview/y2 LDZ2 #0001 ADD2 .Screen/y DEO2
( get blending ) .settings/blending LDZ
( get depth ) .settings/depth LDZ #20 MUL
( draw ) #20 ADD ADD #21 ;draw-byte JSR2
RTN
@ -697,14 +697,14 @@ RTN
( bytes )
.tileview/y PEK2 #0018 ADD2 .Screen/y DEO2
#00 .i POK
.tileview/y LDZ2 #0018 ADD2 .Screen/y DEO2
#00 .i STZ
&bytes
.tileview/x PEK2 #0088 ADD2 .Screen/x DEO2
.settings/tile PEK2 #00 .i PEK ADD2 LDA #22 ;draw-byte JSR2
( incr ) .i PEK #01 ADD .i POK
.tileview/x LDZ2 #0088 ADD2 .Screen/x DEO2
.settings/tile LDZ2 #00 .i LDZ ADD2 LDA #22 ;draw-byte JSR2
( incr ) .i LDZ #01 ADD .i STZ
( incr ) .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
.i PEK #08 LTH ;&bytes JCN2
.i LDZ #08 LTH ;&bytes JCN2
( operations )
@ -716,43 +716,43 @@ RTN
#21 .Screen/color DEO
( draw tiles 2x2 )
.tileview/y PEK2 .Screen/y DEO2
#00 .pt/x POK #00 .pt/y POK .settings/tile PEK2 .Screen/addr DEO2
.tileview/y LDZ2 .Screen/y DEO2
#00 .pt/x STZ #00 .pt/y STZ .settings/tile LDZ2 .Screen/addr DEO2
&tiles-ver
#00 .pt/x POK
.tileview/x PEK2 #0088 ADD2 .Screen/x DEO2
#00 .pt/x STZ
.tileview/x LDZ2 #0088 ADD2 .Screen/x DEO2
&tiles-hor
( draw ) #23 .Screen/color DEO
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
( incr ) .Screen/addr DEI2 #0008 ADD2 .Screen/addr DEO2
( incr ) .pt/x PEK #01 ADD .pt/x POK
.pt/x PEK #02 LTH ;&tiles-hor JCN2
( incr ) .pt/y PEK #01 ADD .pt/y POK
( incr ) .pt/x LDZ #01 ADD .pt/x STZ
.pt/x LDZ #02 LTH ;&tiles-hor JCN2
( incr ) .pt/y LDZ #01 ADD .pt/y STZ
( incr ) .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
.pt/y PEK #02 LTH ;&tiles-ver JCN2
.pt/y LDZ #02 LTH ;&tiles-ver JCN2
RTN
@draw-colorview ( -- )
.colorview/y1 PEK2 #18 ADD .Screen/y DEO2
.colorview/x1 PEK2 #08 ADD .Screen/x DEO2
.colorview/y1 LDZ2 #18 ADD .Screen/y DEO2
.colorview/x1 LDZ2 #08 ADD .Screen/x DEO2
.System/r DEI2 ;draw-color-code JSR2
.colorview/y1 PEK2 #18 ADD .Screen/y DEO2
.colorview/x1 PEK2 #10 ADD .Screen/x DEO2
.colorview/y1 LDZ2 #18 ADD .Screen/y DEO2
.colorview/x1 LDZ2 #10 ADD .Screen/x DEO2
.System/g DEI2 ;draw-color-code JSR2
.colorview/y1 PEK2 #18 ADD .Screen/y DEO2
.colorview/x1 PEK2 #18 ADD .Screen/x DEO2
.colorview/y1 LDZ2 #18 ADD .Screen/y DEO2
.colorview/x1 LDZ2 #18 ADD .Screen/x DEO2
.System/b DEI2 ;draw-color-code JSR2
.colorview/x1 PEK2 .Screen/x DEO2
.colorview/x1 LDZ2 .Screen/x DEO2
;circle_icns .Screen/addr DEO2
#00 #04
&loop
OVR .settings/brush PEK EQU #00 SWP #0008 MUL2 ;circle_icns ADD2 .Screen/addr DEO2
OVR .colorview/y1 PEK2 ROT #00 SWP #0008 MUL2 ADD2 .Screen/y DEO2
OVR .settings/brush LDZ EQU #00 SWP #0008 MUL2 ;circle_icns ADD2 .Screen/addr DEO2
OVR .colorview/y1 LDZ2 ROT #00 SWP #0008 MUL2 ADD2 .Screen/y DEO2
OVR #20 ADD .Screen/color DEO
SWP #01 ADD SWP
DUP2 LTH ,&loop JCN
@ -763,24 +763,24 @@ RTN
@draw-preview ( -- )
( stash address )
.settings/tile PEK2 DUP2 STH2 .Screen/addr DEO2
.settings/tile LDZ2 DUP2 STH2 .Screen/addr DEO2
#00 #04
&ver
OVR #08 MUL TOS .preview/y1 PEK2 ADD2 .Screen/y DEO2
OVR #08 MUL TOS .preview/y1 LDZ2 ADD2 .Screen/y DEO2
#00 #04
&hor
OVR #08 MUL TOS .preview/x1 PEK2 ADD2 .Screen/x DEO2
OVR #08 MUL TOS .preview/x1 LDZ2 ADD2 .Screen/x DEO2
( get x,y )
SWP2 OVR STH SWP2 OVR STHr
( check if within ratio )
.settings/ratio PEK #0f AND LTH STH
.settings/ratio PEK #04 SFT LTH STHr
.settings/ratio LDZ #0f AND LTH STH
.settings/ratio LDZ #04 SFT LTH STHr
#0101 NEQ2 ,&outside JCN
( get tile ) DUP2r STH2r .Screen/addr DEO2
( get blending ) .settings/blending PEK
( get depth ) .settings/depth PEK #20 MUL
( get blending ) .settings/blending LDZ
( get depth ) .settings/depth LDZ #20 MUL
( draw ) #20 ADD ADD .Screen/color DEO
( incr ) STH2r #0008 [ .settings/depth PEK #08 MUL TOS ADD2 ] ADD2 STH2
( incr ) STH2r #0008 [ .settings/depth LDZ #08 MUL TOS ADD2 ] ADD2 STH2
,&resume JMP
&outside
;halftone_icn .Screen/addr DEO2
@ -793,9 +793,9 @@ RTN
DUP2 LTH ;&ver JCN2
POP2
POP2r
.preview/x1 PEK2 #0001 SUB2 .Screen/x DEO2
.preview/y2 PEK2 #0001 ADD2 .Screen/y DEO2
.settings/ratio PEK #23 ;draw-byte JSR2
.preview/x1 LDZ2 #0001 SUB2 .Screen/x DEO2
.preview/y2 LDZ2 #0001 ADD2 .Screen/y DEO2
.settings/ratio LDZ #23 ;draw-byte JSR2
RTN
@ -803,13 +803,13 @@ RTN
DUP ;font-hex ROT #0f AND #08 MUL #00 SWP ADD2 .Screen/addr DEO2
( draw ) #22 .Screen/color DEO
.colorview/y1 PEK2 #10 ADD .Screen/y DEO2
.colorview/y1 LDZ2 #10 ADD .Screen/y DEO2
;font-hex ROT #04 SFT #08 MUL #00 SWP ADD2 .Screen/addr DEO2
( draw ) #22 .Screen/color DEO
.colorview/y1 PEK2 #08 ADD .Screen/y DEO2
.colorview/y1 LDZ2 #08 ADD .Screen/y DEO2
DUP ;font-hex ROT #0f AND #08 MUL #00 SWP ADD2 .Screen/addr DEO2
( draw ) #22 .Screen/color DEO
.colorview/y1 PEK2 .Screen/y DEO2
.colorview/y1 LDZ2 .Screen/y DEO2
;font-hex ROT #04 SFT #08 MUL #00 SWP ADD2 .Screen/addr DEO2
( draw ) #22 .Screen/color DEO
@ -818,30 +818,30 @@ RTN
@draw-cursor ( -- )
( clear last cursor )
.mouse/x PEK2 .Screen/x DEO2
.mouse/y PEK2 .Screen/y DEO2
.mouse/x LDZ2 .Screen/x DEO2
.mouse/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
( record mouse positions )
.Mouse/x DEI2 .mouse/x POK2
.Mouse/y DEI2 .mouse/y POK2
.Mouse/x DEI2 .mouse/x STZ2
.Mouse/y DEI2 .mouse/y STZ2
( draw new cursor )
.mouse/x PEK2 .Screen/x DEO2
.mouse/y PEK2 .Screen/y DEO2
;tool_selector #00 .bankview/mode PEK #08 MUL ADD2 .Screen/addr DEO2
.mouse/x LDZ2 .Screen/x DEO2
.mouse/y LDZ2 .Screen/y DEO2
;tool_selector #00 .bankview/mode LDZ #08 MUL ADD2 .Screen/addr DEO2
#32 .Mouse/state DEI #00 NEQ ADD .Screen/color DEO
RTN
@draw-byte ( byte color -- )
.color POK STH
.color STZ STH
;font-hex #00 DUPr STHr #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
;font-hex #00 STHr #0f AND #08 MUL ADD2 .Screen/addr DEO2
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
RTN
@ -866,20 +866,20 @@ RTN
@line-rect ( x1* y1* x2* y2* color -- )
( load ) .color POK DUP2 STH2 .rect/y2 POK2 .rect/x2 POK2 DUP2 STH2 .rect/y1 POK2 .rect/x1 POK2
( load ) .color STZ DUP2 STH2 .rect/y2 STZ2 .rect/x2 STZ2 DUP2 STH2 .rect/y1 STZ2 .rect/x1 STZ2
STH2r STH2r
&ver
( save ) OVR2 .Screen/y DEO2
( draw ) .rect/x1 PEK2 .Screen/x DEO2 .color PEK DUP .Screen/color DEO
( draw ) .rect/x2 PEK2 .Screen/x DEO2 .Screen/color DEO
( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ DUP .Screen/color DEO
( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .Screen/color DEO
( incr ) SWP2 #0001 ADD2 SWP2
OVR2 OVR2 LTS2 ,&ver JCN
POP2 POP2
.rect/x1 PEK2 .rect/x2 PEK2
.rect/x1 LDZ2 .rect/x2 LDZ2
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .rect/y1 PEK2 .Screen/y DEO2 .color PEK DUP .Screen/color DEO
( draw ) .rect/y2 PEK2 .Screen/y DEO2 .Screen/color DEO
( draw ) .rect/y1 LDZ2 .Screen/y DEO2 .color LDZ DUP .Screen/color DEO
( draw ) .rect/y2 LDZ2 .Screen/y DEO2 .Screen/color DEO
( incr ) SWP2 #0001 ADD2 SWP2
OVR2 OVR2 #0001 ADD2 LTS2 ,&hor JCN
POP2 POP2

View file

@ -32,55 +32,55 @@
( theme ) #03fd .System/r DEO2 #0ef3 .System/g DEO2 #0bf2 .System/b DEO2
( vectors ) ;on-screen .Screen/vector DEO2
#01 .fps/current POK
#01 .fps/current STZ
#000c
DUP2 .lines/x1 POK2
DUP2 .lines/y1 POK2
DUP2 .Screen/width DEI2 SWP2 SUB2 #0001 SUB2 .lines/x2 POK2
.Screen/height DEI2 SWP2 SUB2 .lines/y2 POK2
DUP2 .lines/x1 STZ2
DUP2 .lines/y1 STZ2
DUP2 .Screen/width DEI2 SWP2 SUB2 #0001 SUB2 .lines/x2 STZ2
.Screen/height DEI2 SWP2 SUB2 .lines/y2 STZ2
#02 .neralie/color POK
.lines/x1 PEK2 .lines/x2 PEK2
OVR2 OVR2 .lines/y1 PEK2 ;h JSR2
.lines/y2 PEK2 ;h JSR2
.lines/y1 PEK2 #0001 SUB2 .lines/y2 PEK2 #0001 ADD2
OVR2 OVR2 .lines/x1 PEK2 ;v JSR2
.lines/x2 PEK2 ;v JSR2
#02 .neralie/color STZ
.lines/x1 LDZ2 .lines/x2 LDZ2
OVR2 OVR2 .lines/y1 LDZ2 ;h JSR2
.lines/y2 LDZ2 ;h JSR2
.lines/y1 LDZ2 #0001 SUB2 .lines/y2 LDZ2 #0001 ADD2
OVR2 OVR2 .lines/x1 LDZ2 ;v JSR2
.lines/x2 LDZ2 ;v JSR2
@on-screen
;update-fps JSR2
#00 .neralie/color POK
#00 .neralie/color STZ
;neralie-lines JSR2
;neralie-calc JSR2
#02 .neralie/color POK
#02 .neralie/color STZ
;arvelie-text JSR2
;neralie-text JSR2
;neralie-lines JSR2
BRK
#22 .Screen/color DEO
#0000 #00 .number/count PEK DUP2 ;h JSR2
.number/count PEK #01 ADD .number/count POK
#0000 #00 .number/count LDZ DUP2 ;h JSR2
.number/count LDZ #01 ADD .number/count STZ
@neralie-calc ( -- )
( add up fractions of a pulse, store tenths in n6 )
#0120 #00 h MUL2
#00c0 #00 m MUL2 ADD2
#00f8 #00 s MUL2 ADD2
#0271 #00 .fps/next PEK MUL2 #00 .fps/current PEK DIV2 #0008 MUL2 ADD2
#01b0 ;modf JSR2 SWP2 #0017 MUL2 #03e8 DIV2 .neralie/n6 POK POP
#0271 #00 .fps/next LDZ MUL2 #00 .fps/current LDZ DIV2 #0008 MUL2 ADD2
#01b0 ;modf JSR2 SWP2 #0017 MUL2 #03e8 DIV2 .neralie/n6 STZ POP
( add up units and tens of pulses, store in n5 and n4 )
#0042 #00 h MUL2 ADD2
#005e #00 m MUL2 ADD2
#000b #00 s MUL2 ADD2
#000a ;modf JSR2 SWP2 .neralie/n5 POK POP
#000a ;modf JSR2 SWP2 .neralie/n4 POK POP
#000a ;modf JSR2 SWP2 .neralie/n5 STZ POP
#000a ;modf JSR2 SWP2 .neralie/n4 STZ POP
( add up hundreds of pulses + 10 x beats, store in n0123 )
#01a0 #00 h MUL2 ADD2
#0006 #00 m MUL2 ADD2 .neralie/n0123 POK2
#0006 #00 m MUL2 ADD2 .neralie/n0123 STZ2
JMP2r
@ -98,14 +98,14 @@
@neralie-text ( -- )
.Screen/width DEI2 #0002 DIV2 #0004 SUB2 .Screen/x DEO2
.neralie/n0123 PEK2
.neralie/n0123 LDZ2
#03e8 ;modf JSR2 ,digit JSR
#0064 ;modf JSR2 ,digit JSR
#000a ;modf JSR2 ,digit JSR
#000b ,digit JSR ( the colon )
,digit JSR
#00 .neralie/n4 PEK ,digit JSR
#00 .neralie/n5 PEK ,digit JSR
#00 .neralie/n4 LDZ ,digit JSR
#00 .neralie/n5 LDZ ,digit JSR
JMP2r
@letter ( index* -- )
@ -115,24 +115,24 @@
@digit ( index* -- )
#0008 MUL2 ;font-numbers ADD2 .Screen/addr DEO2
&middle
.neralie/color PEK #20 ADD .Screen/color DEO
.neralie/color LDZ #20 ADD .Screen/color DEO
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
JMP2r
@neralie-lines ( -- )
.lines/x2 PEK2 .lines/x1 PEK2 DUP2 .neralie/x POK2 SUB2 .neralie/w POK2
.lines/y2 PEK2 .lines/y1 PEK2 DUP2 .neralie/y POK2 SUB2 .neralie/h POK2
.lines/x2 LDZ2 .lines/x1 LDZ2 DUP2 .neralie/x STZ2 SUB2 .neralie/w STZ2
.lines/y2 LDZ2 .lines/y1 LDZ2 DUP2 .neralie/y STZ2 SUB2 .neralie/h STZ2
;neralie/n4 SWP POP .neralie/n0123 PEK2
;neralie/n4 SWP POP .neralie/n0123 LDZ2
DUP2 ;&h JSR2
;&next JSR2 #0001 .Screen/x DEO2 .neralie/y PEK2 #0003 SUB2 .Screen/y DEO2 ,digit JSR
;&next JSR2 #0001 .Screen/x DEO2 .neralie/y LDZ2 #0003 SUB2 .Screen/y DEO2 ,digit JSR
DUP2 ;&v JSR2
#04 ;v/spacing STA
.lines/y1 PEK2 #0003 SUB2 .neralie/y PEK2 .neralie/x PEK2 ;v JSR2
.lines/y1 LDZ2 #0003 SUB2 .neralie/y LDZ2 .neralie/x LDZ2 ;v JSR2
#01 ;v/spacing STA
,&next JSR #0001 .Screen/y DEO2 .neralie/x PEK2 #0003 SUB2 .Screen/x DEO2 ;digit JSR2
,&next JSR #0001 .Screen/y DEO2 .neralie/x LDZ2 #0003 SUB2 .Screen/x DEO2 ;digit JSR2
DUP2 ,&h JSR
,&next JSR .Screen/width DEI2 #0009 SUB2 .Screen/x DEO2 .neralie/y PEK2 #0003 SUB2 .Screen/y DEO2 ;digit JSR2
,&next JSR .Screen/width DEI2 #0009 SUB2 .Screen/x DEO2 .neralie/y LDZ2 #0003 SUB2 .Screen/y DEO2 ;digit JSR2
DUP2 ,&v JSR
,&next JSR POP2
DUP2 ,&h JSR
@ -144,25 +144,25 @@
&next ( digit-addr number* -- next-digit-addr next-number* prev-digit* )
#03e8 ;modf JSR2 STH2 #000a MUL2
ROT DUP STH #01 ADD ROT ROT
#00 STHr PEK ADD2
#00 STHr LDZ ADD2
STH2r
JMP2r
&h ( number* -- )
,scale JSR
.neralie/h PEK2 ;mul2hi JSR2
.neralie/h LDZ2 ;mul2hi JSR2
DUP2 #0000 NEQ2 #02 JCN POP2 JMP2r
DUP2 .neralie/y PEK2 ADD2 .neralie/y POK2
.neralie/h PEK2 SWP2 SUB2 .neralie/h POK2
.neralie/x PEK2 DUP2 .neralie/w PEK2 ADD2 .neralie/y PEK2 ,h JMP
DUP2 .neralie/y LDZ2 ADD2 .neralie/y STZ2
.neralie/h LDZ2 SWP2 SUB2 .neralie/h STZ2
.neralie/x LDZ2 DUP2 .neralie/w LDZ2 ADD2 .neralie/y LDZ2 ,h JMP
&v ( number* -- )
,scale JSR
.neralie/w PEK2 ;mul2hi JSR2
.neralie/w LDZ2 ;mul2hi JSR2
DUP2 #0000 NEQ2 #02 JCN POP2 JMP2r
DUP2 .neralie/x PEK2 ADD2 .neralie/x POK2
.neralie/w PEK2 SWP2 SUB2 .neralie/w POK2
.neralie/y PEK2 DUP2 .neralie/h PEK2 ADD2 .neralie/x PEK2 ,v JMP
DUP2 .neralie/x LDZ2 ADD2 .neralie/x STZ2
.neralie/w LDZ2 SWP2 SUB2 .neralie/w STZ2
.neralie/y LDZ2 DUP2 .neralie/h LDZ2 ADD2 .neralie/x LDZ2 ,v JMP
@scale ( 0..10000* -- 0..65535* )
DUP2 #8db8 ;mul2hi JSR2
@ -171,12 +171,12 @@
@h ( x1* x2* y* -- )
.Screen/y DEO2
.Screen/x .lines/addr POK
.Screen/x .lines/addr STZ
,v/draw-line JMP
@v ( y1* y2* x* -- )
.Screen/x DEO2
.Screen/y .lines/addr POK
.Screen/y .lines/addr STZ
&draw-line ( v1* v2* -- )
OVR2 OVR2 LTH2 #01 JCN SWP2
@ -189,20 +189,20 @@
JMP2r
&keep-going
DUP2 .lines/addr PEK DEO2
.neralie/color PEK .Screen/color DEO
DUP2 .lines/addr LDZ DEO2
.neralie/color LDZ .Screen/color DEO
,&loop JMP
@update-fps ( -- )
.fps/next PEK #01 ADD .fps/next POK
s .fps/second PEK NEQ JMP JMP2r
s .fps/second POK
.fps/next PEK .fps/current POK
.fps/next LDZ #01 ADD .fps/next STZ
s .fps/second LDZ NEQ JMP JMP2r
s .fps/second STZ
.fps/next LDZ .fps/current STZ
( ~fps.next ^print-byte-decimal JSR
,strings-fps ^print-string JSR )
#00 .fps/next POK
#00 .fps/next STZ
JMP2r
@modf ( dividend* divisor* -- remainder* quotient* )
@ -229,12 +229,12 @@
;mul/bhi STA2 ;mul/ahi STA2
#00
#00
#00 .mul/alo PEK #00 .mul/blo PEK MUL2
#00 .mul/alo LDZ #00 .mul/blo LDZ MUL2
POP
#00 .mul/ahi PEK #00 .mul/blo PEK MUL2 ,&adc JSR
#00 .mul/alo PEK #00 .mul/bhi PEK MUL2 ,&adc JSR
#00 .mul/ahi LDZ #00 .mul/blo LDZ MUL2 ,&adc JSR
#00 .mul/alo LDZ #00 .mul/bhi LDZ MUL2 ,&adc JSR
POP
#00 .mul/ahi PEK #00 .mul/bhi PEK MUL2 ADD2
#00 .mul/ahi LDZ #00 .mul/bhi LDZ MUL2 ADD2
JMP2r
&adc ( 31..24 a* b* -- 31..24 sum* )

View file

@ -25,7 +25,7 @@
%2/ { #0001 SFT2 }
%8/ { #0003 SFT2 } %8* { #0030 SFT2 }
%8+ { #0008 ADD2 }
%FILESIZE { .canvas/w PEK2 .canvas/h PEK2 MUL2 #0008 MUL2 }
%FILESIZE { .canvas/w LDZ2 .canvas/h LDZ2 MUL2 #0008 MUL2 }
( devices )
@ -66,28 +66,28 @@
|0100
( theme )
#e0fa .theme/r0 POK2 #30fa .theme/g0 POK2 #30fa .theme/b0 POK2 ( normal mode )
#00fe .theme/r1 POK2 #00f3 .theme/g1 POK2 #00f3 .theme/b1 POK2 ( presentation mode )
#e0fa .theme/r0 STZ2 #30fa .theme/g0 STZ2 #30fa .theme/b0 STZ2 ( normal mode )
#00fe .theme/r1 STZ2 #00f3 .theme/g1 STZ2 #00f3 .theme/b1 STZ2 ( presentation mode )
( vectors ) ;on-screen .Screen/vector DEO2
( vectors ) ;on-button .Controller/vector DEO2
( vectors ) ;on-mouse .Mouse/vector DEO2
.theme/r0 PEK2 .System/r DEO2 .theme/g0 PEK2 .System/g DEO2 .theme/b0 PEK2 .System/b DEO2
.theme/r0 LDZ2 .System/r DEO2 .theme/g0 LDZ2 .System/g DEO2 .theme/b0 LDZ2 .System/b DEO2
( default canvas )
#002a .canvas/w POK2 #0018 .canvas/h POK2
#002a .canvas/w STZ2 #0018 .canvas/h STZ2
( default brush )
#04 .brush/size POK #00 .brush/patt POK #00 .brush/tool POK
#04 .brush/size STZ #00 .brush/patt STZ #00 .brush/tool STZ
( load file )
;untitled_txt ;path/name ;strcpy JSR2
( setup panes )
#0010 .toolpane/x1 POK2 #0010 .toolpane/y1 POK2 .toolpane/x1 PEK2 #0028 ADD2 .toolpane/x2 POK2 .toolpane/y1 PEK2 #0008 ADD2 .toolpane/y2 POK2
#0040 .sizepane/x1 POK2 #0010 .sizepane/y1 POK2 .sizepane/x1 PEK2 #0040 ADD2 .sizepane/x2 POK2 .sizepane/y1 PEK2 #0008 ADD2 .sizepane/y2 POK2
.Screen/width DEI2 #0078 SUB2 .viewpane/x1 POK2 #0010 .viewpane/y1 POK2 .viewpane/x1 PEK2 #0020 ADD2 .viewpane/x2 POK2 .viewpane/y1 PEK2 #0008 ADD2 .viewpane/y2 POK2
.Screen/width DEI2 #0050 SUB2 .pattpane/x1 POK2 #0010 .pattpane/y1 POK2 .pattpane/x1 PEK2 #0040 ADD2 .pattpane/x2 POK2 .pattpane/y1 PEK2 #0008 ADD2 .pattpane/y2 POK2
#0010 .toolpane/x1 STZ2 #0010 .toolpane/y1 STZ2 .toolpane/x1 LDZ2 #0028 ADD2 .toolpane/x2 STZ2 .toolpane/y1 LDZ2 #0008 ADD2 .toolpane/y2 STZ2
#0040 .sizepane/x1 STZ2 #0010 .sizepane/y1 STZ2 .sizepane/x1 LDZ2 #0040 ADD2 .sizepane/x2 STZ2 .sizepane/y1 LDZ2 #0008 ADD2 .sizepane/y2 STZ2
.Screen/width DEI2 #0078 SUB2 .viewpane/x1 STZ2 #0010 .viewpane/y1 STZ2 .viewpane/x1 LDZ2 #0020 ADD2 .viewpane/x2 STZ2 .viewpane/y1 LDZ2 #0008 ADD2 .viewpane/y2 STZ2
.Screen/width DEI2 #0050 SUB2 .pattpane/x1 STZ2 #0010 .pattpane/y1 STZ2 .pattpane/x1 LDZ2 #0040 ADD2 .pattpane/x2 STZ2 .pattpane/y1 LDZ2 #0008 ADD2 .pattpane/y2 STZ2
( ready. )
;center JSR2
@ -100,15 +100,15 @@ BRK
@on-screen ( -> )
.document/edit PEK #01 NEQ ,&no-edit JCN
.document/edit LDZ #01 NEQ ,&no-edit JCN
#0008 .Screen/x DEO2
.Screen/height DEI2 #0010 SUB2 .Screen/y DEO2
;path/name #01 .timer PEK #04 DIV #03 AND #03 MUL ADD ;draw-label JSR2
;path/name #01 .timer LDZ #04 DIV #03 AND #03 MUL ADD ;draw-label JSR2
&clear
#20 .Screen/color DEO
.Screen/x DEI2 8+ DUP2 .Screen/x DEO2
.Screen/width DEI2 LTH2 ,&clear JCN
( blink ) .timer PEK #01 ADD .timer POK
( blink ) .timer LDZ #01 ADD .timer STZ
&no-edit
BRK
@ -118,32 +118,32 @@ BRK
;draw-cursor JSR2
( release drag )
.Mouse/state DEI #00 EQU .brush/drag PEK #01 EQU #0101 NEQ2 ,&no-release JCN
.origin/x1 PEK2 #0002 SUB2 .origin/y1 PEK2 #0002 SUB2 .origin/x2 PEK2 #0002 ADD2 .origin/y2 PEK2 #0002 ADD2 #00 ;fill-rect JSR2
.canvas/x1 PEK2 -- .canvas/y1 PEK2 -- .canvas/x2 PEK2 .canvas/y2 PEK2 #10 ;line-rect JSR2
.Mouse/state DEI #00 EQU .brush/drag LDZ #01 EQU #0101 NEQ2 ,&no-release JCN
.origin/x1 LDZ2 #0002 SUB2 .origin/y1 LDZ2 #0002 SUB2 .origin/x2 LDZ2 #0002 ADD2 .origin/y2 LDZ2 #0002 ADD2 #00 ;fill-rect JSR2
.canvas/x1 LDZ2 -- .canvas/y1 LDZ2 -- .canvas/x2 LDZ2 .canvas/y2 LDZ2 #10 ;line-rect JSR2
;draw-background JSR2
;fit-canvas JSR2
;draw-foreground JSR2
#00 .brush/drag POK
#00 .brush/drag STZ
&no-release
( operations on release line/rect )
.Mouse/state DEI .brush/last PEK EQU ;&no-touch-change JCN2
.Mouse/x DEI2 CLN2r .canvas/x1 PEK2 GTS2 STH2r .canvas/x2 PEK2 LTS2 #0101 NEQ2 ;&no-touch-change JCN2
.Mouse/y DEI2 CLN2r .canvas/y1 PEK2 GTS2 STH2r .canvas/y2 PEK2 LTS2 #0101 NEQ2 ;&no-touch-change JCN2
.Mouse/state DEI .brush/last LDZ EQU ;&no-touch-change JCN2
.Mouse/x DEI2 CLN2r .canvas/x1 LDZ2 GTS2 STH2r .canvas/x2 LDZ2 LTS2 #0101 NEQ2 ;&no-touch-change JCN2
.Mouse/y DEI2 CLN2r .canvas/y1 LDZ2 GTS2 STH2r .canvas/y2 LDZ2 LTS2 #0101 NEQ2 ;&no-touch-change JCN2
.Mouse/state DEI #00 EQU ,&no-touch-ondown JCN
( on down )
.Mouse/x DEI2 .cursor/dx POK2
.Mouse/y DEI2 .cursor/dy POK2
.Mouse/x DEI2 .cursor/dx STZ2
.Mouse/y DEI2 .cursor/dy STZ2
&no-touch-ondown
.Mouse/state DEI #00 NEQ ,&no-touch-onup JCN
( on up )
.brush/tool PEK #02 NEQ ,&no-touch-line JCN
.cursor/dx PEK2 .canvas/x1 PEK2 SUB2 .cursor/dy PEK2 .canvas/y1 PEK2 SUB2 .Mouse/x DEI2 .canvas/x1 PEK2 SUB2 .Mouse/y DEI2 .canvas/y1 PEK2 SUB2 ;paint-line JSR2
.brush/tool LDZ #02 NEQ ,&no-touch-line JCN
.cursor/dx LDZ2 .canvas/x1 LDZ2 SUB2 .cursor/dy LDZ2 .canvas/y1 LDZ2 SUB2 .Mouse/x DEI2 .canvas/x1 LDZ2 SUB2 .Mouse/y DEI2 .canvas/y1 LDZ2 SUB2 ;paint-line JSR2
;&touch-end JMP2
&no-touch-line
.brush/tool PEK #03 NEQ ,&no-touch-rect JCN
.cursor/dx PEK2 .canvas/x1 PEK2 SUB2 .cursor/dy PEK2 .canvas/y1 PEK2 SUB2 .Mouse/x DEI2 .canvas/x1 PEK2 SUB2 .Mouse/y DEI2 .canvas/y1 PEK2 SUB2 ;paint-rect JSR2
.brush/tool LDZ #03 NEQ ,&no-touch-rect JCN
.cursor/dx LDZ2 .canvas/x1 LDZ2 SUB2 .cursor/dy LDZ2 .canvas/y1 LDZ2 SUB2 .Mouse/x DEI2 .canvas/x1 LDZ2 SUB2 .Mouse/y DEI2 .canvas/y1 LDZ2 SUB2 ;paint-rect JSR2
;&touch-end JMP2
&no-touch-rect
&no-touch-onup
@ -153,69 +153,69 @@ BRK
( drag )
.Controller/button DEI #02 NEQ ;&no-drag JCN2
.brush/drag PEK #00 NEQ ,&no-drag-start JCN
.canvas/x1 PEK2 .origin/x1 POK2
.canvas/y1 PEK2 .origin/y1 POK2
.canvas/x2 PEK2 .origin/x2 POK2
.canvas/y2 PEK2 .origin/y2 POK2
.brush/drag LDZ #00 NEQ ,&no-drag-start JCN
.canvas/x1 LDZ2 .origin/x1 STZ2
.canvas/y1 LDZ2 .origin/y1 STZ2
.canvas/x2 LDZ2 .origin/x2 STZ2
.canvas/y2 LDZ2 .origin/y2 STZ2
&no-drag-start
.canvas/x1 PEK2 -- .canvas/y1 PEK2 -- .canvas/x2 PEK2 .canvas/y2 PEK2 #10 ;line-rect JSR2
.canvas/x1 PEK2 .Mouse/x DEI2 .cursor/x0 PEK2 SUB2 ADD2 .canvas/x1 POK2
.canvas/y1 PEK2 .Mouse/y DEI2 .cursor/y0 PEK2 SUB2 ADD2 .canvas/y1 POK2
.canvas/w PEK2 8* .canvas/x1 PEK2 ADD2 .canvas/x2 POK2
.canvas/h PEK2 8* .canvas/y1 PEK2 ADD2 .canvas/y2 POK2
.canvas/x1 PEK2 -- .canvas/y1 PEK2 -- .canvas/x2 PEK2 .canvas/y2 PEK2 #13 ;line-rect JSR2
#01 .brush/drag POK
.canvas/x1 LDZ2 -- .canvas/y1 LDZ2 -- .canvas/x2 LDZ2 .canvas/y2 LDZ2 #10 ;line-rect JSR2
.canvas/x1 LDZ2 .Mouse/x DEI2 .cursor/x0 LDZ2 SUB2 ADD2 .canvas/x1 STZ2
.canvas/y1 LDZ2 .Mouse/y DEI2 .cursor/y0 LDZ2 SUB2 ADD2 .canvas/y1 STZ2
.canvas/w LDZ2 8* .canvas/x1 LDZ2 ADD2 .canvas/x2 STZ2
.canvas/h LDZ2 8* .canvas/y1 LDZ2 ADD2 .canvas/y2 STZ2
.canvas/x1 LDZ2 -- .canvas/y1 LDZ2 -- .canvas/x2 LDZ2 .canvas/y2 LDZ2 #13 ;line-rect JSR2
#01 .brush/drag STZ
;&touch-end JMP2
&no-drag
( in sizepane )
.Mouse/x DEI2 CLN2r .sizepane/x1 PEK2 GTH2 STH2r .sizepane/x2 PEK2 LTH2 #0101 NEQ2 ,&no-touch-sizepane JCN
.Mouse/y DEI2 CLN2r .sizepane/y1 PEK2 GTH2 STH2r .sizepane/y2 PEK2 LTH2 #0101 NEQ2 ,&no-touch-sizepane JCN
.Mouse/x DEI2 CLN2r .sizepane/x1 LDZ2 GTH2 STH2r .sizepane/x2 LDZ2 LTH2 #0101 NEQ2 ,&no-touch-sizepane JCN
.Mouse/y DEI2 CLN2r .sizepane/y1 LDZ2 GTH2 STH2r .sizepane/y2 LDZ2 LTH2 #0101 NEQ2 ,&no-touch-sizepane JCN
( release ) #00 .Mouse/state DEO
#01 .brush/tool POK
.Mouse/x DEI2 .sizepane/x1 PEK2 SUB2 8/ SWP POP .brush/size POK
#01 .brush/tool STZ
.Mouse/x DEI2 .sizepane/x1 LDZ2 SUB2 8/ SWP POP .brush/size STZ
( draw ) ;draw-sizepane JSR2
( draw ) ;draw-toolpane JSR2
;&touch-end JMP2
&no-touch-sizepane
( in pattpane )
.Mouse/x DEI2 CLN2r .pattpane/x1 PEK2 GTH2 STH2r .pattpane/x2 PEK2 LTH2 #0101 NEQ2 ,&no-touch-pattpane JCN
.Mouse/y DEI2 CLN2r .pattpane/y1 PEK2 GTH2 STH2r .pattpane/y2 PEK2 LTH2 #0101 NEQ2 ,&no-touch-pattpane JCN
.Mouse/x DEI2 CLN2r .pattpane/x1 LDZ2 GTH2 STH2r .pattpane/x2 LDZ2 LTH2 #0101 NEQ2 ,&no-touch-pattpane JCN
.Mouse/y DEI2 CLN2r .pattpane/y1 LDZ2 GTH2 STH2r .pattpane/y2 LDZ2 LTH2 #0101 NEQ2 ,&no-touch-pattpane JCN
( release ) #00 .Mouse/state DEO
.Mouse/x DEI2 .pattpane/x1 PEK2 SUB2 8/ SWP POP .brush/patt POK
.Mouse/x DEI2 .pattpane/x1 LDZ2 SUB2 8/ SWP POP .brush/patt STZ
( draw ) ;draw-pattpane JSR2
;&touch-end JMP2
&no-touch-pattpane
( in toolpane )
.Mouse/x DEI2 CLN2r .toolpane/x1 PEK2 GTH2 STH2r .toolpane/x2 PEK2 LTH2 #0101 NEQ2 ,&no-touch-toolpane JCN
.Mouse/y DEI2 CLN2r .toolpane/y1 PEK2 GTH2 STH2r .toolpane/y2 PEK2 LTH2 #0101 NEQ2 ,&no-touch-toolpane JCN
.Mouse/x DEI2 CLN2r .toolpane/x1 LDZ2 GTH2 STH2r .toolpane/x2 LDZ2 LTH2 #0101 NEQ2 ,&no-touch-toolpane JCN
.Mouse/y DEI2 CLN2r .toolpane/y1 LDZ2 GTH2 STH2r .toolpane/y2 LDZ2 LTH2 #0101 NEQ2 ,&no-touch-toolpane JCN
( release ) #00 .Mouse/state DEO
.Mouse/x DEI2 .toolpane/x1 PEK2 SUB2 8/ SWP POP .brush/tool POK
.Mouse/x DEI2 .toolpane/x1 LDZ2 SUB2 8/ SWP POP .brush/tool STZ
( draw ) ;draw-toolpane JSR2
;&touch-end JMP2
&no-touch-toolpane
( in viewpane )
.Mouse/x DEI2 CLN2r .viewpane/x1 PEK2 GTH2 STH2r .viewpane/x2 PEK2 LTH2 #0101 NEQ2 ;&no-touch-viewpane JCN2
.Mouse/y DEI2 CLN2r .viewpane/y1 PEK2 GTH2 STH2r .viewpane/y2 PEK2 LTH2 #0101 NEQ2 ;&no-touch-viewpane JCN2
.Mouse/x DEI2 CLN2r .viewpane/x1 LDZ2 GTH2 STH2r .viewpane/x2 LDZ2 LTH2 #0101 NEQ2 ;&no-touch-viewpane JCN2
.Mouse/y DEI2 CLN2r .viewpane/y1 LDZ2 GTH2 STH2r .viewpane/y2 LDZ2 LTH2 #0101 NEQ2 ;&no-touch-viewpane JCN2
( release ) #00 .Mouse/state DEO
( clear ) .canvas/x1 PEK2 #0002 SUB2 .canvas/y1 PEK2 #0002 SUB2 .canvas/x2 PEK2 #0002 ADD2 .canvas/y2 PEK2 #0002 ADD2 #00 ;fill-rect JSR2
( clear ) .canvas/x1 LDZ2 #0002 SUB2 .canvas/y1 LDZ2 #0002 SUB2 .canvas/x2 LDZ2 #0002 ADD2 .canvas/y2 LDZ2 #0002 ADD2 #00 ;fill-rect JSR2
;draw-background JSR2
.Mouse/x DEI2 .viewpane/x1 PEK2 SUB2 8/ SWP POP
.Mouse/x DEI2 .viewpane/x1 LDZ2 SUB2 8/ SWP POP
DUP #00 NEQ ,&no-incwidth JCN
.canvas/w PEK2 ++ .canvas/w POK2
.canvas/w LDZ2 ++ .canvas/w STZ2
&no-incwidth
DUP #01 NEQ ,&no-decwidth JCN
.canvas/w PEK2 -- .canvas/w POK2
.canvas/w LDZ2 -- .canvas/w STZ2
&no-decwidth
DUP #02 NEQ ,&no-incheight JCN
.canvas/h PEK2 ++ .canvas/h POK2
.canvas/h LDZ2 ++ .canvas/h STZ2
&no-incheight
DUP #03 NEQ ,&no-decheight JCN
.canvas/h PEK2 -- .canvas/h POK2
.canvas/h LDZ2 -- .canvas/h STZ2
&no-decheight
POP
;fit-canvas JSR2
@ -224,27 +224,27 @@ BRK
&no-touch-viewpane
( in canvas )
.Mouse/x DEI2 CLN2r .canvas/x1 PEK2 GTS2 STH2r .canvas/x2 PEK2 LTS2 #0101 NEQ2 ;&no-touch-canvas JCN2
.Mouse/y DEI2 CLN2r .canvas/y1 PEK2 GTS2 STH2r .canvas/y2 PEK2 LTS2 #0101 NEQ2 ;&no-touch-canvas JCN2
.Mouse/x DEI2 CLN2r .canvas/x1 LDZ2 GTS2 STH2r .canvas/x2 LDZ2 LTS2 #0101 NEQ2 ;&no-touch-canvas JCN2
.Mouse/y DEI2 CLN2r .canvas/y1 LDZ2 GTS2 STH2r .canvas/y2 LDZ2 LTS2 #0101 NEQ2 ;&no-touch-canvas JCN2
( set cursor operation )
;add-pixel .Mouse/state DEI #01 EQU ;&no-oper JCN2 POP2 ;remove-pixel &no-oper .brush/oper POK2
;add-pixel .Mouse/state DEI #01 EQU ;&no-oper JCN2 POP2 ;remove-pixel &no-oper .brush/oper STZ2
.brush/tool PEK #00 NEQ ,&no-touch-pen JCN
.cursor/x0 PEK2 .canvas/x1 PEK2 SUB2 .cursor/y0 PEK2 .canvas/y1 PEK2 SUB2 .Mouse/x DEI2 .canvas/x1 PEK2 SUB2 .Mouse/y DEI2 .canvas/y1 PEK2 SUB2 ;paint-line JSR2
.brush/tool LDZ #00 NEQ ,&no-touch-pen JCN
.cursor/x0 LDZ2 .canvas/x1 LDZ2 SUB2 .cursor/y0 LDZ2 .canvas/y1 LDZ2 SUB2 .Mouse/x DEI2 .canvas/x1 LDZ2 SUB2 .Mouse/y DEI2 .canvas/y1 LDZ2 SUB2 ;paint-line JSR2
;&touch-end JMP2
&no-touch-pen
.brush/tool PEK #01 NEQ ,&no-touch-brush JCN
.Mouse/x DEI2 .canvas/x1 PEK2 SUB2 .Mouse/y DEI2 .canvas/y1 PEK2 SUB2 ;paint-brush JSR2
.brush/tool LDZ #01 NEQ ,&no-touch-brush JCN
.Mouse/x DEI2 .canvas/x1 LDZ2 SUB2 .Mouse/y DEI2 .canvas/y1 LDZ2 SUB2 ;paint-brush JSR2
;&touch-end JMP2
&no-touch-brush
.brush/tool PEK #04 NEQ ,&no-touch-zoom JCN
.zoom/active PEK #00 EQU .zoom/active POK
.brush/tool LDZ #04 NEQ ,&no-touch-zoom JCN
.zoom/active LDZ #00 EQU .zoom/active STZ
( release ) #00 .Mouse/state DEO
.Mouse/x DEI2 .canvas/x1 PEK2 SUB2 .canvas/w PEK2 2/ SUB2 .zoom/x POK2
.Mouse/y DEI2 .canvas/y1 PEK2 SUB2 .canvas/h PEK2 2/ SUB2 .zoom/y POK2
.Mouse/x DEI2 .canvas/x1 LDZ2 SUB2 .canvas/w LDZ2 2/ SUB2 .zoom/x STZ2
.Mouse/y DEI2 .canvas/y1 LDZ2 SUB2 .canvas/h LDZ2 2/ SUB2 .zoom/y STZ2
;redraw JSR2
;&touch-end JMP2
&no-touch-zoom
@ -260,7 +260,7 @@ BRK
&no-eye-button
DUP #01 NEQ ,&no-rename-button JCN
;rename JSR2
#01 .document/edit POK
#01 .document/edit STZ
( release ) #00 .Mouse/state DEO
&no-rename-button
DUP #02 NEQ ,&no-load-button JCN
@ -280,71 +280,71 @@ BRK
&no-touch
.Mouse/x DEI2 .cursor/x0 POK2
.Mouse/y DEI2 .cursor/y0 POK2
.Mouse/state DEI .brush/last POK
.Mouse/x DEI2 .cursor/x0 STZ2
.Mouse/y DEI2 .cursor/y0 STZ2
.Mouse/state DEI .brush/last STZ
BRK
@on-button ( -> )
( if in renaming mode )
.document/edit PEK #01 NEQ ;&no-edit JCN2
.document/edit LDZ #01 NEQ ;&no-edit JCN2
.Controller/key DEI #00 EQU ;&no-edit JCN2
( enter )
.Controller/key DEI #0d NEQ ,&no-edit-enter JCN
#00 .document/edit POK
#00 .document/edit STZ
;redraw JSR2
BRK
&no-edit-enter
( backspace )
.Controller/key DEI #08 NEQ ,&no-edit-backspace JCN
.path/length PEK #00 EQU ,&edit-end JCN
.path/length PEK #01 SUB .path/length POK
#00 ;path/name #00 .path/length PEK ADD2 STA
.path/length LDZ #00 EQU ,&edit-end JCN
.path/length LDZ #01 SUB .path/length STZ
#00 ;path/name #00 .path/length LDZ ADD2 STA
BRK
&no-edit-backspace
( default )
.path/length PEK #1f EQU ,&edit-end JCN
.Controller/key DEI ;path/name #00 .path/length PEK ADD2 STA
.path/length PEK #01 ADD .path/length POK
.path/length LDZ #1f EQU ,&edit-end JCN
.Controller/key DEI ;path/name #00 .path/length LDZ ADD2 STA
.path/length LDZ #01 ADD .path/length STZ
&edit-end
#00 ;path/name #00 .path/length PEK ADD2 STA
#00 ;path/name #00 .path/length LDZ ADD2 STA
BRK
&no-edit
( control zoom )
.zoom/active PEK #00 EQU ,&skip-zoom JCN
.zoom/active LDZ #00 EQU ,&skip-zoom JCN
.Controller/button DEI #f0 AND
DUP #04 SFT #01 AND #01 NEQ ,&no-up JCN
( move ) .zoom/y PEK2 -- .zoom/y POK2 &no-up
( move ) .zoom/y LDZ2 -- .zoom/y STZ2 &no-up
DUP #05 SFT #01 AND #01 NEQ ,&no-down JCN
( move ) .zoom/y PEK2 ++ .zoom/y POK2 &no-down
( move ) .zoom/y LDZ2 ++ .zoom/y STZ2 &no-down
DUP #06 SFT #01 AND #01 NEQ ,&no-left JCN
( move ) .zoom/x PEK2 -- .zoom/x POK2 &no-left
( move ) .zoom/x LDZ2 -- .zoom/x STZ2 &no-left
DUP #07 SFT #01 AND #01 NEQ ,&no-right JCN
( move ) .zoom/x PEK2 ++ .zoom/x POK2 &no-right
( move ) .zoom/x LDZ2 ++ .zoom/x STZ2 &no-right
#00 EQU #04 JCN ;draw-canvas JSR2
&skip-zoom
.Controller/key DEI
DUP #20 NEQ ,&no-space JCN
( toggle zoom ) .zoom/active PEK #00 EQU .zoom/active POK ;redraw JSR2 &no-space
( toggle zoom ) .zoom/active LDZ #00 EQU .zoom/active STZ ;redraw JSR2 &no-space
DUP #08 NEQ ,&no-backspace JCN
( erase ) ;clear JSR2 &no-backspace
DUP #71 NEQ ,&no-qkey JCN
( tool0 ) #00 .brush/tool POK ;draw-toolpane JSR2 &no-qkey
( tool0 ) #00 .brush/tool STZ ;draw-toolpane JSR2 &no-qkey
DUP #77 NEQ ,&no-wkey JCN
( tool0 ) #01 .brush/tool POK ;draw-toolpane JSR2 &no-wkey
( tool0 ) #01 .brush/tool STZ ;draw-toolpane JSR2 &no-wkey
DUP #65 NEQ ,&no-ekey JCN
( tool0 ) #02 .brush/tool POK ;draw-toolpane JSR2 &no-ekey
( tool0 ) #02 .brush/tool STZ ;draw-toolpane JSR2 &no-ekey
DUP #72 NEQ ,&no-rkey JCN
( tool0 ) #03 .brush/tool POK ;draw-toolpane JSR2 &no-rkey
( tool0 ) #03 .brush/tool STZ ;draw-toolpane JSR2 &no-rkey
DUP #74 NEQ ,&no-tkey JCN
( tool0 ) #04 .brush/tool POK ;draw-toolpane JSR2 &no-tkey
( tool0 ) #04 .brush/tool STZ ;draw-toolpane JSR2 &no-tkey
DUP
DUP #30 GTH SWP #39 LTH #0101 NEQ2 ,&no-numkey JCN
( size ) .Controller/key DEI #31 SUB .brush/size POK ;draw-sizepane JSR2 &no-numkey
( size ) .Controller/key DEI #31 SUB .brush/size STZ ;draw-sizepane JSR2 &no-numkey
POP
BRK
@ -352,12 +352,12 @@ BRK
@center ( -- )
( clear old )
.canvas/x1 PEK2 #0002 SUB2 .canvas/y1 PEK2 #0002 SUB2 .canvas/x2 PEK2 #0002 ADD2 .canvas/y2 PEK2 #0002 ADD2 #00 ;fill-rect JSR2
.canvas/x1 LDZ2 #0002 SUB2 .canvas/y1 LDZ2 #0002 SUB2 .canvas/x2 LDZ2 #0002 ADD2 .canvas/y2 LDZ2 #0002 ADD2 #00 ;fill-rect JSR2
;draw-background JSR2
.Screen/width DEI2 #0002 DIV2 .canvas/w PEK2 8* 2/ SUB2 .canvas/x1 POK2
.Screen/height DEI2 #0002 DIV2 .canvas/h PEK2 8* 2/ SUB2 .canvas/y1 POK2
.Screen/width DEI2 #0002 DIV2 .canvas/w LDZ2 8* 2/ SUB2 .canvas/x1 STZ2
.Screen/height DEI2 #0002 DIV2 .canvas/h LDZ2 8* 2/ SUB2 .canvas/y1 STZ2
;fit-canvas JSR2
;draw-foreground JSR2
@ -367,7 +367,7 @@ RTN
@rename
;untitled_txt ;path/name ;strcpy JSR2
#00 .path/length POK
#00 .path/length STZ
RTN
@ -385,21 +385,21 @@ RTN
@present
.document/presentation PEK #00 EQU .document/presentation POK
.document/presentation LDZ #00 EQU .document/presentation STZ
.document/presentation PEK
.document/presentation LDZ
DUP #00 NEQ ,&skip0 JCN
.theme/r0 PEK2 .System/r DEO2 .theme/g0 PEK2 .System/g DEO2 .theme/b0 PEK2 .System/b DEO2
.theme/r0 LDZ2 .System/r DEO2 .theme/g0 LDZ2 .System/g DEO2 .theme/b0 LDZ2 .System/b DEO2
&skip0
DUP #01 NEQ ,&skip1 JCN
.theme/r1 PEK2 .System/r DEO2 .theme/g1 PEK2 .System/g DEO2 .theme/b1 PEK2 .System/b DEO2
.theme/r1 LDZ2 .System/r DEO2 .theme/g1 LDZ2 .System/g DEO2 .theme/b1 LDZ2 .System/b DEO2
&skip1
POP
.toolpane/x1 PEK2 #0002 SUB2 .toolpane/y1 PEK2 #0002 SUB2 .toolpane/x2 PEK2 ++ .toolpane/y2 PEK2 ++ #00 ;fill-rect JSR2
.pattpane/x1 PEK2 #0002 SUB2 .pattpane/y1 PEK2 #0002 SUB2 .pattpane/x2 PEK2 ++ .pattpane/y2 PEK2 ++ #00 ;fill-rect JSR2
.sizepane/x1 PEK2 #0002 SUB2 .sizepane/y1 PEK2 #0002 SUB2 .sizepane/x2 PEK2 ++ .sizepane/y2 PEK2 ++ #00 ;fill-rect JSR2
.viewpane/x1 PEK2 #0002 SUB2 .viewpane/y1 PEK2 #0002 SUB2 .viewpane/x2 PEK2 ++ .viewpane/y2 PEK2 ++ #00 ;fill-rect JSR2
.toolpane/x1 LDZ2 #0002 SUB2 .toolpane/y1 LDZ2 #0002 SUB2 .toolpane/x2 LDZ2 ++ .toolpane/y2 LDZ2 ++ #00 ;fill-rect JSR2
.pattpane/x1 LDZ2 #0002 SUB2 .pattpane/y1 LDZ2 #0002 SUB2 .pattpane/x2 LDZ2 ++ .pattpane/y2 LDZ2 ++ #00 ;fill-rect JSR2
.sizepane/x1 LDZ2 #0002 SUB2 .sizepane/y1 LDZ2 #0002 SUB2 .sizepane/x2 LDZ2 ++ .sizepane/y2 LDZ2 ++ #00 ;fill-rect JSR2
.viewpane/x1 LDZ2 #0002 SUB2 .viewpane/y1 LDZ2 #0002 SUB2 .viewpane/x2 LDZ2 ++ .viewpane/y2 LDZ2 ++ #00 ;fill-rect JSR2
( clear panes )
;redraw JSR2
@ -408,41 +408,41 @@ RTN
@fit-canvas
.canvas/w PEK2 8* .canvas/x1 PEK2 ADD2 .canvas/x2 POK2
.canvas/h PEK2 8* .canvas/y1 PEK2 ADD2 .canvas/y2 POK2
.canvas/x1 PEK2 -- .canvas/y1 PEK2 -- .canvas/x2 PEK2 .canvas/y2 PEK2 #01 ;line-rect JSR2
.canvas/w LDZ2 8* .canvas/x1 LDZ2 ADD2 .canvas/x2 STZ2
.canvas/h LDZ2 8* .canvas/y1 LDZ2 ADD2 .canvas/y2 STZ2
.canvas/x1 LDZ2 -- .canvas/y1 LDZ2 -- .canvas/x2 LDZ2 .canvas/y2 LDZ2 #01 ;line-rect JSR2
;draw-canvas JSR2
RTN
@paint-line ( x1 y1 x2 y2 -- )
( load ) .line/y1 POK2 .line/x1 POK2 .line/y2 POK2 .line/x2 POK2
( load ) .line/y1 STZ2 .line/x1 STZ2 .line/y2 STZ2 .line/x2 STZ2
( trim if zoomed )
.zoom/active PEK #01 NEQ ,&no-zoom JCN
.line/x1 PEK2 8/ .zoom/x PEK2 ADD2 .line/x1 POK2
.line/y1 PEK2 8/ .zoom/y PEK2 ADD2 .line/y1 POK2
.line/x2 PEK2 8/ .zoom/x PEK2 ADD2 .line/x2 POK2
.line/y2 PEK2 8/ .zoom/y PEK2 ADD2 .line/y2 POK2
.zoom/active LDZ #01 NEQ ,&no-zoom JCN
.line/x1 LDZ2 8/ .zoom/x LDZ2 ADD2 .line/x1 STZ2
.line/y1 LDZ2 8/ .zoom/y LDZ2 ADD2 .line/y1 STZ2
.line/x2 LDZ2 8/ .zoom/x LDZ2 ADD2 .line/x2 STZ2
.line/y2 LDZ2 8/ .zoom/y LDZ2 ADD2 .line/y2 STZ2
&no-zoom
.line/x1 PEK2 .line/x2 PEK2 SUB2 ABS2 .line/dx POK2
.line/y1 PEK2 .line/y2 PEK2 SUB2 ABS2 #0000 SWP2 SUB2 .line/dy POK2
#ffff #00 .line/x2 PEK2 .line/x1 PEK2 LTS2 #0002 MUL2 ADD2 .line/sx POK2
#ffff #00 .line/y2 PEK2 .line/y1 PEK2 LTS2 #0002 MUL2 ADD2 .line/sy POK2
.line/dx PEK2 .line/dy PEK2 ADD2 .line/e1 POK2
.line/x1 LDZ2 .line/x2 LDZ2 SUB2 ABS2 .line/dx STZ2
.line/y1 LDZ2 .line/y2 LDZ2 SUB2 ABS2 #0000 SWP2 SUB2 .line/dy STZ2
#ffff #00 .line/x2 LDZ2 .line/x1 LDZ2 LTS2 #0002 MUL2 ADD2 .line/sx STZ2
#ffff #00 .line/y2 LDZ2 .line/y1 LDZ2 LTS2 #0002 MUL2 ADD2 .line/sy STZ2
.line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
&loop
( paint ) .line/x2 PEK2 .line/y2 PEK2 .brush/oper PEK2 JSR2
.line/x2 PEK2 .line/x1 PEK2 EQU2 .line/y2 PEK2 .line/y1 PEK2 EQU2 #0101 EQU2 ,&end JCN
.line/e1 PEK2 #0002 MUL2 .line/e2 POK2
.line/e2 PEK2 .line/dy PEK2 LTS2 ,&skipy JCN
.line/e1 PEK2 .line/dy PEK2 ADD2 .line/e1 POK2
.line/x2 PEK2 .line/sx PEK2 ADD2 .line/x2 POK2
( paint ) .line/x2 LDZ2 .line/y2 LDZ2 .brush/oper LDZ2 JSR2
.line/x2 LDZ2 .line/x1 LDZ2 EQU2 .line/y2 LDZ2 .line/y1 LDZ2 EQU2 #0101 EQU2 ,&end JCN
.line/e1 LDZ2 #0002 MUL2 .line/e2 STZ2
.line/e2 LDZ2 .line/dy LDZ2 LTS2 ,&skipy JCN
.line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
.line/x2 LDZ2 .line/sx LDZ2 ADD2 .line/x2 STZ2
&skipy
.line/e2 PEK2 .line/dx PEK2 GTS2 ,&skipx JCN
.line/e1 PEK2 .line/dx PEK2 ADD2 .line/e1 POK2
.line/y2 PEK2 .line/sy PEK2 ADD2 .line/y2 POK2
.line/e2 LDZ2 .line/dx LDZ2 GTS2 ,&skipx JCN
.line/e1 LDZ2 .line/dx LDZ2 ADD2 .line/e1 STZ2
.line/y2 LDZ2 .line/sy LDZ2 ADD2 .line/y2 STZ2
&skipx
;&loop JMP2
&end
@ -454,29 +454,29 @@ RTN
@paint-rect ( x1 y1 x2 y2 -- )
( load ) .rect/y2 POK2 .rect/x2 POK2 .rect/y1 POK2 .rect/x1 POK2
( load ) .rect/y2 STZ2 .rect/x2 STZ2 .rect/y1 STZ2 .rect/x1 STZ2
( trim if zoomed )
.zoom/active PEK #01 NEQ ,&no-zoom JCN
.rect/x1 PEK2 8/ .zoom/x PEK2 ADD2 .rect/x1 POK2
.rect/y1 PEK2 8/ .zoom/y PEK2 ADD2 .rect/y1 POK2
.rect/x2 PEK2 8/ .zoom/x PEK2 ADD2 #0001 ADD2 .rect/x2 POK2
.rect/y2 PEK2 8/ .zoom/y PEK2 ADD2 #0001 ADD2 .rect/y2 POK2
.zoom/active LDZ #01 NEQ ,&no-zoom JCN
.rect/x1 LDZ2 8/ .zoom/x LDZ2 ADD2 .rect/x1 STZ2
.rect/y1 LDZ2 8/ .zoom/y LDZ2 ADD2 .rect/y1 STZ2
.rect/x2 LDZ2 8/ .zoom/x LDZ2 ADD2 #0001 ADD2 .rect/x2 STZ2
.rect/y2 LDZ2 8/ .zoom/y LDZ2 ADD2 #0001 ADD2 .rect/y2 STZ2
&no-zoom
.rect/x1 PEK2 .pt2/x POK2
.rect/y1 PEK2 .pt2/y POK2
.rect/x1 LDZ2 .pt2/x STZ2
.rect/y1 LDZ2 .pt2/y STZ2
&ver
.rect/x1 PEK2 .pt2/x POK2
.rect/x1 LDZ2 .pt2/x STZ2
&hor
.pt2/x PEK2 SWP POP .px/x POK .pt2/y PEK2 SWP POP .px/y POK
.pt2/x LDZ2 SWP POP .px/x STZ .pt2/y LDZ2 SWP POP .px/y STZ
;patternize JSR2 #00 EQU ,&no-pixel JCN
( draw ) .pt2/x PEK2 .pt2/y PEK2 .brush/oper PEK2 JSR2 &no-pixel
( incr ) .pt2/x PEK2 ++ .pt2/x POK2
.pt2/x PEK2 .rect/x2 PEK2 LTS2 ,&hor JCN
.pt2/y PEK2 ++ .pt2/y POK2
.pt2/y PEK2 .rect/y2 PEK2 LTS2 ,&ver JCN
( draw ) .pt2/x LDZ2 .pt2/y LDZ2 .brush/oper LDZ2 JSR2 &no-pixel
( incr ) .pt2/x LDZ2 ++ .pt2/x STZ2
.pt2/x LDZ2 .rect/x2 LDZ2 LTS2 ,&hor JCN
.pt2/y LDZ2 ++ .pt2/y STZ2
.pt2/y LDZ2 .rect/y2 LDZ2 LTS2 ,&ver JCN
;draw-canvas JSR2
;draw-foreground JSR2
@ -485,27 +485,27 @@ RTN
@paint-brush ( x y -- )
#0003 SUB2 .pt0/y POK2 #0003 SUB2 .pt0/x POK2 ( cursor offset )
#0003 SUB2 .pt0/y STZ2 #0003 SUB2 .pt0/x STZ2 ( cursor offset )
( trim if zoomed )
.zoom/active PEK #01 NEQ ,&no-zoom JCN
.pt0/x PEK2 8/ .zoom/x PEK2 ADD2 #0003 SUB2 .pt0/x POK2
.pt0/y PEK2 8/ .zoom/y PEK2 ADD2 #0003 SUB2 .pt0/y POK2
.zoom/active LDZ #01 NEQ ,&no-zoom JCN
.pt0/x LDZ2 8/ .zoom/x LDZ2 ADD2 #0003 SUB2 .pt0/x STZ2
.pt0/y LDZ2 8/ .zoom/y LDZ2 ADD2 #0003 SUB2 .pt0/y STZ2
&no-zoom
#00 .px/x POK #00 .px/y POK
#00 .px/x STZ #00 .px/y STZ
&ver
#00 .px/x POK
#00 .px/x STZ
&hor
( addr ) ;size_icns #00 .brush/size PEK 8* ADD2
( byte ) #00 .px/y PEK ADD2 LDA #07 .px/x PEK SUB SFT #01 AND
( addr ) ;size_icns #00 .brush/size LDZ 8* ADD2
( byte ) #00 .px/y LDZ ADD2 LDA #07 .px/x LDZ SUB SFT #01 AND
#00 EQU ,&no-pixel JCN
;patternize JSR2 #00 EQU ,&no-pixel JCN
.pt0/x PEK2 #00 .px/x PEK ADD2 .pt0/y PEK2 #00 .px/y PEK ADD2 .brush/oper PEK2 JSR2 &no-pixel
( incr ) .px/x PEK #01 ADD .px/x POK
.px/x PEK #08 LTH ,&hor JCN
( incr ) .px/y PEK #01 ADD .px/y POK
.px/y PEK #08 LTH ,&ver JCN
.pt0/x LDZ2 #00 .px/x LDZ ADD2 .pt0/y LDZ2 #00 .px/y LDZ ADD2 .brush/oper LDZ2 JSR2 &no-pixel
( incr ) .px/x LDZ #01 ADD .px/x STZ
.px/x LDZ #08 LTH ,&hor JCN
( incr ) .px/y LDZ #01 ADD .px/y STZ
.px/y LDZ #08 LTH ,&ver JCN
;draw-canvas JSR2
;draw-foreground JSR2
@ -514,38 +514,38 @@ RTN
@patternize ( -- )
.brush/patt PEK #00 NEQ ,&noplain JCN
.brush/patt LDZ #00 NEQ ,&noplain JCN
#01 RTN &noplain
.brush/patt PEK #01 NEQ ,&notone1 JCN
.pt0/x PEK2 #00 .px/x PEK ADD2 .pt0/y PEK2 #00 .px/y PEK ADD2 ADD2 #0001 AND2 #0000 EQU2
.pt0/x PEK2 #00 .px/x PEK ADD2 .pt0/y PEK2 #00 .px/y PEK ADD2 SUB2 #0001 AND2 #0000 EQU2
.brush/patt LDZ #01 NEQ ,&notone1 JCN
.pt0/x LDZ2 #00 .px/x LDZ ADD2 .pt0/y LDZ2 #00 .px/y LDZ ADD2 ADD2 #0001 AND2 #0000 EQU2
.pt0/x LDZ2 #00 .px/x LDZ ADD2 .pt0/y LDZ2 #00 .px/y LDZ ADD2 SUB2 #0001 AND2 #0000 EQU2
#0101 EQU2
RTN &notone1
.brush/patt PEK #02 NEQ ,&notone2 JCN
.pt0/x PEK2 #00 .px/x PEK ADD2 .pt0/y PEK2 #00 .px/y PEK ADD2 ADD2 #0003 AND2 #0000 EQU2
.pt0/x PEK2 #00 .px/x PEK ADD2 .pt0/y PEK2 #00 .px/y PEK ADD2 SUB2 #0003 AND2 #0000 EQU2
.brush/patt LDZ #02 NEQ ,&notone2 JCN
.pt0/x LDZ2 #00 .px/x LDZ ADD2 .pt0/y LDZ2 #00 .px/y LDZ ADD2 ADD2 #0003 AND2 #0000 EQU2
.pt0/x LDZ2 #00 .px/x LDZ ADD2 .pt0/y LDZ2 #00 .px/y LDZ ADD2 SUB2 #0003 AND2 #0000 EQU2
#0101 EQU2
RTN &notone2
.brush/patt PEK #03 NEQ ,&notone3 JCN
.pt0/x PEK2 #00 .px/x PEK ADD2 .pt0/y PEK2 #00 .px/y PEK ADD2 ADD2 #0005 AND2 #0000 EQU2
.pt0/x PEK2 #00 .px/x PEK ADD2 .pt0/y PEK2 #00 .px/y PEK ADD2 SUB2 #0005 AND2 #0000 EQU2
.brush/patt LDZ #03 NEQ ,&notone3 JCN
.pt0/x LDZ2 #00 .px/x LDZ ADD2 .pt0/y LDZ2 #00 .px/y LDZ ADD2 ADD2 #0005 AND2 #0000 EQU2
.pt0/x LDZ2 #00 .px/x LDZ ADD2 .pt0/y LDZ2 #00 .px/y LDZ ADD2 SUB2 #0005 AND2 #0000 EQU2
#0101 EQU2
RTN &notone3
.brush/patt PEK #04 NEQ ,&notone4 JCN
.pt0/x PEK2 #00 .px/x PEK ADD2 .pt0/y PEK2 #00 .px/y PEK ADD2 ADD2 #0003 AND2 #0000 EQU2 RTN &notone4
.brush/patt LDZ #04 NEQ ,&notone4 JCN
.pt0/x LDZ2 #00 .px/x LDZ ADD2 .pt0/y LDZ2 #00 .px/y LDZ ADD2 ADD2 #0003 AND2 #0000 EQU2 RTN &notone4
.brush/patt PEK #05 NEQ ,&notone5 JCN
.pt0/x PEK2 #00 .px/x PEK ADD2 .pt0/y PEK2 #00 .px/y PEK ADD2 SUB2 #0003 AND2 #0000 EQU2 RTN &notone5
.brush/patt LDZ #05 NEQ ,&notone5 JCN
.pt0/x LDZ2 #00 .px/x LDZ ADD2 .pt0/y LDZ2 #00 .px/y LDZ ADD2 SUB2 #0003 AND2 #0000 EQU2 RTN &notone5
.brush/patt PEK #06 NEQ ,&notone6 JCN
.pt0/x PEK2 #00 .px/x PEK ADD2 #0001 AND2 SWP POP RTN &notone6
.brush/patt LDZ #06 NEQ ,&notone6 JCN
.pt0/x LDZ2 #00 .px/x LDZ ADD2 #0001 AND2 SWP POP RTN &notone6
.brush/patt PEK #07 NEQ ,&notone7 JCN
.pt0/y PEK2 #00 .px/y PEK ADD2 #0001 AND2 SWP POP RTN &notone7
.brush/patt LDZ #07 NEQ ,&notone7 JCN
.pt0/y LDZ2 #00 .px/y LDZ ADD2 #0001 AND2 SWP POP RTN &notone7
#00
@ -553,30 +553,30 @@ RTN
@get-pixel ( x y -- b )
SWP POP #07 AND .px/y POK
SWP POP #07 AND .px/x POK
( get tile ) .pt1/x PEK2 8/ .pt1/y PEK2 8/ .canvas/w PEK2 MUL2 ADD2 8*
SWP POP #07 AND .px/y STZ
SWP POP #07 AND .px/x STZ
( get tile ) .pt1/x LDZ2 8/ .pt1/y LDZ2 8/ .canvas/w LDZ2 MUL2 ADD2 8*
( add addr ) ;data ADD2
#00 .px/y PEK ADD2 LDA #07 .px/x PEK SUB SFT #01 AND
#00 .px/y LDZ ADD2 LDA #07 .px/x LDZ SUB SFT #01 AND
RTN
@add-pixel ( x y -- )
.pt1/y POK2 .pt1/x POK2
( get tile addr ) ;data .pt1/x PEK2 8/ .pt1/y PEK2 8/ .canvas/w PEK2 MUL2 ADD2 8* .pt1/y PEK2 MOD8 ADD2 ADD2
.pt1/y STZ2 .pt1/x STZ2
( get tile addr ) ;data .pt1/x LDZ2 8/ .pt1/y LDZ2 8/ .canvas/w LDZ2 MUL2 ADD2 8* .pt1/y LDZ2 MOD8 ADD2 ADD2
( load ) DUP2 LDA
( mask ) #01 #07 .pt1/x PEK2 MOD8 SWP POP SUB SFL ORA
( mask ) #01 #07 .pt1/x LDZ2 MOD8 SWP POP SUB SFL ORA
( save ) ROT ROT STA
RTN
@remove-pixel ( x y -- )
.pt1/y POK2 .pt1/x POK2
( get tile addr ) ;data .pt1/x PEK2 8/ .pt1/y PEK2 8/ .canvas/w PEK2 MUL2 ADD2 8* .pt1/y PEK2 MOD8 ADD2 ADD2
.pt1/y STZ2 .pt1/x STZ2
( get tile addr ) ;data .pt1/x LDZ2 8/ .pt1/y LDZ2 8/ .canvas/w LDZ2 MUL2 ADD2 8* .pt1/y LDZ2 MOD8 ADD2 ADD2
( load ) DUP2 LDA
( mask ) #01 #07 .pt1/x PEK2 MOD8 SWP POP SUB SFL #ff EOR AND
( mask ) #01 #07 .pt1/x LDZ2 MOD8 SWP POP SUB SFL #ff EOR AND
( save ) ROT ROT STA
RTN
@ -609,39 +609,39 @@ RTN
@draw-canvas ( -- )
.zoom/active PEK #01 EQU ;draw-canvas-zoom JCN2
.zoom/active LDZ #01 EQU ;draw-canvas-zoom JCN2
.canvas/y1 PEK2 .Screen/y DEO2
.canvas/y1 LDZ2 .Screen/y DEO2
;data .Screen/addr DEO2
&ver
.canvas/x1 PEK2 .Screen/x DEO2
.canvas/x1 LDZ2 .Screen/x DEO2
&hor
( draw ) #29 .Screen/color DEO
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
( incr ) .Screen/addr DEI2 8+ .Screen/addr DEO2
.Screen/x DEI2 .canvas/x2 PEK2 NEQ2 ,&hor JCN
.Screen/x DEI2 .canvas/x2 LDZ2 NEQ2 ,&hor JCN
( incr ) .Screen/y DEI2 8+ .Screen/y DEO2
.Screen/y DEI2 .canvas/y2 PEK2 NEQ2 ,&ver JCN
.Screen/y DEI2 .canvas/y2 LDZ2 NEQ2 ,&ver JCN
RTN
@draw-canvas-zoom ( -- )
.zoom/y PEK2 .pt1/y POK2
.canvas/y1 PEK2 .Screen/y DEO2
.zoom/y LDZ2 .pt1/y STZ2
.canvas/y1 LDZ2 .Screen/y DEO2
;data .Screen/addr DEO2
&ver
.canvas/x1 PEK2 .Screen/x DEO2
.zoom/x PEK2 .pt1/x POK2
.canvas/x1 LDZ2 .Screen/x DEO2
.zoom/x LDZ2 .pt1/x STZ2
&hor
( incr ) ;bigpixel_icn #0008 #00 .pt1/x PEK2 .pt1/y PEK2 ;get-pixel JSR2 MUL2 ADD2 .Screen/addr DEO2
( incr ) ;bigpixel_icn #0008 #00 .pt1/x LDZ2 .pt1/y LDZ2 ;get-pixel JSR2 MUL2 ADD2 .Screen/addr DEO2
( draw ) #29 .Screen/color DEO
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
( incr ) .pt1/x PEK2 ++ .pt1/x POK2
.Screen/x DEI2 .canvas/x2 PEK2 NEQ2 ,&hor JCN
( incr ) .pt1/x LDZ2 ++ .pt1/x STZ2
.Screen/x DEI2 .canvas/x2 LDZ2 NEQ2 ,&hor JCN
( incr ) .Screen/y DEI2 8+ .Screen/y DEO2
( incr ) .pt1/y PEK2 ++ .pt1/y POK2
.Screen/y DEI2 .canvas/y2 PEK2 NEQ2 ,&ver JCN
( incr ) .pt1/y LDZ2 ++ .pt1/y STZ2
.Screen/y DEI2 .canvas/y2 LDZ2 NEQ2 ,&ver JCN
RTN
@ -649,28 +649,28 @@ RTN
;blank_icn .Screen/addr DEO2
( clear brush size )
.cursor/x PEK2 #0003 SUB2 .Screen/x DEO2 .cursor/y PEK2 #0003 SUB2 .Screen/y DEO2 #30 .Screen/color DEO
.cursor/x LDZ2 #0003 SUB2 .Screen/x DEO2 .cursor/y LDZ2 #0003 SUB2 .Screen/y DEO2 #30 .Screen/color DEO
( clear last cursor )
.cursor/x PEK2 .Screen/x DEO2 .cursor/y PEK2 .Screen/y DEO2 #30 .Screen/color DEO
.cursor/x LDZ2 .Screen/x DEO2 .cursor/y LDZ2 .Screen/y DEO2 #30 .Screen/color DEO
( record cursor positions )
.Mouse/x DEI2 .cursor/x POK2 .Mouse/y DEI2 .cursor/y POK2
.Mouse/x DEI2 .cursor/x STZ2 .Mouse/y DEI2 .cursor/y STZ2
( draw size cursor )
.brush/tool PEK #01 NEQ ;&outside-canvas JCN2
.brush/tool LDZ #01 NEQ ;&outside-canvas JCN2
( do not draw size when holding alt )
.Controller/button DEI #02 EQU ;&outside-canvas JCN2
.Mouse/x DEI2 CLN2r .canvas/x1 PEK2 GTH2 STH2r .canvas/x2 PEK2 LTH2 #0101 NEQ2 ;&outside-canvas JCN2
.Mouse/y DEI2 CLN2r .canvas/y1 PEK2 GTH2 STH2r .canvas/y2 PEK2 LTH2 #0101 NEQ2 ;&outside-canvas JCN2
.Mouse/x DEI2 CLN2r .canvas/x1 LDZ2 GTH2 STH2r .canvas/x2 LDZ2 LTH2 #0101 NEQ2 ;&outside-canvas JCN2
.Mouse/y DEI2 CLN2r .canvas/y1 LDZ2 GTH2 STH2r .canvas/y2 LDZ2 LTH2 #0101 NEQ2 ;&outside-canvas JCN2
( do not draw size in toolpane )
.Mouse/x DEI2 CLN2r .toolpane/x1 PEK2 GTH2 STH2r .toolpane/x2 PEK2 LTH2 #0101 EQU2 .Mouse/y DEI2 CLN2r .toolpane/y1 PEK2 GTH2 STH2r .toolpane/y2 PEK2 LTH2 #0101 EQU2 #0101 EQU2 ;&outside-canvas JCN2
.Mouse/x DEI2 CLN2r .sizepane/x1 PEK2 GTH2 STH2r .sizepane/x2 PEK2 LTH2 #0101 EQU2 .Mouse/y DEI2 CLN2r .sizepane/y1 PEK2 GTH2 STH2r .sizepane/y2 PEK2 LTH2 #0101 EQU2 #0101 EQU2 ;&outside-canvas JCN2
.Mouse/x DEI2 CLN2r .pattpane/x1 PEK2 GTH2 STH2r .pattpane/x2 PEK2 LTH2 #0101 EQU2 .Mouse/y DEI2 CLN2r .pattpane/y1 PEK2 GTH2 STH2r .pattpane/y2 PEK2 LTH2 #0101 EQU2 #0101 EQU2 ;&outside-canvas JCN2
.cursor/x PEK2 #0003 SUB2 .Screen/x DEO2 .cursor/y PEK2 #0003 SUB2 .Screen/y DEO2
;brush_icns #00 .brush/size PEK 8* ADD2 .Screen/addr DEO2
.Mouse/x DEI2 CLN2r .toolpane/x1 LDZ2 GTH2 STH2r .toolpane/x2 LDZ2 LTH2 #0101 EQU2 .Mouse/y DEI2 CLN2r .toolpane/y1 LDZ2 GTH2 STH2r .toolpane/y2 LDZ2 LTH2 #0101 EQU2 #0101 EQU2 ;&outside-canvas JCN2
.Mouse/x DEI2 CLN2r .sizepane/x1 LDZ2 GTH2 STH2r .sizepane/x2 LDZ2 LTH2 #0101 EQU2 .Mouse/y DEI2 CLN2r .sizepane/y1 LDZ2 GTH2 STH2r .sizepane/y2 LDZ2 LTH2 #0101 EQU2 #0101 EQU2 ;&outside-canvas JCN2
.Mouse/x DEI2 CLN2r .pattpane/x1 LDZ2 GTH2 STH2r .pattpane/x2 LDZ2 LTH2 #0101 EQU2 .Mouse/y DEI2 CLN2r .pattpane/y1 LDZ2 GTH2 STH2r .pattpane/y2 LDZ2 LTH2 #0101 EQU2 #0101 EQU2 ;&outside-canvas JCN2
.cursor/x LDZ2 #0003 SUB2 .Screen/x DEO2 .cursor/y LDZ2 #0003 SUB2 .Screen/y DEO2
;brush_icns #00 .brush/size LDZ 8* ADD2 .Screen/addr DEO2
#31 .Mouse/state DEI #02 MUL ADD .Screen/color DEO
.Mouse/state DEI #00 EQU ,&outside-canvas JCN RTN
&outside-canvas
( draw new cursor )
.cursor/x PEK2 .Screen/x DEO2 .cursor/y PEK2 .Screen/y DEO2
.cursor/x LDZ2 .Screen/x DEO2 .cursor/y LDZ2 .Screen/y DEO2
;pointers_icn #00 .Controller/button DEI #02 EQU 8* ADD2 .Screen/addr DEO2
#3f .Mouse/state DEI #01 EQU #0a MUL SUB .Screen/color DEO
@ -678,79 +678,79 @@ RTN
@draw-toolpane ( -- )
.document/presentation PEK #00 EQU ,&skip JCN RTN &skip
.document/presentation LDZ #00 EQU ,&skip JCN RTN &skip
( frame )
.toolpane/x1 PEK2 -- .toolpane/y1 PEK2 -- .toolpane/x2 PEK2 .toolpane/y2 PEK2 #00 ;line-rect JSR2
.toolpane/x1 PEK2 #0002 SUB2 .toolpane/y1 PEK2 #0002 SUB2 .toolpane/x2 PEK2 .toolpane/y2 PEK2 #01 ;line-rect JSR2
.toolpane/x1 LDZ2 -- .toolpane/y1 LDZ2 -- .toolpane/x2 LDZ2 .toolpane/y2 LDZ2 #00 ;line-rect JSR2
.toolpane/x1 LDZ2 #0002 SUB2 .toolpane/y1 LDZ2 #0002 SUB2 .toolpane/x2 LDZ2 .toolpane/y2 LDZ2 #01 ;line-rect JSR2
.toolpane/x1 PEK2 .Screen/x DEO2 .toolpane/y1 PEK2 .Screen/y DEO2 ;tool_icns .Screen/addr DEO2
.toolpane/x1 LDZ2 .Screen/x DEO2 .toolpane/y1 LDZ2 .Screen/y DEO2 ;tool_icns .Screen/addr DEO2
&loop
( draw ) #21 .Screen/x DEI2 .toolpane/x1 PEK2 SUB2 8/ SWP POP .brush/tool PEK EQU #02 MUL ADD .Screen/color DEO
( draw ) #21 .Screen/x DEI2 .toolpane/x1 LDZ2 SUB2 8/ SWP POP .brush/tool LDZ EQU #02 MUL ADD .Screen/color DEO
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
( incr ) .Screen/addr DEI2 8+ .Screen/addr DEO2
.Screen/x DEI2 .toolpane/x2 PEK2 LTH2 ,&loop JCN
.Screen/x DEI2 .toolpane/x2 LDZ2 LTH2 ,&loop JCN
.zoom/active PEK #01 NEQ ,&no-zoom JCN
.zoom/active LDZ #01 NEQ ,&no-zoom JCN
.Screen/x DEI2 #0008 SUB2 .Screen/x DEO2
;tool_icns #0028 ADD2 .Screen/addr DEO2
#21 #04 .brush/tool PEK EQU #02 MUL ADD .Screen/color DEO
#21 #04 .brush/tool LDZ EQU #02 MUL ADD .Screen/color DEO
&no-zoom
RTN
@draw-pattpane ( -- )
.document/presentation PEK #00 EQU ,&skip JCN RTN &skip
.document/presentation LDZ #00 EQU ,&skip JCN RTN &skip
( frame )
.pattpane/x1 PEK2 -- .pattpane/y1 PEK2 -- .pattpane/x2 PEK2 .pattpane/y2 PEK2 #00 ;line-rect JSR2
.pattpane/x1 PEK2 #0002 SUB2 .pattpane/y1 PEK2 #0002 SUB2 .pattpane/x2 PEK2 .pattpane/y2 PEK2 #01 ;line-rect JSR2
.pattpane/x1 LDZ2 -- .pattpane/y1 LDZ2 -- .pattpane/x2 LDZ2 .pattpane/y2 LDZ2 #00 ;line-rect JSR2
.pattpane/x1 LDZ2 #0002 SUB2 .pattpane/y1 LDZ2 #0002 SUB2 .pattpane/x2 LDZ2 .pattpane/y2 LDZ2 #01 ;line-rect JSR2
.pattpane/x1 PEK2 .Screen/x DEO2 .pattpane/y1 PEK2 .Screen/y DEO2 ;patt_icns .Screen/addr DEO2
.pattpane/x1 LDZ2 .Screen/x DEO2 .pattpane/y1 LDZ2 .Screen/y DEO2 ;patt_icns .Screen/addr DEO2
&loop
( draw ) #21 .Screen/x DEI2 .pattpane/x1 PEK2 SUB2 8/ SWP POP .brush/patt PEK EQU #02 MUL ADD .Screen/color DEO
( draw ) #21 .Screen/x DEI2 .pattpane/x1 LDZ2 SUB2 8/ SWP POP .brush/patt LDZ EQU #02 MUL ADD .Screen/color DEO
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
( incr ) .Screen/addr DEI2 8+ .Screen/addr DEO2
.Screen/x DEI2 .pattpane/x2 PEK2 LTH2 ,&loop JCN
.Screen/x DEI2 .pattpane/x2 LDZ2 LTH2 ,&loop JCN
RTN
@draw-sizepane ( -- )
.document/presentation PEK #00 EQU ,&skip JCN RTN &skip
.document/presentation LDZ #00 EQU ,&skip JCN RTN &skip
( frame )
.sizepane/x1 PEK2 -- .sizepane/y1 PEK2 -- .sizepane/x2 PEK2 .sizepane/y2 PEK2 #00 ;line-rect JSR2
.sizepane/x1 PEK2 #0002 SUB2 .sizepane/y1 PEK2 #0002 SUB2 .sizepane/x2 PEK2 .sizepane/y2 PEK2 #01 ;line-rect JSR2
.sizepane/x1 LDZ2 -- .sizepane/y1 LDZ2 -- .sizepane/x2 LDZ2 .sizepane/y2 LDZ2 #00 ;line-rect JSR2
.sizepane/x1 LDZ2 #0002 SUB2 .sizepane/y1 LDZ2 #0002 SUB2 .sizepane/x2 LDZ2 .sizepane/y2 LDZ2 #01 ;line-rect JSR2
.sizepane/x1 PEK2 .Screen/x DEO2 .sizepane/y1 PEK2 .Screen/y DEO2 ;size_icns .Screen/addr DEO2
.sizepane/x1 LDZ2 .Screen/x DEO2 .sizepane/y1 LDZ2 .Screen/y DEO2 ;size_icns .Screen/addr DEO2
&loop
( draw ) #21 .Screen/x DEI2 .sizepane/x1 PEK2 SUB2 8/ SWP POP .brush/size PEK EQU #02 MUL ADD .Screen/color DEO
( draw ) #21 .Screen/x DEI2 .sizepane/x1 LDZ2 SUB2 8/ SWP POP .brush/size LDZ EQU #02 MUL ADD .Screen/color DEO
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
( incr ) .Screen/addr DEI2 8+ .Screen/addr DEO2
.Screen/x DEI2 .sizepane/x2 PEK2 LTH2 ,&loop JCN
.Screen/x DEI2 .sizepane/x2 LDZ2 LTH2 ,&loop JCN
RTN
@draw-viewpane ( -- )
.document/presentation PEK #00 EQU ,&skip JCN RTN &skip
.document/presentation LDZ #00 EQU ,&skip JCN RTN &skip
( frame )
.viewpane/x1 PEK2 -- .viewpane/y1 PEK2 -- .viewpane/x2 PEK2 .viewpane/y2 PEK2 #00 ;line-rect JSR2
.viewpane/x1 PEK2 #0002 SUB2 .viewpane/y1 PEK2 #0002 SUB2 .viewpane/x2 PEK2 .viewpane/y2 PEK2 #01 ;line-rect JSR2
.viewpane/x1 LDZ2 -- .viewpane/y1 LDZ2 -- .viewpane/x2 LDZ2 .viewpane/y2 LDZ2 #00 ;line-rect JSR2
.viewpane/x1 LDZ2 #0002 SUB2 .viewpane/y1 LDZ2 #0002 SUB2 .viewpane/x2 LDZ2 .viewpane/y2 LDZ2 #01 ;line-rect JSR2
.viewpane/x1 PEK2 .Screen/x DEO2 .viewpane/y1 PEK2 .Screen/y DEO2 ;view_icns .Screen/addr DEO2
.viewpane/x1 LDZ2 .Screen/x DEO2 .viewpane/y1 LDZ2 .Screen/y DEO2 ;view_icns .Screen/addr DEO2
&loop
( draw ) #21 .Screen/color DEO
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
( incr ) .Screen/addr DEI2 8+ .Screen/addr DEO2
.Screen/x DEI2 .viewpane/x2 PEK2 LTH2 ,&loop JCN
.Screen/x DEI2 .viewpane/x2 LDZ2 LTH2 ,&loop JCN
RTN
@ -766,29 +766,29 @@ RTN
@draw-background
( draw hor line )
#0000 .Screen/width DEI2 .Screen/height DEI2 #0002 DIV2 .document/presentation PEK #00 EQU ;line-horizontal-dotted JSR2
#0000 .Screen/width DEI2 .Screen/height DEI2 #0002 DIV2 .document/presentation LDZ #00 EQU ;line-horizontal-dotted JSR2
( draw ver line )
.Screen/width DEI2 #0002 DIV2 #0000 .Screen/height DEI2 .document/presentation PEK #00 EQU ;line-vertical-dotted JSR2
.Screen/width DEI2 #0002 DIV2 #0000 .Screen/height DEI2 .document/presentation LDZ #00 EQU ;line-vertical-dotted JSR2
.document/presentation PEK #01 EQU ;&skip-size JCN2
.document/presentation LDZ #01 EQU ;&skip-size JCN2
( draw size )
#0010 .Screen/y DEO2
( draw width )
.Screen/width DEI2 #00a0 SUB2 .Screen/x DEO2 ;font_hex .canvas/w PEK2 #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
.Screen/width DEI2 #00a0 SUB2 .Screen/x DEO2 ;font_hex .canvas/w LDZ2 #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
( draw ) #21 .Screen/color DEO
.Screen/x DEI2 8+ .Screen/x DEO2 ;font_hex .canvas/w PEK2 #0f AND #08 MUL ADD2 .Screen/addr DEO2
.Screen/x DEI2 8+ .Screen/x DEO2 ;font_hex .canvas/w LDZ2 #0f AND #08 MUL ADD2 .Screen/addr DEO2
( draw ) #21 .Screen/color DEO
( draw height )
.Screen/x DEI2 8+ .Screen/x DEO2 ;font_hex .canvas/h PEK2 #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
.Screen/x DEI2 8+ .Screen/x DEO2 ;font_hex .canvas/h LDZ2 #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
( draw ) #21 .Screen/color DEO
.Screen/x DEI2 8+ .Screen/x DEO2 ;font_hex .canvas/h PEK2 #0f AND #08 MUL ADD2 .Screen/addr DEO2
.Screen/x DEI2 8+ .Screen/x DEO2 ;font_hex .canvas/h LDZ2 #0f AND #08 MUL ADD2 .Screen/addr DEO2
( draw ) #21 .Screen/color DEO
&skip-size
( draw save/load/guides icons )
.Screen/height DEI2 #0010 SUB2 .Screen/y DEO2
.Screen/width DEI2 #0028 SUB2 .Screen/x DEO2
;eye_icn #00 .document/presentation PEK #08 MUL ADD2 .Screen/addr DEO2
;eye_icn #00 .document/presentation LDZ #08 MUL ADD2 .Screen/addr DEO2
#23 .Screen/color DEO
.Screen/x DEI2 8+ .Screen/x DEO2
;filestate_icn .Screen/addr DEO2
@ -809,20 +809,20 @@ RTN
@line-rect ( x1 y1 x2 y2 color -- )
( load ) .color POK DUP2 STH2 .rect/y2 POK2 .rect/x2 POK2 DUP2 STH2 .rect/y1 POK2 .rect/x1 POK2
( load ) .color STZ DUP2 STH2 .rect/y2 STZ2 .rect/x2 STZ2 DUP2 STH2 .rect/y1 STZ2 .rect/x1 STZ2
STH2r STH2r
&ver
( save ) OVR2 .Screen/y DEO2
( draw ) .rect/x1 PEK2 .Screen/x DEO2 .color PEK DUP .Screen/color DEO
( draw ) .rect/x2 PEK2 .Screen/x DEO2 .Screen/color DEO
( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ DUP .Screen/color DEO
( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .Screen/color DEO
( incr ) SWP2 ++ SWP2
OVR2 OVR2 LTS2 ,&ver JCN
POP2 POP2
.rect/x1 PEK2 .rect/x2 PEK2
.rect/x1 LDZ2 .rect/x2 LDZ2
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .rect/y1 PEK2 .Screen/y DEO2 .color PEK DUP .Screen/color DEO
( draw ) .rect/y2 PEK2 .Screen/y DEO2 .Screen/color DEO
( draw ) .rect/y1 LDZ2 .Screen/y DEO2 .color LDZ DUP .Screen/color DEO
( draw ) .rect/y2 LDZ2 .Screen/y DEO2 .Screen/color DEO
( incr ) SWP2 ++ SWP2
OVR2 OVR2 ++ LTS2 ,&hor JCN
POP2 POP2
@ -831,14 +831,14 @@ RTN
@fill-rect ( x1 y1 x2 y2 color -- )
.color POK
.color STZ
( x1 x2 y1 y2 ) ROT2 SWP2
&ver
( save ) OVR2 .Screen/y DEO2
STH2 STH2 OVR2 OVR2
&hor
( save ) OVR2 .Screen/x DEO2
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 ++ SWP2
OVR2 OVR2 LTS2 ,&hor JCN
POP2 POP2 STH2r STH2r
@ -850,10 +850,10 @@ RTN
@draw-label ( addr color -- )
.color POK
.color STZ
&loop
DUP2 LDA #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2
( draw ) .color PEK #20 ADD .Screen/color DEO
( draw ) .color LDZ #20 ADD .Screen/color DEO
( incr ) #0001 ADD2
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
( loop ) DUP2 LDA #00 NEQ ,&loop JCN
@ -863,9 +863,9 @@ RTN
@line-horizontal-dotted ( x0 x1 y color -- )
.color POK .Screen/y DEO2 OVR2 .Screen/x DEO2
.color STZ .Screen/y DEO2 OVR2 .Screen/x DEO2
&draw-hor
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 #0002 ADD2 DUP2 .Screen/x DEO2 SWP2
OVR2 OVR2 LTH2 ,&draw-hor JCN
POP2 POP2
@ -874,9 +874,9 @@ RTN
@line-vertical-dotted ( x y0 y1 color -- )
.color POK STH2 SWP2 .Screen/x DEO2 STH2r OVR2 .Screen/y DEO2
.color STZ STH2 SWP2 .Screen/x DEO2 STH2r OVR2 .Screen/y DEO2
&draw-ver
( draw ) .color PEK .Screen/color DEO
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 #0002 ADD2 DUP2 .Screen/y DEO2 SWP2
OVR2 OVR2 LTH2 ,&draw-ver JCN
POP2 POP2

View file

@ -24,7 +24,7 @@
%LDA-CHAR { #24 MOD #00 SWP ;b36clc ADD2 LDA } ( b36 -- char )
%LDA-VALUE { #20 SUB #00 SWP ;values ADD2 LDA } ( char -- b36 )
%LDA-INDEX { #00 SWP #00 .grid/width PEK MUL2 ROT #00 SWP ADD2 } ( x y -- index )
%LDA-INDEX { #00 SWP #00 .grid/width LDZ MUL2 ROT #00 SWP ADD2 } ( x y -- index )
%LDA-CELL { LDA-INDEX DATA-CELLS ADD2 LDA } ( x y -- char )
%SET-CELL { ROT ROT LDA-INDEX DATA-CELLS ADD2 STA } ( x y char -- )
%LDA-TYPE { LDA-INDEX DATA-TYPES ADD2 LDA } ( x y -- type )
@ -59,8 +59,8 @@
( vectors ) ;on-frame .Screen/vector DEO2
( find size )
.Screen/width DEI2 8/ SWP POP .grid/width POK
.Screen/height DEI2 8/ SWP POP #02 SUB .grid/height POK
.Screen/width DEI2 8/ SWP POP .grid/width STZ
.Screen/height DEI2 8/ SWP POP #02 SUB .grid/height STZ
( fill grid with dots )
@ -71,47 +71,47 @@ BRK
@on-frame
.timer PEK ++ DUP .timer POK
.timer LDZ ++ DUP .timer STZ
( skip ) #08 EQU ,&tick JCN BRK &tick
.timer/frame PEK ++ .timer/frame POK
.timer/frame LDZ ++ .timer/frame STZ
;run JSR2
#00 .timer POK
#00 .timer STZ
BRK
@on-button
.Controller/key DEI #00 EQU ,&no-key JCN
.selection/x1 PEK .selection/y1 PEK .Controller/key DEI SET-CELL
.selection/x1 LDZ .selection/y1 LDZ .Controller/key DEI SET-CELL
;redraw JSR2
&no-key
( arrows )
.Controller/button DEI #f0 AND
DUP #04 SFT #01 AND #01 NEQ ,&no-up JCN
.selection/y1 PEK #00 EQU ,&no-up JCN
.selection/y1 PEK -- .selection/y1 POK
.selection/y2 PEK -- .selection/y2 POK &no-up
.selection/y1 LDZ #00 EQU ,&no-up JCN
.selection/y1 LDZ -- .selection/y1 STZ
.selection/y2 LDZ -- .selection/y2 STZ &no-up
DUP #05 SFT #01 AND #01 NEQ ,&no-down JCN
.selection/y1 PEK .grid/height PEK -- EQU ,&no-down JCN
.selection/y1 PEK ++ .selection/y1 POK
.selection/y2 PEK ++ .selection/y2 POK &no-down
.selection/y1 LDZ .grid/height LDZ -- EQU ,&no-down JCN
.selection/y1 LDZ ++ .selection/y1 STZ
.selection/y2 LDZ ++ .selection/y2 STZ &no-down
DUP #06 SFT #01 AND #01 NEQ ,&no-left JCN
.selection/x1 PEK #00 EQU ,&no-left JCN
.selection/x1 PEK -- .selection/x1 POK
.selection/x2 PEK -- .selection/x2 POK &no-left
.selection/x1 LDZ #00 EQU ,&no-left JCN
.selection/x1 LDZ -- .selection/x1 STZ
.selection/x2 LDZ -- .selection/x2 STZ &no-left
DUP #07 SFT #01 AND #01 NEQ ,&no-right JCN
.selection/x1 PEK .grid/width PEK -- EQU ,&no-right JCN
.selection/x1 PEK ++ .selection/x1 POK
.selection/x2 PEK ++ .selection/x2 POK &no-right
.selection/x1 LDZ .grid/width LDZ -- EQU ,&no-right JCN
.selection/x1 LDZ ++ .selection/x1 STZ
.selection/x2 LDZ ++ .selection/x2 STZ &no-right
POP
.Controller/key DEI #08 NEQ ,&no-backspace JCN
.selection/x1 PEK .selection/y1 PEK #2e SET-CELL ( put . char )
.selection/x1 LDZ .selection/y1 LDZ #2e SET-CELL ( put . char )
&no-backspace
;redraw JSR2
@ -121,24 +121,24 @@ BRK
@on-mouse
.Mouse/state DEI #00 EQU ,&no-touch JCN
.Mouse/x DEI2 8/ SWP POP .selection/x1 POK
.Mouse/y DEI2 8/ SWP POP .selection/y1 POK
.Mouse/x DEI2 8/ SWP POP .selection/x1 STZ
.Mouse/y DEI2 8/ SWP POP .selection/y1 STZ
;redraw JSR2
&no-touch
( clear last cursor )
.cursor/x PEK2 .Screen/x DEO2
.cursor/y PEK2 .Screen/y DEO2
.cursor/x LDZ2 .Screen/x DEO2
.cursor/y LDZ2 .Screen/y DEO2
;blank_icn .Screen/addr DEO2
#30 .Screen/color DEO
( record cursor positions )
.Mouse/x DEI2 .cursor/x POK2
.Mouse/y DEI2 .cursor/y POK2
.Mouse/x DEI2 .cursor/x STZ2
.Mouse/y DEI2 .cursor/y STZ2
( draw new cursor )
.cursor/x PEK2 .Screen/x DEO2
.cursor/y PEK2 .Screen/y DEO2
.cursor/x LDZ2 .Screen/x DEO2
.cursor/y LDZ2 .Screen/y DEO2
;cursor_icn .Screen/addr DEO2
#32 .Mouse/state DEI #01 EQU ADD .Screen/color DEO
@ -146,9 +146,9 @@ BRK
@start ( -- )
#00 .grid/height PEK
#00 .grid/height LDZ
&ver
#00 .grid/width PEK
#00 .grid/width LDZ
&hor
( get x,y ) SWP2 OVR STH SWP2 OVR STHr
#2e SET-CELL
@ -159,7 +159,7 @@ BRK
DUP2 LTH ,&ver JCN
POP2
#9a .timer/speed POK
#9a .timer/speed STZ
RTN
@ -172,7 +172,7 @@ RTN
@is-selected ( x y -- flag )
.selection/x1 PEK .selection/y1 PEK EQU2
.selection/x1 LDZ .selection/y1 LDZ EQU2
RTN
@ -236,7 +236,7 @@ RTN
POP
++
#30 .timer/frame PEK #08 MOD ADD SET-CELL
#30 .timer/frame LDZ #08 MOD ADD SET-CELL
RTN
@ -445,9 +445,9 @@ RTN
@init ( -- )
#00 .grid/height PEK
#00 .grid/height LDZ
&ver
#00 .grid/width PEK
#00 .grid/width LDZ
&hor
( get x,y ) SWP2 OVR STH SWP2 OVR STHr
( unlock ) #00 SET-LOCK
@ -464,9 +464,9 @@ RTN
;init JSR2
#00 .grid/height PEK
#00 .grid/height LDZ
&ver
#00 .grid/width PEK
#00 .grid/width LDZ
&hor
( get x,y ) SWP2 OVR STH SWP2 OVR STHr
DUP2 LDA-CELL ;run-char JSR2
@ -486,7 +486,7 @@ RTN
( Positionx )
#0000 .Screen/x DEO2
.selection/x1 PEK
.selection/x1 LDZ
DUP #04 SFT LDA-CHAR #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2
#22 .Screen/color DEO
#0008 .Screen/x DEO2
@ -495,7 +495,7 @@ RTN
( Positiony )
#0010 .Screen/x DEO2
.selection/y1 PEK
.selection/y1 LDZ
DUP #04 SFT LDA-CHAR #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2
#22 .Screen/color DEO
#0018 .Screen/x DEO2
@ -508,7 +508,7 @@ RTN
( Frame )
#0030 .Screen/x DEO2
.timer/frame PEK
.timer/frame LDZ
DUP #04 SFT LDA-CHAR #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2
#22 .Screen/color DEO
#0038 .Screen/x DEO2
@ -517,11 +517,11 @@ RTN
#0040 .Screen/x DEO2
;beat_icn .Screen/addr DEO2
#21 .timer/frame PEK #08 MOD #00 EQU #02 MUL ADD .Screen/color DEO
#21 .timer/frame LDZ #08 MOD #00 EQU #02 MUL ADD .Screen/color DEO
( Speed )
#0050 .Screen/x DEO2
.timer/speed PEK
.timer/speed LDZ
DUP #04 SFT LDA-CHAR #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2
#22 .Screen/color DEO
#0058 .Screen/x DEO2
@ -541,10 +541,10 @@ RTN
@redraw ( -- )
#00 .grid/height PEK
#00 .grid/height LDZ
&ver
( pos-y ) OVR #00 SWP #0008 MUL2 .Screen/y DEO2
#00 .grid/width PEK
#00 .grid/width LDZ
&hor
( pos-x ) OVR #00 SWP #0008 MUL2 .Screen/x DEO2
( get x,y ) SWP2 OVR STH SWP2 OVR STHr

View file

@ -42,7 +42,7 @@ Program p;
char ops[][4] = {
"BRK", "LIT", "NOP", "POP", "DUP", "SWP", "OVR", "ROT",
"EQU", "NEQ", "GTH", "LTH", "JMP", "JCN", "JSR", "STH",
"PEK", "POK", "LDR", "STR", "LDA", "STA", "DEI", "DEO",
"LDZ", "STZ", "LDR", "STR", "LDA", "STA", "DEI", "DEO",
"ADD", "SUB", "MUL", "DIV", "AND", "ORA", "EOR", "SFT"
};