Last Updated or created 2024-08-30
For my new SBC I’ll need a machine code build environment.
This is what I’ve setup now.
My main workstation is Linux based. While this setup is Linux based, vasm should work on other operating systems also.
Getting and compiling vasm for 68k
wget http://sun.hasenbraten.de/vasm/release/vasm.tar.gz
tar xzvf vasm.tar.gz
cd vasm
# Building
make CPU=m68k SYNTAX=oldstyle
# Using
./vasmm68k_oldstyle -m68000 -Fbin -dotdir -no-opt source.asm
# this generates a.out
# Dumping the file (byte separated and with a offset of 0x8000)
xxd -g 1 -o 0x8000 a.out | head
00008000: 30 3c aa aa 4e f9 00 00 80 04 00 00 00 00 00 00 0<..N...........
00008010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00008020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00008030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00008040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00008050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00008060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00008070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00008080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00008090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
# But my 68k needs an ODD EVEN eeprom
# so I used another tool - romsplit
git clone https://github.com/ullman/romsplit
cd romsplit
make all
# Using romsplit
./romsplit -s a.out odd.rom even.rom
# Split into 4? Split the splits using above
# Output
xxd -g 1 -o 0x8000 odd | head -1 ; xxd -g 1 -o 0x8000 even | head -1
00008000: 30 aa 4e 00 80 00 00 00 00 00 00 00 00 00 00 00 0.N.............
00008000: 3c aa f9 00 04 00 00 00 00 00 00 00 00 00 00 00 <...............
# Burn these with minipro
Disassemble
m68k-linux-gnu-objdump --disassemble-all --target=binary --architecture=m68k a.out
68030 example for friend
# Compile vasm with
make CPU=m68k SYNTAX=mot
------------
vasmm68k_mot -Fbin ./edk.asm
-------------
.68030
ORG $0
*****
* exception table (256 x 4 bytes)
*****
dc.l $400 ; Program Counter na reset (startadres)
dc.l $20000 ; stackpointer (ram locatie)
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
org $400 ; hier starten
move.l #$0,d0
loop1:
add.l #$1,d0
cmp.l #$10000,d0
bne loop1
move.l #$0,d0
loop2:
add.l #$1,d0
cmp.l #$10000,d0
bne loop2
nop
nop
nop
-----
vasm 1.9f (c) in 2002-2023 Volker Barthelmann
vasm M68k/CPU32/ColdFire cpu backend 2.6c (c) 2002-2023 Frank Wille
vasm motorola syntax module 3.18 (c) 2002-2023 Frank Wille
vasm binary output module 2.3a (c) 2002-2023 Volker Barthelmann and Frank Wille
org0001:0(acrwx1): 0 bytes
org0002:0(acrwx1): 1024 bytes
org0003:400(acrwx2): 30 bytes
-----
-rw-rw-r-- 1 henri henri 1054 aug 27 11:45 a.out