68 comments
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 !!!
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.
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.
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.
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.
(Could mean string too, but that'd a different story)
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)
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.
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.)
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.
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.
Some systems like Xsgi went further with having several visuals used for predefined purposes in their modified Motif versions
- 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 thumbnailsI love the screen concept, but the different resolutions and colour depth are the weakest reason for them on modern hardware.
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?
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 :)
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.
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.
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?
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
Read the full thread on Hacker News →
Related stories
- Amiga screens: a primerdatagubbe.seLobsters · 29 points · 6 days ago
- Amiga Screens: A Primerdatagubbe.seHacker News · 1 points · 6 days ago
- Lobsters · 6 points · over 9 years ago
- Hacker News · 1 points · 4 days ago
- "Not Conio but Compatible" for Amiga VBCCretrogamecoders.comHacker News · 1 points · 6 days ago
- DEV Community · 3 points · 8 days ago