amiga386
3 days ago
I break out this diagram every time Amiga graphics hardware comes up:
https://amigadev.grimore.org/Hardware_Manual_guide/node02d4....
The Amiga had a great trick. Both the CPU and the display/audio hardware share the same RAM (called Chip RAM), so they have to arbitrate for access to it, through a chip called Agnus, which prioritises who gets to read/write memory, depending on importance. You can starve the blitter, you can starve the CPU, but you can't starve the audio or video or disk I/O. As the 68000 CPU only needed memory access every second clock cycle, the Amiga designers arranged it so that the custom chips preferred odd cycles and saved the even cycles for the 68000. So your 68000 runs at full speed.
But if you need more and more work done by the custom chips, it starts to rob some of the even cycles from the 68000.
If you have a 16-colour lowres screen (4 bitplanes), Denise (the chip that turns RAM values into video signals) only reads display data on odd cycles. But if you add another bitplane for 32 colours, she needs some of the even cycles. If you add another bitplane for HAM or EHB mode, she needs even more.
In hires mode, it needs twice the bandwidth for twice the pixels. So if you have a 4-colour hires screen, it only needs odd cycles and the 68000 is full speed. If you go for 8 or 16 colours, it starts slowing the 68000 down.
This is why the default Workbench screen is 4-colour hires. It's hires to look nice and professional like an IBM, and not like a kid's toy like the Atari ST's default lowres GEM interface. It's 4-colours to show it's colourful and not black-and-white, but it's not 8- or 16- colours because that would nearly halve the speed of the CPU !!!
icedchai
3 days ago
I had an Amiga 500, then a 3000. You could really feel the slow performance with 8 and 16 color Workbench screens on the 500.
snvzz
a day ago
>You could really feel the slow performance with 8 and 16 color Workbench screens on the 500.
Until you added FAST RAM (e.g. via lefthand expansion slot), exclusive to the CPU.
The system prefers allocating there unless CHIP is explicitly requested.
icedchai
21 hours ago
I eventually added another 2 megs of fast RAM to my Amiga. It was a huge boost! 3 megs of RAM in 1990 felt insane.
snvzz
15 hours ago
Neat. 3MB would have been insane. That year, my family bought the 512KB trapdoor expansion for A500, so that we could play Monkey Island. It was every bit worth it!
Of course, the extra 512KB made our Amiga that much more useful, and eventually we did the solder-jumper change to make it chip, as our A500 is a rev6 with the 1MB ECS Agnus.
I still have this A500; now it also has 8mb fast on cpu slot, an ECS denise and a 68010.
dosisking
3 days ago
> This is why the default Workbench screen is 4-colour hires. It's hires to look nice and professional like an IBM, and not like a kid's toy like the Atari ST's default lowres GEM interface
The Atari ST had a professional resolution of 640x400 monochrome with a 70hz refresh rate. The Amiga had a 640x200 resolution non-interlaced, or a 640x400 interlaced which was basically a kid's toy.
amiga386
2 days ago
It was nice of the ST to offer a special black and white screen mode on a custom monitor. The Amiga had the memory bandwidth to offer the same, but chose to only offer PAL/NTSC and no other custom video signals at launch, probably to avoid making its display chip even more complicated.
The Amiga had a "professional" resolution of 1008x1024 PAL or 1008x800 NTSC, 4-colour greyscale with a 15Hz refresh rate via its A2024 monitor (which effectively sampled 4 screens worth of video output and stitched them together).
You could also buy a "flicker fixer" (later included internally in the A3000) which gave you full colour 640x512 at 25Hz or 640x400 at 30Hz if you didn't like interlace.
In 1990, the ECS chipset gave you "Productivity" mode (640x480 at 60Hz, 4 colours) and "Euro72" (640×400 at 70Hz, 4 colours) - there's a nice list here: https://amiga.lychesis.net/articles/ScreenModes.html
But different strokes for different folks. The Amiga distinguished itself by being easily genlockable to video and having a 4096 colour palette and 21kHz 4-channel 8-bit sampled sound replay in 1985. The ST distinguished itself by having MIDI ports and a choice of either monochrome monitor, or the TV (or a colour monitor based on NTSC/PAL) if you wanted to do anything in colour. It found its niche in controlling other musical devices.
But the ST did have a garish green low-res desktop by default.
icedchai
2 days ago
I never knew anyone who used the ECS "productivity" modes. That would've required an expensive multisync monitor since other Amiga stuff would still need the 15 kHz support. The only useful feature of ECS, as far as I can recall, was support for additional chip RAM.
Findecanor
2 days ago
Later Amigas also supported VGA monitors with 31kHz horizontal refresh rate, with just a passive adaptor. I used a VGA monitor with my Amiga 1200 up until I switched to PC, and a tweaked video mode with 704×520 pixels.
If you wanted to play games on an Amiga or an Atari ST you needed to use a TV-signal compatible 15kHz monitor or a Multisync monitor. I ran desktop programs in 640×200 mode with four colours on both my ST and my Amiga 500 before I upgraded.
There were also "flicker fixer" add-ons for the Amiga, converting the interlaced modes to VGA signals: one was built into the Amiga 3000.
weinzierl
2 days ago
As a kid the 70 Hz made a much more professional impression on me than the colors, but of course the colors were much cooler.
weinzierl
2 days ago
For everyone wondering why there are so many dollar values in the diagram: $ meant hex in the vernacular of the day.
(Could mean string too, but that'd a different story)
kbelder
2 days ago
I so wish we could go back to that convention, rather than the silly '0x' convention. Every language I write in my head (and there's been a bunch) uses that.
stasomatic
2 days ago
Was all this engineered and then implemented, or did they play it by ear? Seems very complex for the time. Now with Pis and ESP32s one can just cobble up together whatever Frankenstein with off the shelf parts, but this seems very elegant with bespoke chips, sans 68000. This is way way way over my head, but intellectually intriguing.
Lerc
2 days ago
Most of it was architected before implementation, The timing was a pretty core part of the system, I believe the intention was to give every machine some fast RAM that had a CPU only bus, but that fell to budget demands. You could still get a memory expansion which the CPU would have all to itself. There were a few details that were late tweaks, and there were a whole bunch more that could have been easy additions at implementation time if they had known at the time what we knew after 20 years worth of demo coding on the Amiga.
A lot of the features of the Amiga came from exactly that form of hindsight with the 8 bit machines. The Copper, sprites being arbitrary height, and display addresses being 'live' rather than top-of-frame initialisation values came from seeing programmers of the 8-bit machines finding tricks to undo much of the fixed function behaviour so they could reuse sprites or trick the display RAM fetch to suddenly jump to another place. The Amiga came with a lot of that automatic behaviour removed and then performed by the copper allowing for low level coders to just access the core behaviour instead of trying to trick the hardware into doing it (like the way you remove borders on the c64)
armitron
10 hours ago
That's one reason why adding fast ram (= exclusive access by the CPU) to an Amiga 1200 doubled the speed of the machine for most workloads without changing the CPU.
tycoon666
2 days ago
But then there ist fast-RAM
TacticalCoder
3 days ago
Username checks out!