3. Tutorial

This chapter shows how to build and run a simple “Hello World” application on different targets.

The command line examples offer a clear understanding of the process. Tools can also be used with an IDE, but setup varies.

Beyond the Calypsi C compiler tool chain, you will need Make to control builds and Git to obtain projects. An internet connection is also required to download example projects.

3.1. Simulator

The db68k contains a simulator mode which is enabled by default. It mimics the 68000 architecture and allows the application to run on your host machine.

From a terminal or command line, copy the example project from the internet using:

$ git clone https://github.com/hth313/Calypsi-m68k-hello-world.git

Change to the newly cloned project directory:

$ cd Calypsi-m68k-hello-world

Build the project with:

$ make
cc68k --core=68000 --code-model=large --data-model=small --debug --list-file=obj/main-debug.lst -o obj/main-debug.o src/main.c
ln68k --debug -o hello.elf obj/main-debug.o module/Calypsi-m68k-Foenix/linker-files/a2560u-simplified.scm clib-68000-lc-sd.a --list-file=hello-debug.lst --cross-reference --rtattr printf=reduced --semi-hosted --target=Foenix --stack-size=2000 --sstack-size=800

This will create an output file hello.elf. To run the application you can load it into the debugger using:

$ db68k hello.elf
Calypsi debugger for 68000
(db68k)

By default, the debugger enters interactive command mode. Run the application using the run command:

(db68k) run
running
Hello World!
program exited normally
(db68k)

When you are done with the debugger, you can leave it using the quit command:

(db68k) quit
$

You can also run the program directly from the command prompt, without entering interactive mode. You need to provide the debugger with additional command-line options to run and terminate automatically:

$ db68k hello.elf -e run --terminate-on-program-exit
Calypsi debugger for 68000
run
running
Hello World!
program exited normally
$

This tells the debugger to execute the command run and that termination of the application also means termination of the debugger.

3.2. Amiga

This section describes how to build a “Hello World” application for the Amiga.

For the Amiga we need to generate Hunk output and the output can either be executed on an emulator such as FS-UAE or WinUAE.

First you need to Git clone the Amiga Hello World example, you can do so using:

$ git clone https://github.com/hth313/Calypsi-Amiga-hello-world

Change directory to the just cloned project and build the project:

$ cd Calypsi-Amiga-hello-world
$ make

This will generate an hello.hunk output file. You need to copy this file to your emulator. Consult the documentation of the emulator you are using. For the FS-UAE it will probably use a directory on the host computer as the Amiga hard drive, copy hello.hunk to a suitable location on it and start the emulator. You may want to rename the file to be without .hunk while doing the copy.

Start the emulator, open a shell and run the program. It should print “Hello World!” and then exit:

_images/HelloWorld-Amiga.png

3.3. A2560 Foenix

This section shows how to build the “Hello World” application for a A2560 Foenix and run it on hardware.

This means you need to have access the actual hardware, but it is possible to use an A2560 emulator as well, such as Morfe.

The the Calypsi C compiler tool chain generates ELF/DWARF by default, but you may prefer to use the native PGZ format instead. It is also possible to load an Intel-hex file over the debug port on the A2560. The provided Makefile already has a target to build a PGZ executable.

If you have not previously cloned the project, you can do so using:

$ git clone https://github.com/hth313/Calypsi-m68k-hello-world.git

Change directory to the just cloned project:

$ cd Calypsi-m68k-hello-world

When you are standing in the project folder, you can build the application for the A2560 Foenix using:

$ make hello.pgz

This will result in a program file hello.pgz. In order to run it you need to put it on the removable SD card storage media you have with your A2560 Foenix.

Once you have the hardware or emulator set up you can load and run the hello.pgz by typing the filename at the prompt.

Downloading an executable to a real A2560 can also be done using the USB debug port and the C256 Manager tool. In this case you will need to generate an S-record output file.

3.4. The Morfe emulator

It is also possible to download the program into Morfe, the emulator. Currently this need to be done by a Intel-hex file which can be generated using:

$ make hello.hex

The Morfe emulator can be found at https://github.com/aniou/morfe and need to be built according to instructions found there. Morfe can be launched emulating the A2560 K:

$ ./morfe-m68k conf/a2560k.ini

Once started, hit function key 9 to enter its TUI environment. Here you can load the Intel-hex file using load hex hello.hex. Then you may need to set the PC register manually using set pc. In this case you may need to look up the address in the generated hello-Foenix.lst file and look for the address of __program_start in it.

Once entered, you can press quit to resume the emulator at the start of the program. The result should be:

_images/HelloWorld-A2560-Foenix-K.png