Amiga music-making

Peter Korsten peter at
Sun Apr 17 17:54:12 CEST 2022

Hey Jay,

> So I would love to hear some tips on fun things to do with the Amiga 
> .. I got Workbench 3.1 up and running on my A500 Mini, and am having a 
> blast falling over its crazy UI .. what would be the best way to get 
> into a bit of development, like - IDE/Editor, compiler environment, 
> etc?  I’d prefer C/C++/Assembly, but I’m open to learning more about 
> the wackier languages that Amiga supported back in the day.

Oh dear, that's been a while. From what I remember, I used a decent text 
editor and a command-line C compiler. Google will do a better job than I 
in finding what you need, but I don't remember ever working in an IDE on 
the Amiga.

68000 is nice. It's very orthogonal, although you have to weigh the pros 
and cons of the extra time required to write code that doesn't crash 
your Amiga. Because the Amiga doesn't have memory protection, and you'll 
soon get used to the Guru Meditation.

There were some other languages on the Amiga, such as AMOS, and you may 
want to have a look at ARexx. My perception is that most development 
took place in (Lattice?) C. The code is performant enough, unless you 
really want the last bit of performance out of the CPU, and I don't 
think C++ ever caught on.

Getting the last bit of performance out of the Amiga, rather than the 
CPU, means using the custom chips, though. And this you can do via the 
APIs, or by accessing the hardware directly. There isn't really much of 
a performance benefit to using the hardware directly, but some 
developers would do so anyway as a matter of course. These were people 
that came from 8-bit environments, and who wouldn't recognise an API if 
it kicked them in the behind.

One example of using the custom chips is for sound playback. You tell 
the Paula chip where to find a sample, and at what sample rate to play 
it. Once it starts playing, you get an interrupt, so you can enqueue the 
next sample. Playing around with interrupts means that playing sound 
takes very few CPU cycles.

Another example is the Copper co-processor. It has three (!) 
instructions, but it's synced with the vertical beam, so halfway through 
drawing the screen you can change the horizontal resolution, bit depth, 
display mode, colour palette, or anything really. This is how a Screen 
(the data type) is implemented.

One nice thing about AmigaDOS is the "assign" command. For example, if 
you have your games in dh0:games and dh1:games, you can put "assign 
games: dh0:games" and "assign games: dh1:games add" in a startup script, 
and now you can use "games:" to refer to both directories. You can even 
refer to volumes that haven't been mounted yet. I'm not aware of any 
other operating system that does this.

- Peter

More information about the music-bar mailing list