The Honeywell 200 was a character-oriented two-address commercial computer introduced by Honeywell in December 1963, the basis of later models in Honeywell 200 Series, including 1200, 1250, 2200, 3200, 4200 and others, and the character processor of the Honeywell 8200 (1968).

Introduced to compete with IBM's 1401, the H200 was two or three times faster and, with software support, most of the time could execute IBM 1401 programs without need for their recompilation or reassembly. The Liberator marketing campaign exploited this compatibility, and was credited in later Honeywell publicity statements with stalling the sales of IBM 1401 machines. Honeywell claimed an initial rush of hundreds of orders for the H200 that itself stalled when IBM countered with a marketing emphasis on their System 360 product range that was then under development.

Honeywell 200

Architecture

As designed by Director of Engineering William L. Gordon, the H200 memory consisted of individually addressed characters, each composed of six data bits, two punctuation bits and a parity bit. The two punctuation bits recorded a word mark and an item mark, while both being set constituted a record mark. The item bit permitted item moves and record moves in addition to word moves (move successive characters one-by-one starting at the addresses given in the instruction, stopping when the relevant punctuation mark was found set in either field).

Honeywell 200

An instruction consisted of a one-character op-code, up to two operand addresses and an optional single character variant. Usually the op-code character would be word-marked, confirming the end of the previous instruction. An item-marked op-code would be handled differently from normal, and this was used in the emulation of IBM 1401 instructions that were not directly compatible. In two-character address mode, the full address defined one character in the 4K block currently addressed by the relevant register. In three-character address mode, the first three bits of an operand address could designate one of six index registers that occupied the first 24 addressable memory locations. The other two possible bit patterns indicated no indexing (000), or indirect addressing (111). In four-character address mode, the whole installed memory (up to 512K on a Model 4200) was directly addressable, and in addition, the top 5 bits of each address could specify direct addressing, indirect addressing, or indexed addressing via two sets of 15 4-character registers; in a program running in protected mode both sets were the same, located in the first 60 locations of the memory area to which the program was relocated.

Honeywell 200

A Change Address Mode (CAM) instruction switched between 2-, 3- and 4-character address modes. The address mode specified the number of characters needed for each operand address in instructions.

A Change Sequence Mode (CSM) instruction exchanged the contents of the instruction counter and of a Change Sequence Register (two register of Control memory, slightly faster but much smaller than Main memory). This provided a simple switch between threads within a program, similar to the sequence/cosequence behaviour of the Honeywell 800 series.

While the H200 supported operation with just a console, card reader and punch like the IBM 1401, the generic Input-Output instructions also supported line printers, magnetic tape drives and disk drives.

IO instructions left punctuation bits unchanged, reading or writing only data (and parity) bits into memory, and terminating on any record mark encountered. A record mark could be placed at the end of an input buffer to prevent any buffer overflow, a problem that was to persist in many other systems into the 21st century.

The 200-series IO instructions were a Peripheral Data Transfer (PDT) and a Peripheral Control and Branch (PCB) that explicitly implemented asynchronous IO. The PDT specified a device address, a buffer address and the transfer operation to be started, while the PCB specified a device address, a branch address and set the operating mode or tested the status of the device (branching to the specified address if the specified condition was met, for instance if the device was busy doing I/O). Both used the format Op-code Address I/O unit address Variant.

Software

The native assembly language was named .

The Easycoder assembler generated an object file as a binary card deck that could be punched to cards or written to magnetic tape instead. The object file began with a bootstrapping routine so that each program could be loaded into memory, from card reader or magnetic tape, using a boot command from the console.