Browse code

Rewrote the image routine

neauoire authored on 25/02/2021 04:28:20
Showing 5 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 examples/devchord.usm bin/boot.rom
23
+./bin/assembler examples/images.usm bin/boot.rom
24 24
 ./bin/emulator bin/boot.rom
... ...
@@ -196,7 +196,7 @@ drawdebugger(Uint32 *dst, Uxn *u)
196 196
 		Uint8 x = (i % 8) * 3 + 3, y = i / 8 + 3, b = u->ram.dat[i];
197 197
 		drawicn(dst, x * 8, y * 8, icons[(b >> 4) & 0xf], 1, 0);
198 198
 		drawicn(dst, x * 8 + 8, y * 8, icons[b & 0xf], 1, 0);
199
-		y = VER - i / 8, b = u->wst.dat[i];
199
+		y = VER - 1 + i / 8, b = u->wst.dat[i];
200 200
 		drawicn(dst, x * 8, y * 8, icons[(b >> 4) & 0xf], 1 + (u->wst.ptr == i), 0);
201 201
 		drawicn(dst, x * 8 + 8, y * 8, icons[b & 0xf], 1 + (u->wst.ptr == i), 0);
202 202
 	}
203 203
deleted file mode 100644
... ...
@@ -1,112 +0,0 @@
1
-( drag )
2
-
3
-:dev/r fff8 ( std read port )
4
-:dev/w fff9 ( std write port )
5
-
6
-;dragx 2  ;dragy 2
7
-;mousex 2 ;mousey 2 
8
-;lastx 2  ;lasty 2 
9
-;originx 2 ;originy 2 
10
-;down 1 ;state 1
11
-
12
-|0100 @RESET 
13
-	
14
-	#05 =dev/r ( set dev/read mouse )
15
-	#02 =dev/w ( set dev/write to sprite ) 
16
-	,draw-picture JSR
17
-
18
-BRK
19
-
20
-|c000 @FRAME
21
-
22
-	( clear last cursor )
23
-	#10 ,clear_icn ~lastx ~lasty ,draw-sprite JSR
24
-	( record mouse values )
25
-	#00 IOR2 =mousex #02 IOR2 =mousey
26
-	#04 IOR #11 ADD =state
27
-	( draw mouse )
28
-	~state ,cursor_icn ~mousex ~mousey ,draw-sprite JSR
29
-	( update last pos )
30
-	~mousex =lastx ~mousey =lasty 
31
-
32
-	( get touch )
33
-	#05 IOR #01 EQU ,on-touch ROT JMP? POP2
34
-	#05 IOR #10 EQU ,on-release ROT JMP? POP2
35
-	#01 ~down EQU ,on-drag ROT JMP? POP2
36
-
37
-	BRK
38
-
39
-	@on-touch
40
-		#01 =down
41
-		#00 IOR2 =originx #02 IOR2 =originy
42
-		,update JSR
43
-	BRK
44
-
45
-	@on-release
46
-		#00 =down
47
-		,update JSR
48
-	BRK
49
-
50
-	@on-drag
51
-		#00 IOR2 ~originx SUBS2 ~dragx ADDS2 =dragx
52
-		#02 IOR2 ~originy SUBS2 ~dragy ADDS2 =dragy
53
-		#00 IOR2 =originx #02 IOR2 =originy
54
-		,update JSR
55
-	BRK
56
-
57
-	@update
58
-		,draw-picture JSR
59
-
60
-BRK
61
-
62
-@draw-picture
63
-	#01 ,graphic #0040 ~dragx ADD2 #0040 ~dragy ADD2 ,draw-sprite JSR
64
-	#01 ,graphic #0008 ADD2 #0048 ~dragx ADD2 #0040 ~dragy ADD2 ,draw-sprite JSR
65
-	#01 ,graphic #0010 ADD2 #0050 ~dragx ADD2 #0040 ~dragy ADD2 ,draw-sprite JSR
66
-	#01 ,graphic #0018 ADD2 #0058 ~dragx ADD2 #0040 ~dragy ADD2 ,draw-sprite JSR
67
-	#01 ,graphic #0020 ADD2 #0040 ~dragx ADD2 #0048 ~dragy ADD2 ,draw-sprite JSR
68
-	#01 ,graphic #0028 ADD2 #0048 ~dragx ADD2 #0048 ~dragy ADD2 ,draw-sprite JSR
69
-	#01 ,graphic #0030 ADD2 #0050 ~dragx ADD2 #0048 ~dragy ADD2 ,draw-sprite JSR
70
-	#01 ,graphic #0038 ADD2 #0058 ~dragx ADD2 #0048 ~dragy ADD2 ,draw-sprite JSR
71
-	#01 ,graphic #0040 ADD2 #0040 ~dragx ADD2 #0050 ~dragy ADD2 ,draw-sprite JSR
72
-	#01 ,graphic #0048 ADD2 #0048 ~dragx ADD2 #0050 ~dragy ADD2 ,draw-sprite JSR
73
-	#01 ,graphic #0050 ADD2 #0050 ~dragx ADD2 #0050 ~dragy ADD2 ,draw-sprite JSR
74
-	#01 ,graphic #0058 ADD2 #0058 ~dragx ADD2 #0050 ~dragy ADD2 ,draw-sprite JSR
75
-	#01 ,graphic #0060 ADD2 #0040 ~dragx ADD2 #0058 ~dragy ADD2 ,draw-sprite JSR
76
-	#01 ,graphic #0068 ADD2 #0048 ~dragx ADD2 #0058 ~dragy ADD2 ,draw-sprite JSR
77
-	#01 ,graphic #0070 ADD2 #0050 ~dragx ADD2 #0058 ~dragy ADD2 ,draw-sprite JSR
78
-	#01 ,graphic #0078 ADD2 #0058 ~dragx ADD2 #0058 ~dragy ADD2 ,draw-sprite JSR
79
-	RTS
80
-
81
-@draw-sprite
82
-	IOW2 ( y byte )
83
-	IOW2 ( x byte )
84
-	IOW2 ( sprite address )
85
-	IOW ( layer-color )
86
-	RTS
87
-
88
-@clear_icn   [ 0000 0000 0000 0000 ]
89
-@cursor_icn  [ 80c0 e0f0 f8e0 1000 ]
90
-
91
-@graphic [
92
-	ff80 8080 8080 8088
93
-	ffff fffc f8f9 f1f4
94
-	ffff 0010 c721 2120
95
-	ffff 3f0f 0717 c343
96
-	8888 8080 8080 8080
97
-	f0f1 f2f5 f2f1 f0f4
98
-	1208 804c 9212 4c00
99
-	7303 0343 1b1b fbfb
100
-	8080 8f83 8383 8393
101
-	f0f3 f1f0 e4c0 80ff
102
-	00c7 c7c6 4606 00ff
103
-	c3d3 c307 870f 3fff
104
-	8f83 8383 8383 83ff
105
-	fff7 fdff c0e2 f1ff
106
-	7fef bfff 07af 5fff
107
-	ffff ffff ffff ffff
108
-]
109
-
110
-|d000 @ERROR BRK 
111
-|FFF0 [ f0ac f0bb f053 ] ( palette )
112
-|FFFA .RESET .FRAME .ERROR ( vectors )
113 0
new file mode 100644
... ...
@@ -0,0 +1,87 @@
1
+( drag )
2
+
3
+:dev/r fff8 ( std read port )
4
+:dev/w fff9 ( std write port )
5
+
6
+&Point { x 1 y 1 }
7
+
8
+&Point2d { x 2 y 2 }
9
+&Picture2d { x 2 y 2 width 1 height 1 color 1 addr 2 }
10
+
11
+;pict Picture2d ;pictpt Point
12
+
13
+|0100 @RESET 
14
+	
15
+	#05 =dev/r ( set dev/read mouse )
16
+	#02 =dev/w ( set dev/write to sprite ) 
17
+
18
+	#0030 #0042 #04 #04 #01 ,graphic ,draw-picture JSR
19
+	#0040 #0052 #04 #04 #02 ,graphic ,draw-picture JSR
20
+	#0050 #0062 #04 #04 #03 ,graphic ,draw-picture JSR
21
+
22
+	#0058 #0042 #04 #04 #05 ,graphic ,draw-picture JSR
23
+	#0068 #0052 #04 #04 #06 ,graphic ,draw-picture JSR
24
+	#0078 #0062 #04 #04 #07 ,graphic ,draw-picture JSR
25
+
26
+	#0080 #0042 #04 #04 #0a ,graphic ,draw-picture JSR
27
+	#0090 #0052 #04 #04 #0c ,graphic ,draw-picture JSR
28
+	#00a0 #0062 #04 #04 #0e ,graphic ,draw-picture JSR
29
+
30
+BRK
31
+
32
+@draw-picture ( x y width height addr -> picture ) 
33
+
34
+	=pict.addr =pict.color =pict.height =pict.width =pict.y =pict.x
35
+	#00 =pictpt.y
36
+	@draw-picture-row
37
+		#00 =pictpt.x
38
+		@draw-picture-col
39
+			( draw )
40
+			~pict.color 
41
+			~pict.addr 
42
+			#0008 #00 ~pictpt.x MUL2 ADD2 ( x )
43
+			#0008 #00 ~pictpt.y ~pict.width MUL MUL2 ADD2 ( y * width )
44
+			~pict.x #0008 #00 ~pictpt.x MUL2 ADD2
45
+			~pict.y #0008 #00 ~pictpt.y MUL2 ADD2
46
+			,draw-sprite JSR
47
+			( draw - end )
48
+			( incr x ) ~pictpt.x #01 ADD =pictpt.x
49
+			~pictpt.x ~pict.width LTH ,draw-picture-col ROT JMP? POP2
50
+		( incr y ) ~pictpt.y #01 ADD =pictpt.y
51
+		~pictpt.y ~pict.height LTH ,draw-picture-row ROT JMP? POP2
52
+		
53
+RTS
54
+
55
+@draw-sprite
56
+	IOW2 ( y byte )
57
+	IOW2 ( x byte )
58
+	IOW2 ( sprite address )
59
+	IOW ( layer-color )
60
+	RTS
61
+
62
+@clear_icn   [ 0000 0000 0000 0000 ]
63
+@cursor_icn  [ 80c0 e0f0 f8e0 1000 ]
64
+
65
+@graphic [
66
+	ff80 8080 8080 8088
67
+	ffff fffc f8f9 f1f4
68
+	ffff 0010 c721 2120
69
+	ffff 3f0f 0717 c343
70
+	8888 8080 8080 8080
71
+	f0f1 f2f5 f2f1 f0f4
72
+	1208 804c 9212 4c00
73
+	7303 0343 1b1b fbfb
74
+	8080 8f83 8383 8393
75
+	f0f3 f1f0 e4c0 80ff
76
+	00c7 c7c6 4606 00ff
77
+	c3d3 c307 870f 3fff
78
+	8f83 8383 8383 83ff
79
+	fff7 fdff c0e2 f1ff
80
+	7fef bfff 07af 5fff
81
+	ffff ffff ffff ffff
82
+]
83
+
84
+|c000 @FRAME BRK
85
+|d000 @ERROR BRK 
86
+|FFF0 [ f0ac f0bb f053 ] ( palette )
87
+|FFFA .RESET .FRAME .ERROR ( vectors )
... ...
@@ -108,7 +108,7 @@ Uint8 opr[][2] = {
108 108
 	{1,0}, {1,2}, {2,2}, {2,3}, {3,3}, {1,0}, {0,1}, {2,1},
109 109
 	{2,1}, {2,1}, {2,1}, {2,1}, {2,1}, {2,1}, {2,1}, {2,1},
110 110
 	/* 16-bit */
111
-	{0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, /* TODO */
111
+	{0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {2,2}, {4,0}, /* TODO */
112 112
 	{0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, /* TODO */
113 113
 	{0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {1,0}, {0,1}, {0,0}, /* TODO */
114 114
 	{4,2}, {4,2}, {4,2}, {4,2}, {4,2}, {4,2}, {4,2}, {4,2}