Browse code

Added frame vector to screen.tal

neauoire authored on 08/08/2021 17:21:58
Showing 2 changed files
... ...
@@ -8,12 +8,12 @@
8 8
 |0100 ( -> )
9 9
 
10 10
 	;hello-word 
11
-	&loop
11
+	&while
12 12
 		( send ) LDAk .Console/write DEO
13 13
 		( incr ) #0001 ADD2
14
-		( loop ) LDAk ,&loop JCN
14
+		( loop ) LDAk ,&while JCN
15 15
 	POP2
16
-	#01 .System/debug DEO
16
+	( show debugger ) #01 .System/debug DEO
17 17
 
18 18
 BRK
19 19
 
... ...
@@ -4,19 +4,24 @@
4 4
 
5 5
 ( devices )
6 6
 
7
-|00 @System     [ &vector $2 &pad      $6 &r      $2 &g     $2 &b      $2 ]
7
+|00 @System     [ &vector $2 &wst      $1 &rst    $1 &pad   $4 &r      $2 &g      $2 &b    $2 &debug  $1 &halt $1 ]
8 8
 |20 @Screen     [ &vector $2 &width    $2 &height $2 &pad   $2 &x      $2 &y     $2 &addr $2 &pixel $1 &sprite $1 ]
9 9
 
10 10
 ( variables )
11 11
 
12 12
 |0000
13 13
 
14
-@center [ &x $2 &y $2 ]
14
+@count $2
15
+@center
16
+	&x $2 &y $2
15 17
 
16 18
 ( init )
17 19
 
18 20
 |0100 ( -> )
19 21
 	
22
+	( vector )
23
+	;on-frame .Screen/vector DEO2
24
+
20 25
 	( theme ) 
21 26
 	#f07f .System/r DEO2
22 27
 	#f0e0 .System/g DEO2 
... ...
@@ -35,6 +40,30 @@
35 40
 	
36 41
 BRK
37 42
 
43
+@on-frame ( -> )
44
+
45
+	.count LDZ2 #0001 ADD2 [ DUP2 ] .count STZ2
46
+	
47
+	.center/x LDZ2 #0048 ADD2 .Screen/x DEO2
48
+	.center/y LDZ2 #0050 SUB2 .Screen/y DEO2
49
+
50
+	( color ) #01 STH
51
+
52
+	SWP 
53
+	DUP #04 SFT [ #00 SWP ] #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2
54
+	( draw ) STHkr .Screen/sprite DEO
55
+	#0f AND [ #00 SWP ] #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2
56
+	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
57
+	( draw ) STHkr .Screen/sprite DEO
58
+	DUP #04 SFT [ #00 SWP ] #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2
59
+	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
60
+	( draw ) STHkr .Screen/sprite DEO
61
+	#0f AND [ #00 SWP ] #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2
62
+	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
63
+	( draw ) STHr .Screen/sprite DEO
64
+
65
+BRK
66
+
38 67
 @draw-table ( -- )
39 68
 	
40 69
 	#10 #00
... ...
@@ -65,8 +94,7 @@ RTN
65 94
 		( move ) DUP #f0 AND #02 DIV #00 SWP 
66 95
 			.center/y LDZ2 #0040 SUB2 ADD2 .Screen/y DEO2
67 96
 		( draw ) DUP .Screen/sprite DEO
68
-		( incr ) #01 ADD
69
-		NEQk ,&loop JCN
97
+		#01 ADD NEQk ,&loop JCN
70 98
 	POP2
71 99
 	
72 100
 RTN
... ...
@@ -110,12 +138,12 @@ RTN
110 138
 
111 139
 	#00 STHkr ADD .Screen/sprite DEO
112 140
 	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
113
-	#10 STHkr ADD .Screen/sprite DEO
141
+		#10 STHkr ADD .Screen/sprite DEO
114 142
 	.Screen/x DEI2 #0008 SUB2 .Screen/x DEO2
115 143
 	.Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
116
-	#20 STHkr ADD .Screen/sprite DEO
144
+		#20 STHkr ADD .Screen/sprite DEO
117 145
 	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
118
-	#30 STHr ADD .Screen/sprite DEO
146
+		#30 STHr ADD .Screen/sprite DEO
119 147
 
120 148
 RTN
121 149
 
... ...
@@ -123,13 +151,13 @@ RTN
123 151
 	
124 152
 	.center/y LDZ2 #0040 SUB2 .Screen/y DEO2
125 153
 	.center/x LDZ2 #0048 ADD2 .Screen/x DEO2
126
-	#00 .Screen/pixel DEO
154
+		#00 .Screen/pixel DEO
127 155
 	.center/x LDZ2 #0049 ADD2 .Screen/x DEO2
128
-	#01 .Screen/pixel DEO
156
+		#01 .Screen/pixel DEO
129 157
 	.center/x LDZ2 #004a ADD2 .Screen/x DEO2
130
-	#02 .Screen/pixel DEO
158
+		#02 .Screen/pixel DEO
131 159
 	.center/x LDZ2 #004b ADD2 .Screen/x DEO2
132
-	#03 .Screen/pixel DEO
160
+		#03 .Screen/pixel DEO
133 161
 
134 162
 RTN
135 163