Renamed USM to TAL files
This commit is contained in:
parent
d5b2bd9895
commit
fbc0b762c9
|
@ -31,10 +31,10 @@ Begin by building the assembler and emulator by running the build script. The as
|
||||||
./build.sh
|
./build.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
The following command will create an Uxn-compatible rom from an [uxambly file](https://wiki.xxiivv.com/site/uxambly.html), point to a different usm file in `/projects` to assemble a different rom.
|
The following command will create an Uxn-compatible rom from an [uxntal file](https://wiki.xxiivv.com/site/uxntal.html), point to a different .tal file in `/projects` to assemble a different rom.
|
||||||
|
|
||||||
```
|
```
|
||||||
bin/uxnasm projects/examples/demos/life.usm bin/life.rom
|
bin/uxnasm projects/examples/demos/life.tal bin/life.rom
|
||||||
```
|
```
|
||||||
|
|
||||||
To start the rom, point the emulator to the newly created rom:
|
To start the rom, point the emulator to the newly created rom:
|
||||||
|
|
2
build.sh
2
build.sh
|
@ -43,7 +43,7 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Assembling.."
|
echo "Assembling.."
|
||||||
./bin/uxnasm projects/examples/demos/piano.usm bin/piano.rom
|
./bin/uxnasm projects/examples/demos/piano.tal bin/piano.rom
|
||||||
|
|
||||||
echo "Running.."
|
echo "Running.."
|
||||||
./bin/uxnemu bin/piano.rom
|
./bin/uxnemu bin/piano.rom
|
||||||
|
|
|
@ -6,22 +6,22 @@ mkdir asma-test
|
||||||
cd asma-test
|
cd asma-test
|
||||||
|
|
||||||
build_asma() {
|
build_asma() {
|
||||||
sed -ne '/^( devices )/,/^( vectors )/p' ../projects/software/asma.usm
|
sed -ne '/^( devices )/,/^( vectors )/p' ../projects/software/asma.tal
|
||||||
cat <<EOD
|
cat <<EOD
|
||||||
|0100 @reset
|
|0100 @reset
|
||||||
;&source-file ;&dest-file ;asma-assemble-file JSR2
|
;&source-file ;&dest-file ;asma-assemble-file JSR2
|
||||||
;asma/error LDA2 #0000 NEQ2 JMP BRK
|
;asma/error LDA2 #0000 NEQ2 JMP BRK
|
||||||
#0000 DIV
|
#0000 DIV
|
||||||
|
|
||||||
&source-file "in.usm 00
|
&source-file "in.tal 00
|
||||||
&dest-file "out.rom 00
|
&dest-file "out.rom 00
|
||||||
|
|
||||||
EOD
|
EOD
|
||||||
sed -ne '/%asma-IF-ERROR/,$p' ../projects/software/asma.usm
|
sed -ne '/%asma-IF-ERROR/,$p' ../projects/software/asma.tal
|
||||||
}
|
}
|
||||||
|
|
||||||
expect_failure() {
|
expect_failure() {
|
||||||
cat > 'in.usm'
|
cat > 'in.tal'
|
||||||
if ../bin/uxncli asma.rom > asma.log 2>/dev/null || ! grep -qF "${1}" asma.log; then
|
if ../bin/uxncli asma.rom > asma.log 2>/dev/null || ! grep -qF "${1}" asma.log; then
|
||||||
echo "error: asma didn't report error ${1} in faulty code"
|
echo "error: asma didn't report error ${1} in faulty code"
|
||||||
tail asma.log
|
tail asma.log
|
||||||
|
@ -30,11 +30,11 @@ expect_failure() {
|
||||||
}
|
}
|
||||||
|
|
||||||
echo 'Assembling asma with uxnasm'
|
echo 'Assembling asma with uxnasm'
|
||||||
build_asma > asma.usm
|
build_asma > asma.tal
|
||||||
../bin/uxnasm asma.usm asma.rom > uxnasm.log
|
../bin/uxnasm asma.tal asma.rom > uxnasm.log
|
||||||
find ../projects -type f -name '*.usm' -not -name 'blank.usm' | sort | while read F; do
|
find ../projects -type f -name '*.tal' -not -name 'blank.tal' | sort | while read F; do
|
||||||
echo "Comparing assembly of ${F}"
|
echo "Comparing assembly of ${F}"
|
||||||
BN="$(basename "${F%.usm}")"
|
BN="$(basename "${F%.tal}")"
|
||||||
|
|
||||||
if ! ../bin/uxnasm "${F}" "uxnasm-${BN}.rom" > uxnasm.log; then
|
if ! ../bin/uxnasm "${F}" "uxnasm-${BN}.rom" > uxnasm.log; then
|
||||||
echo "error: uxnasm failed to assemble ${F}"
|
echo "error: uxnasm failed to assemble ${F}"
|
||||||
|
@ -43,7 +43,7 @@ find ../projects -type f -name '*.usm' -not -name 'blank.usm' | sort | while rea
|
||||||
fi
|
fi
|
||||||
xxd "uxnasm-${BN}.rom" > "uxnasm-${BN}.hex"
|
xxd "uxnasm-${BN}.rom" > "uxnasm-${BN}.hex"
|
||||||
|
|
||||||
cp "${F}" 'in.usm'
|
cp "${F}" 'in.tal'
|
||||||
if ! ../bin/uxncli asma.rom > asma.log; then
|
if ! ../bin/uxncli asma.rom > asma.log; then
|
||||||
echo "error: asma failed to assemble ${F}, while uxnasm succeeded"
|
echo "error: asma failed to assemble ${F}, while uxnasm succeeded"
|
||||||
tail asma.log
|
tail asma.log
|
||||||
|
|
|
@ -147,8 +147,8 @@ fmt = function(...)
|
||||||
return (('\t%-11s %-10s %-12s %-14s %s '):format(...):gsub(' +$', '\n'))
|
return (('\t%-11s %-10s %-12s %-14s %s '):format(...):gsub(' +$', '\n'))
|
||||||
end
|
end
|
||||||
do
|
do
|
||||||
local _with_0 = assert(io.open('projects/software/asma.usm.tmp', 'w'))
|
local _with_0 = assert(io.open('projects/software/asma.tal.tmp', 'w'))
|
||||||
for l in assert(io.lines('projects/software/asma.usm')) do
|
for l in assert(io.lines('projects/software/asma.tal')) do
|
||||||
if l:match('--- cut here ---') then
|
if l:match('--- cut here ---') then
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
@ -228,4 +228,4 @@ do
|
||||||
]])
|
]])
|
||||||
_with_0:close()
|
_with_0:close()
|
||||||
end
|
end
|
||||||
return os.execute('mv projects/software/asma.usm.tmp projects/software/asma.usm')
|
return os.execute('mv projects/software/asma.tal.tmp projects/software/asma.tal')
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
--
|
--
|
||||||
-- Asma tree helper script
|
-- Asma tree helper script
|
||||||
--
|
--
|
||||||
-- This script updates the trees at the end of projects/software/asma.usm when
|
-- This script updates the trees at the end of projects/software/asma.tal when
|
||||||
-- Uxn's opcode set changes or new runes (first character of tokens) are
|
-- Uxn's opcode set changes or new runes (first character of tokens) are
|
||||||
-- created, so that new changes in the C assembler can be incorporated rapidly
|
-- created, so that new changes in the C assembler can be incorporated rapidly
|
||||||
-- into asma.
|
-- into asma.
|
||||||
|
@ -122,8 +122,8 @@ printout = true
|
||||||
fmt = (...) ->
|
fmt = (...) ->
|
||||||
('\t%-11s %-10s %-12s %-14s %s '\format(...)\gsub ' +$', '\n')
|
('\t%-11s %-10s %-12s %-14s %s '\format(...)\gsub ' +$', '\n')
|
||||||
|
|
||||||
with assert io.open 'projects/software/asma.usm.tmp', 'w'
|
with assert io.open 'projects/software/asma.tal.tmp', 'w'
|
||||||
for l in assert io.lines 'projects/software/asma.usm'
|
for l in assert io.lines 'projects/software/asma.tal'
|
||||||
if l\match '--- cut here ---'
|
if l\match '--- cut here ---'
|
||||||
break
|
break
|
||||||
\write l
|
\write l
|
||||||
|
@ -193,5 +193,5 @@ with assert io.open 'projects/software/asma.usm.tmp', 'w'
|
||||||
|
|
||||||
]]
|
]]
|
||||||
\close!
|
\close!
|
||||||
os.execute 'mv projects/software/asma.usm.tmp projects/software/asma.usm'
|
os.execute 'mv projects/software/asma.tal.tmp projects/software/asma.tal'
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
---
|
---
|
||||||
# See http://www.sublimetext.com/docs/3/syntax.html
|
# See http://www.sublimetext.com/docs/3/syntax.html
|
||||||
name: Uxn Assembly
|
name: Uxn Assembly
|
||||||
scopeName: usm.
|
scopeName: tal.
|
||||||
fileTypes: [usm]
|
fileTypes: [tal]
|
||||||
file_extensions:
|
file_extensions:
|
||||||
- usm
|
- tal
|
||||||
scope: source.usm
|
scope: source.tal
|
||||||
|
|
||||||
contexts:
|
contexts:
|
||||||
main:
|
main:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
-- Used for porting Uxambly code for use with the old assembler
|
-- Used for porting Uxntal code for use with the old assembler
|
||||||
-- in commit 82f7103a55c21b13f898b20e5d1e174e501bc825 with the
|
-- in commit 82f7103a55c21b13f898b20e5d1e174e501bc825 with the
|
||||||
-- assembler that replaced it straight afterwards.
|
-- assembler that replaced it straight afterwards.
|
||||||
|
|
||||||
|
@ -93,11 +93,11 @@ translate = (_filename) ->
|
||||||
f\close!
|
f\close!
|
||||||
os.exit 0
|
os.exit 0
|
||||||
|
|
||||||
translate 'attic/software/assembler.usm'
|
translate 'attic/software/assembler.tal'
|
||||||
os.exit 0
|
os.exit 0
|
||||||
|
|
||||||
translate 'attic/tests/opcodes.usm'
|
translate 'attic/tests/opcodes.tal'
|
||||||
translate 'attic/tests/basics.usm'
|
translate 'attic/tests/basics.tal'
|
||||||
|
|
||||||
-- for k, v in pairs t
|
-- for k, v in pairs t
|
||||||
-- print k
|
-- print k
|
||||||
|
|
8
mkfile
8
mkfile
|
@ -1,8 +1,8 @@
|
||||||
</$objtype/mkfile
|
</$objtype/mkfile
|
||||||
|
|
||||||
TARG=bin/uxncli bin/uxnasm bin/uxnemu
|
TARG=bin/uxncli bin/uxnasm bin/uxnemu
|
||||||
USM=`{walk -f projects/ | grep '\.usm$' | grep -v blank.usm}
|
USM=`{walk -f projects/ | grep '\.tal$' | grep -v blank.tal}
|
||||||
ROM=${USM:%.usm=%.rom}
|
ROM=${USM:%.tal=%.rom}
|
||||||
CFLAGS=$CFLAGS -I/sys/include/npe
|
CFLAGS=$CFLAGS -I/sys/include/npe
|
||||||
HFILES=\
|
HFILES=\
|
||||||
/sys/include/npe/stdio.h\
|
/sys/include/npe/stdio.h\
|
||||||
|
@ -26,8 +26,8 @@ bin:
|
||||||
mk install &&
|
mk install &&
|
||||||
rm -r npe-master
|
rm -r npe-master
|
||||||
|
|
||||||
%.rom:Q: %.usm bin/uxnasm
|
%.rom:Q: %.tal bin/uxnasm
|
||||||
bin/uxnasm $stem.usm $target >/dev/null
|
bin/uxnasm $stem.tal $target >/dev/null
|
||||||
|
|
||||||
bin/uxncli: uxncli.$O uxn.$O
|
bin/uxncli: uxncli.$O uxn.$O
|
||||||
$LD $LDFLAGS -o $target $prereq
|
$LD $LDFLAGS -o $target $prereq
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
( darena.usm )
|
( darena.tal )
|
||||||
( an open-ended game of rocks and sand )
|
( an open-ended game of rocks and sand )
|
||||||
( contributed by and cc0 sejo 12021 )
|
( contributed by and cc0 sejo 12021 )
|
||||||
|
|
|
@ -1,141 +0,0 @@
|
||||||
( GUI Labels )
|
|
||||||
|
|
||||||
%RTN { JMP2r }
|
|
||||||
%2// { #01 SFT2 }
|
|
||||||
%8** { #30 SFT2 }
|
|
||||||
|
|
||||||
( devices )
|
|
||||||
|
|
||||||
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
|
|
||||||
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ]
|
|
||||||
|
|
||||||
( variables )
|
|
||||||
|
|
||||||
|0000
|
|
||||||
|
|
||||||
@label [ &x $2 &y $2 &color $1 &addr $2 ]
|
|
||||||
@center [ &x $2 &y $2 ]
|
|
||||||
|
|
||||||
( program )
|
|
||||||
|
|
||||||
|0100
|
|
||||||
|
|
||||||
( theme ) #0f0f .System/r DEO2 #0fff .System/g DEO2 #0ff0 .System/b DEO2
|
|
||||||
|
|
||||||
;draw JSR2
|
|
||||||
|
|
||||||
BRK
|
|
||||||
|
|
||||||
@draw ( -- )
|
|
||||||
|
|
||||||
( find screen center )
|
|
||||||
.Screen/width DEI2 2// .center/x STZ2
|
|
||||||
.Screen/height DEI2 2// .center/y STZ2
|
|
||||||
|
|
||||||
( draw ver line )
|
|
||||||
.center/x LDZ2 .Screen/x DEO2 #0000 .Screen/y DEO2
|
|
||||||
&draw-ver
|
|
||||||
( draw ) #02 .Screen/color DEO
|
|
||||||
( incr ) .Screen/y DEI2 #0002 ADD2 .Screen/y DEO2
|
|
||||||
.Screen/y DEI2 .Screen/height DEI2 LTH2 ,&draw-ver JCN
|
|
||||||
|
|
||||||
.center/x LDZ2 .center/y LDZ2 #0010 SUB2 #2c ;text1 ;draw-label-left JSR2
|
|
||||||
.center/x LDZ2 .center/y LDZ2 #2c ;text2 ;draw-label-middle JSR2
|
|
||||||
.center/x LDZ2 .center/y LDZ2 #0010 ADD2 #2c ;text3 ;draw-label-right JSR2
|
|
||||||
.center/x LDZ2 .center/y LDZ2 #0020 ADD2 #2c ;text4 ;draw-label-middle JSR2
|
|
||||||
.center/x LDZ2 .center/y LDZ2 #0030 ADD2 #2c ;text5 ;draw-label-middle JSR2
|
|
||||||
|
|
||||||
RTN
|
|
||||||
|
|
||||||
@draw-label-left ( x y color addr -- )
|
|
||||||
|
|
||||||
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2 .Screen/x DEO2
|
|
||||||
.label/addr LDZ2
|
|
||||||
&loop
|
|
||||||
( draw ) DUP2 LDA #00 SWP 8** ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/color DEO
|
|
||||||
( incr ) #0001 ADD2
|
|
||||||
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
|
|
||||||
DUP2 LDA ,&loop JCN
|
|
||||||
POP2
|
|
||||||
|
|
||||||
RTN
|
|
||||||
|
|
||||||
@draw-label-middle ( x y color addr -- )
|
|
||||||
|
|
||||||
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2
|
|
||||||
( align ) .label/addr LDZ2 ;get-text-length JSR2 8** 2// SUB2 .Screen/x DEO2
|
|
||||||
.label/addr LDZ2
|
|
||||||
&loop
|
|
||||||
( draw ) DUP2 LDA #00 SWP 8** ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/color DEO
|
|
||||||
( incr ) #0001 ADD2
|
|
||||||
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
|
|
||||||
DUP2 LDA ,&loop JCN
|
|
||||||
POP2
|
|
||||||
|
|
||||||
RTN
|
|
||||||
|
|
||||||
@draw-label-right ( x y color addr -- )
|
|
||||||
|
|
||||||
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2
|
|
||||||
( align ) .label/addr LDZ2 ;get-text-length JSR2 8** SUB2 .Screen/x DEO2
|
|
||||||
.label/addr LDZ2
|
|
||||||
&loop
|
|
||||||
( draw ) DUP2 LDA #00 SWP 8** ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/color DEO
|
|
||||||
( incr ) #0001 ADD2
|
|
||||||
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
|
|
||||||
DUP2 LDA ,&loop JCN
|
|
||||||
POP2
|
|
||||||
|
|
||||||
RTN
|
|
||||||
|
|
||||||
@get-text-length ( label* -- length )
|
|
||||||
|
|
||||||
#0000 ( counter )
|
|
||||||
&loop
|
|
||||||
( incr ) #0001 ADD2 OVR2 OVR2 ADD2
|
|
||||||
LDA ,&loop JCN
|
|
||||||
SWP2 POP2
|
|
||||||
|
|
||||||
RTN
|
|
||||||
|
|
||||||
@font ( spectrum-zx font )
|
|
||||||
[
|
|
||||||
0000 0000 0000 0000 0000 2400 7e3c 0000 0000 2400 3c42 0000 0000 6c7c 7c38 1000
|
|
||||||
0010 387c 7c38 1000 0038 387c 6c10 3800 0010 387c 7c10 3800 0000 0018 1800 0000
|
|
||||||
007e 4242 4242 7e00 0000 1824 2418 0000 0018 2442 4224 1800 001e 063a 4a48 3000
|
|
||||||
0038 446c 107c 1000 000c 0808 0838 3800 003e 2222 2266 6600 0000 0822 0022 0800
|
|
||||||
0000 1018 1c18 1000 0000 0818 3818 0800 0008 1c00 001c 0800 0028 2828 2800 2800
|
|
||||||
003e 4a4a 3a0a 0a00 000c 3046 620c 3000 0000 0000 0000 ffff 0010 3800 3810 0038
|
|
||||||
0008 1c2a 0808 0800 0008 0808 2a1c 0800 0000 0804 7e04 0800 0000 1020 7e20 1000
|
|
||||||
0000 4040 7e00 0000 0000 0024 6624 0000 0000 1038 7c00 0000 0000 007c 3810 0000
|
|
||||||
0000 0000 0000 0000 0008 0808 0800 0800 0014 1400 0000 0000 0024 7e24 247e 2400
|
|
||||||
0008 1e28 1c0a 3c08 0042 0408 1020 4200 0030 4832 4c44 3a00 0008 1000 0000 0000
|
|
||||||
0004 0808 0808 0400 0010 0808 0808 1000 0000 1408 3e08 1400 0000 0808 3e08 0800
|
|
||||||
0000 0000 0008 0810 0000 0000 3c00 0000 0000 0000 0000 0800 0000 0204 0810 2000
|
|
||||||
003c 464a 5262 3c00 0018 2808 0808 3e00 003c 4202 3c40 7e00 003c 421c 0242 3c00
|
|
||||||
0008 1828 487e 0800 007e 407c 0242 3c00 003c 407c 4242 3c00 007e 0204 0810 1000
|
|
||||||
003c 423c 4242 3c00 003c 4242 3e02 3c00 0000 0008 0000 0800 0000 0800 0008 0810
|
|
||||||
0000 0810 2010 0800 0000 003e 003e 0000 0000 1008 0408 1000 003c 4202 0c00 0800
|
|
||||||
003c 425a 5442 3c00 0018 2442 7e42 4200 007c 427c 4242 7c00 003c 4240 4042 3c00
|
|
||||||
0078 4442 4244 7800 007e 407c 4040 7e00 003e 4040 7c40 4000 003c 4240 4e42 3c00
|
|
||||||
0042 427e 4242 4200 003e 0808 0808 3e00 0002 0202 4242 3c00 0044 4870 4844 4200
|
|
||||||
0040 4040 4040 7e00 0042 665a 4242 4200 0042 6252 4a46 4200 003c 4242 4242 3c00
|
|
||||||
007c 4242 7c40 4000 003c 4242 524a 3c00 007c 4242 7c44 4200 003c 403c 0242 3c00
|
|
||||||
00fe 1010 1010 1000 0042 4242 4242 3c00 0042 4242 4224 1800 0042 4242 5a66 4200
|
|
||||||
0042 2418 1824 4200 0082 4428 1010 1000 007e 0408 1020 7e00 000c 0808 0808 0c00
|
|
||||||
0040 2010 0804 0200 0018 0808 0808 1800 0008 1422 0000 0000 0000 0000 0000 7e00
|
|
||||||
0008 0400 0000 0000 0000 1c02 1e22 1e00 0020 203c 2222 3c00 0000 1e20 2020 1e00
|
|
||||||
0002 021e 2222 1e00 0000 1c22 3c20 1e00 000c 101c 1010 1000 0000 1c22 221e 021c
|
|
||||||
0020 202c 3222 2200 0008 0018 0808 0400 0008 0008 0808 4830 0020 2428 3028 2400
|
|
||||||
0010 1010 1010 0c00 0000 6854 5454 5400 0000 5864 4444 4400 0000 3844 4444 3800
|
|
||||||
0000 7844 4478 4040 0000 3c44 443c 0406 0000 2c30 2020 2000 0000 3840 3804 7800
|
|
||||||
0010 103c 1010 0c00 0000 4444 4444 3800 0000 4444 2828 1000 0000 4454 5454 2800
|
|
||||||
0000 4428 1028 4400 0000 4444 443c 0438 0000 7c08 1020 7c00 000c 0810 1008 0c00
|
|
||||||
0008 0808 0808 0800 0030 1008 0810 3000 0000 0032 4c00 0000 3c42 99a1 a199 423c
|
|
||||||
]
|
|
||||||
|
|
||||||
@text1 [ "Left 20 "Aligned 00 ]
|
|
||||||
@text2 [ "Middle 20 "Aligned 00 ]
|
|
||||||
@text3 [ "Right 20 "Aligned 00 ]
|
|
||||||
@text4 [ "even 00 ]
|
|
||||||
@text5 [ "odd 00 ]
|
|
|
@ -22,7 +22,7 @@
|
||||||
(
|
(
|
||||||
Assemble the source code into an output ROM file.
|
Assemble the source code into an output ROM file.
|
||||||
|
|
||||||
If all you want is to use asma.usm to assemble files, insert a BRK
|
If all you want is to use asma.tal to assemble files, insert a BRK
|
||||||
after this statement.
|
after this statement.
|
||||||
)
|
)
|
||||||
;&source-file ;&dest-file ;asma-assemble-file JSR2
|
;&source-file ;&dest-file ;asma-assemble-file JSR2
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
#00ff JMP2
|
#00ff JMP2
|
||||||
|
|
||||||
&source-file
|
&source-file
|
||||||
"projects/demos/piano.usm 00
|
"projects/demos/piano.tal 00
|
||||||
&dest-file
|
&dest-file
|
||||||
"bin/asma-boot.rom 00
|
"bin/asma-boot.rom 00
|
||||||
|
|
Loading…
Reference in New Issue