Browse code

Minor changes to a few example projects

Devine Lu Linvega authored on 28/05/2022 03:12:59
Showing 6 changed files
... ...
@@ -1,30 +1,5 @@
1 1
 ( a blank file )
2 2
 
3
-%+  { ADD }  %-  { SUB }  %*  { MUL }  %/  { DIV }
4
-%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
5
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
6
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
7
-
8
-%2*  { #10 SFT } %2/  { #01 SFT } %2**  { #10 SFT2 } %2//  { #01 SFT2 }
9
-%4*  { #20 SFT } %4/  { #02 SFT } %4**  { #20 SFT2 } %4//  { #02 SFT2 }
10
-%8*  { #30 SFT } %8/  { #03 SFT } %8**  { #30 SFT2 } %8//  { #03 SFT2 }
11
-%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 }
12
-%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 }
13
-
14
-%2MOD  { #01 AND } %2MOD2  { #0001 AND2 }
15
-%4MOD  { #03 AND } %4MOD2  { #0003 AND2 }
16
-%8MOD  { #07 AND } %8MOD2  { #0007 AND2 }
17
-%10MOD { #0f AND } %10MOD2 { #000f AND2 }
18
-
19
-%HALT   { #010f DEO }
20
-%EMIT   { #18 DEO }
21
-%DEBUG  { ;print/byte JSR2 #0a EMIT }
22
-%DEBUG2 { ;print/short JSR2 #0a EMIT }
23
-
24
-%RTN        { JMP2r }
25
-
26
-( devices )
27
-
28 3
 |00 @System     &vector $2 &wst      $1 &rst    $1 &eaddr  $2 &ecode  $1 &pad     $1 &r       $2 &g      $2 &b     $2 &debug  $1 &halt $1
29 4
 |10 @Console    &vector $2 &read     $1 &pad    $5 &write  $1 &error  $1
30 5
 |20 @Screen     &vector $2 &width    $2 &height $2 &auto   $1 &pad    $1 &x       $2 &y       $2 &addr   $2 &pixel $1 &sprite $1
... ...
@@ -55,27 +30,17 @@ BRK
55 30
 
56 31
 @print ( short* -- )
57 32
 
58
-	&short ( short* -- ) SWP ,&byte JSR
33
+	SWP ,&byte JSR
59 34
 	&byte ( byte -- ) DUP #04 SFT ,&char JSR
60
-	&char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD EMIT
61
-
62
-RTN
63
-
64
-@print-dec ( value* -- )
65
-
66
-	#2710 DIV2k DUP #30 ADD #18 DEO MUL2 SUB2
67
-	#03e8 DIV2k DUP #30 ADD #18 DEO MUL2 SUB2
68
-	#0064 DIV2k DUP #30 ADD #18 DEO MUL2 SUB2
69
-	#000a DIV2k DUP #30 ADD #18 DEO MUL2 SUB2
70
-	#30 ADD #18 DEO POP
35
+	&char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO
71 36
 
72
-RTN
37
+JMP2r
73 38
 
74
-@print-str ( string* -- )
39
+@print-str ( str* -- )
75 40
 
76
-	#0001 --
77 41
 	&while
78
-		INC2 LDAk DUP #18 DEO ,&while JCN 
42
+		LDAk #18 DEO
43
+		INC2 LDAk ,&while JCN
79 44
 	POP2
80 45
 
81
-RTN
82 46
\ No newline at end of file
47
+JMP2r
... ...
@@ -26,7 +26,7 @@
26 26
 	( draw "FPS:" and "BUNNIES:" and instructions labels )
27 27
 	.Screen/width DEI2 #0046 SUB2 #0008 ;text/fps #42 ;draw-str JSR2
28 28
 	#0004 #0008 ;text/bunnies #42 ;draw-str JSR2
29
-	.Screen/width DEI2 #0002 DIV2 #0050 SUB2 #0008 ;text/instructions #43 ;draw-str JSR2
29
+	.Screen/width DEI2 #01 SFT2 #0050 SUB2 #0008 ;text/instructions #43 ;draw-str JSR2
30 30
 	#0028 #0008 #0000 ;draw-dec JSR2
31 31
 
32 32
 	( seed prng )
... ...
@@ -36,7 +36,6 @@ BRK
36 36
 
37 37
 @on-frame ( -> )
38 38
 
39
-
40 39
 	( frames++ ) 
41 40
 	.frames LDZ2k INC2 ROT STZ2
42 41
 	.Date/second DEI .last LDZ EQU ,&post-fps-update JCN
... ...
@@ -75,12 +74,12 @@ BRK
75 74
 	( clear the old sprite location )
76 75
 		( top )
77 76
 	[ LDA2k ] #05 SFT2 .Screen/x DEO2
78
-	[ DUP2 #0002 ADD2 LDA2 ] #05 SFT2 .Screen/y DEO2
77
+	[ INC2k INC2 LDA2 ] #05 SFT2 .Screen/y DEO2
79 78
 	#00 ;draw-sprite JSR2
80 79
 
81 80
 	( move the sprite by its velocity )
82 81
 	[ LDA2k ] [ OVR2 #0004 ADD2 LDA2 ] ADD2 OVR2 STA2
83
-	[ DUP2 #0002 ADD2 LDA2 ] [ OVR2 #0006 ADD2 LDA2 ] ADD2 OVR2 #0002 ADD2 STA2
82
+	[ INC2k INC2 LDA2 ] [ OVR2 #0006 ADD2 LDA2 ] ADD2 OVR2 INC2 INC2 STA2
84 83
 
85 84
 	( check for right wall collision + bounce x )
86 85
 	[ DUP2 #0004 ADD2 LDA2 ] #0f SFT2 #0001 EQU2 ,&skip-max-x JCN
... ...
@@ -89,7 +88,7 @@ BRK
89 88
 	&skip-max-x
90 89
 	( check for bottom wall collision + bounce y )
91 90
 	[ DUP2 #0006 ADD2 LDA2 ] #0f SFT2 #0001 EQU2 ,&skip-max-y JCN
92
-	[ DUP2 #0002 ADD2 LDA2 ] #05 SFT2 #0008 ADD2 [ .Screen/height DEI2 ] LTH2 ,&skip-max-y JCN
91
+	[ INC2k INC2 LDA2 ] #05 SFT2 #0008 ADD2 [ .Screen/height DEI2 ] LTH2 ,&skip-max-y JCN
93 92
 	[ DUP2 #0006 ADD2 LDA2 ] #ffff MUL2 [ OVR2 #0006 ADD2 STA2 ]
94 93
 	&skip-max-y
95 94
 	( check for left wall collision + bounce x )
... ...
@@ -97,17 +96,17 @@ BRK
97 96
 	[ DUP2 #0004 ADD2 LDA2 ] #ffff MUL2 [ OVR2 #0004 ADD2 STA2 ]
98 97
 	&skip-min-x
99 98
 	( check for top wall collision + bounce x )
100
-	[ DUP2 #0002 ADD2 LDA2 ] #0f SFT2 #0000 EQU2 ,&skip-min-y JCN
99
+	[ INC2k INC2 LDA2 ] #0f SFT2 #0000 EQU2 ,&skip-min-y JCN
101 100
 	[ DUP2 #0006 ADD2 LDA2 ] #ffff MUL2 [ OVR2 #0006 ADD2 STA2 ]
102 101
 	&skip-min-y
103 102
 
104
-	( ( apply gravity ) )
103
+	( apply gravity )
105 104
 	[ DUP2 #0006 ADD2 LDA2 ] #0004 ADD2 OVR2 #0006 ADD2 STA2
106 105
 
107 106
 	( draw the sprite )
108 107
 	( top )
109 108
 	[ LDA2k ] #05 SFT2 .Screen/x DEO2
110
-	[ #0002 ADD2 LDA2 ] #05 SFT2 .Screen/y DEO2
109
+	[ INC2 INC2 LDA2 ] #05 SFT2 .Screen/y DEO2
111 110
 	#85 ,draw-sprite JSR
112 111
 
113 112
 JMP2r
... ...
@@ -130,7 +129,7 @@ JMP2r
130 129
 	DUP2 #30 SFT2 ;sprite/array ADD2
131 130
 	( populate the new bunny's x/y/xvel/yvel with random values )
132 131
 	#00 [ ;rand JSR2 ] OVR2 STA2
133
-	[ ;rand JSR2 #1f AND ] [ ;rand JSR2 ] OVR2 #0002 ADD2 STA2
132
+	[ ;rand JSR2 #1f AND ] [ ;rand JSR2 ] OVR2 INC2 INC2 STA2
134 133
 	#00 [ ;rand JSR2 #7f AND ] OVR2 #0004 ADD2 STA2
135 134
 	#00 [ ;rand JSR2 #7f AND ] OVR2 #0006 ADD2 STA2
136 135
 	( pop ptr to bunny data ) POP2
... ...
@@ -186,7 +185,7 @@ JMP2r
186 185
 	DUP2 #0001 SUB2 #30 SFT2 ;sprite/array ADD2
187 186
 	( top )
188 187
 	[ LDA2k ] #05 SFT2 .Screen/x DEO2
189
-	[ DUP2 #0002 ADD2 LDA2 ] #05 SFT2 .Screen/y DEO2
188
+	[ INC2k INC2 LDA2 ] #05 SFT2 .Screen/y DEO2
190 189
 	( clear )
191 190
 	#00 ;draw-sprite JSR2
192 191
 	POP2
... ...
@@ -93,7 +93,7 @@
93 93
 	DUP2 #00 ,set-occupied JSR
94 94
 	;&possible-moves ( x y possible* / addr* )
95 95
 	OVR2 #01   SUB  ,&check-move JSR ( up )
96
-	OVR2 #01   ADD  ,&check-move JSR ( down )
96
+	OVR2 INC   INC  ,&check-move JSR ( down )
97 97
 	OVR2 #0100 SUB2 ,&check-move JSR ( left )
98 98
 	OVR2 #0100 ADD2 ,&check-move JSR ( right )
99 99
 	;&possible-moves SUB2 ( x y num-possible-times-2* / addr* )
... ...
@@ -124,8 +124,8 @@ JMP2r
124 124
 
125 125
 @run-cell ( x y -- )
126 126
 
127
-	( x y ) DUP2
128
-	( neighbours ) DUP2 ;get-neighbours JSR2
127
+	( x y ) DUP2k
128
+	( neighbours ) ;get-neighbours JSR2
129 129
 	( state ) ROT ROT ;get-cell JSR2
130 130
 	#00 EQU ,&dead JCN
131 131
 		DUP #02 LTH ,&dies JCN
... ...
@@ -219,7 +219,7 @@ JMP2r
219 219
 @within-rect ( x* y* rect -- flag )
220 220
 	
221 221
 	STH
222
-	( y < rect.y1 ) DUP2 STHkr #02 ADD LDZ2 LTH2 ,&skip JCN
222
+	( y < rect.y1 ) DUP2 STHkr INC INC LDZ2 LTH2 ,&skip JCN
223 223
 	( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN
224 224
 	SWP2
225 225
 	( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN
... ...
@@ -1,4 +1,4 @@
1
-( a blank file )
1
+( logic )
2 2
 
3 3
 %+  { ADD } %-   { SUB }              %/   { DIV }  
4 4
 %<  { LTH } %>   { GTH }  %=  { EQU } %!   { NEQ } 
... ...
@@ -392,7 +392,7 @@ JMP2r
392 392
 @within-rect ( x* y* rect -- flag )
393 393
 	
394 394
 	STH
395
-	( y < rect.y1 ) DUP2 STHkr #02 ADD LDZ2 LTH2 ,&skip JCN
395
+	( y < rect.y1 ) DUP2 STHkr INC INC LDZ2 LTH2 ,&skip JCN
396 396
 	( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN
397 397
 	SWP2
398 398
 	( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN