Browse code

Jump experiments

neauoire authored on 11/03/2021 20:19:59
Showing 11 changed files
... ...
@@ -29,11 +29,11 @@ evaluxn(u, u->vframe); /* Each frame
29 29
 - `;variable 2`, assign an address to a label automatically.
30 30
 - `:const 1a2b`, assign an address to a label manually.
31 31
 - `&macro { x 2 y 2 }`, define a macro named `macro`.
32
+- `.address`, push label address to memory.
33
+- `,literal`, push label address to stack, prefixed with `LIT LEN`.
32 34
 - `#1a`, a literal byte/short.
33 35
 - `+1a`, a literal signed byte/short.
34 36
 - `-1a`, a literal signed byte/short(negative).
35
-- `.ab`, a raw byte/short in memory.
36
-- `,literal`, push label address to stack, prefixed with `LIT LEN`.
37 37
 - `=label`, helper to STR, equivalent to `,label STR`, or `label STR2`.
38 38
 - `~label`, helper to LDR, equivalent to `,label LDR2`, or `,label LDR2`.
39 39
 - `|0010`, move to position in the program.
... ...
@@ -55,30 +55,30 @@ evaluxn(u, u->vframe); /* Each frame
55 55
 
56 56
 |0100 @RESET 
57 57
 	
58
-	,text1 ,print-label JSR
59
-	,text2 ,print-label JSR
60
-	#ab =dev/console.byte
61
-	#cdef =dev/console.short
58
+	,text1 ,print-label JSR2
59
+	,text2 ,print-label JSR2
60
+	#ab =CNSL.byte
61
+	#cdef =CNSL.short
62 62
 
63 63
 BRK
64 64
 
65 65
 @print-label ( text )
66
-
67
-	@print-label-loop
68
-		DUP2 LDR =dev/console.char               ( write pointer value to console )
69
-		#0001 ADD2                               ( increment string pointer )
70
-		DUP2 LDR #00 NEQ ,print-label-loop ROT JMP? POP2  ( while *ptr!=0 goto loop )
66
+	
67
+	@print-label-loop NOP
68
+		( send ) DUP2 LDR =CNSL.char
69
+		( incr ) #0001 ADD2
70
+		DUP2 LDR #00 NEQ ^print-label-loop MUL JMPS 
71 71
 	POP2
72 72
 
73 73
 RTS                 
74 74
 
75
-@text1 [ Hello World 0a00 ] ( store text with a linebreak and null byte )
76
-@text2 [ Welcome to UxnVM 0a00 ]
75
+@text1 [ Hello 20 World 0a00 ] ( store text with a linebreak and null byte )
76
+@text2 [ Welcome 20 to 20 UxnVM 0a00 ]
77 77
 
78 78
 |c000 @FRAME
79 79
 |d000 @ERROR 
80 80
 
81
-|FF00 ;dev/console Console
81
+|FF00 ;CNSL Console
82 82
 
83 83
 |FFF0 .RESET .FRAME .ERROR ( vectors )
84 84
 |FFF8 [ 13fd 1ef3 1bf2 ] ( palette )
... ...
@@ -99,6 +99,16 @@ RTS
99 99
 - Local loops
100 100
 - Jump helpers
101 101
 
102
+NOTE: OPCODES should not be relative, but there should be a relative accessor for addresses, like:
103
+
104
+$relative_name JMP
105
+
106
+## Notes
107
+
108
+### Conditional Jumping
109
+
110
+I've considered automatically popping an amount of items from the stack equal to the offset between the opcode's push/pop to make the stack length more predictable, and making the pattern JMP? POP2 unecessary, but that idea would make DUP? unusable. That change was reverted.
111
+
102 112
 ## Palettes
103 113
 
104 114
 - `[ 6a03 4a0d aa0c ]`, purple/cyan
... ...
@@ -184,7 +184,7 @@ makemacro(char *name, FILE *f)
184 184
 	char wv[64];
185 185
 	if(findmacro(name))
186 186
 		return error("Macro duplicate", name);
187
-	if(sihx(name))
187
+	if(sihx(name) && slen(name) % 2 == 0)
188 188
 		return error("Macro name is hex number", name);
189 189
 	if(findopcode(name))
190 190
 		return error("Macro name is invalid", name);
... ...
@@ -214,7 +214,7 @@ makelabel(char *name, Uint16 addr, Uint8 len, Macro *m)
214 214
 	Label *l;
215 215
 	if(findlabel(name))
216 216
 		return error("Label duplicate", name);
217
-	if(sihx(name))
217
+	if(sihx(name) && slen(name) % 2 == 0)
218 218
 		return error("Label name is hex number", name);
219 219
 	if(findopcode(name))
220 220
 		return error("Label name is invalid", name);
... ...
@@ -309,9 +309,10 @@ pass1(FILE *f)
309 309
 			case '=': addr += 4; break; /* STR helper (lit addr-hb addr-lb str) */
310 310
 			case '~': addr += 4; break; /* LDR helper (lit addr-hb addr-lb ldr) */
311 311
 			case ',': addr += 3; break;
312
-			case '.': addr += (slen(w + 1) == 2 ? 1 : 2); break;
313
-			case '+': /* signed positive */
314
-			case '-': /* signed negative */
312
+			case '.': addr += 2; break;
313
+			case '^': addr += 2; break; /* Relative jump: lit addr-offset */
314
+			case '+':                   /* signed positive */
315
+			case '-':                   /* signed negative */
315 316
 			case '#': addr += (slen(w + 1) == 2 ? 2 : 3); break;
316 317
 			default: return error("Unknown label in first pass", w);
317 318
 			}
... ...
@@ -343,21 +344,24 @@ pass2(FILE *f)
343 344
 		}
344 345
 		else if(w[0] == '|') p.ptr = shex(w + 1);
345 346
 		else if((op = findopcode(w)) || scmp(w, "BRK", 4)) pushbyte(op, 0);
347
+		else if(w[0] == '^' && (l = findlabel(w + 1))) { 
348
+			int off = l->addr - p.ptr - 3;
349
+			if(off < -126 || off > 126){ printf("Address %s is too far(%d).\n", w, off); return 0; } 
350
+			printf("relative %s[%d]\n", w, l->addr - p.ptr - 4);
351
+			pushbyte((Sint8)(l->addr - p.ptr - 3), 1); l->refs++; 
352
+		}
346 353
 		else if(w[0] == ':') fscanf(f, "%s", w);
347 354
 		else if(w[0] == ';') fscanf(f, "%s", w);
348
-		else if(w[0] == '.' && sihx(w + 1) && slen(w + 1) == 2) pushbyte(shex(w + 1), 0);
349
-		else if(w[0] == '.' && sihx(w + 1) && slen(w + 1) == 4) pushshort(shex(w + 1), 0);
355
+		else if(w[0] == '.' && (l = findlabel(w + 1))) { pushshort(findlabeladdr(w + 1), 0); l->refs++; }
356
+		else if(w[0] == ',' && (l = findlabel(w + 1))) { pushshort(findlabeladdr(w + 1), 1); l->refs++; }
357
+		else if(w[0] == '=' && (l = findlabel(w + 1)) && l->len){ pushshort(findlabeladdr(w + 1), 1); pushbyte(findopcode(findlabellen(w+1) == 2 ? "STR2" : "STR"), 0); l->refs++;}
358
+		else if(w[0] == '~' && (l = findlabel(w + 1)) && l->len){ pushshort(findlabeladdr(w + 1), 1); pushbyte(findopcode(findlabellen(w+1) == 2 ? "LDR2" : "LDR"), 0); l->refs++;}
350 359
 		else if(w[0] == '#' && sihx(w + 1) && slen(w + 1) == 2) pushbyte(shex(w + 1), 1); 
351 360
 		else if(w[0] == '#' && sihx(w + 1) && slen(w + 1) == 4) pushshort(shex(w + 1), 1);
352 361
 		else if(w[0] == '+' && sihx(w + 1) && slen(w + 1) == 2) pushbyte((Sint8)shex(w + 1), 1);
353 362
 		else if(w[0] == '+' && sihx(w + 1) && slen(w + 1) == 4) pushshort((Sint16)shex(w + 1), 1);
354 363
 		else if(w[0] == '-' && sihx(w + 1) && slen(w + 1) == 2) pushbyte((Sint8)(shex(w + 1) * -1), 1);
355 364
 		else if(w[0] == '-' && sihx(w + 1) && slen(w + 1) == 4) pushshort((Sint16)(shex(w + 1) * -1), 1);
356
-		else if(w[0] == '=' && (l = findlabel(w + 1)) && l->len){ pushshort(findlabeladdr(w+1), 1); pushbyte(findopcode(findlabellen(w+1) == 2 ? "STR2" : "STR"), 0); l->refs++;}
357
-		else if(w[0] == '~' && (l = findlabel(w + 1)) && l->len){ pushshort(findlabeladdr(w+1), 1); pushbyte(findopcode(findlabellen(w+1) == 2 ? "LDR2" : "LDR"), 0); l->refs++;}
358
-		else if(w[0] == '=' && sihx(w + 1)) { pushshort(shex(w + 1), 1); pushbyte(findopcode("STR2"), 0); }
359
-		else if(w[0] == '~' && sihx(w + 1)) { pushshort(shex(w + 1), 1); pushbyte(findopcode("LDR2"), 0); }
360
-		else if((l = findlabel(w + 1))) { pushshort(findlabeladdr(w+1), w[0] == ','); l->refs++; }
361 365
 		else return error("Unknown label in second pass", w);
362 366
 		/* clang-format on */
363 367
 	}
... ...
@@ -20,5 +20,5 @@ cc -std=c89 -DDEBUG -Wall -Wno-unknown-pragmas -Wpedantic -Wshadow -Wextra -Werr
20 20
 # cc uxn.c emulator.c -std=c89 -Os -DNDEBUG -g0 -s -Wall -Wno-unknown-pragmas -L/usr/local/lib -lSDL2 -o bin/emulator
21 21
 
22 22
 # run
23
-./bin/assembler projects/software/nasu.usm bin/boot.rom
23
+./bin/assembler projects/software/left.usm bin/boot.rom
24 24
 ./bin/emulator bin/boot.rom
... ...
@@ -310,8 +310,10 @@ doctrl(Uxn *u, SDL_Event *event, int z)
310 310
 {
311 311
 	Uint8 flag = 0x00;
312 312
 	Uint16 addr = devctrl->addr;
313
-	if(z && event->key.keysym.sym == SDLK_h && SDL_GetModState() & KMOD_LCTRL)
313
+	if(z && event->key.keysym.sym == SDLK_h && SDL_GetModState() & KMOD_LCTRL) {
314 314
 		GUIDES = !GUIDES;
315
+		redraw(pixels, u);
316
+	}
315 317
 	switch(event->key.keysym.sym) {
316 318
 	case SDLK_LCTRL: flag = 0x01; break;
317 319
 	case SDLK_LALT: flag = 0x02; break;
... ...
@@ -45,16 +45,15 @@ contexts:
45 45
     - match: '\,(\S+)\s?'
46 46
       scope: keyword.control
47 47
       pop: true
48
-    - match: '\#(\S+)\s?'
48
+    - match: '\.(\S+)\s?'
49 49
       scope: keyword.control
50 50
       pop: true
51
-    - match: '\.(\S+)\s?'
51
+    - match: '\^(\S+)\s?'
52
+      scope: keyword.control
53
+      pop: true
54
+    - match: '\#(\S+)\s?'
52 55
       scope: keyword.control
53
-    - match: '\+(\S+)\s?'
54
-      scope: string.control
55 56
       pop: true
56
-    - match: '\-(\S+)\s?'
57
-      scope: string.control
58 57
 
59 58
       # Blocks
60 59
 
... ...
@@ -6,17 +6,17 @@
6 6
 	
7 7
 	,text1 ,print-label JSR2
8 8
 	,text2 ,print-label JSR2
9
-	#ab =dev/console.byte
10
-	#cdef =dev/console.short
9
+	#ab =CNSL.byte
10
+	#cdef =CNSL.short
11 11
 
12 12
 BRK
13 13
 
14 14
 @print-label ( text )
15
-
16
-	@print-label-loop
17
-		DUP2 LDR =dev/console.char               ( write pointer value to console )
18
-		#0001 ADD2                               ( increment string pointer )
19
-		DUP2 LDR #00 NEQ ,print-label-loop ROT JMP2? POP2  ( while *ptr!=0 goto loop )
15
+	
16
+	@print-label-loop NOP
17
+		( send ) DUP2 LDR =CNSL.char
18
+		( incr ) #0001 ADD2
19
+		DUP2 LDR #00 NEQ ^print-label-loop MUL JMPS 
20 20
 	POP2
21 21
 
22 22
 RTS                 
... ...
@@ -27,7 +27,7 @@ RTS
27 27
 |c000 @FRAME
28 28
 |d000 @ERROR 
29 29
 
30
-|FF00 ;dev/console Console
30
+|FF00 ;CNSL Console
31 31
 
32 32
 |FFF0 .RESET .FRAME .ERROR ( vectors )
33 33
 |FFF8 [ 13fd 1ef3 1bf2 ] ( palette )
34 34
\ No newline at end of file
... ...
@@ -45,7 +45,7 @@
45 45
 	,filepath ,load-file JSR2
46 46
 
47 47
 	( place textarea )
48
-	#0018 =textarea.x1 ~dev/screen.height #0008 SUB2 =textarea.y2
48
+	#0018 =textarea.x1 ~SCRN.height #0008 SUB2 =textarea.y2
49 49
 
50 50
 	,select JSR2
51 51
 	,redraw JSR2
... ...
@@ -56,62 +56,62 @@ BRK
56 56
 
57 57
 	( ctrl )
58 58
 
59
-	,ctrl-end ~dev/ctrl #00 EQU ~lock #00 NEQ #0000 NEQ2 JMP2? POP2
59
+	,ctrl-end ~CTRL #00 EQU ~lock #00 NEQ #0000 NEQ2 JMP2? POP2
60 60
 		( lock ) #04 =lock
61
-		,no-ctrl-up ~dev/ctrl #10 NEQ JMP2? POP2
61
+		,no-ctrl-up ~CTRL #10 NEQ JMP2? POP2
62 62
 			( clamp ) ,no-ctrl-up ~position.y #0000 EQU2 JMP2? POP2
63 63
 			,find-lineoffset JSR2 =position.x 
64 64
 			~position.y #0001 SUB2 =position.y 
65 65
 			,find-selection JSR2 DUP2 =selection.from #0001 ADD2 =selection.to
66 66
 			,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2
67 67
 		@no-ctrl-up
68
-		,no-ctrl-down ~dev/ctrl #20 NEQ JMP2? POP2
68
+		,no-ctrl-down ~CTRL #20 NEQ JMP2? POP2
69 69
 			,find-lineoffset JSR2 =position.x ~position.y #0001 ADD2 =position.y 
70 70
 			,find-selection JSR2 DUP2 =selection.from #0001 ADD2 =selection.to
71 71
 			,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2
72 72
 		@no-ctrl-down
73
-		,no-ctrl-left ~dev/ctrl #40 NEQ JMP2? POP2
73
+		,no-ctrl-left ~CTRL #40 NEQ JMP2? POP2
74 74
 			( clamp ) ,no-ctrl-left ~selection.from ,document.body EQU2 JMP2? POP2
75 75
 			~selection.from #0001 SUB2 DUP2 =selection.from #0001 ADD2 =selection.to
76 76
 			,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2
77 77
 		@no-ctrl-left
78
-		,no-ctrl-right ~dev/ctrl #80 NEQ JMP2? POP2
78
+		,no-ctrl-right ~CTRL #80 NEQ JMP2? POP2
79 79
 			~selection.from #0001 ADD2 DUP2 =selection.from #0001 ADD2 =selection.to
80 80
 			,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2
81 81
 		@no-ctrl-right
82 82
 		( alt )
83
-		,no-alt ~dev/ctrl #0f AND #02 NEQ JMP2? POP2
84
-			,no-aup ~dev/ctrl #04 ROR #01 NEQ JMP2? POP2
83
+		,no-alt ~CTRL #0f AND #02 NEQ JMP2? POP2
84
+			,no-aup ~CTRL #04 ROR #01 NEQ JMP2? POP2
85 85
 				,find-wordstart JSR2 =selection.to
86 86
 				,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2
87 87
 			@no-aup
88
-			,no-adown ~dev/ctrl #04 ROR #02 NEQ JMP2? POP2
88
+			,no-adown ~CTRL #04 ROR #02 NEQ JMP2? POP2
89 89
 				,find-wordend JSR2 =selection.to
90 90
 				,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2
91 91
 			@no-adown
92
-			,no-aleft ~dev/ctrl #04 ROR #04 NEQ JMP2? POP2
92
+			,no-aleft ~CTRL #04 ROR #04 NEQ JMP2? POP2
93 93
 				~selection.to #0001 SUB2 =selection.to
94 94
 				,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2
95 95
 			@no-aleft
96
-			,no-aright ~dev/ctrl #04 ROR #08 NEQ JMP2? POP2
96
+			,no-aright ~CTRL #04 ROR #08 NEQ JMP2? POP2
97 97
 				~selection.to #0001 ADD2 =selection.to
98 98
 				,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2
99 99
 			@no-aright
100 100
 		@no-alt
101 101
 		( ctrl )
102
-		,no-ctrl ~dev/ctrl #0f AND #01 NEQ JMP2? POP2
103
-			,no-cup ~dev/ctrl #04 ROR #01 NEQ JMP2? POP2
102
+		,no-ctrl ~CTRL #0f AND #01 NEQ JMP2? POP2
103
+			,no-cup ~CTRL #04 ROR #01 NEQ JMP2? POP2
104 104
 				~scroll.y #0004 SUB2 =scroll.y
105 105
 				,redraw JSR2 ,ctrl-end JMP2
106 106
 			@no-cup
107
-			,no-cdown ~dev/ctrl #04 ROR #02 NEQ JMP2? POP2
107
+			,no-cdown ~CTRL #04 ROR #02 NEQ JMP2? POP2
108 108
 				~scroll.y #0004 ADD2 =scroll.y
109 109
 				,redraw JSR2 ,ctrl-end JMP2
110 110
 			@no-cdown
111
-			,no-cleft ~dev/ctrl #04 ROR #04 NEQ JMP2? POP2
111
+			,no-cleft ~CTRL #04 ROR #04 NEQ JMP2? POP2
112 112
 				,goto-linestart JSR2 ,redraw JSR2 ,ctrl-end JMP2
113 113
 			@no-cleft
114
-			,no-cright ~dev/ctrl #04 ROR #08 NEQ JMP2? POP2
114
+			,no-cright ~CTRL #04 ROR #08 NEQ JMP2? POP2
115 115
 				,goto-lineend JSR2 ,redraw JSR2 ,ctrl-end JMP2
116 116
 			@no-cright
117 117
 		@no-ctrl
... ...
@@ -120,39 +120,39 @@ BRK
120 120
 
121 121
 	( keys )
122 122
 
123
-	,keys-end ~dev/key #00 EQU JMP2? POP2
123
+	,keys-end ~KEYS #00 EQU JMP2? POP2
124 124
 
125
-		,no-backspace ~dev/key #08 NEQ JMP2? POP2
125
+		,no-backspace ~KEYS #08 NEQ JMP2? POP2
126 126
 			( erase )
127 127
 			~selection.to ~selection.from SUB2 ,shift-left JSR2
128 128
 			~selection.from #0001 SUB2 =selection.from
129 129
 			~selection.from #0001 ADD2 =selection.to
130
-			( release ) #00 =dev/key
130
+			( release ) #00 =KEYS
131 131
 			,redraw JSR2
132 132
 			,keys-end JMP2
133 133
 		@no-backspace
134 134
 
135 135
 		( insert )
136 136
 		~selection.to ~selection.from SUB2 ,shift-right JSR2
137
-		~dev/key ~selection.from STR
137
+		~KEYS ~selection.from STR
138 138
 		~selection.from #0001 ADD2 =selection.from
139 139
 		~selection.from #0001 ADD2 =selection.to
140
-		( release ) #00 =dev/key
140
+		( release ) #00 =KEYS
141 141
 		,redraw JSR2
142 142
 
143 143
 	@keys-end
144 144
 
145 145
 	( mouse )
146 146
 
147
-	,touch-end ~dev/mouse.state #00 EQU JMP2? POP2
147
+	,touch-end ~MOUS.state #00 EQU JMP2? POP2
148 148
 
149
-		,touch-linebar ~dev/mouse.x #0010 LTH2 JMP2? POP2
150
-		,touch-body ~dev/mouse.x ~dev/screen.width #0008 SUB2 LTH2 JMP2? POP2
149
+		,touch-linebar ~MOUS.x #0010 LTH2 JMP2? POP2
150
+		,touch-body ~MOUS.x ~SCRN.width #0008 SUB2 LTH2 JMP2? POP2
151 151
 		,touch-scrollbar JMP2
152 152
 
153 153
 	@touch-end
154 154
 
155
-	~dev/mouse.state =touch.state
155
+	~MOUS.state =touch.state
156 156
 
157 157
 	( unlock ) ,skip-unlock ~lock #00 EQU JMP2? POP2 ~lock #01 SUB =lock @skip-unlock
158 158
 
... ...
@@ -162,15 +162,15 @@ BRK
162 162
 
163 163
 @touch-scrollbar
164 164
 
165
-	,no-click-scroll-up ~dev/mouse.y #0008 GTH2 JMP2? POP2
165
+	,no-click-scroll-up ~MOUS.y #0008 GTH2 JMP2? POP2
166 166
 		( decr ) ~scroll.y #00 ~scroll.y #0000 NEQ2 SUB2 =scroll.y
167 167
 		,redraw JSR2 ,touch-end JMP2
168 168
 	@no-click-scroll-up 
169
-	,no-click-scroll-down ~dev/mouse.y ~dev/screen.height #0008 SUB2 LTH2 JMP2? POP2
169
+	,no-click-scroll-down ~MOUS.y ~SCRN.height #0008 SUB2 LTH2 JMP2? POP2
170 170
 		( incr ) ~scroll.y #0001 ADD2 =scroll.y
171 171
 		,redraw JSR2 ,touch-end JMP2
172 172
 	@no-click-scroll-down 
173
-	~dev/mouse.y #0008 SUB2 =scroll.y
173
+	~MOUS.y #0008 SUB2 =scroll.y
174 174
 	,redraw JSR2 
175 175
 	,touch-end JMP2
176 176
 
... ...
@@ -178,7 +178,7 @@ RTS
178 178
 
179 179
 @touch-linebar
180 180
 
181
-	~dev/mouse.y #0008 DIV2 ~scroll.y ADD2 =position.y #0000 =position.x 
181
+	~MOUS.y #0008 DIV2 ~scroll.y ADD2 =position.y #0000 =position.x 
182 182
 	,find-selection JSR2 DUP2 =selection.from #0001 ADD2 =selection.to
183 183
 	,redraw JSR2 
184 184
 	,touch-end JMP2
... ...
@@ -187,10 +187,10 @@ RTS
187 187
 
188 188
 @touch-body
189 189
 
190
-	~dev/mouse.y #0008 DIV2 ~scroll.y ADD2 =position.y
191
-	~dev/mouse.x ~textarea.x1 SUB2 #0007 ADD2 #0007 DIV2 =position.x
190
+	~MOUS.y #0008 DIV2 ~scroll.y ADD2 =position.y
191
+	~MOUS.x ~textarea.x1 SUB2 #0007 ADD2 #0007 DIV2 =position.x
192 192
 
193
-	,touch-when ~dev/mouse.state ~touch.state NEQ ~dev/ctrl #0f AND #02 NEQ #0101 EQU2 JMP2? POP2
193
+	,touch-when ~MOUS.state ~touch.state NEQ ~CTRL #0f AND #02 NEQ #0101 EQU2 JMP2? POP2
194 194
 		( on drag )
195 195
 		,find-selection JSR2 #0001 ADD2 =selection.to
196 196
 		,clamp-selection JSR2
... ...
@@ -207,7 +207,7 @@ RTS
207 207
 
208 208
 @load-file ( path )
209 209
 
210
-	=dev/file.name #8000 =dev/file.length ,document.body =dev/file.load
210
+	=FILE.name #8000 =FILE.length ,document.body =FILE.load
211 211
 
212 212
 	( get file length )
213 213
 	,document.body =document.eof
... ...
@@ -379,75 +379,75 @@ RTS
379 379
 
380 380
 	( save/load icons )
381 381
 
382
-	~dev/screen.height #0008 SUB2 =dev/sprite.y
382
+	~SCRN.height #0008 SUB2 =SPRT.y
383 383
 
384
-	~dev/screen.width #0018 SUB2 =dev/sprite.x
385
-	,load_icn =dev/sprite.addr
386
-	#02 =dev/sprite.color
384
+	~SCRN.width #0018 SUB2 =SPRT.x
385
+	,load_icn =SPRT.addr
386
+	#02 =SPRT.color
387 387
 
388
-	~dev/screen.width #0010 SUB2 =dev/sprite.x
389
-	,save_icn =dev/sprite.addr
390
-	#02 =dev/sprite.color
388
+	~SCRN.width #0010 SUB2 =SPRT.x
389
+	,save_icn =SPRT.addr
390
+	#02 =SPRT.color
391 391
 
392 392
 RTS
393 393
 
394 394
 @draw-lines
395 395
 	
396 396
 	#0000 =j
397
-	#0000 =dev/sprite.x #0000 =dev/sprite.y
397
+	#0000 =SPRT.x #0000 =SPRT.y
398 398
 	@draw-lines-loop
399 399
 		~scroll.y ~j ADD2 =addr
400
-		#0000 =dev/sprite.x
401
-		,font_hex #00 ,addr #0001 ADD2 LDR #f0 AND #04 ROR #08 MUL ADD2 =dev/sprite.addr
402
-		( draw ) #02 ~addr ~position.y EQU2 #06 MUL ADD =dev/sprite.color
403
-		#0008 =dev/sprite.x
404
-		,font_hex #00 ,addr #0001 ADD2 LDR #0f AND #08 MUL ADD2 =dev/sprite.addr
405
-		( draw ) #02 ~addr ~position.y EQU2 #06 MUL ADD =dev/sprite.color
400
+		#0000 =SPRT.x
401
+		,font_hex #00 ,addr #0001 ADD2 LDR #f0 AND #04 ROR #08 MUL ADD2 =SPRT.addr
402
+		( draw ) #02 ~addr ~position.y EQU2 #06 MUL ADD =SPRT.color
403
+		#0008 =SPRT.x
404
+		,font_hex #00 ,addr #0001 ADD2 LDR #0f AND #08 MUL ADD2 =SPRT.addr
405
+		( draw ) #02 ~addr ~position.y EQU2 #06 MUL ADD =SPRT.color
406 406
 		( incr ) ~j #0001 ADD2 =j
407
-		( incr ) ~dev/sprite.y #0008 ADD2 =dev/sprite.y
408
-		,draw-lines-loop ~j ~dev/screen.height #0008 SUB2 #0008 DIV2 NEQ2 JMP2? POP2
407
+		( incr ) ~SPRT.y #0008 ADD2 =SPRT.y
408
+		,draw-lines-loop ~j ~SCRN.height #0008 SUB2 #0008 DIV2 NEQ2 JMP2? POP2
409 409
 
410 410
 RTS
411 411
 
412 412
 @draw-short ( short )
413 413
 
414 414
 	=addr
415
-	,font_hex #00 ,addr LDR #f0 AND #04 ROR #08 MUL ADD2 =dev/sprite.addr
416
-	( draw ) #0e =dev/sprite.color
417
-	~dev/sprite.x #0008 ADD2 =dev/sprite.x
418
-	,font_hex #00 ,addr LDR #0f AND #08 MUL ADD2 =dev/sprite.addr
419
-	( draw ) #0e =dev/sprite.color
420
-	~dev/sprite.x #0008 ADD2 =dev/sprite.x
421
-	,font_hex #00 ,addr #0001 ADD2 LDR #f0 AND #04 ROR #08 MUL ADD2 =dev/sprite.addr
422
-	( draw ) #0e =dev/sprite.color
423
-	~dev/sprite.x #0008 ADD2 =dev/sprite.x
424
-	,font_hex #00 ,addr #0001 ADD2 LDR #0f AND #08 MUL ADD2 =dev/sprite.addr
425
-	( draw ) #0e =dev/sprite.color
415
+	,font_hex #00 ,addr LDR #f0 AND #04 ROR #08 MUL ADD2 =SPRT.addr
416
+	( draw ) #0e =SPRT.color
417
+	~SPRT.x #0008 ADD2 =SPRT.x
418
+	,font_hex #00 ,addr LDR #0f AND #08 MUL ADD2 =SPRT.addr
419
+	( draw ) #0e =SPRT.color
420
+	~SPRT.x #0008 ADD2 =SPRT.x
421
+	,font_hex #00 ,addr #0001 ADD2 LDR #f0 AND #04 ROR #08 MUL ADD2 =SPRT.addr
422
+	( draw ) #0e =SPRT.color
423
+	~SPRT.x #0008 ADD2 =SPRT.x
424
+	,font_hex #00 ,addr #0001 ADD2 LDR #0f AND #08 MUL ADD2 =SPRT.addr
425
+	( draw ) #0e =SPRT.color
426 426
 
427 427
 RTS
428 428
 
429 429
 @draw-cursor
430 430
 
431
-	~mouse.x ~dev/mouse.x NEQU2
432
-	~mouse.y ~dev/mouse.y NEQU2
431
+	~mouse.x ~MOUS.x NEQU2
432
+	~mouse.y ~MOUS.y NEQU2
433 433
 
434 434
 	#0000 EQU2 RTS? ( Return if unchanged )
435 435
 
436 436
 	( clear last cursor )
437
-	~mouse.x =dev/sprite.x
438
-	~mouse.y =dev/sprite.y
439
-	,blank_icn =dev/sprite.addr
440
-	#10 =dev/sprite.color
437
+	~mouse.x =SPRT.x
438
+	~mouse.y =SPRT.y
439
+	,blank_icn =SPRT.addr
440
+	#10 =SPRT.color
441 441
 
442 442
 	( record mouse positions )
443
-	~dev/mouse.x =mouse.x 
444
-	~dev/mouse.y =mouse.y
443
+	~MOUS.x =mouse.x 
444
+	~MOUS.y =mouse.y
445 445
 
446 446
 	( draw new cursor )
447
-	~mouse.x =dev/sprite.x
448
-	~mouse.y =dev/sprite.y
449
-	,cursor_icn =dev/sprite.addr
450
-	#13 =dev/sprite.color
447
+	~mouse.x =SPRT.x
448
+	~mouse.y =SPRT.y
449
+	,cursor_icn =SPRT.addr
450
+	#13 =SPRT.color
451 451
 
452 452
 RTS
453 453
 
... ...
@@ -467,42 +467,42 @@ RTS
467 467
 	@find-scroll-offset-end
468 468
 
469 469
 	~textarea.addr #0000 ADD2 =textarea.addr
470
-	#0000 =dev/sprite.y
470
+	#0000 =SPRT.y
471 471
 	~textarea.addr =j
472 472
 
473
-	#0018 =dev/sprite.x
473
+	#0018 =SPRT.x
474 474
 
475 475
 	@draw-textarea-loop
476 476
 
477
-		,draw-textarea-end ~dev/sprite.y ~dev/screen.height #0010 SUB2 GTH2 JMP2? POP2
477
+		,draw-textarea-end ~SPRT.y ~SCRN.height #0010 SUB2 GTH2 JMP2? POP2
478 478
 
479 479
 		( get character )
480
-		,font #00 ~j LDR #20 SUB #0008 MUL2 ADD2 =dev/sprite.addr
480
+		,font #00 ~j LDR #20 SUB #0008 MUL2 ADD2 =SPRT.addr
481 481
 
482 482
 		( draw ) #01 
483 483
 		~j ~selection.from #0001 SUB2 GTH2 
484 484
 		~j ~selection.to LTH2 #0101 EQU2
485
-		#05 MUL ADD =dev/sprite.color
485
+		#05 MUL ADD =SPRT.color
486 486
 
487 487
 		,no-linebreak ~j LDR #0a NEQ ~j LDR #0d NEQ #0101 EQU2 JMP2? POP2
488 488
 			( draw linebreak )
489
-			,linebreak_icn =dev/sprite.addr
489
+			,linebreak_icn =SPRT.addr
490 490
 			( draw ) #03
491 491
 			~j ~selection.from #0001 SUB2 GTH2 
492 492
 			~j ~selection.to LTH2 #0101 EQU2
493
-			#05 MUL ADD =dev/sprite.color
493
+			#05 MUL ADD =SPRT.color
494 494
 			( fill clear )
495 495
 			@fill-clear
496
-				( incr ) ~dev/sprite.x #0008 ADD2 =dev/sprite.x
497
-				,font =dev/sprite.addr
498
-				#01 =dev/sprite.color
499
-				,fill-clear ~dev/sprite.x ~dev/screen.width #0008 SUB2 LTH2 JMP2? POP2
500
-			#0010 =dev/sprite.x
501
-			( incr ) ~dev/sprite.y #0008 ADD2 =dev/sprite.y
496
+				( incr ) ~SPRT.x #0008 ADD2 =SPRT.x
497
+				,font =SPRT.addr
498
+				#01 =SPRT.color
499
+				,fill-clear ~SPRT.x ~SCRN.width #0008 SUB2 LTH2 JMP2? POP2
500
+			#0010 =SPRT.x
501
+			( incr ) ~SPRT.y #0008 ADD2 =SPRT.y
502 502
 		@no-linebreak
503 503
 
504 504
 		( incr ) ~j #0001 ADD2 =j
505
-		( incr ) ~dev/sprite.x #0007 ADD2 =dev/sprite.x
505
+		( incr ) ~SPRT.x #0007 ADD2 =SPRT.x
506 506
 
507 507
 	,draw-textarea-loop ~j LDR #00 NEQ JMP2? POP2
508 508
 
... ...
@@ -512,40 +512,40 @@ RTS
512 512
 
513 513
 @draw-scrollbar
514 514
 		
515
-	~dev/screen.width #0008 SUB2 =dev/sprite.x
516
-	#0000 =dev/sprite.y
517
-	,scrollbar_bg =dev/sprite.addr
515
+	~SCRN.width #0008 SUB2 =SPRT.x
516
+	#0000 =SPRT.y
517
+	,scrollbar_bg =SPRT.addr
518 518
 
519 519
 	@draw-scrollbar-loop
520
-	( draw ) #08 =dev/sprite.color
521
-	( incr ) ~dev/sprite.y #0008 ADD2 =dev/sprite.y
522
-	,draw-scrollbar-loop ~dev/sprite.y ~dev/screen.height LTH2 JMP2? POP2
520
+	( draw ) #08 =SPRT.color
521
+	( incr ) ~SPRT.y #0008 ADD2 =SPRT.y
522
+	,draw-scrollbar-loop ~SPRT.y ~SCRN.height LTH2 JMP2? POP2
523 523
 
524
-	#0000 =dev/sprite.y
525
-	,arrowup_icn =dev/sprite.addr
526
-	( draw ) #08 =dev/sprite.color
524
+	#0000 =SPRT.y
525
+	,arrowup_icn =SPRT.addr
526
+	( draw ) #08 =SPRT.color
527 527
 
528 528
 	( at )
529
-	~scroll.y #0008 ADD2 =dev/sprite.y
530
-	,scrollbar_fg =dev/sprite.addr
531
-	( draw ) #08 =dev/sprite.color
529
+	~scroll.y #0008 ADD2 =SPRT.y
530
+	,scrollbar_fg =SPRT.addr
531
+	( draw ) #08 =SPRT.color
532 532
 
533
-	~dev/screen.height #0008 SUB2 =dev/sprite.y
534
-	,arrowdown_icn =dev/sprite.addr
535
-	( draw ) #08 =dev/sprite.color
533
+	~SCRN.height #0008 SUB2 =SPRT.y
534
+	,arrowdown_icn =SPRT.addr
535
+	( draw ) #08 =SPRT.color
536 536
 
537 537
 RTS
538 538
 
539 539
 @draw-titlebar
540 540
 	
541
-	#0018 ~dev/screen.height #0008 SUB2 #09 ,filepath 
541
+	#0018 ~SCRN.height #0008 SUB2 #09 ,filepath 
542 542
 
543
-	( load ) =label.addr =label.color =dev/sprite.y =dev/sprite.x 
543
+	( load ) =label.addr =label.color =SPRT.y =SPRT.x 
544 544
 	~label.addr
545 545
 	@draw-titlebar-loop
546
-		( draw ) DUP2 LDR #00 SWP #20 SUB #0008 MUL2 ,font ADD2 =dev/sprite.addr ~label.color =dev/sprite.color
546
+		( draw ) DUP2 LDR #00 SWP #20 SUB #0008 MUL2 ,font ADD2 =SPRT.addr ~label.color =SPRT.color
547 547
 		( incr ) #0001 ADD2
548
-		( incr ) ~dev/sprite.x #0008 ADD2 =dev/sprite.x
548
+		( incr ) ~SPRT.x #0008 ADD2 =SPRT.x
549 549
 		DUP2 LDR #00 NEQ ,draw-titlebar-loop ROT JMP2? POP2
550 550
 	POP2
551 551
 
... ...
@@ -628,20 +628,20 @@ RTS
628 628
 @arrowdown_icn [ 0010 1010 fe7c 3810 ]
629 629
 @load_icn      [ feaa d6aa d4aa f400 ]
630 630
 @save_icn      [ fe82 8282 848a f400 ]
631
-@filepath      [ test.txt 00 ]
632
-@filepath1     [ projects/software/left.usm 00 ]
631
+@filepath1     [ projects/examples/jumptest.usm 00 ]
632
+@filepath      [ projects/software/left.usm 00 ]
633 633
 
634 634
 |4000 ;document Document
635 635
 
636 636
 |d000 @ERROR BRK 
637 637
 
638 638
 |FF00 ;dev/console Console
639
-|FF10 ;dev/screen  Screen
640
-|FF20 ;dev/sprite  Sprite
641
-|FF30 ;dev/ctrl    Controller
642
-|FF40 ;dev/key     Keyboard
643
-|FF50 ;dev/mouse   Mouse
644
-|FF60 ;dev/file    File
639
+|FF10 ;SCRN Screen
640
+|FF20 ;SPRT Sprite
641
+|FF30 ;CTRL Controller
642
+|FF40 ;KEYS Keyboard
643
+|FF50 ;MOUS Mouse
644
+|FF60 ;FILE File
645 645
 
646 646
 |FFF0 .RESET .FRAME .ERROR ( vectors )
647 647
 |FFF8 [ a0fe a0f7 a0f2 ] ( palette )
... ...
@@ -32,12 +32,12 @@
32 32
 
33 33
 |0100 @RESET
34 34
 	
35
-	~dev/screen.width #0002 DIV2 #008a SUB2 =bankview.x 
36
-	~dev/screen.height #0002 DIV2 #003f SUB2 =bankview.y 
35
+	~SCRN.width #0002 DIV2 #008a SUB2 =bankview.x 
36
+	~SCRN.height #0002 DIV2 #003f SUB2 =bankview.y 
37 37
 	,bank1 =bankview.addr
38 38
 
39
-	~dev/screen.width #0002 DIV2 #0002 ADD2 =tileview.x 
40
-	~dev/screen.height #0002 DIV2 #003f SUB2 =tileview.y 
39
+	~SCRN.width #0002 DIV2 #0002 ADD2 =tileview.x 
40
+	~SCRN.height #0002 DIV2 #003f SUB2 =tileview.y 
41 41
 	,bank1 #0448 ADD2 =tileview.addr
42 42
 
43 43
 	,redraw JSR2
... ...
@@ -48,28 +48,28 @@ BRK
48 48
 
49 49
 	( keyboard controls )
50 50
 
51
-	,no-key ~dev/key #00 EQU JMP2? POP2
51
+	,no-key ~KEYS #00 EQU JMP2? POP2
52 52
 
53
-		,no-key ~dev/key #31 LTH JMP2? POP2
54
-		,no-key ~dev/key #33 GTH JMP2? POP2
55
-		( select ) ~dev/key #31 SUB =bankview.mode
56
-		( release ) #00 =dev/key
53
+		,no-key ~KEYS #31 LTH JMP2? POP2
54
+		,no-key ~KEYS #33 GTH JMP2? POP2
55
+		( select ) ~KEYS #31 SUB =bankview.mode
56
+		( release ) #00 =KEYS
57 57
 		,redraw JSR2 
58 58
 
59 59
 	@no-key
60 60
 
61
-	,no-ctrl ~dev/ctrl.buttons #00 EQU JMP2? POP2
61
+	,no-ctrl ~CTRL.buttons #00 EQU JMP2? POP2
62 62
 
63
-		,no-ctrl-up ~dev/ctrl.buttons #10 EQU JMP2? POP2
63
+		,no-ctrl-up ~CTRL.buttons #10 EQU JMP2? POP2
64 64
 			~tileview.addr #0080 ADD2 =tileview.addr
65 65
 		@no-ctrl-up
66
-		,no-ctrl-down ~dev/ctrl.buttons #20 EQU JMP2? POP2
66
+		,no-ctrl-down ~CTRL.buttons #20 EQU JMP2? POP2
67 67
 			~tileview.addr #0080 SUB2 =tileview.addr
68 68
 		@no-ctrl-down
69
-		,no-ctrl-left ~dev/ctrl.buttons #40 EQU JMP2? POP2
69
+		,no-ctrl-left ~CTRL.buttons #40 EQU JMP2? POP2
70 70
 			~tileview.addr #0008 ADD2 =tileview.addr
71 71
 		@no-ctrl-left
72
-		,no-ctrl-right ~dev/ctrl.buttons #80 EQU JMP2? POP2
72
+		,no-ctrl-right ~CTRL.buttons #80 EQU JMP2? POP2
73 73
 			~tileview.addr #0008 SUB2 =tileview.addr
74 74
 		@no-ctrl-right
75 75
 		~tileview.addr #0800 DIV2 #0800 MUL2 =bankview.addr
... ...
@@ -79,30 +79,30 @@ BRK
79 79
 
80 80
 	( mouse controls )
81 81
 
82
-	,click-end ~dev/mouse.state #00 EQU JMP2? POP2
82
+	,click-end ~MOUS.state #00 EQU JMP2? POP2
83 83
 
84 84
 		( toolbar )
85 85
 
86
-		,no-toolbar-click ~dev/mouse.y ~bankview.y #0010 SUB2 SUB2 #0008 DIV2 #0000 NEQ2 JMP2? POP2
86
+		,no-toolbar-click ~MOUS.y ~bankview.y #0010 SUB2 SUB2 #0008 DIV2 #0000 NEQ2 JMP2? POP2
87 87
 
88 88
 			( brush )
89 89
 
90
-			,no-brush-click ~dev/mouse.x ~bankview.x SUB2 #0008 DIV2 #000d LTH2 JMP2? POP2
91
-			,no-brush-click ~dev/mouse.x ~bankview.x SUB2 #0008 DIV2 #000f GTH2 JMP2? POP2
90
+			,no-brush-click ~MOUS.x ~bankview.x SUB2 #0008 DIV2 #000d LTH2 JMP2? POP2
91
+			,no-brush-click ~MOUS.x ~bankview.x SUB2 #0008 DIV2 #000f GTH2 JMP2? POP2
92 92
 				( select ) ~mouse.x ~bankview.x SUB2 #0008 DIV2 #000d SUB2 SWP POP =bankview.mode
93
-				( release ) #00 =dev/mouse.state
93
+				( release ) #00 =MOUS.state
94 94
 				,redraw JSR2 ,click-end JMP2
95 95
 			@no-brush-click
96 96
 
97
-			,no-load-click ~dev/mouse.x ~tileview.x SUB2 #0008 DIV2 #000e NEQU2 JMP2? POP2
98
-				( load ) ,filename  =dev/file.name #0800 =dev/file.length ~bankview.addr =dev/file.load
99
-				( release ) #00 =dev/mouse.state
97
+			,no-load-click ~MOUS.x ~tileview.x SUB2 #0008 DIV2 #000e NEQU2 JMP2? POP2
98
+				( load ) ,filename  =FILE.name #0800 =FILE.length ~bankview.addr =FILE.load
99
+				( release ) #00 =MOUS.state
100 100
 				,redraw JSR2 ,click-end JMP2
101 101
 			@no-load-click
102 102
 
103
-			,no-save-click ~dev/mouse.x ~tileview.x SUB2 #0008 DIV2 #000f NEQU2 JMP2? POP2
104
-				( save ) ,filename  =dev/file.name #0800 =dev/file.length ~bankview.addr =dev/file.save
105
-				( release ) #00 =dev/mouse.state
103
+			,no-save-click ~MOUS.x ~tileview.x SUB2 #0008 DIV2 #000f NEQU2 JMP2? POP2
104
+				( save ) ,filename  =FILE.name #0800 =FILE.length ~bankview.addr =FILE.save
105
+				( release ) #00 =MOUS.state
106 106
 				,redraw JSR2 ,click-end JMP2
107 107
 			@no-save-click
108 108
 
... ...
@@ -110,8 +110,8 @@ BRK
110 110
 
111 111
 		( bankview )
112 112
 
113
-		~dev/mouse.x ~bankview.x GTH2 ~dev/mouse.x ~bankview.x #0080 ADD2 LTH2 #0101 EQU2
114
-		~dev/mouse.y ~bankview.y GTH2 ~dev/mouse.y ~bankview.y #0080 ADD2 LTH2 #0101 EQU2
113
+		~MOUS.x ~bankview.x GTH2 ~MOUS.x ~bankview.x #0080 ADD2 LTH2 #0101 EQU2
114
+		~MOUS.y ~bankview.y GTH2 ~MOUS.y ~bankview.y #0080 ADD2 LTH2 #0101 EQU2
115 115
 		#0101 NEQ2 ,no-bank-click ROT JMP2? POP2
116 116
 
117 117
 			,not-copy-mode ~bankview.mode #01 NEQ JMP2? POP2
... ...
@@ -119,8 +119,8 @@ BRK
119 119
 				@copy-loop
120 120
 					( load ) ~tileview.addr ~i ADD LDR 
121 121
 					( get touch addr )
122
-					~dev/mouse.x ~bankview.x SUB2 #0008 DIV2 #0008 MUL2 
123
-					~dev/mouse.y ~bankview.y SUB2 #0008 DIV2 #0008 MUL2 #0010 MUL2 ADD2
122
+					~MOUS.x ~bankview.x SUB2 #0008 DIV2 #0008 MUL2 
123
+					~MOUS.y ~bankview.y SUB2 #0008 DIV2 #0008 MUL2 #0010 MUL2 ADD2
124 124
 					~bankview.addr ADD2 #00 ~i ADD2 STR
125 125
 					( incr ) ~i #01 ADD =i
126 126
 					,copy-loop ~i #08 LTH JMP2? POP2
... ...
@@ -132,16 +132,16 @@ BRK
132 132
 				@erase-loop
133 133
 					#00 
134 134
 					( get touch addr )
135
-					~dev/mouse.x ~bankview.x SUB2 #0008 DIV2 #0008 MUL2 
136
-					~dev/mouse.y ~bankview.y SUB2 #0008 DIV2 #0008 MUL2 #0010 MUL2 ADD2
135
+					~MOUS.x ~bankview.x SUB2 #0008 DIV2 #0008 MUL2 
136
+					~MOUS.y ~bankview.y SUB2 #0008 DIV2 #0008 MUL2 #0010 MUL2 ADD2
137 137
 					~bankview.addr ADD2 #00 ~i ADD2 STR
138 138
 					( incr ) ~i #01 ADD =i
139 139
 					,erase-loop ~i #08 LTH JMP2? POP2
140 140
 				,redraw JSR2 ,click-end JMP2
141 141
 			@not-erase-mode
142 142
 
143
-			~dev/mouse.x ~bankview.x SUB2 #0008 DIV2 #0008 MUL2 
144
-			~dev/mouse.y ~bankview.y SUB2 #0008 DIV2 #0008 MUL2 #0010 MUL2 ADD2
143
+			~MOUS.x ~bankview.x SUB2 #0008 DIV2 #0008 MUL2 
144
+			~MOUS.y ~bankview.y SUB2 #0008 DIV2 #0008 MUL2 #0010 MUL2 ADD2
145 145
 			~bankview.addr ADD2 =tileview.addr
146 146
 			,redraw JSR2 ,click-end JMP2
147 147
 
... ...
@@ -149,16 +149,16 @@ BRK
149 149
 
150 150
 		( tileview )
151 151
 
152
-		~dev/mouse.x ~tileview.x GTH2 ~dev/mouse.x ~tileview.x #0080 ADD2 LTH2 #0101 EQU2
153
-		~dev/mouse.y ~tileview.y GTH2 ~dev/mouse.y ~tileview.y #0080 ADD2 LTH2 #0101 EQU2
152
+		~MOUS.x ~tileview.x GTH2 ~MOUS.x ~tileview.x #0080 ADD2 LTH2 #0101 EQU2
153
+		~MOUS.y ~tileview.y GTH2 ~MOUS.y ~tileview.y #0080 ADD2 LTH2 #0101 EQU2
154 154
 		#0101 NEQ2 ,no-tile-click ROT JMP2? POP2
155 155
 
156
-			~dev/mouse.x ~tileview.x SUB2 #0008 DIV2 #0008 MUL2 #0040 DIV2 
157
-			~dev/mouse.y ~tileview.y SUB2 #0008 DIV2 #0008 MUL2 #0040 DIV2 #0002 MUL2 ADD2 
156
+			~MOUS.x ~tileview.x SUB2 #0008 DIV2 #0008 MUL2 #0040 DIV2 
157
+			~MOUS.y ~tileview.y SUB2 #0008 DIV2 #0008 MUL2 #0040 DIV2 #0002 MUL2 ADD2 
158 158
 			#0008 MUL2
159 159
 			~tileview.addr ADD2 =addr ( addr offset )
160
-			~dev/mouse.x ~tileview.x SUB2 ~dev/mouse.x ~tileview.x SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.x
161
-			~dev/mouse.y ~tileview.y SUB2 ~dev/mouse.y ~tileview.y SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.y
160
+			~MOUS.x ~tileview.x SUB2 ~MOUS.x ~tileview.x SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.x
161
+			~MOUS.y ~tileview.y SUB2 ~MOUS.y ~tileview.y SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.y
162 162
 			,no-fill-mode ~bankview.mode #01 NEQ JMP2? POP2
163 163
 				( fill row ) #ff ~addr ~pos.y #0008 DIV2 ADD2 STR
164 164
 				,redraw JSR2 ,click-end JMP2
... ...
@@ -177,17 +177,17 @@ BRK
177 177
 
178 178
 		( operations )
179 179
 
180
-		,no-operations ~dev/mouse.y ~tileview.y SUB2 #0008 DIV2 #000c NEQ2 JMP2? POP2
180
+		,no-operations ~MOUS.y ~tileview.y SUB2 #0008 DIV2 #000c NEQ2 JMP2? POP2
181 181
 
182
-			,no-move-up ~dev/mouse.x ~tileview.x SUB2 #0008 DIV2 #0011 NEQ2 JMP2? POP2
182
+			,no-move-up ~MOUS.x ~tileview.x SUB2 #0008 DIV2 #0011 NEQ2 JMP2? POP2
183 183
 				,op_shiftup JSR2 
184
-				( release ) #00 =dev/mouse.state
184
+				( release ) #00 =MOUS.state
185 185
 				,redraw JSR2 ,click-end JMP2
186 186
 			@no-move-up
187 187
 
188
-			,no-move-down ~dev/mouse.x ~tileview.x SUB2 #0008 DIV2 #0012 NEQ2 JMP2? POP2
188
+			,no-move-down ~MOUS.x ~tileview.x SUB2 #0008 DIV2 #0012 NEQ2 JMP2? POP2
189 189
 				,op_shiftdown JSR2 
190
-				( release ) #00 =dev/mouse.state
190
+				( release ) #00 =MOUS.state
191 191
 				,redraw JSR2 ,click-end JMP2
192 192
 			@no-move-down
193 193
 
... ...
@@ -240,66 +240,66 @@ RTS
240 240
 
241 241
 	( position )
242 242
 
243
-	~bankview.x =dev/sprite.x
244
-	~bankview.y #0010 SUB2 =dev/sprite.y
243
+	~bankview.x =SPRT.x
244
+	~bankview.y #0010 SUB2 =SPRT.y
245 245
 	~bankview.addr ,draw-short JSR2
246 246
 
247 247
 	( toolbar )
248 248
 
249
-	~bankview.x #0068 ADD2 =dev/sprite.x
250
-	~bankview.y #0010 SUB2 =dev/sprite.y
251
-	,tool_selector =dev/sprite.addr
252
-	#01 ~bankview.mode #00 EQU ADD =dev/sprite.color
249
+	~bankview.x #0068 ADD2 =SPRT.x
250
+	~bankview.y #0010 SUB2 =SPRT.y
251
+	,tool_selector =SPRT.addr
252
+	#01 ~bankview.mode #00 EQU ADD =SPRT.color
253 253
 
254
-	~dev/sprite.x #0008 ADD2 =dev/sprite.x
255
-	,tool_hand =dev/sprite.addr
256
-	#01 ~bankview.mode #01 EQU ADD =dev/sprite.color
254
+	~SPRT.x #0008 ADD2 =SPRT.x
255
+	,tool_hand =SPRT.addr
256
+	#01 ~bankview.mode #01 EQU ADD =SPRT.color
257 257
 
258
-	~dev/sprite.x #0008 ADD2 =dev/sprite.x
259
-	,tool_eraser =dev/sprite.addr
260
-	#01 ~bankview.mode #02 EQU ADD =dev/sprite.color
258
+	~SPRT.x #0008 ADD2 =SPRT.x
259
+	,tool_eraser =SPRT.addr
260
+	#01 ~bankview.mode #02 EQU ADD =SPRT.color
261 261
 
262
-	~tileview.x #0070 ADD2 =dev/sprite.x
263
-	,load_icn =dev/sprite.addr
264
-	#01 =dev/sprite.color
262
+	~tileview.x #0070 ADD2 =SPRT.x
263
+	,load_icn =SPRT.addr
264
+	#01 =SPRT.color
265 265
 
266
-	~tileview.x #0078 ADD2 =dev/sprite.x
267
-	,save_icn =dev/sprite.addr
268
-	#01 =dev/sprite.color
266
+	~tileview.x #0078 ADD2 =SPRT.x
267
+	,save_icn =SPRT.addr
268
+	#01 =SPRT.color
269 269
 
270 270
 	( guides )
271 271
 
272
-	#00 =i ,font_hex =dev/sprite.addr
272
+	#00 =i ,font_hex =SPRT.addr
273 273
 	@draw-bankview-guides
274
-		~bankview.x #0010 SUB2 =dev/sprite.x
275
-		~bankview.y #00 ~i #08 MUL ADD2 =dev/sprite.y
276
-		( draw ) #02 =dev/sprite.color
277
-		~bankview.x #00 ~i #08 MUL ADD2 =dev/sprite.x
278
-		~bankview.y #0088 ADD2 =dev/sprite.y
279
-		( draw ) #02 =dev/sprite.color
280
-		~dev/sprite.addr #0008 ADD2 =dev/sprite.addr
274
+		~bankview.x #0010 SUB2 =SPRT.x
275
+		~bankview.y #00 ~i #08 MUL ADD2 =SPRT.y
276
+		( draw ) #02 =SPRT.color
277
+		~bankview.x #00 ~i #08 MUL ADD2 =SPRT.x
278
+		~bankview.y #0088 ADD2 =SPRT.y
279
+		( draw ) #02 =SPRT.color
280
+		~SPRT.addr #0008 ADD2 =SPRT.addr
281 281
 		( incr ) ~i #01 ADD =i
282 282
 		,draw-bankview-guides ~i #10 LTH JMP2? POP2
283 283
 
284 284
 	( body )
285 285
 
286
-	~bankview.x =dev/sprite.x ~bankview.y =dev/sprite.y
287
-	#00 =pt.x #00 =pt.y ~bankview.addr =dev/sprite.addr
286
+	~bankview.x =SPRT.x ~bankview.y =SPRT.y
287
+	#00 =pt.x #00 =pt.y ~bankview.addr =SPRT.addr
288 288
 	@draw-bankview-tiles-ver
289 289
 		#00 =pt.x
290
-		~bankview.x =dev/sprite.x
290
+		~bankview.x =SPRT.x
291 291
 		@draw-bankview-tiles-hor
292
-			( draw ) #01 =dev/sprite.color
293
-			,no-highlight ~dev/sprite.addr ~tileview.addr LTH2 JMP2? POP2
294
-				,no-highlight ~dev/sprite.addr ~tileview.addr #0018 ADD2 GTH2 JMP2? POP2
295
-				( draw ) #0c =dev/sprite.color
292
+			( draw ) #01 =SPRT.color
293
+			,no-highlight ~SPRT.addr ~tileview.addr LTH2 JMP2? POP2
294
+				,no-highlight ~SPRT.addr ~tileview.addr #0018 ADD2 GTH2 JMP2? POP2
295
+				( draw ) #0c =SPRT.color
296 296
 			@no-highlight
297
-			( incr ) ~dev/sprite.x #0008 ADD2 =dev/sprite.x
298
-			( incr ) ~dev/sprite.addr #0008 ADD2 =dev/sprite.addr
297
+			( incr ) ~SPRT.x #0008 ADD2 =SPRT.x
298
+			( incr ) ~SPRT.addr #0008 ADD2 =SPRT.addr
299 299
 			( incr ) ~pt.x #01 ADD =pt.x
300 300
 			,draw-bankview-tiles-hor ~pt.x #10 LTH JMP2? POP2
301 301
 		( incr ) ~pt.y #01 ADD =pt.y
302
-		( incr ) ~dev/sprite.y #0008 ADD2 =dev/sprite.y
302
+		( incr ) ~SPRT.y #0008 ADD2 =SPRT.y
303 303
 		,draw-bankview-tiles-ver ~pt.y #10 LTH JMP2? POP2
304 304
 
305 305
 RTS
... ...
@@ -308,96 +308,96 @@ RTS
308 308
 
309 309
 	~tileview.x #0002 SUB2 ~tileview.y #0002 SUB2 ~tileview.x #0080 ADD2 ~tileview.y #0081 ADD2 #03 ,line-rect JSR2
310 310
 
311
-	~tileview.x #0028 ADD2 =dev/sprite.x
312
-	~tileview.y #0010 SUB2 =dev/sprite.y
313
-	~tileview.addr =dev/sprite.addr
314
-	#03 =dev/sprite.color
311
+	~tileview.x #0028 ADD2 =SPRT.x
312
+	~tileview.y #0010 SUB2 =SPRT.y
313
+	~tileview.addr =SPRT.addr
314
+	#03 =SPRT.color
315 315
 
316 316
 	( position )
317 317
 
318
-	~tileview.x =dev/sprite.x
319
-	~tileview.y #0010 SUB2 =dev/sprite.y
318
+	~tileview.x =SPRT.x
319
+	~tileview.y #0010 SUB2 =SPRT.y
320 320
 	~tileview.addr ,draw-short JSR2
321 321
 
322 322
 	( body )
323 323
 
324
-	~tileview.x =dev/sprite.x
325
-	~tileview.y =dev/sprite.y
324
+	~tileview.x =SPRT.x
325
+	~tileview.y =SPRT.y
326 326
 	~tileview.addr =tileview.addr
327 327
 	,draw-tileview-icn JSR2
328 328
 
329
-	~tileview.x #0040 ADD2 =dev/sprite.x
330
-	~tileview.y =dev/sprite.y
329
+	~tileview.x #0040 ADD2 =SPRT.x
330
+	~tileview.y =SPRT.y
331 331
 	~tileview.addr #0008 ADD2 =tileview.addr
332 332
 	,draw-tileview-icn JSR2
333 333
 
334
-	~tileview.x =dev/sprite.x
335
-	~tileview.y #0040 ADD2 =dev/sprite.y
334
+	~tileview.x =SPRT.x
335
+	~tileview.y #0040 ADD2 =SPRT.y
336 336
 	~tileview.addr #0008 ADD2 =tileview.addr
337 337
 	,draw-tileview-icn JSR2
338 338
 
339
-	~tileview.x #0040 ADD2 =dev/sprite.x
340
-	~tileview.y #0040 ADD2 =dev/sprite.y
339
+	~tileview.x #0040 ADD2 =SPRT.x
340
+	~tileview.y #0040 ADD2 =SPRT.y
341 341
 	~tileview.addr #0008 ADD2 =tileview.addr
342 342
 	,draw-tileview-icn JSR2
343 343
 
344 344
 	( line hor )
345
-	~tileview.y #003f ADD2 =dev/screen.y
346
-	~tileview.x =dev/screen.x
345
+	~tileview.y #003f ADD2 =SCRN.y
346
+	~tileview.x =SCRN.x
347 347
 	@draw-hor
348
-		( draw ) #03 =dev/screen.color
349
-		( incr ) ~dev/screen.x #0002 ADD2 =dev/screen.x
350
-	~dev/screen.x ~tileview.x #0082 ADD2 LTH2 ,draw-hor ROT JMP2? POP2
348
+		( draw ) #03 =SCRN.color
349
+		( incr ) ~SCRN.x #0002 ADD2 =SCRN.x
350
+	~SCRN.x ~tileview.x #0082 ADD2 LTH2 ,draw-hor ROT JMP2? POP2
351 351
 
352 352
 	( line ver )
353
-	~tileview.y =dev/screen.y
354
-	~tileview.x #003f ADD2 =dev/screen.x
353
+	~tileview.y =SCRN.y
354
+	~tileview.x #003f ADD2 =SCRN.x
355 355
 	@draw-ver
356
-		( draw ) #03 =dev/screen.color
357
-		( incr ) ~dev/screen.y #0002 ADD2 =dev/screen.y
358
-	~dev/screen.y ~tileview.y #0081 ADD2 LTH2 ,draw-ver ROT JMP2? POP2
356
+		( draw ) #03 =SCRN.color
357
+		( incr ) ~SCRN.y #0002 ADD2 =SCRN.y
358
+	~SCRN.y ~tileview.y #0081 ADD2 LTH2 ,draw-ver ROT JMP2? POP2
359 359
 
360 360
 	( rewind ) ~tileview.addr #0018 SUB2 =tileview.addr
361 361
 
362 362
 	( bytes )
363 363
 
364
-	~tileview.y #0018 ADD2 =dev/sprite.y
364
+	~tileview.y #0018 ADD2 =SPRT.y
365 365
 	#00 =i
366 366
 	@draw-tileview-bytes
367
-		~tileview.x #0088 ADD2 =dev/sprite.x
368
-		,font_hex #00 ~tileview.addr #00 ~i ADD2 LDR #f0 AND #04 ROR #08 MUL ADD2 =dev/sprite.addr
369
-		( draw ) #02 =dev/sprite.color
370
-		~dev/sprite.x #0008 ADD2 =dev/sprite.x
371
-		,font_hex #00 ~tileview.addr #00 ~i ADD2 LDR #0f AND #08 MUL ADD2 =dev/sprite.addr
372
-		( draw ) #02 =dev/sprite.color
367
+		~tileview.x #0088 ADD2 =SPRT.x
368
+		,font_hex #00 ~tileview.addr #00 ~i ADD2 LDR #f0 AND #04 ROR #08 MUL ADD2 =SPRT.addr
369
+		( draw ) #02 =SPRT.color
370
+		~SPRT.x #0008 ADD2 =SPRT.x
371
+		,font_hex #00 ~tileview.addr #00 ~i ADD2 LDR #0f AND #08 MUL ADD2 =SPRT.addr
372
+		( draw ) #02 =SPRT.color
373 373
 		( incr ) ~i #01 ADD =i
374
-		( incr ) ~dev/sprite.y #0008 ADD2 =dev/sprite.y
374
+		( incr ) ~SPRT.y #0008 ADD2 =SPRT.y
375 375
 	,draw-tileview-bytes ~i #08 LTH JMP2? POP2
376 376
 
377 377
 	( operations )
378 378
 
379
-	~dev/sprite.y #0008 ADD2 =dev/sprite.y
380
-	,movedown_icn =dev/sprite.addr
381
-	#01 =dev/sprite.color
382
-	~dev/sprite.x #0008 SUB2 =dev/sprite.x
383
-	,moveup_icn =dev/sprite.addr
384
-	#01 =dev/sprite.color
379
+	~SPRT.y #0008 ADD2 =SPRT.y
380
+	,movedown_icn =SPRT.addr
381
+	#01 =SPRT.color
382
+	~SPRT.x #0008 SUB2 =SPRT.x
383
+	,moveup_icn =SPRT.addr
384
+	#01 =SPRT.color
385 385
 
386 386
 	( draw tiles )
387
-	~tileview.y =dev/sprite.y
388
-	#00 =pt.x #00 =pt.y ~tileview.addr =dev/sprite.addr
387
+	~tileview.y =SPRT.y
388
+	#00 =pt.x #00 =pt.y ~tileview.addr =SPRT.addr
389 389
 
390 390
 	@draw-tileview-tiles-ver
391 391
 		#00 =pt.x
392
-		~tileview.x #0088 ADD2 =dev/sprite.x
392
+		~tileview.x #0088 ADD2 =SPRT.x
393 393
 		@draw-tileview-tiles-hor
394
-			( draw ) #03 =dev/sprite.color
395
-			( incr ) ~dev/sprite.x #0008 ADD2 =dev/sprite.x
396
-			( incr ) ~dev/sprite.addr #0008 ADD2 =dev/sprite.addr
394
+			( draw ) #03 =SPRT.color
395
+			( incr ) ~SPRT.x #0008 ADD2 =SPRT.x
396
+			( incr ) ~SPRT.addr #0008 ADD2 =SPRT.addr
397 397
 			( incr ) ~pt.x #01 ADD =pt.x
398 398
 			,draw-tileview-tiles-hor ~pt.x #02 LTH JMP2? POP2
399 399
 		( incr ) ~pt.y #01 ADD =pt.y
400
-		( incr ) ~dev/sprite.y #0008 ADD2 =dev/sprite.y
400
+		( incr ) ~SPRT.y #0008 ADD2 =SPRT.y
401 401
 		,draw-tileview-tiles-ver ~pt.y #02 LTH JMP2? POP2
402 402
 
403 403
 RTS
... ...
@@ -411,57 +411,57 @@ RTS
411 411
 			( get bit )
412 412
 			,blank_icn #00
413 413
 			~tileview.addr #00 ~pt.y ADD2 LDR #07 ~pt.x SUB ROR #01 AND ( get bit )
414
-			#0008 MUL2 ADD2 =dev/sprite.addr ( add *8 )
415
-			( draw ) #01 =dev/sprite.color
416
-			( incr ) ~dev/sprite.x #0008 ADD2 =dev/sprite.x
414
+			#0008 MUL2 ADD2 =SPRT.addr ( add *8 )
415
+			( draw ) #01 =SPRT.color
416
+			( incr ) ~SPRT.x #0008 ADD2 =SPRT.x
417 417
 			( incr ) ~pt.x #01 ADD =pt.x
418 418
 			,redraw-hor ~pt.x #08 LTH JMP2? POP2
419
-		( incr ) ~dev/sprite.y #0008 ADD2 =dev/sprite.y
419
+		( incr ) ~SPRT.y #0008 ADD2 =SPRT.y
420 420
 		( incr ) ~pt.y #01 ADD =pt.y
421
-		~dev/sprite.x #0040 SUB2 =dev/sprite.x
421
+		~SPRT.x #0040 SUB2 =SPRT.x
422 422
 		,redraw-ver ~pt.y #08 LTH JMP2? POP2
423 423
 
424 424
 RTS
425 425
 
426 426
 @draw-cursor
427 427
 
428
-	~mouse.x ~dev/mouse.x NEQU2
429
-	~mouse.y ~dev/mouse.y NEQU2
428
+	~mouse.x ~MOUS.x NEQU2
429
+	~mouse.y ~MOUS.y NEQU2
430 430
 
431 431
 	#0000 EQU2 RTS? ( Return if unchanged )
432 432
 
433 433
 	( clear last cursor )
434
-	~mouse.x =dev/sprite.x
435
-	~mouse.y =dev/sprite.y
436
-	,blank_icn =dev/sprite.addr
437
-	#10 =dev/sprite.color
434
+	~mouse.x =SPRT.x
435
+	~mouse.y =SPRT.y
436
+	,blank_icn =SPRT.addr
437
+	#10 =SPRT.color
438 438
 
439 439
 	( record mouse positions )
440
-	~dev/mouse.x =mouse.x 
441
-	~dev/mouse.y =mouse.y
440
+	~MOUS.x =mouse.x 
441
+	~MOUS.y =mouse.y
442 442
 
443 443
 	( draw new cursor )
444
-	~mouse.x =dev/sprite.x
445
-	~mouse.y =dev/sprite.y
446
-	,tool_selector #00 ~bankview.mode #08 MUL ADD2 =dev/sprite.addr
447
-	#12 =dev/sprite.color
444
+	~mouse.x =SPRT.x
445
+	~mouse.y =SPRT.y
446
+	,tool_selector #00 ~bankview.mode #08 MUL ADD2 =SPRT.addr
447
+	#12 =SPRT.color
448 448
 
449 449
 RTS
450 450
 
451 451
 @draw-short ( short )
452 452
 
453 453
 	=addr
454
-	,font_hex #00 ,addr LDR #f0 AND #04 ROR #08 MUL ADD2 =dev/sprite.addr
455
-	( draw ) #02 =dev/sprite.color
456
-	~dev/sprite.x #0008 ADD2 =dev/sprite.x
457
-	,font_hex #00 ,addr LDR #0f AND #08 MUL ADD2 =dev/sprite.addr
458
-	( draw ) #02 =dev/sprite.color
459
-	~dev/sprite.x #0008 ADD2 =dev/sprite.x
460
-	,font_hex #00 ,addr #0001 ADD2 LDR #f0 AND #04 ROR #08 MUL ADD2 =dev/sprite.addr
461
-	( draw ) #02 =dev/sprite.color
462
-	~dev/sprite.x #0008 ADD2 =dev/sprite.x
463
-	,font_hex #00 ,addr #0001 ADD2 LDR #0f AND #08 MUL ADD2 =dev/sprite.addr
464
-	( draw ) #02 =dev/sprite.color
454
+	,font_hex #00 ,addr LDR #f0 AND #04 ROR #08 MUL ADD2 =SPRT.addr
455
+	( draw ) #02 =SPRT.color
456
+	~SPRT.x #0008 ADD2 =SPRT.x
457
+	,font_hex #00 ,addr LDR #0f AND #08 MUL ADD2 =SPRT.addr
458
+	( draw ) #02 =SPRT.color
459
+	~SPRT.x #0008 ADD2 =SPRT.x
460
+	,font_hex #00 ,addr #0001 ADD2 LDR #f0 AND #04 ROR #08 MUL ADD2 =SPRT.addr
461
+	( draw ) #02 =SPRT.color
462
+	~SPRT.x #0008 ADD2 =SPRT.x
463
+	,font_hex #00 ,addr #0001 ADD2 LDR #0f AND #08 MUL ADD2 =SPRT.addr
464
+	( draw ) #02 =SPRT.color
465 465
 
466 466
 RTS
467 467
 
... ...
@@ -469,18 +469,18 @@ RTS
469 469
 
470 470
 @line-rect ( x1 y1 x2 y2 color )
471 471
 
472
-	( load ) =color =rect.y2 =rect.x2 DUP2 =dev/screen.y =rect.y1 DUP2 =dev/screen.x =rect.x1
472
+	( load ) =color =rect.y2 =rect.x2 DUP2 =SCRN.y =rect.y1 DUP2 =SCRN.x =rect.x1
473 473
 	@line-rect-hor
474
-		( incr ) ~dev/screen.x #0001 ADD2 =dev/screen.x
475
-		( draw ) ~rect.y1 =dev/screen.y ~color =dev/screen.color
476
-		( draw ) ~rect.y2 =dev/screen.y ~color =dev/screen.color
477
-		,line-rect-hor ~dev/screen.x ~rect.x2 LTH2 JMP2? POP2
478
-	~rect.y1 =dev/screen.y
474
+		( incr ) ~SCRN.x #0001 ADD2 =SCRN.x
475
+		( draw ) ~rect.y1 =SCRN.y ~color =SCRN.color
476
+		( draw ) ~rect.y2 =SCRN.y ~color =SCRN.color
477
+		,line-rect-hor ~SCRN.x ~rect.x2 LTH2 JMP2? POP2
478
+	~rect.y1 =SCRN.y
479 479
 	@line-rect-ver
480
-		( draw ) ~rect.x1 =dev/screen.x ~color =dev/screen.color
481
-		( draw ) ~rect.x2 =dev/screen.x ~color =dev/screen.color
482
-		( incr ) ~dev/screen.y #0001 ADD2 =dev/screen.y
483
-		,line-rect-ver ~dev/screen.y ~rect.y2 #0001 ADD2 LTH2 JMP2? POP2
480
+		( draw ) ~rect.x1 =SCRN.x ~color =SCRN.color
481
+		( draw ) ~rect.x2 =SCRN.x ~color =SCRN.color
482
+		( incr ) ~SCRN.y #0001 ADD2 =SCRN.y
483
+		,line-rect-ver ~SCRN.y ~rect.y2 #0001 ADD2 LTH2 JMP2? POP2
484 484
 
485 485
 RTS
486 486
 
... ...
@@ -774,12 +774,12 @@ RTS
774 774
 
775 775
 |FE00 @ERROR BRK 
776 776
 
777
-|FF10 ;dev/screen Screen
778
-|FF20 ;dev/sprite Sprite
779
-|FF30 ;dev/ctrl   Controller
780
-|FF40 ;dev/key    Keyboard
781
-|FF50 ;dev/mouse  Mouse
782
-|FF60 ;dev/file   File
777
+|FF10 ;SCRN Screen
778
+|FF20 ;SPRT Sprite
779
+|FF30 ;CTRL Controller
780
+|FF40 ;KEYS Keyboard
781
+|FF50 ;MOUS Mouse
782
+|FF60 ;FILE File
783 783
 
784 784
 |FFF0 .RESET .FRAME .ERROR ( vectors )
785 785
 |FFF8 [ e0fc 30cc 30ac ] ( palette )
786 786
\ No newline at end of file
787 787
new file mode 100644
... ...
@@ -0,0 +1,52 @@
1
+( tests/jump )
2
+
3
+&Console { pad 8 char 1 byte 1 short 2 }
4
+
5
+|0100 @RESET 
6
+
7
+	( skip forward with value  )
8
+
9
+	#11 =dev/console.byte
10
+	#03 JMPS BRK BRK BRK 
11
+
12
+	( skip foward with id )
13
+
14
+	#22 =dev/console.byte
15
+	^jump JMPS BRK BRK BRK @jump
16
+
17
+	( skip patterns )
18
+
19
+	#33 =dev/console.byte
20
+
21
+	,skip1 #12 #34 LTH JMP2? POP2
22
+		#ff =dev/console.byte
23
+	@skip1
24
+
25
+	#12 #34 LTH ^skip2 #04 SUB MUL JMPS
26
+		#ff =dev/console.byte
27
+	@skip2
28
+
29
+	#44 =dev/console.byte
30
+
31
+	,end JMP2
32
+
33
+	( should print aa, bb, cc, dd )
34
+
35
+	@label1 #aa =dev/console.byte ^label3 JMPS
36
+	@label2 #cc =dev/console.byte ^label4 JMPS
37
+	@label3 #bb =dev/console.byte ^label2 JMPS
38
+	@label4 #dd =dev/console.byte BRK
39
+
40
+	@end
41
+
42
+	^label1 JMPS
43
+
44
+BRK
45
+
46
+|c000 @FRAME
47
+|d000 @ERROR 
48
+
49
+|FF00 ;dev/console Console
50
+
51
+|FFF0 .RESET .FRAME .ERROR ( vectors )
52
+|FFF8 [ 13fd 1ef3 1bf2 ] ( palette )
0 53
\ No newline at end of file
1 54
new file mode 100644
... ...
@@ -0,0 +1,39 @@
1
+( hello world )
2
+
3
+&Console { pad 8 char 1 byte 1 short 2 }
4
+
5
+;a 1 ;b 1 ;c 1
6
+
7
+|0100 @RESET 
8
+	
9
+	( type: padded muljmp )
10
+
11
+	@loop1 NOP
12
+		~a #01 ADD =a
13
+		~a #d0 LTH ^loop1 MUL JMPS
14
+
15
+	( type: jmppop )
16
+
17
+	@loop2
18
+		~b #01 ADD =b
19
+		,loop2 ~b #d0 LTH JMP2? POP2
20
+
21
+	( type: padded jmppop )
22
+
23
+	@loop3 NOP
24
+		~c #01 ADD =c
25
+		~c #d0 LTH ^loop3 SWP JMPS? POP
26
+
27
+	~a =dev/console.byte
28
+	~b =dev/console.byte 
29
+	~c =dev/console.byte 
30
+
31
+BRK               
32
+
33
+|c000 @FRAME
34
+|d000 @ERROR 
35
+
36
+|FF00 ;dev/console Console
37
+
38
+|FFF0 .RESET .FRAME .ERROR ( vectors )
39
+|FFF8 [ 13fd 1ef3 1bf2 ] ( palette )
0 40
\ No newline at end of file
... ...
@@ -32,7 +32,7 @@ Uint16 peek16(Stack *s, Uint8 a) { return peek8(s, a * 2) + (peek8(s, a * 2 + 1)
32 32
 /* I/O */
33 33
 void op_brk(Uxn *u) { setflag(&u->status, FLAG_HALT, 1); }
34 34
 void op_lit(Uxn *u) { u->literal += 1; }
35
-void op_nop(Uxn *u) { printf("0x%02x \n", pop8(&u->wst)); fflush(stdout); }
35
+void op_nop(Uxn *u) { (void)u; }
36 36
 void op_jmp(Uxn *u) { Uint8 a = pop8(&u->wst); u->ram.ptr += getflag(&u->status, FLAG_SIGN) ? (Sint8)a : a; }
37 37
 void op_jsr(Uxn *u) { Uint8 a = pop8(&u->wst); push16(&u->rst, u->ram.ptr); u->ram.ptr += getflag(&u->status, FLAG_SIGN) ? (Sint8)a : a; }
38 38
 void op_rts(Uxn *u) { u->ram.ptr = pop16(&u->rst); }
... ...
@@ -102,7 +102,7 @@ void (*ops[])(Uxn *u) = {
102 102
 };
103 103
 
104 104
 Uint8 opr[][2] = { 
105
-	{0,0}, {0,0}, {0,0}, {2,0}, {2,0}, {0,0}, {2,1}, {3,0},
105
+	{0,0}, {0,0}, {0,0}, {1,0}, {1,0}, {0,0}, {2,1}, {3,0},
106 106
 	{2,0}, {2,0}, {0,0}, {0,0}, {2,1}, {2,1}, {2,1}, {2,1},
107 107
 	{1,0}, {1,2}, {2,2}, {2,3}, {3,3}, {1,0}, {0,1}, {2,1},
108 108
 	{2,1}, {2,1}, {2,1}, {2,1}, {2,1}, {2,1}, {2,1}, {2,1},