diff --git a/projects/examples/blank.tal b/projects/examples/blank.tal index 3e4f6ae..dae1ab3 100644 --- a/projects/examples/blank.tal +++ b/projects/examples/blank.tal @@ -1,30 +1,5 @@ ( a blank file ) -%+ { ADD } %- { SUB } %* { MUL } %/ { DIV } -%< { LTH } %> { GTH } %= { EQU } %! { NEQ } -%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } -%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } - -%2* { #10 SFT } %2/ { #01 SFT } %2** { #10 SFT2 } %2// { #01 SFT2 } -%4* { #20 SFT } %4/ { #02 SFT } %4** { #20 SFT2 } %4// { #02 SFT2 } -%8* { #30 SFT } %8/ { #03 SFT } %8** { #30 SFT2 } %8// { #03 SFT2 } -%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 } -%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 } - -%2MOD { #01 AND } %2MOD2 { #0001 AND2 } -%4MOD { #03 AND } %4MOD2 { #0003 AND2 } -%8MOD { #07 AND } %8MOD2 { #0007 AND2 } -%10MOD { #0f AND } %10MOD2 { #000f AND2 } - -%HALT { #010f DEO } -%EMIT { #18 DEO } -%DEBUG { ;print/byte JSR2 #0a EMIT } -%DEBUG2 { ;print/short JSR2 #0a EMIT } - -%RTN { JMP2r } - -( devices ) - |00 @System &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1 |10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1 |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 @print ( short* -- ) - &short ( short* -- ) SWP ,&byte JSR + SWP ,&byte JSR &byte ( byte -- ) DUP #04 SFT ,&char JSR - &char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD EMIT + &char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO -RTN +JMP2r -@print-dec ( value* -- ) +@print-str ( str* -- ) - #2710 DIV2k DUP #30 ADD #18 DEO MUL2 SUB2 - #03e8 DIV2k DUP #30 ADD #18 DEO MUL2 SUB2 - #0064 DIV2k DUP #30 ADD #18 DEO MUL2 SUB2 - #000a DIV2k DUP #30 ADD #18 DEO MUL2 SUB2 - #30 ADD #18 DEO POP - -RTN - -@print-str ( string* -- ) - - #0001 -- &while - INC2 LDAk DUP #18 DEO ,&while JCN + LDAk #18 DEO + INC2 LDAk ,&while JCN POP2 -RTN \ No newline at end of file +JMP2r diff --git a/projects/examples/demos/bunnymark.tal b/projects/examples/demos/bunnymark.tal index 8744d81..9d5af64 100644 --- a/projects/examples/demos/bunnymark.tal +++ b/projects/examples/demos/bunnymark.tal @@ -26,7 +26,7 @@ ( draw "FPS:" and "BUNNIES:" and instructions labels ) .Screen/width DEI2 #0046 SUB2 #0008 ;text/fps #42 ;draw-str JSR2 #0004 #0008 ;text/bunnies #42 ;draw-str JSR2 - .Screen/width DEI2 #0002 DIV2 #0050 SUB2 #0008 ;text/instructions #43 ;draw-str JSR2 + .Screen/width DEI2 #01 SFT2 #0050 SUB2 #0008 ;text/instructions #43 ;draw-str JSR2 #0028 #0008 #0000 ;draw-dec JSR2 ( seed prng ) @@ -36,7 +36,6 @@ BRK @on-frame ( -> ) - ( frames++ ) .frames LDZ2k INC2 ROT STZ2 .Date/second DEI .last LDZ EQU ,&post-fps-update JCN @@ -75,12 +74,12 @@ BRK ( clear the old sprite location ) ( top ) [ LDA2k ] #05 SFT2 .Screen/x DEO2 - [ DUP2 #0002 ADD2 LDA2 ] #05 SFT2 .Screen/y DEO2 + [ INC2k INC2 LDA2 ] #05 SFT2 .Screen/y DEO2 #00 ;draw-sprite JSR2 ( move the sprite by its velocity ) [ LDA2k ] [ OVR2 #0004 ADD2 LDA2 ] ADD2 OVR2 STA2 - [ DUP2 #0002 ADD2 LDA2 ] [ OVR2 #0006 ADD2 LDA2 ] ADD2 OVR2 #0002 ADD2 STA2 + [ INC2k INC2 LDA2 ] [ OVR2 #0006 ADD2 LDA2 ] ADD2 OVR2 INC2 INC2 STA2 ( check for right wall collision + bounce x ) [ DUP2 #0004 ADD2 LDA2 ] #0f SFT2 #0001 EQU2 ,&skip-max-x JCN @@ -89,7 +88,7 @@ BRK &skip-max-x ( check for bottom wall collision + bounce y ) [ DUP2 #0006 ADD2 LDA2 ] #0f SFT2 #0001 EQU2 ,&skip-max-y JCN - [ DUP2 #0002 ADD2 LDA2 ] #05 SFT2 #0008 ADD2 [ .Screen/height DEI2 ] LTH2 ,&skip-max-y JCN + [ INC2k INC2 LDA2 ] #05 SFT2 #0008 ADD2 [ .Screen/height DEI2 ] LTH2 ,&skip-max-y JCN [ DUP2 #0006 ADD2 LDA2 ] #ffff MUL2 [ OVR2 #0006 ADD2 STA2 ] &skip-max-y ( check for left wall collision + bounce x ) @@ -97,17 +96,17 @@ BRK [ DUP2 #0004 ADD2 LDA2 ] #ffff MUL2 [ OVR2 #0004 ADD2 STA2 ] &skip-min-x ( check for top wall collision + bounce x ) - [ DUP2 #0002 ADD2 LDA2 ] #0f SFT2 #0000 EQU2 ,&skip-min-y JCN + [ INC2k INC2 LDA2 ] #0f SFT2 #0000 EQU2 ,&skip-min-y JCN [ DUP2 #0006 ADD2 LDA2 ] #ffff MUL2 [ OVR2 #0006 ADD2 STA2 ] &skip-min-y - ( ( apply gravity ) ) + ( apply gravity ) [ DUP2 #0006 ADD2 LDA2 ] #0004 ADD2 OVR2 #0006 ADD2 STA2 ( draw the sprite ) ( top ) [ LDA2k ] #05 SFT2 .Screen/x DEO2 - [ #0002 ADD2 LDA2 ] #05 SFT2 .Screen/y DEO2 + [ INC2 INC2 LDA2 ] #05 SFT2 .Screen/y DEO2 #85 ,draw-sprite JSR JMP2r @@ -130,7 +129,7 @@ JMP2r DUP2 #30 SFT2 ;sprite/array ADD2 ( populate the new bunny's x/y/xvel/yvel with random values ) #00 [ ;rand JSR2 ] OVR2 STA2 - [ ;rand JSR2 #1f AND ] [ ;rand JSR2 ] OVR2 #0002 ADD2 STA2 + [ ;rand JSR2 #1f AND ] [ ;rand JSR2 ] OVR2 INC2 INC2 STA2 #00 [ ;rand JSR2 #7f AND ] OVR2 #0004 ADD2 STA2 #00 [ ;rand JSR2 #7f AND ] OVR2 #0006 ADD2 STA2 ( pop ptr to bunny data ) POP2 @@ -186,7 +185,7 @@ JMP2r DUP2 #0001 SUB2 #30 SFT2 ;sprite/array ADD2 ( top ) [ LDA2k ] #05 SFT2 .Screen/x DEO2 - [ DUP2 #0002 ADD2 LDA2 ] #05 SFT2 .Screen/y DEO2 + [ INC2k INC2 LDA2 ] #05 SFT2 .Screen/y DEO2 ( clear ) #00 ;draw-sprite JSR2 POP2 diff --git a/projects/examples/demos/drool.tal b/projects/examples/demos/drool.tal index 3ffae67..976f95a 100644 --- a/projects/examples/demos/drool.tal +++ b/projects/examples/demos/drool.tal @@ -93,7 +93,7 @@ DUP2 #00 ,set-occupied JSR ;&possible-moves ( x y possible* / addr* ) OVR2 #01 SUB ,&check-move JSR ( up ) - OVR2 #01 ADD ,&check-move JSR ( down ) + OVR2 INC INC ,&check-move JSR ( down ) OVR2 #0100 SUB2 ,&check-move JSR ( left ) OVR2 #0100 ADD2 ,&check-move JSR ( right ) ;&possible-moves SUB2 ( x y num-possible-times-2* / addr* ) diff --git a/projects/examples/demos/life.tal b/projects/examples/demos/life.tal index ec1f09d..60c418c 100644 --- a/projects/examples/demos/life.tal +++ b/projects/examples/demos/life.tal @@ -124,8 +124,8 @@ JMP2r @run-cell ( x y -- ) - ( x y ) DUP2 - ( neighbours ) DUP2 ;get-neighbours JSR2 + ( x y ) DUP2k + ( neighbours ) ;get-neighbours JSR2 ( state ) ROT ROT ;get-cell JSR2 #00 EQU ,&dead JCN DUP #02 LTH ,&dies JCN @@ -219,7 +219,7 @@ JMP2r @within-rect ( x* y* rect -- flag ) STH - ( y < rect.y1 ) DUP2 STHkr #02 ADD LDZ2 LTH2 ,&skip JCN + ( y < rect.y1 ) DUP2 STHkr INC INC LDZ2 LTH2 ,&skip JCN ( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN SWP2 ( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN diff --git a/projects/examples/demos/logic.tal b/projects/examples/demos/logic.tal index c9ab660..c5a6192 100644 --- a/projects/examples/demos/logic.tal +++ b/projects/examples/demos/logic.tal @@ -1,4 +1,4 @@ -( a blank file ) +( logic ) %+ { ADD } %- { SUB } %/ { DIV } %< { LTH } %> { GTH } %= { EQU } %! { NEQ } diff --git a/projects/examples/demos/piano.tal b/projects/examples/demos/piano.tal index 9ab48c5..2ad8be6 100644 --- a/projects/examples/demos/piano.tal +++ b/projects/examples/demos/piano.tal @@ -392,7 +392,7 @@ JMP2r @within-rect ( x* y* rect -- flag ) STH - ( y < rect.y1 ) DUP2 STHkr #02 ADD LDZ2 LTH2 ,&skip JCN + ( y < rect.y1 ) DUP2 STHkr INC INC LDZ2 LTH2 ,&skip JCN ( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN SWP2 ( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN