Browse code

General improvements to example files

Devine Lu Linvega authored on 31/05/2022 20:25:41
Showing 19 changed files
... ...
@@ -117,7 +117,7 @@ echo "Assembling(asma).."
117 117
 if [ $norun = 1 ]; then exit; fi
118 118
 
119 119
 echo "Assembling(piano).."
120
-bin/uxncli bin/asma.rom projects/examples/demos/piano.tal bin/piano.rom 2> bin/piano.log
120
+bin/uxncli bin/asma.rom projects/software/piano.tal bin/piano.rom 2> bin/piano.log
121 121
 
122 122
 echo "Running.."
123 123
 cd bin
... ...
@@ -130,11 +130,11 @@ JMP2r
130 130
 	#00 EQU ,&dead JCN
131 131
 		DUP #02 LTH ,&dies JCN
132 132
 		DUP #03 GTH ,&dies JCN
133
-		POP ,&save JSR JMP2r
133
+		POP ;&save JSR2 JMP2r
134 134
 		&dies POP POP2 JMP2r
135 135
 	&dead
136 136
 		DUP #03 EQU ,&birth JCN POP POP2 JMP2r
137
-		&birth POP ,&save JSR JMP2r
137
+		&birth POP ;&save JSR2
138 138
 
139 139
 JMP2r
140 140
 	&save ( x y -- ) 
... ...
@@ -54,7 +54,7 @@ BRK
54 54
 	#81 .Screen/sprite DEO
55 55
 	( eye/tail )
56 56
 	#00 ,draw-eye JSR
57
-	#00 ,draw-tail JSR
57
+	#00 ;draw-tail JSR2
58 58
 
59 59
 JMP2r
60 60
 
... ...
@@ -56,17 +56,17 @@ BRK
56 56
 	.frame/x0 LDZ2 #0010 ADD2 .Screen/x DEO2
57 57
 	.frame/y0 LDZ2 #0010 ADD2 .Screen/y DEO2
58 58
 	;controller-icn/dpad-up .Screen/addr DEO2
59
-	#03 [ STHkr #04 SFT #01 AND DUP ADD SUB ] .Screen/sprite DEO
59
+	#03  STHkr #04 SFT #01 AND DUP ADD SUB  .Screen/sprite DEO
60 60
 	.Screen/y DEI2 #0010 ADD2 .Screen/y DEO2
61 61
 	;controller-icn/dpad-down .Screen/addr DEO2
62
-	#03 [ STHkr #05 SFT #01 AND DUP ADD SUB ] .Screen/sprite DEO
62
+	#03  STHkr #05 SFT #01 AND DUP ADD SUB  .Screen/sprite DEO
63 63
 	.Screen/y DEI2 #0008 SUB2 .Screen/y DEO2
64 64
 	.Screen/x DEI2 #0008 SUB2 .Screen/x DEO2
65 65
 	;controller-icn/dpad-left .Screen/addr DEO2
66
-	#03 [ STHkr #06 SFT #01 AND DUP ADD SUB ] .Screen/sprite DEO
66
+	#03  STHkr #06 SFT #01 AND DUP ADD SUB  .Screen/sprite DEO
67 67
 	.Screen/x DEI2 #0010 ADD2 .Screen/x DEO2
68 68
 	;controller-icn/dpad-right .Screen/addr DEO2
69
-	#03 [ STHkr #07 SFT #01 AND DUP ADD SUB ] .Screen/sprite DEO
69
+	#03  STHkr #07 SFT #01 AND DUP ADD SUB  .Screen/sprite DEO
70 70
 	.Screen/x DEI2 #0008 SUB2 .Screen/x DEO2
71 71
 	;controller-icn/dpad .Screen/addr DEO2
72 72
 	#03 .Screen/sprite DEO
... ...
@@ -75,26 +75,26 @@ BRK
75 75
 	.center/y LDZ2 #0009 ADD2 .Screen/y DEO2
76 76
 	.center/x LDZ2 #0009 SUB2 .Screen/x DEO2
77 77
 	;controller-icn/option .Screen/addr DEO2
78
-	#03 [ STHkr #02 SFT #01 AND DUP ADD SUB ] .Screen/sprite DEO
78
+	#03 STHkr #02 SFT #01 AND DUP ADD SUB .Screen/sprite DEO
79 79
 	.center/x LDZ2 #0004 ADD2 .Screen/x DEO2
80 80
 	;controller-icn/option .Screen/addr DEO2
81
-	#03 [ STHkr #03 SFT #01 AND DUP ADD SUB ] .Screen/sprite DEO
81
+	#03 STHkr #03 SFT #01 AND DUP ADD SUB .Screen/sprite DEO
82 82
 
83 83
 	( buttons )
84 84
 	.center/y LDZ2 #0000 ADD2 .Screen/y DEO2
85 85
 	.center/x LDZ2 #0018 ADD2 .Screen/x DEO2
86 86
 	;controller-icn/button .Screen/addr DEO2
87
-	#03 [ STHkr #01 SFT #01 AND SUB ] .Screen/sprite DEO
87
+	#03 STHkr #01 SFT #01 AND SUB .Screen/sprite DEO
88 88
 		.Screen/y DEI2 #000a ADD2 .Screen/y DEO2
89
-		;font-hex #000b #30 SFT2 ADD2 .Screen/addr DEO2
89
+		;font-hex #0058 ADD2 .Screen/addr DEO2
90 90
 		#03 .Screen/sprite DEO
91 91
 
92 92
 	.center/y LDZ2 #0000 ADD2 .Screen/y DEO2
93 93
 	.center/x LDZ2 #0024 ADD2 .Screen/x DEO2
94 94
 	;controller-icn/button .Screen/addr DEO2
95
-	#03 [ STHr #01 AND SUB ] .Screen/sprite DEO
95
+	#03 STHr #01 AND SUB .Screen/sprite DEO
96 96
 		.Screen/y DEI2 #000a ADD2 .Screen/y DEO2
97
-		;font-hex #000a #30 SFT2 ADD2 .Screen/addr DEO2
97
+		;font-hex #0050 ADD2 .Screen/addr DEO2
98 98
 		#03 .Screen/sprite DEO
99 99
 
100 100
 	.center/x LDZ2 #0010 SUB2 .Screen/x DEO2
... ...
@@ -36,7 +36,7 @@ BRK
36 36
 	.Mouse/y DEI2 DUP2 .pointer/y STZ2 .Screen/y DEO2
37 37
 	#43 .Mouse/state DEI #00 NEQ DUP ADD SUB .Screen/sprite DEO
38 38
 	( on down )
39
-	.Mouse/state DEI #00 NEQ .pointer/state LDZ #00 EQU #0101 EQU2 ,on-mouse-down JCN
39
+	.Mouse/state DEI #00 NEQ .pointer/state LDZ #00 EQU AND ,on-mouse-down JCN
40 40
 	( on drag )
41 41
 	.Mouse/state DEI ,on-mouse-drag JCN
42 42
 	.Mouse/state DEI .pointer/state STZ
... ...
@@ -1,10 +1,5 @@
1 1
 ( GUI Hover )
2 2
 
3
-%RTN { JMP2r }
4
-%GTS2 { #8000 ADD2 SWP2 #8000 ADD2 LTH2 }
5
-
6
-( devices )
7
-
8 3
 |00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
9 4
 |20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
10 5
 |90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &wheel $1 ]
... ...
@@ -15,7 +10,6 @@
15 10
 
16 11
 @color $1
17 12
 @pointer [ &x $2 &y $2 &sprite $2 ]
18
-@rect [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
19 13
 @r1 [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
20 14
 @r2 [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
21 15
 @r3 [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
... ...
@@ -80,19 +74,19 @@ BRK
80 74
 @within-rect ( x* y* rect -- flag )
81 75
 	
82 76
 	STH
83
-	( y < rect.y1 ) DUP2 STHkr #02 ADD LDZ2 LTH2 ,&skip JCN
77
+	( y < rect.y1 ) DUP2 STHkr INC INC LDZ2 LTH2 ,&skip JCN
84 78
 	( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN
85 79
 	SWP2
86 80
 	( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN
87 81
 	( x > rect.x2 ) DUP2 STHkr #04 ADD LDZ2 GTH2 ,&skip JCN
88 82
 	POP2 POP2 POPr
89 83
 	#01 
90
-RTN
84
+JMP2r
91 85
 	&skip
92 86
 	POP2 POP2 POPr
93 87
 	#00
94 88
 
95
-RTN
89
+JMP2r
96 90
 
97 91
 @line-rect ( x1* y1* x2* y2* color -- )
98 92
 
... ...
@@ -119,7 +113,7 @@ RTN
119 113
 	POP2 POP2
120 114
 	POPr
121 115
 
122
-RTN
116
+JMP2r
123 117
 
124 118
 @pointer_icn [ 80c0 e0f0 f8e0 1000 ]
125 119
 @hand_icn    [ 4040 4070 f8f8 f870 ]
... ...
@@ -1,13 +1,4 @@
1
-( Draw a 8x8 font )
2
-
3
-%+  { ADD }  %-  { SUB }  %*  { MUL }  %/  { DIV }
4
-%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
5
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
6
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
7
-
8
-%AUTO-X      { #01 .Screen/auto DEO }
9
-
10
-( devices )
1
+( GUI Monospace )
11 2
 
12 3
 |00 @System     &vector $2 &wst      $1 &rst    $1 &eaddr  $2 &ecode  $1 &pad     $1 &r       $2 &g      $2 &b     $2 &debug  $1 &halt $1
13 4
 |20 @Screen     &vector $2 &width    $2 &height $2 &auto   $1 &pad    $1 &x       $2 &y       $2 &addr   $2 &pixel $1 &sprite $1
... ...
@@ -39,10 +30,10 @@ BRK
39 30
 
40 31
 @draw-uf1 ( string* color -- )
41 32
 
42
-	AUTO-X
33
+	#01 .Screen/auto DEO
43 34
 	STH
44 35
 	&while
45
-		( get sprite ) LDAk #20 - #00 SWP #30 SFT2 ;font ++ .Screen/addr DEO2
36
+		( get sprite ) LDAk #20 SUB #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2
46 37
 		( draw ) STHkr .Screen/sprite DEO
47 38
 		INC2 LDAk ,&while JCN
48 39
 	POPr
... ...
@@ -53,15 +44,15 @@ JMP2r
53 44
 @draw-uf1-linebreaks ( string* color -- )
54 45
 
55 46
 	.Screen/x DEI2 ,&anchor STR2
56
-	AUTO-X
47
+	#01 .Screen/auto DEO
57 48
 	STH
58 49
 	&while
59
-		LDAk #0a ! ,&no-lb JCN
50
+		LDAk #0a NEQ ,&no-lb JCN
60 51
 			( rewind ) LIT2 &anchor $2 .Screen/x DEO2
61
-			( skip line ) .Screen/y DEI2k #0008 ++ ROT DEO2
52
+			( skip line ) .Screen/y DEI2k #0008 ADD2 ROT DEO2
62 53
 			,&end JMP
63 54
 			&no-lb
64
-		( get sprite ) LDAk #20 - #00 SWP #30 SFT2 ;font ++ .Screen/addr DEO2
55
+		( get sprite ) LDAk #20 SUB #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2
65 56
 		( draw ) STHkr .Screen/sprite DEO
66 57
 		&end
67 58
 		INC2 LDAk ,&while JCN
... ...
@@ -1,15 +1,5 @@
1 1
 ( GUI Picture )
2 2
 
3
-%+  { ADD }  %-  { SUB }  %*  { MUL }  %/  { DIV }
4
-%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
5
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
6
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
7
-
8
-%AUTO-NONE   { #00 .Screen/auto DEO }
9
-%AUTO-XADDR  { #05 .Screen/auto DEO }
10
-
11
-( devices )
12
-
13 3
 |00 @System     &vector $2 &wst      $1 &rst    $1 &eaddr  $2 &ecode  $1 &pad     $1 &r       $2 &g      $2 &b     $2 &debug  $1 &halt $1
14 4
 |20 @Screen     &vector $2 &width    $2 &height $2 &auto   $1 &pad    $1 &x       $2 &y       $2 &addr   $2 &pixel $1 &sprite $1
15 5
 
... ...
@@ -38,7 +28,7 @@ BRK
38 28
 
39 29
 @draw-icn ( addr* width height color -- )
40 30
 
41
-	AUTO-XADDR
31
+	#05 .Screen/auto DEO
42 32
 	STH 
43 33
 	( set bounds ) ,&height STR ,&width STR .Screen/addr DEO2
44 34
 	( set origin ) .Screen/x DEI2 ,&x STR2
... ...
@@ -50,11 +40,11 @@ BRK
50 40
 			STHkr .Screen/sprite DEO
51 41
 			INC GTHk ,&hor JCN
52 42
 		POP2
53
-		.Screen/y DEI2k #0008 ++ ROT DEO2
43
+		.Screen/y DEI2k #0008 ADD2 ROT DEO2
54 44
 		INC GTHk ,&ver JCN
55 45
 	POP2
56 46
 	POPr
57
-	AUTO-NONE
47
+	#00 .Screen/auto DEO
58 48
 
59 49
 JMP2r
60 50
 
... ...
@@ -64,7 +54,7 @@ JMP2r
64 54
 
65 55
 	STH
66 56
 	.Screen/addr DEO2
67
-	SWP #01 - #40 SFT #06 + .Screen/auto DEO
57
+	SWP #01 SUB #40 SFT #06 ADD .Screen/auto DEO
68 58
 	#00
69 59
 	&loop
70 60
 		STHkr .Screen/sprite DEO
... ...
@@ -1,7 +1,5 @@
1 1
 ( GUI Shapes )
2 2
 
3
-%RTN { JMP2r }
4
-%8++  { #0008 ADD2 }
5 3
 %2** { #10 SFT2 }
6 4
 %4** { #20 SFT2 }
7 5
 %2// { #01 SFT2 }
... ...
@@ -10,10 +8,6 @@
10 8
 %LTS2  { #8000 ADD2 SWP2 #8000 ADD2 GTH2 }
11 9
 %GTS2  { #8000 ADD2 SWP2 #8000 ADD2 LTH2 }
12 10
 
13
-%SIZE-TO-RECT {
14
-	STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2
15
-} ( x y w h -- x1 y1 x2 y2 )
16
-
17 11
 %WIDTH { #0100 } %HEIGHT { #00a0 }
18 12
 
19 13
 ( devices )
... ...
@@ -46,17 +40,17 @@
46 40
 	.Screen/width DEI2 2// WIDTH 2// SUB2 #0008 ADD2
47 41
 	.Screen/height DEI2 2// HEIGHT 2// SUB2 #0008 ADD2
48 42
 	WIDTH HEIGHT
49
-	SIZE-TO-RECT #02 ;fill-rect JSR2
43
+	STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2 #02 ;fill-rect JSR2
50 44
 
51 45
 	.Screen/width DEI2 2// WIDTH 2// SUB2
52 46
 	.Screen/height DEI2 2// HEIGHT 2// SUB2
53 47
 	WIDTH HEIGHT
54
-	SIZE-TO-RECT #01 ;fill-rect JSR2
48
+	STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2 #01 ;fill-rect JSR2
55 49
 
56 50
 	.Screen/width DEI2 2// WIDTH 2// SUB2  #0008 ADD2
57 51
 	.Screen/height DEI2 2// HEIGHT 2// SUB2  #0008 ADD2
58 52
 	WIDTH #0010 SUB2 HEIGHT #0010 SUB2
59
-	SIZE-TO-RECT #03 ;line-rect JSR2
53
+	STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2 #03 ;line-rect JSR2
60 54
 
61 55
 	.Screen/width DEI2 2// .Screen/height DEI2 2// WIDTH 4// #02 ;draw-circle JSR2
62 56
 
... ...
@@ -89,7 +83,7 @@ BRK
89 83
 
90 84
 	&end
91 85
 
92
-RTN
86
+JMP2r
93 87
 
94 88
 @line-rect ( x1* y1* x2* y2* color -- )
95 89
 
... ...
@@ -116,7 +110,7 @@ RTN
116 110
 	POP2 POP2
117 111
 	POPr
118 112
 
119
-RTN
113
+JMP2r
120 114
 
121 115
 @fill-rect ( x1* y1* x2* y2* color -- )
122 116
 	
... ...
@@ -135,7 +129,7 @@ RTN
135 129
 		OVR2 OVR2 GTS2 ,&ver JCN
136 130
 	POP2 POP2 POP2 POP2
137 131
 
138
-RTN
132
+JMP2r
139 133
 	&color $1
140 134
 
141 135
 @draw-circle ( xc yc r color -- )
... ...
@@ -155,7 +149,7 @@ RTN
155 149
 		&end
156 150
 		( draw ) ;&seg JSR2
157 151
 		.circle/y LDZ2 .circle/x LDZ2 #0001 SUB2 GTS2 ,&loop JCN
158
-	RTN
152
+	JMP2r
159 153
 	&seg
160 154
 		.circle/xc LDZ2 .circle/x LDZ2 ADD2 .Screen/x DEO2 .circle/yc LDZ2 .circle/y LDZ2 ADD2 .Screen/y DEO2 .color LDZ .Screen/pixel DEO
161 155
 		.circle/xc LDZ2 .circle/x LDZ2 SUB2 .Screen/x DEO2 .circle/yc LDZ2 .circle/y LDZ2 ADD2 .Screen/y DEO2 .color LDZ .Screen/pixel DEO
... ...
@@ -166,7 +160,7 @@ RTN
166 160
 		.circle/xc LDZ2 .circle/y LDZ2 ADD2 .Screen/x DEO2 .circle/yc LDZ2 .circle/x LDZ2 SUB2 .Screen/y DEO2 .color LDZ .Screen/pixel DEO
167 161
 		.circle/xc LDZ2 .circle/y LDZ2 SUB2 .Screen/x DEO2 .circle/yc LDZ2 .circle/x LDZ2 SUB2 .Screen/y DEO2 .color LDZ .Screen/pixel DEO
168 162
 
169
-RTN
163
+JMP2r
170 164
 
171 165
 @cover-pattern ( addr* color -- )
172 166
 	
... ...
@@ -184,7 +178,7 @@ RTN
184 178
 	POP2 POP2
185 179
 	POPr
186 180
 
187
-RTN
181
+JMP2r
188 182
 
189 183
 @line-hor ( x0* x1* y* color -- )
190 184
 	
... ...
@@ -196,7 +190,7 @@ RTN
196 190
 		INC2 GTH2k ,&loop JCN
197 191
 	POP2 POP2 POPr
198 192
 
199
-RTN
193
+JMP2r
200 194
 
201 195
 @line-ver ( x* y0* y1* color -- )
202 196
 	
... ...
@@ -208,6 +202,6 @@ RTN
208 202
 		INC2 GTH2k ,&loop JCN
209 203
 	POP2 POP2 POPr
210 204
 
211
-RTN
205
+JMP2r
212 206
 
213 207
 @checker_icn [ f0f0 f0f0 0f0f 0f0f ]
... ...
@@ -1,9 +1,4 @@
1
-( gui/terminal )
2
-
3
-%+  { ADD }  %-  { SUB }  %*  { MUL }  %/  { DIV }
4
-%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
5
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
6
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
1
+( GUI Terminal )
7 2
 
8 3
 ( devices )
9 4
 
... ...
@@ -24,7 +19,7 @@
24 19
 	( theme ) 
25 20
 	#0f0f .System/r DEO2 
26 21
 	#0ff0 .System/g DEO2 
27
-	#00ff .System/b DEO2
22
+	#0fff .System/b DEO2
28 23
 
29 24
 	( vectors ) 
30 25
 	;on-button .Controller/vector DEO2
... ...
@@ -39,22 +34,22 @@ BRK
39 34
 @on-button ( -> )
40 35
 
41 36
 	.Controller/key DEI
42
-	DUP #00 ! ,&no-null JCN
37
+	DUP #00 NEQ ,&no-null JCN
43 38
 		POP BRK
44 39
 		&no-null
45
-	DUP #0d ! ,&no-enter JCN
40
+	DUP #0d NEQ ,&no-enter JCN
46 41
 		#00 ;draw-input JSR2
47 42
 		;validate JSR2
48 43
 		;buffer #0080 ;mclr JSR2
49 44
 		#01 ;draw-input JSR2
50 45
 		&no-enter
51
-	DUP #08 ! ,&no-backspace JCN
46
+	DUP #08 NEQ ,&no-backspace JCN
52 47
 		#00 ;draw-input JSR2
53 48
 		;buffer ;spop JSR2
54 49
 		#01 ;draw-input JSR2
55 50
 		&no-backspace
56
-	DUP STHk #1f > STHr #7b < #0101 !! ,&no-valid JCN
57
-	;buffer ;slen JSR2 #007f >> ,&no-valid JCN
51
+	DUP STHk #1f GTH STHr #7b LTH #0101 NEQ2 ,&no-valid JCN
52
+	;buffer ;slen JSR2 #007f GTH2 ,&no-valid JCN
58 53
 		STHk ;buffer STHr ;sput JSR2
59 54
 		#01 ;draw-input JSR2
60 55
 		&no-valid
... ...
@@ -65,7 +60,7 @@ BRK
65 60
 @validate ( -- )
66 61
 
67 62
 	#0010 .Screen/x DEO2
68
-	.Screen/height DEI2 #0040 -- .Screen/y DEO2
63
+	.Screen/height DEI2 #0040 SUB2 .Screen/y DEO2
69 64
 
70 65
 	( clear )
71 66
 	#8000
... ...
@@ -88,7 +83,7 @@ JMP2r
88 83
 
89 84
 	STH
90 85
 	#0010 .Screen/x DEO2
91
-	.Screen/height DEI2 #0020 -- .Screen/y DEO2
86
+	.Screen/height DEI2 #0020 SUB2 .Screen/y DEO2
92 87
 
93 88
 	( marker ) LIT '> #03 ;draw-char JSR2
94 89
 
... ...
@@ -110,10 +105,10 @@ JMP2r
110 105
 @draw-char ( char color -- )
111 106
 
112 107
 	SWP
113
-	[ #20 - #00 SWP #40 SFT2 ;font ++ ] .Screen/addr DEO2
108
+	[ #20 SUB #00 SWP #40 SFT2 ;font ADD2 ] .Screen/addr DEO2
114 109
 	.Screen/sprite DEOk DEO
115
-	.Screen/y DEI2 #0010 -- .Screen/y DEO2
116
-	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
110
+	.Screen/y DEI2 #0010 SUB2 .Screen/y DEO2
111
+	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
117 112
 
118 113
 JMP2r
119 114
 
... ...
@@ -121,13 +116,13 @@ JMP2r
121 116
 
122 117
 @slen ( str* -- len* )
123 118
 
124
-	DUP2 ,scap JSR SWP2 --
119
+	DUP2 ,scap JSR SWP2 SUB2
125 120
 
126 121
 JMP2r
127 122
 
128 123
 @scap ( str* -- str-end* )
129 124
 
130
-	( clamp ) LDAk #00 ! JMP JMP2r
125
+	( clamp ) LDAk #00 NEQ JMP JMP2r
131 126
 	&while INC2 LDAk ,&while JCN
132 127
 
133 128
 JMP2r
... ...
@@ -140,14 +135,14 @@ JMP2r
140 135
 
141 136
 @spop ( str* -- )
142 137
 
143
-	( clamp ) LDAk #00 ! JMP JMP2r
144
-	#00 ROT ROT ,scap JSR #0001 -- STA
138
+	( clamp ) LDAk #00 NEQ JMP JMP2r
139
+	#00 ROT ROT ,scap JSR #0001 SUB2 STA
145 140
 
146 141
 JMP2r
147 142
 
148 143
 @mclr ( addr* len* -- )
149 144
 
150
-	OVR2 ++ SWP2
145
+	OVR2 ADD2 SWP2
151 146
 	&loop
152 147
 		STH2k #00 STH2r STA
153 148
 		INC2 GTH2k ,&loop JCN
154 149
deleted file mode 100644
... ...
@@ -1,63 +0,0 @@
1
-( devices )
2
-
3
-|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
4
-|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
5
-
6
-( variables )
7
-
8
-|0000
9
-
10
-@scroll [ &x $2 &y $2 &wait $1 ]
11
-
12
-|0100 ( -> )
13
-	#90ff .System/r DEO2 #9000 .System/g DEO2 #900f .System/b DEO2
14
-	#08e0 .Screen/width DEI2 #01 SFT2 SUB2 .scroll/x STZ2
15
-	#09b0 .scroll/y STZ2
16
-	;frame .Screen/vector DEO2
17
-	#30 .scroll/wait STZ
18
-	BRK
19
-
20
-@frame ( -> )
21
-	#ffff
22
-	&loop
23
-	DUP2 ,row JSR
24
-	INC2
25
-	DUP2 .Screen/height DEI2 LTH2 ,&loop JCN
26
-	POP2
27
-	.scroll/wait LDZ ,&noscroll JCN
28
-	.scroll/y LDZ2 INC2 .scroll/y STZ2
29
-	BRK
30
-
31
-	&noscroll
32
-	.scroll/wait LDZ #01 SUB .scroll/wait STZ
33
-	BRK
34
-
35
-@row ( y* -- )
36
-	DUP2 .Screen/y DEO2
37
-	.scroll/y LDZ2 ADD2
38
-
39
-	.Screen/width DEI2
40
-	&loop
41
-	#0001 SUB2
42
-	OVR2 OVR2 .scroll/x LDZ2 ADD2 EOR2 DUP2 #0013 DIV2 #0013 MUL2 SUB2
43
-	DUP #00 EQU ,&draw JCN
44
-	DUP #05 EQU ,&draw JCN
45
-	POP2
46
-	&rest
47
-	DUP2 ORA ,&loop JCN
48
-	POP2 POP2
49
-	JMP2r
50
-
51
-	#15 .Screen/pixel DEO
52
-	JMP2r
53
-
54
-	&draw
55
-	OVR2 .Screen/x DEO2
56
-	#05 ADD .Screen/pixel DEO
57
-	.Screen/y DEI2
58
-	DUP2 INC2 .Screen/y DEO2
59
-	#00 .Screen/pixel DEO
60
-	.Screen/y DEO2
61
-	POP
62
-	,&rest JMP
63
-
... ...
@@ -545,7 +545,6 @@ JMP2r
545 545
 			&no-blank
546 546
 		DUP ,&zero STR
547 547
 		&padded #30 SFT #00 SWP ;font-hex ADD2
548
-	JMP2r
549 548
 
550 549
 JMP2r
551 550
 	&zero $1
... ...
@@ -1,4 +1,4 @@
1
-( Clock )
1
+( simple graphical clock )
2 2
 
3 3
 |00 @System     [ &vector $2 &pad      $6 &r      $2 &g     $2 &b      $2 ]
4 4
 |10 @Console    [ &vector $2 &read     $1 &pad    $5 &write $1 &error  $1 ]
... ...
@@ -25,7 +25,6 @@
25 25
 %MOD  { DIVk MUL SUB }
26 26
 %MOD2 { DIV2k MUL2 SUB2 }
27 27
 
28
-%AUTO-NONE   { #00 .Screen/auto DEO }
29 28
 %AUTO-X      { #01 .Screen/auto DEO }
30 29
 %AUTO-Y      { #02 .Screen/auto DEO }
31 30
 %AUTO-XY     { #03 .Screen/auto DEO }
... ...
@@ -127,7 +126,7 @@ BRK
127 126
 		.Screen/y DEI2k #0008 ++ ROT DEO2
128 127
 		INC GTHk ,&ver JCN
129 128
 	POP2
130
-	AUTO-NONE
129
+	#00 .Screen/auto DEO
131 130
 
132 131
 RTN
133 132
 	&blank-icn 8000 0000 0000 0000
134 133
deleted file mode 100644
... ...
@@ -1,31 +0,0 @@
1
-( hexes
2
-
3
-	A small utility that prints incoming console messages as hex values. )
4
-
5
-%RTN { JMP2r }
6
-
7
-|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 ]
8
-
9
-( init )
10
-
11
-|0100 ( -> )
12
-	
13
-	;on-message .Console/vector DEO2
14
-
15
-BRK
16
-
17
-@on-message ( -> )
18
-	
19
-	.Console/read DEI ,print-hex JSR
20
-
21
-BRK
22
-
23
-@print-hex ( value -- )
24
-	
25
-	STHk #04 SFT ,&parse JSR .Console/write DEO
26
-	STHr #0f AND ,&parse JSR .Console/write DEO
27
-	RTN
28
-	&parse ( value -- char )
29
-		DUP #09 GTH ,&above JCN #30 ADD RTN &above #09 SUB #60 ADD RTN
30
-
31
-RTN
... ...
@@ -1,30 +1,5 @@
1 1
 ( launcher )
2 2
 
3
-%2*  { #10 SFT } %2/  { #01 SFT } %2**  { #10 SFT2 } %2//  { #01 SFT2 }
4
-%4*  { #20 SFT } %4/  { #02 SFT } %4**  { #20 SFT2 } %4//  { #02 SFT2 }
5
-%8*  { #30 SFT } %8/  { #03 SFT } %8**  { #30 SFT2 } %8//  { #03 SFT2 }
6
-%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 }
7
-%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 }
8
-
9
-%40** { #60 SFT2 }
10
-
11
-%RTN { JMP2r }
12
-%TOS { #00 SWP }
13
-
14
-%AUTO-NONE   { #00 .Screen/auto DEO }
15
-%AUTO-XADDR  { #05 .Screen/auto DEO }
16
-%AUTO-YADDR  { #06 .Screen/auto DEO }
17
-
18
-%HALT   { #010f DEO }
19
-%EMIT   { #18 DEO }
20
-%PRINT  { ;print-str JSR2 #0a EMIT }
21
-%DEBUG  { ;print-hex/byte JSR2 #0a EMIT }
22
-%DEBUG2 { ;print-hex JSR2 #0a EMIT }
23
-
24
-%LINES-COUNT { .browser/y2 LDZ2 .browser/y LDZ2 SUB2 10// NIP }
25
-
26
-( devices )
27
-
28 3
 |00 @System     &vector $2 &wst      $1 &rst    $1 &pad    $4 &r      $2 &g      $2 &b    $2 &debug  $1 &halt $1
29 4
 |10 @Console    &vector $2 &read     $1 &pad    $5 &write  $1 &error  $1
30 5
 |20 @Screen     &vector $2 &width    $2 &height $2 &auto   $1 &pad $1 &x      $2 &y      $2 &addr $2 &pixel $1 &sprite $1
... ...
@@ -79,14 +54,14 @@
79 54
 	#0010 .browser/y STZ2
80 55
 	.Screen/height DEI2 #33 SFT2 #0011 SUB2 .browser/y2 STZ2
81 56
 
57
+	( theme support )
58
+	;load-theme JSR2
59
+
82 60
 	( draw mascot )
83 61
 	#0010 #0010 #0060 #0060 ;mascot-icn #01 ;draw-icn JSR2
84 62
 
85 63
 	;load-dir JSR2
86 64
 
87
-	( theme support )
88
-	;load-theme JSR2
89
-
90 65
 	( force selection )
91 66
 	#ff .browser/last STZ
92 67
 	#00 ;select-file JSR2
... ...
@@ -129,7 +104,7 @@ BRK
129 104
 	.Mouse/y DEI2 .browser/y2 LDZ2 #0010 SUB2 GTH2 ,&outside JCN
130 105
 	( select choice )
131 106
 	.Mouse/y DEI2 .browser/y LDZ2 SUB2
132
-		10// NIP .browser/scroll LDZ ADD ;select-file JSR2
107
+		#04 SFT2 NIP .browser/scroll LDZ ADD ;select-file JSR2
133 108
 	( run choice )
134 109
 	.Mouse/state DEI #00 EQU ,&no-click JCN
135 110
 		.browser/sel LDZ ;run-file JSR2
... ...
@@ -187,17 +162,17 @@ BRK
187 162
 		INC2 LDAk ,&while JCN
188 163
 	POP2
189 164
 
190
-RTN
165
+JMP2r
191 166
 
192 167
 @select-file ( id -- )
193 168
 
194 169
 	( has changed )
195 170
 	DUP .browser/last LDZ NEQ ,&has-changed JCN
196
-		POP RTN
171
+		POP JMP2r
197 172
 		&has-changed
198 173
 	( beyond )
199 174
 	DUP .browser/lines LDZ LTH ,&valid JCN
200
-		POP RTN
175
+		POP JMP2r
201 176
 		&valid
202 177
 
203 178
 	#00 ;draw-browser JSR2
... ...
@@ -208,23 +183,23 @@ RTN
208 183
 
209 184
 	( draw mascot )
210 185
 	#0010 #0010 #0060 #0060
211
-	;mascot-icn [ .browser/sel LDZ #03 AND TOS #0480 MUL2 ADD2 ] #01
186
+	;mascot-icn .browser/sel LDZ #03 AND #00 SWP #0480 MUL2 ADD2 #01
212 187
 		;draw-icn JSR2
213 188
 
214 189
 	( draw position )
215
-	AUTO-YADDR
190
+	#06 .Screen/auto DEO
216 191
 	#0010 .Screen/x DEO2
217 192
 	#0080 .Screen/y DEO2
218 193
 	.browser/sel LDZ #02 ;draw-byte JSR2
219 194
 	LIT '/ #02 ;draw-char JSR2
220 195
 	.browser/lines LDZ #01 SUB #02 ;draw-byte JSR2
221
-	AUTO-NONE
196
+	#00 .Screen/auto DEO
222 197
 
223
-RTN
198
+JMP2r
224 199
 
225 200
 @follow-selection ( -- )
226 201
 
227
-	LINES-COUNT .browser/sel LDZ .browser/scroll LDZ SUB
202
+	.browser/y2 LDZ2 .browser/y LDZ2 SUB2 #04 SFT2 NIP .browser/sel LDZ .browser/scroll LDZ SUB
228 203
 	DUP2 GTH ,&no-down JCN
229 204
 		.browser/scroll LDZ INC ,scroll-to JSR
230 205
 		&no-down
... ...
@@ -233,25 +208,25 @@ RTN
233 208
 		&no-up
234 209
 	POP2
235 210
 
236
-RTN
211
+JMP2r
237 212
 
238 213
 @scroll-to ( line -- )
239 214
 
240 215
 	STH
241 216
 	( more lines than visible )
242
-	.browser/lines LDZ LINES-COUNT
217
+	.browser/lines LDZ .browser/y2 LDZ2 .browser/y LDZ2 SUB2 #04 SFT2 NIP
243 218
 	DUP2 GTH ,&can-scroll JCN
244
-		POPr POP2 RTN
219
+		POPr POP2 JMP2r
245 220
 		&can-scroll
246 221
 	( less than max scroll )
247 222
 	SUB INC STHkr GTH ,&valid-scroll JCN
248
-		POPr RTN
223
+		POPr JMP2r
249 224
 		&valid-scroll
250 225
 	#00 ;draw-browser JSR2
251 226
 	STHr .browser/scroll STZ
252 227
 	#01 ;draw-browser JSR2
253 228
 
254
-RTN
229
+JMP2r
255 230
 
256 231
 @run-file ( id -- )
257 232
 
... ...
@@ -270,13 +245,13 @@ RTN
270 245
 			;&output-path ;asma-assemble-file JSR2
271 246
 			;load-dir JSR2
272 247
 			;redraw JSR2
273
-			RTN
248
+			JMP2r
274 249
 			&no-tal
275
-		POP2 RTN
250
+		POP2 JMP2r
276 251
 		&valid
277 252
 	;load-rom JSR2
278 253
 
279
-RTN
254
+JMP2r
280 255
 	&tal-ext ".tal $1
281 256
 	&rom-ext ".rom $1
282 257
 	&output-path $20
... ...
@@ -287,7 +262,7 @@ RTN
287 262
 	#ff .browser/last STZ
288 263
 	#00 ;select-file JSR2
289 264
 
290
-RTN
265
+JMP2r
291 266
 
292 267
 @draw-browser ( mask -- )
293 268
 
... ...
@@ -298,17 +273,17 @@ RTN
298 273
 
299 274
 	( draw hand )
300 275
 	.browser/x LDZ2 #0018 SUB2 .browser/y LDZ2
301
-	.browser/sel LDZ .browser/scroll LDZ SUB TOS 10** ADD2
276
+	.browser/sel LDZ .browser/scroll LDZ SUB #00 SWP #40 SFT2 ADD2
302 277
 	#0010 #0010
303
-		;hand-icn STHkr #02 MUL ;draw-icn JSR2
278
+		;hand-icn STHkr #10 SFT ;draw-icn JSR2
304 279
 	( draw files )
305
-	LINES-COUNT #00
280
+	.browser/y2 LDZ2 .browser/y LDZ2 SUB2 #04 SFT2 NIP #00
306 281
 	&loop
307 282
 		( reached end )
308
-		DUP INC .browser/lines LDZ GTH ,&end JCN
283
+		INCk .browser/lines LDZ GTH ,&end JCN
309 284
 		( has file )
310 285
 		.browser/x LDZ2 .Screen/x DEO2
311
-		#00 OVR 10** .browser/y LDZ2 ADD2 .Screen/y DEO2
286
+		#00 OVR #40 SFT2 .browser/y LDZ2 ADD2 .Screen/y DEO2
312 287
 		DUP .browser/scroll LDZ ADD ;get-entry JSR2
313 288
 			DUP2 ;get-type JSR2 ;draw-type JSR2
314 289
 			#01 STHkr MUL ;draw-str JSR2
... ...
@@ -318,7 +293,7 @@ RTN
318 293
 
319 294
 	POPr
320 295
 
321
-RTN
296
+JMP2r
322 297
 
323 298
 @draw-browser-empty ( mask -- )
324 299
 
... ...
@@ -327,14 +302,14 @@ RTN
327 302
 	.browser/y LDZ2 .Screen/y DEO2
328 303
 	;&empty-txt #01 ;draw-str JSR2
329 304
 
330
-RTN
305
+JMP2r
331 306
 	&empty-txt "Empty 20 "Folder $1
332 307
 
333 308
 @get-type ( line* -- type )
334 309
 
335 310
 	;scap JSR2 #0004 SUB2 ;&rom-ext ;scmp JSR2
336 311
 
337
-RTN
312
+JMP2r
338 313
 	&rom-ext ".rom $1
339 314
 
340 315
 @get-entry ( id -- addr* )
... ...
@@ -344,7 +319,7 @@ RTN
344 319
 	;dir/length LDA2 #0000
345 320
 	&loop
346 321
 		EQUkr STHr #00 EQU ,&no-reached JCN
347
-			POP2r NIP2 ;dir/data ADD2 RTN
322
+			POP2r NIP2 ;dir/data ADD2 JMP2r
348 323
 			&no-reached
349 324
 		DUP2 ;dir/data ADD2 LDA #00 NEQ ,&no-lb JCN
350 325
 			INCr
... ...
@@ -354,12 +329,12 @@ RTN
354 329
 	POP2r
355 330
 	;dir/data
356 331
 
357
-RTN
332
+JMP2r
358 333
 
359 334
 @draw-type ( type -- )
360 335
 
361
-	STHk TOS 20** ;file-icns ADD2 .Screen/addr DEO2
362
-	AUTO-XADDR
336
+	STHk #00 SWP #50 SFT2 ;file-icns ADD2 .Screen/addr DEO2
337
+	#05 .Screen/auto DEO
363 338
 	#02 STHkr SUB .Screen/sprite DEOk DEO
364 339
 
365 340
 	.Screen/x DEI2k #0010 SUB2 ROT DEO2
... ...
@@ -369,13 +344,13 @@ RTN
369 344
 
370 345
 	.Screen/x DEI2k #0008 ADD2 ROT DEO2
371 346
 	.Screen/y DEI2k #0008 SUB2 ROT DEO2
372
-	AUTO-NONE
347
+	#00 .Screen/auto DEO
373 348
 
374
-RTN
349
+JMP2r
375 350
 
376 351
 @draw-icn ( x* y* width* height* addr* color  -- )
377 352
 	
378
-	AUTO-XADDR
353
+	#05 .Screen/auto DEO
379 354
 	( load ) STH .Screen/addr DEO2 ,&height STR2 ,&width STR2 ,&y STR2 ,&x STR2
380 355
 	,&height LDR2 #0000
381 356
 	&ver
... ...
@@ -389,14 +364,14 @@ RTN
389 364
 		#0008 ADD2 GTH2k ,&ver JCN
390 365
 	POP2 POP2
391 366
 	POPr
392
-	AUTO-NONE
367
+	#00 .Screen/auto DEO
393 368
 
394
-RTN
369
+JMP2r
395 370
 	&x $2 &y $2 &width $2 &height $2
396 371
 
397 372
 @draw-str ( text* color -- )
398 373
 
399
-	AUTO-YADDR
374
+	#06 .Screen/auto DEO
400 375
 	STH
401 376
 	&while
402 377
 		LDAk STHkr ,draw-char JSR
... ...
@@ -404,14 +379,7 @@ RTN
404 379
 	POP2
405 380
 	POPr
406 381
 
407
-RTN
408
-
409
-@draw-short ( short* color -- )
410
-
411
-	STH SWP STHkr ,draw-byte JSR
412
-	STHr ,draw-byte JSR
413
-
414
-RTN
382
+JMP2r
415 383
 
416 384
 @draw-byte ( byte color -- )
417 385
 
... ...
@@ -419,17 +387,16 @@ RTN
419 387
 	DUP #04 SFT ,&parse JSR STHkr ,draw-char JSR
420 388
 	#0f AND ,&parse JSR STHr ,draw-char JSR
421 389
 
422
-RTN
390
+JMP2r
423 391
 	&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 ADD JMP2r
424 392
 	&above #57 ADD JMP2r
425 393
 
426 394
 @draw-char ( char color -- )
427 395
 
428 396
 	SWP
429
-	[ #20 SUB #00 SWP #40 SFT2 ;font ADD2 ] .Screen/addr DEO2
430
-	.Screen/sprite DEOk DEO
431
-	.Screen/x DEI2k #0008 ADD2 ROT DEO2
432
-	.Screen/y DEI2k #0010 SUB2 ROT DEO2
397
+	#15 .Screen/auto DEO
398
+	#20 SUB #00 SWP #40 SFT2 ;font ADD2 .Screen/addr DEO2
399
+	.Screen/sprite DEO
433 400
 
434 401
 JMP2r
435 402
 
... ...
@@ -448,52 +415,37 @@ JMP2r
448 415
 		#fffc LDA2 .System/g DEO2
449 416
 		#fffe LDA2 .System/b DEO2
450 417
 		&ignore
451
-	;redraw JSR2
452
-
453
-RTN
454
-
455
-( helpers )
456
-
457
-@print-str ( string* -- )
458
-
459
-	#0001 SUB2
460
-	&while
461
-		INC2 LDAk DUP #18 DEO ,&while JCN
462
-	POP2
463 418
 
464 419
 JMP2r
465 420
 
466
-@print-hex ( value* -- )
467
-
468
-	SWP ,&byte JSR
469
-	&byte ( byte -- )
470
-		STHk #04 SFT ,&parse JSR #18 DEO
471
-		STHr #0f AND ,&parse JSR #18 DEO
472
-	JMP2r
473
-	&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 ADD JMP2r
474
-	&above #57 ADD JMP2r
475
-
476
-JMP2r
421
+( helpers )
477 422
 
478 423
 @scmp ( a* b* -- flag )
479 424
 
480 425
 	STH2
481 426
 	&loop
482
-		LDAk LDAkr STHr EQU ,&not-diff JCN
483
-			POP2 POP2r #00 RTN
484
-			&not-diff
485
-		LDAk LDAkr STHr #0000 NEQ2 ,&not-end JCN
486
-			POP2 POP2r #01 RTN
427
+		LDAk LDAkr STHr NEQ ,&end JCN
428
+		LDAk LDAkr STHr ORA ,&not-end JCN
429
+			POP2 POP2r #01 JMP2r
487 430
 			&not-end
488
-		INC2 INC2r
489
-		,&loop JMP
431
+		INC2 INC2r ,&loop JMP
432
+	&end
490 433
 	POP2 POP2r #00
491 434
 
492
-RTN
435
+JMP2r
493 436
 
494 437
 @scat ( src* dst* -- )
495 438
 
496
-	DUP2 ,slen JSR ADD2 ,scpy JSR
439
+	DUP2 ,slen JSR ADD2
440
+
441
+@scpy ( src* dst* -- )
442
+
443
+	STH2
444
+	&while
445
+		LDAk STH2kr STA INC2r
446
+		INC2 LDAk ,&while JCN
447
+	POP2
448
+	#00 STH2r STA
497 449
 
498 450
 JMP2r
499 451
 
... ...
@@ -503,22 +455,10 @@ JMP2r
503 455
 
504 456
 JMP2r
505 457
 
506
-@scap ( str* -- end* )
507
-
508
-	LDAk #00 NEQ JMP JMP2r
509
-	&while
510
-		INC2 LDAk ,&while JCN
511
-
512
-JMP2r
458
+@scap ( str* -- str-end* )
513 459
 
514
-@scpy ( src* dst* -- )
515
-	
516
-	STH2
517
-	&while
518
-		LDAk STH2kr STA INC2r
519
-		INC2 LDAk ,&while JCN
520
-	POP2
521
-	#00 STH2r STA
460
+	( clamp ) LDAk #00 NEQ JMP JMP2r
461
+	&while INC2 LDAk ,&while JCN
522 462
 
523 463
 JMP2r
524 464
 
525 465
similarity index 100%
526 466
rename from projects/examples/demos/piano.tal
527 467
rename to projects/software/piano.tal
... ...
@@ -59,7 +59,7 @@ JMP2r
59 59
 
60 60
 @print ( short* -- )
61 61
 
62
-	&short ( short* -- ) SWP ,&byte JSR
62
+	SWP ,&byte JSR
63 63
 	&byte ( byte -- ) DUP #04 SFT ,&char JSR
64 64
 	&char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO
65 65
 
... ...
@@ -2,16 +2,6 @@
2 2
 	converts a binary file to a proquints, identifiers that are readable, and pronounceable.
3 3
 	usage: uxncli proquints.rom file.bin )
4 4
 
5
-%+  { ADD }  %-  { SUB }  %*  { MUL }  %/  { DIV }
6
-%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
7
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
8
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
9
-
10
-%HALT   { #010f DEO }
11
-%EMIT   { #18 DEO }
12
-%PRINT  { ;print-str JSR2 #0a EMIT }
13
-%DEBUG  { ;print-hex/byte JSR2 #0a EMIT }
14
-%DEBUG2 { ;print-hex JSR2 #0a EMIT }
15 5
 
16 6
 ( devices )
17 7
 
... ...
@@ -39,13 +29,13 @@ BRK
39 29
 		#01 ,&trap STR
40 30
 		&started
41 31
 	( append )
42
-	.Console/read DEI #20 < ,&validate JCN
43
-	;src ;slen JSR2 #0030 == ,&validate JCN
32
+	.Console/read DEI #20 LTH ,&validate JCN
33
+	;src ;slen JSR2 #0030 EQU2 ,&validate JCN
44 34
 		;src .Console/read DEI ;sput JSR2 BRK
45 35
 		&validate
46 36
 	( load )
47 37
 	;src .File/name DEO2
48
-	#fff0 ;data -- .File/length DEO2
38
+	#fff0 ;data SUB2 .File/length DEO2
49 39
 	;data .File/read DEO2
50 40
 	( save length )
51 41
 	.File/success DEI2 .length STZ2
... ...
@@ -56,12 +46,12 @@ BRK
56 46
 
57 47
 @parse ( -- )
58 48
 	
59
-	.length LDZ2 ;data ++ ;data
49
+	.length LDZ2 ;data ADD2 ;data
60 50
 	&loop
61 51
 		LDA2k ,proquint JSR
62 52
 		INC2 INC2 GTH2k ,&loop JCN
63 53
 	POP2 POP2
64
-	HALT
54
+	#010f DEO
65 55
 
66 56
 JMP2r
67 57
 
... ...
@@ -72,23 +62,23 @@ JMP2r
72 62
 	( c2 ) DUP2 #06 ,&emit-con JSR
73 63
 	( v2 ) DUP2 #03 ,&emit-vow JSR
74 64
 	( c3 ) #00 ,&emit-con JSR
75
-	#20 EMIT
65
+	#2018 DEO
76 66
 
77 67
 JMP2r
78
-	&emit-con SFT2 #000f AND2 ;&con ADD2 LDA EMIT JMP2r
68
+	&emit-con SFT2 #000f AND2 ;&con ADD2 LDA #18 DEO JMP2r
79 69
 	&con "bdfghjklmnprstvz 
80
-	&emit-vow SFT2 #0003 AND2 ;&vow ADD2 LDA EMIT JMP2r
70
+	&emit-vow SFT2 #0003 AND2 ;&vow ADD2 LDA #18 DEO JMP2r
81 71
 	&vow "aiou 
82 72
 
83 73
 @slen ( str* -- len* )
84 74
 
85
-	DUP2 ,scap JSR SWP2 --
75
+	DUP2 ,scap JSR SWP2 SUB2
86 76
 
87 77
 JMP2r
88 78
 
89 79
 @scap ( str* -- end* )
90 80
 
91
-	LDAk #00 ! JMP JMP2r
81
+	LDAk #00 NEQ JMP JMP2r
92 82
 	&while 
93 83
 		INC2 LDAk ,&while JCN
94 84
 
... ...
@@ -102,7 +92,7 @@ JMP2r
102 92
 
103 93
 @mclr ( addr* len* -- )
104 94
 
105
-	OVR2 ++ SWP2
95
+	OVR2 ADD2 SWP2
106 96
 	&loop
107 97
 		STH2k #00 STH2r STA
108 98
 		INC2 GTH2k ,&loop JCN