Optimized Nasu
This commit is contained in:
parent
f3e920c54d
commit
72f045cc63
2
build.sh
2
build.sh
|
@ -28,7 +28,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Assembling.."
|
echo "Assembling.."
|
||||||
./bin/assembler projects/examples/gui.shapes.usm bin/boot.rom
|
./bin/assembler projects/software/nasu.usm bin/boot.rom
|
||||||
|
|
||||||
echo "Running.."
|
echo "Running.."
|
||||||
if [ "${2}" = '--cli' ];
|
if [ "${2}" = '--cli' ];
|
||||||
|
|
|
@ -62,109 +62,104 @@ BRK
|
||||||
|
|
||||||
( keyboard controls )
|
( keyboard controls )
|
||||||
|
|
||||||
~Keys #00 EQU ,no-key JNZ2
|
~Keys #00 EQU ^$no-key JNZ
|
||||||
|
|
||||||
~Keys #31 LTH ,no-key JNZ2
|
~Keys #31 LTH ^$no-key JNZ
|
||||||
~Keys #33 GTH ,no-key JNZ2
|
~Keys #33 GTH ^$no-key JNZ
|
||||||
( select ) ~Keys #31 SUB =bankview.mode
|
( select ) ~Keys #31 SUB =bankview.mode
|
||||||
( release ) #00 =Keys
|
( release ) #00 =Keys
|
||||||
,redraw JSR2
|
,redraw JSR2
|
||||||
|
|
||||||
@no-key
|
$no-key
|
||||||
|
|
||||||
~Controller.buttons #00 EQU ,no-ctrl JNZ2
|
~Controller.buttons #00 EQU ^$no-ctrl JNZ
|
||||||
|
|
||||||
|
~Controller.buttons
|
||||||
|
DUP #10 EQU ^$no-ctrl-up JNZ
|
||||||
|
~tileview.addr #0080 ADD2 =tileview.addr $no-ctrl-up
|
||||||
|
DUP #20 EQU ^$no-ctrl-down JNZ
|
||||||
|
~tileview.addr #0080 SUB2 =tileview.addr $no-ctrl-down
|
||||||
|
DUP #40 EQU ^$no-ctrl-left JNZ
|
||||||
|
~tileview.addr 8+ =tileview.addr $no-ctrl-left
|
||||||
|
DUP #80 EQU ^$no-ctrl-right JNZ
|
||||||
|
~tileview.addr 8- =tileview.addr $no-ctrl-right
|
||||||
|
POP
|
||||||
|
|
||||||
~Controller.buttons #10 EQU ,no-ctrl-up JNZ2
|
|
||||||
~tileview.addr #0080 ADD2 =tileview.addr
|
|
||||||
@no-ctrl-up
|
|
||||||
~Controller.buttons #20 EQU ,no-ctrl-down JNZ2
|
|
||||||
~tileview.addr #0080 SUB2 =tileview.addr
|
|
||||||
@no-ctrl-down
|
|
||||||
~Controller.buttons #40 EQU ,no-ctrl-left JNZ2
|
|
||||||
~tileview.addr 8+ =tileview.addr
|
|
||||||
@no-ctrl-left
|
|
||||||
~Controller.buttons #80 EQU ,no-ctrl-right JNZ2
|
|
||||||
~tileview.addr 8- =tileview.addr
|
|
||||||
@no-ctrl-right
|
|
||||||
~tileview.addr #0800 DIV2 #0800 MUL2 =bankview.addr
|
~tileview.addr #0800 DIV2 #0800 MUL2 =bankview.addr
|
||||||
,redraw JSR2
|
,redraw JSR2
|
||||||
|
|
||||||
@no-ctrl
|
$no-ctrl
|
||||||
|
|
||||||
( mouse controls )
|
( mouse controls )
|
||||||
|
|
||||||
~Mouse.state #00 EQU ,click-end JNZ2
|
~Mouse.state #00 EQU ,$click-end JNZ2
|
||||||
|
|
||||||
( toolbar )
|
( toolbar )
|
||||||
|
|
||||||
~Mouse.y ~bankview.y #0010 SUB2 SUB2 8/ #0000 NEQ2 ,no-toolbar-click JNZ2
|
~Mouse.y ~bankview.y #0010 SUB2 SUB2 8/ #0000 NEQ2 ,$no-toolbar-click JNZ2
|
||||||
|
|
||||||
( brush )
|
( brush )
|
||||||
~Mouse.x ~bankview.x SUB2 8/ #000d LTH2 ,no-brush-click JNZ2
|
~Mouse.x ~bankview.x SUB2 8/ #000d LTH2 ^$no-brush-click JNZ
|
||||||
~Mouse.x ~bankview.x SUB2 8/ #000f GTH2 ,no-brush-click JNZ2
|
~Mouse.x ~bankview.x SUB2 8/ #000f GTH2 ^$no-brush-click JNZ
|
||||||
( select ) ~mouse.x ~bankview.x SUB2 8/ #000d SUB2 SWP POP =bankview.mode
|
( select ) ~mouse.x ~bankview.x SUB2 8/ #000d SUB2 SWP POP =bankview.mode
|
||||||
( release ) #00 =Mouse.state
|
( release ) #00 =Mouse.state
|
||||||
,redraw JSR2 ,click-end JMP2
|
,redraw JSR2 ,$click-end JMP2
|
||||||
@no-brush-click
|
$no-brush-click
|
||||||
|
~Mouse.x ~tileview.x SUB2 8/ #000e NEQU2 ^$no-load-click JNZ
|
||||||
~Mouse.x ~tileview.x SUB2 8/ #000e NEQU2 ,no-load-click JNZ2
|
|
||||||
( load ) ,filepath =File.name #0800 =File.length ~bankview.addr =File.load
|
( load ) ,filepath =File.name #0800 =File.length ~bankview.addr =File.load
|
||||||
( release ) #00 =Mouse.state
|
( release ) #00 =Mouse.state
|
||||||
,redraw JSR2 ,click-end JMP2
|
,redraw JSR2 ,$click-end JMP2
|
||||||
@no-load-click
|
$no-load-click
|
||||||
|
~Mouse.x ~tileview.x SUB2 8/ #000f NEQU2 ^$no-save-click JNZ
|
||||||
~Mouse.x ~tileview.x SUB2 8/ #000f NEQU2 ,no-save-click JNZ2
|
|
||||||
( save ) ,filepath =File.name #0800 =File.length ~bankview.addr =File.save
|
( save ) ,filepath =File.name #0800 =File.length ~bankview.addr =File.save
|
||||||
( release ) #00 =Mouse.state
|
( release ) #00 =Mouse.state
|
||||||
,redraw JSR2 ,click-end JMP2
|
,redraw JSR2 ,$click-end JMP2
|
||||||
@no-save-click
|
$no-save-click
|
||||||
|
$no-toolbar-click
|
||||||
@no-toolbar-click
|
|
||||||
|
|
||||||
( bankview )
|
( bankview )
|
||||||
|
|
||||||
~Mouse.x ~bankview.x GTH2 ~Mouse.x ~bankview.x #0080 ADD2 LTH2 #0101 EQU2
|
~Mouse.x ~bankview.x GTH2 ~Mouse.x ~bankview.x #0080 ADD2 LTH2 #0101 EQU2
|
||||||
~Mouse.y ~bankview.y GTH2 ~Mouse.y ~bankview.y #0080 ADD2 LTH2 #0101 EQU2
|
~Mouse.y ~bankview.y GTH2 ~Mouse.y ~bankview.y #0080 ADD2 LTH2 #0101 EQU2
|
||||||
#0101 NEQ2 ,no-bank-click JNZ2
|
#0101 NEQ2 ,$no-bank-click JNZ2
|
||||||
|
|
||||||
~bankview.mode #01 NEQ ,not-copy-mode JNZ2
|
~bankview.mode #01 NEQ ^$not-copy-mode JNZ
|
||||||
#00 =i
|
#00 =i
|
||||||
@copy-loop NOP
|
$copy-loop
|
||||||
( load ) ~tileview.addr ~i ADD PEK2
|
( load ) ~tileview.addr ~i ADD PEK2
|
||||||
( get touch addr )
|
( get touch addr )
|
||||||
~Mouse.x ~bankview.x SUB2 STEP8
|
~Mouse.x ~bankview.x SUB2 STEP8
|
||||||
~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2
|
~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2
|
||||||
~bankview.addr ADD2 #00 ~i ADD2 POK2
|
~bankview.addr ADD2 #00 ~i ADD2 POK2
|
||||||
( incr ) ~i #01 ADD =i
|
( incr ) ~i #01 ADD =i
|
||||||
~i #08 LTH ^copy-loop MUL JMP
|
~i #08 LTH ^$copy-loop JNZ
|
||||||
,redraw JSR2 ,click-end JMP2
|
,redraw JSR2 ,$click-end JMP2
|
||||||
@not-copy-mode
|
$not-copy-mode
|
||||||
|
|
||||||
~bankview.mode #02 NEQ ,not-erase-mode JNZ2
|
~bankview.mode #02 NEQ ^$not-erase-mode JNZ
|
||||||
#00 =i
|
#00 =i
|
||||||
@erase-loop NOP
|
$erase-loop
|
||||||
#00
|
#00
|
||||||
( get touch addr )
|
( get touch addr )
|
||||||
~Mouse.x ~bankview.x SUB2 STEP8
|
~Mouse.x ~bankview.x SUB2 STEP8
|
||||||
~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2
|
~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2
|
||||||
~bankview.addr ADD2 #00 ~i ADD2 POK2
|
~bankview.addr ADD2 #00 ~i ADD2 POK2
|
||||||
( incr ) ~i #01 ADD =i
|
( incr ) ~i #01 ADD =i
|
||||||
~i #08 LTH ^erase-loop MUL JMP
|
~i #08 LTH ^$erase-loop JNZ
|
||||||
,redraw JSR2 ,click-end JMP2
|
,redraw JSR2 ,$click-end JMP2
|
||||||
@not-erase-mode
|
$not-erase-mode
|
||||||
|
|
||||||
~Mouse.x ~bankview.x SUB2 STEP8
|
~Mouse.x ~bankview.x SUB2 STEP8
|
||||||
~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2
|
~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2
|
||||||
~bankview.addr ADD2 =tileview.addr
|
~bankview.addr ADD2 =tileview.addr
|
||||||
,redraw JSR2 ,click-end JMP2
|
,redraw JSR2 ,$click-end JMP2
|
||||||
|
|
||||||
@no-bank-click
|
$no-bank-click
|
||||||
|
|
||||||
( tileview )
|
( tileview )
|
||||||
|
|
||||||
~Mouse.x ~tileview.x GTH2 ~Mouse.x ~tileview.x #0080 ADD2 LTH2 #0101 EQU2
|
~Mouse.x ~tileview.x GTH2 ~Mouse.x ~tileview.x #0080 ADD2 LTH2 #0101 EQU2
|
||||||
~Mouse.y ~tileview.y GTH2 ~Mouse.y ~tileview.y #0080 ADD2 LTH2 #0101 EQU2
|
~Mouse.y ~tileview.y GTH2 ~Mouse.y ~tileview.y #0080 ADD2 LTH2 #0101 EQU2
|
||||||
#0101 NEQ2 ,no-tile-click JNZ2
|
#0101 NEQ2 ,$no-tile-click JNZ2
|
||||||
|
|
||||||
~Mouse.x ~tileview.x SUB2 STEP8 #0040 DIV2
|
~Mouse.x ~tileview.x SUB2 STEP8 #0040 DIV2
|
||||||
~Mouse.y ~tileview.y SUB2 STEP8 #0040 DIV2 2* ADD2
|
~Mouse.y ~tileview.y SUB2 STEP8 #0040 DIV2 2* ADD2
|
||||||
|
@ -172,40 +167,40 @@ BRK
|
||||||
~tileview.addr ADD2 =addr ( addr offset )
|
~tileview.addr ADD2 =addr ( addr offset )
|
||||||
~Mouse.x ~tileview.x SUB2 ~Mouse.x ~tileview.x SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.x
|
~Mouse.x ~tileview.x SUB2 ~Mouse.x ~tileview.x SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.x
|
||||||
~Mouse.y ~tileview.y SUB2 ~Mouse.y ~tileview.y SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.y
|
~Mouse.y ~tileview.y SUB2 ~Mouse.y ~tileview.y SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.y
|
||||||
~Mouse.state #10 NEQ ,no-erase-mode JNZ2
|
~Mouse.state #10 NEQ ^$no-erase-mode JNZ
|
||||||
( load ) ~addr ~pos.y 8/ ADD2 PEK2
|
( load ) ~addr ~pos.y 8/ ADD2 PEK2
|
||||||
( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL
|
( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL
|
||||||
#ff EOR AND
|
#ff EOR AND
|
||||||
( save ) ~addr ~pos.y 8/ ADD2 POK2
|
( save ) ~addr ~pos.y 8/ ADD2 POK2
|
||||||
,redraw JSR2 ,click-end JMP2
|
,redraw JSR2 ,$click-end JMP2
|
||||||
@no-erase-mode
|
$no-erase-mode
|
||||||
( load ) ~addr ~pos.y 8/ ADD2 PEK2
|
( load ) ~addr ~pos.y 8/ ADD2 PEK2
|
||||||
( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL
|
( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL
|
||||||
ORA
|
ORA
|
||||||
( save ) ~addr ~pos.y 8/ ADD2 POK2
|
( save ) ~addr ~pos.y 8/ ADD2 POK2
|
||||||
,redraw JSR2 ,click-end JMP2
|
,redraw JSR2 ,$click-end JMP2
|
||||||
|
|
||||||
@no-tile-click
|
$no-tile-click
|
||||||
|
|
||||||
( operations )
|
( operations )
|
||||||
|
|
||||||
~Mouse.y ~tileview.y SUB2 8/ #000c NEQ2 ,no-operations JNZ2
|
~Mouse.y ~tileview.y SUB2 8/ #000c NEQ2 ,$no-operations JNZ2
|
||||||
|
|
||||||
~Mouse.x ~tileview.x SUB2 8/ #0011 NEQ2 ,no-move-up JNZ2
|
~Mouse.x ~tileview.x SUB2 8/ #0011 NEQ2 ^$no-move-up JNZ
|
||||||
,op_shiftup JSR2
|
,op_shiftup JSR2
|
||||||
( release ) #00 =Mouse.state
|
( release ) #00 =Mouse.state
|
||||||
,redraw JSR2 ,click-end JMP2
|
,redraw JSR2 ,$click-end JMP2
|
||||||
@no-move-up
|
$no-move-up
|
||||||
|
|
||||||
~Mouse.x ~tileview.x SUB2 8/ #0012 NEQ2 ,no-move-down JNZ2
|
~Mouse.x ~tileview.x SUB2 8/ #0012 NEQ2 ^$no-move-down JNZ
|
||||||
,op_shiftdown JSR2
|
,op_shiftdown JSR2
|
||||||
( release ) #00 =Mouse.state
|
( release ) #00 =Mouse.state
|
||||||
,redraw JSR2 ,click-end JMP2
|
,redraw JSR2 ,$click-end JMP2
|
||||||
@no-move-down
|
$no-move-down
|
||||||
|
|
||||||
@no-operations
|
$no-operations
|
||||||
|
|
||||||
@click-end
|
$click-end
|
||||||
|
|
||||||
,draw-cursor JSR2
|
,draw-cursor JSR2
|
||||||
|
|
||||||
|
@ -297,7 +292,7 @@ RTN
|
||||||
( draw ) #02 =Sprite.color
|
( draw ) #02 =Sprite.color
|
||||||
~Sprite.addr 8+ =Sprite.addr
|
~Sprite.addr 8+ =Sprite.addr
|
||||||
( incr ) ~i #01 ADD =i
|
( incr ) ~i #01 ADD =i
|
||||||
~i #10 LTH ,$guides JNZ2
|
~i #10 LTH ^$guides JNZ
|
||||||
|
|
||||||
( body )
|
( body )
|
||||||
|
|
||||||
|
@ -364,7 +359,7 @@ RTN
|
||||||
$line-hor
|
$line-hor
|
||||||
( draw ) #03 =Screen.color
|
( draw ) #03 =Screen.color
|
||||||
( incr ) ~Screen.x #0002 ADD2 =Screen.x
|
( incr ) ~Screen.x #0002 ADD2 =Screen.x
|
||||||
~Screen.x ~tileview.x #0082 ADD2 LTH2 ,$line-hor JNZ2
|
~Screen.x ~tileview.x #0082 ADD2 LTH2 ^$line-hor JNZ
|
||||||
|
|
||||||
( line ver )
|
( line ver )
|
||||||
~tileview.y =Screen.y
|
~tileview.y =Screen.y
|
||||||
|
@ -372,7 +367,7 @@ RTN
|
||||||
$line-ver
|
$line-ver
|
||||||
( draw ) #03 =Screen.color
|
( draw ) #03 =Screen.color
|
||||||
( incr ) ~Screen.y #0002 ADD2 =Screen.y
|
( incr ) ~Screen.y #0002 ADD2 =Screen.y
|
||||||
~Screen.y ~tileview.y #0081 ADD2 LTH2 ,$line-ver JNZ2
|
~Screen.y ~tileview.y #0081 ADD2 LTH2 ^$line-ver JNZ
|
||||||
|
|
||||||
( rewind ) ~tileview.addr #0018 SUB2 =tileview.addr
|
( rewind ) ~tileview.addr #0018 SUB2 =tileview.addr
|
||||||
|
|
||||||
|
@ -487,17 +482,17 @@ RTN
|
||||||
@line-rect ( x1 y1 x2 y2 color )
|
@line-rect ( x1 y1 x2 y2 color )
|
||||||
|
|
||||||
( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
|
( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
|
||||||
$hor NOP
|
$hor
|
||||||
( incr ) ~Screen.x ++ =Screen.x
|
( incr ) ~Screen.x ++ =Screen.x
|
||||||
( draw ) ~rect.y1 =Screen.y ~color =Screen.color
|
( draw ) ~rect.y1 =Screen.y ~color =Screen.color
|
||||||
( draw ) ~rect.y2 =Screen.y ~color =Screen.color
|
( draw ) ~rect.y2 =Screen.y ~color =Screen.color
|
||||||
~Screen.x ~rect.x2 LTH2 ^$hor MUL JMP
|
~Screen.x ~rect.x2 LTH2 ^$hor JNZ
|
||||||
~rect.y1 =Screen.y
|
~rect.y1 =Screen.y
|
||||||
$ver NOP
|
$ver
|
||||||
( draw ) ~rect.x1 =Screen.x ~color =Screen.color
|
( draw ) ~rect.x1 =Screen.x ~color =Screen.color
|
||||||
( draw ) ~rect.x2 =Screen.x ~color =Screen.color
|
( draw ) ~rect.x2 =Screen.x ~color =Screen.color
|
||||||
( incr ) ~Screen.y ++ =Screen.y
|
( incr ) ~Screen.y ++ =Screen.y
|
||||||
~Screen.y ~rect.y2 ++ LTH2 ^$ver MUL JMP
|
~Screen.y ~rect.y2 ++ LTH2 ^$ver JNZ
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue