Friday 16 September 2016

Y NO Z80+editable chars?


Mode Z80 Non-Z80 (6502, 6800)
Memory Mapped
Character Display
Enterprise, Sharp MZ series, Aquarius, Laser 200 VIC-20, C64, Panasonic JR200, Atari 8-bit, Commodore Plus/4, Oric Atmos
Memory Mapped
Character Set
Enterprise, Sharp MZ-800(?) VIC-20, C64, Panasonic JR200, Atari 8-bit, Commodore Plus/4, Oric Atmos
Memory Mapped
Bitmap Mode
Enterprise, ZX Spectrum, Amstrad, ZX81, SAM Coupé, Sharp MZ VIC-20, C64, Panasonic JR200, Atari 8-bit,, Commodore Plus/4, Oric Atmos
VDP MSX 1/2, Sega SC-3000, Coleco Adam, Memotech MTX, Tatung Einstein


Character displays proved to be very effective for 8-bit computers. Intuitive to program, less wasteful of memory and with high potential for optimizing graphics for your chosen approach.
loop:INC $0400,X;INC $0500,X;INC $0600,X;INC $0700,X;INX;JMP loop
What the above table highlights is that there seem to be very few computers combining the Z80 processor with a memory mapped character display with editable character set. I've only heard that Enterprise, the swansong of the 8-bit era, might have such modes. Sharp MZ-800 has something called the Programmable Character Generator, which I think does the trick too. I'm pretty sure that another latecomer, SAM CoupĂ©, does not have a true text mode. The point is that none of the popular Z80 computers had the feature.

Some websites list Sinclair-style pseudo-text bitmap modes as "text modes" too, so it can be confusing. The accurate distinction between pseudo-text, fixed character set modes and fully editable character set modes is not made often enough.

Why were there so few Z80-based memory mapped character graphics? Surely, if the 6502 can whizz user-defined characters around the screen, the Z80 could whizz considerably more?

I don't know. Maybe the engineers thought the Z80 was in any case powerful enough to handle bitmap graphics (a very marketable feature back then). Or, there may be some bus-architectural reason why combining Z80 with a sophisticated character display would be difficult or result in something that brings complications for the programmer or additional contentions with the other chips. I'm especially wondering this as there are Z80-computers with a char display (Aquarius, Sharp series, Laser) but without editable characters. A full 256-character set would have eaten 2K of RAM though.

In the table I've also included some VDP-based computers. It was close to being a standard solution and one can suppose at some point it was easier to design a Z80+VDP computer than start creating new video chips. There seem to be no 6502+VDP computers either, which might have been a poor combo.

3 comments:

  1. There were VDP boards for the Apple II that used the Ti VDP. I've often thought that it was synchronous nature of the 6502 and the fact that you could easily write too quickly to the VDP before it is ready for the next operation, but somehow these Apple Ti boards overcame that obstacle.

    ReplyDelete
  2. Hello,

    PCG for SHARP series MZ:

    - MZ-80 K/C/K2/K2E: external HAL PCG-8000. Only one programmable set (upper 128 characters).
    - MZ-1200: external HAL PCG-1200. Two programmable sets (2 x upper 128 characters). Only one set can be active on the display.
    - MZ-700: external HAL PCG-700. Two programmable sets (2 x upper 128 characters). Both can be active on the display through bit 7 value of the attribute character in VRAM.
    - MZ-800: internal PCG in mode 700. 700 CGROM is copied in PCG RAM when booting in 700 mode. So PCG can be the altered afterwards.
    - MZ-1500: the most interesting one. 320 × 200 dots and 24 letters PCG or 1000 letters. 1 color among 8 per dot for PCG. The reality is PCG of 40 characters x 25 lines as mentioned above. The PCG screen can be superimposed on the text screen or “between the text color and background color”. Palette is used by both text and PCG to pick a color: palette entry #0 is transparency for PCG to allow mixing with text.

    ReplyDelete
  3. The Creativision, and it's variants, have a 6502 and a TMS-9929.

    ReplyDelete