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
|
||||
```
|
||||
|
||||
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:
|
||||
|
|
2
build.sh
2
build.sh
|
@ -43,7 +43,7 @@ then
|
|||
fi
|
||||
|
||||
echo "Assembling.."
|
||||
./bin/uxnasm projects/examples/demos/piano.usm bin/piano.rom
|
||||
./bin/uxnasm projects/examples/demos/piano.tal bin/piano.rom
|
||||
|
||||
echo "Running.."
|
||||
./bin/uxnemu bin/piano.rom
|
||||
|
|
|
@ -6,22 +6,22 @@ mkdir asma-test
|
|||
cd asma-test
|
||||
|
||||
build_asma() {
|
||||
sed -ne '/^( devices )/,/^( vectors )/p' ../projects/software/asma.usm
|
||||
sed -ne '/^( devices )/,/^( vectors )/p' ../projects/software/asma.tal
|
||||
cat <<EOD
|
||||
|0100 @reset
|
||||
;&source-file ;&dest-file ;asma-assemble-file JSR2
|
||||
;asma/error LDA2 #0000 NEQ2 JMP BRK
|
||||
#0000 DIV
|
||||
|
||||
&source-file "in.usm 00
|
||||
&source-file "in.tal 00
|
||||
&dest-file "out.rom 00
|
||||
|
||||
EOD
|
||||
sed -ne '/%asma-IF-ERROR/,$p' ../projects/software/asma.usm
|
||||
sed -ne '/%asma-IF-ERROR/,$p' ../projects/software/asma.tal
|
||||
}
|
||||
|
||||
expect_failure() {
|
||||
cat > 'in.usm'
|
||||
cat > 'in.tal'
|
||||
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"
|
||||
tail asma.log
|
||||
|
@ -30,11 +30,11 @@ expect_failure() {
|
|||
}
|
||||
|
||||
echo 'Assembling asma with uxnasm'
|
||||
build_asma > asma.usm
|
||||
../bin/uxnasm asma.usm asma.rom > uxnasm.log
|
||||
find ../projects -type f -name '*.usm' -not -name 'blank.usm' | sort | while read F; do
|
||||
build_asma > asma.tal
|
||||
../bin/uxnasm asma.tal asma.rom > uxnasm.log
|
||||
find ../projects -type f -name '*.tal' -not -name 'blank.tal' | sort | while read F; do
|
||||
echo "Comparing assembly of ${F}"
|
||||
BN="$(basename "${F%.usm}")"
|
||||
BN="$(basename "${F%.tal}")"
|
||||
|
||||
if ! ../bin/uxnasm "${F}" "uxnasm-${BN}.rom" > uxnasm.log; then
|
||||
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
|
||||
xxd "uxnasm-${BN}.rom" > "uxnasm-${BN}.hex"
|
||||
|
||||
cp "${F}" 'in.usm'
|
||||
cp "${F}" 'in.tal'
|
||||
if ! ../bin/uxncli asma.rom > asma.log; then
|
||||
echo "error: asma failed to assemble ${F}, while uxnasm succeeded"
|
||||
tail asma.log
|
||||
|
|
|
@ -147,8 +147,8 @@ fmt = function(...)
|
|||
return (('\t%-11s %-10s %-12s %-14s %s '):format(...):gsub(' +$', '\n'))
|
||||
end
|
||||
do
|
||||
local _with_0 = assert(io.open('projects/software/asma.usm.tmp', 'w'))
|
||||
for l in assert(io.lines('projects/software/asma.usm')) do
|
||||
local _with_0 = assert(io.open('projects/software/asma.tal.tmp', 'w'))
|
||||
for l in assert(io.lines('projects/software/asma.tal')) do
|
||||
if l:match('--- cut here ---') then
|
||||
break
|
||||
end
|
||||
|
@ -228,4 +228,4 @@ do
|
|||
]])
|
||||
_with_0:close()
|
||||
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
|
||||
--
|
||||
-- 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
|
||||
-- created, so that new changes in the C assembler can be incorporated rapidly
|
||||
-- into asma.
|
||||
|
@ -122,8 +122,8 @@ printout = true
|
|||
fmt = (...) ->
|
||||
('\t%-11s %-10s %-12s %-14s %s '\format(...)\gsub ' +$', '\n')
|
||||
|
||||
with assert io.open 'projects/software/asma.usm.tmp', 'w'
|
||||
for l in assert io.lines 'projects/software/asma.usm'
|
||||
with assert io.open 'projects/software/asma.tal.tmp', 'w'
|
||||
for l in assert io.lines 'projects/software/asma.tal'
|
||||
if l\match '--- cut here ---'
|
||||
break
|
||||
\write l
|
||||
|
@ -193,5 +193,5 @@ with assert io.open 'projects/software/asma.usm.tmp', 'w'
|
|||
|
||||
]]
|
||||
\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
|
||||
name: Uxn Assembly
|
||||
scopeName: usm.
|
||||
fileTypes: [usm]
|
||||
scopeName: tal.
|
||||
fileTypes: [tal]
|
||||
file_extensions:
|
||||
- usm
|
||||
scope: source.usm
|
||||
- tal
|
||||
scope: source.tal
|
||||
|
||||
contexts:
|
||||
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
|
||||
-- assembler that replaced it straight afterwards.
|
||||
|
||||
|
@ -93,11 +93,11 @@ translate = (_filename) ->
|
|||
f\close!
|
||||
os.exit 0
|
||||
|
||||
translate 'attic/software/assembler.usm'
|
||||
translate 'attic/software/assembler.tal'
|
||||
os.exit 0
|
||||
|
||||
translate 'attic/tests/opcodes.usm'
|
||||
translate 'attic/tests/basics.usm'
|
||||
translate 'attic/tests/opcodes.tal'
|
||||
translate 'attic/tests/basics.tal'
|
||||
|
||||
-- for k, v in pairs t
|
||||
-- print k
|
||||
|
|
8
mkfile
8
mkfile
|
@ -1,8 +1,8 @@
|
|||
</$objtype/mkfile
|
||||
|
||||
TARG=bin/uxncli bin/uxnasm bin/uxnemu
|
||||
USM=`{walk -f projects/ | grep '\.usm$' | grep -v blank.usm}
|
||||
ROM=${USM:%.usm=%.rom}
|
||||
USM=`{walk -f projects/ | grep '\.tal$' | grep -v blank.tal}
|
||||
ROM=${USM:%.tal=%.rom}
|
||||
CFLAGS=$CFLAGS -I/sys/include/npe
|
||||
HFILES=\
|
||||
/sys/include/npe/stdio.h\
|
||||
|
@ -26,8 +26,8 @@ bin:
|
|||
mk install &&
|
||||
rm -r npe-master
|
||||
|
||||
%.rom:Q: %.usm bin/uxnasm
|
||||
bin/uxnasm $stem.usm $target >/dev/null
|
||||
%.rom:Q: %.tal bin/uxnasm
|
||||
bin/uxnasm $stem.tal $target >/dev/null
|
||||
|
||||
bin/uxncli: uxncli.$O uxn.$O
|
||||
$LD $LDFLAGS -o $target $prereq
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
( darena.usm )
|
||||
( darena.tal )
|
||||
( an open-ended game of rocks and sand )
|
||||
( 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.
|
||||
|
||||
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.
|
||||
)
|
||||
;&source-file ;&dest-file ;asma-assemble-file JSR2
|
||||
|
@ -60,7 +60,7 @@
|
|||
#00ff JMP2
|
||||
|
||||
&source-file
|
||||
"projects/demos/piano.usm 00
|
||||
"projects/demos/piano.tal 00
|
||||
&dest-file
|
||||
"bin/asma-boot.rom 00
|
||||
|
Loading…
Reference in New Issue