Andrew Owen wrote:
While we're on the subject of graphics I've seen it claimed that the Commodore 64 can do an 8x1 attribute mode screen that is at least as big as (possibly bigger than) the 256x192 (8x1 attribute) screen on the Timex TS2068. But I can't find any reference to it in any of the online C64 documentation. Is this a user mode (Using the CPU to change the attribute byte in 320x200 mode for instance) or is it a hardware mode?
What you are looking for is the FLI mode. You can find code for it at http://www.ffd2.com/fridge/ and in one or more of the C= Hacking issues (don't have an URL handy but Google should be able to find it).
The FLI mode is what you would call a "user mode", it is not an officially documented "hardware mode".
Normally the VIC chip fetches the attribute bytes every 8th raster line and caches them internally. Those rasterlines are called "badlines" because unlike most other memory accesses by the VIC chip, these memory accesses slowdown the CPU. Since the attributes are cached in the VIC chip and only fetched once every eight lines changing the attributes bytes halfway an attribute cell won't have any visible effect.
Fortunately the VIC chip can be fooled so it will fetch the attribute bytes every rasterline by manulating the vertical scroll register so it always thinks there is a "badline" condition. This trick requires cycle exact timing. The CPU in the C64 isn't quick enough to copy 40 bytes of attributes data during a badline, but it can change the memory location of the attribute bytes by writing to a single VIC register. The FLI mode requires a lot of CPU attention, while the raster beam is in an area where a FLI image is displayed the CPU has very little time left to do anything else. In case of a full screen FLI that would mean that on a PAL system there is only 36% processing power left to do other things. By restricting the FLI mode to a smaller part of the screen, more processor cycles can be spend on other activities.