Browse code

(wireworld.tal) Optimized morph

neauoire authored on 22/01/2022 22:48:07
Showing 1 changed files
... ...
@@ -27,8 +27,9 @@
27 27
 %RTN   { JMP2r }
28 28
 %TOS { #00 SWP }
29 29
 
30
-%WIDTH { #40 }
30
+%WIDTH  { #40 }
31 31
 %HEIGHT { #40 }
32
+%LENGTH { #1000 }
32 33
 
33 34
 ( devices )
34 35
 
... ...
@@ -74,7 +75,7 @@ BRK
74 75
 	.timer/frame LDZk 
75 76
 		#03 AND ,&no-run JCN 
76 77
 			;run JSR2 
77
-			;future-world ;past-world #4000 ;mcpy JSR2
78
+			;past-world LENGTH ++ ;past-world LENGTH ;mcpy JSR2
78 79
 			;redraw JSR2
79 80
 			&no-run
80 81
 		LDZk INC SWP STZ
... ...
@@ -144,7 +145,7 @@ RTN
144 145
 		&hor
145 146
 			( x,y ) DUP STHkr 
146 147
 			( cell ) DUP2 ,get-addr JSR STH2k LDA 
147
-			( transform ) ,transform JSR STH2r ( future ) #4000 ++ STA
148
+			( transform ) ,transform JSR STH2r ( future ) LENGTH ++ STA
148 149
 			INC GTHk ,&hor JCN
149 150
 		POP2
150 151
 		POPr
... ...
@@ -153,33 +154,35 @@ RTN
153 154
 
154 155
 RTN
155 156
 
156
-@transform ( xy cell -- cell )
157
-
158
-	DUP #03 ! ,&no-head JCN POP POP2 #02 RTN &no-head
159
-	DUP #02 ! ,&no-tail JCN POP POP2 #01 RTN &no-tail
160
-	DUP #01 ! ,&no-cond JCN POP ,morph JSR #02 * INC RTN &no-cond
161
-	NIP NIP
162
-
163
-RTN
164
-
165 157
 @get-addr ( x y -- addr* )
166 158
 
167 159
 	TOS [ #00 WIDTH ] ** ROT TOS ++ ;past-world ++
168 160
 
169 161
 RTN
170 162
 
171
-@morph ( xy -- bool )
163
+@transform ( xy cell -- cell )
172 164
 
173
-	LITr 00
174
-	DUP2 SWP #01 - SWP #01 - ,get-addr JSR LDA #03 ! JMP INCr
175
-	DUP2 #01 - ,get-addr JSR LDA #03 ! JMP INCr
176
-	DUP2 SWP INC SWP #01 - ,get-addr JSR LDA #03 ! JMP INCr
177
-	DUP2 SWP #01 - SWP ,get-addr JSR LDA #03 ! JMP INCr
178
-	DUP2 SWP INC SWP ,get-addr JSR LDA #03 ! JMP INCr
179
-	DUP2 SWP #01 - SWP INC ,get-addr JSR LDA #03 ! JMP INCr
180
-	DUP2 INC ,get-addr JSR LDA #03 ! JMP INCr
181
-	SWP INC SWP INC ,get-addr JSR LDA #03 ! JMP INCr
182
-	STHkr #02 = STHr #01 = #0000 >>
165
+	DUP #00 ! ,&no-null JCN NIP NIP RTN &no-null
166
+	DUP #03 ! ,&no-head JCN POP POP2 #02 RTN &no-head
167
+	DUP #02 ! ,&no-tail JCN POP POP2 #01 RTN &no-tail
168
+	DUP #01 ! ,&no-cond JCN POP 
169
+		LITr 00
170
+		DUP2 #01 - ,get-addr JSR 
171
+			( tl ) #0001 -- LDAk #03 ! JMP INCr
172
+			( tc ) INC2 LDAk #03 ! JMP INCr
173
+			( tr ) INC2 LDA #03 ! JMP INCr
174
+		DUP2 ,get-addr JSR
175
+			( ml ) #0001 -- LDAk #03 ! JMP INCr
176
+			( mr ) INC2 INC2 LDA #03 ! JMP INCr
177
+		INC ,get-addr JSR
178
+			( bl ) #0001 -- LDAk #03 ! JMP INCr
179
+			( bc ) INC2 LDAk #03 ! JMP INCr
180
+			( br ) INC2 LDA #03 ! JMP INCr
181
+		STHkr #02 = STHr #01 = #0000 >>
182
+		#02 * INC RTN 
183
+		&no-cond
184
+	( unknown )
185
+	NIP NIP
183 186
 
184 187
 RTN
185 188
 
... ...
@@ -206,4 +209,4 @@ JMP2r
206 209
 	What do I do? 
207 210
 	How do I find peace? )
208 211
 
209
-@past-world $4000 @future-world
212
+@past-world