{File name: Misc.mc
Description: Miscellaneous Mesa opcodes,
Author: RXG ,
Created: April 3, 1980,
Last Edited: AHL/JPM 6-Jan-87 11:05:36 Changed for MDS relief.
Last Edited: JPM 14-Nov-86 10:20:02 Implement @a177 as access to idle count regs.
Last Edited: RCH 21-Jul-86 16:13:20 Removed @Pushbte, @PushByteToWordBoundary, @Writ. @INPUT, @OUTPUT, @RawRead, @RawWrite (all previously commented).
Last Edited: JPM 16-Jul-86 9:08:26 Extend bank 1 mechanism to floating-point and include as yet unimplemented opcode ranges.
Last Edited: JPM 11-Jul-86 12:47:53 Add general mechanism for invoking bank 1 opcodes, hard-wire address of ESCc.
Last Edited: CRF/MRR 16-Jun-86 18:45:28 Add image processing escape opcode dispatch.
Last Edited: AHL/JAC 28-Feb-86 20:23:26 Add bytepointer stuff
Last Edited: KxI 17-Dec-85 16:26:41 add useful comments from ESCAlpha.mesa..
Last Edited: KxI 10-Dec-85 9:50:02 Make changes for @NextMatchAndDiff, @PushByte, @PushByteToWordBoundary and @CLR to be implemented
Last Edited: RDH 30-Oct-85 14:15:42 Make changes for Bandblt to be implemented
Last Edited: AEF/JPM, 10-Apr-85 16:05:58 Make changes to SM for PCE
Last Edited: JGS/JPM, 12-Dec-84 13:32:38 added push at SMFc+2
Last Edited: JPM, 9-Oct-84 10:21:50 removed @TXTBLT (now implemented in TextBlt.mc)
Last Edited: JPM, 3-Oct-84 17:02:20 added @Unimp377
Last Edited: JPM, 27-Sep-84 14:29:08 use hardware to enable/disable interrupts (at @WRWDC)
Last Edited: JPM, 25-Sep-84 16:24:43 add landing places for unimplemented opcode 336b (CAW?) and ESC codes BNDCKL and NILCK
Last Edited: JPM, 13-Sep-84 14:23:34 add labels to unimplemented opcodes for debugging
Last Edited: DEG, 1-Sep-84 19:42:59 Add copyright notice
Last Edited: JPM, 19-Jun-84 12:38:43 Delete Dicentra-specific ESC9n branch
Last Edited: JPM, 1-Jun-84 16:02:51 Redo SM, SMF, and GMF for Daybreak
Last Edited: HGM, 14-Nov-83 21:08:37 Delete DLion stuff
Last Edited: AXD, 15-Jun-83 19:01:49 new instruction set
Last Edited: AEF, 4-Jan-83 10:52:30 Fix typo in BLTLR comment
Last Edited: AEF, 22-Dec-82 10:49:15 Make BLTLR microcode implementation
Last Edited: AEF, September 2, 1982 12:19 PM Do STK←TOS at Unimplemented Opcodes
Last Edited: AEF, August 2, 1982 11:41 AM MaintenancePanelOffset
Last Edited: AEF, April 29, 1982 1:48 PM Add TStatus to @INPUT and TAddr to @OUTPUT
Last Edited: AEF, April 23, 1982 2:01 PM Add conditional assembly for MagTape
Edited: JGS, February 24, 1982 2:18 PM Add SPP inst
Edited: JGS, November 17, 1981 5:04 PM new instruction set
Edited: JGS, April 23, 1981 8:46 AM: Fix Stack on Misc ~IN[0..15]
Last Edited: JXF, March 16, 1981 11:51 AM: Allow Block to catch Checksum Misc
Last Edited: RXJ, January 22, 1981 1:11 PM}
{ Copyright (C) 1981, 1982, 1983, 1984, 1985, 1986 by Xerox Corporation. All rights reserved.}
{*****************************************************************************
ESC(L) - Escape operations
*****************************************************************************}
{note: Some ESC byte codes are already reseved, but not implemented by using M'Code because of a lack of WCS memory..
Some of these ESC byte codes are implemented by Mesa.
When we call those ESC byte codes, it cause a escOpcodeTrap, and Mesa processor make a control transfer to a corredponding trap handler. its trap handler will call a acutual procedure written by existing mesa byte codes.
We should check ESCAlpha.mesa also to know what escape codes are reserved. }
{Macros for causing an ESC code trap or transferring to bank 1}
MacroDef[UnimplESCRange,(PC ← PC + 1, STK ← TOS, pop, CANCELBR[EscOpcodeTrap,0F])];
MacroDef[Bank1ESCRange,(Bank ← bank1, pop, CANCELBR[Bank1ESC,0F])];
@ESCL: Xbus ← ibHigh, XDisp, GOTO[ESCx], c1, opcode[371'b];
@ESC: Xbus ← ibHigh, XDisp, c1, opcode[370'b];
ESCx: TT ← ib, XDisp, push, DISP4[ESCHi], c2;
PC ← PC + 1, STK ← TOS, pop, DISP4[ESC0n], c3, at[ 0,10,ESCHi];
PC ← PC + 1, STK ← TOS, pop, DISP4[ESC1n], c3, at[ 1,10,ESCHi];
PC ← PC + 1, STK ← TOS, pop, DISP4[ESC2n], c3, at[ 2,10,ESCHi];
PC ← PC + 1, STK ← TOS, pop, DISP4[ESC3n], c3, at[ 3,10,ESCHi];
IfEqual[ESC4nInBank1,1,Bank1ESCRange,UnimplESCRange], c3, at[ 4,10,ESCHi];
IfEqual[ESC5nInBank1,1,Bank1ESCRange,UnimplESCRange], c3, at[ 5,10,ESCHi];
IfEqual[ESC6nInBank1,1,Bank1ESCRange,UnimplESCRange], c3, at[ 6,10,ESCHi];
PC ← PC + 1, STK ← TOS, pop, DISP4[ESC7n], c3, at[ 7,10,ESCHi];
PC ← PC + 1, STK ← TOS, pop, DISP4[ESC8n], c3, at[ 8,10,ESCHi];
PC ← PC + 1, STK ← TOS, pop, CANCELBR[EscOpcodeTrap,0F],c3, at[ 9,10,ESCHi];
IfEqual[ESCAnInBank1,1,Bank1ESCRange,UnimplESCRange], c3, at[0A,10,ESCHi];
IfEqual[ESCBnInBank1,1,Bank1ESCRange,UnimplESCRange], c3, at[0B,10,ESCHi];
IfEqual[ESCCnInBank1,1,Bank1ESCRange,UnimplESCRange], c3, at[0C,10,ESCHi];
IfEqual[ESCDnInBank1,1,Bank1ESCRange,UnimplESCRange], c3, at[0D,10,ESCHi];
IfEqual[ESCEnInBank1,1,Bank1ESCRange,UnimplESCRange], c3, at[0E,10,ESCHi];
IfEqual[ESCFnInBank1,1,Bank1ESCRange,UnimplESCRange], c3, at[0F,10,ESCHi];
IfEqual[thereAreTwoBanks,0,SkipTo[Bank1BridgeEnd],];
Bank1ESC:
Xbus ← TT LRot12, XDisp, GOTOBANK1[Bank1ESCx], c1;
Bank1BridgeEnd!
EscOpcodeTrap:
PC ← PC - 1, c1;
ESCb: T ← 0FF + TT + 1, c2;
ESCc: G ← 1, GOTO[Trapc1], c3, at[addrESCc];
@a000: PC ← PC - 1, GOTO[ESCb], c1, at[ 0,10,ESC0n];
@a001: PC ← PC - 1, GOTO[ESCb], c1, at[ 1,10,ESC0n];
{@MW: in Process c1, at[ 2,10,ESC0n];}
{@MR: in Process c1, at[ 3,10,ESC0n];}
{@NC: in Process c1, at[ 4,10,ESC0n];}
{@BC: in Process c1, at[ 5,10,ESC0n];}
{@REQ: in Process c1, at[ 6,10,ESC0n];}
{@SM: in Misc c1, at[ 7,10,ESC0n];}
{@SMF: in Misc c1, at[ 8,10,ESC0n];}
{@GMF: in Misc c1, at[ 9,10,ESC0n];}
{@AF: in Xfer c1, at[0A,10,ESC0n];}
{@FF: in Xfer c1, at[0B,10,ESC0n];}
{@PI: in Xfer c1, at[0C,10,ESC0n];}
{@PO: in Xfer c1, at[0D,10,ESC0n];}
{@POR: in Xfer c1, at[0E,10,ESC0n];}
{@SPP: in Process c1, at[0F,10,ESC0n];}
{@DI: in Xfer c1, at[ 0,10,ESC1n];}
{@EI: in Xfer c1, at[ 1,10,ESC1n];}
{@XOR: in Stack c1, at[ 2,10,ESC1n];}
{@DAND: in Stack c1, at[ 3,10,ESC1n];}
{@DIOR: in Stack c1, at[ 4,10,ESC1n];}
{@DXOR: in Stack c1, at[ 5,10,ESC1n];}
{@ROTATE: in Stack c1, at[ 6,10,ESC1n];}
{@DSHIFT: in Stack c1, at[ 7,10,ESC1n];}
{@LINT: in Stack c1, at[ 8,10,ESC1n];}
{@JS: in Jump c1, at[ 9,10,ESC1n];}
{@RCFS: in StringField c1, at[0A,10,ESC1n];}
{@RC: in Read c1, at[0B,10,ESC1n];}
{@UDIV: in Stack c1, at[0C,10,ESC1n];}
{@LUDIV: in Stack c1, at[0D,10,ESC1n];}
{@ROB: in Read c1, at[0E,10,ESC1n];}
{@WOB in Write c1, at[0F,10,ESC1n];}
{@DSK: in Xfer c1, at[ 0,10,ESC2n];}
{@XE: in Xfer c1, at[ 1,10,ESC2n];}
{@XF: in Xfer c1, at[ 2,10,ESC2n];}
{@LSK: in Xfer c1, at[ 3,10,ESC2n];}
@BNDCKL:PC ← PC - 1, GOTO[ESCb], c1, at[ 4,10,ESC2n];
@NILCK: PC ← PC - 1, GOTO[ESCb], c1, at[ 5,10,ESC2n];
{@NILCKL: in Stack c1, at[ 6,10,ESC2n];}
{@BLTLR: in Block c1, at[ 7,10,ESC2n];}
{@BLEL: in Block c1, at[ 8,10,ESC2n];}
{@BLECL: in Block c1, at[ 9,10,ESC2n];}
{@CKSUM: in Block c1, at[0A,10,ESC2n];}
{@BITBLT: in BBInit c1, at[0B,10,ESC2n];}
{@TXTBLT: in TextBlt c1, at[0C,10,ESC2n];}
@BYTBLT:
PC ← PC - 1, GOTO[ESCb], c1, at[0D,10,ESC2n];
@BYTBLTR:
PC ← PC - 1, GOTO[ESCb], c1, at[0E,10,ESC2n];
{@VERSION: in VersionDxx c1, at[0F,10,ESC2n];}
@DMUL: PC ← PC - 1, GOTO[ESCb], {Written by Mesa} c1, at[ 0,10,ESC3n];
@SDIV: PC ← PC - 1, GOTO[ESCb], {Written by Mesa} c1, at[ 1,10,ESC3n];
@SDDIV: PC ← PC - 1, GOTO[ESCb], {Written by Mesa} c1, at[ 2,10,ESC3n];
@UDDIV: PC ← PC - 1, GOTO[ESCb], {Written by Mesa} c1, at[ 3,10,ESC3n];
{@NextMatchAndDiff: in CompressAssist c1, at[ 4,10,ESC3n];}
PC ← PC - 1, GOTO[ESCb], {Unimplemented} c1, at[ 5,10,ESC3n];
PC ← PC - 1, GOTO[ESCb], {Unimplemented} c1, at[ 6,10,ESC3n];
{@CLR: in CompressAssist c1, at[ 7,10,ESC3n];}
@a70: PC ← PC - 1, GOTO[ESCb], {Unimplemented} c1, at[ 8,10,ESC3n];
@a71: PC ← PC - 1, GOTO[ESCb], {Unimplemented} c1, at[ 9,10,ESC3n];
@a72: PC ← PC - 1, GOTO[ESCb], {Unimplemented} c1, at[0A,10,ESC3n];
@a73: PC ← PC - 1, GOTO[ESCb], {Unimplemented} c1, at[0B,10,ESC3n];
@a74: PC ← PC - 1, GOTO[ESCb], {Unimplemented} c1, at[0C,10,ESC3n];
@a75: PC ← PC - 1, GOTO[ESCb], {Unimplemented} c1, at[0D,10,ESC3n];
@a76: PC ← PC - 1, GOTO[ESCb], {Unimplemented} c1, at[0E,10,ESC3n];
@a77: PC ← PC - 1, GOTO[ESCb], {Unimplemented} c1, at[0F,10,ESC3n];
{-- Read / Write Registers (70H - 7FH are reserved) }
{@WRPSB: in Misc c1, at[ 0,10,ESC7n];}
{@WRMDS: in Misc c1, at[ 1,10,ESC7n];}
{@WRWP: in Misc c1, at[ 2,10,ESC7n];}
{@WRWDC: in Misc c1, at[ 3,10,ESC7n];}
{@WRPTC: in Misc c1, at[ 4,10,ESC7n];}
{@WRIT: in Misc c1, at[ 5,10,ESC7n];}
{@WRXTS: in Misc c1, at[ 6,10,ESC7n];}
{@WRMP: in MiscDaybreak c1, at[ 7,10,ESC7n];}
{@RRPSB: in Misc c1, at[ 8,10,ESC7n];}
{@RRMDS: in Misc c1, at[ 9,10,ESC7n];}
{@RRWP: in Misc c1, at[0A,10,ESC7n];}
{@RRWDC: in Misc c1, at[0B,10,ESC7n];}
{@RRPTC: in Misc c1, at[0C,10,ESC7n];}
{@RRIT: in MiscDaybreak c1, at[0D,10,ESC7n];}
{@RRXTS: in Misc c1, at[0E,10,ESC7n];}
{@a177: in Misc for performance study c1, at[0F,10,ESC7n];}
{-- Processor Dependent (80H - 9FH are reserved) }
PC ← PC - 1, GOTO[ESCb], c1, at[0,10,ESC8n];
PC ← PC - 1, GOTO[ESCb], c1, at[1,10,ESC8n];
@LOADRAMJ:
PC ← PC - 1, GOTO[ESCb], c1, at[ 2,10,ESC8n];
{@BANDBLT: in Bandblt.mc c1, at[ 3,10,ESC8n];}
PC ← PC - 1, GOTO[ESCb], c1, at[4,10,ESC8n];
PC ← PC - 1, GOTO[ESCb], c1, at[5,10,ESC8n];
{@a206: in MiscDaybreak c1, at[ 6,10,ESC8n];}
{@BYTESWAP: in MiscDaybreak c1, at[ 7,10,ESC8n];}
{@LOCKMEM: in MiscDaybreak c1, at[ 8,10,ESC8n];}
{@NOTIFYIOP: in MiscDaybreak c1, at[ 9,10,ESC8n];}
{@SetWakeupBits:in MiscDaybreak c1, at[0A,10,ESC8n];}
{@PCEMedRes: in MiscPCE c1, at[0B,10,ESC8n];}
{@a214: in MiscPCE c1, at[0C,10,ESC8n];}
{@a215: in MiscPCE c1, at[0D,10,ESC8n];}
{@a216: in MiscPCE c1, at[0E,10,ESC8n];}
{@a217: in MiscPCE c1, at[0F,10,ESC8n];}
{*****************************************************************************
SM Set Map
*****************************************************************************}
@SM: TOS ← TOS and 7, pop, c1, at[7,10,ESC0n];
TT ← STK, pop, L0 ← 1, c2;
TT ← TT LRot8, c3;
Rx ← ~0FF, pop, c1;
T ← STK, fXpop, fZpop, c2;
rhT ← T ← T LRot8, c3;
Xbus ← TOS LRot0, XDisp, TOS ← 0, c1;
SMa: TT ← TT and ~0E0, DISP4[SMb,8], c2;
SMb: TT ← TT or 0, L0Disp, GOTO[SMc], c3, at[08,10,SMb];
TT ← TT or 80, L0Disp, GOTO[SMc], c3, at[09,10,SMb];
TT ← TT or 40, L0Disp, GOTO[SMc], c3, at[0A,10,SMb];
TT ← TT or 0C0, L0Disp, GOTO[SMc], c3, at[0B,10,SMb];
TT ← TT or 20, L0Disp, GOTO[SMc], c3, at[0C,10,SMb];
TT ← TT or 0A0, L0Disp, GOTO[SMc], c3, at[0D,10,SMb];
TT ← TT or 60, GOTO[SMc], c3, at[0E,10,SMb];
TT ← TT or 0E0, L0Disp, GOTO[SMc], c3, at[0F,10,SMb];
SMc: Map ← [rhT,T], BRANCH[SMFe, SMd, 0E], c1;
SMd: MDR ← TT, TT ← UvL, c2;
rhTT ← UvMDS, c3;
{This section was added for supporting PC emulation. Pilot has the right to change the real page numbers of L, G, and PC at will, so every time a SM is done, we remap these quantities just in case the SM operation changed their real page number. - AEF}
SMe: Rx ← ~0FF, c1;
T ← L and 0FF, c2;
Q ← G and 0FF, c3;
Map ← [rhTT, TT], TT ← UvG, c1;
rhTT ← UvGhigh, c2;
rhL ← MD, L ← MD and Rx, c3;
Map ← [rhTT, TT], TT ← UvPCpage, c1;
rhTT ← UvChigh, c2;
rhG ← MD, G ← MD and Rx, c3;
Map ← [rhTT, TT], c1;
TT ← PC and 0FF, c2;
rhPC ← MD, PC ← MD and Rx, c3;
PC ← PC or TT, c1;
L ← L or T, IBDisp, c2;
G ← G or Q, pop, DISPNI[OpTable], c3;
{*****************************************************************************
SMF Set Map Flags
*****************************************************************************}
@SMF: pop, L0←0, c1, at[8,10,ESC0n];
T ← STK, fXpop, fZpop, c2;
SMFa: rhT ← T ← T LRot8 c3;
Map ← [rhT,T], c1;
TOS ← TOS and 7, c2;
TT ← MD, c3;
Xbus ← TT LRot12, XDisp {disp old flags}, c1;
TT ← TT and ~0E0, DISP4[SMFb,1], c2;
SMFb: Rx ← 0, push, GOTO[SMFc], c3, at[01,10,SMFb];
Rx ← 4, push, GOTO[SMFc], c3, at[03,10,SMFb];
Rx ← 2, push, GOTO[SMFc], c3, at[05,10,SMFb];
Rx ← 6, push, L0←1, GOTO[SMFc], c3, at[07,10,SMFb];
Rx ← 1, push, GOTO[SMFc], c3, at[09,10,SMFb];
Rx ← 5, push, GOTO[SMFc], c3, at[0B,10,SMFb];
Rx ← 3, push, GOTO[SMFc], c3, at[0D,10,SMFb];
Rx ← 7, push, GOTO[SMFc], c3, at[0F,10,SMFb];
SMFc: STK ← Rx, c1;
Rx ← TT LRot8, push, L0Disp, c2;
STK ← Rx, push, BRANCH[SMFd, GMFa], c3;
SMFd: Xbus ← TOS LRot0, XDisp, c1;
STK ← 0, DISP4[SMb,8], c2;
SMFe: MDR ← TT, IBDisp, GOTO[SLa], c2;
{*****************************************************************************
GMF Get Map Flags
*****************************************************************************}
@GMF: L0←1, c1, at[9,10,ESC0n];
T ← STK, fXpop, fZpop, GOTO[SMFa], c2;
GMFa: STK ← 0, c1;
IBDisp, GOTO[SLa], c2;
{*****************************************************************************
WR - Write Registers
*****************************************************************************}
@WRPSB: uPSB ← TOS, c1, at[0,10,ESC7n];
WRx: TOS ← STK, pop, IBDisp, GOTO[DISPNIonly], c2;
@WRMDS: TT ← UvMDS, fXpop, push, c1, at[1,10,ESC7n];
rhMDS ← TOS LRot0, c2;
Q ← UvL, c3;
WRMDSa: Map ← [rhMDS, Q], BRANCH[WRMDSb,WRMDSc], c1;
WRMDSb: UvMDS ← TOS, c2;
L ← rhL ← MD, c3;
MAR ← L ← [rhL, Q+0], L0 ← 1, c1;
[] ← TT xor UvGhigh, ZeroBr, c2;
Q ← UvG, L0Disp, BRANCH[$,WRMDSa], c3;
CANCELBR[WRx,1], c1;
WRMDSc: UvGhigh ← TOS, c2;
G ← rhG ← MD, c3;
MAR ← G ← [rhG, Q+0], GOTO[WRx], c1;
@WRWP: uWP ← TOS, GOTO[WRx], c1, at[2,10,ESC7n];
@WRWDC: uWDC ← TOS, ZeroBr, c1, at[3,10,ESC7n];
TOS ← STK, pop, IBDisp, BRANCH[DisableInts,EnableInts], c2;
DisableInts:
ClrIE, DISPNI[OpTable], c3;
EnableInts:
SetIE, DISPNI[OpTable], c3;
@WRPTC: uPTC ← TOS, GOTO[WRx], c1, at[4,10,ESC7n];
{@WRIT in MiscDxx c1, at[5,10,ESC7n];}
@WRXTS: uXTS ← TOS, GOTO[WRx], c1, at[6,10,ESC7n];
{@WRMP in MiscDxx c1, at[7,10,ESC7n];}
{*****************************************************************************
RR - Read Registers
*****************************************************************************}
@RRPSB: TOS ← uPSB, push, GOTO[RRx], c1, at[8,10,ESC7n];
RRx: push, fZpop, IBDisp, GOTO[DISPNIonly], c2;
@RRMDS: TOS ← UvMDS, push, GOTO[RRx], c1, at[9,10,ESC7n];
@RRWP: TOS ← uWP, push, GOTO[RRx], c1, at[0A,10,ESC7n];
@RRWDC: TOS ← uWDC, push, GOTO[RRx], c1, at[0B,10,ESC7n];
@RRPTC: TOS ← uPTC, push, GOTO[RRx], c1, at[0C,10,ESC7n];
{@RRIT in MiscDxx c1, at[0D,10,ESC7n];}
@RRXTS: TOS ← uXTS, push, GOTO[RRx], c1, at[0E,10,ESC7n];
{added for performance study}
@a177: TOS ← uIdleCountHigh, push, c1, at[0F,10,ESC7n];
T ← uIdleCountLow, IBDisp, push, c2;
STK ← T, push, fZpop, DISPNI[OpTable], c3;
@STC: T ← 0F, c1, opcode[77'b];
T ← T and ~ErrnIBnStkp, c2;
Ybus ← T xor ib, ZeroBr, c3;
T ← sStackError, BRANCH[Trapc2, $], c1;
PC ← PC + 1, IBDisp, GOTO[DISPNIonly], c2;
@MBP: Q ← STK, fXpop, fZpop, push, c1, opcode[175'b];
[] ← Q or TOS, ZeroBr, c2;
PC ← PC + PC16, BRANCH[$, NxtInstc1], c3;
Rx ← DLShift1 TOS, Cin ← 1, c1;
TOS ← Rx or u8000, c2;
STK ← Q, GOTO[NxtInstc1], c3;
Set[sBytePointerTrap, 10];
BPErr: T ← sBytePointerTrap, GOTO[Trapc3], c2;
@RBP: T ← STK, L3←0, c1, opcode[176'b];
Q ← T + ibNA, L1←L1.Push, CarryBr, GOTO[BPSub], LOOPHOLE[stw], c2;
@WBP: T ← STK, L3←1, c1, opcode[177'b];
Q ← T + ibNA, L1←L1.Push, CarryBr, GOTO[BPSub], LOOPHOLE[stw], c2;
BPSub: Rx ← TOS, NegBr, BRANCH[BPNoCr, BPCar], c3;
BPNoCr: BRANCH[BPErr, BPCont], c1;
BPCar: Rx ← Rx + 1, BRANCH[BPErr, BPCont], c1;
BPCont: Rx ← Rx and (~u8000), c2;
Rx ← DRShift1 (Rx xor 1), Cin ← 0, c3;
rhTT ← Rx LRot0, TT ← Q, c1;
T ← T + ib, c2;
pop, GOTO[RLSd], c3;
{*****************************************************************************
Unimplemented Opcodes cause Opcode Trap
*****************************************************************************}
@Unimp76: TT ← 76'b, push, GOTO[OpcodeTrap], c1, opcode[76'b];
@Unimp277: TT ← 277'b, push, GOTO[OpcodeTrap], c1, opcode[277'b];
@Unimp336: TT ← 336'b, push, GOTO[OpcodeTrap], c1, opcode[336'b];
@Unimp376: TT ← 376'b, push, GOTO[OpcodeTrap], c1, opcode[376'b];
@Unimp377: TT ← 377'b, push, GOTO[OpcodeTrap], c1, opcode[377'b];
OpcodeTrap:
T ← sOpcodeTrap, STK ← TOS, pop, GOTO[ESCc], c2;
{ E N D }