Back in the late eighties, when the world of personal computers was populated by ugly noisy monochrome pieces of junk, the Commodore Amiga – with its multitasking windowed OS, powerful CPU, stunning audio and graphics provided by a dedicated chipset – was like a time machine pushing yourself a decade further.
The Amiga was my first personal computer. It was 1989 and I was eleven years old. I started very soon programming on the Amiga. I began with the Basic language, the natural first choice as the interpreter and the language manual were shipped with the computer. Later, as my programs were getting more complex and my ambitions were flying higher, i moved to the C language.
Software development at that time on an Amiga was not an easy task:
- I had no hard disk or external floppy drive.
- Compiling a program required an average of 7 minutes during which you had to continuously swap disk 1 and 2 of the compiler suite.
- The lack of a debugger and a memory protection system led to a very slow and frustrating software development cycle: 1. Compiling (7 minutes of disk swapping) – 2. Testing the application – 3. Crash (Guru Meditation) – 4. Reboot (5 minutes, two disk swaps) – 5. Fix the code – 6. Back to 1.
- I had a very scarce documentation; my only references were the Kernighan Ritchie C handbook, a bunch of articles on AmigaOS programming (about creating windows, menu and gadgets), and the first volume of the Amiga Programmer’s Handbook of E. Mortimore (this manual was very complete and detailed, but the lack of code examples made it almost useless for me).
But the most frustrating thing was the slowness of my programs. My dream was creating a smooth 50Hz scrolling game, but – despite all my efforts – my games never went over 15-20 fps. I somewhat knew the problem had to do with the OS and the 68000 assembly, but I had no idea how to handle it.
Despite all these problems, I really loved programming. During my Amiga years, I did many experiments, from very simple graphics games, to more ambitious 3D graphics projects.
My last project on an Amiga was, in fact, a 3D engine built from scratch with only a basic knowledge of trigonometry and no idea of any CG algorithm. It took me about six months to develop a simple engine handling camera perspective, Euler angles rotations, flat shading, painter’s algorithm, backface culling, frustum culling and clipping (the hardest thing to do). The result was visually satisfying but totally not optimized due to: ingenuous math (full of unneeded CPU consuming inverse trigonometry), bad fixed point operations (there was no floating point unit). The latter led not only to slow execution, but also to the accumulation of errors with the visual result of noisy vertex positions during the animations.
The Amiga is where it all began. Here is where my love for computer programming was born. After my Amiga years (which span from middle to secondary school), I went to university and took a bachelor and a PhD in computer science.
So here we are back to 2012, nostalgia time; time to get back my old Amiga and have some fun! I’d like to recover my old projects, make optimizations, experiments, 68K coding, modding, crossdeveloping, and much more..
Many things have changed since the Amiga days: computer power has grown so dramatically that an old system can be completely emulated via software, the Internet makes available a great number of resources about Amiga coding, and finally, my programming skills are a bit improved since those glorious days.
Here I’ll keep a log of my progresses.