Building software for Sonnet Crescendo 7200 - Sakura-IT/SonnetAmiga GitHub Wiki
THIS ARTICLE IS OUTDATED AND CONCERNING OLD SONNET.LIBRARY THAT REQUIRED PATCHED BINARIES! Third party software is currently built in exactly the same way as for old H&P WarpOS. No changes necessary to dev environment. Preferred compiler is VBCC with unmodified WarpOS target.
Building 3rd party software for SonnetAmiga
The SonnetAmiga project aims at API and ABI compatibility with WarpOS. However, due to drastically different hardware architecture, we could not avoid a few minor incompatibilities. These can either be solved by rebuilding software from source, or by patching.
This article explains the adjustments to development environment that are necessary when building 3rd party software for Sonnet.
Good knowledge of Amiga development process is required to understand this document.
Building C source (using VBCC)
- Install the latest VBCC binaries for AmigaOS 3 and VBCC WarpOS target from http://sun.hasenbraten.de/vbcc/ .
- You need to build a newer vlink, the necessary changes to vlink were introduced on 5th Feb 2016. Get the daily source snapshot from http://sun.hasenbraten.de/vlink/ .
Typically WarpOS programs are launched using 68k code hunk that is used to parse the arguments and open powerpc.library
, then start the execution of PPC code. This piece of code is a part of VBCC WarpOS target (warpup.o
file). The sonnet.o
file distributed in SonnetAmiga is a replacement for warpup.o
. The provided sonnet.o
file will open sonnet.library
instead of powerpc.library
.
Original WarpOS from H&P was developed for hardware where memory was shared between 68k and PPC CPUs. With Sonnet, the situation is much different. 68k CPU can access both its own memory and the memory of PPC CPU. However, PPC CPU can only access its own memory (and the PCI bus). When compiling (or rather: linking) the program for Sonnet, it is necessary to specify which sections will be loaded where.
Use -hunkattr
parameter to vlink, to specify which sections should be placed in the Sonnet memory. For example if you wanted to do that for the section "foobar": -hunkattr foobar=0x2005
. You might want to use -M
parameter to vlink to display the section names.
Otherwise standard AmigaOS loader behaviour is to place hunks in a memory with highest priority (typically fastest from 68k CPU point of view).