1 | 1 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,45 @@ |
1 |
+ |
|
2 |
+( uxnasm subleq.tal subleq.rom && uxncli subleq.rom ) |
|
3 |
+ |
|
4 |
+%EMIT { #18 DEO } |
|
5 |
+%HALT { #0101 #0e DEO2 } |
|
6 |
+%RTN { JMP2r } |
|
7 |
+%GET { #10 SFT2 ;program ADD2 LDA2 } |
|
8 |
+%SET { #10 SFT2 ;program ADD2 STA2 } |
|
9 |
+ |
|
10 |
+|0000 @a $2 @b $2 @c $2 |
|
11 |
+|0100 |
|
12 |
+ |
|
13 |
+ ( pointer ) #0000 |
|
14 |
+ &while |
|
15 |
+ ,eval JSR |
|
16 |
+ DUP2 #8000 LTH2 ,&while JCN |
|
17 |
+ POP2 |
|
18 |
+ HALT |
|
19 |
+ |
|
20 |
+BRK |
|
21 |
+ |
|
22 |
+@eval ( ip* -- ip* ) |
|
23 |
+ |
|
24 |
+ DUP2 GET .a STZ2 |
|
25 |
+ INC2 DUP2 GET .b STZ2 |
|
26 |
+ INC2 DUP2 GET .c STZ2 |
|
27 |
+ INC2 |
|
28 |
+ ( I/O ) |
|
29 |
+ .a LDZ2 #ffff NEQ2 ,&noin JCN |
|
30 |
+ ( nothing. ) ,&end JMP2 &noin |
|
31 |
+ .b LDZ2 #ffff NEQ2 ,&noout JCN |
|
32 |
+ .a LDZ2 GET NIP EMIT ,&end JMP &noout |
|
33 |
+ ( SUBLEQ ) |
|
34 |
+ .b LDZ2 GET .a LDZ2 GET SUB2 .b LDZ2 SET |
|
35 |
+ ( SET ) |
|
36 |
+ .b LDZ2 GET #0001 SUB2 #8000 LTH2 ,&end JCN |
|
37 |
+ POP2 .c LDZ2 &end |
|
38 |
+ |
|
39 |
+RTN |
|
40 |
+ |
|
41 |
+@program ( hello world ) |
|
42 |
+ 000f 0011 ffff 0011 ffff ffff 0010 0001 |
|
43 |
+ ffff 0010 0003 ffff 000f 000f 0000 0000 |
|
44 |
+ ffff 0048 0065 006c 006c 006f 002c 0020 |
|
45 |
+ 0077 006f 0072 006c 0064 0021 000a 0000 |