Finally Published!

Paperback now available on Amazon.

The days of researching, writing, editing and reading it all again and again are now over. The book is finished and is now available to be ordered from Amazon.

The proof of puddings is in the eating, the proof of books is in the readership. Will the book not have readers and turn out to be just a vanity project? Or will there be people who bought it and like it? Only the future will tell...

Front cover of the Classic AmigaOS Programming book

The Blurb:

"When the first Amiga was released in 1985 a completely new type of computer emerged onto the market; the multi-media computer. Not only were the hardware capabilities advanced for the time (4096 colours, multi-channel digitised audio), it also came with a pre-emptive multitasking operating system that used screens, windows, icons, menus and pointers.

This book is an introduction to the programming of the classic Amiga OS using C as well as MC68000 assembly language. For the novice it will be an introduction into the basics of the Amiga and its OS, for the programmer who used to do this 30 years ago it will be a nice refresher.

Since this book is meant as an introduction it will not cover every single function call of every single library of the OS, nor will it cover every single flag or option for the functions that are covered. It will, however, provide a solid base from where you can start writing your own software for the Commodore Amiga."

I have provided the table of contents as a download here.

But, but, why?

A couple of years back I decided to create a small tool for myself to aid me with the backing up of all my Amiga disks. But it was quite a while since I had written anything for the Amiga so my knowledge had become a bit rusty. More than a bit actually. Looking at some of my older code I could see what it did there, but only vague memories were triggered regarding the "why" of certain system calls. No problem, it was Summer so I took some of my old Amiga books into the sun in the garden and started to read.

It was only then that I started to realise that all these books that I at the time had regarded as "must reads" for Amiga programmers were actually quite bad. As a young lad I never knew any better, but after 25+ years as an embedded system engineer I immediately spotted glaring holes and contradictions in the information provided by the old books.

Summers usually don't last very long in Britain, so when the weather turned I started to collate information from the books, information from my own old code and information from documentation living on my Amiga. When some detail or other was clearly missing it could usually be found by Googling around for a bit. In the end I created a useful library of information for myself.

And then?

While compiling all this information I realised that it was unlikely that I was the only person looking to program these old machines. There is a lively community out there busy upgrading their hardware and playing games. Added to that are the plethora of programming related questions that are being asked and answered on the various forums.

I decided that I wanted to give other people access to the information I had gathered. Initially a blog seemed a good idea, but since there really was a lot of information I decided that a book might be a better fit. A book also suits my style of Amiga programming better as I like to program on an actual Amiga and the continuous switching back and forth to a modern system to read something really starts to annoy me after a while.

For whom?

Rather than providing the information as-is I decided that it would be better to create a narrative explaining why things are done the way they are and group things logically. An alphabetical list is handy when you know what you are looking for, but less so when you are just trying to find out how all these pieces fit together.

At the same time I wanted the book to also be useful as a work of reference while programming. Finding a function and its arguments should be quick, similarly for finding the various structures and their members. Extra care was therefore given to the index at the back of the book in order to provide means to quickly locate specific information.

The one thing I did not want to do was to create a book meant for people who have never programmed before. Personally I think that modern systems provide much better channels of support for people learning to program than any old retro system will. The book is therefore aimed at people who already know 'C' or some type of assembly language. The book explains some of the 68000 assembly so that programmers who have done assembly on other processors can adjust themselves, and there is a small introduction to some of the specialities of 'C' on the Amiga, but the bulk of the information is about the AmigaOS itself.

The book gives enough information to create programs on the Amiga using the functionality of the OS. Open windows and screens, read and write files, communicate with devices and so on. I wanted the book to be useful to as many people as possible and therefore did not include information that may only be of use to a handful of people. Nothing requiring special hardware or non-standard software was therefore included. In my mind, both the person finding the old Amiga 500 in the attic and the enthusiast with the accelerated Amiga 4000 had to be able to use my book to start programming their machines. If they were so inclined of course...

There is so much more information on programming the Amiga than what is in this introduction book, but after reading this book a programmer should have gained enough knowledge regarding the AmigaOS to understand sources like the autodocs of the NDK to start using functionality of the OS not covered by the book.

What next?

Who knows! I'd say keep an eye on this blog while I will continue to update it quite irregularly.

Posted on