A horizontal blank interrupt is a programming technique used in some systems, notably video games and consoles, to allow program code to be run in the periods when the display hardware is turned off, waiting for the TV to complete its horizontal blank, which takes about 10 μS.
The technique was only really useful before the entire display could be addressed directly with high speed CPUs attached to large frame buffers, that is, in the days of 8-bit systems. In this case the CPU was not terribly fast, and that 10 μS might be enough to run perhaps 40 to 60 instructions. That was enough to change a few registers in the display hardware however, which is why this technique was useful.
For instance, both the Bally Astrocade and Atari 8-bit family (originally intended to be a console) included HBI support. Both could display only four colors per pixel, but which four could be selected from a palette of 256, selected by storing the color number in one of four registers. By changing the values of the palette registers during the HBI, the system could select a new set of four colors on every line, leading to a number of "rainbow" displays with all 256 colors on screen (four per line).
Full article ▸