Amiga music-making
Peter Korsten
peter at severity-one.com
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