35 files changed, 173 insertions(+), 41 deletions(-)
A 6502/build.sh
R misc/NOTES => 6502/misc/NOTES
R misc/_clover.asm => 6502/misc/_clover.asm
R misc/_dialogs.asm => 6502/misc/_dialogs.asm
R misc/_diamond.asm => 6502/misc/_diamond.asm
R misc/_heart.asm => 6502/misc/_heart.asm
R misc/_layout.asm => 6502/misc/_layout.asm
R misc/_spade.asm => 6502/misc/_spade.asm
R misc/_splash.asm => 6502/misc/_splash.asm
R src/cart.asm => 6502/src/cart.asm
R src/deck.asm => 6502/src/deck.asm
R src/game.asm => 6502/src/game.asm
R src/head.asm => 6502/src/head.asm
R src/helpers.asm => 6502/src/helpers.asm
R src/init.asm => 6502/src/init.asm
R src/main.asm => 6502/src/main.asm
R src/nmi.asm => 6502/src/nmi.asm
R src/player.asm => 6502/src/player.asm
R src/room.asm => 6502/src/room.asm
R src/sound.asm => 6502/src/sound.asm
R src/splash.asm => 6502/src/splash.asm
R src/sprite.chr => 6502/src/sprite.chr
R src/tables.asm => 6502/src/tables.asm
R src/tests.asm => 6502/src/tests.asm
A 6502/tools/asm6
R tools/asm6.c => 6502/tools/asm6.c
A 6502/tools/lin6
R tools/lin6.c => 6502/tools/lin6.c
R tools/theme.svg => 6502/tools/theme.svg
R tools/zeropage.lua => 6502/tools/zeropage.lua
R zeropage.lua => 6502/zeropage.lua
A bin/donsol.rom
M build.sh
D push.sh
A src/main.tal
A 6502/build.sh => 6502/build.sh +41 -0
@@ 0,0 1,41 @@
+#!/bin/sh -e
+
+# Remove old cart
+rm -rf bin
+mkdir bin
+
+# If asm6 is not built, build it.
+if test -f "tools/asm6"; then
+ echo "Assembler is ready."
+else
+ echo "Compiling assembler."
+ tcc tools/asm6.c -o tools/asm6
+fi
+
+# If lin6 is not built, build it.
+if test -f "tools/lin6"; then
+ echo "Linter is ready."
+else
+ echo "Compiling linter."
+ tcc tools/lin6.c -o tools/lin6
+fi
+
+# Lint project
+for filename in src/*.asm; do
+ [ -e "$filename" ] || continue
+ tools/lin6 -i "$filename"
+done
+
+# Build new cart
+echo "Assembling new cart."
+tools/asm6 src/cart.asm bin/cart.nes
+
+if [ "${1}" = '--push' ];
+then
+ echo "Pushing.."
+ ~/Applications/butler push bin/cart.rom hundredrabbits/donsol:nes
+fi
+
+# Run
+# fceux cart.nes --loadlua zeropage.lua
+fceux cart.nes
R misc/NOTES => 6502/misc/NOTES +0 -0
R misc/_clover.asm => 6502/misc/_clover.asm +0 -0
R misc/_dialogs.asm => 6502/misc/_dialogs.asm +0 -0
R misc/_diamond.asm => 6502/misc/_diamond.asm +0 -0
R misc/_heart.asm => 6502/misc/_heart.asm +0 -0
R misc/_layout.asm => 6502/misc/_layout.asm +0 -0
R misc/_spade.asm => 6502/misc/_spade.asm +0 -0
R misc/_splash.asm => 6502/misc/_splash.asm +0 -0
R src/cart.asm => 6502/src/cart.asm +0 -0
R src/deck.asm => 6502/src/deck.asm +0 -0
R src/game.asm => 6502/src/game.asm +0 -0
R src/head.asm => 6502/src/head.asm +0 -0
R src/helpers.asm => 6502/src/helpers.asm +0 -0
R src/init.asm => 6502/src/init.asm +0 -0
R src/main.asm => 6502/src/main.asm +0 -0
R src/nmi.asm => 6502/src/nmi.asm +0 -0
R src/player.asm => 6502/src/player.asm +0 -0
R src/room.asm => 6502/src/room.asm +0 -0
R src/sound.asm => 6502/src/sound.asm +0 -0
R src/splash.asm => 6502/src/splash.asm +0 -0
R src/sprite.chr => 6502/src/sprite.chr +0 -0
R src/tables.asm => 6502/src/tables.asm +0 -0
R src/tests.asm => 6502/src/tests.asm +0 -0
A 6502/tools/asm6 => 6502/tools/asm6 +0 -0
R tools/asm6.c => 6502/tools/asm6.c +0 -0
A 6502/tools/lin6 => 6502/tools/lin6 +0 -0
R tools/lin6.c => 6502/tools/lin6.c +0 -0
R tools/theme.svg => 6502/tools/theme.svg +0 -0
R tools/zeropage.lua => 6502/tools/zeropage.lua +0 -0
R zeropage.lua => 6502/zeropage.lua +0 -0
A bin/donsol.rom => bin/donsol.rom +0 -0
M build.sh => build.sh +18 -31
@@ 1,37 1,24 @@
-#!/bin/bash
+#!/bin/sh -e
-# Remove old cart
-if test -f "cart.nes"; then
- echo "Removing old cart."
- rm cart.nes
-fi
+echo "Cleaning.."
+rm -rf bin
+mkdir bin
-# If asm6 is not built, build it.
-if test -f "tools/asm6"; then
- echo "Assembler is ready."
-else
- echo "Compiling assembler."
- tcc tools/asm6.c -o tools/asm6
-fi
+echo "Assembling.."
+uxnasm src/main.tal bin/donsol.rom
-# If lin6 is not built, build it.
-if test -f "tools/lin6"; then
- echo "Linter is ready."
-else
- echo "Compiling linter."
- tcc tools/lin6.c -o tools/lin6
+echo "Installing.."
+if [ -d "$HOME/roms" ] && [ -e ./bin/donsol.rom ]
+then
+ cp ./bin/donsol.rom $HOME/roms
+ echo "Installed in $HOME/roms"
fi
-# Lint project
-for filename in src/*.asm; do
- [ -e "$filename" ] || continue
- tools/lin6 -i "$filename"
-done
-
-# Build new cart
-echo "Assembling new cart."
-tools/asm6 src/cart.asm cart.nes
+if [ "${1}" = '--push' ];
+then
+ echo "Pushing.."
+ ~/Applications/butler push bin/donsol.rom hundredrabbits/donsol:uxn
+fi
-# Run
-# fceux cart.nes --loadlua zeropage.lua
-fceux cart.nes
+echo "Running.."
+uxnemu bin/donsol.rom
D push.sh => push.sh +0 -10
@@ 1,10 0,0 @@
-#!/bin/bash
-
-# Push
-rm -r release
-mkdir release
-cp cart.nes release/cart.nes
-cp README release/README
-~/butler push release hundredrabbits/donsol:nes
-~/butler status hundredrabbits/donsol
-rm -r release
A src/main.tal => src/main.tal +114 -0
@@ 0,0 1,114 @@
+(
+
+ )
+
+%+ { ADD } %- { SUB } %* { MUL } %/ { NEQ }
+%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
+%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
+%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
+
+%!~ { NEQk NIP }
+
+%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 }
+
+%2MOD { #01 AND } %2MOD2 { #0001 AND2 }
+%4MOD { #03 AND } %4MOD2 { #0003 AND2 }
+%8MOD { #07 AND } %8MOD2 { #0007 AND2 }
+%10MOD { #0f AND } %10MOD2 { #000f AND2 }
+%20MOD { #1f AND } %20MOD2 { #001f AND2 }
+
+%DEBUG { ;print-hex JSR2 #0a .Console/write DEO }
+%DEBUG2 { SWP ;print-hex JSR2 ;print-hex JSR2 #0a .Console/write DEO }
+
+%RTN { JMP2r }
+%TOS { #00 SWP }
+%BRK? { #01 JCN BRK }
+%SWP? { #01 JCN SWP }
+
+( devices )
+
+|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
+|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 ]
+|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
+|80 @Controller [ &vector $2 &button $1 &key $1 ]
+|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &chord $1 ]
+|a0 @File [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ]
+
+( variables )
+
+|0000
+
+@cursor
+ &x $2 &y $2 &last $1
+
+
+( program )
+
+|0100 ( -> )
+
+ ( theme )
+ #0a6f .System/r DEO2
+ #05cf .System/g DEO2
+ #0caf .System/b DEO2
+
+ ( vectors )
+ ;on-button .Controller/vector DEO2
+ ;on-mouse .Mouse/vector DEO2
+ ;on-frame .Screen/vector DEO2
+
+BRK
+
+@on-frame ( -> )
+ ( inactive )
+BRK
+
+@on-button ( -> )
+
+ .Controller/button DEI #04 SFT
+ [ #01 ] !~ ,&no-up JCN
+ POP BRK &no-up
+ [ #02 ] !~ ,&no-down JCN
+ POP BRK &no-down
+ [ #04 ] !~ ,&no-left JCN
+ POP BRK &no-left
+ [ #08 ] !~ ,&no-right JCN
+ POP BRK &no-right
+ POP
+
+ ;redraw JSR2
+
+BRK
+
+@on-mouse ( -> )
+
+ ;draw-cursor JSR2
+
+ ( release-record ) #0000 .Mouse/state DEO .cursor/last STZ
+
+BRK
+
+@redraw ( -- )
+
+RTN
+
+@draw-cursor ( -- )
+
+ ( clear last cursor )
+ .cursor/x LDZ2 .Screen/x DEO2
+ .cursor/y LDZ2 .Screen/y DEO2
+ #40 .Screen/sprite DEO
+
+ ( record mouse positions )
+ .Mouse/x DEI2 DUP2 .cursor/x STZ2 .Screen/x DEO2
+ .Mouse/y DEI2 DUP2 .cursor/y STZ2 .Screen/y DEO2
+
+ ( draw new cursor )
+ ;pointer-icn .Screen/addr DEO2
+ #42 .Mouse/state DEI #00 ! + .Screen/sprite DEO
+
+RTN
+
+@pointer-icn 80c0 e0f0 f8e0 1000<
\ No newline at end of file