* /* START OF SPECIFICATIONS **** 00050000 *02* PROCESSOR = ASSEMBLER 00052000 **** END OF SPECIFICATIONS ***/ 00054000 TITLE ' TEXT AND MITAB MACRO DEFINITIONS ' 00060000 MACRO 00120000 &LABEL TEXT &ADDR1,&DELIM,&ADDR2 00180000 .*********************************************************************. 00240000 .* CHECK FOR DELIMITER AND ADVANCE TEXT POINTER WHEN APPROPRIATE *. 00300000 .*********************************************************************. 00360000 GBLC &TCP 00420000 &LABEL C &TCP,OPNEND DOES TEXT END HERE ? 00480000 BNL &ADDR1 YES 00540000 AIF ('&DELIM' EQ '').MEND GO IF NO DELIMITER SPECIFIED 00600000 GOIF &DELIM,NE=&ADDR2 GO IF DELIMITER NOT IN TEXT 00660000 LA &TCP,NXTCH POINT TO NEXT CHARACTER 00720000 .MEND MEND 00780000 SPACE 5 00840000 MACRO 00900000 &NAME MITAB 00960000 .*********************************************************************. 01020000 .* THIS MACRO IS ONLY CALLED ONCE.ITS PURPOSE IS TO SET THE GLOBAL *. 01080000 .* VARIABLES USED IN THE CONSTRUCTION OF THE FAR TABLE.THE VARIABLES *. 01140000 .* CORRESPOND TO THE BIT SETTINGS DEFINED IN THE FARENT DSECT - IE *. 01200000 .* &FSNLIT CORRESPONDS TO FSNLIT ETC. *. 01260000 .*********************************************************************. 01320000 GBLA &FSNLIT,&FSALOC,&FILEN,&FIALOC 01380000 GBLA &RIDEC,&RIBND,&RIDIV 01440000 GBLA &RSMOD,&RSALW,&RSDIV 01500000 &FSNLIT SETA 32768 01560000 &FSALOC SETA 4096 01620000 &FILEN SETA 2048 01680000 &FIALOC SETA 256 01740000 &RIDEC SETA 128 01800000 &RIBND SETA 16 01860000 &RIDIV SETA 1 01920000 &RSMOD SETA &RIDEC 01980000 &RSALW SETA 8 02040000 &RSDIV SETA &RIDIV 02100000 &NAME EQU * 02160000 MEND 02220000 TITLE ' OPND MACRO DEFINITION ' 02280000 MACRO 02340000 &NAME OPND &T, TYPE X02400000 &A, ALLOCATION X02460000 &R RESTRICTIONS 02520000 .*********************************************************************. 02580000 .* THIS MACRO IS CALLED TO CONSTRUCT AN OPERAND ENTRY IN THE FAR *. 02640000 .* TABLE.NO CODE IS GENERATED - THE TABLE ENTRY IS PASSED IN THE *. 02700000 .* GLOBAL &E(&I) TO THE NEAREST FOLLOWING OPCD MACRO. *. 02760000 .* THE VALID PARAMETER FORMATS ARE - *. 02820000 .* *. 02880000 .* PARM MEANING FORMAT DESCRIPTION *. 02940000 .* --- ------- ------ ----------- *. 03000000 .* &T TYPE I OR R IMMEDIATE,REGISTER OR MASK. *. 03060000 .* S STORAGE,SHIFT OR I/O UNIT.FORMAT D(B). *. 03120000 .* SX INDEXED STORAGE.FORMAT IS D(X,B). *. 03180000 .* SL STORAGE WITH LENGTH.FORMAT IS D(L,B). *. 03240000 .* &A ALLOCATION N N IS 1,2 OR 3 AND SETS ALLOCATION FOR *. 03300000 .* TYPE I OPERANDS TO FIRST,SECOND OR *. 03360000 .* BOTH HOLFBYTES OF SECOND INSTR BYTE. *. 03420000 .* FOR TYPE S OPERANDS,SETS ALLOCATION TO *. 03480000 .* SECOND,THIRD OR FOURTH HALWORD,RESP. *. 03540000 .* (N,M) USED FOR SX AND SL TYPE OPERANDS.N *. 03600000 .* GIVE S PART ALLOCATION M I PART ALLOC. *. 03660000 .* &R RESTRICTIONS N OR (N,M) FOR I OPERANDS.N IS DIVISIBILITY *. 03720000 .* (POWER OF 2) AND M IS UPPER BOUND *. 03780000 .* (POWER OF 2). *. 03840000 .* A OR *. 03900000 .* (A,B,..) FOR S,SX AND SL OPERANDS.A,B ETC CAN *. 03960000 .* BE EITHER OF *. 04020000 .* H,F,D H,F OR D ALIGNMENT *. 04080000 .* ALW ALWAYS CHECK ALIGNMENT *. 04140000 .* NLIT NO LITERAL ALLOWED *. 04200000 .* MOD MODIFIED AT EXECUTION *. 04260000 .*********************************************************************. 04320000 GBLA &E(5) FAR ENTRY CANDIDATE 04380000 GBLA &I ENTRY INDEX 04440000 GBLA &M MAXIMUM NUMBER OF OPERANDS 04500000 GBLB &ERR ERROR HAS OCCURRED 04560000 GBLA &FSNLIT,&FSALOC,&FILEN,&FIALOC FLAGS 04620000 GBLA &RIDEC,&RIBND,&RIDIV MORE FLAGS 04680000 GBLA &RSMOD,&RSALW,&RSDIV GOOD GRIEF,MORE FLAGS 04740000 LCLA &J SUBSCRIPT 04800000 &I SETA &I+1 POINT TO NEXT ENTRY 04860000 AIF (&I LE &M).CT 04920000 MNOTE 8,'TOO MANY OPERANDS' 04980000 .ERR ANOP 05040000 &ERR SETB 1 05100000 MEXIT 05160000 .* CHECK TYPE 05220000 .* 05280000 .CT AIF ('&T' EQ 'R' OR '&T' EQ 'I').I 05340000 AIF ('&T' EQ 'S').S 05400000 AIF ('&T' EQ 'SX').SX 05460000 AIF ('&T' EQ 'SL').SL 05520000 MNOTE 8,'INVALID TYPE' 05580000 AGO .ERR 05640000 .* I (OR R) TYPE OPERAND 05700000 .* 05760000 .I AIF (N'&A NE 1).IVP 05820000 AIF (&A EQ 1 OR &A EQ 2).I12 05880000 &E(&I) SETA &A*&FIALOC SET FIALOC 05940000 AGO .RIDIV 06000000 .I12 ANOP 06060000 &E(&I) SETA (3-&A)*&FIALOC 06120000 .RIDIV AIF (N'&R EQ 0).OK 06180000 AIF (K'&R(1) EQ 0).RIBND 06240000 &E(&I) SETA &E(&I)+&R(1)*&RIDIV SET RIDIV 06300000 .RIBND AIF (N'&R EQ 1).OK 06360000 AIF (K'&R(2) EQ 0).RIDEC 06420000 &E(&I) SETA &E(&I)+&R(2)*&RIBND SET RIBND 06480000 .RIDEC AIF (N'&R EQ 2).OK 06540000 AIF ('&R(3)' NE 'DEC').IVP 06600000 &E(&I) SETA &E(&I)+&RIDEC SET RIDEC 06660000 AGO .OK 06720000 .* S TYPE OPERAND 06780000 .S AIF (N'&A NE 1).IVP 06840000 .SP ANOP 06900000 &E(&I) SETA &E(&I)+&A(1)*&FSALOC SET FSALOC 06960000 .RS AIF (&J GE N'&R).OK 07020000 &J SETA &J+1 07080000 AIF ('&R(&J)' EQ 'H').H 07140000 AIF ('&R(&J)' EQ 'F').F 07200000 AIF ('&R(&J)' EQ 'D').D 07260000 AIF ('&R(&J)' EQ 'ALW').RSALW 07320000 AIF ('&R(&J)' EQ 'NLIT').FSNLIT 07380000 AIF ('&R(&J)' EQ 'MOD').RSMOD 07440000 .IVP MNOTE 8,'INVALID PARAMETER' 07500000 AGO .ERR 07560000 .H ANOP 07620000 &E(&I) SETA &E(&I)+1*&RSDIV SET RSDIV FOR H ALIGNMENT 07680000 AGO .RS 07740000 .F ANOP 07800000 &E(&I) SETA &E(&I)+2*&RSDIV SET RSDIV FOR F ALIGNMENT 07860000 AGO .RS 07920000 .D ANOP 07980000 &E(&I) SETA &E(&I)+3*&RSDIV SET RSDIV FOR D ALIGNMENT 08040000 AGO .RS 08100000 .RSALW ANOP 08160000 &E(&I) SETA &E(&I)+&RSALW SET RSALW 08220000 AGO .RS 08280000 .FSNLIT ANOP 08340000 &E(&I) SETA &E(&I)+&FSNLIT SET FSNLIT 08400000 AGO .RS 08460000 .RSMOD ANOP 08520000 &E(&I) SETA &E(&I)+&RSMOD SET RSMOD 08580000 AGO .RS 08640000 .* SX TYPE OPERAND 08700000 .* 08760000 .SX AIF (N'&A NE 2).IVP 08820000 AIF (&A(2) EQ 1 OR &A(2) EQ 2).SX12 08880000 &E(&I) SETA &E(&I)+&A(2)*&FIALOC SET FIALOC 08940000 AGO .SP 09000000 .SX12 ANOP 09060000 &E(&I) SETA &E(&I)+(3-&A(2))*&FIALOC 09120000 AGO .SP 09180000 .* SL TYPE OPERAND 09240000 .* 09300000 .SL ANOP 09360000 &E(&I) SETA &E(&I)+&FILEN SET FILEN 09420000 AGO .SX 09480000 .OK ANOP 09540000 MEND 09600000 TITLE ' OPCD MACRO DEFINITION ' 09660000 MACRO 09720000 &NAME OPCD &O 09780000 .*********************************************************************. 09840000 .* THIS MACRO IS CALLED TO GENERATE AN INSTRUCTION ENTRY IN THE FAR *. 09900000 .* TABLE (IF AN IDENTICAL ONE IS NOT ALREADY THERE) AND TO CONSTRUCT *. 09960000 .* A POINTER IN THE FGT OR FGTX TABLE TO THE FAR ENTRY FOR THE *. 10020000 .* INSTRUCTION. *. 10080000 .* THE OPERAND IS THE ONE- OR TWOBYTE OPCODE FOR THE INSTRUCTION. *. 10140000 .* FOR EXTENDED BRANCHES,TWO BYTES MUST BE USED - EG X'07F0' FOR BR *. 10200000 .*********************************************************************. 10260000 GBLA &E(5) CANDIDATE FOR FAR ENTRY 10320000 GBLA &I INDEX IN ENTRY 10380000 GBLB &ERR ERROR HAS OCCURRED 10440000 GBLA &M MAXIMUM NUMBER OF OPERANDS 10500000 GBLA &F1(255),&F2(255),&F3(255),&F4(255),&F5(255) 10560000 GBLA &FGT1(128),&FGT2(128) **** STUPID ASSEMBLER *** 10620000 GBLA &FGTXO(255),&FGTXP(255) FGT FOR EXTENDED OPCODES 10680000 GBLA &FP FAR POINTER 10740000 GBLA &XOCP POINTER FOR EXTENDED OPCODES 10800000 LCLA &J,&N INDICES 10860000 LCLC &FOP(5) FAR OPERANDS 10920000 AIF (&ERR).ERR 10980000 .L1 ANOP 11040000 &J SETA &J+1 11100000 AIF (&J GT &FP).NEW GO MAKE NEW ENTRY 11160000 AIF (&F1(&J) NE &E(1)).L1 GO IF 1:ST OPND NOT EQUAL 11220000 AIF (&F2(&J) NE &E(2)).L1 GO IF 2=ND OPND NOT EQUAL 11280000 AIF (&F3(&J) NE &E(3)).L1 GO IF 3=RD OPND NOT EQUAL 11340000 AIF (&F4(&J) NE &E(4)).L1 GO IF 4=TH OPND NOT EQUAL 11400000 AIF (&F5(&J) NE &E(5)).L1 GO IF 5=TH OPND NOT EQUAL 11460000 .OLD AIF (&O GT X'FF').XOC GO IF EXTENDED OPCODE 11520000 AIF (&O GT 127).FGT2 11580000 &FGT1(&O+1) SETA &J-1 SET FAR POINTER IN FGT 11640000 AGO .OK 11700000 .FGT2 ANOP 11760000 &FGT2(&O-127) SETA &J-1 SET FAR POINTER IN FGT 11820000 AGO .OK 11880000 .XOC ANOP 11940000 &XOCP SETA &XOCP+1 12000000 &FGTXO(&XOCP) SETA &O 12060000 &FGTXP(&XOCP) SETA &J-1 SET FAR POINTER IN FGTX 12120000 AGO .OK 12180000 .NEW ANOP 12240000 &N SETA 2 12300000 .L2 AIF (&N GT &M).GEN 12360000 &FOP(&N) SETC ','.'&E(&N)' 12420000 &N SETA &N+1 12480000 AGO .L2 12540000 .GEN ANOP 12600000 &NAME DC AL2(&E(1)&FOP(2)&FOP(3)&FOP(4)&FOP(5)) 12660000 &FP SETA &FP+1 12720000 &F1(&FP) SETA &E(1) 12780000 &F2(&FP) SETA &E(2) 12840000 &F3(&FP) SETA &E(3) 12900000 &F4(&FP) SETA &E(4) 12960000 &F5(&FP) SETA &E(5) 13020000 AGO .OLD 13080000 .ERR MNOTE 8,'NO TABLE ENTRIES GENERATED' 13140000 AGO .END 13200000 .OK ANOP 13260000 MNOTE *,'FAR ENTRY NUMBER IS &J' 13320000 .END ANOP 13380000 &E(1) SETA 0 13440000 &E(2) SETA 0 13500000 &E(3) SETA 0 13560000 &E(4) SETA 0 13620000 &E(5) SETA 0 13680000 &I SETA 0 13740000 &ERR SETB 0 13800000 MEND 13860000 TITLE ' MIEND MACRO DEFINITION ' 13920000 MACRO 13980000 &NAME MIEND 14040000 .*********************************************************************. 14100000 .* THIS MACRO IS ONLY CALLED ONCE.ITS PURPOSE IS TO GENERATE CODE *. 14160000 .* FOR THE FGT AND FGTX TABLES THAT HAVE BEEN GUILT BY PRECEDING *. 14220000 .* OPCD MACRO INSTRUCTIONS. *. 14280000 .*********************************************************************. 14340000 GBLA &FGT1(128),&FGT2(128) 14400000 GBLA &FGTXO(255),&FGTXP(255),&XOCP 14460000 LCLA &J,&N 14520000 &NAME EQU * FAR GET TABLE FOR INSTRUCTIONS WITH ONE-BYTE OPCODE 14580000 .L1 AIF (&J GE 256).XOC 14640000 AIF (&J GT 127).FGT2 14700000 DC AL1(&FGT1(&J+1),&FGT1(&J+2),&FGT1(&J+3),&FGT1(&J+4),&FGT?14760000 1(&J+5),&FGT1(&J+6),&FGT1(&J+7),&FGT1(&J+8)) 14820000 AGO .COM 14880000 .FGT2 ANOP 14940000 DC AL1(&FGT2(&J-127),&FGT2(&J-126),&FGT2(&J-125),&FGT2(&J-1X15000000 24),&FGT2(&J-123),&FGT2(&J-122),&FGT2(&J-121),&FGT2(&J-1X15060000 20)) 15120000 .COM ANOP 15180000 &J SETA &J+8 15240000 AGO .L1 15300000 .XOC ANOP 15360000 &J SETA 1 15420000 &NAME.X EQU * FAR GET TABLE FOR INSTRUCTIONS WITH EXTENDED OPCODE 15480000 .* 15540000 .* THIS SECTION ASSUMES THAT EXTENDED INSTRUCTIONS HAVE BEEN ENTERED 15600000 .* SORTED IN ASCENDING ORDER ON THE OPCODE. 15660000 &N SETA 1 15720000 AIF (&XOCP EQ 0).OUT 15780000 .L2 AIF (&FGTXO(&J)/256 NE &FGTXO(&N)/256).GEN 15840000 AIF (&FGTXP(&J) NE &FGTXP(&N)).GEN 15900000 &N SETA &N+1 15960000 AIF (&N LE &XOCP).L2 16020000 .GEN DC AL2(&FGTXO(&N-1)) MAX OPCODE 16080000 DC AL1(&FGTXP(&N-1)) FAR ENTRY NUMBER 16140000 &J SETA &N 16200000 AIF (&N LE &XOCP).L2 16260000 .OUT MEND 16320000 TITLE ' GLOBAL DECLARATIONS AND INITIAL SETTINGS FOR X5M ' 16380000 * THE GLOBAL &M IS THE MAXIMUM NUMBER OF OPERANDS IN ANY MACHINE 16440000 * INSTRUCTION.EACH ENTRY IN FAR CONSISTS OF &M HALFWORDS.THE 16500000 * MAXIMUM NUMBER THAT CAN BE ACCOMODATED WITH PRESENT BIT ASSIGNMENTS 16560000 * IS 5 - THREE STORAGE OPERANDS AND TWO IMMEDIATE OPERANDS. 16620000 GBLA &M 16680000 * REGISTERS 16740000 GBLC &SCH SCRATCH REG 16800000 GBLC &RTN RETURN REG 16860000 GBLC &COM PHASE COMMON AREA ADDRESS 16920000 GBLC &SCR SCRATCH - LOCAL USE ONLY 16980000 GBLC &WRK WORK 17040000 GBLC &TBP TEXT BASE POINTER 17100000 GBLC &TCP TEXT CURRENT POINTER 17160000 GBLC &FRG FAR TABLE POINTER 17220000 GBLC &ESD1 ESDID OF EXPRESSION 1 17280000 GBLC &EXP1 VALUE OF EXPRESSION 1 17340000 SPACE 2 17400000 &M SETA 3 17460000 &COM SETC 'R7' 17520000 &SCR SETC 'R14' 17580000 &WRK SETC 'R6' 17640000 &TBP SETC 'R5' 17700000 &TCP SETC 'R10' 17760000 &SCH SETC 'R15' 17820000 &RTN SETC 'R9' 17880000 &ESD1 SETC 'R6' 17940000 &EXP1 SETC 'R4' 18000000 &FRG SETC 'R3' 18060000 * NOTE - R1 AND R2 ARE DESTROYED IN THIS MODULE 18120000 JHEAD 'MACHINE INSTRUCTION PROCESSOR', X18180000 PHASEID=X5M, X18240000 LEVEL=10 18300000 *FUNCTION/OPERATION- * 18360000 * ASSEMBLE MACHINE INSTRUCTIONS. * 18420000 * THE OPERAND LIST OF A MACHINE INSTRUCTION CONSISTS OF NONE OR * 18480000 * MORE OPERANDS,SEPARATED BY COMMAS.EACH OPERAND IS CONSIDERED * 18540000 * TO CONSIST OF AN OPTIONAL 'I PART' AND AN OPTIONAL 'S PART'. * 18600000 * THE FOLLOWING OPERAND TYPES ARE RECOGNIZED - * 18660000 * * 18720000 * TYPE FORMAT DESCRIPTION I PART S PART * 18780000 * ---- ------ ----------- ----- ------ * 18840000 * I I IMMEDIATE,MASK OR REGISTER FIELD I N/A * 18900000 * S D(B) STORAGE,OR SHIFT OR I/O UNIT N/A D(B) * 18960000 * SX D(X,B) INDEXED STORAGE OPERAND X D(B) * 19020000 * SL D(L,B) STORAGE OPERAND WITH LENGTH FIELD L D(B) * 19080000 * * 19140000 * EACH OPERAND IS PROCESSED SEPARATELY.THE PROCESSING IS DRIVEN * 19200000 * BY A TABLE -FAR- THAT DESCRIBES THE OPERAND FORMAT,ALLOCATION * 19260000 * (IN ASSEMBLED INSTRUCTION) AND RESTRICTIONS.THE TABLE ENTRY * 19320000 * FORMAT IS DESCRIBED WITH THE DSECT 'FARENT'. * 19380000 * * 19440000 *ENTRY POINT- * 19500000 * X5M. * 19560000 * * 19620000 *INPUT- * 19680000 * INTERNAL TEXT RECORD - READ BY PHASE MAINLINE TO JTEXT BUFFER. * 19740000 * * 19800000 *OUTPUT- * 19860000 * ASSEMBLED TEXT IN LEFTHF (IN PHASE COMMON). * 19920000 * * 19980000 *EXTERNAL ROUTINES- * 20040000 * X5V - EVALUATE EXPRESSIONS. * 20100000 * X5P - PRINT AND PUNCH. * 20160000 * X5L - LOG ERRORS. * 20220000 * * 20280000 *EXITS,NORMAL- * 20340000 * RETURN TO PHASE MAINLINE. * 20400000 * * 20460000 *EXITS,ERROR- * 20520000 * N/A * 20580000 * * 20640000 *TABLES/WORK AREAS- * 20700000 * FAR - MACHINE INSTRUCTION TABLE(SEE ABOVE). * 20760000 * USING - USING TABLE. * 20820000 * * 20880000 *ATTRIBUTES- * 20940000 * REFRESHABLE. * 21000000 * * 21060000 *NOTES- * 21120000 * INSTRUCTIONS FOR MODIFYING THE FAR TABLE ARE INCLUDED WITH THE * 21180000 * TABLE.TO ACCOMODATE MORE THAN 3 OPERANDS,CHANGE THE GLOBAL &M. * 21240000 * TO HANDLE THREE STORAGE OPERANDS,LEFTHF MUST BE EXPANDED. * 21300000 * * 21360000 SPACE 2 21380000 PRINT OFF DON'T PRINT JCOMMON COPY CODE 21470000 COPY JCOMMON JCOMMON COPY CODE 21480000 PRINT OFF DON'T PRINT JTEXT COPY CODE 21530000 COPY JTEXT JTEXT COPY CODE 21600000 PRINT OFF DON'T PRINT THE X5COM COPY CODE 21660000 COPY X5COM X5COM COPY CODE 21720000 PRINT OFF DON'T PRINT JERMSGCD COPY CODE 21760000 COPY JERMSGCD DEFINE ERROR CODES AND SEVERITY 21770000 PRINT ON THAT'S ALL THE COPY CODE 21772000 SPACE 5 21780000 JTEXTA DSECT RESUME VARIABLE PART OF TEXT 21840000 ORG JTEXTA REORG FOR CURRENT CHARACTER 21900000 CURCH DBV COMMA(JCOMMA), X21960000 LPAREN(JLPARN), X22020000 RPAREN(JRPARN) 22080000 NXTCH EQU * NEXT CHARACTER 22140000 EJECT 22200000 FGTXE DSECT ENTRY IN FGT FOR EXTENDED OPS 22260000 XOPCM DS CL2 OPCODE MASK - TWO BYTES 22320000 XFPTR DS C FAR POINTER 22380000 XNEXT EQU * NEXT ENTRY 22440000 COPY RXLFMTS POST PROCESSOR RECORD FORMATS 22500000 EJECT 22560000 * FARENT 22620000 * 22680000 * THIS DSECT DESCRIBES THE FORMAT OF AN OPERAND ENTRY IN FAR. 22740000 * EACH INSTRUCTION ENTRY IN FAR CONSISTS OF A FIXED NUMBER OF 22800000 * FAR OPERAND ENTRIES.THE FIXED NUMBER IS THE MAXIMUM NUMBER OF 22860000 * OPERANDS IN ANY MACHINE INSTRUCTION AND IS SET THROUGH THE 22920000 * GLOBAL &M. 22980000 * EACH FAR OPERAND ENTRY CONSISTS OF TWO BYTES.THE FORMAT OF THE 23040000 * FIRST BYTE IS - 23100000 * 23160000 * NAME BITS DESCRIPTION 23220000 * ---- ---- ----------- 23280000 * FSNLIT 0 1 LITERAL NOT ALLOWED (WHEN FSALOC NONZERO) 23340000 * 1 NOT USED 23400000 * FSALOC 2-3 00 NO S PART 23460000 * 01 S PART ASSEMBLED INTO HALFWORD 1 23520000 * 10 S PART ASSEMBLED INTO HALFWORD 2 23580000 * 11 NOT USED 23640000 * FILEN 4 1 SUBTRACT 1 FROM EVALUATED I PART(LENGTH FIELD) 23700000 * 5 NOT USED 23760000 * FIALOC 6-7 00 NO I PART 23820000 * 01 I PART ASSEMBLED INTO BITS 12-15 23880000 * 10 I PART ASSEMBLED INTO BITS 8-11 23940000 * 11 I PART ASSEMBLED INTO BITS 8-15 24000000 * 24060000 * THE FORMAT OF THE SECOND BYTE FOR OPERANDS WITHOUT S PART IS - 24120000 * 24180000 * NAME BITS DESCRIPTION 24240000 * ---- ---- ----------- 24300000 * RIDEC 0 1 DECIMAL DIGIT 24360000 * 1 NOT USED 24420000 * RIBND 2-3 00 FIELD WIDTH ONLY BOUND FOR VALUE 24480000 * 01 NOT USED 24540000 * 10 NOT USED 24600000 * 11 VALUE LESS THAN 8 24660000 * 4-5 NOT USED 24720000 * RIDIV 6-7 00 NO DIVISIBILITY CONSTRAINTS 24780000 * 01 VALUE DIVISIBLE BY 2 24840000 * 10 VALUE DIVISIBLE BY 4 24900000 * 11 NOT USED 24960000 * 25020000 * THE FORMAT OF THE SECOND BYTE FOR OPERANDS WITH S PART IS - 25080000 * 25140000 * NAME BITS DESCRIPTION 25200000 * ---- ---- ----------- 25260000 * RSMOD 0 1 OPERAND MODIFIED AT EXECUTION 25320000 * 1-3 NOT USED 25380000 * RSALW 4 1 CHECK ALIGNMENT EVEN IF NOALGN OPTION 25440000 * 5 NOT USED 25500000 * RSDIV 6-7 00 NO ALIGNMENT RESTRICTIONS 25560000 * 01 ALIGN ON HALFWORD BDRY 25620000 * 10 ALIGN ON FULLWORD BDRY 25680000 * 11 ALIGN ON DOUBLEWORD BDRY 25740000 * 25800000 SPACE 25860000 FARENT DSECT 25920000 FENT DS 0H 25980000 FMT DSW FSNLIT, NO LITERAL X26040000 ,,, X26100000 FILEN, LENGTH FIELD *26160000 , *26220000 FIAL1 FIRST BIT OF FIALOC 26280000 FSALOC EQU BIT2+BIT3 S ALLOCATION 26340000 FIALOC EQU BIT6+BIT7 I ALLOCATION 26400000 RIST DSW RIDEC DECIMAL DIGIT 26460000 RIBND EQU BIT2+BIT3 I FIELD UPPER BOUND 26520000 RIDIV EQU BIT6+BIT7 I FIELD DIVISIBILITY 26580000 ORG RIST 26640000 RSST DSW RSMOD, STORAGE MODIFIED X26700000 ,,, X26760000 RSALW ALIGNMENT ALWAYS CHECKED 26820000 RSDIV EQU BIT6+BIT7 S DIVISIBILITY(I.E.,ALIGNMENT) 26880000 NXTFENT EQU * NEXT FAR ENTRY 26940000 ORG FMT 27000000 DBV EOP(0) END OF OPERAND 27060000 EJECT 27120000 JCSECT (X5M00) CREATE CSECT 27300000 * VS1 RELEASE 3.1 CHANGES 27350031 *C579600,580800,594700,594900 OX02675 27352031 *A540500,540540 @OY09690 27352105 *D540600 @OY09690 27352205 *C536400 @AZ07389 27352306 *A590900 @AX13632 27352406 *C876300,877200,880200,881400,884490,884610 @AM07317 27355400 JMODID EMBED MODULE IDENTIFIER 27360000 SPACE 27420000 X5M JSAVE BASE=YES SAVE CALLING REGISTERS 27480000 JENTRY (X5M01=X5M) IDENTIFY ENTRY POINT 27540000 JEXTRN (X5P01=X5P) ENTRY POINT FOR PRINT AND PUNCH 27600000 JEXTRN (X5L01=LOGERR) ENTRY POINT FOR ERROR LOGGING 27660000 JEXTRN (X5V01=X5V) ENTRY POINT FOR EXPR EVALUATION 27720000 USING X5COM,&COM 27840000 USING JTEXT,&TBP 27900000 USING JTEXTA,&TCP 27960000 USING FARENT,&FRG 28020000 USING XRFIN,R11 SETUP BASE FOR XREF RECORD 28080000 EJECT 28140000 *********************************************************************** 28200000 * INIT * 28260000 * INITIALIZE FOR MACHINE INSTRUCTION PROCESSING. * 28320000 *********************************************************************** 28380000 SPACE 28440000 SET (TOOMANY,LEAVE),OFF RESET SWITCHES 28500000 SET ZAPIT,OFF INITLZ SW FOR ZEROING OP CODE 28530000 L &WRK,ELCTR GET LOCATION COUNTER 28560000 TM ELCTR+L'ELCTR-1,BIT7 IS IT ODD ? 28620000 BNO INTLCT NO, STORE 28680000 * PRODUCE ALIGNMENT BYTE FOR PRINTING 28740000 ST &WRK,LOCATN STORE LOCATION CTR IN OUTPUT 28800000 MVI LHFLGS,D1 LENGTH IS ONE 28860000 SET ENTALN,ON INDICATE ALIGNMENT 28920000 LA R10,LSTOUT SET PARAMETER FOR X5P 28980000 JCALL X5P GO PRINT AND PUNCH ALIGNMENR BYTE 29040000 LA &WRK,D1(,&WRK) ROUND LOCTR TO HALFWORD 29100000 ST &WRK,ELCTR STORE IT 29160000 INTLCT ST &WRK,LOCATN SET LOCATION FOR INSTRUCTION 29220000 SPACE 29280000 * GET LENGTH OF INSTRUCTION(NEEDED IN X5V) 29340000 SPACE 29400000 IC &SCR,JTFLGA GET LENGTH FLAGS(IN JTFLGA) 29460000 SLL &SCR,D32-JLN4 SHIFT OUT GARBAGE 29520000 SRL &SCR,D32-(JLN4+D1) SHIFT BACK AND MULTIPLY BY 2 29580000 LA &SCR,D2(,&SCR) ADD 2 (BASIC LENGTH) 29640000 STH &SCR,CLCLNG STORE INSTRUCTION LENGTH 29700000 SPACE 29760000 XC LHIMD(LHFLGS-LHIMD),LHIMD CLEAR LEFTHALF 29820000 MVC LHOPCD,JTIOP MOVE OPCODE TO OUTPUT 29880000 SPACE 29940000 * GET POINTER TO OPERAND LIST 30000000 SPACE 30060000 L &TCP,OPNADR INITIALIZE TEXT POINTER 30120000 SPACE 30180000 * GET ADDRESS OF INSTRUCTION ENTRY IN FAR. 30240000 * THE ENTRY IS LOOKED UP VIA ONE OF TWO AUXILIARY TABLES,FGT AND 30300000 * FGTX.FGT IS USED FOR INSTRUCTIONS WITH ONE-BYTE OPCODE AND IS 30360000 * SIMPLY A TRANSLATION TABLE.FGTX IS USED FOR EXTENDED OPCODE,IE 30420000 * EXTENDED BRANCHES AND TWO-BYTE OPCODES.ITS ENTRIES ARE SORTED IN 30480000 * ASCENDING ORDER ON THE OPCODE. 30540000 SPACE 30600000 SR R2,R2 CLEAR POINTER REG 30660000 GOIF JEXTB,ON=INTXOC GO IF EXTENDED OPCODE 30720000 TRT JTIOP1,FGT GET FAR ENTRY NUMBER IN REG 2 30780000 B INTGFR 30840000 SPACE 30900000 INTXOC LA &SCR,FGTX GET FAR-GET-TABLE ADDRESS FOR 30960000 USING FGTXE,&SCR EXT OPCODES 31020000 INTXCP CLC XOPCM,JTIOP IS THIS THE ENTRY 31080000 BNL INTXFD YES 31140000 LA &SCR,XNEXT NO,TRY 31200000 B INTXCP NEXT ENTRY 31260000 INTXFD IC R2,XFPTR GET FAR ENTRY NUMBER 31320000 SPACE 31380000 INTGFR MH R2,=Y(&M*L'FENT) GET ADDR (REL TO FAR) OF ENTRY 31440000 LA &FRG,FAR(R2) ADD FAR BASE POINTER 31500000 LA &SCR,FARENT+&M*L'FENT GET ADDR OF FAR ENTRY END 31560000 ST &SCR,FNTEND STORE IT 31620000 TEXT DRVCKE GO IF NO OPERAND THERE 31680000 CLC D0(,&FRG),=H'0' ZERO FAR ENTRY. TREAT OPND AS 31720000 BNE DRVRST A COMMENT 31760000 B CLOSE GO OUTPUT 31780000 * END OF INITIALIZATION 31800000 EJECT 31860000 *********************************************************************** 31920000 * DRIVER * 31980000 * FUNCTION * 32040000 * -MONITOR OPERAND PROCESSING. * 32100000 * -DIAGNOSE THE FOLLOWING ERRORS- * 32160000 * ERROR ACTION * 32220000 * ---- ------ * 32280000 * TOO FEW OPERANDS LEAVE * * 32340000 * TOO MANY OPERANDS SCAN SUPERFLUOUS OPERANDS* 32400000 * FOR ERRORS * 32460000 * COMMA EXPECTED AFTER OPERAND LEAVE * 32520000 * * 32580000 * *'LEAVE' MEANS THAT CONTROL IS RETURNED TO PHASE MAINLINE,WITH * 32640000 * UNPROCESSED OPERANDS SET TO ZERO. * 32700000 *********************************************************************** 32760000 SPACE 2 32820000 DRIVERZ SET ZAPIT,ON SET TO ZERO LEFTHALF 32880000 DRIVER GOIF LEAVE,ON=CLOSEZ EXIT IF UNRECOVERABLE ERROR *32940000 OCCURRED DURING OPERAND PROC 33000000 LA &FRG,NXTFENT GET NEXT FORMAT 33060000 CLI D0(R10),JBLANK IS IT BLANK? 33120000 BE DRVCKE YES,GO CHECK IF IT SHOILD BE 33180000 TEXT DRVCKE,COMMA,DRVNCM GO TO DRVCKE IF END OF TEXT, *33240000 DRVNCM IF NOT SO AND NO COMMA 33300000 GOIF EOP,EQ=DRV2MN GO IF END OF FORMAT 33360000 C &FRG,FNTEND LIKE- 33420000 BNL DRV2MN WISE 33480000 DRVRST EQU * RESET SWITCHES AND WORK AREAS 33540000 SET (E2PR,E3PR,E1ERR,E2ERR,E3ERR),OFF RESET SWITCHES 33600000 XC MWORK(MWLEN),MWORK CLEAR WORK AREA 33660000 SR &ESD1,&ESD1 CLEAR 33720000 SR &EXP1,&EXP1 CLEAR 33780000 MVI LQ1+L'LQ1-1,1 SET INITIAL LENGTH ATTR TO 1 33840000 B COLLECT GO SCAN OPERAND 33960000 SPACE 34020000 DRVCKE EQU * NO MORE TEXT.CHECK IF IT SHOULD BE. 34080000 GOIF EOP,EQ=CLOSE GO IF FORMAT END (ALL OK) 34140000 C &FRG,FNTEND LIKE- 34200000 BNL CLOSE WISE 34260000 X5ERRL 210,0,CLOSEZ TOO FEW OPERANDS 34320000 SPACE 34380000 DRVNCM X5ERRL 178,CLMPTR,CLOSEZ SYNTAX ERROR 34432000 SPACE 34440000 DRV2MN EQU * TOO MANY OPERANDS 34500000 GOIF TOOMANY,ON=DRVRST GO IF ALREADY DIAGNOSED 34560000 X5ERRL 211,0 TOO MANY OPERANDS 34620000 SET TOOMANY,ON REMEMBER WE DID 34680000 SET ZAPIT,ON SET TO ZERO LEFTHALF 34730000 B DRVRST CONTINUE 34740000 SPACE 5 34790000 CLOSEZ SET ZAPIT,ON SET TO ZERO LEFTHALF 34800000 EJECT 34860000 *********************************************************************** 34920000 * CLOSE Q 34980000 * WRAP UP INSTRUCTION PROCESSING.CALL PRINT ROUTINE.EXIT * 35040000 *********************************************************************** 35100000 SPACE 2 35160000 CLOSE L &SCR,ELCTR TAKE A LOCATION COUNTER 35280000 LH &SCH,CLCLNG ... AND ITS LENGTH 35340000 AR &SCR,&SCH ADD THEM TOGETHER 35400000 ST &SCR,ELCTR AND YOU HAVE A NEW,BETTER LOCTR 35460000 STC &SCH,LHFLGS SET LENGTH FOR OUTPUT 35520000 GOIF ZAPIT,OFF=CLOSE0 BR IF NO ERROR 35530000 BCTR &SCH,0 DECR LNG BY 1 35540000 EX &SCH,ZAPER ZERO OP CODE 35550000 SPACE 35560000 CLOSE0 C R14,=X'1000000' IS IT GREATER THAN MAXIMUM? 35580000 BL CLOSE1 BRANCH AROUND IF BELOW LIMIT 35640000 GOIF WRPFLG,ON=CLOSE1 BRANCH AROUND IF NOT FIRST 35700000 SET WRPFLG,ON SET WRAPFLAG 35760000 X5ERRL 246,0 LOCATION COUNTER OVERFLOW 35820000 SPACE 35880000 CLOSE1 LA R10,LSTOUT SET PARAMETER FOR X5P 35940000 JCALL X5P PRINT AND/OR PUNCH INSTR 36000000 GOIF JERR,OFF=X5M99 WAS AN ERROR FLAGGED 36060000 LA R10,ERROUT YES, LOAD ERROR FLAG INDEX 36120000 JCALL X5P GO PRINT FLAG 36180000 X5M99 JRETURN , RETURN TO PHASE MAINLINE 36240000 ZAPER XC LHOPCD(*-*),LHOPCD ZERO OPCODE 36270000 EJECT 36300000 *********************************************************************** 36360000 * COLLECT * 36420000 * FUNCTION * 36480000 * -SCAN ONE OPERAND AND COLLECT DATA * 36540000 * -DIAGNOSE THE FOLLOWING ERRORS- * 36600000 * ERROR ACTION * 36660000 * ----- ------ * 36720000 * PREMATURE END OF OPERAND LEAVE * 36780000 * RIGHT PARENTHESES EXPECTED LEAVE * 36840000 * COMPLEXLY RELOCATABLE OPERAND SET TO ZERO * 36900000 * ILLEGAL LITERAL USAGE - * 36960000 * * 37020000 * THE FOLLOWING FORMATS ARE ACCEPTED,REGARDLESS OF FORMAT SPECIFIED* 37080000 * IN FAR TABLE * 37140000 * EXP1 * 37200000 * EXP1(EXP2) * 37260000 * EXP1(,EXP3) * 37320000 * EXP1(EXP2,EXP3) * 37380000 * LITERAL * 37440000 * ALL OTHERS ARE FLAGGED AS SYNTAX ERRORS EITHER BY X5V OR BY THIS * 37500000 * ROUTINE. * 37560000 *********************************************************************** 37620000 SPACE 2 37680000 COLLECT EQU * 37740000 TEXT COLPME GO IF PREMATURE END OF OPERAND 37800000 GOIF D0(R10),JEQUAL,EQ=LIT100 IS OPERAND A LITERAL 37860000 GOIF D0(R10),JCOMMA,NE=CONTIN CONTINUE IF NOT COMMA 37920000 X5ERRL 210,CLMPTR,COLFAT OPERAND MISSING 37980000 SPACE 38040000 CONTIN JCALL X5V EVALUATE EXPRESSION 1 38220000 ST R14,ERRPTR SAVE COLUMN PTR FOR LOGGING 38280000 BC ERRX,COLFAT GO IF FATAL EVALUATION ERROR 38340000 BC CMPX,COLCMP GO IF NONFATAL ERROR 38400000 LR &ESD1,R10 SET ESDID OF EXPR 1 38460000 LR &EXP1,R11 SET VALUE OF EXPR1 38520000 MVC LQ1,IMPLNG ... AND LENGTH ATTRIBUTE 38580000 SPACE 38640000 COLCLP LR &TCP,R14 RECOVER TEXT POINTER FROM X5V 38700000 TEXT COLOUT,LPAREN,COLOUT GO TO COLOUT IF END OF OPERAND *38760000 LIST OR NOT LEFT PAREN 38820000 TEXT COLPME,COMMA,COLEE2 GO TO COLPME IF END OF OPERAND,*38880000 TO COLEE2 IF NOT COMMA 38940000 TM FMT,FIALOC IS EXP2 ALLOWED 38990000 TM FMT,FIALOC IS THERE AN I PART 38992000 BZ IPROC1 NO, LOG AN ERROR 38994000 TM FMT,FSALOC IS THERE AN S PART 38996000 BZ IPROC1 NO, LOG AN ERROR 38998000 SPACE 39000000 COLEE3 JCALL X5V EVALUATE EXPRESSION 3 39060000 ST R14,ERRPTR SAVE COLUMN PTR FOR LOGGING 39120000 LR &TCP,R14 RECOVER TEXT POINTER FROM X5V 39180000 BC ERRX,COLFAT GO IF FATAL EVALUATION ERROR 39240000 BC ABSX,COLE3A GO IF EXP3 ABSOLUTE 39300000 SET E3ERR,ON NOT ABSOLUTE - SET ERROR FLAG 39360000 B COLE3P 39420000 SPACE 39480000 COLE3A ST R11,EXP3 SET EXP3 VALUE 39540000 COLE3P SET E3PR,ON SET EXP3 PRESENT 39600000 COLCRP TEXT COLPME,RPAREN,COLRPE GO TO COLPME IF END OF OPERAND,*39660000 TO COLRPE IF NOT RIGHT PAREN 39720000 TM FMT,FSALOC IS THERE AN S PART 39729000 BZ IPROC1 NO, LOG AN ERROR 39738000 GOIF E3PR,OFF=COLOUT IF ONLY EXP2, EXIT 39747000 TM FMT,FIALOC IS THERE AN I PART 39756000 BZ IPROC1 NO, LOG AN ERROR 39765000 COLOUT GOIF TOOMANY,ON=DRIVER GO IF THIS IS ONE OF TOO MANY 39780000 TM FMT,FSALOC ANY S PART 39840000 BZ IPROC NO 39900000 TM FMT,FIALOC ANY I PART 39960000 BZ SPROC NO 40020000 GOIF FILEN,OFF=SXPROC GO IF SX OPERAND 40080000 B SLPROC GO PROCESS SL OPERAND 40140000 COLPME X5ERRL 212,CLMPTR PREMATURE END OF OPERAND 40200000 COLFAT SET LEAVE,ON FATAL ERROR - DONT COLLECT MORE 40260000 B COLOUT TRY WITH WHAT YOU GOT 40320000 SPACE 40380000 COLCMP EQU * EXP1 COMPLEXLY RELOCATABLE,OR WHAT ? 40440000 SET ZAPIT,ON SET TO ZERO LEFT HALF 40480000 GOIF COMPLEX,NE=COLCLP IF NOT COMPLEX,NON-SYNTATIC 40520000 SET E1ERR,ON SET EXPRESSION 1 ERROR 40560000 X5ERRL 213,CLMPTR,COLCLP COMPLEXLY RELOCATABLE 40620000 SPACE 40800000 COLLIT GOIF FSNLIT,OFF=COLOUT GO IF LITERAL ALLOWED 40860000 SET ZAPIT,ON SET TO ZERO LEFTHALF 40910000 X5ERRL 214,CLMPTR,COLOUT ILLEGAL LITERAL USAGE 40920000 SPACE 40980000 COLEE2 JCALL X5V EVALUATE EXPRESSION 2 41100000 ST R14,ERRPTR SAVE COLUMN PTR FOR LOGGING 41160000 LR &TCP,R14 RECOVER TEXT POINTER FROM X5V 41220000 BC ERRX,COLFAT GO IF FATAL EVALUATION ERROR 41280000 BC ABSX,COLE2A GO IF EXP2 ABSOLUTE 41340000 SET E2ERR,ON NOT ABSOLUTE - SET ERROR FLAG 41400000 B COLE2P 41460000 SPACE 41520000 COLE2A ST R11,EXP2 SET EXP2 VALUE 41580000 COLE2P SET E2PR,ON SET EXP2 PRESENT 41640000 TEXT COLPME,COMMA,COLCRP GO TO COLPME IF END OF OPERAND,*41700000 TO COLCRP IF NOT COMMA 41760000 B COLEE3 GO HANDLE EXP3 41820000 SPACE 41880000 COLRPE X5ERRL 215,CLMPTR,COLFAT RIGHT PAREN EXPECTED 41940000 EJECT 42000000 *********************************************************************** 42060000 * IPROC * 42120000 * FUNCTION * 42180000 * -PROCESS I TYPE OPERAND * 42240000 * -DIAGNOSE THE FOLLOWING ERRORS- * 42300000 * ERROR ACTION * 42360000 * ----- ------ * 42420000 * ILLEGAL FORMAT FOR I OPERAND SET TO ZERO * 42480000 * OPERAND IS RELOCATABLE SET TO ZERO * 42540000 * FIELD OVERFLOW TRUNCATED * 42600000 * BOUND EXCEEDED - * 42660000 * DIVISIBILITY ERROR - * 42720000 *********************************************************************** 42780000 SPACE 42840000 IPROC GOIF (E2PR,E3PR),OFF=IPRNFE GO IF NEITHER EXP2 NOR EXP3 PR 42900000 SPACE 42950000 IPROC1 X5ERRL 216,CLMPTR,DRIVERZ ILLEGAL FORMAT 42960000 IPRNFE GOIF E1ERR,ON=DRIVER GO IF COMPLEXLY RELOCATABLE 43020000 LTR &ESD1,&ESD1 IS IT ABSOLUTE 43080000 BZ IPRABS YES 43140000 X5ERRL 217,CLMPTR,DRIVERZ I OPERAND RELOCATABLE 43200000 IPRABS JCALL CDIV,BASE=NO CHECK DIVISIBILITY 43260000 BNZ IPRBER NOT OK, GO LOG ERROR 43320000 ST &EXP1,EXP2 SET PARAMETER FOR IASGN 43440000 JCALL IASGN,BASE=NO ASSIGN AND CHECK FOR(FIELD)SIZE 43500000 BL IPRBND GO IF OK 43560000 GOIF RIDEC,ON=IPRDEC SHOULD IT BE DEC DIGIT ? 43610000 X5ERRL 219,CLMPTR,DRIVERZ FIELD OVERFLOW 43620000 IPRBND TM RIST,RIBND+RIDEC ANY BOUND REQUIREMENT 43680000 BZ DRIVER NO 43740000 GOIF RIDEC,ON=IPRDEC GO IF IT SHOULD BE DEC DIGIT 43800000 SR R2,R2 ZERO REGISTER 43860000 MVC DWORD1(L'RIST),RIST GET RESTRICTION BYTE 43920000 NI DWORD1,RIBND STRIP OFF NON-BOUND BITS 43980000 IC R2,DWORD1 GET BOUND BITS 44040000 SRL R2,4 SHIFT TO LOWER HALF BYTE 44100000 STC R2,DWORD1 RESTORE BOUND BITS 44160000 TRT DWORD1(L'RIST),IPRTAB GET TEST BITS IN REG 2 44220000 LCR R2,R2 COMPLEMENT 44280000 NR R2,&EXP1 RESULT SHOULD BE ZERO 44340000 BZ DRIVER IT IS 44400000 IPRBER X5ERRL 218,0,DRIVERZ INVALID REGISTER SPECIFICATION 44460000 IPRDEC C &EXP1,=F'10' IS IT A DECIMAL DIGIT 44520000 BNL DECERR ERROR IF GE THAN 10 44550000 LTR R4,R4 IS IT NEGATIVE 44580000 BNM DRIVER OK IF NOT NEGATIVE 44640000 DECERR X5ERRL 162,CLMPTR,DRIVERZ DECIMAL DIGIT ERROR 44670000 SPACE 44700000 IPRTAB DC AL1(0,2,4,8) TABLE OF TEST BITS 44760000 EJECT 44820000 *********************************************************************** 44880000 * SPROC * 44940000 * FUNCTION * 45000000 * -REFORMAT THE DATA COLLECTED FOR SPART INPUT * 45060000 * -DIAGNOSE THE FOLLOWING ERRORS- * 45120000 * ERROR ACTION * 45180000 * ----- ------ * 45240000 * NO INDEX OR LENGTH FIELD EXPECTED - * 45300000 *********************************************************************** 45360000 SPACE 45420000 SPROC GOIF E3PR,ON=SPRSE3 GO IF EXP3 PRESENT 45480000 GOIF E2PR,OFF=SPART GO IF NO EXP2 PRESENT 45540000 SET E3PR,ON PRETEND EXP3 IS EXP2 45600000 MVC EXP3,EXP2 --- 45660000 GOIF E2ERR,ON=SPRE2R GO IF REL BASE 45720000 SPRFG2 SET E2PR,OFF FORGET EXP2 45780000 B SPART 45840000 SPRSE3 GOIF E2PR,OFF=SPART DONT MENTION IF EXP2 NOT THERE 45900000 SET ZAPIT,ON SET TO ZERO LEFTHALF 45950000 X5ERRL 221,CLMPTR,SPRFG2 ILLEGAL LENGTH OR INDEX 45960000 SPRE2R SET E3ERR,ON EXP2 WAS EXP3,WASN'T IT ? 46020000 B SPART 46080000 EJECT 46140000 *********************************************************************** 46200000 * SXPROC * 46260000 * FUNCTION * 46320000 * -PROCESS INDEX FIELD IN SX OPERAND * 46380000 * -DIAGNOSE THE FOLLOWING ERRORS- * 46440000 * ERROR ACTION * 46500000 * ----- ------ * 46560000 * INDEX NOT ABSOLUTE SET TO ZERO * 46620000 * INDEX FIELD OVERFLOW TRUNCATED * 46680000 *********************************************************************** 46740000 SXPROC EQU * 46800000 GOIF E2PR,OFF=SPART GO IF INDEX NOT EXPLICIT 46860000 GOIF E2ERR,ON=SXPXNA GO IF INDEX NOT ABSOLUTE 46920000 OC EXP2,EXP2 IS INDEX ZERO ? 46980000 BZ SPART YES,IGNORE IT 47040000 JCALL IASGN,BASE=NO MOVE INDEX TO OBJECT CODE 47100000 BL SPARTX GO IF NO OVERFLOW 47160000 X5ERRL 222,CLMPTR,SPARTXZ INVALID INDEX 47220000 SPACE 47270000 SXPXNA X5ERRL 223,CLMPTR,SPARTXZ RELOCATABLE INDEX 47280000 EJECT 47340000 *********************************************************************** 47400000 * SLPROC * 47460000 * FUNCTION * 47520000 * -PROCESS LENGTH FIELD IN SL OPERAND * 47580000 * -DIAGNOSE THE FOLLOWING ERRORS- * 47640000 * ERROR ACTION * 47700000 * ----- ------ * 47760000 * LENGTH NOT ABSOLUTE IMPLIED LENGTH USED * 47820000 * LENGTH FIELD OVERFLOW TRUNCATED * 47880000 *********************************************************************** 47940000 SPACE 2 48000000 SLPROC EQU * 48060000 GOIF E2PR,ON=SLPLE2 GO IF EXPLICIT LENGTH 48120000 LH &SCR,LQ1 GET IMPLIED LENGTH 48180000 SPACE 48240000 SLPLS1 LTR &SCR,&SCR IS IT ZERO ? 48300000 BZ SPART YES 48360000 BCTR &SCR,0 SUBTRACT 1 FROM LENGTH 48420000 ST &SCR,EXP2 STORE MOVE LENGTH IN EXP2 48480000 JCALL IASGN,BASE=NO MOVE LENGTH TO OBJECT CODE 48540000 BL SPART GO IF NOT TOO BIG 48600000 X5ERRL 224,CLMPTR,SLPROCZ LENGTH ERROR 48660000 SPACE 48710000 SLPLE2 GOIF E2ERR,ON=SLPELR GO IF LENGTH ERROR 48720000 L &SCR,EXP2 GET EXPLICIT LENGTH 48780000 B SLPLS1 48840000 SLPELR X5ERRL 225,CLMPTR RELOCATABLE LENGTH 48900000 SPACE 48960000 SLPROCZ SET ZAPIT,ON SET TO ZERO LEFTHALF 49010000 EJECT 49020000 *********************************************************************** 49080000 * SPART * 49140000 * FUNCTION * 49200000 * -PROCESS S PART OF STORAGE OPERAND * 49260000 * -DECOMPOSE IMPLICIT VALUES INTO BASE-DISPLACEMENT * 49320000 * -DIAGNOSE THE FOLLOWING ERRORS- * 49380000 * ERROR ACTION * 49440000 * ----- ------ * 49500000 * RELOCATABLE DISPLACEMENT SET TO ZERO * 49560000 * BASE NOT ABSOLUTE SET TO ZERO * 49620000 * ADDRESSABILITY ERROR BASE,DISP SET TO ZERO * 49680000 * BASE REG FIELD OVERFLOW TRUNCATED * 49740000 * DISPLACEMENT FIELD OVERFLOW * 49800000 * (IE,DISP NOT IN RANGE -4096 TO 4095) TRUNCATED * 49860000 * ALIGNMENT ERROR - * 49920000 * REENTERABILITY ERROR - * 49980000 * ENTRY POINTS - SPART,SPARTX * 50040000 *********************************************************************** 50100000 SPACE 50220000 * CHECK ALIGNMENT 50280000 SPACE 50340000 SPART GOIF E3PR,OFF=SPALG1 GO IF NO EXPLICIT BASE 50400000 OC EXP3,EXP3 IS BASE ZERO 50460000 BNZ SPARTX NO 50520000 SPACE 50580000 SPALG1 GOIF RSALW,ON=SPALGN GO IF ALGN ALWAYS TO BE CHECKED 50640000 GOIF JALGN,OFF=SPARTX GO IF NOALGN OPTION 50700000 SPALGN JCALL CDIV,BASE=NO CHECK ALIGNMENT 50760000 BZ SPARTX GO IF OK 50820000 X5ERRL 220,CLMPTR,SPARTX ALIGNMENT ERROR 50880000 SPACE 50940000 SPARTXZ SET ZAPIT,ON SET TO ZERO LEFTHALF 51000000 SPACE 51060000 SPARTX GOIF E3PR,OFF=SPAHK1 GO IF NO EXPLICIT BASE 51120000 GOIF E3ERR,OFF=SPAEA1 GO IF BASE OK 51180000 X5ERRL 226,CLMPTR BASE NOT ABSOLUTE 51240000 SET ZAPIT,ON SET TO ZERO LEFTHALF 51290000 SPAEA1 LTR &ESD1,&ESD1 IS EXP1 ABSOLUTE 51300000 BNZ SPARDP NO - RELOCATABLE DISPLACEMENT 51360000 SPACE 51420000 SPAHKD STH &EXP1,DISPL SAVE DISPLACEMENT 51480000 CL &EXP1,=F'4096' IS IT LT 4096 51540000 BL SPASGN NO,ERROR 51600000 X5ERRL 208,0,SPASGNZ DISPLACEMENT TOO LARGE 51760000 SPACE 51800000 SPARDP X5ERRL 228,CLMPTR,SPASGNZ RELOCATABLE DISPLACEMENT 51840000 SPAHK1 GOIF E1ERR,ON=DRIVER GO IF EXP1 COMPL RELOCATABLE 52020000 LTR &ESD1,&ESD1 IS EXP1 ABSOLUTE 52080000 BNZ SPAREL NO 52140000 GOIF ABSUS,OFF=SPAHKD GO IF NO ABS USING IS CURRENT 52200000 SPACE 52260000 * ATTEMPT DECOMPOSITION 52320000 SPACE 52380000 SPADEC LA &SCH,USINGT GET USING TABLE ADDRESS 52440000 USING UESD,&SCH USE THE USING USING 52500000 SPACE 52560000 SPATRY CH &ESD1,UESD IS IT SAME ESDID 52620000 BH SPAAER ADDR ERROR IF HIGH 52680000 BE SPAMBS EQUAL - MAYBE SUCCESS 52740000 SPAPNE LA &SCH,USNXT POINT TO NEXT ENTRY 52800000 B SPATRY GO TRY IT 52860000 SPAMBS LTR &ESD1,&ESD1 IS IT ABSOLUTE 52920000 BZ SPAABS YES 52980000 SPACE 53040000 SPAG1V LR &SCR,&EXP1 GET EXP1 VALUE 53100000 S &SCR,UVAL GET TENTATIVE DISPLACEMENT 53160000 BM SPAPNE NEG DISP NOT VALID HERE 53220000 C &SCR,=F'4096' IS IT LT 4096 53280000 BNL SPAPNE * NO - TRY NEXT (IT WILL FAIL) 53340000 STH &SCR,DISPL SAVE DISPLACEMENT 53400000 LH &SCR,UREG * GET USING REG 53460000 ST &SCR,EXP3 SAVE IT 53520000 B SPASGN 53580000 SPAABS CLI UREG+1,X'00' REG 0 (END OF TABLE) @AZ07389 53640006 BNZ SPAG1V NO 53700000 B SPAHKD YES - CHECK DISPLACEMENT 53760000 SPACE 53820000 SPAREL GOIF JRENT,OFF=SPADEC GO IF NORENT OPTION 53940000 GOIF RSMOD,OFF=SPADEC GO IF OPERAND NOT STORED INTO 54000000 STH &ESD1,JHWORD1 TEST FOR OPERAND- @OY09690 54050005 TM JHWORD1,X'50' IN DSECT OR Q-CONST @OY09690 54052005 BM SPADEC BR IF SO. @OY09690 54054005 X5ERRL 229,CLMPTR,SPADEC REENTERABILITY ERROR 54120000 SPAAER X5ERRL 209,CLMPTR,DRIVERZ ADDRESSABILITY ERROR 54180000 SPACE 54240000 SPASGNZ SET ZAPIT,ON SET TO ZERO LEFTHALF 54290000 SPACE 54292000 SPASGN PACK SALOC,FMT GET ZERO+GARBAGE+S PART ALLOC 54360000 NI SALOC+D1,FSALOC/D16 STRIP OFF GARBAGE 54420000 LH &SCH,SALOC HALFWORD NUMBER INTO REG 54480000 SLL &SCH,D2 MULTIPLY BY 4 54540000 ST &EXP1,ADDRS1-D4(&SCH) STORE INTO ADDR1 OR -2 54600000 SRL &SCH,D1 DIVIDE OFFSET BY 2 54660000 LA &SCH,LHOPCD(&SCH) SCH NOW CONTAINS TARGET ADDRESS 54720000 MVC D0(L'DISPL,&SCH),DISPL MOVE DISPL TO INSTRUCTION 54780000 MVO D0(L'BASEX,&SCH),BASEX MOVE BASE 54840000 CLC EXP3,=F'16' * IS BASE REG LT 16 54900000 BL DRIVER YES 54960000 X5ERRL 230,CLMPTR,DRIVERZ BASE REGISTER TOO LARGE 55020000 EJECT 55140000 * CDIV 55200000 * 55260000 * CHECK DIVISIBILITY (FOR PURE I OPERANDS) AND ALIGNMENT ( FOR 55320000 * OPERANDS WITH S PART).RETURN WITH CC=0 IF OK.REG 2 IS DESTROYED. 55380000 * 55440000 SPACE 55500000 CDIV TM RIST,RIDIV ANY DIVISIBILITY REQUIRED ? 55620000 BZR &RTN NO - RETURN WITH CC 0. 55680000 MVC DWORD1(L'RIST),RIST GET RESTRICTION FIELD 55740000 NI DWORD1,RIDIV STRIP OFF ALL BUT DIV BITS 55800000 SR R2,R2 CLEAR 55860000 TRT DWORD1(L'RIST),CDVTAB GET TEST BITS IN REG 2 55920000 NR R2,&EXP1 RESULT SHOULD BE ZERO 55980000 BR &RTN RETURN 56040000 CDVTAB DC AL1(0,1,3,7) TABLE TO GET TEST BITS 56100000 EJECT 56160000 * IASGN 56220000 * 56280000 * MOVE I PART VALUE TO INSTRUCTION.SET CC=1 IF NO FIELD OVERFLOW. 56340000 * 56400000 SPACE 56580000 IASGN TM FMT,FIALOC IS IT 4-BIT OR 8-BIT FIELD 56640000 BM IAS4BT 4-BIT IF MIXED 56700000 MVC LHIMD,I MOVE TO INSTRUCTION 56760000 CLC EXP2,=F'256' SET CONDITION CODE 56820000 BR &RTN 56880000 SPACE 56940000 IAS4BT GOIF FIAL1,ON=IASFHB GO IF FIELD IN FIRST HALF-BYTE 57000000 MVN LHIMD,I MOVE TO 2ND HALF-BYTE 57060000 B IAS4BR GO SET CC 57120000 SPACE 57180000 IASFHB MVO LHIMD,I MOVE TO 1ST HALF-BYTE 57240000 SPACE 57300000 IAS4BR CLC EXP2,=F'16' SET CONDITION CODE 57360000 BR &RTN RETURN 57420000 EJECT 57480000 *********************************************************************** 57540000 * LITERAL OPERAND PROCESSING * 57600000 *********************************************************************** 57660000 LIT100 LR R6,R10 SAVE TEXT POINTER 57720000 ST R6,ERRPTR SAVE COLUMN PTR FOR LOGGING 57750000 CLI D1(R10),JBLANK CAN'T HAVE A BLANK FOLLOWING 57760000 BE LIT140 OR IT'S CURTAINS FOR THIS GUY 57770000 LH R10,JINFILE POINT TO INPUT FILE 57780000 JGETL FILE=(R10) GET LITERAL REFERENCE 57840000 L R9,SYMXRF GET SYMBOL XREFED OX02675 57960031 LA R9,D1(R9) INCREMENT 1 58020000 ST R9,SYMXRF STORE BACK OX02675 58080031 CLI D4(R11),JTLITII IS IT LITERAL REFERENCE REC 58140000 BE LIT125 BRANCH AROUND IF YES 58200000 SPACE 58250000 X5ERRL 167,0,CLOSEZ SYMBOL FILE OUT OF PHASE 58260000 SPACE 58320000 LIT125 LH R10,D6(R11) GET LITERAL ESDID 58380000 LTR R10,R10 IS IT ZERO? 58440000 BNZ LIT150 INVALID LITERAL IF YES 58500000 SPACE 58550000 LIT140 X5ERRL 161,CLMPTR,CLOSEZ INVALID LITERAL 58610000 SPACE 58680000 LIT150 MVC LCTRSAV(4),D8(R11) SAVE LITERAL LOCTR 58740000 MVC LCTRSAV+D4(2),D6(R11) SAVE LITERAL ESDID 58800000 SR R2,R2 CLEAR REGISTER 58860000 IC R2,D2(R11) GET LENGTH ATTRIBUTE 58920000 LA R2,D1(R2) INCREMENT 1 58980000 STH R2,LQ1 SAVE IT 59040000 SR R2,R2 CLEAR REGISTER @AX13632 59090006 IC R2,D5(R11) GET LITERAL LENGTH 59100000 LA R2,D1(R2,R6) POINT AFTER LITERAL 59160000 ST R2,LHSAVE SAVE IT 59220000 SR R2,R2 CLEAR REGISTER 59280000 IC R2,D3(R11) GET SYMBOL COUNT 59340000 LTR R2,R2 IS IT ZERO? 59400000 BZ LIT175 BRANCH IF YES 59460000 L R9,SYMXRF GET SYMBOLS XREFED OX02675 59470031 AR R9,R2 INCREMENT BY NO. OF SYMBOLS 59480000 ST R9,SYMXRF STOR BACK OX02675 59490031 LIT165 LH R10,JINFILE GET INPUT FILE INDEX 59580000 JGETL FILE=(R10) GET SYMBOL RECORD 59640000 BCT R2,LIT165 GO BACK IF MORE 59940000 SPACE 60000000 LIT175 GOIF (JXREF,JLIST),NOTALL=LIT200 NEED TO XREF? 60060000 LH R10,JOUTFILE GET OUTPUT FILE NUMBER 60120000 JPUTL FILE=(R10),BUFREQ=D18 LOCATE NEXT BUFFER 60180000 MVC XRFIN(6),=AL2(17,0,JY*256) XREF RECORD HEADER 60240000 MVC LITLOCTR(4),LCTRSAV PUT IN LITERAL LOCTR 60300000 MVC LITESDID(2),LCTRSAV+4 PUT IN LITERAL ESDID 60360000 LH R6,LITPID GET POOL ID 60420000 LA R6,1(R6) ADD 1 60480000 SLL R6,8 PUT POOL ID IN THE RIGHT PLACE 60540000 STH R6,LITPOLID PUT POOLID IN RECORD 60600000 MVI XRFFLG,REF INDICATE A REFERENCE 60660000 MVC XRFSTM,STMTN+D2 MOVE IN STATEMENT NUMBER 60720000 LIT200 EQU * 60780000 L R10,LHSAVE RESTORE OPERAND POINTER 60840000 LH R6,LCTRSAV+4 PUT IN LITERAL ESDID 60900000 L R4,LCTRSAV PUT IN LITERAL LOCTR 60960000 B COLLIT GO COLLECT OPERAND 61020000 EJECT 61080000 *********************************************************************** 61140000 * FAR TABLE * 61200000 * THE FUNCTION OF THIS TABLE IS DESCRIBED IN THE MODULE PROLOGUE. * 61260000 * THE TABLE,AS WELL AS THE FGT AND FGTX TABLES ARE GENERATED BY * 61320000 * FOUR MACROS - MITAB (GLOBAL INITIALIZATION),OPND (DESCRIBE AN * 61380000 * OPERAND),OPCD (GIVE INSTRUCTION OPCODE) AND MIEND (WRAP-UP,GENE- * 61440000 * RATE FGT AND FGTX TABLES). * 61500000 * EACH MACHINE INSTRUCTION IS DESCRIBED BY ONE OPND INSTRUCTION * 61560000 * PER OPERAND,FOLLOWED BY AN OPCD INSTRUCTION. * 61620000 * NOTE MACHINE INSTRUCTIONS WITH EXTENDED OPCODE MUST BE ENTERED * 61680000 * IN ASCENDING SEQUENCE ON THE OPCODE. * 61740000 *********************************************************************** 61800000 SPACE 2 61860000 FAR MITAB , SET GLOBALS FOR FAR MACROS 61920000 SPM OPND R,1 61980000 OPCD X'04' 62040000 BALR OPND R,1 62100000 OPND R,2 62160000 OPCD X'05' 62220000 BCTR OPND R,1 62280000 OPND R,2 62340000 OPCD X'06' 62400000 BCR OPND I,1 62460000 OPND R,2 62520000 OPCD X'07' 62580000 SSK OPND R,1 62640000 OPND R,2 62700000 OPCD X'08' 62760000 ISK OPND R,1 62820000 OPND R,2 62880000 OPCD X'09' 62940000 SVC OPND I,3 I FIELD IS IN WHOLE I BYTE 63000000 OPCD X'0A' 63060000 MVCL OPND R,1,1 EVEN REGS 63120000 OPND R,2,1 63180000 OPCD X'0E' 63240000 CLCL OPND R,1,1 63300000 OPND R,2,1 63360000 OPCD X'0F' 63420000 LPR OPND R,1 63480000 OPND R,2 63540000 OPCD X'10' 63600000 LNR OPND R,1 63660000 OPND R,2 63720000 OPCD X'11' 63780000 LTR OPND R,1 63840000 OPND R,2 63900000 OPCD X'12' 63960000 LCR OPND R,1 64020000 OPND R,2 64080000 OPCD X'13' 64140000 NR OPND R,1 64200000 OPND R,2 64260000 OPCD X'14' 64320000 CLR OPND R,1 64380000 OPND R,2 64440000 OPCD X'15' 64500000 OR OPND R,1 64560000 OPND R,2 64620000 OPCD X'16' 64680000 XR OPND R,1 64740000 OPND R,2 64800000 OPCD X'17' 64860000 LR OPND R,1 64920000 OPND R,2 64980000 OPCD X'18' 65040000 CR OPND R,1 65100000 OPND R,2 65160000 OPCD X'19' 65220000 AR OPND R,1 65280000 OPND R,2 65340000 OPCD X'1A' 65400000 SR OPND R,1 65460000 OPND R,2 65520000 OPCD X'1B' 65580000 MR OPND R,1,1 65640000 OPND R,2 65700000 OPCD X'1C' 65760000 DR OPND R,1,1 65820000 OPND R,2 65880000 OPCD X'1D' 65940000 ALR OPND R,1 66000000 OPND R,2 66060000 OPCD X'1E' 66120000 SLR OPND R,1 66180000 OPND R,2 66240000 OPCD X'1F' 66300000 LPDR OPND R,1,(1,3) 66360000 OPND R,2,(1,3) 66420000 OPCD X'20' 66480000 LNDR OPND R,1,(1,3) 66540000 OPND R,2,(1,3) 66600000 OPCD X'21' 66660000 LTDR OPND R,1,(1,3) 66720000 OPND R,2,(1,3) 66780000 OPCD X'22' 66840000 LCDR OPND R,1,(1,3) 66900000 OPND R,2,(1,3) 66960000 OPCD X'23' 67020000 HDR OPND R,1,(1,3) 67080000 OPND R,2,(1,3) 67140000 OPCD X'24' 67200000 LRDR OPND R,1,(1,3) 67260000 OPND R,2,(2,3) 67320000 OPCD X'25' 67380000 MXR OPND R,1,(2,3) 67440000 OPND R,2,(2,3) 67500000 OPCD X'26' 67560000 MXDR OPND R,1,(2,3) 67620000 OPND R,2,(1,3) 67680000 OPCD X'27' 67740000 LDR OPND R,1,(1,3) 67800000 OPND R,2,(1,3) 67860000 OPCD X'28' 67920000 CDR OPND R,1,(1,3) 67980000 OPND R,2,(1,3) 68040000 OPCD X'29' 68100000 ADR OPND R,1,(1,3) 68160000 OPND R,2,(1,3) 68220000 OPCD X'2A' 68280000 SDR OPND R,1,(1,3) 68340000 OPND R,2,(1,3) 68400000 OPCD X'2B' 68460000 MDR OPND R,1,(1,3) 68520000 OPND R,2,(1,3) 68580000 OPCD X'2C' 68640000 DDR OPND R,1,(1,3) 68700000 OPND R,2,(1,3) 68760000 OPCD X'2D' 68820000 AWR OPND R,1,(1,3) 68880000 OPND R,2,(1,3) 68940000 OPCD X'2E' 69000000 SWR OPND R,1,(1,3) 69060000 OPND R,2,(1,3) 69120000 OPCD X'2F' 69180000 LPER OPND R,1,(1,3) 69240000 OPND R,2,(1,3) 69300000 OPCD X'30' 69360000 LNER OPND R,1,(1,3) 69420000 OPND R,2,(1,3) 69480000 OPCD X'31' 69540000 LTER OPND R,1,(1,3) 69600000 OPND R,2,(1,3) 69660000 OPCD X'32' 69720000 LCER OPND R,1,(1,3) 69780000 OPND R,2,(1,3) 69840000 OPCD X'33' 69900000 HER OPND R,1,(1,3) 69960000 OPND R,2,(1,3) 70020000 OPCD X'34' 70080000 LRER OPND R,1,(1,3) 70140000 OPND R,2,(1,3) 70200000 OPCD X'35' 70260000 AXR OPND R,1,(2,3) 70320000 OPND R,2,(2,3) 70380000 OPCD X'36' 70440000 SXR OPND R,1,(2,3) 70500000 OPND R,2,(2,3) 70560000 OPCD X'37' 70620000 LER OPND R,1,(1,3) 70680000 OPND R,2,(1,3) 70740000 OPCD X'38' 70800000 CER OPND R,1,(1,3) 70860000 OPND R,2,(1,3) 70920000 OPCD X'39' 70980000 AER OPND R,1,(1,3) 71040000 OPND R,2,(1,3) 71100000 OPCD X'3A' 71160000 SER OPND R,1,(1,3) 71220000 OPND R,2,(1,3) 71280000 OPCD X'3B' 71340000 MER OPND R,1,(1,3) 71400000 OPND R,2,(1,3) 71460000 OPCD X'3C' 71520000 DER OPND R,1,(1,3) 71580000 OPND R,2,(1,3) 71640000 OPCD X'3D' 71700000 AUR OPND R,1,(1,3) 71760000 OPND R,2,(1,3) 71820000 OPCD X'3E' 71880000 SUR OPND R,1,(1,3) 71940000 OPND R,2,(1,3) 72000000 OPCD X'3F' 72060000 NOPR OPND R,2 72120000 OPCD X'0700' 72180000 BOR OPND R,2 72240000 OPCD X'0710' 72300000 BHR OPND R,2 BPR ALSO 72360000 OPCD X'0720' 72420000 BLR OPND R,2 BMR ALSO 72480000 OPCD X'0740' 72540000 BNER OPND R,2 BNZR ALSO 72600000 OPCD X'0770' 72660000 BER OPND R,2 BZR ALSO 72720000 OPCD X'0780' 72780000 BNLR OPND R,2 BNMR ALSO 72840000 OPCD X'07B0' 72900000 BNHR OPND R,2 BNPR ALSO 72960000 OPCD X'07D0' 73020000 BNOR OPND R,2 73080000 OPCD X'07E0' 73140000 BR OPND R,2 73200000 OPCD X'07F0' 73260000 STH OPND R,1 73320000 OPND SX,(1,2),(H,NLIT,MOD) 73380000 OPCD X'40' 73440000 LA OPND R,1 73500000 OPND SX,(1,2) 73560000 OPCD X'41' 73620000 STC OPND R,1 73680000 OPND SX,(1,2),(NLIT,MOD) 73740000 OPCD X'42' 73800000 IC OPND R,1 73860000 OPND SX,(1,2) 73920000 OPCD X'43' 73980000 EX OPND R,1 74040000 OPND SX,(1,2),(H,ALW) 74100000 OPCD X'44' 74160000 BAL OPND R,1 74220000 OPND SX,(1,2),(H,ALW) 74280000 OPCD X'45' 74340000 BCT OPND R,1 74400000 OPND SX,(1,2),(H,ALW) 74460000 OPCD X'46' 74520000 BC OPND R,1 74580000 OPND SX,(1,2),(H,ALW) 74640000 OPCD X'47' 74700000 LH OPND R,1 74760000 OPND SX,(1,2),H 74820000 OPCD X'48' 74880000 CH OPND R,1 74940000 OPND SX,(1,2),H 75000000 OPCD X'49' 75060000 AH OPND R,1 75120000 OPND SX,(1,2),H 75180000 OPCD X'4A' 75240000 SH OPND R,1 75300000 OPND SX,(1,2),H 75360000 OPCD X'4B' 75420000 MH OPND R,1 75480000 OPND SX,(1,2),H 75540000 OPCD X'4C' 75600000 CVD OPND R,1 75660000 OPND SX,(1,2),(D,NLIT,MOD) 75720000 OPCD X'4E' 75780000 CVB OPND R,1 75840000 OPND SX,(1,2),D 75900000 OPCD X'4F' 75960000 ST OPND R,1 76020000 OPND SX,(1,2),(F,NLIT,MOD) 76080000 OPCD X'50' 76140000 N OPND R,1 76200000 OPND SX,(1,2),F 76260000 OPCD X'54' 76320000 CL OPND R,1 76380000 OPND SX,(1,2),F 76440000 OPCD X'55' 76500000 O OPND R,1 76560000 OPND SX,(1,2),F 76620000 OPCD X'56' 76680000 X OPND R,1 76740000 OPND SX,(1,2),F 76800000 OPCD X'57' 76860000 L OPND R,1 76920000 OPND SX,(1,2),F 76980000 OPCD X'58' 77040000 C OPND R,1 77100000 OPND SX,(1,2),F 77160000 OPCD X'59' 77220000 A OPND R,1 77280000 OPND SX,(1,2),F 77340000 OPCD X'5A' 77400000 S OPND R,1 77460000 OPND SX,(1,2),F 77520000 OPCD X'5B' 77580000 M OPND R,1,1 77640000 OPND SX,(1,2),F 77700000 OPCD X'5C' 77760000 D OPND R,1,1 77820000 OPND SX,(1,2),F 77880000 OPCD X'5D' 77940000 AL OPND R,1 78000000 OPND SX,(1,2),F 78060000 OPCD X'5E' 78120000 SL OPND R,1 78180000 OPND SX,(1,2),F 78240000 OPCD X'5F' 78300000 STD OPND R,1,(1,3) 78360000 OPND SX,(1,2),(D,NLIT,MOD) 78420000 OPCD X'60' 78480000 MXD OPND R,1,(2,3) 78540000 OPND SX,(1,2),D 78600000 OPCD X'67' 78660000 LD OPND R,1,(1,3) 78720000 OPND SX,(1,2),D 78780000 OPCD X'68' 78840000 CD OPND R,1,(1,3) 78900000 OPND SX,(1,2),D 78960000 OPCD X'69' 79020000 AD OPND R,1,(1,3) 79080000 OPND SX,(1,2),D 79140000 OPCD X'6A' 79200000 SD OPND R,1,(1,3) 79260000 OPND SX,(1,2),D 79320000 OPCD X'6B' 79380000 MD OPND R,1,(1,3) 79440000 OPND SX,(1,2),D 79500000 OPCD X'6C' 79560000 DD OPND R,1,(1,3) 79620000 OPND SX,(1,2),D 79680000 OPCD X'6D' 79740000 AW OPND R,1,(1,3) 79800000 OPND SX,(1,2),D 79860000 OPCD X'6E' 79920000 SW OPND R,1,(1,3) 79980000 OPND SX,(1,2),D 80040000 OPCD X'6F' 80100000 STE OPND R,1,(1,3) 80160000 OPND SX,(1,2),(F,NLIT,MOD) 80220000 OPCD X'70' 80280000 LE OPND R,1,(1,3) 80340000 OPND SX,(1,2),F 80400000 OPCD X'78' 80460000 CE OPND R,1,(1,3) 80520000 OPND SX,(1,2),F 80580000 OPCD X'79' 80640000 AE OPND R,1,(1,3) 80700000 OPND SX,(1,2),F 80760000 OPCD X'7A' 80820000 SE OPND R,1,(1,3) 80880000 OPND SX,(1,2),F 80940000 OPCD X'7B' 81000000 ME OPND R,1,(1,3) 81060000 OPND SX,(1,2),F 81120000 OPCD X'7C' 81180000 DE OPND R,1,(1,3) 81240000 OPND SX,(1,2),F 81300000 OPCD X'7D' 81360000 AU OPND R,1,(1,3) 81420000 OPND SX,(1,2),F 81480000 OPCD X'7E' 81540000 SU OPND R,1,(1,3) 81600000 OPND SX,(1,2),F 81660000 OPCD X'7F' 81720000 NOP OPND SX,(1,2),(H,ALW) NOP OPERAND 81780000 OPCD X'4700' NOP OP CODE 81840000 BO OPND SX,(1,2),(H,ALW) 81900000 OPCD X'4710' 81960000 BH OPND SX,(1,2),(H,ALW) BP ALSO 82020000 OPCD X'4720' 82080000 BL OPND SX,(1,2),(H,ALW) BM ALSO 82140000 OPCD X'4740' 82200000 BNE OPND SX,(1,2),(H,ALW) 82260000 OPCD X'4770' 82320000 BE OPND SX,(1,2),(H,ALW) 82380000 OPCD X'4780' 82440000 BNL OPND SX,(1,2),(H,ALW) BNM ALSO 82500000 OPCD X'47B0' 82560000 BNH OPND SX,(1,2),(H,ALW) BNP ALSO 82620000 OPCD X'47D0' 82680000 BNO OPND SX,(1,2),(H,ALW) 82740000 OPCD X'47E0' 82800000 B OPND SX,(1,2),(H,ALW) 82860000 OPCD X'47F0' 82920000 SSM OPND S,1 82980000 OPCD X'80' 83040000 LPSW OPND S,1,(D,ALW) 83100000 OPCD X'82' 83160000 WRD OPND S,1 83220000 OPND I,3 83280000 OPCD X'84' 83340000 RDD OPND S,1,(MOD,NLIT) 83400000 OPND I,3 83460000 OPCD X'85' 83520000 BXH OPND R,1 83580000 OPND R,2 83640000 OPND S,1,(H,ALW) 83700000 OPCD X'86' 83760000 BXLE OPND R,1 83820000 OPND R,2 83880000 OPND S,1,(H,ALW) 83940000 OPCD X'87' 84000000 SRL OPND R,1 84060000 OPND S,1,NLIT 84120000 OPCD X'88' 84180000 SLL OPND R,1 84240000 OPND S,1,NLIT 84300000 OPCD X'89' 84360000 SRA OPND R,1 84420000 OPND S,1,NLIT 84480000 OPCD X'8A' 84540000 SLA OPND R,1 84600000 OPND S,1,NLIT 84660000 OPCD X'8B' 84720000 SRDL OPND R,1,1 84780000 OPND S,1,NLIT 84840000 OPCD X'8C' 84900000 SLDL OPND R,1,1 84960000 OPND S,1,NLIT 85020000 OPCD X'8D' 85080000 SRDA OPND R,1,1 85140000 OPND S,1,NLIT 85200000 OPCD X'8E' 85260000 SLDA OPND R,1,1 85320000 OPND S,1,NLIT 85380000 OPCD X'8F' 85440000 STM OPND R,1 85500000 OPND R,2 85560000 OPND S,1,(F,NLIT,MOD) 85620000 OPCD X'90' 85680000 TM OPND S,1 85740000 OPND I,3 85800000 OPCD X'91' 85860000 MVI OPND S,1,(MOD,NLIT) 85920000 OPND I,3 85980000 OPCD X'92' 86040000 TS OPND S,1,(MOD,NLIT) 86100000 OPCD X'93' 86160000 NI OPND S,1,(MOD,NLIT) 86220000 OPND I,3 86280000 OPCD X'94' 86340000 CLI OPND S,1 86400000 OPND I,3 86460000 OPCD X'95' 86520000 OI OPND S,1,(MOD,NLIT) 86580000 OPND I,3 86640000 OPCD X'96' 86700000 XI OPND S,1,(MOD,NLIT) 86760000 OPND I,3 86820000 OPCD X'97' 86880000 LM OPND R,1 86940000 OPND R,2 87000000 OPND S,1,F 87060000 OPCD X'98' 87120000 SIO OPND S,1,NLIT 87180000 OPCD X'9C' 87240000 SIOF OPND S,1,NLIT 87260000 OPCD X'9C01' 87280000 TIO OPND S,1,NLIT 87300000 OPCD X'9D' 87360000 CLRIO OPND S,1,NLIT 87410000 OPCD X'9D01' 87412000 HIO OPND S,1,NLIT 87420000 OPCD X'9E' 87480000 HDV OPND S,1,NLIT 87520000 OPCD X'9E01' 87528000 TCH OPND S,1,NLIT 87540000 OPCD X'9F' 87600000 STNSM OPND S,1,(NLIT,MOD)