| ... | ... |
@@ -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 |
| ... | ... |
@@ -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 |