| ... | ... |
@@ -26,14 +26,11 @@ Read more in the [Uxambly Guide](https://wiki.xxiivv.com/site/uxambly.html). |
| 26 | 26 |
|
| 27 | 27 |
( devices ) |
| 28 | 28 |
|
| 29 |
-|0100 ;Console { pad 8 char 1 byte 1 short 2 }
|
|
| 30 |
-|0200 ^RESET JMP |
|
| 31 |
-|0204 ,ERROR JMP2 |
|
| 32 |
-|0208 ,FRAME JMP2 |
|
| 29 |
+|0110 ;Console { vector 2 pad 6 char 1 byte 1 short 2 }
|
|
| 33 | 30 |
|
| 34 | 31 |
( program ) |
| 35 | 32 |
|
| 36 |
-@RESET |
|
| 33 |
+|0200 |
|
| 37 | 34 |
|
| 38 | 35 |
,text1 ,print-label JSR2 |
| 39 | 36 |
,text2 ,print-label JSR2 |
| ... | ... |
@@ -54,9 +51,6 @@ RTN |
| 54 | 51 |
|
| 55 | 52 |
@text1 [ Welcome 20 to 20 UxnVM 0a00 ] |
| 56 | 53 |
@text2 [ Hello 20 World 0a00 ] |
| 57 |
- |
|
| 58 |
-@FRAME BRK |
|
| 59 |
-@ERROR BRK |
|
| 60 | 54 |
``` |
| 61 | 55 |
|
| 62 | 56 |
## TODOs |
| ... | ... |
@@ -11,16 +11,11 @@ |
| 11 | 11 |
( devices ) |
| 12 | 12 |
|
| 13 | 13 |
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|
| 14 |
-|0110 ;Console { pad 8 char 1 byte 1 short 2 }
|
|
| 15 | 14 |
|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 color 1 }
|
| 16 | 15 |
|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 }
|
| 17 | 16 |
|0140 ;Controller { vector 2 p1 1 }
|
| 18 |
-|0150 ;Keys { vector 2 key 1 }
|
|
| 19 |
-|0160 ;Mouse { vector 2 x 2 y 2 state 1 chord 1 }
|
|
| 20 |
-|0170 ;File { pad 8 name 2 length 2 load 2 save 2 }
|
|
| 21 |
-|0180 ;Audio { ch1adsr 2 ch2adsr 2 ch3adsr 2 ch4adsr 2 ch1vol 1 ch1pitch 1 ch2vol 1 ch2pitch 1 ch3vol 1 ch3pitch 1 ch4vol 1 ch4pitch 1 }
|
|
| 22 | 17 |
|
| 23 |
-|0200 @RESET |
|
| 18 |
+|0200 |
|
| 24 | 19 |
|
| 25 | 20 |
( theme ) #0daf =System.r #02ff =System.g #035f =System.b |
| 26 | 21 |
( vectors ) ,FRAME =Screen.vector |
| ... | ... |
@@ -3,13 +3,8 @@ |
| 3 | 3 |
%RTN { JMP2r }
|
| 4 | 4 |
%8+ { #0008 ADD2 }
|
| 5 | 5 |
%8* { #0030 SFT2 }
|
| 6 |
-%MOD2 { #03 AND }
|
|
| 7 |
- |
|
| 8 |
-;cursor { x 2 y 2 }
|
|
| 9 | 6 |
|
| 10 | 7 |
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|
| 11 |
-|0110 ;Console { pad 8 char 1 byte 1 short 2 }
|
|
| 12 |
-|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 color 1 }
|
|
| 13 | 8 |
|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 }
|
| 14 | 9 |
|0140 ;Controller { vector 2 button 1 }
|
| 15 | 10 |
|0150 ;Keys { vector 2 key 1 }
|
| ... | ... |
@@ -92,5 +87,3 @@ RTN |
| 92 | 87 |
0000 4428 1028 4400 0000 4444 443c 0438 0000 7c08 1020 7c00 000c 0810 1008 0c00 |
| 93 | 88 |
0008 0808 0808 0800 0030 1008 0810 3000 0000 0032 4c00 0000 3c42 99a1 a199 423c |
| 94 | 89 |
] |
| 95 |
- |
|
| 96 |
-;text { body 2 }
|
| ... | ... |
@@ -3,19 +3,14 @@ |
| 3 | 3 |
%RTN { JMP2r }
|
| 4 | 4 |
%++ { #0001 ADD2 }
|
| 5 | 5 |
%-- { #0001 SUB2 }
|
| 6 |
-%8+ { #0008 ADD2 }
|
|
| 7 |
-%ABS2 { DUP2 #000f SFT2 #ffff SWP2 SWP POP MUL2? }
|
|
| 8 | 6 |
|
| 9 | 7 |
;color { byte 1 }
|
| 10 | 8 |
;pointer { x 2 y 2 }
|
| 11 | 9 |
;circle { xc 2 yc 2 x 2 y 2 r 2 d 2 }
|
| 12 | 10 |
|
| 13 | 11 |
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|
| 14 |
-|0110 ;Console { pad 8 char 1 byte 1 short 2 }
|
|
| 15 | 12 |
|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 color 1 }
|
| 16 | 13 |
|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 }
|
| 17 |
-|0140 ;Controller { vector 2 button 1 }
|
|
| 18 |
-|0150 ;Keys { vector 2 key 1 }
|
|
| 19 | 14 |
|0160 ;Mouse { vector 2 x 2 y 2 state 1 chord 1 }
|
| 20 | 15 |
|
| 21 | 16 |
( program ) |
| ... | ... |
@@ -23,17 +18,24 @@ |
| 23 | 18 |
|0200 |
| 24 | 19 |
|
| 25 | 20 |
( theme ) #03fd =System.r #0ef3 =System.g #0bf2 =System.b |
| 21 |
+ ( vectors ) ,on-screen =Screen.vector |
|
| 26 | 22 |
( vectors ) ,on-mouse =Mouse.vector |
| 27 | 23 |
|
| 28 | 24 |
BRK |
| 29 | 25 |
|
| 26 |
+@on-screen |
|
| 27 |
+ |
|
| 28 |
+ ( clear ) ~circle.xc ~circle.yc ~circle.r #00 ,draw-circle JSR2 |
|
| 29 |
+ ( draw ) ~circle.xc ~circle.yc ~circle.r #0001 ADD2 #03 ,draw-circle JSR2 |
|
| 30 |
+ |
|
| 31 |
+BRK |
|
| 32 |
+ |
|
| 30 | 33 |
@on-mouse |
| 31 | 34 |
|
| 32 |
- ( clear ) |
|
| 33 |
- ~circle.xc ~circle.yc ~circle.r #00 ,draw-circle JSR2 |
|
| 34 |
- |
|
| 35 | 35 |
,draw-cursor JSR2 |
| 36 | 36 |
|
| 37 |
+ ( clear ) ~circle.xc ~circle.yc ~circle.r #00 ,draw-circle JSR2 |
|
| 38 |
+ |
|
| 37 | 39 |
~Mouse.state #00 EQU ^$no-touch JNZ |
| 38 | 40 |
~Mouse.x DUP2 =circle.xc |
| 39 | 41 |
~Mouse.y DUP2 =circle.yc |
| ... | ... |
@@ -41,9 +43,6 @@ BRK |
| 41 | 43 |
( release ) #00 =Mouse.state |
| 42 | 44 |
$no-touch |
| 43 | 45 |
|
| 44 |
- ( draw ) |
|
| 45 |
- ~circle.xc ~circle.yc ~circle.r #0001 ADD2 #03 ,draw-circle JSR2 |
|
| 46 |
- |
|
| 47 | 46 |
BRK |
| 48 | 47 |
|
| 49 | 48 |
@draw-cursor ( -- ) |
| ... | ... |
@@ -22,11 +22,8 @@ |
| 22 | 22 |
} |
| 23 | 23 |
|
| 24 | 24 |
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|
| 25 |
-|0110 ;Console { pad 8 char 1 byte 1 short 2 }
|
|
| 26 | 25 |
|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 color 1 }
|
| 27 | 26 |
|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 }
|
| 28 |
-|0140 ;Controller { vector 2 button 1 }
|
|
| 29 |
-|0150 ;Keys { vector 2 key 1 }
|
|
| 30 | 27 |
|0160 ;Mouse { vector 2 x 2 y 2 state 1 chord 1 }
|
| 31 | 28 |
|
| 32 | 29 |
( program ) |
| ... | ... |
@@ -53,6 +50,67 @@ |
| 53 | 50 |
~Screen.width #0002 DIV2 =center.x |
| 54 | 51 |
~Screen.height #0002 DIV2 =center.y |
| 55 | 52 |
|
| 53 |
+ ,update-theme JSR2 |
|
| 54 |
+ ,draw-background JSR2 |
|
| 55 |
+ ,draw-window JSR2 |
|
| 56 |
+ |
|
| 57 |
+BRK |
|
| 58 |
+ |
|
| 59 |
+@on-mouse |
|
| 60 |
+ |
|
| 61 |
+ ,draw-cursor JSR2 |
|
| 62 |
+ |
|
| 63 |
+ ~Mouse.state #00 NEQ ,$no-skip JNZ2 BRK $no-skip |
|
| 64 |
+ |
|
| 65 |
+ ~Mouse.y ~window.y1 SUB2 STEP8 |
|
| 66 |
+ |
|
| 67 |
+ DUP2 #0010 NEQ2 ^$no-touch-red JNZ |
|
| 68 |
+ ~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-red JNZ |
|
| 69 |
+ ~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-red JNZ |
|
| 70 |
+ ( get new value ) ~Mouse.x ~window.x1 SUB2 #0050 SUB2 #0004 DIV2 S2B ,theme.r1 #00 ~selection ADD2 POK2 |
|
| 71 |
+ $no-touch-red |
|
| 72 |
+ DUP2 #0020 NEQ2 ^$no-touch-green JNZ |
|
| 73 |
+ ~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-green JNZ |
|
| 74 |
+ ~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-green JNZ |
|
| 75 |
+ ( get new value ) ~Mouse.x ~window.x1 SUB2 #0050 SUB2 #0004 DIV2 S2B ,theme.g1 #00 ~selection ADD2 POK2 |
|
| 76 |
+ $no-touch-green |
|
| 77 |
+ DUP2 #0030 NEQ2 ^$no-touch-blue JNZ |
|
| 78 |
+ ~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-blue JNZ |
|
| 79 |
+ ~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-blue JNZ |
|
| 80 |
+ ( get new value ) ~Mouse.x ~window.x1 SUB2 #0050 SUB2 #0004 DIV2 S2B ,theme.b1 #00 ~selection ADD2 POK2 |
|
| 81 |
+ $no-touch-blue |
|
| 82 |
+ DUP2 #0040 NEQ2 ^$no-touch-radio JNZ |
|
| 83 |
+ ~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-radio JNZ |
|
| 84 |
+ ~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-radio JNZ |
|
| 85 |
+ ~Mouse.x ~window.x1 SUB2 #0050 SUB2 STEP8 2/ #0008 DIV2 S2B =selection |
|
| 86 |
+ $no-touch-radio |
|
| 87 |
+ |
|
| 88 |
+ POP2 |
|
| 89 |
+ |
|
| 90 |
+ ,update-theme JSR2 |
|
| 91 |
+ ,draw-window JSR2 |
|
| 92 |
+ |
|
| 93 |
+BRK |
|
| 94 |
+ |
|
| 95 |
+@update-theme |
|
| 96 |
+ |
|
| 97 |
+ #0108 PEK2 #0f AND ~theme.r1 #40 SFT ADD #0108 POK2 |
|
| 98 |
+ #010a PEK2 #0f AND ~theme.g1 #40 SFT ADD #010a POK2 |
|
| 99 |
+ #010c PEK2 #0f AND ~theme.b1 #40 SFT ADD #010c POK2 |
|
| 100 |
+ #0108 PEK2 #f0 AND ~theme.r2 ADD #0108 POK2 |
|
| 101 |
+ #010a PEK2 #f0 AND ~theme.g2 ADD #010a POK2 |
|
| 102 |
+ #010c PEK2 #f0 AND ~theme.b2 ADD #010c POK2 |
|
| 103 |
+ #0109 PEK2 #0f AND ~theme.r3 #40 SFT ADD #0109 POK2 |
|
| 104 |
+ #010b PEK2 #0f AND ~theme.g3 #40 SFT ADD #010b POK2 |
|
| 105 |
+ #010d PEK2 #0f AND ~theme.b3 #40 SFT ADD #010d POK2 |
|
| 106 |
+ #0109 PEK2 #f0 AND ~theme.r4 ADD #0109 POK2 |
|
| 107 |
+ #010b PEK2 #f0 AND ~theme.g4 ADD #010b POK2 |
|
| 108 |
+ #010d PEK2 #f0 AND ~theme.b4 ADD #010d POK2 |
|
| 109 |
+ |
|
| 110 |
+RTN |
|
| 111 |
+ |
|
| 112 |
+@draw-background |
|
| 113 |
+ |
|
| 56 | 114 |
( draw hor line ) |
| 57 | 115 |
#0000 =Screen.x ~center.y =Screen.y |
| 58 | 116 |
#0000 ~Screen.width ( from/to ) |
| ... | ... |
@@ -81,64 +139,6 @@ |
| 81 | 139 |
DUP2 LTH ^$draw-blends JNZ |
| 82 | 140 |
POP POP |
| 83 | 141 |
|
| 84 |
- ,update-theme JSR2 |
|
| 85 |
- ,draw-window JSR2 |
|
| 86 |
- |
|
| 87 |
-BRK |
|
| 88 |
- |
|
| 89 |
-@on-mouse |
|
| 90 |
- |
|
| 91 |
- ~Mouse.state #00 EQU ,$no-touch JNZ2 |
|
| 92 |
- |
|
| 93 |
- ~Mouse.y ~window.y1 SUB2 STEP8 |
|
| 94 |
- |
|
| 95 |
- DUP2 #0010 NEQ2 ^$no-touch-red JNZ |
|
| 96 |
- ~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-red JNZ |
|
| 97 |
- ~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-red JNZ |
|
| 98 |
- ( get new value ) ~Mouse.x ~window.x1 SUB2 #0050 SUB2 #0004 DIV2 S2B ,theme.r1 #00 ~selection ADD2 POK2 |
|
| 99 |
- $no-touch-red |
|
| 100 |
- DUP2 #0020 NEQ2 ^$no-touch-green JNZ |
|
| 101 |
- ~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-green JNZ |
|
| 102 |
- ~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-green JNZ |
|
| 103 |
- ( get new value ) ~Mouse.x ~window.x1 SUB2 #0050 SUB2 #0004 DIV2 S2B ,theme.g1 #00 ~selection ADD2 POK2 |
|
| 104 |
- $no-touch-green |
|
| 105 |
- DUP2 #0030 NEQ2 ^$no-touch-blue JNZ |
|
| 106 |
- ~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-blue JNZ |
|
| 107 |
- ~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-blue JNZ |
|
| 108 |
- ( get new value ) ~Mouse.x ~window.x1 SUB2 #0050 SUB2 #0004 DIV2 S2B ,theme.b1 #00 ~selection ADD2 POK2 |
|
| 109 |
- $no-touch-blue |
|
| 110 |
- DUP2 #0040 NEQ2 ^$no-touch-radio JNZ |
|
| 111 |
- ~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-radio JNZ |
|
| 112 |
- ~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-radio JNZ |
|
| 113 |
- ~Mouse.x ~window.x1 SUB2 #0050 SUB2 STEP8 2/ #0008 DIV2 S2B =selection |
|
| 114 |
- $no-touch-radio |
|
| 115 |
- |
|
| 116 |
- POP2 |
|
| 117 |
- |
|
| 118 |
- ,update-theme JSR2 |
|
| 119 |
- ,draw-window JSR2 |
|
| 120 |
- |
|
| 121 |
- $no-touch |
|
| 122 |
- |
|
| 123 |
- ,draw-cursor JSR2 |
|
| 124 |
- |
|
| 125 |
-BRK |
|
| 126 |
- |
|
| 127 |
-@update-theme |
|
| 128 |
- |
|
| 129 |
- #0108 PEK2 #0f AND ~theme.r1 #40 SFT ADD #0108 POK2 |
|
| 130 |
- #010a PEK2 #0f AND ~theme.g1 #40 SFT ADD #010a POK2 |
|
| 131 |
- #010c PEK2 #0f AND ~theme.b1 #40 SFT ADD #010c POK2 |
|
| 132 |
- #0108 PEK2 #f0 AND ~theme.r2 ADD #0108 POK2 |
|
| 133 |
- #010a PEK2 #f0 AND ~theme.g2 ADD #010a POK2 |
|
| 134 |
- #010c PEK2 #f0 AND ~theme.b2 ADD #010c POK2 |
|
| 135 |
- #0109 PEK2 #0f AND ~theme.r3 #40 SFT ADD #0109 POK2 |
|
| 136 |
- #010b PEK2 #0f AND ~theme.g3 #40 SFT ADD #010b POK2 |
|
| 137 |
- #010d PEK2 #0f AND ~theme.b3 #40 SFT ADD #010d POK2 |
|
| 138 |
- #0109 PEK2 #f0 AND ~theme.r4 ADD #0109 POK2 |
|
| 139 |
- #010b PEK2 #f0 AND ~theme.g4 ADD #010b POK2 |
|
| 140 |
- #010d PEK2 #f0 AND ~theme.b4 ADD #010d POK2 |
|
| 141 |
- |
|
| 142 | 142 |
RTN |
| 143 | 143 |
|
| 144 | 144 |
@draw-window |
| ... | ... |
@@ -15,12 +15,8 @@ |
| 15 | 15 |
( devices ) |
| 16 | 16 |
|
| 17 | 17 |
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|
| 18 |
-|0110 ;Console { pad 8 char 1 byte 1 short 2 }
|
|
| 19 | 18 |
|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 color 1 }
|
| 20 | 19 |
|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 }
|
| 21 |
-|0140 ;Controller { vector 2 button 1 }
|
|
| 22 |
-|0150 ;Keys { vector 2 key 1 }
|
|
| 23 |
-|0160 ;Mouse { vector 2 x 2 y 2 state 1 chord 1 }
|
|
| 24 | 20 |
|0180 ;Audio { ch1adsr 2 ch2adsr 2 ch3adsr 2 ch4adsr 2 ch1vol 1 ch1pitch 1 ch2vol 1 ch2pitch 1 ch3vol 1 ch3pitch 1 ch4vol 1 ch4pitch 1 }
|
| 25 | 21 |
|01a0 ;Time { year 2 month 1 day 1 hour 1 minute 1 second 1 dow 1 doy 2 isdst 1 get 1 }
|
| 26 | 22 |
|
| ... | ... |
@@ -62,12 +62,15 @@ |
| 62 | 62 |
|
| 63 | 63 |
( program ) |
| 64 | 64 |
|
| 65 |
-|0200 @RESET |
|
| 65 |
+|0200 |
|
| 66 | 66 |
|
| 67 | 67 |
( theme ) |
| 68 | 68 |
#e0fa =theme.r0 #30fa =theme.g0 #30fa =theme.b0 ( normal mode ) |
| 69 | 69 |
#00fe =theme.r1 #00f3 =theme.g1 #00f3 =theme.b1 ( presentation mode ) |
| 70 |
- ( vectors ) ,FRAME =Screen.vector |
|
| 70 |
+ ( vectors ) ,on-screen =Screen.vector |
|
| 71 |
+ ( vectors ) ,on-key =Keys.vector |
|
| 72 |
+ ( vectors ) ,on-button =Controller.vector |
|
| 73 |
+ ( vectors ) ,on-mouse =Mouse.vector |
|
| 71 | 74 |
|
| 72 | 75 |
~theme.r0 =System.r ~theme.g0 =System.g ~theme.b0 =System.b |
| 73 | 76 |
|
| ... | ... |
@@ -93,10 +96,23 @@ |
| 93 | 96 |
|
| 94 | 97 |
BRK |
| 95 | 98 |
|
| 96 |
-@FRAME ( -- ) |
|
| 99 |
+@on-screen ( -- ) |
|
| 100 |
+ |
|
| 101 |
+ ~document.edit #01 NEQ ^$no-edit JNZ |
|
| 102 |
+ #0008 =Sprite.x |
|
| 103 |
+ ~Screen.height #0010 SUB2 =Sprite.y |
|
| 104 |
+ ,path.name #01 ~timer #04 DIV #03 AND #03 MUL ADD ,draw-label JSR2 |
|
| 105 |
+ $clear |
|
| 106 |
+ #00 =Sprite.color |
|
| 107 |
+ ~Sprite.x 8+ DUP2 =Sprite.x |
|
| 108 |
+ ~Screen.width LTH2 ^$clear JNZ |
|
| 109 |
+ ( blink ) ~timer #01 ADD =timer |
|
| 110 |
+ $no-edit |
|
| 97 | 111 |
|
| 98 |
- ~document.edit #01 EQU ,on-rename JNZ2 |
|
| 112 |
+BRK |
|
| 99 | 113 |
|
| 114 |
+@on-mouse |
|
| 115 |
+ |
|
| 100 | 116 |
,draw-cursor JSR2 |
| 101 | 117 |
|
| 102 | 118 |
( release drag ) |
| ... | ... |
@@ -262,79 +278,80 @@ BRK |
| 262 | 278 |
|
| 263 | 279 |
$no-touch |
| 264 | 280 |
|
| 265 |
- ~Controller.button #00 EQU ,$no-ctrl JNZ2 |
|
| 266 |
- ~Controller.button #f0 AND |
|
| 267 |
- DUP #04 SFT #01 AND #01 NEQ ^$no-up JNZ |
|
| 268 |
- ( move ) ~zoom.y -- =zoom.y $no-up |
|
| 269 |
- DUP #05 SFT #01 AND #01 NEQ ^$no-down JNZ |
|
| 270 |
- ( move ) ~zoom.y ++ =zoom.y $no-down |
|
| 271 |
- DUP #06 SFT #01 AND #01 NEQ ^$no-left JNZ |
|
| 272 |
- ( move ) ~zoom.x -- =zoom.x $no-left |
|
| 273 |
- DUP #07 SFT #01 AND #01 NEQ ^$no-right JNZ |
|
| 274 |
- ( move ) ~zoom.x ++ =zoom.x $no-right |
|
| 275 |
- #00 EQU #04 JNZ ,draw-canvas JSR2 |
|
| 276 |
- $no-ctrl |
|
| 277 |
- |
|
| 278 |
- ~Keys.key #00 EQU ,$no-keys JNZ2 |
|
| 279 |
- ~Keys.key |
|
| 280 |
- DUP #20 NEQ ^$no-space JNZ |
|
| 281 |
- ( toggle zoom ) ~zoom.active #00 EQU =zoom.active ,redraw JSR2 $no-space |
|
| 282 |
- DUP #08 NEQ ^$no-backspace JNZ |
|
| 283 |
- ( erase ) ,clear JSR2 $no-backspace |
|
| 284 |
- DUP #71 NEQ ^$no-qkey JNZ |
|
| 285 |
- ( tool0 ) #00 =brush.tool ,draw-toolpane JSR2 $no-qkey |
|
| 286 |
- DUP #77 NEQ ^$no-wkey JNZ |
|
| 287 |
- ( tool0 ) #01 =brush.tool ,draw-toolpane JSR2 $no-wkey |
|
| 288 |
- DUP #65 NEQ ^$no-ekey JNZ |
|
| 289 |
- ( tool0 ) #02 =brush.tool ,draw-toolpane JSR2 $no-ekey |
|
| 290 |
- DUP #72 NEQ ^$no-rkey JNZ |
|
| 291 |
- ( tool0 ) #03 =brush.tool ,draw-toolpane JSR2 $no-rkey |
|
| 292 |
- DUP #74 NEQ ^$no-tkey JNZ |
|
| 293 |
- ( tool0 ) #04 =brush.tool ,draw-toolpane JSR2 $no-tkey |
|
| 294 |
- DUP |
|
| 295 |
- DUP #30 GTH SWP #39 LTH #0101 NEQ2 ^$no-numkey JNZ |
|
| 296 |
- ( size ) ~Keys.key #31 SUB =brush.size ,draw-sizepane JSR2 $no-numkey |
|
| 297 |
- POP |
|
| 298 |
- ( release ) #00 =Keys |
|
| 299 |
- $no-keys |
|
| 300 |
- |
|
| 301 | 281 |
~Mouse.x =cursor.x0 |
| 302 | 282 |
~Mouse.y =cursor.y0 |
| 303 | 283 |
~Mouse.state =brush.last |
| 304 | 284 |
|
| 305 | 285 |
BRK |
| 306 | 286 |
|
| 307 |
-@on-rename ( -- ) |
|
| 308 |
- |
|
| 309 |
- ~Keys.key #00 EQU ,$no-keys JNZ2 |
|
| 287 |
+@on-button |
|
| 288 |
+ |
|
| 289 |
+ ( if in renaming mode ) |
|
| 290 |
+ ~document.edit #01 NEQ ,$no-edit JNZ2 |
|
| 310 | 291 |
( enter ) |
| 311 |
- ~Keys.key #0d NEQ ^$no-enter JNZ |
|
| 292 |
+ ~Controller.button #08 NEQ ^$no-edit-enter JNZ |
|
| 312 | 293 |
#00 =document.edit |
| 313 |
- ,redraw JSR2 BRK |
|
| 314 |
- $no-enter |
|
| 294 |
+ ,redraw JSR2 |
|
| 295 |
+ BRK |
|
| 296 |
+ $no-edit-enter |
|
| 315 | 297 |
( backspace ) |
| 316 |
- ~Keys.key #08 NEQ ^$no-backspace JNZ |
|
| 317 |
- ~path.length #00 EQU ^$end JNZ |
|
| 298 |
+ ~Controller.button #04 NEQ ^$no-edit-backspace JNZ |
|
| 299 |
+ ~path.length #00 EQU ^$edit-end JNZ |
|
| 318 | 300 |
~path.length #01 SUB =path.length |
| 319 |
- ^$end JMP |
|
| 320 |
- $no-backspace |
|
| 301 |
+ #00 ,path.name #00 ~path.length ADD2 POK2 |
|
| 302 |
+ BRK |
|
| 303 |
+ $no-edit-backspace |
|
| 304 |
+ $edit-end |
|
| 305 |
+ BRK |
|
| 306 |
+ $no-edit |
|
| 307 |
+ |
|
| 308 |
+ ~Controller.button #f0 AND |
|
| 309 |
+ DUP #04 SFT #01 AND #01 NEQ ^$no-up JNZ |
|
| 310 |
+ ( move ) ~zoom.y -- =zoom.y $no-up |
|
| 311 |
+ DUP #05 SFT #01 AND #01 NEQ ^$no-down JNZ |
|
| 312 |
+ ( move ) ~zoom.y ++ =zoom.y $no-down |
|
| 313 |
+ DUP #06 SFT #01 AND #01 NEQ ^$no-left JNZ |
|
| 314 |
+ ( move ) ~zoom.x -- =zoom.x $no-left |
|
| 315 |
+ DUP #07 SFT #01 AND #01 NEQ ^$no-right JNZ |
|
| 316 |
+ ( move ) ~zoom.x ++ =zoom.x $no-right |
|
| 317 |
+ #00 EQU #04 JNZ ,draw-canvas JSR2 |
|
| 318 |
+ |
|
| 319 |
+BRK |
|
| 320 |
+ |
|
| 321 |
+@on-key |
|
| 322 |
+ |
|
| 323 |
+ ( if in renaming mode ) |
|
| 324 |
+ ~document.edit #01 NEQ ,$no-edit JNZ2 |
|
| 321 | 325 |
( default ) |
| 322 |
- ~path.length #1f EQU ^$end JNZ |
|
| 326 |
+ ~path.length #1f EQU ^$edit-end JNZ |
|
| 323 | 327 |
~Keys.key ,path.name #00 ~path.length ADD2 POK2 |
| 324 | 328 |
~path.length #01 ADD =path.length |
| 325 |
- $end |
|
| 329 |
+ $edit-end |
|
| 326 | 330 |
#00 ,path.name #00 ~path.length ADD2 POK2 |
| 327 |
- #00 =Keys.key |
|
| 328 |
- $no-keys |
|
| 329 |
- ( draw ) |
|
| 330 |
- #0008 =Sprite.x ~Screen.height #0010 SUB2 =Sprite.y |
|
| 331 |
- ,path.name #01 ~timer #04 DIV #03 AND #03 MUL ADD ,draw-label JSR2 |
|
| 332 |
- $clear |
|
| 333 |
- #00 =Sprite.color |
|
| 334 |
- ~Sprite.x 8+ DUP2 =Sprite.x |
|
| 335 |
- ~Screen.width LTH2 ^$clear JNZ |
|
| 336 |
- ( blink timer ) |
|
| 337 |
- ~timer #01 ADD =timer |
|
| 331 |
+ ( release ) #00 =Keys.key |
|
| 332 |
+ BRK |
|
| 333 |
+ $no-edit |
|
| 334 |
+ |
|
| 335 |
+ ~Keys.key |
|
| 336 |
+ DUP #20 NEQ ^$no-space JNZ |
|
| 337 |
+ ( toggle zoom ) ~zoom.active #00 EQU =zoom.active ,redraw JSR2 $no-space |
|
| 338 |
+ DUP #08 NEQ ^$no-backspace JNZ |
|
| 339 |
+ ( erase ) ,clear JSR2 $no-backspace |
|
| 340 |
+ DUP #71 NEQ ^$no-qkey JNZ |
|
| 341 |
+ ( tool0 ) #00 =brush.tool ,draw-toolpane JSR2 $no-qkey |
|
| 342 |
+ DUP #77 NEQ ^$no-wkey JNZ |
|
| 343 |
+ ( tool0 ) #01 =brush.tool ,draw-toolpane JSR2 $no-wkey |
|
| 344 |
+ DUP #65 NEQ ^$no-ekey JNZ |
|
| 345 |
+ ( tool0 ) #02 =brush.tool ,draw-toolpane JSR2 $no-ekey |
|
| 346 |
+ DUP #72 NEQ ^$no-rkey JNZ |
|
| 347 |
+ ( tool0 ) #03 =brush.tool ,draw-toolpane JSR2 $no-rkey |
|
| 348 |
+ DUP #74 NEQ ^$no-tkey JNZ |
|
| 349 |
+ ( tool0 ) #04 =brush.tool ,draw-toolpane JSR2 $no-tkey |
|
| 350 |
+ DUP |
|
| 351 |
+ DUP #30 GTH SWP #39 LTH #0101 NEQ2 ^$no-numkey JNZ |
|
| 352 |
+ ( size ) ~Keys.key #31 SUB =brush.size ,draw-sizepane JSR2 $no-numkey |
|
| 353 |
+ POP |
|
| 354 |
+ ( release ) #00 =Keys.key |
|
| 338 | 355 |
|
| 339 | 356 |
BRK |
| 340 | 357 |
|