140 points•msephton•6 days ago•68 comments•

68 comments

amiga3865 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 !!!

icedchai5 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.
snvzz4 days 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.

dosisking5 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.

amiga3865 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.

Findecanor5 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.

weinzierl5 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.
armitron3 days 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.
weinzierl5 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)

kbelder5 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.
stasomatic5 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.
Lerc5 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)

agar5 days ago
I wish there was a way to recapture the feeling of magic produced by using the Amiga. From usability to programmability, everything seemed exciting, new, and with unlimited possibility.

It really was like going from a black-and-white world to seeing full color.

I always said that if 1% of the effort (and money) put into overcoming the PC architecture's shortcuts was put into the Amiga, the computing world would be in a very different place.

nine_k5 days ago
I'm afraid that the feeling of magic if (was) a phenomenon related to passing the boundary between the "black and white" and "full color" worlds, not the "full color" world itself.

What we have now easily available offers much more unlimited possibilities. 24-bit color, 4K resolution, all the 3D you may care about, all the audio you may care about, gigabytes of RAM, terabytes of storage, easy programmability from tinker-friendly stuff like pygame or processing.org or löve to world-construction kits like Godot. Or the whole Web thing. All available at a trivial cost or free. Where's the magic though?

I think that much of the "magic" feeling comes from pushing things to the limit, and beyond. This requires a limited possibility. Basically all art is built around some kind of a limitation and playing with it.

(Being young and having time to tinker with hardware just for the joy of the audiovisual effects goes without saying.)

agar5 days ago
I think there's truth to what you say.

The Amiga pushed the boundary in so many directions at once that the horizon extended far beyond what I was used to with the DOS/EGA/TSR/ISA/x86/PC Speaker environment. Or, the monochrome VT100/PDP-11/multitasking/multiuser systems I used in college.

At the same time, it was clear the horizon was limited...but could be pushed back through a combination of cleverness, and discovery, and code. You felt like there were true discoveries to be made, whether it was through looking at source code found on UUCP, by finally understanding the purpose of some struct found in the Amiga ROM Kernel Reference Manual, or just experimenting with blitter or copper code.

Despite (or perhaps because of) the depth of knowledge available, computing today feels stale; anything "new" is only new to you. A million people would look at your "innovation" with disdain as its such a well-trodden path.

In a way I welcome AI-based coding, because if there's no joy (for me) in the (coding/discovery) journey, perhaps I can at least feel there's magic in getting to a new destination more quickly than ever.

MiroslavPokorny6 days ago
Maybe its me, but i believe the primary or secondary reason for screen is different screens had different resolutions and color depths, both of which dont really exist these days on any major OS.
vidarh6 days ago
I've been thinking a lot about this. Virtual desktops gets us somewhat close, but not quite. You're right the difference in resolution and colour depth isn't really relevant any more.

What I think made screens feel different was as a grouping mechanism, usually driven by a single application (though in more recent versions of AmigaOS you could open "public screens") that would manage the layout for that screen. You can do that with virtual desktops, but it takes some effort to simulate the behaviour.

I'm slowly iterating on something like that for my wm. I now snapshot the (by default tiling) layout and restore it, letting me "open" and "close" screens/virtual desktops, and re-open the applications on them, so instead of opening a single application that opens a screen, I will open a "project" and it will open a desktop and multiple applications on it whose windows will snap into place. I'm not happy with it yet, but it feels somewhat closer to me to how it felt to use Amiga screens.

summa_tech6 days ago
It feels like the concept faded with the advent of large VRAM and fast fill rate graphics accelerators. I remember old X Window System workstations supporting multiple concurrent windows with different color depths and modes. The hardware would compose windows from memory during display scan-out, all to save VRAM.
p_l5 days ago
Color depths, not modes per se, and it's more that XFree86/X.Org by virtue of being lowest common denominator didn't have optimizations based on it, and over time GTK and others forgot they exist.

Some systems like Xsgi went further with having several visuals used for predefined purposes in their modified Motif versions

badc0ffee5 days ago
I used X11 on some 8-bit framebuffers back in the day, and I remember the palette changing depending on which window was in the foreground. The foreground window would have proper colour, and the background ones would generally have crazy clashing colours.
sam17145 days ago
The use case definitely exists today:

  - 3D apps (games) render at a resolution less than the desktop for performance reasons (even in fullscreen mode to avoid switching the video signal)
  - Similarly, streaming sticks/TVs render the UI at 720-1080p and overlay on hardware decoded 4K video (very common in anything that's not a console, Apple TV, or NVIDIA Shield)
  - Handling non-high DPI apps on a high-DPI desktop, or handling systems with mixed DPI displays
  - Combining HDR and SDR content on the same desktop. Same with deep-color apps.
  - UI effects like the OS X genie effect, app thumbnails
vidarh3 days ago
But none of that really requires separate "screens" any more.

I love the screen concept, but the different resolutions and colour depth are the weakest reason for them on modern hardware.

weinzierl6 days ago
How do different resolutions (pixel sizes) work? I get that everything memory related (including color mode and depth) could be switched on a raster line.

In theory it should be possible to change the frequency of the video signal mid screen as well, but I have a hard time to imagine switching repeatedly every frame wouldn't have driven the monitors of the time crazy. Even multi-sync monitors needed probably a couple of frames to sync, right?

noone_youknow6 days ago
In the context of the Amiga you didn’t need to change the signal frequency, the underlying video signal stayed the same.

For wider pixels, the hardware just drew each pixel for longer, and for taller pixels each pixel spanned more lines.

Pixels weren’t real in the CRT days :)

mrandish5 days ago
> Pixels weren’t real in the CRT days :)

True, but it gets more purely true if we add the word analog in front of CRT. While no CRT had pixels native to the display in the way LCD & LED monitors do, it's worth clarifying whether we're talking about the video signal's native traits or the display's.

Most techies today were raised in a digital video world, so they learned to think of display output as being natively digital. Many struggle to fully wrap their heads around how a natively 'non-pixel' analog video signal is even a coherent concept. Often, they'll start by conceding "Sure, I get that in the 'old days', video output was converted into analog somewhere downstream before it 'hit glass', but raster image data in a digital computer was still 'born' as discrete pixels in a frame buffer. Even if it's converted to analog for display output, somewhere there's a natively 'pixel' form of that raster, right?"

While that was true on virtually all early 8-bit computers like the Apple II, Atari 400/800, C64, etc, it wasn't always the case before that. Some early digital computers displayed raster imagery on analog televisions which never existed anywhere as discrete pixels. Instead, they synthesized each horizontal scanline as an analog waveform. While these scanlines did technically have a resolution, that resolution was expressed as frequency and bandwidth of the waveform, not pixels. The raster image never at any point existed as discrete pixels, in much the same way that early audio recordings on vinyl discs or cylinders were never discrete "audio samples."

Thus, analog video imagery from some early digital computers wasn't just a display conversion of a 'ground truth' pixel raster, no pixels ever existed. For many digital natives it can be challenging to conceptualize media that isn't fundamentally quantized into discrete digital values.

fallat6 days ago
In a sense pixels arent even real today right? It's an abstraction
kmeisthax6 days ago
Analog monitors don't care about the dot clock. They draw lines, but you can put whatever signal you want in the lines so long as the dot clock doesn't exceed the available bandwidth. So horizontal resolution is effectively a range you can change at any time and the monitor won't even notice.

Vertical resolution is very much part of the spec, but even then CRTs will sync to hilariously out-of-spec signals that gain or lose lines per frame. Sanely-designed graphics hardware like the Amiga wouldn't do this, but the Atari 2600 wasn't sanely designed and had plenty of games that played fast and loose with NTSC. Atari graphics hardware only generated a single line of graphics and relied on H-Blank effects for literally everything else. Even the vertical retrace signal was controlled by the game. So it was very common to see badly programmed games send too many lines, and a different wrong number of lines each frame, which nobody noticed until people started writing 2600 emulators.

fredoralive6 days ago
It’s basically just an SD TV signal, the vertical height in lines doesn’t change, it largely just swaps if each line outputs 320 or 640 pixels during its assigned time period.

Having interlaced and non interlaced modes at once seems a bit funky though, but I assume it just forces everything into interlaced with the non interlaced mode sections having the same line sent on both fields?

amiga3865 days ago
In TV land, there is no non-interlaced. It's all interlaced. You provide fields at 50Hz/60Hz* and the CRT displays one after the other, interleaved.

https://en.wikipedia.org/wiki/Interlaced_video

"Non-interlaced" is just sending the same line for both fields, "interlaced" is sending different lines for each field. You can update your "non-interlaced" screen at 50/60Hz and the viewer will see movement, because it's transmitted for both fields. If you were updating just one line of an interlaced screen at 50/60Hz, it would only be transmitted every second field, so the viewer would perceive 25/30Hz movement.

For high-resolution monitors, Commodore and 3rd parties offered a "flicker fixer", which took the raw output, buffered both fields in its own RAM, and re-emitted the combined image as a single frame.

https://en.wikipedia.org/wiki/Flicker_fixer

*: actually 59.94Hz

LocalH4 days ago
AmigaOS does indeed enable the extra half line when any visible viewports are interlaced. Fortunately that just works because the individual “non-interlaced” fields are still legible when shifted back and forth by a half line.

Read the full thread on Hacker News →

Related stories