... | ... |
@@ -44,30 +44,6 @@ BRK |
44 | 44 |
|
45 | 45 |
BRK |
46 | 46 |
|
47 |
-@clear-ball ( -- ) |
|
48 |
- |
|
49 |
- .ball/x LDZ2 .Screen/x DEO2 |
|
50 |
- .ball/y LDZ2 .Screen/y DEO2 |
|
51 |
- #76 .Screen/auto DEO |
|
52 |
- #0800 |
|
53 |
- &loop-bg |
|
54 |
- #40 .Screen/sprite DEO |
|
55 |
- INC GTHk ,&loop-bg JCN |
|
56 |
- POP2 |
|
57 |
- |
|
58 |
-JMP2r |
|
59 |
- |
|
60 |
-@move-ball ( -- ) |
|
61 |
- |
|
62 |
- ,clear-ball JSR |
|
63 |
- .ball/vx LDZ2k STH2k ROT STZ2 |
|
64 |
- .ball/x LDZ2k STH2r ADD2 ,check-flip-vx JSR ROT STZ2 |
|
65 |
- .ball/vy LDZ2k INC2 STH2k ROT STZ2 |
|
66 |
- .ball/y LDZ2k STH2r ADD2 ,check-flip-vy JSR ROT STZ2 |
|
67 |
- ,draw-ball JSR |
|
68 |
- |
|
69 |
-JMP2r |
|
70 |
- |
|
71 | 47 |
@check-flip-vx ( x -- x ) |
72 | 48 |
|
73 | 49 |
( left ) DUP2 #0010 LTH2 ,&flip JCN |
... | ... |
@@ -85,6 +61,23 @@ JMP2r |
85 | 61 |
|
86 | 62 |
JMP2r |
87 | 63 |
|
64 |
+@move-ball ( -- ) |
|
65 |
+ |
|
66 |
+ ( clear ) |
|
67 |
+ .ball/x LDZ2 .Screen/x DEO2 |
|
68 |
+ .ball/y LDZ2 .Screen/y DEO2 |
|
69 |
+ #76 .Screen/auto DEO |
|
70 |
+ #0800 |
|
71 |
+ &loop-bg |
|
72 |
+ #40 .Screen/sprite DEO |
|
73 |
+ INC GTHk ,&loop-bg JCN |
|
74 |
+ POP2 |
|
75 |
+ |
|
76 |
+ .ball/vx LDZ2k STH2k ROT STZ2 |
|
77 |
+ .ball/x LDZ2k STH2r ADD2 ,check-flip-vx JSR ROT STZ2 |
|
78 |
+ .ball/vy LDZ2k INC2 STH2k ROT STZ2 |
|
79 |
+ .ball/y LDZ2k STH2r ADD2 ,check-flip-vy JSR ROT STZ2 |
|
80 |
+ |
|
88 | 81 |
@draw-ball ( -- ) |
89 | 82 |
|
90 | 83 |
( shadow ) |
... | ... |
@@ -90,9 +90,6 @@ JMP2r |
90 | 90 |
[ .center/x LDZ2 #0008 ADD2 ] |
91 | 91 |
[ .center/y LDZ2 #0018 ADD2 ] |
92 | 92 |
.DateTime/second DEI #0a ;mod JSR2 |
93 |
- ;draw-number JSR2 |
|
94 |
- |
|
95 |
-JMP2r |
|
96 | 93 |
|
97 | 94 |
@draw-number ( x* y* n -- ) |
98 | 95 |
|
... | ... |
@@ -146,7 +143,7 @@ JMP2r |
146 | 143 |
|
147 | 144 |
JMP2r |
148 | 145 |
|
149 |
-@mod DUP2 DIV MUL SUB JMP2r |
|
146 |
+@mod DIVk MUL SUB JMP2r |
|
150 | 147 |
|
151 | 148 |
@cursor |
152 | 149 |
80c0 e0f0 f8e0 1000 |
153 | 150 |
similarity index 66% |
154 | 151 |
rename from projects/examples/demos/logic.tal |
155 | 152 |
rename to projects/examples/demos/bitwise.tal |
... | ... |
@@ -1,31 +1,4 @@ |
1 |
-( logic ) |
|
2 |
- |
|
3 |
-%+ { ADD } %- { SUB } %/ { DIV } |
|
4 |
-%< { LTH } %> { GTH } %= { EQU } %! { NEQ } |
|
5 |
-%++ { ADD2 } %-- { SUB2 } %// { DIV2 } |
|
6 |
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } |
|
7 |
- |
|
8 |
-%2* { #10 SFT } %2/ { #01 SFT } |
|
9 |
-%4* { #20 SFT } %4/ { #02 SFT } |
|
10 |
-%8* { #30 SFT } %8/ { #03 SFT } |
|
11 |
-%10* { #40 SFT } %10/ { #04 SFT } |
|
12 |
-%20* { #50 SFT } %20/ { #05 SFT } |
|
13 |
- |
|
14 |
-%2** { #10 SFT2 } %2// { #01 SFT2 } |
|
15 |
-%4** { #20 SFT2 } %4// { #02 SFT2 } |
|
16 |
-%8** { #30 SFT2 } %8// { #03 SFT2 } |
|
17 |
-%10** { #40 SFT2 } %10// { #04 SFT2 } |
|
18 |
-%20** { #50 SFT2 } %20// { #05 SFT2 } |
|
19 |
- |
|
20 |
-%RELEASE-MOUSE { #0096 DEO } |
|
21 |
-%AUTO-X { #01 .Screen/auto DEO } |
|
22 |
-%AUTO-X-ADDR { #05 .Screen/auto DEO } |
|
23 |
-%AUTO-NONE { #00 .Screen/auto DEO } |
|
24 |
- |
|
25 |
-%RTN { JMP2r } |
|
26 |
-%TOS { #00 SWP } |
|
27 |
- |
|
28 |
-( devices ) |
|
1 |
+( bitwise ) |
|
29 | 2 |
|
30 | 3 |
|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 ] |
31 | 4 |
|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 &error $1 ] |
... | ... |
@@ -63,13 +36,13 @@ |
63 | 36 |
|
64 | 37 |
;on-mouse .Mouse/vector DEO2 |
65 | 38 |
|
66 |
- .Screen/width DEI2 2// |
|
67 |
- DUP2 #0040 -- .a-frame/x STZ2 DUP2 #0040 ++ .a-frame/x2 STZ2 |
|
68 |
- DUP2 #0040 -- .b-frame/x STZ2 #0040 ++ .b-frame/x2 STZ2 |
|
39 |
+ .Screen/width DEI2 #01 SFT2 |
|
40 |
+ DUP2 #0040 SUB2 .a-frame/x STZ2 DUP2 #0040 ADD2 .a-frame/x2 STZ2 |
|
41 |
+ DUP2 #0040 SUB2 .b-frame/x STZ2 #0040 ADD2 .b-frame/x2 STZ2 |
|
69 | 42 |
|
70 |
- .Screen/height DEI2 2// #0020 -- |
|
71 |
- DUP2 #0010 -- .a-frame/y STZ2 DUP2 #0000 ++ .a-frame/y2 STZ2 |
|
72 |
- DUP2 .b-frame/y STZ2 #0010 ++ .b-frame/y2 STZ2 |
|
43 |
+ .Screen/height DEI2 #01 SFT2 #0020 SUB2 |
|
44 |
+ DUP2 #0010 SUB2 .a-frame/y STZ2 DUP2 .a-frame/y2 STZ2 |
|
45 |
+ DUP2 .b-frame/y STZ2 #0010 ADD2 .b-frame/y2 STZ2 |
|
73 | 46 |
|
74 | 47 |
;redraw JSR2 |
75 | 48 |
|
... | ... |
@@ -79,7 +52,7 @@ BRK |
79 | 52 |
|
80 | 53 |
;draw-cursor JSR2 |
81 | 54 |
|
82 |
- .Mouse/state DEI #00 ! JMP [ BRK ] |
|
55 |
+ .Mouse/state DEI #00 NEQ JMP [ BRK ] |
|
83 | 56 |
|
84 | 57 |
.Mouse/x DEI2 .Mouse/y DEI2 .a-frame ;within-rect JSR2 |
85 | 58 |
;on-touch-a JCN2 |
... | ... |
@@ -90,29 +63,29 @@ BRK |
90 | 63 |
|
91 | 64 |
@on-touch-a ( -> ) |
92 | 65 |
|
93 |
- .Mouse/x DEI2 .a-frame/x LDZ2 -- |
|
94 |
- 10// NIP #07 SWP - STH |
|
66 |
+ .Mouse/x DEI2 .a-frame/x LDZ2 SUB2 |
|
67 |
+ #04 SFT2 NIP #07 SWP SUB STH |
|
95 | 68 |
|
96 | 69 |
.input/a LDZ |
97 | 70 |
#01 [ STHr #40 SFT ] SFT EOR |
98 | 71 |
.input/a STZ |
99 | 72 |
|
100 | 73 |
;redraw JSR2 |
101 |
- RELEASE-MOUSE |
|
74 |
+ #00 .Mouse/state DEO |
|
102 | 75 |
|
103 | 76 |
BRK |
104 | 77 |
|
105 | 78 |
@on-touch-b ( -> ) |
106 | 79 |
|
107 |
- .Mouse/x DEI2 .b-frame/x LDZ2 -- |
|
108 |
- 10// NIP #07 SWP - STH |
|
80 |
+ .Mouse/x DEI2 .b-frame/x LDZ2 SUB2 |
|
81 |
+ #04 SFT2 NIP #07 SWP SUB STH |
|
109 | 82 |
|
110 | 83 |
.input/b LDZ |
111 | 84 |
#01 [ STHr #40 SFT ] SFT EOR |
112 | 85 |
.input/b STZ |
113 | 86 |
|
114 | 87 |
;redraw JSR2 |
115 |
- RELEASE-MOUSE |
|
88 |
+ #00 .Mouse/state DEO |
|
116 | 89 |
|
117 | 90 |
BRK |
118 | 91 |
|
... | ... |
@@ -127,82 +100,82 @@ BRK |
127 | 100 |
.input/b LDZ #01 ;draw-byte JSR2 |
128 | 101 |
|
129 | 102 |
.b-frame/x LDZ2 .Screen/x DEO2 |
130 |
- .Screen/y DEI2 #000d ++ .Screen/y DEO2 |
|
103 |
+ .Screen/y DEI2 #000d ADD2 .Screen/y DEO2 |
|
131 | 104 |
.input LDZ2 AND #03 ;draw-byte JSR2 |
132 | 105 |
|
133 | 106 |
.b-frame/x LDZ2 .Screen/x DEO2 |
134 |
- .Screen/y DEI2 #000d ++ .Screen/y DEO2 |
|
107 |
+ .Screen/y DEI2 #000d ADD2 .Screen/y DEO2 |
|
135 | 108 |
.input LDZ2 ORA #03 ;draw-byte JSR2 |
136 | 109 |
|
137 | 110 |
.b-frame/x LDZ2 .Screen/x DEO2 |
138 |
- .Screen/y DEI2 #000d ++ .Screen/y DEO2 |
|
111 |
+ .Screen/y DEI2 #000d ADD2 .Screen/y DEO2 |
|
139 | 112 |
.input LDZ2 EOR #03 ;draw-byte JSR2 |
140 | 113 |
|
141 | 114 |
( labels ) |
142 |
- AUTO-X-ADDR |
|
143 |
- .b-frame/x LDZ2 #0020 -- .Screen/x DEO2 |
|
115 |
+ #05 .Screen/auto DEO |
|
116 |
+ .b-frame/x LDZ2 #0020 SUB2 .Screen/x DEO2 |
|
144 | 117 |
;names-icn/and .Screen/addr DEO2 |
145 |
- .b-frame/y2 LDZ2 #0004 ++ .Screen/y DEO2 |
|
118 |
+ .b-frame/y2 LDZ2 #0004 ADD2 .Screen/y DEO2 |
|
146 | 119 |
,&draw-label JSR |
147 |
- .b-frame/y2 LDZ2 #0014 ++ .Screen/y DEO2 |
|
120 |
+ .b-frame/y2 LDZ2 #0014 ADD2 .Screen/y DEO2 |
|
148 | 121 |
,&draw-label JSR |
149 |
- .b-frame/y2 LDZ2 #0024 ++ .Screen/y DEO2 |
|
122 |
+ .b-frame/y2 LDZ2 #0024 ADD2 .Screen/y DEO2 |
|
150 | 123 |
,&draw-label JSR |
151 |
- AUTO-NONE |
|
124 |
+ #00 .Screen/auto DEO |
|
152 | 125 |
|
153 |
-RTN |
|
126 |
+JMP2r |
|
154 | 127 |
&draw-label |
155 |
- .b-frame/x LDZ2 #0020 -- .Screen/x DEO2 |
|
128 |
+ .b-frame/x LDZ2 #0020 SUB2 .Screen/x DEO2 |
|
156 | 129 |
#03 .Screen/sprite DEOk DEOk DEO |
157 |
- RTN |
|
130 |
+ JMP2r |
|
158 | 131 |
|
159 | 132 |
@draw-byte ( value -- ) |
160 | 133 |
|
161 | 134 |
STH STH |
162 | 135 |
#0800 |
163 | 136 |
&loop |
164 |
- DUP #07 SWP - |
|
137 |
+ #07 OVR SUB |
|
165 | 138 |
STHkr SWP SFT #01 AND OVRr STHr ;draw-bit JSR2 |
166 | 139 |
INC GTHk ,&loop JCN |
167 | 140 |
POP2 |
168 |
- .Screen/y DEI2 #0003 ++ .Screen/y DEO2 |
|
169 |
- .Screen/x DEI2 #0008 ++ .Screen/x DEO2 |
|
141 |
+ .Screen/y DEI2 #0003 ADD2 .Screen/y DEO2 |
|
142 |
+ .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 |
|
170 | 143 |
STHr ;draw-hex JSR2 |
171 | 144 |
POPr |
172 | 145 |
|
173 |
-RTN |
|
146 |
+JMP2r |
|
174 | 147 |
|
175 | 148 |
@draw-bit ( value color -- ) |
176 | 149 |
|
177 | 150 |
STH STH |
178 | 151 |
|
179 |
- AUTO-X-ADDR |
|
180 |
- ;button-icns/off [ #00 STHkr 20* ++ ] .Screen/addr DEO2 |
|
152 |
+ #05 .Screen/auto DEO |
|
153 |
+ ;button-icns/off [ #00 STHkr #50 SFT ADD2 ] .Screen/addr DEO2 |
|
181 | 154 |
OVRr STHr .Screen/sprite DEO |
182 | 155 |
OVRr STHr .Screen/sprite DEO |
183 |
- .Screen/y DEI2 #0008 ++ .Screen/y DEO2 |
|
184 |
- .Screen/x DEI2 #0010 -- .Screen/x DEO2 |
|
156 |
+ .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2 |
|
157 |
+ .Screen/x DEI2 #0010 SUB2 .Screen/x DEO2 |
|
185 | 158 |
OVRr STHr .Screen/sprite DEO |
186 | 159 |
OVRr STHr .Screen/sprite DEO |
187 |
- AUTO-NONE |
|
188 |
- .Screen/y DEI2 #0008 -- .Screen/y DEO2 |
|
160 |
+ #00 .Screen/auto DEO |
|
161 |
+ .Screen/y DEI2 #0008 SUB2 .Screen/y DEO2 |
|
189 | 162 |
|
190 |
- POPr POPr |
|
163 |
+ POP2r |
|
191 | 164 |
|
192 |
-RTN |
|
165 |
+JMP2r |
|
193 | 166 |
|
194 | 167 |
@draw-hex ( value -- ) |
195 | 168 |
|
196 |
- AUTO-X |
|
169 |
+ #01 .Screen/auto DEO |
|
197 | 170 |
DUP #04 SFT ,&draw JSR |
198 | 171 |
#0f AND ,&draw JSR |
199 |
- AUTO-X |
|
172 |
+ #01 .Screen/auto DEO |
|
200 | 173 |
|
201 |
-RTN |
|
174 |
+JMP2r |
|
202 | 175 |
&draw |
203 |
- TOS 8** ;font-hex ++ .Screen/addr DEO2 |
|
176 |
+ #00 SWP #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2 |
|
204 | 177 |
( draw ) #01 .Screen/sprite DEO |
205 |
- RTN |
|
178 |
+ JMP2r |
|
206 | 179 |
|
207 | 180 |
@draw-cursor ( -- ) |
208 | 181 |
|
... | ... |
@@ -215,26 +188,26 @@ RTN |
215 | 188 |
.Mouse/x DEI2 DUP2 .pointer/x STZ2 .Screen/x DEO2 |
216 | 189 |
.Mouse/y DEI2 DUP2 .pointer/y STZ2 .Screen/y DEO2 |
217 | 190 |
( colorize on state ) |
218 |
- #42 [ .Mouse/state DEI #00 ! ] + .Screen/sprite DEO |
|
191 |
+ #42 [ .Mouse/state DEI #00 NEQ ] ADD .Screen/sprite DEO |
|
219 | 192 |
|
220 |
-RTN |
|
193 |
+JMP2r |
|
221 | 194 |
|
222 | 195 |
@within-rect ( x* y* rect -- flag ) |
223 | 196 |
|
224 | 197 |
STH |
225 |
- ( y < rect.y1 ) DUP2 STHkr #02 ADD LDZ2 LTH2 ,&skip JCN |
|
198 |
+ ( y < rect.y1 ) DUP2 STHkr INC INC LDZ2 LTH2 ,&skip JCN |
|
226 | 199 |
( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN |
227 | 200 |
SWP2 |
228 | 201 |
( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN |
229 | 202 |
( x > rect.x2 ) DUP2 STHkr #04 ADD LDZ2 GTH2 ,&skip JCN |
230 | 203 |
POP2 POP2 POPr |
231 | 204 |
#01 |
232 |
-RTN |
|
205 |
+JMP2r |
|
233 | 206 |
&skip |
234 | 207 |
POP2 POP2 POPr |
235 | 208 |
#00 |
236 | 209 |
|
237 |
-RTN |
|
210 |
+JMP2r |
|
238 | 211 |
|
239 | 212 |
@cursor |
240 | 213 |
80c0 e0f0 f8e0 1000 |
... | ... |
@@ -110,9 +110,9 @@ BRK |
110 | 110 |
( top ) |
111 | 111 |
[ LDA2k ] #05 SFT2 .Screen/x DEO2 |
112 | 112 |
[ INC2 INC2 LDA2 ] #05 SFT2 .Screen/y DEO2 |
113 |
- #85 ,draw-sprite JSR |
|
113 |
+ #85 ,draw-sprite ( .. ) |
|
114 | 114 |
|
115 |
-JMP2r |
|
115 |
+JMP |
|
116 | 116 |
|
117 | 117 |
@draw-sprite ( color -- ) |
118 | 118 |
|
... | ... |
@@ -183,7 +183,7 @@ JMP2r |
183 | 183 |
|
184 | 184 |
;sprite/length LDA2 |
185 | 185 |
( don't let length go below 0 ) |
186 |
- DUP2 #0000 EQU2 ,&bail JCN |
|
186 |
+ ORAk #00 EQU ,&bail JCN |
|
187 | 187 |
( clear the old sprite location ) |
188 | 188 |
DUP2 #0001 SUB2 #30 SFT2 ;sprite/array ADD2 |
189 | 189 |
( top ) |
... | ... |
@@ -217,7 +217,7 @@ JMP2r |
217 | 217 |
( z = a ) |
218 | 218 |
,&a LDR DUP ,&z STR |
219 | 219 |
( a = z ^ t ^ (z >> 1) ^ (t << 1) ) |
220 |
- DUP #10 SFT EOR SWP DUP #01 SFT EOR EOR |
|
220 |
+ DUPk ADD EOR SWP DUP #01 SFT EOR EOR |
|
221 | 221 |
DUP ,&a STR |
222 | 222 |
|
223 | 223 |
JMP2r |
... | ... |
@@ -43,22 +43,22 @@ BRK |
43 | 43 |
STHk |
44 | 44 |
#00 .timer LDZ [ #00 STHkr INC #07 AND #60 SFT ADD2 ] #00ff AND2 ;table ADD2 LDA #01 SFT |
45 | 45 |
#00 .timer LDZ [ #00 STHkr #60 SFT ADD2 ] #00ff AND2 ;table ADD2 LDA #02 SFT [ #00 STHkr #62 SFT2 ADD2 ] |
46 |
- .cube/v0 STHr #10 SFT ADD STZ2 |
|
46 |
+ .cube/v0 STHr DUP ADD ADD STZ2 |
|
47 | 47 |
INC GTHk ,&loop JCN |
48 | 48 |
POP2 |
49 | 49 |
( vertices ) |
50 | 50 |
#0800 |
51 | 51 |
&ver-loop |
52 |
- DUP #10 SFT .cube ADD LDZ2 ;draw-vertex JSR2 |
|
52 |
+ DUP DUP ADD .cube ADD LDZ2 ;draw-vertex JSR2 |
|
53 | 53 |
INC GTHk ,&ver-loop JCN |
54 | 54 |
POP2 |
55 | 55 |
( lines ) |
56 | 56 |
#0400 |
57 | 57 |
&line-loop |
58 | 58 |
STHk |
59 |
- .cube/v0 STHkr #10 SFT ADD .cube/v0 STHkr INC #03 AND #10 SFT ADD ,trace JSR |
|
60 |
- .cube/v0 STHkr #10 SFT ADD .cube/v4 STHkr #10 SFT ADD ,trace JSR |
|
61 |
- .cube/v4 STHkr #10 SFT ADD .cube/v4 STHr INC #03 AND #10 SFT ADD ,trace JSR |
|
59 |
+ .cube/v0 STHkr DUP ADD ADD .cube/v0 STHkr INC #03 AND DUP ADD ADD ,trace JSR |
|
60 |
+ .cube/v0 STHkr DUP ADD ADD .cube/v4 STHkr DUP ADD ADD ,trace JSR |
|
61 |
+ .cube/v4 STHkr DUP ADD ADD .cube/v4 STHr INC #03 AND DUP ADD ADD ,trace JSR |
|
62 | 62 |
INC GTHk ,&line-loop JCN |
63 | 63 |
POP2 |
64 | 64 |
|
... | ... |
@@ -88,15 +88,15 @@ JMP2r |
88 | 88 |
( load ) STH ,&y STR2 ,&x STR2 .line/y STZ2 .line/x STZ2 |
89 | 89 |
,&x LDR2 .line/x LDZ2 SUB2 ;abs2 JSR2 .line/dx STZ2 |
90 | 90 |
#0000 ,&y LDR2 .line/y LDZ2 SUB2 ;abs2 JSR2 SUB2 .line/dy STZ2 |
91 |
- #ffff #00 .line/x LDZ2 ,&x LDR2 ;lts2 JSR2 #10 SFT2 ADD2 ,&sx STR2 |
|
92 |
- #ffff #00 .line/y LDZ2 ,&y LDR2 ;lts2 JSR2 #10 SFT2 ADD2 ,&sy STR2 |
|
91 |
+ #ffff #00 .line/x LDZ2 ,&x LDR2 ;lts2 JSR2 DUP2 ADD2 ADD2 ,&sx STR2 |
|
92 |
+ #ffff #00 .line/y LDZ2 ,&y LDR2 ;lts2 JSR2 DUP2 ADD2 ADD2 ,&sy STR2 |
|
93 | 93 |
.line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2 |
94 | 94 |
&loop |
95 | 95 |
.line/x LDZ2 DUP2 .Screen/x DEO2 [ LIT2 &x $2 ] EQU2 |
96 | 96 |
.line/y LDZ2 DUP2 .Screen/y DEO2 [ LIT2 &y $2 ] EQU2 |
97 | 97 |
STHkr .Screen/pixel DEO |
98 | 98 |
AND ,&end JCN |
99 |
- .line/e1 LDZ2 #10 SFT2 DUP2 |
|
99 |
+ .line/e1 LDZ2 DUP2 ADD2 DUP2 |
|
100 | 100 |
.line/dy LDZ2 ;lts2 JSR2 ,&skipy JCN |
101 | 101 |
.line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2 |
102 | 102 |
.line/x LDZ2 [ LIT2 &sx $2 ] ADD2 .line/x STZ2 |
... | ... |
@@ -22,7 +22,7 @@ |
22 | 22 |
#00 .DateTime/minute DEI #60 SFT2 EOR2 |
23 | 23 |
#00 .DateTime/hour DEI #c0 SFT2 EOR2 ;prng/x STA2 |
24 | 24 |
#00 .DateTime/hour DEI #04 SFT2 |
25 |
- #00 .DateTime/day DEI #10 SFT2 EOR2 |
|
25 |
+ #00 .DateTime/day DEI DUP2 ADD2 EOR2 |
|
26 | 26 |
#00 .DateTime/month DEI #60 SFT2 EOR2 |
27 | 27 |
.DateTime/year DEI2 #a0 SFT2 EOR2 ;prng/y STA2 |
28 | 28 |
;prng/x LDA2 ;prng/y LDA2 EOR2 |
... | ... |
@@ -160,7 +160,7 @@ |
160 | 160 |
( rabbit is in-between two frames ) |
161 | 161 |
#08 OVR SUB ,&from-weight STR |
162 | 162 |
,&to-weight STR ( color n / frame ) |
163 |
- #00 SWP #10 SFT2 ;rabbits ADD2 #00c8 #00 STHr MUL2 ADD2 ( color from-addr* ) |
|
163 |
+ #00 SWP DUP2 ADD2 ;rabbits ADD2 #00c8 #00 STHr MUL2 ADD2 ( color from-addr* ) |
|
164 | 164 |
LDA2k STH2 #00c8 ADD2 LDA2 |
165 | 165 |
&draw ( color to-x to-y / from-x from-y ) |
166 | 166 |
STHr ,&mix JSR LIT2 &yoffset $2 ADD2 .Screen/y DEO2 |
... | ... |
@@ -181,7 +181,7 @@ |
181 | 181 |
&static ( color n counter / frame ) |
182 | 182 |
INCr |
183 | 183 |
POP |
184 |
- #00 SWP #10 SFT2 ;rabbits ADD2 #00c8 #00 STHr MUL2 ADD2 |
|
184 |
+ #00 SWP DUP2 ADD2 ;rabbits ADD2 #00c8 #00 STHr MUL2 ADD2 |
|
185 | 185 |
LDA2 STH2k |
186 | 186 |
,&draw JMP |
187 | 187 |
|
... | ... |
@@ -35,13 +35,13 @@ BRK |
35 | 35 |
STH2k #0000 EQU2 ,&flip-x JCN |
36 | 36 |
STH2kr [ LIT2 &hit-hor $2 ] EQU2 ,&flip-x JCN |
37 | 37 |
&no-x |
38 |
- STH2r [ #00 .dvd/dx LDZ ] #10 SFT2 ADD2 #ffff ADD2 .dvd/x STZ2 |
|
38 |
+ STH2r [ #00 .dvd/dx LDZ ] DUP2 ADD2 ADD2 #ffff ADD2 .dvd/x STZ2 |
|
39 | 39 |
( y ) |
40 | 40 |
.dvd/y LDZ2 |
41 | 41 |
STH2k #0000 EQU2 ,&flip-y JCN |
42 | 42 |
STH2kr [ LIT2 &hit-ver $2 ] EQU2 ,&flip-y JCN |
43 | 43 |
&no-y |
44 |
- STH2r [ #00 .dvd/dy LDZ ] #10 SFT2 ADD2 #ffff ADD2 .dvd/y STZ2 |
|
44 |
+ STH2r [ #00 .dvd/dy LDZ ] DUP2 ADD2 ADD2 #ffff ADD2 .dvd/y STZ2 |
|
45 | 45 |
#01 ,draw-dvd JSR |
46 | 46 |
|
47 | 47 |
BRK |
... | ... |
@@ -31,11 +31,11 @@ |
31 | 31 |
;on-mouse .Mouse/vector DEO2 |
32 | 32 |
;on-control .Controller/vector DEO2 |
33 | 33 |
( glider ) |
34 |
- #07 #03 ;set-cell JSR2 |
|
35 |
- #07 #04 ;set-cell JSR2 |
|
36 |
- #05 #04 ;set-cell JSR2 |
|
37 |
- #07 #05 ;set-cell JSR2 |
|
38 |
- #06 #05 ;set-cell JSR2 |
|
34 |
+ #0703 ;set-cell JSR2 |
|
35 |
+ #0704 ;set-cell JSR2 |
|
36 |
+ #0504 ;set-cell JSR2 |
|
37 |
+ #0705 ;set-cell JSR2 |
|
38 |
+ #0605 ;set-cell JSR2 |
|
39 | 39 |
( center ) |
40 | 40 |
.Screen/width DEI2 #01 SFT2 #0040 SUB2 |
41 | 41 |
DUP2 .anchor/x STZ2 |
... | ... |
@@ -118,9 +118,9 @@ BRK |
118 | 118 |
( move buffer ) |
119 | 119 |
;bank2 ;bank1 #1000 ;mcpy JSR2 |
120 | 120 |
( draw ) |
121 |
- ;draw-grid JSR2 |
|
121 |
+ ;draw-grid ( .. ) |
|
122 | 122 |
|
123 |
-JMP2r |
|
123 |
+JMP2 |
|
124 | 124 |
|
125 | 125 |
@run-cell ( x y -- ) |
126 | 126 |
|
... | ... |
@@ -130,13 +130,13 @@ JMP2r |
130 | 130 |
#00 EQU ,&dead JCN |
131 | 131 |
DUP #02 LTH ,&dies JCN |
132 | 132 |
DUP #03 GTH ,&dies JCN |
133 |
- POP ;&save JSR2 JMP2r |
|
133 |
+ POP ;&save JMP2 |
|
134 | 134 |
&dies POP POP2 JMP2r |
135 | 135 |
&dead |
136 | 136 |
DUP #03 EQU ,&birth JCN POP POP2 JMP2r |
137 |
- &birth POP ;&save JSR2 |
|
137 |
+ &birth POP ;&save ( .. ) |
|
138 | 138 |
|
139 |
-JMP2r |
|
139 |
+JMP2 |
|
140 | 140 |
&save ( x y -- ) |
141 | 141 |
STH2 #01 STH2r ,get-index JSR [ #1000 ADD2 ] STA |
142 | 142 |
.world/count LDZ2 INC2 .world/count STZ2 |
... | ... |
@@ -168,7 +168,7 @@ JMP2r |
168 | 168 |
LITr 00 |
169 | 169 |
#0800 |
170 | 170 |
&loop |
171 |
- #00 OVR #10 SFT2 ;&mask ADD2 LDA2 [ LIT2 &origin $2 ] |
|
171 |
+ #00 OVRk ADD2 ;&mask ADD2 LDA2 [ LIT2 &origin $2 ] |
|
172 | 172 |
ROT ADD STH ADD STHr ;get-cell JSR2 STH ADDr |
173 | 173 |
INC GTHk ,&loop JCN |
174 | 174 |
POP2 |
... | ... |
@@ -187,11 +187,11 @@ JMP2r |
187 | 187 |
#00 .Screen/auto DEO |
188 | 188 |
#4000 |
189 | 189 |
&ver |
190 |
- #00 OVR #10 SFT2 .anchor/y LDZ2 ADD2 .Screen/y DEO2 |
|
190 |
+ #00 OVRk ADD2 .anchor/y LDZ2 ADD2 .Screen/y DEO2 |
|
191 | 191 |
STHk |
192 | 192 |
#4000 |
193 | 193 |
&hor |
194 |
- #00 OVR #10 SFT2 .anchor/x LDZ2 ADD2 .Screen/x DEO2 |
|
194 |
+ #00 OVRk ADD2 .anchor/x LDZ2 ADD2 .Screen/x DEO2 |
|
195 | 195 |
DUP STHkr ;get-cell JSR2 INC .Screen/pixel DEO |
196 | 196 |
INC GTHk ,&hor JCN |
197 | 197 |
POP2 |
... | ... |
@@ -2,10 +2,8 @@ |
2 | 2 |
|
3 | 3 |
%+ { ADD } %- { SUB } %* { MUL } %/ { DIV } |
4 | 4 |
%< { LTH } %> { GTH } %= { EQU } %! { NEQ } |
5 |
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } |
|
6 |
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } |
|
7 | 5 |
|
8 |
-%GTS2 { #8000 ++ SWP2 #8000 ++ << } |
|
6 |
+%GTS2 { #8000 ADD2 SWP2 #8000 ADD2 LTH2 } |
|
9 | 7 |
%AUTO-X { #01 .Screen/auto DEO } |
10 | 8 |
%NEXT-LINE { #0000 .Screen/x DEO2 .Screen/y DEI2k INC2 ROT DEO2 } |
11 | 9 |
|
... | ... |
@@ -17,8 +15,8 @@ |
17 | 15 |
%YMIN { #ecc7 } ( -4915 ) |
18 | 16 |
%YMAX { #1333 } ( 4915 ) |
19 | 17 |
%MAXI { #20 } ( 32 ) |
20 |
-%DX { XMAX XMIN -- WIDTH // } ( (XMAX-XMIN)/W ) |
|
21 |
-%DY { YMAX YMIN -- HEIGHT // } ( (YMAX-YMIN)/H ) |
|
18 |
+%DX { XMAX XMIN SUB2 WIDTH DIV2 } ( (XMAX-XMIN)/W ) |
|
19 |
+%DY { YMAX YMIN SUB2 HEIGHT DIV2 } ( (YMAX-YMIN)/H ) |
|
22 | 20 |
%X { .x LDZ2 } %Y { .y LDZ2 } |
23 | 21 |
%X2 { .x2 LDZ2 } %Y2 { .y2 LDZ2 } |
24 | 22 |
|
... | ... |
@@ -54,21 +52,21 @@ BRK |
54 | 52 |
XMAX XMIN |
55 | 53 |
&hor |
56 | 54 |
DUP2 ,&x STR2 |
57 |
- #0000 DUP2 DUP2 DUP2 .x STZ2 .y STZ2 .x2 STZ2 .y2 STZ2 |
|
55 |
+ #0000 DUP2k DUP2 .x STZ2 .y STZ2 .x2 STZ2 .y2 STZ2 |
|
58 | 56 |
MAXI #00 |
59 | 57 |
&loop |
60 |
- X Y ;smul2 JSR2 DUP2 ADD2 [ LIT2 &y $2 ] ++ .y STZ2 |
|
61 |
- X2 Y2 -- [ LIT2 &x $2 ] ++ .x STZ2 |
|
58 |
+ X Y ;smul2 JSR2 DUP2 ADD2 [ LIT2 &y $2 ] ADD2 .y STZ2 |
|
59 |
+ X2 Y2 SUB2 [ LIT2 &x $2 ] ADD2 .x STZ2 |
|
62 | 60 |
X DUP2 ;smul2 JSR2 .x2 STZ2 |
63 | 61 |
Y DUP2 ;smul2 JSR2 .y2 STZ2 |
64 |
- X2 Y2 ++ #4000 >> ,&end JCN |
|
62 |
+ X2 Y2 ADD2 #4000 GTH2 ,&end JCN |
|
65 | 63 |
INC GTHk ,&loop JCN |
66 | 64 |
&end |
67 | 65 |
NIP .Screen/pixel DEO |
68 |
- DX ++ OVR2 OVR2 GTS2 ;&hor JCN2 |
|
66 |
+ DX ADD2 OVR2 OVR2 GTS2 ;&hor JCN2 |
|
69 | 67 |
POP2 POP2 |
70 | 68 |
NEXT-LINE |
71 |
- DY ++ OVR2 OVR2 GTS2 ;&ver JCN2 |
|
69 |
+ DY ADD2 OVR2 OVR2 GTS2 ;&ver JCN2 |
|
72 | 70 |
POP2 POP2 |
73 | 71 |
|
74 | 72 |
JMP2r |
... | ... |
@@ -54,9 +54,9 @@ BRK |
54 | 54 |
#81 .Screen/sprite DEO |
55 | 55 |
( eye/tail ) |
56 | 56 |
#00 ,draw-eye JSR |
57 |
- #00 ;draw-tail JSR2 |
|
57 |
+ #00 ;draw-tail ( .. ) |
|
58 | 58 |
|
59 |
-JMP2r |
|
59 |
+JMP2 |
|
60 | 60 |
|
61 | 61 |
@on-mouse ( -> ) |
62 | 62 |
|
... | ... |
@@ -74,8 +74,7 @@ BRK |
74 | 74 |
DUP ,&last LDR NEQ ,&changed JCN |
75 | 75 |
POP JMP2r &changed |
76 | 76 |
( only redraw on change ) |
77 |
- DUP |
|
78 |
- #00 SWP ;eye ADD2 .Screen/addr DEO2 |
|
77 |
+ #00 OVR ;eye ADD2 .Screen/addr DEO2 |
|
79 | 78 |
.cat/y LDZ2 #0008 ADD2 .Screen/y DEO2 |
80 | 79 |
.cat/x LDZ2 #0008 SUB2 .Screen/x DEO2 |
81 | 80 |
#81 .Screen/sprite DEOk DEO |
... | ... |
@@ -201,7 +201,7 @@ JMP2r |
201 | 201 |
|
202 | 202 |
@transform ( xy cell -- cell ) |
203 | 203 |
|
204 |
- DUP #00 NEQ ,&no-null JCN NIP NIP JMP2r &no-null |
|
204 |
+ DUP ,&no-null JCN NIP NIP JMP2r &no-null |
|
205 | 205 |
DUP #03 NEQ ,&no-head JCN POP POP2 #02 JMP2r &no-head |
206 | 206 |
DUP #02 NEQ ,&no-tail JCN POP POP2 #01 JMP2r &no-tail |
207 | 207 |
DUP #01 NEQ ,&no-cond JCN POP |
... | ... |
@@ -217,8 +217,8 @@ JMP2r |
217 | 217 |
( bl ) #0001 SUB2 LDAk #03 NEQ JMP INCr |
218 | 218 |
( bc ) INC2 LDAk #03 NEQ JMP INCr |
219 | 219 |
( br ) INC2 LDA #03 NEQ JMP INCr |
220 |
- STHkr #02 EQU STHr #01 EQU #0000 GTH2 |
|
221 |
- #10 SFT INC JMP2r |
|
220 |
+ STHkr #02 EQU STHr #01 EQU ORA |
|
221 |
+ DUP ADD INC JMP2r |
|
222 | 222 |
&no-cond |
223 | 223 |
( unknown ) |
224 | 224 |
NIP NIP |
... | ... |
@@ -1,13 +1,7 @@ |
1 | 1 |
( dev/audio ) |
2 | 2 |
|
3 |
-%2// { #01 SFT2 } |
|
4 |
-%4** { #20 SFT2 } |
|
5 |
-%8** { #30 SFT2 } |
|
6 |
-%20MOD { #1f AND } |
|
7 |
-%RTN { JMP2r } |
|
8 |
- |
|
9 | 3 |
%GET-NOTE { #00 SWP ;melody ADD2 LDA } |
10 |
-%GET-HEXCHAR { #00 SWP 8** ;font-hex ADD2 .Screen/addr DEO2 } |
|
4 |
+%GET-HEXCHAR { #00 SWP #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2 } |
|
11 | 5 |
|
12 | 6 |
( devices ) |
13 | 7 |
|
... | ... |
@@ -44,8 +38,8 @@ |
44 | 38 |
#dd .Audio0/volume DEO ( TODO: turn ON ) |
45 | 39 |
|
46 | 40 |
( center ) |
47 |
- .Screen/width DEI2 2// #0080 SUB2 .offset/x STZ2 |
|
48 |
- .Screen/height DEI2 2// #0040 SUB2 .offset/y STZ2 |
|
41 |
+ .Screen/width DEI2 #01 SFT2 #0080 SUB2 .offset/x STZ2 |
|
42 |
+ .Screen/height DEI2 #01 SFT2 #0040 SUB2 .offset/y STZ2 |
|
49 | 43 |
|
50 | 44 |
;draw JSR2 |
51 | 45 |
#02 ;draw-selector JSR2 |
... | ... |
@@ -71,12 +65,12 @@ BRK |
71 | 65 |
&no-down |
72 | 66 |
[ #04 ] NEQk NIP ,&no-left JCN |
73 | 67 |
#00 ;draw-selector JSR2 |
74 |
- .selection LDZ #01 SUB 20MOD .selection STZ |
|
68 |
+ .selection LDZ #01 SUB #1f AND .selection STZ |
|
75 | 69 |
#02 ;draw-selector JSR2 |
76 | 70 |
&no-left |
77 | 71 |
[ #08 ] NEQk NIP ,&no-right JCN |
78 | 72 |
#00 ;draw-selector JSR2 |
79 |
- .selection LDZ INC 20MOD .selection STZ |
|
73 |
+ .selection LDZ INC #1f AND .selection STZ |
|
80 | 74 |
#02 ;draw-selector JSR2 |
81 | 75 |
&no-right |
82 | 76 |
POP |
... | ... |
@@ -89,9 +83,9 @@ BRK |
89 | 83 |
( skip ) .timer LDZ #10 EQU #01 JCN [ BRK ] |
90 | 84 |
.progress LDZ |
91 | 85 |
( play note ) DUP GET-NOTE .Audio0/pitch DEO |
92 |
- ( erase last ) DUP #01 SUB 20MOD #01 ,draw-note JSR |
|
86 |
+ ( erase last ) DUP #01 SUB #1f AND #01 ,draw-note JSR |
|
93 | 87 |
( draw current ) #01 ,draw-note JSR |
94 |
- ( incr ) .progress LDZ INC 20MOD .progress STZ |
|
88 |
+ ( incr ) .progress LDZ INC #1f AND .progress STZ |
|
95 | 89 |
#00 .timer STZ |
96 | 90 |
|
97 | 91 |
BRK |
... | ... |
@@ -104,30 +98,30 @@ BRK |
104 | 98 |
INC GTHk ,&loop JCN |
105 | 99 |
POP2 |
106 | 100 |
|
107 |
-RTN |
|
101 |
+JMP2r |
|
108 | 102 |
|
109 | 103 |
@draw-note ( id color -- ) |
110 | 104 |
|
111 | 105 |
STH STH |
112 |
- ( set x ) [ #00 STHkr ] 8** .offset/x LDZ2 ADD2 .Screen/x DEO2 |
|
113 |
- ( set y ) [ #00 #00 STHkr ;melody ADD2 LDA ] 4** #0100 SWP2 SUB2 .offset/y LDZ2 ADD2 #0080 ADD2 .Screen/y DEO2 |
|
106 |
+ ( set x ) [ #00 STHkr ] #30 SFT2 .offset/x LDZ2 ADD2 .Screen/x DEO2 |
|
107 |
+ ( set y ) [ #00 #00 STHkr ;melody ADD2 LDA ] #20 SFT2 #0100 SWP2 SUB2 .offset/y LDZ2 ADD2 #0080 ADD2 .Screen/y DEO2 |
|
114 | 108 |
( set addr ) ;marker-icn [ #00 .progress LDZ STHr EQU #08 MUL ADD2 ] .Screen/addr DEO2 |
115 | 109 |
( draw ) STHr .Screen/sprite DEO |
116 | 110 |
|
117 |
-RTN |
|
111 |
+JMP2r |
|
118 | 112 |
|
119 | 113 |
@draw-selector ( color -- ) |
120 | 114 |
|
121 | 115 |
STH |
122 |
- [ #00 .selection LDZ ] 8** .offset/x LDZ2 ADD2 .Screen/x DEO2 |
|
116 |
+ [ #00 .selection LDZ ] #30 SFT2 .offset/x LDZ2 ADD2 .Screen/x DEO2 |
|
123 | 117 |
#0070 .offset/y LDZ2 ADD2 .Screen/y DEO2 |
124 | 118 |
;selector-icn .Screen/addr DEO2 |
125 | 119 |
STHkr .Screen/sprite DEO |
126 | 120 |
|
127 |
- .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2 |
|
121 |
+ .Screen/y DEI2k #0008 ADD2 ROT DEO2 |
|
128 | 122 |
.selection LDZ GET-NOTE STHr ,draw-byte JSR |
129 | 123 |
|
130 |
-RTN |
|
124 |
+JMP2r |
|
131 | 125 |
|
132 | 126 |
@draw-byte ( byte color -- ) |
133 | 127 |
|
... | ... |
@@ -139,7 +133,7 @@ RTN |
139 | 133 |
#0f AND GET-HEXCHAR |
140 | 134 |
( draw ) STHr .Screen/sprite DEO |
141 | 135 |
|
142 |
-RTN |
|
136 |
+JMP2r |
|
143 | 137 |
|
144 | 138 |
@melody |
145 | 139 |
54 52 54 4f 4b 4f 48 ff |
... | ... |
@@ -180,4 +174,4 @@ RTN |
180 | 174 |
007c 8282 7c82 827c 007c 8282 7e02 827c |
181 | 175 |
007c 8202 7e82 827e 00fc 8282 fc82 82fc |
182 | 176 |
007c 8280 8080 827c 00fc 8282 8282 82fc |
183 |
- 007c 8280 f080 827c 007c 8280 f080 8080 |
|
184 | 177 |
\ No newline at end of file |
178 |
+ 007c 8280 f080 827c 007c 8280 f080 8080 |
... | ... |
@@ -81,7 +81,7 @@ BRK |
81 | 81 |
#03 STHkr #03 SFT #01 AND DUP ADD SUB .Screen/sprite DEO |
82 | 82 |
|
83 | 83 |
( buttons ) |
84 |
- .center/y LDZ2 #0000 ADD2 .Screen/y DEO2 |
|
84 |
+ .center/y LDZ2 .Screen/y DEO2 |
|
85 | 85 |
.center/x LDZ2 #0018 ADD2 .Screen/x DEO2 |
86 | 86 |
;controller-icn/button .Screen/addr DEO2 |
87 | 87 |
#03 STHkr #01 SFT #01 AND SUB .Screen/sprite DEO |
... | ... |
@@ -89,7 +89,7 @@ BRK |
89 | 89 |
;font-hex #0058 ADD2 .Screen/addr DEO2 |
90 | 90 |
#03 .Screen/sprite DEO |
91 | 91 |
|
92 |
- .center/y LDZ2 #0000 ADD2 .Screen/y DEO2 |
|
92 |
+ .center/y LDZ2 .Screen/y DEO2 |
|
93 | 93 |
.center/x LDZ2 #0024 ADD2 .Screen/x DEO2 |
94 | 94 |
;controller-icn/button .Screen/addr DEO2 |
95 | 95 |
#03 STHr #01 AND SUB .Screen/sprite DEO |
... | ... |
@@ -9,18 +9,31 @@ |
9 | 9 |
|
10 | 10 |
@line |
11 | 11 |
&x $2 &y $2 &dx $2 &dy $2 &e1 $2 |
12 |
+@length $2 |
|
13 |
+@frame $2 |
|
14 |
+@pen |
|
15 |
+ &x $2 &y $2 &x2 $2 &y2 $2 |
|
12 | 16 |
@pointer |
13 | 17 |
&x $2 &y $2 &lastx $2 &lasty $2 &state $1 |
14 | 18 |
|
15 | 19 |
|0100 ( -> ) |
16 | 20 |
|
17 | 21 |
( theme ) |
18 |
- #a0f0 .System/r DEO2 |
|
19 |
- #40ff .System/g DEO2 |
|
20 |
- #60ff .System/b DEO2 |
|
22 |
+ #4cfd .System/r DEO2 |
|
23 |
+ #4cf3 .System/g DEO2 |
|
24 |
+ #dcf2 .System/b DEO2 |
|
21 | 25 |
|
22 | 26 |
( vectors ) |
23 | 27 |
;on-mouse .Mouse/vector DEO2 |
28 |
+ ;on-frame .Screen/vector DEO2 |
|
29 |
+ |
|
30 |
+BRK |
|
31 |
+ |
|
32 |
+@on-frame ( -> ) |
|
33 |
+ |
|
34 |
+ .Mouse/state DEI ,&skip JCN |
|
35 |
+ ;run DUP2 JSR2 JSR2 |
|
36 |
+ &skip |
|
24 | 37 |
|
25 | 38 |
BRK |
26 | 39 |
|
... | ... |
@@ -34,7 +47,7 @@ BRK |
34 | 47 |
( draw new cursor ) |
35 | 48 |
.Mouse/x DEI2 DUP2 .pointer/x STZ2 .Screen/x DEO2 |
36 | 49 |
.Mouse/y DEI2 DUP2 .pointer/y STZ2 .Screen/y DEO2 |
37 |
- #43 .Mouse/state DEI #00 NEQ DUP ADD SUB .Screen/sprite DEO |
|
50 |
+ #42 .Mouse/state DEI #00 NEQ ADD .Screen/sprite DEO |
|
38 | 51 |
( on down ) |
39 | 52 |
.Mouse/state DEI #00 NEQ .pointer/state LDZ #00 EQU AND ,on-mouse-down JCN |
40 | 53 |
( on drag ) |
... | ... |
@@ -45,6 +58,8 @@ BRK |
45 | 58 |
|
46 | 59 |
@on-mouse-down ( -> ) |
47 | 60 |
|
61 |
+ #0000 DUP2 .length STZ2 .frame STZ2 |
|
62 |
+ ;clear-screen JSR2 |
|
48 | 63 |
( record start position ) |
49 | 64 |
.Mouse/x DEI2 DUP2 .pointer/x STZ2 .pointer/lastx STZ2 |
50 | 65 |
.Mouse/y DEI2 DUP2 .pointer/y STZ2 .pointer/lasty STZ2 |
... | ... |
@@ -53,36 +68,65 @@ BRK |
53 | 68 |
BRK |
54 | 69 |
|
55 | 70 |
@on-mouse-drag ( -> ) |
56 |
- |
|
71 |
+ |
|
72 |
+ ( record ) |
|
73 |
+ ;stroke .length LDZ2 #20 SFT2 ADD2 STH2 |
|
74 |
+ .pointer/x LDZ2 .pointer/lastx LDZ2 SUB2 STH2kr STA2 |
|
75 |
+ .pointer/y LDZ2 .pointer/lasty LDZ2 SUB2 STH2r INC2 INC2 STA2 |
|
76 |
+ ( move ptr ) |
|
77 |
+ .length LDZ2 INC2 .length STZ2 |
|
57 | 78 |
( draw line ) |
58 | 79 |
.pointer/lastx LDZ2 |
59 | 80 |
.pointer/lasty LDZ2 |
60 | 81 |
.pointer/x LDZ2 |
61 | 82 |
.pointer/y LDZ2 |
62 |
- .Mouse/state DEI INC |
|
63 |
- ;draw-line JSR2 |
|
64 |
- |
|
83 |
+ #01 |
|
84 |
+ ;draw-line JSR2 |
|
65 | 85 |
( record last position ) |
66 |
- .Mouse/x DEI2 .pointer/lastx STZ2 |
|
67 |
- .Mouse/y DEI2 .pointer/lasty STZ2 |
|
86 |
+ .Mouse/x DEI2 |
|
87 |
+ DUP2 .pointer/lastx STZ2 |
|
88 |
+ DUP2 .pen/x STZ2 |
|
89 |
+ .pen/x2 STZ2 |
|
90 |
+ .Mouse/y DEI2 |
|
91 |
+ DUP2 .pointer/lasty STZ2 |
|
92 |
+ DUP2 .pen/y STZ2 |
|
93 |
+ .pen/y2 STZ2 |
|
68 | 94 |
.Mouse/state DEI .pointer/state STZ |
69 | 95 |
|
70 | 96 |
BRK |
71 | 97 |
|
98 |
+@run ( -- ) |
|
99 |
+ |
|
100 |
+ ( read ) |
|
101 |
+ ;stroke .frame LDZ2 #20 SFT2 ADD2 STH2 |
|
102 |
+ .pen/x LDZ2 STH2kr LDA2 ADD2 .pen/x STZ2 |
|
103 |
+ .pen/y LDZ2 STH2r INC2 INC2 LDA2 ADD2 .pen/y STZ2 |
|
104 |
+ ( line ) |
|
105 |
+ .pen/x LDZ2 .pen/y LDZ2 |
|
106 |
+ .pen/x2 LDZ2 .pen/y2 LDZ2 |
|
107 |
+ .frame LDZ2 #01 SFT2 NIP #01 AND INC ;draw-line JSR2 |
|
108 |
+ ( history ) |
|
109 |
+ .pen/x LDZ2 .pen/x2 STZ2 |
|
110 |
+ .pen/y LDZ2 .pen/y2 STZ2 |
|
111 |
+ ( incr frame ) |
|
112 |
+ .frame LDZ2 INC2 .length LDZ2 INC2 ( mod2 ) DIV2k MUL2 SUB2 .frame STZ2 |
|
113 |
+ |
|
114 |
+JMP2r |
|
115 |
+ |
|
72 | 116 |
@draw-line ( x1* y1* x2* y2* color -- ) |
73 | 117 |
|
74 | 118 |
( load ) STH ,&y STR2 ,&x STR2 .line/y STZ2 .line/x STZ2 |
75 | 119 |
,&x LDR2 .line/x LDZ2 SUB2 ;abs2 JSR2 .line/dx STZ2 |
76 | 120 |
#0000 ,&y LDR2 .line/y LDZ2 SUB2 ;abs2 JSR2 SUB2 .line/dy STZ2 |
77 |
- #ffff #00 .line/x LDZ2 ,&x LDR2 ;lts2 JSR2 #10 SFT2 ADD2 ,&sx STR2 |
|
78 |
- #ffff #00 .line/y LDZ2 ,&y LDR2 ;lts2 JSR2 #10 SFT2 ADD2 ,&sy STR2 |
|
121 |
+ #ffff #00 .line/x LDZ2 ,&x LDR2 ;lts2 JSR2 DUP2 ADD2 ADD2 ,&sx STR2 |
|
122 |
+ #ffff #00 .line/y LDZ2 ,&y LDR2 ;lts2 JSR2 DUP2 ADD2 ADD2 ,&sy STR2 |
|
79 | 123 |
.line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2 |
80 | 124 |
&loop |
81 | 125 |
.line/x LDZ2 DUP2 .Screen/x DEO2 [ LIT2 &x $2 ] EQU2 |
82 | 126 |
.line/y LDZ2 DUP2 .Screen/y DEO2 [ LIT2 &y $2 ] EQU2 |
83 | 127 |
STHkr .Screen/pixel DEO |
84 | 128 |
AND ,&end JCN |
85 |
- .line/e1 LDZ2 #10 SFT2 DUP2 |
|
129 |
+ .line/e1 LDZ2 DUP2 ADD2 DUP2 |
|
86 | 130 |
.line/dy LDZ2 ;lts2 JSR2 ,&skipy JCN |
87 | 131 |
.line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2 |
88 | 132 |
.line/x LDZ2 [ LIT2 &sx $2 ] ADD2 .line/x STZ2 |
... | ... |
@@ -101,4 +145,24 @@ JMP2r |
101 | 145 |
@lts2 #8000 STH2k ADD2 SWP2 STH2r ADD2 GTH2 JMP2r |
102 | 146 |
@gts2 #8000 STH2k ADD2 SWP2 STH2r ADD2 LTH2 JMP2r |
103 | 147 |
|
104 |
-@pointer-icn 80c0 e0f0 f8e0 1000 |
|
148 |
+@clear-screen ( -- ) |
|
149 |
+ |
|
150 |
+ .Screen/height DEI2 #03 SFT2 NIP #00 |
|
151 |
+ &y |
|
152 |
+ #00 OVR #30 SFT2 .Screen/y DEO2 |
|
153 |
+ .Screen/width DEI2 #03 SFT2 NIP #00 |
|
154 |
+ &x |
|
155 |
+ #00 OVR #30 SFT2 .Screen/x DEO2 |
|
156 |
+ #00 .Screen/sprite DEO |
|
157 |
+ INC GTHk ,&x JCN |
|
158 |
+ POP2 |
|
159 |
+ INC GTHk ,&y JCN |
|
160 |
+ POP2 |
|
161 |
+ |
|
162 |
+JMP2r |
|
163 |
+ |
|
164 |
+@pointer-icn |
|
165 |
+ 80c0 e0f0 f8e0 1000 |
|
166 |
+ |
|
167 |
+@stroke |
|
168 |
+ |
... | ... |
@@ -25,8 +25,8 @@ JMP2r |
25 | 25 |
@input-main ( -> ) |
26 | 26 |
|
27 | 27 |
.Console/read DEI |
28 |
- LIT '0 EQUk NIP ,&no JCN |
|
29 |
- LIT '1 EQUk NIP ,&yes JCN |
|
28 |
+ LIT "0 EQUk NIP ,&no JCN |
|
29 |
+ LIT "1 EQUk NIP ,&yes JCN |
|
30 | 30 |
( ignore other inputs ) |
31 | 31 |
POP |
32 | 32 |
|
... | ... |
@@ -56,7 +56,7 @@ JMP2r |
56 | 56 |
@pstr ( str* -- ) |
57 | 57 |
|
58 | 58 |
&while |
59 |
- LDAk DUP LIT '_ EQU #3f MUL SUB .Console/write DEO |
|
59 |
+ LDAk DUP LIT "_ EQU #3f MUL SUB .Console/write DEO |
|
60 | 60 |
INC2 LDAk ,&while JCN |
61 | 61 |
POP2 |
62 | 62 |
|
... | ... |
@@ -30,14 +30,14 @@ BRK |
30 | 30 |
.a LDZ2 #ffff EQU2 ,&input JCN |
31 | 31 |
.b LDZ2 #ffff EQU2 ,&output JCN |
32 | 32 |
( SUBLEQ ) |
33 |
- .b LDZ2 STH2k ,&get JSR .a LDZ2 ,&get JSR SUB2 STH2r #10 SFT2 ;program ADD2 STA2 |
|
33 |
+ .b LDZ2 STH2k ,&get JSR .a LDZ2 ,&get JSR SUB2 STH2r DUP2 ADD2 ;program ADD2 STA2 |
|
34 | 34 |
( SET ) |
35 | 35 |
.b LDZ2 ,&get JSR #0001 SUB2 #8000 LTH2 ,&end JCN POP2 .c LDZ2 &end |
36 | 36 |
|
37 | 37 |
JMP2r |
38 | 38 |
&input ( -- ) JMP2r |
39 | 39 |
&output ( -- ) .a LDZ2 ,&get JSR NIP #18 DEO JMP2r |
40 |
- &get ( a* -- b* ) #10 SFT2 ;program ADD2 LDA2 JMP2r |
|
40 |
+ &get ( a* -- b* ) DUP2 ADD2 ;program ADD2 LDA2 JMP2r |
|
41 | 41 |
|
42 | 42 |
@program ( hello world ) |
43 | 43 |
000f 0011 ffff 0011 ffff ffff 0010 0001 |
44 | 44 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,155 @@ |
1 |
+( thue interpreter |
|
2 |
+ usage: thue.rom demo.t ) |
|
3 |
+ |
|
4 |
+|10 @Console &vector $2 &read $1 &pad $5 &write $1 |
|
5 |
+|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 |
|
6 |
+ |
|
7 |
+|0000 |
|
8 |
+ |
|
9 |
+@src $40 |
|
10 |
+@ptr $2 |
|
11 |
+@len $2 |
|
12 |
+ |
|
13 |
+|0100 ( -> ) |
|
14 |
+ |
|
15 |
+ ;on-console .Console/vector DEO2 |
|
16 |
+ |
|
17 |
+BRK |
|
18 |
+ |
|
19 |
+@on-console ( -> ) |
|
20 |
+ |
|
21 |
+ ;src STH2 |
|
22 |
+ |
|
23 |
+ ( read ) |
|
24 |
+ .Console/read DEI |
|
25 |
+ DUP #20 LTH OVR #7f GTH ORA ,&end JCN |
|
26 |
+ STH2kr ;slen JSR2 #003f GTH2 ,&end JCN |
|
27 |
+ STH2r ;sput JSR2 BRK |
|
28 |
+ &end |
|
29 |
+ POP |
|
30 |
+ |
|
31 |
+ ( parse ) |
|
32 |
+ STH2r .File/name DEO2 |
|
33 |
+ #0001 .File/length DEO2 |
|
34 |
+ ;program .ptr STZ2 |
|
35 |
+ &s |
|
36 |
+ ;&buf .File/read DEO2 |
|
37 |
+ .File/success DEI2 #0000 EQU2 ,&eof JCN |
|
38 |
+ [ LIT &buf $1 ] ;walk JSR2 |
|
39 |
+ ,&s JMP |
|
40 |
+ &eof |
|
41 |
+ |
|
42 |
+ ( assemble ) |
|
43 |
+ ;program/assembly .ptr STZ2 |
|
44 |
+ ;program |
|
45 |
+ &w |
|
46 |
+ ( save ) DUP2 .ptr LDZ2 STA2 |
|
47 |
+ ( incr ) .ptr LDZ2k INC2 INC2 ROT STZ2 |
|
48 |
+ ( next ) &eos INC2 LDAk ,&eos JCN INC2 |
|
49 |
+ LDAk ,&w JCN |
|
50 |
+ |
|
51 |
+ ( save acc ) |
|
52 |
+ INC2 ;program/accumulator ;scpy JSR2 |
|
53 |
+ |
|
54 |
+ ( run ) |
|
55 |
+ &eval ,step JSR ,&eval JCN |
|
56 |
+ #010f DEO |
|
57 |
+ |
|
58 |
+BRK |
|
59 |
+ |
|
60 |
+@step ( -- done ) |
|
61 |
+ |
|
62 |
+ ;program/assembly |
|
63 |
+ &while |
|
64 |
+ DUP2 ;run-rule JSR2 ,&found JCN |
|
65 |
+ #0004 ADD2 LDA2k ORA ,&while JCN |
|
66 |
+ POP2 |
|
67 |
+ #00 |
|
68 |
+ |
|
69 |
+JMP2r |
|
70 |
+ &found #01 JMP2r |
|
71 |
+ |
|
72 |
+@walk ( char -- ) |
|
73 |
+ |
|
74 |
+ .ptr LDZ2 STA |
|
75 |
+ |
|
76 |
+ ( check for left-side ) |
|
77 |
+ .ptr LDZ2 #0002 SUB2 ;&marker ;scmp JSR2 #01 NEQ ,&no-marker JCN |
|
78 |
+ #00 .ptr LDZ2 #0002 SUB2 STA |
|
79 |
+ .ptr LDZ2k #0002 SUB2 ROT STZ2 |
|
80 |
+ .len LDZ2k INC2 ROT STZ2 |
|
81 |
+ &no-marker |
|
82 |
+ ( check for right-side ) |
|
83 |
+ .ptr LDZ2 LDA #0a NEQ ,&no-lb JCN |
|
84 |
+ #00 .ptr LDZ2 STA |
|
85 |
+ &no-lb |
|
86 |
+ .ptr LDZ2k INC2 ROT STZ2 |
|
87 |
+ |
|
88 |
+JMP2r |
|
89 |
+ &marker "::= $1 |
|
90 |
+ |
|
91 |
+@run-rule ( rule* -- ) |
|
92 |
+ |
|
93 |
+ LDA2k ,&a STR2 |
|
94 |
+ INC2 INC2 LDA2 ,&b STR2 |
|
95 |
+ |
|
96 |
+ ;program/accumulator |
|
97 |
+ &w |
|
98 |
+ [ LIT2 &a $2 ] OVR2 ;sseg JSR2 #01 NEQ ,&no-found JCN |
|
99 |
+ ,&b LDR2 LDA LIT "~ EQU ,&output JCN |
|
100 |
+ ( shift ) DUP2 [ ,&b LDR2 ;slen JSR2 ,&a LDR2 ;slen JSR2 SUB2 ] ;ssft JSR2 |
|
101 |
+ ( write ) [ LIT2 &b $2 ] SWP2 OVR2 ;slen JSR2 ;mcpy JSR2 |
|
102 |
+ POP2 #01 JMP2r |
|
103 |
+ &no-found |
|
104 |
+ INC2 LDAk ,&w JCN |
|
105 |
+ POP2 |
|
106 |
+ #00 |
|
107 |
+ |
|
108 |
+JMP2r |
|
109 |
+ &output |
|
110 |
+ ,&a LDR2 ;slen JSR2 #0000 SWP2 SUB2 ;ssft JSR2 |
|
111 |
+ POP2 ,&b LDR2 INC2 |
|
112 |
+ LDAk LIT "` NEQ ,&no-lb JCN |
|
113 |
+ #0a18 DEO #01 JMP2r |
|
114 |
+ &no-lb |
|
115 |
+ ,print-str JSR #01 |
|
116 |
+ JMP2r |
|
117 |
+ |
|
118 |
+@print-str ( str* -- ) |
|
119 |
+ |
|
120 |
+ &while |
|
121 |
+ LDAk #18 DEO |
|
122 |
+ INC2 LDAk ,&while JCN |
|
123 |
+ POP2 |
|
124 |
+ |
|
125 |
+JMP2r |
|
126 |
+ |
|
127 |
+@ssft ( str* len* -- ) |
|
128 |
+ |
|
129 |
+ STH2 DUP2k ;slen JSR2 ADD2 STH2r |
|
130 |
+ DUP2 #8000 GTH2 ,&l JCN |
|
131 |
+ ORAk ,&r JCN |
|
132 |
+ POP2 POP2 POP2 |
|
133 |
+ |
|
134 |
+JMP2r |
|
135 |
+ &l #8000 SWP2 SUB2 #8000 ADD2 ,msfl JSR JMP2r |
|
136 |
+ &r ,msfr JSR JMP2r |
|
137 |
+ |
|
138 |
+( stdlib ) |
|
139 |
+ |
|
140 |
+@mcpy ( src* dst* len* -- ) SWP2 STH2 OVR2 ADD2 SWP2 &l LDAk STH2kr STA INC2r INC2 GTH2k ,&l JCN POP2 POP2 POP2r JMP2r |
|
141 |
+@msfl ( b* a* len* -- ) STH2 SWP2 EQU2k ,&e JCN &l DUP2k STH2kr ADD2 LDA ROT ROT STA INC2 GTH2k ,&l JCN POP2 POP2 &e POP2r JMP2r |
|
142 |
+@msfr ( b* a* len* -- ) STH2 EQU2k ,&e JCN &l DUP2 LDAk ROT ROT STH2kr ADD2 STA #0001 SUB2 LTH2k ,&l JCN POP2 POP2 &e POP2r JMP2r |
|
143 |
+ |
|
144 |
+@scap ( str* -- end* ) LDAk #00 NEQ JMP JMP2r &w INC2 LDAk ,&w JCN JMP2r |
|
145 |
+@sput ( chr str* -- ) ,scap JSR STA JMP2r |
|
146 |
+@slen ( str* -- len* ) DUP2 ,scap JSR SWP2 SUB2 JMP2r |
|
147 |
+@scpy ( src* dst* -- ) STH2 &w LDAk STH2kr STA INC2r INC2 LDAk ,&w JCN POP2 #00 STH2r STA JMP2r |
|
148 |
+@scmp ( a* b* -- f ) STH2 &l LDAk LDAkr STHr ANDk #00 EQU ,&e JCN NEQk ,&e JCN POP2 INC2 INC2r ,&l JMP &e NIP2 POP2r EQU JMP2r |
|
149 |
+@sseg ( a* b* -- f ) STH2 &l LDAk LDAkr STHr NEQ ,&e JCN INC2k LDA #00 EQU ,&e JCN INC2 INC2r ,&l JMP &e LDA LDAr STHr EQU JMP2r |
|
150 |
+ |
|
151 |
+$10 |
|
152 |
+ |
|
153 |
+@program $4000 |
|
154 |
+ &assembly $4000 |
|
155 |
+ &accumulator $4000 |
... | ... |
@@ -13,27 +13,31 @@ |
13 | 13 |
#a0dc .System/r DEO2 |
14 | 14 |
#a0dc .System/g DEO2 |
15 | 15 |
#a0dc .System/b DEO2 |
16 |
+ |
|
16 | 17 |
( find screen center ) |
17 | 18 |
.Screen/width DEI2 #01 SFT2 .center/x STZ2 |
18 | 19 |
.Screen/height DEI2 #01 SFT2 .center/y STZ2 |
19 |
- ( ver ) |
|
20 |
+ |
|
21 |
+ ( dashed line ) |
|
20 | 22 |
#02 .Screen/auto DEO |
21 | 23 |
#0000 .Screen/y DEO2 |
22 | 24 |
.center/x LDZ2 .Screen/x DEO2 |
23 | 25 |
.Screen/height DEI2 #0000 |
24 | 26 |
&ver |
25 |
- #43 .Screen/pixel DEO |
|
26 |
- .Screen/y DEI2k INC2 ROT DEO2 |
|
27 |
+ DUP #01 AND .Screen/pixel DEO |
|
27 | 28 |
INC2 GTH2k ,&ver JCN |
28 | 29 |
POP2 POP2 |
30 |
+ |
|
29 | 31 |
( left ) |
30 | 32 |
.center/x LDZ2 .Screen/x DEO2 |
31 | 33 |
.center/y LDZ2 #0018 SUB2 .Screen/y DEO2 |
32 | 34 |
;left-txt ,draw-uf2 JSR |
35 |
+ |
|
33 | 36 |
( center ) |
34 | 37 |
.center/x LDZ2 .Screen/x DEO2 |
35 | 38 |
.center/y LDZ2 .Screen/y DEO2 |
36 | 39 |
;center-txt ,draw-uf2-center JSR |
40 |
+ |
|
37 | 41 |
( right ) |
38 | 42 |
.center/x LDZ2 .Screen/x DEO2 |
39 | 43 |
.center/y LDZ2 #0018 ADD2 .Screen/y DEO2 |
... | ... |
@@ -41,23 +45,7 @@ |
41 | 45 |
|
42 | 46 |
BRK |
43 | 47 |
|
44 |
-@draw-uf2-center ( text* color -- ) |
|
45 |
- |
|
46 |
- DUP2 ,get-width JSR #01 SFT2 STH2 |
|
47 |
- .Screen/x DEI2k STH2r SUB2 ROT DEO2 |
|
48 |
- ,draw-uf2 JSR |
|
49 |
- |
|
50 |
-JMP2r |
|
51 |
- |
|
52 |
-@draw-uf2-right ( text* color -- ) |
|
53 |
- |
|
54 |
- DUP2 ,get-width JSR STH2 |
|
55 |
- .Screen/x DEI2k STH2r SUB2 ROT DEO2 |
|
56 |
- ,draw-uf2 JSR |
|
57 |
- |
|
58 |
-JMP2r |
|
59 |
- |
|
60 |
-@get-width ( text* -- width* ) |
|
48 |
+@get-uf2-width ( text* -- width* ) |
|
61 | 49 |
|
62 | 50 |
LIT2r 0000 |
63 | 51 |
&while |
... | ... |
@@ -68,14 +56,25 @@ JMP2r |
68 | 56 |
|
69 | 57 |
JMP2r |
70 | 58 |
|
59 |
+@draw-uf2-center ( text* -- ) |
|
60 |
+ |
|
61 |
+ DUP2 ,get-uf2-width JSR #01 SFT2 STH2 |
|
62 |
+ .Screen/x DEI2k STH2r SUB2 ROT DEO2 |
|
63 |
+ ,draw-uf2 JMP |
|
64 |
+ |
|
65 |
+@draw-uf2-right ( text* -- ) |
|
66 |
+ |
|
67 |
+ DUP2 ,get-uf2-width JSR STH2 |
|
68 |
+ .Screen/x DEI2k STH2r SUB2 ROT DEO2 |
|
69 |
+ |
|
71 | 70 |
@draw-uf2 ( text* -- ) |
72 | 71 |
|
73 | 72 |
#15 .Screen/auto DEO |
74 | 73 |
&while |
75 | 74 |
LDAk #20 SUB #00 SWP |
76 | 75 |
DUP2 #50 SFT2 ;font/glyphs ADD2 .Screen/addr DEO2 |
77 |
- ;font ADD2 LDA #00 SWP .Screen/x DEI2 ADD2 |
|
78 |
- #01 .Screen/sprite DEOk DEO |
|
76 |
+ ;font ADD2 LDA STHk #00 SWP .Screen/x DEI2 ADD2 |
|
77 |
+ #01 .Screen/sprite DEOk STHr #08 LTH ,&thin JCN DEOk &thin POP2 |
|
79 | 78 |
.Screen/x DEO2 |
80 | 79 |
INC2 LDAk ,&while JCN |
81 | 80 |
POP2 |
... | ... |
@@ -1,13 +1,8 @@ |
1 | 1 |
( GUI Shapes ) |
2 | 2 |
|
3 |
-%2** { #10 SFT2 } |
|
4 |
-%4** { #20 SFT2 } |
|
5 |
-%2// { #01 SFT2 } |
|
6 |
-%4// { #02 SFT2 } |
|
7 | 3 |
%ABS2 { DUP2 #0f SFT2 EQU #05 JCN #0000 SWP2 SUB2 } |
8 | 4 |
%LTS2 { #8000 ADD2 SWP2 #8000 ADD2 GTH2 } |
9 | 5 |
%GTS2 { #8000 ADD2 SWP2 #8000 ADD2 LTH2 } |
10 |
- |
|
11 | 6 |
%WIDTH { #0100 } %HEIGHT { #00a0 } |
12 | 7 |
|
13 | 8 |
( devices ) |
... | ... |
@@ -35,24 +30,24 @@ |
35 | 30 |
#f03c .System/g DEO2 |
36 | 31 |
#f03f .System/b DEO2 |
37 | 32 |
|
38 |
- ( background ) ;checker_icn #03 ;cover-pattern JSR2 |
|
33 |
+ ( background ) ;checker-icn #03 ;cover-pattern JSR2 |
|
39 | 34 |
|
40 |
- .Screen/width DEI2 2// WIDTH 2// SUB2 #0008 ADD2 |
|
41 |
- .Screen/height DEI2 2// HEIGHT 2// SUB2 #0008 ADD2 |
|
35 |
+ .Screen/width DEI2 #01 SFT2 WIDTH #01 SFT2 SUB2 #0008 ADD2 |
|
36 |
+ .Screen/height DEI2 #01 SFT2 HEIGHT #01 SFT2 SUB2 #0008 ADD2 |
|
42 | 37 |
WIDTH HEIGHT |
43 | 38 |
STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2 #02 ;fill-rect JSR2 |
44 | 39 |
|
45 |
- .Screen/width DEI2 2// WIDTH 2// SUB2 |
|
46 |
- .Screen/height DEI2 2// HEIGHT 2// SUB2 |
|
40 |
+ .Screen/width DEI2 #01 SFT2 WIDTH #01 SFT2 SUB2 |
|
41 |
+ .Screen/height DEI2 #01 SFT2 HEIGHT #01 SFT2 SUB2 |
|
47 | 42 |
WIDTH HEIGHT |
48 | 43 |
STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2 #01 ;fill-rect JSR2 |
49 | 44 |
|
50 |
- .Screen/width DEI2 2// WIDTH 2// SUB2 #0008 ADD2 |
|
51 |
- .Screen/height DEI2 2// HEIGHT 2// SUB2 #0008 ADD2 |
|
45 |
+ .Screen/width DEI2 #01 SFT2 WIDTH #01 SFT2 SUB2 #0008 ADD2 |
|
46 |
+ .Screen/height DEI2 #01 SFT2 HEIGHT #01 SFT2 SUB2 #0008 ADD2 |
|
52 | 47 |
WIDTH #0010 SUB2 HEIGHT #0010 SUB2 |
53 | 48 |
STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2 #03 ;line-rect JSR2 |
54 | 49 |
|
55 |
- .Screen/width DEI2 2// .Screen/height DEI2 2// WIDTH 4// #02 ;draw-circle JSR2 |
|
50 |
+ .Screen/width DEI2 #01 SFT2 .Screen/height DEI2 #01 SFT2 WIDTH #02 SFT2 #02 ;draw-circle JSR2 |
|
56 | 51 |
|
57 | 52 |
#0010 #0030 #0068 #02 ;line-hor JSR2 |
58 | 53 |
#0020 #0058 #0078 #02 ;line-ver JSR2 |
... | ... |
@@ -64,13 +59,13 @@ BRK |
64 | 59 |
( load ) .color STZ #0001 SUB2 .line/y0 STZ2 #0001 SUB2 .line/x0 STZ2 .line/y STZ2 .line/x STZ2 |
65 | 60 |
.line/x0 LDZ2 .line/x LDZ2 SUB2 ABS2 .line/dx STZ2 |
66 | 61 |
.line/y0 LDZ2 .line/y LDZ2 SUB2 ABS2 #0000 SWP2 SUB2 .line/dy STZ2 |
67 |
- #ffff #00 .line/x LDZ2 .line/x0 LDZ2 LTS2 2** ADD2 .line/sx STZ2 |
|
68 |
- #ffff #00 .line/y LDZ2 .line/y0 LDZ2 LTS2 2** ADD2 .line/sy STZ2 |
|
62 |
+ #ffff #00 .line/x LDZ2 .line/x0 LDZ2 LTS2 #10 SFT2 ADD2 .line/sx STZ2 |
|
63 |
+ #ffff #00 .line/y LDZ2 .line/y0 LDZ2 LTS2 #10 SFT2 ADD2 .line/sy STZ2 |
|
69 | 64 |
.line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2 |
70 | 65 |
&loop |
71 | 66 |
.line/x LDZ2 .Screen/x DEO2 .line/y LDZ2 .Screen/y DEO2 .color LDZ .Screen/pixel DEO |
72 |
- .line/x LDZ2 .line/x0 LDZ2 EQU2 .line/y LDZ2 .line/y0 LDZ2 EQU2 #0101 EQU2 ,&end JCN |
|
73 |
- .line/e1 LDZ2 2** .line/e2 STZ2 |
|
67 |
+ .line/x LDZ2 .line/x0 LDZ2 EQU2 .line/y LDZ2 .line/y0 LDZ2 EQU2 AND ,&end JCN |
|
68 |
+ .line/e1 LDZ2 #10 SFT2 .line/e2 STZ2 |
|
74 | 69 |
.line/e2 LDZ2 .line/dy LDZ2 LTS2 ,&skipy JCN |
75 | 70 |
.line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2 |
76 | 71 |
.line/x LDZ2 .line/sx LDZ2 ADD2 .line/x STZ2 |
... | ... |
@@ -136,16 +131,16 @@ JMP2r |
136 | 131 |
|
137 | 132 |
( load ) .color STZ .circle/r STZ2 .circle/yc STZ2 .circle/xc STZ2 |
138 | 133 |
#0000 .circle/x STZ2 .circle/r LDZ2 .circle/y STZ2 |
139 |
- .circle/r LDZ2 2** .circle/d STZ2 |
|
134 |
+ .circle/r LDZ2 #10 SFT2 .circle/d STZ2 |
|
140 | 135 |
( draw ) ;&seg JSR2 |
141 | 136 |
&loop |
142 | 137 |
( incr ) .circle/x LDZ2 INC2 .circle/x STZ2 |
143 | 138 |
.circle/d LDZ2 #0001 LTS2 ,&else JCN |
144 | 139 |
( decr ) .circle/y LDZ2 #0001 SUB2 .circle/y STZ2 |
145 |
- .circle/x LDZ2 .circle/y LDZ2 SUB2 4** .circle/d LDZ2 ADD2 .circle/d STZ2 |
|
140 |
+ .circle/x LDZ2 .circle/y LDZ2 SUB2 #20 SFT2 .circle/d LDZ2 ADD2 .circle/d STZ2 |
|
146 | 141 |
;&end JMP2 |
147 | 142 |
&else |
148 |
- .circle/x LDZ2 4** .circle/d LDZ2 ADD2 .circle/d STZ2 |
|
143 |
+ .circle/x LDZ2 #20 SFT2 .circle/d LDZ2 ADD2 .circle/d STZ2 |
|
149 | 144 |
&end |
150 | 145 |
( draw ) ;&seg JSR2 |
151 | 146 |
.circle/y LDZ2 .circle/x LDZ2 #0001 SUB2 GTS2 ,&loop JCN |
... | ... |
@@ -204,4 +199,5 @@ JMP2r |
204 | 199 |
|
205 | 200 |
JMP2r |
206 | 201 |
|
207 |
-@checker_icn [ f0f0 f0f0 0f0f 0f0f ] |
|
202 |
+@checker-icn |
|
203 |
+ f0f0 f0f0 0f0f 0f0f |
... | ... |
@@ -34,7 +34,7 @@ BRK |
34 | 34 |
@on-button ( -> ) |
35 | 35 |
|
36 | 36 |
.Controller/key DEI |
37 |
- DUP #00 NEQ ,&no-null JCN |
|
37 |
+ DUP ,&no-null JCN |
|
38 | 38 |
POP BRK |
39 | 39 |
&no-null |
40 | 40 |
DUP #0d NEQ ,&no-enter JCN |
... | ... |
@@ -75,7 +75,7 @@ BRK |
75 | 75 |
LIT 22 #02 ;draw-char JSR2 |
76 | 76 |
;buffer #03 ;draw-str JSR2 |
77 | 77 |
LIT 22 #02 ;draw-char JSR2 |
78 |
- LIT '. #02 ;draw-char JSR2 |
|
78 |
+ LIT ". #02 ;draw-char JSR2 |
|
79 | 79 |
|
80 | 80 |
JMP2r |
81 | 81 |
|
... | ... |
@@ -85,7 +85,7 @@ JMP2r |
85 | 85 |
#0010 .Screen/x DEO2 |
86 | 86 |
.Screen/height DEI2 #0020 SUB2 .Screen/y DEO2 |
87 | 87 |
|
88 |
- ( marker ) LIT '> #03 ;draw-char JSR2 |
|
88 |
+ ( marker ) LIT "> #03 ;draw-char JSR2 |
|
89 | 89 |
|
90 | 90 |
;buffer STHr ;draw-str JSR2 |
91 | 91 |
|
... | ... |
@@ -137,8 +137,8 @@ |
137 | 137 |
DUP2 ,asma-print-labels JSR |
138 | 138 |
( here ) |
139 | 139 |
DUP2 #0004 ADD2 |
140 |
- LDAk LIT 'A LTH ,&loop JCN |
|
141 |
- LDAk LIT 'Z GTH ,&loop JCN |
|
140 |
+ LDAk LIT "A LTH ,&loop JCN |
|
141 |
+ LDAk LIT "Z GTH ,&loop JCN |
|
142 | 142 |
POP2 |
143 | 143 |
,&skip-device-label JMP |
144 | 144 |
&loop |
... | ... |
@@ -169,8 +169,8 @@ |
169 | 169 |
,asma-print-string JMP |
170 | 170 |
|
171 | 171 |
@asma-print-short ( short* -- ) |
172 |
- LIT '0 .Console/error DEO |
|
173 |
- LIT 'x .Console/error DEO |
|
172 |
+ LIT "0 .Console/error DEO |
|
173 |
+ LIT "x .Console/error DEO |
|
174 | 174 |
OVR #04 SFT ,&hex JSR |
175 | 175 |
SWP #0f AND ,&hex JSR |
176 | 176 |
DUP #04 SFT ,&hex JSR |
... | ... |
@@ -210,9 +210,9 @@ |
210 | 210 |
JMP2r |
211 | 211 |
|
212 | 212 |
&preamble |
213 |
- "%BRK 20 '{ 20 "00 20 '} 20 |
|
214 |
- "%[ 20 '{ 20 '} 20 |
|
215 |
- "%] 20 '{ 20 '} 20 |
|
213 |
+ "%BRK 20 "{ 20 "00 20 "} 20 |
|
214 |
+ "%[ 20 "{ 20 "} 20 |
|
215 |
+ "%] 20 "{ 20 "} 20 |
|
216 | 216 |
"@on-reset 20 |
217 | 217 |
&preamble-end |
218 | 218 |
|
... | ... |
@@ -496,15 +496,15 @@ |
496 | 496 |
JMP2r |
497 | 497 |
|
498 | 498 |
¬-end |
499 |
- DUP LIT '2 NEQ ,¬-two JCN |
|
499 |
+ DUP LIT "2 NEQ ,¬-two JCN |
|
500 | 500 |
POP LIT &short-flag $1 ORA ,&loop JMP |
501 | 501 |
|
502 | 502 |
¬-two |
503 |
- DUP LIT 'r NEQ ,¬-return JCN |
|
503 |
+ DUP LIT "r NEQ ,¬-return JCN |
|
504 | 504 |
POP LIT &return-flag $1 ORA ,&loop JMP |
505 | 505 |
|
506 | 506 |
¬-return |
507 |
- LIT 'k NEQ ,¬-keep JCN |
|
507 |
+ LIT "k NEQ ,¬-keep JCN |
|
508 | 508 |
&set-keep LIT &keep-flag $1 ORA ,&loop JMP |
509 | 509 |
|
510 | 510 |
¬-keep ( 00 byte / end* ) |
... | ... |
@@ -947,33 +947,33 @@ |
947 | 947 |
than than string data ) |
948 | 948 |
|
949 | 949 |
@asma-first-char-comment |
950 |
- &28 $2 $2 '( 00 :asma-comment-more |
|
951 |
- &_entry :&28 $2 ') 00 :asma-comment-less |
|
950 |
+ &28 $2 $2 "( 00 :asma-comment-more |
|
951 |
+ &_entry :&28 $2 ") 00 :asma-comment-less |
|
952 | 952 |
|
953 | 953 |
@asma-first-char-macro |
954 |
- &28 $2 $2 '( 00 :asma-comment-start |
|
955 |
- &29 :&28 $2 ') 00 :asma-comment-end |
|
956 |
- &_entry :&29 :&7d '{ 00 :asma-ignore |
|
957 |
- &7d $2 $2 '} 00 :asma-macro-end |
|
954 |
+ &28 $2 $2 "( 00 :asma-comment-start |
|
955 |
+ &29 :&28 $2 ") 00 :asma-comment-end |
|
956 |
+ &_entry :&29 :&7d "{ 00 :asma-ignore |
|
957 |
+ &7d $2 $2 "} 00 :asma-macro-end |
|
958 | 958 |
|
959 | 959 |
@asma-first-char-normal |
960 |
- &22 $2 $2 '" 00 :asma-raw-word |
|
961 |
- &23 :&22 $2 '# 00 :asma-literal-hex |
|
962 |
- &24 :&23 :&25 '$ 00 :asma-pad-relative |
|
963 |
- &25 $2 $2 '% 00 :asma-macro-define |
|
960 |
+ &22 $2 $2 "" 00 :asma-raw-word |
|
961 |
+ &23 :&22 $2 "# 00 :asma-literal-hex |
|
962 |
+ &24 :&23 :&25 "$ 00 :asma-pad-relative |
|
963 |
+ &25 $2 $2 "% 00 :asma-macro-define |
|
964 | 964 |
&26 :&24 :&29 26 00 ( & ) :asma-sublabel-define |
965 |
- &27 $2 $2 '' 00 :asma-raw-char |
|
966 |
- &28 :&27 $2 '( 00 :asma-comment-start |
|
967 |
- &29 :&28 :&2c ') 00 :asma-comment-end |
|
968 |
- &2c $2 $2 ', 00 :asma-literal-rel-addr |
|
969 |
- &_entry :&26 :&7b '. 00 :asma-literal-zero-addr |
|
970 |
- &3a $2 $2 ': 00 :asma-abs-addr |
|
971 |
- &3b :&3a :&40 '; 00 :asma-literal-abs-addr |
|
972 |
- &40 $2 $2 '@ 00 :asma-label-define |
|
973 |
- &7b :&3b :&7d '{ 00 :asma-ignore |
|
974 |
- &7c $2 $2 '| 00 :asma-pad-absolute |
|
975 |
- &7d :&7c :&7e '} 00 :asma-ignore |
|
976 |
- &7e $2 $2 '~ 00 :asma-include |
|
965 |
+ &27 $2 $2 "' 00 :asma-raw-char |
|
966 |
+ &28 :&27 $2 "( 00 :asma-comment-start |
|
967 |
+ &29 :&28 :&2c ") 00 :asma-comment-end |
|
968 |
+ &2c $2 $2 ", 00 :asma-literal-rel-addr |
|
969 |
+ &_entry :&26 :&7b ". 00 :asma-literal-zero-addr |
|
970 |
+ &3a $2 $2 ": 00 :asma-abs-addr |
|
971 |
+ &3b :&3a :&40 "; 00 :asma-literal-abs-addr |
|
972 |
+ &40 $2 $2 "@ 00 :asma-label-define |
|
973 |
+ &7b :&3b :&7d "{ 00 :asma-ignore |
|
974 |
+ &7c $2 $2 "| 00 :asma-pad-absolute |
|
975 |
+ &7d :&7c :&7e "} 00 :asma-ignore |
|
976 |
+ &7e $2 $2 "~ 00 :asma-include |
|
977 | 977 |
|
978 | 978 |
@asma-opcodes |
979 | 979 |
&_entry :>H :&ROT &_disasm "LIT 00 |
... | ... |
@@ -69,15 +69,15 @@ BRK |
69 | 69 |
[ #1b ] NEQk NIP ,&no-esc JCN ;do-pop JSR2 POP BRK &no-esc |
70 | 70 |
[ #08 ] NEQk NIP ,&no-backspace JCN ;do-erase JSR2 POP BRK &no-backspace |
71 | 71 |
( arithmetic ) |
72 |
- [ LIT '+ ] NEQk NIP ,&no-add JCN ;do-add JSR2 POP BRK &no-add |
|
73 |
- [ LIT '- ] NEQk NIP ,&no-sub JCN ;do-sub JSR2 POP BRK &no-sub |
|
74 |
- [ LIT '* ] NEQk NIP ,&no-mul JCN ;do-mul JSR2 POP BRK &no-mul |
|
75 |
- [ LIT '/ ] NEQk NIP ,&no-div JCN ;do-div JSR2 POP BRK &no-div |
|
72 |
+ [ LIT "+ ] NEQk NIP ,&no-add JCN ;do-add JSR2 POP BRK &no-add |
|
73 |
+ [ LIT "- ] NEQk NIP ,&no-sub JCN ;do-sub JSR2 POP BRK &no-sub |
|
74 |
+ [ LIT "* ] NEQk NIP ,&no-mul JCN ;do-mul JSR2 POP BRK &no-mul |
|
75 |
+ [ LIT "/ ] NEQk NIP ,&no-div JCN ;do-div JSR2 POP BRK &no-div |
|
76 | 76 |
( bitwise ) |
77 |
- [ LIT '& ] NEQk NIP ,&no-and JCN ;do-and JSR2 POP BRK &no-and |
|
78 |
- [ LIT '| ] NEQk NIP ,&no-ora JCN ;do-ora JSR2 POP BRK &no-ora |
|
79 |
- [ LIT '^ ] NEQk NIP ,&no-eor JCN ;do-eor JSR2 POP BRK &no-eor |
|
80 |
- [ LIT '~ ] NEQk NIP ,&no-not JCN ;do-not JSR2 POP BRK &no-not |
|
77 |
+ [ LIT "& ] NEQk NIP ,&no-and JCN ;do-and JSR2 POP BRK &no-and |
|
78 |
+ [ LIT "| ] NEQk NIP ,&no-ora JCN ;do-ora JSR2 POP BRK &no-ora |
|
79 |
+ [ LIT "^ ] NEQk NIP ,&no-eor JCN ;do-eor JSR2 POP BRK &no-eor |
|
80 |
+ [ LIT "~ ] NEQk NIP ,&no-not JCN ;do-not JSR2 POP BRK &no-not |
|
81 | 81 |
( value ) |
82 | 82 |
;key-value JSR2 ;push-input JSR2 |
83 | 83 |
|
... | ... |
@@ -131,7 +131,7 @@ BRK |
131 | 131 |
|
132 | 132 |
( y ) .modpad-frame/y LDZ2 SUB2 #24 SFT2 NIP STH |
133 | 133 |
( x ) .modpad-frame/x LDZ2 SUB2 #04 SFT2 |
134 |
- ( lookup ) STHr ADD #10 SFT2 ;keypad/ops ADD2 LDA2 JSR2 |
|
134 |
+ ( lookup ) STHr ADD DUP2 ADD2 ;keypad/ops ADD2 LDA2 JSR2 |
|
135 | 135 |
;draw-bitpad JSR2 |
136 | 136 |
#00 .Mouse/state DEO POP2 |
137 | 137 |
|
... | ... |
@@ -141,7 +141,7 @@ BRK |
141 | 141 |
|
142 | 142 |
POP2 |
143 | 143 |
.input-frame/x LDZ2 SUB2 #03 SFT2 NIP |
144 |
- DUP #00 NEQ ,&no-push JCN |
|
144 |
+ DUP ,&no-push JCN |
|
145 | 145 |
;do-push JSR2 &no-push |
146 | 146 |
DUP #01 NEQ ,&no-pop JCN |
147 | 147 |
;do-pop JSR2 &no-pop |
... | ... |
@@ -183,7 +183,7 @@ JMP2r |
183 | 183 |
|
184 | 184 |
@push ( value* -- ) |
185 | 185 |
|
186 |
- ( store ) .stack/length LDZ #10 SFT .stack/items ADD STZ2 |
|
186 |
+ ( store ) .stack/length LDZ DUP ADD .stack/items ADD STZ2 |
|
187 | 187 |
( INCZ ) .stack/length LDZk INC SWP STZ |
188 | 188 |
( reset ) #0000 .input/value STZ2 |
189 | 189 |
#00 ;draw-input JSR2 |
... | ... |
@@ -193,8 +193,8 @@ JMP2r |
193 | 193 |
|
194 | 194 |
@pop ( -- value* ) |
195 | 195 |
|
196 |
- .stack/length LDZ #01 SUB #10 SFT .stack/items ADD LDZ2 |
|
197 |
- ( clear ) #0000 [ .stack/length LDZ #01 SUB #10 SFT .stack/items ADD ] STZ2 |
|
196 |
+ .stack/length LDZ #01 SUB DUP ADD .stack/items ADD LDZ2 |
|
197 |
+ ( clear ) #0000 [ .stack/length LDZ #01 SUB DUP ADD .stack/items ADD ] STZ2 |
|
198 | 198 |
( DECZ ) .stack/length LDZk #01 SUB SWP STZ |
199 | 199 |
#01 ;draw-input JSR2 |
200 | 200 |
;draw-stack JSR2 |
... | ... |
@@ -396,7 +396,7 @@ JMP2r |
396 | 396 |
.input-frame/x LDZ2 #0018 ADD2 .Screen/x DEO2 |
397 | 397 |
#00 OVR #30 SFT2 .input-frame/y LDZ2 ADD2 #004c SUB2 .Screen/y DEO2 |
398 | 398 |
( color ) DUP #08 .stack/length LDZ SUB #01 SUB GTH STH |
399 |
- ( value ) DUP #10 SFT .stack/items ADD [ #10 .stack/length LDZ #10 SFT SUB SUB ] LDZ2 |
|
399 |
+ ( value ) DUP DUP ADD .stack/items ADD [ #10 .stack/length LDZ DUP ADD SUB SUB ] LDZ2 |
|
400 | 400 |
STHr ;draw-number JSR2 |
401 | 401 |
INC GTHk ,&loop JCN |
402 | 402 |
POP2 |
... | ... |
@@ -47,7 +47,7 @@ |
47 | 47 |
#006c ADD2 .time/y STZ2 |
48 | 48 |
;draw-watchface JSR2 |
49 | 49 |
( time buffer ) |
50 |
- LIT ': |
|
50 |
+ LIT ": |
|
51 | 51 |
DUP .buf/s1 STZ |
52 | 52 |
.buf/s2 STZ |
53 | 53 |
|
... | ... |
@@ -121,8 +121,8 @@ JMP2r |
121 | 121 |
DUP ;is-lc JSR2 ,&lc JCN |
122 | 122 |
DUP ;is-uc JSR2 ,&uc JCN |
123 | 123 |
DUP ;is-num JSR2 ,&num JCN |
124 |
- DUP LIT '/ EQU ,&slash JCN |
|
125 |
- DUP LIT ': EQU ,&colon JCN |
|
124 |
+ DUP LIT "/ EQU ,&slash JCN |
|
125 |
+ DUP LIT ": EQU ,&colon JCN |
|
126 | 126 |
POP ;font/blank |
127 | 127 |
&end |
128 | 128 |
.Screen/addr DEO2 |
... | ... |
@@ -144,15 +144,15 @@ JMP2r |
144 | 144 |
( load ) STH ,&y STR2 ,&x STR2 .line/y STZ2 .line/x STZ2 |
145 | 145 |
,&x LDR2 .line/x LDZ2 SUB2 ;abs2 JSR2 .line/dx STZ2 |
146 | 146 |
#0000 ,&y LDR2 .line/y LDZ2 SUB2 ;abs2 JSR2 SUB2 .line/dy STZ2 |
147 |
- #ffff #00 .line/x LDZ2 ,&x LDR2 ;lts2 JSR2 #10 SFT2 ADD2 ,&sx STR2 |
|
148 |
- #ffff #00 .line/y LDZ2 ,&y LDR2 ;lts2 JSR2 #10 SFT2 ADD2 ,&sy STR2 |
|
147 |
+ #ffff #00 .line/x LDZ2 ,&x LDR2 ;lts2 JSR2 DUP2 ADD2 ADD2 ,&sx STR2 |
|
148 |
+ #ffff #00 .line/y LDZ2 ,&y LDR2 ;lts2 JSR2 DUP2 ADD2 ADD2 ,&sy STR2 |
|
149 | 149 |
.line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2 |
150 | 150 |
&loop |
151 | 151 |
.line/x LDZ2 DUP2 .Screen/x DEO2 [ LIT2 &x $2 ] EQU2 |
152 | 152 |
.line/y LDZ2 DUP2 .Screen/y DEO2 [ LIT2 &y $2 ] EQU2 |
153 | 153 |
STHkr .Screen/pixel DEO |
154 | 154 |
AND ,&end JCN |
155 |
- .line/e1 LDZ2 #10 SFT2 DUP2 |
|
155 |
+ .line/e1 LDZ2 DUP2 ADD2 DUP2 |
|
156 | 156 |
.line/dy LDZ2 ;lts2 JSR2 ,&skipy JCN |
157 | 157 |
.line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2 |
158 | 158 |
.line/x LDZ2 [ LIT2 &sx $2 ] ADD2 .line/x STZ2 |
... | ... |
@@ -172,12 +172,12 @@ JMP2r |
172 | 172 |
#3c00 |
173 | 173 |
&loop |
174 | 174 |
( dots ) |
175 |
- #00 OVR #10 SFT2 ;table ADD2 LDA2 |
|
175 |
+ #00 OVRk ADD2 ;table ADD2 LDA2 |
|
176 | 176 |
#0018 ;circle JSR2 |
177 | 177 |
.Screen/x DEO2 .Screen/y DEO2 #01 .Screen/pixel DEO |
178 | 178 |
( markers ) |
179 | 179 |
DUP #05 ;mod JSR2 ,&no-marker JCN |
180 |
- #00 OVR #10 SFT2 ;table ADD2 LDA2 |
|
180 |
+ #00 OVRk ADD2 ;table ADD2 LDA2 |
|
181 | 181 |
STH2k #0018 ;circle JSR2 SWP2 |
182 | 182 |
STH2r #001c ;circle JSR2 SWP2 |
183 | 183 |
#01 ;draw-line JSR2 |
... | ... |
@@ -189,14 +189,14 @@ JMP2r |
189 | 189 |
|
190 | 190 |
@make-needles ( -- ) |
191 | 191 |
|
192 |
- [ #00 .DateTime/second DEI #1e ADD #3c ;mod JSR2 ] #10 SFT2 ;table ADD2 LDA2 |
|
192 |
+ [ #00 .DateTime/second DEI #1e ADD #3c ;mod JSR2 ] DUP2 ADD2 ;table ADD2 LDA2 |
|
193 | 193 |
#00a0 ,circle JSR .needles/zx STZ2 .needles/zy STZ2 |
194 |
- [ #00 .DateTime/second DEI ] #10 SFT2 ;table ADD2 LDA2 |
|
194 |
+ [ #00 .DateTime/second DEI ] DUP2 ADD2 ;table ADD2 LDA2 |
|
195 | 195 |
#0020 ,circle JSR .needles/sx STZ2 .needles/sy STZ2 |
196 |
- [ #00 .DateTime/minute DEI ] #10 SFT2 ;table ADD2 LDA2 |
|
196 |
+ [ #00 .DateTime/minute DEI ] DUP2 ADD2 ;table ADD2 LDA2 |
|
197 | 197 |
#0022 ,circle JSR .needles/mx STZ2 .needles/my STZ2 |
198 | 198 |
[ #00 .DateTime/hour DEI #0c ;mod JSR2 #20 SFTk NIP ADD ] |
199 |
- ( minute offset ) [ #00 .DateTime/minute DEI #0f DIV ADD2 ] #10 SFT2 ;table ADD2 LDA2 |
|
199 |
+ ( minute offset ) [ #00 .DateTime/minute DEI #0f DIV ADD2 ] DUP2 ADD2 ;table ADD2 LDA2 |
|
200 | 200 |
#002a ,circle JSR .needles/hx STZ2 .needles/hy STZ2 |
201 | 201 |
|
202 | 202 |
JMP2r |
... | ... |
@@ -219,7 +219,7 @@ JMP2r |
219 | 219 |
|
220 | 220 |
JMP2r |
221 | 221 |
|
222 |
-@mod DUP2 DIV MUL SUB JMP2r |
|
222 |
+@mod DIVk MUL SUB JMP2r |
|
223 | 223 |
@abs2 DUP2 #0f SFT2 EQU #05 JCN #0000 SWP2 SUB2 JMP2r |
224 | 224 |
@lts2 #8000 STH2k ADD2 SWP2 STH2r ADD2 GTH2 JMP2r |
225 | 225 |
@gts2 #8000 STH2k ADD2 SWP2 STH2r ADD2 LTH2 JMP2r |
226 | 226 |
deleted file mode 100644 |
... | ... |
@@ -1,705 +0,0 @@ |
1 |
-( UXN-DOS ) |
|
2 |
- |
|
3 |
-%+ { ADD } %- { SUB } %* { MUL } %/ { DIV } |
|
4 |
-%< { LTH } %> { GTH } %= { EQU } %! { NEQ } |
|
5 |
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } |
|
6 |
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } |
|
7 |
- |
|
8 |
-%HALT { #010f DEO } |
|
9 |
-%EMIT { #18 DEO } |
|
10 |
-%PRINT { ;print-str JSR2 #0a EMIT } |
|
11 |
-%DEBUG { ;print-hex/byte JSR2 #0a EMIT } |
|
12 |
-%DEBUG2 { ;print-hex JSR2 #0a EMIT } |
|
13 |
- |
|
14 |
-%2* { #10 SFT } %2/ { #01 SFT } %2** { #10 SFT2 } %2// { #01 SFT2 } |
|
15 |
-%4* { #20 SFT } %4/ { #02 SFT } %4** { #20 SFT2 } %4// { #02 SFT2 } |
|
16 |
-%8* { #30 SFT } %8/ { #03 SFT } %8** { #30 SFT2 } %8// { #03 SFT2 } |
|
17 |
-%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 } |
|
18 |
-%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 } |
|
19 |
- |
|
20 |
-%2MOD { #01 AND } %2MOD2 { #0001 AND2 } |
|
21 |
-%4MOD { #03 AND } %4MOD2 { #0003 AND2 } |
|
22 |
-%8MOD { #07 AND } %8MOD2 { #0007 AND2 } |
|
23 |
-%10MOD { #0f AND } %10MOD2 { #000f AND2 } |
|
24 |
- |
|
25 |
-%MOD { DIVk MUL SUB } |
|
26 |
-%MOD2 { DIV2k MUL2 SUB2 } |
|
27 |
- |
|
28 |
-%AUTO-X { #01 .Screen/auto DEO } |
|
29 |
-%AUTO-Y { #02 .Screen/auto DEO } |
|
30 |
-%AUTO-XY { #03 .Screen/auto DEO } |
|
31 |
-%AUTO-ADDR { #04 .Screen/auto DEO } |
|
32 |
-%AUTO-XADDR { #05 .Screen/auto DEO } |
|
33 |
-%AUTO-YADDR { #06 .Screen/auto DEO } |
|
34 |
-%AUTO-XYADDR { #07 .Screen/auto DEO } |
|
35 |
-%RELEASE-MOUSE { #0096 DEO } |
|
36 |
- |
|
37 |
-%RTN { JMP2r } |
|
38 |
- |
|
39 |
-%WIDTH { #38 } |
|
40 |
-%HEIGHT { #20 } |
|
41 |
-%PAD { #0018 } |
|
42 |
- |
|
43 |
-( devices ) |
|
44 |
- |
|
45 |
-|00 @System &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1 |
|
46 |
-|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 |
|
47 |
-|80 @Controller &vector $2 &button $1 &key $1 |
|
48 |
-|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 |
|
49 |
-|c0 @DateTime [ &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 ] |
|
50 |
- |
|
51 |
-( variables ) |
|
52 |
- |
|
53 |
-|0000 |
|
54 |
- |
|
55 |
-@buffer $3 |
|
56 |
- &input $80 |
|
57 |
-@path $40 |
|
58 |
-@frame $1 |
|
59 |
- |
|
60 |
-( init ) |
|
61 |
- |
|
62 |
-|0100 ( -> ) |
|
63 |
- |
|
64 |
- ( theme ) |
|
65 |
- #50f8 .System/r DEO2 |
|
66 |
- #c0f8 .System/g DEO2 |
|
67 |
- #a0f8 .System/b DEO2 |
|
68 |
- |
|
69 |
- ( vectors ) |
|
70 |
- ;on-button .Controller/vector DEO2 |
|
71 |
- |
|
72 |
- ( resize ) |
|
73 |
- #00 WIDTH 8** PAD 2** ++ .Screen/width DEO2 |
|
74 |
- #00 HEIGHT 8** PAD 2** ++ .Screen/height DEO2 |
|
75 |
- |
|
76 |
- #04 ;draw-input JSR2 |
|
77 |
- |
|
78 |
- LIT '. .path STZ |
|
79 |
- |
|
80 |
- ;clear JSR2 |
|
81 |
- |
|
82 |
-BRK |
|
83 |
- |
|
84 |
-@on-button ( -> ) |
|
85 |
- |
|
86 |
- .Controller/key DEI |
|
87 |
- DUP #00 ! ,&no-null JCN |
|
88 |
- POP BRK |
|
89 |
- &no-null |
|
90 |
- DUP #0d ! ,&no-enter JCN |
|
91 |
- #00 ;draw-input JSR2 |
|
92 |
- ;validate JSR2 |
|
93 |
- #01 ;draw-input JSR2 |
|
94 |
- .frame LDZk INC SWP STZ |
|
95 |
- &no-enter |
|
96 |
- DUP #08 ! ,&no-backspace JCN |
|
97 |
- #00 ;draw-input JSR2 |
|
98 |
- ;buffer ;spop JSR2 |
|
99 |
- #04 ;draw-input JSR2 |
|
100 |
- .frame LDZk INC SWP STZ |
|
101 |
- &no-backspace |
|
102 |
- DUP STHk #1f > STHr #7b < #0101 !! ,&no-valid JCN |
|
103 |
- ;buffer ;slen JSR2 #007f >> ,&no-valid JCN |
|
104 |
- STHk ;buffer STHr ;sput JSR2 |
|
105 |
- #04 ;draw-input JSR2 |
|
106 |
- .frame LDZk INC SWP STZ |
|
107 |
- &no-valid |
|
108 |
- POP |
|
109 |
- |
|
110 |
-BRK |
|
111 |
- |
|
112 |
-@clear ( -- ) |
|
113 |
- |
|
114 |
- PAD .Screen/x DEO2 |
|
115 |
- PAD .Screen/y DEO2 |
|
116 |
- ;&blank-icn .Screen/addr DEO2 |
|
117 |
- AUTO-X |
|
118 |
- HEIGHT #00 |
|
119 |
- &ver |
|
120 |
- WIDTH #00 |
|
121 |
- &hor |
|
122 |
- #02 .Screen/sprite DEO |
|
123 |
- INC GTHk ,&hor JCN |
|
124 |
- POP2 |
|
125 |
- PAD .Screen/x DEO2 |
|
126 |
- .Screen/y DEI2k #0008 ++ ROT DEO2 |
|
127 |
- INC GTHk ,&ver JCN |
|
128 |
- POP2 |
|
129 |
- #00 .Screen/auto DEO |
|
130 |
- |
|
131 |
-RTN |
|
132 |
- &blank-icn 8000 0000 0000 0000 |
|
133 |
- |
|
134 |
-( DOS ) |
|
135 |
- |
|
136 |
-@validate ( -- ) |
|
137 |
- |
|
138 |
- ;clear JSR2 |
|
139 |
- |
|
140 |
- PAD .Screen/x DEO2 |
|
141 |
- PAD .Screen/y DEO2 |
|
142 |
- |
|
143 |
- ;get-cmd JSR2 ;commands-func ++ LDA2 JSR2 |
|
144 |
- ;buffer #0080 ;mclr JSR2 |
|
145 |
- |
|
146 |
-JMP2r |
|
147 |
- |
|
148 |
-@get-cmd ( -- cmd* ) |
|
149 |
- |
|
150 |
- ;commands/end ;commands |
|
151 |
- &loop |
|
152 |
- LDA2k ;buffer ;scmp-seg JSR2 #00 = ,&continue JCN |
|
153 |
- NIP2 ;commands -- RTN |
|
154 |
- &continue |
|
155 |
- INC2 INC2 GTH2k ,&loop JCN |
|
156 |
- POP2 ;commands -- |
|
157 |
- |
|
158 |
-RTN |
|
159 |
- |
|
160 |
-@cmd-ls "ls $1 &docs "list 20 "folder 20 "content $1 &func |
|
161 |
- |
|
162 |
- ( load ) |
|
163 |
- ;path .File/name DEO2 |
|
164 |
- #8000 .File/length DEO2 |
|
165 |
- ;view .File/read DEO2 |
|
166 |
- |
|
167 |
- ;view #01 ;draw-tx JSR2 |
|
168 |
- |
|
169 |
-RTN |
|
170 |
- |
|
171 |
-@cmd-mk "mk $1 &docs "make 20 "file $1 &func |
|
172 |
- |
|
173 |
- ;buffer/input ;file-exists JSR2 #01 ! ,&no-exists JCN |
|
174 |
- ;error-exists-txt ;buffer/input ;draw-message JSR2 RTN |
|
175 |
- &no-exists |
|
176 |
- ( save ) |
|
177 |
- ;buffer/input .File/name DEO2 |
|
178 |
- #0001 .File/length DEO2 |
|
179 |
- ;&buf .File/write DEO2 |
|
180 |
- ( message ) |
|
181 |
- ;make-success-txt ;buffer/input ;draw-message JSR2 |
|
182 |
- |
|
183 |
-RTN |
|
184 |
- &buf 0a |
|
185 |
- |
|
186 |
-@cmd-cp "cp $1 &docs "copy 20 "file 20 "to 20 "name $1 &func |
|
187 |
- |
|
188 |
- ( b ) ;buffer/input #20 ;next-char JSR2 STH2k INC2 |
|
189 |
- #00 STH2r STA |
|
190 |
- ( a ) ;buffer/input |
|
191 |
- ( a exists ) |
|
192 |
- ;buffer/input ;file-exists JSR2 ,&valid JCN |
|
193 |
- ;error-unexists-txt ;buffer/input ;draw-message JSR2 POP2 POP2 RTN |
|
194 |
- &valid |
|
195 |
- ( b unexists ) |
|
196 |
- OVR2 ;file-exists JSR2 #00 = ,&available JCN |
|
197 |
- OVR2 ;error-exists-txt SWP2 ;draw-message JSR2 POP2 POP2 RTN |
|
198 |
- &available |
|
199 |
- ( load ) |
|
200 |
- .File/name DEO2 |
|
201 |
- #8000 .File/length DEO2 |
|
202 |
- ;view .File/read DEO2 |
|
203 |
- ( save ) |
|
204 |
- DUP2 .File/name DEO2 |
|
205 |
- #8000 .File/length DEO2 |
|
206 |
- ;view .File/write DEO2 |
|
207 |
- ( message ) |
|
208 |
- ;copy-success-txt SWP2 ;draw-message JSR2 |
|
209 |
- |
|
210 |
-RTN |
|
211 |
- |
|
212 |
-@cmd-mv "mv $1 &docs "move 20 "file 20 "to 20 "name $1 |
|
213 |
- &func |
|
214 |
- |
|
215 |
- ( todo ) |
|
216 |
- |
|
217 |
-RTN |
|
218 |
- |
|
219 |
-@cmd-rm "rm $1 &docs "remove 20 "file $1 |
|
220 |
- &func |
|
221 |
- |
|
222 |
- ( exists ) |
|
223 |
- ;buffer/input ;file-exists JSR2 ,&valid JCN |
|
224 |
- ;error-unexists-txt ;buffer/input ;draw-message JSR2 RTN |
|
225 |
- &valid |
|
226 |
- ( delete ) |
|
227 |
- ;buffer/input .File/name DEO2 |
|
228 |
- #01 .File/delete DEO |
|
229 |
- ( message ) |
|
230 |
- ;remove-success-txt ;buffer/input ;draw-message JSR2 |
|
231 |
- |
|
232 |
-RTN |
|
233 |
- |
|
234 |
-@cmd-tx "tx $1 &docs "display 20 "file 20 "as 20 "text $1 |
|
235 |
- &func |
|
236 |
- |
|
237 |
- ( exists ) |
|
238 |
- ;buffer/input ;file-exists JSR2 ,&valid JCN |
|
239 |
- ;error-unexists-txt ;buffer/input ;draw-message JSR2 RTN |
|
240 |
- &valid |
|
241 |
- ( load ) |
|
242 |
- ;buffer/input .File/name DEO2 |
|
243 |
- #8000 .File/length DEO2 |
|
244 |
- ;view .File/read DEO2 |
|
245 |
- ( message ) |
|
246 |
- ;view #01 ;draw-tx JSR2 |
|
247 |
- |
|
248 |
-RTN |
|
249 |
- |
|
250 |
-@cmd-hx "hx $1 &docs "display 20 "file 20 "as 20 "hex $1 |
|
251 |
- &func |
|
252 |
- |
|
253 |
- ( exists ) |
|
254 |
- ;buffer/input ;file-exists JSR2 ,&valid JCN |
|
255 |
- ;error-unexists-txt ;buffer/input ;draw-message JSR2 RTN |
|
256 |
- &valid |
|
257 |
- ( load ) |
|
258 |
- ;buffer/input .File/name DEO2 |
|
259 |
- #8000 .File/length DEO2 |
|
260 |
- ;view .File/read DEO2 |
|
261 |
- ( message ) |
|
262 |
- AUTO-YADDR |
|
263 |
- .File/success DEI2 #0000 |
|
264 |
- &loop |
|
265 |
- DUP2 ;view ++ LDA #01 ;draw-hex JSR2 |
|
266 |
- ( make shorts ) |
|
267 |
- DUP2 #0001 AND2 #0000 == ,&no-short JCN |
|
268 |
- .Screen/x DEI2k #0008 ++ ROT DEO2 |
|
269 |
- &no-short |
|
270 |
- ( make lines ) |
|
271 |
- DUP2 #000f AND2 #000f !! ,&no-lines JCN |
|
272 |
- .Screen/y DEI2k #0010 ++ ROT DEO2 |
|
273 |
- PAD .Screen/x DEO2 |
|
274 |
- .Screen/y DEI2 .Screen/height DEI2 PAD -- #0010 -- >> ,&end JCN |
|
275 |
- &no-lines |
|
276 |
- INC2 GTH2k ,&loop JCN |
|
277 |
- &end |
|
278 |
- POP2 POP2 |
|
279 |
- |
|
280 |
-RTN |
|
281 |
- |
|
282 |
-@cmd-do "do $1 &docs "run 20 "file 20 "as 20 "rom $1 |
|
283 |
- &func |
|
284 |
- |
|
285 |
- ( release inputs ) |
|
286 |
- #0000 .Controller/button DEO2 |
|
287 |
- |
|
288 |
- ;buffer/input |
|
289 |
- DUP2 ;check-rom JSR2 ,&valid JCN |
|
290 |
- PAD .Screen/x DEO2 |
|
291 |
- PAD .Screen/y DEO2 |
|
292 |
- ;&invalid-txt #02 ;draw-str JSR2 |
|
293 |
- #01 ;draw-str JSR2 |
|
294 |
- RTN |
|
295 |
- &valid |
|
296 |
- ;load-rom JSR2 |
|
297 |
- |
|
298 |
-RTN |
|
299 |
- &invalid-txt "invalid 20 "rom: $1 |
|
300 |
- |
|
301 |
-@cmd-tm "tm $1 &docs "display 20 "time $1 |
|
302 |
- &func |
|
303 |
- |
|
304 |
- #00 .DateTime/month DEI 4* ;month-txt ++ #01 ;draw-str JSR2 |
|
305 |
- #20 #01 ;draw-char JSR2 |
|
306 |
- .DateTime/day DEI #01 ;draw-dec JSR2 |
|
307 |
- #20 #01 ;draw-char JSR2 |
|
308 |
- #00 .DateTime/dotw DEI 4* ;week-txt ++ #01 ;draw-str JSR2 |
|
309 |
- #20 #01 ;draw-char JSR2 |
|
310 |
- .DateTime/hour DEI #01 ;draw-dec JSR2 |
|
311 |
- LIT ': #01 ;draw-char JSR2 |
|
312 |
- .DateTime/minute DEI #01 ;draw-dec JSR2 |
|
313 |
- LIT ': #01 ;draw-char JSR2 |
|
314 |
- .DateTime/second DEI #01 ;draw-dec JSR2 |
|
315 |
- |
|
316 |
-RTN |
|
317 |
- |
|
318 |
-@cmd-1b "1b $1 &docs "display 20 "1bit 20 "file $1 |
|
319 |
- &func |
|
320 |
- |
|
321 |
- ( todo ) |
|
322 |
- |
|
323 |
-RTN |
|
324 |
- |
|
325 |
-@cmd-2b "2b $1 &docs "display 20 "2bit 20 "file $1 |
|
326 |
- &func |
|
327 |
- |
|
328 |
- ( todo ) |
|
329 |
- |
|
330 |
-RTN |
|
331 |
- |
|
332 |
-@cmd-sn "sn $1 &docs "play 20 "sound 20 "file $1 |
|
333 |
- &func |
|
334 |
- |
|
335 |
- ( todo ) |
|
336 |
- |
|
337 |
-RTN |
|
338 |
- |
|
339 |
-@cmd-?? "-- $1 &docs "display 20 "commands $1 |
|
340 |
- &func |
|
341 |
- |
|
342 |
- ;&help-txt #01 ;draw-tx JSR2 |
|
343 |
- PAD #0010 ++ .Screen/y DEO2 |
|
344 |
- |
|
345 |
- ;commands/end ;commands |
|
346 |
- &loop |
|
347 |
- PAD .Screen/x DEO2 |
|
348 |
- ( name ) LDA2k #04 ;draw-str JSR2 |
|
349 |
- PAD #0020 ++ .Screen/x DEO2 |
|
350 |
- ( docs ) DUP2 ;commands -- ;commands-docs ++ LDA2 #01 ;draw-str JSR2 |
|
351 |
- .Screen/y DEI2k #0010 ++ ROT DEO2 |
|
352 |
- INC2 INC2 GTH2k ,&loop JCN |
|
353 |
- POP2 POP2 |
|
354 |
- |
|
355 |
-RTN |
|
356 |
- &help-txt "Commands: $1 |
|
357 |
- |
|
358 |
-@commands |
|
359 |
- :cmd-ls :cmd-mk :cmd-cp :cmd-mv :cmd-rm |
|
360 |
- :cmd-hx :cmd-tx :cmd-do :cmd-tm |
|
361 |
- :cmd-1b :cmd-2b :cmd-sn |
|
362 |
- &end :cmd-?? |
|
363 |
-@commands-docs |
|
364 |
- :cmd-ls/docs :cmd-mk/docs :cmd-cp/docs :cmd-mv/docs :cmd-rm/docs |
|
365 |
- :cmd-hx/docs :cmd-tx/docs :cmd-do/docs :cmd-tm/docs |
|
366 |
- :cmd-1b/docs :cmd-2b/docs :cmd-sn/docs |
|
367 |
- &end :cmd-??/docs |
|
368 |
-@commands-func |
|
369 |
- :cmd-ls/func :cmd-mk/func :cmd-cp/func :cmd-mv/func :cmd-rm/func |
|
370 |
- :cmd-hx/func :cmd-tx/func :cmd-do/func :cmd-tm/func |
|
371 |
- :cmd-1b/func :cmd-2b/func :cmd-sn/func |
|
372 |
- &end :cmd-??/func |
|
373 |
- |
|
374 |
-@file-exists ( name* -- bool ) |
|
375 |
- |
|
376 |
- .File/name DEO2 |
|
377 |
- #0040 .File/length DEO2 |
|
378 |
- ;&buf .File/stat DEO2 |
|
379 |
- .File/success DEI2 #0000 >> |
|
380 |
- |
|
381 |
-RTN |
|
382 |
- &buf $40 |
|
383 |
- |
|
384 |
-( gui ) |
|
385 |
- |
|
386 |
-@draw-input ( color -- ) |
|
387 |
- |
|
388 |
- AUTO-YADDR |
|
389 |
- STH |
|
390 |
- PAD .Screen/x DEO2 |
|
391 |
- .Screen/height DEI2 PAD -- .Screen/y DEO2 |
|
392 |
- |
|
393 |
- ( flower ) |
|
394 |
- ;flowers-icn #00 .frame LDZ #06 MOD 20** ++ .Screen/addr DEO2 |
|
395 |
- #81 .Screen/sprite DEOk DEO |
|
396 |
- .Screen/y DEI2 #0010 -- .Screen/y DEO2 |
|
397 |
- .Screen/x DEI2 #0008 ++ .Screen/x DEO2 |
|
398 |
- |
|
399 |
- #20 #00 ;draw-char JSR2 |
|
400 |
- |
|
401 |
- ;buffer STHkr ;draw-str JSR2 |
|
402 |
- |
|
403 |
- ;cursor-icn .Screen/addr DEO2 |
|
404 |
- STHr .Screen/sprite DEOk DEO |
|
405 |
- .Screen/y DEI2 #0010 -- .Screen/y DEO2 |
|
406 |
- .Screen/x DEI2 #0008 ++ .Screen/x DEO2 |
|
407 |
- |
|
408 |
-JMP2r |
|
409 |
- |
|
410 |
-@draw-message ( a* b* -- ) |
|
411 |
- |
|
412 |
- SWP2 #02 ;draw-str JSR2 |
|
413 |
- #01 ;draw-str JSR2 |
|
414 |
- |
|
415 |
-RTN |
|
416 |
- |
|
417 |
-@draw-tx ( str* color -- ) |
|
418 |
- |
|
419 |
- AUTO-YADDR |
|
420 |
- .Screen/x DEI2 ,&anchor STR2 |
|
421 |
- STH |
|
422 |
- &while |
|
423 |
- ( outside view ) |
|
424 |
- .Screen/x DEI2 .Screen/width DEI2 PAD -- #0010 -- >> ,&lb JCN |
|
425 |
- ( linebreak ) |
|
426 |
- LDAk #0a ! ,&no-lb JCN |
|
427 |
- &lb |
|
428 |
- LIT2 &anchor $2 .Screen/x DEO2 |
|
429 |
- .Screen/y DEI2k #0010 ++ STH2k ROT DEO2 |
|
430 |
- STH2r .Screen/height DEI2 PAD -- #0010 -- >> ,&end JCN |
|
431 |
- ,&skip JMP |
|
432 |
- &no-lb |
|
433 |
- LDAk STHkr ,draw-char JSR |
|
434 |
- &skip |
|
435 |
- INC2 LDAk ,&while JCN |
|
436 |
- &end |
|
437 |
- POP2 |
|
438 |
- POPr |
|
439 |
- |
|
440 |
-RTN |
|
441 |
- |
|
442 |
-@draw-dec ( byte color -- ) |
|
443 |
- |
|
444 |
- STH |
|
445 |
- DUP #0a DIV LIT '0 + STHkr ,draw-char JSR |
|
446 |
- #0a MOD LIT '0 + STHr ,draw-char JSR |
|
447 |
- |
|
448 |
-RTN |
|
449 |
- |
|
450 |
-@draw-hex ( byte color -- ) |
|
451 |
- |
|
452 |
- STH |
|
453 |
- DUP #04 SFT ,&parse JSR STHkr ,draw-char JSR |
|
454 |
- #0f AND ,&parse JSR STHr ,draw-char JSR |
|
455 |
- RTN |
|
456 |
- &parse ( value -- char ) |
|
457 |
- DUP #09 > ,&above JCN |
|
458 |
- #30 + RTN |
|
459 |
- &above |
|
460 |
- #09 - #60 + RTN |
|
461 |
- |
|
462 |
-RTN |
|
463 |
- |
|
464 |
-@draw-str ( str* color -- ) |
|
465 |
- |
|
466 |
- AUTO-YADDR |
|
467 |
- STH |
|
468 |
- &while |
|
469 |
- LDAk STHkr ,draw-char JSR |
|
470 |
- INC2 LDAk ,&while JCN |
|
471 |
- POP2 |
|
472 |
- POPr |
|
473 |
- |
|
474 |
-RTN |
|
475 |
- |
|
476 |
-@draw-char ( char color -- ) |
|
477 |
- |
|
478 |
- SWP |
|
479 |
- [ #20 - #00 SWP #40 SFT2 ;font ++ ] .Screen/addr DEO2 |
|
480 |
- .Screen/sprite DEOk DEO |
|
481 |
- .Screen/y DEI2 #0010 -- .Screen/y DEO2 |
|
482 |
- .Screen/x DEI2 #0008 ++ .Screen/x DEO2 |
|
483 |
- |
|
484 |
-RTN |
|
485 |
- |
|
486 |
-( utils ) |
|
487 |
- |
|
488 |
-@next-char ( addr* char -- addr* ) |
|
489 |
- |
|
490 |
- STH |
|
491 |
- &while |
|
492 |
- LDAk STHkr = ,&end JCN |
|
493 |
- LDAk #00 = ,&end JCN |
|
494 |
- INC2 LDAk ,&while JCN |
|
495 |
- &end |
|
496 |
- POPr |
|
497 |
- |
|
498 |
-RTN |
|
499 |
- |
|
500 |
-@slen ( str* -- len* ) |
|
501 |
- |
|
502 |
- DUP2 ,scap JSR SWP2 -- |
|
503 |
- |
|
504 |
-RTN |
|
505 |
- |
|
506 |
-@scap ( str* -- str-end* ) |
|
507 |
- |
|
508 |
- ( clamp ) LDAk #00 ! JMP RTN |
|
509 |
- &while INC2 LDAk ,&while JCN |
|
510 |
- |
|
511 |
-RTN |
|
512 |
- |
|
513 |
-@sput ( str* char -- ) |
|
514 |
- |
|
515 |
- ROT ROT ,scap JSR STA |
|
516 |
- |
|
517 |
-RTN |
|
518 |
- |
|
519 |
-@spop ( str* -- ) |
|
520 |
- |
|
521 |
- ( clamp ) LDAk #00 ! JMP RTN |
|
522 |
- #00 ROT ROT ,scap JSR #0001 -- STA |
|
523 |
- |
|
524 |
-RTN |
|
525 |
- |
|
526 |
-@scmp-seg ( a* b* -- flag ) |
|
527 |
- |
|
528 |
- STH2 |
|
529 |
- &loop |
|
530 |
- LDAk LDAkr STHr = ,¬-diff JCN |
|
531 |
- POP2 POP2r #00 RTN |
|
532 |
- ¬-diff |
|
533 |
- INC2k LDA #00 ! ,&continue JCN |
|
534 |
- POP2 POP2r #01 RTN |
|
535 |
- &continue |
|
536 |
- INC2 INC2r |
|
537 |
- ,&loop JMP |
|
538 |
- POP2 POP2r #00 |
|
539 |
- |
|
540 |
-RTN |
|
541 |
- |
|
542 |
-@mclr ( addr* len* -- ) |
|
543 |
- |
|
544 |
- OVR2 ++ SWP2 |
|
545 |
- &loop |
|
546 |
- STH2k #00 STH2r STA |
|
547 |
- INC2 GTH2k ,&loop JCN |
|
548 |
- POP2 POP2 |
|
549 |
- |
|
550 |
-JMP2r |
|
551 |
- |
|
552 |
-@print-hex ( value* -- ) |
|
553 |
- |
|
554 |
- SWP ,&byte JSR |
|
555 |
- &byte ( byte -- ) |
|
556 |
- STHk #04 SFT ,&parse JSR #18 DEO |
|
557 |
- STHr #0f AND ,&parse JSR #18 DEO |
|
558 |
- JMP2r |
|
559 |
- &parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 ADD JMP2r |
|
560 |
- &above #57 ADD JMP2r |
|
561 |
- |
|
562 |
-JMP2r |
|
563 |
- |
|
564 |
-@print-str ( string* -- ) |
|
565 |
- |
|
566 |
- #0001 SUB2 |
|
567 |
- &while |
|
568 |
- INC2 LDAk DUP #18 DEO ,&while JCN |
|
569 |
- POP2 |
|
570 |
- |
|
571 |
-JMP2r |
|
572 |
- |
|
573 |
-@error-exists-txt "file_exists: 20 $1 |
|
574 |
-@error-unexists-txt "file_does_not_exists: 20 $1 |
|
575 |
- |
|
576 |
-@make-success-txt "made: 20 $1 |
|
577 |
-@copy-success-txt "copied: 20 $1 |
|
578 |
-@remove-success-txt "removed: 20 $1 |
|
579 |
- |
|
580 |
-@week-txt |
|
581 |
- "Sun $1 "Mon $1 "Tue $1 "Wed $1 "Thu $1 "Fri $1 |
|
582 |
- "Sat $1 |
|
583 |
- |
|
584 |
-@month-txt |
|
585 |
- "Jan $1 "Feb $1 "Mar $1 "Apr $1 "May $1 "Jun $1 |
|
586 |
- "Jul $1 "Aug $1 "Sep $1 "Oct $1 "Nov $1 "Dec $1 |
|
587 |
- |
|
588 |
-@cursor-icn |
|
589 |
- aa55 aa55 aa55 aa55 aa55 aa55 aa55 aa55 |
|
590 |
- aa55 aa55 aa55 aa55 aa55 aa55 aa55 aa55 |
|
591 |
- |
|
592 |
-@flowers-icn ( by elioat ) |
|
593 |
- 0000 0020 1408 0810 40a0 4205 0200 40a0 |
|
594 |
- 0810 103c 7e7e 3c18 4205 0234 7e7e 3c18 |
|
595 |
- 0000 0020 100c 0818 0040 a042 0522 5024 |
|
596 |
- 0008 083c 7e7e 3c18 0a04 002c 7e7e 3c18 |
|
597 |
- 0000 0000 0000 000c 0000 0000 0000 0000 |
|
598 |
- 1c10 083c 7e7e 3c18 0000 002c 7e7e 3c18 |
|
599 |
- 0000 0000 0000 0004 0000 0000 0002 0502 |
|
600 |
- 0810 103c 7e7e 3c18 0000 0034 7e7e 3c18 |
|
601 |
- 0000 0000 0000 0010 0000 0000 0020 5225 |
|
602 |
- 080c 083c 7e7e 3c18 0200 002c 7e7e 3c18 |
|
603 |
- 0000 0000 0800 1800 0000 040a 2450 240a |
|
604 |
- 1010 103c 7e7e 3c18 0400 0034 7e7e 3c18 |
|
605 |
- |
|
606 |
-@font ( terminus01x02 ) |
|
607 |
- 0000 0000 0000 0000 0000 0000 0000 0000 |
|
608 |
- 0000 183c 3c3c 1818 1800 1818 0000 0000 |
|
609 |
- 0066 6666 2400 0000 0000 0000 0000 0000 |
|
610 |
- 0000 006c 6cfe 6c6c 6cfe 6c6c 0000 0000 |
|
611 |
- 1818 7cc6 c2c0 7c06 0686 c67c 1818 0000 |
|
612 |
- 0000 0000 c2c6 0c18 3060 c686 0000 0000 |
|
613 |
- 0000 386c 6c38 76dc cccc cc76 0000 0000 |
|
614 |
- 0030 3030 6000 0000 0000 0000 0000 0000 |
|
615 |
- 0000 0c18 3030 3030 3030 180c 0000 0000 |
|
616 |
- 0000 3018 0c0c 0c0c 0c0c 1830 0000 0000 |
|
617 |
- 0000 0000 0066 3cff 3c66 0000 0000 0000 |
|
618 |
- 0000 0000 0018 187e 1818 0000 0000 0000 |
|
619 |
- 0000 0000 0000 0000 0018 1818 3000 0000 |
|
620 |
- 0000 0000 0000 00fe 0000 0000 0000 0000 |
|
621 |
- 0000 0000 0000 0000 0000 1818 0000 0000 |
|
622 |
- 0000 0000 0206 0c18 3060 c080 0000 0000 |
|
623 |
- 0000 386c c6c6 d6d6 c6c6 6c38 0000 0000 |
|
624 |
- 0000 1838 7818 1818 1818 187e 0000 0000 |
|
625 |
- 0000 7cc6 060c 1830 60c0 c6fe 0000 0000 |
|
626 |
- 0000 7cc6 0606 3c06 0606 c67c 0000 0000 |
|
627 |
- 0000 0c1c 3c6c ccfe 0c0c 0c1e 0000 0000 |
|
628 |
- 0000 fec0 c0c0 fc06 0606 c67c 0000 0000 |
|
629 |
- 0000 3860 c0c0 fcc6 c6c6 c67c 0000 0000 |
|
630 |
- 0000 fec6 0606 0c18 3030 3030 0000 0000 |
|
631 |
- 0000 7cc6 c6c6 7cc6 c6c6 c67c 0000 0000 |
|
632 |
- 0000 7cc6 c6c6 7e06 0606 0c78 0000 0000 |
|
633 |
- 0000 0000 1818 0000 0018 1800 0000 0000 |
|
634 |
- 0000 0000 1818 0000 0018 1830 0000 0000 |
|
635 |
- 0000 0006 0c18 3060 3018 0c06 0000 0000 |
|
636 |
- 0000 0000 007e 0000 7e00 0000 0000 0000 |
|
637 |
- 0000 0060 3018 0c06 0c18 3060 0000 0000 |
|
638 |
- 0000 7cc6 c60c 1818 1800 1818 0000 0000 |
|
639 |
- 0000 007c c6c6 dede dedc c07c 0000 0000 |
|
640 |
- 0000 1038 6cc6 c6fe c6c6 c6c6 0000 0000 |
|
641 |
- 0000 fc66 6666 7c66 6666 66fc 0000 0000 |
|
642 |
- 0000 3c66 c2c0 c0c0 c0c2 663c 0000 0000 |
|
643 |
- 0000 f86c 6666 6666 6666 6cf8 0000 0000 |
|
644 |
- 0000 fe66 6268 7868 6062 66fe 0000 0000 |
|
645 |
- 0000 fe66 6268 7868 6060 60f0 0000 0000 |
|
646 |
- 0000 3c66 c2c0 c0de c6c6 663a 0000 0000 |
|
647 |
- 0000 c6c6 c6c6 fec6 c6c6 c6c6 0000 0000 |
|
648 |
- 0000 3c18 1818 1818 1818 183c 0000 0000 |
|
649 |
- 0000 1e0c 0c0c 0c0c cccc cc78 0000 0000 |
|
650 |
- 0000 e666 666c 7878 6c66 66e6 0000 0000 |
|
651 |
- 0000 f060 6060 6060 6062 66fe 0000 0000 |
|
652 |
- 0000 c6ee fefe d6c6 c6c6 c6c6 0000 0000 |
|
653 |
- 0000 c6e6 f6fe dece c6c6 c6c6 0000 0000 |
|
654 |
- 0000 7cc6 c6c6 c6c6 c6c6 c67c 0000 0000 |
|
655 |
- 0000 fc66 6666 7c60 6060 60f0 0000 0000 |
|
656 |
- 0000 7cc6 c6c6 c6c6 c6d6 de7c 0c0e 0000 |
|
657 |
- 0000 fc66 6666 7c6c 6666 66e6 0000 0000 |
|
658 |
- 0000 7cc6 c660 380c 06c6 c67c 0000 0000 |
|
659 |
- 0000 7e7e 5a18 1818 1818 183c 0000 0000 |
|
660 |
- 0000 c6c6 c6c6 c6c6 c6c6 c67c 0000 0000 |
|
661 |
- 0000 c6c6 c6c6 c6c6 c66c 3810 0000 0000 |
|
662 |
- 0000 c6c6 c6c6 d6d6 d6fe ee6c 0000 0000 |
|
663 |
- 0000 c6c6 6c7c 3838 7c6c c6c6 0000 0000 |
|
664 |
- 0000 6666 6666 3c18 1818 183c 0000 0000 |
|
665 |
- 0000 fec6 860c 1830 60c2 c6fe 0000 0000 |
|
666 |
- 0000 3c30 3030 3030 3030 303c 0000 0000 |
|
667 |
- 0000 0080 c0e0 7038 1c0e 0602 0000 0000 |
|
668 |
- 0000 3c0c 0c0c 0c0c 0c0c 0c3c 0000 0000 |
|
669 |
- 1038 6cc6 0000 0000 0000 0000 0000 0000 |
|
670 |
- 0000 0000 0000 0000 0000 0000 00ff 0000 |
|
671 |
- 3030 1800 0000 0000 0000 0000 0000 0000 |
|
672 |
- 0000 0000 0078 0c7c cccc cc76 0000 0000 |
|
673 |
- 0000 e060 6078 6c66 6666 667c 0000 0000 |
|
674 |
- 0000 0000 007c c6c0 c0c0 c67c 0000 0000 |
|
675 |
- 0000 1c0c 0c3c 6ccc cccc cc76 0000 0000 |
|
676 |
- 0000 0000 007c c6fe c0c0 c67c 0000 0000 |
|
677 |
- 0000 386c 6460 f060 6060 60f0 0000 0000 |
|
678 |
- 0000 0000 0076 cccc cccc cc7c 0ccc 7800 |
|
679 |
- 0000 e060 606c 7666 6666 66e6 0000 0000 |
|
680 |
- 0000 1818 0038 1818 1818 183c 0000 0000 |
|
681 |
- 0000 0606 000e 0606 0606 0606 6666 3c00 |
|
682 |
- 0000 e060 6066 6c78 786c 66e6 0000 0000 |
|
683 |
- 0000 3818 1818 1818 1818 183c 0000 0000 |
|
684 |
- 0000 0000 00ec fed6 d6d6 d6c6 0000 0000 |
|
685 |
- 0000 0000 00dc 6666 6666 6666 0000 0000 |
|
686 |
- 0000 0000 007c c6c6 c6c6 c67c 0000 0000 |
|
687 |
- 0000 0000 00dc 6666 6666 667c 6060 f000 |
|
688 |
- 0000 0000 0076 cccc cccc cc7c 0c0c 1e00 |
|
689 |
- 0000 0000 00dc 7666 6060 60f0 0000 0000 |
|
690 |
- 0000 0000 007c c660 380c c67c 0000 0000 |
|
691 |
- 0000 1030 30fc 3030 3030 361c 0000 0000 |
|
692 |
- 0000 0000 00cc cccc cccc cc76 0000 0000 |
|
693 |
- 0000 0000 0066 6666 6666 3c18 0000 0000 |
|
694 |
- 0000 0000 00c6 c6d6 d6d6 fe6c 0000 0000 |
|
695 |
- 0000 0000 00c6 6c38 3838 6cc6 0000 0000 |
|
696 |
- 0000 0000 00c6 c6c6 c6c6 c67e 060c f800 |
|
697 |
- 0000 0000 00fe cc18 3060 c6fe 0000 0000 |
|
698 |
- 0000 0e18 1818 7018 1818 180e 0000 0000 |
|
699 |
- 0000 1818 1818 0018 1818 1818 0000 0000 |
|
700 |
- 0000 7018 1818 0e18 1818 1870 0000 0000 |
|
701 |
- |
|
702 |
-~projects/library/check-rom.tal |
|
703 |
-~projects/library/load-rom.tal |
|
704 |
- |
|
705 |
-@view |
... | ... |
@@ -191,7 +191,7 @@ JMP2r |
191 | 191 |
#0010 .Screen/x DEO2 |
192 | 192 |
#0080 .Screen/y DEO2 |
193 | 193 |
.browser/sel LDZ #02 ;draw-byte JSR2 |
194 |
- LIT '/ #02 ;draw-char JSR2 |
|
194 |
+ LIT "/ #02 ;draw-char JSR2 |
|
195 | 195 |
.browser/lines LDZ #01 SUB #02 ;draw-byte JSR2 |
196 | 196 |
#00 .Screen/auto DEO |
197 | 197 |
|
... | ... |
@@ -200,7 +200,7 @@ JMP2r |
200 | 200 |
@follow-selection ( -- ) |
201 | 201 |
|
202 | 202 |
.browser/y2 LDZ2 .browser/y LDZ2 SUB2 #04 SFT2 NIP .browser/sel LDZ .browser/scroll LDZ SUB |
203 |
- DUP2 GTH ,&no-down JCN |
|
203 |
+ GTHk ,&no-down JCN |
|
204 | 204 |
.browser/scroll LDZ INC ,scroll-to JSR |
205 | 205 |
&no-down |
206 | 206 |
DUP2 SWP LTH ,&no-up JCN |
... | ... |
@@ -215,7 +215,7 @@ JMP2r |
215 | 215 |
STH |
216 | 216 |
( more lines than visible ) |
217 | 217 |
.browser/lines LDZ .browser/y2 LDZ2 .browser/y LDZ2 SUB2 #04 SFT2 NIP |
218 |
- DUP2 GTH ,&can-scroll JCN |
|
218 |
+ GTHk ,&can-scroll JCN |
|
219 | 219 |
POPr POP2 JMP2r |
220 | 220 |
&can-scroll |
221 | 221 |
( less than max scroll ) |
... | ... |
@@ -321,7 +321,7 @@ JMP2r |
321 | 321 |
EQUkr STHr #00 EQU ,&no-reached JCN |
322 | 322 |
POP2r NIP2 ;dir/data ADD2 JMP2r |
323 | 323 |
&no-reached |
324 |
- DUP2 ;dir/data ADD2 LDA #00 NEQ ,&no-lb JCN |
|
324 |
+ DUP2 ;dir/data ADD2 LDA ,&no-lb JCN |
|
325 | 325 |
INCr |
326 | 326 |
&no-lb |
327 | 327 |
INC2 GTH2k ,&loop JCN |
... | ... |
@@ -1,40 +1,14 @@ |
1 |
-( |
|
2 |
- app/neralie : clock with arvelie date |
|
3 |
- |
|
4 |
- TODO |
|
5 |
- - use splash screen when FPS calculation is unstable |
|
6 |
-) |
|
7 |
- |
|
8 |
-%+ { ADD } %- { SUB } %/ { DIV } |
|
9 |
-%< { LTH } %> { GTH } %= { EQU } %! { NEQ } |
|
10 |
-%++ { ADD2 } %-- { SUB2 } %// { DIV2 } |
|
11 |
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } |
|
12 |
- |
|
13 |
-%2* { #10 SFT } %2/ { #01 SFT } |
|
14 |
-%4* { #20 SFT } %4/ { #02 SFT } |
|
15 |
-%8* { #30 SFT } %8/ { #03 SFT } |
|
16 |
-%10* { #40 SFT } %10/ { #04 SFT } |
|
17 |
-%20* { #50 SFT } %20/ { #05 SFT } |
|
18 |
- |
|
19 |
-%2** { #10 SFT2 } %2// { #01 SFT2 } |
|
20 |
-%4** { #20 SFT2 } %4// { #02 SFT2 } |
|
21 |
-%8** { #30 SFT2 } %8// { #03 SFT2 } |
|
22 |
-%10** { #40 SFT2 } %10// { #04 SFT2 } |
|
23 |
-%20** { #50 SFT2 } %20// { #05 SFT2 } |
|
24 |
- |
|
25 |
-%MOD { DUP2 DIV MUL SUB } |
|
1 |
+( app/neralie : clock with arvelie date ) |
|
2 |
+ |
|
3 |
+%PAD { #0018 } |
|
4 |
+ |
|
5 |
+%MOD { DIVk MUL SUB } |
|
26 | 6 |
%MOD2 { DIV2k MUL2 SUB2 } |
27 |
-%TOS { #00 SWP } |
|
28 | 7 |
|
29 | 8 |
%h { .DateTime/hour DEI } |
30 | 9 |
%m { .DateTime/minute DEI } |
31 | 10 |
%s { .DateTime/second DEI } |
32 | 11 |
|
33 |
-%1-- { #0001 -- } |
|
34 |
- |
|
35 |
-%PAD { #0018 } |
|
36 |
-%RTN { JMP2r } |
|
37 |
- |
|
38 | 12 |
( devices ) |
39 | 13 |
|
40 | 14 |
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ] |
... | ... |
@@ -76,15 +50,15 @@ |
76 | 50 |
PAD |
77 | 51 |
DUP2 .frame/x1 STZ2 |
78 | 52 |
DUP2 .frame/y1 STZ2 |
79 |
- DUP2 .Screen/width DEI2 SWP2 -- #0001 -- .frame/x2 STZ2 |
|
80 |
- .Screen/height DEI2 SWP2 -- .frame/y2 STZ2 |
|
53 |
+ DUP2 .Screen/width DEI2 SWP2 SUB2 #0001 SUB2 .frame/x2 STZ2 |
|
54 |
+ .Screen/height DEI2 SWP2 SUB2 .frame/y2 STZ2 |
|
81 | 55 |
|
82 | 56 |
#01 .neralie/color STZ |
83 | 57 |
|
84 | 58 |
.frame/x1 LDZ2 .frame/x2 LDZ2 |
85 | 59 |
OVR2 OVR2 .frame/y1 LDZ2 ;h JSR2 |
86 | 60 |
.frame/y2 LDZ2 ;h JSR2 |
87 |
- .frame/y1 LDZ2 #0001 -- .frame/y2 LDZ2 INC2 |
|
61 |
+ .frame/y1 LDZ2 #0001 SUB2 .frame/y2 LDZ2 INC2 |
|
88 | 62 |
OVR2 OVR2 .frame/x1 LDZ2 ;v JSR2 |
89 | 63 |
.frame/x2 LDZ2 ;v JSR2 |
90 | 64 |
|
... | ... |
@@ -108,7 +82,7 @@ BRK |
108 | 82 |
#0120 #00 h MUL2 |
109 | 83 |
#00c0 #00 m MUL2 ADD2 |
110 | 84 |
#00f8 #00 s MUL2 ADD2 |
111 |
- #0271 #00 .fps/next LDZ MUL2 #00 .fps/current LDZ DIV2 8** ADD2 |
|
85 |
+ #0271 #00 .fps/next LDZ MUL2 #00 .fps/current LDZ DIV2 #30 SFT2 ADD2 |
|
112 | 86 |
#01b0 ;modf JSR2 SWP2 #0017 MUL2 #03e8 DIV2 .neralie/n6 STZ POP |
113 | 87 |
|
114 | 88 |
( add up units and tens of pulses, store in n5 and n4 ) |
... | ... |
@@ -122,29 +96,29 @@ BRK |
122 | 96 |
#01a0 #00 h MUL2 ADD2 |
123 | 97 |
#0006 #00 m MUL2 ADD2 .neralie/n0123 STZ2 |
124 | 98 |
|
125 |
-RTN |
|
99 |
+JMP2r |
|
126 | 100 |
|
127 | 101 |
@draw-date ( -- ) |
128 | 102 |
|
129 | 103 |
( auto x ) #01 .Screen/auto DEO |
130 | 104 |
|
131 |
- .Screen/width DEI2 2// #0034 -- .Screen/x DEO2 |
|
132 |
- .Screen/height DEI2 #0010 -- .Screen/y DEO2 |
|
105 |
+ .Screen/width DEI2 #01 SFT2 #0034 SUB2 .Screen/x DEO2 |
|
106 |
+ .Screen/height DEI2 #0010 SUB2 .Screen/y DEO2 |
|
133 | 107 |
|
134 | 108 |
( arvelie ) |
135 |
- .DateTime/year DEI2 #07d6 -- NIP |
|
136 |
- DUP #0a DIV TOS 8** ;font-numbers ++ .Screen/addr DEO2 |
|
109 |
+ .DateTime/year DEI2 #07d6 SUB2 NIP |
|
110 |
+ DUP #0a DIV #00 SWP #30 SFT2 ;font-numbers ADD2 .Screen/addr DEO2 |
|
137 | 111 |
#01 .Screen/sprite DEO |
138 |
- #0a MOD TOS 8** ;font-numbers ++ .Screen/addr DEO2 |
|
112 |
+ #0a MOD #00 SWP #30 SFT2 ;font-numbers ADD2 .Screen/addr DEO2 |
|
139 | 113 |
#01 .Screen/sprite DEO |
140 | 114 |
.DateTime/doty DEI2 |
141 |
- DUP2 #000e DIV2 8** ;font-letters ++ .Screen/addr DEO2 |
|
115 |
+ DUP2 #000e DIV2 #30 SFT2 ;font-letters ADD2 .Screen/addr DEO2 |
|
142 | 116 |
#01 .Screen/sprite DEO |
143 | 117 |
#000e MOD2 |
144 | 118 |
DUP2 #000a DIV2 ,digit JSR |
145 | 119 |
#000a MOD2 ,digit JSR |
146 | 120 |
|
147 |
- .Screen/x DEI2 #0008 ++ .Screen/x DEO2 |
|
121 |
+ .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 |
|
148 | 122 |
|
149 | 123 |
( neralie ) |
150 | 124 |
.neralie/n0123 LDZ2 |
... | ... |
@@ -158,14 +132,14 @@ RTN |
158 | 132 |
|
159 | 133 |
( auto none ) #00 .Screen/auto DEO |
160 | 134 |
|
161 |
-RTN |
|
135 |
+JMP2r |
|
162 | 136 |
|
163 | 137 |
@digit ( index* -- ) |
164 | 138 |
|
165 |
- 8** ;font-numbers ++ .Screen/addr DEO2 |
|
139 |
+ #30 SFT2 ;font-numbers ADD2 .Screen/addr DEO2 |
|
166 | 140 |
.neralie/color LDZ .Screen/sprite DEO |
167 | 141 |
|
168 |
-RTN |
|
142 |
+JMP2r |
|
169 | 143 |
|
170 | 144 |
@draw-clock ( -- ) |
171 | 145 |
|
... | ... |
@@ -197,7 +171,7 @@ RTN |
197 | 171 |
|
198 | 172 |
&next ( digit-addr number* -- next-digit-addr next-number* prev-digit* ) |
199 | 173 |
#03e8 ;modf JSR2 STH2 #000a MUL2 |
200 |
- ROT DUP STH INC ROT ROT |
|
174 |
+ ROT STHk INC ROT ROT |
|
201 | 175 |
#00 STHr LDZ ADD2 |
202 | 176 |
STH2r |
203 | 177 |
JMP2r |
... | ... |
@@ -233,7 +207,7 @@ RTN |
233 | 207 |
.Screen/y .lines/addr STZ |
234 | 208 |
|
235 | 209 |
&draw-line ( v1* v2* -- ) |
236 |
- OVR2 OVR2 LTH2 #01 JCN SWP2 |
|
210 |
+ LTH2k #01 JCN SWP2 |
|
237 | 211 |
STH2 |
238 | 212 |
|
239 | 213 |
&loop |
... | ... |
@@ -256,8 +230,8 @@ RTN |
256 | 230 |
#00 .fps/next STZ |
257 | 231 |
JMP2r |
258 | 232 |
|
259 |
-@modf ( dividend* divisor* -- remainder* quotient* ) |
|
260 |
- OVR2 OVR2 DIV2 DUP2 STH2 MUL2 SUB2 STH2r JMP2r |
|
233 |
+@modf ( dividend* divisor* SUB2 remainder* quotient* ) |
|
234 |
+ DIV2k STH2k MUL2 SUB2 STH2r JMP2r |
|
261 | 235 |
|
262 | 236 |
@mul2hi ( a* b* -- product-top-16-bits* ) |
263 | 237 |
( |
... | ... |
@@ -88,14 +88,14 @@ BRK |
88 | 88 |
#40 .Screen/sprite DEO |
89 | 89 |
|
90 | 90 |
.Controller/key DEI |
91 |
- [ LIT 'a ] NEQk NIP ,&no-c JCN #30 .octave LDZ #0c MUL ADD ;play JSR2 &no-c |
|
92 |
- [ LIT 's ] NEQk NIP ,&no-d JCN #32 .octave LDZ #0c MUL ADD ;play JSR2 &no-d |
|
93 |
- [ LIT 'd ] NEQk NIP ,&no-e JCN #34 .octave LDZ #0c MUL ADD ;play JSR2 &no-e |
|
94 |
- [ LIT 'f ] NEQk NIP ,&no-f JCN #35 .octave LDZ #0c MUL ADD ;play JSR2 &no-f |
|
95 |
- [ LIT 'g ] NEQk NIP ,&no-g JCN #37 .octave LDZ #0c MUL ADD ;play JSR2 &no-g |
|
96 |
- [ LIT 'h ] NEQk NIP ,&no-a JCN #39 .octave LDZ #0c MUL ADD ;play JSR2 &no-a |
|
97 |
- [ LIT 'j ] NEQk NIP ,&no-b JCN #3b .octave LDZ #0c MUL ADD ;play JSR2 &no-b |
|
98 |
- [ LIT 'k ] NEQk NIP ,&no-c2 JCN #3c .octave LDZ #0c MUL ADD ;play JSR2 &no-c2 |
|
91 |
+ [ LIT "a ] NEQk NIP ,&no-c JCN #30 .octave LDZ #0c MUL ADD ;play JSR2 &no-c |
|
92 |
+ [ LIT "s ] NEQk NIP ,&no-d JCN #32 .octave LDZ #0c MUL ADD ;play JSR2 &no-d |
|
93 |
+ [ LIT "d ] NEQk NIP ,&no-e JCN #34 .octave LDZ #0c MUL ADD ;play JSR2 &no-e |
|
94 |
+ [ LIT "f ] NEQk NIP ,&no-f JCN #35 .octave LDZ #0c MUL ADD ;play JSR2 &no-f |
|
95 |
+ [ LIT "g ] NEQk NIP ,&no-g JCN #37 .octave LDZ #0c MUL ADD ;play JSR2 &no-g |
|
96 |
+ [ LIT "h ] NEQk NIP ,&no-a JCN #39 .octave LDZ #0c MUL ADD ;play JSR2 &no-a |
|
97 |
+ [ LIT "j ] NEQk NIP ,&no-b JCN #3b .octave LDZ #0c MUL ADD ;play JSR2 &no-b |
|
98 |
+ [ LIT "k ] NEQk NIP ,&no-c2 JCN #3c .octave LDZ #0c MUL ADD ;play JSR2 &no-c2 |
|
99 | 99 |
[ #1b ] NEQk NIP ,&no-esc JCN #010f DEO &no-esc |
100 | 100 |
POP |
101 | 101 |
|
... | ... |
@@ -28,15 +28,14 @@ BRK |
28 | 28 |
LIT2r 0000 |
29 | 29 |
&stream |
30 | 30 |
#0000 ,&buf STR2 |
31 |
- ;&buf |
|
32 |
- DUP2 .File/read DEO2 |
|
33 |
- LDA2 ,print JSR #2018 DEO |
|
31 |
+ ;&buf .File/read DEO2 |
|
32 |
+ .File/success DEI2 #0000 EQU2 ,&eof JCN |
|
33 |
+ ;&buf LDA2 ,print JSR #2018 DEO |
|
34 | 34 |
INC2r |
35 | 35 |
( linebreak ) |
36 |
- STH2kr #0007 AND2 ORA ,&no-lb JCN |
|
37 |
- #0a18 DEO |
|
38 |
- &no-lb |
|
39 |
- .File/success DEI2 ORA ,&stream JCN |
|
36 |
+ STH2kr #000f AND2 ORA ,&no-lb JCN |
|
37 |
+ #0a18 DEO &no-lb |
|
38 |
+ ,&stream JMP &eof |
|
40 | 39 |
POP2r |
41 | 40 |
#010f DEO |
42 | 41 |
|
... | ... |
@@ -2,9 +2,7 @@ |
2 | 2 |
|
3 | 3 |
( Requirements: |
4 | 4 |
EQU/EQU2 should put #00 or #01 on the stack |
5 |
- #18 DEO should output ascii character to console |
|
6 |
- #02 DEO should set location of working stack in memory |
|
7 |
- #03 DEO should set location of return stack in memory ) |
|
5 |
+ #18 DEO should output ascii character to console ) |
|
8 | 6 |
|
9 | 7 |
%EMIT { #18 DEO } |
10 | 8 |
%TEST-SHORT { EQU2 #30 ADD EMIT } |
... | ... |
@@ -12,11 +10,6 @@ |
12 | 10 |
%MODE { #20 EMIT } |
13 | 11 |
%OPCODE { #0a EMIT } |
14 | 12 |
%TYPE { OPCODE OPCODE } |
15 |
-%GET-ERR { #fe LDA } |
|
16 |
-%WST { #ff } |
|
17 |
-%RST { #fe } |
|
18 |
- |
|
19 |
-|00 @System &vector $2 &stacks &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 |
|
20 | 13 |
|
21 | 14 |
|0000 |
22 | 15 |
|
... | ... |
@@ -25,9 +18,6 @@ |
25 | 18 |
|
26 | 19 |
|0100 |
27 | 20 |
|
28 |
- ( set stacks location ) |
|
29 |
- WST RST .System/stacks DEO2 |
|
30 |
- |
|
31 | 21 |
( Logic ) |
32 | 22 |
|
33 | 23 |
( EQU ) |
... | ... |
@@ -40,6 +30,16 @@ |
40 | 30 |
#01f8 #01f8 EQU2 [ #01 ] TEST-BYTE |
41 | 31 |
#f801 #01f8 EQU2 [ #00 ] TEST-BYTE |
42 | 32 |
#01f8 #f801 EQU2 [ #00 ] TEST-BYTE |
33 |
+ MODE |
|
34 |
+ #f8 #f8 EQUk ADD ADD [ #f1 ] TEST-BYTE |
|
35 |
+ #01 #01 EQUk ADD ADD [ #03 ] TEST-BYTE |
|
36 |
+ #f8 #01 EQUk ADD ADD [ #f9 ] TEST-BYTE |
|
37 |
+ #01 #f8 EQUk ADD ADD [ #f9 ] TEST-BYTE |
|
38 |
+ MODE |
|
39 |
+ #f801 #f801 EQU2k #00 ADD2 ADD2 [ #f102 ] TEST-SHORT |
|
40 |
+ #01f8 #01f8 EQU2k #00 ADD2 ADD2 [ #04f0 ] TEST-SHORT |
|
41 |
+ #f801 #01f8 EQU2k #00 ADD2 ADD2 [ #f9f9 ] TEST-SHORT |
|
42 |
+ #01f8 #f801 EQU2k #00 ADD2 ADD2 [ #f9f9 ] TEST-SHORT |
|
43 | 43 |
OPCODE |
44 | 44 |
|
45 | 45 |
( NEQ ) |
... | ... |
@@ -52,6 +52,16 @@ |
52 | 52 |
#01f8 #01f8 NEQ2 [ #00 ] TEST-BYTE |
53 | 53 |
#f801 #01f8 NEQ2 [ #01 ] TEST-BYTE |
54 | 54 |
#01f8 #f801 NEQ2 [ #01 ] TEST-BYTE |
55 |
+ MODE |
|
56 |
+ #f8 #f8 NEQk ADD ADD [ #f0 ] TEST-BYTE |
|
57 |
+ #01 #01 NEQk ADD ADD [ #02 ] TEST-BYTE |
|
58 |
+ #f8 #01 NEQk ADD ADD [ #fa ] TEST-BYTE |
|
59 |
+ #01 #f8 NEQk ADD ADD [ #fa ] TEST-BYTE |
|
60 |
+ MODE |
|
61 |
+ #f801 #f801 NEQ2k #00 ADD2 ADD2 [ #f002 ] TEST-SHORT |
|
62 |
+ #01f8 #01f8 NEQ2k #00 ADD2 ADD2 [ #03f0 ] TEST-SHORT |
|
63 |
+ #f801 #01f8 NEQ2k #00 ADD2 ADD2 [ #faf9 ] TEST-SHORT |
|
64 |
+ #01f8 #f801 NEQ2k #00 ADD2 ADD2 [ #faf9 ] TEST-SHORT |
|
55 | 65 |
OPCODE |
56 | 66 |
|
57 | 67 |
( GTH ) |
... | ... |
@@ -64,6 +74,16 @@ |
64 | 74 |
#01f8 #01f8 GTH2 [ #00 ] TEST-BYTE |
65 | 75 |
#f801 #01f8 GTH2 [ #01 ] TEST-BYTE |
66 | 76 |
#01f8 #f801 GTH2 [ #00 ] TEST-BYTE |
77 |
+ MODE |
|
78 |
+ #f8 #f8 GTHk ADD ADD [ #f0 ] TEST-BYTE |
|
79 |
+ #01 #01 GTHk ADD ADD [ #02 ] TEST-BYTE |
|
80 |
+ #f8 #01 GTHk ADD ADD [ #fa ] TEST-BYTE |
|
81 |
+ #01 #f8 GTHk ADD ADD [ #f9 ] TEST-BYTE |
|
82 |
+ MODE |
|
83 |
+ #f801 #f801 GTH2k #00 ADD2 ADD2 [ #f002 ] TEST-SHORT |
|
84 |
+ #01f8 #01f8 GTH2k #00 ADD2 ADD2 [ #03f0 ] TEST-SHORT |
|
85 |
+ #f801 #01f8 GTH2k #00 ADD2 ADD2 [ #faf9 ] TEST-SHORT |
|
86 |
+ #01f8 #f801 GTH2k #00 ADD2 ADD2 [ #f9f9 ] TEST-SHORT |
|
67 | 87 |
OPCODE |
68 | 88 |
|
69 | 89 |
( LTH ) |
... | ... |
@@ -76,6 +96,16 @@ |
76 | 96 |
#01f8 #01f8 LTH2 [ #00 ] TEST-BYTE |
77 | 97 |
#f801 #01f8 LTH2 [ #00 ] TEST-BYTE |
78 | 98 |
#01f8 #f801 LTH2 [ #01 ] TEST-BYTE |
99 |
+ MODE |
|
100 |
+ #f8 #f8 LTHk ADD ADD [ #f0 ] TEST-BYTE |
|
101 |
+ #01 #01 LTHk ADD ADD [ #02 ] TEST-BYTE |
|
102 |
+ #f8 #01 LTHk ADD ADD [ #f9 ] TEST-BYTE |
|
103 |
+ #01 #f8 LTHk ADD ADD [ #fa ] TEST-BYTE |
|
104 |
+ MODE |
|
105 |
+ #f801 #f801 LTH2k #00 ADD2 ADD2 [ #f002 ] TEST-SHORT |
|
106 |
+ #01f8 #01f8 LTH2k #00 ADD2 ADD2 [ #03f0 ] TEST-SHORT |
|
107 |
+ #f801 #01f8 LTH2k #00 ADD2 ADD2 [ #f9f9 ] TEST-SHORT |
|
108 |
+ #01f8 #f801 LTH2k #00 ADD2 ADD2 [ #faf9 ] TEST-SHORT |
|
79 | 109 |
TYPE |
80 | 110 |
|
81 | 111 |
( Arithmetic ) |
... | ... |
@@ -91,6 +121,15 @@ |
91 | 121 |
#ffff #ffff ADD2 [ #fffe ] TEST-SHORT |
92 | 122 |
#fffe #ffff ADD2 [ #fffd ] TEST-SHORT |
93 | 123 |
MODE |
124 |
+ #ff #00 ADDk ADD ADD [ #fe ] TEST-BYTE |
|
125 |
+ #01 #ff ADDk ADD ADD [ #00 ] TEST-BYTE |
|
126 |
+ #ff #ff ADDk ADD ADD [ #fc ] TEST-BYTE |
|
127 |
+ #fe #ff ADDk ADD ADD [ #fa ] TEST-BYTE |
|
128 |
+ MODE |
|
129 |
+ #ffff #0000 ADD2k ADD2 ADD2 [ #fffe ] TEST-SHORT |
|
130 |
+ #0001 #ffff ADD2k ADD2 ADD2 [ #0000 ] TEST-SHORT |
|
131 |
+ #ffff #ffff ADD2k ADD2 ADD2 [ #fffc ] TEST-SHORT |
|
132 |
+ #fffe #ffff ADD2k ADD2 ADD2 [ #fffa ] TEST-SHORT |
|
94 | 133 |
OPCODE |
95 | 134 |
|
96 | 135 |
( SUB ) |
... | ... |
@@ -104,6 +143,15 @@ |
104 | 143 |
#ffff #ffff SUB2 [ #0000 ] TEST-SHORT |
105 | 144 |
#fffe #ffff SUB2 [ #ffff ] TEST-SHORT |
106 | 145 |
MODE |
146 |
+ #ff #00 SUBk ADD ADD [ #fe ] TEST-BYTE |
|
147 |
+ #01 #ff SUBk ADD ADD [ #02 ] TEST-BYTE |
|
148 |
+ #ff #ff SUBk ADD ADD [ #fe ] TEST-BYTE |
|
149 |
+ #fe #ff SUBk ADD ADD [ #fc ] TEST-BYTE |
|
150 |
+ MODE |
|
151 |
+ #ffff #0000 SUB2k ADD2 ADD2 [ #fffe ] TEST-SHORT |
|
152 |
+ #0001 #ffff SUB2k ADD2 ADD2 [ #0002 ] TEST-SHORT |
|
153 |
+ #ffff #ffff SUB2k ADD2 ADD2 [ #fffe ] TEST-SHORT |
|
154 |
+ #fffe #ffff SUB2k ADD2 ADD2 [ #fffc ] TEST-SHORT |
|
107 | 155 |
OPCODE |
108 | 156 |
|
109 | 157 |
( MUL ) |
... | ... |
@@ -116,6 +164,16 @@ |
116 | 164 |
#abcd #1234 MUL2 [ #4fa4 ] TEST-SHORT |
117 | 165 |
#8000 #0200 MUL2 [ #0000 ] TEST-SHORT |
118 | 166 |
#2222 #0003 MUL2 [ #6666 ] TEST-SHORT |
167 |
+ MODE |
|
168 |
+ #00 #01 MULk ADD ADD [ #01 ] TEST-BYTE |
|
169 |
+ #3f #e7 MULk ADD ADD [ #ff ] TEST-BYTE |
|
170 |
+ #37 #3f MULk ADD ADD [ #ff ] TEST-BYTE |
|
171 |
+ #10 #02 MULk ADD ADD [ #32 ] TEST-BYTE |
|
172 |
+ MODE |
|
173 |
+ #1000 #0003 MUL2k ADD2 ADD2 [ #4003 ] TEST-SHORT |
|
174 |
+ #abcd #1234 MUL2k ADD2 ADD2 [ #0da5 ] TEST-SHORT |
|
175 |
+ #8000 #0200 MUL2k ADD2 ADD2 [ #8200 ] TEST-SHORT |
|
176 |
+ #2222 #0003 MUL2k ADD2 ADD2 [ #888b ] TEST-SHORT |
|
119 | 177 |
OPCODE |
120 | 178 |
|
121 | 179 |
( DIV ) |
... | ... |
@@ -128,6 +186,16 @@ |
128 | 186 |
#abcd #1234 DIV2 [ #0009 ] TEST-SHORT |
129 | 187 |
#8000 #0200 DIV2 [ #0040 ] TEST-SHORT |
130 | 188 |
#2222 #0003 DIV2 [ #0b60 ] TEST-SHORT |
189 |
+ MODE |
|
190 |
+ #10 #02 DIVk ADD ADD [ #1a ] TEST-BYTE |
|
191 |
+ #20 #20 DIVk ADD ADD [ #41 ] TEST-BYTE |
|
192 |
+ #34 #01 DIVk ADD ADD [ #69 ] TEST-BYTE |
|
193 |
+ #02 #ef DIVk ADD ADD [ #f1 ] TEST-BYTE |
|
194 |
+ MODE |
|
195 |
+ #1000 #0040 DIV2k ADD2 ADD2 [ #1080 ] TEST-SHORT |
|
196 |
+ #abcd #1234 DIV2k ADD2 ADD2 [ #be0a ] TEST-SHORT |
|
197 |
+ #8000 #0200 DIV2k ADD2 ADD2 [ #8240 ] TEST-SHORT |
|
198 |
+ #2222 #0003 DIV2k ADD2 ADD2 [ #2d85 ] TEST-SHORT |
|
131 | 199 |
TYPE |
132 | 200 |
|
133 | 201 |
( Stack ) |
... | ... |
@@ -142,6 +210,16 @@ |
142 | 210 |
#ffff INC2 [ #0000 ] TEST-SHORT |
143 | 211 |
#fffe INC2 [ #ffff ] TEST-SHORT |
144 | 212 |
#0000 INC2 [ #0001 ] TEST-SHORT |
213 |
+ MODE |
|
214 |
+ #01 INCk ADD [ #03 ] TEST-BYTE |
|
215 |
+ #ff INCk ADD [ #ff ] TEST-BYTE |
|
216 |
+ #fe INCk ADD [ #fd ] TEST-BYTE |
|
217 |
+ #00 INCk ADD [ #01 ] TEST-BYTE |
|
218 |
+ MODE |
|
219 |
+ #0001 INC2k ADD2 [ #0003 ] TEST-SHORT |
|
220 |
+ #ffff INC2k ADD2 [ #ffff ] TEST-SHORT |
|
221 |
+ #fffe INC2k ADD2 [ #fffd ] TEST-SHORT |
|
222 |
+ #0000 INC2k ADD2 [ #0001 ] TEST-SHORT |
|
145 | 223 |
OPCODE |
146 | 224 |
|
147 | 225 |
( POP ) |
... | ... |
@@ -154,36 +232,66 @@ |
154 | 232 |
#0a0b #0c0d #0e0f POP2 POP2 [ #0a0b ] TEST-SHORT |
155 | 233 |
#0a0b #0c0d #0e0f ADD2 POP2 [ #0a0b ] TEST-SHORT |
156 | 234 |
#0a0b #0c0d #0e0f POP2 ADD2 [ #1618 ] TEST-SHORT |
235 |
+ MODE |
|
236 |
+ #0a #0b POPk [ #0b ] TEST-BYTE POP |
|
237 |
+ #0a #0b #0c POPk POP [ #0b ] TEST-BYTE POP |
|
238 |
+ #0a #0b #0c ADD POPk [ #17 ] TEST-BYTE POP |
|
239 |
+ #0a #0b #0c POPk ADD [ #17 ] TEST-BYTE POP |
|
240 |
+ MODE |
|
241 |
+ #0a0b #0c0d POP2k [ #0c0d ] TEST-SHORT POP2 |
|
242 |
+ #0a0b #0c0d #0e0f POP2k POP2 [ #0c0d ] TEST-SHORT POP2 |
|
243 |
+ #0a0b #0c0d #0e0f ADD2 POP2k [ #1a1c ] TEST-SHORT POP2 |
|
244 |
+ #0a0b #0c0d #0e0f POP2k ADD2 [ #1a1c ] TEST-SHORT POP2 |
|
157 | 245 |
OPCODE |
158 | 246 |
|
159 | 247 |
( DUP ) |
160 | 248 |
#0a #0b DUP ADD ADD [ #20 ] TEST-BYTE |
161 | 249 |
MODE |
162 | 250 |
#0a0b DUP2 ADD2 [ #1416 ] TEST-SHORT |
251 |
+ MODE |
|
252 |
+ #0a #0b DUPk ADD ADD ADD [ #2b ] TEST-BYTE |
|
253 |
+ MODE |
|
254 |
+ #0a0b DUP2k ADD2 ADD2 [ #1e21 ] TEST-SHORT |
|
163 | 255 |
OPCODE |
164 | 256 |
|
165 | 257 |
( NIP ) |
166 | 258 |
#12 #34 #56 NIP ADD [ #68 ] TEST-BYTE |
167 | 259 |
MODE |
168 | 260 |
#1234 #5678 #9abc NIP2 ADD2 [ #acf0 ] TEST-SHORT |
169 |
- |
|
261 |
+ MODE |
|
262 |
+ #12 #34 #56 NIPk ADD ADD [ #e0 ] TEST-BYTE POP |
|
263 |
+ MODE |
|
264 |
+ #1234 #5678 #9abc NIP2k ADD2 ADD2 [ #8bf0 ] TEST-SHORT POP2 |
|
170 | 265 |
OPCODE |
266 |
+ |
|
171 | 267 |
( SWP ) |
172 | 268 |
#02 #10 SWP DIV [ #08 ] TEST-BYTE |
173 | 269 |
MODE |
174 | 270 |
#0a0b #0c0d SWP2 NIP2 [ #0a0b ] TEST-SHORT |
175 |
- |
|
271 |
+ MODE |
|
272 |
+ #02 #10 SWPk DIV ADD ADD [ #1a ] TEST-BYTE |
|
273 |
+ MODE |
|
274 |
+ #0a0b #0c0d SWP2k POP2 POP2 POP2 [ #0a0b ] TEST-SHORT |
|
176 | 275 |
OPCODE |
276 |
+ |
|
177 | 277 |
( OVR ) |
178 | 278 |
#02 #10 OVR DIV ADD [ #0a ] TEST-BYTE |
179 | 279 |
MODE |
180 | 280 |
#0a0b #0c0d OVR2 NIP2 ADD2 [ #1416 ] TEST-SHORT |
281 |
+ MODE |
|
282 |
+ #02 #10 OVRk DIV ADD ADD ADD [ #1c ] TEST-BYTE |
|
283 |
+ MODE |
|
284 |
+ #0a0b #0c0d OVR2k NIP2 ADD2 ADD2 ADD2 [ #2a2e ] TEST-SHORT |
|
181 | 285 |
OPCODE |
182 | 286 |
|
183 | 287 |
( ROT ) |
184 | 288 |
#02 #04 #10 ROT DIV ADD [ #0c ] TEST-BYTE |
185 | 289 |
MODE |
186 | 290 |
#0a0b #0c0d #0c0f ROT2 ADD2 NIP2 [ #161a ] TEST-SHORT |
291 |
+ MODE |
|
292 |
+ #02 #04 #10 ROTk DIV ADD ADD ADD ADD [ #22 ] TEST-BYTE |
|
293 |
+ MODE |
|
294 |
+ #0a0b #0c0d #0c0f ROT2k ADD2 NIP2 ADD2 ADD2 ADD2 [ #3841 ] TEST-SHORT |
|
187 | 295 |
TYPE |
188 | 296 |
|
189 | 297 |
( Bitwise ) |
... | ... |
@@ -198,6 +306,16 @@ |
198 | 306 |
#aaaa #5555 AND2 [ #0000 ] TEST-SHORT |
199 | 307 |
#ffff #1234 AND2 [ #1234 ] TEST-SHORT |
200 | 308 |
#abcd #0a0c AND2 [ #0a0c ] TEST-SHORT |
309 |
+ MODE |
|
310 |
+ #fc #3f ANDk ADD ADD [ #77 ] TEST-BYTE |
|
311 |
+ #f0 #0f ANDk ADD ADD [ #ff ] TEST-BYTE |
|
312 |
+ #ff #3c ANDk ADD ADD [ #77 ] TEST-BYTE |
|
313 |
+ #02 #03 ANDk ADD ADD [ #07 ] TEST-BYTE |
|
314 |
+ MODE |
|
315 |
+ #f0f0 #00f0 AND2k ADD2 ADD2 [ #f2d0 ] TEST-SHORT |
|
316 |
+ #aaaa #5555 AND2k ADD2 ADD2 [ #ffff ] TEST-SHORT |
|
317 |
+ #ffff #1234 AND2k ADD2 ADD2 [ #2467 ] TEST-SHORT |
|
318 |
+ #abcd #0a0c AND2k ADD2 ADD2 [ #bfe5 ] TEST-SHORT |
|
201 | 319 |
OPCODE |
202 | 320 |
|
203 | 321 |
( ORA ) |
... | ... |
@@ -210,6 +328,16 @@ |
210 | 328 |
#abab #cdcd ORA2 [ #efef ] TEST-SHORT |
211 | 329 |
#1122 #1234 ORA2 [ #1336 ] TEST-SHORT |
212 | 330 |
#8888 #1000 ORA2 [ #9888 ] TEST-SHORT |
331 |
+ MODE |
|
332 |
+ #0f #f0 ORAk ADD ADD [ #fe ] TEST-BYTE |
|
333 |
+ #ab #cd ORAk ADD ADD [ #67 ] TEST-BYTE |
|
334 |
+ #12 #34 ORAk ADD ADD [ #7c ] TEST-BYTE |
|
335 |
+ #88 #10 ORAk ADD ADD [ #30 ] TEST-BYTE |
|
336 |
+ MODE |
|
337 |
+ #0f0f #f0f0 ORA2k ADD2 ADD2 [ #fffe ] TEST-SHORT |
|
338 |
+ #abab #cdcd ORA2k ADD2 ADD2 [ #6967 ] TEST-SHORT |
|
339 |
+ #1122 #1234 ORA2k ADD2 ADD2 [ #368c ] TEST-SHORT |
|
340 |
+ #8888 #1000 ORA2k ADD2 ADD2 [ #3110 ] TEST-SHORT |
|
213 | 341 |
OPCODE |
214 | 342 |
|
215 | 343 |
( EOR ) |
... | ... |
@@ -222,6 +350,16 @@ |
222 | 350 |
#aaaa #5555 EOR2 [ #ffff ] TEST-SHORT |
223 | 351 |
#1122 #1234 EOR2 [ #0316 ] TEST-SHORT |
224 | 352 |
#8888 #1000 EOR2 [ #9888 ] TEST-SHORT |
353 |
+ MODE |
|
354 |
+ #00 #00 EORk ADD ADD [ #00 ] TEST-BYTE |
|
355 |
+ #ff #00 EORk ADD ADD [ #fe ] TEST-BYTE |
|
356 |
+ #aa #55 EORk ADD ADD [ #fe ] TEST-BYTE |
|
357 |
+ #ff #ff EORk ADD ADD [ #fe ] TEST-BYTE |
|
358 |
+ MODE |
|
359 |
+ #ffff #ff00 EOR2k ADD2 ADD2 [ #fffe ] TEST-SHORT |
|
360 |
+ #aaaa #5555 EOR2k ADD2 ADD2 [ #fffe ] TEST-SHORT |
|
361 |
+ #1122 #1234 EOR2k ADD2 ADD2 [ #266c ] TEST-SHORT |
|
362 |
+ #8888 #1000 EOR2k ADD2 ADD2 [ #3110 ] TEST-SHORT |
|
225 | 363 |
OPCODE |
226 | 364 |
|
227 | 365 |
( SFT ) |
... | ... |
@@ -234,6 +372,16 @@ |
234 | 372 |
#ffff #70 SFT2 [ #ff80 ] TEST-SHORT |
235 | 373 |
#ffff #7e SFT2 [ #0180 ] TEST-SHORT |
236 | 374 |
#ffff #e3 SFT2 [ #c000 ] TEST-SHORT |
375 |
+ MODE |
|
376 |
+ #ff #08 SFTk ADD ADD [ #07 ] TEST-BYTE |
|
377 |
+ #ff #e0 SFTk ADD ADD [ #df ] TEST-BYTE |
|
378 |
+ #ff #11 SFTk ADD ADD [ #0e ] TEST-BYTE |
|
379 |
+ #ff #12 SFTk ADD ADD [ #8f ] TEST-BYTE |
|
380 |
+ MODE |
|
381 |
+ #ffff #01 SFT2k ROT POP ADD2 [ #7ffe ] TEST-SHORT |
|
382 |
+ #ffff #70 SFT2k ROT POP ADD2 [ #ff7f ] TEST-SHORT |
|
383 |
+ #ffff #7e SFT2k ROT POP ADD2 [ #017f ] TEST-SHORT |
|
384 |
+ #ffff #e3 SFT2k ROT POP ADD2 [ #bfff ] TEST-SHORT |
|
237 | 385 |
TYPE |
238 | 386 |
|
239 | 387 |
( Memory ) |
... | ... |
@@ -267,8 +415,8 @@ |
267 | 415 |
OPCODE |
268 | 416 |
|
269 | 417 |
( DEI/DEO ) |
270 |
- LIT '1 EMIT |
|
271 |
- LIT '1 EMIT |
|
418 |
+ LIT "1 EMIT |
|
419 |
+ LIT "1 EMIT |
|
272 | 420 |
TYPE |
273 | 421 |
|
274 | 422 |
( Branching ) |
... | ... |
@@ -301,21 +449,6 @@ |
301 | 449 |
#12 #34 ADDk ADD ADD [ #8c ] TEST-BYTE |
302 | 450 |
OPCODE |
303 | 451 |
|
304 |
- ( Error: Division By Zero ) |
|
305 |
- ;on-error-division #00 DEO2 |
|
306 |
- #10 #00 DIV |
|
307 |
- |
|
308 |
- @err2 |
|
309 |
- ( Error: Working Stack Underflow ) |
|
310 |
- ;on-error-underflow #00 DEO2 |
|
311 |
- POP |
|
312 |
- |
|
313 |
- @err3 |
|
314 |
- ( Error: Return Stack Underflow ) |
|
315 |
- ;on-error-underflowr #00 DEO2 |
|
316 |
- POPr |
|
317 |
- |
|
318 |
- @end |
|
319 | 452 |
#010e DEO |
320 | 453 |
#010f DEO |
321 | 454 |
|
... | ... |
@@ -327,57 +460,5 @@ BRK |
327 | 460 |
|
328 | 461 |
JMP2r |
329 | 462 |
|
330 |
-@on-error-division ( -> ) |
|
331 |
- |
|
332 |
- WST ;print-err JSR2 |
|
333 |
- ;err2 JMP2 |
|
334 |
- |
|
335 |
-BRK |
|
336 |
- |
|
337 |
-@on-error-underflow ( -> ) |
|
338 |
- |
|
339 |
- WST ;print-err JSR2 |
|
340 |
- ;err3 JMP2 |
|
341 |
- |
|
342 |
-BRK |
|
343 |
- |
|
344 |
-@on-error-underflowr ( -> ) |
|
345 |
- |
|
346 |
- RST ;print-err JSR2 |
|
347 |
- ;end JMP2 |
|
348 |
- |
|
349 |
-BRK |
|
350 |
- |
|
351 |
-@print-err ( page -- ) |
|
352 |
- |
|
353 |
- ;err-txt ;print-str JSR2 |
|
354 |
- ;rst-txt ;print-str JSR2 |
|
355 |
- #20 EMIT |
|
356 |
- GET-ERR ;print/byte JSR2 |
|
357 |
- #0a EMIT |
|
358 |
- |
|
359 |
-JMP2r |
|
360 |
- |
|
361 |
-@print-str ( str* -- ) |
|
362 |
- |
|
363 |
- &while |
|
364 |
- LDAk #18 DEO |
|
365 |
- INC2 LDAk ,&while JCN |
|
366 |
- POP2 |
|
367 |
- |
|
368 |
-JMP2r |
|
369 |
- |
|
370 |
-@print ( short* -- ) |
|
371 |
- |
|
372 |
- SWP ,&byte JSR |
|
373 |
- &byte ( byte -- ) DUP #04 SFT ,&char JSR |
|
374 |
- &char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO |
|
375 |
- |
|
376 |
-JMP2r |
|
377 |
- |
|
378 |
-@err-txt "Error $1 |
|
379 |
-@wst-txt "(wst) $1 |
|
380 |
-@rst-txt "(rst) $1 |
|
381 |
- |
|
382 | 463 |
@absolute |
383 | 464 |
&byte $1 &short $2 |
... | ... |
@@ -44,8 +44,6 @@ typedef struct { |
44 | 44 |
} Program; |
45 | 45 |
|
46 | 46 |
Program p; |
47 |
-static int litlast = 0; |
|
48 |
-static int jsrlast = 0; |
|
49 | 47 |
|
50 | 48 |
/* clang-format off */ |
51 | 49 |
|
... | ... |
@@ -207,8 +205,6 @@ writebyte(Uint8 b) |
207 | 205 |
return error("Memory overwrite", ""); |
208 | 206 |
p.data[p.ptr++] = b; |
209 | 207 |
p.length = p.ptr; |
210 |
- litlast = 0; |
|
211 |
- jsrlast = 0; |
|
212 | 208 |
return 1; |
213 | 209 |
} |
214 | 210 |
|
... | ... |
@@ -216,16 +212,7 @@ static int |
216 | 212 |
writeopcode(char *w) |
217 | 213 |
{ |
218 | 214 |
Uint8 res; |
219 |
- if(jsrlast && scmp(w, "JMP2r", 5)) { /* tail-call optimization */ |
|
220 |
- p.data[p.ptr - 1] = jsrlast == 2 ? findopcode("JMP2") : findopcode("JMP"); |
|
221 |
- jsrlast = 0; |
|
222 |
- return 1; |
|
223 |
- } |
|
224 | 215 |
res = writebyte(findopcode(w)); |
225 |
- if(scmp(w, "JSR2", 4)) |
|
226 |
- jsrlast = 2; |
|
227 |
- else if(scmp(w, "JSR", 3)) |
|
228 |
- jsrlast = 1; |
|
229 | 216 |
return res; |
230 | 217 |
} |
231 | 218 |
|
... | ... |
@@ -240,15 +227,8 @@ writeshort(Uint16 s, int lit) |
240 | 227 |
static int |
241 | 228 |
writelitbyte(Uint8 b) |
242 | 229 |
{ |
243 |
- if(litlast) { /* literals optimization */ |
|
244 |
- Uint8 hb = p.data[p.ptr - 1]; |
|
245 |
- p.ptr -= 2; |
|
246 |
- p.length = p.ptr; |
|
247 |
- return writeshort((hb << 8) + b, 1); |
|
248 |
- } |
|
249 | 230 |
if(!writebyte(findopcode("LIT"))) return 0; |
250 | 231 |
if(!writebyte(b)) return 0; |
251 |
- litlast = 1; |
|
252 | 232 |
return 1; |
253 | 233 |
} |
254 | 234 |
|
... | ... |
@@ -299,24 +279,20 @@ parse(char *w, FILE *f) |
299 | 279 |
if(!sihx(w + 1)) |
300 | 280 |
return error("Invalid padding", w); |
301 | 281 |
p.ptr = shex(w + 1); |
302 |
- litlast = jsrlast = 0; |
|
303 | 282 |
break; |
304 | 283 |
case '$': /* pad-relative */ |
305 | 284 |
if(!sihx(w + 1)) |
306 | 285 |
return error("Invalid padding", w); |
307 | 286 |
p.ptr += shex(w + 1); |
308 |
- litlast = jsrlast = 0; |
|
309 | 287 |
break; |
310 | 288 |
case '@': /* label */ |
311 | 289 |
if(!makelabel(w + 1)) |
312 | 290 |
return error("Invalid label", w); |
313 | 291 |
scpy(w + 1, p.scope, 0x40); |
314 |
- litlast = jsrlast = 0; |
|
315 | 292 |
break; |
316 | 293 |
case '&': /* sublabel */ |
317 | 294 |
if(!makelabel(sublabel(subw, p.scope, w + 1))) |
318 | 295 |
return error("Invalid sublabel", w); |
319 |
- litlast = jsrlast = 0; |
|
320 | 296 |
break; |
321 | 297 |
case '#': /* literals hex */ |
322 | 298 |
if(!sihx(w + 1) || (slen(w) != 3 && slen(w) != 5)) |
... | ... |
@@ -328,11 +304,11 @@ parse(char *w, FILE *f) |
328 | 304 |
} |
329 | 305 |
break; |
330 | 306 |
case '.': /* literal byte zero-page */ |
331 |
- makereference(p.scope, w, p.ptr - litlast); |
|
307 |
+ makereference(p.scope, w, p.ptr); |
|
332 | 308 |
if(!writelitbyte(0xff)) return 0; |
333 | 309 |
break; |
334 | 310 |
case ',': /* literal byte relative */ |
335 |
- makereference(p.scope, w, p.ptr - litlast); |
|
311 |
+ makereference(p.scope, w, p.ptr); |
|
336 | 312 |
if(!writelitbyte(0xff)) return 0; |
337 | 313 |
break; |
338 | 314 |
case ';': /* literal short absolute */ |
... | ... |
@@ -343,9 +319,6 @@ parse(char *w, FILE *f) |
343 | 319 |
makereference(p.scope, w, p.ptr); |
344 | 320 |
if(!writeshort(0xffff, 0)) return 0; |
345 | 321 |
break; |
346 |
- case '\'': /* raw char */ |
|
347 |
- if(!writebyte((Uint8)w[1])) return 0; |
|
348 |
- break; |
|
349 | 322 |
case '"': /* raw string */ |
350 | 323 |
i = 0; |
351 | 324 |
while((c = w[++i])) |