Browse code

Improved some of the examples

neauoire authored on 14/03/2021 02:25:58
Showing 4 changed files
... ...
@@ -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/examples/dev.mouse.usm bin/boot.rom
23
+./bin/assembler projects/examples/win.editor.usm bin/boot.rom
24 24
 ./bin/emulator bin/boot.rom
... ...
@@ -73,17 +73,17 @@ RTS
73 73
 @line-rect ( x1 y1 x2 y2 color )
74 74
 
75 75
 	( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
76
-	@line-rect-hor
76
+	$hor
77 77
 		( incr ) ~Screen.x #0001 ADD2 =Screen.x
78 78
 		( draw ) ~rect.y1 =Screen.y ~color =Screen.color
79 79
 		( draw ) ~rect.y2 =Screen.y ~color =Screen.color
80
-		,line-rect-hor ~Screen.x ~rect.x2 LTH2 JMP2? POP2
80
+		,$hor ~Screen.x ~rect.x2 LTH2 JMP2? POP2
81 81
 	~rect.y1 =Screen.y
82
-	@line-rect-ver
82
+	$ver
83 83
 		( draw ) ~rect.x1 =Screen.x ~color =Screen.color
84 84
 		( draw ) ~rect.x2 =Screen.x ~color =Screen.color
85 85
 		( incr ) ~Screen.y #0001 ADD2 =Screen.y
86
-		,line-rect-ver ~Screen.y ~rect.y2 #0001 ADD2 LTH2 JMP2? POP2
86
+		,$ver ~Screen.y ~rect.y2 #0001 ADD2 LTH2 JMP2? POP2
87 87
 
88 88
 RTS
89 89
 
... ...
@@ -30,11 +30,11 @@ BRK
30 30
 	
31 31
 	( load ) =label.addr =label.color =Sprite.y =Sprite.x 
32 32
 	~label.addr
33
-	@draw-label-left-loop
33
+	$loop
34 34
 		( draw ) DUP2 LDR #00 SWP #0008 MUL2 ,font ADD2 =Sprite.addr ~label.color =Sprite.color
35 35
 		( incr ) #0001 ADD2
36 36
 		( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
37
-		DUP2 LDR #00 NEQ ,draw-label-left-loop ROT JMP2? POP2
37
+		DUP2 LDR #00 NEQ ,$loop ROT JMP2? POP2
38 38
 	POP2
39 39
 
40 40
 RTS
... ...
@@ -44,11 +44,11 @@ RTS
44 44
 	( load ) =label.addr =label.color =Sprite.y
45 45
 	( align ) ~label.addr ,get-text-length JSR2 #0008 MUL2 #0002 DIV2 SUB2 =Sprite.x 
46 46
 	~label.addr
47
-	@draw-label-middle-loop
47
+	$loop
48 48
 		( draw ) DUP2 LDR #00 SWP #0008 MUL2 ,font ADD2 =Sprite.addr ~label.color =Sprite.color
49 49
 		( incr ) #0001 ADD2
50 50
 		( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
51
-		DUP2 LDR #00 NEQ ,draw-label-middle-loop ROT JMP2? POP2
51
+		DUP2 LDR #00 NEQ ,$loop ROT JMP2? POP2
52 52
 	POP2
53 53
 
54 54
 RTS
... ...
@@ -58,11 +58,11 @@ RTS
58 58
 	( load ) =label.addr =label.color =Sprite.y
59 59
 	( align ) ~label.addr ,get-text-length JSR2 #0008 MUL2 SUB2 #0008 SUB2 =Sprite.x 
60 60
 	~label.addr
61
-	@draw-label-right-loop
61
+	$loop
62 62
 		( draw ) DUP2 LDR #00 SWP #0008 MUL2 ,font ADD2 =Sprite.addr ~label.color =Sprite.color
63 63
 		( incr ) #0001 ADD2
64 64
 		( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
65
-		DUP2 LDR #00 NEQ ,draw-label-right-loop ROT JMP2? POP2
65
+		DUP2 LDR #00 NEQ ,$loop ROT JMP2? POP2
66 66
 	POP2
67 67
 
68 68
 RTS
... ...
@@ -70,10 +70,10 @@ RTS
70 70
 @get-text-length ( label )
71 71
 	
72 72
 	#0000 ( counter )
73
-	@get-text-length-loop
73
+	$loop
74 74
 		( incr ) #0001 ADD2 OVR2 OVR2 ADD2 
75
-		LDR #00 NEQ ,get-text-length-loop ROT JMP2? POP2
76
-	SWP2 POP2 #0001 SUB2
75
+		LDR #00 NEQ ,$loop ROT JMP2? POP2
76
+	SWP2 POP2
77 77
 
78 78
 RTS
79 79
 
... ...
@@ -11,7 +11,7 @@
11 11
 
12 12
 |0100 @RESET
13 13
 	
14
-	#0030 =window.x1 #0030 =window.y1 #00a8 =window.x2 #0090 =window.y2
14
+	#0030 =window.x1 #0030 =window.y1 #0090 =window.x2 #0090 =window.y2
15 15
 
16 16
 	~window.x1 #0010 ADD2 =editor.x1
17 17
 	~window.y1 #0010 ADD2 =editor.y1
... ...
@@ -79,106 +79,83 @@ RTS
79 79
 	~editor.addr =Sprite.addr
80 80
 
81 81
 	#00 =pixel.y
82
-	@redraw-ver
82
+	$ver
83 83
 		#00 =pixel.x
84 84
 		~editor.x1 =Sprite.x
85
-		@redraw-hor
86
-
85
+		$hor
87 86
 			( get bit )
88 87
 			,cell0_icn #00
89 88
 			~editor.addr #00 ~pixel.y ADD2 LDR #07 ~pixel.x SUB ROR #01 AND ( get bit )
90 89
 			#0008 MUL2 ADD2 =Sprite.addr ( add *8 )
91
-
92 90
 			( draw ) #08 =Sprite.color
93 91
 			( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
94 92
 			( incr ) ~pixel.x #01 ADD =pixel.x
95
-			,redraw-hor ~Sprite.x ~editor.x1 #0040 ADD2 LTH2 JMP2? POP2
93
+			,$hor ~Sprite.x ~editor.x1 #0040 ADD2 LTH2 JMP2? POP2
96 94
 		( incr ) ~Sprite.y #0008 ADD2 =Sprite.y
97 95
 		( incr ) ~pixel.y #01 ADD =pixel.y
98
-		,redraw-ver ~Sprite.y ~editor.y1 #0040 ADD2 LTH2 JMP2? POP2
99
-
96
+		,$ver ~Sprite.y ~editor.y1 #0040 ADD2 LTH2 JMP2? POP2
100 97
 	~editor.addr =Sprite.addr
101 98
 	~window.y1 =Sprite.y
102 99
 	~window.x2 #0008 SUB2 =Sprite.x
103 100
 	( draw ) #01 =Sprite.color
104 101
 
105
-	( TODO: Make a loop.. )
106
-	~window.x1 #0058 ADD2 ~window.y1 #0010 ADD2 #08 ~editor.addr ,draw-byte JSR2
107
-	~window.x1 #0058 ADD2 ~window.y1 #0018 ADD2 #08 ~editor.addr #0001 ADD2 ,draw-byte JSR2
108
-	~window.x1 #0058 ADD2 ~window.y1 #0020 ADD2 #08 ~editor.addr #0002 ADD2 ,draw-byte JSR2
109
-	~window.x1 #0058 ADD2 ~window.y1 #0028 ADD2 #08 ~editor.addr #0003 ADD2 ,draw-byte JSR2
110
-	~window.x1 #0058 ADD2 ~window.y1 #0030 ADD2 #08 ~editor.addr #0004 ADD2 ,draw-byte JSR2
111
-	~window.x1 #0058 ADD2 ~window.y1 #0038 ADD2 #08 ~editor.addr #0005 ADD2 ,draw-byte JSR2
112
-	~window.x1 #0058 ADD2 ~window.y1 #0040 ADD2 #08 ~editor.addr #0006 ADD2 ,draw-byte JSR2
113
-	~window.x1 #0058 ADD2 ~window.y1 #0048 ADD2 #08 ~editor.addr #0007 ADD2 ,draw-byte JSR2
114
-
115 102
 RTS
116 103
 
117 104
 @draw-label-left ( x y color addr )
118 105
 	
119 106
 	( load ) =label.addr =label.color =Sprite.y =Sprite.x 
120 107
 	~label.addr
121
-	@draw-label-left-loop
108
+	$loop NOP
122 109
 		( draw ) DUP2 LDR #00 SWP #0008 MUL2 ,font ADD2 =Sprite.addr ~label.color =Sprite.color
123 110
 		( incr ) #0001 ADD2
124
-		( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
125
-		DUP2 #0001 ADD2  LDR #00 NEQ ,draw-label-left-loop ROT JMP2? POP2
111
+		( incr ) ~Sprite.x #0007 ADD2 =Sprite.x
112
+		DUP2 LDR #00 NEQ ^$loop MUL JMPS
126 113
 	POP2
127 114
 
128 115
 RTS
129 116
 
130
-@draw-byte ( x y color addr )
131
-	
132
-	( load ) =addr =color =Sprite.y =Sprite.x
133
-	,font_hex #00 ~addr LDR #f0 AND #04 ROR #08 MUL ADD2 =Sprite.addr ~color =Sprite.color
134
-	~Sprite.x #0008 ADD2 =Sprite.x
135
-	,font_hex #00 ~addr LDR #0f AND #08 MUL ADD2 =Sprite.addr ~color =Sprite.color
136
-
137
-RTS
138
-
139 117
 @fill-rect ( x1 y1 x2 y2 color )
140 118
 
141 119
 	( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
142
-	@fill-rect-ver
120
+	$ver NOP
143 121
 		~rect.x1 =Screen.x
144
-		@fill-rect-hor
122
+		$hor NOP
145 123
 			( draw ) ~color =Screen.color
146 124
 			( incr ) ~Screen.x #0001 ADD2 =Screen.x
147
-			,fill-rect-hor ~Screen.x ~rect.x2 LTH2 JMP2? POP2
125
+			~Screen.x ~rect.x2 LTH2 ^$hor MUL JMPS
148 126
 		( incr ) ~Screen.y #0001 ADD2 =Screen.y
149
-		,fill-rect-ver ~Screen.y ~rect.y2 LTH2 JMP2? POP2
127
+		~Screen.y ~rect.y2 LTH2 ^$ver MUL JMPS
150 128
 
151 129
 RTS
152 130
 
153 131
 @line-rect ( x1 y1 x2 y2 color )
154 132
 
155 133
 	( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
156
-	@line-rect-hor
134
+	$hor NOP
157 135
 		( incr ) ~Screen.x #0001 ADD2 =Screen.x
158 136
 		( draw ) ~rect.y1 =Screen.y ~color =Screen.color
159 137
 		( draw ) ~rect.y2 =Screen.y ~color =Screen.color
160
-		,line-rect-hor ~Screen.x ~rect.x2 LTH2 JMP2? POP2
138
+		~Screen.x ~rect.x2 LTH2 ^$hor MUL JMPS
161 139
 	~rect.y1 =Screen.y
162
-	@line-rect-ver
140
+	$ver NOP
163 141
 		( draw ) ~rect.x1 =Screen.x ~color =Screen.color
164 142
 		( draw ) ~rect.x2 =Screen.x ~color =Screen.color
165 143
 		( incr ) ~Screen.y #0001 ADD2 =Screen.y
166
-		,line-rect-ver ~Screen.y ~rect.y2 #0001 ADD2 LTH2 JMP2? POP2
144
+		~Screen.y ~rect.y2 #0001 ADD2 LTH2 ^$ver MUL JMPS
167 145
 
168 146
 RTS
169 147
 
170 148
 @tile-rect ( x1 y1 x2 y2 color addr )
171 149
 
172 150
 	=Sprite.addr =color =rect.y2 =rect.x2 DUP2 =Sprite.y =rect.y1 DUP2 =Sprite.x =rect.x1
173
-
174
-	@tile-rect-ver
151
+	$ver NOP
175 152
 		~rect.x1 =Sprite.x
176
-		@tile-rect-hor
153
+		$hor NOP
177 154
 			( draw ) ~color =Sprite.color
178 155
 			( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
179
-			,tile-rect-hor ~Sprite.x ~rect.x2 LTH2 JMP2? POP2
156
+			~Sprite.x ~rect.x2 LTH2 ^$hor MUL JMPS
180 157
 		( incr ) ~Sprite.y #0008 ADD2 =Sprite.y
181
-		,tile-rect-ver ~Sprite.y ~rect.y2 LTH2 JMP2? POP2
158
+		~Sprite.y ~rect.y2 LTH2 ^$ver MUL JMPS
182 159
 
183 160
 RTS
184 161
 
... ...
@@ -207,19 +184,7 @@ RTS
207 184
 @cell0_icn   [ 7c82 8282 8282 7c00 ]
208 185
 @cell1_icn   [ 7cfe fefe fefe 7c00 ]
209 186
 
210
-@window_name [ pixel-editor 00 ]
211
-
212
-@font_hex ( 0-F ) 
213
-[
214
-	7c82 8282 8282 7c00 3010 1010 1010 1000
215
-	7c82 027c 8080 fe00 7c82 027c 0282 7c00
216
-	4282 82fe 0202 0200 fc82 807c 0282 7c00
217
-	7c82 80fc 8282 7c00 7c82 021e 0202 0200
218
-	7c82 827c 8282 7c00 7c82 827e 0202 0400
219
-	7c82 027e 8282 7e00 fc82 82fc 8282 fc00
220
-	7c82 8080 8082 7c00 fc82 8282 8282 fc00
221
-	7c82 80f0 8082 7c00 7c82 80f0 8080 8000
222
-]
187
+@window_name [ Editor 00 ]
223 188
 
224 189
 @font ( spectrum-zx font ) 
225 190
 [
... ...
@@ -262,7 +227,7 @@ RTS
262 227
 |FF10 ;Screen { width 2 height 2 pad 4 x 2 y 2 color 1 }
263 228
 |FF20 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
264 229
 |FF30 ;Controller { buttons 1 }
265
-|FF50 ;Mouse  { x 2 y 2 state 1 chord 1 }
230
+|FF50 ;Mouse { x 2 y 2 state 1 chord 1 }
266 231
 
267 232
 |FFF0 .RESET .FRAME .ERROR ( vectors )
268 233
 |FFF8 [ 0fcf 0fc4 0fc4 ] ( palette )
269 234
\ No newline at end of file