Source code for the M‐1 microcode - retrotruestory/M1DEV GitHub Wiki

V2.3 16-Bit Offsets, New PT, ENTER fix
                                                                                                                                                                                                                                                                                                                                                                                                                                           
System Microcode

   This page is actually the source code for the M-1 microcode to be used in the microcode-level simulator, as well as the actual bits to be burned into the proms.  It is processed by extracting the text and processing with cpp and a Perl script (see the Software page for more details).  The created files are:

   bullet mcode.h - Description of the fields within the microinstruction word.
   bullet mcode.c - An initialized array representing the microcode image.
   bullet mcdefs.h - #defines for microcode fields.
   bullet prombits.h - The initialization declaration for the 512 56-bit microinstruction words.
   bullet prom0.hex .. prom4.hex - Hex images of the slices of the microcode store to be fed into the PROM programmer.
   bullet opcodes.h - Opcode strings.

//=====================================================
// BEGIN mcode.h
/* Define for micro instruction word.  Assume I'll be using 512x8 bipolar
 * PROMs.  This version is quite a bit more compact than previous ones,
 * but at the cost of having addition field decoding logic.  Initial plan
 * is to send these signals across the backplane and do decoding on the
 * appropriate card.
 *
 * Note that the encoding here is getting pretty ugly.  I'm trying hard to
 * keep the microcode store down to 5 PROMS - 16 bits for enable signals,
 * 16 bits for latch signals and 8 bits for the next field.
 */

typedef struct {
        unsigned next:8;        // Next micro-op to exec. 0x00 means
                                // use output of priority encoder, 0xff
                                // means use IR[0..7].  Also a significant
                                // bit of !(IR[0..7]==0xff) to give the full
                                // 9-bit microcode address.
        unsigned latch:4;       // Register latch signal. Value:
                                // 0x0 : none
                                // 0x1 : MSW (flag nibble only, from Z)
                                // 0x2 : C
                                // 0x3 : PC
                                // 0x4 : DP
                                // 0x5 : SP
                                // 0x6 : A
                                // 0x7 : B
                                // 0x8 : MDR (from Z)
                                // 0x9 : PTB
                                // 0xa : [A low placeholder]
                                // 0xb : [A high placeholder]
                                // 0xc : [B low placeholder]
                                // 0xd : [C low placeholder]
                                // 0xe : [SSP placeholder]
                                // 0xf : IR_REG (IR[5..7])
        unsigned lmar:1;        // Latch MAR
        unsigned lmdrlo:1;      // Latch MDR(lo) from dbus
        unsigned lmdrhi:1;      // Latch MDR(hi) from dbus
        unsigned emdrlo:1;      // Drive dbus with MDR(lo)
        unsigned emdrhi:1;      // Drive dbus with MDR(hi)
        unsigned priv:1;        // Priviliged instruction
        unsigned lmode:1;       // Latch (M)ode bit in MSW
        unsigned lpaging:1;     // Latch (P)aging enable bit in MSW
        unsigned misc:4;        // Controls signals which never occur at the
                                // same time:
                                // 0x0 : none
                                // 0x1 :
                                // 0x2 : halt
                                // 0x3 :
                                // 0x4 : trap on overflow
                                // 0x5 : latch PTE
                                // 0x6 : set flags (from alu op)
                                // 0x7 : init_inst (clear MDR, PC->TPC, latch IR)
                                // 0x8 : right shift alu output
                                // 0x9 : DMA acknowledge
                                // 0xa : latch MSW[ie] (Interrupt Enable)
                                // 0xb : do branch
                                // 0xc : latch MSW[in_trap]
                                // 0xd : commit state
                                // 0xe :
                                // 0xf :
        unsigned e_l:4;         // Enable L bus
                                // 0x0 : MAR
                                // 0x1 : MSW
                                // 0x2 : C
                                // 0x3 : PC
                                // 0x4 : DP
                                // 0x5 : SP
                                // 0x6 : A
                                // 0x7 : B
                                // 0x8 : MDR
                                // 0x9 : PTB
                                // 0xa : SSP
                                // 0xb : TPC
                                // 0xc :
                                // 0xd :
                                // 0xe :
                                // 0xf : IR_BASE (4+IR[6..7])
        unsigned e_r:2;         // Enable R bus
                                // 0x0 : MDR
                                // 0x1 : Immediate
                                // 0x2 : Fault code/encoder
                                // 0x3 :
        unsigned immval:2;      // Immediate value
                                // 0x0 : 0
                                // 0x1 : 1
                                // 0x2 : -2
                                // 0x3 : -1
        unsigned aluop_size:1;  // 0x0 -> 16 bits, 0x1 -> 8 bits
        unsigned aluop:2;       // Which alu operation to perform
                                // 0x0 : IR[1..3]
                                // 0x1 : AND
                                // 0x2 : SUB
                                // 0x3 : ADD
        unsigned carry:1;       // 0x0 -> 0, 0x1 -> MSW[c]
        unsigned l_size:1;      // 0x0 -> latch byte, 0x1 -> latch word
        unsigned br_sense:1;    // 0x0 -> don't negate, 0x1 -> negate
                                // Non-negated branch conditions are:
                                //      0x0 : eq
                                //      0x1 : eq
                                //      0x2 : lt
                                //      0x3 : le
                                //      0x4 : ltu
                                //      0x5 : leu
                                //      0x6 : eq
                                //      0x7 : ne
        unsigned user_ptb:1;    // User page table base override
        unsigned code_ptb:1;    // 0 to select data region of PTB, 1 for code
} mcode_rec_t;
extern mcode_rec_t mcode_store[512];
// END mcode.h
//=====================================================
// BEGIN mcode.c
//
#include "mcode.h"
mcode_rec_t mcode_store[512] = {
#include "prombits.h"
};
// END mcode.c
//=====================================================
// PREPROCESS prombits.h
// BEGIN mcdefs.h
// Register defines for LATCH() and EL()
#define R_MSW   1
#define R_C     2
#define R_PC    3
#define R_DP    4
#define R_SP    5
#define R_A     6
#define R_B     7
#define R_MDR   8
#define R_PTB   9
#define R_SSP   10
// Register defines for LATCH()-only
#define R_NONE  0
#define R_IR_REG        15
// Register defines for EL()-only
#define R_MAR   0
#define R_TPC   11
#define R_FCODE 12
#define R_IR_BASE       15
// Register defines for ER()
#define ER_MDR  0
#define ER_IMM  1
#define ER_FAULT        2
// Defines for IMMVAL()
#define IMM_0   0
#define IMM_1   1
#define IMM_NEG1        3
#define IMM_NEG2        2
// Defines for MISC()
#define M_NONE  0
#define M_SYSCALL 1
#define M_HALT  2
#define M_BKPT 3
#define M_TRAPO 4
#define M_LPTE  5
#define M_SET_FLAGS     6
#define M_INIT_INST     7
#define M_RSHIFT        8
#define M_DMA_ACK       9
#define M_LEI   10
#define M_DO_BRANCH     11
#define M_CLR_TRAP      12
#define M_COMMIT 13
// Defines for ALUOP(op,size,carry)
#define OP_IR13 0
#define OP_AND  1
#define OP_SUB  2
#define OP_ADD  3
#define WORD    0
#define BYTE    1
#define LWORD   1
#define LBYTE   0
#define NO_CARRY        0
#define CARRY_IN        1
// Defines for CBR()
#define B_NORMAL        0
#define B_NEGATED       1
// END mcdefs.h
#define NEXT_POS         0
#define LATCH_POS        1
#define LMAR_POS         2
#define LMDRLO_POS       3
#define LMDRHI_POS       4
#define EMDRLO_POS       5
#define EMDRHI_POS       6
#define PRIV_POS         7
#define LMODE_POS        8
#define LPAGING_POS      9
#define MISC_POS         10
#define E_L_POS          11
#define E_R_POS          12
#define IMMVAL_POS       13
#define ALUOP_SIZE_POS   14
#define ALUOP_POS        15
#define CARRY_POS        16
#define L_SIZE_POS       17
#define BR_SENSE_POS     18
#define USER_PTB_POS     19
#define CODE_PTB_POS     20
#define NEXT(VAL)       INIT(NEXT_POS,VAL)
#define LATCH(VAL)      INIT(LATCH_POS,VAL)
#define LMAR(VAL)       INIT(LMAR_POS,VAL)
#define LMDRLO(VAL)     INIT(LMDRLO_POS,VAL)
#define LMDRHI(VAL)     INIT(LMDRHI_POS,VAL)
#define EMDRLO(VAL)     INIT(EMDRLO_POS,VAL)
#define EMDRHI(VAL)     INIT(EMDRHI_POS,VAL)
#define PRIV(VAL)       INIT(PRIV_POS,VAL)
#define LMODE(VAL)      INIT(LMODE_POS,VAL)
#define LPAGING(VAL)    INIT(LPAGING_POS,VAL)
#define MISC(VAL)       INIT(MISC_POS,VAL)
#define E_L(VAL)        INIT(E_L_POS,VAL)
#define E_R(VAL)        INIT(E_R_POS,VAL)
#define IMMVAL(VAL)     INIT(IMMVAL_POS,VAL)
#define ALUOP_SIZE(VAL) INIT(ALUOP_SIZE_POS,VAL)
#define ALUOP(VAL)      INIT(ALUOP_POS,VAL)
#define CARRY(VAL)      INIT(CARRY_POS,VAL)
#define L_SIZE(VAL)     INIT(L_SIZE_POS,VAL)
#define BR_SENSE(VAL)   INIT(BR_SENSE_POS,VAL)
#define USER_PTB(VAL)   INIT(USER_PTB_POS,VAL)
#define CODE_PTB(VAL)   INIT(CODE_PTB_POS,VAL)
#define CODE_SPACE 1
#define DATA_SPACE 0
#define PTB_OVERRIDE 1
#define PTB_NORMAL 0
#define SET_ADR(IS_CODE,IS_USER) LMAR(1),CODE_PTB(IS_CODE),USER_PTB(IS_USER)
#define CODE SET_ADR(CODE_SPACE,PTB_NORMAL)
#define DATA SET_ADR(DATA_SPACE,PTB_NORMAL)
#define CBR(SENSE,TGT)  MISC(M_DO_BRANCH),BR_SENSE(SENSE),NEXT(TGT)
#define L(REG,SIZE)     LATCH(REG),L_SIZE(SIZE)
#define USE_IR  0xff
#define READLO LMDRLO(1)
#define READHI LMDRHI(1)
#define READEXT LMDRLO(1),LMDRHI(1)
#define WRITELO EMDRLO(1)
#define WRITEHI EMDRHI(1)
#define INC_TO_Z(REG) E_L(REG),E_R(ER_IMM),IMMVAL(IMM_1),ALU(OP_ADD,WORD,NO_CARRY)
#define INC2_TO_Z(REG) E_L(REG),E_R(ER_IMM),IMMVAL(IMM_NEG2),ALU(OP_SUB,WORD,NO_CARRY)
#define DEC_TO_Z(REG) E_L(REG),E_R(ER_IMM),IMMVAL(IMM_NEG1),ALU(OP_ADD,WORD,NO_CARRY)
#define ZERO_TO_Z E_L(R_MDR),E_R(ER_IMM),IMMVAL(IMM_0),ALU(OP_AND,WORD,NO_CARRY)
#define NEG1_TO_Z E_L(R_MDR),E_R(ER_IMM),IMMVAL(IMM_NEG1),ALU(OP_ADD,WORD,NO_CARRY)
#define TO_Z(REG) E_L(REG),E_R(ER_IMM),IMMVAL(IMM_NEG1),ALU(OP_AND,WORD,NO_CARRY)
#define TO_Z8(REG) E_L(REG),E_R(ER_IMM),IMMVAL(IMM_NEG1),ALU(OP_AND,BYTE,NO_CARRY)
#define LDHI READHI,INC_TO_Z(R_MAR),DATA
#define LDLO READLO,TO_Z(R_PC),CODE
#define STHI WRITEHI,INC_TO_Z(R_MAR),DATA
#define STLO WRITELO,TO_Z(R_PC),CODE
#define LDIMMHI READHI,L(R_PC,LWORD),INC_TO_Z(R_PC),CODE
#define LDIMMLO READLO,L(R_PC,LWORD),INC_TO_Z(R_PC),CODE
#define LDIMMEXT READEXT,L(R_PC,LWORD),INC_TO_Z(R_PC),CODE
#define GEN_ADDR(BASE) E_L(BASE),E_R(ER_MDR),ALU(OP_ADD,WORD,NO_CARRY)
#define COMPARE_0(REG) E_L(REG),E_R(ER_IMM),IMMVAL(IMM_0),ALU(OP_SUB,WORD,NO_CARRY)
#define COMPARE8_0(REG) E_L(REG),E_R(ER_IMM),IMMVAL(IMM_0),ALU(OP_SUB,BYTE,NO_CARRY)
#define ALU(OP,SZ,CRY) ALUOP(OP),ALUOP_SIZE(SZ),CARRY(CRY)
#define FETCH_OP READLO,MISC(M_INIT_INST),INC_TO_Z(R_MAR),L(R_PC,LWORD),CODE,NEXT(UNUSABLE)
#define PUSHLO WRITELO,DEC_TO_Z(R_MAR),DATA
#define PUSHHI WRITEHI,DEC_TO_Z(R_MAR),DATA
#define POPLO READLO,INC_TO_Z(R_MAR),DATA
#define POPHI READHI,INC_TO_Z(R_MAR),DATA
#define TO_MDR(REG) TO_Z(REG),L(R_MDR,LWORD)
#define FROM_MDR(REG) TO_Z(R_MDR),L(REG,LWORD)



  Bottom half of PROM -  (starting point of each instruction, using opcode as direct index)

   0x00 halt                          ; MISC(M_HALT),DEC_TO_Z(R_PC),L(R_PC,LWORD),CODE,NEXT(Fetch)
   0x01 ld.8 A,#u16_u8_10(SP)         ; LDIMMHI,NEXT(Lda8_16)
   0x02 push C                        ; TO_Z(R_C),L(R_MDR,LWORD),NEXT(Push16)
   0x03 push PC                       ; TO_Z(R_TPC),L(R_MDR,LWORD),NEXT(Push16)
   0x04 push DP                       ; TO_Z(R_DP),L(R_MDR,LWORD),NEXT(Push16)
   0x05 ld.8 B,#u16_u8_10(SP)         ; LDIMMHI,NEXT(Ldb8_16)
   0x06 push A                        ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(Push16)
   0x07 push B                        ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Push16)
   0x08 br.ne #d16                    ; LDIMMHI,NEXT(BrNegated)
   0x09 pop MSW                       ; TO_Z(R_SP),DATA,NEXT(Pop16)
   0x0a pop C                         ; TO_Z(R_SP),DATA,NEXT(Pop16)
   0x0b pop PC                        ; TO_Z(R_SP),DATA,NEXT(Pop16)
   0x0c pop DP                        ; TO_Z(R_SP),DATA,NEXT(Pop16)
   0x0d pop SP                        ; TO_Z(R_SP),DATA,NEXT(Pop16)
   0x0e pop A                         ; TO_Z(R_SP),DATA,NEXT(Pop16)
   0x0f pop B                         ; TO_Z(R_SP),DATA,NEXT(Pop16)
   0x10 ld.8 A,#u16(DP)               ; LDIMMHI,NEXT(Lda8_16)
   0x11 ld.8 A,#u8(SP)                ; LDIMMLO,NEXT(Lda8_8)
   0x12 ld.8 A,#u16(A)                ; LDIMMHI,NEXT(Lda8_16)
   0x13 ld.8 A,#u16(B)                ; LDIMMHI,NEXT(Lda8_16)
   0x14 ld.8 B,#u16(DP)               ; LDIMMHI,NEXT(Ldb8_16)
   0x15 ld.8 B,#u8(SP)                ; LDIMMLO,NEXT(Ldb8_8)
   0x16 ld.8 B,#u16(A)                ; LDIMMHI,NEXT(Ldb8_16)
   0x17 ld.8 B,#u16(B)                ; LDIMMHI,NEXT(Ldb8_16)
   0x18 ld.16 A,#u16(DP)              ; LDIMMHI,NEXT(Lda16_16)
   0x19 ld.16 A,#u16_u8_68(SP)        ; LDIMMHI,NEXT(Lda16_16)
   0x1a ld.16 A,#u16(A)               ; LDIMMHI,NEXT(Lda16_16)
   0x1b ld.16 A,#u16(B)               ; LDIMMHI,NEXT(Lda16_16)
   0x1c ld.16 B,#u16(DP)              ; LDIMMHI,NEXT(Ldb16_16)
   0x1d ld.16 B,#u16_u8_68(SP)        ; LDIMMHI,NEXT(Ldb16_16)
   0x1e ld.16 B,#u16(A)               ; LDIMMHI,NEXT(Ldb16_16)
   0x1f ld.16 B,#u16(B)               ; LDIMMHI,NEXT(Ldb16_16)
   0x20 sub.8 A,#u16(DP)              ; LDIMMHI,NEXT(Aluop8_indir16)
   0x21 sub.8 A,#u16(SP)              ; LDIMMHI,NEXT(Aluop8_indir16)
   0x22 push MSW                      ; TO_Z(R_MSW),L(R_MDR,LWORD),NEXT(Push16)
   0x23 sub.8 A,#u16(B)               ; LDIMMHI,NEXT(Aluop8_indir16)
   0x24 sub.8 A,#i8_1                 ; LDIMMLO,NEXT(Aluop8)
   0x25 sub.16 (--A),(--B)            ; DEC_TO_Z(R_A),DATA,NEXT(Mop16)
   0x26 push SP                       ; TO_Z(R_SP),L(R_MDR,LWORD),NEXT(Push16)
   0x27 sub.8 A,B                     ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Aluop8)
   0x28 sub.16 A,#u16(DP)             ; LDIMMHI,NEXT(Aluop16_indir16)
   0x29 sub.16 A,#u16(SP)             ; LDIMMHI,NEXT(Aluop16_indir16)
   0x2a sbc.16 (--A),(--B)            ; DEC_TO_Z(R_A),DATA,NEXT(Mop16Carry)
   0x2b sub.16 A,#u16(B)              ; LDIMMHI,NEXT(Aluop16_indir16)
   0x2c sub.16 A,#i16_exti8           ; LDIMMHI,NEXT(Aluop16_16)
   0x2d sub.16 A,#exti8               ; LDIMMEXT,NEXT(Aluop16)
   0x2e wcpte A,(B)                   ; PRIV(1),TO_Z(R_B),SET_ADR(CODE_SPACE,PTB_OVERRIDE),NEXT(Wcpte)
   0x2f sub.16 A,B                    ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Aluop16)
   0x30 add.8 A,#u16(DP)              ; LDIMMHI,NEXT(Aluop8_indir16)
   0x31 add.8 A,#u16(SP)              ; LDIMMHI,NEXT(Aluop8_indir16)
   0x32 br A                          ; TO_Z(R_A),L(R_PC,LWORD),CODE,NEXT(Fetch)
   0x33 add.8 A,#u16(B)               ; LDIMMHI,NEXT(Aluop8_indir16)
   0x34 add.8 A,#i8_1                 ; LDIMMLO,NEXT(Aluop8)
   0x35 add.16 (--A),(--B)            ; DEC_TO_Z(R_A),DATA,NEXT(Mop16)
   0x36 add.8 A,A                     ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(Aluop8)
   0x37 add.8 A,B                     ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Aluop8)
   0x38 add.16 A,#u16(DP)             ; LDIMMHI,NEXT(Aluop16_indir16)
   0x39 add.16 A,#u16(SP)             ; LDIMMHI,NEXT(Aluop16_indir16)
   0x3a syscall #sys_num8             ; LDIMMLO,NEXT(Syscall)
   0x3b add.16 A,#u16(B)              ; LDIMMHI,NEXT(Aluop16_indir16)
   0x3c add.16 A,#i16_exti8           ; LDIMMHI,NEXT(Aluop16_16)
   0x3d add.16 A,#exti8               ; LDIMMEXT,NEXT(Aluop16)
   0x3e add.16 A,A                    ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(Aluop16)
   0x3f add.16 A,B                    ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Aluop16)
   0x40 cmp.8 A,#u16(DP)              ; LDIMMHI,NEXT(Cmp8_indir16)
   0x41 cmp.8 A,#u16(SP)              ; LDIMMHI,NEXT(Cmp8_indir16)
   0x42 copy C,B                      ; TO_Z(R_B),L(R_C,LWORD),NEXT(Fetch)
   0x43 cmp.8 A,#u16(B)               ; LDIMMHI,NEXT(Cmp8_indir16)
   0x44 cmp.8 A,#i8_0                 ; LDIMMLO,NEXT(Cmp8)
   0x45 cmp.8 A,#0                    ; E_L(R_A),E_R(ER_MDR),ALU(OP_SUB,BYTE,NO_CARRY),MISC(M_SET_FLAGS),NEXT(Fetch)
   0x46 xor.16 A,A                    ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(Aluop16)
   0x47 cmp.8 A,B                     ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Cmp8)
   0x48 cmp.16 A,#u16(DP)             ; LDIMMHI,NEXT(Cmp16_indir16)
   0x49 cmp.16 A,#u16(SP)             ; LDIMMHI,NEXT(Cmp16_indir16)
   0x4a sh0add B,A,B                  ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(LeaB1)
   0x4b cmp.16 A,#u16(B)              ; LDIMMHI,NEXT(Cmp16_indir16)
   0x4c cmp.16 A,#i16_exti8_0         ; LDIMMHI,NEXT(Cmp16_16)
   0x4d cmp.16 A,#exti8_0             ; LDIMMEXT,NEXT(Cmp16)
   0x4e cmp.16 A,#0                   ; E_L(R_A),E_R(ER_MDR),ALU(OP_SUB,WORD,NO_CARRY),MISC(M_SET_FLAGS),NEXT(Fetch)
   0x4f cmp.16 A,B                    ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Cmp16)
   0x50 or.8 A,#u16(DP)               ; LDIMMHI,NEXT(Aluop8_indir16)
   0x51 or.8 A,#u16(SP)               ; LDIMMHI,NEXT(Aluop8_indir16)
   0x52 sex A                         ; TO_Z8(R_A),L(R_A,LWORD),NEXT(Fetch)
   0x53 or.8 A,#u16(B)                ; LDIMMHI,NEXT(Aluop8_indir16)
   0x54 or.8 A,#i8_1                  ; LDIMMLO,NEXT(Aluop8)
   0x55 or.16 (--A),(--B)             ; DEC_TO_Z(R_A),DATA,NEXT(Mop16)
   0x56 br.leu #d16                   ; LDIMMHI,NEXT(BrNormal)
   0x57 or.8 A,B                      ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Aluop8)
   0x58 or.16 A,#u16(DP)              ; LDIMMHI,NEXT(Aluop16_indir16)
   0x59 or.16 A,#u16(SP)              ; LDIMMHI,NEXT(Aluop16_indir16)
   0x5a sh1add A,B,A                  ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(LeaABA2)
   0x5b or.16 A,#u16(B)               ; LDIMMHI,NEXT(Aluop16_indir16)
   0x5c or.16 A,#i16_exti8            ; LDIMMHI,NEXT(Aluop16_16)
   0x5d or.16 A,#exti8                ; LDIMMEXT,NEXT(Aluop16)
   0x5e br.gtu #d16                   ; LDIMMHI,NEXT(BrNegated)
   0x5f or.16 A,B                     ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Aluop16)
   0x60 and.8 A,#u16(DP)              ; LDIMMHI,NEXT(Aluop8_indir16)
   0x61 and.8 A,#u16(SP)              ; LDIMMHI,NEXT(Aluop8_indir16)
   0x62 sh1add B,A,B                  ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(LeaBAB2)
   0x63 and.8 A,#u16(B)               ; LDIMMHI,NEXT(Aluop8_indir16)
   0x64 and.8 A,#i8_1                 ; LDIMMLO,NEXT(Aluop8)
   0x65 and.16 (--A),(--B)            ; DEC_TO_Z(R_A),DATA,NEXT(Mop16)
   0x66 nop                           ; NEXT(Fetch)
   0x67 and.8 A,B                     ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Aluop8)
   0x68 and.16 A,#u16(DP)             ; LDIMMHI,NEXT(Aluop16_indir16)
   0x69 and.16 A,#u16(SP)             ; LDIMMHI,NEXT(Aluop16_indir16)
   0x6a sh1add B,B,A                  ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(LeaBBA2)
   0x6b and.16 A,#u16(B)              ; LDIMMHI,NEXT(Aluop16_indir16)
   0x6c and.16 A,#i16_exti8           ; LDIMMHI,NEXT(Aluop16_16)
   0x6d and.16 A,#exti8               ; LDIMMEXT,NEXT(Aluop16)
   0x6e strcopy                       ; TO_Z(R_B),DATA,NEXT(Strcopy)
   0x6f and.16 A,B                    ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Aluop16)
   0x70 lea A,#u16(DP)                ; LDIMMHI,NEXT(LdaA_16)
   0x71 lea A,#u16(SP)                ; LDIMMHI,NEXT(LdaA_16)
   0x72 lea A,#u16(A)                 ; LDIMMHI,NEXT(LdaA_16)
   0x73 lea A,#u16(B)                 ; LDIMMHI,NEXT(LdaA_16)
   0x74 lea B,#u16(DP)                ; LDIMMHI,NEXT(LdaB_16)
   0x75 lea B,#u16(SP)                ; LDIMMHI,NEXT(LdaB_16)
   0x76 lea B,#u16(A)                 ; LDIMMHI,NEXT(LdaB_16)
   0x77 lea B,#u16(B)                 ; LDIMMHI,NEXT(LdaB_16)
   0x78 ld.8 A,#u8                    ; LDIMMLO,NEXT(LdiA8)
   0x79 ld.8 B,#u8                    ; LDIMMLO,NEXT(LdiB8)
   0x7a ld.16 A,#exti8_u16            ; LDIMMEXT,NEXT(LdiA16)
   0x7b ld.16 B,#exti8_u16            ; LDIMMEXT,NEXT(LdiB16)
   0x7c ld.16 A,#u16                  ; LDIMMHI,NEXT(LdiA16_lo)
   0x7d ld.16 B,#u16                  ; LDIMMHI,NEXT(LdiB16_lo)
   0x7e adc.16 A,A                    ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(Adc16)
   0x7f adc.16 A,B                    ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Adc16)
   0x80 call #d16                     ; LDIMMHI,NEXT(CallImm)
   0x81 ld.16 A,#u8(SP)               ; LDIMMLO,NEXT(Lda16_8)
   0x82 call A                        ; TO_Z(R_PC),L(R_MDR,LWORD),NEXT(CallA)
   0x83 br #d16_d8                    ; LDIMMHI,NEXT(RelBrLo)
   0x84 sbr #d8                       ; LDIMMEXT,NEXT(RelBr)
   0x85 ld.16 B,#u8(SP)               ; LDIMMLO,NEXT(Ldb16_8)
   0x86 lea A,#u8(SP)                 ; LDIMMLO,NEXT(LeaShort)
   0x87 lea B,#u8(SP)                 ; LDIMMLO,NEXT(LeaShort)
   0x88 copy A,MSW                    ; TO_Z(R_MSW),L(R_A,LWORD),NEXT(Fetch)
   0x89 br.eq #d16                    ; LDIMMHI,NEXT(BrNormal)
   0x8a reti                          ; PRIV(1),NEXT(Reti)
   0x8b trapo                         ; MISC(M_TRAPO),NEXT(Fetch)
   0x8c bset.8 A,#mask8,#d8           ; LDIMMLO,NEXT(Bset8)
   0x8d bclr.8 A,#mask8,#d8           ; LDIMMLO,NEXT(Bclr8)
   0x8e bset.16 A,#mask16,#d8         ; LDIMMHI,NEXT(Bset16)
   0x8f bclr.16 A,#mask16,#d8         ; LDIMMHI,NEXT(Bclr16)
   0x90 cmpb.eq.8 A,#u16(DP),#d8      ; LDIMMHI,NEXT(Cmpb8_indir16)
   0x91 cmpb.eq.8 A,#u16(SP),#d8      ; LDIMMHI,NEXT(Cmpb8_indir16)
   0x92 copy B,A                      ; TO_Z(R_A),L(R_B,LWORD),NEXT(Fetch)
   0x93 cmpb.eq.8 A,#u16(B),#d8       ; LDIMMHI,NEXT(Cmpb8_indir16)
   0x94 cmpb.eq.8 A,#i8_0,#d8         ; LDIMMLO,NEXT(Cmpb8)
   0x95 cmpb.eq.8 A,#0,#d8            ; TO_Z(R_MDR),L(R_MDR,LWORD),NEXT(Cmpb8)
   0x96 copy C,A                      ; TO_Z(R_A),L(R_C,LWORD),NEXT(Fetch)
   0x97 cmpb.eq.8 A,B,#d8             ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Cmpb8)
   0x98 cmpb.eq.16 A,#u16(DP),#d8     ; LDIMMHI,NEXT(Cmpb16_indir16)
   0x99 cmpb.eq.16 A,#u16(SP),#d8     ; LDIMMHI,NEXT(Cmpb16_indir16)
   0x9a copy A,B                      ; TO_Z(R_B),L(R_A,LWORD),NEXT(Fetch)
   0x9b cmpb.eq.16 A,#u16(B),#d8      ; LDIMMHI,NEXT(Cmpb16_indir16)
   0x9c cmpb.eq.16 A,#i16_exti8_0,#d8 ; LDIMMHI,NEXT(Cmpb16_16)
   0x9d cmpb.eq.16 A,#exti8_0,#d8     ; LDIMMEXT,NEXT(Cmpb16)
   0x9e cmpb.eq.16 A,#0,#d8           ; TO_Z(R_MDR),L(R_MDR,LWORD),NEXT(Cmpb16)
   0x9f cmpb.eq.16 A,B,#d8            ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Cmpb16)
   0xa0 cmpb.lt.8 A,#u16(DP),#d8      ; LDIMMHI,NEXT(Cmpb8_indir16)
   0xa1 cmpb.lt.8 A,#u16(SP),#d8      ; LDIMMHI,NEXT(Cmpb8_indir16)
   0xa2 sh0add A,A,B                  ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(LeaA1)
   0xa3 cmpb.lt.8 A,#u16(B),#d8       ; LDIMMHI,NEXT(Cmpb8_indir16)
   0xa4 cmpb.lt.8 A,#i8_0,#d8         ; LDIMMLO,NEXT(Cmpb8)
   0xa5 cmpb.lt.8 A,#0,#d8            ; TO_Z(R_MDR),L(R_MDR,LWORD),NEXT(Cmpb8)
   0xa6 br.lt #d16                    ; LDIMMHI,NEXT(BrNormal)
   0xa7 cmpb.lt.8 A,B,#d8             ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Cmpb8)
   0xa8 cmpb.lt.16 A,#u16(DP),#d8     ; LDIMMHI,NEXT(Cmpb16_indir16)
   0xa9 cmpb.lt.16 A,#u16(SP),#d8     ; LDIMMHI,NEXT(Cmpb16_indir16)
   0xaa sh1add A,A,B                  ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(LeaAAB2)
   0xab cmpb.lt.16 A,#u16(B),#d8      ; LDIMMHI,NEXT(Cmpb16_indir16)
   0xac cmpb.lt.16 A,#i16_exti8,#d8   ; LDIMMHI,NEXT(Cmpb16_16)
   0xad cmpb.lt.16 A,#exti8,#d8       ; LDIMMEXT,NEXT(Cmpb16)
   0xae br.ge #d16                    ; LDIMMHI,NEXT(BrNegated)
   0xaf cmpb.lt.16 A,B,#d8            ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Cmpb16)
   0xb0 cmpb.le.8 A,#u16(DP),#d8      ; LDIMMHI,NEXT(Cmpb8_indir16)
   0xb1 cmpb.le.8 A,#u16(SP),#d8      ; LDIMMHI,NEXT(Cmpb8_indir16)
   0xb2 sex B                         ; TO_Z8(R_B),L(R_B,LWORD),NEXT(Fetch)
   0xb3 cmpb.le.8 A,#u16(B),#d8       ; LDIMMHI,NEXT(Cmpb8_indir16)
   0xb4 cmpb.le.8 A,#i8,#d8           ; LDIMMLO,NEXT(Cmpb8)
   0xb5 br.le #d16                    ; LDIMMHI,NEXT(BrNormal)
   0xb6 copy DP,A                     ; TO_Z(R_A),L(R_DP,LWORD),NEXT(Fetch)
   0xb7 cmpb.le.8 A,B,#d8             ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Cmpb8)
   0xb8 cmpb.le.16 A,#u16(DP),#d8     ; LDIMMHI,NEXT(Cmpb16_indir16)
   0xb9 cmpb.le.16 A,#u16(SP),#d8     ; LDIMMHI,NEXT(Cmpb16_indir16)
   0xba adc.16 (--A),(--B)            ; DEC_TO_Z(R_A),DATA,NEXT(Mop16Carry)
   0xbb cmpb.le.16 A,#u16(B),#d8      ; LDIMMHI,NEXT(Cmpb16_indir16)
   0xbc cmpb.le.16 A,#i16_exti8,#d8   ; LDIMMHI,NEXT(Cmpb16_16)
   0xbd cmpb.le.16 A,#exti8,#d8       ; LDIMMEXT,NEXT(Cmpb16)
   0xbe br.gt #d16                    ; LDIMMHI,NEXT(BrNegated)
   0xbf cmpb.le.16 A,B,#d8            ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Cmpb16)
   0xc0 br.geu #d16                   ; LDIMMHI,NEXT(BrNegated)
   0xc1 st.8 #u16_u8_10(SP),A         ; LDIMMHI,NEXT(Sta8_16)
   0xc2 shl.16 A                      ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(Shla16)
   0xc3 shr.16 A                      ; TO_Z(R_A),MISC(M_RSHIFT),L(R_A,LWORD),NEXT(Fetch)
   0xc4 shl.16 B                      ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Shlb16)
   0xc5 st.8 #u16_u8_10(SP),B         ; LDIMMHI,NEXT(Stb8_16)
   0xc6 shr.16 B                      ; TO_Z(R_B),MISC(M_RSHIFT),L(R_B,LWORD),NEXT(Fetch)
   0xc7 xor.16 A,B                    ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Aluop16)
   0xc8 copy PTB,A                    ; PRIV(1),TO_Z(R_A),L(R_PTB,LWORD),NEXT(Fetch)
   0xc9 st.16 #u16_u8_10(SP),A        ; LDIMMHI,NEXT(Sta16_16)
   0xca copy MSW,A                    ; PRIV(1),NEXT(CopyMSWA)
   0xcb copy SP,A                     ; TO_Z(R_A),L(R_SP,LWORD),NEXT(Fetch)
   0xcc xor.16 (--A),(--B)            ; DEC_TO_Z(R_A),DATA,NEXT(Mop16)
   0xcd st.16 #u16_u8_10(SP),B        ; LDIMMHI,NEXT(Stb16_16)
   0xce ld.16 C,#u16                  ; LDIMMHI,NEXT(LdiC16_lo)
   0xcf br.ltu #d16                   ; LDIMMHI,NEXT(BrNormal)
   0xd0 st.8 #u16(DP),A               ; LDIMMHI,NEXT(Sta8_16)
   0xd1 st.8 #u8(SP),A                ; LDIMMLO,NEXT(Sta8_8)
   0xd2 st.8 #u16(A),A                ; LDIMMHI,NEXT(Sta8_16)
   0xd3 st.8 #u16(B),A                ; LDIMMHI,NEXT(Sta8_16)
   0xd4 st.8 #u16(DP),B               ; LDIMMHI,NEXT(Stb8_16)
   0xd5 st.8 #u8(SP),B                ; LDIMMLO,NEXT(Stb8_8)
   0xd6 st.8 #u16(A),B                ; LDIMMHI,NEXT(Stb8_16)
   0xd7 st.8 #u16(B),B                ; LDIMMHI,NEXT(Stb8_16)
   0xd8 st.16 #u16(DP),A              ; LDIMMHI,NEXT(Sta16_16)
   0xd9 st.16 #u8(SP),A               ; LDIMMLO,NEXT(Sta16_8)
   0xda st.16 #u16(A),A               ; LDIMMHI,NEXT(Sta16_16)
   0xdb st.16 #u16(B),A               ; LDIMMHI,NEXT(Sta16_16)
   0xdc st.16 #u16(DP),B              ; LDIMMHI,NEXT(Stb16_16)
   0xdd st.16 #u8(SP),B               ; LDIMMLO,NEXT(Stb16_8)
   0xde st.16 #u16(A),B               ; LDIMMHI,NEXT(Stb16_16)
   0xdf st.16 #u16(B),B               ; LDIMMHI,NEXT(Stb16_16)
   0xe0 ldcode.8 A,(B)                ; TO_Z(R_B),CODE,NEXT(Ldcode8)
   0xe1 copy A,DP                     ; TO_Z(R_DP),L(R_A,LWORD),NEXT(Fetch)
   0xe2 ld.16 C,#exti8_u16            ; LDIMMEXT,NEXT(LdiC16)
   0xe3 memcopy4                      ; INC2_TO_Z(R_B),DATA,NEXT(Mcpy4)
   0xe4 enter #fsize16_8              ; LDIMMHI,NEXT(Enter)
   0xe5 enter #fsize8                 ; NEG1_TO_Z,LATCH(R_MDR),NEXT(Enter)
   0xe6 vshl.16 A                     ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(Vshl)
   0xe7 vshl.16 B                     ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Vshl)
   0xe8 memcopy                       ; COMPARE_0(R_C),MISC(M_SET_FLAGS),NEXT(Bcopy)
   0xe9 tosys                         ; PRIV(1),COMPARE_0(R_C),MISC(M_SET_FLAGS),NEXT(ToSys)
   0xea fromsys                       ; PRIV(1),COMPARE_0(R_C),MISC(M_SET_FLAGS),NEXT(FromSys)
   0xeb ldclr.8 A,(B)                 ; TO_Z(R_B),DATA,NEXT(LdClr)
   0xec wdpte A,(B)                   ; PRIV(1),TO_Z(R_B),SET_ADR(DATA_SPACE,PTB_OVERRIDE),NEXT(Wdpte)
   0xed sbc.16 A,B                    ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Sbc16)
   0xee vshr.16 A                     ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(Vshr)
   0xef vshr.16 B                     ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Vshr)
   0xf0 cmpb.ne.8 A,#u16(DP),#d8      ; LDIMMHI,NEXT(Cmpb8_indir16)
   0xf1 cmpb.ne.8 A,#u16(SP),#d8      ; LDIMMHI,NEXT(Cmpb8_indir16)
   0xf2 copy A,C                      ; TO_Z(R_C),L(R_A,LWORD),NEXT(Fetch)
   0xf3 cmpb.ne.8 A,#u16(B),#d8       ; LDIMMHI,NEXT(Cmpb8_indir16)
   0xf4 cmpb.ne.8 A,#i8_0,#d8         ; LDIMMLO,NEXT(Cmpb8)
   0xf5 cmpb.ne.8 A,#0,#d8            ; TO_Z(R_MDR),L(R_MDR,LWORD),NEXT(Cmpb8)
   0xf6 copy A,SP                     ; TO_Z(R_SP),L(R_A,LWORD),NEXT(Fetch)
   0xf7 cmpb.ne.8 A,B,#d8             ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Cmpb8)
   0xf8 cmpb.ne.16 A,#u16(DP),#d8     ; LDIMMHI,NEXT(Cmpb16_indir16)
   0xf9 cmpb.ne.16 A,#u16(SP),#d8     ; LDIMMHI,NEXT(Cmpb16_indir16)
   0xfa bkpt                          ; MISC(M_BKPT),NEXT(Unreachable)
   0xfb cmpb.ne.16 A,#u16(B),#d8      ; LDIMMHI,NEXT(Cmpb16_indir16)
   0xfc cmpb.ne.16 A,#i16_exti8_0,#d8 ; LDIMMHI,NEXT(Cmpb16_16)
   0xfd cmpb.ne.16 A,#exti8_0,#d8     ; LDIMMEXT,NEXT(Cmpb16)
   0xfe cmpb.ne.16 A,#0,#d8           ; TO_Z(R_MDR),L(R_MDR,LWORD),NEXT(Cmpb16)
   0xff cmpb.ne.16 A,B,#d8            ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Cmpb16)

    Top half of PROM - continuation microcode.

   0x100 Fetch           ; FETCH_OP
   0x101 IRQ5            ; TO_Z(R_MAR),MISC(M_COMMIT),NEXT(Fault)
   0x102 IRQ4            ; TO_Z(R_MAR),MISC(M_COMMIT),NEXT(Fault)
   0x103 IRQ3            ; TO_Z(R_MAR),MISC(M_COMMIT),NEXT(Fault)
   0x104 IRQ2            ; TO_Z(R_MAR),MISC(M_COMMIT),NEXT(Fault)
   0x105 IRQ1            ; TO_Z(R_MAR),MISC(M_COMMIT),NEXT(Fault)
   0x106 IRQ0            ; TO_Z(R_MAR),MISC(M_COMMIT),NEXT(Fault)
   0x107 DMA_req         ; MISC(M_DMA_ACK),NEXT(Fetch)
   0x108 Fault_syscall   ; TO_Z(R_MAR),MISC(M_COMMIT),NEXT(Fault)
   0x109                 ;
   0x10a Fault_ovflo     ; TO_Z(R_MAR),L(R_PC,LWORD),NEXT(Fault)
   0x10b Fault_priv      ; TO_Z(R_MAR),L(R_PC,LWORD),NEXT(Fault)
   0x10c Fault_bkpt      ; TO_Z(R_MAR),L(R_PC,LWORD),NEXT(Fault)
   0x10d Fault_nw        ; TO_Z(R_MAR),L(R_PC,LWORD),NEXT(Fault)
   0x10e Fault_np        ; TO_Z(R_MAR),L(R_PC,LWORD),NEXT(Fault)
   0x10f                 ;
   0x110 Aluop8_indir    ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x111                 ; LDLO,NEXT(FALLTHRU)
   0x112 Aluop8          ; E_L(R_A),E_R(ER_MDR),ALU(OP_IR13,BYTE,NO_CARRY),L(R_A,LBYTE),MISC(M_SET_FLAGS),NEXT(Fetch)
   0x113 Aluop8_indir16  ; LDIMMLO,NEXT(Aluop8_indir)
   0x114 Aluop16_indir   ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x115                 ; LDHI,NEXT(FALLTHRU)
   0x116                 ; LDLO,NEXT(FALLTHRU)
   0x117 Aluop16         ; E_L(R_A),E_R(ER_MDR),ALU(OP_IR13,WORD,NO_CARRY),L(R_A,LWORD),MISC(M_SET_FLAGS),NEXT(Fetch)
   0x118 Aluop16_indir16 ; LDIMMLO,NEXT(Aluop16_indir)
   0x119 Cmp8_indir      ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x11a                 ; LDLO,NEXT(FALLTHRU)
   0x11b Cmp8            ; E_L(R_A),E_R(ER_MDR),ALU(OP_SUB,BYTE,NO_CARRY),MISC(M_SET_FLAGS),NEXT(Fetch)
   0x11c Cmp8_indir16    ; LDIMMLO,NEXT(Cmp8_indir)
   0x11d Cmp16_indir     ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x11e                 ; LDHI,NEXT(FALLTHRU)
   0x11f                 ; LDLO,NEXT(FALLTHRU)
   0x120 Cmp16           ; E_L(R_A),E_R(ER_MDR),ALU(OP_SUB,WORD,NO_CARRY),MISC(M_SET_FLAGS),NEXT(Fetch)
   0x121 Cmp16_indir16   ; LDIMMLO,NEXT(Cmp16_indir)
   0x122 Cmpb8_indir     ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x123                 ; LDLO,NEXT(FALLTHRU)
   0x124 Cmpb8           ; E_L(R_A),E_R(ER_MDR),ALU(OP_SUB,BYTE,NO_CARRY),MISC(M_SET_FLAGS),NEXT(CheckBr)
   0x125 Cmpb8_indir16   ; LDIMMLO,NEXT(Cmpb8_indir)
   0x126 Cmpb16_indir    ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x127                 ; LDHI,NEXT(FALLTHRU)
   0x128                 ; LDLO,NEXT(FALLTHRU)
   0x129 Cmpb16          ; E_L(R_A),E_R(ER_MDR),ALU(OP_SUB,WORD,NO_CARRY),MISC(M_SET_FLAGS),NEXT(CheckBr)
   0x12a Cmpb16_indir16  ; LDIMMLO,NEXT(Cmpb16_indir)
   0x12b CheckBr         ; LDIMMEXT,CBR(B_NORMAL,TakenBr)
   0x12c TakenBr         ; E_L(R_PC),E_R(ER_MDR),ALU(OP_ADD,WORD,NO_CARRY),L(R_PC,LWORD),CODE,NEXT(Fetch)
   0x12d BrNormal        ; LDIMMLO,CBR(B_NORMAL,TakenBr)
   0x12e BrNegated       ; LDIMMLO,CBR(B_NEGATED,TakenBr)
   0x12f Bset8           ; E_L(R_A),E_R(ER_MDR),ALU(OP_AND,BYTE,NO_CARRY),MISC(M_SET_FLAGS),NEXT(CheckBrNeg)
   0x130 CheckBrNeg      ; LDIMMEXT,CBR(B_NEGATED,TakenBr)
   0x131 Bclr8           ; E_L(R_A),E_R(ER_MDR),ALU(OP_AND,BYTE,NO_CARRY),MISC(M_SET_FLAGS),NEXT(CheckBr)
   0x132 Bset16          ; LDIMMLO,NEXT(FALLTHRU)
   0x133                 ; E_L(R_A),E_R(ER_MDR),ALU(OP_AND,WORD,NO_CARRY),MISC(M_SET_FLAGS),NEXT(CheckBrNeg)
   0x134 Bclr16          ; LDIMMLO,NEXT(FALLTHRU)
   0x135                 ; E_L(R_A),E_R(ER_MDR),ALU(OP_AND,WORD,NO_CARRY),MISC(M_SET_FLAGS),NEXT(CheckBr)
   0x136 Push16          ; DEC_TO_Z(R_SP),DATA,NEXT(FALLTHRU)
   0x137                 ; WRITELO,DEC_TO_Z(R_MAR),DATA,L(R_SP,LWORD),NEXT(FALLTHRU)
   0x138 Whi             ; WRITEHI,TO_Z(R_PC),CODE,NEXT(Fetch)
   0x139 Pop16           ; LDHI,NEXT(FALLTHRU)
   0x13a                 ; READLO,INC_TO_Z(R_MAR),L(R_SP,LWORD),DATA,NEXT(FALLTHRU)
   0x13b                 ; TO_Z(R_MDR),L(R_IR_REG,LWORD),NEXT(PCtoMAR)
   0x13c Lda8_8          ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x13d                 ; LDLO,NEXT(LdiA8)
   0x13e Lda8_16         ; LDIMMLO,NEXT(Lda8_8)
   0x13f Ldb8_8          ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x140                 ; LDLO,NEXT(LdiB8)
   0x141 Ldb8_16         ; LDIMMLO,NEXT(Ldb8_8)
   0x142 Lda16_8         ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x143                 ; LDHI,NEXT(FALLTHRU)
   0x144                 ; LDLO,NEXT(LdiA16)
   0x145 Lda16_16        ; LDIMMLO,NEXT(Lda16_8)
   0x146 Ldb16_8         ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x147                 ; LDHI,NEXT(FALLTHRU)
   0x148                 ; LDLO,NEXT(LdiB16)
   0x149 Ldb16_16        ; LDIMMLO,NEXT(Ldb16_8)
   0x14a Sta8_8          ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x14b                 ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(FALLTHRU)
   0x14c StaLo           ; STLO,NEXT(Fetch)
   0x14d Sta8_16         ; LDIMMLO,NEXT(Sta8_8)
   0x14e Sta16_8         ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x14f                 ; TO_Z(R_A),L(R_MDR,LWORD),NEXT(FALLTHRU)
   0x150 Shi             ; STHI,NEXT(StaLo)
   0x151 Sta16_16        ; LDIMMLO,NEXT(Sta16_8)
   0x152 Stb8_8          ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x153                 ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(StaLo)
   0x154 Stb8_16         ; LDIMMLO,NEXT(Stb8_8)
   0x155 Stb16_8         ; GEN_ADDR(R_IR_BASE),DATA,NEXT(FALLTHRU)
   0x156                 ; TO_Z(R_B),L(R_MDR,LWORD),NEXT(Shi)
   0x157 Stb16_16        ; LDIMMLO,NEXT(Stb16_8)
   0x158 Sbc16           ; E_L(R_A),E_R(ER_MDR),ALU(OP_SUB,WORD,CARRY_IN),L(R_A,LWORD),MISC(M_SET_FLAGS),NEXT(Fetch)
   0x159 Adc16           ; E_L(R_A),E_R(ER_MDR),ALU(OP_ADD,WORD,CARRY_IN),L(R_A,LWORD),MISC(M_SET_FLAGS),NEXT(Fetch)
   0x15a LdaA_16         ; LDIMMLO,NEXT(LdaA)
   0x15b LdaA            ; GEN_ADDR(R_IR_BASE),L(R_A,LWORD),NEXT(Fetch)
   0x15c LdaB_16         ; LDIMMLO,NEXT(LdaB)
   0x15d LdaB            ; GEN_ADDR(R_IR_BASE),L(R_B,LWORD),NEXT(Fetch)
   0x15e LdiA8           ; TO_Z(R_MDR),L(R_A,LBYTE),NEXT(Fetch)
   0x15f LdiB8           ; TO_Z(R_MDR),L(R_B,LBYTE),NEXT(Fetch)
   0x160 LdiA16_lo       ; LDIMMLO,NEXT(LdiA16)
   0x161 LdiA16          ; TO_Z(R_MDR),L(R_A,LWORD),NEXT(Fetch)
   0x162 LdiB16_lo       ; LDIMMLO,NEXT(LdiB16)
   0x163 LdiB16          ; TO_Z(R_MDR),L(R_B,LWORD),NEXT(Fetch)
   0x164 LdiC16_lo       ; LDIMMLO,NEXT(LdiC16)
   0x165 LdiC16          ; TO_Z(R_MDR),L(R_C,LWORD),NEXT(Fetch)
   0x166 RelBrLo         ; LDIMMLO,NEXT(RelBr)
   0x167 RelBr           ; GEN_ADDR(R_PC),L(R_PC,LWORD),CODE,NEXT(Fetch)
   0x168 CallImm         ; LDIMMLO,NEXT(FALLTHRU)
   0x169                 ; GEN_ADDR(R_PC),L(R_PC,LWORD),NEXT(FALLTHRU)
   0x16a                 ; E_R(ER_MDR),E_L(R_PC),ALU(OP_SUB,WORD,NO_CARRY),L(R_MDR,LWORD),NEXT(Push16)
   0x16b CallA           ; DEC_TO_Z(R_SP),DATA,NEXT(FALLTHRU)
   0x16c                 ; WRITELO,DEC_TO_Z(R_MAR),DATA,L(R_SP,LWORD),NEXT(FALLTHRU)
   0x16d                 ; WRITEHI,TO_Z(R_A),L(R_PC,LWORD),CODE,NEXT(Fetch)
   0x16e LdClr           ; READLO,NEXT(FALLTHRU)
   0x16f                 ; TO_Z(R_MDR),L(R_A,LBYTE),NEXT(Whi)
   0x170 Wcpte           ; E_L(R_A),MISC(M_LPTE),NEXT(PCtoMAR)
   0x171 Enter           ; LDIMMLO,NEXT(FALLTHRU)
   0x172                 ; GEN_ADDR(R_SP),DATA,NEXT(FALLTHRU)
   0x173                 ; TO_Z(R_SP),L(R_MDR,LWORD),NEXT(FALLTHRU)
   0x174                 ; DEC_TO_Z(R_MAR),DATA,NEXT(FALLTHRU)
   0x175                 ; WRITELO,DEC_TO_Z(R_MAR),DATA,L(R_SP,LWORD),NEXT(FALLTHRU)
   0x176                 ; WRITEHI,TO_Z(R_MAR),L(R_SP,LWORD),NEXT(PCtoMAR)
   0x177 Bcopy           ; CBR(B_NEGATED,FALLTHRU)
   0x178                 ; TO_Z(R_B),DATA,NEXT(FALLTHRU)
   0x179                 ; READLO,TO_Z(R_A),DATA,NEXT(Bcopy0)
   0x17a ToSys           ; PRIV(1),CBR(B_NEGATED,FALLTHRU)
   0x17b                 ; TO_Z(R_B),SET_ADR(DATA_SPACE,PTB_OVERRIDE),NEXT(FALLTHRU)
   0x17c                 ; READLO,TO_Z(R_A),DATA,NEXT(FALLTHRU)
   0x17d Bcopy0          ; WRITELO,INC_TO_Z(R_MAR),L(R_A,LWORD),NEXT(FALLTHRU)
   0x17e Bcopy1          ; INC_TO_Z(R_B),L(R_B,LWORD),NEXT(FALLTHRU)
   0x17f Bcopy2          ; DEC_TO_Z(R_C),L(R_C,LWORD),NEXT(FALLTHRU)
   0x180 BackupPC        ; DEC_TO_Z(R_PC),L(R_PC,LWORD),CODE,NEXT(Fetch)
   0x181 FromSys         ; PRIV(1),CBR(B_NEGATED,FALLTHRU)
   0x182                 ; TO_Z(R_B),DATA,NEXT(FALLTHRU)
   0x183                 ; READLO,TO_Z(R_A),SET_ADR(DATA_SPACE,PTB_OVERRIDE),NEXT(FALLTHRU)
   0x184                 ; WRITELO,INC_TO_Z(R_MAR),L(R_A,LWORD),NEXT(Bcopy1)
   0x185 Fault           ; TO_MDR(R_MSW),NEXT(FALLTHRU)
   0x186                 ; ZERO_TO_Z,MISC(M_LEI),LMODE(1),NEXT(FALLTHRU)
   0x187                 ; DEC_TO_Z(R_SSP),DATA,NEXT(FALLTHRU)
   0x188                 ; PUSHLO,NEXT(FALLTHRU)
   0x189                 ; PUSHHI,NEXT(FALLTHRU)
   0x18a                 ; TO_MDR(R_SP),NEXT(FALLTHRU)
   0x18b                 ; PUSHLO,NEXT(FALLTHRU)
   0x18c                 ; PUSHHI,NEXT(FALLTHRU)
   0x18d                 ; TO_MDR(R_TPC),NEXT(FALLTHRU)
   0x18e                 ; PUSHLO,NEXT(FALLTHRU)
   0x18f                 ; PUSHHI,NEXT(FALLTHRU)
   0x190                 ; TO_MDR(R_A),NEXT(FALLTHRU)
   0x191                 ; PUSHLO,NEXT(FALLTHRU)
   0x192                 ; PUSHHI,NEXT(FALLTHRU)
   0x193                 ; TO_MDR(R_B),NEXT(FALLTHRU)
   0x194                 ; PUSHLO,NEXT(FALLTHRU)
   0x195                 ; PUSHHI,NEXT(FALLTHRU)
   0x196                 ; TO_MDR(R_C),NEXT(FALLTHRU)
   0x197                 ; PUSHLO,NEXT(FALLTHRU)
   0x198                 ; PUSHHI,NEXT(FALLTHRU)
   0x199                 ; TO_MDR(R_DP),NEXT(FALLTHRU)
   0x19a                 ; PUSHLO,L(R_SP,LWORD),NEXT(FALLTHRU)
   0x19b                 ; PUSHHI,NEXT(FALLTHRU)
   0x19c                 ; TO_Z(R_PC),L(R_A,LWORD),NEXT(FALLTHRU)
   0x19d                 ; TO_Z(R_FCODE),DATA,L(R_C,LWORD),NEXT(FALLTHRU)
   0x19e                 ; POPHI,NEXT(FALLTHRU)
   0x19f                 ; POPLO,NEXT(FALLTHRU)
   0x1a0                 ; ZERO_TO_Z,L(R_DP,LWORD),NEXT(FALLTHRU)
   0x1a1                 ; FROM_MDR(R_PC),CODE,MISC(M_CLR_TRAP),NEXT(Fetch)
   0x1a2 Reti            ; TO_Z(R_SP),DATA,NEXT(FALLTHRU)
   0x1a3                 ; POPHI,NEXT(FALLTHRU)
   0x1a4                 ; POPLO,NEXT(FALLTHRU)
   0x1a5                 ; FROM_MDR(R_DP),NEXT(FALLTHRU)
   0x1a6                 ; POPHI,NEXT(FALLTHRU)
   0x1a7                 ; POPLO,NEXT(FALLTHRU)
   0x1a8                 ; FROM_MDR(R_C),NEXT(FALLTHRU)
   0x1a9                 ; POPHI,NEXT(FALLTHRU)
   0x1aa                 ; POPLO,NEXT(FALLTHRU)
   0x1ab                 ; FROM_MDR(R_B),NEXT(FALLTHRU)
   0x1ac                 ; POPHI,NEXT(FALLTHRU)
   0x1ad                 ; POPLO,NEXT(FALLTHRU)
   0x1ae                 ; FROM_MDR(R_A),NEXT(FALLTHRU)
   0x1af                 ; POPHI,NEXT(FALLTHRU)
   0x1b0                 ; POPLO,NEXT(FALLTHRU)
   0x1b1                 ; FROM_MDR(R_PC),NEXT(FALLTHRU)
   0x1b2                 ; POPHI,NEXT(FALLTHRU)
   0x1b3                 ; POPLO,NEXT(FALLTHRU)
   0x1b4                 ; TO_Z(R_MDR),MISC(M_COMMIT),NEXT(FALLTHRU)
   0x1b5                 ; POPHI,NEXT(FALLTHRU)
   0x1b6                 ; READLO,INC_TO_Z(R_MAR),L(R_SP,LWORD),NEXT(FALLTHRU)
   0x1b7                 ; TO_Z(R_MDR),L(R_MSW,LWORD),LMODE(1),LPAGING(1),MISC(M_LEI),NEXT(FALLTHRU)
   0x1b8                 ; TO_Z(R_TPC),L(R_SP,LWORD),NEXT(PCtoMAR)
   0x1b9 Syscall         ; TO_Z(R_MDR),L(R_A,LWORD),NEXT(FALLTHRU)
   0x1ba                 ; MISC(M_SYSCALL),NEXT(Unreachable)
   0x1bb Ldcode8         ; LDLO,NEXT(LdiA8)
   0x1bc Wdpte           ; E_L(R_A),MISC(M_LPTE),NEXT(PCtoMAR)
   0x1bd Shlb16          ; E_L(R_B),E_R(ER_MDR),ALU(OP_ADD,WORD,NO_CARRY),L(R_B,LWORD),NEXT(Fetch)
   0x1be Shla16          ; E_L(R_A),E_R(ER_MDR),ALU(OP_ADD,WORD,NO_CARRY),L(R_A,LWORD),NEXT(Fetch)
   0x1bf Aluop16_16      ; LDIMMLO,NEXT(Aluop16)
   0x1c0 Cmpb16_16       ; LDIMMLO,NEXT(Cmpb16)
   0x1c1 Cmp16_16        ; LDIMMLO,NEXT(Cmp16)
   0x1c2 PCtoMAR         ; TO_Z(R_PC),CODE,NEXT(Fetch)
   0x1c3 Vshl            ; COMPARE_0(R_C),MISC(M_SET_FLAGS),NEXT(FALLTHRU)
   0x1c4                 ; CBR(B_NEGATED,FALLTHRU)
   0x1c5                 ; COMPARE_0(R_MDR),MISC(M_SET_FLAGS),NEXT(FALLTHRU)
   0x1c6                 ; CBR(B_NEGATED,FALLTHRU)
   0x1c7                 ; E_L(R_MDR),E_R(ER_MDR),ALU(OP_ADD,WORD,NO_CARRY),L(R_IR_REG,LWORD),NEXT(Bcopy2)
   0x1c8 Vshr            ; COMPARE_0(R_C),MISC(M_SET_FLAGS),NEXT(FALLTHRU)
   0x1c9                 ; CBR(B_NEGATED,FALLTHRU)
   0x1ca                 ; COMPARE_0(R_MDR),MISC(M_SET_FLAGS),NEXT(FALLTHRU)
   0x1cb                 ; CBR(B_NEGATED,FALLTHRU)
   0x1cc                 ; TO_Z(R_MDR),MISC(M_RSHIFT),L(R_IR_REG,LWORD),NEXT(Bcopy2)
   0x1cd LeaAAB2         ; E_R(ER_MDR),E_L(R_MDR),ALU(OP_ADD,WORD,NO_CARRY),L(R_MDR,LWORD),NEXT(FALLTHRU)
   0x1ce LeaA1           ; E_R(ER_MDR),E_L(R_A),ALU(OP_ADD,WORD,NO_CARRY),L(R_A,LWORD),NEXT(Fetch)
   0x1cf LeaBBA2         ; E_R(ER_MDR),E_L(R_MDR),ALU(OP_ADD,WORD,NO_CARRY),L(R_MDR,LWORD),NEXT(FALLTHRU)
   0x1d0 LeaB1           ; E_R(ER_MDR),E_L(R_B),ALU(OP_ADD,WORD,NO_CARRY),L(R_B,LWORD),NEXT(Fetch)
   0x1d1 LeaABA2         ; E_R(ER_MDR),E_L(R_MDR),ALU(OP_ADD,WORD,NO_CARRY),L(R_MDR,LWORD),NEXT(FALLTHRU)
   0x1d2                 ; E_R(ER_MDR),E_L(R_B),ALU(OP_ADD,WORD,NO_CARRY),L(R_A,LWORD),NEXT(Fetch)
   0x1d3 LeaBAB2         ; E_R(ER_MDR),E_L(R_MDR),ALU(OP_ADD,WORD,NO_CARRY),L(R_MDR,LWORD),NEXT(FALLTHRU)
   0x1d4                 ; E_R(ER_MDR),E_L(R_A),ALU(OP_ADD,WORD,NO_CARRY),L(R_B,LWORD),NEXT(Fetch)
   0x1d5 CopyMSWA        ; TO_Z(R_A),L(R_MSW,LWORD),LMODE(1),LPAGING(1),MISC(M_LEI),NEXT(PCtoMAR)
   0x1d6 Strcopy         ; READLO,TO_Z(R_A),DATA,NEXT(FALLTHRU)
   0x1d7                 ; WRITELO,COMPARE8_0(R_MDR),MISC(M_SET_FLAGS),NEXT(FALLTHRU)
   0x1d8                 ; TO_Z(R_PC),CODE,NEXT(FALLTHRU)
   0x1d9                 ; INC_TO_Z(R_A),L(R_A,LWORD),NEXT(FALLTHRU)
   0x1da                 ; INC_TO_Z(R_B),L(R_B,LWORD),CBR(B_NEGATED,BackupPC)
   0x1db LeaShort        ; GEN_ADDR(R_SP),L(R_IR_REG,LWORD),NEXT(Fetch)
   0x1dc Mcpy4           ; READHI,INC_TO_Z(R_MAR),DATA,NEXT(FALLTHRU)
   0x1dd                 ; READLO,TO_Z(R_B),DATA,NEXT(FALLTHRU)
   0x1de                 ; TO_Z(R_MDR),L(R_C,LWORD),NEXT(FALLTHRU)
   0x1df                 ; READHI,INC_TO_Z(R_MAR),DATA,NEXT(FALLTHRU)
   0x1e0                 ; READLO,TO_Z(R_A),DATA,NEXT(FALLTHRU)
   0x1e1                 ; WRITEHI,INC_TO_Z(R_MAR),DATA,NEXT(FALLTHRU)
   0x1e2                 ; WRITELO,INC_TO_Z(R_MAR),DATA,NEXT(FALLTHRU)
   0x1e3                 ; TO_Z(R_C),L(R_MDR,LWORD),NEXT(FALLTHRU)
   0x1e4                 ; WRITEHI,INC_TO_Z(R_MAR),DATA,NEXT(FALLTHRU)
   0x1e5                 ; WRITELO,INC_TO_Z(R_MAR),L(R_A,LWORD),NEXT(FALLTHRU)
   0x1e6                 ; INC2_TO_Z(R_B),L(R_B,LWORD),NEXT(FALLTHRU)
   0x1e7                 ; INC2_TO_Z(R_B),L(R_B,LWORD),NEXT(PCtoMAR)
   0x1e8 Mop16           ; READLO,NEXT(FALLTHRU)
   0x1e9                 ; WRITELO,DEC_TO_Z(R_MAR),DATA,NEXT(FALLTHRU)
   0x1ea                 ; READHI,NEXT(FALLTHRU)
   0x1eb                 ; WRITEHI,TO_Z(R_MDR),L(R_C,LWORD),NEXT(FALLTHRU)
   0x1ec                 ; DEC_TO_Z(R_B),DATA,NEXT(FALLTHRU)
   0x1ed                 ; READLO,DEC_TO_Z(R_MAR),DATA,NEXT(FALLTHRU)
   0x1ee                 ; READHI,TO_Z(R_MAR),L(R_B,LWORD),NEXT(FALLTHRU)
   0x1ef                 ; E_L(R_C),E_R(ER_MDR),ALU(OP_IR13,WORD,NO_CARRY),L(R_MDR,LWORD),MISC(M_SET_FLAGS),NEXT(FALLTHRU)
   0x1f0 Mop16a          ; DEC_TO_Z(R_A),DATA,NEXT(FALLTHRU)
   0x1f1                 ; WRITELO,DEC_TO_Z(R_MAR),DATA,L(R_A,LWORD),NEXT(Whi)
   0x1f2 Mop16Carry      ; READLO,NEXT(FALLTHRU)
   0x1f3                 ; WRITELO,DEC_TO_Z(R_MAR),DATA,NEXT(FALLTHRU)
   0x1f4                 ; READHI,NEXT(FALLTHRU)
   0x1f5                 ; WRITEHI,TO_Z(R_MDR),L(R_C,LWORD),READHI,NEXT(FALLTHRU)
   0x1f6                 ; DEC_TO_Z(R_B),DATA,NEXT(FALLTHRU)
   0x1f7                 ; READLO,DEC_TO_Z(R_MAR),DATA,NEXT(FALLTHRU)
   0x1f8                 ; READHI,TO_Z(R_MAR),L(R_B,LWORD),NEXT(FALLTHRU)
   0x1f9                 ; E_L(R_C),E_R(ER_MDR),ALU(OP_IR13,WORD,CARRY_IN),L(R_MDR,LWORD),MISC(M_SET_FLAGS),NEXT(Mop16a)
   0x1fa                 ;
   0x1fb                 ;
   0x1fc                 ;
   0x1fd                 ;
   0x1fe Unreachable     ; NEXT(Unreachable)
   0x1ff UNUSABLE        ;

   // ENDPREPROCESS prombits.h
⚠️ **GitHub.com Fallback** ⚠️