... | ... |
@@ -54,9 +54,9 @@ then |
54 | 54 |
fi |
55 | 55 |
|
56 | 56 |
echo "Assembling.." |
57 |
-./bin/uxnasm projects/examples/demos/piano.tal bin/piano.rom |
|
57 |
+./bin/uxnasm projects/examples/demos/life.tal bin/life.rom |
|
58 | 58 |
|
59 | 59 |
echo "Running.." |
60 |
-./bin/uxnemu bin/piano.rom |
|
60 |
+./bin/uxnemu bin/life.rom |
|
61 | 61 |
|
62 | 62 |
echo "Done." |
... | ... |
@@ -4,22 +4,28 @@ |
4 | 4 |
Any live cell with more than three live neighbours dies, as if by overpopulation. |
5 | 5 |
Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction. ) |
6 | 6 |
|
7 |
-%+ { ADD } %- { SUB } %* { MUL } %/ { DIV } |
|
7 |
+%+ { ADD } %- { SUB } |
|
8 | 8 |
%< { LTH } %> { GTH } %= { EQU } %! { NEQ } |
9 |
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } |
|
9 |
+%++ { ADD2 } %-- { SUB2 } |
|
10 | 10 |
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } |
11 | 11 |
|
12 |
-%TOS { #00 SWP } %TOB { NIP } |
|
13 |
-%RTN { JMP2r } %MOD { DUP2 / * - } |
|
14 |
-%MOD8 { #07 AND } %MOD2 { #01 AND } |
|
15 |
-%SFL { #40 SFT SFT } |
|
12 |
+%2/ { #01 SFT } |
|
13 |
+%8/ { #03 SFT } |
|
16 | 14 |
%2// { #01 SFT2 } %8// { #03 SFT2 } |
17 | 15 |
%2** { #10 SFT2 } %8** { #30 SFT2 } |
16 |
+%40** { #60 SFT2 } |
|
17 |
+%8MOD { #07 AND } %2MOD { #01 AND } |
|
18 |
+ |
|
19 |
+%TOS { #00 SWP } |
|
20 |
+%RTN { JMP2r } |
|
21 |
+%SFL { #40 SFT SFT } |
|
18 | 22 |
|
19 | 23 |
%WIDTH { #40 } %HEIGHT { #40 } |
24 |
+%WIDTH-MOD { #3f AND } %HEIGHT-MOD { #3f AND } |
|
25 |
+ |
|
20 | 26 |
%BANK1 { #8000 } %BANK2 { #a000 } |
21 | 27 |
|
22 |
-%GET-SIZE { WIDTH TOS 8// HEIGHT TOS ** } |
|
28 |
+%GET-SIZE { WIDTH TOS 8// 40** } |
|
23 | 29 |
%GET-ITERATORS { SWP2k POP NIP } |
24 | 30 |
%GET-ITER { OVR2 NIP OVR SWP } |
25 | 31 |
|
... | ... |
@@ -72,7 +78,7 @@ BRK |
72 | 78 |
|
73 | 79 |
.Mouse/state DEI #00 = #01 JCN [ BRK ] |
74 | 80 |
|
75 |
- ( incr frame ) .world/frame LDZ #01 + [ DUP ] .world/frame STZ |
|
81 |
+ ( incr frame ) .world/frame LDZ INC [ DUP ] .world/frame STZ |
|
76 | 82 |
( reset count ) #0000 .world/count STZ2 |
77 | 83 |
|
78 | 84 |
#03 AND #00 = #01 JCN [ BRK ] |
... | ... |
@@ -94,10 +100,10 @@ BRK |
94 | 100 |
( neighbours ) DUP2 ;get-neighbours JSR2 |
95 | 101 |
( state ) ROT ROT ;get-cell JSR2 |
96 | 102 |
,run-cell JSR |
97 |
- SWP #01 + SWP |
|
103 |
+ SWP INC SWP |
|
98 | 104 |
LTHk ,&hor JCN |
99 | 105 |
POP2 |
100 |
- SWP #01 + SWP |
|
106 |
+ SWP INC SWP |
|
101 | 107 |
LTHk ,&ver JCN |
102 | 108 |
POP2 |
103 | 109 |
|
... | ... |
@@ -131,13 +137,13 @@ RTN |
131 | 137 |
@save-cell ( x y -- ) |
132 | 138 |
|
133 | 139 |
( get index ) |
134 |
- HEIGHT MOD SWP WIDTH MOD SWP |
|
135 |
- WIDTH #08 / TOS ROT TOS ** ROT #08 / TOS ++ [ BANK2 ++ ] |
|
140 |
+ HEIGHT-MOD SWP WIDTH-MOD SWP |
|
141 |
+ TOS 8** ROT 8/ TOS ++ [ BANK2 ++ ] |
|
136 | 142 |
( incr count ) |
137 |
- .world/count LDZ2 #0001 ADD2 .world/count STZ2 |
|
143 |
+ .world/count LDZ2 INC2 .world/count STZ2 |
|
138 | 144 |
( save in buffer ) |
139 | 145 |
STH2 |
140 |
- DUP2 POP MOD8 #01 SWP SFL |
|
146 |
+ DUP2 POP 8MOD #01 SWP SFL |
|
141 | 147 |
LDAkr STHr SWP ORA |
142 | 148 |
STH2r STA |
143 | 149 |
|
... | ... |
@@ -160,12 +166,12 @@ RTN |
160 | 166 |
|
161 | 167 |
.Mouse/state DEI #00 ! #01 JCN [ BRK ] |
162 | 168 |
|
163 |
- .Mouse/x DEI2 DUP2 .anchor/x LDZ2 >> ROT ROT .anchor/x LDZ2 WIDTH DUP ADD TOS ++ #0001 ++ << #0101 == |
|
169 |
+ .Mouse/x DEI2 DUP2 .anchor/x LDZ2 >> ROT ROT .anchor/x LDZ2 WIDTH DUP ADD TOS ++ INC2 << #0101 == |
|
164 | 170 |
.Mouse/y DEI2 DUP2 .anchor/y LDZ2 >> ROT ROT .anchor/y LDZ2 HEIGHT DUP ADD TOS ++ << #0101 == |
165 | 171 |
#0101 == #01 JCN [ BRK ] |
166 | 172 |
|
167 |
- .Mouse/x DEI2 .anchor/x LDZ2 SUB2 #02 / TOB |
|
168 |
- .Mouse/y DEI2 .anchor/y LDZ2 SUB2 #02 / TOB |
|
173 |
+ .Mouse/x DEI2 .anchor/x LDZ2 SUB2 2/ NIP |
|
174 |
+ .Mouse/y DEI2 .anchor/y LDZ2 SUB2 2/ NIP |
|
169 | 175 |
;set-cell JSR2 |
170 | 176 |
|
171 | 177 |
;draw-grid JSR2 |
... | ... |
@@ -199,25 +205,25 @@ BRK |
199 | 205 |
WIDTH #00 |
200 | 206 |
&hor |
201 | 207 |
DUP TOS 2** .anchor/x LDZ2 ++ .Screen/x DEO2 |
202 |
- GET-ITER ,get-cell JSR #01 + .Screen/pixel DEO |
|
203 |
- #01 + GTHk ,&hor JCN |
|
208 |
+ GET-ITER ,get-cell JSR INC .Screen/pixel DEO |
|
209 |
+ INC GTHk ,&hor JCN |
|
204 | 210 |
POP2 |
205 |
- #01 + GTHk ,&ver JCN |
|
211 |
+ INC GTHk ,&ver JCN |
|
206 | 212 |
POP2 |
207 | 213 |
|
208 | 214 |
RTN |
209 | 215 |
|
210 | 216 |
@get-index ( x y -- index* ) |
211 | 217 |
|
212 |
- HEIGHT MOD SWP WIDTH MOD SWP |
|
213 |
- WIDTH #08 / TOS ROT TOS ** ROT #08 / TOS ++ [ BANK1 ++ ] |
|
218 |
+ HEIGHT-MOD SWP WIDTH-MOD SWP |
|
219 |
+ TOS 8** ROT 8/ TOS ++ [ BANK1 ++ ] |
|
214 | 220 |
|
215 | 221 |
RTN |
216 | 222 |
|
217 | 223 |
@set-cell ( x y -- ) |
218 | 224 |
|
219 | 225 |
DUP2 ,get-index JSR STH2 |
220 |
- POP MOD8 #01 SWP SFL |
|
226 |
+ POP 8MOD #01 SWP SFL |
|
221 | 227 |
LDAkr STHr SWP ORA |
222 | 228 |
STH2r STA |
223 | 229 |
|
... | ... |
@@ -227,8 +233,8 @@ RTN |
227 | 233 |
|
228 | 234 |
DUP2 ,get-index JSR LDA |
229 | 235 |
NIP SWP |
230 |
- MOD8 |
|
231 |
- SFT MOD2 |
|
236 |
+ 8MOD |
|
237 |
+ SFT 2MOD |
|
232 | 238 |
|
233 | 239 |
RTN |
234 | 240 |
|
... | ... |
@@ -236,12 +242,12 @@ RTN |
236 | 242 |
|
237 | 243 |
( -1,-1 ) DUP2 #01 - [ SWP #01 - SWP ] ,get-cell JSR STH |
238 | 244 |
( 0,-1 ) DUP2 #01 - ,get-cell JSR STH ADDr |
239 |
- ( +1,-1 ) DUP2 #01 - [ SWP #01 + SWP ] ,get-cell JSR STH ADDr |
|
245 |
+ ( +1,-1 ) DUP2 #01 - [ SWP INC SWP ] ,get-cell JSR STH ADDr |
|
240 | 246 |
( -1, 0 ) DUP2 [ SWP #01 - SWP ] ,get-cell JSR STH ADDr |
241 |
- ( +1, 0 ) DUP2 [ SWP #01 + SWP ] ,get-cell JSR STH ADDr |
|
242 |
- ( -1,+1 ) DUP2 #01 + [ SWP #01 - SWP ] ,get-cell JSR STH ADDr |
|
243 |
- ( 0,+1 ) DUP2 #01 + ,get-cell JSR STH ADDr |
|
244 |
- ( +1,+1 ) #01 + [ SWP #01 + SWP ] ,get-cell JSR STH ADDr |
|
247 |
+ ( +1, 0 ) DUP2 [ SWP INC SWP ] ,get-cell JSR STH ADDr |
|
248 |
+ ( -1,+1 ) DUP2 INC [ SWP #01 - SWP ] ,get-cell JSR STH ADDr |
|
249 |
+ ( 0,+1 ) DUP2 INC ,get-cell JSR STH ADDr |
|
250 |
+ ( +1,+1 ) INC [ SWP INC SWP ] ,get-cell JSR STH ADDr |
|
245 | 251 |
STHr |
246 | 252 |
|
247 | 253 |
RTN |