Browse code

Improved hover example

neauoire authored on 01/03/2021 16:55:16
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 examples/dev.mouse.usm bin/boot.rom
23
+./bin/assembler examples/gui.hover.usm bin/boot.rom
24 24
 ./bin/emulator bin/boot.rom
... ...
@@ -329,7 +329,11 @@ doctrl(Uxn *u, SDL_Event *event, int z)
329 329
 Uint8
330 330
 console_poke(Uint8 *m, Uint16 ptr, Uint8 b0, Uint8 b1)
331 331
 {
332
-	printf("%c", b1);
332
+	switch(b0) {
333
+	case 0x08: printf("%c", b1); break;
334
+	case 0x09: printf("%02x", b1); break;
335
+	case 0x0a: printf("%d", b1); break;
336
+	}
333 337
 	fflush(stdout);
334 338
 	(void)m;
335 339
 	(void)ptr;
... ...
@@ -1,6 +1,6 @@
1 1
 ( hello world )
2 2
 
3
-&Console { pad 8 stdio 1 }
3
+&Console { pad 8 char 1 byte 1 }
4 4
 
5 5
 |0100 @RESET 
6 6
 	
... ...
@@ -11,11 +11,11 @@ BRK
11 11
 @print-label ( text )
12 12
 
13 13
 	@cliloop
14
-		DUP2 LDR =dev/console.stdio              ( write pointer value to console )
14
+		DUP2 LDR =dev/console.char               ( write pointer value to console )
15 15
 		#0001 ADD2                               ( increment string pointer )
16 16
 		DUP2 LDR #00 NEQ ,cliloop ROT JMP? POP2  ( while *ptr!=0 goto loop )
17 17
 	POP2
18
-		
18
+
19 19
 RTS                 
20 20
 
21 21
 @text1 [ Hello World ] <1 .00 ( add text to memory, return 1 byte, add null byte )
... ...
@@ -22,31 +22,32 @@
22 22
 
23 23
 BRK
24 24
 
25
-
26 25
 |0200 @FRAME 
27 26
 
28 27
 	,pointer_icn =cursor
29 28
 
30 29
 	#01 =color
31
-
30
+	( matrix comparison )
32 31
 	~dev/mouse.x ~r1.x1 GTH2 ~dev/mouse.x ~r1.x2 LTH2 #0101 EQU2
33 32
 	~dev/mouse.y ~r1.y1 GTH2 ~dev/mouse.y ~r1.y2 LTH2 #0101 EQU2
34
-	#0101 NEQ2 ,skip1 ROT JMP? POP2 #02 =color ,hand_icn =cursor @skip1
35
-	~r1.x1 ~r1.y1 ~r1.x2 ~r1.y2 ~color ,line-rect JSR
33
+	#0101 NEQ2 ,draw1 ROT JMP? POP2 #02 =color ,hand_icn =cursor 
34
+	@draw1 ~r1.x1 ~r1.y1 ~r1.x2 ~r1.y2 ~color ,line-rect JSR
36 35
 	
37 36
 	#01 =color
38
-
39
-	~dev/mouse.x ~r2.x1 GTH2 ~dev/mouse.x ~r2.x2 LTH2 #0101 EQU2
40
-	~dev/mouse.y ~r2.y1 GTH2 ~dev/mouse.y ~r2.y2 LTH2 #0101 EQU2
41
-	#0101 NEQ2 ,skip2 ROT JMP? POP2 #02 =color ,hand_icn =cursor @skip2
42
-	~r2.x1 ~r2.y1 ~r2.x2 ~r2.y2 ~color ,line-rect JSR
37
+	( 2-step comparison )
38
+	,draw2 ~dev/mouse.x ~r2.x1 GTH2 ~dev/mouse.x ~r2.x2 LTH2 #0101 NEQ2 JMP? POP2
39
+		,draw2 ~dev/mouse.y ~r2.y1 GTH2 ~dev/mouse.y ~r2.y2 LTH2 #0101 NEQ2 JMP? POP2
40
+			#03 =color ,hand_icn =cursor 
41
+	@draw2 ~r2.x1 ~r2.y1 ~r2.x2 ~r2.y2 ~color ,line-rect JSR
43 42
 	
44 43
 	#01 =color
45
-
46
-	~dev/mouse.x ~r3.x1 GTH2 ~dev/mouse.x ~r3.x2 LTH2 #0101 EQU2
47
-	~dev/mouse.y ~r3.y1 GTH2 ~dev/mouse.y ~r3.y2 LTH2 #0101 EQU2
48
-	#0101 NEQ2 ,skip3 ROT JMP? POP2 #02 =color ,hand_icn =cursor @skip3
49
-	~r3.x1 ~r3.y1 ~r3.x2 ~r3.y2 ~color ,line-rect JSR
44
+	( 4-step comparison )
45
+	,draw3 ~dev/mouse.x ~r3.x1 LTH2 JMP? POP2
46
+		,draw3 ~dev/mouse.x ~r3.x2 GTH2 JMP? POP2
47
+			,draw3 ~dev/mouse.y ~r3.y1 LTH2 JMP? POP2
48
+				,draw3 ~dev/mouse.y ~r3.y2 GTH2 JMP? POP2
49
+					#02 =color ,hand_icn =cursor
50
+	@draw3 ~r3.x1 ~r3.y1 ~r3.x2 ~r3.y2 ~color ,line-rect JSR
50 51
 
51 52
 	,draw-cursor JSR
52 53