IBM 5100 (Registers and L32/R32)


The IBM 5100/5110/5120 uses an 8-bit ALU. The 16-bit address space is byte addressed (8-bit). The registers are latched to the first 128 memory addresses, making them also 16-bit each.

While in “Display Registers” mode, only the top four rows are actually the registers. The remaining lines are normal contents of RWS (RAM) at those corresponding addresses (representing 384 bytes of memory). But these remaining RWS bytes are shown in the same fashion as the registers, which is “vertical hex values” (so each 16-bit value only takes two columns).

Here is a sample of the state the IBM 5100 after completing the startup of BASIC. This is with the “Display Registers” switch active and before any keypress has been made since the power-up:

R0L0 = 0x536C   ("53" in the top left, "6C" also vertical in the next column)
R0L1 = 0x04BA
R0L2 = 0x04D2
R0L3 = 0x5002
$00FE = 0xFFFF  (this is address $FE and $FF)
$00A0 = 0x0000  (this is address $A0 and $A1)
$00C0 = 0x58    (just the content at address $C0)

L32/R32 are a kind of CRT “zoom feature.” L32 shows the LEFT 32 columns of the CRT, while R32 shows the right 32 columns of the CRT. NORMAL mode shows the full combined 64 columns.

Here is an example of using R32 to “zoom in” and see the L3 (keyboard interrupt) set of registers. When a key is pressed, the scan code ends up in Lo(L3R2) (and Lo(L3R13)). In the screenshot example below, keyboard scan-code “63” is shown as a result a keypress.

The IBM 5110 has a similar convention but uses different L3 registers (and also different scan code values for the keystrokes).

%d bloggers like this: