If you've spent any length of time around Amiga die-hards on the Internet, you've probably come to the conclusion that they're total obsessives who refuse to accept that the computing industry has long since abandoned their platform even for the few things which it was initially embraced for, and that they will continue to blame corporate mismanagement, invent industry-spanning conspiracy theories, and fantasize about the Second Coming of the Amiga until the heat-death of the universe. And you'd be...pretty much right. °
° (but God love 'em for it.)
My history with the Amiga is a bit different, though. I hadn't even heard of it until the 2000s, for starters. My history with Commodore actually starts with the Commodore 64. As a kid, trying to get into game programming, I kept running up against the same old wall: just about all the information I could get was magic formulae that told you what cryptic spells you were supposed to mumble if you wanted to, say, get into Mode X from QuickBASIC, but never told you anything about why or how. And if you could find that kind of information, you could never get the tools that you were supposed to be able to use it with.
(Remember, please, that this was in the mid-'90s, long before you could simply grab Dev-C++ and SDL and start banging out code in the course of half an hour. Kids today don't know how good they have it...)
So I was stuck with having no information or cryptic information, and unsuitable tools or no tools at all. I was beginning to feel that I'd never get to do any real programming, but I didn't want to just give up. One day, while I was browsing through the computer books at the local library, I found a book on programming for the Commodore 64. I started reading through it, and was enthralled by the fact that it contained real information, and that the computer it described actually had a programming language built-in!
(Those of you who have used Commodore BASIC are probably laughing right now. Yeah, I know, but it was hardly worse than trying to make a game with QBASIC's godawful built-in graphics functions. I ran QBASIC on a Pentium II-233 and I could still see flicker when I told it to draw a line from one corner of the screen to the other.)
So I resolved to get myself a Commodore 64. A couple years later, I finally did, and had many happy hours typing away on it, where "many" is defined as "about eight, total." Unfortunately, the machine was in poor repair, I knew very little about fixing up vintage electronics, and while it was in the closet awaiting whatever TLC would get it working again, my dear mother (bless her soul) gave it to Goodwill. It was back to QBASIC, for the moment...
A couple years later I was wishing I had the C64 back, and I decided to see if I couldn't find one online. I did in fact find multiple C64s on eBay that I could easily have purchased (this was back when they were things people tried to get a few bucks from while clearing space in the attic, not potential Valuable Collector's Items,) I learned about another Commodore machine called the "Amiga." It was 16-bit, which as any child of the SNES/Genesis era knew, meant it was better, and it even had a GUI like the Macintosh I'd first learned to program on! I knew I was going to have to get one, so I did.
My first Amiga was an A500 - not a power-user's machine by any measure. Its one megabyte of RAM was certainly roomier than the C64, and its graphics and sound were immeasurably better,° but...well, Workbench 1.3 was rather cruder than it looked from the pictures, and an 8MHz 32-bit CPU on a 16-bit bus wasn't exactly the epitome of computing power. (Actually, I did have an accelerator that quadrupled the clock rate, but what I unfortunately didn't know at the time was that you needed some faster RAM for that to make much of a difference. Ah, well.) But...it was still an Amiga, my Amiga, back when the PC was something I had to share with my family, and I had some programming tools to work with at long last!
° Before the SID die-hards come after me, I know now what a fine chip it is, but remember that my only experience with it at the time was type-in BASIC demonstrations, which didn't even come close to doing anything impressive with it.
And then for reasons I don't quite remember, but having to do with space, I had to get rid of it. Ah, setbacks...
Fast-forward to spring 2010. I'm an older and (at least somewhat) wiser man, I've used real programming languages on many now-commonplace free-software compiler toolchains, and I now realize that maybe trying to get into game programming using ROM BASIC on an 8-bit machine older than I am was not such a good idea. </understatement> But I still do enjoy messing around with older, simpler machines, and I was missing my Amiga when I realized hey, I have a job now, I can just buy one!
My first acquisition in this phase was an Amiga 500 - I liked the look, and it was a good machine to start with because you could buy them pretty cheaply and get upgrades for pretty cheap. Soon I was in posession of a hard drive expansion with a lot of fast RAM and the same model of accelerator I had had some years before. It was pretty great, except for one thing: the A500 uses the extremely ill-advised "sidecar" method of expansion, like the old TI-99/4A system, and even just those two upgrades added about eight inches onto what was already a large desktop footprint. And on top of that, well...you couldn't really get many good upgrades for the 500. It seemed like anything past the basics was either hard to come by, or only available in the Zorro-II card form that the Amiga 2000 used.
I was in luck, as I was able to locate an Amiga 2000 only a couple hours from where I lived, and I got it on the cheap. With a little help from the wonderful folks over at AmiBay, and financing from the sale of the 500 I was able to get it beefed up well beyond what I had with the previous system, with a real 68030 accelerator and 32-bit RAM that could keep the CPU fed as fast as necessary. Things were good, but unfortunately, by this point, I was starting to feel some space pressure, as my collection of old computers and consoles was getting just a little cramped.
I certainly didn't want to give up on having an Amiga, but I decided that I'd move to one of the later models, because frankly, the 2000 is a beast even by the standards of '80s desktop machines. I couldn't go for a 4000, since they're basically the Holy Grail for the die-hards with way too much disposable income, and the people selling them are well aware of this and price accordingly. But the 3000 was also a reasonably compact machine, had a slightly better chipset than the 2000 with VGA-compatible video output (meaning it could share a monitor with my PC,) an integrated hard drive controller, and a full 32-bit bus, and tended to be much more reasonably priced.
I nabbed a 3000 from another nice fellow in the Amiga community, with a solid 68040 accelerator, plenty of RAM, and a real semi-modern Ethernet card (yes, I can access the Internet on my Amiga!) This is my current machine, and it's probably going to stay that way (although I will totally be all over the NatAmi if/when that comes out.) I don't use it for everything the way some die-hards do, but I do enjoy fiddling around with it and programming for it quite a bit, and the excellent game library for the platform doesn't hurt either ;)
I'm not going to go into a full infodump on what the Amiga is, not when I can just link to the Wikipedia article on the subject. What I do want to do is explain why I think it's so awesome.
The Motorola 68000 is just a very nice CPU. Although it's been mostly abandoned and no longer matches more popular architectures for speed, it's a very nicely balanced architecture; much cleaner than x86, but not quite so spartan as ARM. With plenty of registers, a wide variety of addressing modes, and enough of the more complex instructions to make things easy without going overboard, it's just about everything an assembler programmer could want.
Let's put it this way: The Amiga 1000 was released in mid-1985. At that time, Microsoft was getting ready to roll out Windows 1.0, which was barely more than a front-end for MS-DOS, featuring limited cooperative multi-tasking between native Windows applications, and Mac-team software engineer turned independent developer Andy Hertzfeld was putting the finishing touches on Switcher, which extended the Macintosh System software just to support manual switching between single-tasking applications. (Cooperative multitasking relies on applications surrendering control back to the OS when they're waiting for user input - needless to say, this works all right until you get a badly-behaved or buggy application.)
The Amiga, by contrast, had true pre-emptive multitasking from day one, where the OS automatically and transparently divides CPU time between applications. This was a major advancement for the microcomputer market, and the Amiga's competitors were quick to respond, by...wait, sorry, did I say "quick?" Windows didn't get pre-emptive multitasking until its big overhaul in 1995, and Mac OS didn't get it until Mac OS X in 2002 - ten and seventeen years after the Amiga!
It's possible that more people are familiar with Amiga designer Jay Miner's other big success, the Atari 2600, but the Amiga is where he really shined. In an age where most computers were created by wiring together a bunch of semi-standard components that didn't necessarily share any kind of similarity of design, and audio and video generators had a few different pre-defined modes built into them that programmers were then stuck with until a different machine came along, Miner and the rest of the Amiga team created a handful of custom chips that provided a single, cohesive architecture based around one unifying idea: flexibility through openness.
The Amiga chipset's primary feature is that nearly every key component in the computer, from the disk drives to the video to the audio, is driven by a central DMA controller that moves data to or from main memory as necessary - fetching a block of pixels for the graphics chip, copying bytes from disk to RAM, etc. This isn't dissimilar from how other computers' components work, internally, but here's the difference: all of this is open to programmer control. Nearly every parameter is tweakable by the programmer, so where a PC of the time might have had a video card with a single, fixed-location framebuffer of exactly the size of the screen, leaving the CPU to draw objects and scroll the picture by hand,° the Amiga could scroll effortlessly through a picture far larger than the actual screen area and copy objects into the picture automatically while the CPU handled something else.
° Technically, the PC EGA and VGA cards of the time actually did have some of this capability - but it was so poorly documented that almost no-one used it! In fact, it would probably never have been used if it weren't for the efforts of Michael Abrash, another unsung genius in the field.
The other aspects of the chipset are similarily free-form, able to be bent to just about anything the programmer needs - even down to the Copper chip, which provides precision timing for manipulation of the hardware at any point during the video frame, so that the programmer can seamlessly switch anything from palette colors to screen modes whenever and wherever they choose.
The other great thing about the Amiga hardware is its expandability. In an age where something as simple as adding a hard drive or sound card to your PC could mean hours of blood, sweat, and tears as you fiddled with jumpers and drivers, trying to resolve device conflicts, and expanding your Mac meant buying an extra-extra-long Torx bit and trying to pry it open without cracking the casing so that you could boost it to 512KB of RAM, the Amiga featured a full-fledged auto-configuring expansion bus that detected and set up devices at boot time, almost completely transparently. The Amiga expansion bus is so good that, even though the Amiga itself has been out of production for over fifteen years now, people are still able to create newer and more powerful expansions for it and have them work perfectly with almost any other expansion cards from back in the day.
Don't get me wrong, there are definitely some flaws with the Amiga system software: it doesn't support memory protection, AmigaDOS is unlike any of the rest of it and not very well-integrated as a result, and, on a higher level, the early versions of Workbench are a good bit more primitive as a user interface than Mac OS of the time. However, it shares the same admirable spirit of unifying, explaining, and opening up its internals to the programmer. Everything from simple structural code like list manipulation to device drivers is available for manipulation by the programmer in exactly the same way as it's used by the operating system. The end result of this is that not only is the Amiga OS and its application base so memory-efficient that it can be run functionally in 256KB of RAM, it's almost as easily expandable as the hardware. This is how an OS should be designed.
On top of this openness, it's a beautifully simple design, too. Whether it was the openness that pushed the designers to make the OS as sane and presentable as possible, or the beauty of the design that made them want to show it to all the application programmers in full detail, it's a full-featured operating system that you can truly understand with an afternoon or three of reading - try that with any of today's major OSes!
Seriously, it is. The Amiga ROM Kernel Reference Manual and the rest of the official documentation explains things in clearer terms than any other documentation I've read, without ever dumbing anything down. If you want to get into Amiga programming, or you just want to see Exhibit #1 in How To Write Documentation, there's PDF copies floating around on the Internet - grab them and settle in for a fascinating afternoon!
The Amiga is just an all-around excellent design; not without its flaws, but still a cohesive, elegant machine that's designed for flexibility and creativity from the ground up. It might not be competitive as a normal user's computer any more, but as a vehicle for exploring what makes a computer work, it remains unmatched.