SOFTWARE - EXAMPLE HIGH RESOLUTION DISPLAY DRIVERS

PSEUDO HIGH RESOLUTION

The standard ZX80 hardware is capable of generating a pseudo high resolution screen using a custom display driver and such a mechanism was first devised by Macronics in 1981.

The ZX80 display mechanism 'executes' the display file causing opcode reads to fetch each character code from the display file. It then uses the Refresh cycle performed per opcode read to look up from the ROM the pixel patterns to show for the character just fetched. Each row of characters in the display file is executed 8 times and a hardware line counter increments for each line such that the appropriate pixel patterns are retrieved for each character to be drawn. The pseudo high resolution mechanism changes the value of the I register such that a different location of the ROM is used to provide the pixel patterns. In addition, the hardware line counter is reset for each line so that every line is capable of displaying the same pixel patterns. Since there are 128 displayable characters in the ZX80 character set, the pseudo high resolution driver only has access to at most 128 out the 256 possible combinations of pixel patterns.

Macronics created versions of their pseudo high resolution display driver for both the 4K ROM and 8K ROM (and hence ZX81 also), but it was only capable of generating a display resolution of 151 x 192. A more compact display driver was later independently devised for the ZX81 by Software Farm and it could generate a resolution of 192 x 256. However, this driver is not suitable for use with the ZX80 since it produces shorter and misaligned horizontal sync pulses for the main picture area compared to the border lines and so is likely to result in an unstable picture on a TV.

The driver presented here addresses the horizontal sync alignment and width issues, and uses the display routines in the ROM to generate the border lines. Using the ROM routines is necessary to achieve correct display from Chroma 80, ensuring its correct picture is properly synchronised to that of the RF ouptut. The driver also demonstrates how a colour pseudo high resolution screen can be produced and how to detect the presence of the Chroma 80 colour facilities. The driver produces a high resolution display that is perfectly aligned with that of the standard low resolution display.

Upon loading the program, type RUN and a black and white pseudo high resolution screen will be displayed. Press a key and the monochrome colour version of the screen will then be displayed. Press another key and the program will return back to BASIC.

Since alternate locations in the ROM that contain instructions are used for the pixel patterns, it is not too surprising that some end up being duplicates thereby reducing the available number of unique patterns below the maximum of 128. By coincidence, the maximum number of unique patterns available from the 4K ROM and the 8K ROM (i.e. ZX81 edition 1 ROM) is 90, but they are a different set of patterns. However, similar looking results can still be achieved from both ROMs, as the demonstration display drivers for the two ROMs prove by each rendering a conversion of the same screen taken from the Spectrum game Alien 8 by Ultimate Play The Game:


Pseudo Hi-Res Display 4K ROM
Pseudo Hi-Res Colour Display 4K ROM
Pseudo Hi-Res Display Driver (4K ROM)
Black & White
Pseudo Hi-Res Display Driver (4K ROM)
Colour
Pseudo Hi-Res Display 8K ROM
Pseudo Hi-Res Colour Display 8K ROM
Pseudo Hi-Res Display Driver (8K ROM)
Black & White
Pseudo Hi-Res Display Driver (8K ROM)
Colour


TRUE HIGH RESOLUTION

The ZX80 is capable of generating a true high resolution picture but requires a modified RAM pack in order to do so. This technique is referred to as WRX format and was devised by Wilf Ritger in 1984. The 16K RAM provided by Chroma 80 implements the required modification to support WRX format.

The ZX80 display mechanism 'executes' the display file causing opcode fetches to read each character code from the display file. It then uses the Refresh cycle performed per opcode fetch to look up the pixel patterns to show for the character just read. In constrast, the WRX format works by 'executing' a dummy display line and then uses the Refresh cycle of each opcode fetch to retrieve from RAM the pixel data to display. The Refresh counter then advances and hence the next byte from the high resolution display file is read next time.

Two versions of a WRX drivers are presented here - one that can generate a black & white or monochrome colour picture, and a more eleborate one that can generate a Spectrum quality colour picture. Upon loading either program, type RUN and then press a key to return to BASIC. The display driver demonstration programs reproduce screens from the Spectrum games Alien 8 and Atic Atac by Ultimate Play The Game:


WRX Hi-Res Black and White Display
WRX Hi-Res Monochrome Display
WRX Hi-Res Colour Display
WRX Hi-Res Display Driver
Black & White
WRX Hi-Res Display Driver
Monochrome Colour
WRX Hi-Res Colour Display Driver
Spectrum Quality Colour


DOWNLOADS

The program file and source code for both 4K ROM and 8K ROM versions of each demonstration display driver are available for download and may freely adapted for use in your own programs.

Click here to download the Pseudo Hi-Res Display Driver Demo (4K ROM) [V1.02].
Click here to download the Pseudo Hi-Res Display Driver Demo (8K ROM) [V1.02].
Click here to download the WRX Hi-Res Display Driver Demo (4K ROM) [V1.02].
Click here to download the WRX Hi-Res Display Driver Demo (8K ROM) [V1.02].
Click here to download the WRX Hi-Res Colour Display Driver Demo (4K ROM) [V1.02].
Click here to download the WRX Hi-Res Colour Display Driver Demo (8K ROM) [V1.02].