I decided to hack my ‘hacked together Amiga dev kit‘ into something more useful. The main downside to the previous setup was that your binary code had to be transferred to the Amiga via a serial link and written to a disk, and then the Amiga could be booted from that disk.
Under the new setup, a custom ‘loader’ is what the Amiga boots into. This waits for binary code to be sent over the serial link, puts it at the appropriate location in memory, and then executes it on command.
As before, for the development machine you need a PC running Linux, with GNU binutils set up for the m68k-elf target. The target machine is ideally an A500 although it ought to work with other Amigas as well. All the code can be found in the git repository.
The loader itself is very small at ~400 bytes, not even half-filling the boot sector. The first step to using the system is to build this and write it to a disk. From that point on, the Amiga should boot from that disk, which takes less than a second. The code relocates itself to the top end of memory, leaving basically the entire machine free for your code. It is then listening on the serial interface for commands to be sent via a very simple ad-hoc protocol. There are two basic commands – a) receive a block of data and store it at a given address in memory, and b) start executing at a given address.
There’s a corresponding python script, sendbin.py, which speaks this protocol and can send binary data (the output of the assemble/link process) and also give the execute command.
The code and script in the ‘test’ directory of the project demonstrate this. With the loader running, execute the ‘a’ script there, and test.asm will be assembled, linked, sent to the Amiga, and executed. Note that when the code executes, the operating system has been nuked, and all interrupts and DMA are switched off. This is a system for hardware junkies only.
Future updates to this system might add remote debugging support, again using the serial link, with an expanded loader.