# KM8-E Memory Extension

The KM8-E IOTs enable programs to change the instruction and data field registers (IF and DF) of the KM8-E Memory Extension to address up to 32K words of memory and to operate the time sharing capabilities of the extended PDP-8. For information about memory field addressing with the KM8-E, see here.

The time sharing option of the KM8-E can be enabled with a jumper on the board. When this jumper is in place, loading of the UF flip flop from the UBB flip flop is inhibited. When the jumper is removed, loading of UF is enabled. With the PDP-8/E Simulator, this jumper is emulated by a checkbox in the PDP-8/E CPU preferences panel.

Mnemonic Symbol | Octal Code | Description
--- | --- | ---
CDF x0 | 662x1 | Change to data field x (x=0,…,7). The data field register DF is loaded with the selected field number x. All subsequent memory requests for operands are automatically switched to that memory field until the field number is changed by a new CDF command or an interrupt occurs.

CIF x0

62x2

Prepare to change to instruction field x (x=0,…,7). The instruction field buffer IB is loaded with the selected field number x, and the interrupt inhibit flag is set. The next JMP or JMS insruction causes the value of IB to be loaded into IF and the inhibit flag to be cleared. This enables a program to continue at a defined location on the new instruction field and disables interrupts while the new field setting is pending.

CDI x0 | 62x3 | Microprogrammed combination of CDF x0 and CIF x0.
CINT | 6204 | Clear the user mode I/O flag. The user mode I/O flag is set when the CPU executes a privileged instruction (IOT or HLT) when running in user mode (UF=1). Then an interrupt will occur to enable the operating system to handle this exception and to clear the flag with CINT.
RDF | 6214 | Read data field DF into AC(6–8) (logical OR of IF with AC(6–8)). The other bits of AC are not affected.
RIF | 6224 | Same as RDF except that the instruction field IF is read.
RIB | 6234 | Read interrupt buffer SF (save field) into AC(5–11) (logical OR of SF with AC(5–11)). The other bits of AC are not affected.
RMF | 6244 | Restore memory fields to exit from an interrupt service routine. This instruction loads UB from SF(0), IB from SF(1–3) and DF from SF(4–6).
SINT | 6254 | Skip the next instruction if the user mode I/O flag is set. Usefull for checking if an interrupt was caused by the execution of a privileged instruction in user mode.
CUF | 6264 | Clear user flag. This instruction clears the UB flip flop.
SUF | 6274 | Set user flag. This instruction sets the UB flip flop and the interrupt inhibit flag. The next JMP or JMS instruction loads UB into UF and clears the inhibit flag and so switches the CPU to user mode operation.