Video Modes
The Enhanced ULA, or ULAPlus, adds extra video modes and features to the standard Spectrum.
Spectrum Video Mode
The standard Spectrum has only one video mode, with a resolution of 256x192 and 15 colours.
Pixel data is stored at $4000 onwards, with one bit per pixel, so each byte represents 8 pixels. The screen is divided into 8x8 pixel "attribute cells" (which are also the size of a character). Pixels in a single row (of pixels) are stored in order, but the rows are stored in an infamously strange order; all of the first pixel rows of the first third of attribute rows, then all of the second pixel rows, and so on.
Attribute cells set the "ink color" (the color used when a pixel bit is 1) and "paper color" (the color used when a pixel bit is 0) for each cell. This means that on a standard spectrum only two colors can exist within a single 8x8 cell.
Timex Sinclair Video Modes
The Timex Sinclair added a number of new video modes which are controlled by Timex Sinclair Video Mode Control ($xxFF / 255). These modes are:
- Screen 0/Screen 1: this allows the location of pixel data to be changed between $4000 and $6000.
- Hi-Res: creates a 512x192 pixel screen by alternating columns from screen 0 and screen 1, but attributes are disregarded: the entire screen can only be two colours. Which two they are is configured via the control port.
- Hi-Color: uses the screen 1 memory area as an expanded attribute space where each attribute applies to an 8x1 area, rather than 8x8. This means that the areas within which only 2 colors are available are substantially smaller.
ULAPlus
ULAPlus allows 64 colors on screen at once via re-purposing the FLASH and BRIGHT bits as extra color bits. It also allows these colors to be selected from a palette of 256. It is controlled via ($BF3B) and ($FF3B).