Fill character

In computer terminology, a fill character is a character transmitted solely for the purpose of consuming time. It does this by filling a timeslot on a data transmission line which would otherwise be forced to be idle (empty). In this way, fill characters provide a simple way of timing required idle times.

Fill characters are usually used in response to some real-world limitation. For example, mechanical computer printers such as the earliest dot matrix printers may have been able to print 30 characters per second, but when a "carriage return" character was received and the printhead began returning to the left margin, there was a noticeable delay before the printing of the next line could begin. Unlike modern printers, these early printers contained essentially no buffering, nor did they do any handshaking, so there would be no place to store the characters which would be received while the printhead was in the process of returning to the left margin, nor any way to tell the sender to temporarily stop transmitting characters. Instead, one or more fill characters would be transmitted to cover this time.

In its strictest definition, fill characters cause no action to be performed at all; they simply consume time. The ASCII "null" character is commonly used for this purpose. In actual practice with printers, though, one of the time slots that would otherwise contain a fill character was usually used to contain the "line-feed" character that caused the paper to advance by one line. For some printers (such as teleprinters), this was all the "filling" that was needed.

As described above, printers commonly required fill characters when the carriage was returned to the left margin. With other equipment, fill characters were occasionally required in other circumstances. For example the VT05 video terminal sometimes required fill characters when a "scroll up" operation was performed; the process of shuffling data in the shift register memory of the VT05 was slow.

In a similar fashion, communications protocols often require fill characters at points when processing must be performed.