Optimized examples to use relative jumping whenever available

This commit is contained in:
neauoire 2021-03-26 11:45:10 -07:00
parent 8e2a8df848
commit f3e920c54d
12 changed files with 70 additions and 70 deletions

View File

@ -45,10 +45,10 @@ BRK
@print-label ( text )
$loop NOP
( send ) DUP2 LDR =Console.char
$loop
( send ) DUP2 PEK2 =Console.char
( incr ) #0001 ADD2
( loop ) DUP2 LDR #00 NEQ ^$loop MUL JMP
( loop ) DUP2 PEK2 #00 NEQ ^$loop JNZ
POP2
RTN

View File

@ -28,7 +28,7 @@ else
fi
echo "Assembling.."
./bin/assembler projects/software/noodle.usm bin/boot.rom
./bin/assembler projects/examples/gui.shapes.usm bin/boot.rom
echo "Running.."
if [ "${2}" = '--cli' ];

View File

@ -21,10 +21,10 @@ BRK
@print-label ( text )
$loop NOP
$loop
( send ) DUP2 PEK2 =Console.char
( incr ) #0001 ADD2
( loop ) DUP2 PEK2 #00 NEQ ^$loop MUL JMP
( loop ) DUP2 PEK2 #00 NEQ ^$loop JNZ
POP2
RTN

View File

@ -42,21 +42,21 @@ BRK
( hold ctrl key to change slime color )
~Controller.p1 #0f AND
DUP #01 NEQ ,$no-ctrl JNZ2 #05 =slime $no-ctrl
DUP #02 NEQ ,$no-alt JNZ2 #0f =slime $no-alt
DUP #01 NEQ ^$no-ctrl JNZ #05 =slime $no-ctrl
DUP #02 NEQ ^$no-alt JNZ #0f =slime $no-alt
POP
( clear ) #10 =Sprite.color
( detect movement )
~Controller.p1 #f0 AND
DUP #04 SFT #01 AND #01 NEQ ,$no-up JNZ2
DUP #04 SFT #01 AND #01 NEQ ^$no-up JNZ
( move ) ~Sprite.y -- =Sprite.y ,up_icn =Sprite.addr $no-up
DUP #05 SFT #01 AND #01 NEQ ,$no-down JNZ2
DUP #05 SFT #01 AND #01 NEQ ^$no-down JNZ
( move ) ~Sprite.y ++ =Sprite.y ,down_icn =Sprite.addr $no-down
DUP #06 SFT #01 AND #01 NEQ ,$no-left JNZ2
DUP #06 SFT #01 AND #01 NEQ ^$no-left JNZ
( move ) ~Sprite.x -- =Sprite.x ,left_icn =Sprite.addr $no-left
DUP #07 SFT #01 AND #01 NEQ ,$no-right JNZ2
DUP #07 SFT #01 AND #01 NEQ ^$no-right JNZ
( move ) ~Sprite.x ++ =Sprite.x ,right_icn =Sprite.addr $no-right
POP

View File

@ -15,10 +15,10 @@
@FRAME
~Keys #00 EQU ,$end JNZ2
~Keys #00 EQU ^$end JNZ
( enter key )
~Keys #0d NEQ ,$no-return JNZ2
~Keys #0d NEQ ^$no-return JNZ
#0000 =Sprite.x
( incr ) ~Sprite.y 8+ =Sprite.y
( release ) #00 =Keys

View File

@ -27,7 +27,7 @@ BRK
,draw-cursor JSR2
~Mouse.state #00 EQU ,$no-touch JNZ2
~Mouse.state #00 EQU ^$no-touch JNZ
~Mouse.x =circle.xc
~Mouse.y =circle.yc
#0000 =circle.r
@ -65,7 +65,7 @@ RTN
( draw ) ,$seg JSR2
$loop
( incr ) ~circle.x ++ =circle.x
~circle.d #0000 #0001 ADD2 LTS2 ,$else JNZ2
~circle.d #0000 #0001 ADD2 LTS2 ^$else JNZ
( decr ) ~circle.y -- =circle.y
~circle.x ~circle.y SUB2 #0004 MUL2 ~circle.d ADD2 #000a ADD2 =circle.d
,$end JMP2
@ -73,7 +73,7 @@ RTN
~circle.x #0004 MUL2 ~circle.d ADD2 #0006 ADD2 =circle.d
$end
( draw ) ,$seg JSR2
~circle.y ~circle.x #0001 SUB2 GTS2 ,$loop JNZ2
~circle.y ~circle.x #0001 SUB2 GTS2 ^$loop JNZ
RTN
$seg
~circle.xc ~circle.x ADD2 =Screen.x ~circle.yc ~circle.y ADD2 =Screen.y ~color =Screen.color

View File

@ -86,24 +86,24 @@ BRK
~Mouse.y ~window.y1 SUB2 STEP8
DUP2 #0010 NEQ2 ,$no-touch-red JNZ2
~Mouse.x ~window.x1 #0050 ADD2 LTH2 ,$no-touch-red JNZ2
~Mouse.x ~window.x1 #008c ADD2 GTH2 ,$no-touch-red JNZ2
DUP2 #0010 NEQ2 ^$no-touch-red JNZ
~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-red JNZ
~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-red JNZ
( get new value ) ~Mouse.x ~window.x1 SUB2 #0050 SUB2 #0004 DIV2 S2B ,theme.r1 #00 ~selection ADD2 POK2
$no-touch-red
DUP2 #0020 NEQ2 ,$no-touch-green JNZ2
~Mouse.x ~window.x1 #0050 ADD2 LTH2 ,$no-touch-green JNZ2
~Mouse.x ~window.x1 #008c ADD2 GTH2 ,$no-touch-green JNZ2
DUP2 #0020 NEQ2 ^$no-touch-green JNZ
~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-green JNZ
~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-green JNZ
( get new value ) ~Mouse.x ~window.x1 SUB2 #0050 SUB2 #0004 DIV2 S2B ,theme.g1 #00 ~selection ADD2 POK2
$no-touch-green
DUP2 #0030 NEQ2 ,$no-touch-blue JNZ2
~Mouse.x ~window.x1 #0050 ADD2 LTH2 ,$no-touch-blue JNZ2
~Mouse.x ~window.x1 #008c ADD2 GTH2 ,$no-touch-blue JNZ2
DUP2 #0030 NEQ2 ^$no-touch-blue JNZ
~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-blue JNZ
~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-blue JNZ
( get new value ) ~Mouse.x ~window.x1 SUB2 #0050 SUB2 #0004 DIV2 S2B ,theme.b1 #00 ~selection ADD2 POK2
$no-touch-blue
DUP2 #0040 NEQ2 ,$no-touch-radio JNZ2
~Mouse.x ~window.x1 #0050 ADD2 LTH2 ,$no-touch-radio JNZ2
~Mouse.x ~window.x1 #008c ADD2 GTH2 ,$no-touch-radio JNZ2
DUP2 #0040 NEQ2 ^$no-touch-radio JNZ
~Mouse.x ~window.x1 #0050 ADD2 LTH2 ^$no-touch-radio JNZ
~Mouse.x ~window.x1 #008c ADD2 GTH2 ^$no-touch-radio JNZ
~Mouse.x ~window.x1 SUB2 #0050 SUB2 STEP8 2/ #0008 DIV2 S2B =selection
$no-touch-radio
@ -228,7 +228,7 @@ RTN
$loop
( incr ) ~Sprite.x 8+ =Sprite.x
( draw ) #05 =Sprite.color
~Sprite.x ~slider.x2 #0008 ADD2 LTH2 ,$loop JNZ2
~Sprite.x ~slider.x2 #0008 ADD2 LTH2 ^$loop JNZ
( incr ) ~Sprite.x #0004 ADD2 =Sprite.x
,sliderc_icn =Sprite.addr
@ -248,9 +248,9 @@ RTN
$hor
( draw ) ~color =Screen.color
( incr ) ~Screen.x ++ =Screen.x
~Screen.x ~rect.x2 LTH2 ,$hor JNZ2
~Screen.x ~rect.x2 LTH2 ^$hor JNZ
( incr ) ~Screen.y ++ =Screen.y
~Screen.y ~rect.y2 LTH2 ,$ver JNZ2
~Screen.y ~rect.y2 LTH2 ^$ver JNZ
RTN
@ -261,13 +261,13 @@ RTN
( incr ) ~Screen.x ++ =Screen.x
( draw ) ~rect.y1 =Screen.y ~color =Screen.color
( draw ) ~rect.y2 =Screen.y ~color =Screen.color
~Screen.x ~rect.x2 LTH2 ,$hor JNZ2
~Screen.x ~rect.x2 LTH2 ^$hor JNZ
~rect.y1 =Screen.y
$ver
( draw ) ~rect.x1 =Screen.x ~color =Screen.color
( draw ) ~rect.x2 =Screen.x ~color =Screen.color
( incr ) ~Screen.y ++ =Screen.y
~Screen.y ~rect.y2 ++ LTH2 ,$ver JNZ2
~Screen.y ~rect.y2 ++ LTH2 ^$ver JNZ
RTN
@ -278,7 +278,7 @@ RTN
( draw ) DUP2 PEK2 #00 SWP #0008 MUL2 ,font ADD2 =Sprite.addr ~color =Sprite.color
( incr ) ++
( incr ) ~Sprite.x 8+ =Sprite.x
DUP2 PEK2 #00 NEQ ,$loop JNZ2
DUP2 PEK2 #00 NEQ ^$loop JNZ
POP2
RTN

View File

@ -34,23 +34,23 @@ BRK
@FRAME
~Controller.buttons #00 EQU ,no-ctrl JNZ2
~Controller.buttons #00 EQU ^$no-ctrl JNZ
~Controller.buttons #10 EQU ,no-ctrl-up JNZ2
~Controller.buttons #10 EQU ^$no-ctrl-up JNZ
~editor.addr #0001 ADD2 =editor.addr
,draw-window JSR2
,draw-editor JSR2
@no-ctrl-up
$no-ctrl-up
~Controller.buttons #20 EQU ,no-ctrl-down JNZ2
~Controller.buttons #20 EQU ^$no-ctrl-down JNZ
~editor.addr #0001 SUB2 =editor.addr
,draw-window JSR2
,draw-editor JSR2
@no-ctrl-down
$no-ctrl-down
@no-ctrl
$no-ctrl
~Mouse.state #00 EQU ,no-click JNZ2
~Mouse.state #00 EQU ^$no-click JNZ
( load ) ~editor.addr ~Mouse.y ~editor.y1 SUB2 #0008 DIV2 ADD2 PEK2
( mask ) #01 #07 ~Mouse.x ~editor.x1 SUB2 #0008 DIV2 SWP POP SUB #40 SFT SFT
@ -60,7 +60,7 @@ BRK
,draw-window JSR2
,draw-editor JSR2
@no-click
$no-click
,draw-cursor JSR2

View File

@ -33,22 +33,22 @@ BRK
( matrix comparison )
~Mouse.x ~r1.x1 GTH2 ~Mouse.x ~r1.x2 LTH2 #0101 EQU2
~Mouse.y ~r1.y1 GTH2 ~Mouse.y ~r1.y2 LTH2 #0101 EQU2
#0101 NEQ2 ,$draw1 JNZ2 #02 =color ,hand_icn =pointer.sprite
#0101 NEQ2 ^$draw1 JNZ #02 =color ,hand_icn =pointer.sprite
$draw1 ~r1.x1 ~r1.y1 ~r1.x2 ~r1.y2 ~color ,line-rect JSR2
#01 =color
( 2-step comparison )
~Mouse.x ~r2.x1 GTH2 ~Mouse.x ~r2.x2 LTH2 #0101 NEQ2 ,$draw2 JNZ2
~Mouse.y ~r2.y1 GTH2 ~Mouse.y ~r2.y2 LTH2 #0101 NEQ2 ,$draw2 JNZ2
~Mouse.x ~r2.x1 GTH2 ~Mouse.x ~r2.x2 LTH2 #0101 NEQ2 ^$draw2 JNZ
~Mouse.y ~r2.y1 GTH2 ~Mouse.y ~r2.y2 LTH2 #0101 NEQ2 ^$draw2 JNZ
#03 =color ,hand_icn =pointer.sprite
$draw2 ~r2.x1 ~r2.y1 ~r2.x2 ~r2.y2 ~color ,line-rect JSR2
#01 =color
( 4-step comparison )
~Mouse.x ~r3.x1 LTH2 ,$draw3 JNZ2
~Mouse.x ~r3.x2 GTH2 ,$draw3 JNZ2
~Mouse.y ~r3.y1 LTH2 ,$draw3 JNZ2
~Mouse.y ~r3.y2 GTH2 ,$draw3 JNZ2
~Mouse.x ~r3.x1 LTH2 ^$draw3 JNZ
~Mouse.x ~r3.x2 GTH2 ^$draw3 JNZ
~Mouse.y ~r3.y1 LTH2 ^$draw3 JNZ
~Mouse.y ~r3.y2 GTH2 ^$draw3 JNZ
#02 =color ,hand_icn =pointer.sprite
$draw3 ~r3.x1 ~r3.y1 ~r3.x2 ~r3.y2 ~color ,line-rect JSR2
@ -82,13 +82,13 @@ RTN
( incr ) ~Screen.x #0001 ADD2 =Screen.x
( draw ) ~rect.y1 =Screen.y ~color =Screen.color
( draw ) ~rect.y2 =Screen.y ~color =Screen.color
~Screen.x ~rect.x2 LTH2 ,$hor JNZ2
~Screen.x ~rect.x2 LTH2 ^$hor JNZ
~rect.y1 =Screen.y
$ver
( draw ) ~rect.x1 =Screen.x ~color =Screen.color
( draw ) ~rect.x2 =Screen.x ~color =Screen.color
( incr ) ~Screen.y #0001 ADD2 =Screen.y
~Screen.y ~rect.y2 #0001 ADD2 LTH2 ,$ver JNZ2
~Screen.y ~rect.y2 #0001 ADD2 LTH2 ^$ver JNZ
RTN

View File

@ -23,7 +23,7 @@
$draw-ver
( draw ) #02 =Screen.color
( incr ) ~Screen.y #0002 ADD2 =Screen.y
,$draw-ver ~Screen.y ~Screen.height LTH2 JNZ2
~Screen.y ~Screen.height LTH2 ^$draw-ver JNZ
~center.x ~center.y #0010 SUB2 #0c ,text1 ,draw-label-left JSR2
~center.x ~center.y #0c ,text2 ,draw-label-middle JSR2
@ -41,7 +41,7 @@ BRK
( draw ) DUP2 PEK2 #00 SWP #0008 MUL2 ,font ADD2 =Sprite.addr ~label.color =Sprite.color
( incr ) #0001 ADD2
( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
DUP2 PEK2 #00 NEQ ,$loop ROT JNZ2
DUP2 PEK2 #00 NEQ ^$loop JNZ
POP2
RTN
@ -55,7 +55,7 @@ RTN
( draw ) DUP2 PEK2 #00 SWP #0008 MUL2 ,font ADD2 =Sprite.addr ~label.color =Sprite.color
( incr ) #0001 ADD2
( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
DUP2 PEK2 #00 NEQ ,$loop ROT JNZ2
DUP2 PEK2 #00 NEQ ^$loop JNZ
POP2
RTN
@ -69,7 +69,7 @@ RTN
( draw ) DUP2 PEK2 #00 SWP #0008 MUL2 ,font ADD2 =Sprite.addr ~label.color =Sprite.color
( incr ) #0001 ADD2
( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
DUP2 PEK2 #00 NEQ ,$loop ROT JNZ2
DUP2 PEK2 #00 NEQ ^$loop JNZ
POP2
RTN
@ -79,7 +79,7 @@ RTN
#0000 ( counter )
$loop
( incr ) #0001 ADD2 OVR2 OVR2 ADD2
PEK2 #00 NEQ ,$loop ROT JNZ2
PEK2 #00 NEQ ^$loop JNZ
SWP2 POP2
RTN

View File

@ -25,9 +25,9 @@ BRK
( draw ) ~pict.color =Sprite.color
( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
( incr ) ~Sprite.addr #0008 ADD2 =Sprite.addr
~Sprite.x ~pict.width ~pict.x ADD2 LTH2 ,$hor JNZ2
~Sprite.x ~pict.width ~pict.x ADD2 LTH2 ^$hor JNZ
( incr ) ~Sprite.y #0008 ADD2 =Sprite.y
~Sprite.y ~pict.height ~pict.y ADD2 LTH2 ,$ver JNZ2
~Sprite.y ~pict.height ~pict.y ADD2 LTH2 ^$ver JNZ
RTN

View File

@ -53,13 +53,13 @@ BRK
~line.dx ~line.dy ADD2 =line.e1
$loop
~line.x =Screen.x ~line.y =Screen.y ~color =Screen.color
~line.x ~line.x0 EQU2 ~line.y ~line.y0 EQU2 #0101 EQU2 ,$end JNZ2
~line.x ~line.x0 EQU2 ~line.y ~line.y0 EQU2 #0101 EQU2 ^$end JNZ
~line.e1 #0002 MUL2 =line.e2
~line.e2 ~line.dy LTS2 ,$skipy JNZ2
~line.e2 ~line.dy LTS2 ^$skipy JNZ
~line.e1 ~line.dy ADD2 =line.e1
~line.x ~line.sx ADD2 =line.x
$skipy
~line.e2 ~line.dx GTS2 ,$skipx JNZ2
~line.e2 ~line.dx GTS2 ^$skipx JNZ
~line.e1 ~line.dx ADD2 =line.e1
~line.y ~line.sy ADD2 =line.y
$skipx
@ -76,13 +76,13 @@ RTN
( incr ) ~Screen.x ++ =Screen.x
( draw ) ~rect.y1 =Screen.y ~color =Screen.color
( draw ) ~rect.y2 =Screen.y ~color =Screen.color
~Screen.x ~rect.x2 LTH2 ,$hor JNZ2
~Screen.x ~rect.x2 LTH2 ^$hor JNZ
~rect.y1 =Screen.y
$ver
( draw ) ~rect.x1 =Screen.x ~color =Screen.color
( draw ) ~rect.x2 =Screen.x ~color =Screen.color
( incr ) ~Screen.y ++ =Screen.y
~Screen.y ~rect.y2 ++ LTH2 ,$ver JNZ2
~Screen.y ~rect.y2 ++ LTH2 ^$ver JNZ
RTN
@ -94,9 +94,9 @@ RTN
$hor
( draw ) ~color =Screen.color
( incr ) ~Screen.x ++ =Screen.x
~Screen.x ~rect.x2 LTH2 ,$hor JNZ2
~Screen.x ~rect.x2 LTH2 ^$hor JNZ
( incr ) ~Screen.y ++ =Screen.y
~Screen.y ~rect.y2 LTH2 ,$ver JNZ2
~Screen.y ~rect.y2 LTH2 ^$ver JNZ
RTN
@ -109,9 +109,9 @@ RTN
( draw ) ~pict.color =Sprite.color
( incr ) ~Sprite.x 8+ =Sprite.x
( incr ) ~Sprite.addr 8+ =Sprite.addr
~Sprite.x ~pict.width ~pict.x ADD2 LTH2 ,$hor JNZ2
~Sprite.x ~pict.width ~pict.x ADD2 LTH2 ^$hor JNZ
( incr ) ~Sprite.y 8+ =Sprite.y
~Sprite.y ~pict.height ~pict.y ADD2 LTH2 ,$ver JNZ2
~Sprite.y ~pict.height ~pict.y ADD2 LTH2 ^$ver JNZ
RTN
@ -123,7 +123,7 @@ RTN
( draw ) ,$seg JSR2
$loop
( incr ) ~circle.x ++ =circle.x
~circle.d #0000 #0001 ADD2 LTS2 ,$else JNZ2
~circle.d #0000 #0001 ADD2 LTS2 ^$else JNZ
( decr ) ~circle.y -- =circle.y
~circle.x ~circle.y SUB2 #0004 MUL2 ~circle.d ADD2 #000a ADD2 =circle.d
,$end JMP2
@ -131,7 +131,7 @@ RTN
~circle.x #0004 MUL2 ~circle.d ADD2 #0006 ADD2 =circle.d
$end
( draw ) ,$seg JSR2
~circle.y ~circle.x #0001 SUB2 GTS2 ,$loop JNZ2
~circle.y ~circle.x #0001 SUB2 GTS2 ^$loop JNZ
RTN
$seg
~circle.xc ~circle.x ADD2 =Screen.x ~circle.yc ~circle.y ADD2 =Screen.y ~color =Screen.color