.TOC "MACRO.MIC -- Microcode Macros for MicroVAX" .TOC "Revision 12.1" ; Bob Supnik .nobin ;**************************************************************************** ;* * ;* COPYRIGHT (c) 1982, 1983, 1984, 1985 BY * ;* DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS. * ;* ALL RIGHTS RESERVED. * ;* * ;* THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED * ;* ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE * ;* INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER * ;* COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY * ;* OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY * ;* TRANSFERRED. * ;* * ;* THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE * ;* AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT * ;* CORPORATION. * ;* * ;* DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS * ;* SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. * ;* * ;**************************************************************************** .TOC " Revision History" ; 3-Jun-85 [RMS] Removed short literal alu func for pass 4.1 ; 12 17-Aug-84 [RMS] Revised kernel mem reqs for pass 3 ; 16-May-84 [RMS] Redefined test hooks ; 11 14-Feb-84 [RMS] Added macros for pass 2 ; 26-Jan-84 [RMS] Added macros for TEST ; 20-Jan-84 [RMS] Added macro for CALRET ; 23-Nov-83 [RMS] Added test macros ; 14-Nov-83 [RMS] Removed infinite loop from HALT macro ; 7-Nov-83 [RMS] Removed CHAR LOAD VIBA function ; 10 1-Nov-83 [RMS] Removed unused function definitions ; 7-Oct-83 [RMS] Added macro for CTRL ; 15-Sep-83 [RMS] Revised macro for FMEMMGT ; 3-Sep-83 [RTW] Added macro for CALRET ; 26-Aug-83 [RMS] Added macro for OPSYS ; 25-Aug-83 [RMS] Removed SC decrementer ; 09 10-Aug-83 [RMS] Revised for SC delayed branches ; 4-Aug-83 [RMS] Added macro for OPSYS ; 12-Jul-83 [RMS] Added macro for POWERUP ; 20-Jun-83 [RMS] Removed CLEAR.RN function ; 17-Jun-83 [RMS] Flipped sense of FBOX.XFER.RD field ; 8-Jun-83 [RMS] Added macro for OPSYS ; 7-Jun-83 [RMS] Added macro for EMULAT ; 6-Jun-83 [RMS] Revised RLOG macro ; 08 1-Jun-83 [RMS] Removed third at/dl field ; 28-May-83 [RMS] Revised machine check, console interfaces ; 26-May-83 [RMS] Revised VAP probes ; 9-May-83 [RMS] Added macro for POLYf ; 5-May-83 [RMS] Added macro for OPSYS ; 2-May-83 [RMS] Added macro for INTEXC ; 20-Apr-83 [RMS] Added macro for INTEXC ; 07 12-Apr-83 [RMS] Revised for new memory management ; 12-Apr-83 [RMS] Fixed INTEXC macros ; 8-Apr-83 [RMS] Added macro for CSTRING ; 1-Apr-83 [RMS] Added macro for MEMMGT ; 31-Mar-83 [RMS] Added macro for LDPCTX ; 29-Mar-83 [RMS] Added macro for CALLx ; 24-Mar-83 [RMS] Revised nomenclature for alternate IID ; 17-Mar-83 [RMS] Revised for new mreq, dl functions ; 06 13-Mar-83 [RMS] Major code compression ; 10-Mar-83 [RMS] Added macro for CSTRING ; 4-Mar-83 [RMS] Revamped T[] macros for new restrictions ; 17-Feb-83 [RMS] Added IID no exceptions ; 14-Feb-83 [RMS] Fixed read PTE macro ; 31-Jan-83 [RMS] Added macro for new fp interface ; 05 7-Jan-83 [RMS] Cleaned out extraneous macros ; Added macro for INTEXC ; 5-Jan-83 [RMS] Fixed bug in VA<--VA.ANDNOT.K[] ; 27-Dec-82 [RMS] Added macro for SPEC ; Removed non-working .RLOG macros ; 21-Dec-82 [RMS] Removed VAX RESTART control, per V11 ; 13-Dec-82 [RMS] Added yet more INTEXC macros ; 10-Dec-82 [RMS] Added another INTEXC macro ; 9-Dec-82 [RMS] Added more INTEXC macros ; 1-Dec-82 [RMS] Fixed bug in VA<--G(RN) macro ; 28-Nov-82 [RMS] Added POWERUP macro ; 23-Nov-82 [RMS] Added EMODf support ; 22-Nov-82 [RMS] Added POLYf support ; 15-Nov-82 [ED] Added more for INTEXC ; 04 4-Nov-82 [RMS] Added d_floating support ; 1-Nov-82 [ED] Added mem req macro ; 31-Oct-82 [RMS] Added another macro for CSTRING ; 28-Oct-82 [ED] Added macros for INTEXC ; 28-Oct-82 [RMS] Added macros for CSTRING ; 22-Oct-82 [RMS] Fixed bug in W[]<--0 macro ; 14-Oct-82 [RMS] Added macro for ACBf ; 12-Oct-82 [RMS] Added macro for REI ; 7-Oct-82 [RMS] Added macros for EMULAT ; 1-Oct-82 [RMS] Revised definition of MMGT_PD ; 27-Sep-82 [RMS] Revised for new AST.TRAP handling ; Added macros for EMULAT ; 03 24-Sep-82 [RMS] Revised for FBOX XFER and new spec flows ; 20-Sep-82 [RMS] Revised definition of PR[E] ; 02 14-Sep-82 [RMS] Revised for system mapping ; 5-Sep-82 [RMS] Added macros for REI, MxPR, CHMx ; Added macros for interlocked queues ; 4-Sep-82 [RMS] Added macros for REI ; 3-Sep-82 [RMS] Added macros for MxPR ; 2-Sep-82 [RMS] Added macros for PROBEx ; Fixed WBUS<--0 macro ; 1-Sep-82 [RMS] Added more macros for DIVx2, DIVx3, EDIV ; Added macros for MEMMGT ; 31-Aug-82 [RMS] Added macro for revised specifier flows ; Revised for G(RN+1) restriction ; 30-Aug-82 [RMS] Added macros for LDPCTX, SVPCTX ; Added macro for DIVx2, DIVx3, EDIV ; 29-Aug-82 [RMS] Added macros for MULx2, MULx3, EMUL ; 27-Aug-82 [RMS] Added macro for INSQUE, REMQUE ; 26-Aug-82 [RMS] Added macro for POPR, eliminated VAP destinations ; 25-Aug-82 [RMS] Fixed bug in T[]<--W[] ; Revised for today's spec changes ; 24-Aug-82 [RMS] Added macros for CALL, RET ; 22-Aug-82 [RMS] Revised for new PASS.A,B.LONG functions ; Added macros for POPR, PUSHR ; 20-Aug-82 [RMS] Added macros for complex control instructions ; 19-Aug-82 [RMS] Changed SET.V macros to be basics ; 18-Aug-82 [RMS] Fixed assembly errors ; 01 17-Aug-82 [RMS] First edit for MicroVAX .TOC " BASIC format macros" ALL.ZERO "BASIC/0,BASIC.FNC/0,BASIC.SD/0,B/0,MISC/0,A/0,BRANCH/0,BR.BCS.D/0, BR64F.OFF/<.SUM[.,1]>,R/0" G[]<--0 "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/GPRA.MRB..GPRA,A/@1,B/ZERO" G[]<--G[]-1 "BASIC/FORMAT,BASIC.FNC/A.MINUS.1,BASIC.SD/GPRA.WRB..GPRA,A/@1,A/@2,B/MUMBLE" G[]<--G[]+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPRA.MRB..GPRA,A/@1,A/@2,B/@3" G[]<--G[]-M[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/GPRA.MRB..GPRA,A/@1,A/@2,B/@3" G[]<--G[].OR.W[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/GPRA.WRB..GPRA,A/@1,A/@2,B/@3" G[]<--NEG.W[] "BASIC/FORMAT,BASIC.FNC/NEG.B,BASIC.SD/GPRA.WRB..GPRA,A/@1,B/@2" G[]<--W[] "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/GPRA.WRB..GPRA,A/@1,B/@2" G[]<--W[]+1 "BASIC/FORMAT,BASIC.FNC/B.PLUS.1,BASIC.SD/GPRA.WRB..GPRA,A/@1,B/@2" ; More BASIC format macros... G(RN)<--G(RN)+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPR(RN).MRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--G(RN)+M[].RLOG "BASIC/FORMAT,BASIC.FNC/A.PLUS.B..RLOG,BASIC.SD/GPR(RN).MRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--G(RN)+W[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPR(RN).WRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--G(RN)+W[]+PSL.C "BASIC/FORMAT,BASIC.FNC/A.PLUS.B.PLUS.PSL.C,BASIC.SD/GPR(RN).WRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--G(RN)-M[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/GPR(RN).MRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--G(RN)-M[].RLOG "BASIC/FORMAT,BASIC.FNC/A.MINUS.B..RLOG,BASIC.SD/GPR(RN).MRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--G(RN)-W[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/GPR(RN).WRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--G(RN)-W[]-PSL.C "BASIC/FORMAT,BASIC.FNC/A.MINUS.B.PLUS.NOT.PSL.C,BASIC.SD/GPR(RN).WRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--G(RN).ANDNOT.W[] "BASIC/FORMAT,BASIC.FNC/A.AND.NOT.B,BASIC.SD/GPR(RN).WRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--G(RN).OR.W[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/GPR(RN).WRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--G(RN).XOR.W[] "BASIC/FORMAT,BASIC.FNC/A.XOR.B,BASIC.SD/GPR(RN).WRB..GPR(RN)&WRPRA, A/PR(RO),B/@1" G(RN)<--W[] "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/GPR(RN).WRB..GPR(RN)&WRPRA,A/PR(RO),B/@1" G(RN)<--NOT.W[] "BASIC/FORMAT,BASIC.FNC/NOT.B,BASIC.SD/GPR(RN).WRB..GPR(RN)&WRPRA,A/PR(RO),B/@1" G(RN)<--NEG.W[] "BASIC/FORMAT,BASIC.FNC/NEG.B,BASIC.SD/GPR(RN).WRB..GPR(RN)&WRPRA,A/PR(RO),B/@1" G(RN)&W[]<--G(RN)-M[].RLOG "BASIC/FORMAT,BASIC.FNC/A.MINUS.B..RLOG,BASIC.SD/GPR(RN).MRB..GPR(RN)&WRPRA, A.DW/@1,B/@2" NOP "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/WRPRA.WRB..ZILCH, A/MUMBLE,B/MUMBLE,MISC/NOP" ; More BASIC format macros... P[]<--P[]-1 "BASIC/FORMAT,BASIC.FNC/A.MINUS.1,BASIC.SD/WRPRA.MRB..WRPRA,A.DP/@1,A.DP/@2,B/MUMBLE" P[]<--P[].OR.W[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/WRPRA.WRB..WRPRA,A.DP/@1,A.DP/@2,B/@3" P[]<--W[] "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/WRPRA.WRB..WRPRA,A.DP/@1,B/@2" SET.ALU.V "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/WRPRA.MRB..WRPRA,A.DP/STATE3-0..ALUCC,B/TWO" SET.PSL.V "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/WRPRA.MRB..WRPRA,A.DP/PSL.CC..TP,B/TWO" SET.VAX.RESTART "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/GPRA.WRB..GPRA,A/0,B/0" T[]<--0 "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/TA.MRB..TA,A.DT/@1,B/ZERO" T[]<--T[].ANDNOT.W[] "BASIC/FORMAT,BASIC.FNC/A.AND.NOT.B,BASIC.SD/TA.WRB..TA,A.DT/@1,A.DT/@2,B/@3" T[]<--T[].OR.M[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/TA.MRB..TA,A.DT/@1,A.DT/@2,B/@3" T[]<--T[].OR.W[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/TA.WRB..TA,A.DT/@1,A.DT/@2,B/@3" T[]<--W[] "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/TA.WRB..TA,A.DT/@1,B/@2" VA<--G(RN) "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/GPR(RN).WRB..WRPRA,A/VA" VA<--G(RN)+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPR(RN).MRB..WRPRA,A/VA,B/@1" VA<--G(RN)-M[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/GPR(RN).MRB..WRPRA,A/VA,B/@1" VA<--M[] "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/WRPRA.MRB..WRPRA,A/VA,B/@1" VA<--VA+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/WRPRA.MRB..WRPRA,A/VA,B/@1" VA<--VA+W[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/WRPRA.WRB..WRPRA,A/VA,B/@1" VA<--VA-M[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/WRPRA.MRB..WRPRA,A/VA,B/@1" VA<--VA-W[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/WRPRA.WRB..WRPRA,A/VA,B/@1" VA<--W[] "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/WRPRA.WRB..WRPRA,A/VA,B/@1" ; More BASIC format macros... WBUS<--0 "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/WRPRA.MRB..ZILCH,A/PR(RO),B/ZERO" WBUS<--G(RN)+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPR(RN).MRB..WRPRA,A/PR(RO),B/@1" WBUS<--G(RN).AND.W[] "BASIC/FORMAT,BASIC.FNC/A.AND.B,BASIC.SD/GPR(RN).WRB..WRPRA,A/PR(RO),B/@1" WBUS<--G[] "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/GPRA.WRB..ZILCH,A/@1,B/MUMBLE" WBUS<--G[]-1 "BASIC/FORMAT,BASIC.FNC/A.MINUS.1,BASIC.SD/GPRA.WRB..ZILCH,A/@1,B/MUMBLE" WBUS<--G[]+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPRA.MRB..ZILCH,A/@1,B/@2" WBUS<--G[]-M[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/GPRA.MRB..ZILCH,A/@1,B/@2" WBUS<--G[]+W[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPRA.WRB..ZILCH,A/@1,B/@2" WBUS<--G[]+W[]+1 "BASIC/FORMAT,BASIC.FNC/A.PLUS.B.PLUS.1,BASIC.SD/GPRA.WRB..ZILCH,A/@1,B/@2" WBUS<--P[] "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/WRPRA.WRB..ZILCH,A.DP/@1,B/MUMBLE" WBUS<--T[] "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/TA.MRB..ZILCH,A.DT/@1,B/MUMBLE" WBUS<--T[]+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/TA.MRB..ZILCH,A.DT/@1,B/@2" WBUS<--T[]-M[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/TA.MRB..ZILCH,A.DT/@1,B/@2" WBUS<--T[].ANDNOT.M[] "BASIC/FORMAT,BASIC.FNC/A.AND.NOT.B,BASIC.SD/TA.MRB..ZILCH,A.DT/@1,B/@2" WBUS<--T[].OR.M[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/TA.MRB..ZILCH,A.DT/@1,B/@2" WBUS<--VA+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/WRPRA.MRB..ZILCH,A/VA,B/@1" WBUS<--W[] "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/WRPRA.WRB..ZILCH,A/PR(RO),B/@1" WBUS<--W[]-G(RN) "BASIC/FORMAT,BASIC.FNC/B.MINUS.A,BASIC.SD/GPR(RN).WRB..WRPRA,A/PR(RO),B/@1" WBUS<--W[]+G[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPRA.WRB..ZILCH,A/@2,B/@1" WBUS<--W[]-G[] "BASIC/FORMAT,BASIC.FNC/B.MINUS.A,BASIC.SD/GPRA.WRB..ZILCH,A/@2,B/@1" WBUS<--W[]+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/WRPRA.MRB..ZILCH,A.DW/@1,B/@2" WBUS<--W[]+T[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/TA.WRB..ZILCH,A.DT/@2,B/@1" WBUS<--W[]-T[] "BASIC/FORMAT,BASIC.FNC/B.MINUS.A,BASIC.SD/TA.WRB..ZILCH,A.DT/@2,B/@1" WBUS<--W[]+W[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/WRPRA.WRB..ZILCH,A.DW/@1,B/@2" WBUS<--W[]-W[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/WRPRA.WRB..ZILCH,A.DW/@1,B/@2" WBUS<--W[].AND.M[] "BASIC/FORMAT,BASIC.FNC/A.AND.B,BASIC.SD/WRPRA.MRB..ZILCH,A.DW/@1,B/@2" WBUS<--W[].AND.W[] "BASIC/FORMAT,BASIC.FNC/A.AND.B,BASIC.SD/WRPRA.WRB..ZILCH,A.DW/@1,B/@2" WBUS<--W[].ANDNOT.M[] "BASIC/FORMAT,BASIC.FNC/A.AND.NOT.B,BASIC.SD/WRPRA.MRB..ZILCH,A.DW/@1,B/@2" WBUS<--W[].ANDNOT.W[] "BASIC/FORMAT,BASIC.FNC/A.AND.NOT.B,BASIC.SD/WRPRA.WRB..ZILCH,A.DW/@1,B/@2" WBUS<--W[].OR.W[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/WRPRA.WRB..ZILCH,A.DW/@1,B/@2" WBUS<--W[].XOR.P[] "BASIC/FORMAT,BASIC.FNC/A.XOR.B,BASIC.SD/WRPRA.WRB..ZILCH,A.DP/@2,B/@1" WBUS<--W[].XOR.W[] "BASIC/FORMAT,BASIC.FNC/A.XOR.B,BASIC.SD/WRPRA.WRB..ZILCH,A.DW/@1,B/@2" ; More BASIC format macros... W[]<--0 "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/WRPRA.MRB..WRPRA,A.DW/@1,B/ZERO" W[]<--G(RN) "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/GPR(RN).MRB..WRPRA,A.DW/@1,B/MUMBLE" W[]<--G(RN)+1 "BASIC/FORMAT,BASIC.FNC/A.PLUS.1,BASIC.SD/GPR(RN).MRB..WRPRA,A.DW/@1,B/MUMBLE" W[]<--ZEXT.G(RN) "BASIC/FORMAT,BASIC.FNC/A.ZEXT,BASIC.SD/GPR(RN).MRB..WRPRA,A.DW/@1,B/MUMBLE" W[]<--NOT.G(RN) "BASIC/FORMAT,BASIC.FNC/NOT.A,BASIC.SD/GPR(RN).MRB..WRPRA,A.DW/@1,B/MUMBLE" W[]<--G(RN)+W[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPR(RN).WRB..WRPRA,A.DW/@1,B/@2" W[]<--G(RN)-W[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/GPR(RN).WRB..WRPRA,A.DW/@1,B/@2" W[]<--G(RN)+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPR(RN).MRB..WRPRA,B/@2,A.DW/@1" W[]<--G(RN)-M[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/GPR(RN).MRB..WRPRA,B/@2,A.DW/@1" W[]<--G(RN).ANDNOT.W[] "BASIC/FORMAT,BASIC.FNC/A.AND.NOT.B,BASIC.SD/GPR(RN).WRB..WRPRA,A.DW/@1,B/@2" W[]<--G(RN).OR.W[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/GPR(RN).WRB..WRPRA,A.DW/@1,B/@2" W[]<--G(RN).XOR.W[] "BASIC/FORMAT,BASIC.FNC/A.XOR.B,BASIC.SD/GPR(RN).WRB..WRPRA,A.DW/@1,B/@2" W[]<--G(RN+1) "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/GPR(RN+1).WRB..WRPRA,A.DW/@1" W[]<--G[] "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/GPRA.WRB..WRB,A/@2,B/@1" W[]<--M[] "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/WRPRA.MRB..WRPRA,A.DW/@1,B/@2" W[]<--ZEXT.M[] "BASIC/FORMAT,BASIC.FNC/B.ZEXT,BASIC.SD/WRPRA.MRB..WRPRA,A.DW/@1,B/@2" W[]<--NEG.W[] "BASIC/FORMAT,BASIC.FNC/NEG.B,BASIC.SD/WRPRA.WRB..WRPRA,A.DW/@1,B/@2" W[]<--NOT.W[] "BASIC/FORMAT,BASIC.FNC/NOT.B,BASIC.SD/WRPRA.WRB..WRPRA,A.DW/@1,B/@2" ; More BASIC format macros... W[]<--P[] "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/WRPRA.WRB..WRB,A.DP/@2,B/@1" W[]<--T(RN) "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/T(RN).WRB..WRPRA,A.DW/@1,B/MUMBLE" W[]<--T[] "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/TA.WRB..WRB,A.DT/@2,B/@1" W[]<--T[]+1 "BASIC/FORMAT,BASIC.FNC/A.PLUS.1,BASIC.SD/TA.WRB..WRB,A.DT/@2,B/@1" W[]<--VA "BASIC/FORMAT,BASIC.FNC/PASS.A.LONG,BASIC.SD/WRPRA.WRB..WRB,A/VA,B/@1" W[]<--W[] "BASIC/FORMAT,BASIC.FNC/PASS.B.LONG,BASIC.SD/WRPRA.WRB..WRPRA,A.DW/@1,B/@2" W[]<--ZEXT.W[] "BASIC/FORMAT,BASIC.FNC/B.ZEXT,BASIC.SD/WRPRA.WRB..WRPRA,A.DW/@1,B/@2" W[]<--W[]+1 "BASIC/FORMAT,BASIC.FNC/B.PLUS.1,BASIC.SD/WRPRA.WRB..WRPRA,A.DW/@1,B/@2" W[]<--W[]+G[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/GPRA.WRB..WRB,A/@3,B/@1,B/@2" W[]<--W[]+M[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/WRPRA.MRB..WRPRA,A.DW/@1,A.DW/@2,B/@3" W[]<--W[]+T[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/TA.WRB..WRB,A.DT/@3,B/@1,B/@2" W[]<--W[]+VA "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,BASIC.SD/WRPRA.WRB..WRB,B/@1, B/@2,A/VA" W[]<--W[]+W[] "BASIC/FORMAT,BASIC.FNC/A.PLUS.B,A.DW/@2,B/@3, A.ONE/@1,A.TWO/@2,A.THR/@3,BASIC.SD/" W[]<--W[]+W[]+1 "BASIC/FORMAT,BASIC.FNC/A.PLUS.B.PLUS.1,A.DW/@2,B/@3, A.ONE/@1,A.TWO/@2,A.THR/@3,BASIC.SD/" W[]<--W[]+W[]+ALU.C "BASIC/FORMAT,BASIC.FNC/A.PLUS.B.PLUS.ALU.C,A.DW/@2,B/@3, A.ONE/@1,A.TWO/@2,A.THR/@3,BASIC.SD/" W[]<--W[]+W[]+PSL.C "BASIC/FORMAT,BASIC.FNC/A.PLUS.B.PLUS.PSL.C, A.DW/@2,B/@3,A.ONE/@1,A.TWO/@2,A.THR/@3,BASIC.SD/" W[]<--W[]-1 "BASIC/FORMAT,BASIC.FNC/B.MINUS.1,BASIC.SD/WRPRA.WRB..WRPRA,A.DW/@1,B/@2" W[]<--W[]-G[] "BASIC/FORMAT,BASIC.FNC/B.MINUS.A,BASIC.SD/GPRA.WRB..WRB,A/@3,B/@2,B/@1" W[]<--W[]-M[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,BASIC.SD/WRPRA.MRB..WRPRA,A.DW/@1,A.DW/@2,B/@3" W[]<--W[]-W[] "BASIC/FORMAT,BASIC.FNC/A.MINUS.B,A.DW/@2,B/@3, A.ONE/@1,A.TWO/@2,A.THR/@3,BASIC.SD/" W[]<--W[]-W[]-PSL.C "BASIC/FORMAT,BASIC.FNC/A.MINUS.B.PLUS.NOT.PSL.C, A.DW/@2,B/@3,A.ONE/@1,A.TWO/@2,A.THR/@3,BASIC.SD/" W[]<--W[].ANDNOT.M[] "BASIC/FORMAT,BASIC.FNC/A.AND.NOT.B,BASIC.SD/WRPRA.MRB..WRPRA,A.DW/@1,A.DW/@2,B/@3" W[]<--W[].ANDNOT.W[] "BASIC/FORMAT,BASIC.FNC/A.AND.NOT.B,A.DW/@2,B/@3, A.ONE/@1,A.TWO/@2,A.THR/@3,BASIC.SD/" W[]<--W[].OR.W[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,A.DW/@2,B/@3, A.ONE/@1,A.TWO/@2,A.THR/@3,BASIC.SD/" W[]<--W[].OR.P[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/WRPRA.WRB..WRB,A.DP/@3,B/@1,B/@2" W[]<--W[].OR.T[] "BASIC/FORMAT,BASIC.FNC/A.OR.B,BASIC.SD/TA.WRB..WRB,A.DT/@3,B/@1,B/@2" W[]<--W[].XOR.W[] "BASIC/FORMAT,BASIC.FNC/A.XOR.B,A.DW/@2,B/@3, A.ONE/@1,A.TWO/@2,A.THR/@3,BASIC.SD/" .TOC " CONSTANT format macros" CONSOLE.HALT[] "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@1,CONST.SD/TA.K..TA,CONST.ALU/CONST,A.DT/TEMP,GOTO[POWERUP.CONSOLE..]" CONSOLE.HALT.PARAM[] "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@1,CONST.SD/TA.K..TA,CONST.ALU/CONST,A.DT/TEMP" MACHINE.CHECK[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@1,CONST.SD/TA.K..TA,CONST.ALU/CONST,A.DT/MCHK,GOTO[HARDWARE.FLT..]" MACHINE.CHECK.PARAM[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@1,CONST.SD/TA.K..TA,CONST.ALU/CONST,A.DT/MCHK" G[]<--K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/GPRA.K..GPRA,CONST.ALU/CONST,A/@1" G[]<--G[]-K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/GPRA.K..GPRA,CONST.ALU/A.MINUS.CONST,A/@1,A/@2" G[]<--G[].AND.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/GPRA.K..GPRA,CONST.ALU/A.AND.CONST,A/@1,A/@2" G[]<--G[].ANDNOT.11K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@3,CONST.SD/GPRA.K..GPRA,CONST.ALU/A.AND.NOT.CONST,A/@1,A/@2" P[]<--K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..WRPRA,CONST.ALU/CONST,A.DP/@1" P[]<--P[].OR.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,CONST.ALU/A.OR.CONST,A.DP/@1,A.DP/@2" P[]<--P[].ANDNOT.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,CONST.ALU/A.AND.NOT.CONST,A.DP/@1,A.DP/@2" SC<--K[]-W[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@1,CONST.SD/WRPRA.K..SC,A.DW/@2,CONST.ALU/CONST.MINUS.A" SC<--P[].AND.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..SC,A.DP/@1,CONST.ALU/A.AND.CONST" SC<--P[].AND.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..SC,A.DP/@1,CONST.ALU/A.AND.CONST" SC<--P[].ANDNOT.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..SC,A.DP/@1,CONST.ALU/A.AND.NOT.CONST" SC<--W[].AND.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..SC,A.DW/@1,CONST.ALU/A.AND.CONST" SC<--W[].AND.K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..SC,A.DW/@1,CONST.ALU/A.AND.CONST" SC<--W[].AND.K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..SC,A.DW/@1,CONST.ALU/A.AND.CONST" SC<--W[].AND.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..SC,A.DW/@1,CONST.ALU/A.AND.CONST" SC<--W[].AND.111K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@2,CONST.SD/WRPRA.K..SC,A.DW/@1,CONST.ALU/A.AND.CONST" SC<--W[].AND.11K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@2,CONST.SD/WRPRA.K..SC,A.DW/@1,CONST.ALU/A.AND.CONST" SC<--W[].ANDNOT.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..SC,A.DW/@1,CONST.ALU/A.AND.NOT.CONST" ; More CONSTANT format macros... T[]<--K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/TA.K..TA,A.DT/@1,CONST.ALU/CONST" T[]<--K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/TA.K..TA,A.DT/@1,CONST.ALU/CONST" T[]<--K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/TA.K..TA,A.DT/@1,CONST.ALU/CONST" T[]<--T[]+K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.PLUS.CONST" T[]<--T[]+K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.PLUS.CONST" T[]<--T[]-K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.MINUS.CONST" T[]<--T[]-K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.MINUS.CONST" T[]<--T[].AND.1K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.AND.CONST" T[]<--T[].AND.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.AND.CONST" T[]<--T[].ANDNOT.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.AND.NOT.CONST" T[]<--T[].ANDNOT.K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.AND.NOT.CONST" T[]<--T[].ANDNOT.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.AND.NOT.CONST" T[]<--T[].OR.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.OR.CONST" T[]<--T[].OR.K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.OR.CONST" T[]<--T[].OR.K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.OR.CONST" T[]<--T[].OR.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.OR.CONST" T[]<--T[].OR.1K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@3,CONST.SD/TA.K..TA,A.DT/@1,A.DT/@2,CONST.ALU/A.OR.CONST" VA<--G[]+K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/GPRA.K..VA,A/@1,CONST.ALU/A.PLUS.CONST" VA<--G[]-K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/GPRA.K..VA,A/@1,CONST.ALU/A.MINUS.CONST" VA<--VA+K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@1,CONST.SD/WRPRA.K..WRPRA,A/VA,CONST.ALU/A.PLUS.CONST" VA<--VA-K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@1,CONST.SD/WRPRA.K..WRPRA,A/VA,CONST.ALU/A.MINUS.CONST" VA<--VA.ANDNOT.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@1,CONST.SD/WRPRA.K..VA,A/VA,CONST.ALU/A.AND.NOT.CONST" VA<--W[]+K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..VA,A.DW/@1,CONST.ALU/A.PLUS.CONST" VA<--W[]-K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..VA,A.DW/@1,CONST.ALU/A.MINUS.CONST" ; More CONSTANT format macros... W(6)<--P[].ANDNOT.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..W(6),A.DP/@1,CONST.ALU/A.AND.NOT.CONST" W(6)<--VA-K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@1,CONST.SD/WRPRA.K..W(6),A/VA,CONST.ALU/A.MINUS.CONST" W(6)<--W[].AND.K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..W(6),A.DW/@1,CONST.ALU/A.AND.CONST" W(6)<--W[].AND.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..W(6),A.DW/@1,CONST.ALU/A.AND.CONST" W(6)<--W[].ANDNOT.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..W(6),A.DW/@1,CONST.ALU/A.AND.NOT.CONST" W(6)<--W[].OR.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..W(6),A.DW/@1,CONST.ALU/A.OR.CONST" W(6)<--W[].OR.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..W(6),A.DW/@1,CONST.ALU/A.OR.CONST" WBUS<--P[].AND.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DP/@1,CONST.ALU/A.AND.CONST" WBUS<--W[]+K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.PLUS.CONST" WBUS<--W[]-K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.MINUS.CONST" WBUS<--W[].AND.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.AND.CONST" WBUS<--W[].AND.K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.AND.CONST" WBUS<--W[].AND.K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.AND.CONST" WBUS<--W[].AND.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.AND.CONST" WBUS<--W[].ANDNOT.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.AND.NOT.CONST" WBUS<--W[].XOR.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.XOR.CONST" WBUS<--W[].XOR.K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.XOR.CONST" WBUS<--W[].XOR.111K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.XOR.CONST" WBUS<--W[].XOR.11K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@2,CONST.SD/WRPRA.K..ZILCH,A.DW/@1,CONST.ALU/A.XOR.CONST" ; More CONSTANT format macros... W[]<--K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,CONST.ALU/CONST" W[]<--K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,CONST.ALU/CONST" W[]<--K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@2,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,CONST.ALU/CONST" W[]<--KKKK[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/REP.CONST, CONST.BYTE/@2,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,CONST.ALU/CONST" W[]<--W[]+K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.PLUS.CONST" W[]<--W[]+K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.PLUS.CONST" W[]<--W[]+K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.PLUS.CONST" W[]<--W[]+K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.PLUS.CONST" W[]<--W[]-K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.MINUS.CONST" ; More CONSTANT format macros... W[]<--W[].AND.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.CONST" W[]<--W[].AND.K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.CONST" W[]<--W[].AND.11K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.CONST" W[]<--W[].AND.1K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.CONST" W[]<--W[].AND.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.CONST" W[]<--W[].ANDNOT.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.NOT.CONST" W[]<--W[].ANDNOT.K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.NOT.CONST" W[]<--W[].ANDNOT.11K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.NOT.CONST" W[]<--W[].ANDNOT.K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.NOT.CONST" W[]<--W[].ANDNOT.1K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.NOT.CONST" W[]<--W[].ANDNOT.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.AND.NOT.CONST" W[]<--W[].OR.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.OR.CONST" W[]<--W[].OR.K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.OR.CONST" W[]<--W[].OR.K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.OR.CONST" W[]<--W[].OR.K[]000 "CONST/FORMAT,CONST.POS/BYTE3,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.OR.CONST" W[]<--W[].OR.11K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.OR.CONST" W[]<--W[].OR.1K[]00 "CONST/FORMAT,CONST.POS/BYTE2,CONST.FORMAT/MSB.ONES..LSB.ZERO, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.OR.CONST" W[]<--W[].XOR.K[] "CONST/FORMAT,CONST.POS/BYTE0,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.XOR.CONST" W[]<--W[].XOR.K[]0 "CONST/FORMAT,CONST.POS/BYTE1,CONST.FORMAT/ZERO.FILL, CONST.BYTE/@3,CONST.SD/WRPRA.K..WRPRA,A.DW/@1,A.DW/@2,CONST.ALU/A.XOR.CONST" .TOC " SHIFT format macros" WBUS<--W[]!!W[].SHFL.(SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..ZILCH...L(SC),SHIFT.VAL/0,A.DW/@1,B/@2" WBUS<--W[]!!W[].SHFL.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..ZILCH...L(SC),SHIFT.VAL/@3,A.DW/@1,B/@2" WBUS<--W[].SHFL.(SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.0..ZILCH...L(SC),SHIFT.VAL/0,A.DW/@1,B/MUMBLE" WBUS<--W[].SHFL.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.0..ZILCH...L(SC),SHIFT.VAL/@2,A.DW/@1,B/MUMBLE" WBUS<--W[]!!W[].SHFR.(32-SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..ZILCH...L(SC),SHIFT.VAL/0,A.DW/@1,B/@2" WBUS<--W[]!!W[].SHFR.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..ZILCH...R(SC),SHIFT.VAL/@2,A.DW/@1,B/@2" WBUS<--SEXT.W[].SHFR.(SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..ZILCH...R(SC),SHIFT.VAL/0,A.DP/SEXT.N,B/@1" WBUS<--SEXT.W[].SHFR.(32-SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..ZILCH...L(SC),SHIFT.VAL/0,A.DP/SEXT.N,B/@1" WBUS<--SEXT.W[].SHFR.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..ZILCH...R(SC),SHIFT.VAL/@2,A.DP/SEXT.N,B/@1" WBUS<--ZEXT.W[].SHFR.[] "SHIFT/FORMAT,SHIFT.SD/0.WRB..WRPRA...R(SC),SHIFT.VAL/@2,A/PR(RO),B/@1" WBUS<--W[].ROTL.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..ZILCH...L(SC),SHIFT.VAL/@2,A.DW/@1,B/@1" ; More SHIFT format macros... P[]<--ZEXT.W[].SHFR.[] "SHIFT/FORMAT,SHIFT.SD/0.WRB..WRPRA...R(SC),SHIFT.VAL/@3,A.DP/@1,B/@2" W[]<--W[]!!W[].SHFL.(SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRPRA...L(SC),SHIFT.VAL/0,A.DW/@1,A.DW/@2,B/@3" W[]<--W[]!!W[].SHFL.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRPRA...L(SC),SHIFT.VAL/@4,A.DW/@2,A.DW/@1,B/@3" W[]<--P[].SHFL.(SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.0..WRB...L(SC),SHIFT.VAL/0,A.DP/@2,B/@1" W[]<--W[].SHFL.(SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.0..WRB...L(SC),SHIFT.VAL/0,A.DW/@2,B/@1" W[]<--W[].SHFL.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.0..WRB...L(SC),SHIFT.VAL/@3,A.DW/@2,B/@1" W[]<--P[].SHFL.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.0..WRB...L(SC),SHIFT.VAL/@3,A.DP/@2,B/@1" W[]<--G(RN).SHFL.(DL) "SHIFT/FORMAT,SHIFT.SD/GPR(RN).0..WRPRA...L(DL),SHIFT.VAL/0,A.DW/@1,B/0" W[]<--P[]!!W[].SHFR.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRB...R(SC),SHIFT.VAL/@4,A.DP/@2,B/@1,B/@3" W[]<--W[]!!W[].SHFR.(SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRB...R(SC),SHIFT.VAL/0,B/@1,A.DW/@2,B/@3" W[]<--W[]!!W[].SHFR.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRB...R(SC),SHIFT.VAL/@4,A.DW/@2,B/@1,B/@3" W[]<--SEXT.W[].SHFR.(SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRB...R(SC),SHIFT.VAL/0,A.DP/SEXT.N,B/@1,B/@2" W[]<--SEXT.W[].SHFR.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRB...R(SC),SHIFT.VAL/@3,A.DP/SEXT.N,B/@1,B/@2" W[]<--ZEXT.W[].SHFR.(SC) "SHIFT/FORMAT,SHIFT.SD/0.WRB..WRPRA...R(SC),SHIFT.VAL/0,A.DW/@1,B/@2" W[]<--ZEXT.W[].SHFR.[] "SHIFT/FORMAT,SHIFT.SD/0.WRB..WRPRA...R(SC),SHIFT.VAL/@3,A.DW/@1,B/@2" W[]<--W[].ROTL.(SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRPRA...L(SC),SHIFT.VAL/0,A.DW/@1,A.DW/@2,B/@2" W[]<--W[].ROTL.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRPRA...L(SC),SHIFT.VAL/@3,A.DW/@1,A.DW/@2,B/@2" W[]<--W[].ROTR.(SC) "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRB...R(SC),SHIFT.VAL/0,A.DW/@2,A.DW/@1,B/@1" W[]<--W[].ROTR.[] "SHIFT/FORMAT,SHIFT.SD/WRPRA.WRB..WRB...R(SC),SHIFT.VAL/@3,A.DW/@2,A.DW/@1,B/@1" .TOC " MXPR format macros" MXPR[]<--T[] "MXPR/FORMAT,MXPR.REG/@1,MXPR.RD/WRITE,MXPR.SD/TA,A.DT/@2" MXPR[]<--W[] "MXPR/FORMAT,MXPR.REG/@1,MXPR.RD/WRITE,MXPR.SD/WRPRA,A.DW/@2" W[]<--MXPR[] "MXPR/FORMAT,MXPR.REG/@2,MXPR.RD/READ,MXPR.SD/WRPRA,A.DW/@1" .TOC " MEM REQ format macros" G[]<--MEM(VA) "MEM/FORMAT,MEM.SD/GPRA,A/@1,MEM.D/READ" G[]<--MEM(VA).PHYS "MEM/FORMAT,MEM.SD/GPRA,A/@1,MEM.FUNC/R.P.LONG,MEM.LCHECK/1" G[]<--MEM(VAP) "MEM/FORMAT,MEM.SD/GPRA,A/@1,MEM.FUNC/R.V.LONG.VAP,MEM.LCHECK/1" G(RN)<--MEM(VA) "MEM/FORMAT,MEM.SD/GPR(RN),A/MUMBLE,MEM.D/READ" G(RN)<--MEM(VAP) "MEM/FORMAT,MEM.SD/GPR(RN),A/MUMBLE,MEM.FUNC/R.V.LONG.VAP,MEM.LCHECK/1" G(RN)<--MEM(VAP).PHYS "MEM/FORMAT,MEM.SD/GPR(RN),A/MUMBLE,MEM.FUNC/R.P.LONG.VAP,MEM.LCHECK/1" MEM(VA)<--G(RN) "MEM/FORMAT,MEM.SD/GPR(RN),A/MUMBLE,MEM.D/WRITE" MEM(VA)<--G[] "MEM/FORMAT,MEM.SD/GPRA,A/@1,MEM.D/WRITE" MEM(VA)<--T[] "MEM/FORMAT,MEM.SD/TA,A.DT/@1,MEM.D/WRITE" MEM(VA)<--W[] "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.D/WRITE" MEM(VA).PHYS<--G[] "MEM/FORMAT,MEM.SD/GPRA,A/@1,MEM.FUNC/W.P.LONG,MEM.LCHECK/1" MEM(VA).PHYS<--W[] "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.FUNC/W.P.LONG,MEM.LCHECK/1" MEM(VA).UNLOCK<--W[] "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.FUNC/W.V.PSL.UNLOCK" MEM(VAP)<--G[] "MEM/FORMAT,MEM.SD/GPRA,A/@1,MEM.FUNC/W.V.LONG.VAP,MEM.LCHECK/1" MEM(VAP)<--T[] "MEM/FORMAT,MEM.SD/TA,A.DT/@1,MEM.FUNC/W.V.LONG.VAP,MEM.LCHECK/1" MEM(VAP)<--W[] "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.FUNC/W.V.LONG.VAP,MEM.LCHECK/1" MEM(VAP).PHYS<--G(RN) "MEM/FORMAT,MEM.SD/GPR(RN),A/PR(RO),MEM.FUNC/W.P.LONG.VAP,MEM.LCHECK/1" MEM(VAP).PHYS<--T[] "MEM/FORMAT,MEM.SD/TA,A.DT/@1,MEM.FUNC/W.P.LONG.VAP,MEM.LCHECK/1" MEM(VAP).PHYS<--W[] "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.FUNC/W.P.LONG.VAP,MEM.LCHECK/1" PROBE.READ.STATE "MEM/FORMAT,MEM.FUNC/PROBE.R.STATE.AL,A/MUMBLE,MEM.SD/WRPRA" PROBE.WRITE.STATE "MEM/FORMAT,MEM.FUNC/PROBE.W.STATE.AL,A/MUMBLE,MEM.SD/WRPRA" PROBE.READ.CURMODE "MEM/FORMAT,MEM.FUNC/PROBE.R.PSL.AL,A/MUMBLE,MEM.SD/WRPRA" PROBE.WRITE.CURMODE "MEM/FORMAT,MEM.FUNC/PROBE.W.PSL.AL,A/MUMBLE,MEM.SD/WRPRA" PROBE.READ.KERNEL.VAP "MEM/FORMAT,MEM.FUNC/PROBE.R.KERNEL.VAP,A/MUMBLE,MEM.SD/WRPRA" T[]<--MEM(VA) "MEM/FORMAT,MEM.SD/TA,A.DT/@1,MEM.D/READ" T[]<--MEM(VAP).KERNEL "MEM/FORMAT,MEM.SD/TA,A.DT/@1,MEM.FUNC/R.V.KERNEL.LONG.VAP,MEM.LCHECK/1" T[]<--MEM(VAP).PHYS "MEM/FORMAT,MEM.SD/TA,A.DT/@1,MEM.FUNC/R.P.LONG.VAP,MEM.LCHECK/1" WBUS<--MEM(VA) "MEM/FORMAT,MEM.SD/WRPRA,A/PR(RO),MEM.D/READ" WBUS<--MEM(VA).LOCK "MEM/FORMAT,MEM.SD/WRPRA,A/PR(RO),MEM.FUNC/R.V.PSL.LOCK.MOD" WBUS<--MEM(VA).WCHECK "MEM/FORMAT,MEM.SD/WRPRA,A/PR(RO),MEM.FUNC/R.V.PSL.MOD" WBUS<--MEM(VAP).PPTE "MEM/FORMAT,MEM.SD/WRPRA,A/PR(RO),MEM.FUNC/R.V.PTE.LONG.VAP,MEM.LCHECK/1" WBUS<--MEM(VAP).SPTE "MEM/FORMAT,MEM.SD/WRPRA,A/PR(RO),MEM.FUNC/R.P.PTE.LONG.VAP,MEM.LCHECK/1" W[]<--MEM(VA) "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.D/READ" W[]<--MEM(VA).CHECK(AT) "MEM/FORMAT,MEM.FUNC/R.V.PSL.(AT),MEM.SD/WRPRA,A.DW/@1" W[]<--MEM(VA).LOCK "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.FUNC/R.V.PSL.LOCK.MOD" W[]<--MEM(VA).PHYS "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.FUNC/R.P.LONG,MEM.LCHECK/1" W[]<--MEM(VA).WCHECK "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.FUNC/R.V.PSL.MOD" W[]<--MEM(VAP) "MEM/FORMAT,MEM.FUNC/R.V.LONG.VAP,MEM.SD/WRPRA,A.DW/@1,MEM.LCHECK/1" W[]<--MEM(VAP).PHYS "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.FUNC/R.P.LONG.VAP,MEM.LCHECK/1" W[]<--MEM(VA).INT.VEC "MEM/FORMAT,MEM.SD/WRPRA,A.DW/@1,MEM.FUNC/R.INT.VEC.LONG,MEM.LCHECK/1" .TOC " SPECIAL format macros" CLEAR.FPU.PRESENT&STATE5<--0&REMOVE.VAX.TRAP.REQUEST "SPECIAL/FORMAT,SP.MIS1/CLR.FLOAT,SP.MIS2/CLR.STATE5, SP.MIS3/CLEAR.VAX.TRAP.REQUEST,A/MUMBLE" CLEAR.REEXECUTE "SPECIAL/FORMAT,SP.MIS1/CLR.REEXECUTE,SP.MIS2/NOP,SP.MIS3/NOP,A/MUMBLE" ENABLE.CS.READOUT "SPECIAL/FORMAT,SP.MIS1/SET.CS.READOUT,SP.MIS2/NOP,SP.MIS3/NOP,A/MUMBLE" ENABLE.REDUCERS "SPECIAL/FORMAT,SP.MIS1/SET.REDUCERS,SP.MIS2/NOP,SP.MIS3/NOP,A/MUMBLE" GENERATE.VAX.TRAP.REQUEST "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/NOP,SP.MIS3/SET.VAX.TRAP.REQUEST,A/MUMBLE" PC<--BPC "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/PC<--BPC,SP.MIS3/NOP" POP.RLOG "SPECIAL/FORMAT,SP.MIS1/POP.RLOG,SP.MIS2/NOP,SP.MIS3/NOP,A/MUMBLE" REMOVE.VAX.TRAP.REQUEST "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/NOP,SP.MIS3/CLEAR.VAX.TRAP.REQUEST,A/MUMBLE" SET.FPU.PRESENT "SPECIAL/FORMAT,SP.MIS1/SET.FLOAT,SP.MIS2/NOP,SP.MIS3/NOP,A/MUMBLE" STATE3<--1 "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/SET.STATE3,SP.MIS3/NOP,A/MUMBLE" STATE4<--1 "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/SET.STATE4,SP.MIS3/NOP,A/MUMBLE" STATE4<--0 "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/CLR.STATE4,SP.MIS3/NOP,A/MUMBLE" STATE5<--1 "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/SET.STATE5,SP.MIS3/NOP,A/MUMBLE" STATE5<--0 "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/CLR.STATE5,SP.MIS3/NOP,A/MUMBLE" STATE6<--1 "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/SET.STATE6,SP.MIS3/NOP,A/MUMBLE" STATE6<--1&REMOVE.VAX.TRAP.REQUEST "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/SET.STATE6, SP.MIS3/CLEAR.VAX.TRAP.REQUEST,A/MUMBLE" STATE6<--0 "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/CLR.STATE6,SP.MIS3/NOP,A/MUMBLE" STATE7<--1 "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/SET.STATE7,SP.MIS3/NOP,A/MUMBLE" STATE7<--1&REMOVE.VAX.TRAP.REQUEST "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/SET.STATE7, SP.MIS3/CLEAR.VAX.TRAP.REQUEST,A/MUMBLE" STATE7<--0 "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/CLR.STATE7,SP.MIS3/NOP,A/MUMBLE" T[]<--VA "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/T<--WBUS,SP.MIS3/NOP,A.DT/@1" ZAP.MTB "SPECIAL/FORMAT,SP.MIS1/NOP,SP.MIS2/MTB.INVALIDATE,SP.MIS3/NOP,A/MUMBLE" ZAP.MTB(LRU).SET.REPROBE&STATE5<--0 "SPECIAL/FORMAT,SP.MIS1/INVALIDATE.LRU.SET.REPROBE,SP.MIS2/CLR.STATE5,SP.MIS3/NOP,A/MUMBLE" .TOC " SPARE format macros" HALT "SPARE/FORMAT,SPARE.FNC/1F,A/MUMBLE,B/MUMBLE,MISC/NOP" W[]!!SC<--(W[]+(W[]*SC<0>)!!SC)DIV2 "SPARE/FORMAT,SPARE.FNC/CON.ADD.SHIFT,A.DW/@3,B/@1,B/@2" W[]!!SC<--+(W[]+(W[]*SC<0>)!!SC)DIV2 "SPARE/FORMAT,SPARE.FNC/CON.ADD.SHIFT.SIGNED,A.DW/@3,B/@1,B/@2" W[]!!SC<--(W[]!!SC)MUL2 "SPARE/FORMAT,SPARE.FNC/SHIFT.WR!!SC.LEFT,A.DW/@2,B/@1" .TOC " FBOX XFER format macros" FPU.CMD<--T[] "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTCMD,FBOX.XFER.RD/WRITE, FBOX.XFER.SD/TA,A.DT/@1" FPU.CMD<--W[] "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTCMD,FBOX.XFER.RD/WRITE, FBOX.XFER.SD/WRPRA,A.DW/@1" FPU.CMD.ALT<--W[] "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTCMD.ALT,FBOX.XFER.RD/WRITE, FBOX.XFER.SD/WRPRA,A.DW/@1" FPU.DATA<--G[] "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTDATA,FBOX.XFER.RD/WRITE, FBOX.XFER.SD/GPRA,A/@1" FPU.DATA<--G(RN) "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTDATA,FBOX.XFER.RD/WRITE, FBOX.XFER.SD/GPR(RN),A/MUMBLE" FPU.DATA<--T[] "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTDATA,FBOX.XFER.RD/WRITE, FBOX.XFER.SD/TA,A.DT/@1" FPU.DATA<--W[] "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTDATA,FBOX.XFER.RD/WRITE, FBOX.XFER.SD/WRPRA,A.DW/@1" G[]<--FPU.DATA "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTDATA,FBOX.XFER.RD/READ, FBOX.XFER.SD/GPRA,A/@1" G(RN)<--FPU.DATA "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTDATA,FBOX.XFER.RD/READ, FBOX.XFER.SD/GPR(RN),A/MUMBLE" T[]<--FPU.DATA "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTDATA,FBOX.XFER.RD/READ, FBOX.XFER.SD/TA,A.DT/@1" W[]<--FPU.DATA "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTDATA,FBOX.XFER.RD/READ, FBOX.XFER.SD/WRPRA,A.DW/@1" W[]<--FPU.WAIT "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTWAIT,FBOX.XFER.RD/READ, FBOX.XFER.SD/WRPRA,A.DW/@1" W[]<--FPU.WAIT.NOTRAP "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTWAIT.NOTRAP,FBOX.XFER.RD/READ, FBOX.XFER.SD/WRPRA,A.DW/@1" WBUS<--FPU.WAIT.NOTRAP "FBOX.XFER/FORMAT,FBOX.XFER.OP/RTWAIT.NOTRAP,FBOX.XFER.RD/READ, FBOX.XFER.SD/WRPRA,A/PR(RO)" .TOC " BASIC CC macros" SET.ALUCC "X.SETALUCC/1" SET.PSLCC "X.SETPSLCC/1" .TOC " MISC FIELD macros" CLEAR.IB.HALT.BITS "MISC/CLEAR.IB.HALTS" DISABLE.IB.PREFETCH "MISC/DISABLE.IB.PREFETCH" DL<--BYTE "MISC/DL.BYTE" DL<--LONG "MISC/DL.LONG" DL<--WORD "MISC/DL.WORD" ENABLE.IB.PREFETCH "MISC/ENABLE.IB.PREFETCH" ENABLE.MM.TRAPS "MISC/CLEAR.MMGT.TD" ID<--IB.LEN(DL).CASE "MISC/LOAD.ID.LEN(DL).CASE" ID<--IB.LONG.CASE "MISC/LOAD.ID.LONG.CASE" LEN(DL) "X.DL/1" ;Not really a MISC field, just a fake field with no place to go! LONG "X.LONG/1";Not really a MISC field, just a fake field with no place to go! OLD.Z.AND.NEW.Z "MISC/OLD.Z" REEXECUTE "MISC/SET.REEXECUTE.FLAG" RN<--RN+1 "MISC/RN.PLUS.1" RN<--RN-1 "MISC/RN.MINUS.1" RN<--SC "MISC/RN<--SC" SC& "MISC/WRITE.SC" SC<--RN "MISC/SC<--RN" SC<--SC+1 "MISC/SC.PLUS.1" STATE.FLAGS<--0 "MISC/CLEAR.STATE.FLGS" STATE0<--1 "MISC/SET.STATE.FLG.0" STATE1<--1 "MISC/SET.STATE.FLG.1" VA& "MISC/WRITE.VA" VAP& "MISC/WRITE.VAP" W(6)& "MISC/WRITE.W(6)" .TOC " BRANCH type macros" CASE2[].AT.[] "BRANCH/FORMAT,BR.BCS.D/<.AND[7F,]>, BR64T.OFF/,BR64F.OFF/<.SHIFT[,-7]>" CASE4[].AT.[] "BRANCH/FORMAT,BR.BCS.D/<.AND[7F,]>, BR64T.OFF/,BR64F.OFF/<.SHIFT[,-7]>" CASE8[].AT.[] "BRANCH/FORMAT,BR.BCS.D/<.AND[7F,]>, BR64T.OFF/,BR64F.OFF/<.SHIFT[,-7]>" CASE16[].AT.[] "BRANCH/FORMAT,BR.BCS.D/<.AND[7F,]>, BR64T.OFF/,BR64F.OFF/<.SHIFT[,-7]>" EXECUTE.IID "BRANCH/FORMAT,BR.BCS.D/IID" SECOND.IID "BRANCH/FORMAT,BR.BCS.D/SUCCESSIVE.IID" EXECUTE.NSD "BRANCH/FORMAT,BR.BCS.D/NSD" IF[]_[] "BRANCH/FORMAT,BR.BCS.D/@1,BR64T.OFF/" IF[]_[].ELSE.[] "BRANCH/FORMAT,BR.BCS.D/@1,BR64T.OFF/,BR64F.OFF/@3" IF(DL.BWL)_IID "BRANCH/FORMAT,BR.BCS.D/IF.BWL.IID.ELSE.GOTO,R/0" IF(DL.BWL)_IID.ELSE.[] "BRANCH/FORMAT,BR.BCS.D/IF.BWL.IID.ELSE.GOTO, BR64T.OFF/,R/0" IF(AT.RM)_[] "BRANCH/FORMAT,BR.BCS.D/ACCESS.TYPE.R.OR.M, BR64T.OFF/,R/0" IF(AT.AV)_NSD "BRANCH/FORMAT,BR.BCS.D/IF.AV.NSD.ELSE.GOTO,R/0" IF(AT.AV)_NSD.ELSE.[] "BRANCH/FORMAT,BR.BCS.D/IF.AV.NSD.ELSE.GOTO, BR64T.OFF/,R/0" IF(AT.A)_[].IF(BWL.OR.AT.V)_NSD "BRANCH/FORMAT,BR.BCS.D/IF.A.GOTO.IF.V.OR.BWL.NSD, BR64T.OFF/,R/0" IF(AT.AVM)_[].IF(BWL)_NSD "BRANCH/FORMAT,BR.BCS.D/IF.AVM.GOTO.IF.BWL.NSD, BR64T.OFF/,R/0" IF(AT.AVM)_[].(DL.BWL)_NSD "BRANCH/FORMAT,BR.BCS.D/IF.AVM.GOTO.IF.BWL.NSD, BR64T.OFF/,R/0,BR64F.OFF/7FFF" IF(AT.AVMF)_[].IF(BWL)_NSD "BRANCH/FORMAT,BR.BCS.D/IF.AVMF.GOTO.IF.BWL.NSD, BR64T.OFF/,R/0" IF.BCOND.MET.LOAD.V&P.ELSE.IID "BRANCH/FORMAT,BR.BCS.D/IF.BCOND.LD.V&P.ELSE.IID,R/0" IF.MEM.REF.OK.THEN.RETURN[] "BRANCH/FORMAT,BR.BCS.D/IF.MEM.REF.OK.RETURN+BO,BR64T.OFF/@1,R/0" LOAD.V&PC "BRANCH/FORMAT,BR.BCS.D/LOAD.VIBA&PC,R/0" LOAD.V&PC.GOTO[] "BRANCH/FORMAT,BR.BCS.D/LOAD.VIBA&PC,BR64T.OFF/" RETURN "BRANCH/FORMAT,BR.BCS.D/RETURN+BO,BR64T.OFF/0,R/0" RETURN[] "BRANCH/FORMAT,BR.BCS.D/RETURN+BO,BR64T.OFF/@1,R/0" .TOC " JUMP type macros" CALL[] "JMP/FORMAT,JMP.SUB/CALL,JMP.ADD/" CALL.CASE.SPEC[] "JMP/FORMAT,JMP.SUB/CALL,JMP.ADD/,MISC/DECODE.SPECIFIER" CALL.NO.RETURN+1[] "JMP/FORMAT,JMP.SUB/CALL,JMP.ADD/,BR64F.OFF/7FFF" GOTO[] "JMP/FORMAT,JMP.SUB/NOCALL,JMP.ADD/" ID<--IB.LEN(DL).CASE.AT.[] "JMP/FORMAT,JMP.SUB/NOCALL,JMP.ADD/,MISC/LOAD.ID.LEN(DL).CASE" ID<--IB.LONG.CASE.AT.[] "JMP/FORMAT,JMP.SUB/NOCALL,JMP.ADD/,MISC/LOAD.ID.LONG.CASE" JMP.CASE.SPEC[] "JMP/FORMAT,JMP.SUB/NOCALL,JMP.ADD/,MISC/DECODE.SPECIFIER" .TOC " IPLA macro" .ICODE ;Unique use. IPLA[][][][][][][][][][] "OPCODE/@1, IPLA.DL/@2, IPLA.ACCTYP/@3, IPLA.FORK.CODE/@4, IPLA.EXEADDR.FAKE/, IPLA.TRAP/@6, IPLA.PSL.CC/@7, IPLA.FB/@8, IPLA.FPD/@9, BRANCH.IF/@10, IPLA.ILLOPC/0" .UCODE ;Back to regular microcode again. .BIN ;Make room for UCODE binary...