# Hazeltine 1500

The Hazeltine 1500 was a popular smart terminal introduced by Hazeltine Corporation in April 1977 at a price of $1,125 (equivalent to $5,700 in 2023). Using a microprocessor and semiconductor random access memory, it implemented the basic features of the earlier Hazeltine 2000 in a much smaller and less expensive system, less than half the price. It came to market just as the microcomputer revolution was taking off, and the 1500 was very popular among early hobbyist users.
Two modified versions were introduced in June 1977, the $1,395 Hazeltine 1510 and $1,650 Hazeltine 1520. The 1510 added a simple batch mode system that allowed the user to type in values without them being sent to the host system. When the SEND key was pressed, all the "foreground" data that had been typed in was sent all at once. The 1520 was a 1510 with an added printer port that could support serial or parallel computer printers.
The final entry to the 1500 series was the Hazeltine 1552 introduced in August 1979 at $1,500. It added a VT52 emulation mode, separate cursor keys, and graphics characters.

## Basic features

The 1500 used an Intel 8080A processor with 2 kB of ROM for the basic operations, and 2 kB of RAM as the character buffer (4 kB in the 1510/1520). Characters were drawn using a 7 column by 10 row pattern within a larger 9 by 11 cell. The display showed 80 columns by 24 rows, a widespread standard at that time. The 12" CRT used P4 "white" phosphor.
Like earlier models in the Hazeltine line, the 1500 supported both an RS-232 interface, with speeds from 110 up to 19,200 bit/s, as well as a 20 mA current loop, used by teletype systems and still common due to the widespread use of Teletype Model 33 as ad hoc terminals. 19,200 bit/s was relatively fast for the era, most terminals of similar vintage topped out at 9,600.

## Commands

The command set for Hazeltine terminals was fairly simple, consisting mostly of line editing and cursor positioning commands. The tilde, ~ was used as the escape character, or as they referred to it, the "lead-in code". The 1510/1520 also allowed ESC to be used as the lead-in.
Simple one-letter commands following the lead-in included DC2 for cursor-to-home (upper left corner of the screen), FF for up-cursor, VT (vertical tab) for down-cursor, BS (backspace) for cursor-left and DLE for cursor-right, and FS (form separator) for clear screen. SI cleared to the end of the line, ETB to the end of the screen. DC3 deleted the line and moved any data below it up while SUB inserted a line and pushed lines down.
The cursor could be positioned anywhere on the screen using DC1 and following that with two ASCII characters for the X and Y locations. The ASCII could be offset by any multiple of 32, so for instance, one could move to Y location (row) 10 by sending LF, ASCII code 10, or by sending *, ASCII code 42, 32+10. The advantage of adding 32 to the value is that it shifts it into the printable character range, which is more likely to work on all serial links. The same was true for the X address, but because the locations were 0 to 79, rather than 0 to 23 for Y, shifting higher addresses in this manner might put them out of the printable range again. They suggested transmitting 0 through 30 using codes 96 through 126. ENQ would return the current cursor location as two characters separated by a carriage return.
Sending - caused the terminal to send a single character in return, encoding the terminal status in the lower 6 bits. Bits 0, 1 and 7 were not used and always zero. Bit 2 returned whether it was half duplex while 3 was full duplex. Bit 4 was 1 if there was a parity error on the last transmission. 5 and 6 encoded the end-of-line character being used, 00 was CR, 01 was ETX, 10 for EOT, and 11 for none.
One unique feature of the Hazeltine systems was the difference between normal-intensity "background" characters and higher-intensity "foreground" characters. The system was normally in background mode and any data sent to it was displayed normally. Sending the "foreground follows" instruction, US (unit separator), all following data was displayed in foreground mode. Sending background follows, EM (end-of-medium) returned to background mode. Sending CAN cleared to the end of the screen like ETB, but filled it with foreground spaces. GS was similar to clear screen, but removed only the foreground.
Sending NAK locked the keyboard, while ACK unlocked it again.

## Batch and block commands

The 1510 and 1520 included modifications of the foreground/background system that allowed them to operate in "format mode", what would be known as block mode in IBM parlance. In this case, data in foreground style was also referred to as "unprotected" while that in the background was "protected". As with the base model 1510, one could clear out only the foreground data, or all data, normally defaulting to only clearing the unprotected foreground.
Format mode is entered with a ~#. When the terminal is put into format mode and the user types data into the terminal, the data is not sent to the host, it is simply stored in a second 2 kB buffer. When the user presses the SEND key, all data in the foreground is sent to the host in a single stream. The host could also trigger the send operation by sending ~SO to the terminal. The system could be set to send different bits of data; sending ~. to the terminal sent back only the line the cursor was in, ~( would instead send everything on the screen from the home position to the cursor.
Similar to format mode is batch mode, which differed only in that it sent data whenever the input for one field was complete. When the user pressed return or tab to advance, the data for the preceding field was automatically sent and the cursor advanced to the next foreground field. Batch mode was entered using ~%.
While in format mode, the TAB character was used to move from field-to-field, skipping over any text that was in background style to the next unused field or foreground style. It also added a back-tab to move backwards through the fields, sending ~DC4.
The user could also trigger whether new data would be accepted by pressing the LOCAL key. When this was on, the terminal only accepted input from the keyboard, ignoring data from the host. This mode ended when the user pressed LOCAL again, or SEND.
The status character changed on the 1510/1520 to return more information. Bit 0 now indicated if the print buffer was empty, and 1 whether or not the printer was in online mode (echoing everything from the host). Bits 2 and 3 now encoded the format mode, 00 was off, 01 was batch, 10 for page, and 11 for line.

## Printer commands

The 1520 included a printer buffer able to hold one screen of data, added a selection of commands to control it, and a PRINT key to turn it on and off manually. The terminal could be set to send all data to the screen, the printer, or both — ~/ turned on the printer and sent data from the host to the screen and printer, ~* sent it to the printer only, and ~? turned off the printer and sent data to the screen (the default mode). Pressing the PRINT key, or sending ~RS from the host, would dump the current screen to the printer.

## In popular culture

The 1500 model famously appears on the cover of Kraftwerk's 1981 album Computer World. The 1500 model also appeared in the videos for Stereolab songs Miss Modular and Fluorescences.