Copyright 2007 by John Blankenbaker

The following registers of one byte each were assigned memory addresses: A was 000, B was 001, X was 002, P (program counter) was 003, Output was 200, Input was 377. Also, memory locations 201, 201, and 203 were assigned to hold the overflow and carry bits from the A, B, and X registers, respectively.

The general format of the instructions was two bytes where the first byte was the command and the second byte was a constant, a memory address, or a pointer to an address. Instructions could start on an odd or even address.

The memory addressing modes were immediate (constant), memory, indirect, indexed, and indirect-indexed. For the indexed operations, the contents of the X register were used. Add, Subtract, Load, and Store could be performed on the A, B, and X registers. The A register could also receive the results of Or, And, and Load Negative operations.

Jump instructions could test the A, B, or X registers for Not Zero, Zero, Less than Zero, Greater than or Equal to Zero, or Greater than Zero. A Jump could also be unconditional. Two addressing modes were possible, Memory (called Direct), and Indirect. The Jump instructions could also be specified to deposit a Return Address to permit a return from subroutines.

There was a class of bit control instructions which allowed any single bit in the memory to be set to a 0 or to 1. Other instructions in this class allowed any bit in the memory to be tested with a resultant Skip the Next Instruction if the test were true.

The A or B register could be rotated or shifted left or right one to four binary places. Finally, there were No-Op and Halt instructions. The instructions in this paragraph were single bytes.

Because the registers were addressable, it was possible to do many specialized operations simply. For example, (A) minus (A) would clear the A register.

 

The CODING SHEET which summarized all of this information and provides a space to write programs is shown on the Coding Sheet page.

Instructions