Developers are used to the term SDK or more recently Framework when it comes to interfacing your code with outside code, whether that be the operating system or some third-part “widget” that does something for you, saving you time and effort writing the code yourself.

On the Amiga the system interface is provided as an “NDK”, standing for Native Developer Kit.

Why the difference?

Before the Amiga was a functional computer and with a working operating system all the various modules formed an SDK so that developers could target the Amiga system from their development machines.

Once the Amiga was “up” and assemblers and compilers were written or ported to the platform itself the collection of platform specific tools and developer files were collected to form the first Native Developer Kit or NDK for short.

This naming endured to the end of Commodore with Amiga OS 3.1 and to the Haage & Partner era of the 3.5 and 3.9 updates taking the 3.1 core and adding in various modules, often already publicly available.

The NDK was a commercially available product but was commonly included in whole or in part in commercial assemblers and compilers under license. However, assembly programmers knowing all the “magic offsets” can write code without it (many European “demo coders” have done without for decades) but would you rather see “CALLEXEC OpenLibrary” or “jsr -552(a6)” when reading your code later?

When Haage & Partner released their Amiga OS 3.5 product they included the new NDK with another commercial product called “Amiga Developer CD 2.1”. With their Amiga OS 3.9 product they actually released the NDK on their web and FTP sites. Though not entirely obvious today it is still available today.

Route 1 is via a “group” on GitLab called Amiga Source Code Preservation which has a repository called complete-ndk39 containing additional (missing) or changed include files and a direct link to the file NDK39.lha which we want to download. For good measure grab the actual complete-ndk39 repository (you can just download it or “git clone” the repository) as we will need a few odd files here and there. The links for the GitLab group, project and the NDK download link itself are as follows.

https://gitlab.com/amigasourcecodepreservation

https://gitlab.com/amigasourcecodepreservation/complete-ndk39

http://www.haage-partner.de/download/AmigaOS/NDK39.lha

It is also possible to stumble across the old H&P download page in search results, follow a link to an “FTP site”, then drill down into an “AmigaOS” folder and find the NDK file. The links for all these in order are as follows.

https://www.haage-partner.de/amiga/download-e.htm

http://download.haage-partner.de/Amiga/

http://download.haage-partner.de/Amiga/AmigaOS/

http://download.haage-partner.de/Amiga/AmigaOS/NDK39.lha

We can use this “3.9” version of the NDK because unlike some modern era SDKs which will allow you to create programs for the “current” system version (and in some cases deny using resulting software on earlier OS versions) the Amiga NDK is “cumulative” and there is almost nothing to stop you using this NDK to generate a program that will work on an original A1000 with Kickstart 1.0, except that it is hard to determine which system calls are available in 1.0. The documentation mostly only contains references to changes from version 36 onwards, not what was added in version 33 or 34 thus not available in version 30 for example…

Version 36?! 34?! 30?! What?!

OK, maybe we should have a “history lesson”…

#4: What’s an NDK when it’s at home?