uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit 72f045cc63c9c2e33f3932b18e076d9cf67aa699
parent f3e920c54da6554f76ea321f9d745a35a0c38fb3
Author: neauoire <aliceffekt@gmail.com>
Date:   Fri, 26 Mar 2021 18:18:16 -0700

Optimized Nasu

Diffstat:
Mbuild.sh | 2+-
Mprojects/software/nasu.usm | 139++++++++++++++++++++++++++++++++++++++-----------------------------------------
2 files changed, 68 insertions(+), 73 deletions(-)

diff --git a/build.sh b/build.sh @@ -28,7 +28,7 @@ else fi echo "Assembling.." -./bin/assembler projects/examples/gui.shapes.usm bin/boot.rom +./bin/assembler projects/software/nasu.usm bin/boot.rom echo "Running.." if [ "${2}" = '--cli' ]; diff --git a/projects/software/nasu.usm b/projects/software/nasu.usm @@ -62,109 +62,104 @@ BRK ( keyboard controls ) - ~Keys #00 EQU ,no-key JNZ2 + ~Keys #00 EQU ^$no-key JNZ - ~Keys #31 LTH ,no-key JNZ2 - ~Keys #33 GTH ,no-key JNZ2 + ~Keys #31 LTH ^$no-key JNZ + ~Keys #33 GTH ^$no-key JNZ ( select ) ~Keys #31 SUB =bankview.mode ( release ) #00 =Keys ,redraw JSR2 - @no-key - - ~Controller.buttons #00 EQU ,no-ctrl JNZ2 - - ~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 + $no-key + + ~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 + ~tileview.addr #0800 DIV2 #0800 MUL2 =bankview.addr ,redraw JSR2 - @no-ctrl + $no-ctrl ( mouse controls ) - ~Mouse.state #00 EQU ,click-end JNZ2 + ~Mouse.state #00 EQU ,$click-end JNZ2 ( 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 ) - ~Mouse.x ~bankview.x SUB2 8/ #000d LTH2 ,no-brush-click JNZ2 - ~Mouse.x ~bankview.x SUB2 8/ #000f GTH2 ,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 JNZ ( select ) ~mouse.x ~bankview.x SUB2 8/ #000d SUB2 SWP POP =bankview.mode ( release ) #00 =Mouse.state - ,redraw JSR2 ,click-end JMP2 - @no-brush-click - - ~Mouse.x ~tileview.x SUB2 8/ #000e NEQU2 ,no-load-click JNZ2 + ,redraw JSR2 ,$click-end JMP2 + $no-brush-click + ~Mouse.x ~tileview.x SUB2 8/ #000e NEQU2 ^$no-load-click JNZ ( load ) ,filepath =File.name #0800 =File.length ~bankview.addr =File.load ( release ) #00 =Mouse.state - ,redraw JSR2 ,click-end JMP2 - @no-load-click - - ~Mouse.x ~tileview.x SUB2 8/ #000f NEQU2 ,no-save-click JNZ2 + ,redraw JSR2 ,$click-end JMP2 + $no-load-click + ~Mouse.x ~tileview.x SUB2 8/ #000f NEQU2 ^$no-save-click JNZ ( save ) ,filepath =File.name #0800 =File.length ~bankview.addr =File.save ( release ) #00 =Mouse.state - ,redraw JSR2 ,click-end JMP2 - @no-save-click - - @no-toolbar-click + ,redraw JSR2 ,$click-end JMP2 + $no-save-click + $no-toolbar-click ( bankview ) ~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 - #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 - @copy-loop NOP + $copy-loop ( load ) ~tileview.addr ~i ADD PEK2 ( get touch addr ) ~Mouse.x ~bankview.x SUB2 STEP8 ~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2 ~bankview.addr ADD2 #00 ~i ADD2 POK2 ( incr ) ~i #01 ADD =i - ~i #08 LTH ^copy-loop MUL JMP - ,redraw JSR2 ,click-end JMP2 - @not-copy-mode + ~i #08 LTH ^$copy-loop JNZ + ,redraw JSR2 ,$click-end JMP2 + $not-copy-mode - ~bankview.mode #02 NEQ ,not-erase-mode JNZ2 + ~bankview.mode #02 NEQ ^$not-erase-mode JNZ #00 =i - @erase-loop NOP + $erase-loop #00 ( get touch addr ) ~Mouse.x ~bankview.x SUB2 STEP8 ~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2 ~bankview.addr ADD2 #00 ~i ADD2 POK2 ( incr ) ~i #01 ADD =i - ~i #08 LTH ^erase-loop MUL JMP - ,redraw JSR2 ,click-end JMP2 - @not-erase-mode + ~i #08 LTH ^$erase-loop JNZ + ,redraw JSR2 ,$click-end JMP2 + $not-erase-mode ~Mouse.x ~bankview.x SUB2 STEP8 ~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2 ~bankview.addr ADD2 =tileview.addr - ,redraw JSR2 ,click-end JMP2 + ,redraw JSR2 ,$click-end JMP2 - @no-bank-click + $no-bank-click ( tileview ) ~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 - #0101 NEQ2 ,no-tile-click JNZ2 + #0101 NEQ2 ,$no-tile-click JNZ2 ~Mouse.x ~tileview.x SUB2 STEP8 #0040 DIV2 ~Mouse.y ~tileview.y SUB2 STEP8 #0040 DIV2 2* ADD2 @@ -172,40 +167,40 @@ BRK ~tileview.addr ADD2 =addr ( addr offset ) ~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.state #10 NEQ ,no-erase-mode JNZ2 + ~Mouse.state #10 NEQ ^$no-erase-mode JNZ ( load ) ~addr ~pos.y 8/ ADD2 PEK2 ( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL #ff EOR AND ( save ) ~addr ~pos.y 8/ ADD2 POK2 - ,redraw JSR2 ,click-end JMP2 - @no-erase-mode + ,redraw JSR2 ,$click-end JMP2 + $no-erase-mode ( load ) ~addr ~pos.y 8/ ADD2 PEK2 ( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL ORA ( save ) ~addr ~pos.y 8/ ADD2 POK2 - ,redraw JSR2 ,click-end JMP2 + ,redraw JSR2 ,$click-end JMP2 - @no-tile-click + $no-tile-click ( 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 ( release ) #00 =Mouse.state - ,redraw JSR2 ,click-end JMP2 - @no-move-up + ,redraw JSR2 ,$click-end JMP2 + $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 ( release ) #00 =Mouse.state - ,redraw JSR2 ,click-end JMP2 - @no-move-down + ,redraw JSR2 ,$click-end JMP2 + $no-move-down - @no-operations + $no-operations - @click-end + $click-end ,draw-cursor JSR2 @@ -297,7 +292,7 @@ RTN ( draw ) #02 =Sprite.color ~Sprite.addr 8+ =Sprite.addr ( incr ) ~i #01 ADD =i - ~i #10 LTH ,$guides JNZ2 + ~i #10 LTH ^$guides JNZ ( body ) @@ -364,7 +359,7 @@ RTN $line-hor ( draw ) #03 =Screen.color ( 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 ) ~tileview.y =Screen.y @@ -372,7 +367,7 @@ RTN $line-ver ( draw ) #03 =Screen.color ( 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 @@ -487,17 +482,17 @@ RTN @line-rect ( x1 y1 x2 y2 color ) ( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1 - $hor NOP + $hor ( 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 MUL JMP + ~Screen.x ~rect.x2 LTH2 ^$hor JNZ ~rect.y1 =Screen.y - $ver NOP + $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 MUL JMP + ~Screen.y ~rect.y2 ++ LTH2 ^$ver JNZ RTN