May 11, 2019 - by Paul Bosselaar
So, in the previous post we started with a small assembly program to produce a beep:
db $FE ; magic number dw Begin ; begin address of the program dw End - 1 ; end address of the program dw Execute ; program execution address (for ,R option) org $C000 ; The program start at C000h in the MSX's RAM Begin: Execute: CALL $C0 ; Call the BEEP bios routine ret End:
What I did not talk about was how to actually use an assembler to create an actual file which the MSX can execute. So let’s do that now.
We’ll be using Sjasmplus in this tutorial. Sjasmplus is available for Windows, Mac and Linux so no matter what system you are using (hi ray2day!) you can get started.
Download Sjasmplus from https://github.com/sjasmplus/sjasmplus/releases/tag/20190306.1 and install it somewhere in your path. If you do not know how to do this, then simply copy the sjasmplus executable in the same directory as where you will put your .asm files. The site has releases for Windows and Mac available. For Linux you’ll have to compile it yourself (e.g.
apt install cmake libboost-all-dev followed by
mkdir build && cd build; cmake; make)
Now create a new text file and put the assembly source from above in it. Save the file somewhere as
beep.asm. Now open a commandline or terminal window and go to the directory where the
beep.asm file is. The following commandline should assemble the MSX program:
sjasmplus beep.asm --raw=beep.bin
That should result in the following output:
$ sjasmplus beep.asm --raw=beep.bin SjASMPlus Z80 Cross-Assembler v.20190306.1+++WiP Pass 1 complete (0 errors) Pass 2 complete (0 errors) Pass 3 complete Errors: 0, warnings: 0, compiled: 12 lines
Next to the beep.asm file should now be an beep.bin file as well. Move this file to your MSX or emulator and
bload"beep.bin",r should result in a well known sound. For quick testing I usually start the OpenMSX emulator with the current directory as disk A.
paul@paul-XPS-13-9360:~/git/msx/examples$ ls beep.asm beep.bin paul@paul-XPS-13-9360:~/git/msx/examples$ openmsx -machine Boosted_MSX2_EN -diska .
Yes, a screenshot, of a program that only makes a small sound. Oh well ;)