The Sinclair ZX80 and ZX81, introduced in 1980 and 1981, are early budget microcomputers notable for their price, fleeting popularity and diminutive quantity of components.
Both machines are Z80-based and not only task the CPU with painting the display in the traditional sense of populating a display area, but through a shim on the bus reuse the Z80's program and refresh counters as display counters. While either machine is outputting pixels its CPU is usually in what looks to it like an unrolled loop of NOPs, with the support circuits piggybacking on its fetch cycle to obtain video memory contents and its refresh cycle to track location within the current scan line.
This and the ZX80's lack of a mechanism to provide a hard, fixed resynchronisation of the CPU and the display beam explains one of its most obvious pecularities: the display is stable only unless and until the user types, since it can just repeat an exactly-counted fixed length loop. If the user types it branches into code that depends on which key they pressed, causing display generation temporarily to break up. On most TV's this was evident as the display jumping and bouncing, since it interrupts the sync feed.
The ZX81 adds both an NMI generator and a WAIT generator that can allow the processor to get back into synchronisation after doing other work. The ZX81 therefore can offer a steady display but its processor is still available for non-display processing only during the vertical blank. Hence its stable display mode is known as 'SLOW' mode, and its ZX80-esque mode is 'FAST'.
The ZX81 also marks a substantial development in the machine's underlying BASIC, making it very similar to that which would ship a year later in the ZX Spectrum.
Despite originally being intended as text-mode machines, various approaches have subsequently been discovered that allow full-framebuffer display from most RAM expansion packs.
A substantial disadvantage of the design of these machines is that because the refresh cycle is commandeered for other purposes, they're built around an assumption of static RAM. As a result, each shipped with only 1kb at launch and expansions beyond 16kb were rare.