aboutsummaryrefslogtreecommitdiff
path: root/asmwrapper.sh
blob: 56c8d9aa66c24291c30a39989ab58eea44cf4fbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/sh

# Execute either the real dasm, or dasm2atasm + atasm.
# If we have dasm on the PATH, use it, otherwise fake it.
# dasm2atasm is NOT perfect! It does however work OK for
# fenders.dasm, fendersdbl.dasm, and loadscreen.dasm.

# The .syms file format is totally different for dasm and atasm, but
# fenders_offsets.pl can handle either one (adapt for your purposes).

# If you have dasm, but want to force atasm, pass any non-empty string
# as the second argument to this script.

# Could also use "dasm2atasm -c" and ca65/ld65 to assemble, but I can't
# seem to get ca65 or ld65 to emit a symbol file or listing (the -l
# option doesn't work; the -m option doesn't do what I expect), so
# I don't know any way to extract the OFFSET_* labels from ca65's output.

if [ -z "$1" ]; then
	echo "$0: missing argument"
	exit 1
fi

if [ -n "`which dasm 2>/dev/null`" -a -z "$2" ] ; then
	exec dasm $1.dasm -f3 -s$1.syms -o$1.bin
elif [ -n "`which atasm 2>/dev/null`" ]; then
	ln -sf equates.inc equates.m65
	perl dasm2atasm $1.dasm $1.atasm
	exec atasm -r -s -o$1.bin $1.atasm > $1.syms
else
	echo "$0: you need either dasm or atasm on your PATH"
	exit 1
fi

exit 0