./ ADD SSI=02010262,NAME=IFDMSGAJ,SOURCE=1 TITLE 'CUTEST MESSAGE MODULE' 00010000 TITLE ' CUTEST MESSAGE MODULE ' 00020000 LCLA &T,&SPN 0002 00030000 .@001 ANOP 0002 00040000 IFDMSGAJ CSECT , 0002 00050000 DC AL4(IFD244) 00060000 DC AL4(SHRDHDR) 00070000 DC AL4(ONLNHDR) 00080000 DC AL4(IFD243) 00090000 IFD244 WTO 'IFD244I X00100000 ',MF=L,ROUTCDE=10,DESC=7 00110000 SHRDHDR WTO 'IFD244I THE FOLLOWING CU TEST DEVS ARE ASSUMED CPU SHARX00120000 ED ',MF=L,DESC=7,ROUTCDE=10 00130000 ONLNHDR WTO 'IFD244I THE FOLLOWING CU TEST DEVS ARE ONLINE,NON BTAM -00140000 ALLOCATED',DESC=7,ROUTCDE=10,MF=L SA59673 00150000 DS 0F 00160000 IFD243 DC XL1'00' 00170000 DC XL3'00' 00180000 DC XL4'00' 00190000 WTO 'IFD243D ARE SHARED DEVS USED BY OTHERS, REPLY YES OR NO-00200000 ',MF=L,ROUTCDE=10,DESC=7 00210000 DS 0H 00220000 * END; 00230000 @EL01 BCR 15,@E 0004 00240000 @DATA1 EQU * 00250000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00260000 @1 EQU 01 00270000 @2 EQU 02 00280000 @3 EQU 03 00290000 @4 EQU 04 00300000 @5 EQU 05 00310000 @6 EQU 06 00320000 @7 EQU 07 00330000 @8 EQU 08 00340000 @9 EQU 09 00350000 @A EQU 10 00360000 @B EQU 11 00370000 @C EQU 12 00380000 @D EQU 13 00390000 @E EQU 14 00400000 @F EQU 15 00410000 DS 0D 00420000 @DATA EQU * 00430000 DS 00000000C 00440000 @TEMPS DS 0F 00450000 @DATEND EQU * 00460000 END 00470000 ./ ADD SSI=04013546,NAME=IFDMSG00,SOURCE=1 TITLE 'OLTEPS ROOT MESSAGE MODULE' 00010000 TITLE 'OLTEPS ROOT MESSAGE MODULE' 00020000 LCLA &T,&SPN 0002 00030000 .@001 ANOP 0002 00040000 IFDMSG00 CSECT , 0002 00050000 DC AL4(IFD100) 00060000 DC AL4(IFD102) 00070000 DC AL4(IFD103) 00080000 DC AL4(IFD105) 00090000 DC AL4(IFD106) 00100000 DC AL4(IFD108) 00110000 DC AL4(IFD117) 00120000 DC AL4(IFD121) 00130000 DC AL4(IFD129) 00140000 DC AL4(IFD134) M2364 00150000 DC AL4(IFD501) 00160000 DC AL4(IFD157) 00170000 DC AL4(IFD158) 00180000 DC AL4(IFD159) 00190000 DC AL4(IFD160) 00200000 DC AL4(IFD161) 00210000 DC AL4(IFD210) 00220000 DC AL4(0) 00230000 DC AL4(IFD168) M4501 00240000 DC AL4(IFD178) 21051 00250000 DC AL4(IFD899) S59673 00260000 IFD100 WTO 'IFD100I X00270000 ',MF=L,ROUTCDE=10,DESC=7 00280000 IFD102 WTO 'IFD102I OLTS RUNNING',MF=L,ROUTCDE=(2,10),DESC=7 00290000 IFD103 WTO 'IFD103I UCB NOT READY BIT ON, TESTS BYPASSED',X00300000 MF=L,ROUTCDE=10,DESC=7 00310000 DS 0F 00320000 IFD105 DC V(REPBUF) 00330000 DC V(ECB) 00340000 WTO 'IFD105D ENTER-DEV/TEST/OPT/',MF=L,ROUTCDE=10,DESC=7 00350000 IFD106 WTO 'IFD106I INPUT DATA DOES NOT CONTAIN 3 SLASHES',MF=L,ROUX00360000 TCDE=10,DESC=7 00370000 IFD108 WTO 'IFD108I INVALID ENTRY IN DEV FLD-04',MF=L,ROUTCDE=10,DEX00380000 SC=7 00390000 IFD117 WTO 'IFD117I SECTION NOT FOUND',MF=L,ROUTCDE=10,DESX00400000 C=7 00410000 IFD121 WTO 'IFD121I MESSAGE CANCELED BY OLTEP',MF=L,ROUTCDE=10,DX00420000 ESC=7 00430000 IFD129 WTO 'IFD129I FIRST ERROR COMM UNIT X00440000 ',MF=L,ROUTCDE=10,DESC=7 00450000 IFD134 WTO 'IFD134I WARNING- DASD VOLUME LABELED CEPACK NOT PROTECTX00460000 ED FROM WRITE',MF=L,ROUTCDE=10,DESC=7 SA51275 00470000 IFD501 WTO 'IFD501I XXXXXXXX BYPASSED, INVALID TEST',MF=L,ROUTCDE=1X00480000 0,DESC=7 00490000 IFD157 WTO 'IFD157I CATASTROPHIC ERROR ON DEVICE X00500000 ',MF=L,ROUTCDE=10,DESC=7 00510000 IFD158 WTO 'IFD158I UNIT ',MF=L,ROUTCX00520000 DE=10,DESC=7 00530000 IFD159 WTO 'IFD159I MODULE NOT FOUND',MF=L,ROUTCDE=10,DESCX00540000 =7 00550000 IFD160 WTO 'IFD160I INSUFFICIENT CORE',MF=L,ROUTCDE=10,DESC=7 00560000 IFD161 WTO 'IFD161I FOR HELP ENTER PROMPT DEV TO NEXT DEV/TEST/OPT/X00570000 MESSAGE',MF=L,ROUTCDE=10,DESC=7 00580000 DS 0F 00590000 IFD210 WTO 'IFD210I ROUTINE XXXX BYPASSED, MANUAL INTV REQUIRED',MFX00600000 =L,ROUTCDE=10,DESC=7 00610000 IFD168 DS 2F M4501 00620000 WTO 'IFD168E TO COMMUNICATE WITH REMOTE SPECIALIST ENTER MESX00630000 SAGE',MF=L,ROUTCDE=10,DESC=7 S20203 00640000 IFD178 WTO 'IFD178I MESSAGE ANSWERED BY REMOTE',MF=L,ROUTCDE=10,X00650000 DESC=7 00660000 IFD899 WTO 'IFD899I OLTEP INITIALIZATION CONFLICTS, OLTEP MUST TERMX00670000 INATE',MF=L,ROUTCDE=10,DESC=7 00680000 DS 0H 00690000 * END; 00700000 @EL01 BCR 15,@E 0004 00710000 @DATA1 EQU * 00720000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00730000 @1 EQU 01 00740000 @2 EQU 02 00750000 @3 EQU 03 00760000 @4 EQU 04 00770000 @5 EQU 05 00780000 @6 EQU 06 00790000 @7 EQU 07 00800000 @8 EQU 08 00810000 @9 EQU 09 00820000 @A EQU 10 00830000 @B EQU 11 00840000 @C EQU 12 00850000 @D EQU 13 00860000 @E EQU 14 00870000 @F EQU 15 00880000 DS 0D 00890000 @DATA EQU * 00900000 DS 00000000C 00910000 @TEMPS DS 0F 00920000 @DATEND EQU * 00930000 END 00940000 ./ ADD SSI=01012390,NAME=IFDMSG02,SOURCE=1 TITLE 'DATA PROTECTION CELL MESSAGE MODULE IFDMSG02' 00010000 * GENERATE; 00020000 TITLE 'DATA PROTECTION CELL MESSAGE MODULE IFDMSG02' 00030000 * IFDMSG02: PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00040000 LCLA &T,&SPN 0002 00050000 .@001 ANOP 0002 00060000 IFDMSG02 CSECT , 0002 00070000 * 00080000 * 00090000 * /******************************************************************* 00100000 * /* * 00110000 * /* MESSAGE MODULE FOR IFDOLT02 DATA PROTECT CELL * 00120000 * /* * 00130000 * /******************************************************************* 00140000 * 00150000 * 00160000 * GEN; 00170000 DC A(MSG2) ADDRESS OF MESSAGE 00180000 DC A(MSG3) ADDRESS OF MESSAGE 00190000 DC A(MSG4) ADDRESS OF MESSAGE 00200000 DC A(MSG5) ADDRESS OF MESSAGE 00210000 DC A(MSG6) ADDRESS OF MESSAGE 00220000 DC A(MSG7) 00230000 DC A(MSG8) 00240000 MSG2 WTO 'IFD131I SENSE TO XXXXXXXX FAILED',MF=L,ROUTCDE=10,DESC=X00250000 7 S21050 00260000 MSG3 WTO 'IFD126I BIN 0 OF XXXXXXXX DOES NOT INDICATE CE CELL',MFX00270000 =L,ROUTCDE=10,DESC=7 S21050 00280000 * S21050 00290000 MSG4 WTO 'IFD137I CSW XXYYYYYYYYYYYYYY SNS XXXXXXXXXXXX',MF=L,ROUX00300000 TCDE=10,DESC=7 00310000 MSG5 DS 2F'00' 00320000 WTO 'IFD139D REPLY B TO BYPASS,R TO RETRY',MF=L,ROUTCDE=10,DX00330000 ESC=7 00340000 MSG6 WTO 'IFD132I CE BIT WILL NOT RESET-XXXXXXXX',MF=L,ROUTCDE=10X00350000 ,DESC=7 S21050 00360000 MSG7 WTO 'IFD130I INTERVENTION REQ XXXXXXXX',MF=L,ROUTCDE=10,DESCX00370000 =7 S21050 00380000 MSG8 WTO 'IFD138I DEV XXXXXXXX NOT OPERATIONAL, CC=3',MF=L,ROUTCDX00390000 E=10,DESC=7 S21050 00400000 DS 0H 00410000 * END; 00420000 @EL01 BCR 15,@E 0004 00430000 @DATA1 EQU * 00440000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00450000 @1 EQU 01 00460000 @2 EQU 02 00470000 @3 EQU 03 00480000 @4 EQU 04 00490000 @5 EQU 05 00500000 @6 EQU 06 00510000 @7 EQU 07 00520000 @8 EQU 08 00530000 @9 EQU 09 00540000 @A EQU 10 00550000 @B EQU 11 00560000 @C EQU 12 00570000 @D EQU 13 00580000 @E EQU 14 00590000 @F EQU 15 00600000 DS 0D 00610000 @DATA EQU * 00620000 DS 00000000C 00630000 @TEMPS DS 0F 00640000 @DATEND EQU * 00650000 END 00660000 ./ ADD SSI=01012390,NAME=IFDMSG03,SOURCE=1 TITLE 'DATA PROTECTION TAPE MESSAGE MODULE IFDMSG03' 00010000 * GENERATE; 00020000 TITLE 'DATA PROTECTION TAPE MESSAGE MODULE IFDMSG03' 00030000 * IFDMSG03: PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00040000 LCLA &T,&SPN 0002 00050000 .@001 ANOP 0002 00060000 IFDMSG03 CSECT , 0002 00070000 * 00080000 * 00090000 * /******************************************************************* 00100000 * /* * 00110000 * /* MESSAGE MODULE FOR IFDOLT03 DATA PROTECT TAPE * 00120000 * /* * 00130000 * /******************************************************************* 00140000 * 00150000 * 00160000 * GEN; 00170000 DC A(MSG1) ADDRESS OF MESSAGE 00180000 DC A(MSG2) ADDRESS OF MESSAGE 00190000 DC A(MSG3) ADDRESS OF MESSAGE 00200000 DC A(MSG3A) ADDRESS OF MESSAGE S21052 00210000 DC A(MSG4) ADDRESS OF MESSAGE 00220000 DC A(MSG5) ADDRESS OF MESSAGE 00230000 DC A(MSG6) ADDRESS OF MESSAGE 00240000 DC A(MSG7) ADDRESS OF MESSAGE 00250000 DC A(MSG8) ADDRESS OF MESSAGE 00260000 DC A(MSG9) ADDRESS OF MESSAGE 00270000 DC A(MSGA) ADDRESS OF MESSAGE 00280000 MSG1 WTO 'IFD109I XXXXXXXX NOT OFFLINE',MF=L,ROUTCDE=10,DESC=7 00290000 * S21050 00300000 MSG2 WTO 'IFD118I UNREADABLE TAPE LABEL-XXXXXXXX',MF=L,ROUTCDE=10X00310000 ,DESC=7 S21050 00320000 MSG3 WTO 'IFD137I CSW-XXYYYYYYYYYYYYYY',MF=L,ROUTCDE=10,DESC=7 00330000 * S21052 00340000 MSG3A WTO 'IFD137I SNS-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC00350000 XXXXX',MF=L,ROUTCDE=10,DESC=7 S21052 00360000 MSG4 WTO 'IFD119I NON-STANDARD TAPE LABEL-XXXXXXXX',MF=L,ROUTCDE=X00370000 10,DESC=7 S21050 00380000 MSG5 WTO 'IFD122I VOL ON XXXXXXXX SECURITY PROTECTED',MF=L,ROUTCDX00390000 E=10,DESC=7 S21050 00400000 MSG6 DS 2F'00' 00410000 WTO 'IFD139D REPLY B TO BYPASS,R TO RETRY,P TO PROCEED(MAY DX00420000 ESTROY DATA)',MF=L,ROUTCDE=10,DESC=7 00430000 MSG7 WTO 'IFD122I VOL ON XXXXXXXX UNEXPIRED DATE',MF=L,ROUTCDE=10X00440000 ,DESC=7 S21050 00450000 MSG8 DS 2F'00' 00460000 WTO 'IFD139D REPLY B TO BYPASS,R TO RETRY',MF=L,ROUTCDE=10,DX00470000 ESC=7 00480000 MSG9 WTO 'IFD130I INTERVENTION REQ XXXXXXXX',MF=L,ROUTCDE=10,DESCX00490000 =7 S21050 00500000 MSGA WTO 'IFD138I DEV XXXXXXXX NOT OPERATIONAL, CC=3',MF=L,ROUTCDX00510000 E=10,DESC=7 S21050 00520000 DS 0H 00530000 * END; 00540000 @EL01 BCR 15,@E 0004 00550000 @DATA1 EQU * 00560000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00570000 @1 EQU 01 00580000 @2 EQU 02 00590000 @3 EQU 03 00600000 @4 EQU 04 00610000 @5 EQU 05 00620000 @6 EQU 06 00630000 @7 EQU 07 00640000 @8 EQU 08 00650000 @9 EQU 09 00660000 @A EQU 10 00670000 @B EQU 11 00680000 @C EQU 12 00690000 @D EQU 13 00700000 @E EQU 14 00710000 @F EQU 15 00720000 DS 0D 00730000 @DATA EQU * 00740000 DS 00000000C 00750000 @TEMPS DS 0F 00760000 @DATEND EQU * 00770000 END 00780000 ./ ADD SSI=01012641,NAME=IFDMSG04,SOURCE=1 TITLE 'IFDMSG04 - DRUM DATA PROTECTION MESSAGE MODULE' 00010000 * GENERATE; /* BAL TITLE CARD * 00020000 TITLE 'IFDMSG04 - DRUM DATA PROTECTION MESSAGE MODULE' 00030000 * IFDMSG04: /* MESSAGE MODULE FOR * 00040000 * /* IFDOLT04 * 00050000 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00060000 LCLA &T,&SPN 0002 00070000 .@001 ANOP 0002 00080000 IFDMSG04 CSECT , 0002 00090000 * GENERATE; /* ALL CODE IS IN BAL * 00100000 DC AL4(IFD120) PTR TO MSG IFD120D 00110000 DC AL4(IFD145) PTR TO MSG IFD145D 00120000 DC AL4(IFD212) PTR TO MSG IFD212I 00130000 IFD120 DC 2F'0' WTOR PARMLIST AREA 00140000 WTO 'IFD120D CAN VOL DATA ON BE DESTROYED, REPLY YEX00150000 S OR NO',MF=L,ROUTCDE=10,DESC=7 00160000 IFD145 DC 2F'0' WTOR PARMLIST AREA 00170000 WTO 'IFD145D IS OFFLINE TO ALL SHARING SYSTEMS, REPX00180000 LY YES OR NO',MF=L,ROUTCDE=10,DESC=7 00190000 IFD212 WTO 'IFD212I CANNOT DATA PROTECT DEVICE ',MF=L,ROUTC*00200000 DE=10,DESC=7 00210000 DS 0H 00220000 * END; /* END OF MODULE * 00230000 @EL01 BCR 15,@E 0004 00240000 @DATA1 EQU * 00250000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00260000 @1 EQU 01 00270000 @2 EQU 02 00280000 @3 EQU 03 00290000 @4 EQU 04 00300000 @5 EQU 05 00310000 @6 EQU 06 00320000 @7 EQU 07 00330000 @8 EQU 08 00340000 @9 EQU 09 00350000 @A EQU 10 00360000 @B EQU 11 00370000 @C EQU 12 00380000 @D EQU 13 00390000 @E EQU 14 00400000 @F EQU 15 00410000 DS 0D 00420000 @DATA EQU * 00430000 DS 00000000C 00440000 @TEMPS DS 0F 00450000 @DATEND EQU * 00460000 END 00470000 ./ ADD SSI=01012588,NAME=IFDMSG05,SOURCE=1 TITLE ' EXIO MESSAGE MODULE ' 00010000 * IFDMSG05: 00020000 * PROCEDURE OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00030000 LCLA &T,&SPN 0001 00040000 .@001 ANOP 0001 00050000 IFDMSG05 CSECT , 0001 00060000 * GENERATE; 00070000 DC AL4(IFD109I) 00080000 DC AL4(IFD133I) 00090000 DC AL4(0) 00100000 IFD109I WTO 'IFD109I XXX NOT OFF-LINE',MF=L,ROUTCDE=10,DESC=7 00110000 IFD133I WTO 'IFD133I TIMER NOT STEPPING. TIMING TEST BYPASSED',MF=L,C00120000 ROUTCDE=10,DESC=7 00130000 DS 0H 00140000 * END IFDMSG05; 00150000 @EL01 BCR 15,@E 0003 00160000 @DATA1 EQU * 00170000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00180000 @1 EQU 01 00190000 @2 EQU 02 00200000 @3 EQU 03 00210000 @4 EQU 04 00220000 @5 EQU 05 00230000 @6 EQU 06 00240000 @7 EQU 07 00250000 @8 EQU 08 00260000 @9 EQU 09 00270000 @A EQU 10 00280000 @B EQU 11 00290000 @C EQU 12 00300000 @D EQU 13 00310000 @E EQU 14 00320000 @F EQU 15 00330000 DS 0D 00340000 @DATA EQU * 00350000 DS 00000000C 00360000 @TEMPS DS 0F 00370000 @DATEND EQU * 00380000 END IFDMSG05 00390000 ./ ADD SSI=01012391,NAME=IFDMSG06,SOURCE=1 TITLE ' OLD WAITIO MESSAGE MODULE IFDMSG06' 00010000 * GENERATE; 00020000 TITLE ' OLD WAITIO MESSAGE MODULE IFDMSG06 ' 00030000 * IFDMSG06: 00040000 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00050000 LCLA &T,&SPN 0002 00060000 .@001 ANOP 0002 00070000 IFDMSG06 CSECT , 0002 00080000 * GENERATE; 00090000 DC A(MSG1) ADDRESS OF MESSAGE 00100000 MSG1 DS 8C 00110000 WTO 'IFD144D TIMEOUT, NO INTERRUPT-UNIT XXXXXXXX, REPLY WAITX00120000 OR CANCEL',MF=L,ROUTCDE=10,DESC=7 S21050 00130000 DS 0H 00140000 * END; 00150000 @EL01 BCR 15,@E 0004 00160000 @DATA1 EQU * 00170000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00180000 @1 EQU 01 00190000 @2 EQU 02 00200000 @3 EQU 03 00210000 @4 EQU 04 00220000 @5 EQU 05 00230000 @6 EQU 06 00240000 @7 EQU 07 00250000 @8 EQU 08 00260000 @9 EQU 09 00270000 @A EQU 10 00280000 @B EQU 11 00290000 @C EQU 12 00300000 @D EQU 13 00310000 @E EQU 14 00320000 @F EQU 15 00330000 DS 0D 00340000 @DATA EQU * 00350000 DS 00000000C 00360000 @TEMPS DS 0F 00370000 @DATEND EQU * 00380000 END 00390000 ./ ADD SSI=01012391,NAME=IFDMSG07,SOURCE=1 TITLE 'DATA PROTECTION PACK MESSAGE MODULE IFDMSG07' 00010000 * GENERATE; 00020000 TITLE 'DATA PROTECTION PACK MESSAGE MODULE IFDMSG07' 00030000 * IFDMSG07: PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00040000 LCLA &T,&SPN 0002 00050000 .@001 ANOP 0002 00060000 IFDMSG07 CSECT , 0002 00070000 * 00080000 * 00090000 * /******************************************************************* 00100000 * /* * 00110000 * /* MESSAGE MODULE FOR IFDOLT07 DATA PROTECT PACK * 00120000 * /* * 00130000 * /******************************************************************* 00140000 * 00150000 * 00160000 * GEN; 00170000 DC A(MSG1) ADDRESS OF MESSAGE 00180000 DC A(MSG2) ADDRESS OF MESSAGE 00190000 DC A(MSG3) ADDRESS OF MESSAGE 00200000 DC A(MSG4) ADDRESS OF MESSAGE 00210000 DC A(MSG5) ADDRESS OF MESSAGE 00220000 DC A(MSG6) ADDRESS OF MESSAGE 00230000 DC A(MSG6A) MESSAGE ADDRESS S20203 00240000 DC A(MSG7) ADDRESS OF MESSAGE S20203 00250000 DC A(MSG8) ADDRESS OF MESSAGE S20203 00260000 MSG1 WTO 'IFD138I DEV XXXXXXXX NOT OPERATIONAL, CC=3',MF=L,ROUTCDX00270000 E=10,DESC=7 S21050 00280000 MSG2 WTO 'IFD124I CE VOL NOT ON UNIT XXXXXXXX',MF=L,ROUTCDE=10,DEX00290000 SC=7 S21050 00300000 MSG3 WTO 'IFD125I UNREADABLE LABEL ON XXXXXXXX',MF=L,ROUTCDE=10,DX00310000 ESC=7 S21050 00320000 MSG4 WTO 'IFD130I INTERVENTION REQ XXXXXXXX',MF=L,ROUTCDE=10,DESCX00330000 =7 S21050 00340000 MSG5 DS 2F'00' 00350000 WTO 'IFD139D REPLY B TO BYPASS,R TO RETRY,P TO PROCEED',MF=LX00360000 ,ROUTCDE=10,DESC=7 00370000 MSG6 WTO 'IFD137I CSW-XXYYYYYYYYYYYYYY',MF=L,ROUTCDE=10,DESC=7 00380000 * M4505 00390000 * S20203 00400000 MSG6A WTO 'IFD137I SNS-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX00410000 XXXXX',MF=L,ROUTCDE=10,DESC=7 S20203 00420000 MSG7 DS 2F'00' S20203 00430000 WTO 'IFD139D REPLY B TO BYPASS,R TO RETRY',MF=L,ROUTCDE=10,DX00440000 ESC=7 S20203 00450000 MSG8 WTO 'IFD122I VOL ON XXXXXXXX SECURITY PROTECTED',MF=L,ROUTCDE00460000 E=10,DESC=7 S21050 00470000 DS 0H 00480000 * END; 00490000 @EL01 BCR 15,@E 0004 00500000 @DATA1 EQU * 00510000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00520000 @1 EQU 01 00530000 @2 EQU 02 00540000 @3 EQU 03 00550000 @4 EQU 04 00560000 @5 EQU 05 00570000 @6 EQU 06 00580000 @7 EQU 07 00590000 @8 EQU 08 00600000 @9 EQU 09 00610000 @A EQU 10 00620000 @B EQU 11 00630000 @C EQU 12 00640000 @D EQU 13 00650000 @E EQU 14 00660000 @F EQU 15 00670000 DS 0D 00680000 @DATA EQU * 00690000 DS 00000000C 00700000 @TEMPS DS 0F 00710000 @DATEND EQU * 00720000 END 00730000 ./ ADD SSI=01012023,NAME=IFDMSG08,SOURCE=1 * GENERATE; 00000000 TITLE ' IFDMSG08--OLD DPRINT MESSAGE MODULE.' 00000010 * IFDMSG08: /* MAIN ENTRY OF MESSAGE MODULE-REFERENCED BY IFDOLT08 * 00000020 * /******************************************************************* 00000030 * /* * 00000040 * /* STATUS: CHANGE LEVEL 0 * 00000050 * /* * 00000060 * /* FUNCTION: THE MODULE CONTAINS THE LIST FORM OF THE WTO'S AND * 00000070 * /* WTOR'S REFERENCED BY DPRINT (IFDOLT08) AND EXECUTED * 00000080 * /* BY OLTEP'S PARALLEL PRINT MODULE. THE FIRST PORTION * 00000090 * /* OF IFDMSG08 CONTAINS A LIST OF ADDRESS POINTERS USED * 00000100 * /* TO REFERENCE MESSAGES WITHIN THE MODULE. THE MODULE * 00000110 * /* IS LINK EDITED WITH MODULE IFDOLT08. * 00000120 * /* * 00000130 * /* ENTRY POINTS: IFDMSG08 IS THE MAIN AND ONLY ENTRY POINT OF * 00000140 * /* THIS MODULE. * 00000150 * /* * 00000160 * /* INPUT: THE MESSAGE CONTENTS WILL BE ALTED BY IFDOLT08. * 00000170 * /* * 00000180 * /* OUTPUT: A WTO OR WTOR WILL RESULT FROM THE INVOKING OF THIS * 00000190 * /* MODULE. * 00000200 * /* * 00000210 * /* EXTERNAL ROUTINES: NONE * 00000220 * /* * 00000230 * /* TABLES/WORK AREAS: A TABLE CONTAINING THE ADDRESS OF EACH * 00000240 * /* MESSAGE WITHIN IFDMSG08. * 00000250 * /* * 00000260 * /* ATTRIBUTES: TRANSIENT,REUSABLE * 00000270 * /* * 00000280 * /******************************************************************* 00000290 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00000300 LCLA &T,&SPN 0002 00000310 .@001 ANOP 0002 00000320 IFDMSG08 CSECT , 0002 00000330 * /************************************************************ 00000340 * /* THE FOLLOWING GENERATED CODE IS IFDOLT08'S MESSAGE MODULE* 00000350 * /************************************************************ 00000360 * GENERATE; 00000370 DC A(IFD129) POINTER TO MESSAGE IFD129I 00000380 SPACE 2 00000390 IFD129 WTO 'IFD129I FIRST ERROR COMMUNICATION UNIT ',C00000400 MF=L,ROUTCDE=10,DESC=7 00000410 DS 0H 00000420 * END IFDMSG08; 00000430 @EL01 BCR 15,@E 0004 00000440 @DATA1 EQU * 0004 00000450 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00000460 @1 EQU 01 00000470 @2 EQU 02 00000480 @3 EQU 03 00000490 @4 EQU 04 00000500 @5 EQU 05 00000510 @6 EQU 06 00000520 @7 EQU 07 00000530 @8 EQU 08 00000540 @9 EQU 09 00000550 @A EQU 10 00000560 @B EQU 11 00000570 @C EQU 12 00000580 @D EQU 13 00000590 @E EQU 14 00000600 @F EQU 15 00000610 DS 0D 00000620 @DATA EQU * 00000630 DS 00000000C 00000640 @TEMPS DS 0F 00000650 @DATEND EQU * 00000660 END IFDMSG08 00000670 ./ ADD SSI=01012025,NAME=IFDMSG13,SOURCE=1 * GENERATE; 00000000 TITLE ' IFDMSG13--CECOM MESSAGE MODULE.' 00000010 * IFDMSG13: /* MAIN ENTRY OF MESSAGE MODULE REFERENCE BY IFDOLT13 * 00000020 * /******************************************************************** 00000030 * /* * 00000040 * /* STATUS: CHANGE LEVEL 0 * 00000050 * /* * 00000060 * /* FUNCTION: THIS MODULE CONTAINS THE LIST FORM OF THE WTO'S AND * 00000070 * /* WTOR'S REFERENCED BY CECOM (IFDOLT13) AND EXECUTED BY * 00000080 * /* OLTEP'S PARALLEL PRINT MODULE. THE FIRST PORTION OF * 00000090 * /* THE MODULE CONTAINS A LIST OF ADDRESSES REFERENCING * 00000100 * /* EACH MESSAGE. IFDMSG13 IS LINK EDITED WITH IFDOLT13. * 00000110 * /* * 00000120 * /* ENTRY POINTS: IFDMSG13 IS THE MAIN AND ONLY ENTRY POINT OF * 00000130 * /* THIS MODULE. * 00000140 * /* * 00000150 * /* INPUT: THE FORMAT OF THE MESSAGES WILL BE ALTERED BY IFDOLT13. * 00000160 * /* * 00000170 * /* OUTPUT: WTO'S AND WTOR'S WILL RESULT. * 00000180 * /* * 00000190 * /* EXTERNAL ROUTINES: NONE * 00000200 * /* * 00000210 * /* TABLES/WORK AREAS: A TABLE CONTAINING THE ADDRESS OF EACH * 00000220 * /* MESSAGE LOCATED IN THE MODULE. * 00000230 * /* * 00000240 * /* ATTRIBUTES: TRANSIENT, REUSABLE * 00000250 * /******************************************************************** 00000260 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00000270 LCLA &T,&SPN 0002 00000280 .@001 ANOP 0002 00000290 IFDMSG13 CSECT , 0002 00000300 * /************************************************************ 00000310 * /* THE FOLLOWING IS A MAP OF AN ADDRESS TABLE REFERENCING * 00000320 * /* THE LIST FORM OF THE WTO'S AND WTOR'S RESIDING IN THIS * 00000330 * /* MODULE * 00000340 * /************************************************************ 00000350 * GENERATE; 00000360 DC A(IFD100) POINTER TO MESSAGE IFD100I 00000370 DC A(IFD101) POINTER TO MESSAGE IFD101D 00000380 IFD100 WTO 'IFD100I C00000390 ',MF=L,ROUTCDE=10,DESC=7 00000400 DS 0F 00000410 IFD101 DC XL8'00' 00000420 WTO 'IFD101D C00000430 ',MF=L,ROUTCDE=10,DESC=7 00000440 DS 0H 00000450 * END IFDMSG13; 00000460 @EL01 BCR 15,@E 0004 00000470 @DATA1 EQU * 0004 00000480 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00000490 @1 EQU 01 00000500 @2 EQU 02 00000510 @3 EQU 03 00000520 @4 EQU 04 00000530 @5 EQU 05 00000540 @6 EQU 06 00000550 @7 EQU 07 00000560 @8 EQU 08 00000570 @9 EQU 09 00000580 @A EQU 10 00000590 @B EQU 11 00000600 @C EQU 12 00000610 @D EQU 13 00000620 @E EQU 14 00000630 @F EQU 15 00000640 DS 0D 00000650 @DATA EQU * 00000660 DS 00000000C 00000670 @TEMPS DS 0F 00000680 @DATEND EQU * 00000690 END IFDMSG13 00000700 ./ ADD SSI=01012026,NAME=IFDMSG20,SOURCE=1 * GENERATE; 00000000 TITLE ' IFDMSG20--CHANNEL DP MESSAGE MODULE.' 00000010 * IFDMSG20: /* MAIN ENTRY OF MESSAGE MODULE REFERENCED BY IFDOLT20 * 00000020 * /******************************************************************* 00000030 * /* * 00000040 * /* STATUS: CHANGE LEVEL 0 * 00000050 * /* * 00000060 * /* FUNCTION: THIS MODULE CONTAINS THE LIST FORM OF THE WTO'S * 00000070 * /* REFERENCED BY DPCHAN (IFDOLT20) AND EXECUTED BY * 00000080 * /* OLTEP'S PARALLEL PRINT MODULE. THE FIRST PORTION * 00000090 * /* OF THE MODULE CONTAINS A LIST OF ADDRESSES REFER- * 00000100 * /* ENCING EACH MESSAGE. IFDMSG20 IS LINK EDITED WITH * 00000110 * /* MODULE IFDOLT20. * 00000120 * /* * 00000130 * /* ENTRY POINTS: IFDMSG20 IS THE MAIN AND ONLY ENTRY POINT OF * 00000140 * /* THIS MODULE. * 00000150 * /* * 00000160 * /* INPUT: THE FORMAT OF THE MESSAGES WILL BE ALTERED BY IFDOLT20. * 00000170 * /* * 00000180 * /* OUTPUT: WTO'S WILL RESULT FROM THE EXECUTION OF IFDMSG20. * 00000190 * /* * 00000200 * /* EXTERNAL ROUTINES: NONE * 00000210 * /* * 00000220 * /* TABLES/WORK AREAS: A TABLE CONTAINING THE ADDRESS OF EACH * 00000230 * /* MESSAGE LOCATED IN IFDMSG20. * 00000240 * /* * 00000250 * /* ATTRIBUTES: TRANSIENT, REUSABLE. * 00000260 * /* * 00000270 * /******************************************************************* 00000280 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00000290 LCLA &T,&SPN 0002 00000300 .@001 ANOP 0002 00000310 IFDMSG20 CSECT , 0002 00000320 * 00000330 * /************************************************************ 00000340 * /* THE FOLLOWING GENERATED CODE IS MADE UP OF AN ADDRESS * 00000350 * /* TABLE AND THE LIST FORM OF WTO'S REFERENCED BY IFDOLT20 * 00000360 * /************************************************************ 00000370 * GENERATE; 00000380 DC A(IFD150) POINTER TO MESSAGE IFD150I 00000390 DC A(IFD151) POINTER TO MESSAGE IFD151I 00000400 DC A(IFD152) POINTER TO MESSAGE IFD152I 00000410 DC A(IFD153) POINTER TO MESSAGE IFD153I 00000420 IFD150 WTO 'IFD150I TEST BYPASSED. ON ',MF=L,ROUTX00000430 CDE=10,DESC=7 00000440 IFD151 WTO 'IFD151I TEST BYPASSED. CHANNEL NOT A 2880',MF=L,ROUTCDX00000450 E=10,DESC=7 00000460 IFD152 WTO 'IFD152I TEST BYPASSED. CHANNEL CANNOT BE QUIESCED',MF=LX00000470 ,ROUTCDE=10,DESC=7 00000480 IFD153 WTO 'IFD153I TEST BYPASSED. CPU NOT SUPPORTED FOR CHANNEL TEC00000490 STING',MF=L,ROUTCDE=10,DESC=7 00000500 DS 0H 00000510 * END IFDMSG20; 00000520 @EL01 BCR 15,@E 0004 00000530 @DATA1 EQU * 0004 00000540 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00000550 @1 EQU 01 00000560 @2 EQU 02 00000570 @3 EQU 03 00000580 @4 EQU 04 00000590 @5 EQU 05 00000600 @6 EQU 06 00000610 @7 EQU 07 00000620 @8 EQU 08 00000630 @9 EQU 09 00000640 @A EQU 10 00000650 @B EQU 11 00000660 @C EQU 12 00000670 @D EQU 13 00000680 @E EQU 14 00000690 @F EQU 15 00000700 DS 0D 00000710 @DATA EQU * 00000720 DS 00000000C 00000730 @TEMPS DS 0F 00000740 @DATEND EQU * 00000750 END IFDMSG20 00000760 ./ ADD SSI=01012391,NAME=IFDMSG22,SOURCE=1 TITLE 'ALLOCATE MESSAGE MODULE' 00010000 * GENERATE; 00020000 TITLE 'ALLOCATE MESSAGE MODULE' 00030000 * IFDMSG22: 00040000 * PROC OPTIONS(DONTSAVE,NOSAVEAREA,CODEREG(0),DATAREG(0)); 00050000 LCLA &T,&SPN 0002 00060000 .@001 ANOP 0002 00070000 IFDMSG22 CSECT , 0002 00080000 * GENERATE; 00090000 DC AL4(IFD120) 00100000 DC AL4(IFD145) 00110000 DC AL4(IFD156) 00120000 DC AL4(IFD162) 00130000 DS 0F 00140000 IFD120 DC XL1'00' 00150000 DC XL3'00' 00160000 DC XL4'00' 00170000 WTO 'IFD120D CAN VOL DATA ON BE DESTROYED. REPLY, YX00180000 ES OR NO',MF=L,ROUTCDE=10,DESC=7 00190000 DS 0F 00200000 IFD145 DC XL1'00' 00210000 DC XL3'00' 00220000 DC XL4'00' 00230000 WTO 'IFD145D IS OFFLINE TO ALL SHARING SYSTEMS. REPX00240000 LY, YES OR NO',MF=L,ROUTCDE=10,DESC=7 00250000 IFD156 WTO 'IFD156I DEVICE STATUS CHANGED. BYPASS TESTS',MX00260000 F=L,ROUTCDE=10,DESC=7 00270000 IFD162 WTO 'IFD162I UNIT , DSNAME=OSOLTEP COULD NOT BE SCRX00280000 ATCHED',MF=L,ROUTCDE=10,DESC=7 00290000 DS 0H 00300000 * END; 00310000 @EL01 BCR 15,@E 0004 00320000 @DATA1 EQU * 00330000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00340000 @1 EQU 01 00350000 @2 EQU 02 00360000 @3 EQU 03 00370000 @4 EQU 04 00380000 @5 EQU 05 00390000 @6 EQU 06 00400000 @7 EQU 07 00410000 @8 EQU 08 00420000 @9 EQU 09 00430000 @A EQU 10 00440000 @B EQU 11 00450000 @C EQU 12 00460000 @D EQU 13 00470000 @E EQU 14 00480000 @F EQU 15 00490000 DS 0D 00500000 @DATA EQU * 00510000 DS 00000000C 00520000 @TEMPS DS 0F 00530000 @DATEND EQU * 00540000 END 00550000 ./ ADD SSI=01012588,NAME=IFDMSG25,SOURCE=1 TITLE ' IFDMSG25--DIAGNOSE MESSAGE MODULE,' 00010000 * GENERATE; 00020000 TITLE ' IFDMSG25--DIAGNOSE MESSAGE MODULE.' 00030000 * IFDMSG25: /* MAIN ENTRY OF MESSAGE MODULE REFERENCED BY IFDOLT25 * 00040000 * /******************************************************************* 00050000 * /* * 00060000 * /* STATUS: CHANGE LEVEL 0 * 00070000 * /* * 00080000 * /* FUNCTION: THIS MODULE CONTAINS THE LIST FORM OF THE WTO'S RE- * 00090000 * /* FERENCED BY DIAGNOSE (IFDOLT25) AND EXECUTED BY * 00100000 * /* OLTEP'S PARALLEL PRINT MODULE. THE FIRST PORTION * 00110000 * /* OF THE MODULE CONTAINS A LIST OF ADDRESSES REFER- * 00120000 * /* ENCING EACH MESSAGE. IFDMSG25 IS LINK EDITED WITH * 00130000 * /* MODULE IFDOLT25. * 00140000 * /* * 00150000 * /* ENTRY POINTS: IFDMSG25 IS THE MAIN AND ONLY ENTRY POINT OF * 00160000 * /* THIS MODULE. * 00170000 * /* * 00180000 * /* INPUT: THE FORMAT OF THE MESSAGES WILL BE ALTERED BY IFDOLT25. * 00190000 * /* * 00200000 * /* OUTPUT: WTO'S WILL RESULT FROM THE EXECUTION OF IFDMSG25. * 00210000 * /* * 00220000 * /* EXTERNAL ROUTINES: NONE * 00230000 * /* * 00240000 * /* TABLES/WORK AREAS: A TABLE CONTAINING THE ADDRESS OF EACH * 00250000 * /* MESSAGE LOCATED IN IFDMSG25. * 00260000 * /* * 00270000 * /* ATTRIBUTES: TRANSIENT, REUSABLE. * 00280000 * /* * 00290000 * /******************************************************************* 00300000 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00310000 LCLA &T,&SPN 0002 00320000 .@001 ANOP 0002 00330000 IFDMSG25 CSECT , 0002 00340000 * /************************************************************ 00350000 * /* THE FOLLOWING GENERATED CODE IS MADE UP OF AN ADDRESS * 00360000 * /* TABLE AND THE LIST FORM OF WTO'S REFERENCED BY IFDOLT25 * 00370000 * /************************************************************ 00380000 * GENERATE; 00390000 DC A(IFD128) POINTER TO MESSAGE IFD128I 00400000 IFD128 WTO 'IFD128I TEST BYPASSED, CHANNEL DATA PROTECT NOT DONE', X00410000 MF=L,ROUTCDE=10,DESC=7 S21051 00420000 DS 0H 00430000 * END IFDMSG25; 00440000 @EL01 BCR 15,@E 0004 00450000 @DATA1 EQU * 00460000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00470000 @1 EQU 01 00480000 @2 EQU 02 00490000 @3 EQU 03 00500000 @4 EQU 04 00510000 @5 EQU 05 00520000 @6 EQU 06 00530000 @7 EQU 07 00540000 @8 EQU 08 00550000 @9 EQU 09 00560000 @A EQU 10 00570000 @B EQU 11 00580000 @C EQU 12 00590000 @D EQU 13 00600000 @E EQU 14 00610000 @F EQU 15 00620000 DS 0D 00630000 @DATA EQU * 00640000 DS 00000000C 00650000 @TEMPS DS 0F 00660000 @DATEND EQU * 00670000 END IFDMSG25 00680000 ./ ADD SSI=01012646,NAME=IFDMSG31,SOURCE=1 TITLE 'DEVICE DECODE MESSAGE MODULE' 00010000 * GENERATE; 00020000 TITLE 'DEVICE DECODE MESSAGE MODULE' 00030000 * IFDMSG31: 00040000 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00050000 LCLA &T,&SPN 0002 00060000 .@001 ANOP 0002 00070000 IFDMSG31 CSECT , 0002 00080000 * GENERATE; 00090000 DC AL4(IFD108) 00100000 DC AL4(IFD111) 00110000 DC AL4(IFD179) 00120000 DC AL4(IFD161) 00130000 DC AL4(IFD165) S20203 00140000 IFD108 WTO 'IFD108I INVALID ENTRY IN DEV FLD-XX',MF=L,ROUTCDE=10,DEX00150000 SC=7 00160000 IFD111 WTO 'IFD111I NO DEVICES AVAILABLE FOR TEST',MF=L,ROUTCDE=10,X00170000 DESC=7 00180000 IFD179 WTO 'IFD179I NO UCB FOR ADDRESS ',MF=L,ROUTCDE=10,DX00190000 ESC=7 00200000 IFD161 WTO 'IFD161I FOR HELP ENTER PROMPT DEV TO NEXT DEV/TEST/OPT/X00210000 MESSAGE',MF=L,ROUTCDE=10,DESC=7 00220000 IFD165 WTO 'IFD165I ENTRY IN DEV FLD NOT ALLOWABLE BY REMOTE',MF=L,X00230000 ROUTCDE=10,DESC=7 M4501 00240000 DS 0H 00250000 * END; 00260000 @EL01 BCR 15,@E 0004 00270000 @DATA1 EQU * 00280000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00290000 @1 EQU 01 00300000 @2 EQU 02 00310000 @3 EQU 03 00320000 @4 EQU 04 00330000 @5 EQU 05 00340000 @6 EQU 06 00350000 @7 EQU 07 00360000 @8 EQU 08 00370000 @9 EQU 09 00380000 @A EQU 10 00390000 @B EQU 11 00400000 @C EQU 12 00410000 @D EQU 13 00420000 @E EQU 14 00430000 @F EQU 15 00440000 DS 0D 00450000 @DATA EQU * 00460000 DS 00000000C 00470000 @TEMPS DS 0F 00480000 @DATEND EQU * 00490000 END 00500000 ./ ADD SSI=01012391,NAME=IFDMSG32,SOURCE=1 TITLE 'TEST DECODE MESSAGE MODULE' 00010000 * GENERATE; 00020000 TITLE 'TEST DECODE MESSAGE MODULE' 00030000 * IFDMSG32: 00040000 * PROC OPTIONS(DONTSAVE,NOSAVEAREA,CODEREG(0),DATAREG(0)); 00050000 LCLA &T,&SPN 0002 00060000 .@001 ANOP 0002 00070000 IFDMSG32 CSECT , 0002 00080000 * GENERATE; 00090000 DC AL4(IFD112) 00100000 DC AL4(IFD161) 00110000 DC AL4(IFD155) 00120000 IFD112 WTO 'IFD112I INVALID ENTRY IN TEST FLD-XX',MF=L,ROUTCDE=10,DX00130000 ESC=7 00140000 IFD161 WTO 'IFD161I FOR HELP ENTER PROMPT TEST TO NEXT DEV/TEST/OPTX00150000 / MESSAGE',MF=L,ROUTCDE=10,DESC=7 00160000 IFD155 WTO 'IFD155I TEST SECTIONS MAY NOT EXCEED 26',MF=L,ROUTCDE=1X00170000 0,DESC=7 00180000 DS 0H 00190000 * END; 00200000 @EL01 BCR 15,@E 0004 00210000 @DATA1 EQU * 00220000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00230000 @1 EQU 01 00240000 @2 EQU 02 00250000 @3 EQU 03 00260000 @4 EQU 04 00270000 @5 EQU 05 00280000 @6 EQU 06 00290000 @7 EQU 07 00300000 @8 EQU 08 00310000 @9 EQU 09 00320000 @A EQU 10 00330000 @B EQU 11 00340000 @C EQU 12 00350000 @D EQU 13 00360000 @E EQU 14 00370000 @F EQU 15 00380000 DS 0D 00390000 @DATA EQU * 00400000 DS 00000000C 00410000 @TEMPS DS 0F 00420000 @DATEND EQU * 00430000 END 00440000 ./ ADD SSI=01012391,NAME=IFDMSG33,SOURCE=1 TITLE 'OPTION DECODE MESSAGE MODULE' 00010000 * GENERATE; 00020000 TITLE 'OPTION DECODE MESSAGE MODULE' 00030000 * IFDMSG33: 00040000 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00050000 LCLA &T,&SPN 0002 00060000 .@001 ANOP 0002 00070000 IFDMSG33 CSECT , 0002 00080000 * GENERATE; 00090000 DC AL4(IFD104) 00100000 DC AL4(IFD107) 00110000 DC AL4(IFD115) 00120000 DC AL4(IFD161) 00130000 DC AL4(IFD176) M4501 00140000 IFD104 DC XL1'00' 00150000 DC XL3'00' 00160000 DC XL4'00' 00170000 WTO 'IFD104E TO FORCE COMMUNICATION WITH OLTEP EXECUTIVE, ENX00180000 TER ANY CHAR',MF=L,ROUTCDE=10,DESC=7 00190000 * M1006 00200000 IFD107 WTO 'IFD107I OPTIONS ARE NFE,NMI,NPP,NTL,NEL,NCP,NEP,NPR,NREX00210000 ',MF=L,ROUTCDE=10,DESC=7 S20203 00220000 IFD115 WTO 'IFD115I INVALID ENTRY IN OPT FLD- ',MF=L,ROUTX00230000 CDE=10,DESC=7 M4501 00240000 IFD161 WTO 'IFD161I FOR HELP ENTER PROMPT OPT TO NEXT DEV/TEST/OPTX00250000 / MESSAGE',MF=L,ROUTCDE=10,DESC=7 00260000 IFD176 WTO 'IFD176I MUTUALLY EXCLUSIVE OPTIONS HAVE BEEN SELECTED',X00270000 MF=L,ROUTCDE=10,DESC=7 M4501 00280000 DS 0H 00290000 * END; 00300000 @EL01 BCR 15,@E 0004 00310000 @DATA1 EQU * 00320000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00330000 @1 EQU 01 00340000 @2 EQU 02 00350000 @3 EQU 03 00360000 @4 EQU 04 00370000 @5 EQU 05 00380000 @6 EQU 06 00390000 @7 EQU 07 00400000 @8 EQU 08 00410000 @9 EQU 09 00420000 @A EQU 10 00430000 @B EQU 11 00440000 @C EQU 12 00450000 @D EQU 13 00460000 @E EQU 14 00470000 @F EQU 15 00480000 DS 0D 00490000 @DATA EQU * 00500000 DS 00000000C 00510000 @TEMPS DS 0F 00520000 @DATEND EQU * 00530000 END 00540000 ./ ADD SSI=01012391,NAME=IFDMSG37,SOURCE=1 TITLE ' IFDMSG37--NEW CECOM MESSAGE MODULE.' 00010000 * GENERATE; 00020000 TITLE ' IFDMSG37--NEW CECOM MESSAGE MODULE.' 00030000 * IFDMSG37: /* MAIN ENTRY OF MESSAGE MODULE-REFERENCED BY IFDOLT37 * 00040000 * /******************************************************************** 00050000 * /* * 00060000 * /* STATUS: CHANGE LEVEL 0 * 00070000 * /* * 00080000 * /* FWNCTION: THIS MODULE CONTAINS THE LIST FORM OF THE WTO'S AND * 00090000 * /* WTOR'S REFERENCED BY CECOM (IFDOLT37) AND EXECUTED BY * 00100000 * /* OLTEP'S PARALLEL PRINT MODULE. THE FIRST PORTION OF * 00110000 * /* IFDMSG37 CONTAINS A LIST OF ADDRESS POINTERS USED TO * 00120000 * /* REFERENCE MESSAGES WITHIN THE MODULE. THIS MODULE * 00130000 * /* WILL BE LINK EDITED WITH MODULE IFDOLT37. * 00140000 * /* * 00150000 * /* ENTRY POINTS: IFDMSG37 IS THE MAIN AND ONLY ENTRY POINT OF * 00160000 * /* THIS MODULE. * 00170000 * /* * 00180000 * /* INPUT: THE FORMAT OF THE MESSAGES WILL BE ALTERED BY IFDOLT37. * 00190000 * /* * 00200000 * /* OUTPUT: A WTO OR WTOR WILL RESULT FROM THE INVOKING OF THE * 00210000 * /* MODULE. * 00220000 * /* * 00230000 * /* EXTERNAL ROUTINES: NONE * 00240000 * /* * 00250000 * /* TABLES/WORK AREAS: ONE TABLE CONTAINING THE ADDRESS OF EACH * 00260000 * /* WTO AND WOTR IN IFDMSG37. * 00270000 * /* * 00280000 * /* ATTRIBUTES: TRANSIENT,REUSABLE * 00290000 * /* * 00300000 * /******************************************************************** 00310000 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00320000 LCLA &T,&SPN 0002 00330000 .@001 ANOP 0002 00340000 IFDMSG37 CSECT , 0002 00350000 * /************************************************************ 00360000 * /* THE FOLLOWING GENERATED CODE IS THE COMPLETE MODULE * 00370000 * /************************************************************ 00380000 * GENERATE; 00390000 DC A(IFD100) POINTER TO MESSAGE IFD100I 00400000 DC A(IFD101) POINTER TO MESSAGE IFD101D 00410000 DC A(IFD154) POINTER TO MESSAGE IFD154E 00420000 DC A(IFD121) POINTER TO MESSAGE IFD121I 00430000 SPACE 2 00440000 IFD100 WTO 'IFD100I C00450000 ',MF=L,ROUTCDE=10,DESC=7 00460000 DS 0F 00470000 IFD101 DC XL8'00' 00480000 WTO 'IFD101D C00490000 ',MF=L,ROUTCDE=10,DESC=7 00500000 DS 0F 00510000 IFD154 DC XL8'00' 00520000 WTO 'IFD154E C00530000 ',MF=L,ROUTCDE=10,DESC=7 00540000 IFD121 WTO 'IFD121I MESSAGE CANCELLED BY OLTEP.',MF=L,ROUTCDE=10X00550000 ,DESC=7 00560000 DS 0H 00570000 * END IFDMSG37; 00580000 @EL01 BCR 15,@E 0004 00590000 @DATA1 EQU * 00600000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00610000 @1 EQU 01 00620000 @2 EQU 02 00630000 @3 EQU 03 00640000 @4 EQU 04 00650000 @5 EQU 05 00660000 @6 EQU 06 00670000 @7 EQU 07 00680000 @8 EQU 08 00690000 @9 EQU 09 00700000 @A EQU 10 00710000 @B EQU 11 00720000 @C EQU 12 00730000 @D EQU 13 00740000 @E EQU 14 00750000 @F EQU 15 00760000 DS 0D 00770000 @DATA EQU * 00780000 DS 00000000C 00790000 @TEMPS DS 0F 00800000 @DATEND EQU * 00810000 END IFDMSG37 00820000 ./ ADD SSI=01012391,NAME=IFDMSG38,SOURCE=1 TITLE 'TEST ROUTINE DECODE MESSAGE MODULE' 00010000 * GENERATE; 00020000 TITLE 'TEST ROUTINE DECODE MESSAGE MODULE' 00030000 * IFDMSG38: 00040000 * PROC OPTIONS(DONTSAVE,NOSAVEAREA,CODEREG(0),DATAREG(0)); 00050000 LCLA &T,&SPN 0002 00060000 .@001 ANOP 0002 00070000 IFDMSG38 CSECT , 0002 00080000 * GENERATE; 00090000 DC AL4(IFD112) 00100000 DC AL4(IFD161) 00110000 IFD112 WTO 'IFD112I INVALID ENTRY IN TEST FLD-XX',MF=L,ROUTCDE=10,DX00120000 ESC=7 00130000 IFD161 WTO 'IFD161I FOR HELP ENTER PROMPT TEST TO NEXT DEV/TEST/OPTX00140000 / MESSAGE',MF=L,ROUTCDE=10,DESC=7 00150000 DS 0H 00160000 * END; 00170000 @EL01 BCR 15,@E 0004 00180000 @DATA1 EQU * 00190000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00200000 @1 EQU 01 00210000 @2 EQU 02 00220000 @3 EQU 03 00230000 @4 EQU 04 00240000 @5 EQU 05 00250000 @6 EQU 06 00260000 @7 EQU 07 00270000 @8 EQU 08 00280000 @9 EQU 09 00290000 @A EQU 10 00300000 @B EQU 11 00310000 @C EQU 12 00320000 @D EQU 13 00330000 @E EQU 14 00340000 @F EQU 15 00350000 DS 0D 00360000 @DATA EQU * 00370000 DS 00000000C 00380000 @TEMPS DS 0F 00390000 @DATEND EQU * 00400000 END 00410000 ./ ADD SSI=01013161,NAME=IFDMSG50,SOURCE=1 TITLE 'PROMPTING MESSAGE MODULE' 00010000 * GENERATE; 00020000 TITLE 'PROMPTING MESSAGE MODULE' 00030000 * IFDMSG50: 00040000 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00050000 LCLA &T,&SPN 0002 00060000 .@001 ANOP 0002 00070000 IFDMSG50 CSECT , 0002 00080000 * GEN; 00090000 DC AL4(IFD147) 00100000 DC AL4(DMSG) 00110000 DC AL4(IFD148) 00120000 DC AL4(TMSG) 00130000 DC AL4(IFD149) 00140000 DC AL4(OMSG) 00150000 DC AL4(IFD146) 00160000 IFD147 WTO 'IFD147I X00170000 ',MF=L,ROUTCDE=10,DESC=7 00180000 IFD148 WTO 'IFD148I X00190000 ',MF=L,ROUTCDE=10,DESC=7 00200000 IFD149 WTO 'IFD149I X00210000 ',MF=L,ROUTCDE=10,DESC=7 00220000 IFD146 WTO 'IFD146I SEE SRL - ONLINE TEST EXECUTIVE PROGRAM',MF=L,RX00230000 OUTCDE=10,DESC=7 00240000 DMSG DC CL51'EXAMPLES OF DEVICE FIELD' 00250000 DC CL51'0181/ TEST DEVICE 181' 00260000 DC CL51'0185-187/ TEST DEVICES 185,186 AND 187' 00270000 DC CL51'CHICAGO1,TP2/ TEST SYMBOLIC TP DEVICES' 00280000 DC CL51' CHICAGO1 AND TP2' 00290000 DC CL51'.NDR/ NO DEVICE REQUIRED FOR TEST' 00300000 DC CL51'.CH282/ TEST CHANNEL 2 USING DEVICE 82' 00310000 DC CL51'/ (SLASH ALONE) TEST PREVIOUSLY SELECTED DEVICE(S)' 00320000 TMSG DC CL51'EXAMPLES OF TEST FIELD' 00330000 DC CL51'2400/ TAPE TESTS (T2400A-T24000Z)' 00340000 DC CL51'2400A/ SEC. A OF TAPE TEST 2400' 00350000 DC CL51'2400C,2/ RTN 2, SEC. C, TEST 2400' 00360000 DC CL51'2400A-C,E,G/ SEC. A,B,C,E, AND G OF TEST 2400' 00370000 DC CL51'IOEPZZ/ SEC. ZZ OF EDIT-PRINT FUNCTION' 00380000 DC CL51'R2540AA/ SEC. AA OF READER TEST 2540' 00390000 DC CL51'/ (SLASH ALONE) RUN PREVIOUSLY SELECTED TESTS' 00400000 OMSG DC CL51' TABLE OF OPTIONS' 00410000 DC CL51' TO REQUEST TO OMIT BY' 00420000 DC CL51' OPTION OPTION OPTION DEFAULTX00430000 ' 00440000 DC CL51'TESTING LOOP TL NTL NTL' 00450000 DC CL51' TL(VALUE) VALUE=1-32767' 00460000 DC CL51'ERROR LOOP EL NEL NEL' 00470000 DC CL51' EL(VALUE) VALUE=1-32767' 00480000 DC CL51'ERROR PRINT EP NEP EP' 00490000 DC CL51'CONTROL PRINT CP NCP CP' 00500000 DC CL51'PARALLEL PRINT PP NPP NPP' 00510000 * M1006 00520000 DC CL51' PP(LEVEL) LEVEL=0-3' 21937 00530000 DC CL51'PRINT PR NPR NPR' 00540000 DC CL51'FIRST ERROR FE NFE FE' 00550000 DC CL51'COMMUNICATION' 00560000 DC CL51'MANUAL INTERVENTION MI NMI NMI' 00570000 DC CL51'REMOTE FE CONTROL RE NRE NRE' 00580000 DC CL51'EXTERNAL DATA EXT=' 00590000 * S20203 00600000 DC CL51'EXAMPLES OF OPTION FIELD' 00610000 DC CL51'PP,NMI,RE/' 00620000 DC CL51'EP,TL(50),FE,EXT=A,B/' 00630000 DS 0H 00640000 * END; 00650000 @EL01 BCR 15,@E 0004 00660000 @DATA1 EQU * 00670000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00680000 @1 EQU 01 00690000 @2 EQU 02 00700000 @3 EQU 03 00710000 @4 EQU 04 00720000 @5 EQU 05 00730000 @6 EQU 06 00740000 @7 EQU 07 00750000 @8 EQU 08 00760000 @9 EQU 09 00770000 @A EQU 10 00780000 @B EQU 11 00790000 @C EQU 12 00800000 @D EQU 13 00810000 @E EQU 14 00820000 @F EQU 15 00830000 DS 0D 00840000 @DATA EQU * 00850000 DS 00000000C 00860000 @TEMPS DS 0F 00870000 @DATEND EQU * 00880000 END 00890000 ./ ADD SSI=01012392,NAME=IFDMSG53,SOURCE=1 TITLE 'RESTORE TAPE LABELS MESSAGE MODULE IFDMSG53' 00010000 * GENERATE; 00020000 TITLE 'RESTORE TAPE LABELS MESSAGE MODULE IFDMSG53' 00030000 * IFDMSG53: 00040000 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00050000 LCLA &T,&SPN 0002 00060000 .@001 ANOP 0002 00070000 IFDMSG53 CSECT , 0002 00080000 * /************************************************************ 00090000 * /* * 00100000 * /* MESSAGE MODULE FOR IFDOLT53-WRITE TAPE LABEL * 00110000 * /* * 00120000 * /************************************************************ 00130000 * GEN; 00140000 DC A(MSG1) 00150000 DC A(MSG2) 00160000 DC A(MSG3) 00170000 MSG1 WTO 'IFD174I UNABLE TO RESTORE LABEL ON XXXXXXXX',MF=L,ROUTCX00180000 DE=10,DESC=7 S21050 00190000 MSG2 WTO 'IFD137I CSW XXYYYYYYYYYYYYYY SNS XXXXXXXXXXXX',MF=L,ROUX00200000 TCDE=10,DESC=7 S21050 00210000 MSG3 DS F 00220000 DS F 00230000 WTO 'IFD139D REPLY R TO RETRY,P TO PROCEED',MF=L,ROUTCDE=10,X00240000 DESC=7 00250000 DS 0H 00260000 * END; 00270000 @EL01 BCR 15,@E 0004 00280000 @DATA1 EQU * 00290000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00300000 @1 EQU 01 00310000 @2 EQU 02 00320000 @3 EQU 03 00330000 @4 EQU 04 00340000 @5 EQU 05 00350000 @6 EQU 06 00360000 @7 EQU 07 00370000 @8 EQU 08 00380000 @9 EQU 09 00390000 @A EQU 10 00400000 @B EQU 11 00410000 @C EQU 12 00420000 @D EQU 13 00430000 @E EQU 14 00440000 @F EQU 15 00450000 DS 0D 00460000 @DATA EQU * 00470000 DS 00000000C 00480000 @TEMPS DS 0F 00490000 @DATEND EQU * 00500000 END 00510000 ./ ADD SSI=01012392,NAME=IFDMSG54,SOURCE=1 TITLE ' RETAIN/370 INITIALIZATION MESSAGE MODULE IFDMSG54' 00010000 * GENERATE; 00020000 TITLE 'RETAIN/370 INITIALIZATION MESSAGE MODULE IFDMSG54' 00030000 * IFDMSG54: 00040000 * PROCEDURE OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00050000 LCLA &T,&SPN 0002 00060000 .@001 ANOP 0002 00070000 IFDMSG54 CSECT , 0002 00080000 * GEN; 00090000 DC AL4(MSG1) 00100000 DC AL4(MSG2) 00110000 DC AL4(MSG3) 00120000 DC AL4(MSG4) 00130000 DC AL4(MSG5) 00140000 * S21051 00150000 MSG1 WTO 'IFD163I RETAIN/370 READY',MF=L,ROUTCDE=10,DESC=7 00160000 * S21051 00170000 MSG2 WTO 'IFD164I CANNOT LINK TO RETAIN/370',MF=L,ROUTCDE=10,DESCX00180000 =7 00190000 MSG3 DS 2F 00200000 WTO 'IFD168E TO COMMUNICATE WITH REMOTE SPECIALIST ENTER MESC00210000 SAGE',MF=L,ROUTCDE=10,DESC=7 00220000 * S21051 00230000 MSG4 WTO 'IFD137I CSW YYXXXXXXXXXXXXXX SNS XXXXXXXXXXXX',MF=L,ROUX00240000 TCDE=10,DESC=7 00250000 * M4503 00260000 MSG5 WTO 'IFD505I TIME INTERVAL EXPIRED,NO LINE ACTIVITY',MF=L,ROX00270000 UTCDE=10,DESC=7 00280000 DS 0H 00290000 * END; 00300000 @EL01 BCR 15,@E 0004 00310000 @DATA1 EQU * 00320000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00330000 @1 EQU 01 00340000 @2 EQU 02 00350000 @3 EQU 03 00360000 @4 EQU 04 00370000 @5 EQU 05 00380000 @6 EQU 06 00390000 @7 EQU 07 00400000 @8 EQU 08 00410000 @9 EQU 09 00420000 @A EQU 10 00430000 @B EQU 11 00440000 @C EQU 12 00450000 @D EQU 13 00460000 @E EQU 14 00470000 @F EQU 15 00480000 DS 0D 00490000 @DATA EQU * 00500000 DS 00000000C 00510000 @TEMPS DS 0F 00520000 @DATEND EQU * 00530000 END 00540000 ./ ADD SSI=01012393,NAME=IFDMSG56,SOURCE=1 TITLE ' RETAIN/370 TERMINATION MESSAGE MODULE IFDMSG56' 00010000 * GENERATE; 00020000 TITLE 'RETAIN/370 TERMINATION MESSAGE MODULE IFDMSG56' 00030000 * IFDMSG56: 00040000 * PROCEDURE OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00050000 LCLA &T,&SPN 0002 00060000 .@001 ANOP 0002 00070000 IFDMSG56 CSECT , 0002 00080000 * GEN; 00090000 DC AL4(MSG1) 00100000 DC AL4(MSG2) 00110000 DC AL4(MSG3) 00120000 DC AL4(MSG4) 00130000 * S21051 00140000 DC AL4(MSG5) 00150000 * S21051 00160000 MSG1 WTO 'IFD169I RETAIN/370 TERMINATED',MF=L,ROUTCDE=10,DESC=7 00170000 MSG2 WTO 'IFD121I MESSAGE CANCELLED BY OLTEP.',MF=L,ROUTCDE=10C00180000 ,DESC=7 00190000 * S21051 00200000 MSG3 WTO 'IFD167I PERMANENT ERROR ON REI DEVICE',MF=L,ROUTCDE=10,X00210000 DESC=7 00220000 * M4503 00230000 MSG4 WTO 'IFD505I TIME INTERVAL EXPIRED,NO LINE ACTIVITY',MF=L,ROX00240000 UTCDE=10,DESC=7 00250000 * S21051 00260000 MSG5 WTO 'IFD137I CSW YYXXXXXXXXXXXXXX SNS XX',MF=L,ROUTCDE=10,DEX00270000 SC=7 00280000 DS 0H 00290000 * END; 00300000 @EL01 BCR 15,@E 0004 00310000 @DATA1 EQU * 00320000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00330000 @1 EQU 01 00340000 @2 EQU 02 00350000 @3 EQU 03 00360000 @4 EQU 04 00370000 @5 EQU 05 00380000 @6 EQU 06 00390000 @7 EQU 07 00400000 @8 EQU 08 00410000 @9 EQU 09 00420000 @A EQU 10 00430000 @B EQU 11 00440000 @C EQU 12 00450000 @D EQU 13 00460000 @E EQU 14 00470000 @F EQU 15 00480000 DS 0D 00490000 @DATA EQU * 00500000 DS 00000000C 00510000 @TEMPS DS 0F 00520000 @DATEND EQU * 00530000 END 00540000 ./ ADD SSI=02010263,NAME=IFDMSG61,SOURCE=1 TITLE 'DEVICE DECODE MESSAGE MODULE' 00010000 TITLE 'DEVICE DECODE MESSAGE MODULE' 00020000 LCLA &T,&SPN 0002 00030000 .@001 ANOP 0002 00040000 IFDMSG61 CSECT , 0002 00050000 DC AL4(IFD109) 00060000 DC AL4(IFD110) 00070000 DC AL4(IFD111) 00080000 DC AL4(IFD114) 00090000 IFD109 WTO 'IFD109I XXXXXXXX YYYYYYY,ZZZZZZZZZZZ WILL NOT BE TESTED'00100000 ',MF=L,DESC=7,ROUTCDE=10 SA59673 00110000 IFD110 WTO 'IFD110I TESTABLE DEVICES MAY NOT EXCEED 16',MF=L,ROUTCDX00120000 E=10,DESC=7 00130000 IFD111 WTO 'IFD111I NO DEVICES AVAILABLE FOR TEST',MF=L,ROUTCDE=10,X00140000 DESC=7 00150000 IFD114 WTO 'IFD114I ALL GRAPHICS ON CONTROL UNIT NOT OFFLINE',MF=L,X00160000 ROUTCDE=10,DESC=7 00170000 DS 0H 00180000 * END; 00190000 @EL01 BCR 15,@E 0004 00200000 @DATA1 EQU * 00210000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00220000 @1 EQU 01 00230000 @2 EQU 02 00240000 @3 EQU 03 00250000 @4 EQU 04 00260000 @5 EQU 05 00270000 @6 EQU 06 00280000 @7 EQU 07 00290000 @8 EQU 08 00300000 @9 EQU 09 00310000 @A EQU 10 00320000 @B EQU 11 00330000 @C EQU 12 00340000 @D EQU 13 00350000 @E EQU 14 00360000 @F EQU 15 00370000 DS 0D 00380000 @DATA EQU * 00390000 DS 00000000C 00400000 @TEMPS DS 0F 00410000 @DATEND EQU * 00420000 END 00430000 ./ ADD SSI=01012393,NAME=IFDMSG73,SOURCE=1 * IFDMSG73: 00010000 * PROC OPTIONS(NOSAVEAREA,DONTSAVE,CODEREG(0),DATAREG(0)); 00020000 LCLA &T,&SPN 0001 00030000 .@001 ANOP 0001 00040000 IFDMSG73 CSECT , 0001 00050000 * GENERATE; 00060000 DC AL4(MSG01) 00070000 DC AL4(MSG02) 00080000 DC AL4(MSG03) 00090000 DC AL4(MSG07) 00100000 DC AL4(MSG08) 00110000 DC AL4(MSG09) 00120000 DC AL4(MSG10) 00130000 DC AL4(MSG11) 00140000 MSG01 WTO 'IFD413I REQUIRED CDS POINTER NOT PRESENT',MF=L,ROUTCDE=X00150000 10,DESC=7 00160000 MSG02 WTO 'IFD400I TP LINE CONNECTION, LINE=XXXXXXXX, TERMINAL=XXXX00170000 XXXXX',MF=L,ROUTCDE=10,DESC=7 00180000 MSG03 WTO 'IFD415I REQUIRED DATA INCORRECT OR MISSING IN CDS',MF=LX00190000 ,ROUTCDE=10,DESC=7 00200000 MSG07 WTO 'IFD405I OPERATOR CALL REQUIRED, TELEPHONE NUMBER NOT INX00210000 CDS',MF=L,ROUTCDE=10,DESC=7 00220000 MSG08 WTO 'IFD406I OPERATOR CALL TERMINAL ON NUMBER XXXXXXXXXXXXXXX00230000 XXXXXX',MF=L,ROUTCDE=10,DESC=7 00240000 MSG09 WTO 'IFD412I CCW CHAIN TERMINATED ON XXXXXXXXXXXXXXXX',MF=L,X00250000 ROUTCDE=10,DESC=7 00260000 MSG10 WTO 'IFD407I OPERATOR CALL NOT COMPLETED WITHIN TIME LIMITS'X00270000 ,MF=L,ROUTCDE=10,DESC=7 00280000 MSG11 WTO 'IFD137I CSW XXYYYYYYYYYYYYYY SNS XXXX',MF=L,ROUTCDE=10,X00290000 DESC=7 00300000 DS 0H 00310000 * END; 00320000 @EL01 BCR 15,@E 0003 00330000 @DATA1 EQU * 00340000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00350000 @1 EQU 01 00360000 @2 EQU 02 00370000 @3 EQU 03 00380000 @4 EQU 04 00390000 @5 EQU 05 00400000 @6 EQU 06 00410000 @7 EQU 07 00420000 @8 EQU 08 00430000 @9 EQU 09 00440000 @A EQU 10 00450000 @B EQU 11 00460000 @C EQU 12 00470000 @D EQU 13 00480000 @E EQU 14 00490000 @F EQU 15 00500000 DS 0D 00510000 @DATA EQU * 00520000 DS 00000000C 00530000 @TEMPS DS 0F 00540000 @DATEND EQU * 00550000 END 00560000 ./ ADD SSI=02010263,NAME=IFDOLTAJ,SOURCE=1 TITLE 'IFDOLTAJ--CUTEST MODULE' 00010000 LCLA &T,&SPN 0001 00020000 .@001 ANOP 0001 00030000 IFDOLTAJ CSECT , 0001 00040000 BC 15,24(0,@F) 00050000 DC C'IFDOLTAJ 26 JAN 73' 0001 00060000 ST @E,12(0,@D) 0001 00070000 STM @0,@C,20(@D) 0001 00080000 BALR @B,0 0001 00090000 @PSTART DS 0H 0001 00100000 USING @PSTART+00000,@B 0001 00110000 ST @D,@SAV001+4 0001 00120000 LA @F,@SAV001 0001 00130000 ST @F,8(0,@D) 0001 00140000 LR @D,@F 0001 00150000 TITLE 'IFDOLTAJ CUTEST MODULE' 00160000 DS 0H 00170000 USING CHASCT,2 ADDRESS COMMON AREA 00180000 DS 0H 00190000 * R7=R1; /* ADDRESS PARAMETER LIST * 00200000 LR @7,@1 0054 00210000 * R5=ADDR(IFDMSGAJ); /* SET POINTER TO MSG MOD * 00220000 L @C,@V1 ADDRESS OF IFDMSGAJ 0055 00230000 LR @5,@C 0055 00240000 * MODFLAGS='00'X; /* CLEAR OUT FLAG BYTE. * 00250000 MVI MODFLAGS,X'00' 0056 00260000 * NEWBASE=CUBASE; /* EXTENT UPDATE AREA * 00270000 L @8,4(0,@7) 0057 00280000 MVC NEWBASE(4),0(@8) 0057 00290000 * CULAST=CUBASE+CUFINISH-1; /* LAST DEV ON CNTRL UNIT * 00300000 LH @F,@D1 0058 00310000 SR @0,@0 0058 00320000 IC @0,4(0,@8) 0058 00330000 AR @F,@0 0058 00340000 A @F,0(0,@8) 0058 00350000 ST @F,CULAST 0058 00360000 * BUFCOUNT='00'X; /* CLEAR BUFR COUNTER * 00370000 LA @F,X'00' 0059 00380000 STH @F,BUFCOUNT 0059 00390000 * ENDOFTAB=DEVTBPTR+(TABLNGTH*(UNICTR-1)); 00400000 SR @F,@F 0060 00410000 IC @F,UNICTR 0060 00420000 BCTR @F,0 0060 00430000 MH @F,TABLNGTH 0060 00440000 A @F,DEVTBPTR 0060 00450000 ST @F,ENDOFTAB 0060 00460000 * CUTEST01: 00470000 * 00480000 * 00490000 * /* CHECK CUTEST MACRO LEVEL PARAMETER * 00500000 * IF CUTLEVLª='02'X THEN /* MACRO LEVEL 2 OR MORE. * 00510000 CUTEST01 CLI 1(@7),X'02' 0061 00520000 BC 08,@9FF 0061 00530000 * DO; /* ERROR IN MACRO CALL. * 00540000 * CUTEST1A: 00550000 * RETCODE='04'X; /* SET RETURN CODE TO 04. * 00560000 CUTEST1A LA @F,X'04' 0063 00570000 * GO TO CUTEST09; /* NO, ERROR, SET RC=04. * 00580000 BC 15,CUTEST09 0064 00590000 * END; 00600000 * 00610000 * GO TO CUTEST2A; /* CHECK NUMBER OF DEVS * 00620000 * 00630000 * CUTEST02: 00640000 * 00650000 * DO; /* SET RC FOR CUTEST NOT * 00660000 * RETCODE='0C'X; /* AVAILABLE. RETURN TO * 00670000 CUTEST02 LA @F,X'0C' 0068 00680000 * GO TO CUTEST09; /* OLT. * 00690000 BC 15,CUTEST09 0069 00700000 * END; 00710000 * 00720000 * CUTEST2A: /*SA58470* 00730000 * 00740000 * /* ARE ZERO DEVICES SPECIFIED ON CONTROL UNIT * 00750000 * IF CUFINISH='00'X THEN /* ZERO DEVICES ON CU. * 00760000 CUTEST2A L @C,4(0,@7) 0071 00770000 CLI 4(@C),X'00' 0071 00780000 * GO TO CUTEST02; /* YES, SET ERROR RETCOD * 00790000 BC 08,CUTEST02 0072 00800000 * 00810000 * 00820000 * /* CHECK CODE PARAMETER FOR 0 OR 1 VALUE * 00830000 * IF CUCODEª<'02'X THEN /* IF CODE PARM IS NOT M4831* 00840000 CLI 8(@7),X'02' 0073 00850000 * GO TO CUTEST02; /* DEFINED SET RC=0C. * 00860000 BC 10,CUTEST02 0074 00870000 * 00880000 * 00890000 * /* SET UP FOR SVC 59 FUNCTION * 00900000 * MODNUM='AJ'; /* MOD ID IN SVC PLIST * 00910000 MVC A00009+2(2),@C5 0075 00920000 * CUBASEAD=CUBASE; /* BASE CU ADDRESS. * 00930000 MVC A00009+4(4),0(@C) 0076 00940000 * CURANGE=CUFINISH; /* NUM OF DEVS ON CU. * 00950000 MVC A00009+9(1),4(@C) 0077 00960000 MVI A00009+8,X'00' 0077 00970000 * CUTCODE=CUCODE; /* CU CODE . * 00980000 MVC A00009+11(1),8(@7) 0078 00990000 MVI A00009+10,X'00' 0078 01000000 * MSGMODAJ=R5; /* PTR TO IFDMSGAJ. * 01010000 ST @5,A00009+12 0079 01020000 * 01030000 * 01040000 * CUTEST06: 01050000 * 01060000 * R0=ADDR(ROPT); /* ADDRESS SVC PARM LIST. * 01070000 CUTEST06 LA @0,ROPT 0080 01080000 * R1='94'X; /* SVC CALLING CODE. * 01090000 LA @1,X'94' 0081 01100000 * /* ISSUE SUC59 TO TEST DEV STATUS,CUCODE,RTAM CNTRL* 01110000 * GEN(SVC 59); /* SVC FOR CUTEST MACRO * 01120000 SVC 59 01130000 DS 0H 01140000 * 01150000 * 01160000 * /* TEST SVC 59 FOR RET CODE. RCª=0 MEANS DEV ERROR * 01170000 * IF RCª='00'X THEN /* RC MEANS ONLINE DEVS * 01180000 LA @0,X'00' 0083 01190000 CR @0,@F 0083 01200000 BC 08,@9FE 0083 01210000 * DO; /* OUTPUT ONLINE DEVICES * 01220000 * 01230000 * 01240000 * /* CHECK TO DETERMINE IF HEADER MESSAGE OUTPUT * 01250000 * IF ONLHEADR='0'B THEN /* HEADR MSG OUTPUT YET? * 01260000 TM MODFLAGS,B'01000000' 0085 01270000 BC 05,@9FD 0085 01280000 * DO; /* NO, PRINT IT. * 01290000 * R3=ADONLHDR; /* IN HEADR MSG,FOLLOWED * 01300000 L @3,8(0,@5) 0087 01310000 * GEN(PWTO REG=(R3)); /* BY ONLINE DEVS * 01320000 PWTO REG=(R3) 01330000 DS 0H 01340000 * ONLHEADR='1'B; /* SET FLG, HEADR OUTPUT * 01350000 OI MODFLAGS,B'01000000' 0089 01360000 * END; 01370000 * 01380000 * /* OUTPUT ONLINE DEVICES FOUND BY SVC 59 * 01390000 * 01400000 * R3=ADMSG244; /* SVC ONLINE BUFFER MSG * 01410000 @9FD L @3,0(0,@5) 0091 01420000 * GEN(PWTO REG=(R3)); /* OUTPUT ONLINE DEVS * 01430000 PWTO REG=(R3) 01440000 DS 0H 01450000 * SHARDBUF=SHARDBUF&&SHARDBUF; /* CLEAR BUFFER FOR SVC * 01460000 XC 12(60,@3),12(@3) 0093 01470000 * 01480000 * 01490000 * /* MORE DEVICES FOR SVC 59 TO LOOK AT? * 01500000 * IF CURANGE>'00'X THEN /* MORE DEVS TO CHECK? * 01510000 LA @F,X'00' 0094 01520000 CH @F,A00009+8 0094 01530000 * GO TO CUTEST06; /* YES, REISSUE SVC 59 * 01540000 BC 04,CUTEST06 0095 01550000 * 01560000 * 01570000 * CUTEST07: 01580000 * 01590000 * DO; /* OR DATA SET ON CU. SET * 01600000 * RETCODE='08'X; /* RET CODE=08. RETURN TO * 01610000 CUTEST07 LA @F,X'08' 0097 01620000 * GO TO CUTEST09; /* OLT. * 01630000 BC 15,CUTEST09 0098 01640000 * END; 01650000 * END; 01660000 * 01670000 * /* HAVE ONLINE DEVICES BEEN OUTPUT? XM5092* 01680000 * 01690000 * IF ONLHEADR='1'B THEN /* IF HEADR MSG OUTPUT XM5089* 01700000 @9FE TM MODFLAGS,B'01000000' 0101 01710000 * GO TO CUTEST07; /* HAVE ERROR COND. RTRNXM5089* 01720000 BC 01,CUTEST07 0102 01730000 * 01740000 * 01750000 * CUTEST08: 01760000 * 01770000 * 01780000 * /* SET UP FOR CONVERSION FROM HEX TO EBCDIC * 01790000 * HEXADDR=NEWBASE; /* ADDRESS C U LINE. * 01800000 CUTEST08 MVC HEXADDR(4),NEWBASE 0103 01810000 * ADDRHEX=ADDR(HEXADDR); 01820000 LA @F,HEXADDR 0104 01830000 ST @F,CONVERT+4 0104 01840000 * ADREBCD=ADDR(EBCDICAD); 01850000 LA @F,EBCDICAD 0105 01860000 ST @F,CONVERT+8 0105 01870000 * R1=ADDR(CONVERT); /* CONVERT PARM LIST. * 01880000 LA @1,CONVERT 0106 01890000 * R15=TAB28; /* TRANS MNGR FOR BRANCH. * 01900000 L @F,TAB28 0107 01910000 * GENERATE; 01920000 BALR R14,R15 CONVERT, HEX TO EBCDIC 01930000 DS 0H 01940000 * CDSNAME=EBCDICA7; /* PREPARE FOR CDS LOAD. * 01950000 MVC LOADCDS+1(7),EBCDICAD+1 0109 01960000 * GEN(ANYMOD LOAD=LOADCDS); /* LOAD CDS MODULE. * 01970000 ANYMOD LOAD=LOADCDS 01980000 DS 0H 01990000 * R1=RC; /* SAVE CDS ENTRY ADDR * 02000000 LR @1,@F 0111 02010000 * RESTRICT(R1); 02020000 * 02030000 * 02040000 * /* CHECK ENTRY POINT ADDR, MAKE SURE CDS LOADED * 02050000 * IF R1<='04'X THEN /* IF CDS NOT LOADED * 02060000 LA @F,X'04' 0113 02070000 CR @F,@1 0113 02080000 * GO TO CUTEST8A; /* PUT NON FOUND CDS IN * 02090000 BC 10,CUTEST8A 0114 02100000 * /* SHARD BUFFER MESSAGE. * 02110000 * 02120000 * 02130000 * /* CDS LOADED, CHECK DEV SHARED STATUS * 02140000 * IF DEVSHARD='1'B THEN /* IS DEVICE SHARED * 02150000 TM 9(@1),B'01000000' 0115 02160000 BC 12,@9FC 0115 02170000 * 02180000 * /* OUTPUT SHARED DEVICE HEADER MESSAGE. * 02190000 * 02200000 * DO; /* YES, * 02210000 * CUTEST8A: 02220000 * IF SHRHEADR='0'B THEN /* IF SHARE BIT IS ON IN * 02230000 CUTEST8A TM MODFLAGS,B'10000000' 0117 02240000 BC 05,@9FB 0117 02250000 * DO; 02260000 * R3=ADSHRHDR; /* ADDRESS MESSAGE FORMAT * 02270000 L @3,4(0,@5) 0119 02280000 * GEN(PWTO REG=(R3)); /* OUTPUT HEADER MESSAGE. * 02290000 PWTO REG=(R3) 02300000 DS 0H 02310000 * SHRHEADR='1'B; /* SET FLAG, HDR OUTPUT * 02320000 OI MODFLAGS,B'10000000' 0121 02330000 * R3=ADMSG244; /* ADDRESS SHARED DEV MSG * 02340000 L @3,0(0,@5) 0122 02350000 * SHARDBUF=SHARDBUF&&SHARDBUF; 02360000 XC 12(60,@3),12(@3) 0123 02370000 * SHARPTR=ADDR(SHARDBUF); /* ADDR SHARD MSG BUFR. * 02380000 LA @F,12(0,@3) 0124 02390000 ST @F,SHARPTR 0124 02400000 * END; /* END HEADR OUTPUT CODE. * 02410000 * 02420000 * 02430000 * DO; /* FILL SHARD BUFFER * 02440000 * SHARDDEV=EBCDICA7(5:7); 02450000 @9FB L @C,SHARPTR 0127 02460000 MVC 0(3,@C),EBCDICAD+5 0127 02470000 MVI 3(@C),C' ' 0127 02480000 * SHARDDEV(4)=','; /* PUT DELIMETER IN BUFR * 02490000 MVI 3(@C),C',' 0128 02500000 * SHARPTR=SHARPTR+4; /* UPDATE BUFR PTR. * 02510000 LA @F,4 0129 02520000 A @F,SHARPTR 0129 02530000 ST @F,SHARPTR 0129 02540000 * BUFCOUNT=BUFCOUNT+4; /* UPDATE BUFR CNTR. * 02550000 LA @F,4 0130 02560000 AH @F,BUFCOUNT 0130 02570000 STH @F,BUFCOUNT 0130 02580000 * END; 02590000 * END; 02600000 * 02610000 * NEWBASE=NEWBASE+'01'X; /* NEXT DEV ON C U * 02620000 @9FC LA @F,X'01' 0133 02630000 A @F,NEWBASE 0133 02640000 ST @F,NEWBASE 0133 02650000 * 02660000 * 02670000 * /* OUTPUT SHARED DEVICES IF BUFFR IS FULL OR AT END* 02680000 * IF NEWBASE>CULAST ³ /* LAST DEV LOOKED AT OR * 02690000 * BUFCOUNT>=BUFMAX THEN /* BUFR IS FULL,OUTPUT XM5092* 02700000 L @F,CULAST 0134 02710000 C @F,NEWBASE 0134 02720000 BC 04,@9FA 0134 02730000 LH @F,BUFMAX 0134 02740000 CH @F,BUFCOUNT 0134 02750000 BC 02,@9F9 0134 02760000 * 02770000 * /* OUTPUT SHARED DEVICES IN MESSAGE BUFFER. * 02780000 * 02790000 * DO; 02800000 * IF SHRHEADR='1'B THEN /* SHARED DEVS IF THEY * 02810000 @9FA TM MODFLAGS,B'10000000' 0136 02820000 BC 12,@9F8 0136 02830000 * DO; /* EXIST * 02840000 * R3=ADMSG244; /* ADDRESS MESSAGE * 02850000 L @3,0(0,@5) 0138 02860000 * GEN(PWTO REG=(R3)); /* OUTPUT SHARED DEVICES. * 02870000 PWTO REG=(R3) 02880000 DS 0H 02890000 * BUFCOUNT=0; /* REINIT BUFR COUNTR * 02900000 SR @F,@F 0140 02910000 STH @F,BUFCOUNT 0140 02920000 * SHARDBUF=SHARDBUF&&SHARDBUF; 02930000 XC 12(60,@3),12(@3) 0141 02940000 * SHARPTR=ADDR(SHARDBUF); /* ADDR SHARD MSG BUFR. * 02950000 LA @F,12(0,@3) 0142 02960000 ST @F,SHARPTR 0142 02970000 * END; 02980000 * END; 02990000 @9F8 EQU * 0144 03000000 * 03010000 * 03020000 * /* ALL DEVICES ON CONTROL UNIT CHECKED? * 03030000 * IF NEWBASE<=CULAST THEN /* AT END OF EXTENT? NO, * 03040000 @9F9 L @F,CULAST 0145 03050000 C @F,NEWBASE 0145 03060000 * GO TO CUTEST08; /* LOOK AT NEXT DEVICE. * 03070000 BC 10,CUTEST08 0146 03080000 * 03090000 * 03100000 * /* OUTPUT PWTOR IF SHARED DEVICES ARE ON C U * 03110000 * IF SHRHEADR='1'B THEN /* SHARD DEVS PRESENT * 03120000 TM MODFLAGS,B'10000000' 0147 03130000 BC 12,@9F7 0147 03140000 * DO; /* YES, ASK OPERATOR IF * 03150000 * R3=ADMSG243; /* ITS OK TO CONTINUE. * 03160000 L @3,12(0,@5) 0149 03170000 * ECB=ECB&&ECB; /* CLEAR ECB FOR REPLY. * 03180000 XC ECB(4),ECB 0150 03190000 * INBUFAD=ADDR(INBUFR); /* LOCATE REPLY BUFFER. * 03200000 LA @F,INBUFR 0151 03210000 ST @F,WTORLIST 0151 03220000 * WTORLNGT='03'X; /* REPLY LENGTH. * 03230000 MVI WTORLIST,X'03' 0152 03240000 * ECBPTR=ADDR(ECB); /* ADDRESS ECB FOR REPLY * 03250000 LA @F,ECB 0153 03260000 ST @F,WTORLIST+4 0153 03270000 * WTORPRFX=WTORLIST; /* PLACE WTOR INFO IN MSG * 03280000 MVC 0(8,@3),WTORLIST 0154 03290000 * REPLY=REPLY&&REPLY; /* CLEAR REPLY BUFFER M5092* 03300000 XC REPLY(3),REPLY 0155 03310000 * 03320000 * 03330000 * /* OUTPUT MESSAGE * 03340000 * GEN(PWTOR REG=(R3),WAIT=YES); 03350000 PWTOR REG=(R3),WAIT=YES 03360000 DS 0H 03370000 * 03380000 * 03390000 * /* CHECK REPLY FROM OPERATOR * 03400000 * IF REPLY ='YES' THEN /* DEVS SHARD ARE NOT DIS * 03410000 CLC REPLY(3),@C13 0157 03420000 * GO TO CUTEST07; /* CONNECTED. RC=08. * 03430000 BC 08,CUTEST07 0158 03440000 * END; 03450000 * RETCODE='00'X; /* CU TEST REQMNTS MET * 03460000 @9F7 LA @F,X'00' 0160 03470000 * 03480000 * 03490000 * CUTEST09: 03500000 * RETURN; /* RETURN TO OLT * 03510000 * END; /* END CU TEST MODULE * 03520000 @EL01 L @D,4(0,@D) 0162 03530000 L @E,12(0,@D) 0162 03540000 LM @0,@C,20(@D) 0162 03550000 BCR 15,@E 0162 03560000 @DATA1 EQU * 03570000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 03580000 @1 EQU 01 03590000 @2 EQU 02 03600000 @3 EQU 03 03610000 @4 EQU 04 03620000 @5 EQU 05 03630000 @6 EQU 06 03640000 @7 EQU 07 03650000 @8 EQU 08 03660000 @9 EQU 09 03670000 @A EQU 10 03680000 @B EQU 11 03690000 @C EQU 12 03700000 @D EQU 13 03710000 @E EQU 14 03720000 @F EQU 15 03730000 @D1 DC H'-1' 03740000 @V1 DC V(IFDMSGAJ) 03750000 DS 0F 03760000 @C5 DC C'AJ' 03770000 @C13 DC C'YES' 03780000 DS 0D 03790000 @DATA EQU * 03800000 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 03810000 R0 EQU 00000000 FULLWORD POINTER REGISTER 03820000 R1 EQU 00000001 FULLWORD POINTER REGISTER 03830000 R2 EQU 00000002 FULLWORD POINTER REGISTER 03840000 R3 EQU 00000003 FULLWORD POINTER REGISTER 03850000 R4 EQU 00000004 FULLWORD POINTER REGISTER 03860000 R5 EQU 00000005 FULLWORD POINTER REGISTER 03870000 DEVTABPT EQU 00000006 FULLWORD POINTER REGISTER 03880000 R7 EQU 00000007 FULLWORD POINTER REGISTER 03890000 R14 EQU 00000014 FULLWORD POINTER REGISTER 03900000 R15 EQU 00000015 FULLWORD POINTER REGISTER 03910000 RC EQU 00000015 FULLWORD POINTER REGISTER 03920000 RETCODE EQU 00000015 FULLWORD POINTER REGISTER 03930000 DEVTABLE EQU 00000000 36 BYTE(S) ON WORD 03940000 A00000 EQU DEVTABLE+00000000 12 BYTE(S) 03950000 FLAG1 EQU DEVTABLE+00000012 1 BYTE(S) 03960000 A00001 EQU DEVTABLE+00000012 1 BIT(S) 03970000 PRIMDEV EQU DEVTABLE+00000012 1 BIT(S) 03980000 A00002 EQU DEVTABLE+00000012 3 BIT(S) 03990000 GRABDEV EQU DEVTABLE+00000012 1 BIT(S) 04000000 A00003 EQU DEVTABLE+00000013 19 BYTE(S) 04010000 DVHEXAD EQU DEVTABLE+00000032 FULLWORD INTEGER 04020000 A00006 EQU 00000000 9 BYTE(S) ON WORD 04030000 A00007 EQU A00006+00000000 1 BYTE(S) 04040000 CUTLEVL EQU A00006+00000001 1 BYTE(S) 04050000 A00008 EQU A00006+00000002 2 BYTE(S) 04060000 CUTEXT EQU A00006+00000004 FULLWORD POINTER 04070000 CUCODE EQU A00006+00000008 1 BYTE(S) 04080000 CONVERT EQU @DATA+00000072 1 BYTE(S) ON WORD 04090000 ORG CONVERT+00000000 04100000 A00011 EQU * 2 BYTE(S) 04110000 DC X'0002' 04120000 A00012 EQU * 2 BYTE(S) 04130000 DC C'41' 04140000 ADDRHEX EQU CONVERT+00000004 FULLWORD POINTER 04150000 ADREBCD EQU CONVERT+00000008 FULLWORD POINTER 04160000 ORG CONVERT+00000012 04170000 A00013 EQU * 2 BYTE(S) 04180000 DC X'8011' 04190000 A00014 EQU 00000000 5 BYTE(S) ON WORD 04200000 CUBASE EQU A00014+00000000 FULLWORD INTEGER 04210000 CUFINISH EQU A00014+00000004 1 BYTE(S) 04220000 LOADCDS EQU @DATA+00000086 8 BYTE(S) 04230000 CDS1 EQU * 1 BYTE(S) 04240000 DC C'G' 04250000 CDSNAME EQU LOADCDS+00000001 7 BYTE(S) 04260000 DEVCDS EQU 00000000 20 BYTE(S) 04270000 CDSDEVAD EQU DEVCDS+00000000 4 BYTE(S) 04280000 CDSDVDSC EQU DEVCDS+00000004 4 BYTE(S) 04290000 CDSSIZE EQU DEVCDS+00000008 1 BYTE(S) 04300000 CDSFLAGS EQU DEVCDS+00000009 1 BYTE(S) 04310000 A00015 EQU DEVCDS+00000009 1 BIT(S) 04320000 DEVSHARD EQU DEVCDS+00000009 1 BIT(S) 04330000 MSGAJPTR EQU 00000000 16 BYTE(S) ON WORD 04340000 ADMSG244 EQU MSGAJPTR+00000000 FULLWORD POINTER 04350000 ADSHRHDR EQU MSGAJPTR+00000004 FULLWORD POINTER 04360000 ADONLHDR EQU MSGAJPTR+00000008 FULLWORD POINTER 04370000 ADMSG243 EQU MSGAJPTR+00000012 FULLWORD POINTER 04380000 MSG244 EQU 00000000 72 BYTE(S) ON WORD 04390000 A00016 EQU MSG244+00000000 12 BYTE(S) 04400000 SHARDBUF EQU MSG244+00000012 60 BYTE(S) 04410000 MSG243 EQU 00000000 72 BYTE(S) ON WORD 04420000 WTORPRFX EQU MSG243+00000000 8 BYTE(S) 04430000 A00017 EQU MSG243+00000008 12 BYTE(S) 04440000 A00018 EQU MSG243+00000020 52 BYTE(S) 04450000 WTORLIST EQU @DATA+00000096 8 BYTE(S) ON WORD 04460000 INBUFAD EQU WTORLIST+00000000 FULLWORD POINTER 04470000 WTORLNGT EQU WTORLIST+00000000 1 BYTE(S) 04480000 ECBPTR EQU WTORLIST+00000004 FULLWORD POINTER 04490000 MODFLAGS EQU @DATA+00000104 1 BYTE(S) 04500000 SHRHEADR EQU MODFLAGS+00000000 1 BIT(S) 04510000 ONLHEADR EQU MODFLAGS+00000000 1 BIT(S) 04520000 SHARPTR EQU @DATA+00000108 FULLWORD POINTER 04530000 SHARDDEV EQU 00000000 4 BYTE(S) 04540000 BUFCOUNT EQU @DATA+00000112 HALFWORD INTEGER 04550000 ORG @DATA+00000114 04560000 BUFMAX EQU * HALFWORD INTEGER 04570000 DC FL2'60' 04580000 NEWBASE EQU @DATA+00000116 FULLWORD INTEGER 04590000 CULAST EQU @DATA+00000120 FULLWORD INTEGER 04600000 ENDOFTAB EQU @DATA+00000124 FULLWORD INTEGER 04610000 HEXADDR EQU @DATA+00000128 4 BYTE(S) 04620000 ECB EQU @DATA+00000132 4 BYTE(S) ON WORD 04630000 EBCDICAD EQU @DATA+00000136 8 BYTE(S) 04640000 A00019 EQU EBCDICAD+00000000 1 BYTE(S) 04650000 EBCDICA7 EQU EBCDICAD+00000001 7 BYTE(S) 04660000 ORG @DATA 04670000 DS 00000144C 04680000 @TEMPS DS 0F 04690000 PATCH DC 15XL2'0700' 04700000 AJCOM IFDCOM 04710000 OLTEPSW3 EQU CESWT3+00000000 1 BYTE(S) 04720000 A00004 EQU OLTEPSW3+00000000 4 BIT(S) 04730000 SUSDEL EQU OLTEPSW3+00000000 1 BIT(S) 04740000 OLTEPSW7 EQU CESWT7+00000000 1 BYTE(S) ON WORD 04750000 A00005 EQU OLTEPSW7+00000000 7 BIT(S) 04760000 CUTSTFLG EQU OLTEPSW7+00000000 1 BIT(S) 04770000 REPLY EQU INBUFR+00000000 3 BYTE(S) 04780000 A00009 EQU ROPT-00000004 16 BYTE(S) ON WORD 04790000 A00010 EQU A00009+00000000 2 BYTE(S) 04800000 MODNUM EQU A00009+00000002 2 BYTE(S) 04810000 CUBASEAD EQU A00009+00000004 FULLWORD INTEGER 04820000 CURANGE EQU A00009+00000008 HALFWORD INTEGER 04830000 CUTCODE EQU A00009+00000010 HALFWORD INTEGER 04840000 MSGMODAJ EQU A00009+00000012 FULLWORD POINTER 04850000 @DATEND EQU * 04860000 @9FF EQU CUTEST2A 04870000 CUTEST09 EQU @EL01 04880000 END 04890000 ./ ADD SSI=04013548,NAME=IFDOLT00,SOURCE=1 TITLE ' INITIALIZE IFDOLT. IFDOLT00' 00010000 TITLE ' INITIALIZE IFDOLT. IFDOLT00' 00020000 LCLA &T,&SPN 0002 00030000 .@001 ANOP 0002 00040000 IFDOLT00 CSECT , 0002 00050000 BC 15,24(0,@F) 00060000 DC C'IFDOLT00 20 DEC 73' 0002 00070000 STM @E,@C,12(@D) 0002 00080000 BALR @B,0 0002 00090000 @PSTART DS 0H 0002 00100000 USING @PSTART+00000,@B 0002 00110000 ST @D,@SAV001+4 0002 00120000 LA @F,@SAV001 0002 00130000 ST @F,8(0,@D) 0002 00140000 LR @D,@F 0002 00150000 * GEN(USING CHASCT,2); /* COMMON AREA BASE REGISTER * 00160000 USING CHASCT,2 00170000 DS 0H 00180000 * GENERATE DATA; 00190000 * DCL R0 REG(0) PTR; 00200000 * DCL R1 REG(1) PTR; 00210000 * DCL R2 REG(2) PTR; 00220000 * DCL R11 REG(11) PTR; 00230000 * DCL R12 REG(12) PTR; 00240000 * DCL R13 REG(13) PTR; /* SAVE AREA POINTER */ 00250000 * DCL R14 REG(14) PTR; 00260000 * DCL R15 REG(15) PTR; 00270000 * DCL R5 REG(5) PTR; /* CVT POINTER * 00280000 * RESTRICT(5); 00290000 * DCL EXPAND1 FIXED GENERATED; /* PARTITION SIZE * 00300000 * DCL CVTPTR PTR BASED(16); /* CVT POINTER * 00310000 * DCL TCBWPTR PTR BASED(R5); /* TCB WORDS POINTER * 00320000 * DCL 1 * BASED(TCBWPTR), /* TCB WORDS * 00330000 * 2 * PTR, /* NA * 00340000 * 2 TCBPTR PTR; /* TCB POINTER * 00350000 * DCL 1 * BASED(TCBPTR), /* TCB * 00360000 * 2 *(6) PTR, /* NA * 00370000 * 2 MSSPTR PTR; /* MAIN STOR SUPER * 00380000 * DCL 1 * BASED(MSSPTR), /* MAIN STOR SUPER * 00390000 * 2 * FIXED, /* NA * 00400000 * 2 STALOC FIXED, /* START PARTITION * 00410000 * 2 ENDLOC FIXED; /* END PARTITION * 00420000 * DCL 1 SYSCON CHAR(1) BASED(R5+116), /* SYSTEM CONFIG * 00430000 * 2 * BIT(2), /* NA SA51758* 00440000 * 2 MFTCONF BIT(1), /* MFT SYSTEM SA51758* 00450000 * 2 MVTCONF BIT(1), /* MVT SYSTEM SA51758* 00460000 * 2 * BIT(2), /* NA SA51758* 00470000 * 2 AOSB BIT(1); /* AOS BIT * 00480000 * DCL TCBPQE PTR BASED(TCBPTR+152); /* DUMMY PQE MINUS 8 SA51758* 00490000 * DCL 1 * BDY(WORD) BASED(TCBPQE), /* DUMMY PQE MINUS 8 SA51758* 00500000 * 2 *(2) PTR, /* NA SA51758* 00510000 * 2 FPQE PTR; /* FIRST PQE POINTER SA51758* 00520000 * DCL 1 * BDY(WORD) BASED(FPQE), /* FIRST PQE SA51758* 00530000 * 2 *(5) PTR, /* NA SA51758* 00540000 * 2 REGSZ FIXED, /* REGION SIZE SA51758* 00550000 * 3 * CHAR(1); /* NA SA51758* 00560000 * DCL ENDJOB PTR GENERATED; /* INITIALIZATION SAVE AREA */ 00570000 * DCL TSTDEBAD PTR GENERATED; /* TEST DEB ADDRESS */ 00580000 * DCL SATAB PTR GENERATED; /* SYSTEM ASSIGNMENT TABLE */ 00590000 * DCL CESWT3 CHAR(1) GENERATED; /* OLTEP SWITCH */ 00600000 * DCL 1 * CHAR(1) BASED(ADDR(CESWT3)), /* OLTEP SWITCHES SA54315* 00610000 * 2 * BIT(1), /* NA SA54315* 00620000 * 2 NURUN BIT(1), /* NEW RUN SA54315* 00630000 * 3 * BIT(1); /* NA SA54315* 00640000 * DCL MCT GENERATED; /* MODULE CONTROL TABLE */ 00650000 * DCL ROPT PTR GENERATED; /* SVC PARAMETER LIST */ 00660000 * DCL PSCT PTR GENERATED; /* SCT ADDRESS M4507* 00670000 * DCL WKSVC GENERATED; /* SVC WORK AREA */ 00680000 * DCL VID CHAR(2) BASED(ADDR(WKSVC)+2); /* MODULE ID FOR SVC */ 00690000 * DCL MID1 CHAR(2) BASED(ADDR(MCT)+10); /* MODULE ID */ 00700000 * DCL CHNBK PTR BASED(R13+4); /* CHAIN BACK SAVE AREA */ 00710000 * DCL ERSAV PTR BASED(CHNBK+4); 00720000 * DCL ERAREA CHAR(72) BASED(ERSAV); 00730000 * DCL 1 * BDY(WORD) BASED(ADDR(ROPT)), /* SVC PARAMETER LIST */ 00740000 * 2 SATABADR PTR, /* SATAB ADDRESS */ 00750000 * 2 CESWT3AD PTR; /* CESWT3 ADDRESS */ 00760000 * DCL HCODE CHAR(1) BASED(68); /* HCODE EQUATED */ 00770000 * DCL 1 FUNC14 FIXED INIT(0), /* S21052* 00780000 * 2 * CHAR(2), /* S21052* 00790000 * 2 * CHAR(2) INIT('0014'X); /* 21937* 00800000 * DCL CESWT7 CHAR(1) GENERATED;/*OLTEP SWITCH * 00810000 * DCL 1 * CHAR(1) BASED(ADDR(CESWT7)), 00820000 * 3 * BIT(2), /*NOT USED * 00830000 * 3 REMOTE BIT(1), /*REMOTE TERMINAL FLAG * 00840000 * 3 * BIT(1), /* NA * 00850000 * 3 SYS370 BIT(1), /* SYSTEM 370 * 00860000 * 2 MFTSYS BIT(1), /* MFT SYSTEM * 00870000 * 3 * BIT(1); /* NA * 00880000 * DCL IFDOLT18 EXT ENTRY; /* TRANSIENT MANAGER ROOT */ 00890000 * DCL IFDOLT23 EXT ENTRY; /* COMMON AREA MODULE NAME */ 00900000 * DCL IFDOLT30 EXT ENTRY; /* CE COMMUNICATIONS ROOT */ 00910000 * DCL TMRADR PTR INIT(ADDR(IFDOLT18)); /* TRANSIENT MANAGER ADDRESS * 00920000 * DCL COMADR PTR INIT(ADDR(IFDOLT23)); /* COMMON AREA ADDRESS */ 00930000 * DCL CECOMRT PTR INIT(ADDR(IFDOLT30)); /* CE COMMUNICATIONS ADDRESS * 00940000 * DCL STAERT LABEL; /* STAE ERROR ROUTINE */ 00950000 * DCL MSGMOD PTR GENERATED; /* MESSAGE MODULE */ 00960000 * DCL 1 * BASED(MSGMOD), /* MESSAGE MODULE */ 00970000 * 2 * PTR, /* NA */ 00980000 * 2 IFD102 PTR, /* POINTER TO IFD102 MESSAGE * 00990000 * 2 * CHAR(28), /* UNUSED MESSAGE PTRS M2364* 01000000 * 2 IFD134 PTR, /* PTR TO MSG IFD134I M2364* 01010000 * 2 * CHAR(40), /* UNUSED MESSAGE PTRS S59673* 01020000 * 2 IFD899 PTR; /* MSG ADDR S59673* 01030000 * DCL QNAME CHAR(8) INIT('ENQOLTEP'); /* ENQ NAME FOR US S59673* 01040000 * DCL RNAME CHAR(8) INIT('UCBNALOC'); /* DQ NAME FOR US S59673* 01050000 * DCL 1 * CHAR(20) BDY(WORD), /* PATCH AREA */ 01060000 * 2 PATCH CHAR(8) 01070000 * INIT(' PATCH00'); 01080000 * DCL REIUCB PTR GENERATED; /* UCB ADDR FOR 2955 S20203* 01090000 * R2=COMADR; /* COMMON AREA BASE REG */ 01100000 L @2,COMADR 0058 01110000 * ENDJOB=R13; /* INITIALIZATION SAVE AREA */ 01120000 ST @D,ENDJOB 0059 01130000 * GEN(ENQ (QNAME,RNAME,E,8,SYSTEM),RET=USE); /* ENQ ON OLTEP S59673* 01140000 ENQ (QNAME,RNAME,E,8,SYSTEM),RET=USE 01150000 DS 0H 01160000 * IF R15 ª= 0 THEN /* IS THIS FIRST S59673* 01170000 LTR @F,@F 0061 01180000 BC 08,@9FF 0061 01190000 * DO; /* OLTEP S59673* 01200000 * R1 = IFD899; /*IF NOT ISSUE S59673* 01210000 L @3,MSGMOD 0063 01220000 L @1,80(0,@3) 0063 01230000 * GEN(PWTO REG=(R1)); /* MSG TO OPERATOR S59673* 01240000 PWTO REG=(R1) 01250000 DS 0H 01260000 * RETURN; /* AND RETURN S59673* 01270000 BC 15,@EL01 0065 01280000 * END; /*TO THE SYSTEM S59673* 01290000 * R1=IFD102; /* MESSAGE ADDRESS */ 01300000 @9FF L @3,MSGMOD 0067 01310000 L @1,4(0,@3) 0067 01320000 * GEN; 01330000 WTOMSG PWTO REG=(R1) ISSUE A WTO 01340000 DS 0H 01350000 * R1=IFD134; /* GET PTR TO MSG IFD134IM2364* 01360000 L @1,36(0,@3) 0069 01370000 * GEN(PWTO REG=(R1)); /* PRINT MESSAGE IFD134I M2364* 01380000 PWTO REG=(R1) 01390000 DS 0H 01400000 * R15=TMRADR; /* TRANSIENT MANAGER ROOT */ 01410000 L @F,TMRADR 0071 01420000 * GEN(BALR R14,R15); /* INITIALIZE MCT */ 01430000 BALR R14,R15 01440000 DS 0H 01450000 * R5=CVTPTR; /* CVT POINTER * 01460000 L @5,CVTPTR 0073 01470000 * IF AOSB='1'B THEN /* CHECK SYSTEM CONFIG * 01480000 TM 116(@5),B'00000010' 0074 01490000 BC 12,@9FE 0074 01500000 * SYS370='1'B; /* SYSTEM 370 * 01510000 OI A00019,B'00001000' 0075 01520000 * IF MFTCONF='1'B THEN /* CHECK MFT SYSTEM SA51758* 01530000 @9FE TM 116(@5),B'00100000' 0076 01540000 BC 12,@9FD 0076 01550000 * DO; /* MFT PRESENT * 01560000 * MFTSYS='1'B; /* MFT SYSTEM * 01570000 OI A00019,B'00000100' 0078 01580000 * EXPAND1=ENDLOC-STALOC; /* PARTITION SIZE * 01590000 L @4,0(0,@5) 0079 01600000 L @4,4(0,@4) A00000 0079 01610000 L @4,24(0,@4) A00002 0079 01620000 L @F,4(0,@4) 0079 01630000 LCR @F,@F 0079 01640000 A @F,8(0,@4) 0079 01650000 ST @F,EXPAND1 0079 01660000 BC 15,@9FC 0081 01670000 * END; /* END SYSTEM CHECK * 01680000 * ELSE EXPAND1=REGSZ; /* REGION SIZE SA51758* 01690000 @9FD L @3,0(0,@5) 0081 01700000 L @3,4(0,@3) A00000 0081 01710000 L @3,152(0,@3) TCBPQE 0081 01720000 L @3,8(0,@3) A00008 0081 01730000 MVC EXPAND1(4),20(@3) 0081 01740000 * SATABADR=ADDR(SATAB); /* SATAB ADDRESS */ 01750000 @9FC LA @F,SATAB 0082 01760000 ST @F,A00016 0082 01770000 * CESWT3AD=ADDR(CESWT3); /* CESWT3 ADDRESS */ 01780000 LA @F,CESWT3 0083 01790000 ST @F,A00016+4 0083 01800000 * R0=ADDR(ROPT); /* SVC PARAMETER LIST */ 01810000 LA @0,ROPT 0084 01820000 * R15=0; /* ZERO REG 15 * 01830000 SR @F,@F 0085 01840000 * R1=ADDR(HCODE); /* CALLING CODE FOR SVC 59 */ 01850000 LA @1,HCODE 0086 01860000 * GEN(SVC 59); /* ISSUE SVC 59 * 01870000 SVC 59 01880000 DS 0H 01890000 * REIUCB = R15; /* STORE 2955 UCB ADDR S20203* 01900000 ST @F,REIUCB 0088 01910000 * TSTDEBAD=R0; /* SUBPOOL 254 ADDRESS */ 01920000 ST @0,TSTDEBAD 0089 01930000 * GEN(STAE STAERT,XCTL=YES,PURGE=HALT); /* ISSUE STAE MACRO SA54303* 01940000 STAE STAERT,XCTL=YES,PURGE=HALT 01950000 DS 0H 01960000 * R15=CECOMRT; /* CE COMMUNICATIONS ADDRESS * 01970000 L @F,CECOMRT 0091 01980000 * GEN(BALR R14,R15); /* GO TO CE COMMUNICATIONS */ 01990000 BALR R14,R15 02000000 DS 0H 02010000 * RETURN; 02020000 BC 15,@EL01 0093 02030000 * DCL UTENT PTR GENERATED; 02040000 * DCL CHASCT CHAR(37) GENERATED; /*SECTION CONTROL TABLE*/ 02050000 * DCL DEVICE CHAR(1) BASED(ADDR(CHASCT)+18); /*ACTIVE DEVICE*/ 02060000 * DCL TAB28 PTR GENERATED; /* TRANSIENT MANAGER ENTRY */ 02070000 * DCL ALOC CHAR(4) GENERATED; /* PARAMETER LIST FOR ALOCAT * 02080000 * DCL MCT1ADR PTR GENERATED; /* MCT ADDRESS */ 02090000 * DCL 1 * CHAR(1) BASED(ADDR(MCT1ADR)+3), /* LAST BYTE MCT ADDRESS */ 02100000 * 2 * BIT(7), /* NA */ 02110000 * 2 ABCOND BIT(1); /* ABEND CONDITION */ 02120000 * DCL 1 * CHAR(1) BASED(ADDR(CHASCT)+33), /*SWITCHES*/ 02130000 * 2 * BIT(5), 02140000 * 2 EXECKLEN BIT(1), 02150000 * 2 * BIT(2); 02160000 * DCL 1 * CHAR(1) BASED(ADDR(CHASCT)+36), /*SWITCHES*/ 02170000 * 2 * BIT(1), 02180000 * 2 CLEANUP BIT(1), /*OLT CLEANUP DESIRED*/ 02190000 * 2 * BIT(6); 02200000 * DCL CESWT2 CHAR(1) GENERATED; /*OLTEP SWITCHES*/ 02210000 * DCL 1 * CHAR(1) BASED(ADDR(CESWT2)), 02220000 * 2 * BIT(6), 02230000 * 2 TAPEHDR BIT(1), 02240000 * 2 * BIT(1); 02250000 * DCL CESWT6 CHAR(1) GENERATED; 02260000 * DCL 1 * BASED(ADDR(CESWT6)), 02270000 * 2 UTSCAL BIT(1), /* MODULES CAN BE DELETED */ 02280000 * 2 * BIT(6), /* NA */ 02290000 * 2 RTOSTAE BIT(1); 02300000 * DCL CESWT8 CHAR(1) GENERATED; /* SA60662* 02310000 * DCL 1 * BASED(ADDR(CESWT8)), /* SWITCHES FOR OLTEP SA60662* 02320000 * 3 * BIT(5), /* NA SA60662* 02330000 * 3 SUTMSG BIT(1); /* START MSG ISSUED SA60662* 02340000 * DCL CESWTR CHAR(1) GENERATED; /* RETAIN 370 SWITCH S20203* 02350000 * DCL 1 * CHAR(1) BASED(ADDR(CESWTR)), /* S20203* 02360000 * 3 RETAINAC BIT(1), /* REI ACTIVE FLAG S20203* 02370000 * 3 * BIT(7); /* S20203* 02380000 * DCL SCHEDSA PTR GENERATED; /* SCHEDULER AREA * 02390000 * DCL CHAINBK PTR BASED(R13+4); 02400000 * DCL SAVER(18) FIXED BASED(CHAINBK); 02410000 * DCL ABENDCC FIXED(31) GENERATED; /* ABEND COMPLETION CDSA60662* 02420000 * DCL SYS222 CHAR(4) BDY(WORD) INIT('00222000'X); /* SYSTEM 222 ABEND* 02430000 * GEN(CNOP 0,4); /* FORCE FULLWORD BDY SA60662* 02440000 CNOP 0,4 02450000 DS 0H 02460000 * STAERT: GEN; /* SA60662* 02470000 STAERT EQU * 0117 02480000 MVC 16(104,15),0(1) SAVE STAE CONTROL BLOCK SA60662 02490000 LA 0,120(15) POINT TO RETRY ROUTINE SA60662 02500000 LA 15,4 INDICATE RETRY DESIRED. SA60662 02510000 BCR 15,14 RETURN T- CALLER SA60662 02520000 STAECBLK DC F'0' STAE CONTROL BLOCK SA60662 02530000 ABENDCC DC F'0' ABEND COMPLETION CODE SA60662 02540000 DC 96X'00' REST OF STAE CONTROL BLKSA60662 02550000 DS 0H 02560000 * CLEANUP1: 02570000 * GEN; /* SA60662* 02580000 CLEANUP1 EQU * 0118 02590000 BALR 11,0 SET UP ADDRESSABILITY SA60662 02600000 LA 15,CLEANUP1-IFDOLT00-28 SA60662 02610000 SR 11,15 SA60662 02620000 LA 13,@SAV001 PROVIDE SAVE AREA SA60662 02630000 STAE ISSUESVC,XCTL=YES,PURGE=HALT SA60662 02640000 DS 0H 02650000 * R2=COMADR; /* PUT ADDRESS OF COMMON AREA 02660000 * IN R2*/ 02670000 L @2,COMADR 0119 02680000 * ABCOND='1'B; /* ABEND CONDITION SA60662* 02690000 OI A00028,B'00000001' 0120 02700000 * IF R15ª=0 THEN /* IS STAE INITIALIZEDSA60662* 02710000 LTR @F,@F 0121 02720000 * GO TO INT013A; /* NO, GET OUT, ISSUE SVC 59.* 02730000 BC 07,INT013A 0122 02740000 * RTOSTAE='1'B; /* INDICATE STAE RETURN * 02750000 OI A00039,B'00000001' 0123 02760000 * UTSCAL='0'B; /* DELETE MODULES * 02770000 NI A00039,B'01111111' 0124 02780000 * NURUN='1'B; /* NEW RUN SA54315* 02790000 OI A00013,B'01000000' 0125 02800000 * IF SUTMSG='1'B THEN /* SHOULD SCHED RESUMESA60662* 02810000 TM A00041,B'00000100' 0126 02820000 BC 12,@9FB 0126 02830000 * GEN(BAL R14,RESUM48); /* RESUME SCHEDULER * 02840000 BAL R14,RESUM48 02850000 DS 0H 02860000 * IF DEVICE='20'X THEN /* CHECK DEVICE * 02870000 @9FB CLI DEVICE,X'20' 0128 02880000 BC 07,@9FA 0128 02890000 * DO; /* DASD DEVICE INVOLVED * 02900000 * R1=ADDR(ALOC); /* PARAMETER LIST FOR ALOCAT * 02910000 LA @1,ALOC 0130 02920000 * R15=TAB28; /* TRANSIENT MANAGER ENTRY */ 02930000 L @F,TAB28 0131 02940000 * GEN(BALR R14,R15); /* LINK TO ALOCAT MODULE */ 02950000 BALR R14,R15 02960000 DS 0H 02970000 * END; 02980000 * IF DEVICE='80'X THEN /* CHECK DEVICE * 02990000 @9FA CLI DEVICE,X'80' 0134 03000000 BC 07,@9F9 0134 03010000 * DO; /* TAPE DEVICE INVOLVED * 03020000 * TAPEHDR='1'B; /* INDICATE TAPE * 03030000 OI A00036,B'00000010' 0136 03040000 * CALL IFDOLT52; /*GOTO DATA PROTECTION MODULE 03050000 * FOR RESTORING TAPE LABEL*/ 03060000 L @F,@V1 ADDRESS OF IFDOLT52 0137 03070000 BALR @E,@F 0137 03080000 * END; 03090000 * IF RETAINAC='1'B THEN /* CHECK REI * 03100000 @9F9 TM A00043,B'10000000' 0139 03110000 BC 12,@9F8 0139 03120000 * DO; /* REI ACTIVE S20203* 03130000 * GEN(IFDMOD CALL='56'); /* BRANCH TO REI TERM S20203* 03140000 IFDMOD CALL='56' 03150000 DS 0H 03160000 * END; /* S20203* 03170000 * IF REMOTE='1'B THEN /* REMOTE ENVOLVED * 03180000 @9F8 TM A00019,B'00100000' 0143 03190000 BC 12,@9F7 0143 03200000 * DO; /*YES - 03210000 * UTSCAL='0'B; /* DELETE MODULES * 03220000 NI A00039,B'01111111' 0145 03230000 * GEN(IFDMOD CALL='74'); 03240000 IFDMOD CALL='74' 03250000 DS 0H 03260000 * /*BRANCH TO LINE DISABLING 03270000 * /* MODULE WITH PARAMETER ZERO 03280000 * END; 03290000 * GEN(STAE 0,); /* CANCEL STAE SA60662* 03300000 @9F7 EQU * 0148 03310000 STAE 0, 03320000 DS 0H 03330000 * GO TO INT013A; /* GO ISSUE SVC 59 SA60662* 03340000 BC 15,INT013A 0149 03350000 * GEN(CNOP 0,4); /* FORCE BOUNDARY MY5605* 03360000 CNOP 0,4 03370000 DS 0H 03380000 * ISSUESVC: 03390000 * GEN; 03400000 ISSUESVC EQU * 0151 03410000 BC 15,8(15) BRANCH AROUND CONSTANTS.SA60662 03420000 DC X'000C' RETURN CODE 0C SA60662 03430000 DC X'0064' HEX 64 - DECIMAL 100. SA60662 03440000 CH 0,4(15) IS 0C IN REG 0. SA60662 03450000 BC 7,22(15) NO, USE SYSTEM SAVE AREASA60662 03460000 SH 15,6(15) YES, ESTABLISH SAVE AREASA60662 03470000 LR 13,15 PTR. SA60662 03480000 ISSUE59 EQU * SA60662 03490000 STM 14,12,12(13) SAVE REGS SA60662 03500000 BALR 11,0 ESTABLISH ADDRESSABILITYSA60662 03510000 LA 15,ISSUE59-IFDOLT00-24 ADJUST ADDRESSABILITY SA60662 03520000 SR 11,15 SA60662 03530000 ST 13,@SAV001+4 SAVE PTR TO SAVE AREA. SA60662 03540000 LA 15,@SAV001 SA60662 03550000 ST 15,8(0,13) SA60662 03560000 LR 13,15 SA60662 03570000 DS 0H 03580000 * INT013A: /* SA60662* 03590000 * R2=COMADR; /* PUT ADDRESS OF SA60662* 03600000 INT013A L @2,COMADR 0152 03610000 * /* COMMON AREA IN R2. SA60662* 03620000 * R1=FUNC14; /* FUNCTION CODE * 03630000 L @1,FUNC14 0153 03640000 * R0=ADDR(ROPT); /* SET UP REG 0 S21052* 03650000 LA @0,ROPT 0154 03660000 * VID=MID1; /* PLACE MODULE ID IN ROPT 21937* 03670000 MVC VID(2),MID1 0155 03680000 * GEN(SVC 59); /* SVC CLEANUP * 03690000 SVC 59 03700000 DS 0H 03710000 * GEN(DEQ (QNAME,RNAME,8,SYSTEM),RET=HAVE); /* REL RESOURCE SA64194* 03720000 DEQ (QNAME,RNAME,8,SYSTEM),RET=HAVE 03730000 DS 0H 03740000 * IF ABCOND='0'B THEN /* SHOULD ABEND OCCUR.SA60662* 03750000 TM A00028,B'00000001' 0158 03760000 * GO TO INT013B; /* NO, RETURN TO SYSTEM * 03770000 BC 08,INT013B 0159 03780000 * GEN; 03790000 MVI ABENDCC,X'00' ZERO HIGH BYTE ABENDCC SA60662 03800000 L 1,ABENDCC PLACE ABEND CC IN REG1. SA60662 03810000 CL 1,SYS222 IS IT A 222 ABEND SA60662 03820000 BE INT013B YES, DONT ISSUE ABEND SA60662 03830000 ABEND (1),DUMP LET ORIGINAL DUMP OCCUR.SA60662 03840000 DS 0H 03850000 * INT013B: /* SA60662* 03860000 * SAVER(5)=0; /* RETURN CODE TO ABEND * 03870000 INT013B SR @F,@F 0161 03880000 L @3,4(0,@D) 0161 03890000 ST @F,16(0,@3) 0161 03900000 * RETURN; /* RETURN TO CALLER */ 03910000 BC 15,@EL01 0162 03920000 * RESUM48: 03930000 * ABCOND='1'B; /* ABEND CONDITION * 03940000 RESUM48 OI A00028,B'00000001' 0163 03950000 * GEN(STM R14,R12,12(R13)); /* SAVE REGS * 03960000 STM R14,R12,12(R13) 03970000 DS 0H 03980000 * R15=R13; /* SAVE AREA ADDRESS * 03990000 LR @F,@D 0165 04000000 * R13=SCHEDSA; /* SCHEDULER SAVE AREA * 04010000 L @D,SCHEDSA 0166 04020000 * CHNBK=R15; /* STAE SAVE AREA * 04030000 ST @F,4(0,@D) 0167 04040000 * GEN(LM R14,R12,12(R13)); /* LOAD SCHEDULER REGS * 04050000 LM R14,R12,12(R13) 04060000 DS 0H 04070000 * GOTO R14; /* RETURN TO SCHEDULER * 04080000 BCR 15,@E 0169 04090000 * GEN; 04100000 CNOP 0,4 ALIGNMENT 04110000 ALOC DC XL2'02' MACRO LEVEL 04120000 DC CL2'22' MACRO ID 04130000 DC 3F'00' NA 04140000 DC AL1(2) SCRATCH FUNCTION 04150000 DS 0H 04160000 DS 0H 04170000 * END IFDOLT00; 04180000 @EL01 L @D,4(0,@D) 0171 04190000 LM @E,@C,12(@D) 0171 04200000 BCR 15,@E 0171 04210000 @DATA1 EQU * 04220000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 04230000 @1 EQU 01 04240000 @2 EQU 02 04250000 @3 EQU 03 04260000 @4 EQU 04 04270000 @5 EQU 05 04280000 @6 EQU 06 04290000 @7 EQU 07 04300000 @8 EQU 08 04310000 @9 EQU 09 04320000 @A EQU 10 04330000 @B EQU 11 04340000 @C EQU 12 04350000 @D EQU 13 04360000 @E EQU 14 04370000 @F EQU 15 04380000 @V1 DC V(IFDOLT52) 04390000 DS 0F 04400000 DS 0D 04410000 @DATA EQU * 04420000 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 04430000 X EQU 00000000 FULLWORD INTEGER 04440000 R0 EQU 00000000 FULLWORD POINTER REGISTER 04450000 R1 EQU 00000001 FULLWORD POINTER REGISTER 04460000 R2 EQU 00000002 FULLWORD POINTER REGISTER 04470000 R11 EQU 00000011 FULLWORD POINTER REGISTER 04480000 R12 EQU 00000012 FULLWORD POINTER REGISTER 04490000 R13 EQU 00000013 FULLWORD POINTER REGISTER 04500000 R14 EQU 00000014 FULLWORD POINTER REGISTER 04510000 R15 EQU 00000015 FULLWORD POINTER REGISTER 04520000 R5 EQU 00000005 FULLWORD POINTER REGISTER 04530000 CVTPTR EQU 00000016 FULLWORD POINTER 04540000 TCBWPTR EQU 00000000 FULLWORD POINTER 04550000 A00000 EQU 00000000 8 BYTE(S) ON WORD 04560000 A00001 EQU A00000+00000000 FULLWORD POINTER 04570000 TCBPTR EQU A00000+00000004 FULLWORD POINTER 04580000 A00002 EQU 00000000 28 BYTE(S) ON WORD 04590000 A00003 EQU A00002+00000000 6*FULLWORD POINTER 04600000 MSSPTR EQU A00002+00000024 FULLWORD POINTER 04610000 A00004 EQU 00000000 12 BYTE(S) ON WORD 04620000 A00005 EQU A00004+00000000 FULLWORD INTEGER 04630000 STALOC EQU A00004+00000004 FULLWORD INTEGER 04640000 ENDLOC EQU A00004+00000008 FULLWORD INTEGER 04650000 SYSCON EQU 00000116 1 BYTE(S) 04660000 A00006 EQU SYSCON+00000000 2 BIT(S) 04670000 MFTCONF EQU SYSCON+00000000 1 BIT(S) 04680000 MVTCONF EQU SYSCON+00000000 1 BIT(S) 04690000 A00007 EQU SYSCON+00000000 2 BIT(S) 04700000 AOSB EQU SYSCON+00000000 1 BIT(S) 04710000 TCBPQE EQU 00000152 FULLWORD POINTER 04720000 A00008 EQU 00000000 12 BYTE(S) ON WORD 04730000 A00009 EQU A00008+00000000 2*FULLWORD POINTER 04740000 FPQE EQU A00008+00000008 FULLWORD POINTER 04750000 A00010 EQU 00000000 24 BYTE(S) ON WORD 04760000 A00011 EQU A00010+00000000 5*FULLWORD POINTER 04770000 REGSZ EQU A00010+00000020 FULLWORD INTEGER 04780000 A00012 EQU A00010+00000020 1 BYTE(S) 04790000 CHNBK EQU 00000004 FULLWORD POINTER 04800000 ERSAV EQU 00000004 FULLWORD POINTER 04810000 ERAREA EQU 00000000 72 BYTE(S) 04820000 HCODE EQU 00000068 1 BYTE(S) 04830000 ORG @DATA+00000072 04840000 FUNC14 EQU * FULLWORD INTEGER 04850000 DC FL4'0' 04860000 A00017 EQU FUNC14+00000000 2 BYTE(S) 04870000 ORG FUNC14+00000002 04880000 A00018 EQU * 2 BYTE(S) 04890000 DC X'0014' 04900000 TMRADR EQU * FULLWORD POINTER 04910000 DC VL4(IFDOLT18) 04920000 COMADR EQU * FULLWORD POINTER 04930000 DC VL4(IFDOLT23) 04940000 CECOMRT EQU * FULLWORD POINTER 04950000 DC VL4(IFDOLT30) 04960000 A00023 EQU 00000000 84 BYTE(S) ON WORD 04970000 A00024 EQU A00023+00000000 FULLWORD POINTER 04980000 IFD102 EQU A00023+00000004 FULLWORD POINTER 04990000 A00025 EQU A00023+00000008 28 BYTE(S) 05000000 IFD134 EQU A00023+00000036 FULLWORD POINTER 05010000 A00026 EQU A00023+00000040 40 BYTE(S) 05020000 IFD899 EQU A00023+00000080 FULLWORD POINTER 05030000 QNAME EQU * 8 BYTE(S) 05040000 DC C'ENQOLTEP' 05050000 RNAME EQU * 8 BYTE(S) 05060000 DC C'UCBNALOC' 05070000 A00027 EQU @DATA+00000104 20 BYTE(S) ON WORD 05080000 PATCH EQU * 8 BYTE(S) 05090000 DC C' PATCH00' 05100000 CHAINBK EQU 00000004 FULLWORD POINTER 05110000 SAVER EQU 00000000 18*FULLWORD INTEGER 05120000 ORG @DATA+00000124 05130000 SYS222 EQU * 4 BYTE(S) ON WORD 05140000 DC X'00222000' 05150000 ORG @DATA 05160000 DS 00000128C 05170000 @TEMPS DS 0F 05180000 DSECT00 IFDCOM 05190000 IFDOLT00 CSECT 05200000 A00013 EQU CESWT3+00000000 1 BYTE(S) 05210000 A00014 EQU A00013+00000000 1 BIT(S) 05220000 NURUN EQU A00013+00000000 1 BIT(S) 05230000 A00015 EQU A00013+00000000 1 BIT(S) 05240000 VID EQU WKSVC+00000002 2 BYTE(S) 05250000 MID1 EQU MCT+00000010 2 BYTE(S) 05260000 A00016 EQU ROPT+00000000 8 BYTE(S) ON WORD 05270000 SATABADR EQU A00016+00000000 FULLWORD POINTER 05280000 CESWT3AD EQU A00016+00000004 FULLWORD POINTER 05290000 A00019 EQU CESWT7+00000000 1 BYTE(S) 05300000 A00020 EQU A00019+00000000 2 BIT(S) 05310000 REMOTE EQU A00019+00000000 1 BIT(S) 05320000 A00021 EQU A00019+00000000 1 BIT(S) 05330000 SYS370 EQU A00019+00000000 1 BIT(S) 05340000 MFTSYS EQU A00019+00000000 1 BIT(S) 05350000 A00022 EQU A00019+00000000 1 BIT(S) 05360000 DEVICE EQU CHASCT+00000018 1 BYTE(S) 05370000 A00028 EQU MCT1ADR+00000003 1 BYTE(S) 05380000 A00029 EQU A00028+00000000 7 BIT(S) 05390000 ABCOND EQU A00028+00000000 1 BIT(S) 05400000 A00030 EQU CHASCT+00000033 1 BYTE(S) 05410000 A00031 EQU A00030+00000000 5 BIT(S) 05420000 EXECKLEN EQU A00030+00000000 1 BIT(S) 05430000 A00032 EQU A00030+00000000 2 BIT(S) 05440000 A00033 EQU CHASCT+00000036 1 BYTE(S) 05450000 A00034 EQU A00033+00000000 1 BIT(S) 05460000 CLEANUP EQU A00033+00000000 1 BIT(S) 05470000 A00035 EQU A00033+00000000 6 BIT(S) 05480000 A00036 EQU CESWT2+00000000 1 BYTE(S) 05490000 A00037 EQU A00036+00000000 6 BIT(S) 05500000 TAPEHDR EQU A00036+00000000 1 BIT(S) 05510000 A00038 EQU A00036+00000000 1 BIT(S) 05520000 A00039 EQU CESWT6+00000000 1 BYTE(S) ON WORD 05530000 UTSCAL EQU A00039+00000000 1 BIT(S) 05540000 A00040 EQU A00039+00000000 6 BIT(S) 05550000 RTOSTAE EQU A00039+00000000 1 BIT(S) 05560000 A00041 EQU CESWT8+00000000 1 BYTE(S) ON WORD 05570000 A00042 EQU A00041+00000000 5 BIT(S) 05580000 SUTMSG EQU A00041+00000000 1 BIT(S) 05590000 A00043 EQU CESWTR+00000000 1 BYTE(S) 05600000 RETAINAC EQU A00043+00000000 1 BIT(S) 05610000 A00044 EQU A00043+00000000 7 BIT(S) 05620000 @DATEND EQU * 05630000 END IFDOLT00 05640000 ./ ADD SSI=01012445,NAME=IFDOLT01,SOURCE=1 TITLE ' NON-RESIDENT TRANSIENT MANAGER. IFDOLT01' 00010000 * GENERATE; 00020000 TITLE ' NON-RESIDENT TRANSIENT MANAGER. IFDOLT01' 00030000 * IFDOLT01: PROC (X); 00040000 LCLA &T,&SPN 0002 00050000 .@001 ANOP 0002 00060000 IFDOLT01 CSECT , 0002 00070000 STM @E,@C,12(@D) 0002 00080000 BALR @B,0 0002 00090000 @PSTART DS 0H 0002 00100000 USING @PSTART+00000,@B 0002 00110000 ST @D,@SAV001+4 0002 00120000 LA @F,@SAV001 0002 00130000 ST @F,8(0,@D) 0002 00140000 LR @D,@F 0002 00150000 * /******************************************************************** 00160000 * /* * 00170000 * /*STATUS: CHANGE LEVEL 000 * 00180000 * /* * 00190000 * /*FUNCTION: * 00200000 * /* THIS MODULE WILL LOAD AND DELETE OLTEP MODULES, AND DENOTE * 00210000 * /* SUCH IN A MODULE CONTROL TABLE ALONG WITH THEIR SIZES. IT * 00220000 * /* WILL ALSO LOAD AND DELETE NON-OLTEP MODULES, PLINK MODULES, * 00230000 * /* AND UNIT TESTS. IT WILL ALSO HANDLE MORECORE REQUESTS. * 00240000 * /* * 00250000 * /*ENTRY POINTS: * 00260000 * /* IFDOLT01 IS THE MAIN AND ONLY ENTRY POINT OF THIS MODULE. * 00270000 * /* * 00280000 * /*INPUT: * 00290000 * /* REGISTER 1 WILL CONTAIN THE ADDRESS OF A PARAMETER LIST. * 00300000 * /* THE FIRST WORD OF WHICH WILL CONTAIN THE FOLLOWING: * 00310000 * /* * 00320000 * /* 1ST BYTE - TRANSIENT MANAGER INDICATORS * 00330000 * /* BIT 0 - EIGHT CHARACTER NAME * 00340000 * /* BIT 1 - NOT A MODULE * 00350000 * /* BIT 2 - LOAD A MODULE * 00360000 * /* BIT 3 - DELETE A MODULE * 00370000 * /* BIT 4 - EXPANSION BIT * 00380000 * /* BIT 5 - UNIT TEST * 00390000 * /* BIT 6 - OLTEP RESIDENT ROOT * 00400000 * /* BIT 7 - OLD MODULE * 00410000 * /* ALL BITS ZEROED DENOTES AN OLTEP MODULE TO BE LINKED TO. * 00420000 * /* * 00430000 * /* 2ND BYTE - MACRO LEVEL * 00440000 * /* * 00450000 * /* 3RD-4TH BYTE - MACRO ID DENOTING LAST TWO LETTERS OF AN * 00460000 * /* OLTEP MODULE NAME. * 00470000 * /* IF AN EIGHT CHARACTER NAME IS REQUESTED, 3RD-10TH BYTE * 00480000 * /* WILL CONTAIN THE EIGHT CHARACTER NAME. * 00490000 * /* * 00500000 * /*OUTPUT: * 00510000 * /* NONE. * 00520000 * /* * 00530000 * /*EXTERNAL ROUTINES: * 00540000 * /* PARALLEL PRINT MESSAGES. * 00550000 * /* * 00560000 * /*EXITS: * 00570000 * /* THIS MODULE WILL EITHER BRANCH TO A LOADED MODULE OR MAKE * 00580000 * /* A NORMAL RETURN TO THE CALLER. * 00590000 * /* * 00600000 * /*ATTRIBUTES: * 00610000 * /* REUSABLE. * 00620000 * /* * 00630000 * /******************************************************************** 00640000 * GEN(USING CHASCT,2); /* COMMON AREA BASE REGISTER * 00650000 USING CHASCT,2 00660000 DS 0H 00670000 * GENERATE DATA; 00680000 * RESTRICT(2,3,4,5,6,7,8,9); 00690000 * DCL R0 REG(0) PTR; 00700000 * DCL R1 REG(1) PTR; 00710000 * DCL R2 REG(2) PTR; 00720000 * DCL R3 REG(3) PTR; 00730000 * DCL R4 REG(4) PTR; 00740000 * DCL R5 REG(5) PTR; 00750000 * DCL R6 REG(6) PTR; 00760000 * DCL R7 REG(7) PTR; 00770000 * DCL R8 REG(8) PTR; 00780000 * DCL R9 REG(9) PTR; 00790000 * DCL R12 REG(12) PTR; /* REGISTER 12 */ 00800000 * DCL R13 REG(13) PTR; /* REGISTER 13 */ 00810000 * DCL R14 REG(14) PTR; 00820000 * DCL R15 REG(15) PTR; 00830000 * DCL LOGADR PTR GENERATED; /* LOGSCAN ADDRESS * 00840000 * DCL SYMPTR PTR GENERATED; /* SYM LIB DCB * 00850000 * DCL MSGMOD PTR GENERATED; /* MESSAGE MODULE */ 00860000 * DCL CESWT6 CHAR(1) GENERATED; /* OLTEP SWITCHES */ 00870000 * DCL SECPTR PTR GENERATED; /* UTS ADDRESS */ 00880000 * DCL PLKMOR PTR GENERATED; /* PLINK AND MORECOR WORD */ 00890000 * DCL MCT PTR GENERATED; /* MODULE CONTROL TABLE */ 00900000 * DCL CHASCT GENERATED; /* SECTION CONTROL TABLE */ 00910000 * DCL OLTTAB PTR GENERATED; /* LINK TABLE */ 00920000 * DCL TAB28 PTR GENERATED; /* MACRO ENTRY POINT */ 00930000 * DCL CESWT2 CHAR(1) GENERATED; /* OLTEP SWITCHES */ 00940000 * DCL 1 * BIT(8) BASED(ADDR(CESWT2)), /* OLTEP SWITCHES */ 00950000 * 2 NDCFO BIT(1), /* NO DYN COMMUN */ 00960000 * 2 PLKMRB BIT(1); /* PLINK OR MORECORE REQUEST * 00970000 * DCL PARMRG PTR; /* PARAMETER LIST POINTER */ 00980000 * DCL SAVR8 PTR; /* SAVE AREA */ 00990000 * DCL GAVL1 BDY(WORD) CHAR(8); /* WORK AREA */ 01000000 * DCL 1 * BASED(ADDR(OLTTAB)), /* LINK TABLE */ 01010000 * 2 *(8) PTR, /* ENTRY POINTS FOR MACROS */ 01020000 * 2 TMCOMAD PTR, /* TRANSIENT MANAGER AREA */ 01030000 * 2 SECPRF PTR, /* SECTION PREFACE ADDRESS */ 01040000 * 3 * PTR; /* LAST POINTER */ 01050000 * DCL 1 * BASED(R9), /* PLINK LOAD OR DELETE LIST * 01060000 * 2 PKLIST1 CHAR(8), /* PLINK MODULE NAME */ 01070000 * 2 PKLIST2 CHAR(8); /* NEXT PLINK MODULE NAME */ 01080000 * DCL 1 * BDY(WORD) BASED(R5), /* PLINK ENTRY POINT LIST */ 01090000 * 2 PLKEP1 PTR, /* PLINK MODULE ENTRY POINT */ 01100000 * 2 PLKEP2 PTR; /* NEXT ENTRY POINT */ 01110000 * DCL 1 * BASED(PARMRG+4), /* PARM LIST FOR PLINK */ 01120000 * 2 EPPLK PTR, /* PLINK ENTRY POINT LIST */ 01130000 * 2 * CHAR(2), /* CONTROL BYTES */ 01140000 * 3 LDFUN BIT(1), /* LOAD */ 01150000 * 3 CLFUN BIT(1), /* CALL */ 01160000 * 3 * BIT(2), /* NA */ 01170000 * 3 DLFUN BIT(1), /* DELETE */ 01180000 * 3 RTFUN BIT(1), /* RETURN */ 01190000 * 3 * BIT(1), /* NA */ 01200000 * 3 SZFUN BIT(1), /* SIZE */ 01210000 * 2 LDCNT CHAR(1), /* MODULES TO LOAD COUNT */ 01220000 * 2 DLCNT CHAR(1), /* MODULES TO DELETE COUNT */ 01230000 * 2 MODPLK CHAR(8); /* MODULES TO LOAD OR DELETE * 01240000 * DCL 1 * BDY(WORD) BASED(ADDR(PLKMOR)), /* PLINK AND MORECORE WORDS * 01250000 * 2 FIRSTPLK PTR, /* FIRST PLINK POINTER */ 01260000 * 2 PREVPLK PTR, /* PREVIOUS PLINK POINTER */ 01270000 * 2 FIRSTLOC PTR, /* FIRST MORECORE POINTER */ 01280000 * 2 PREVLOC PTR; /* PREVIOUS MORECORE POINTER * 01290000 * DCL 1 * BDY(WORD) BASED(R7), /* PLINK MANAGEMENT */ 01300000 * 2 PLKNAME CHAR(8), /* PLINKED MODULE NAME */ 01310000 * 2 * CHAR(2), /* LEVEL AND VERSION */ 01320000 * 2 PLKOFF FIXED(15), /* PLINK MANAGEMENT OFFSET */ 01330000 * 2 PLKINST PTR; /* PLINK MODULE ENTRY POINT */ 01340000 * DCL 1 PLKMGRS BDY(WORD) BASED(R8), /* PLINK MANAGEMENT */ 01350000 * 2 PLKNEXT PTR, /* NEXT PLINKED ADDRESS */ 01360000 * 2 PLKLAST PTR; /* LAST PLINKED ADDRESS */ 01370000 * DCL 1 LOC BDY(WORD) BASED(R5), /* MORECORE MANAGEMENT */ 01380000 * 2 LMOR PTR, /* LAST MORECORE AREA */ 01390000 * 2 NMOR PTR, /* NEXT MORECORE AREA */ 01400000 * 2 SMOR FIXED, /* SIZE OF LOC */ 01410000 * 2 AMOR PTR; /* LOC ADDRESS */ 01420000 * DCL 1 * BDY(WORD) BASED(R3), /* WORK AREA PASSED */ 01430000 * 2 WKAREA BDY(WORD), /* BLDL AND WORK AREA */ 01440000 * 3 * FIXED(15), /* NUMBER OF ENTRIES */ 01450000 * 3 * FIXED(15), /* SIZE OF EACH ENTRY */ 01460000 * 3 WITEM CHAR(32), /* BLDL ITEM */ 01470000 * 4 WTOTNM CHAR(8), /* MODULE NAME */ 01480000 * 5 WNM CHAR(6), /* COMMON PART OF NAME */ 01490000 * 5 WNAM CHAR(2), /* VARYING PART MODULE NAME */ 01500000 * 4 WTTRK CHAR(6), /* MODULE LOCATION */ 01510000 * 5 * CHAR(2), /* TRACK AND CYLINDER */ 01520000 * 5 WR CHAR(1), /* RECORD */ 01530000 * 4 * CHAR(11), /* BLDL DATA */ 01540000 * 4 WMSIZ CHAR(2), /* MODULE SIZE */ 01550000 * 4 * CHAR(1), /* SPARE BYTE */ 01560000 * 2 KNT CHAR(8), /* OLTEP MODULE NAME */ 01570000 * 3 KNAME CHAR(6), /* COMMON PART MODULE NAME */ 01580000 * 3 KNMV CHAR(2), /* VARYING PART MODULE NAME */ 01590000 * 2 MODNN CHAR(8), /* NON-OLTEP MODULE NAME */ 01600000 * 3 MODNN6 CHAR(6), /* FIRST SIX LETTERS OF NAME * 01610000 * 2 BDEL FIXED, /* BLOCK INDICATORS */ 01620000 * 3 BIN CHAR(1), /* BLOCK SEQUENCING */ 01630000 * 3 WK1BYT CHAR(1), /* WORK BYTE */ 01640000 * 3 BHB CHAR(1), /* HIGHEST BLOCK ASSIGNED */ 01650000 * 3 BHLD CHAR(1), /* LAST HIGH BLOCK DELETED */ 01660000 * 2 GTCOR PTR, /* ADDRESS OF OBTAINED CORE */ 01670000 * 2 SVPMW1 CHAR(10), /* DATA SAVED FROM PARM LIST * 01680000 * 3 SVP1 CHAR(2), /* MODULE INDICATORS */ 01690000 * 4 P1BITS BIT(8), /* BIT INDICATORS */ 01700000 * 5 P1B0 BIT(1), /* EIGHT CHARACTER NAME */ 01710000 * 5 P1B1 BIT(1), /* NOT A MODULE REQUEST */ 01720000 * 5 P1B23 BIT(2), /* BRANCH TO LOADED MODULE */ 01730000 * 6 P1B2 BIT(1), /* LOAD MODULE ONLY */ 01740000 * 6 P1B3 BIT(1), /* DELETE MODULE ONLY */ 01750000 * 5 P1B4 BIT(1), /* WORK BIT */ 01760000 * 5 P1B5 BIT(1), /* UNIT TEST MODULE */ 01770000 * 5 P1B6 BIT(1), /* ROOT MODULE */ 01780000 * 5 P1B7 BIT(1), /* OLD MODULE AND WORK BIT */ 01790000 * 4 SVPL CHAR(1), /* MACRO LEVEL */ 01800000 * 3 SVP8 CHAR(8), /* EIGHT CHARACTER NAME */ 01810000 * 4 SVP2 CHAR(2); /* TWO CHARACTER NAME */ 01820000 * DCL 1 * BDY(WORD) BASED(ADDR(WKAREA)), /* BLDL AND WORK AREA */ 01830000 * 2 *(5) PTR, /* FIRST FIVE WORDS */ 01840000 * 2 NMCT CHAR(14), /* SIMULATE NEW MCT */ 01850000 * 3 NTADR PTR; /* NEW ADDRESS TABLE */ 01860000 * DCL 1 GAVL BDY(WORD), /* AVAILABLE CORE LIST */ 01870000 * 2 AVADR PTR, /* CORE LOCATION */ 01880000 * 2 AVSEZ FIXED INIT(0), /* CORE SIZE */ 01890000 * 3 * CHAR(2), /* FIRST TWO BYTES OF WORD */ 01900000 * 3 AVSIZ CHAR(2); /* CORE SIZE LIMITED */ 01910000 * DCL 1 GSIZS BDY(WORD), /* REQUESTED SIZES */ 01920000 * 2 LOSIZ FIXED INIT(0), /* MINIMUM CORE REQUEST */ 01930000 * 2 HHSIZ FIXED INIT(0), /* MAXIMUM CORE REQUEST */ 01940000 * 3 HHSIZC CHAR(4), /* MAXIMUM CORE REQUEST */ 01950000 * 4 * CHAR(2), /* FIRST TWO BYTES OF WORD */ 01960000 * 4 HISIZ CHAR(2); /* MAXIMUM CORE SIZE LIMITED * 01970000 * DCL 1 * BASED(ADDR(CESWT6)), /* OLTEP SWITCHES GROUP * 01980000 * 2 * BIT(8), /* OLTEP SWITCHES * 01990000 * 3 UTSCAL BIT(1), /* UNIT TEST CALL BIT * 02000000 * 2 * BIT(8), /* OLTEP SWITCHES * 02010000 * 3 * BIT(3), /* NA * 02020000 * 3 LOADCDS BIT(1), /* SYMBOLIC LIB OPEN * 02030000 * 4 * BIT(1); /* LAST BIT USED */ 02040000 * DCL 1 * BASED(ADDR(CHASCT)), /* SECTION CONTROL TABLE */ 02050000 * 2 *(8) FIXED, /* WORD 0 THRU WORD 7 */ 02060000 * 2 SCTWD8 FIXED, /* WORD 8 */ 02070000 * 3 * FIXED(15), /* FIRST TWO BYTES OF WORD 8 * 02080000 * 3 SCTW82 FIXED(15); /* UTS SIZE IN FULL WORDS */ 02090000 * DCL 1 * BASED(R1), /* WTO ADDRESS */ 02100000 * 2 * CHAR(13), /* SET VALUES AND IDENTITY */ 02110000 * 2 WTOFORM CHAR(60); /* MESSAGE TEXT */ 02120000 * DCL 1 * BASED(R13), /* SAVE AREA */ 02130000 * 2 * FIXED, /* FIRST WORD */ 02140000 * 2 CHNBK PTR, /* CALLER SAVE AREA */ 02150000 * 2 SR13 PTR, /* REG 13 SAVED */ 02160000 * 2 SR14 PTR, /* REG 14 SAVED */ 02170000 * 2 SR15 PTR, /* REG 15 SAVED */ 02180000 * 2 SR0 PTR, /* REG 0 SAVED */ 02190000 * 2 SR1 PTR, /* REG 1 SAVED */ 02200000 * 3 * PTR; /* LAST ITEM */ 02210000 * DCL 1 * BASED(CHNBK), /* CALLER SAVE AREA */ 02220000 * 2 *(3) PTR, /* FIRST THREE WORDS */ 02230000 * 2 SVR14 PTR, /* RETURN REG */ 02240000 * 2 SVR15 PTR, /* ENTRY POINT REG */ 02250000 * 3 * PTR; /* LAST ITEM */ 02260000 * DCL 1 * BASED(PARMRG+4), /* PARM LIST FOR MORECORE */ 02270000 * 2 GTMAX FIXED, /* MAXIMUM SIZE REQUESTED */ 02280000 * 3 GTMAXC CHAR(4), /* MAXIMUM SIZE */ 02290000 * 4 BADMAX CHAR(2), /* FIRST TWO BYTES OF SIZE */ 02300000 * 2 GTMIN FIXED, /* MINIMUM SIZE REQUEST */ 02310000 * 3 GTMINC CHAR(4), /* MINIMUM SIZE */ 02320000 * 4 BADMIN CHAR(2); /* FIRST TWO BYTES OF SIZE */ 02330000 * DCL WK1PTR PTR; /* WORK AREA POINTER */ 02340000 * DCL 1 I FIXED, /* FIXED WORD WORK AREA */ 02350000 * 2 * CHAR(3), /* WORK BYTES */ 02360000 * 2 I4 CHAR(1); /* WORK BYTE */ 02370000 * DCL 1 RET FIXED INIT(0), /* RETURN CODE */ 02380000 * 2 * CHAR(3), /* NA */ 02390000 * 2 RET4 CHAR(1); /* RETURN CODE BYTE */ 02400000 * DCL 1 W FIXED, /* WORK AREA WORD */ 02410000 * 2 * CHAR(1), /* NA */ 02420000 * 2 PLKBYT CHAR(1), /* PLINK RETURN CODE */ 02430000 * 2 * CHAR(1), /* NA */ 02440000 * 2 W4 CHAR(1); /* WORK AREA BYTE */ 02450000 * DCL RID CHAR(1) BASED(ADDR(MCT)+9); /* ROOT ID BLOCK */ 02460000 * DCL 1 MCA BDY(WORD) BASED(R8), /* MODULE CONTROL TABLE */ 02470000 * 2 MPRE PTR, /* PREVIOUS MCT IF ANY */ 02480000 * 2 MNXT PTR, /* NEXT MCT IF ANY */ 02490000 * 2 MITEM(20) CHAR(6), /* MCT ENTRY FORMAT */ 02500000 * 3 MNM CHAR(2), /* MODULE INDICATOR */ 02510000 * 4 MNM1 CHAR(1), /* FIRST INDICATOR BYTE */ 02520000 * 5 MB1 BIT(1), /* NOT TO DELETE BIT */ 02530000 * 5 MB2 BIT(1), /* PRESENTLY ACTIVE BIT */ 02540000 * 5 * BIT(5), /* WORK BITS */ 02550000 * 5 MB8 BIT(1), /* OLD MODULE OR WORK BIT */ 02560000 * 4 MNM2 CHAR(1), /* MODULE ASSIGNED BLOCK ID */ 02570000 * 3 MNAM CHAR(2), /* OLTEP MODULE IDENTITY */ 02580000 * 4 MN1 CHAR(1), /* FIRST BYTE OF IDENTITY */ 02590000 * 3 MMSIZ CHAR(2), /* MODULE SIZE */ 02600000 * 2 TITEM(20) PTR; /* ADDRESS TABLE */ 02610000 * DCL MCTADS CHAR(1) BASED(R8+128); /* MCT ADDRESSES */ 02620000 * DCL TADR(20) PTR BASED(R5); /* TABLE OF MODULE ADDRESSES * 02630000 * DCL 1 BMCT18 BIT(8), /* MCT INDICATORS */ 02640000 * 2 BMCT12 BIT(2), /* CORE FOR MCT REQUESTED */ 02650000 * 3 BMCT1 BIT(1), /* FIRST ATTEMPT MADE */ 02660000 * 3 BMCT2 BIT(1), /* SECOND ATTEMPT MADE */ 02670000 * 2 PLKBIT BIT(1), /* PLINK REQUEST */ 02680000 * 2 MOD8 BIT(1), /* EIGHT CHARACTER NAME */ 02690000 * 2 BMCT45 BIT(2), /* CORE DELETED FOR MORECORE * 02700000 * 3 BMCT4 BIT(1), /* CORE DELETED */ 02710000 * 3 BMCT5 BIT(1), /* MORECORE REQUEST */ 02720000 * 2 MINMOR BIT(1), /* ATTEMPT MINIMUM MORECORE */ 02730000 * 4 * BIT(1); /* LAST BIT */ 02740000 * DCL 1 * BASED(MSGMOD), /* MESSAGE MODULE */ 02750000 * 2 *(13) PTR, /* NA */ 02760000 * 2 IFD159 PTR, /* POINTER TO IFD159 MESSAGE * 02770000 * 2 IFD160 PTR, /* POINTER TO IFD160 MESSAGE * 02780000 * 3 * PTR; /* LAST POINTER */ 02790000 * DCL 1 * CHAR(50) BDY(WORD), /* PATCH AREA */ 02800000 * 2 PATCH CHAR(8) 02810000 * INIT(' PATCH01'); 02820000 * GEN(EJECT); 02830000 EJECT 02840000 DS 0H 02850000 * PARMRG=R1; /* PARAMETER LIST POINTER */ 02860000 ST @1,PARMRG 0065 02870000 * R3=TMCOMAD; /* TRANSIENT MANAGER AREA */ 02880000 L @3,A00001+32 0066 02890000 * BIN='00'X; /* ZERO INDICATOR VALUE */ 02900000 MVI 52(@3),X'00' 0067 02910000 * BMCT18='00'X; /* ZERO OUT MCT INDICATORS */ 02920000 MVI BMCT18,X'00' 0068 02930000 * R8=ADDR(MCT); /* MODULE CONTROL TABLE */ 02940000 LA @8,MCT 0069 02950000 * HHSIZ=0; /* ZERO CORE SIZE REQUEST */ 02960000 SR @F,@F 0070 02970000 ST @F,GSIZS+4 0070 02980000 * RET4='00'X; /* ZERO RETURN CODE */ 02990000 MVI RET+3,X'00' 0071 03000000 * IF UTSCAL='0'B THEN /* TEST IF UTS CALL */ 03010000 TM A00023,B'10000000' 0072 03020000 * GOTO TRA029; /* FIRST CALL THIS UTS */ 03030000 BC 08,TRA029 0073 03040000 * TRA001: 03050000 * UTSCAL='1'B; /* INDICATE MODULES TO KEEP */ 03060000 TRA001 OI A00023,B'10000000' 0074 03070000 * TRA002: 03080000 * WK1BYT='00'X; /* ZERO ITEM INDICATOR */ 03090000 TRA002 MVI 53(@3),X'00' 0075 03100000 * IF P1B0='0'B THEN /* TEST MODULE NAME SIZE */ 03110000 TM 60(@3),B'10000000' 0076 03120000 * GOTO TRA003; /* NOT EIGHT CHARACTER NAME */ 03130000 BC 08,TRA003 0077 03140000 * GEN(EJECT); 03150000 EJECT 03160000 DS 0H 03170000 * /********************************/ 03180000 * /*** EIGHT CHARACTER NAME ***/ 03190000 * /********************************/ 03200000 * MOD8='1'B; /* EIGHT CHARACTER NAME */ 03210000 OI BMCT18,B'00010000' 0079 03220000 * WTOTNM=SVP8; /* EIGHT CHARACTER NAME */ 03230000 MVC 4(8,@3),62(@3) 0080 03240000 * R8=ADDR(NMCT); /* SIMULATE NEW MCT */ 03250000 LA @8,20(0,@3) 0081 03260000 * R5=R8; /* NEW ADDRESS TABLE */ 03270000 LR @5,@8 0082 03280000 * WK1BYT='01'X; /* FIRST ITEM OF NEW MCT */ 03290000 MVI 53(@3),X'01' 0083 03300000 * GOTO TRA021; /* FIND MODULE */ 03310000 BC 15,TRA021 0084 03320000 * TRA003: 03330000 * IF SVP2ª='28' THEN /* TEST MACRO IDENTITY */ 03340000 TRA003 CLC 62(2,@3),@C5 0085 03350000 * GOTO TRA014; /* NOT A PLINK REQUEST */ 03360000 BC 07,TRA014 0086 03370000 * /*************************/ 03380000 * /*** PLINK ROUTINE ***/ 03390000 * /*************************/ 03400000 * IF SVPL>'02'X THEN /* CHECK MACRO LEVEL */ 03410000 CLI 61(@3),X'02' 0087 03420000 * GOTO TRA039A; /* LEVEL NOT SUPPORTED */ 03430000 BC 02,TRA039A 0088 03440000 * PLKMRB='1'B; /* PLINK REQUEST */ 03450000 OI A00000,B'01000000' 0089 03460000 * PLKBIT='1'B; /* INDICATE PLINK REQUEST */ 03470000 OI BMCT18,B'00100000' 0090 03480000 * R9=ADDR(MODPLK); /* MODULES TO LOAD OR DELETE * 03490000 L @C,PARMRG 0091 03500000 LA @9,12(0,@C) 0091 03510000 * IF LDFUN='1'B THEN /* TEST PLINK FUNCTION M4507* 03520000 TM 8(@C),B'10000000' 0092 03530000 * GOTO TRA004; /* LOAD FUNCTION M4507* 03540000 BC 01,TRA004 0093 03550000 * IF DLCNTª='00'X THEN /* TEST FOR DELETE FUNCTION */ 03560000 CLI 11(@C),X'00' 0094 03570000 * GOTO TRA009; /* DELETE FUNCTION */ 03580000 BC 07,TRA009 0095 03590000 * GEN(EJECT); 03600000 EJECT 03610000 DS 0H 03620000 * /***************************************/ 03630000 * /*** PLINK ROUTINE LOAD FUNCTION ***/ 03640000 * /***************************************/ 03650000 * TRA004: 03660000 * R5=EPPLK; /* PLINK ENTRY POINT LIST */ 03670000 TRA004 L @C,PARMRG 0097 03680000 L @5,4(0,@C) 0097 03690000 * W=0; /* INITIALIZE PLINK COUNT */ 03700000 SR @F,@F 0098 03710000 ST @F,W 0098 03720000 * TRA005: 03730000 * IF W4ªPLKOFF; /* PREVIOUS PLINK OFFSET */ 04220000 @9FD L @C,A00010+4 A00010 0118 04230000 LH @4,10(0,@C) 0118 04240000 * R4=R4+PREVPLK; /* PREVIOUS PLINK MANAGEMENT * 04250000 A @4,A00010+4 0119 04260000 * R4->PLKNEXT=R7; /* NEXT PLINK UPDATED */ 04270000 ST @7,0(0,@4) 0120 04280000 * PLKLAST=PREVPLK; /* PREVIOUS PLINK POINTER */ 04290000 MVC 4(4,@8),A00010+4 0121 04300000 * TRA007: 04310000 * PREVPLK=R7; /* LAST PLINK NAME POINTER */ 04320000 TRA007 ST @7,A00010+4 0122 04330000 * TRA008: 04340000 * R9=ADDR(PKLIST2); /* NEXT PLINK MODULE NAME */ 04350000 TRA008 LA @9,8(0,@9) 0123 04360000 * R5=ADDR(PLKEP2); /* NEXT ENTRY POINT ADDRESS */ 04370000 LA @5,4(0,@5) 0124 04380000 * GOTO TRA005; /* CONTINUE TO PLINK */ 04390000 BC 15,TRA005 0125 04400000 * GEN(EJECT); 04410000 EJECT 04420000 DS 0H 04430000 * /*****************************************/ 04440000 * /*** PLINK ROUTINE DELETE FUNCTION ***/ 04450000 * /*****************************************/ 04460000 * TRA009: 04470000 * DO R5=DLCNT TO 1 BY -1; /* NUMBER OF DELETES */ 04480000 TRA009 L @C,PARMRG 0127 04490000 SR @F,@F 0127 04500000 IC @F,11(0,@C) 0127 04510000 LTR @5,@F 0127 04520000 BC 12,@DO9FB 0127 04530000 * R7=FIRSTPLK; /* FIRST PLINK NAME FUNCTION * 04540000 @DO9FC L @7,A00010 0128 04550000 * GOTO TRA012A; /* TEST PLINK ADDRESS */ 04560000 BC 15,TRA012A 0129 04570000 * TRA010: 04580000 * R8=R7+PLKOFF; /* PRESENT PLINK MANAGEMENT */ 04590000 TRA010 LH @8,10(0,@7) 0130 04600000 AR @8,@7 0130 04610000 * R4=PLKLAST->PLKOFF; /* LAST PLINK OFFSET */ 04620000 L @C,4(0,@8) 0131 04630000 LH @4,10(0,@C) 0131 04640000 * R4=R4+PLKLAST; /* LAST PLINK MANAGEMENT */ 04650000 A @4,4(0,@8) 0132 04660000 * R6=PLKNEXT->PLKOFF; /* NEXT PLINK OFFSET */ 04670000 L @C,0(0,@8) 0133 04680000 LH @6,10(0,@C) 0133 04690000 * R6=R6+PLKNEXT; /* NEXT PLINK MANAGEMENT */ 04700000 A @6,0(0,@8) 0134 04710000 * IF PLKNAMEª=PKLIST1 THEN /* CHECK PLINK NAME IN LIST */ 04720000 CLC 0(8,@7),0(@9) 0135 04730000 * GOTO TRA012; /* NOT POINTED TO */ 04740000 BC 07,TRA012 0136 04750000 * IF PLKNEXT=0 THEN /* TEST NEXT PLINK */ 04760000 SR @F,@F 0137 04770000 C @F,0(0,@8) 0137 04780000 * GOTO TRA011; /* END OF PLINK POINTERS */ 04790000 BC 08,TRA011 0138 04800000 * R6->PLKLAST=PLKLAST; /* LAST PLINK UPDATED */ 04810000 MVC 4(4,@6),4(@8) 0139 04820000 * IF PLKLAST=0 THEN /* TEST IF FIRST PLINK */ 04830000 SR @F,@F 0140 04840000 C @F,4(0,@8) 0140 04850000 BC 07,@9F8 0140 04860000 * FIRSTPLK=PLKNEXT; /* FIRST PLINK UPDATED */ 04870000 MVC A00010(4),0(@8) 0141 04880000 BC 15,@9F7 0142 04890000 * ELSE R4->PLKNEXT=PLKNEXT; /* NEXT PLINK UPDATED */ 04900000 @9F8 MVC 0(4,@4),0(@8) 0142 04910000 * PLKMGRS=PLKMGRS&&PLKMGRS; /* ZERO PLINK MANAGEMENT */ 04920000 @9F7 XC 0(8,@8),0(@8) 0143 04930000 * GOTO TRA013; /* DELETE PLINK MODULE */ 04940000 BC 15,TRA013 0144 04950000 * TRA011: 04960000 * PREVPLK=PLKLAST; /* LAST PLINK IN STRING */ 04970000 TRA011 MVC A00010+4(4),4(@8) 0145 04980000 * IF PLKLAST=0 THEN /* TEST LAST PLINK POINTER */ 04990000 SR @F,@F 0146 05000000 C @F,4(0,@8) 0146 05010000 BC 07,@9F6 0146 05020000 * FIRSTPLK=0; /* NO MORE PLINKS */ 05030000 ST @F,A00010 0147 05040000 BC 15,@9F5 0148 05050000 * ELSE R4->PLKNEXT=0; /* LAST PLINK IN CHAIN */ 05060000 @9F6 SR @F,@F 0148 05070000 ST @F,0(0,@4) 0148 05080000 * PLKLAST=0; /* LAST PLINK IN CHAIN */ 05090000 @9F5 SR @F,@F 0149 05100000 ST @F,4(0,@8) 0149 05110000 * GOTO TRA013; /* DELETE PLINK MODULE */ 05120000 BC 15,TRA013 0150 05130000 * TRA012: 05140000 * R7=PLKNEXT; /* NEXT PLINK MODULE */ 05150000 TRA012 L @7,0(0,@8) 0151 05160000 * TRA012A: 05170000 * IF R7ª=0 THEN /* TEST PLINK MODULE */ 05180000 TRA012A LTR @7,@7 0152 05190000 * GOTO TRA010; /* PLINK MODULE LISTED */ 05200000 BC 07,TRA010 0153 05210000 * RET4='0C'X; /* NO PLINK MODULE */ 05220000 MVI RET+3,X'0C' 0154 05230000 * TRA013: 05240000 * GEN(DELETE EPLOC=(9)); /* DELETE PLINK MODULE */ 05250000 TRA013 DELETE EPLOC=(9) 05260000 DS 0H 05270000 * R9=ADDR(PKLIST2); /* NEXT PLINK NAME IN LIST */ 05280000 LA @9,8(0,@9) 0156 05290000 * END; /* END OF PLINK DELETIONS */ 05300000 * GOTO TRA035; /* NO MORE PLINK DELETES */ 05310000 BCT @5,@DO9FC 0157 05320000 BC 15,TRA035 0158 05330000 * TRA014: 05340000 * IF SVP2ª='42' THEN /* TEST MACRO IDENTITY */ 05350000 TRA014 CLC 62(2,@3),@C8 0159 05360000 * GOTO TRA016; /* NOT A MORECORE REQUEST */ 05370000 BC 07,TRA016 0160 05380000 * GEN(EJECT); 05390000 EJECT 05400000 DS 0H 05410000 * /****************************/ 05420000 * /*** MORECORE ROUTINE ***/ 05430000 * /****************************/ 05440000 * IF SVPL>'02'X THEN /* CHECK MACRO LEVEL */ 05450000 CLI 61(@3),X'02' 0162 05460000 * GOTO TRA039A; /* LEVEL NOT SUPPORTED */ 05470000 BC 02,TRA039A 0163 05480000 * PLKMRB='1'B; /* MORECORE REQUEST */ 05490000 OI A00000,B'01000000' 0164 05500000 * BMCT5='1'B; /* MORECORE INDICATED */ 05510000 OI BMCT18,B'00000100' 0165 05520000 * I4=BHLD; /* NEXT BLOCK TO DELETE */ 05530000 MVC I+3(1),55(@3) 0166 05540000 * LOSIZ=0; /* MINIMUM CORE REQUEST */ 05550000 SR @F,@F 0167 05560000 ST @F,GSIZS 0167 05570000 * HHSIZ=2048; /* MAINTENANCE AREA SIZE */ 05580000 LA @F,2048 0168 05590000 ST @F,GSIZS+4 0168 05600000 * GEN(BAL R6,TRA040); /* OBTAIN CORE */ 05610000 BAL R6,TRA040 05620000 DS 0H 05630000 * GAVL1=GAVL; /* SAVE ADDRESS AND SIZE */ 05640000 MVC GAVL1(8),GAVL 0170 05650000 * HHSIZC=GTMAXC; /* MAXIMUM CORE REQUEST */ 05660000 L @C,PARMRG 0171 05670000 MVC GSIZS+4(4),4(@C) 0171 05680000 * IF BADMINª<'00FF'X THEN /* TEST MINIMUM SIZE REQUEST * 05690000 CLC 8(2,@C),@X9 0172 05700000 * GOTO TRA034; /* SIZE TOO LARGE */ 05710000 BC 10,TRA034 0173 05720000 * IF BADMAXª<'00FF'X THEN /* TEST MAXIMUM SIZE REQUEST * 05730000 CLC 4(2,@C),@X9 0174 05740000 BC 04,@9F4 0174 05750000 * TRA014A: 05760000 * DO; /* ILLEGAL MAXIMUM SIZE */ 05770000 * HHSIZC=GTMINC; /* OBTAIN MINIMUM SIZE */ 05780000 TRA014A L @C,PARMRG 0176 05790000 MVC GSIZS+4(4),8(@C) 0176 05800000 * MINMOR='1'B; /* ATTEMPT MINIMUM SIZE */ 05810000 OI BMCT18,B'00000010' 0177 05820000 * END; /* FINISH MINIMUM SETUP */ 05830000 * IF HHSIZ=0 THEN /* CHECK SIZE */ 05840000 @9F4 SR @F,@F 0179 05850000 C @F,GSIZS+4 0179 05860000 * GOTO TRA034; /* NO SIZE */ 05870000 BC 08,TRA034 0180 05880000 * HHSIZ=HHSIZ+16; /* ACTUAL SIZE TO REQUEST */ 05890000 LA @F,16 0181 05900000 A @F,GSIZS+4 0181 05910000 ST @F,GSIZS+4 0181 05920000 * TRA015: 05930000 * GEN(BAL R6,TRA040); /* GO TO OBTAIN CORE */ 05940000 TRA015 BAL R6,TRA040 05950000 DS 0H 05960000 * IF AVSEZMCA=R7->MCA&&R7->MCA; /* ZERO OUT MCT */ 07560000 XC 0(208,@7),0(@7) 0242 07570000 * R7->MPRE=R8; /* PREVIOUS ADDRESS RECORDED * 07580000 ST @8,0(0,@7) 0243 07590000 * R8=R7; /* NEW MCT ADDRESS */ 07600000 LR @8,@7 0244 07610000 * R5=ADDR(MCTADS); /* MCT ADDRESSES */ 07620000 LA @5,128(0,@8) 0245 07630000 * WK1BYT='01'X; /* FIRST ITEM IN MCT */ 07640000 MVI 53(@3),X'01' 0246 07650000 * GEN(EJECT); 07660000 EJECT 07670000 DS 0H 07680000 * /**********************************/ 07690000 * /*** PREPARE TO LOAD MODULE ***/ 07700000 * /**********************************/ 07710000 * TRA021: 07720000 * IF P1B5='1'B THEN /* UNIT TEST TO LOAD */ 07730000 TRA021 TM 60(@3),B'00000100' 0248 07740000 BC 12,@9E8 0248 07750000 * DO; /* UNIT ALREADY EXISTS */ 07760000 * HISIZ=SCTW82*4; /* MODULE SIZE TO GET M4506* 07770000 LA @E,4 0250 07780000 MH @E,A00028+34 0250 07790000 STH @E,GSIZS+6 0250 07800000 * WMSIZ=HISIZ; /* MODULE SIZE M4506* 07810000 MVC 29(2,@3),GSIZS+6 0251 07820000 * GOTO TRA023; /* SKIP MODULE SEARCH M4506* 07830000 BC 15,TRA023 0252 07840000 * END; /* END OF UTS SETUP */ 07850000 * R0=ADDR(WKAREA); /* BLDL LIST */ 07860000 @9E8 LR @0,@3 0254 07870000 * R1=0; /* LINK LIB OR JOB LIB * 07880000 SR @1,@1 0255 07890000 * IF LOADCDS='1'B THEN /* SYMBOLIC LIB OPEN * 07900000 TM A00023+1,B'00010000' 0256 07910000 BC 12,@9E7 0256 07920000 * R1=SYMPTR; /* SYMBOLIC LIB * 07930000 L @1,SYMPTR 0257 07940000 * GEN(BLDL (1),(0)); /* ISSUE BLDL MACRO * 07950000 @9E7 EQU * 0258 07960000 BLDL (1),(0) 07970000 DS 0H 07980000 * PLKBYT='0C'X; /* NO PLINK MODULE */ 07990000 MVI W+1,X'0C' 0259 08000000 * IF WR='00'X THEN /* TEST FOR MODULE EXISTENCE * 08010000 CLI 14(@3),X'00' 0260 08020000 * GOTO TRA038; /* NO MODULE */ 08030000 BC 08,TRA038 0261 08040000 * HISIZ=WMSIZ+116; /* MODULE SIZE M4507* 08050000 LA @F,116 0262 08060000 MVC @TEMP2+2(2),29(@3) 0262 08070000 A @F,@TEMP2 0262 08080000 STH @F,GSIZS+6 0262 08090000 * PLKBYT='10'X; /* NO PLINK MODULE SPACE */ 08100000 MVI W+1,X'10' 0263 08110000 * IF PLKBIT='1'B THEN /* TEST FOR PLINK REQUEST */ 08120000 TM BMCT18,B'00100000' 0264 08130000 * GOTO TRA023; /* PLINK REQUEST */ 08140000 BC 01,TRA023 0265 08150000 * TRA022: 08160000 * MNAM(WK1BYT)=WNAM; /* NAME INTO MCT */ 08170000 TRA022 SR @C,@C 0266 08180000 IC @C,53(0,@3) 0266 08190000 BCTR @C,0 0266 08200000 MH @C,@D2 0266 08210000 LA @A,10(@C,@8) 0266 08220000 MVC 0(2,@A),10(@3) 0266 08230000 * MMSIZ(WK1BYT)=WMSIZ+116; /* MODULE SIZE M4507* 08240000 LA @F,116 0267 08250000 MVC @TEMP2+2(2),29(@3) 0267 08260000 A @F,@TEMP2 0267 08270000 ST @F,@TEMP4 0267 08280000 LA @A,12(@C,@8) 0267 08290000 MVC 0(2,@A),@TEMP4+2 0267 08300000 * TRA023: 08310000 * I4=BHLD; /* NEXT BLOCK TO DELETE */ 08320000 TRA023 MVC I+3(1),55(@3) 0268 08330000 * BHB='00'X; /* FIRST PASS */ 08340000 MVI 54(@3),X'00' 0269 08350000 * IF HISIZ<662 THEN 08360000 CLC GSIZS+6(2),@D5 0270 08370000 BC 10,@9E6 0270 08380000 * HISIZ=662; 08390000 MVC GSIZS+6(2),@D5 0271 08400000 * TRA023A: 08410000 * LOSIZ=0; /* LOWEST MINIMUM SIZE */ 08420000 @9E6 EQU * 0272 08430000 TRA023A SR @F,@F 0272 08440000 ST @F,GSIZS 0272 08450000 * IF BHB='01'X THEN 08460000 CLI 54(@3),X'01' 0273 08470000 * GOTO TRA023B; 08480000 BC 08,TRA023B 0274 08490000 * IF BHB='03'X THEN 08500000 CLI 54(@3),X'03' 0275 08510000 * GOTO TRA023F; /* M4507* 08520000 BC 08,TRA023F 0276 08530000 * GEN(BAL R6,TRA040); /* LINK TO OBTAIN CORE */ 08540000 BAL R6,TRA040 08550000 DS 0H 08560000 * IF AVSIZ'02'X THEN /* INCOMPLETE PASS M4506* 11670000 @9D3 TM BMCT18,B'00001000' 0372 11680000 BC 05,@9D2 0372 11690000 CLI 52(@3),X'02' 0372 11700000 * GOTO TRA030; /* DELETE NEXT BLOCK */ 11710000 BC 13,TRA030 0373 11720000 * IF BMCT5='1'B THEN /* TEST REQUEST */ 11730000 @9D1 EQU * 0374 11740000 @9D2 TM BMCT18,B'00000100' 0374 11750000 * GOTO TRA015; /* MORECORE REQUEST */ 11760000 BC 01,TRA015 0375 11770000 * IF BMCT1='1'B THEN /* TEST REQUEST */ 11780000 TM BMCT18,B'10000000' 0376 11790000 * GOTO TRA019; /* CORE REQUEST FOR MCT */ 11800000 BC 01,TRA019 0377 11810000 * IF BMCT4='1'B THEN /* TEST DELETION INDICATOR */ 11820000 TM BMCT18,B'00001000' 0378 11830000 * GOTO TRA023A; /* DELETIONS MADE */ 11840000 BC 01,TRA023A 0379 11850000 * IF BINª>'02'X THEN /* TEST DELETIONS M4506* 11860000 CLI 52(@3),X'02' 0380 11870000 * GOTO TRA030; /* DELETE MORE MODULES */ 11880000 BC 12,TRA030 0381 11890000 * IF PLKBIT='1'B THEN /* TEST FOR PLINK REQUEST */ 11900000 TM BMCT18,B'00100000' 0382 11910000 * GOTO TRA038; /* NO MORE MODULES TO DELETE * 11920000 BC 01,TRA038 0383 11930000 * IF BHB='00'X THEN 11940000 CLI 54(@3),X'00' 0384 11950000 * GOTO TRA023D; 11960000 BC 08,TRA023D 0385 11970000 * IF BHB='01'X THEN 11980000 CLI 54(@3),X'01' 0386 11990000 * GOTO TRA023C; 12000000 BC 08,TRA023C 0387 12010000 * GEN(BAL R6,TRA043); /* FREE WORK AREA FOR LOAD */ 12020000 BAL R6,TRA043 12030000 DS 0H 12040000 * TRA032A: 12050000 * BHB='FF'X; /* INSUFFICIENT CORE */ 12060000 TRA032A MVI 54(@3),X'FF' 0389 12070000 * IF P1B7='1'B THEN /* OLD MACRO CALLED */ 12080000 TM 60(@3),B'00000001' 0390 12090000 * RETURN; /* RETURN */ 12100000 BC 03,@EL01 0391 12110000 * R4=TAB28; /* NEW MACRO ENTRY POINT */ 12120000 @9D0 L @4,TAB28 0392 12130000 * GOTO TRA026; /* RETURN */ 12140000 BC 15,TRA026 0393 12150000 * GEN(EJECT); 12160000 EJECT 12170000 DS 0H 12180000 * /***************************/ 12190000 * /*** NOT ENOUGH CORE ***/ 12200000 * /***************************/ 12210000 * TRA033: 12220000 * GEN(BAL R6,TRA041); /* RELEASE OBTAINED CORE */ 12230000 TRA033 BAL R6,TRA041 12240000 DS 0H 12250000 * IF BINª>'02'X THEN /* TEST MCT PASS M4506* 12260000 CLI 52(@3),X'02' 0396 12270000 * GOTO TRA028; /* INCOMPLETE PASS */ 12280000 BC 12,TRA028 0397 12290000 * IF MINMOR='0'B THEN /* TEST MORECORE ATTEMPT */ 12300000 TM BMCT18,B'00000010' 0398 12310000 * GOTO TRA014A; /* MINIMUM ATTEMPT NOT MADE */ 12320000 BC 08,TRA014A 0399 12330000 * TRA034: 12340000 * GAVL=GAVL1; /* MAINTENANCE AREA */ 12350000 TRA034 MVC GAVL(8),GAVL1 0400 12360000 * GEN(BAL R6,TRA041); /* FREE CORE */ 12370000 BAL R6,TRA041 12380000 DS 0H 12390000 * R4=8; /* CORE NOT AVAILABLE CODE */ 12400000 LA @4,8 0402 12410000 * GOTO TRA036; /* RETURN TO CALLER */ 12420000 BC 15,TRA036 0403 12430000 * TRA035: 12440000 * R4=RET; /* PLINK RETURN CODE */ 12450000 TRA035 L @4,RET 0404 12460000 * TRA036: 12470000 * R13=CHNBK; /* SAVE AREA OF CALLER */ 12480000 TRA036 L @D,4(0,@D) 0405 12490000 * TRA037: 12500000 * R15=R4; /* REG 15 RESTORED */ 12510000 TRA037 LR @F,@4 0406 12520000 * GEN(L R14,12(R13)); /* RESTORE REG 14 */ 12530000 L R14,12(R13) 12540000 DS 0H 12550000 * GEN(LM R0,R12,20(R13)); /* RESTORE REGS */ 12560000 LM R0,R12,20(R13) 12570000 DS 0H 12580000 * GOTO R14; /* RETURN TO CALLER */ 12590000 BCR 15,@E 0409 12600000 * TRA038: 12610000 * IF PLKBIT='1'B THEN /* TEST INDICATOR BIT */ 12620000 TRA038 TM BMCT18,B'00100000' 0410 12630000 BC 12,@9CF 0410 12640000 * DO; /* PLINK INDICATED */ 12650000 * RET4=PLKBYT; /* PLINK RETURN CODE */ 12660000 MVC RET+3(1),W+1 0412 12670000 * PLKEP1=0; /* CONTINUE PROGRAM */ 12680000 SR @F,@F 0413 12690000 ST @F,0(0,@5) 0413 12700000 * GOTO TRA008; /* PLINK ANOTHER MODULE */ 12710000 BC 15,TRA008 0414 12720000 * END; /* END OF PLINK UPDATE */ 12730000 * R1=IFD159; /* MESSAGE ADDRESS */ 12740000 @9CF L @C,MSGMOD 0416 12750000 L @1,52(0,@C) 0416 12760000 * WTOFORM(7:14)=WTOTNM; /* MODULE NAME INTO MESSAGE */ 12770000 MVC 19(8,@1),4(@3) 0417 12780000 * IF MOD8='1'B THEN /* TEST MODULE NAME */ 12790000 TM BMCT18,B'00010000' 0418 12800000 BC 12,@9CE 0418 12810000 * MODNN=KNT; /* NON OLTEP MODULE */ 12820000 MVC 44(8,@3),36(@3) 0419 12830000 * TRA039: 12840000 * GEN(PWTO REG=(1)); /* ISSUE A WTO */ 12850000 @9CE EQU * 0420 12860000 TRA039 PWTO REG=(1) 12870000 DS 0H 12880000 * TRA039A: 12890000 * R4=4; /* MODULE NOT AVAILABLE */ 12900000 TRA039A LA @4,4 0421 12910000 * GOTO TRA036; /* RETURN TO CALLER */ 12920000 BC 15,TRA036 0422 12930000 * /*****************************************/ 12940000 * /*** GETMAIN AND FREEMAIN ROUTINES ***/ 12950000 * /*****************************************/ 12960000 * TRA040: 12970000 * GAVL=GAVL&&GAVL; /* ZERO OUT WORK AREA */ 12980000 TRA040 XC GAVL(8),GAVL 0423 12990000 * IF HHSIZ=0 THEN /* TEST SIZE */ 13000000 SR @F,@F 0424 13010000 C @F,GSIZS+4 0424 13020000 * GOTO R6; /* SIZE IS ZERO */ 13030000 BCR 08,@6 0425 13040000 * GEN(GETMAIN VC,LA=GSIZS,A=GAVL); /* OBTAIN AVAILABLE CORE */ 13050000 GETMAIN VC,LA=GSIZS,A=GAVL 13060000 DS 0H 13070000 * GOTO R6; /* BRANCH BACK */ 13080000 BCR 15,@6 0427 13090000 * TRA041: 13100000 * IF AVSEZ=0³ /* TEST SIZE */ 13110000 * AVADR=0 THEN /* TEST ADDRESS */ 13120000 TRA041 SR @F,@F 0428 13130000 C @F,GAVL+4 0428 13140000 BC 08,@9CD 0428 13150000 C @F,GAVL 0428 13160000 BC 07,@9CC 0428 13170000 * GOTO R6; /* MISSING VALUE */ 13180000 @9CD BCR 15,@6 0429 13190000 * GEN(FREEMAIN V,A=GAVL); /* FREE OBTAINED CORE */ 13200000 @9CC EQU * 0430 13210000 FREEMAIN V,A=GAVL 13220000 DS 0H 13230000 * GAVL=GAVL&&GAVL; /* ZERO OUT WORK AREA */ 13240000 XC GAVL(8),GAVL 0431 13250000 * GOTO R6; /* BRANCH BACK */ 13260000 BCR 15,@6 0432 13270000 * TRA043: 13280000 * AVADR=GTCOR; /* OBTAINED CORE ADDRESS */ 13290000 TRA043 MVC GAVL(4),56(@3) 0433 13300000 * IF GTCOR=0 THEN /* TEST SIZE */ 13310000 SR @F,@F 0434 13320000 C @F,56(0,@3) 0434 13330000 * GOTO R6; /* MISSING VALUE */ 13340000 BCR 08,@6 0435 13350000 * GEN(FREEMAIN E,LV=656,A=AVADR); /* FREE CORE */ 13360000 FREEMAIN E,LV=656,A=AVADR 13370000 DS 0H 13380000 * GTCOR=0; /* NO CORE */ 13390000 SR @F,@F 0437 13400000 ST @F,56(0,@3) 0437 13410000 * GOTO R6; /* BRANCH BACK */ 13420000 BCR 15,@6 0438 13430000 * TRA044: 13440000 * AVADR=0; /* NO CORE */ 13450000 TRA044 SR @F,@F 0439 13460000 ST @F,GAVL 0439 13470000 * GEN(GETMAIN EC,LV=656,A=AVADR); /* OBTAIN CORE */ 13480000 GETMAIN EC,LV=656,A=AVADR 13490000 DS 0H 13500000 * IF R15ª=0 THEN /* TEST CONDITION CODE */ 13510000 LTR @F,@F 0441 13520000 BC 08,@9CB 0441 13530000 * AVADR=0; /* NOT SUCCESSFUL */ 13540000 SR @F,@F 0442 13550000 ST @F,GAVL 0442 13560000 * GTCOR=AVADR; /* SAVE CORE ADDRESS */ 13570000 @9CB MVC 56(4,@3),GAVL 0443 13580000 * GOTO R6; /* BRANCH BACK */ 13590000 BCR 15,@6 0444 13600000 * END; 13610000 @EL01 L @D,4(0,@D) 0445 13620000 LM @E,@C,12(@D) 0445 13630000 BCR 15,@E 0445 13640000 @DATA1 EQU * 13650000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 13660000 @1 EQU 01 13670000 @2 EQU 02 13680000 @3 EQU 03 13690000 @4 EQU 04 13700000 @5 EQU 05 13710000 @6 EQU 06 13720000 @7 EQU 07 13730000 @8 EQU 08 13740000 @9 EQU 09 13750000 @A EQU 10 13760000 @B EQU 11 13770000 @C EQU 12 13780000 @D EQU 13 13790000 @E EQU 14 13800000 @F EQU 15 13810000 @D1 DC H'-16' 13820000 @D2 DC H'6' 13830000 @D3 DC H'1' 13840000 @D4 DC H'20' 13850000 @D5 DC H'662' 13860000 DS 0F 13870000 @C5 DC C'28' 13880000 @C8 DC C'42' 13890000 @X9 DC X'00FF' 13900000 @C14 DC C'26' 13910000 @C15 DC C'46' 13920000 DS 0D 13930000 @DATA EQU * 13940000 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 13950000 X EQU 00000000 FULLWORD INTEGER 13960000 R0 EQU 00000000 FULLWORD POINTER REGISTER 13970000 R1 EQU 00000001 FULLWORD POINTER REGISTER 13980000 R2 EQU 00000002 FULLWORD POINTER REGISTER 13990000 R3 EQU 00000003 FULLWORD POINTER REGISTER 14000000 R4 EQU 00000004 FULLWORD POINTER REGISTER 14010000 R5 EQU 00000005 FULLWORD POINTER REGISTER 14020000 R6 EQU 00000006 FULLWORD POINTER REGISTER 14030000 R7 EQU 00000007 FULLWORD POINTER REGISTER 14040000 R8 EQU 00000008 FULLWORD POINTER REGISTER 14050000 R9 EQU 00000009 FULLWORD POINTER REGISTER 14060000 R12 EQU 00000012 FULLWORD POINTER REGISTER 14070000 R13 EQU 00000013 FULLWORD POINTER REGISTER 14080000 R14 EQU 00000014 FULLWORD POINTER REGISTER 14090000 R15 EQU 00000015 FULLWORD POINTER REGISTER 14100000 PARMRG EQU @DATA+00000072 FULLWORD POINTER 14110000 SAVR8 EQU @DATA+00000076 FULLWORD POINTER 14120000 GAVL1 EQU @DATA+00000080 8 BYTE(S) ON WORD 14130000 A00004 EQU 00000000 16 BYTE(S) ON WORD 14140000 PKLIST1 EQU A00004+00000000 8 BYTE(S) 14150000 PKLIST2 EQU A00004+00000008 8 BYTE(S) 14160000 A00005 EQU 00000000 8 BYTE(S) ON WORD 14170000 PLKEP1 EQU A00005+00000000 FULLWORD POINTER 14180000 PLKEP2 EQU A00005+00000004 FULLWORD POINTER 14190000 A00006 EQU 00000004 16 BYTE(S) ON WORD 14200000 EPPLK EQU A00006+00000000 FULLWORD POINTER 14210000 A00007 EQU A00006+00000004 2 BYTE(S) 14220000 LDFUN EQU A00006+00000004 1 BIT(S) 14230000 CLFUN EQU A00006+00000004 1 BIT(S) 14240000 A00008 EQU A00006+00000004 2 BIT(S) 14250000 DLFUN EQU A00006+00000004 1 BIT(S) 14260000 RTFUN EQU A00006+00000004 1 BIT(S) 14270000 A00009 EQU A00006+00000004 1 BIT(S) 14280000 SZFUN EQU A00006+00000004 1 BIT(S) 14290000 LDCNT EQU A00006+00000006 1 BYTE(S) 14300000 DLCNT EQU A00006+00000007 1 BYTE(S) 14310000 MODPLK EQU A00006+00000008 8 BYTE(S) 14320000 A00011 EQU 00000000 16 BYTE(S) ON WORD 14330000 PLKNAME EQU A00011+00000000 8 BYTE(S) 14340000 A00012 EQU A00011+00000008 2 BYTE(S) 14350000 PLKOFF EQU A00011+00000010 HALFWORD INTEGER 14360000 PLKINST EQU A00011+00000012 FULLWORD POINTER 14370000 PLKMGRS EQU 00000000 8 BYTE(S) ON WORD 14380000 PLKNEXT EQU PLKMGRS+00000000 FULLWORD POINTER 14390000 PLKLAST EQU PLKMGRS+00000004 FULLWORD POINTER 14400000 LOC EQU 00000000 16 BYTE(S) ON WORD 14410000 LMOR EQU LOC+00000000 FULLWORD POINTER 14420000 NMOR EQU LOC+00000004 FULLWORD POINTER 14430000 SMOR EQU LOC+00000008 FULLWORD INTEGER 14440000 AMOR EQU LOC+00000012 FULLWORD POINTER 14450000 A00013 EQU 00000000 70 BYTE(S) ON WORD 14460000 WKAREA EQU A00013+00000000 36 BYTE(S) ON WORD 14470000 A00014 EQU A00013+00000000 HALFWORD INTEGER 14480000 A00015 EQU A00013+00000002 HALFWORD INTEGER 14490000 WITEM EQU A00013+00000004 32 BYTE(S) 14500000 WTOTNM EQU A00013+00000004 8 BYTE(S) 14510000 WNM EQU A00013+00000004 6 BYTE(S) 14520000 WNAM EQU A00013+00000010 2 BYTE(S) 14530000 WTTRK EQU A00013+00000012 6 BYTE(S) 14540000 A00016 EQU A00013+00000012 2 BYTE(S) 14550000 WR EQU A00013+00000014 1 BYTE(S) 14560000 A00017 EQU A00013+00000018 11 BYTE(S) 14570000 WMSIZ EQU A00013+00000029 2 BYTE(S) 14580000 A00018 EQU A00013+00000031 1 BYTE(S) 14590000 KNT EQU A00013+00000036 8 BYTE(S) 14600000 KNAME EQU A00013+00000036 6 BYTE(S) 14610000 KNMV EQU A00013+00000042 2 BYTE(S) 14620000 MODNN EQU A00013+00000044 8 BYTE(S) 14630000 MODNN6 EQU A00013+00000044 6 BYTE(S) 14640000 BDEL EQU A00013+00000052 FULLWORD INTEGER 14650000 BIN EQU A00013+00000052 1 BYTE(S) 14660000 WK1BYT EQU A00013+00000053 1 BYTE(S) 14670000 BHB EQU A00013+00000054 1 BYTE(S) 14680000 BHLD EQU A00013+00000055 1 BYTE(S) 14690000 GTCOR EQU A00013+00000056 FULLWORD POINTER 14700000 SVPMW1 EQU A00013+00000060 10 BYTE(S) 14710000 SVP1 EQU A00013+00000060 2 BYTE(S) 14720000 P1BITS EQU A00013+00000060 8 BIT(S) 14730000 P1B0 EQU A00013+00000060 1 BIT(S) 14740000 P1B1 EQU A00013+00000060 1 BIT(S) 14750000 P1B23 EQU A00013+00000060 2 BIT(S) 14760000 P1B2 EQU A00013+00000060 1 BIT(S) 14770000 P1B3 EQU A00013+00000060 1 BIT(S) 14780000 P1B4 EQU A00013+00000060 1 BIT(S) 14790000 P1B5 EQU A00013+00000060 1 BIT(S) 14800000 P1B6 EQU A00013+00000060 1 BIT(S) 14810000 P1B7 EQU A00013+00000060 1 BIT(S) 14820000 SVPL EQU A00013+00000061 1 BYTE(S) 14830000 SVP8 EQU A00013+00000062 8 BYTE(S) 14840000 SVP2 EQU A00013+00000062 2 BYTE(S) 14850000 A00019 EQU 00000000 34 BYTE(S) ON WORD 14860000 A00020 EQU A00019+00000000 5*FULLWORD POINTER 14870000 NMCT EQU A00019+00000020 14 BYTE(S) 14880000 NTADR EQU A00019+00000020 4 BYTE POINTER 14890000 GAVL EQU @DATA+00000088 8 BYTE(S) ON WORD 14900000 AVADR EQU GAVL+00000000 FULLWORD POINTER 14910000 ORG GAVL+00000004 14920000 AVSEZ EQU * FULLWORD INTEGER 14930000 DC FL4'0' 14940000 A00021 EQU GAVL+00000004 2 BYTE(S) 14950000 AVSIZ EQU GAVL+00000006 2 BYTE(S) 14960000 GSIZS EQU @DATA+00000096 8 BYTE(S) ON WORD 14970000 LOSIZ EQU * FULLWORD INTEGER 14980000 DC FL4'0' 14990000 HHSIZ EQU * FULLWORD INTEGER 15000000 DC FL4'0' 15010000 HHSIZC EQU GSIZS+00000004 4 BYTE(S) 15020000 A00022 EQU GSIZS+00000004 2 BYTE(S) 15030000 HISIZ EQU GSIZS+00000006 2 BYTE(S) 15040000 A00031 EQU 00000000 73 BYTE(S) ON WORD 15050000 A00032 EQU A00031+00000000 13 BYTE(S) 15060000 WTOFORM EQU A00031+00000013 60 BYTE(S) 15070000 A00033 EQU 00000000 28 BYTE(S) ON WORD 15080000 A00034 EQU A00033+00000000 FULLWORD INTEGER 15090000 CHNBK EQU A00033+00000004 FULLWORD POINTER 15100000 SR13 EQU A00033+00000008 FULLWORD POINTER 15110000 SR14 EQU A00033+00000012 FULLWORD POINTER 15120000 SR15 EQU A00033+00000016 FULLWORD POINTER 15130000 SR0 EQU A00033+00000020 FULLWORD POINTER 15140000 SR1 EQU A00033+00000024 FULLWORD POINTER 15150000 A00035 EQU A00033+00000024 FULLWORD POINTER 15160000 A00036 EQU 00000000 20 BYTE(S) ON WORD 15170000 A00037 EQU A00036+00000000 3*FULLWORD POINTER 15180000 SVR14 EQU A00036+00000012 FULLWORD POINTER 15190000 SVR15 EQU A00036+00000016 FULLWORD POINTER 15200000 A00038 EQU A00036+00000016 FULLWORD POINTER 15210000 A00039 EQU 00000004 8 BYTE(S) ON WORD 15220000 GTMAX EQU A00039+00000000 FULLWORD INTEGER 15230000 GTMAXC EQU A00039+00000000 4 BYTE(S) 15240000 BADMAX EQU A00039+00000000 2 BYTE(S) 15250000 GTMIN EQU A00039+00000004 FULLWORD INTEGER 15260000 GTMINC EQU A00039+00000004 4 BYTE(S) 15270000 BADMIN EQU A00039+00000004 2 BYTE(S) 15280000 WK1PTR EQU @DATA+00000104 FULLWORD POINTER 15290000 I EQU @DATA+00000108 FULLWORD INTEGER 15300000 A00040 EQU I+00000000 3 BYTE(S) 15310000 I4 EQU I+00000003 1 BYTE(S) 15320000 ORG @DATA+00000112 15330000 RET EQU * FULLWORD INTEGER 15340000 DC FL4'0' 15350000 A00041 EQU RET+00000000 3 BYTE(S) 15360000 RET4 EQU RET+00000003 1 BYTE(S) 15370000 W EQU @DATA+00000116 FULLWORD INTEGER 15380000 A00042 EQU W+00000000 1 BYTE(S) 15390000 PLKBYT EQU W+00000001 1 BYTE(S) 15400000 A00043 EQU W+00000002 1 BYTE(S) 15410000 W4 EQU W+00000003 1 BYTE(S) 15420000 MCA EQU 00000000 208 BYTE(S) ON WORD 15430000 MPRE EQU MCA+00000000 FULLWORD POINTER 15440000 MNXT EQU MCA+00000004 FULLWORD POINTER 15450000 MITEM EQU MCA+00000008 20*6 BYTE(S) 15460000 MNM EQU MCA+00000008 2 BYTE(S) 15470000 MNM1 EQU MCA+00000008 1 BYTE(S) 15480000 MB1 EQU MCA+00000008 1 BIT(S) 15490000 MB2 EQU MCA+00000008 1 BIT(S) 15500000 A00044 EQU MCA+00000008 5 BIT(S) 15510000 MB8 EQU MCA+00000008 1 BIT(S) 15520000 MNM2 EQU MCA+00000009 1 BYTE(S) 15530000 MNAM EQU MCA+00000010 2 BYTE(S) 15540000 MN1 EQU MCA+00000010 1 BYTE(S) 15550000 MMSIZ EQU MCA+00000012 2 BYTE(S) 15560000 TITEM EQU MCA+00000128 20*FULLWORD POINTER 15570000 MCTADS EQU 00000128 1 BYTE(S) 15580000 TADR EQU 00000000 20*FULLWORD POINTER 15590000 BMCT18 EQU @DATA+00000120 8 BIT(S) ON BYTE 15600000 BMCT12 EQU BMCT18+00000000 2 BIT(S) 15610000 BMCT1 EQU BMCT18+00000000 1 BIT(S) 15620000 BMCT2 EQU BMCT18+00000000 1 BIT(S) 15630000 PLKBIT EQU BMCT18+00000000 1 BIT(S) 15640000 MOD8 EQU BMCT18+00000000 1 BIT(S) 15650000 BMCT45 EQU BMCT18+00000000 2 BIT(S) 15660000 BMCT4 EQU BMCT18+00000000 1 BIT(S) 15670000 BMCT5 EQU BMCT18+00000000 1 BIT(S) 15680000 MINMOR EQU BMCT18+00000000 1 BIT(S) 15690000 A00045 EQU BMCT18+00000000 1 BIT(S) 15700000 A00046 EQU 00000000 60 BYTE(S) ON WORD 15710000 A00047 EQU A00046+00000000 13*FULLWORD POINTER 15720000 IFD159 EQU A00046+00000052 FULLWORD POINTER 15730000 IFD160 EQU A00046+00000056 FULLWORD POINTER 15740000 A00048 EQU A00046+00000056 FULLWORD POINTER 15750000 A00049 EQU @DATA+00000124 50 BYTE(S) ON WORD 15760000 ORG A00049+00000000 15770000 PATCH EQU * 8 BYTE(S) 15780000 DC C' PATCH01' 15790000 ORG @DATA 15800000 DS 00000174C 15810000 @TEMPS DS 0F 15820000 @TEMP2 DC F'0' 15830000 @TEMP4 DC F'0' 15840000 DSECT01 IFDCOM 15850000 IFDOLT01 CSECT 15860000 A00000 EQU CESWT2+00000000 8 BIT(S) ON BYTE 15870000 NDCFO EQU A00000+00000000 1 BIT(S) 15880000 PLKMRB EQU A00000+00000000 1 BIT(S) 15890000 A00001 EQU OLTTAB+00000000 40 BYTE(S) ON WORD 15900000 A00002 EQU A00001+00000000 8*FULLWORD POINTER 15910000 TMCOMAD EQU A00001+00000032 FULLWORD POINTER 15920000 SECPRF EQU A00001+00000036 FULLWORD POINTER 15930000 A00003 EQU A00001+00000036 FULLWORD POINTER 15940000 A00010 EQU PLKMOR+00000000 16 BYTE(S) ON WORD 15950000 FIRSTPLK EQU A00010+00000000 FULLWORD POINTER 15960000 PREVPLK EQU A00010+00000004 FULLWORD POINTER 15970000 FIRSTLOC EQU A00010+00000008 FULLWORD POINTER 15980000 PREVLOC EQU A00010+00000012 FULLWORD POINTER 15990000 A00023 EQU CESWT6+00000000 2 BYTE(S) ON WORD 16000000 A00024 EQU A00023+00000000 8 BIT(S) 16010000 UTSCAL EQU A00023+00000000 1 BIT(S) 16020000 A00025 EQU A00023+00000001 8 BIT(S) 16030000 A00026 EQU A00023+00000001 3 BIT(S) 16040000 LOADCDS EQU A00023+00000001 1 BIT(S) 16050000 A00027 EQU A00023+00000001 1 BIT(S) 16060000 A00028 EQU CHASCT+00000000 36 BYTE(S) ON WORD 16070000 A00029 EQU A00028+00000000 8*FULLWORD INTEGER 16080000 SCTWD8 EQU A00028+00000032 FULLWORD INTEGER 16090000 A00030 EQU A00028+00000032 HALFWORD INTEGER 16100000 SCTW82 EQU A00028+00000034 HALFWORD INTEGER 16110000 RID EQU MCT+00000009 1 BYTE(S) 16120000 @DATEND EQU * 16130000 @DO9FB EQU TRA035 16140000 @9EC EQU TRA018 16150000 @9E2 EQU TRA036 16160000 @9D6 EQU TRA032 16170000 END 16180000 ./ ADD SSI=01012646,NAME=IFDOLT02,SOURCE=1 TITLE 'IFDOLT02 DATA PROTECT CELL' 00010000 * GENERATE; 00020000 TITLE 'IFDOLT02 DATA PROTECT CELL' 00030000 * /************************************************************ 00040000 * /* * 00050000 * /*TITLE * 00060000 * /* IFDOLT02 - CELL DATA PROTECTION * 00070000 * /* * 00080000 * /*STATUS * 00090000 * /* CHANGE LEVEL 000 * 00100000 * /* * 00110000 * /*FUNCTION * 00120000 * /* THIS MODULE PERFORMS DATA PROTECTION ON 2321 DATACELLS * 00130000 * /* BY CHECKING TO SEE IF A CE CELL IS LOCATED IN BIN 0 * 00140000 * /* FOR ALL TEST SECTIONS EXCEPT SECTION T WHICH REQUIRES * 00150000 * /* A BALLAST CELL IN THAT BIN * 00160000 * /* * 00170000 * /*ENTRY POINTS * 00180000 * /* FROM DATA PROTECTION GENERAL MODULE(IFDOLT52). * 00190000 * /* * 00200000 * /*INPUT * 00210000 * /* REGISTER 2 POINTS TO THE OLTEP COMMON AREA. REGISTER 7 * 00220000 * /* POINTS TO THE DEVTAB ENTRY FOR THE DEVICE BEING TESTED* 00230000 * /* * 00240000 * /*OUTPUT * 00250000 * /* VARIOUS BITS WILL BE SET OR RESET DEPENDING ON THE * 00260000 * /* TESTING ENVIRONMENT. SIMILARLY ANY OF THE FOLLOWING * 00270000 * /* SEQUENCES OF MESSAGES MAY BE OUTPUT TO BOTH THE CONSOLE* 00280000 * /* AND THE PRINTER: * 00290000 * /* IFD140D * 00300000 * /* IFD140D,IFD126I,IFD137I,IDF139D * 00310000 * /* IFD140D,IFD131I,IFD137I,IDF139D * 00320000 * /* IFD140D,IFD132I,IFD137I,IDF139D * 00330000 * /* * 00340000 * /*EXTERNAL REFERENCES * 00350000 * /* THIS MODULE MAKES USE OF VARIOUS SECTIONS OF THE OLTEP * 00360000 * /* COMMON AREA. IT ALSO REFERENCES THE MESSAGE MODULE * 00370000 * /* IFDMSG02 * 00380000 * /* * 00390000 * /*EXITS * 00400000 * /* TO IFDOLT34 TO BUILD DEB/DCB * 00410000 * /* * 00420000 * /* TO IFDOLT05 TO PERFORM SESE I/O OPERATION * 00430000 * /* * 00440000 * /* TO IFDOLT06 TO WAIT FOR COMPLETION OF I/O EVENT * 00450000 * /* * 00460000 * /* TO CONVERT TO CONVERT SENSE-CSW INFO TO EBCDIC IN CASE * 00470000 * /* OF UNUSUAL CONDITIONS * 00480000 * /* * 00490000 * /* RETURN TO GENERAL DATA PROTECTION MODULE (IFDOL52) * 00500000 * /* * 00510000 * /*TABLES/WORKAREA * 00520000 * /* THIS MODULE SETS UP A TECB WHICH IS US)D BY IFDOLT05 * 00530000 * /* AND IFDOLT06 * 00540000 * /* * 00550000 * /************************************************************ 00560000 * IFDOLT02: PROC(X); /* * 00570000 LCLA &T,&SPN 0002 00580000 .@001 ANOP 0002 00590000 IFDOLT02 CSECT , 0002 00600000 STM @E,@C,12(@D) 0002 00610000 BALR @B,0 0002 00620000 @PSTART DS 0H 0002 00630000 USING @PSTART+00000,@B 0002 00640000 ST @D,@SAV001+4 0002 00650000 LA @F,@SAV001 0002 00660000 ST @F,8(0,@D) 0002 00670000 LR @D,@F 0002 00680000 * GEN(USING CHASCT,2); /* COMMON AREA BASE REGISTER * 00690000 USING CHASCT,2 00700000 DS 0H 00710000 * /******************************************************************* 00720000 * /* * 00730000 * /* CCW LIST * 00740000 * /* * 00750000 * /******************************************************************* 00760000 * GEN DATA; 00770000 * GEN DATA; 00780000 * 00790000 * GEN DATA; 00800000 * 00810000 * 00820000 * GENERATE DATA; 00830000 * /******************************************************************* 00840000 * /* * 00850000 * /* DECLARED REGISTERS * 00860000 * /* * 00870000 * /******************************************************************* 00880000 * DCL R0 REG(0) PTR; 00890000 * DCL R1 REG(1) PTR; 00900000 * DCL R2 REG(2) PTR; 00910000 * DCL R3 REG(3) PTR; 00920000 * DCL R4 REG(4) PTR; 00930000 * DCL R5 REG(5) PTR; 00940000 * DCL R6 REG(6) PTR; 00950000 * DCL R7 REG(7) PTR; 00960000 * DCL R8 REG(8) PTR; 00970000 * DCL R9 REG(9) PTR; 00980000 * DCL R10 REG(10) PTR; 00990000 * DCL R11 REG(11) PTR; 01000000 * DCL R12 REG(12) PTR; 01010000 * DCL R13 REG(13) PTR; 01020000 * DCL R14 REG(14) PTR; 01030000 * DCL R15 REG(15) PTR; 01040000 * RESTRICT(2,4,5,6,7,8); 01050000 * 01060000 * 01070000 * /******************************************************************* 01080000 * /* * 01090000 * /* SECTION CONTROL TABLE STRUCTURE * 01100000 * /* * 01110000 * /******************************************************************* 01120000 * 01130000 * DCL CHASCT GENERATED; /* SECTION CONTROL TABLE * 01140000 * DCL 1 * CHAR(1) BASED(ADDR(CHASCT)+10), /* SCT STRUCTURE * 01150000 * 3 * BIT(1), /* NA * 01160000 * 3 FPM BIT(1); /* FILE PROTECT MODE BIT * 01170000 * DCL 1 * CHAR(1) BASED(ADDR(CHASCT)+11), /* SCT CDS FLAGS M1006* 01180000 * 3 CDSFPM BIT(1), /* FILE PROTECT MODE M1006* 01190000 * 3 * BIT(1), /* NA M1006* 01200000 * 3 CDSCEVOL BIT(1), /* CE VOLUME M1006* 01210000 * 3 * BIT(5); /* NA M1006* 01220000 * 01230000 * /******************************************************************** 01240000 * /* * 01250000 * /* COMMUNICATION SWITCHES STRUCTURE * 01260000 * /* * 01270000 * /******************************************************************** 01280000 * 01290000 * 01300000 * DCL CESWT CHAR(5) GENERATED; /* COMMUNICATION SWITCHES * 01310000 * DCL 1 * BASED(ADDR(CESWT)), /* CE SWITCHES * 01320000 * 3 * BIT(8), /* CE SWITCH * 01330000 * 5 * BIT(1), /* NA * 01340000 * 5 PROTECT BIT(1), /* DATA PROT ON SEC DEV * 01350000 * 5 * BIT(6), /* NA * 01360000 * 3 * BIT(8), /* CE SWITCH 1 * 01370000 * 5 * BIT(1), /* NA * 01380000 * 5 SEEK2321 BIT(1), /* SEEK TEST ONLY BIT * 01390000 * 5 T2321T BIT(1), 01400000 * 5 * BIT(1), 01410000 * 5 FILMSK BIT(1), /* FILE MASK MODE SET CHG BIT * 01420000 * 5 T2321 BIT(1), /* 2321 DATA PROT DONE BIT * 01430000 * 5 ONLINEOK BIT(1), /* ON LINE OK BIT * 01440000 * 5 * BIT(1), /* NA * 01450000 * 3 * BIT(8), /* CE SWITCH 2 * 01460000 * 5 NDCFO BIT(1), /* PREVENTS DYNAMIC COMM INTERVAL * 01470000 * 5 DPONDEV BIT(1), /* DATA DONE ON THIS DEVICE * 01480000 * 5 * BIT(1), /* NA * 01490000 * 5 CHANTEST BIT(1), /* INDICATES CHAN TEST ACTIVE * 01500000 * 5 * BIT(1), /* NA * 01510000 * 5 * BIT(1), /* NA * 01520000 * 5 TAPEHDR BIT(1), /* TAPE HEADER BIT * 01530000 * 5 DEVDPOK BIT(1), /* DATA PROT ON DEV OK * 01540000 * 3 * BIT(8), /* CE SWITCH 3 * 01550000 * 5 * BIT(1), /* NA * 01560000 * 5 NURUN BIT(1), /* BRING NEW TESTS * 01570000 * 5 BYPDEV BIT(1), /* BYPASS TESTS ON THIS DEVICE * 01580000 * 5 * BIT(1), /* NA * 01590000 * 5 * BIT(1), /* NA * 01600000 * 5 * BIT(1), /* NA * 01610000 * 5 * BIT(1), /* NA * 01620000 * 5 STDLAB BIT(1); /* STANDARD LABEL BIT * 01630000 * 01640000 * 01650000 * /******************************************************************** 01660000 * /* * 01670000 * /* DEVICE TABLE STRUCTURE * 01680000 * /* * 01690000 * /******************************************************************** 01700000 * 01710000 * 01720000 * DCL 1 * BASED(R7), /* S21050* 01730000 * 3 DEVADEB CHAR(8), /* DEV ADDR IN EBCDIC S21050* 01740000 * 3 UCBAD POINTER(31), /* UCB ADDR (2BYTES) S21050* 01750000 * 3 DEVFLG1 CHAR(1), /* FLAG BYTE #1 S21050* 01760000 * 5 STATUS BIT(1), /* ON LINE VS. OFF-LINE S21050* 01770000 * 5 PRIMARY BIT(1), /* PRIMARY BIT S21050* 01780000 * 5 DPDONE BIT(1), /* D.P. COMPLETE S21050* 01790000 * 5 * BIT(3), /* FILL S21050* 01800000 * 5 FILEPROT BIT(1), /* F.P. MODE OPERATION S21050* 01810000 * 5 * BIT(1), /* FILL S21050* 01820000 * 3 DEVFLG2 CHAR(1), /* FLAG BYTE # 2 S21050* 01830000 * 5 * BIT(2), /* N/A S21050* 01840000 * 5 CEVOL BIT(1), /* CE VOL ON DEVICE S21050* 01850000 * 5 STDLABL BIT(1), /* STANDARD TAPE LABEL S21050* 01860000 * 5 * BIT(4), /* FILL S21050* 01870000 * 3 DEVFLG3 CHAR(1), /* FLAG BYTE # 3 S21050* 01880000 * 3 DEVFLG4 CHAR(1), /* FLAG BYTE # 3 S21050* 01890000 * 3 TAPELABL CHAR(16), /* TAPE LABEL SAVE AREA S21050* 01900000 * 5 VOL CHAR(10), /* VOL NAME S21050* 01910000 * 5 HDR CHAR (4), /* HDR NAME S21050* 01920000 * 5 MODESV CHAR(1), /* MODE SAVE AREA S21050* 01930000 * 5 * CHAR(1), /* FILL S21050* 01940000 * 3 ADRHEX CHAR (4), /* 4 BYTE HEX ADDRESS S21050* 01950000 * 5 * CHAR(2), /* FILL S21050* 01960000 * 5 HEXAD CHAR(2), /* 2 BYTE HEX ADDRESS S21052* 01970000 * 3 * CHAR(5), /* -/A S210 2* 01980000 * 3 * CHAR(1), /* FLAGS S210 2* 01990000 * 5 DVCDSFPM BIT(1), /* FILE PROTECT FLAG S210 2* 02000000 * 5 * BIT(1), /* N/A S210 2* 02010000 * 5 DVCDSCEV BIT(1); /* C& 0OLUM& S210 2* 02020000 * DCL REGUCBPT REG(9) PTR; /* UCB PTR S21050* 02030000 * DCL 1 UCBCDS BASED(REGUCBPT), /* UCB DSECT S21050* 02040000 * 3 * CHAR(16), /* FILL S21050* 02050000 * 3 OPTIONAL CHAR(1), /* OPTIONS FIELD S21050* 02060000 * 5 STRACK BIT(1), /* 7 TRACK DEVICE S21050* 02070000 * 5 * BIT (7); /* FILL S21050* 02080000 * 02090000 * 02100000 * /******************************************************************* 02110000 * /* * 02120000 * /* PARAMETER LIST STRUCTURE * 02130000 * /* * 02140000 * /******************************************************************* 02150000 * 02160000 * DCL 1 PARMLIST, /* PARAMETERS FOR EXIO * 02170000 * 3 TECBPTR PTR(31) INIT(ADDR(TECB)), /* TECB PTR * 02180000 * 3 CCW1 PTR(31), /* CCW POINTER * 02190000 * 3 * FIXED INIT(0), 02200000 * 5 DPSCND CHAR(2), /* SET TO FFFF IF SCND S20203* 02210000 * 5 DEVPTR CHAR(2), 02220000 * 3 CCWCNT CHAR(1) INIT('02'X), 02230000 * 3 FLGS CHAR(1) INIT('30'X), 02240000 * 3 FMKMD CHAR(1) INIT('40'X), 02250000 * 3 * CHAR(1), /* NA * 02260000 * 3 * CHAR(16), /* NA * 02270000 * 5 SEEKAD CHAR(6); /* DASD SEEK ADDRESS * 02280000 * 02290000 * 02300000 * /******************************************************************* 02310000 * /* * 02320000 * /* TEST EVENT CONTROL BLOCK FIELD * 02330000 * /* * 02340000 * /******************************************************************* 02350000 * 02360000 * DCL 1 TECB, /* TEST EVENT CONTROL BLOCK * 02370000 * 3 * CHAR(4), /* NA * 02380000 * 3 CCP CHAR(1), /* CONDITION CODE FROM SIO INSTR * 02390000 * 3 CSW1 CHAR(7), /* CHANNEL STATUS * 02400000 * 5 * CHAR(3), /* NA * 02410000 * 5 EXIOK CHAR(1), /* EXIO STATUS * 02420000 * 5 * CHAR(3), /* NA * 02430000 * 3 SNS1 CHAR(6), /* SENSE INFO * 02440000 * 5 SNSFLD BIT(8), /* SENSE FIELD * 02450000 * 7 * BIT(1), /* NA * 02460000 * 7 SNS2 BIT(1), /* INTERVENTION REQUIRED BIT * 02470000 * 7 * BIT(6), /* NA * 02480000 * 5 * CHAR(2), /* NA * 02490000 * 5 * BIT(8), /* NA * 02500000 * 7 * BIT(7), /* NA * 02510000 * 7 CEBIT BIT(1), /* CEBIT * 02520000 * 5 * CHAR(2), /* NA * 02530000 * 3 * CHAR(2); 02540000 * 02550000 * DCL CESWT3 CHAR(1) GENERATED; /* OLTEP SWITCHES M4506* 02560000 * DCL 1 * CHAR(1) BASED(ADDR(CESWT3)), /* OLTEP SWITCHES M4506* 02570000 * 2 * BIT(3), /* NA M4506* 02580000 * 2 GRBCTL BIT(1), /* GRAB IN CONTROL M4506* 02590000 * 2 SUSDEL BIT(1), /* SUSPENDED DELETION M4506* 02600000 * 3 * BIT(1); /* NA M4506* 02610000 * DCL OLTTAB GENERATED; /* LINK TABLE M4506* 02620000 * DCL 1 * BDY(WORD) BASED(ADDR(OLTTAB)), /* LINK TABLE M4506* 02630000 * 2 OLTTAB1 PTR, /* OLD EXIO M4506* 02640000 * 2 OLTTAB2 PTR, /* OLD WAITIO M4506* 02650000 * 3 * PTR; /* NA M4506* 02660000 * 02670000 * DCL IFDMSG02 EXT ENTRY; /* MESSAGE MODULE * 02680000 * DCL MSGPTR PTR INIT(ADDR(IFDMSG02)); /* POINTER TO MESSAGE MODULE* 02690000 * DCL 1 * BASED(R4), /* MESSAGE ADDRESS * 02700000 * 3 MSG2 PTR, /* POINTER TO MESSAGE * 02710000 * 3 MSG3 PTR, /* POINTER TO MESSAGE * 02720000 * 3 MSG4 PTR, /* POINTER TO MESSAGE * 02730000 * 3 MSG5 PTR, /* POINTER TO MESSAGE * 02740000 * 3 MSG6 PTR, /* POINTER TO MESSAGE * 02750000 * 3 MSG7 PTR, /* POINTER TO MESSAGE * 02760000 * 3 MSG8 PTR; /* POINTER TO MESSAGE * 02770000 * DCL MSGDVAD1 CHAR(8) BASED(R1+21); /*DEV ADDR AREA IN MSG S21050* 02780000 * DCL MSGDVAD2 CHAR(8) BASED(R1+21); /*DEV ADDR AREA IN MSG S21050* 02790000 * DCL MSGDVAD3 CHAR(8) BASED(R1+34); /*DEV ADDR AREA IN MSG S21050* 02800000 * DCL MSGDVAD7 CHAR(8) BASED(R1+29); /*DEV ADDR AREA IN MSG S21050* 02810000 * DCL MSGDVAD8 CHAR(8) BASED(R1+16); /*DEV ADDR AREA IN MSG S21050* 02820000 * DCL MSGSNS CHAR(12) BASED(R1+37); /* SENSE DATA AREA S21050* 02830000 * DCL MSGCSW CHAR(14) BASED(R1+18); /* CSW DATA AREA S21050* 02840000 * DCL SUB18 CHAR(6) INIT('000012060000'X); /*SEEK ADDR FOR SUBCELL18 * 02850000 * DCL SUB19 CHAR(6) INIT('000013060000'X); /*SEEK ADDR FOR SUBCELL19 * 02860000 * DCL 1 MSGPARM BASED(R1), /* NA * 02870000 * 3 LENGTH CHAR(1), /* LENGTH OF RESPONSE * 02880000 * 3 BUFAD PTR(24), /* POINTER TO RESPONSE BUFFER * 02890000 * 3 MSGECBAD FIXED; /* ECB ADDRESS * 02900000 * DCL DECB FIXED INIT(0); /* EVENT CONTROL BLOCK * 02910000 * DCL INBUFR CHAR(72) GENERATED; 02920000 * DCL BUFFER CHAR(1) BASED(ADDR(INBUFR)); 02930000 * DCL 1 MSGPARM1 BASED(R1), /* NA * 02940000 * 3 LENGTH1 CHAR(1), /* LENGTH OF RESPONSE * 02950000 * 3 BUFAD1 PTR(24), /* POINTER TO RESPONSE BUFFER * 02960000 * 3 MSGECB1 FIXED; /* ECB ADDRESS * 02970000 * DCL BUFFER1 CHAR(3) BASED(ADDR(INBUFR)); 02980000 * DCL 1 INBUF CHAR(26), /* INPUT BUFFER * 02990000 * 3 SNSIN CHAR(12), /* CONVERTED SENSE DATA * 03000000 * 3 CSWIN CHAR(14); /* CONVERTED CSW DATA * 03010000 * DCL 1 OUTBUFR CHAR(13), /* OUTPUT BUFFER * 03020000 * 3 SNSOUT CHAR(6), /* SENSE OUT * 03030000 * 3 CSWOUT CHAR(7); /* CSW OUT * 03040000 * DCL LABEL0 LABEL GENERATED; /* CCW LABEL * 03050000 * DCL LABEL1 LABEL GENERATED; /* CCW LABEL * 03060000 * DCL TAB28 PTR(31) GENERATED; /* NEW MACRO ENTRY POINT * 03070000 * DCL CNVRT CHAR(14) GENERATED; /* CONVERT PARAMETER LIST * 03080000 * /******************************************************************* 03090000 * /* * 03100000 * /* DETERMINE IF IT'S A SEEK SECTION * 03110000 * /* * 03120000 * /******************************************************************* 03130000 * R4=MSGPTR; /*PTR TO MSG MODULE * 03140000 L @4,MSGPTR 0063 03150000 * IF SEEK2321='1'B THEN 03160000 TM A00005+1,B'01000000' 0064 03170000 BC 12,@9FF 0064 03180000 * R0=98; /*OFFSET FOR EXTENTS,SPECIAL * 03190000 LA @0,98 0065 03200000 BC 15,@9FE 0066 03210000 * ELSE R0=112; /*OFFSETT FOR NORMAL EXTENTS * 03220000 @9FF LA @0,112 0066 03230000 * GEN(IFDMOD CALL='34'); /*CALL DEBDCB * 03240000 @9FE EQU * 0067 03250000 IFDMOD CALL='34' 03260000 DS 0H 03270000 * R6=R15; /*SAVE R15 * 03280000 LR @6,@F 0068 03290000 * IF R6 < 100 THEN RETURN; /*NO ROOM FOR MODULE 34 * 03300000 CH @6,@D1 0069 03310000 BC 05,@EL01 0070 03320000 * GEN(IFDMOD DELETE='34'); /*DELETE IFDOLT34 * 03330000 @9FD EQU * 0071 03340000 IFDMOD DELETE='34' 03350000 DS 0H 03360000 * IF T2321T='1'B THEN 03370000 TM A00005+1,B'00100000' 0072 03380000 BC 12,@9FC 0072 03390000 * DO; /* 2321 T TEST * 03400000 * DPCELL01: 03410000 * FILMSK='0'B; /* TURN OFF FILE MASK CHG BIT * 03420000 DPCELL01 NI A00005+1,B'11110111' 0074 03430000 * FPM='1'B; /*SET FILE PROTECT MODE BITS * 03440000 OI A00000,B'01000000' 0075 03450000 * FILEPROT='1'B; 03460000 OI 12(@7),B'00000010' 0076 03470000 * CDSFPM='1'B; /* SET CDSFPM BIT IN SCT M1006* 03480000 OI A00002,B'10000000' 0077 03490000 * DVCDSFPM='1'B; /* SET DEVTAB FPM FLAG */ 03500000 OI 41(@7),B'10000000' 0078 03510000 * DPDONE='1'B; 03520000 OI 12(@7),B'00100000' 0079 03530000 * RETURN; 03540000 BC 15,@EL01 0080 03550000 * END; 03560000 * /******************************************************************* 03570000 * /* * 03580000 * /* SET UP TO CALL EXIO * 03590000 * /* * 03600000 * /******************************************************************* 03610000 * 03620000 * DPCELL02: 03630000 * FILMSK='1'B; /*ALLOW MODE SET CHANGERS * 03640000 @9FC EQU * 0082 03650000 DPCELL02 OI A00005+1,B'00001000' 0082 03660000 * CCW1=ADDR(LABEL0); /* ADDRESS OF CCW LIST * 03670000 LA @F,LABEL0 0083 03680000 ST @F,PARMLIST+4 0083 03690000 * DEVPTR=HEXAD; /*PUT DEVICE ADDR IN PL * 03700000 MVC PARMLIST+10(2),34(@7) 0084 03710000 * PROTECT='1'B; 03720000 OI A00005,B'01000000' 0085 03730000 * IF PRIMARY='0'B THEN /* IF SCND DEV S20203* 03740000 TM 12(@7),B'01000000' 0086 03750000 BC 05,@9FB 0086 03760000 * DPSCND='FFFF'X; /* SET INDICATOR S20203* 03770000 MVC PARMLIST+8(2),@X3 0087 03780000 * SEEKAD=SUB18; /* SET SEEK ADDRESS FOR SUBCELL 18* 03790000 @9FB MVC PARMLIST+16(6),SUB18 0088 03800000 * GEN(BAL R5,IORTN); /* I/O ROUTINES M4506* 03810000 BAL R5,IORTN 03820000 DS 0H 03830000 * /******************************************************************* 03840000 * /* * 03850000 * /* CHECK CONDITION OF CE BIT * 03860000 * /* * 03870000 * /******************************************************************* 03880000 * IF CEBIT='0'B THEN /* IF THE CE BIT IS NOT ON * 03890000 TM TECB+15,B'00000001' 0090 03900000 * GOTO DPCELL07; /* GO PRINT MESSAGE * 03910000 BC 08,DPCELL07 0091 03920000 * SEEKAD=SUB19; /* SET SEEK ADDRESS FOR SUBCELL 19* 03930000 MVC PARMLIST+16(6),SUB19 0092 03940000 * CCW1=ADDR(LABEL1); 03950000 LA @F,LABEL1 0093 03960000 ST @F,PARMLIST+4 0093 03970000 * GEN(BAL R5,IORTN); /* I/O ROUTINES M4506* 03980000 BAL R5,IORTN 03990000 DS 0H 04000000 * IF CEBIT='1'B THEN /* IF CE BIT IS ON * 04010000 TM TECB+15,B'00000001' 0095 04020000 * GOTO DPCELL08; /* GO PRINT MESSAGE * 04030000 BC 01,DPCELL08 0096 04040000 * T2321='1'B; /* TURN ON DATA PROT DONE BIT * 04050000 OI A00005+1,B'00000100' 0097 04060000 * DPDONE='1'B; 04070000 OI 12(@7),B'00100000' 0098 04080000 * CEVOL='1'B; 04090000 OI 13(@7),B'00100000' 0099 04100000 * CDSCEVOL='1'B; /* SET CDSCEVOL BIT IN SCT M1006* 04110000 OI A00002,B'00100000' 0100 04120000 * DVCDSCEV='1'B; /* SET DEVTAB CDS CEVL S21052* 04130000 OI 41(@7),B'00100000' 0101 04140000 * GOTO DPCELL10; /* RETURN TO CALLING MODULE * 04150000 BC 15,DPCELL10 0102 04160000 * IORTN: 04170000 * GEN(BAL R6,OLDEXIO); /* OLD EXIO M4506* 04180000 IORTN BAL R6,OLDEXIO 04190000 DS 0H 04200000 * SUSDEL='1'B; /* SUSPEND DELETION M4506* 04210000 OI A00048,B'00001000' 0104 04220000 * GEN(BAL R6,OLDEXIO); /* OLD EXIO M4506* 04230000 BAL R6,OLDEXIO 04240000 DS 0H 04250000 * GEN(BAL R6,OLDWAIT); /* OLD WAITIO M4506* 04260000 BAL R6,OLDWAIT 04270000 DS 0H 04280000 * SUSDEL='1'B; /* SUSPEND DELETION M4506* 04290000 OI A00048,B'00001000' 0107 04300000 * GEN(BAL R6,OLDWAIT); /* OLD WAITIO M4506* 04310000 BAL R6,OLDWAIT 04320000 DS 0H 04330000 * IF EXIOKª='0C'X THEN /* CHECK EXIO RUN M4506* 04340000 CLI TECB+8,X'0C' 0109 04350000 * GOTO DPCELL03; /* EXIO UNSUCCESSFUL M4506* 04360000 BC 07,DPCELL03 0110 04370000 * GOTO R5; /* RETURN FROM ROUTINE M4506* 04380000 BCR 15,@5 0111 04390000 * OLDEXIO: 04400000 * R15=OLTTAB1; /* OLD EXIO CALL M4506* 04410000 OLDEXIO L @F,A00051 0112 04420000 * R1=ADDR(PARMLIST); /* EXIO PARAMETER M4506* 04430000 LA @1,PARMLIST 0113 04440000 * GEN(BALR R14,R15); /* GO TO OLD EXIO M4506* 04450000 BALR R14,R15 04460000 DS 0H 04470000 * GOTO R6; /* RETURN TO ROUTINE M4506* 04480000 BCR 15,@6 0115 04490000 * OLDWAIT: 04500000 * R15=OLTTAB2; /* OLD WAITIO CALL M4506* 04510000 OLDWAIT L @F,A00051+4 0116 04520000 * R1=ADDR(TECB); /* WAITIO PARAMETER M4506* 04530000 LA @1,TECB 0117 04540000 * GEN(BALR R14,R15); /* GO TO OLD WAITIO M4506* 04550000 BALR R14,R15 04560000 DS 0H 04570000 * GOTO R6; /* RETURN TO ROUTINE M4506* 04580000 BCR 15,@6 0119 04590000 * NEWCONV: 04600000 * R1=ADDR(CNVRT); /* CONVERT PARAMETER M4506* 04610000 NEWCONV LA @1,CNVRT 0120 04620000 * R15=TAB28; /* TRANSIENT MANAGER M4506* 04630000 L @F,TAB28 0121 04640000 * GOTO R15; /* CALL CONVERT M4506* 04650000 BCR 15,@F 0122 04660000 * DPCELL03: 04670000 * IF CCP='03'X THEN /*IF CONDITION CODE=3 * 04680000 DPCELL03 CLI TECB+4,X'03' 0123 04690000 * GOTO DPCELL12; /*GO PRINT MESSAGE * 04700000 BC 08,DPCELL12 0124 04710000 * IF SNS2='1'B THEN 04720000 TM TECB+12,B'01000000' 0125 04730000 * GOTO DPCELL11; /*PRINT INTERVENTION REQUIRED MSG * 04740000 BC 01,DPCELL11 0126 04750000 * /******************************************************************* 04760000 * /* * 04770000 * /* PRINT IFD131I MESSAGE * 04780000 * /* * 04790000 * /******************************************************************* 04800000 * R1=MSG2; /* POINTER TO MESSAGE * 04810000 L @1,0(0,@4) 0127 04820000 * MSGDVAD1=DEVADEB; /* PUT ADDRESS IN MESSAGE * 04830000 MVC 21(8,@1),0(@7) 0128 04840000 * GOTO DPCELL04; /* GO PRINT SNS/CSW * 04850000 BC 15,DPCELL04 0129 04860000 * /******************************************************************* 04870000 * /* PRINT IFD126I MESSAGE * 04880000 * /* * 04890000 * /******************************************************************* 04900000 * DPCELL07: 04910000 * R1=MSG3; /* POINTER TO MESSAGE * 04920000 DPCELL07 L @1,4(0,@4) 0130 04930000 * MSGDVAD2=DEVADEB; /* PUT ADDRESS IN MESSAGE * 04940000 MVC 21(8,@1),0(@7) 0131 04950000 * GOTO DPCELL04; /* GO PRINT SNS/CSW * 04960000 BC 15,DPCELL04 0132 04970000 * /******************************************************************* 04980000 * /* * 04990000 * /* CONVERT SENSE/CSW INFO * 05000000 * /* * 05010000 * /******************************************************************* 05020000 * 05030000 * DPCELL04: 05040000 * GEN(BAL R5,DPCELL14); /* ISSUE WTO M4506* 05050000 DPCELL04 BAL R5,DPCELL14 05060000 DS 0H 05070000 * SNSOUT=SNS1; /* PUT DATA TO BE CONVERTED IN * 05080000 MVC OUTBUFR(6),TECB+12 0134 05090000 * /* OUTPUT BUFFER * 05100000 * CSWOUT=CSW1; /* PUT DATA TO BE CONVERTED IN * 05110000 MVC OUTBUFR+6(7),TECB+5 0135 05120000 * /* OUTPUT BUFFER * 05130000 * GEN(BAL R14,NEWCONV); /* CONVERT CALL M4506* 05140000 BAL R14,NEWCONV 05150000 DS 0H 05160000 * SUSDEL='1'B; /* SUSPEND DELETION M4506* 05170000 OI A00048,B'00001000' 0137 05180000 * GEN(BAL R14,NEWCONV); /* CONVERT CALL M4506* 05190000 BAL R14,NEWCONV 05200000 DS 0H 05210000 * 05220000 * /******************************************************************* 05230000 * /* * 05240000 * /* PRINT IFD137I MESSAGE * 05250000 * /* * 05260000 * /******************************************************************* 05270000 * 05280000 * R1=MSG4; /* POINTER TO MESSAGE * 05290000 L @1,8(0,@4) 0139 05300000 * MSGSNS=SNSIN; /* DATA TO BE CONVERTED * 05310000 MVC 37(12,@1),INBUF 0140 05320000 * MSGCSW=CSWIN; /* DATA TO BE CONVERTED * 05330000 MVC 18(14,@1),INBUF+12 0141 05340000 * DPCEL05A: 05350000 * GEN(BAL R5,DPCELL14); /* ISSUE WTO M4506* 05360000 DPCEL05A BAL R5,DPCELL14 05370000 DS 0H 05380000 * 05390000 * 05400000 * /******************************************************************* 05410000 * /* * 05420000 * /* PRINT IFD139D MESSAGE * 05430000 * /* * 05440000 * /******************************************************************* 05450000 * DPCELL05: 05460000 * R1=MSG5; /* POINTER TO MESSAGE * 05470000 DPCELL05 L @1,12(0,@4) 0143 05480000 * MSGECBAD=ADDR(DECB); /* PTR TO PWTOR ECB * 05490000 LA @F,DECB 0144 05500000 ST @F,4(0,@1) 0144 05510000 * BUFAD=ADDR(BUFFER); /* SET UP BUFFER ADDRESS * 05520000 LA @F,BUFFER 0145 05530000 ST @F,@TEMP4 0145 05540000 MVC 1(3,@1),@TEMP4+1 0145 05550000 * LENGTH='01'X; /* LENGTH OF RESPONSE * 05560000 MVI 0(@1),X'01' 0146 05570000 * DECB=0; /* CLEAR EVENT CONTROL BLOCK * 05580000 SR @F,@F 0147 05590000 ST @F,DECB 0147 05600000 * FILMSK='0'B; /*SET TO INHIBIT MODE SET CHG* 05610000 NI A00005+1,B'11110111' 0148 05620000 * GEN(BAL R5,DPCELL13); /* ISSUE WTOR M4506* 05630000 BAL R5,DPCELL13 05640000 DS 0H 05650000 * IF BUFFER='B' THEN DO; /* IF REPLY IS BYPASS * 05660000 CLI BUFFER,C'B' 0150 05670000 BC 07,@9FA 0150 05680000 * DPCELL09: 05690000 * T2321='0'B; /* SET DATA PROTECT DONE BIT OFF * 05700000 DPCELL09 NI A00005+1,B'11111011' 0152 05710000 * IF PRIMARY='1'B THEN 05720000 TM 12(@7),B'01000000' 0153 05730000 BC 12,@9F9 0153 05740000 * BYPDEV='1'B; /* SET BYPASS DEVICE BIT ON * 05750000 OI A00005+3,B'00100000' 0154 05760000 * GOTO DPCELL10; /* RETURN TO CALLING MODULE * 05770000 BC 15,DPCELL10 0155 05780000 * END; 05790000 * IF BUFFER='R' THEN /* IF REPLY IS RETRY * 05800000 @9FA CLI BUFFER,C'R' 0157 05810000 * GOTO DPCELL02; /* GO ISSUE EXIO * 05820000 BC 08,DPCELL02 0158 05830000 * GOTO DPCELL05; /* WRONG REPLY TRY AGAIN * 05840000 BC 15,DPCELL05 0159 05850000 * /******************************************************************* 05860000 * /* * 05870000 * /* PRINT IFD132I MESSAGE * 05880000 * /* * 05890000 * /******************************************************************* 05900000 * DPCELL08: 05910000 * R1=MSG6; /* POINTER TO MESSAGE * 05920000 DPCELL08 L @1,16(0,@4) 0160 05930000 * MSGDVAD3=DEVADEB; /* PUT ADDRESS IN MESSAGE * 05940000 MVC 34(8,@1),0(@7) 0161 05950000 * GOTO DPCELL04; /* GO PRINT SNS/CSW * 05960000 BC 15,DPCELL04 0162 05970000 * 05980000 * /******************************************************************* 05990000 * /* * 06000000 * /* PRINT IFD130I MESSAGE * 06010000 * /* * 06020000 * /******************************************************************* 06030000 * DPCELL11: 06040000 * R1=MSG7; /* PUT PTR TO MSG IN R1 * 06050000 DPCELL11 L @1,20(0,@4) 0163 06060000 * MSGDVAD7=DEVADEB; /*PUT DEV ADDR IN MSG * 06070000 MVC 29(8,@1),0(@7) 0164 06080000 * GOTO DPCELL04; /*GO PRINT SENSE-CSW INFO * 06090000 BC 15,DPCELL04 0165 06100000 * /******************************************************************* 06110000 * /* * 06120000 * /* PRINT MESSAGE IFD138I * 06130000 * /* * 06140000 * /******************************************************************* 06150000 * DPCELL12: 06160000 * R1=MSG8; /* POINTER TO MESSAGE * 06170000 DPCELL12 L @1,24(0,@4) 0166 06180000 * MSGDVAD8=DEVADEB; /*PUT DEV ADDR IN MSG * 06190000 MVC 16(8,@1),0(@7) 0167 06200000 * GOTO DPCEL05A; /* ISSUE WTO M4506* 06210000 BC 15,DPCEL05A 0168 06220000 * 06230000 * DPCELL13: 06240000 * GEN(PWTOR REG=(1)); /* WTOR M4506* 06250000 DPCELL13 PWTOR REG=(1) 06260000 DS 0H 06270000 * GOTO R5; /* RETURN M4506* 06280000 BCR 15,@5 0170 06290000 * DPCELL14: 06300000 * GEN(PWTO REG=(1)); /* WTO M4506* 06310000 DPCELL14 PWTO REG=(1) 06320000 DS 0H 06330000 * GOTO R5; /* RETURN M4506* 06340000 BCR 15,@5 0172 06350000 * /******************************************************************* 06360000 * /* * 06370000 * /* EXIT * 06380000 * /* * 06390000 * /******************************************************************* 06400000 * DPCELL10: 06410000 * PROTECT='0'B; 06420000 DPCELL10 NI A00005,B'10111111' 0173 06430000 * IF SEEK2321='1'B THEN 06440000 TM A00005+1,B'01000000' 0174 06450000 * GOTO DPCELL01; 06460000 BC 01,DPCELL01 0175 06470000 * RETURN; /* RETURN TO CALLING MODULE * 06480000 * END; 06490000 @EL01 L @D,4(0,@D) 0177 06500000 LM @E,@C,12(@D) 0177 06510000 BCR 15,@E 0177 06520000 @DATA1 EQU * 06530000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 06540000 @1 EQU 01 06550000 @2 EQU 02 06560000 @3 EQU 03 06570000 @4 EQU 04 06580000 @5 EQU 05 06590000 @6 EQU 06 06600000 @7 EQU 07 06610000 @8 EQU 08 06620000 @9 EQU 09 06630000 @A EQU 10 06640000 @B EQU 11 06650000 @C EQU 12 06660000 @D EQU 13 06670000 @E EQU 14 06680000 @F EQU 15 06690000 @D1 DC H'100' 06700000 DS 0F 06710000 @X3 DC X'FFFF' 06720000 DS 0D 06730000 @DATA EQU * 06740000 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 06750000 X EQU 00000000 FULLWORD INTEGER 06760000 R0 EQU 00000000 FULLWORD POINTER REGISTER 06770000 R1 EQU 00000001 FULLWORD POINTER REGISTER 06780000 R2 EQU 00000002 FULLWORD POINTER REGISTER 06790000 R3 EQU 00000003 FULLWORD POINTER REGISTER 06800000 R4 EQU 00000004 FULLWORD POINTER REGISTER 06810000 R5 EQU 00000005 FULLWORD POINTER REGISTER 06820000 R6 EQU 00000006 FULLWORD POINTER REGISTER 06830000 R7 EQU 00000007 FULLWORD POINTER REGISTER 06840000 R8 EQU 00000008 FULLWORD POINTER REGISTER 06850000 R9 EQU 00000009 FULLWORD POINTER REGISTER 06860000 R10 EQU 00000010 FULLWORD POINTER REGISTER 06870000 R11 EQU 00000011 FULLWORD POINTER REGISTER 06880000 R12 EQU 00000012 FULLWORD POINTER REGISTER 06890000 R13 EQU 00000013 FULLWORD POINTER REGISTER 06900000 R14 EQU 00000014 FULLWORD POINTER REGISTER 06910000 R15 EQU 00000015 FULLWORD POINTER REGISTER 06920000 A00023 EQU 00000000 42 BYTE(S) ON WORD 06930000 DEVADEB EQU A00023+00000000 8 BYTE(S) 06940000 UCBAD EQU A00023+00000008 FULLWORD POINTER 06950000 DEVFLG1 EQU A00023+00000012 1 BYTE(S) 06960000 STATUS EQU A00023+00000012 1 BIT(S) 06970000 PRIMARY EQU A00023+00000012 1 BIT(S) 06980000 DPDONE EQU A00023+00000012 1 BIT(S) 06990000 A00024 EQU A00023+00000012 3 BIT(S) 07000000 FILEPROT EQU A00023+00000012 1 BIT(S) 07010000 A00025 EQU A00023+00000012 1 BIT(S) 07020000 DEVFLG2 EQU A00023+00000013 1 BYTE(S) 07030000 A00026 EQU A00023+00000013 2 BIT(S) 07040000 CEVOL EQU A00023+00000013 1 BIT(S) 07050000 STDLABL EQU A00023+00000013 1 BIT(S) 07060000 A00027 EQU A00023+00000013 4 BIT(S) 07070000 DEVFLG3 EQU A00023+00000014 1 BYTE(S) 07080000 DEVFLG4 EQU A00023+00000015 1 BYTE(S) 07090000 TAPELABL EQU A00023+00000016 16 BYTE(S) 07100000 VOL EQU A00023+00000016 10 BYTE(S) 07110000 HDR EQU A00023+00000026 4 BYTE(S) 07120000 MODESV EQU A00023+00000030 1 BYTE(S) 07130000 A00028 EQU A00023+00000031 1 BYTE(S) 07140000 ADRHEX EQU A00023+00000032 4 BYTE(S) 07150000 A00029 EQU A00023+00000032 2 BYTE(S) 07160000 HEXAD EQU A00023+00000034 2 BYTE(S) 07170000 A00030 EQU A00023+00000036 5 BYTE(S) 07180000 A00031 EQU A00023+00000041 1 BYTE(S) 07190000 DVCDSFPM EQU A00023+00000041 1 BIT(S) 07200000 A00032 EQU A00023+00000041 1 BIT(S) 07210000 DVCDSCEV EQU A00023+00000041 1 BIT(S) 07220000 REGUCBPT EQU 00000009 FULLWORD POINTER REGISTER 07230000 UCBCDS EQU 00000000 17 BYTE(S) ON WORD 07240000 A00033 EQU UCBCDS+00000000 16 BYTE(S) 07250000 OPTIONAL EQU UCBCDS+00000016 1 BYTE(S) 07260000 STRACK EQU UCBCDS+00000016 1 BIT(S) 07270000 A00034 EQU UCBCDS+00000016 7 BIT(S) 07280000 PARMLIST EQU @DATA+00000072 32 BYTE(S) ON WORD 07290000 ORG PARMLIST+00000000 07300000 TECBPTR EQU * FULLWORD POINTER 07310000 DC AL4(TECB) 07320000 CCW1 EQU PARMLIST+00000004 FULLWORD POINTER 07330000 ORG PARMLIST+00000008 07340000 A00035 EQU * FULLWORD INTEGER 07350000 DC FL4'0' 07360000 DPSCND EQU PARMLIST+00000008 2 BYTE(S) 07370000 DEVPTR EQU PARMLIST+00000010 2 BYTE(S) 07380000 CCWCNT EQU * 1 BYTE(S) 07390000 DC X'02' 07400000 FLGS EQU * 1 BYTE(S) 07410000 DC X'30' 07420000 FMKMD EQU * 1 BYTE(S) 07430000 DC X'40' 07440000 A00036 EQU PARMLIST+00000015 1 BYTE(S) 07450000 A00037 EQU PARMLIST+00000016 16 BYTE(S) 07460000 SEEKAD EQU PARMLIST+00000016 6 BYTE(S) 07470000 TECB EQU @DATA+00000104 20 BYTE(S) ON WORD 07480000 A00038 EQU TECB+00000000 4 BYTE(S) 07490000 CCP EQU TECB+00000004 1 BYTE(S) 07500000 CSW1 EQU TECB+00000005 7 BYTE(S) 07510000 A00039 EQU TECB+00000005 3 BYTE(S) 07520000 EXIOK EQU TECB+00000008 1 BYTE(S) 07530000 A00040 EQU TECB+00000009 3 BYTE(S) 07540000 SNS1 EQU TECB+00000012 6 BYTE(S) 07550000 SNSFLD EQU TECB+00000012 8 BIT(S) 07560000 A00041 EQU TECB+00000012 1 BIT(S) 07570000 SNS2 EQU TECB+00000012 1 BIT(S) 07580000 A00042 EQU TECB+00000012 6 BIT(S) 07590000 A00043 EQU TECB+00000013 2 BYTE(S) 07600000 A00044 EQU TECB+00000015 8 BIT(S) 07610000 A00045 EQU TECB+00000015 7 BIT(S) 07620000 CEBIT EQU TECB+00000015 1 BIT(S) 07630000 A00046 EQU TECB+00000016 2 BYTE(S) 07640000 A00047 EQU TECB+00000018 2 BYTE(S) 07650000 ORG @DATA+00000124 07660000 MSGPTR EQU * FULLWORD POINTER 07670000 DC VL4(IFDMSG02) 07680000 A00053 EQU 00000000 28 BYTE(S) ON WORD 07690000 MSG2 EQU A00053+00000000 FULLWORD POINTER 07700000 MSG3 EQU A00053+00000004 FULLWORD POINTER 07710000 MSG4 EQU A00053+00000008 FULLWORD POINTER 07720000 MSG5 EQU A00053+00000012 FULLWORD POINTER 07730000 MSG6 EQU A00053+00000016 FULLWORD POINTER 07740000 MSG7 EQU A00053+00000020 FULLWORD POINTER 07750000 MSG8 EQU A00053+00000024 FULLWORD POINTER 07760000 MSGDVAD1 EQU 00000021 8 BYTE(S) 07770000 MSGDVAD2 EQU 00000021 8 BYTE(S) 07780000 MSGDVAD3 EQU 00000034 8 BYTE(S) 07790000 MSGDVAD7 EQU 00000029 8 BYTE(S) 07800000 MSGDVAD8 EQU 00000016 8 BYTE(S) 07810000 MSGSNS EQU 00000037 12 BYTE(S) 07820000 MSGCSW EQU 00000018 14 BYTE(S) 07830000 SUB18 EQU * 6 BYTE(S) 07840000 DC X'000012060000' 07850000 SUB19 EQU * 6 BYTE(S) 07860000 DC X'000013060000' 07870000 MSGPARM EQU 00000000 8 BYTE(S) ON WORD 07880000 LENGTH EQU MSGPARM+00000000 1 BYTE(S) 07890000 BUFAD EQU MSGPARM+00000001 3 BYTE POINTER ON WORD+1 07900000 MSGECBAD EQU MSGPARM+00000004 FULLWORD INTEGER 07910000 DECB EQU * FULLWORD INTEGER 07920000 DC FL4'0' 07930000 MSGPARM1 EQU 00000000 8 BYTE(S) ON WORD 07940000 LENGTH1 EQU MSGPARM1+00000000 1 BYTE(S) 07950000 BUFAD1 EQU MSGPARM1+00000001 3 BYTE POINTER ON WORD+1 07960000 MSGECB1 EQU MSGPARM1+00000004 FULLWORD INTEGER 07970000 INBUF EQU @DATA+00000144 26 BYTE(S) 07980000 SNSIN EQU INBUF+00000000 12 BYTE(S) 07990000 CSWIN EQU INBUF+00000012 14 BYTE(S) 08000000 OUTBUFR EQU @DATA+00000170 13 BYTE(S) 08010000 SNSOUT EQU OUTBUFR+00000000 6 BYTE(S) 08020000 CSWOUT EQU OUTBUFR+00000006 7 BYTE(S) 08030000 ORG @DATA 08040000 DS 00000183C 08050000 @TEMPS DS 0F 08060000 @TEMP4 DC F'0' 08070000 LABEL0 CCW 7,SUB18,X'60',6 SEEK TO SUBCELL 18 08080000 CCW 4,SNS1,X'20',6 SENSE FOR CE BIT 08090000 LABEL1 CCW 7,SUB19,X'60',6 SEEK TO SUBCELL19 08100000 CCW 4,SNS1,X'20',6 SENSE FOR CE BIT 08110000 CNVRT DC B'00000000' CONTROL PROGRAM FLAGS 08120000 DC AL1(2) MACRO LEVEL 08130000 DC CL2'41' MACRO ID 08140000 DC A(OUTBUFR) 08150000 DC A(INBUF) 08160000 DC AL2(13+32768) COUNT AND TYPE INFORMATION 08170000 DEVPATCH DC 18XL2'0700' PATCH AREA 08180000 DSECTAA IFDCOM 08190000 A00000 EQU CHASCT+00000010 1 BYTE(S) 08200000 A00001 EQU A00000+00000000 1 BIT(S) 08210000 FPM EQU A00000+00000000 1 BIT(S) 08220000 A00002 EQU CHASCT+00000011 1 BYTE(S) 08230000 CDSFPM EQU A00002+00000000 1 BIT(S) 08240000 A00003 EQU A00002+00000000 1 BIT(S) 08250000 CDSCEVOL EQU A00002+00000000 1 BIT(S) 08260000 A00004 EQU A00002+00000000 5 BIT(S) 08270000 A00005 EQU CESWT+00000000 4 BYTE(S) ON WORD 08280000 A00006 EQU A00005+00000000 8 BIT(S) 08290000 A00007 EQU A00005+00000000 1 BIT(S) 08300000 PROTECT EQU A00005+00000000 1 BIT(S) 08310000 A00008 EQU A00005+00000000 6 BIT(S) 08320000 A00009 EQU A00005+00000001 8 BIT(S) 08330000 A00010 EQU A00005+00000001 1 BIT(S) 08340000 SEEK2321 EQU A00005+00000001 1 BIT(S) 08350000 T2321T EQU A00005+00000001 1 BIT(S) 08360000 A00011 EQU A00005+00000001 1 BIT(S) 08370000 FILMSK EQU A00005+00000001 1 BIT(S) 08380000 T2321 EQU A00005+00000001 1 BIT(S) 08390000 ONLINEOK EQU A00005+00000001 1 BIT(S) 08400000 A00012 EQU A00005+00000001 1 BIT(S) 08410000 A00013 EQU A00005+00000002 8 BIT(S) 08420000 NDCFO EQU A00005+00000002 1 BIT(S) 08430000 DPONDEV EQU A00005+00000002 1 BIT(S) 08440000 A00014 EQU A00005+00000002 1 BIT(S) 08450000 CHANTEST EQU A00005+00000002 1 BIT(S) 08460000 A00015 EQU A00005+00000002 1 BIT(S) 08470000 A00016 EQU A00005+00000002 1 BIT(S) 08480000 TAPEHDR EQU A00005+00000002 1 BIT(S) 08490000 DEVDPOK EQU A00005+00000002 1 BIT(S) 08500000 A00017 EQU A00005+00000003 8 BIT(S) 08510000 A00018 EQU A00005+00000003 1 BIT(S) 08520000 NURUN EQU A00005+00000003 1 BIT(S) 08530000 BYPDEV EQU A00005+00000003 1 BIT(S) 08540000 A00019 EQU A00005+00000003 1 BIT(S) 08550000 A00020 EQU A00005+00000003 1 BIT(S) 08560000 A00021 EQU A00005+00000003 1 BIT(S) 08570000 A00022 EQU A00005+00000003 1 BIT(S) 08580000 STDLAB EQU A00005+00000003 1 BIT(S) 08590000 A00048 EQU CESWT3+00000000 1 BYTE(S) 08600000 A00049 EQU A00048+00000000 3 BIT(S) 08610000 GRBCTL EQU A00048+00000000 1 BIT(S) 08620000 SUSDEL EQU A00048+00000000 1 BIT(S) 08630000 A00050 EQU A00048+00000000 1 BIT(S) 08640000 A00051 EQU OLTTAB+00000000 8 BYTE(S) ON WORD 08650000 OLTTAB1 EQU A00051+00000000 FULLWORD POINTER 08660000 OLTTAB2 EQU A00051+00000004 FULLWORD POINTER 08670000 A00052 EQU A00051+00000004 FULLWORD POINTER 08680000 BUFFER EQU INBUFR+00000000 1 BYTE(S) 08690000 BUFFER1 EQU INBUFR+00000000 3 BYTE(S) 08700000 @DATEND EQU * 08710000 @9F9 EQU DPCELL10 08720000 END 08730000 ./ ADD SSI=03013546,NAME=IFDOLT03,SOURCE=1 TITLE 'IFDOLT03 DATA PROTECT TAPE' 00010000 TITLE 'IFDOLT03 DATA PROTECT TAPE' 00020000 LCLA &T,&SPN 0002 00030000 .@001 ANOP 0002 00040000 IFDOLT03 CSECT , 0002 00050000 STM @E,@C,12(@D) 0002 00060000 BALR @B,0 0002 00070000 @PSTART DS 0H 0002 00080000 USING @PSTART+00000,@B 0002 00090000 ST @D,@SAV001+4 0002 00100000 LA @F,@SAV001 0002 00110000 ST @F,8(0,@D) 0002 00120000 LR @D,@F 0002 00130000 * GEN(USING CHASCT,2); /* COMMON AREA BASE REGISTER * 00140000 USING CHASCT,2 00150000 DS 0H 00160000 * /******************************************************************* 00170000 * /* * 00180000 * /* CCW STRING FOR READING TAPE LABEL * 00190000 * /* * 00200000 * /******************************************************************* 00210000 * GEN DATA; 00220000 * 00230000 * 00240000 * GEN DATA; 00250000 * GEN DATA; 00260000 * 00270000 * GENERATE DATA; 00280000 * 00290000 * 00300000 * /******************************************************************* 00310000 * /* * 00320000 * /* DECLARED REGISTERS * 00330000 * /* * 00340000 * /******************************************************************* 00350000 * DCL R0 REG(0) PTR; 00360000 * DCL R1 REG(1) PTR; 00370000 * DCL R2 REG(2) PTR; 00380000 * DCL R3 REG(3) PTR; 00390000 * DCL R4 REG(4) PTR; 00400000 * DCL R5 REG(5) PTR; 00410000 * DCL R6 REG(6) PTR; 00420000 * DCL R7 REG(7) PTR; 00430000 * DCL R8 REG(8) PTR; 00440000 * DCL R9 REG(9) PTR; 00450000 * DCL I REG(8); /* INDEX REGISTER S21052* 00460000 * DCL R10 REG(10) PTR; 00470000 * DCL R11 REG(11) PTR; 00480000 * DCL R12 REG(12) PTR; 00490000 * DCL R13 REG(13) PTR; 00500000 * DCL R14 REG(14) PTR; 00510000 * DCL R15 REG(15) PTR; 00520000 * RESTRICT(2,4,5,6,7,8); 00530000 * DCL CESWT3 CHAR(1) GENERATED; /* OLTEP SWITCHES M4506* 00540000 * DCL 1 * CHAR(1) BASED(ADDR(CESWT3)), /* OLTEP SWITCHES M4506* 00550000 * 2 * BIT(3), /* NA M4506* 00560000 * 2 GRBCTL BIT(1), /* GRAB IN CONTROL M4506* 00570000 * 2 SUSDEL BIT(1), /* SUSPENDED DELETION M4506* 00580000 * 3 * BIT(1); /* NA M4506* 00590000 * DCL OLTTAB GENERATED; /* LINK TABLE M4506* 00600000 * DCL 1 * BDY(WORD) BASED(ADDR(OLTTAB)), /* LINK TABLE M4506* 00610000 * 2 OLTTAB1 PTR, /* OLD EXIO M4506* 00620000 * 2 OLTTAB2 PTR, /* OLD WAITIO M4506* 00630000 * 3 * PTR; /* NA M4506* 00640000 * 00650000 * 00660000 * 00670000 * 00680000 * 00690000 * 00700000 * /******************************************************************* 00710000 * /* * 00720000 * /* SECTION CONTROL TABLE * 00730000 * /* * 00740000 * /******************************************************************* 00750000 * DCL CHASCT GENERATED; /* SECTION CONTROL TABLE * 00760000 * DCL 1 * CHAR(1) BASED(ADDR(CHASCT)+10), /* SCT STRUCTURE * 00770000 * 3 * BIT(1), /* NA * 00780000 * 3 FPM BIT(1); /* FILE PROTECT MODE BIT * 00790000 * 00800000 * 00810000 * /******************************************************************* 00820000 * /* * 00830000 * /* PARAMETER LIST STRUCTURE * 00840000 * /* * 00850000 * /******************************************************************* 00860000 * 00870000 * DCL 1 PARMLIST, /* PARAMETERS FOR EXIO * 00880000 * 3 TECBPTR PTR(31) INIT(ADDR(TECB)), /* TECB PTR * 00890000 * 3 CCW1 PTR(31), /* CCW POINTER * 00900000 * 3 * FIXED INIT(0), 00910000 * 5 DPSCND CHAR(2), /* SET TO FFFF IF SCND S20203* 00920000 * 5 DEVPTR CHAR(2), 00930000 * 3 CCWCNT CHAR(1), /* CCW COUNT * 00940000 * 3 FLGS CHAR(1) INIT('10'X), 00950000 * 3 FMKMD CHAR(1), /* FILEMASK / MODE SET * 00960000 * 3 * CHAR(1), /* NA * 00970000 * 3 * CHAR(16); /* NA * 00980000 * 00990000 * 01000000 * 01010000 * /******************************************************************* 01020000 * /* * 01030000 * /* COMMUNICATION SWITCH STRUCTURE * 01040000 * /* * 01050000 * /******************************************************************* 01060000 * 01070000 * DCL CESWT CHAR(5) GENERATED; /* COMMUNICATION SWITCHES * 01080000 * DCL 1 * BASED(ADDR(CESWT)), /* * 01090000 * 3 * BIT(8), /* CESWT * 01100000 * 5 * BIT(1), /* NA * 01110000 * 5 PROTECT BIT(1), /* DP FOR PRIMARY OR SEC DEVICE * 01120000 * 5 * BIT(6), /* NA * 01130000 * 3 * BIT(8), /* CESWT1 * 01140000 * 5 * BIT(1), /* NA * 01150000 * 5 SEEK2321 BIT(1), /* SEEK ONLY COMMANDS ON 2321 * 01160000 * 5 SECONLOK BIT(1), /* SEC DEV ONLINE OK * 01170000 * 5 * BIT(1), /* NA * 01180000 * 5 FILMSK BIT(1), /* ALLOWS FILE MASK CHANGES * 01190000 * 5 T2321 BIT(1), /* T2321 IS DEV BEING TESTED * 01200000 * 5 ONLINEOK BIT(1), /* DEV IS ONLINE PROCEED * 01210000 * 5 * BIT(1), /* NA * 01220000 * 3 * BIT(8), /* CESWT2 * 01230000 * 5 NDCFO BIT(1), /* PREV OCCUR OF DYN COMM INTERVAL* 01240000 * 5 DPONDEV BIT(1), /* DP HAS BEEN DONE ON THIS DEV * 01250000 * 5 * BIT(1), /* NA * 01260000 * 5 CHANTEST BIT(1), /* DATA PROT TO BE DONE ON CHAN * 01270000 * 5 * BIT(1), /* NA * 01280000 * 5 * BIT(1), /* NA * 01290000 * 5 TAPEHDR BIT(1), /* TAPE HEADER IS TO BE WRITTEN * 01300000 * 5 AMERLDV BIT(1), /* ASPEN DEVICE S21052* 01310000 * 3 * BIT(8), /* CESWT3 * 01320000 * 5 * BIT(1), /* NA * 01330000 * 5 BYPALDEV BIT(1), /* BYPASS ALL TESTS AND DEVICES * 01340000 * 5 BYPDEV BIT(1), /* BYPASS TESTS ON THIS DEVICE * 01350000 * 5 * BIT(1), /* NA * 01360000 * 5 * BIT(1), /* NA * 01370000 * 5 * BIT(1), /* NA * 01380000 * 5 * BIT(1), /* NA * 01390000 * 5 * BIT(1); /* NA * 01400000 * 01410000 * 01420000 * /******************************************************************** 01430000 * /* * 01440000 * /* DEVICE TABLE STRUCTURE * 01450000 * /* * 01460000 * /******************************************************************** 01470000 * 01480000 * DCL 1 * BASED(R7), /* S21050* 01490000 * 3 DEVADEB CHAR(8), /* DEV ADDR IN EBCDIC * 01500000 * 3 UCBAD POINTER(31), /* UCB ADDR (2BYTES) S21050* 01510000 * 3 DEVFLG1 CHAR(1), /* FLAG BYTE #1 S21050* 01520000 * 5 STATUS BIT(1), /* ON LINE VS. OFF-LINE S21050* 01530000 * 5 PRIMARY BIT(1), /* PRIMARY BIT S21050* 01540000 * 5 DPDONE BIT(1), /* D.P. COMPLETE S21050* 01550000 * 5 * BIT(3), /* FILL S21050* 01560000 * 5 FILEPROT BIT(1), /* F.P. MODE OPERATION S21050* 01570000 * 5 * BIT(1), /* FILL S21050* 01580000 * 3 DEVFLG2 CHAR(1), /* FLAG BYTE # 2 S21050* 01590000 * 5 * BIT(2), /* N/A S21050* 01600000 * 5 CEVOL BIT(1), /* CE VOL ON DEVICE S21050* 01610000 * 5 STDLABL BIT(1), /* STANDARD TAPE LABEL S21050* 01620000 * 5 * BIT(4), /* FILL S21050* 01630000 * 3 DEVFLG3 CHAR(1), /* FLAG BYTE # 3 S21050* 01640000 * 3 DEVFLG4 CHAR(1), /* FLAG BYTE # 3 S21050* 01650000 * 3 TAPELABL CHAR(16), /* TAPE LABEL SAVE AREA S21050* 01660000 * 5 VOL CHAR(10), /* VOL NAME S21050* 01670000 * 5 HDR CHAR (4), /* HDR NAME S21050* 01680000 * 5 MODESV CHAR(1), /* MODE SAVE AREA S21050* 01690000 * 5 * CHAR(1), /* FILL S21050* 01700000 * 3 ADRHEX CHAR (4), /* 4 BYTE HEX ADDRESS S21050* 01710000 * 5 * CHAR(2), /* FILL S21050* 01720000 * 5 HEXAD CHAR(2); /* 2 BYTE HEX ADDRESS S21050* 01730000 * DCL REGUCBPT REG(9) PTR; /* UCB PTR S21050* 01740000 * DCL 1 UCBCDS BASED(REGUCBPT), /* UCB DSECT S21050* 01750000 * 3 * CHAR(16), /* FILL S21050* 01760000 * 3 * CHAR(1), /* N/A S21052* 01770000 * 3 OPTIONAL CHAR(1), /* OPTIONS FIELD S21050* 01780000 * 5 STRACK BIT(1), /* 7 TRACK DEVICE S21050* 01790000 * 3 * CHAR(1), /* N/A S21052* 01800000 * 3 TYPE CHAR(1); /* DEVICE TYPE S21052* 01810000 * 01820000 * 01830000 * /******************************************************************* 01840000 * /* * 01850000 * /* TEST EVENT CONTROL BLOCK FIELD * 01860000 * /* * 01870000 * /******************************************************************* 01880000 * 01890000 * DCL 1 TECB, /* TEST EVENT CONTROL BLOCK * 01900000 * 2 * CHAR(5), /* N/A S21052* 01910000 * 3 * CHAR(4), /* NA * 01920000 * 3 CCP CHAR(1), /* CONDITION CODE FROM SIO INSTR * 01930000 * 2 OUTBUFR CHAR(31), /* BUFFER S21052* 01940000 * 3 CSW1 CHAR(7), /* CHANNEL STATUS * 01950000 * 5 * CHAR(3), /* NA * 01960000 * 5 EXIOK CHAR(1), /* EXIO STATUS * 01970000 * 7 * BIT(7), /* NA * 01980000 * 7 UNITEXCP BIT(1), /* UNIT EXCEPTION BIT * 01990000 * 5 * BIT(8), /* NA * 02000000 * 7 * BIT(1), /* NA * 02010000 * 7 INLENGTH BIT(1), /* INCORRECT LENGTH BIT * 02020000 * 7 * BIT(6), /* NA * 02030000 * 5 * CHAR(2), /* NA * 02040000 * 3 SNS1 CHAR(24), /* SENSE INFO S21052* 02050000 * 5 SNSFLD BIT(8), /* SENSE FIELD * 02060000 * 7 * BIT(1), /* NA * 02070000 * 7 SNS2 BIT(1), /* INTERVENTION REQUIRED BIT * 02080000 * 7 * BIT(6), /* NA * 02090000 * 5 * CHAR(2), 02100000 * 5 * BIT(8), 02110000 * 7 * BIT(5), 02120000 * 7 PEIND BIT(1), 02130000 * 7 * BIT(2), 02140000 * 5 * CHAR(2), 02150000 * 5 * CHAR(1), /* SENSE BYTE 6 S99223* 02160000 * 7 * BIT(4), /* N/A S99223* 02170000 * 7 BIT4 BIT(1), /* BIT 4 S99223* 02180000 * 7 * BIT(3), /* N/A S99223* 02190000 * 3 * CHAR(2); 02200000 * 02210000 * 02220000 * DCL 1 LABEL1 CHAR(80), 02230000 * 2 TAPEVOL CHAR(10), 02240000 * 3 VOLAB CHAR(4), 02250000 * 3 VOLSERNO CHAR(6), 02260000 * 2 * CHAR(70), 02270000 * 3 * CHAR(70); 02280000 * DCL 1 LABEL2 CHAR(80) BASED(ADDR(LABEL1)), 02290000 * 3 HDRLAB CHAR(4), 02300000 * 3 * CHAR(43), 02310000 * 3 * CHAR(7), 02320000 * 5 * CHAR(1), 02330000 * 5 DATE1 CHAR(5), 02340000 * 5 SECURE CHAR(1), 02350000 * 3 * CHAR(26); 02360000 * 02370000 * 02380000 * /******************************************************************* 02390000 * /* * 02400000 * /* MESSAGE STRUCTURES * 02410000 * /* * 02420000 * /******************************************************************* 02430000 * 02440000 * DCL IFDMSG03 EXT ENTRY; /* MESSAGE MODULE * 02450000 * DCL MSGPTR PTR INIT(ADDR(IFDMSG03)); /* POINTER TO MESSAGE MODULE * 02460000 * DCL 1 * BASED(R4), /* MESSAGE ADDRESS * 02470000 * 3 MSG1 PTR, /* POINTER TO MESSAGE * 02480000 * 3 MSG2 PTR, /* POINTER TO MESSAGE * 02490000 * 3 MSG3 PTR, /* POINTER TO MESSAGE * 02500000 * 3 MSG3A PTR, /* PTR TO MSG S21052* 02510000 * 3 MSG4 PTR, /* POINTER TO MESSAGE * 02520000 * 3 MSG5 PTR, /* POINTER TO MESSAGE * 02530000 * 3 MSG6 PTR, /* POINTER TO MESSAGE * 02540000 * 3 MSG7 PTR, /* POINTER TO MESSAGE * 02550000 * 3 MSG8 PTR, /* POINTER TO MESSAGE * 02560000 * 3 MSG9, /*POINTER TO MESSAGE * 02570000 * 3 MSGA; /*POINTER TO MESSAGE * 02580000 * DCL MSGDVAD CHAR(8) BASED(R1+12); /*DEV ADDR AREA IN MSG S21050* 02590000 * DCL MSGDVAD1 CHAR(8) BASED(R1+34); /*DEV ADDR AREA IN MSG S21050* 02600000 * DCL MSGDVAD2 CHAR(8) BASED(R1+36); /*DEV ADDR AREA IN MSG S21050* 02610000 * DCL MSGDVAD3 CHAR(8) BASED(R1+19); /*DEV ADDR AREA IN MSG S21050* 02620000 * DCL MSGDVAD4 CHAR(8) BASED(R1+19); /*DEV ADDR AREA IN MSG S21050* 02630000 * DCL MSGDVAD9 CHAR(8) BASED(R1+29); /*DEV ADDR AREA IN MSG S21050* 02640000 * DCL MSGDVADA CHAR(8) BASED(R1+16); /*DEV ADDR AREA IN MSG S21050* 02650000 * DCL MSGSNS CHAR(48) BASED(R1+16); /* SENSE DATA IN MSG S21052* 02660000 * DCL MSGCSW CHAR(14) BASED(R1+18); /* CSW DATA AREA S21050* 02670000 * DCL 1 MSGPARM BASED(R1), /* NA * 02680000 * 3 LENGTH CHAR(1), /* LENGTH OF RESPONSE * 02690000 * 3 BUFAD PTR(24), /* POINTER TO RESPONSE BUFFER * 02700000 * 3 MSGECBAD FIXED; /* ECB ADDRESS * 02710000 * DCL DECB FIXED INIT(0); /* EVENT CONTROL BLOCK * 02720000 * DCL INBUFR CHAR(72) GENERATED; 02730000 * DCL BUFFER CHAR(1) BASED(ADDR(INBUFR)); 02740000 * 02750000 * 02760000 * DCL SECDVPTR PTR(31) GENERATED; /* DEVICE TABLE POINTER * 02770000 * DCL 1 INBUF CHAR(62), /* INPUT BUFFER S21052* 02780000 * 3 CSWIN CHAR(14), /* CONVERTED CSW DATA S21052* 02790000 * 3 SNSIN CHAR(48); /* CONVERTED SNS DATA S21052* 02800000 * DCL AREA FIXED BDY(WORD) INIT(0); /* AREA FOR PACKED DEC DATE * 02810000 * DCL AREA1 CHAR(6) INIT('000000000000'X); /* AREA FOR UNPACKED DATE * 02820000 * DCL XAREA CHAR(5) BASED(ADDR(AREA1)+1); 02830000 * DCL RDLAB LABEL GENERATED; /* CCW LABEL * 02840000 * DCL RDLAB1 LABEL GENERATED; /* CCW LABEL * 02850000 * DCL TAB28 PTR(31) GENERATED; /* NEW MACRO ENTRY POINT * 02860000 * DCL CNVRT CHAR(14) GENERATED; /* CONVERT PARAMETER LIST * 02870000 * /******************************************************************* 02880000 * /* * 02890000 * /* ONLINE STATUS CHECK * 02900000 * /* * 02910000 * /******************************************************************* 02920000 * RESTRICT(REGUCBPT); /* RESTRICT UCB REGISTER S21050* 02930000 * REGUCBPT = UCBAD ; /* PICK UCB ADDR FROM S21050* 02940000 L @9,8(0,@7) 0067 02950000 * /* DEVTAB FOR WORK S21050* 02960000 * IF TYPE='03'X THEN /* IF ASPEN DRIVE,SET S21052* 02970000 CLI 19(@9),X'03' 0068 02980000 BC 07,@9FF 0068 02990000 * AMERLDV='1'B; /* FLAG FOR 24 SENSE S21052* 03000000 OI A00010+2,B'00000001' 0069 03010000 * DPTAPE00: 03020000 * R4=MSGPTR; /*PUT PTR TO MESSAGE MODULE * 03030000 @9FF EQU * 0070 03040000 DPTAPE00 L @4,MSGPTR 0070 03050000 * IF STATUS = '1'B THEN /* IF DEVICE IS ONLINE * 03060000 TM 12(@7),B'10000000' 0071 03070000 * GOTO DPTAPE01; /* GO PRINT MESSAGE * 03080000 BC 01,DPTAPE01 0072 03090000 * IF DPDONE='1'B THEN 03100000 TM 12(@7),B'00100000' 0073 03110000 * RETURN; 03120000 BC 03,@EL01 0074 03130000 * STDLABL='0'B; /* ZERO STANDARD LABEL BIT * 03140000 @9FE NI 13(@7),B'11101111' 0075 03150000 * /******************************************************************* 03160000 * /* * 03170000 * /* SET UP FOR EXIO * 03180000 * /* * 03190000 * /******************************************************************* 03200000 * CCW1=ADDR(RDLAB); /* ADDRESS OF CCW LIST * 03210000 LA @F,RDLAB 0076 03220000 ST @F,PARMLIST+4 0076 03230000 * CCWCNT='03'X; 03240000 MVI PARMLIST+12,X'03' 0077 03250000 * FILMSK='1'B; 03260000 OI A00010+1,B'00001000' 0078 03270000 * IF STRACK ='1'B THEN 03280000 TM 17(@9),B'10000000' 0079 03290000 BC 12,@9FD 0079 03300000 * FMKMD='AB'X; 03310000 MVI PARMLIST+14,X'AB' 0080 03320000 BC 15,@9FC 0081 03330000 * ELSE FMKMD='03'X; 03340000 @9FD MVI PARMLIST+14,X'03' 0081 03350000 * DEVPTR=HEXAD; /*PUT DEVICE ADDR IN PL * 03360000 @9FC MVC PARMLIST+10(2),34(@7) 0082 03370000 * PROTECT='1'B; 03380000 OI A00010,B'01000000' 0083 03390000 * IF PRIMARY='0'B THEN /* IF SCND DEV S20203* 03400000 TM 12(@7),B'01000000' 0084 03410000 BC 05,@9FB 0084 03420000 * DPSCND='FFFF'X; /* SET INDICATOR S20203* 03430000 MVC PARMLIST+8(2),@X5 0085 03440000 * GEN(BAL R5,IORTN); /* I/O ROUTINES M4506* 03450000 @9FB EQU * 0086 03460000 BAL R5,IORTN 03470000 DS 0H 03480000 * IF EXIOK='0D'X THEN /* M4506* 03490000 CLI TECB+8,X'0D' 0087 03500000 * GOTO DPTAPE03; /* M4506* 03510000 BC 08,DPTAPE03 0088 03520000 * IF EXIOKª='0C'X THEN /* M4506* 03530000 CLI TECB+8,X'0C' 0089 03540000 BC 08,@9FA 0089 03550000 * DO; /* S21052* 03560000 * IF STRACK='0'B THEN /* CHECK FOR 7-TRK S21052* 03570000 TM 17(@9),B'10000000' 0091 03580000 * GOTO DPTAPE02; /* 9-TRK BRANCH S21052* 03590000 BC 08,DPTAPE02 0092 03600000 * FMKMD='2B'X; /* SET 7-TRK 200 BPI S21052* 03610000 MVI PARMLIST+14,X'2B' 0093 03620000 * GEN(BAL R5,IORTN); /* EXECUTE I/O S21052* 03630000 BAL R5,IORTN 03640000 DS 0H 03650000 * IF EXIOK='0D'X THEN /* UNIT EXCEPTION S21052* 03660000 CLI TECB+8,X'0D' 0095 03670000 * GOTO DPTAPE03; /* NON-STD LABEL S21052* 03680000 BC 08,DPTAPE03 0096 03690000 * IF EXIOK ª='0C'X THEN /* NOT OKAY S21052* 03700000 CLI TECB+8,X'0C' 0097 03710000 BC 08,@9F9 0097 03720000 * DO; /* S21052* 03730000 * FMKMD='6B'X; /* SET 7-TRK 556 BPI S21052* 03740000 MVI PARMLIST+14,X'6B' 0099 03750000 * GEN(BAL R5,IORTN); /* EXECUTE I/O S21052* 03760000 BAL R5,IORTN 03770000 DS 0H 03780000 * IF EXIOK='0D'X THEN /* UNIT EXCEPTION S21052* 03790000 CLI TECB+8,X'0D' 0101 03800000 * GOTO DPTAPE03; /* NON-STD LABEL S21052* 03810000 BC 08,DPTAPE03 0102 03820000 * IF EXIOK ª='0C'X THEN /* NOT OKAY S21052* 03830000 CLI TECB+8,X'0C' 0103 03840000 * GOTO DPTAPE02; /* UNREADABLE LABEL S21052* 03850000 BC 07,DPTAPE02 0104 03860000 * END; /* S21052* 03870000 * END; /* S21052* 03880000 @9F9 EQU * 0106 03890000 * /******************************************************************* 03900000 * /* * 03910000 * /* CHECK FOR CORRECT LENGTH & VOL1 IN LABEL * 03920000 * /* * 03930000 * /******************************************************************* 03940000 * IF INLENGTH ='1'B ³ /* IF INCORRECT LENGTH IND OR * 03950000 * VOLAB ª= 'VOL1' THEN /* IF VOL1 IS NOT IN THE LABEL * 03960000 @9FA TM TECB+9,B'01000000' 0107 03970000 BC 01,@9F8 0107 03980000 CLC LABEL1(4),@C10 0107 03990000 BC 08,@9F7 0107 04000000 * GOTO DPTAPE03; /* PRINT MESSAGE TO OPERATOR * 04010000 BC 07,DPTAPE03 0108 04020000 * VOL=TAPEVOL; /*SAVE VOL SER # IN DEVTAB */ 04030000 @9F7 MVC 16(10,@7),LABEL1 0109 04040000 * IF STRACK='0'B THEN 04050000 TM 17(@9),B'10000000' 0110 04060000 BC 05,@9F6 0110 04070000 * FMKMD='C3'X; /* SET MODE * 04080000 MVI PARMLIST+14,X'C3' 0111 04090000 * IF PEINDª='1'B THEN /* IF NOT PHASE ENCODED, * 04100000 @9F6 TM TECB+15,B'00000100' 0112 04110000 BC 01,@9F5 0112 04120000 * DO; 04130000 * FMKMD='CB'X; /* 800 BPI * 04140000 MVI PARMLIST+14,X'CB' 0114 04150000 * IF BIT4='1'B THEN /* IF BIRCH, * 04160000 TM TECB+18,B'00001000' 0115 04170000 BC 12,@9F4 0115 04180000 * FMKMD='D3'X; /* SET MODE * 04190000 MVI PARMLIST+14,X'D3' 0116 04200000 * END; 04210000 @9F4 EQU * 0117 04220000 * /******************************************************************* 04230000 * /* * 04240000 * /* SET UP FOR EXIO * 04250000 * /* * 04260000 * /******************************************************************* 04270000 * CCW1=ADDR(RDLAB1); /* ADDRESS OF CCW LIST * 04280000 @9F5 LA @F,RDLAB1 0118 04290000 ST @F,PARMLIST+4 0118 04300000 * CCWCNT='01'X; /* PUT NUMBER OF CCW'S IN PL * 04310000 MVI PARMLIST+12,X'01' 0119 04320000 * GEN(BAL R5,IORTN); /* I/O ROUTINES M4506* 04330000 BAL R5,IORTN 04340000 DS 0H 04350000 * IF UNITEXCP='1'B THEN /* INDICATES TAPE MARK * 04360000 TM TECB+8,B'00000001' 0121 04370000 BC 12,@9F3 0121 04380000 * DO; 04390000 * HDR=' '; /*PUT BLANKS IN HDR AREA OF DEVTAB* 04400000 MVI 26(@7),C' ' 0123 04410000 MVC 27(3,@7),26(@7) 0123 04420000 * GOTO SETBITS; 04430000 BC 15,SETBITS 0124 04440000 * END; 04450000 * IF EXIOK='0E'X THEN /* WAS EXIO SUCESSFUL M4505* 04460000 @9F3 CLI TECB+8,X'0E' 0126 04470000 * GOTO DPTAPE02; /* YES, GO PRINT MSG M4505* 04480000 BC 08,DPTAPE02 0127 04490000 * IF INLENGTH = '1'B ³ /* IF INCORRECT LENGTH BIT IS ON * 04500000 * HDRLAB ª= 'HDR1' THEN /* OR HDR1 IS NOT ON TAPE * 04510000 TM TECB+9,B'01000000' 0128 04520000 BC 01,@9F2 0128 04530000 CLC LABEL2(4),@C17 0128 04540000 BC 08,@9F1 0128 04550000 * GOTO DPTAPE03; /* GO PRINT MESSAGE * 04560000 BC 07,DPTAPE03 0129 04570000 * IF SECURE = 'F1'X THEN /* IF THE SECURITY BIT IS ON * 04580000 @9F1 CLI LABEL2+53,X'F1' 0130 04590000 * GOTO DPTAPE06; /* GO PRINT MESSAGE * 04600000 BC 08,DPTAPE06 0131 04610000 * /******************************************************************* 04620000 * /* * 04630000 * /* HDR1, EXPIRATION DATE & DATA SECURITY CHECK * 04640000 * /* * 04650000 * /******************************************************************* 04660000 * GEN; 04670000 TIME DEC RETRIVE CURRENT DATE FROM CVT 04680000 DS 0H 04690000 * AREA = R1; /* PUT DATE TO BE UNPACKED IN AREA* 04700000 ST @1,AREA 0133 04710000 * GEN; 04720000 UNPK AREA1(6),AREA+1(3) UNPACK DATE 04730000 OI AREA1+5,X'F0' CHANGE LAST BYTE 04740000 DS 0H 04750000 * IF DATE1 > XAREA THEN /*IF THE EXPIRATION DATE EXCEEDS*/ 04760000 CLC LABEL2+48(5),XAREA 0135 04770000 BC 12,@9F0 0135 04780000 * DO; 04790000 * STDLABL='1'B; /*SET STANDARD LABEL BIT * 04800000 OI 13(@7),B'00010000' 0137 04810000 * GOTO DPTAPE08; /* THE CURRENT DATE GO PRINT MSG. * 04820000 BC 15,DPTAPE08 0138 04830000 * END; 04840000 * HDR=HDRLAB; /*SAVE HDR1 IN DEVTAB */ 04850000 @9F0 MVC 26(4,@7),LABEL2 0140 04860000 * SETBITS: 04870000 * STDLABL='1'B; /* SET STANDARD LABEL BIT * 04880000 SETBITS OI 13(@7),B'00010000' 0141 04890000 * FILMSK ='1'B; /* SET FILE MASK BIT * 04900000 OI A00010+1,B'00001000' 0142 04910000 * DPDONE='1'B; 04920000 OI 12(@7),B'00100000' 0143 04930000 * GOTO DPTAPE10; /* AND RETRN TO CALLING MODULE * 04940000 BC 15,DPTAPE10 0144 04950000 * /******************************************************************* 04960000 * /* * 04970000 * /* PRINT MESSAGE IFD109I * 04980000 * /* * 04990000 * /******************************************************************* 05000000 * DPTAPE01: 05010000 * R1=MSG1; /* POINTER TO MESSAGE * 05020000 DPTAPE01 L @1,0(0,@4) 0145 05030000 * MSGDVAD=DEVADEB; /* PUT DEVICE ADDRESS IN MSG1 * 05040000 MVC 12(8,@1),0(@7) 0146 05050000 * GEN(BAL R5,DPTAPE13); /* PRINT MESSAGE M4506* 05060000 BAL R5,DPTAPE13 05070000 DS 0H 05080000 * BYPDEV='1'B; /* SET BYPASS BIT * 05090000 OI A00010+3,B'00100000' 0148 05100000 * RETURN; 05110000 BC 15,@EL01 0149 05120000 * DPTAPE02: 05130000 * IF CCP='30'X THEN /* IF CONDITION CODE=3 M1310* 05140000 DPTAPE02 CLI TECB+4,X'30' 0150 05150000 * GOTO DPTAPE12; /*GO PRINT MESSAGE * 05160000 BC 08,DPTAPE12 0151 05170000 * IF SNS2='1'B THEN 05180000 TM TECB+12,B'01000000' 0152 05190000 * GOTO DPTAPE11; /*PRINT INTERVENTION REQUIRED MSG * 05200000 BC 01,DPTAPE11 0153 05210000 * /******************************************************************* 05220000 * /* * 05230000 * /* PRINT MESSAGE IFD118I * 05240000 * /* * 05250000 * /******************************************************************* 05260000 * R1=MSG2; /* POINTER TO MESSAGE * 05270000 L @1,4(0,@4) 0154 05280000 * MSGDVAD1=DEVADEB; /* PUT DEVICE ADDRESS IN MSG2 * 05290000 MVC 34(8,@1),0(@7) 0155 05300000 * GEN(BAL R5,DPTAPE13); /* PRINT MESSAGE M4506* 05310000 BAL R5,DPTAPE13 05320000 DS 0H 05330000 * GOTO DPTAPE04; /* GO PRINT SENSE/CSW DATA * 05340000 BC 15,DPTAPE04 0157 05350000 * /******************************************************************* 05360000 * /* PRINT MESSAGE IFD119I * 05370000 * /* * 05380000 * /* * 05390000 * /******************************************************************* 05400000 * DPTAPE03: 05410000 * R1=MSG4; /* POINTER TO MESSAGE * 05420000 DPTAPE03 L @1,16(0,@4) 0158 05430000 * MSGDVAD2=DEVADEB; /* PUT DEVICE ADDRESS IN MSG4 * 05440000 MVC 36(8,@1),0(@7) 0159 05450000 * GEN(BAL R5,DPTAPE13); /* PRINT MESSAGE M4506* 05460000 BAL R5,DPTAPE13 05470000 DS 0H 05480000 * GOTO DPTAPE05; /* GO PRINT OPTION MESSAGE * 05490000 BC 15,DPTAPE05 0161 05500000 * /******************************************************************* 05510000 * /* * 05520000 * /* CONVERT SENSE/CSW DATA * 05530000 * /* * 05540000 * /******************************************************************* 05550000 * DPTAPE04: 05560000 * GEN(BAL R14,NEWCONV); /* CONVERT CALL M4506* 05570000 DPTAPE04 BAL R14,NEWCONV 05580000 DS 0H 05590000 * SUSDEL='1'B; /* SUSPEND DELETION M4506* 05600000 OI A00000,B'00001000' 0163 05610000 * GEN(BAL R14,NEWCONV); /* CONVERT CALL M4506* 05620000 BAL R14,NEWCONV 05630000 DS 0H 05640000 * /******************************************************************* 05650000 * /* * 05660000 * /* PRINT MESSAGE IFD137I * 05670000 * /* * 05680000 * /******************************************************************* 05690000 * R1=MSG3; /* POINTER TO MESSAGE * 05700000 L @1,8(0,@4) 0165 05710000 * MSGCSW=CSWIN; /* PUT CSW DATA IN MSG3 * 05720000 MVC 18(14,@1),INBUF 0166 05730000 * GEN(BAL R5,DPTAPE13); /* PRINT MESSAGE M4506* 05740000 BAL R5,DPTAPE13 05750000 DS 0H 05760000 * RESTRICT (I); /* RESTRICT REGISTER S21052* 05770000 * I=12; /* SENSE BYTES NORMALLYS21052* 05780000 LA @8,12 0169 05790000 * IF TYPE='03'X THEN /* CHECK FOR ASPEN S21052* 05800000 CLI 19(@9),X'03' 0170 05810000 BC 07,@9EF 0170 05820000 * I=48; /* ASPEN SENSE BYTES S21052* 05830000 LA @8,48 0171 05840000 * R1=MSG3A; /* PTR TO MSG S21052* 05850000 @9EF L @1,12(0,@4) 0172 05860000 * MSGSNS(1)=' '; /* CLEAR 1ST LOCATION S21052* 05870000 MVI 16(@1),C' ' 0173 05880000 * MSGSNS(2:48)=MSGSNS(1:47); /* CLEAR REST OF BUF S21052* 05890000 MVC 17(47,@1),16(@1) 0174 05900000 * MSGSNS(1:I)=SNSIN(1:I); /* SENSE DATA TO MSG S21052* 05910000 LA @E,INBUF+14 0175 05920000 LR @3,@8 0175 05930000 BCTR @3,0 0175 05940000 LA @A,16(0,@1) 0175 05950000 EX @3,@MVC 0175 05960000 * GEN(BAL R5,DPTAPE13); /* PRINT MSG S21052* 05970000 BAL R5,DPTAPE13 05980000 DS 0H 05990000 * RELEASE(I); /* RELEASE REGISTER S21052* 06000000 * /******************************************************************* 06010000 * /* * 06020000 * /* PRINT MESSAGE IFD139D * 06030000 * /* * 06040000 * /******************************************************************* 06050000 * DPTAPE05: 06060000 * R1=MSG6; /* POINTER TO MESSAGE * 06070000 DPTAPE05 L @1,24(0,@4) 0178 06080000 * BUFAD=ADDR(BUFFER); /* SET UP BUFFER ADDRESS * 06090000 LA @F,BUFFER 0179 06100000 ST @F,@TEMP4 0179 06110000 MVC 1(3,@1),@TEMP4+1 0179 06120000 * MSGECBAD=ADDR(DECB); /* POINTER TO PWTO ECB * 06130000 LA @F,DECB 0180 06140000 ST @F,4(0,@1) 0180 06150000 * DECB=0; /* ZERO DECB * 06160000 SR @F,@F 0181 06170000 ST @F,DECB 0181 06180000 * LENGTH='01'X; /* LENGTH OF RESPONSE * 06190000 MVI 0(@1),X'01' 0182 06200000 * GEN(BAL R5,DPTAPE14); /* PRINT AND REPLY M4506* 06210000 BAL R5,DPTAPE14 06220000 DS 0H 06230000 * IF BUFFER='P' THEN DO; /* IF REPLY IS PROCEED * 06240000 CLI BUFFER,C'P' 0184 06250000 BC 07,@9EE 0184 06260000 * FILMSK='1'B; /* SET FILE MASK BIT AND * 06270000 OI A00010+1,B'00001000' 0186 06280000 * DPDONE='1'B; 06290000 OI 12(@7),B'00100000' 0187 06300000 * GOTO DPTAPE10; /* RETURN * 06310000 BC 15,DPTAPE10 0188 06320000 * END; 06330000 * IF BUFFER='B' THEN DO; /* IF REPLY IS BYPASS * 06340000 @9EE CLI BUFFER,C'B' 0190 06350000 BC 07,@9ED 0190 06360000 * IF PRIMARY ='1'B THEN 06370000 TM 12(@7),B'01000000' 0192 06380000 BC 12,@9EC 0192 06390000 * BYPDEV='1'B; /* TURN ON BYPASS BIT * 06400000 OI A00010+3,B'00100000' 0193 06410000 * GOTO DPTAPE10; /* RETURN * 06420000 BC 15,DPTAPE10 0194 06430000 * END; 06440000 * IF BUFFER='R' THEN /* IF REPLY IS RETRY * 06450000 @9ED CLI BUFFER,C'R' 0196 06460000 * GOTO DPTAPE00; /* GOTO TO BEGINNING OF MODULE * 06470000 BC 08,DPTAPE00 0197 06480000 * ELSE GOTO DPTAPE05; /* TRY AGAIN REPLY NOT RECOGNIZED * 06490000 BC 15,DPTAPE05 0198 06500000 * /******************************************************************* 06510000 * /* * 06520000 * /* PRINT MESSAGE IFD122I * 06530000 * /* * 06540000 * /******************************************************************* 06550000 * DPTAPE06: 06560000 * R1=MSG5; /* POINTER TO MESSAGE * 06570000 DPTAPE06 L @1,20(0,@4) 0199 06580000 * MSGDVAD3=DEVADEB; /* PUT DEVICE ADDRESS IN MSG5 * 06590000 MVC 19(8,@1),0(@7) 0200 06600000 * GEN(BAL R5,DPTAPE13); /* PRINT MESSAGE M4506* 06610000 BAL R5,DPTAPE13 06620000 DS 0H 06630000 * /******************************************************************* 06640000 * /* * 06650000 * /* PRINT MESSAGE IFD139D * 06660000 * /* * 06670000 * /******************************************************************* 06680000 * DPTAPE07: 06690000 * R1=MSG8; /* POINTER TO MESSAGE * 06700000 DPTAPE07 L @1,32(0,@4) 0202 06710000 * BUFAD=ADDR(BUFFER); /* SET UP BUFFER ADDRESS * 06720000 LA @F,BUFFER 0203 06730000 ST @F,@TEMP4 0203 06740000 MVC 1(3,@1),@TEMP4+1 0203 06750000 * MSGECBAD=ADDR(DECB); /* POINTER TO PWTOR ECB * 06760000 LA @F,DECB 0204 06770000 ST @F,4(0,@1) 0204 06780000 * LENGTH='01'X; /* LENGTH OF RESPONSE * 06790000 MVI 0(@1),X'01' 0205 06800000 * DECB=0; /* ZERO DECB * 06810000 SR @F,@F 0206 06820000 ST @F,DECB 0206 06830000 * GEN(BAL R5,DPTAPE14); /* PRINT AND REPLY M4506* 06840000 BAL R5,DPTAPE14 06850000 DS 0H 06860000 * IF BUFFER= 'B' THEN DO; /* IF REPLY IS BYPASS * 06870000 CLI BUFFER,C'B' 0208 06880000 BC 07,@9EB 0208 06890000 * IF PRIMARY ='1'B THEN 06900000 TM 12(@7),B'01000000' 0210 06910000 BC 12,@9EA 0210 06920000 * BYPDEV='1'B; /* SET BYPASS BIT * 06930000 OI A00010+3,B'00100000' 0211 06940000 * GOTO DPTAPE10; /* RETURN * 06950000 BC 15,DPTAPE10 0212 06960000 * END; 06970000 * IF BUFFER= 'R' THEN /* IF REPLY IS RETRY * 06980000 @9EB CLI BUFFER,C'R' 0214 06990000 * GOTO DPTAPE00; /* GOTO BEGINNING OF MODULE * 07000000 BC 08,DPTAPE00 0215 07010000 * ELSE GOTO DPTAPE07; /* TRY AGAIN REPY NOT RECOGNIZED * 07020000 BC 15,DPTAPE07 0216 07030000 * /******************************************************************* 07040000 * /* * 07050000 * /* PRINT MESSAGE IFD123I * 07060000 * /* * 07070000 * /******************************************************************* 07080000 * DPTAPE08: 07090000 * R1=MSG7; /* POINTER TO MESSAGE * 07100000 DPTAPE08 L @1,28(0,@4) 0217 07110000 * MSGDVAD4=DEVADEB; /* PUT DEVICE ADDRESS IN MSG7 * 07120000 MVC 19(8,@1),0(@7) 0218 07130000 * GEN(BAL R5,DPTAPE13); /* PRINT MESSAGE M4506* 07140000 BAL R5,DPTAPE13 07150000 DS 0H 07160000 * GOTO DPTAPE05; /* GO PRINT OPTION MESSAGE * 07170000 BC 15,DPTAPE05 0220 07180000 * 07190000 * /******************************************************************* 07200000 * /* * 07210000 * /* PRINT IFD130I MESSAGE * 07220000 * /* * 07230000 * /******************************************************************* 07240000 * DPTAPE11: 07250000 * R1=MSG9; /* PUT PTR TO MSG IN R1 * 07260000 DPTAPE11 L @1,36(0,@4) 0221 07270000 * MSGDVAD9=DEVADEB; /*PUT DEV ADDR IN MSG * 07280000 MVC 29(8,@1),0(@7) 0222 07290000 * GEN(BAL R5,DPTAPE13); /* PRINT MESSAGE M4506* 07300000 BAL R5,DPTAPE13 07310000 DS 0H 07320000 * GOTO DPTAPE04; /*GO PRINT SENSE-CSW INFO * 07330000 BC 15,DPTAPE04 0224 07340000 * /******************************************************************* 07350000 * /* * 07360000 * /* PRINT MESSAGE IFD138I * 07370000 * /* * 07380000 * /******************************************************************* 07390000 * DPTAPE12: 07400000 * R1=MSGA; /* POINTER TO MESSAGE * 07410000 DPTAPE12 L @1,40(0,@4) 0225 07420000 * MSGDVADA=DEVADEB; /*PUT DEV ADDR IN MSG * 07430000 MVC 16(8,@1),0(@7) 0226 07440000 * GEN(BAL R5,DPTAPE13); /* PRINT MESSAGE M4506* 07450000 BAL R5,DPTAPE13 07460000 DS 0H 07470000 * GOTO DPTAPE05; /*GO PRINT MSG IFD139D * 07480000 BC 15,DPTAPE05 0228 07490000 * DPTAPE13: /* M4506* 07500000 * GEN(PWTO REG=(1)); /* PRINT MESSAGE M4506* 07510000 DPTAPE13 PWTO REG=(1) 07520000 DS 0H 07530000 * GOTO R5; /* RESUME PROGRAM M4506* 07540000 BCR 15,@5 0230 07550000 * DPTAPE14: /* M4506* 07560000 * GEN(PWTOR REG=(1)); /* PRINT AND REPLY M4506* 07570000 DPTAPE14 PWTOR REG=(1) 07580000 DS 0H 07590000 * GOTO R5; /* RESUME PROGRAM M4506* 07600000 BCR 15,@5 0232 07610000 * DPTAPE10: 07620000 * MODESV=FMKMD; 07630000 DPTAPE10 MVC 30(1,@7),PARMLIST+14 0233 07640000 * PROTECT='0'B; 07650000 NI A00010,B'10111111' 0234 07660000 * AMERLDV='0'B; /* RESET FLAG S21052* 07670000 NI A00010+2,B'11111110' 0235 07680000 * RETURN; /* RETURN TO CALLING MODULE * 07690000 BC 15,@EL01 0236 07700000 * IORTN: 07710000 * GEN(BAL R6,OLDEXIO); /* OLD EXIO M4506* 07720000 IORTN BAL R6,OLDEXIO 07730000 DS 0H 07740000 * SUSDEL='1'B; /* SUSPEND DELETION M4506* 07750000 OI A00000,B'00001000' 0238 07760000 * GEN(BAL R6,OLDEXIO); /* OLD EXIO M4506* 07770000 BAL R6,OLDEXIO 07780000 DS 0H 07790000 * GEN(BAL R6,OLDWAIT); /* OLD WAITIO M4506* 07800000 BAL R6,OLDWAIT 07810000 DS 0H 07820000 * SUSDEL='1'B; /* SUSPEND DELETION M4506* 07830000 OI A00000,B'00001000' 0241 07840000 * GEN(BAL R6,OLDWAIT); /* OLD WAITIO M4506* 07850000 BAL R6,OLDWAIT 07860000 DS 0H 07870000 * GOTO R5; /* RETURN FROM ROUTINE M4506* 07880000 BCR 15,@5 0243 07890000 * OLDEXIO: 07900000 * R15=OLTTAB1; /* OLD EXIO CALL M4506* 07910000 OLDEXIO L @F,A00003 0244 07920000 * R1=ADDR(PARMLIST); /* EXIO PARAMETER M4506* 07930000 LA @1,PARMLIST 0245 07940000 * GEN(BALR R14,R15); /* GO TO OLD EXIO M4506* 07950000 BALR R14,R15 07960000 DS 0H 07970000 * GOTO R6; /* RETURN TO ROUTINE M4506* 07980000 BCR 15,@6 0247 07990000 * OLDWAIT: 08000000 * R15=OLTTAB2; /* OLD WAITIO CALL M4506* 08010000 OLDWAIT L @F,A00003+4 0248 08020000 * R1=ADDR(TECB); /* WAITIO PARAMETER M4506* 08030000 LA @1,TECB 0249 08040000 * GEN(BALR R14,R15); /* GO TO OLD WAITIO M4506* 08050000 BALR R14,R15 08060000 DS 0H 08070000 * GOTO R6; /* RETURN TO ROUTINE M4506* 08080000 BCR 15,@6 0251 08090000 * NEWCONV: 08100000 * R1=ADDR(CNVRT); /* CONVERT PARAMETER M4506* 08110000 NEWCONV LA @1,CNVRT 0252 08120000 * R15=TAB28; /* TRANSIENT MANAGER M4506* 08130000 L @F,TAB28 0253 08140000 * GOTO R15; /* CALL CONVERT M4506* 08150000 BCR 15,@F 0254 08160000 * END; 08170000 @EL01 L @D,4(0,@D) 0255 08180000 LM @E,@C,12(@D) 0255 08190000 BCR 15,@E 0255 08200000 @DATA1 EQU * 08210000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 08220000 @1 EQU 01 08230000 @2 EQU 02 08240000 @3 EQU 03 08250000 @4 EQU 04 08260000 @5 EQU 05 08270000 @6 EQU 06 08280000 @7 EQU 07 08290000 @8 EQU 08 08300000 @9 EQU 09 08310000 @A EQU 10 08320000 @B EQU 11 08330000 @C EQU 12 08340000 @D EQU 13 08350000 @E EQU 14 08360000 @F EQU 15 08370000 @MVC MVC 0(1,@A),0(@E) 08380000 DS 0F 08390000 @C10 DC C'VOL1' 08400000 @C17 DC C'HDR1' 08410000 @X5 DC X'FFFF' 08420000 DS 0D 08430000 @DATA EQU * 08440000 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 08450000 X EQU 00000000 FULLWORD INTEGER 08460000 R0 EQU 00000000 FULLWORD POINTER REGISTER 08470000 R1 EQU 00000001 FULLWORD POINTER REGISTER 08480000 R2 EQU 00000002 FULLWORD POINTER REGISTER 08490000 R3 EQU 00000003 FULLWORD POINTER REGISTER 08500000 R4 EQU 00000004 FULLWORD POINTER REGISTER 08510000 R5 EQU 00000005 FULLWORD POINTER REGISTER 08520000 R6 EQU 00000006 FULLWORD POINTER REGISTER 08530000 R7 EQU 00000007 FULLWORD POINTER REGISTER 08540000 R8 EQU 00000008 FULLWORD POINTER REGISTER 08550000 R9 EQU 00000009 FULLWORD POINTER REGISTER 08560000 I EQU 00000008 FULLWORD INTEGER REGISTER 08570000 R10 EQU 00000010 FULLWORD POINTER REGISTER 08580000 R11 EQU 00000011 FULLWORD POINTER REGISTER 08590000 R12 EQU 00000012 FULLWORD POINTER REGISTER 08600000 R13 EQU 00000013 FULLWORD POINTER REGISTER 08610000 R14 EQU 00000014 FULLWORD POINTER REGISTER 08620000 R15 EQU 00000015 FULLWORD POINTER REGISTER 08630000 PARMLIST EQU @DATA+00000072 32 BYTE(S) ON WORD 08640000 ORG PARMLIST+00000000 08650000 TECBPTR EQU * FULLWORD POINTER 08660000 DC AL4(TECB) 08670000 CCW1 EQU PARMLIST+00000004 FULLWORD POINTER 08680000 ORG PARMLIST+00000008 08690000 A00007 EQU * FULLWORD INTEGER 08700000 DC FL4'0' 08710000 DPSCND EQU PARMLIST+00000008 2 BYTE(S) 08720000 DEVPTR EQU PARMLIST+00000010 2 BYTE(S) 08730000 CCWCNT EQU PARMLIST+00000012 1 BYTE(S) 08740000 ORG PARMLIST+00000013 08750000 FLGS EQU * 1 BYTE(S) 08760000 DC X'10' 08770000 FMKMD EQU PARMLIST+00000014 1 BYTE(S) 08780000 A00008 EQU PARMLIST+00000015 1 BYTE(S) 08790000 A00009 EQU PARMLIST+00000016 16 BYTE(S) 08800000 A00029 EQU 00000000 36 BYTE(S) ON WORD 08810000 DEVADEB EQU A00029+00000000 8 BYTE(S) 08820000 UCBAD EQU A00029+00000008 FULLWORD POINTER 08830000 DEVFLG1 EQU A00029+00000012 1 BYTE(S) 08840000 STATUS EQU A00029+00000012 1 BIT(S) 08850000 PRIMARY EQU A00029+00000012 1 BIT(S) 08860000 DPDONE EQU A00029+00000012 1 BIT(S) 08870000 A00030 EQU A00029+00000012 3 BIT(S) 08880000 FILEPROT EQU A00029+00000012 1 BIT(S) 08890000 A00031 EQU A00029+00000012 1 BIT(S) 08900000 DEVFLG2 EQU A00029+00000013 1 BYTE(S) 08910000 A00032 EQU A00029+00000013 2 BIT(S) 08920000 CEVOL EQU A00029+00000013 1 BIT(S) 08930000 STDLABL EQU A00029+00000013 1 BIT(S) 08940000 A00033 EQU A00029+00000013 4 BIT(S) 08950000 DEVFLG3 EQU A00029+00000014 1 BYTE(S) 08960000 DEVFLG4 EQU A00029+00000015 1 BYTE(S) 08970000 TAPELABL EQU A00029+00000016 16 BYTE(S) 08980000 VOL EQU A00029+00000016 10 BYTE(S) 08990000 HDR EQU A00029+00000026 4 BYTE(S) 09000000 MODESV EQU A00029+00000030 1 BYTE(S) 09010000 A00034 EQU A00029+00000031 1 BYTE(S) 09020000 ADRHEX EQU A00029+00000032 4 BYTE(S) 09030000 A00035 EQU A00029+00000032 2 BYTE(S) 09040000 HEXAD EQU A00029+00000034 2 BYTE(S) 09050000 REGUCBPT EQU 00000009 FULLWORD POINTER REGISTER 09060000 UCBCDS EQU 00000000 20 BYTE(S) ON WORD 09070000 A00036 EQU UCBCDS+00000000 16 BYTE(S) 09080000 A00037 EQU UCBCDS+00000016 1 BYTE(S) 09090000 OPTIONAL EQU UCBCDS+00000017 1 BYTE(S) 09100000 STRACK EQU UCBCDS+00000017 1 BIT(S) 09110000 A00038 EQU UCBCDS+00000018 1 BYTE(S) 09120000 TYPE EQU UCBCDS+00000019 1 BYTE(S) 09130000 TECB EQU @DATA+00000104 38 BYTE(S) ON WORD 09140000 A00039 EQU TECB+00000000 5 BYTE(S) 09150000 A00040 EQU TECB+00000000 4 BYTE(S) 09160000 CCP EQU TECB+00000004 1 BYTE(S) 09170000 OUTBUFR EQU TECB+00000005 31 BYTE(S) 09180000 CSW1 EQU TECB+00000005 7 BYTE(S) 09190000 A00041 EQU TECB+00000005 3 BYTE(S) 09200000 EXIOK EQU TECB+00000008 1 BYTE(S) 09210000 A00042 EQU TECB+00000008 7 BIT(S) 09220000 UNITEXCP EQU TECB+00000008 1 BIT(S) 09230000 A00043 EQU TECB+00000009 8 BIT(S) 09240000 A00044 EQU TECB+00000009 1 BIT(S) 09250000 INLENGTH EQU TECB+00000009 1 BIT(S) 09260000 A00045 EQU TECB+00000009 6 BIT(S) 09270000 A00046 EQU TECB+00000010 2 BYTE(S) 09280000 SNS1 EQU TECB+00000012 24 BYTE(S) 09290000 SNSFLD EQU TECB+00000012 8 BIT(S) 09300000 A00047 EQU TECB+00000012 1 BIT(S) 09310000 SNS2 EQU TECB+00000012 1 BIT(S) 09320000 A00048 EQU TECB+00000012 6 BIT(S) 09330000 A00049 EQU TECB+00000013 2 BYTE(S) 09340000 A00050 EQU TECB+00000015 8 BIT(S) 09350000 A00051 EQU TECB+00000015 5 BIT(S) 09360000 PEIND EQU TECB+00000015 1 BIT(S) 09370000 A00052 EQU TECB+00000015 2 BIT(S) 09380000 A00053 EQU TECB+00000016 2 BYTE(S) 09390000 A00054 EQU TECB+00000018 1 BYTE(S) 09400000 A00055 EQU TECB+00000018 4 BIT(S) 09410000 BIT4 EQU TECB+00000018 1 BIT(S) 09420000 A00056 EQU TECB+00000018 3 BIT(S) 09430000 A00057 EQU TECB+00000036 2 BYTE(S) 09440000 LABEL1 EQU @DATA+00000142 80 BYTE(S) 09450000 TAPEVOL EQU LABEL1+00000000 10 BYTE(S) 09460000 VOLAB EQU LABEL1+00000000 4 BYTE(S) 09470000 VOLSERNO EQU LABEL1+00000004 6 BYTE(S) 09480000 A00058 EQU LABEL1+00000010 70 BYTE(S) 09490000 A00059 EQU LABEL1+00000010 70 BYTE(S) 09500000 LABEL2 EQU @DATA+00000142 80 BYTE(S) 09510000 HDRLAB EQU LABEL2+00000000 4 BYTE(S) 09520000 A00060 EQU LABEL2+00000004 43 BYTE(S) 09530000 A00061 EQU LABEL2+00000047 7 BYTE(S) 09540000 A00062 EQU LABEL2+00000047 1 BYTE(S) 09550000 DATE1 EQU LABEL2+00000048 5 BYTE(S) 09560000 SECURE EQU LABEL2+00000053 1 BYTE(S) 09570000 A00063 EQU LABEL2+00000054 26 BYTE(S) 09580000 ORG @DATA+00000224 09590000 MSGPTR EQU * FULLWORD POINTER 09600000 DC VL4(IFDMSG03) 09610000 A00064 EQU 00000000 44 BYTE(S) ON WORD 09620000 MSG1 EQU A00064+00000000 FULLWORD POINTER 09630000 MSG2 EQU A00064+00000004 FULLWORD POINTER 09640000 MSG3 EQU A00064+00000008 FULLWORD POINTER 09650000 MSG3A EQU A00064+00000012 FULLWORD POINTER 09660000 MSG4 EQU A00064+00000016 FULLWORD POINTER 09670000 MSG5 EQU A00064+00000020 FULLWORD POINTER 09680000 MSG6 EQU A00064+00000024 FULLWORD POINTER 09690000 MSG7 EQU A00064+00000028 FULLWORD POINTER 09700000 MSG8 EQU A00064+00000032 FULLWORD POINTER 09710000 MSG9 EQU A00064+00000036 FULLWORD INTEGER 09720000 MSGA EQU A00064+00000040 FULLWORD INTEGER 09730000 MSGDVAD EQU 00000012 8 BYTE(S) 09740000 MSGDVAD1 EQU 00000034 8 BYTE(S) 09750000 MSGDVAD2 EQU 00000036 8 BYTE(S) 09760000 MSGDVAD3 EQU 00000019 8 BYTE(S) 09770000 MSGDVAD4 EQU 00000019 8 BYTE(S) 09780000 MSGDVAD9 EQU 00000029 8 BYTE(S) 09790000 MSGDVADA EQU 00000016 8 BYTE(S) 09800000 MSGSNS EQU 00000016 48 BYTE(S) 09810000 MSGCSW EQU 00000018 14 BYTE(S) 09820000 MSGPARM EQU 00000000 8 BYTE(S) ON WORD 09830000 LENGTH EQU MSGPARM+00000000 1 BYTE(S) 09840000 BUFAD EQU MSGPARM+00000001 3 BYTE POINTER ON WORD+1 09850000 MSGECBAD EQU MSGPARM+00000004 FULLWORD INTEGER 09860000 DECB EQU * FULLWORD INTEGER 09870000 DC FL4'0' 09880000 INBUF EQU @DATA+00000232 62 BYTE(S) 09890000 CSWIN EQU INBUF+00000000 14 BYTE(S) 09900000 SNSIN EQU INBUF+00000014 48 BYTE(S) 09910000 ORG @DATA+00000296 09920000 AREA EQU * FULLWORD INTEGER 09930000 DC FL4'0' 09940000 AREA1 EQU * 6 BYTE(S) 09950000 DC X'000000000000' 09960000 XAREA EQU @DATA+00000301 5 BYTE(S) 09970000 ORG @DATA 09980000 DS 00000306C 09990000 @TEMPS DS 0F 10000000 @TEMP4 DC F'0' 10010000 RDLAB CCW 7,*,X'60',1 REWIND 10020000 CCW 4,SNS1,X'60',6 SENSE 10030000 CCW 2,LABEL1,X'00',80 READ VOL1 RECORD 10040000 RDLAB1 CCW 2,LABEL1,X'00',80 READ HDR1 RECORD 10050000 CNVRT DC B'00000000' CONTROL PROGRAM FLAGS 10060000 DC AL1(2) MACRO LEVEL 10070000 DC CL2'41' MACRO ID 10080000 DC A(OUTBUFR) 10090000 DC A(INBUF) 10100000 DC AL2(31+32768) COUNT AND TYPE S21052 10110000 DEVPATCH DC 18XL2'0700' PATCH AREA 10120000 DSECTAA IFDCOM 10130000 A00000 EQU CESWT3+00000000 1 BYTE(S) 10140000 A00001 EQU A00000+00000000 3 BIT(S) 10150000 GRBCTL EQU A00000+00000000 1 BIT(S) 10160000 SUSDEL EQU A00000+00000000 1 BIT(S) 10170000 A00002 EQU A00000+00000000 1 BIT(S) 10180000 A00003 EQU OLTTAB+00000000 8 BYTE(S) ON WORD 10190000 OLTTAB1 EQU A00003+00000000 FULLWORD POINTER 10200000 OLTTAB2 EQU A00003+00000004 FULLWORD POINTER 10210000 A00004 EQU A00003+00000004 FULLWORD POINTER 10220000 A00005 EQU CHASCT+00000010 1 BYTE(S) 10230000 A00006 EQU A00005+00000000 1 BIT(S) 10240000 FPM EQU A00005+00000000 1 BIT(S) 10250000 A00010 EQU CESWT+00000000 4 BYTE(S) ON WORD 10260000 A00011 EQU A00010+00000000 8 BIT(S) 10270000 A00012 EQU A00010+00000000 1 BIT(S) 10280000 PROTECT EQU A00010+00000000 1 BIT(S) 10290000 A00013 EQU A00010+00000000 6 BIT(S) 10300000 A00014 EQU A00010+00000001 8 BIT(S) 10310000 A00015 EQU A00010+00000001 1 BIT(S) 10320000 SEEK2321 EQU A00010+00000001 1 BIT(S) 10330000 SECONLOK EQU A00010+00000001 1 BIT(S) 10340000 A00016 EQU A00010+00000001 1 BIT(S) 10350000 FILMSK EQU A00010+00000001 1 BIT(S) 10360000 T2321 EQU A00010+00000001 1 BIT(S) 10370000 ONLINEOK EQU A00010+00000001 1 BIT(S) 10380000 A00017 EQU A00010+00000001 1 BIT(S) 10390000 A00018 EQU A00010+00000002 8 BIT(S) 10400000 NDCFO EQU A00010+00000002 1 BIT(S) 10410000 DPONDEV EQU A00010+00000002 1 BIT(S) 10420000 A00019 EQU A00010+00000002 1 BIT(S) 10430000 CHANTEST EQU A00010+00000002 1 BIT(S) 10440000 A00020 EQU A00010+00000002 1 BIT(S) 10450000 A00021 EQU A00010+00000002 1 BIT(S) 10460000 TAPEHDR EQU A00010+00000002 1 BIT(S) 10470000 AMERLDV EQU A00010+00000002 1 BIT(S) 10480000 A00022 EQU A00010+00000003 8 BIT(S) 10490000 A00023 EQU A00010+00000003 1 BIT(S) 10500000 BYPALDEV EQU A00010+00000003 1 BIT(S) 10510000 BYPDEV EQU A00010+00000003 1 BIT(S) 10520000 A00024 EQU A00010+00000003 1 BIT(S) 10530000 A00025 EQU A00010+00000003 1 BIT(S) 10540000 A00026 EQU A00010+00000003 1 BIT(S) 10550000 A00027 EQU A00010+00000003 1 BIT(S) 10560000 A00028 EQU A00010+00000003 1 BIT(S) 10570000 BUFFER EQU INBUFR+00000000 1 BYTE(S) 10580000 @DATEND EQU * 10590000 @9F8 EQU DPTAPE03 10600000 @9F2 EQU DPTAPE03 10610000 @9EC EQU DPTAPE10 10620000 @9EA EQU DPTAPE10 10630000 END 10640000 ./ ADD SSI=01013541,NAME=IFDOLT04,SOURCE=1 TITLE 'IFDOLT04 - DRUM DATA PROTECTION' 00010000 * /* DRUM DATA PROTECTION MODULE * 00020000 * /************************************************************ 00030000 * /* * 00040000 * /* TITLE * 00050000 * /* IFDOLT04 - DRUM DATA PROTECTION * 00060000 * /* * 00070000 * /* STATUS * 00080000 * /* CHANGE LEVEL 000 * 00090000 * /* * 00100000 * /* FUNCTION * 00110000 * /* THIS MODULE PERFORMS DATA PROTECTION ON DRUM DEVICES. * 00120000 * /* IT IS ALSO ENTERED IF AN UNSUPPORTED DEVICE WAS * 00130000 * /* SPECIFIED IN THE DEVICE FIELD AT ENTER DEV/TEST/OPT/ * 00140000 * /* TIME OR IF A CE VOLUME WAS FOUND ON A SHARED DISK. * 00150000 * /* * 00160000 * /* ENTRY POINTS * 00170000 * /* FROM GENERAL DATA PROTECTION(IFDOLT52) AT IFDOLT04 * 00180000 * /* * 00190000 * /* INPUT * 00200000 * /* REGISTER 2 POINTS TO THE OLTEP COMMON AREA. REGISTER 7* 00210000 * /* POINTS TO THE DEVTAB ENTRY FOR THE DEVICE BEING TESTED* 00220000 * /* IF DATA PROTECTION COULD NOT BE PERFORMED BECAUSE OF * 00230000 * /* AN UNSUPPORTED DEVICE HAVING BEEN SPECIFIED, THE NODP * 00240000 * /* FLAG IN CESWT3 IN THE COMMON AREA IS SET TO ONE. * 00250000 * /* IF ENTRY TO THIS MODULE IS ON ACCOUNT OF A CEVOL ON * 00260000 * /* A SHARED DISK, THE CEVOL FLAG IN THE ASSOCIATED DEVTAB* 00270000 * /* ENTRY IS SET TO ONE AND THE SHARED FLAG IN THE UCB IS * 00280000 * /* ON. * 00290000 * /* * 00300000 * /* OUTPUT * 00310000 * /* IF ENTERED FOR DRUM DATA PROTECTION AND DEVICE IS * 00320000 * /* ONLINE, THE ONLINEOK BIT IN CESWT1 IS TURNED ON AS ARE* 00330000 * /* THE FILE PROTECT BITS IN THE SCT AND IN DEVTAB. IF * 00340000 * /* DEVICE IS OFFLINE AND SHARED, MESSAGES IFD120D AND * 00350000 * /* IFD145D ARE OUTPUT. IF THE DEVICE IS NOT SHARED, ONLY * 00360000 * /* MESSAGE IFD145D IS OUTPUT. * 00370000 * /* IF ENTERED BECAUSE DATA PROTECTION COULD NOT BE DONE, * 00380000 * /* MESSAGES IFD212I AND IFD120D ARE OUTPUT. * 00390000 * /* IF ENTERED BECAUSE A CE VOLUME WAS FOUND ON A SHARED * 00400000 * /* DISK, MESSAGE IFD145D IS OUTPUT * 00410000 * /* * 00420000 * /* EXTERNAL REFERENCES * 00430000 * /* THIS MODULE MAKES USE OF VARIOUS SECTIONS OF THE OLTEP* 00440000 * /* COMMON AREA. IT ALSO REFERENCES THE MESSAGE MODULE * 00450000 * /* IFDMSG04 * 00460000 * /* * 00470000 * /* EXITS * 00480000 * /* TO PARALLEL PRINT TO PRINT MESSAGES * 00490000 * /* RETURN TO GENERAL DATA PROTECTION MODULE(IFDOLT52) * 00500000 * /* * 00510000 * /************************************************************ 00520000 * IFDOLT04: 00530000 * PROC OPTIONS(ID); /* DRUM DATA PROTECTION * 00540000 LCLA &T,&SPN 0001 00550000 .@001 ANOP 0001 00560000 IFDOLT04 CSECT , 0001 00570000 BC 15,24(0,@F) 00580000 DC C'IFDOLT04 20 DEC 71' 0001 00590000 STM @E,@C,12(@D) 0001 00600000 BALR @B,0 0001 00610000 @PSTART DS 0H 0001 00620000 USING @PSTART+00000,@B 0001 00630000 ST @D,@SAV001+4 0001 00640000 LA @F,@SAV001 0001 00650000 ST @F,8(0,@D) 0001 00660000 LR @D,@F 0001 00670000 * GENERATE; 00680000 TITLE 'IFDOLT04 - DRUM DATA PROTECTION' 00690000 DS 0H 00700000 * /************************************************************ 00710000 * /* MACRO TO RESOLVE ABSOLUTE VALUES * 00720000 * /************************************************************ 00730000 * GEN(USING CHASCT,2); /*COMMON AREA BASE REGISTER * 00740000 USING CHASCT,2 00750000 DS 0H 00760000 * GEN DATA; /*OLTEP COMMON AREA * 00770000 * /************************************************************ 00780000 * /* * 00790000 * /* DECLARED REGISTERS * 00800000 * /* * 00810000 * /************************************************************ 00820000 * DCL R0 REG(0) PTR; /* REGISTER ZERO * 00830000 * DCL R1 REG(1) PTR; /* REGISTER 1 * 00840000 * DCL R2 REG(2) PTR; /* REGISTER 2 * 00850000 * DCL R3 REG(3) PTR; /*REGISTER 3 * 00860000 * DCL R4 REG(4) PTR; /* REGISTER 4 * 00870000 * DCL R5 REG(5) PTR; /* REGISTER 5 * 00880000 * DCL R6 REG(6) PTR; /* REGISTER 6 * 00890000 * DCL R7 REG(7) PTR; /* REGISTER 7 * 00900000 * DCL R8 REG(8) PTR; /* REGISTER 8 * 00910000 * DCL R9 REG(9) PTR; /* REGISTER 9 * 00920000 * DCL R10 REG(10) PTR; /* REGISTER 10 * 00930000 * DCL R11 REG(11) PTR; /* REGISTER 11 * 00940000 * DCL R12 REG(12) PTR; /* REGISTER 12 * 00950000 * DCL R13 REG(13) PTR; /* REGISTER 13 * 00960000 * DCL R14 REG(14) PTR; /* REGISTER 14 * 00970000 * DCL R15 REG(15) PTR; /* REGISTER 15 * 00980000 * RESTRICT(R1,R2,R3,R7); /* RESTRICT REGISTERS * 00990000 * DCL IFDMSG04 EXT ENTRY; /* MSG MODULE * 01000000 * DCL MSGPTR PTR /* PTR TO MESSAGE MODULE * 01010000 * INIT(ADDR(IFDMSG04)); /* INITIALIZE MSG PTR * 01020000 * /************************************************************ 01030000 * /* POINTERS TO MESSAGES * 01040000 * /************************************************************ 01050000 * DCL 1 * BASED(R3), 01060000 * 3 IFD120 PTR, /* PTR TO MSG IFD120D * 01070000 * 3 IFD145 PTR, /* PTR TO MSG IFD145D * 01080000 * 3 IFD212 PTR; /* PTR TO MSG IFD212I * 01090000 * DCL CESWT1 CHAR(1) GENERATED; /* OLTEP SWITCHES * 01100000 * /************************************************************ 01110000 * /* SWITCH STRUCTURE FOR CESWT1 * 01120000 * /************************************************************ 01130000 * DCL 1 * CHAR(1) 01140000 * BASED(ADDR(CESWT1)), /* FOR CESWT1 * 01150000 * 3 * BIT(4), /* N/A * 01160000 * 3 FILMSK BIT(1), /* ALLOW FILMSK CHANGES * 01170000 * 3 * BIT(1), /* N/A * 01180000 * 3 ONLINEOK BIT(1), /* ONLINE FLAG * 01190000 * 3 * BIT(1); /* N/A * 01200000 * DCL CESWT3 CHAR(1) GENERATED; /* OLTEP SWITCHES * 01210000 * /************************************************************ 01220000 * /* SWITCH STRUCTURE FOR CESWT3 * 01230000 * /************************************************************ 01240000 * DCL 1 * CHAR(1) 01250000 * BASED(ADDR(CESWT3)), /* FOR CESWT3 * 01260000 * 3 * BIT(2), /* N/A * 01270000 * 3 NUDEV BIT(1), /* BYPASS TESTS THIS DEVICE * 01280000 * 3 * BIT(4), /* N/A * 01290000 * 3 NODP BIT(1); /* NO DATA PROTECTION * 01300000 * DCL CHASCT CHAR(88) GENERATED;/* SCT * 01310000 * /************************************************************ 01320000 * /* SCT FLAG BYTE - OFFSET 10 * 01330000 * /************************************************************ 01340000 * DCL 1 * CHAR(1) 01350000 * BASED(ADDR(CHASCT)+10), /* OFFSET 10 * 01360000 * 3 * BIT(1), /* N/A * 01370000 * 3 FPM BIT(1); /* FILE PROTECT MODE BIT * 01380000 * /************************************************************ 01390000 * /* SCT FLAG BYTE - OFFSET 11 * 01400000 * /************************************************************ 01410000 * DCL 1 * CHAR(1) 01420000 * BASED(ADDR(CHASCT)+11), /* OFFSET 11 * 01430000 * 3 CDSFPM BIT(1), /* FILE PROTECT FLAG * 01440000 * 3 * BIT(7); /* N/A * 01450000 * /************************************************************ 01460000 * /* MAP OF DEVTAB - EACH ENTRY = 56 BYTES * 01470000 * /************************************************************ 01480000 * DCL 1 * BASED(R7), 01490000 * 3 DEVADEB CHAR(8), /* DEV ADDR IN EBCDIC * 01500000 * 3 DUCBA PTR(31), /* UCB ADDR (TWO BYTE ADDR) * 01510000 * 3 DEVFL1 CHAR(1), /* FIRST FLAG BYTE IN DEVTAB * 01520000 * 5 ONLNE BIT(1), /* DEVICE ON/OFF LINE STATUS * 01530000 * 5 PRIME BIT(1), /* PRIMARY DEVICE INDICATOR * 01540000 * 5 DPDONE BIT(1), /* DATA PROTECTION COMPLETE * 01550000 * 5 ACTVE BIT(1), /* ACTIVE DEVICE * 01560000 * 5 ALLCT BIT(1), /* ALLOCATED DEVICE * 01570000 * 5 GRBED BIT(1), /* GRADDED (SECONDARY) DEV * 01580000 * 5 FLPRT BIT(1), /* FILE PROTECT MODE DEVICE * 01590000 * 5 ACTSC BIT(1), /* LAST ACTIVE SECONDARY DEV * 01600000 * 3 DEVFL2 CHAR(1), /* SECOND FLAG BYTE IN DEVTAB* 01610000 * 5 DSNAME BIT(1), /* DSNAME FLIP-FLOP * 01620000 * 5 * BIT(1), /* N/A * 01630000 * 5 CEVOL BIT(1), /* C.E. VOLUME * 01640000 * 5 STDLBL BIT(1), /* STANDARD LABELED TAPE * 01650000 * 5 CHANFUNC BIT(1), /* CHANNEL FUNCTION * 01660000 * 5 BYPS BIT(1), /* BYPASS FUNCTION INVOKED * 01670000 * 5 CEDE BIT(1), /* CE-DE FUNCTION INVOKED * 01680000 * 5 ATTN BIT(1), /* ATTNIN FUNCTION INVOKED * 01690000 * 3 DEVFL3 CHAR(1), /* THIRD FLAG BYTE IN DEVTAB * 01700000 * 5 SPECEXP BIT(1), /* SPECIFIC EXPOSURE FUNCTION* 01710000 * 5 * BIT(7), /* EXPANSION * 01720000 * 3 DEVFL4 CHAR(1), /* FOURTH FLAG BYTE IN DEVTAB* 01730000 * 5 RMTLNDAB BIT(1), /* REMOTE LINE DISABLED * 01740000 * 5 RMTLNENA BIT(1), /* REMOTE LINE ENABLED * 01750000 * 5 FRSTEXIO BIT(1), /* FIRST EXIO ISSUED * 01760000 * 5 * BIT(5), /* EXPANSION * 01770000 * 3 DVEXT1 CHAR(6), /* LOW DASD EXTENT * 01780000 * 3 DVEXT2 CHAR(6), /* HIGH DASD EXTENT * 01790000 * 5 DVCCHH2 CHAR(4), /* CC HH OF 2ND EXTENT * 01800000 * 3 * CHAR(2), /* N/A * 01810000 * 3 MODESET CHAR(1), /* MODE SET SAVE AREA * 01820000 * 3 EXPOSURE CHAR(1), /* EXPOSURE # FOR ZUES TYPE * 01830000 * 3 DEHAD CHAR(4), /* DEVICE ADDR IN HEX * 01840000 * 3 CDSINFOR CHAR(16), /* CDS INFO FOR THIS DEV * 01850000 * 5 MODEL CHAR(1), /* MODEL # * 01860000 * 5 FEATURES CHAR(1), /* FEATURES ON THIS MODEL * 01870000 * 5 CLASS CHAR(1), /* CLASS * 01880000 * 5 TYPE CHAR(1), /* TYPE * 01890000 * 5 CDSCNT CHAR(1), /* CDS BYTE COUNT * 01900000 * 5 CDSFLAGS CHAR(1), /* CDS FLAGS * 01910000 * 7 DVCDSFPM BIT(1), /* FILE PROTECT FLAG S21052* 01920000 * 7 * BIT(1), /* -/A S21052* 01930000 * 7 DVCDECEV BIT(1), /* CE VOLUME S21052* 01940000 * 5 EXTSGMSK CHAR(2), /* EXTERNAL SIGNAL MASK * 01950000 * 5 SYMNAME CHAR(8), /* SYMBOLIC NAME * 01960000 * 3 * CHAR(4); /* EXPANSION * 01970000 * /************************************************************ 01980000 * /* UCB * 01990000 * /************************************************************ 02000000 * DCL 1 * BASED(DUCBA), 02010000 * 3 *(4) FIXED, /* N/A * 02020000 * 3 * CHAR(1), /* N/A * 02030000 * 3 * CHAR(1), /* N/A * 02040000 * 5 * BIT(2), /* N/A * 02050000 * 5 SHARED BIT(1); /* SHARED FLAG * 02060000 * /************************************************************ 02070000 * /* WTOR PARAMETER LIST * 02080000 * /************************************************************ 02090000 * DCL 1 MSGPARM BASED(R1), 02100000 * 3 LENGTH CHAR(1), /* LENGTH OF RESPONSE * 02110000 * 3 BUFAD PTR(24), /* BUFFER FOR RESPONSE * 02120000 * 3 MSGECB PTR; /* ECB ADDRESS * 02130000 * DCL DRUMECB FIXED INIT(0); /* ECB * 02140000 * DCL INBUFR CHAR(3) GENERATED; /* BUFFER FOR RESPONSE * 02150000 * DCL MSGDVAD1 CHAR(8) /* AREA FOR DEV ADDR IN MSG * 02160000 * BASED(R1+36); /* OFFSET 36 * 02170000 * DCL MSGDVAD2 CHAR(8) /* AREA FOR DEV ADDR IN MSG * 02180000 * BASED(R1+23); /* OFFSET 23 * 02190000 * DCL MSGDVAD3 CHAR(8) /* AREA FOR DEV ADDR IN MSG * 02200000 * BASED(R1+39); /* OFFSET 39 * 02210000 * DCL BLANKS CHAR(3) INIT(' ');/* 3 BLANKS TO CLEAR INBUFR * 02220000 * DCL NOANS CHAR(3) INIT('NO '); /* CONSTANT ' NO ' * 02230000 * DCL YANS CHAR(3) INIT('YES'); /* CONSTANT 'YES' * 02240000 * R3=MSGPTR; /* PTR TP MSG MOD * 02250000 L @3,MSGPTR 0043 02260000 * /* CHECK FOR NO DATA PROTECTION DONE * 02270000 * IF NODP= '1'B THEN /* ONLY PUT OUT MSG 120 * 02280000 TM A00005,B'00000001' 0044 02290000 * GOTO DRUM00; /* GO PRINT MSG 212I * 02300000 BC 01,DRUM00 0045 02310000 * /* CHECK FOR CE VOLUME ON DISK * 02320000 * IF CEVOL = '1'B & /* CE VOLUME ON DISK * 02330000 * SHARED='1'B THEN /* SHARED DEVICE * 02340000 TM 13(@7),B'00100000' 0046 02350000 BC 12,@9FF 0046 02360000 L @6,8(0,@7) 0046 02370000 TM 17(@6),B'00100000' 0046 02380000 * GOTO DRUM02; /* OFFLINE IN ALL SYS MSG * 02390000 BC 03,DRUM02 0047 02400000 * /* CHECK TO SEE IF DATA PROTECTION HAS BEEN DONE M1468* 02410000 * IF DPDONE='1'B THEN /* IS DP DONE M1468* 02420000 @9FE EQU * 0048 02430000 @9FF TM 12(@7),B'00100000' 0048 02440000 * RETURN; /* YES, RETURN TO CALLERM1468* 02450000 BC 03,@EL01 0049 02460000 * /* CHECK FOR ONLINE DRUM * 02470000 * IF ONLNE= '1'B THEN /* IS DEVICE ONLINE * 02480000 @9FD TM 12(@7),B'10000000' 0050 02490000 BC 12,@9FC 0050 02500000 * DO; /* SET ONLINE OK FLAGS * 02510000 * ONLINEOK='1'B; /* YES SET FLAG * 02520000 OI A00001,B'00000010' 0052 02530000 * GOTO SETBITS; /*GO SET OTHER BITS * 02540000 BC 15,SETBITS 0053 02550000 * END; /* END OF DO GROUP * 02560000 * ONLINEOK='0'B; /* ZERO ONLINEOK FLAG * 02570000 @9FC NI A00001,B'11111101' 0055 02580000 * /* CHECK FOR SHARED DRUM * 02590000 * IF SHARED='1'B THEN /* IS DEVICE SHARED * 02600000 L @6,8(0,@7) 0056 02610000 TM 17(@6),B'00100000' 0056 02620000 BC 12,@9FB 0056 02630000 * DO; /* SHARED DEVICE * 02640000 * DRUM02: /* PUT OUT MSG IFD145D * 02650000 * R1=IFD145; /* GET PTR TO MSG * 02660000 DRUM02 L @1,4(0,@3) 0058 02670000 * BUFAD=ADDR(INBUFR); /* ADDR OF RESPONSE BUFFER * 02680000 LA @F,INBUFR 0059 02690000 ST @F,@TEMP4 0059 02700000 MVC 1(3,@1),@TEMP4+1 0059 02710000 * LENGTH='03'X; /* LENGTH OF RESPONSE * 02720000 MVI 0(@1),X'03' 0060 02730000 * DRUMECB=0; /* CLEAR ECB * 02740000 SR @F,@F 0061 02750000 ST @F,DRUMECB 0061 02760000 * MSGECB=ADDR(DRUMECB); /* GET ADDR OF ECB * 02770000 LA @F,DRUMECB 0062 02780000 ST @F,4(0,@1) 0062 02790000 * MSGDVAD2=DEVADEB; /* PUT DEV ADDR IN MSG * 02800000 MVC 23(8,@1),0(@7) 0063 02810000 * INBUFR=BLANKS; /* CLEAR RESPONSE BUFFER * 02820000 MVC INBUFR(3),BLANKS 0064 02830000 * GEN(PWTOR REG=(1)); /* PRINT MESSAGE * 02840000 PWTOR REG=(1) 02850000 DS 0H 02860000 * /* CHECK FOR 'NO ' ANSWER * 02870000 * IF INBUFR=NOANS THEN /* NOT OFFLINE IN ALL SYS * 02880000 CLC INBUFR(3),NOANS 0066 02890000 BC 07,@9FA 0066 02900000 * DO; /* DO * 02910000 * /* CHECK FOR CE VOLUME ON DISK * 02920000 * IF CEVOL = '1'B THEN /* CEVOL * 02930000 TM 13(@7),B'00100000' 0068 02940000 * GOTO TSTPRIM; /* GO SEE IF PRIMARY DEV * 02950000 BC 01,TSTPRIM 0069 02960000 * GOTO SETBITS; /* NOT OFFLINE IN ALL SYSTEM* 02970000 BC 15,SETBITS 0070 02980000 * END; /* END OF DO GROUP * 02990000 * /* CHECK FOR NOT 'YES' ANSWER * 03000000 * IF INBUFR ª= YANS THEN /* GO REPEAT MESSAGE * 03010000 @9FA CLC INBUFR(3),YANS 0072 03020000 * GOTO DRUM02; /* IF ANSWER NOT YES OR NO * 03030000 BC 07,DRUM02 0073 03040000 * /* CHECK FOR CEVOL * 03050000 * IF CEVOL = '1'B THEN /* CEVOL * 03060000 TM 13(@7),B'00100000' 0074 03070000 * RETURN; /* RETURN TO CALLER * 03080000 BC 03,@EL01 0075 03090000 * END; /* END OF DO GROUP * 03100000 @9F9 EQU * 0076 03110000 * DRUM01: /* PUT OUT MESSAGE IFD120D * 03120000 * R1=IFD120; /* GET PTR TO MSG * 03130000 @9FB EQU * 0077 03140000 DRUM01 L @1,0(0,@3) 0077 03150000 * BUFAD=ADDR(INBUFR); /* ADDR OF RESPONSE BUFFER * 03160000 LA @F,INBUFR 0078 03170000 ST @F,@TEMP4 0078 03180000 MVC 1(3,@1),@TEMP4+1 0078 03190000 * LENGTH='03'X; /* LENGTH OF RESPONSE * 03200000 MVI 0(@1),X'03' 0079 03210000 * DRUMECB=0; /* CLEAR ECB * 03220000 SR @F,@F 0080 03230000 ST @F,DRUMECB 0080 03240000 * MSGECB=ADDR(DRUMECB); /* GET ADDR OF ECB * 03250000 LA @F,DRUMECB 0081 03260000 ST @F,4(0,@1) 0081 03270000 * MSGDVAD1=DEVADEB; /* PUT DEV ADDR IN MSG * 03280000 MVC 36(8,@1),0(@7) 0082 03290000 * INBUFR=BLANKS; /* CLEAR BUFFER * 03300000 MVC INBUFR(3),BLANKS 0083 03310000 * GEN(PWTOR REG=(1)); /* PRINT MSG * 03320000 PWTOR REG=(1) 03330000 DS 0H 03340000 * /* CHECK FOR 'NO ' ANSWER * 03350000 * IF INBUFR = NOANS THEN /* ANSWER EQUALS NO * 03360000 CLC INBUFR(3),NOANS 0085 03370000 BC 07,@9F8 0085 03380000 * DO; /* DO * 03390000 * /* CHECK FOR NO DATA PROTECTION * 03400000 * IF NODP= '1'B THEN /* IF ON BYPASS TESTS ON DEV * 03410000 TM A00005,B'00000001' 0087 03420000 * GOTO TSTPRIM; /* GO TEST FOR PRIME DEV * 03430000 BC 01,TSTPRIM 0088 03440000 * GOTO SETBITS; /* ALLOW TO CONTINUE IN FPM * 03450000 BC 15,SETBITS 0089 03460000 * END; /* END OF DO GROUP * 03470000 * /* CHECK FOR NOT 'YES' ANSWER * 03480000 * IF INBUFR ª= YANS THEN /* ERROR - REPEAT MESSAGE * 03490000 @9F8 CLC INBUFR(3),YANS 0091 03500000 * GOTO DRUM01; /* REPEAT MESSAGE * 03510000 BC 07,DRUM01 0092 03520000 * /* CHECK FOR NO DATA PROTECTION * 03530000 * IF NODP = '1'B THEN /* IF ON RETURN TO SCHEDULER * 03540000 TM A00005,B'00000001' 0093 03550000 * RETURN; /* RETURN TO CALLER * 03560000 BC 03,@EL01 0094 03570000 * FPM='0'B; /* CLEAR FPM IN SCT A48714* 03580000 @9F7 NI A00008,B'10111111' 0095 03590000 * FLPRT='0'B; /* CLEAR FPM IN DEVTAB A48714* 03600000 NI 12(@7),B'11111101' 0096 03610000 * DVCDSFPM='0'B; /* CLEAR DEVTAB FPM FLGA48714* 03620000 NI 41(@7),B'01111111' 0097 03630000 * CDSFPM='0'B; /* CLEAR CDSFPM IN SCT A48714* 03640000 NI A00010,B'01111111' 0098 03650000 * GOTO DRUM03; /* BRANCH AROUND CODE * 03660000 BC 15,DRUM03 0099 03670000 * SETBITS: /* SET FILE PROTECT BITS * 03680000 * FPM='1'B; /* SET FPM BIT IN SCT * 03690000 SETBITS OI A00008,B'01000000' 0100 03700000 * FLPRT='1'B; /* SET FPM IN DEVTAB * 03710000 OI 12(@7),B'00000010' 0101 03720000 * DVCDSFPM='1'B; /* SET DEVTAB FPM FLAG * 03730000 OI 41(@7),B'10000000' 0102 03740000 * CDSFPM='1'B; /* SET CDSFPM BIT IN SCT * 03750000 OI A00010,B'10000000' 0103 03760000 * DRUM03: /* SET OTHER BITS * 03770000 * FILMSK='1'B; /* ALLOW MODE SET CHGS * 03780000 DRUM03 OI A00001,B'00001000' 0104 03790000 * DPDONE = '1'B; /* SET DP DONE FLAG * 03800000 OI 12(@7),B'00100000' 0105 03810000 * RETURN; /* RETURN TO CALLER * 03820000 BC 15,@EL01 0106 03830000 * DRUM00: /* PUT OUT MESSAGE IFD212I * 03840000 * R1=IFD212; /* POINTER TO MESSAGE * 03850000 DRUM00 L @1,8(0,@3) 0107 03860000 * MSGDVAD3=DEVADEB; /* PUT DEV ADDR IN MSG * 03870000 MVC 39(8,@1),0(@7) 0108 03880000 * GEN(PWTO REG=(1)); /* PRINT MESSAGE * 03890000 PWTO REG=(1) 03900000 DS 0H 03910000 * GOTO DRUM01; /* GO PRINT MSG 120 * 03920000 BC 15,DRUM01 0110 03930000 * TSTPRIM: /* TEST IF PRIME DEV * 03940000 * /* CHECK FOR PRIMARY DEVICE * 03950000 * IF PRIME='1'B THEN /* IF PRIMARY DEV SET * 03960000 TSTPRIM TM 12(@7),B'01000000' 0111 03970000 BC 12,@9F6 0111 03980000 * NUDEV='1'B; /* BYPASS BIT * 03990000 OI A00005,B'00100000' 0112 04000000 * RETURN; /* RETURN TO CALLER * 04010000 * END IFDOLT04; /* END OF IFDOLT04 MODULE * 04020000 @EL01 L @D,4(0,@D) 0114 04030000 LM @E,@C,12(@D) 0114 04040000 BCR 15,@E 0114 04050000 @DATA1 EQU * 04060000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 04070000 @1 EQU 01 04080000 @2 EQU 02 04090000 @3 EQU 03 04100000 @4 EQU 04 04110000 @5 EQU 05 04120000 @6 EQU 06 04130000 @7 EQU 07 04140000 @8 EQU 08 04150000 @9 EQU 09 04160000 @A EQU 10 04170000 @B EQU 11 04180000 @C EQU 12 04190000 @D EQU 13 04200000 @E EQU 14 04210000 @F EQU 15 04220000 DS 0F 04230000 DS 0D 04240000 @DATA EQU * 04250000 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 04260000 R0 EQU 00000000 FULLWORD POINTER REGISTER 04270000 R1 EQU 00000001 FULLWORD POINTER REGISTER 04280000 R2 EQU 00000002 FULLWORD POINTER REGISTER 04290000 R3 EQU 00000003 FULLWORD POINTER REGISTER 04300000 R4 EQU 00000004 FULLWORD POINTER REGISTER 04310000 R5 EQU 00000005 FULLWORD POINTER REGISTER 04320000 R6 EQU 00000006 FULLWORD POINTER REGISTER 04330000 R7 EQU 00000007 FULLWORD POINTER REGISTER 04340000 R8 EQU 00000008 FULLWORD POINTER REGISTER 04350000 R9 EQU 00000009 FULLWORD POINTER REGISTER 04360000 R10 EQU 00000010 FULLWORD POINTER REGISTER 04370000 R11 EQU 00000011 FULLWORD POINTER REGISTER 04380000 R12 EQU 00000012 FULLWORD POINTER REGISTER 04390000 R13 EQU 00000013 FULLWORD POINTER REGISTER 04400000 R14 EQU 00000014 FULLWORD POINTER REGISTER 04410000 R15 EQU 00000015 FULLWORD POINTER REGISTER 04420000 ORG @DATA+00000072 04430000 MSGPTR EQU * FULLWORD POINTER 04440000 DC VL4(IFDMSG04) 04450000 A00000 EQU 00000000 12 BYTE(S) ON WORD 04460000 IFD120 EQU A00000+00000000 FULLWORD POINTER 04470000 IFD145 EQU A00000+00000004 FULLWORD POINTER 04480000 IFD212 EQU A00000+00000008 FULLWORD POINTER 04490000 A00012 EQU 00000000 56 BYTE(S) ON WORD 04500000 DEVADEB EQU A00012+00000000 8 BYTE(S) 04510000 DUCBA EQU A00012+00000008 FULLWORD POINTER 04520000 DEVFL1 EQU A00012+00000012 1 BYTE(S) 04530000 ONLNE EQU A00012+00000012 1 BIT(S) 04540000 PRIME EQU A00012+00000012 1 BIT(S) 04550000 DPDONE EQU A00012+00000012 1 BIT(S) 04560000 ACTVE EQU A00012+00000012 1 BIT(S) 04570000 ALLCT EQU A00012+00000012 1 BIT(S) 04580000 GRBED EQU A00012+00000012 1 BIT(S) 04590000 FLPRT EQU A00012+00000012 1 BIT(S) 04600000 ACTSC EQU A00012+00000012 1 BIT(S) 04610000 DEVFL2 EQU A00012+00000013 1 BYTE(S) 04620000 DSNAME EQU A00012+00000013 1 BIT(S) 04630000 A00013 EQU A00012+00000013 1 BIT(S) 04640000 CEVOL EQU A00012+00000013 1 BIT(S) 04650000 STDLBL EQU A00012+00000013 1 BIT(S) 04660000 CHANFUNC EQU A00012+00000013 1 BIT(S) 04670000 BYPS EQU A00012+00000013 1 BIT(S) 04680000 CEDE EQU A00012+00000013 1 BIT(S) 04690000 ATTN EQU A00012+00000013 1 BIT(S) 04700000 DEVFL3 EQU A00012+00000014 1 BYTE(S) 04710000 SPECEXP EQU A00012+00000014 1 BIT(S) 04720000 A00014 EQU A00012+00000014 7 BIT(S) 04730000 DEVFL4 EQU A00012+00000015 1 BYTE(S) 04740000 RMTLNDAB EQU A00012+00000015 1 BIT(S) 04750000 RMTLNENA EQU A00012+00000015 1 BIT(S) 04760000 FRSTEXIO EQU A00012+00000015 1 BIT(S) 04770000 A00015 EQU A00012+00000015 5 BIT(S) 04780000 DVEXT1 EQU A00012+00000016 6 BYTE(S) 04790000 DVEXT2 EQU A00012+00000022 6 BYTE(S) 04800000 DVCCHH2 EQU A00012+00000022 4 BYTE(S) 04810000 A00016 EQU A00012+00000028 2 BYTE(S) 04820000 MODESET EQU A00012+00000030 1 BYTE(S) 04830000 EXPOSURE EQU A00012+00000031 1 BYTE(S) 04840000 DEHAD EQU A00012+00000032 4 BYTE(S) 04850000 CDSINFOR EQU A00012+00000036 16 BYTE(S) 04860000 MODEL EQU A00012+00000036 1 BYTE(S) 04870000 FEATURES EQU A00012+00000037 1 BYTE(S) 04880000 CLASS EQU A00012+00000038 1 BYTE(S) 04890000 TYPE EQU A00012+00000039 1 BYTE(S) 04900000 CDSCNT EQU A00012+00000040 1 BYTE(S) 04910000 CDSFLAGS EQU A00012+00000041 1 BYTE(S) 04920000 DVCDSFPM EQU A00012+00000041 1 BIT(S) 04930000 A00017 EQU A00012+00000041 1 BIT(S) 04940000 DVCDECEV EQU A00012+00000041 1 BIT(S) 04950000 EXTSGMSK EQU A00012+00000042 2 BYTE(S) 04960000 SYMNAME EQU A00012+00000044 8 BYTE(S) 04970000 A00018 EQU A00012+00000052 4 BYTE(S) 04980000 A00019 EQU 00000000 18 BYTE(S) ON WORD 04990000 A00020 EQU A00019+00000000 4*FULLWORD INTEGER 05000000 A00021 EQU A00019+00000016 1 BYTE(S) 05010000 A00022 EQU A00019+00000017 1 BYTE(S) 05020000 A00023 EQU A00019+00000017 2 BIT(S) 05030000 SHARED EQU A00019+00000017 1 BIT(S) 05040000 MSGPARM EQU 00000000 8 BYTE(S) ON WORD 05050000 LENGTH EQU MSGPARM+00000000 1 BYTE(S) 05060000 BUFAD EQU MSGPARM+00000001 3 BYTE POINTER ON WORD+1 05070000 MSGECB EQU MSGPARM+00000004 FULLWORD POINTER 05080000 DRUMECB EQU * FULLWORD INTEGER 05090000 DC FL4'0' 05100000 MSGDVAD1 EQU 00000036 8 BYTE(S) 05110000 MSGDVAD2 EQU 00000023 8 BYTE(S) 05120000 MSGDVAD3 EQU 00000039 8 BYTE(S) 05130000 BLANKS EQU * 3 BYTE(S) 05140000 DC C' ' 05150000 NOANS EQU * 3 BYTE(S) 05160000 DC C'NO ' 05170000 YANS EQU * 3 BYTE(S) 05180000 DC C'YES' 05190000 ORG @DATA 05200000 DS 00000089C 05210000 @TEMPS DS 0F 05220000 @TEMP4 DC F'0' 05230000 DSECT04 IFDCOM 05240000 A00001 EQU CESWT1+00000000 1 BYTE(S) 05250000 A00002 EQU A00001+00000000 4 BIT(S) 05260000 FILMSK EQU A00001+00000000 1 BIT(S) 05270000 A00003 EQU A00001+00000000 1 BIT(S) 05280000 ONLINEOK EQU A00001+00000000 1 BIT(S) 05290000 A00004 EQU A00001+00000000 1 BIT(S) 05300000 A00005 EQU CESWT3+00000000 1 BYTE(S) 05310000 A00006 EQU A00005+00000000 2 BIT(S) 05320000 NUDEV EQU A00005+00000000 1 BIT(S) 05330000 A00007 EQU A00005+00000000 4 BIT(S) 05340000 NODP EQU A00005+00000000 1 BIT(S) 05350000 A00008 EQU CHASCT+00000010 1 BYTE(S) 05360000 A00009 EQU A00008+00000000 1 BIT(S) 05370000 FPM EQU A00008+00000000 1 BIT(S) 05380000 A00010 EQU CHASCT+00000011 1 BYTE(S) 05390000 CDSFPM EQU A00010+00000000 1 BIT(S) 05400000 A00011 EQU A00010+00000000 7 BIT(S) 05410000 @DATEND EQU * 05420000 @9F6 EQU @EL01 05430000 END IFDOLT04 05440000 ./ ADD SSI=02013430,NAME=IFDOLT05,SOURCE=1 TITLE ' EXIO MODULE IFDOLT05' 00010000 LCLA &T,&SPN 0001 00020000 .@001 ANOP 0001 00030000 IFDOLT05 CSECT , 0001 00040000 ST @E,12(0,@D) 0001 00050000 STM @0,@C,20(@D) 0001 00060000 BALR @B,0 0001 00070000 @PSTART DS 0H 0001 00080000 USING @PSTART+00000,@B 0001 00090000 ST @D,@SAV001+4 0001 00100000 LA @F,@SAV001 0001 00110000 ST @F,8(0,@D) 0001 00120000 LR @D,@F 0001 00130000 * GEN (USING CHASCT,2); 00140000 USING CHASCT,2 00150000 DS 0H 00160000 * GENERATE DATA; 00170000 * GEN (EJECT); 00180000 EJECT 00190000 DS 0H 00200000 * /************************************************************ 00210000 * /* IFDOLT05 REGISTER DEFINITIONS * 00220000 * /* * 00230000 * /************************************************************ 00240000 * /* REGISTERS THRU OUT EXIO * 00250000 * DCL R0 REG(0) PTR(31); /* * 00260000 * DCL LSTPTR REG(1) PTR(31); /* PARAMETER LIST POINTER * 00270000 * DCL COMMON REG(2) PTR(31); /* COMMON AREA POINTER * 00280000 * DCL PNT3 REG(3) PTR(31); /* OCB POINTER * 00290000 * DCL PNT4 REG(4) PTR(31); /* DEBDCB POINTER * 00300000 * DCL PNT5 REG(5) PTR(31); /* DEVTAB POINTER * 00310000 * DCL PNT6 REG(6) PTR(31); /* * 00320000 * DCL PNT7 REG(7) PTR(31); /* * 00330000 * DCL WRK1 REG(8); /* WORKING REGISTER * 00340000 * DCL R9 REG(9); /* WORK REGISTER S20203* 00350000 * DCL R12 REG(12); /* * 00360000 * DCL R13 REG(13) PTR(31); /* R13 IS SAVE AREA POINTER * 00370000 * DCL R14 REG(14) PTR(31); /* ANOTHER NAME FOR LINK REG * 00380000 * DCL LINK REG(14); /* LINK REGISTER * 00390000 * DCL R15 REG(15); /* * 00400000 * GEN (EJECT); 00410000 EJECT 00420000 DS 0H 00430000 * /************************************************************ 00440000 * /* COMMON CORE MAP * 00450000 * /************************************************************ 00460000 * DCL DEVTBPTR POINTER GENERATED; /* POINTER TO DEVICE TBL S21050* 00470000 * DCL TABLNGTH FIXED(15) GENERATED; /* SIZE OF AN ENTRY IN DEVTAB * 00480000 * DCL INBUFR GENERATED; /* TYPEWRITER INPUT AREA * 00490000 * DCL APMMPT PTR GENERATED; /* POINTER TO IECOLTS * 00500000 * DCL TSTDEBAD GENERATED; /* PNTR TO SUBPOOL 254 DEB1 * 00510000 * DCL WKSVC CHAR(16) GENERATED;/* SVC PARAMETER LIST * 00520000 * DCL R1 REG(1) PTR; /* PARAMETER LIST REG */ 00530000 * DCL ENDJOB PTR GENERATED; /* INITIALIZATION SAVE AREA */ 00540000 * DCL ROPT PTR GENERATED; /* SVC PARAMETER LIST * 00550000 * DCL HEX14 FIXED INIT('00008014'X); /* SVC 59 CLEAN-UP CODE * 00560000 * DCL VID CHAR(2) BASED(ADDR(WKSVC)+2); /* MODULE ID FOR SVC USE * 00570000 * DCL SCHEDSA PTR GENERATED; /*PNTR TO SCHEDULER SAVE AREA* 00580000 * DCL CESWT3 CHAR(1) GENERATED;/* OLTEP SWITCH 3 * 00590000 * /* DYNAMIC COMMUNICATION RTRN * 00600000 * DCL CHASCT GENERATED; /* S C T IS IN DSECT * 00610000 * DCL TIOB1 GENERATED; /* TIOB1 IS IN DSEDT * 00620000 * DCL TIOB2 GENERATED; /* TIOB2 IS IN DSEDT * 00630000 * DCL TDEB1 GENERATED; /* TDEB1 IS IN DSEDT * 00640000 * DCL TDEB2 GENERATED; /* TDEB2 IS IN DSECT * 00650000 * DCL DEVTAB GENERATED; /* DEVTAB IS IN DSECT * 00660000 * DCL CESWT GENERATED; /* CE SWITCHES IN COMMON AREA * 00670000 * DCL UNICTR CHAR(1) GENERATED;/*UNICTR IS IN DSECT * 00680000 * DCL COMMINT GENERATED; /* POINTER TO DYNAMIC COM AREA* 00690000 * DCL AVTPTR GENERATED; /* POINTER TO IFDOLT29 * 00700000 * GEN (EJECT); 00710000 EJECT 00720000 DS 0H 00730000 * /************************************************************ 00740000 * /* INTERNAL DEFINITIONS AND CONSTANTS FOLLOW * 00750000 * /************************************************************ 00760000 * DECLARE 00770000 * /* EXIO INTERNAL TABLE FOR GAP TESTING * 00780000 * 1 XIOTAB CHAR(32) BDY(WORD),/* TABLE LABEL * 00790000 * 3 XIOTCCW CHAR(4), /* CCW POINTER * 00800000 * 3 XIOTLD CHAR(16), /* LABEL TO LOAD GAP PARAMETER* 00810000 * 5 XIOTCT1 CHAR(4), /* GO DOWN TIME * 00820000 * 5 XIOTCT2 CHAR(4), /* TIMING LIMIT COUNT * 00830000 * 5 XIOTSNS CHAR(4), /* SENSE ADDRESS * 00840000 * 5 XIOTDCT CHAR(4), /* DELAY COUNT * 00850000 * 3 XIOTIOB PTR(31), /* * 00860000 * 3 XIOAND CHAR(4) INIT('00FFFFFF'X),/* CONSTANT * 00870000 * 5 * CHAR(1), /* * 00880000 * 5 ALL1S CHAR(3), /* ALL ONES CONSTANT * 00890000 * 3 XIOGAP CHAR(1), /* * 00900000 * 3 * CHAR(3) INIT('XIO'); /* CSECT IDENTIFIER * 00910000 * DCL SVDBAD PTR(31)BDY(WORD);/*DEB ADDRESS IN SUBPOOL 254 * 00920000 * DCL SVPTR PTR BASED(R13+4); /* R13 SAVE AREA * 00930000 * DCL XDVADR CHAR(2); /* ADDRESS OF DEVICE INTERNAL * 00940000 * DCL MYID CHAR(2) INIT ('05');/* MY MODULE I.D. * 00950000 * DCL 1 COMCDE BASED(PNT7), /* CCW COMMAND BYTE * 00960000 * 3 * BIT (6), /* NOT USED * 00970000 * 3 RDCM BIT(1), /* READ COMMAND BIT IN CCW * 00980000 * 3 WRCM BIT(1); /* WRITE COMMAND BIT IN CCW * 00990000 * DCL NXTCCW BASED(PNT7+8); /* ADDRESS OF NEXT CCW * 01000000 * DCL IFDMSG05 NONLOCAL EXTERNAL LABEL; /* MESSAGE MODULE * 01010000 * DIAG: GEN (EQU 59); /* EQUATE FOR SVC59 * 01020000 DIAG EQU 59 01030000 DS 0H 01040000 * GEN (EJECT); 01050000 EJECT 01060000 DS 0H 01070000 * DECLARE 01080000 * /************************************************************ 01090000 * /* SVC PARAMETER LIST MAP * 01100000 * /************************************************************ 01110000 * 1 * BASED(ADDR(WKSVC)), /* LIST IS IN COMMON CORE * 01120000 * 2 SVCPRM CHAR(16), /* SVC PLIST LENGTH * 01130000 * 3 * CHAR(2), /* EXPANSION * 01140000 * 3 RPTID CHAR(2), /* CALLERS I.D. * 01150000 * 3 RPTPRM1 CHAR(4), 01160000 * 3 RPTPRM2 CHAR(4), 01170000 * 3 RPTPRM3 CHAR(4); 01180000 * /************************************************************ 01190000 * /* MESSAGE MODULE MAP * 01200000 * /************************************************************ 01210000 * DCL 1 * BASED(PNT7), /* PNTR1 TO REFERENCE MSG MOD * 01220000 * 3 MPTR109 PTR(31), /* POINTER TO IFD109I WTO LIST* 01230000 * 3 MPTR133 PTR(31); /* POINTER TO IFD133I WTO LIST* 01240000 * DCL 1 * BASED(MPTR109), /* MESSAGE NEEDS MODIFICATION * 01250000 * 3 MOTCNT CHAR (2), /* OUTPUT MSSG LENGTH * 01260000 * 3 * CHAR(2), /* SVC FLAGS * 01270000 * 3 * CHAR(8), /* OUTPUT MESSAGE * 01280000 * 3 MSGDADD CHAR(3); /* MODIFIED MESSAGE * 01290000 * GEN (EJECT); 01300000 EJECT 01310000 DS 0H 01320000 * DECLARE 01330000 * /************************************************************ 01340000 * /* SECTION CONTROL TABLE (SCT) MAP * 01350000 * /************************************************************ 01360000 * 1 * BASED (ADDR(CHASCT)),/* R2 IS SCT POINTER * 01370000 * 3 * CHAR(3), /* CE LOOP AND OPTION FIELD * 01380000 * 3 * CHAR(1), /* * 01390000 * 5 SETERR BIT(1), /* SECTION ERROR BIT * 01400000 * 3 * CHAR(4), /* ROUTINE SELECTION AND SPARE* 01410000 * 3 * CHAR(2), /* SPARE * 01420000 * 3 SDFLG CHAR(1), /* PRIMARY DEVICE FLAG * 01430000 * 5 * BIT(1), /* SPARE * 01440000 * 5 SFLPRT BIT(1), /* FILE PROTECT * 01450000 * 5 SCEVLM BIT(1), /* CE VOLUME * 01460000 * 5 * BIT(5), /* FLAGS NOT USED IN IFDOLT05* 01470000 * 3 * CHAR(1), /* SPARE * 01480000 * 3 SDVAD CHAR(4), /* DEVICE ADDRESS HEX 4 BYTES * 01490000 * 5 * CHAR(2), /* * 01500000 * 5 SDVAD2 CHAR(2), /* DEVICE ADDRESS HEX 2 BYTES * 01510000 * 3 SDVDS CHAR(4), /* DEVICE DESCRIPTORS * 01520000 * 5 * CHAR(2), /* * 01530000 * 5 SDVCLS CHAR(1), /* DEVICE CLASS * 01540000 * 7 STP BIT(1), /* TAPE * 01550000 * 7 STC BIT(1), /* TELECOMMUNICATIONS * 01560000 * 7 SDA BIT(1), /* DASD * 01570000 * 7 SGD BIT(1), /* GRAPHIC DISPLAY * 01580000 * 7 SUR BIT(1), /* UNIT RECORD * 01590000 * 7 SMC BIT(1), /* MAGNETIC CHARACTER READERS* 01600000 * 7 * BIT(2), /* SPARES * 01610000 * 5 SDVTYP CHAR(1), /* DEVICE TYPE * 01620000 * 3 * CHAR(4), /* 2NDARY DEVICE FLAGS * 01630000 * 3 * CHAR(4), /* 2NDARY DEVICE ADDRESS * 01640000 * 5 * CHAR(2), /* * 01650000 * 5 SSDVAD2 CHAR(2), /* 2 BYTE HEX ADDRS (2ND DEV)* 01660000 * 3 * CHAR(4), /* 2NDARY DEVICE DESCRIPTORS * 01670000 * 3 * CHAR(1), /* TOTE ONLY BYTE * 01680000 * 3 SEPFLG CHAR(1), /* OLTEP FLAG * 01690000 * 3 * CHAR(2), /* OLT SIZE IN WORDS * 01700000 * 3 SOLTFL CHAR(4), /* OLT FUNCTIONAL FLAGS * 01710000 * 3 * CHAR(40); /* SCT NOT USED IN THIS MODULE* 01720000 * GEN (EJECT); 01730000 EJECT 01740000 DS 0H 01750000 * DECLARE 01760000 * /****************************************************** 01770000 * /* EXIO PARAMETER LIST MAP * 01780000 * /****************************************************** 01790000 * 1 OLTLST BASED(LSTPTR), /* R1 POINTS TO PARAMETERS * 01800000 * 3 OTECB PTR(31), /* OLT DECB POINTER * 01810000 * 3 OCCWS PTR (31), /* OLT CCW POINTER * 01820000 * 5 * CHAR(1), /* OLT CCW POINTER * 01830000 * 5 OCCWS3 CHAR(3), /* OLT CCW POINTER * 01840000 * 3 DEVAD PTR(31), /* THIS EXIO DEV POINTER S20203* 01850000 * 5 DPSCND CHAR(2), /* SET TO FOXES FOR SCND DP S20203* 01860000 * 5 OLTEPDV CHAR(2), /* OLTEP DEVICE FOR DATA PROT.* 01870000 * 3 OCWCNT CHAR(1), /* OLT CCW COUNT * 01880000 * 3 OFLGS CHAR(1), /* OLT OLTEP FLAGS * 01890000 * 5 * BIT(1), /* NOT USED BY THIS MODULE * 01900000 * 5 * BIT(1), /* NOT USED BY THIS MODULE * 01910000 * 5 ODAD BIT(1), /* DASD DEVICE * 01920000 * 5 OFMMS BIT(1), /* OLT WANTS FRIMS CHANGE * 01930000 * 5 OLN0 BIT(1), /* LINE 0 FOR TP * 01940000 * 5 ORCAL BIT(1), /* RECALIBRATE REQUESTED * 01950000 * 5 OGPTST BIT(2), /* TAPE GAP TEST * 01960000 * 7 OFNC24 BIT(1), /* GAP FUNCTION 24 REQUESTED * 01970000 * 7 OFNC23 BIT(1), /* GAP FUNCTION 23 REQUESTED * 01980000 * 3 OMSKMD CHAR(1), /* OLT FILEMASK/MODE SET * 01990000 * 3 * CHAR(1), /* NOT USED * 02000000 * 3 OGPPAR CHAR(16), /* TAPE GAP PARAMETERS -OR- * 02010000 * 5 OSKAD CHAR(6); /* DASO SEEK ADDRESS * 02020000 * GEN (EJECT); 02030000 EJECT 02040000 DS 0H 02050000 * DECLARE 02060000 * /****************************************************** 02070000 * /* TEST EVENT CONTROL BLOCK (TECB) MAP * 02080000 * /****************************************************** 02090000 * 1 TTECB BASED(OTECB), /* BASED ON PTR IN PARM LIST * 02100000 * 3 TEVCB CHAR(4), /* EVENT CONTROL BLOCK ECB * 02110000 * 3 TCCPS CHAR(1), /* CONDITION CODE POSTING * 02120000 * 3 TCCW1 CHAR(7), /* 7 BYTE CSW * 02130000 * 3 TSNS1 CHAR(8); /* SENSE FIELD * 02140000 * GEN (EJECT); 02150000 EJECT 02160000 DS 0H 02170000 * DECLARE 02180000 * /****************************************************** 02190000 * /* SWITCHES IN OLTEP COMMON AREA USED IN IFDOLT05 * 02200000 * /****************************************************** 02210000 * 1 * BASED(ADDR(CESWT)), /* BASED ON COMMON AREA PTR * 02220000 * 3 OSW0 CHAR(1), /* INTERNAL CESWT LABEL * 02230000 * 5 * BIT(1), /* NOT USED * 02240000 * 5 DATPRSC BIT(1), /* DATA PROTECT REQUIRES EXCP * 02250000 * 5 * BIT(6), /* NOT USED * 02260000 * 3 OSW1 CHAR(1), /* INTERNAL CESWT1 LABEL * 02270000 * 5 * BIT(1), /* NOT USED * 02280000 * 5 SKTST BIT(1), /* 2321 SEEKING BEYOND CE CL * 02290000 * 5 * BIT(1), /* NOT USED * 02300000 * 5 WTFLG BIT(1), /* WAIT FLAG (2 GOES FOR TP) * 02310000 * 5 CHNGM BIT(1), /* MODE/MASK CHNG O.K. * 02320000 * 5 * BIT(1), /* NOT USED * 02330000 * 5 OLNOK BIT(1), /* ON LINE O.K. * 02340000 * 5 TPACT BIT(1), /* T.P. (2 LINES) IN USE * 02350000 * 3 OSW2 CHAR(1), /* INTERNAL CESWT2 LABEL * 02360000 * 5 DYCMB BIT(1), /* DYNAMIC COMMUNICATION BYPS* 02370000 * 5 * BIT(6), /* NA M4506* 02380000 * 5 AMERLDV BIT(1), /* MERLIN DEVICE M4506* 02390000 * 3 OSW3 CHAR(1), /* INTERNAL CESWT3 LABEL * 02400000 * 5 * BIT(2), /* * 02410000 * 5 NOTSTNG BIT(1), /* BYPASS TESTING THIS DEVICE * 02420000 * 3 OSW4 CHAR(1), /* INTERNAL CESWT4 LABEL * 02430000 * 3 OSW5 CHAR(1), /* INTERNAL CESWT5 LABEL * 02440000 * 3 OSW6 CHAR(1), /* INTERNAL CESWT6 LABEL * 02450000 * 5 * BIT (3), 02460000 * 5 FPVLTE BIT(1), /* SECTION VIOLATED FILE PROT.* 02470000 * 5 NOTMER BIT(1); /* TIMER NOT RUNNING (GAP TST)* 02480000 * GEN (EJECT); 02490000 EJECT 02500000 DS 0H 02510000 * DECLARE 02520000 * 1 * BASED(PNT5), /* PNTD POINTS TO THE ENTRY IN USE * 02530000 * /******************************************************************** 02540000 * /* THE FOLLOWING MAP DEFINES A DEVTAB ENTRY. EACH ENTRY = 56 BYTES * 02550000 * /******************************************************************** 02560000 * 3 DEBAD CHAR(8), /* EBCDIC DEVICE ADDR * 02570000 * 3 DUCBA PTR(31), /* UCB ADDR FOR DEVICE S21050* 02580000 * 5 * CHAR(1), /* NOT USED S21050* 02590000 * 5 DUCBA3 CHAR(3), /* 24 BIT UCB ADDRESS S21050* 02600000 * 7 * CHAR(1), /* FILL * 02610000 * 7 UCB2BYTE CHAR(2), /* TWO BYTE ADDR S21050* 02620000 * 3 DEVFL1 CHAR(1), /* FIRST FLAG BYTE IN DEVTAB * 02630000 * 5 ONLNE BIT(1), /* DEVICE ON/OFF LINE STATUS * 02640000 * 5 PRIME BIT(1), /* PRIMARY DEVICE INDICATOR * 02650000 * 5 DPDONE BIT(1), /* DATA PROTECTION COMPLETE * 02660000 * 5 ACTVE BIT(1), /* ACTIVE DEVICE * 02670000 * 5 ALLCT BIT(1), /* ALLOCATED DEVICE * 02680000 * 5 GRBED BIT(1), /* GRABBED (SECONDARY) DEVICE * 02690000 * 5 FLPRT BIT(1), /* FILE PROTECT MODE DEVICE * 02700000 * 5 ACTSC BIT(1), /* LAST ACTIVE SECONDARY DEVICE * 02710000 * 3 DEVFL2 CHAR(1), /* SECOND FLAG BYTE IN DEVTAB * 02720000 * 5 DSNAME BIT(1), /* DSNAME FLIP-FLOP * 02730000 * 5 SHARED BIT(1), /* SHARED VOLUME * 02740000 * 5 CEVOL BIT(1), /* C.E. VOLUME * 02750000 * 5 STDLBL BIT(1), /* STANDARD LABELED TAPE * 02760000 * 5 CHANFUNC BIT(1), /* CHANNEL FUNCTION * 02770000 * 5 BYPS BIT(1), /* BYPASS FUNCTION INVOKED * 02780000 * 5 CEDE BIT(1), /* CE-DE FUNCTION INVOKED * 02790000 * 5 ATTN BIT(1), /* ATTNIN FUNCTION INVOKED * 02800000 * 3 DEVFL3 CHAR(1), /* THIRD FLAG BYTE IN DEVTAB * 02810000 * 5 ANRNOTST BIT(1), /* NO TEST BIT * 02820000 * 5 * BIT(1), /* FESERVED * 02830000 * 5 HIODONE BIT(1), /* HIO ISSUED BIT * 02840000 * 3 DEVFL4 CHAR(1), /* FOURTH FLAG BYTE IN DEVTAB * 02850000 * 5 RMTLNDAB BIT(1), /* REMOTE LINE DISABLED BY OLTEP * 02860000 * 5 RMTLNENA BIT(1), /* REMOTE LINE ENABLED * 02870000 * 5 FRSTEXIO BIT(1), /* FIRST EXIO ISSUED * 02880000 * 5 * BIT(5), /* EXPANSION * 02890000 * 3 DVEXT1 CHAR(6), /* LOW DASD EXTENT * 02900000 * 3 DVEXT2 CHAR(6), /* HIGH DASD EXTENT * 02910000 * 5 DVCCHH2 CHAR(4), /* CC HH OF 2ND EXTENT * 02920000 * 3 * CHAR(2), 02930000 * 3 MODESET CHAR(1), /* MODE SET SAVE AREA * 02940000 * 3 EXPOSURE CHAR(1), /* EXPOSURE # FOR ZUES TYPES * 02950000 * 3 FULLADDR CHAR(4), /* FOUR BYTE HEX ADDRESS * 02960000 * 5 FILL CHAR(2), /* NNOT USED * 02970000 * 5 DEHAD CHAR(2), /* TWO BYTE HEX ADDR * 02980000 * 3 CDSINFOR CHAR(16), /* CDS INFORMATION FOR THIS DEV * 02990000 * 5 MODEL CHAR(1), /* MODEL # * 03000000 * 5 FEATURES CHAR(1), /* FEATURE ON THIS MODEL * 03010000 * 5 CLASS CHAR(1), /* CLASS * 03020000 * 7 TAPE BIT(1), /* 80 = TAPE CLASS S20105* 03030000 * 7 * BIT(1), /* S20105* 03040000 * 7 DASD BIT(1), /* 20 = DASD CLASS S20105* 03050000 * 7 * BIT(5), /* EXPANSION S21050* 03060000 * 5 TYPE CHAR(1), /* TYPE * 03070000 * 5 CDSCNT CHAR(1), /* CDS BYTE COUNT * 03080000 * 5 CDSFLAGS CHAR(1), /* CDS FLAGS * 03090000 * 7 * BIT(7), /* NOT USED BY EXIO * 03100000 * 7 DEVREM BIT(1), /* THIS IS A REMOTE TERMINAL * 03110000 * 5 EXTSGMSK CHAR(2), /* EXTERNAL SIGNAL M ASK * 03120000 * 5 SYMNAME CHAR(8), /* SYMBOLIC NAME * 03130000 * 3 * CHAR(4); /* EXPANSION * 03140000 * /* S21050* 03150000 * GEN (EJECT); 03160000 EJECT 03170000 DS 0H 03180000 * DECLARE 03190000 * /****************************************************** 03200000 * /* THE FOLLOWING MAP DEFINES THE OLTEP IOB-OCB-ECB * 03210000 * /****************************************************** 03220000 * 1 IOBOCB BASED(PNT3), /* PNT3 REFERS TO IOB-OCB * 03230000 * 3 IOBFL1 CHAR(1), /* IOB FLAG 1 * 03240000 * 3 IOBFL2 CHAR(1), /* IOB FLAG 2 * 03250000 * 3 * CHAR(2), /* IOB SENSE BYTES * 03260000 * 3 * CHAR(1), /* IOB ECB CODE * 03270000 * 3 IOBECBPT PTR(24), /* IOB ECB ADDRESS * 03280000 * 3 * CHAR(8), /* IOB FLAG 3 AND CSW * 03290000 * 3 IOBSIOCC CHAR(1), /* IOB SIO CONDITION CODE * 03300000 * 3 IOBCCWPT PTR(24), /* IOB CCW POINTER * 03310000 * 3 * CHAR(1), /* IOB EXPANSION * 03320000 * 3 IOBDCBPT PTR(24), /* IOB DCB POINTER * 03330000 * 3 * CHAR(1), /* REPOSITION MODIFIER * 03340000 * 3 IOBRSTRT CHAR(3), /* RESTART ADDRESS * 03350000 * 3 IOBTPCNT CHAR(2), /* IOB TAPE BLOCK COUNT * 03360000 * 3 * CHAR(2), /* IOB ERROR COUNT * 03370000 * 3 IOBMEXT CHAR(1), /* IOB DASD EXTENT * 03380000 * 3 IOBSKAD CHAR(6), /* IOB DASD SEEK ADDRESS * 03390000 * 5 IOBBIN CHAR(2), /* 2321 BIN ADDRESS * 03400000 * 3 * CHAR(1), /* IOB EXPANSION * 03410000 * 2 IOS CHAR(24), /* IOS RESERVE AREA * 03420000 * 3 SENSECMD CHAR(8), /* IOS SENSE COMMAND OCB-24 * 03430000 * 3 EXPOSUER CHAR(1), /* IOS EXPOSURE NUMBER OCB-16 * 03440000 * 3 SIOTWOCC CHAR(1), /* SECOND SIO C.CODE OCB-15 * 03450000 * 3 SIO2STAT CHAR(2), /* SECOND SIO STATUS OCB-14 * 03460000 * 3 OCBFL1 CHAR(1), /* FLAGS FOR THIS OCB OCB-12 * 03470000 * 5 INUSE BIT(1), /* THIS OCB-IOB IS IN USE * 03480000 * 5 EXATN BIT(1), /* OCB EXPECTING ATTENTION * 03490000 * 5 * BIT(1), /* EXPANSION * 03500000 * 5 * BIT(1), /* EXPANSION * 03510000 * 5 PCIDN BIT(1), /* PGM CONTROLED INTR OCCURED * 03520000 * 5 PSTD1ST BIT(1), /* 1 ST CSW HAS BEEN POLLED * 03530000 * 5 * BIT(2), /* * 03540000 * 3 ODEVAD PTR(24), /* PTR TO ENTRY IN DEVTAB OCB-13 * 03550000 * 3 SIOCNT CHAR(1), /* NUMBER OF TIME SIO WAS ISSUED * 03560000 * 3 SIOCC2 CHAR(1), /* FIRST SIO C.CODE * 03570000 * 5 ILC BIT(2), /* INSTRUCTION LENGTH CODE * 03580000 * 5 COCO BIT(2), /* SIO CONDITION CODE * 03590000 * 5 * BIT(4), /* PROGRAM MASK NOT USED * 03600000 * 3 SIOSTAT CHAR(2), /* FIRST SIO STATUS * 03610000 * 3 OTECBAD PTR(31), /* TECB POINTER OCB-4 * 03620000 * 2 OCB CHAR(48), /* DUMMY LABEL * 03630000 * 3 OCBECB CHAR(4), /* ECB * 03640000 * 5 ECB CHAR(1), /* SYS ECB * 03650000 * 7 * BIT(1), /* ECB WAIT BIT * 03660000 * 7 ECBDNE BIT(1), /* ECB COMPLETE BIT * 03670000 * 5 * CHAR(1), /* AREA IN ECB FOR OLTEP POST * 03680000 * 5 ECBPST CHAR(2), /* AREA IN ECB FOR OLTEP POST * 03690000 * 3 * CHAR(8), /* CSW AREA FOR CHAN END * 03700000 * 5 OINTCT CHAR(1), /* COUNT OF CSWS STORED * 03710000 * 5 OCSW1 CHAR(7), /* FIRST CSW STORED * 03720000 * 7 * CHAR(3), /* CSW ADDRESS * 03730000 * 7 STS1 CHAR(2), /* CSW STATUS (1ST CSW) * 03740000 * 3 * CHAR(8), /* CSW AREA FOR DEV END * 03750000 * 5 * CHAR(1), /* NOT USED * 03760000 * 5 OCSW2 CHAR(7), /* SECOND CSW STORED * 03770000 * 7 * CHAR(3), /* * 03780000 * 7 STS2 CHAR(2), /* 2ND CSW STATUS * 03790000 * 3 * CHAR(36), /* SENSE AREA * 03800000 * 5 OSNSCT CHAR(1), /* NO. OF SENSE BYTES * 03810000 * 5 OSNS CHAR(1); /* 1ST SENSE BYTE OF POSSIBLE 35 * 03820000 * GEN (EJECT); 03830000 EJECT 03840000 DS 0H 03850000 * DECLARE 03860000 * /****************************************************** 03870000 * /* THE FOLLOWING MAP DEFINES A DEB - DCB * 03880000 * /****************************************************** 03890000 * 1 * BASED(PNT4), /* THIS REG SET TO CORRECT DEB* 03900000 * 3 * CHAR(1), /* NOT USED BY OLTEP * 03910000 * 3 * CHAR(3), /* NOT USED BY OLTEP * 03920000 * 3 * CHAR(1), /* NOT USED BY OLTEP * 03930000 * 3 * CHAR(3), /* NOT USED BY OLTEP * 03940000 * 3 * CHAR(1), /* NOT USED BY OLTEP * 03950000 * 5 TDCBSTRT CHAR(1), /* START OF TEST DCB * 03960000 * 3 * CHAR(3), /* NOT USED BY OLTEP * 03970000 * 3 * CHAR(1), /* NOT USED BY OLTEP * 03980000 * 3 * CHAR(3), /* NOT USED BY OLTEP * 03990000 * 3 TDEBEXNO CHAR(1), /* NUMBER OF EXTENTS * 04000000 * 3 TDEBPRGC PTR(24), /* PURGE CHAIN * 04010000 * 3 * CHAR(1), /* NOT USED * 04020000 * 3 TDEBPRGL PTR(24), /* PURGE LIST POINTER * 04030000 * 3 TDEBPRT CHAR(1), /* PROTECT KEY * 04040000 * 3 TDEBDCB PTR(24), /* DCB POINTER * 04050000 * 3 TDEBEXSC CHAR(1), /* EXTENT SCALE * 04060000 * 3 TDEBAPPN PTR(24), /* APPENDAGE TABLE POINTER * 04070000 * 3 TDEBMSFM CHAR(1), /* MODE SET - FILE MASK * 04080000 * 3 TDEBUCBA CHAR(3), /* UCB ADDRESS * 04090000 * 3 TDEBEXT1 CHAR(6), /* DASD LOW EXTENT * 04100000 * 5 TDEBBIN CHAR(2), /* 2321 BIN ADDRESS * 04110000 * 3 TDEBEXT2 CHAR(6), /* DASD HIGH EXTENT * 04120000 * 3 * CHAR(4), /* NOT USED * 04130000 * 3 TDCBFLG CHAR(1), /* TEST DCB FLAG * 04140000 * 5 TERFLGS BIT(2), /* IOS ERROR FLAGS * 04150000 * 5 * BIT(2), /* IOS PRINTER FLAGS * 04160000 * 5 TBYERPS BIT(2), /* IOS E R P FLAGS * 04170000 * 5 * BIT(2), /* IOS RESERVED * 04180000 * 3 TDCBDEBA PTR(24); /* DCB -44- DEB POINTER * 04190000 * /******************************************************************** 04200000 * /*** THE FOLLOWING MAP IS THE FIRST 4 BYTES OF A UCB *** 04210000 * /******************************************************************** 04220000 * DECLARE 04230000 * 1 * BASED(DUCBA), /* UCB ADDR FROM DEVTAB * 04240000 * 3 * CHAR(1), /* NOT USED * 04250000 * 3 * CHAR(1), /* NOT USED * 04260000 * 3 UCBID CHAR(1), /* HEXFF IF VALID UCB * 04270000 * 3 SRTESTAT CHAR(1), /* STATUS BYTE * 04280000 * 5 UCBONLNE BIT(1), /* ON-OFFLINE ID * 04290000 * 5 * BIT(7); /* NOT USED * 04300000 * GEN (EJECT); 04310000 EJECT 04320000 DS 0H 04330000 * GEN (TITLE ' OS OLTEP EXIO MODULE -IFDOLT05-'); 04340000 TITLE ' OS OLTEP EXIO MODULE -IFDOLT05-' 04350000 DS 0H 04360000 * /************************************************************ 04370000 * /* PERFORM MODULE INITIALIZATION * 04380000 * /************************************************************ 04390000 * RESTRICT (LSTPTR,COMMON); /* R1 AND R2 CONTAIN INPUT * 04400000 * TTECB = TTECB&&TTECB; /* CLEAR THE TECB * 04410000 L @3,0(0,@1) 0076 04420000 XC 0(20,@3),0(@3) 0076 04430000 * IF TPACT = '0'B THEN /* IF NOT A TELE COM RUN GO * 04440000 TM A00031+1,B'00000001' 0077 04450000 BC 05,@9FF 0077 04460000 * DO; /* IF ENTRY TO THIS MODULE S20203* 04470000 * R9=DEVAD; /* IS FROM DATA PROTECTION S20203* 04480000 L @9,8(0,@1) 0079 04490000 * IF DATPRSC='1'B THEN /*AND THIS IS AN EXIO TO S20203* 04500000 TM A00031,B'01000000' 0080 04510000 BC 12,@9FE 0080 04520000 * IF R9 < 0 THEN /* A SCND DEVICE USE THE S20203* 04530000 LTR @9,@9 0081 04540000 * GOTO SETSCND; /* SCNDRY SET OF CTL BLKS S20203* 04550000 BC 04,SETSCND 0082 04560000 * GOTO XIO001; /* ELSE THE PRIMARY SET S20203* 04570000 BC 15,XIO001 0083 04580000 * END; /* S20203* 04590000 * IF OLN0 = '0' B THEN /* IF TELE COM IS IT A LINE 0 * 04600000 @9FF TM 13(@1),B'00001000' 0085 04610000 * GO TO XIO001; /* REQUEST GO TO SET UP PRIME * 04620000 BC 08,XIO001 0086 04630000 * SETSCND: R9=0; /* INITIALIZE REG 9 TO ZERO S20203* 04640000 SETSCND SR @9,@9 0087 04650000 * RESTRICT (PNT3,PNT4,PNT5); /* INTERNAL REGISTER RESTRICT * 04660000 * PNT3 =ADDR(TIOB2); /* PNTR 3 = ADDR OF TIOB2 * 04670000 LA @3,TIOB2 0089 04680000 * PNT4 =ADDR(TDEB2); /* PNTR 4 = ADDR OF TDEB2 * 04690000 LA @4,TDEB2 0090 04700000 * XDVADR = SSDVAD2; /* DEVICE ADDRESS IS 2NDARY * 04710000 MVC XDVADR(2),A00009+26 0091 04720000 * SVDBAD = TSTDEBAD+64; /* DEB ADDRESS IN SUBPOOL 254 * 04730000 LA @F,64 0092 04740000 A @F,TSTDEBAD 0092 04750000 ST @F,SVDBAD 0092 04760000 * GO TO XIO002; /* BYPASS PRIME DEV INITILIZE * 04770000 BC 15,XIO002 0093 04780000 * XIO001: /* ENTRY TO INITILIZE PRIME * 04790000 * PNT3 =ADDR(TIOB1); /* PNTR 3 = ADDR OF TST IOB 1 * 04800000 XIO001 LA @3,TIOB1 0094 04810000 * PNT4 =ADDR(TDEB1); /* PNTR 4 = ADDR OF TST DEB 1 * 04820000 LA @4,TDEB1 0095 04830000 * XDVADR = SDVAD2; /* DEVICE ADDR OF PRIME * 04840000 MVC XDVADR(2),A00009+14 0096 04850000 * SVDBAD = TSTDEBAD; /* DEB ADDRESS IN SUBPOOL 254 * 04860000 MVC SVDBAD(4),TSTDEBAD 0097 04870000 * XIO002: /* ENTRY TO SEARCH DEVTAB * 04880000 * IF DATPRSC = '1'B THEN /* IF THIS IS AN INTERNAL CALL* 04890000 XIO002 TM A00031,B'01000000' 0098 04900000 BC 12,@9FD 0098 04910000 * XDVADR = OLTEPDV; /* USE DEVICE ADDRR SUPPLIED * 04920000 MVC XDVADR(2),10(@1) 0099 04930000 * PNT5 = DEVTBPTR; /* GET PTR TO DEVTAB S21050* 04940000 @9FD L @5,DEVTBPTR 0100 04950000 * RESTRICT (WRK1); /* REGISTER FOR DEVTAB SEARCH * 04960000 * DO WRK1 = UNICTR TO 1 BY-1;/* SEARCH BY AMOUNT OF DEVICES* 04970000 SR @8,@8 0102 04980000 IC @8,UNICTR 0102 04990000 LTR @8,@8 0102 05000000 BC 12,@DO9FB 0102 05010000 * IF XDVADR = DEHAD THEN /* SEARCH FOR A COMPARE OF * 05020000 @DO9FC CLC XDVADR(2),34(@5) 0103 05030000 * GO TO XIO003; /* DEVICE ADDRESS * 05040000 BC 08,XIO003 0104 05050000 * PNT5 = PNT5 + TABLNGTH; /* GO TO NEXT ENTRY S21050* 05060000 AH @5,TABLNGTH 0105 05070000 * END; /* IF A DEVICE IS NOT FOUND A * 05080000 * GOTO XIO004A; /* END JOB * 05090000 BCT @8,@DO9FC 0106 05100000 BC 15,XIO004A 0107 05110000 * RELEASE (WRK1); /* MAKE R8 AVAILABLE * 05120000 * GEN (EJECT); 05130000 EJECT 05140000 DS 0H 05150000 * XIO003: /* ALL POINTERS SET-EXIO TO * 05160000 * /* EXCP CONVERSION CAN START * 05170000 * /************************************************************ 05180000 * /* INITILIZATION OF THE IOB-OCB FOLLOWS * 05190000 * /************************************************************ 05200000 * IOBOCB =IOBOCB&&IOBOCB; /* CLEAR THE IOB,ECB AND OCB * 05210000 XIO003 XC 0(120,@3),0(@3) 0110 05220000 * IOBFL1 ='00000010'B; /* SET UNRELATED FLAG * 05230000 MVI 0(@3),B'00000010' 0111 05240000 * IOBCCWPT = OCCWS3; /* SET IOB PTR TO CCWS * 05250000 MVC 17(3,@3),5(@1) 0112 05260000 * IOBDCBPT = ADDR(TDCBSTRT); /* SET IOB PTR TO DCB * 05270000 LA @F,8(0,@4) 0113 05280000 ST @F,@TEMP4 0113 05290000 MVC 21(3,@3),@TEMP4+1 0113 05300000 * IOBECBPT = ADDR(OCBECB); /* SET IOB PTR TO ECB * 05310000 LA @F,64(0,@3) 0114 05320000 ST @F,@TEMP4 0114 05330000 MVC 5(3,@3),@TEMP4+1 0114 05340000 * IOBRSTRT = ALL1S; /* INDICATE LAST IOB IN CHAIN * 05350000 MVC 25(3,@3),XIOTAB+25 0115 05360000 * OTECBAD = ADDR(TTECB); /* SET OCB POINTER TO TECB * 05370000 L @C,0(0,@1) 0116 05380000 ST @C,60(0,@3) 0116 05390000 * OSNSCT = '06'X; /* SET OCB SENSE COUNT TO SIX * 05400000 MVI 84(@3),X'06' 0117 05410000 * IF AMERLDV='1'B THEN /* CHECK FOR MERLIN M4505* 05420000 TM A00031+2,B'00000001' 0118 05430000 BC 12,@9F8 0118 05440000 * OSNSCT='18'X; /* SENSE CNT MERLIN M4505* 05450000 MVI 84(@3),X'18' 0119 05460000 * ODEVAD = PNT5; /* SET OCB DEVTAB POINTER * 05470000 @9F8 ST @5,@TEMP4 0120 05480000 MVC 53(3,@3),@TEMP4+1 0120 05490000 * GEN (EJECT); 05500000 EJECT 05510000 DS 0H 05520000 * /************************************************************ 05530000 * /* PERFORM SYSTEM BLOCKS INITILIZATION (DEB-DCB) * 05540000 * /************************************************************ 05550000 * TDEBEXNO = '01'X; /* SET EXTENT NUMBER =1 * 05560000 MVI 16(@4),X'01' 0122 05570000 * TDEBDCB = ADDR(TDCBSTRT); /* SET DEB DCB POINTER * 05580000 LA @F,8(0,@4) 0123 05590000 ST @F,@TEMP4 0123 05600000 MVC 25(3,@4),@TEMP4+1 0123 05610000 * TDEBAPPN = AVTPTR; /* SET DEB APPENDAGE POINTER * 05620000 MVC 29(3,@4),AVTPTR+1 0124 05630000 * TDEBUCBA = DUCBA3; /* SET DEB UCB POINTER * 05640000 MVC 33(3,@4),9(@5) 0125 05650000 * TBYERPS = '11'B; /* SET TO BYPASS E.R.P.S * 05660000 OI 52(@4),B'00001100' 0126 05670000 * TERFLGS = '00'B; /* RESET ANY ERROR INDICATORS * 05680000 NI 52(@4),B'00111111' 0127 05690000 * TDCBDEBA = SVDBAD; /* SBPL 254 DEB ADDR TO DCB * 05700000 MVC 53(3,@4),SVDBAD+1 0128 05710000 * IF OFMMS='1'B THEN /* IF OLT WANTS MASK/MODE CHNG* 05720000 TM 13(@1),B'00010000' 0129 05730000 BC 12,@9F7 0129 05740000 * DO; /* THEN, * 05750000 * TDEBMSFM = OMSKMD; /* SET OLT MASK/MODE IN DEB * 05760000 MVC 32(1,@4),14(@1) 0131 05770000 * IF SFLPRT = '1'B THEN /* IF FILE PROTECT IS SET THEN* 05780000 TM A00009+10,B'01000000' 0132 05790000 BC 12,@9F6 0132 05800000 * DO; /* THEN IT MUST STILL INHIBIT * 05810000 * TDEBMSFM = TDEBMSFM&'00111111'B;/* WRITING - ZERO BITS 0&1* 05820000 NI 32(@4),B'00111111' 0134 05830000 * TDEBMSFM=TDEBMSFM³'01000000'B; /* AND SET BIT 1. A39019* 05840000 OI 32(@4),B'01000000' 0135 05850000 * END; 05860000 * END; 05870000 @9F6 EQU * 0137 05880000 * GEN (EJECT); 05890000 @9F7 EQU * 0138 05900000 EJECT 05910000 DS 0H 05920000 * /************************************************************ 05930000 * /* PERFORM DEVICE DEPENDENT SYS BLOCK INITIALIZATION * 05940000 * /************************************************************ 05950000 * IF ODAD = '1'B THEN /* IF THIS IS A DASD DEVICE * 05960000 TM 13(@1),B'00100000' 0139 05970000 BC 12,@9F5 0139 05980000 * DO; /* EXECUTE FOLLOWING CODE * 05990000 * IOBSKAD = OSKAD; /* SEEK ADDRESS TO IOB * 06000000 MVC 33(6,@3),16(@1) 0141 06010000 * TDEBEXSC = '04'X; /* DEB DASD EXTENT SCALE = 4 * 06020000 MVI 28(@4),X'04' 0142 06030000 * IF SFLPRT = '1'B THEN /* IF RUNNING FILE PROTECTED * 06040000 TM A00009+10,B'01000000' 0143 06050000 BC 12,@9F4 0143 06060000 * DO; /* THEN DO FOLLOWING TESTS * 06070000 * RESTRICT (PNT7,WRK1); /* RESTRICT CCW POINTER * 06080000 * PNT7 = OCCWS; /* INITIALIZE CCW POINTER * 06090000 L @7,4(0,@1) 0146 06100000 * DO WRK1 = OCWCNT TO 1 BY-1;/* LOOP TO SCAN ALL CCW'S * 06110000 SR @F,@F 0147 06120000 IC @F,12(0,@1) 0147 06130000 LTR @8,@F 0147 06140000 BC 12,@DO9F2 0147 06150000 * IF COMCDE < '1F'X & /* IF CCW COMMAND LESS THAN IF* 06160000 * RDCM = '0'B & /* AND THE READ BIT(6) IS OFF * 06170000 * WRCM = '1'B THEN /* WITH WRITE BIT(7) ON THEN * 06180000 @DO9F3 CLI 0(@7),X'1F' 0148 06190000 BC 10,@9EF 0148 06200000 TM 0(@7),B'00000010' 0148 06210000 BC 05,@9EE 0148 06220000 TM 0(@7),B'00000001' 0148 06230000 BC 12,@9ED 0148 06240000 * DO; /* GO TO OLTEP WITH FILE PRTCT* 06250000 * FPVLTE = '1'B; /* VOLATION SET BECAUSE, * 06260000 OI A00031+6,B'00010000' 0150 06270000 * GO TO XIOEX1; /* CHAIN VIOLATES F.P.M. * 06280000 BC 15,XIOEX1 0151 06290000 * END; 06300000 * PNT7 = ADDR(NXTCCW); /* STEP TO NEXT CCW * 06310000 @9ED EQU * 0153 06320000 @9EE EQU * 0153 06330000 @9EF LA @7,8(0,@7) 0153 06340000 * END; /* IF NO VIOLATIONS * 06350000 * RELEASE (PNT7,WRK1); /* RELEASE PNT7 TO USAGE AND * 06360000 BCT @8,@DO9F3 0154 06370000 * IF SKTST = '1'B THEN /* IF 2321 WANTS BIN CHANGE * 06380000 @DO9F2 TM A00031+1,B'01000000' 0156 06390000 BC 12,@9EC 0156 06400000 * TDEBBIN = IOBBIN; /* SET CORRECT DEB BIN ADDR * 06410000 MVC 36(2,@4),33(@3) 0157 06420000 * IF ORCAL = '1'B THEN /* IF RECALIBRATE REQUESTED, * 06430000 @9EC TM 13(@1),B'00000100' 0158 06440000 BC 12,@9EB 0158 06450000 * TBYERPS = '00'B; /* SET ERPS ACTIVE * 06460000 NI 52(@4),B'11110011' 0159 06470000 * END; /* END DASDI INITIALIZATION * 06480000 * END; /* BEGIN NOT DASDI INITLIZTN * 06490000 BC 15,@9EA 0162 06500000 * ELSE /* * 06510000 * DO; /* THE NON DASD CONSISTS OF - * 06520000 * TDEBEXSC = '02'X; /* SETTING DEB EXT SCALE = 2 * 06530000 @9F5 MVI 28(@4),X'02' 0163 06540000 * END; /* * 06550000 * GEN (EJECT); 06560000 @9EA EQU * 0165 06570000 EJECT 06580000 DS 0H 06590000 * /************************************************************ 06600000 * /* MOVE DEB TO SUBPOOL 254 * 06610000 * /************************************************************ 06620000 * RESTRICT (WRK1); /* RESTRICT SAVE REGISTER * 06630000 * RPTID = MYID; /* MY ID TO PARAMETER LIST * 06640000 MVC A00003+2(2),MYID 0167 06650000 * RPTPRM1 = PNT4; /* TEST DEB ADDRESS * 06660000 ST @4,A00003+4 0168 06670000 * RPTPRM2 = SVDBAD; /* DEB SBPL 254 ADDRESS * 06680000 MVC A00003+8(4),SVDBAD 0169 06690000 * WRK1 = LSTPTR; /* SAVE EX10 LIST POINTER * 06700000 LR @8,@1 0170 06710000 * LSTPTR = 72; /* R1 IS FUNCTION 48 * 06720000 LA @1,72 0171 06730000 * R0 = ADDR(RPTPRM1); /* R0 POINTS TO PARAMETER LIST* 06740000 LA @0,A00003+4 0172 06750000 * GEN (SVC DIAG); /***** SVC 59 TO MOVE DEB **** 06760000 SVC DIAG 06770000 DS 0H 06780000 * LSTPTR = WRK1; /* RESTORE LIST POINTER * 06790000 LR @1,@8 0174 06800000 * RELEASE (WRK1); /* RELEASE SAVE REG FOR USAGE * 06810000 * GEN (EJECT); 06820000 EJECT 06830000 DS 0H 06840000 * /************************************************************ 06850000 * /* INSURE DEVICE HAS CE/DE FUNCTION INVOKED AND NO OTHERS* 06860000 * /************************************************************ 06870000 * RPTID = MYID; /* MY I.D. TO SVC LIST * 06880000 MVC A00003+2(2),MYID 0177 06890000 * RPTPRM1 = DUCBA; /* UCB ADDRESS TO SVC LIST * 06900000 MVC A00003+4(4),8(@5) 0178 06910000 * RPTPRM2 = SVDBAD; /* DEB ADDRESS TO SVC LIST * 06920000 MVC A00003+8(4),SVDBAD 0179 06930000 * RPTPRM3 = APMMPT; /* IECOLTS ADDRESS TO SVC LIST* 06940000 MVC A00003+12(4),APMMPT 0180 06950000 * RESTRICT (WRK1); /* WRK1 WILL SAVE LIST POINTER* 06960000 * WRK1 = LSTPTR; /* SAVE THE EX10 LIST POINTER * 06970000 LR @8,@1 0182 06980000 * IF BYPS = '1'B THEN /* IF THE BYPASS FUNCTION IS * 06990000 TM 13(@5),B'00000100' 0183 07000000 BC 12,@9E9 0183 07010000 * DO; /* ON IT MUST BE REVOKED * 07020000 * R0 = ADDR(RPTPRM1); /* R0 IS SVC LIST POINTER * 07030000 LA @0,A00003+4 0185 07040000 * LSTPTR = 16; /* R1 IS CALLING CODE * 07050000 LA @1,16 0186 07060000 * GEN (SVC DIAG); /* SVC TO REVOKE FUNCTION * 07070000 SVC DIAG 07080000 DS 0H 07090000 * BYPS = '0'B; /* RESET FUNCTION INVOKED FLAG* 07100000 NI 13(@5),B'11111011' 0188 07110000 * END; /* * 07120000 * IF CEDE = '0'B THEN /* IF NOT USING CE/DE FUNCTION* 07130000 @9E9 TM 13(@5),B'00000010' 0190 07140000 BC 05,@9E8 0190 07150000 * DO; /* THEN PROCEED TO INVOKE IT * 07160000 * R0 = ADDR(RPTPRM1); /* R0 IS PARAMETER LIST PNTR * 07170000 LA @0,A00003+4 0192 07180000 * LSTPTR = 40; /*R1 IS CALLING CODE * 07190000 LA @1,40 0193 07200000 * GEN (SVC DIAG); /* SVC 59 TO GET CE/DE FUNC * 07210000 SVC DIAG 07220000 DS 0H 07230000 * IF R15 ª= 0 THEN /* IF R15 IS NOT ZERO ON RTRN * 07240000 LTR @F,@F 0195 07250000 BC 08,@9E7 0195 07260000 * DO; /* IT INDICATES THAT THIS IS * 07270000 * /* THE 2ND OLTEP IN THE SYSTEM* 07280000 * XIO004A: 07290000 * VID='05'; /* MODULE ID * 07300000 XIO004A MVC VID(2),@C14 0197 07310000 * R0=ADDR(ROPT); /* SVC PARAMETER LIST * 07320000 LA @0,ROPT 0198 07330000 * R1=HEX14; /* CALLING CODE TO CLEAN UP * 07340000 L @1,HEX14 0199 07350000 * GEN(SVC 59); /* ISSUE SVC 59 * 07360000 SVC 59 07370000 DS 0H 07380000 * R13=ENDJOB; /* INDICATE END OF JOB * 07390000 L @D,ENDJOB 0201 07400000 * RETURN; /* END JOB * 07410000 BC 15,@EL01 0202 07420000 * END; /* FINAL RETURN * 07430000 * CEDE = '1'B; /* SET CE-DE FUNCTION INVOKED * 07440000 @9E7 OI 13(@5),B'00000010' 0204 07450000 * END; 07460000 * LSTPTR = WRK1; /* RESTORE EXIO LIST POINTER * 07470000 @9E8 LR @1,@8 0206 07480000 * GEN (EJECT); 07490000 EJECT 07500000 DS 0H 07510000 * /************************************************************ 07520000 * /* EXECUTE CHANNEL PROGRAM * 07530000 * /************************************************************ 07540000 * IF OGPTSTª= '00'B THEN /* IF THIS IS THE TAPE GAPE * 07550000 TM 13(@1),B'00000011' 0208 07560000 * GO TO XIO005; /* TEST SKIP EXCP * 07570000 BC 05,XIO005 0209 07580000 * RESTRICT (WRK1); /* RESTRICT THE SAVE REGISTER * 07590000 * WRK1 = LSTPTR; /* SAVE EXIO LIST POINTER * 07600000 LR @8,@1 0211 07610000 * LSTPTR = PNT3; /* R1 POINTS TO IOB * 07620000 LR @1,@3 0212 07630000 * GEN (EXCP (1)); /* REQUEST THAT OLT CCW GO * 07640000 EXCP (1) 07650000 DS 0H 07660000 * WRK1 = LSTPTR; /* RESTORE REG 1 AND * 07670000 LR @8,@1 0214 07680000 * RELEASE (WRK1); /* AND RELEASE IT * 07690000 * GO TO XIOEX4; /* GO EXIT TO THE OLT * 07700000 BC 15,XIOEX4 0216 07710000 * GEN (EJECT); 07720000 EJECT 07730000 DS 0H 07740000 * /************************************************************ 07750000 * /* THE FOLLOWING CODE PROVIDES A MAINTENANCE AREA * 07760000 * /************************************************************ 07770000 * GEN (DC 25XL2'0700'); 07780000 DC 25XL2'0700' 07790000 DS 0H 07800000 * GEN (EJECT); 07810000 EJECT 07820000 DS 0H 07830000 * XIO005: 07840000 * /************************************************************ 07850000 * /* THE TAPE GAP TEST IS DRIVEN WITH FOLLOWING CODE * 07860000 * /************************************************************ 07870000 * XIOTCCW = OCCWS; /* CCW ADDRESS TO GAP PARM LST* 07880000 XIO005 MVC XIOTAB(4),4(@1) 0220 07890000 * XIOTLD = OGPPAR; /* REMAING OLT PARMS TO GAPLST* 07900000 MVC XIOTAB+4(16),16(@1) 0221 07910000 * XIOGAP = OFLGS; /* SET OLT FLAGS TO PARM LIST * 07920000 MVC XIOTAB+28(1),13(@1) 0222 07930000 * XIOTIOB = PNT3; /* IOB POINTER IN GAP PARM LST* 07940000 ST @3,XIOTAB+20 0223 07950000 * RESTRICT (WRK1); /* RESTRICT THE WORKING * 07960000 * WRK1 = LSTPTR; /* SAVE EXIO LIST POINTER * 07970000 LR @8,@1 0225 07980000 * RPTPRM2 = SVDBAD; /* DEB ADDRESS TO SVC LIST * 07990000 MVC A00003+8(4),SVDBAD 0226 08000000 * RPTPRM1 = ADDR(XIOTAB); /* XIO LIST ADDR TO SVC LIST * 08010000 LA @F,XIOTAB 0227 08020000 ST @F,A00003+4 0227 08030000 * IF OFNC23 = '1'B THEN /* IF FUNCT 23 WAS REQUESTED * 08040000 TM 13(@1),B'00000001' 0228 08050000 BC 12,@9E6 0228 08060000 * LSTPTR = 92; /* CALLING CODE IS HEX 5C * 08070000 LA @1,92 0229 08080000 BC 15,@9E5 0230 08090000 * ELSE /* IF NOT FUNC 23 MUST BE 24 * 08100000 * LSTPTR = 96; /* CALLING CODE IS HEX 60 * 08110000 @9E6 LA @1,96 0230 08120000 * R0 = ADDR(RPTPRM1); /* R0 IS LIST POINTER * 08130000 @9E5 LA @0,A00003+4 0231 08140000 * GEN (SVC DIAG); /* SVC 59 TO START GAP TESTING* 08150000 SVC DIAG 08160000 DS 0H 08170000 * LSTPTR = WRK1; /* RESTORE MY LIST POINTER * 08180000 LR @1,@8 0233 08190000 * WRK1 = R15; /* SAVE THE SVC RETURN CODE * 08200000 LR @8,@F 0234 08210000 * IF WRK1 = 1 THEN /* IF THE RETURN INDICATED * 08220000 CH @8,@D1 0235 08230000 BC 07,@9E4 0235 08240000 * DO; /* TIMER NOT STEPPING THEN * 08250000 * RESTRICT (PNT7); /* A MESSAGE IS TO BE TYPED * 08260000 * PNT7 = ADDR(IFDMSG05); /* FIND THE MESSAGE MODULE * 08270000 L @6,@V1 ADDRESS OF IFDMSG05 0238 08280000 LR @7,@6 0238 08290000 * LSTPTR = MPTR133; /* POINT TO CORRECT MESSAGE * 08300000 L @1,4(0,@7) 0239 08310000 * GEN (PWTO REG=(1)); /* AND CAUSE IFD133I TO TYPE * 08320000 PWTO REG=(1) 08330000 DS 0H 08340000 * SETERR = '1'B; /* INDICATE ERROR OCCURED AND * 08350000 OI A00009+3,B'10000000' 0241 08360000 * GO TO XIOEX1; /* RETURN TO OLTEP * 08370000 BC 15,XIOEX1 0242 08380000 * END; /* * 08390000 * IF WRK1 = 2 THEN /* IF SVC REQUESTED A WAIT * 08400000 @9E4 CH @8,@D2 0244 08410000 BC 07,@9E3 0244 08420000 * DO; /* PROCEED TO DO IT * 08430000 * LSTPTR = IOBECBPT; /* R1 POINTS TO ECB * 08440000 MVC @TEMP3+1(3),5(@3) 0246 08450000 L @1,@TEMP3 0246 08460000 * GEN (WAIT ,ECB=(1)); /* ISSUE SYSTEM WAIT (DEQUEVE)* 08470000 WAIT ,ECB=(1) 08480000 DS 0H 08490000 * WRK1 = 1; /* SET OLT RETURN CODE 01 * 08500000 LA @8,1 0248 08510000 * END; /* * 08520000 * GO TO XIOEX4; /* AND START EXIT PATH TO OLT * 08530000 BC 15,XIOEX4 0250 08540000 * GEN (EJECT); 08550000 EJECT 08560000 DS 0H 08570000 * /************************************************************ 08580000 * /* ALL EXITS FROM IFDOLT05 ARE AFFECTED IN FOLLOWING CODE* 08590000 * /************************************************************ 08600000 * XIOEX4: /* NORMAL EXIT TO OLT STARTS HERE * 08610000 * IF TPACT = '1'B THEN /* IF T.P. IS ACTIVE THEN SET * 08620000 XIOEX4 TM A00031+1,B'00000001' 0252 08630000 BC 12,@9E2 0252 08640000 * WTFLG = '1'B; /* THE WAIT FLAG * 08650000 OI A00031+1,B'00010000' 0253 08660000 * GO TO XIOEND; /* AND RETURN TO OLT * 08670000 BC 15,XIOEND 0254 08680000 * XIOEX2: /* INDICATE TO SCHEDULER -NO MORE TESTING THIS DEVICE * 08690000 * NOTSTNG = '1'B; /* BYPASS TESTING/THIS DEVICE * 08700000 XIOEX2 OI A00031+3,B'00100000' 0255 08710000 * XIOEX1: /* ALL EXITS TO OLTEP SCHEDULER PASS HERE * 08720000 * SVPTR = SCHEDSA; /* R13 POINTS TO SCHEDULER SVE* 08730000 XIOEX1 MVC 4(4,@D),SCHEDSA 0256 08740000 * XIOEND: 08750000 * INUSE = '1'B; /* SET THE IN USEAGE BIT * 08760000 XIOEND OI 52(@3),B'10000000' 0257 08770000 * ACTVE = '1'B; /* SET THE EXIO ACTIVE ID * 08780000 OI 12(@5),B'00010000' 0258 08790000 * /* LINKAGE CONVENTIONS FOLLOW * 08800000 * END IFDOLT05; 08810000 @EL01 L @D,4(0,@D) 0259 08820000 L @E,12(0,@D) 0259 08830000 LM @0,@C,20(@D) 0259 08840000 BCR 15,@E 0259 08850000 @DATA1 EQU * 08860000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 08870000 @1 EQU 01 08880000 @2 EQU 02 08890000 @3 EQU 03 08900000 @4 EQU 04 08910000 @5 EQU 05 08920000 @6 EQU 06 08930000 @7 EQU 07 08940000 @8 EQU 08 08950000 @9 EQU 09 08960000 @A EQU 10 08970000 @B EQU 11 08980000 @C EQU 12 08990000 @D EQU 13 09000000 @E EQU 14 09010000 @F EQU 15 09020000 @D1 DC H'1' 09030000 @D2 DC H'2' 09040000 @V1 DC V(IFDMSG05) 09050000 DS 0F 09060000 @C14 DC C'05' 09070000 DS 0D 09080000 @DATA EQU * 09090000 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 09100000 R0 EQU 00000000 FULLWORD POINTER REGISTER 09110000 LSTPTR EQU 00000001 FULLWORD POINTER REGISTER 09120000 COMMON EQU 00000002 FULLWORD POINTER REGISTER 09130000 PNT3 EQU 00000003 FULLWORD POINTER REGISTER 09140000 PNT4 EQU 00000004 FULLWORD POINTER REGISTER 09150000 PNT5 EQU 00000005 FULLWORD POINTER REGISTER 09160000 PNT6 EQU 00000006 FULLWORD POINTER REGISTER 09170000 PNT7 EQU 00000007 FULLWORD POINTER REGISTER 09180000 WRK1 EQU 00000008 FULLWORD INTEGER REGISTER 09190000 R9 EQU 00000009 FULLWORD INTEGER REGISTER 09200000 R12 EQU 00000012 FULLWORD INTEGER REGISTER 09210000 R13 EQU 00000013 FULLWORD POINTER REGISTER 09220000 R14 EQU 00000014 FULLWORD POINTER REGISTER 09230000 LINK EQU 00000014 FULLWORD INTEGER REGISTER 09240000 R15 EQU 00000015 FULLWORD INTEGER REGISTER 09250000 R1 EQU 00000001 FULLWORD POINTER REGISTER 09260000 ORG @DATA+00000072 09270000 HEX14 EQU * FULLWORD INTEGER 09280000 DC XL4'00008014' 09290000 XIOTAB EQU @DATA+00000076 32 BYTE(S) ON WORD 09300000 XIOTCCW EQU XIOTAB+00000000 4 BYTE(S) 09310000 XIOTLD EQU XIOTAB+00000004 16 BYTE(S) 09320000 XIOTCT1 EQU XIOTAB+00000004 4 BYTE(S) 09330000 XIOTCT2 EQU XIOTAB+00000008 4 BYTE(S) 09340000 XIOTSNS EQU XIOTAB+00000012 4 BYTE(S) 09350000 XIOTDCT EQU XIOTAB+00000016 4 BYTE(S) 09360000 XIOTIOB EQU XIOTAB+00000020 FULLWORD POINTER 09370000 ORG XIOTAB+00000024 09380000 XIOAND EQU * 4 BYTE(S) 09390000 DC X'00FFFFFF' 09400000 A00000 EQU XIOTAB+00000024 1 BYTE(S) 09410000 ALL1S EQU XIOTAB+00000025 3 BYTE(S) 09420000 XIOGAP EQU XIOTAB+00000028 1 BYTE(S) 09430000 ORG XIOTAB+00000029 09440000 A00001 EQU * 3 BYTE(S) 09450000 DC C'XIO' 09460000 SVDBAD EQU @DATA+00000108 FULLWORD POINTER 09470000 SVPTR EQU 00000004 FULLWORD POINTER 09480000 XDVADR EQU @DATA+00000112 2 BYTE(S) 09490000 ORG @DATA+00000114 09500000 MYID EQU * 2 BYTE(S) 09510000 DC C'05' 09520000 COMCDE EQU 00000000 1 BYTE(S) ON WORD 09530000 A00002 EQU COMCDE+00000000 6 BIT(S) 09540000 RDCM EQU COMCDE+00000000 1 BIT(S) 09550000 WRCM EQU COMCDE+00000000 1 BIT(S) 09560000 NXTCCW EQU 00000008 FULLWORD INTEGER 09570000 A00005 EQU 00000000 8 BYTE(S) ON WORD 09580000 MPTR109 EQU A00005+00000000 FULLWORD POINTER 09590000 MPTR133 EQU A00005+00000004 FULLWORD POINTER 09600000 A00006 EQU 00000000 15 BYTE(S) ON WORD 09610000 MOTCNT EQU A00006+00000000 2 BYTE(S) 09620000 A00007 EQU A00006+00000002 2 BYTE(S) 09630000 A00008 EQU A00006+00000004 8 BYTE(S) 09640000 MSGDADD EQU A00006+00000012 3 BYTE(S) 09650000 OLTLST EQU 00000000 32 BYTE(S) ON WORD 09660000 OTECB EQU OLTLST+00000000 FULLWORD POINTER 09670000 OCCWS EQU OLTLST+00000004 FULLWORD POINTER 09680000 A00027 EQU OLTLST+00000004 1 BYTE(S) 09690000 OCCWS3 EQU OLTLST+00000005 3 BYTE(S) 09700000 DEVAD EQU OLTLST+00000008 FULLWORD POINTER 09710000 DPSCND EQU OLTLST+00000008 2 BYTE(S) 09720000 OLTEPDV EQU OLTLST+00000010 2 BYTE(S) 09730000 OCWCNT EQU OLTLST+00000012 1 BYTE(S) 09740000 OFLGS EQU OLTLST+00000013 1 BYTE(S) 09750000 A00028 EQU OLTLST+00000013 1 BIT(S) 09760000 A00029 EQU OLTLST+00000013 1 BIT(S) 09770000 ODAD EQU OLTLST+00000013 1 BIT(S) 09780000 OFMMS EQU OLTLST+00000013 1 BIT(S) 09790000 OLN0 EQU OLTLST+00000013 1 BIT(S) 09800000 ORCAL EQU OLTLST+00000013 1 BIT(S) 09810000 OGPTST EQU OLTLST+00000013 2 BIT(S) 09820000 OFNC24 EQU OLTLST+00000013 1 BIT(S) 09830000 OFNC23 EQU OLTLST+00000013 1 BIT(S) 09840000 OMSKMD EQU OLTLST+00000014 1 BYTE(S) 09850000 A00030 EQU OLTLST+00000015 1 BYTE(S) 09860000 OGPPAR EQU OLTLST+00000016 16 BYTE(S) 09870000 OSKAD EQU OLTLST+00000016 6 BYTE(S) 09880000 TTECB EQU 00000000 20 BYTE(S) ON WORD 09890000 TEVCB EQU TTECB+00000000 4 BYTE(S) 09900000 TCCPS EQU TTECB+00000004 1 BYTE(S) 09910000 TCCW1 EQU TTECB+00000005 7 BYTE(S) 09920000 TSNS1 EQU TTECB+00000012 8 BYTE(S) 09930000 A00040 EQU 00000000 56 BYTE(S) ON WORD 09940000 DEBAD EQU A00040+00000000 8 BYTE(S) 09950000 DUCBA EQU A00040+00000008 FULLWORD POINTER 09960000 A00041 EQU A00040+00000008 1 BYTE(S) 09970000 DUCBA3 EQU A00040+00000009 3 BYTE(S) 09980000 A00042 EQU A00040+00000009 1 BYTE(S) 09990000 UCB2BYTE EQU A00040+00000010 2 BYTE(S) 10000000 DEVFL1 EQU A00040+00000012 1 BYTE(S) 10010000 ONLNE EQU A00040+00000012 1 BIT(S) 10020000 PRIME EQU A00040+00000012 1 BIT(S) 10030000 DPDONE EQU A00040+00000012 1 BIT(S) 10040000 ACTVE EQU A00040+00000012 1 BIT(S) 10050000 ALLCT EQU A00040+00000012 1 BIT(S) 10060000 GRBED EQU A00040+00000012 1 BIT(S) 10070000 FLPRT EQU A00040+00000012 1 BIT(S) 10080000 ACTSC EQU A00040+00000012 1 BIT(S) 10090000 DEVFL2 EQU A00040+00000013 1 BYTE(S) 10100000 DSNAME EQU A00040+00000013 1 BIT(S) 10110000 SHARED EQU A00040+00000013 1 BIT(S) 10120000 CEVOL EQU A00040+00000013 1 BIT(S) 10130000 STDLBL EQU A00040+00000013 1 BIT(S) 10140000 CHANFUNC EQU A00040+00000013 1 BIT(S) 10150000 BYPS EQU A00040+00000013 1 BIT(S) 10160000 CEDE EQU A00040+00000013 1 BIT(S) 10170000 ATTN EQU A00040+00000013 1 BIT(S) 10180000 DEVFL3 EQU A00040+00000014 1 BYTE(S) 10190000 ANRNOTST EQU A00040+00000014 1 BIT(S) 10200000 A00043 EQU A00040+00000014 1 BIT(S) 10210000 HIODONE EQU A00040+00000014 1 BIT(S) 10220000 DEVFL4 EQU A00040+00000015 1 BYTE(S) 10230000 RMTLNDAB EQU A00040+00000015 1 BIT(S) 10240000 RMTLNENA EQU A00040+00000015 1 BIT(S) 10250000 FRSTEXIO EQU A00040+00000015 1 BIT(S) 10260000 A00044 EQU A00040+00000015 5 BIT(S) 10270000 DVEXT1 EQU A00040+00000016 6 BYTE(S) 10280000 DVEXT2 EQU A00040+00000022 6 BYTE(S) 10290000 DVCCHH2 EQU A00040+00000022 4 BYTE(S) 10300000 A00045 EQU A00040+00000028 2 BYTE(S) 10310000 MODESET EQU A00040+00000030 1 BYTE(S) 10320000 EXPOSURE EQU A00040+00000031 1 BYTE(S) 10330000 FULLADDR EQU A00040+00000032 4 BYTE(S) 10340000 FILL EQU A00040+00000032 2 BYTE(S) 10350000 DEHAD EQU A00040+00000034 2 BYTE(S) 10360000 CDSINFOR EQU A00040+00000036 16 BYTE(S) 10370000 MODEL EQU A00040+00000036 1 BYTE(S) 10380000 FEATURES EQU A00040+00000037 1 BYTE(S) 10390000 CLASS EQU A00040+00000038 1 BYTE(S) 10400000 TAPE EQU A00040+00000038 1 BIT(S) 10410000 A00046 EQU A00040+00000038 1 BIT(S) 10420000 DASD EQU A00040+00000038 1 BIT(S) 10430000 A00047 EQU A00040+00000038 5 BIT(S) 10440000 TYPE EQU A00040+00000039 1 BYTE(S) 10450000 CDSCNT EQU A00040+00000040 1 BYTE(S) 10460000 CDSFLAGS EQU A00040+00000041 1 BYTE(S) 10470000 A00048 EQU A00040+00000041 7 BIT(S) 10480000 DEVREM EQU A00040+00000041 1 BIT(S) 10490000 EXTSGMSK EQU A00040+00000042 2 BYTE(S) 10500000 SYMNAME EQU A00040+00000044 8 BYTE(S) 10510000 A00049 EQU A00040+00000052 4 BYTE(S) 10520000 IOBOCB EQU 00000000 120 BYTE(S) ON WORD 10530000 IOBFL1 EQU IOBOCB+00000000 1 BYTE(S) 10540000 IOBFL2 EQU IOBOCB+00000001 1 BYTE(S) 10550000 A00050 EQU IOBOCB+00000002 2 BYTE(S) 10560000 A00051 EQU IOBOCB+00000004 1 BYTE(S) 10570000 IOBECBPT EQU IOBOCB+00000005 3 BYTE POINTER ON WORD+1 10580000 A00052 EQU IOBOCB+00000008 8 BYTE(S) 10590000 IOBSIOCC EQU IOBOCB+00000016 1 BYTE(S) 10600000 IOBCCWPT EQU IOBOCB+00000017 3 BYTE POINTER ON WORD+1 10610000 A00053 EQU IOBOCB+00000020 1 BYTE(S) 10620000 IOBDCBPT EQU IOBOCB+00000021 3 BYTE POINTER ON WORD+1 10630000 A00054 EQU IOBOCB+00000024 1 BYTE(S) 10640000 IOBRSTRT EQU IOBOCB+00000025 3 BYTE(S) 10650000 IOBTPCNT EQU IOBOCB+00000028 2 BYTE(S) 10660000 A00055 EQU IOBOCB+00000030 2 BYTE(S) 10670000 IOBMEXT EQU IOBOCB+00000032 1 BYTE(S) 10680000 IOBSKAD EQU IOBOCB+00000033 6 BYTE(S) 10690000 IOBBIN EQU IOBOCB+00000033 2 BYTE(S) 10700000 A00056 EQU IOBOCB+00000039 1 BYTE(S) 10710000 IOS EQU IOBOCB+00000040 24 BYTE(S) 10720000 SENSECMD EQU IOBOCB+00000040 8 BYTE(S) 10730000 EXPOSUER EQU IOBOCB+00000048 1 BYTE(S) 10740000 SIOTWOCC EQU IOBOCB+00000049 1 BYTE(S) 10750000 SIO2STAT EQU IOBOCB+00000050 2 BYTE(S) 10760000 OCBFL1 EQU IOBOCB+00000052 1 BYTE(S) 10770000 INUSE EQU IOBOCB+00000052 1 BIT(S) 10780000 EXATN EQU IOBOCB+00000052 1 BIT(S) 10790000 A00057 EQU IOBOCB+00000052 1 BIT(S) 10800000 A00058 EQU IOBOCB+00000052 1 BIT(S) 10810000 PCIDN EQU IOBOCB+00000052 1 BIT(S) 10820000 PSTD1ST EQU IOBOCB+00000052 1 BIT(S) 10830000 A00059 EQU IOBOCB+00000052 2 BIT(S) 10840000 ODEVAD EQU IOBOCB+00000053 3 BYTE POINTER 10850000 SIOCNT EQU IOBOCB+00000056 1 BYTE(S) 10860000 SIOCC2 EQU IOBOCB+00000057 1 BYTE(S) 10870000 ILC EQU IOBOCB+00000057 2 BIT(S) 10880000 COCO EQU IOBOCB+00000057 2 BIT(S) 10890000 A00060 EQU IOBOCB+00000057 4 BIT(S) 10900000 SIOSTAT EQU IOBOCB+00000058 2 BYTE(S) 10910000 OTECBAD EQU IOBOCB+00000060 4 BYTE POINTER 10920000 OCB EQU IOBOCB+00000064 48 BYTE(S) 10930000 OCBECB EQU IOBOCB+00000064 4 BYTE(S) 10940000 ECB EQU IOBOCB+00000064 1 BYTE(S) 10950000 A00061 EQU IOBOCB+00000064 1 BIT(S) 10960000 ECBDNE EQU IOBOCB+00000064 1 BIT(S) 10970000 A00062 EQU IOBOCB+00000065 1 BYTE(S) 10980000 ECBPST EQU IOBOCB+00000066 2 BYTE(S) 10990000 A00063 EQU IOBOCB+00000068 8 BYTE(S) 11000000 OINTCT EQU IOBOCB+00000068 1 BYTE(S) 11010000 OCSW1 EQU IOBOCB+00000069 7 BYTE(S) 11020000 A00064 EQU IOBOCB+00000069 3 BYTE(S) 11030000 STS1 EQU IOBOCB+00000072 2 BYTE(S) 11040000 A00065 EQU IOBOCB+00000076 8 BYTE(S) 11050000 A00066 EQU IOBOCB+00000076 1 BYTE(S) 11060000 OCSW2 EQU IOBOCB+00000077 7 BYTE(S) 11070000 A00067 EQU IOBOCB+00000077 3 BYTE(S) 11080000 STS2 EQU IOBOCB+00000080 2 BYTE(S) 11090000 A00068 EQU IOBOCB+00000084 36 BYTE(S) 11100000 OSNSCT EQU IOBOCB+00000084 1 BYTE(S) 11110000 OSNS EQU IOBOCB+00000085 1 BYTE(S) 11120000 A00069 EQU 00000000 56 BYTE(S) ON WORD 11130000 A00070 EQU A00069+00000000 1 BYTE(S) 11140000 A00071 EQU A00069+00000001 3 BYTE(S) 11150000 A00072 EQU A00069+00000004 1 BYTE(S) 11160000 A00073 EQU A00069+00000005 3 BYTE(S) 11170000 A00074 EQU A00069+00000008 1 BYTE(S) 11180000 TDCBSTRT EQU A00069+00000008 1 BYTE(S) 11190000 A00075 EQU A00069+00000009 3 BYTE(S) 11200000 A00076 EQU A00069+00000012 1 BYTE(S) 11210000 A00077 EQU A00069+00000013 3 BYTE(S) 11220000 TDEBEXNO EQU A00069+00000016 1 BYTE(S) 11230000 TDEBPRGC EQU A00069+00000017 3 BYTE POINTER ON WORD+1 11240000 A00078 EQU A00069+00000020 1 BYTE(S) 11250000 TDEBPRGL EQU A00069+00000021 3 BYTE POINTER ON WORD+1 11260000 TDEBPRT EQU A00069+00000024 1 BYTE(S) 11270000 TDEBDCB EQU A00069+00000025 3 BYTE POINTER ON WORD+1 11280000 TDEBEXSC EQU A00069+00000028 1 BYTE(S) 11290000 TDEBAPPN EQU A00069+00000029 3 BYTE POINTER ON WORD+1 11300000 TDEBMSFM EQU A00069+00000032 1 BYTE(S) 11310000 TDEBUCBA EQU A00069+00000033 3 BYTE(S) 11320000 TDEBEXT1 EQU A00069+00000036 6 BYTE(S) 11330000 TDEBBIN EQU A00069+00000036 2 BYTE(S) 11340000 TDEBEXT2 EQU A00069+00000042 6 BYTE(S) 11350000 A00079 EQU A00069+00000048 4 BYTE(S) 11360000 TDCBFLG EQU A00069+00000052 1 BYTE(S) 11370000 TERFLGS EQU A00069+00000052 2 BIT(S) 11380000 A00080 EQU A00069+00000052 2 BIT(S) 11390000 TBYERPS EQU A00069+00000052 2 BIT(S) 11400000 A00081 EQU A00069+00000052 2 BIT(S) 11410000 TDCBDEBA EQU A00069+00000053 3 BYTE POINTER ON WORD+1 11420000 A00082 EQU 00000000 4 BYTE(S) ON WORD 11430000 A00083 EQU A00082+00000000 1 BYTE(S) 11440000 A00084 EQU A00082+00000001 1 BYTE(S) 11450000 UCBID EQU A00082+00000002 1 BYTE(S) 11460000 SRTESTAT EQU A00082+00000003 1 BYTE(S) 11470000 UCBONLNE EQU A00082+00000003 1 BIT(S) 11480000 A00085 EQU A00082+00000003 7 BIT(S) 11490000 ORG @DATA 11500000 DS 00000116C 11510000 @TEMPS DS 0F 11520000 @TEMP3 DC F'0' 11530000 @TEMP4 DC F'0' 11540000 EXIO000 IFDCOM 11550000 VID EQU WKSVC+00000002 2 BYTE(S) 11560000 A00003 EQU WKSVC+00000000 16 BYTE(S) ON WORD 11570000 SVCPRM EQU A00003+00000000 16 BYTE(S) 11580000 A00004 EQU A00003+00000000 2 BYTE(S) 11590000 RPTID EQU A00003+00000002 2 BYTE(S) 11600000 RPTPRM1 EQU A00003+00000004 4 BYTE(S) 11610000 RPTPRM2 EQU A00003+00000008 4 BYTE(S) 11620000 RPTPRM3 EQU A00003+00000012 4 BYTE(S) 11630000 A00009 EQU CHASCT+00000000 80 BYTE(S) ON WORD 11640000 A00010 EQU A00009+00000000 3 BYTE(S) 11650000 A00011 EQU A00009+00000003 1 BYTE(S) 11660000 SETERR EQU A00009+00000003 1 BIT(S) 11670000 A00012 EQU A00009+00000004 4 BYTE(S) 11680000 A00013 EQU A00009+00000008 2 BYTE(S) 11690000 SDFLG EQU A00009+00000010 1 BYTE(S) 11700000 A00014 EQU A00009+00000010 1 BIT(S) 11710000 SFLPRT EQU A00009+00000010 1 BIT(S) 11720000 SCEVLM EQU A00009+00000010 1 BIT(S) 11730000 A00015 EQU A00009+00000010 5 BIT(S) 11740000 A00016 EQU A00009+00000011 1 BYTE(S) 11750000 SDVAD EQU A00009+00000012 4 BYTE(S) 11760000 A00017 EQU A00009+00000012 2 BYTE(S) 11770000 SDVAD2 EQU A00009+00000014 2 BYTE(S) 11780000 SDVDS EQU A00009+00000016 4 BYTE(S) 11790000 A00018 EQU A00009+00000016 2 BYTE(S) 11800000 SDVCLS EQU A00009+00000018 1 BYTE(S) 11810000 STP EQU A00009+00000018 1 BIT(S) 11820000 STC EQU A00009+00000018 1 BIT(S) 11830000 SDA EQU A00009+00000018 1 BIT(S) 11840000 SGD EQU A00009+00000018 1 BIT(S) 11850000 SUR EQU A00009+00000018 1 BIT(S) 11860000 SMC EQU A00009+00000018 1 BIT(S) 11870000 A00019 EQU A00009+00000018 2 BIT(S) 11880000 SDVTYP EQU A00009+00000019 1 BYTE(S) 11890000 A00020 EQU A00009+00000020 4 BYTE(S) 11900000 A00021 EQU A00009+00000024 4 BYTE(S) 11910000 A00022 EQU A00009+00000024 2 BYTE(S) 11920000 SSDVAD2 EQU A00009+00000026 2 BYTE(S) 11930000 A00023 EQU A00009+00000028 4 BYTE(S) 11940000 A00024 EQU A00009+00000032 1 BYTE(S) 11950000 SEPFLG EQU A00009+00000033 1 BYTE(S) 11960000 A00025 EQU A00009+00000034 2 BYTE(S) 11970000 SOLTFL EQU A00009+00000036 4 BYTE(S) 11980000 A00026 EQU A00009+00000040 40 BYTE(S) 11990000 A00031 EQU CESWT+00000000 7 BYTE(S) ON WORD 12000000 OSW0 EQU A00031+00000000 1 BYTE(S) 12010000 A00032 EQU A00031+00000000 1 BIT(S) 12020000 DATPRSC EQU A00031+00000000 1 BIT(S) 12030000 A00033 EQU A00031+00000000 6 BIT(S) 12040000 OSW1 EQU A00031+00000001 1 BYTE(S) 12050000 A00034 EQU A00031+00000001 1 BIT(S) 12060000 SKTST EQU A00031+00000001 1 BIT(S) 12070000 A00035 EQU A00031+00000001 1 BIT(S) 12080000 WTFLG EQU A00031+00000001 1 BIT(S) 12090000 CHNGM EQU A00031+00000001 1 BIT(S) 12100000 A00036 EQU A00031+00000001 1 BIT(S) 12110000 OLNOK EQU A00031+00000001 1 BIT(S) 12120000 TPACT EQU A00031+00000001 1 BIT(S) 12130000 OSW2 EQU A00031+00000002 1 BYTE(S) 12140000 DYCMB EQU A00031+00000002 1 BIT(S) 12150000 A00037 EQU A00031+00000002 6 BIT(S) 12160000 AMERLDV EQU A00031+00000002 1 BIT(S) 12170000 OSW3 EQU A00031+00000003 1 BYTE(S) 12180000 A00038 EQU A00031+00000003 2 BIT(S) 12190000 NOTSTNG EQU A00031+00000003 1 BIT(S) 12200000 OSW4 EQU A00031+00000004 1 BYTE(S) 12210000 OSW5 EQU A00031+00000005 1 BYTE(S) 12220000 OSW6 EQU A00031+00000006 1 BYTE(S) 12230000 A00039 EQU A00031+00000006 3 BIT(S) 12240000 FPVLTE EQU A00031+00000006 1 BIT(S) 12250000 NOTMER EQU A00031+00000006 1 BIT(S) 12260000 @DATEND EQU * 12270000 @9FE EQU XIO001 12280000 @DO9FB EQU XIO004A 12290000 @9F4 EQU @9EA 12300000 @9EB EQU @9EA 12310000 @9E3 EQU XIOEX4 12320000 @9E2 EQU XIOEND 12330000 END IFDOLT05 12340000 ./ ADD SSI=02013430,NAME=IFDOLT06,SOURCE=1 TITLE ' OLD WAITIO IFDOLT06' 00010000 TITLE 'OLD WAITIO IFDOLT06 ' 00020000 LCLA &T,&SPN 0002 00030000 .@001 ANOP 0002 00040000 IFDOLT06 CSECT , 0002 00050000 BC 15,24(0,@F) 00060000 DC C'IFDOLT06 08 DEC 72' 0002 00070000 STM @E,@C,12(@D) 0002 00080000 BALR @B,0 0002 00090000 @PSTART DS 0H 0002 00100000 USING @PSTART+00000,@B 0002 00110000 * GEN(USING CHASCT,2); 00120000 USING CHASCT,2 00130000 DS 0H 00140000 * GENERATE DATA; /*COMMON AREA*/ 00150000 * DECLARE 00160000 * /****************************************************** 00170000 * /* TEST EVENT CONTROL BLOCK (TECB) MAP * 00180000 * /****************************************************** 00190000 * 1 TTECB BASED(R5), /* BASED ON PTR IN PARM LIST * 00200000 * 3 TEVCB CHAR(4), /* EVENT CONTROL BLOCK ECB * 00210000 * 3 TCCPS CHAR(1), /* CONDITION CODE POSTING * 00220000 * 5 TIMEOUT BIT(1), /*TIME-OUT BYPASS SWITCH*/ 00230000 * 5 * BIT(7), 00240000 * 3 TCCW1 CHAR(7), /* 7 BYTE CSW * 00250000 * 3 TSNS1 CHAR(8); /* SENSE FIELD * 00260000 * DECLARE 00270000 * /****************************************************** 00280000 * /* THE FOLLOWING MAP DEFINES THE OLTEP IOB-OCB-ECB * 00290000 * /****************************************************** 00300000 * 1 IOBOCB BASED(PNT3), /* PNT3 REFERS TO IOB-OCB * 00310000 * 3 IOBFL1 CHAR(1), /* IOB FLAG 1 * 00320000 * 5 * BIT(5), 00330000 * 5 PERMERR BIT(1), 00340000 * 5 * BIT(2), 00350000 * 3 IOBFL2 CHAR(1), /* IOB FLAG 2 * 00360000 * 3 * CHAR(2), /* IOB SENSE BYTES * 00370000 * 3 * CHAR(1), /* IOB ECB CODE * 00380000 * 3 IOBECBPT PTR(24), /* IOB ECB ADDRESS * 00390000 * 3 * CHAR(8), /* IOB FLAG 3 AND CSW * 00400000 * 5 * CHAR(1), 00410000 * 5 IOBCSW CHAR(7), /*IOB CSW*/ 00420000 * 7 * CHAR(3), 00430000 * 7 * CHAR(1), 00440000 * 9 * BIT(6), 00450000 * 9 UNITCK BIT(1), /*UNIT CHECK INDICATOR*/ 00460000 * 9 * BIT(1), 00470000 * 7 * CHAR(3), 00480000 * 3 IOBSIOCC CHAR(1), /* IOB SIO CONDITION CODE * 00490000 * 3 IOBCCWPT PTR(24), /* IOB CCW POINTER * 00500000 * 3 * CHAR(1), /* IOB EXPANSION * 00510000 * 3 IOBDCBPT PTR(24), /* IOB DCB POINTER * 00520000 * 3 * CHAR(4), /* IOB ERP FIELDS * 00530000 * 3 IOBTPCNT CHAR(2), /* IOB TAPE BLOCK COUNT * 00540000 * 3 * CHAR(2), /* IOB ERROR COUNT * 00550000 * 3 IOBMEXT CHAR(1), /* IOB DASD EXTENT * 00560000 * 3 IOBSKAD CHAR(6), /* IOB DASD SEEK ADDRESS * 00570000 * 3 * CHAR(1), /* IOB EXPANSION * 00580000 * 2 IOS CHAR(24), /* IOS RESERVE AREA * 00590000 * 3 SENSECMD CHAR(8), /* IOS SENSE COMMAND OCB-24 * 00600000 * 3 EXPOSUER CHAR(1), /* IOS EXPOSURE NUMBER OCB-16 * 00610000 * 3 SIOTWOCC CHAR(1), /* SECOND SIO C.CODE OCB-15 * 00620000 * 3 SIO2STAT CHAR(2), /* SECOND SIO STATUS OCB-14 * 00630000 * 3 OCBFL1 CHAR(1), /* FLAGS FOR THIS OCB OCB-12 * 00640000 * 5 INUSE BIT(1), /* THIS OCB-IOB IS IN USE * 00650000 * 5 EXATN BIT(1), /* OCB EXPECTING ATTENTION * 00660000 * 5 * BIT(1), /* EXPANSION * 00670000 * 5 * BIT(1), /* EXPANSION * 00680000 * 5 PCIDN BIT(1), /* PGM CONTROLED INTR OCCURED * 00690000 * 5 PSTD1ST BIT(1), /* 1 ST CSW HAS BEEN POLLED * 00700000 * 5 * BIT(2), /* * 00710000 * 3 ODEVAD PTR(24), /* PTR TO ENTRY IN DEVTAB OCB-13 * 00720000 * 3 SIOCNT CHAR(1), /* NUMBER OF TIME SIO WAS ISSUED * 00730000 * 3 SIOCC2 CHAR(1), /* FIRST SIO C.CODE * 00740000 * 5 ILC BIT(2), /* INSTRUCTION LENGTH CODE * 00750000 * 5 COCO BIT(2), /* SIO CONDITION CODE * 00760000 * 5 * BIT(4), /* PROGRAM MASK NOT USED * 00770000 * 3 SIOSTAT CHAR(2), /* FIRST SIO STATUS * 00780000 * 3 OTECBAD PTR(31), /* TECB POINTER OCB-4 * 00790000 * 2 OCB CHAR(48), /* DUMMY LABEL * 00800000 * 3 OCBECB CHAR(4), /* ECB * 00810000 * 5 ECB CHAR(1), /* SYS ECB * 00820000 * 7 * BIT(1), /* ECB WAIT BIT * 00830000 * 7 ECBDNE BIT(1), /* ECB COMPLETE BIT * 00840000 * 5 * CHAR(1), /* AREA IN ECB FOR OLTEP POST * 00850000 * 5 ECBPST CHAR(2), /* AREA IN ECB FOR OLTEP POST * 00860000 * 3 * CHAR(8), /* CSW AREA FOR CHAN END * 00870000 * 5 OINTCT CHAR(1), /* COUNT OF CSWS STORED * 00880000 * 5 OCSW1 CHAR(7), /* FIRST CSW STORED * 00890000 * 7 * CHAR(3), /* CSW ADDRESS * 00900000 * 7 STS1 CHAR(2), /* CSW STATUS (1ST CSW) * 00910000 * 3 * CHAR(8), /* CSW AREA FOR DEV END * 00920000 * 5 * CHAR(1), /* NOT USED * 00930000 * 5 OCSW2 CHAR(7), /* SECOND CSW STORED * 00940000 * 7 * CHAR(3), /* * 00950000 * 7 STS2 CHAR(2), /* 2ND CSW STATUS * 00960000 * 3 * CHAR(36), /* SENSE AREA * 00970000 * 5 OSNSCT CHAR(1), /* NO. OF SENSE BYTES * 00980000 * 5 OSNS CHAR(1); /* 1ST SENSE BYTE OF POSSIBLE 35 * 00990000 * /* S21050* 01000000 * DCL TIME30 CHAR(8) 01010000 * INIT('F0F0F0F0F3F0F0C0'X) 01020000 * BDY(DWORD); /*TIME FOR STIMER MACRO*/ 01030000 * DCL ECB5 FIXED INIT(0); /*ECB FOR WTOR*/ 01040000 * DCL 1 PURLST BDY(WORD), /*PURGE PARAMETER LIST*/ 01050000 * 2 * CHAR(1) INIT('A0'X), /*PURGE OPTIONS*/ 01060000 * 2 DEBAD CHAR(3), /*DEB ADDRESS*/ 01070000 * 2 * CHAR(4) INIT('00000000'X), /*TCB ADDRESS*/ 01080000 * 2 * CHAR(1) INIT('01'X), 01090000 * 2 IOBAD CHAR(3); /*IOB ADDRESS*/ 01100000 * DCL INBUFR CHAR(124) GENERATED; /*INPUT BUFFER*/ 01110000 * DCL RESPONSE CHAR(1) BASED(ADDR(INBUFR)); 01120000 * DCL CESWT CHAR(1) GENERATED; /* OLTEP SWITCHES S20203* 01130000 * DCL 1 * CHAR(1) BASED(ADDR(CESWT)), /* S20203* 01140000 * 3 * BIT(1), /* S20203* 01150000 * 3 DPENTRY BIT(1), /* S20203* 01160000 * 3 * BIT(6); /* S20203* 01170000 * DCL CESWT1 CHAR(1) GENERATED; 01180000 * DCL 1 * CHAR(1) BASED(ADDR(CESWT1)), /*OLTEP SWITCHES*/ 01190000 * 2 * BIT(3), 01200000 * 2 WAITFG BIT(1), 01210000 * 2 * BIT(3), 01220000 * 2 TPFLAG BIT(1); 01230000 * DCL TIOB1 CHAR(108) GENERATED; /*IOB ONE */ 01240000 * DCL TIOB2 CHAR(108) GENERATED; /*IOB TWO */ 01250000 * DCL TSTDEBAD FIXED GENERATED; /*TEST DEB ADDRESS*/ 01260000 * DCL 1 * BASED(ADDR(TSTDEBAD)), 01270000 * 2 * CHAR(1), 01280000 * 2 TSTDEBPT CHAR(3); /*TEST DEB ADDRESS*/ 01290000 * DCL 1 * BASED(ODEVAD), 01300000 * 2 EDEVAD CHAR(8); /* DEV ADDR IN EBCDIC S21050* 01310000 * DCL IFDMSG06 EXT ENTRY; /*MESSAGE MODULE*/ 01320000 * DCL 1 MSGPARM BASED(MSGPTR), 01330000 * 2 LENGTH CHAR(1), /*LENGTH OF RESPONSE*/ 01340000 * 2 BUFAD PTR(24), /*BUFFER FOR RESPONSE*/ 01350000 * 2 MECBAD PTR; /*ECB ADDRESS*/ 01360000 * DCL MSGDEVAD CHAR(8) BASED(MSGPTR+47); /* DEV ADDR S21050* 01370000 * /* AREA IN MESSAGE S21050* 01380000 * DCL SVDEVPTR PTR(24) INIT(0); /* SAVE DEVTAB PTR S21050* 01390000 * DCL TENTHSEC CHAR(8) BDY(DWORD) INIT('F0F0F0F0F0F0F1C0'X); 01400000 * /* THIS DECLARE IS THE TIME INTER- * 01410000 * /* VAL USED BY THE SIO STIMER * 01420000 * /* FACILITY S21050* 01430000 * DCL SAVEPNT3 FIXED; 01440000 * DCL 1 * FIXED BASED(ADDR(SAVEPNT3)), 01450000 * 2 * CHAR(1), 01460000 * 2 TIOBPT PTR(24); /*PTR TO TIOB*/ 01470000 * DCL SAVE1(18) FIXED; 01480000 * DCL SAVE2(18) FIXED; 01490000 * DCL PATCH CHAR(40) BDY(HWORD) INIT(' '); 01500000 * GENERATE; 01510000 ST 13,SAVE1+4 SAVE @ OF CALLER'S SAVEAREA 01520000 LA 15,SAVE1 GET @ OF OWN SAVEAREA 01530000 ST 15,8(13) SAVE IT IN CALLER'S SAVEAREA 01540000 LR 13,15 PUT IT IN REGISTER 13 01550000 DS 0H 01560000 * R5=PL; /*SAVE ADDRESS OF PARMLIST IN 01570000 * R5*/ 01580000 LR @5,@1 0044 01590000 * PNT3=ADDR(TIOB1); /*PUT TIOB1 ADDR IN REG 3 */ 01600000 LA @3,TIOB1 0045 01610000 * IF TPFLAG='0'B & /* IF NOT A TP AND NOT S20203* 01620000 * DPENTRY='0'B THEN /* A DATA PROT CALL THEN S20203* 01630000 TM A00034,B'00000001' 0046 01640000 BC 05,@9FF 0046 01650000 TM A00031,B'01000000' 0046 01660000 * GOTO WI0000X; 01670000 BC 10,WI0000X 0047 01680000 * IF R5=OTECBAD THEN /*TPFLAG ON-IS TECB ADDR = TO 01690000 * ADDR IN TIOB1?*/ 01700000 @9FE EQU * 0048 01710000 @9FF C @5,60(0,@3) 0048 01720000 * GOTO WI0000X; /*YES-ALL SET UP*/ 01730000 BC 08,WI0000X 0049 01740000 * PNT3= ADDR(TIOB2); /*NO - PUT TIOB2 ADDR IN REG3* 01750000 LA @3,TIOB2 0050 01760000 * WI0000X: 01770000 * SAVEPNT3=PNT3; /*SAVE PNT3*/ 01780000 WI0000X ST @3,SAVEPNT3 0051 01790000 * IF INUSE='0'B THEN /* NO EXIO HAS BEEN S21050* 01800000 TM 52(@3),B'10000000' 0052 01810000 * GOTO EXIT; /* ISSUED S21050* 01820000 BC 08,EXIT 0053 01830000 * IF TIMEOUT='1'B THEN /*CK FOR TIME-OUT BYPASS*/ 01840000 TM 4(@5),B'10000000' 0054 01850000 * GOTO WI0000; /*YES-BYPASS TIME-OUT*/ 01860000 BC 01,WI0000 0055 01870000 * /******************************************************************** 01880000 * /* THE FOLLOWING SECTION OF CODE WILL ISSUE THE STIMER MACRO * 01890000 * /* INSTRUCTION IF AND ONLY IF THE SIO TO THE IOB DEVICE HAS 'NOT' * 01900000 * /* BEEN ISSUED BY THE OP SYSTEM. THIS WILL INSURE TIME OUT IN * 01910000 * /* SYSTEM QUEUES DOES NOT OCCUR. THE MAXIMUM WAIT FOR SIO TO BE * 01920000 * /* ISSUED WILL BE THIRTY SECONDS IN INTERVALS OF ONE/TENTH SECONDS * 01930000 * /******************************************************************** 01940000 * DO I = 300 TO 1 BY -1; /* START THE LOOP TO CHECK FOR SIO * 01950000 LA @7,300 0056 01960000 * /* S21050* 01970000 * IF ILC ª= '00'B /* IF INST LENGTH CODE IS NOT 00 * 01980000 * /* S21050* 01990000 * THEN GO TO GOODST; /* THEN GO ISSUE THE WAIT MACRO * 02000000 @DO9FD TM 57(@3),B'11000000' 0057 02010000 BC 05,GOODST 0058 02020000 * /* S21050* 02030000 * GEN (STIMER WAIT,DINTVL=TENTHSEC); /* ISSUE STIMER S21050* 02040000 STIMER WAIT,DINTVL=TENTHSEC 02050000 DS 0H 02060000 * END; /* CONTINUE THE LOOP S21050* 02070000 * GOTO PURGE; /* PURGE REQUEST S21050* 02080000 BCT @7,@DO9FD 0060 02090000 BC 15,PURGE 0061 02100000 * GOODST: /* GOOD START ON SIO S21050* 02110000 * GEN(STIMER REAL,TMNT30,DINTVL=TIME30); 02120000 GOODST STIMER REAL,TMNT30,DINTVL=TIME30 02130000 DS 0H 02140000 * WI0000: 02150000 * PL=ADDR(OCBECB); /* ADDR OF ECB S21050* 02160000 WI0000 LA @1,64(0,@3) 0063 02170000 * GEN(WAIT ,ECB=(1)); /*WAIT FOR COMPLETION*/ 02180000 WAIT ,ECB=(1) 02190000 DS 0H 02200000 * GEN(TTIMER CANCEL); 02210000 TTIMER CANCEL 02220000 DS 0H 02230000 * IF ECBPST ª= '0100'X THEN /* IS ECB SELF-POSTED S21050* 02240000 CLC 66(2,@3),@X4 0066 02250000 * GOTO WI0000A; /*NO - NORMAL POSTING*/ 02260000 BC 07,WI0000A 0067 02270000 * PURGE: /* PURGE CODE S21050* 02280000 * DEBAD=TSTDEBPT; /*SET UP PURGE LIST 02290000 * PARAMETERS*/ 02300000 PURGE MVC PURLST+1(3),A00037+1 0068 02310000 * IOBAD=TIOBPT; /*IOB ADDRESS TO PURGE LIST*/ 02320000 MVC PURLST+9(3),A00040+1 0069 02330000 * PL=ADDR(PURLST); /*PUT ADDRESS OF PURGE PARMLIS 02340000 * IN REGISTER 1*/ 02350000 LA @1,PURLST 0070 02360000 * GEN(SVC 16); /*PURGE THE I/O REQUEST*/ 02370000 SVC 16 02380000 DS 0H 02390000 * WI0000A: 02400000 * IOBSIOCC=IOBSIOCC & '30'X; 02410000 WI0000A NI 16(@3),X'30' 0072 02420000 * WAITFG='0'B; /*RESET THE WAITFG*/ 02430000 NI A00034,B'11101111' 0073 02440000 * TCCPS=IOBSIOCC & '30'X; /* PUT CC IN TECB M1310* 02450000 MVI 4(@5),X'30' 0074 02460000 NC 4(1,@5),16(@3) 0074 02470000 * TCCW1 = OCSW1 ³ OCSW2; /* COMBINE TWO EVENTS SA59668* 02480000 MVC 5(7,@5),77(@3) 0075 02490000 OC 5(7,@5),69(@3) 0075 02500000 * TEVCB=OCBECB; /*PUT ECB IN TECB*/ 02510000 MVC 0(4,@5),64(@3) 0076 02520000 * IF UNITCK ª= '1'B THEN /*IS IT UNIT CHECK */ 02530000 TM 12(@3),B'00000010' 0077 02540000 * GOTO CLEAROCB; /* GO CLEAR OCB M6534* 02550000 BC 12,CLEAROCB 0078 02560000 * PERMERR='0'B; /*CLEAR PERMANENT ERROR BIT*/ 02570000 NI 0(@3),B'11111011' 0079 02580000 * IF OSNSCT='00'X THEN 02590000 CLI 84(@3),X'00' 0080 02600000 * GOTO CLEAROCB; /* GO CLEAR OCB M6534* 02610000 BC 08,CLEAROCB 0081 02620000 * TSNS1(1:OSNSCT)=OSNS(1:OSNSCT); /*PUT SENSE IN TECB*/ 02630000 LA @E,85(0,@3) 0082 02640000 SR @1,@1 0082 02650000 IC @1,84(0,@3) 0082 02660000 BCTR @1,0 0082 02670000 LA @A,12(0,@5) 0082 02680000 EX @1,@MVC 0082 02690000 * CLEAROCB: /* M6534* 02700000 * SVDEVPTR= ODEVAD; /* SAVE DEVTAB PTR S21050* 02710000 CLEAROCB MVC SVDEVPTR(3),53(@3) 0083 02720000 * OCB=OCB&&OCB; /* CLEAR OCB S21050* 02730000 XC 64(48,@3),64(@3) 0084 02740000 * IOS=IOS&&IOS; /* CLEAR REST OF OCB S2105/* 02750000 XC 40(24,@3),40(@3) 0085 02760000 * ODEVAD=SVDEVPTR; /* RESTORE DEVTAB PTR S21050* 02770000 MVC 53(3,@3),SVDEVPTR 0086 02780000 * GOTO EXIT; 02790000 BC 15,EXIT 0087 02800000 * /* */ 02810000 * /* STIMER EXIT ROUTINE - 30 SECOND INTERUPT */ 02820000 * /* */ 02830000 * TMNT30: 02840000 * ENTRY; 02850000 TMNT30 STM @E,@C,12(@D) 0088 02860000 BALR @B,0 0088 02870000 LA @F,TMNT30-IFDOLT06-24 0088 02880000 SR @B,@F 0088 02890000 @9F9 EQU * 0088 02900000 * GENERATE; 02910000 ST 13,SAVE2+4 SAVE@ OF CALLER'S SAVEAREA 02920000 LA 15,SAVE2 GET @ OF OWN SAVEAREA 02930000 ST 15,8(13) SAVE IT IN CALLER'S SAVEAREA 02940000 LR 13,15 PUT IT IN REGISTER 13 02950000 DS 0H 02960000 * TMNT30C: 02970000 * ECB5= 0; 02980000 TMNT30C SR @F,@F 0090 02990000 ST @F,ECB5 0090 03000000 * PNT3=SAVEPNT3; /*PUT TIOB POINTER IN R3*/ 03010000 L @3,SAVEPNT3 0091 03020000 * MSGPTR=ADDR(IFDMSG06)+4; /*GET MSG ADDRESS*/ 03030000 L @1,@V1 ADDRESS OF IFDMSG06 0092 03040000 LA @4,4(0,@1) 0092 03050000 * LENGTH='06'X; /*PUT LENGTH OF RESPONSE IN 03060000 * MESSAGE MODULE*/ 03070000 MVI 0(@4),X'06' 0093 03080000 * BUFAD=ADDR(INBUFR); /*PUT ADDR OF BUFFER IN 03090000 * MESSAGE MODULE*/ 03100000 LA @F,INBUFR 0094 03110000 ST @F,@TEMP4 0094 03120000 MVC 1(3,@4),@TEMP4+1 0094 03130000 * MECBAD=ADDR(ECB5); /*PUT ECB ADDR IN MESS MOD*/ 03140000 LA @F,ECB5 0095 03150000 ST @F,4(0,@4) 0095 03160000 * MSGDEVAD=EDEVAD; /*MOVE DEVICE ADDR TO MSG*/ 03170000 MVC @TEMP3+1(3),53(@3) 0096 03180000 L @6,@TEMP3 0096 03190000 MVC 47(8,@4),0(@6) 0096 03200000 * GEN(PWTOR REG=(4)); 03210000 PWTOR REG=(4) 03220000 DS 0H 03230000 * IF RESPONSE='W' THEN /*IS RESPONSE 'WAIT' */ 03240000 CLI RESPONSE,C'W' 0098 03250000 * GOTO EXIT; /*YES - RETURN*/ 03260000 BC 08,EXIT 0099 03270000 * IF RESPONSEª='C' THEN /*IS RESPONSE 'CANCEL' */ 03280000 CLI RESPONSE,C'C' 0100 03290000 * GO TO TMNT30C; /*NO - REPEAT THE MESSAGE*/ 03300000 BC 07,TMNT30C 0101 03310000 * IF ECBDNE = '1' B THEN /* IS ECB POSTED S21050* 03320000 TM 64(@3),B'01000000' 0102 03330000 * GOTO EXIT; /*YES - RETURN*/ 03340000 BC 01,EXIT 0103 03350000 * R0=256; /*NO - POST THE ECB WITH 100 03360000 * COMPLETION CODE*/ 03370000 LA @0,256 0104 03380000 * PL=ADDR(OCBECB); /* ADDR OF ECB S21050* 03390000 LA @1,64(0,@3) 0105 03400000 * GEN(POST (1),(0)); 03410000 POST (1),(0) 03420000 DS 0H 03430000 * EXIT: 03440000 * GEN(L 13,4(13)); /*RESTORE REGISTER 13*/ 03450000 EXIT L 13,4(13) 03460000 DS 0H 03470000 * END; 03480000 @EL01 LM @E,@C,12(@D) 0108 03490000 BCR 15,@E 0108 03500000 @DATA1 EQU * 03510000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 03520000 @1 EQU 01 03530000 @2 EQU 02 03540000 @3 EQU 03 03550000 @4 EQU 04 03560000 @5 EQU 05 03570000 @6 EQU 06 03580000 @7 EQU 07 03590000 @8 EQU 08 03600000 @9 EQU 09 03610000 @A EQU 10 03620000 @B EQU 11 03630000 @C EQU 12 03640000 @D EQU 13 03650000 @E EQU 14 03660000 @F EQU 15 03670000 @MVC MVC 0(1,@A),0(@E) 03680000 @V1 DC V(IFDMSG06) 03690000 DS 0F 03700000 @X4 DC X'0100' 03710000 DS 0D 03720000 @DATA EQU * 03730000 R0 EQU 00000000 FULLWORD POINTER REGISTER 03740000 R1 EQU 00000001 FULLWORD POINTER REGISTER 03750000 PL EQU 00000001 FULLWORD POINTER REGISTER 03760000 PNT2 EQU 00000002 FULLWORD POINTER REGISTER 03770000 PNT3 EQU 00000003 FULLWORD POINTER REGISTER 03780000 MSGPTR EQU 00000004 FULLWORD POINTER REGISTER 03790000 R5 EQU 00000005 FULLWORD POINTER REGISTER 03800000 I EQU 00000007 FULLWORD INTEGER REGISTER 03810000 R14 EQU 00000014 FULLWORD POINTER REGISTER 03820000 R15 EQU 00000015 FULLWORD POINTER REGISTER 03830000 TTECB EQU 00000000 20 BYTE(S) ON WORD 03840000 TEVCB EQU TTECB+00000000 4 BYTE(S) 03850000 TCCPS EQU TTECB+00000004 1 BYTE(S) 03860000 TIMEOUT EQU TTECB+00000004 1 BIT(S) 03870000 A00000 EQU TTECB+00000004 7 BIT(S) 03880000 TCCW1 EQU TTECB+00000005 7 BYTE(S) 03890000 TSNS1 EQU TTECB+00000012 8 BYTE(S) 03900000 IOBOCB EQU 00000000 120 BYTE(S) ON WORD 03910000 IOBFL1 EQU IOBOCB+00000000 1 BYTE(S) 03920000 A00001 EQU IOBOCB+00000000 5 BIT(S) 03930000 PERMERR EQU IOBOCB+00000000 1 BIT(S) 03940000 A00002 EQU IOBOCB+00000000 2 BIT(S) 03950000 IOBFL2 EQU IOBOCB+00000001 1 BYTE(S) 03960000 A00003 EQU IOBOCB+00000002 2 BYTE(S) 03970000 A00004 EQU IOBOCB+00000004 1 BYTE(S) 03980000 IOBECBPT EQU IOBOCB+00000005 3 BYTE POINTER ON WORD+1 03990000 A00005 EQU IOBOCB+00000008 8 BYTE(S) 04000000 A00006 EQU IOBOCB+00000008 1 BYTE(S) 04010000 IOBCSW EQU IOBOCB+00000009 7 BYTE(S) 04020000 A00007 EQU IOBOCB+00000009 3 BYTE(S) 04030000 A00008 EQU IOBOCB+00000012 1 BYTE(S) 04040000 A00009 EQU IOBOCB+00000012 6 BIT(S) 04050000 UNITCK EQU IOBOCB+00000012 1 BIT(S) 04060000 A00010 EQU IOBOCB+00000012 1 BIT(S) 04070000 A00011 EQU IOBOCB+00000013 3 BYTE(S) 04080000 IOBSIOCC EQU IOBOCB+00000016 1 BYTE(S) 04090000 IOBCCWPT EQU IOBOCB+00000017 3 BYTE POINTER ON WORD+1 04100000 A00012 EQU IOBOCB+00000020 1 BYTE(S) 04110000 IOBDCBPT EQU IOBOCB+00000021 3 BYTE POINTER ON WORD+1 04120000 A00013 EQU IOBOCB+00000024 4 BYTE(S) 04130000 IOBTPCNT EQU IOBOCB+00000028 2 BYTE(S) 04140000 A00014 EQU IOBOCB+00000030 2 BYTE(S) 04150000 IOBMEXT EQU IOBOCB+00000032 1 BYTE(S) 04160000 IOBSKAD EQU IOBOCB+00000033 6 BYTE(S) 04170000 A00015 EQU IOBOCB+00000039 1 BYTE(S) 04180000 IOS EQU IOBOCB+00000040 24 BYTE(S) 04190000 SENSECMD EQU IOBOCB+00000040 8 BYTE(S) 04200000 EXPOSUER EQU IOBOCB+00000048 1 BYTE(S) 04210000 SIOTWOCC EQU IOBOCB+00000049 1 BYTE(S) 04220000 SIO2STAT EQU IOBOCB+00000050 2 BYTE(S) 04230000 OCBFL1 EQU IOBOCB+00000052 1 BYTE(S) 04240000 INUSE EQU IOBOCB+00000052 1 BIT(S) 04250000 EXATN EQU IOBOCB+00000052 1 BIT(S) 04260000 A00016 EQU IOBOCB+00000052 1 BIT(S) 04270000 A00017 EQU IOBOCB+00000052 1 BIT(S) 04280000 PCIDN EQU IOBOCB+00000052 1 BIT(S) 04290000 PSTD1ST EQU IOBOCB+00000052 1 BIT(S) 04300000 A00018 EQU IOBOCB+00000052 2 BIT(S) 04310000 ODEVAD EQU IOBOCB+00000053 3 BYTE POINTER 04320000 SIOCNT EQU IOBOCB+00000056 1 BYTE(S) 04330000 SIOCC2 EQU IOBOCB+00000057 1 BYTE(S) 04340000 ILC EQU IOBOCB+00000057 2 BIT(S) 04350000 COCO EQU IOBOCB+00000057 2 BIT(S) 04360000 A00019 EQU IOBOCB+00000057 4 BIT(S) 04370000 SIOSTAT EQU IOBOCB+00000058 2 BYTE(S) 04380000 OTECBAD EQU IOBOCB+00000060 4 BYTE POINTER 04390000 OCB EQU IOBOCB+00000064 48 BYTE(S) 04400000 OCBECB EQU IOBOCB+00000064 4 BYTE(S) 04410000 ECB EQU IOBOCB+00000064 1 BYTE(S) 04420000 A00020 EQU IOBOCB+00000064 1 BIT(S) 04430000 ECBDNE EQU IOBOCB+00000064 1 BIT(S) 04440000 A00021 EQU IOBOCB+00000065 1 BYTE(S) 04450000 ECBPST EQU IOBOCB+00000066 2 BYTE(S) 04460000 A00022 EQU IOBOCB+00000068 8 BYTE(S) 04470000 OINTCT EQU IOBOCB+00000068 1 BYTE(S) 04480000 OCSW1 EQU IOBOCB+00000069 7 BYTE(S) 04490000 A00023 EQU IOBOCB+00000069 3 BYTE(S) 04500000 STS1 EQU IOBOCB+00000072 2 BYTE(S) 04510000 A00024 EQU IOBOCB+00000076 8 BYTE(S) 04520000 A00025 EQU IOBOCB+00000076 1 BYTE(S) 04530000 OCSW2 EQU IOBOCB+00000077 7 BYTE(S) 04540000 A00026 EQU IOBOCB+00000077 3 BYTE(S) 04550000 STS2 EQU IOBOCB+00000080 2 BYTE(S) 04560000 A00027 EQU IOBOCB+00000084 36 BYTE(S) 04570000 OSNSCT EQU IOBOCB+00000084 1 BYTE(S) 04580000 OSNS EQU IOBOCB+00000085 1 BYTE(S) 04590000 TIME30 EQU * 8 BYTE(S) ON DWORD 04600000 DC X'F0F0F0F0F3F0F0C0' 04610000 ECB5 EQU * FULLWORD INTEGER 04620000 DC FL4'0' 04630000 PURLST EQU @DATA+00000012 12 BYTE(S) ON WORD 04640000 A00028 EQU * 1 BYTE(S) 04650000 DC X'A0' 04660000 DEBAD EQU PURLST+00000001 3 BYTE(S) 04670000 ORG PURLST+00000004 04680000 A00029 EQU * 4 BYTE(S) 04690000 DC X'00000000' 04700000 A00030 EQU * 1 BYTE(S) 04710000 DC X'01' 04720000 IOBAD EQU PURLST+00000009 3 BYTE(S) 04730000 A00039 EQU 00000000 8 BYTE(S) ON WORD 04740000 EDEVAD EQU A00039+00000000 8 BYTE(S) 04750000 MSGPARM EQU 00000000 8 BYTE(S) ON WORD 04760000 LENGTH EQU MSGPARM+00000000 1 BYTE(S) 04770000 BUFAD EQU MSGPARM+00000001 3 BYTE POINTER ON WORD+1 04780000 MECBAD EQU MSGPARM+00000004 FULLWORD POINTER 04790000 MSGDEVAD EQU 00000047 8 BYTE(S) 04800000 ORG @DATA+00000025 04810000 SVDEVPTR EQU * 3 BYTE POINTER ON WORD+1 04820000 DC AL3(0) 04830000 ORG @DATA+00000032 04840000 TENTHSEC EQU * 8 BYTE(S) ON DWORD 04850000 DC X'F0F0F0F0F0F0F1C0' 04860000 SAVEPNT3 EQU @DATA+00000040 FULLWORD INTEGER 04870000 A00040 EQU @DATA+00000040 FULLWORD INTEGER 04880000 A00041 EQU A00040+00000000 1 BYTE(S) 04890000 TIOBPT EQU A00040+00000001 3 BYTE POINTER ON WORD+1 04900000 SAVE1 EQU @DATA+00000044 18*FULLWORD INTEGER 04910000 SAVE2 EQU @DATA+00000116 18*FULLWORD INTEGER 04920000 ORG @DATA+00000188 04930000 PATCH EQU * 40 BYTE(S) ON HWORD 04940000 DC C' ' 04950000 DC 00039C' ' 04960000 ENTRY TMNT30 04970000 ORG @DATA 04980000 DS 00000228C 04990000 @TEMPS DS 0F 05000000 @TEMP3 DC F'0' 05010000 @TEMP4 DC F'0' 05020000 COMAREA IFDCOM 05030000 RESPONSE EQU INBUFR+00000000 1 BYTE(S) 05040000 A00031 EQU CESWT+00000000 1 BYTE(S) 05050000 A00032 EQU A00031+00000000 1 BIT(S) 05060000 DPENTRY EQU A00031+00000000 1 BIT(S) 05070000 A00033 EQU A00031+00000000 6 BIT(S) 05080000 A00034 EQU CESWT1+00000000 1 BYTE(S) 05090000 A00035 EQU A00034+00000000 3 BIT(S) 05100000 WAITFG EQU A00034+00000000 1 BIT(S) 05110000 A00036 EQU A00034+00000000 3 BIT(S) 05120000 TPFLAG EQU A00034+00000000 1 BIT(S) 05130000 A00037 EQU TSTDEBAD+00000000 4 BYTE(S) ON WORD 05140000 A00038 EQU A00037+00000000 1 BYTE(S) 05150000 TSTDEBPT EQU A00037+00000001 3 BYTE(S) 05160000 @DATEND EQU * 05170000 END 05180000 ./ ADD SSI=01013355,NAME=IFDOLT07,SOURCE=1 TITLE 'IFDOLT07 DATA PROTECT PACK' 00010000 * GENERATE; 00020000 TITLE 'IFDOLT07 DATA PROTECT PACK' 00030000 * /************************************************************ 00040000 * /* * 00050000 * /*TITLE * 00060000 * /* IFDOLT07 - PACK DATA PROTECTION * 00070000 * /* * 00080000 * /*STATUS * 00090000 * /* CHANGE LEVEL 000 * 00100000 * 00110000 * /* A018400-019600,C020000-042000,C054000, S20203* 00120000 * /* A216600-217200,C320000,C324000,C338000,A357000,A361000, S20203* 00130000 * /* C370000,C380000-382000,C400000-406000,C428000,C434000, S20203* 00140000 * /* C438000-440000,A474000,A494000,A520000,A540000,A548000, S20203* 00150000 * /* D576000-578000,D590000-592000,A602000,D606000,C610000- S20203* 00160000 * /* 612000,C620000,C626000-638000,A651000,A660000,D700000, S20203* 00170000 * /* A704000,D816000-824000,A836060-837680 S20203* 00180000 * 00190000 * /* * 00200000 * /*FUNCTION * 00210000 * /* THIS MODULE ASSURES PRIVACY AND SECURITY OF CUSTOMER * 00220000 * /* DATA FOR 2311 AND 2314 DISK DRIVES BY CHECKING TO SEE * 00230000 * /* IF A CE VOLUME IS MOUNTED. IF NONE IS AVAILABLE THE * 00240000 * /* OPTION IS GIVEN TO CONTINUE THE TEST WITH JUST A * 00250000 * /* SCRATCH VOLUME MOUNTED. IN THIS LATTER CASE NO WRITE * 00260000 * /* TESTING IS ALLOWED * 00270000 * /* * 00280000 * /*ENTRY POINTS * 00290000 * /* FROM DATA PROTECTION GENERAL MODULE(IFDOLT52). * 00300000 * /* * 00310000 * /*INPUT * 00320000 * /* REGISTER 2 POINTS TO THE OLTEP COMMON AREA. REGISTER 7 * 00330000 * /* POINTS TO THE DEVTAB ENTRY FOR THE DEVICE BEING TESTED* 00340000 * /* * 00350000 * /*OUTPUT * 00360000 * /* VARIOUS BITS WILL BE SET OR RESET DEPENDING ON THE * 00370000 * /* TESTING ENVIRONMENT. SIMILARLY ANY OF THE FOLLOWING * 00380000 * /* SEQUENCES OF MESSAGES MAY BE OUTPUT TO BOTH THE CONSOLE* 00390000 * /* AND THE PRINTER: * 00400000 * /* IFD130I,IFD137I,IFD139D * 00410000 * /* IFD138I,IFD139D * 00420000 * /* IFD125I,IFD137I,IFD139D * 00430000 * /* IFD124I,IFD139D * 00440000 * /* * 00450000 * /*EXTERNAL REFERENCES * 00460000 * /* THIS MODULE MAKES USE OF VARIOUS SECTIONS OF THE OLTEP * 00470000 * /* COMMON AREA. IT ALSO REFERENCES THE MESSAGE MODULE * 00480000 * /* IFDMSG02 * 00490000 * /* * 00500000 * /*EXITS * 00510000 * /* TO EXIO(IFDOLT05) TO READ R0 * 00520000 * /* * 00530000 * /* TO WAITIO (IFDOLT06) TO WAIT FOR COMPLETION OF READ * 00540000 * /* * 00550000 * /* TO CONVERT TO CONVERT SENSE-CSW INFO TO EBCDIC IN CASE * 00560000 * /* OF UNUSUAL CONDITIONS * 00570000 * /* * 00580000 * /* RETURN TO GENERAL DATA PROTECTION MODULE (IFDOL52) * 00590000 * /* * 00600000 * /*TABLES/WORKAREA * 00610000 * /* THIS MODULE SETS UP A TECB WHICH IS USED BY IFDOLT05 * 00620000 * /* AND IFDOLT06 * 00630000 * /* * 00640000 * /************************************************************ 00650000 * IFDOLT07: PROC(X); 00660000 LCLA &T,&SPN 0002 00670000 .@001 ANOP 0002 00680000 IFDOLT07 CSECT , 0002 00690000 STM @E,@C,12(@D) 0002 00700000 BALR @B,0 0002 00710000 @PSTART DS 0H 0002 00720000 USING @PSTART+00000,@B 0002 00730000 ST @D,@SAV001+4 0002 00740000 LA @F,@SAV001 0002 00750000 ST @F,8(0,@D) 0002 00760000 LR @D,@F 0002 00770000 * GEN(USING CHASCT,2); /* COMMON AREA BASE REGISTER * 00780000 USING CHASCT,2 00790000 DS 0H 00800000 * GEN DATA; 00810000 * 00820000 * GENERATE DATA; 00830000 * 00840000 * /******************************************************************* 00850000 * /* * 00860000 * /* DECLARED REGISTERS * 00870000 * /* * 00880000 * /******************************************************************* 00890000 * DCL R0 REG(0) PTR; 00900000 * DCL R1 REG(1) PTR; 00910000 * DCL R2 REG(2) PTR; 00920000 * DCL R3 REG(3) PTR; 00930000 * DCL R4 REG(4) PTR; 00940000 * DCL R5 REG(5) PTR; 00950000 * DCL R6 REG(6) PTR; 00960000 * DCL R7 REG(7) PTR; 00970000 * DCL R8 REG(8) PTR; 00980000 * DCL R9 REG(9) PTR; 00990000 * DCL R10 REG(10) PTR; 01000000 * DCL R11 REG(11) PTR; 01010000 * DCL R12 REG(12) PTR; 01020000 * DCL R13 REG(13) PTR; 01030000 * DCL R14 REG(14) PTR; 01040000 * DCL R15 REG(15) PTR; 01050000 * RESTRICT(2,4,5,6,7,8); 01060000 * DCL CESWT3 CHAR(1) GENERATED; /* OLTEP SWITCHES M4506* 01070000 * DCL 1 * CHAR(1) BASED(ADDR(CESWT3)), /* OLTEP SWITCHES M4506* 01080000 * 2 * BIT(3), /* NA M4506* 01090000 * 2 GRBCTL BIT(1), /* GRAB IN CONTROL M4506* 01100000 * 2 SUSDEL BIT(1), /* SUSPENDED DELETION M4506* 01110000 * 3 * BIT(1); /* NA M4506* 01120000 * DCL OLTTAB GENERATED; /* LINK TABLE M4506* 01130000 * DCL 1 * BDY(WORD) BASED(ADDR(OLTTAB)), /* LINK TABLE M4506* 01140000 * 2 OLTTAB1 PTR, /* OLD EXIO M4506* 01150000 * 2 OLTTAB2 PTR, /* OLD WAITIO M4506* 01160000 * 3 * PTR; /* NA M4506* 01170000 * 01180000 * 01190000 * /******************************************************************* 01200000 * /* * 01210000 * /* SECTION CONTROL TABLE * 01220000 * /* * 01230000 * /******************************************************************* 01240000 * 01250000 * DCL CHASCT GENERATED; /* SECTION CONTROL TABLE * 01260000 * DCL 1 * CHAR(1) BASED(ADDR(CHASCT)+10), /* SCT STRUCTURE * 01270000 * 3 * BIT(1), /* NA * 01280000 * 3 FPM BIT(1); /* FILE PROTECT MODE BIT * 01290000 * DCL 1 * CHAR(1) BASED(ADDR(CHASCT)+11), /* SCT CDS FLAGS M1006* 01300000 * 3 CDSFPM BIT(1), /* FILE PROTECT MODE M1006* 01310000 * 3 * BIT(1), /* NA M1006* 01320000 * 3 CDSCEVOL BIT(1), /* CE VOLUME M1006* 01330000 * 3 * BIT(5); /* NA M1006* 01340000 * 01350000 * /******************************************************************** 01360000 * /* * 01370000 * /* COMMUNICATION SWITCHES STRUCTURE * 01380000 * /* * 01390000 * /******************************************************************** 01400000 * 01410000 * 01420000 * DCL CESWT CHAR(5) GENERATED; /* COMMUNICATION SWITCHES * 01430000 * DCL 1 * BASED(ADDR(CESWT)), /* CE SWITCHES * 01440000 * 3 * BIT(8), /* CE SWITCH * 01450000 * 5 * BIT(1), /* NA * 01460000 * 5 PROTECT BIT(1), /* DATA PROT ON SEC DEV * 01470000 * 5 * BIT(6), /* NA * 01480000 * 3 * BIT(8), /* CE SWITCH 1 * 01490000 * 5 * BIT(4), /* NA * 01500000 * 5 FILMSK BIT(1), /* FILE MASK BIT * 01510000 * 5 * BIT(1), /* NA * 01520000 * 5 ONLINEOK BIT(1), /* ONLINE OK BIT * 01530000 * 5 * BIT(1), /* NA * 01540000 * 3 * BIT(8), /* CE SWITCH 2 * 01550000 * 5 NDCFO BIT(1), /* PREVENTS DYNAMIC COMM INTERVAL * 01560000 * 5 DPONDEV BIT(1), /* DATA DONE ON THIS DEVICE * 01570000 * 5 * BIT(1), /* NA * 01580000 * 5 CHANTEST BIT(1), /* INDICATES CHAN TEST ACTIVE * 01590000 * 5 * BIT(1), /* NA * 01600000 * 5 * BIT(1), /* NA * 01610000 * 5 TAPEHDR BIT(1), /* TAPE HEADER BIT * 01620000 * 5 AMERLDV BIT(1), /* MERLIN DEVICE M4505* 01630000 * 3 * BIT(8), /* CE SWITCH 3 * 01640000 * 5 * BIT(1), /* NA * 01650000 * 5 NURUN BIT(1), /* BRING NEW TESTS * 01660000 * 5 BYPDEV BIT(1), /* BYPASS TESTS ON THIS DEVICE * 01670000 * 5 * BIT(1), /* NA * 01680000 * 5 * BIT(1), /* NA * 01690000 * 5 * BIT(1), /* NA * 01700000 * 5 * BIT(1), /* NA * 01710000 * 5 STDLAB BIT(1); /* STANDARD LABEL BIT * 01720000 * 01730000 * DCL I FIXED; /* WORK WORD S20203* 01740000 * DCL LABEL2 GENERATED; /* S20203* 01750000 * 01760000 * /******************************************************************** 01770000 * /* * 01780000 * /* DEVICE TABLE STRUCTURE * 01790000 * /* * 01800000 * /******************************************************************** 01810000 * 01820000 * DCL 1 * BASED(R7), /* S21050* 01830000 * 3 DEVADEB CHAR(8), /* DEV ADDR IN EBCDIC S21050* 01840000 * 3 UCBAD POINTER(31), /* UCB ADDR (2BYTES) S21050* 01850000 * 3 DEVFLG1 CHAR(1), /* FLAG BYTE #1 S21050* 01860000 * 5 STATUS BIT(1), /* ON LINE VS. OFF-LINE S21050* 01870000 * 5 PRIMARY BIT(1), /* PRIMARY BIT S21050* 01880000 * 5 DPDONE BIT(1), /* D.P. COMPLETE S21050* 01890000 * 5 * BIT(3), /* FILL S21050* 01900000 * 5 FILEPROT BIT(1), /* F.P. MODE OPERATION S21050* 01910000 * 5 * BIT(1), /* FILL S21050* 01920000 * 3 DEVFLG2 CHAR(1), /* FLAG BYTE # 2 S21050* 01930000 * 5 * BIT(2), /* N/A S21050* 01940000 * 5 CEVOL BIT(1), /* CE VOL ON DEVICE S21050* 01950000 * 5 STDLABL BIT(1), /* STANDARD TAPE LABEL S21050* 01960000 * 5 * BIT(4), /* FILL S21050* 01970000 * 3 DEVFLG3 CHAR(1), /* FLAG BYTE # 3 S21050* 01980000 * 3 DEVFLG4 CHAR(1), /* FLAG BYTE # 3 S21050* 01990000 * 3 TAPELABL CHAR(16), /* TAPE LABEL SAVE AREA S21050* 02000000 * 5 VOL CHAR(10), /* VOL NAME S21050* 02010000 * 5 HDR CHAR (4), /* HDR NAME S21050* 02020000 * 5 MODESV CHAR(1), /* MODE SAVE AREA S21050* 02030000 * 5 * CHAR(1), /* FILL S21050* 02040000 * 3 ADRHEX CHAR (4), /* 4 BYTE HEX ADDRESS S21050* 02050000 * 5 * CHAR(2), /* FILL S21050* 02060000 * 5 HEXAD CHAR(2), /* 2 BYTE HEX ADDRESS S21052* 02070000 * 3 * CHAR(5), /* N/A S21052* 02080000 * 3 * CHAR(1), /* FLAGS S210 2* 02090000 * 5 DVCDSFPM BIT(1), /* FILE PROTECT FLAG S210 2* 02100000 * 5 * BIT(1), /* N/A S210 2* 02110000 * 5 DVCDSCEV BIT(1); /* CE VOLUME S210 2* 02120000 * DCL REGUCBPT REG(9) PTR; /* UCB PTR S21050* 02130000 * DCL 1 UCBCDS BASED(REGUCBPT), /* UCB DSECT S21050* 02140000 * 3 * CHAR(16), /* FILL S21050* 02150000 * 3 OPTIONAL CHAR(1), /* OPTIONS FIELD S21050* 02160000 * 5 STRACK BIT(1), /* 7 TRACK DEVICE S21050* 02170000 * 3 * CHAR(2), /* N/A S21050* 02180000 * 3 TYPE CHAR(1); /* TYPE S21050* 02190000 * 02200000 * 02210000 * /******************************************************************* 02220000 * /* * 02230000 * /* EXIO PARAMETER LIST * 02240000 * /* * 02250000 * /******************************************************************* 02260000 * 02270000 * DCL 1 PARMLIST, /* PARAMETERS FOR EXIO * 02280000 * 3 TECBPTR PTR(31) INIT(ADDR(TECB)), /* TECB PTR * 02290000 * 3 CCW1 PTR(31), /* S20203* 02300000 * 3 * FIXED INIT(0), 02310000 * 5 DPIND CHAR(2), /* S20203* 02320000 * 5 DEVPTR CHAR(2), 02330000 * 3 CCWCNT CHAR(1) INIT('03'X), 02340000 * 3 FLGS CHAR(1) INIT('30'X), 02350000 * 3 FMKMD CHAR(1) INIT('40'X), 02360000 * 3 * CHAR(1), /* NA * 02370000 * 3 * CHAR(16), /* NA * 02380000 * 5 SEEKAD CHAR(6); /* S20203* 02390000 * 02400000 * 02410000 * /******************************************************************* 02420000 * /* * 02430000 * /* TEST EVENT CONTROL BLOCK STRUCTURE * 02440000 * /* * 02450000 * /******************************************************************* 02460000 * 02470000 * DCL 1 TECB, /* TEST EVENT CONTROL BLOCK * 02480000 * 2 * CHAR(5), /* NA S20203* 02490000 * 3 * CHAR(4), /* NA * 02500000 * 3 CCP CHAR(1), /* CONDITION CODE FROM SIO INSTR * 02510000 * 2 OUTBUFR CHAR(31), /* BUFFER S20203* 02520000 * 3 CSW1 CHAR(7), /* CHANNEL STATUS * 02530000 * 5 * CHAR(3), /* NA * 02540000 * 5 EXIOK CHAR(1), /* EXIO STATUS * 02550000 * 5 * CHAR(3), /* NA * 02560000 * 3 SNS1 CHAR(24), /* SENSE DATA S20203* 02570000 * 5 SNSFLD BIT(8), /* SENSE FIELD * 02580000 * 7 * BIT(1), /* NA * 02590000 * 7 SNS2 BIT(1), /* INTERVENTION REQUIRED BIT * 02600000 * 7 * BIT(6), /* NA * 02610000 * 5 * CHAR(1); /* NA S20203* 02620000 * 02630000 * 02640000 * /******************************************************************* 02650000 * /* * 02660000 * /* R0 DATA LENGTH FIELD * 02670000 * /* * 02680000 * /******************************************************************* 02690000 * 02700000 * /* S20203* 02710000 * DCL 1 BUF CHAR(20), /* LABEL BUFFER S20203* 02720000 * 3 STLAB CHAR(4), /* STAND LABEL S20203* 02730000 * 3 CEVOL1 CHAR(6), /* CE VOLUME S20203* 02740000 * 3 SECBYT CHAR(1), /* SECURITY BYTE S20203* 02750000 * 3 * CHAR(9); /* NA S20203* 02760000 * DCL 1 BUF1 CHAR(5), /* HA BUFFER S20203* 02770000 * 3 * BIT(8), /* NA S20203* 02780000 * 5 * BIT(5), /* NA S20203* 02790000 * 5 MERLIN BIT(1), /* 3330 CE BIT S20203* 02800000 * 5 * BIT(2), /* NA S20203* 02810000 * 3 * CHAR(4); /* NA S20203* 02820000 * DCL 1 BUF2 CHAR(20), /* F0FE BUFFER S20203* 02830000 * 3 * CHAR(14), /* NA S20203* 02840000 * 3 CEF0FE CHAR(5), /* CE F0FE BIT S20203* 02850000 * 3 * CHAR(1); /* NA S20203* 02860000 * 02870000 * 02880000 * 02890000 * 02900000 * DCL IFDMSG07 EXT ENTRY; /* MESSAGE MODULE * 02910000 * DCL MSGPTR PTR INIT(ADDR(IFDMSG07)); /* POINTER TO MESSAGE MODULE* 02920000 * DCL 1 * BASED(R4), /* MESSAGE ADDRESS * 02930000 * 3 MSG1 PTR, /* POINTER TO MESSAGE * 02940000 * 3 MSG2 PTR, /* POINTER TO MESSAGE * 02950000 * 3 MSG3 PTR, /* POINTER TO MESSAGE * 02960000 * 3 MSG4 PTR, /* POINTER TO MESSAGE * 02970000 * 3 MSG5 PTR, /* POINTER TO MESSAGE * 02980000 * 3 MSG6 PTR, /* POINTER TO MESSAGE S20203* 02990000 * 3 MSG6A PTR, /* S20203* 03000000 * 3 MSG7 PTR, /* POINTER TO MESSAGE S20203* 03010000 * 3 MSG8 PTR; /* POINTER TO MESSAGE S20203* 03020000 * DCL MSGDVAD CHAR(8) BASED(R1+16); /*DEV ADDR AREA IN MSG S21050* 03030000 * DCL MSGDVAD1 CHAR(8) BASED(R1+31); /*DEV ADDR AREA IN MSG S21050* 03040000 * DCL MSGDVAD2 CHAR(8) BASED(R1+32); /*DEV ADDR AREA IN MSG S21050* 03050000 * DCL MSGDVAD3 CHAR(8) BASED(R1+29); /*DEV ADDR AREA IN MSG S21050* 03060000 * DCL MSGDVAD4 CHAR(8) BASED(R1+19); /*DEV ADDR AREA IN MSG S21050* 03070000 * DCL MSGCSW CHAR(14) BASED(R1+18); /* CSW DATA IN MESSAGE S20203* 03080000 * DCL MSGSNS CHAR(48) BASED(R1+16); /* SENSE DATA IN MESSAGE * 03090000 * /* S20203* 03100000 * DCL SIX CHAR(2) INIT('0006'X); /* USED TO COMPARE R0 DATA LENGTH * 03110000 * DCL 1 MSGPARM BASED(R1), /* NA * 03120000 * 3 LENGTH CHAR(1), /* LENGTH OF RESPONSE * 03130000 * 3 BUFAD PTR(24), /* POINTER TO RESPONSE BUFFER * 03140000 * 3 MSGECBAD FIXED; /* ECB ADDRESS * 03150000 * DCL DECB FIXED INIT(0); /* EVENT CONTROL BLOCK * 03160000 * DCL INBUFR CHAR(72) GENERATED; 03170000 * DCL BUFFER CHAR(1) BASED(ADDR(INBUFR)); 03180000 * DCL 1 INBUF CHAR(62), /* INPUT BUFFER S20203* 03190000 * 3 CSWIN CHAR(14), /* CONVERTED CSW DATA S20203* 03200000 * 3 SNSIN CHAR(48); /* CONVERTED SENSE DATAS20203* 03210000 * DCL LABEL0 GENERATED; /* S20203* 03220000 * DCL LABEL1 GENERATED; /* S20203* 03230000 * DCL TAB28 PTR(31) GENERATED; /* NEW MACRO ENTRY POINT * 03240000 * DCL CNVRT CHAR(14) GENERATED; /* CONVERT PARAMETER LIST * 03250000 * DCL SEEKVOL CHAR(7) INIT('00000000000003'X);/* SEEK TO VOL1 * 03260000 * /* S20203* 03270000 * DCL SEEKF0FE CHAR(6) INIT('000000060000'X); /* SEEK TO F0FE * 03280000 * /* S20203* 03290000 * DCL SEEKMERL CHAR(6) INIT('000000000000'X); /*S20203* 03300000 * 03310000 * 03320000 * /******************************************************************* 03330000 * /* * 03340000 * /* DETERMINE ONLINE OFFLINE STATUS * 03350000 * /* * 03360000 * /* * 03370000 * /************************************************************ 03380000 * 03390000 * RESTRICT(REGUCBPT); /* RESTRICT UCB REGISTER S21050* 03400000 * REGUCBPT = UCBAD ; /* PICK UCB ADDR FROM S21050* 03410000 L @9,8(0,@7) 0066 03420000 * /* DEVTAB FOR WORK S21050* 03430000 * R4=MSGPTR; /* PUT PTR TO MSG MOD IN R4 * 03440000 L @4,MSGPTR 0067 03450000 * TECB=TECB&&TECB; /* ZERO OUT TECB S20203* 03460000 XC TECB(36),TECB 0068 03470000 * DPIND=DPIND&&DPIND; /* CLEAR LIST ENTRY M4507* 03480000 XC PARMLIST+8(2),PARMLIST+8 0069 03490000 * IF STATUS='1'B THEN DO; /* IF DEVICE IS ONLINE,SET FPM SWS* 03500000 TM 12(@7),B'10000000' 0070 03510000 BC 12,@9FF 0070 03520000 * ONLINEOK='1'B; /* TURN ON ONLINE OK BIT IN COMMU * 03530000 OI A00010+1,B'00000010' 0072 03540000 * /* NICATION SWITCHES * 03550000 * DPPACK01: 03560000 * FPM='1'B; /* TURN ON FILE PROT MODE IN SECT * 03570000 DPPACK01 OI A00005,B'01000000' 0073 03580000 * /* ION CONTROL TABLE * 03590000 * FILEPROT='1'B; /* TURN ON FILE PROT MODE IN DEV * 03600000 OI 12(@7),B'00000010' 0074 03610000 * /* TAB * 03620000 * CDSFPM='1'B; /* SET CDSFPM BIT IN SCT M1006* 03630000 OI A00007,B'10000000' 0075 03640000 * DVCDSFPM='1'B; /* DEVTAB CDS FLAG S21052* 03650000 OI 41(@7),B'10000000' 0076 03660000 * DPDONE='1'B; 03670000 OI 12(@7),B'00100000' 0077 03680000 * GOTO DPPACK08; /* RETURN TO CALLING MODULE * 03690000 BC 15,DPPACK08 0078 03700000 * END; 03710000 * IF DPDONE='1'B THEN 03720000 @9FF TM 12(@7),B'00100000' 0080 03730000 * GOTO DPPACK08; 03740000 BC 01,DPPACK08 0081 03750000 * IF TYPE='09'X THEN GOTO DPPACK14; /* IS THIS A 3330 S20203* 03760000 CLI 19(@9),X'09' 0082 03770000 BC 08,DPPACK14 0083 03780000 * 03790000 * /******************************************************************* 03800000 * /* * 03810000 * /* SET UP PARAMETERS FOR EXIO * 03820000 * /* * 03830000 * /******************************************************************* 03840000 * 03850000 * DPPACK00: 03860000 * CCW1=ADDR(LABEL1); /* ADDRESS OF CCW STRING M4505* 03870000 DPPACK00 LA @F,LABEL1 0084 03880000 ST @F,PARMLIST+4 0084 03890000 * IF PRIMARY='0'B THEN /* SECONDARY DEV S20203* 03900000 TM 12(@7),B'01000000' 0085 03910000 BC 05,@9FE 0085 03920000 * DPIND='FFFF'X; /* SET SEC INDICATOR S20203* 03930000 MVC PARMLIST+8(2),@X4 0086 03940000 * DEVPTR=HEXAD; /*PUT DEVICE ADDR IN PL * 03950000 @9FE MVC PARMLIST+10(2),34(@7) 0087 03960000 * SEEKAD=SEEKF0FE; /* S20203* 03970000 MVC PARMLIST+16(6),SEEKF0FE 0088 03980000 * 03990000 * GEN(BAL R5,IORTN); /* I/O ROUTINES M4506* 04000000 BAL R5,IORTN 04010000 DS 0H 04020000 * /******************************************************************* 04030000 * /* * 04040000 * /* CHECK FOR CE PACK S20203* 04050000 * /* * 04060000 * /******************************************************************* 04070000 * 04080000 * IF CEF0FE='F0FE-' THEN /* IS VOL F0FE PACK S20203* 04090000 CLC BUF2+14(5),@C5 0090 04100000 * GOTO DPPACK09; /* GO SET UP FOR EXIT S20203* 04110000 BC 08,DPPACK09 0091 04120000 * 04130000 * 04140000 * /******************************************************************* 04150000 * /* * 04160000 * /* SET UP PARAMETERS FOR EXIO S20203* 04170000 * /* * 04180000 * /******************************************************************* 04190000 * 04200000 * DPPACK12: /* S20203* 04210000 * CCW1=ADDR(LABEL0); /*ADDRESS OF CCWW LIST S20203* 04220000 DPPACK12 LA @F,LABEL0 0092 04230000 ST @F,PARMLIST+4 0092 04240000 * DEVPTR=HEXAD; /*PUT DEVICE ADDR IN PLS20203* 04250000 MVC PARMLIST+10(2),34(@7) 0093 04260000 * SEEKAD=SEEKVOL; /* SEEK ADDRESS S20203* 04270000 MVC PARMLIST+16(6),SEEKVOL 0094 04280000 * 04290000 * 04300000 * GEN(BAL R5,IORTN); /* I/O ROUTINES M4506* 04310000 BAL R5,IORTN 04320000 DS 0H 04330000 * /******************************************************************** 04340000 * /* * 04350000 * /* CHECK LABEL AND SECURITY BIT S20203* 04360000 * /* * 04370000 * /******************************************************************** 04380000 * 04390000 * IF STLABª='VOL1' THEN /* IS THIS A STAND LAB S20203* 04400000 CLC BUF(4),@C6 0096 04410000 * GOTO DPPACK13; /* GO PRINT MSG S20203* 04420000 BC 07,DPPACK13 0097 04430000 * IF SECBYT='F0'X³ /* NO SECURITY M4506* 04440000 * SECBYT='00'X THEN /* NO SECURITY M4506* 04450000 CLI BUF+10,X'F0' 0098 04460000 BC 08,@9FD 0098 04470000 CLI BUF+10,X'00' 0098 04480000 BC 07,@9FC 0098 04490000 * IF CEVOL1='CEPACK' THEN /* CE PACK IDENTITY M4506* 04500000 @9FD CLC BUF+4(6),@C9 0099 04510000 * GOTO DPPACK09; /* CE PACK FOUND M4506* 04520000 BC 08,DPPACK09 0100 04530000 * ELSE GOTO DPPACK13; /* NO CE PACK M4506* 04540000 BC 15,DPPACK13 0101 04550000 * ELSE GOTO DPPACK11; /* SECURITY PROTECTED M4506* 04560000 * DPPACK14: /* S20203* 04570000 * 04580000 * 04590000 * /******************************************************************* 04600000 * /* * 04610000 * /* SET UP PARAMETERS FOR EXIO S20203* 04620000 * /* * 04630000 * /******************************************************************* 04640000 * 04650000 * CCW1=ADDR(LABEL2); /* ADDRESS OF CCW LIST S20203* 04660000 @9FB EQU * 0103 04670000 DPPACK14 LA @F,LABEL2 0103 04680000 ST @F,PARMLIST+4 0103 04690000 * IF PRIMARY='0'B THEN /* SECONDARY DEV S20203* 04700000 TM 12(@7),B'01000000' 0104 04710000 BC 05,@9FA 0104 04720000 * DPIND='FFFF'X; /* SET SEC INDICATOR S20203* 04730000 MVC PARMLIST+8(2),@X4 0105 04740000 * DEVPTR=HEXAD; /*PUT DEVICE ADDR IN PLS20203* 04750000 @9FA MVC PARMLIST+10(2),34(@7) 0106 04760000 * SEEKAD=SEEKMERL; /* S20203* 04770000 MVC PARMLIST+16(6),SEEKMERL 0107 04780000 * AMERLDV='1'B; /* MERLIN DEVICE S20203* 04790000 OI A00010+2,B'00000001' 0108 04800000 * 04810000 * 04820000 * GEN(BAL R5,IORTN); /* I/O ROUTINES M4506* 04830000 BAL R5,IORTN 04840000 DS 0H 04850000 * /******************************************************************* 04860000 * /* * 04870000 * /* CHECK MERLIN CE BIT S20203* 04880000 * /* * 04890000 * /******************************************************************* 04900000 * IF MERLIN='1'B THEN /* IS THE VOL A CE PACKS20203* 04910000 TM BUF1,B'00000100' 0110 04920000 * GOTO DPPACK09; /* GO SET UP FOR EXIT S20203* 04930000 BC 01,DPPACK09 0111 04940000 * /* S20203* 04950000 * GOTO DPPACK00; /* BRANCH TO DPPACK00 S21050* 04960000 BC 15,DPPACK00 0112 04970000 * 04980000 * /******************************************************************* 04990000 * /* * 05000000 * /* PRINT IFD124I MESSAGE * 05010000 * /* * 05020000 * /******************************************************************* 05030000 * DPPACK13: /* S20203* 05040000 * FILMSK='0'B; /*SET TO INHIBIT MODE SET CHG* 05050000 DPPACK13 NI A00010+1,B'11110111' 0113 05060000 * R1=MSG2; /* POINTER TO MESSAGE * 05070000 L @1,4(0,@4) 0114 05080000 * MSGDVAD1=DEVADEB; /* PUT DEV ADDR IN MSG2 * 05090000 MVC 31(8,@1),0(@7) 0115 05100000 * GEN(BAL R5,DPPWTO); /* PRINT MESSAGE M4506* 05110000 BAL R5,DPPWTO 05120000 DS 0H 05130000 * 05140000 * GOTO DPPACK10; /*GO PRINT MSG IFD139D * 05150000 BC 15,DPPACK10 0117 05160000 * 05170000 * DPPACK09: /* S20203* 05180000 * DPDONE='1'B; /* S20203* 05190000 DPPACK09 OI 12(@7),B'00100000' 0118 05200000 * FILEPROT='0'B; /* TURN OFF FILE PROT BIT IN DVTAB* 05210000 NI 12(@7),B'11111101' 0119 05220000 * /* S20203* 05230000 * FPM='0'B; /* SCT,OFFSET 10 S21052* 05240000 NI A00005,B'10111111' 0120 05250000 * DVCDSFPM='0'B; /* DEVTAB CDS FLAG S21052* 05260000 NI 41(@7),B'01111111' 0121 05270000 * DVCDSCEV='1'B; /* DEVTAB CDS FLAGS S21052* 05280000 OI 41(@7),B'00100000' 0122 05290000 * CDSFPM='0'B; /* ZERO CDSFPM BIT IN SCT S20203* 05300000 NI A00007,B'01111111' 0123 05310000 * CDSCEVOL='1'B; /* SET CDSCEVOL BIT IN SCT S20203* 05320000 OI A00007,B'00100000' 0124 05330000 * CEVOL='1'B; /* S20203* 05340000 OI 13(@7),B'00100000' 0125 05350000 * GOTO DPPACK08; /* S20203* 05360000 BC 15,DPPACK08 0126 05370000 * DPPACK02: 05380000 * IF CCP='30'X THEN /* IF CC=3 GO PRINT M1310* 05390000 DPPACK02 CLI TECB+4,X'30' 0127 05400000 * GOTO DPPACK04; /* MESSAGE * 05410000 BC 08,DPPACK04 0128 05420000 * IF SNS2='0'B THEN /* IF INTERVENTION IS NOT REQUIRED* 05430000 TM TECB+12,B'01000000' 0129 05440000 * GOTO DPPACK05; /* GO PRINT MESSAGE * 05450000 BC 08,DPPACK05 0130 05460000 * 05470000 * R1=MSG4; /* POINTER TO MESSAGE * 05480000 L @1,12(0,@4) 0131 05490000 * MSGDVAD3=DEVADEB; /* PUT DEV ADDR IN MSG4 * 05500000 MVC 29(8,@1),0(@7) 0132 05510000 * GEN(BAL R5,DPPWTO); /* PRINT MESSAGE M4506* 05520000 BAL R5,DPPWTO 05530000 DS 0H 05540000 * 05550000 * GOTO DPPACK06; /* GO CONVERT SNS/CSW INFO * 05560000 BC 15,DPPACK06 0134 05570000 * 05580000 * DPPACK03: 05590000 * R1=MSG6; /* POINTER TO MESSAGE * 05600000 DPPACK03 L @1,20(0,@4) 0135 05610000 * MSGCSW=CSWIN; /* PUT CONVERTED DATA IN MSG * 05620000 MVC 18(14,@1),INBUF 0136 05630000 * GEN(BAL R5,DPPWTO); /* PRINT MESSAGE M4506* 05640000 BAL R5,DPPWTO 05650000 DS 0H 05660000 * I=12; /* SENSE BYTES NORMALLYS20203* 05670000 LA @F,12 0138 05680000 ST @F,I 0138 05690000 * IF TYPE='09'X THEN /* CHECK FOR MERLIN S20203* 05700000 CLI 19(@9),X'09' 0139 05710000 BC 07,@9F9 0139 05720000 * I=48; /* MERLIN SENSE BYTES S20203* 05730000 LA @F,48 0140 05740000 ST @F,I 0140 05750000 * R1=MSG6A; /* POINTER TO SENSE MESSAGE * 05760000 @9F9 L @1,24(0,@4) 0141 05770000 * /* S20203* 05780000 * MSGSNS(1)=' '; /* CLEAR A SENSE LOCATION * 05790000 MVI 16(@1),C' ' 0142 05800000 * /* S20203* 05810000 * MSGSNS(2:48)=MSGSNS(1:47); /* CLEAR SENSE LOCATIONS * 05820000 MVC 17(47,@1),16(@1) 0143 05830000 * /* S20203* 05840000 * MSGSNS(1:I)=SNSIN(1:I); /* SENSE DATA INTO MESSAGE * 05850000 LA @E,INBUF+14 0144 05860000 L @3,I 0144 05870000 BCTR @3,0 0144 05880000 LA @A,16(0,@1) 0144 05890000 EX @3,@MVC 0144 05900000 * GEN(BAL R5,DPPWTO); /* PRINT MESSAGE M4506* 05910000 BAL R5,DPPWTO 05920000 DS 0H 05930000 * /******************************************************************* 05940000 * /* * 05950000 * /* PRINT MESSAGE IFD139D * 05960000 * /* * 05970000 * /******************************************************************* 05980000 * DPPACK10: 05990000 * R1=MSG5; /* POINTER TO MESSAGE * 06000000 DPPACK10 L @1,16(0,@4) 0146 06010000 * BUFAD=ADDR(BUFFER); /* SET UP BUFFER ADDRESS * 06020000 LA @F,BUFFER 0147 06030000 ST @F,@TEMP4 0147 06040000 MVC 1(3,@1),@TEMP4+1 0147 06050000 * MSGECBAD=ADDR(DECB); /* PTR TO PWTOR ECB * 06060000 LA @F,DECB 0148 06070000 ST @F,4(0,@1) 0148 06080000 * LENGTH='01'X; /* LENGTH OF RESPONSE * 06090000 MVI 0(@1),X'01' 0149 06100000 * DECB=0; /* CLEAR EVENT CONTROL BLOCK * 06110000 SR @F,@F 0150 06120000 ST @F,DECB 0150 06130000 * GEN(BAL R5,DPPWTOR); /* PRINT AND REPLY M4506* 06140000 BAL R5,DPPWTOR 06150000 DS 0H 06160000 * IF BUFFER='P' THEN /* IF PROCEED GO SET UP FOR RETURN* 06170000 CLI BUFFER,C'P' 0152 06180000 * GOTO DPPACK01; /* TO CALLING MODULE * 06190000 BC 08,DPPACK01 0153 06200000 * IF BUFFER='B' THEN DO; 06210000 CLI BUFFER,C'B' 0154 06220000 BC 07,@9F8 0154 06230000 * DPPACK07: 06240000 * IF PRIMARY ='1'B THEN 06250000 DPPACK07 TM 12(@7),B'01000000' 0156 06260000 BC 12,@9F7 0156 06270000 * BYPDEV='1'B; 06280000 OI A00010+3,B'00100000' 0157 06290000 * GOTO DPPACK08; 06300000 BC 15,DPPACK08 0158 06310000 * END; 06320000 * IF BUFFER='R' THEN /* IF RETRY * 06330000 @9F8 CLI BUFFER,C'R' 0160 06340000 * GOTO DPPACK00; /* GO READ R0 AGAIN * 06350000 BC 08,DPPACK00 0161 06360000 * ELSE GOTO DPPACK10; /* TRY AGAIN, DID NOT RECOGNIZE * 06370000 BC 15,DPPACK10 0162 06380000 * /* REPLY * 06390000 * /******************************************************************* 06400000 * /* * 06410000 * /* PRINT MESSAGE IFD138I * 06420000 * /* * 06430000 * /******************************************************************* 06440000 * DPPACK04: 06450000 * R1=MSG1; /* POINTER TO MESSAGE * 06460000 DPPACK04 L @1,0(0,@4) 0163 06470000 * MSGDVAD=DEVADEB; /* PUT DEV ADDR IN MSG1 * 06480000 MVC 16(8,@1),0(@7) 0164 06490000 * GEN(BAL R5,DPPWTO); /* PRINT MESSAGE M4506* 06500000 BAL R5,DPPWTO 06510000 DS 0H 06520000 * GOTO DPPACK10; 06530000 BC 15,DPPACK10 0166 06540000 * 06550000 * /******************************************************************* 06560000 * /* * 06570000 * /* PRINT MESSAGE IFD125I * 06580000 * /* * 06590000 * /******************************************************************* 06600000 * DPPACK05: 06610000 * R1=MSG3; /* POINTER TO MESSAGE * 06620000 DPPACK05 L @1,8(0,@4) 0167 06630000 * MSGDVAD2=DEVADEB; /* PUT DEV ADDR IN MSG3 * 06640000 MVC 32(8,@1),0(@7) 0168 06650000 * GEN(BAL R5,DPPWTO); /* PRINT MESSAGE M4506* 06660000 BAL R5,DPPWTO 06670000 DS 0H 06680000 * GOTO DPPACK06; 06690000 BC 15,DPPACK06 0170 06700000 * 06710000 * /******************************************************************* 06720000 * /* * 06730000 * /* CONVERT SENSE & CSW INFO * 06740000 * /* * 06750000 * /******************************************************************* 06760000 * DPPACK06: 06770000 * GEN(BAL R14,NEWCONV); /* CONVERT CALL M4506* 06780000 DPPACK06 BAL R14,NEWCONV 06790000 DS 0H 06800000 * SUSDEL='1'B; /* SUSPEND DELETION M4506* 06810000 OI A00000,B'00001000' 0172 06820000 * GEN(BAL R14,NEWCONV); /* CONVERT CALL M4506* 06830000 BAL R14,NEWCONV 06840000 DS 0H 06850000 * GOTO DPPACK03; /* GO PRINT SNS/CSW INFO * 06860000 BC 15,DPPACK03 0174 06870000 * 06880000 * 06890000 * /******************************************************************** 06900000 * /* * 06910000 * /* PRINT MESSAGE IFD122I S20203* 06920000 * /* * 06930000 * /******************************************************************** 06940000 * 06950000 * DPPACK11: /* S20203* 06960000 * R1=MSG8; /* PTR TO MSG S20203* 06970000 DPPACK11 L @1,32(0,@4) 0175 06980000 * MSGDVAD4=DEVADEB; /* PUT DEV ADDR IN MSG 8 S20203* 06990000 MVC 19(8,@1),0(@7) 0176 07000000 * GEN(BAL R5,DPPWTO); /* PRINT MESSAGE M4506* 07010000 BAL R5,DPPWTO 07020000 DS 0H 07030000 * 07040000 * 07050000 * /******************************************************************** 07060000 * /* * 07070000 * /* PRINT MESSAGE IFD139D S20203* 07080000 * /* * 07090000 * /******************************************************************** 07100000 * 07110000 * R1=MSG7; /* POINTER TO MESSAGE S20203* 07120000 L @1,28(0,@4) 0178 07130000 * BUFAD=ADDR(BUFFER); /* SET UP BUFFER ADDR S20203* 07140000 LA @F,BUFFER 0179 07150000 ST @F,@TEMP4 0179 07160000 MVC 1(3,@1),@TEMP4+1 0179 07170000 * MSGECBAD=ADDR(DECB); /* POINTER TO PWTOR ECBS20203* 07180000 LA @F,DECB 0180 07190000 ST @F,4(0,@1) 0180 07200000 * LENGTH='01'X; /* LENGTH OF RESPONSE S20203* 07210000 MVI 0(@1),X'01' 0181 07220000 * DECB=0; /* CLEAR ECB S20203* 07230000 SR @F,@F 0182 07240000 ST @F,DECB 0182 07250000 * GEN(BAL R5,DPPWTOR); /* PRINT AND REPLY M4506* 07260000 BAL R5,DPPWTOR 07270000 DS 0H 07280000 * IF BUFFER='B' THEN /* BYPASS X S20203* 07290000 CLI BUFFER,C'B' 0184 07300000 * GOTO DPPACK07; /* S20203* 07310000 BC 08,DPPACK07 0185 07320000 * IF BUFFER='R' THEN /* RETRY ? S20203* 07330000 CLI BUFFER,C'R' 0186 07340000 * GOTO DPPACK00; /* S20203* 07350000 BC 08,DPPACK00 0187 07360000 * ELSE GOTO DPPACK11; /* REPLY NOT RECOGNIZED TRY AGAIN* 07370000 BC 15,DPPACK11 0188 07380000 * /* S20203* 07390000 * 07400000 * DPPWTO: 07410000 * GEN(PWTO REG=(1)); /* ISSUE WTO M4506* 07420000 DPPWTO PWTO REG=(1) 07430000 DS 0H 07440000 * GOTO R5; /* RETURN M4506* 07450000 BCR 15,@5 0190 07460000 * DPPWTOR: 07470000 * GEN(PWTOR REG=(1)); /* ISSUE WTOR M4506* 07480000 DPPWTOR PWTOR REG=(1) 07490000 DS 0H 07500000 * GOTO R5; /* RETURN M4506* 07510000 BCR 15,@5 0192 07520000 * IORTN: 07530000 * FILMSK='1'B; /* ALLOW MODE SET M4506* 07540000 IORTN OI A00010+1,B'00001000' 0193 07550000 * PROTECT='1'B; /* FILE PROTECT MODE M4506* 07560000 OI A00010,B'01000000' 0194 07570000 * GEN(BAL R6,OLDEXIO); /* OLD EXIO M4506* 07580000 BAL R6,OLDEXIO 07590000 DS 0H 07600000 * SUSDEL='1'B; /* SUSPEND DELETION M4506* 07610000 OI A00000,B'00001000' 0196 07620000 * GEN(BAL R6,OLDEXIO); /* OLD EXIO M4506* 07630000 BAL R6,OLDEXIO 07640000 DS 0H 07650000 * GEN(BAL R6,OLDWAIT); /* OLD WAITIO M4506* 07660000 BAL R6,OLDWAIT 07670000 DS 0H 07680000 * SUSDEL='1'B; /* SUSPEND DELETION M4506* 07690000 OI A00000,B'00001000' 0199 07700000 * GEN(BAL R6,OLDWAIT); /* OLD WAITIO M4506* 07710000 BAL R6,OLDWAIT 07720000 DS 0H 07730000 * PROTECT='0'B; /* CLEAR BIT M4506* 07740000 NI A00010,B'10111111' 0201 07750000 * IF EXIOKª='0C'X THEN /* CHECK EXIO M4506* 07760000 CLI TECB+8,X'0C' 0202 07770000 * GOTO DPPACK02; 07780000 BC 07,DPPACK02 0203 07790000 * GOTO R5; /* RETURN FROM ROUTINE M4506* 07800000 BCR 15,@5 0204 07810000 * OLDEXIO: 07820000 * R15=OLTTAB1; /* OLD EXIO CALL M4506* 07830000 OLDEXIO L @F,A00003 0205 07840000 * R1=ADDR(PARMLIST); /* EXIO PARAMETER M4506* 07850000 LA @1,PARMLIST 0206 07860000 * GEN(BALR R14,R15); /* GO TO OLD EXIO M4506* 07870000 BALR R14,R15 07880000 DS 0H 07890000 * GOTO R6; /* RETURN TO ROUTINE M4506* 07900000 BCR 15,@6 0208 07910000 * OLDWAIT: 07920000 * R15=OLTTAB2; /* OLD WAITIO CALL M4506* 07930000 OLDWAIT L @F,A00003+4 0209 07940000 * R1=ADDR(TECB); /* WAITIO PARAMETER M4506* 07950000 LA @1,TECB 0210 07960000 * GEN(BALR R14,R15); /* GO TO OLD WAITIO M4506* 07970000 BALR R14,R15 07980000 DS 0H 07990000 * GOTO R6; /* RETURN TO ROUTINE M4506* 08000000 BCR 15,@6 0212 08010000 * NEWCONV: 08020000 * R1=ADDR(CNVRT); /* CONVERT PARAMETER M4506* 08030000 NEWCONV LA @1,CNVRT 0213 08040000 * R15=TAB28; /* TRANSIENT MANAGER M4506* 08050000 L @F,TAB28 0214 08060000 * GOTO R15; /* CALL CONVERT M4506* 08070000 BCR 15,@F 0215 08080000 * 08090000 * DPPACK08: 08100000 * AMERLDV='0'B; /* TURN OFF MERLIN FLG S21050* 08110000 DPPACK08 NI A00010+2,B'11111110' 0216 08120000 * RETURN; /* RETURN TO CALLING MODULE * 08130000 * END; 08140000 @EL01 L @D,4(0,@D) 0218 08150000 LM @E,@C,12(@D) 0218 08160000 BCR 15,@E 0218 08170000 @DATA1 EQU * 08180000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 08190000 @1 EQU 01 08200000 @2 EQU 02 08210000 @3 EQU 03 08220000 @4 EQU 04 08230000 @5 EQU 05 08240000 @6 EQU 06 08250000 @7 EQU 07 08260000 @8 EQU 08 08270000 @9 EQU 09 08280000 @A EQU 10 08290000 @B EQU 11 08300000 @C EQU 12 08310000 @D EQU 13 08320000 @E EQU 14 08330000 @F EQU 15 08340000 @MVC MVC 0(1,@A),0(@E) 08350000 DS 0F 08360000 @C6 DC C'VOL1' 08370000 @X4 DC X'FFFF' 08380000 @C9 DC C'CEPACK' 08390000 @C5 DC C'F0FE-' 08400000 DS 0D 08410000 @DATA EQU * 08420000 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 08430000 X EQU 00000000 FULLWORD INTEGER 08440000 R0 EQU 00000000 FULLWORD POINTER REGISTER 08450000 R1 EQU 00000001 FULLWORD POINTER REGISTER 08460000 R2 EQU 00000002 FULLWORD POINTER REGISTER 08470000 R3 EQU 00000003 FULLWORD POINTER REGISTER 08480000 R4 EQU 00000004 FULLWORD POINTER REGISTER 08490000 R5 EQU 00000005 FULLWORD POINTER REGISTER 08500000 R6 EQU 00000006 FULLWORD POINTER REGISTER 08510000 R7 EQU 00000007 FULLWORD POINTER REGISTER 08520000 R8 EQU 00000008 FULLWORD POINTER REGISTER 08530000 R9 EQU 00000009 FULLWORD POINTER REGISTER 08540000 R10 EQU 00000010 FULLWORD POINTER REGISTER 08550000 R11 EQU 00000011 FULLWORD POINTER REGISTER 08560000 R12 EQU 00000012 FULLWORD POINTER REGISTER 08570000 R13 EQU 00000013 FULLWORD POINTER REGISTER 08580000 R14 EQU 00000014 FULLWORD POINTER REGISTER 08590000 R15 EQU 00000015 FULLWORD POINTER REGISTER 08600000 I EQU @DATA+00000072 FULLWORD INTEGER 08610000 A00028 EQU 00000000 42 BYTE(S) ON WORD 08620000 DEVADEB EQU A00028+00000000 8 BYTE(S) 08630000 UCBAD EQU A00028+00000008 FULLWORD POINTER 08640000 DEVFLG1 EQU A00028+00000012 1 BYTE(S) 08650000 STATUS EQU A00028+00000012 1 BIT(S) 08660000 PRIMARY EQU A00028+00000012 1 BIT(S) 08670000 DPDONE EQU A00028+00000012 1 BIT(S) 08680000 A00029 EQU A00028+00000012 3 BIT(S) 08690000 FILEPROT EQU A00028+00000012 1 BIT(S) 08700000 A00030 EQU A00028+00000012 1 BIT(S) 08710000 DEVFLG2 EQU A00028+00000013 1 BYTE(S) 08720000 A00031 EQU A00028+00000013 2 BIT(S) 08730000 CEVOL EQU A00028+00000013 1 BIT(S) 08740000 STDLABL EQU A00028+00000013 1 BIT(S) 08750000 A00032 EQU A00028+00000013 4 BIT(S) 08760000 DEVFLG3 EQU A00028+00000014 1 BYTE(S) 08770000 DEVFLG4 EQU A00028+00000015 1 BYTE(S) 08780000 TAPELABL EQU A00028+00000016 16 BYTE(S) 08790000 VOL EQU A00028+00000016 10 BYTE(S) 08800000 HDR EQU A00028+00000026 4 BYTE(S) 08810000 MODESV EQU A00028+00000030 1 BYTE(S) 08820000 A00033 EQU A00028+00000031 1 BYTE(S) 08830000 ADRHEX EQU A00028+00000032 4 BYTE(S) 08840000 A00034 EQU A00028+00000032 2 BYTE(S) 08850000 HEXAD EQU A00028+00000034 2 BYTE(S) 08860000 A00035 EQU A00028+00000036 5 BYTE(S) 08870000 A00036 EQU A00028+00000041 1 BYTE(S) 08880000 DVCDSFPM EQU A00028+00000041 1 BIT(S) 08890000 A00037 EQU A00028+00000041 1 BIT(S) 08900000 DVCDSCEV EQU A00028+00000041 1 BIT(S) 08910000 REGUCBPT EQU 00000009 FULLWORD POINTER REGISTER 08920000 UCBCDS EQU 00000000 20 BYTE(S) ON WORD 08930000 A00038 EQU UCBCDS+00000000 16 BYTE(S) 08940000 OPTIONAL EQU UCBCDS+00000016 1 BYTE(S) 08950000 STRACK EQU UCBCDS+00000016 1 BIT(S) 08960000 A00039 EQU UCBCDS+00000017 2 BYTE(S) 08970000 TYPE EQU UCBCDS+00000019 1 BYTE(S) 08980000 PARMLIST EQU @DATA+00000076 32 BYTE(S) ON WORD 08990000 ORG PARMLIST+00000000 09000000 TECBPTR EQU * FULLWORD POINTER 09010000 DC AL4(TECB) 09020000 CCW1 EQU PARMLIST+00000004 FULLWORD POINTER 09030000 ORG PARMLIST+00000008 09040000 A00040 EQU * FULLWORD INTEGER 09050000 DC FL4'0' 09060000 DPIND EQU PARMLIST+00000008 2 BYTE(S) 09070000 DEVPTR EQU PARMLIST+00000010 2 BYTE(S) 09080000 CCWCNT EQU * 1 BYTE(S) 09090000 DC X'03' 09100000 FLGS EQU * 1 BYTE(S) 09110000 DC X'30' 09120000 FMKMD EQU * 1 BYTE(S) 09130000 DC X'40' 09140000 A00041 EQU PARMLIST+00000015 1 BYTE(S) 09150000 A00042 EQU PARMLIST+00000016 16 BYTE(S) 09160000 SEEKAD EQU PARMLIST+00000016 6 BYTE(S) 09170000 TECB EQU @DATA+00000108 36 BYTE(S) ON WORD 09180000 A00043 EQU TECB+00000000 5 BYTE(S) 09190000 A00044 EQU TECB+00000000 4 BYTE(S) 09200000 CCP EQU TECB+00000004 1 BYTE(S) 09210000 OUTBUFR EQU TECB+00000005 31 BYTE(S) 09220000 CSW1 EQU TECB+00000005 7 BYTE(S) 09230000 A00045 EQU TECB+00000005 3 BYTE(S) 09240000 EXIOK EQU TECB+00000008 1 BYTE(S) 09250000 A00046 EQU TECB+00000009 3 BYTE(S) 09260000 SNS1 EQU TECB+00000012 24 BYTE(S) 09270000 SNSFLD EQU TECB+00000012 8 BIT(S) 09280000 A00047 EQU TECB+00000012 1 BIT(S) 09290000 SNS2 EQU TECB+00000012 1 BIT(S) 09300000 A00048 EQU TECB+00000012 6 BIT(S) 09310000 A00049 EQU TECB+00000013 1 BYTE(S) 09320000 BUF EQU @DATA+00000144 20 BYTE(S) 09330000 STLAB EQU BUF+00000000 4 BYTE(S) 09340000 CEVOL1 EQU BUF+00000004 6 BYTE(S) 09350000 SECBYT EQU BUF+00000010 1 BYTE(S) 09360000 A00050 EQU BUF+00000011 9 BYTE(S) 09370000 BUF1 EQU @DATA+00000164 5 BYTE(S) 09380000 A00051 EQU BUF1+00000000 8 BIT(S) 09390000 A00052 EQU BUF1+00000000 5 BIT(S) 09400000 MERLIN EQU BUF1+00000000 1 BIT(S) 09410000 A00053 EQU BUF1+00000000 2 BIT(S) 09420000 A00054 EQU BUF1+00000001 4 BYTE(S) 09430000 BUF2 EQU @DATA+00000169 20 BYTE(S) 09440000 A00055 EQU BUF2+00000000 14 BYTE(S) 09450000 CEF0FE EQU BUF2+00000014 5 BYTE(S) 09460000 A00056 EQU BUF2+00000019 1 BYTE(S) 09470000 ORG @DATA+00000192 09480000 MSGPTR EQU * FULLWORD POINTER 09490000 DC VL4(IFDMSG07) 09500000 A00057 EQU 00000000 36 BYTE(S) ON WORD 09510000 MSG1 EQU A00057+00000000 FULLWORD POINTER 09520000 MSG2 EQU A00057+00000004 FULLWORD POINTER 09530000 MSG3 EQU A00057+00000008 FULLWORD POINTER 09540000 MSG4 EQU A00057+00000012 FULLWORD POINTER 09550000 MSG5 EQU A00057+00000016 FULLWORD POINTER 09560000 MSG6 EQU A00057+00000020 FULLWORD POINTER 09570000 MSG6A EQU A00057+00000024 FULLWORD POINTER 09580000 MSG7 EQU A00057+00000028 FULLWORD POINTER 09590000 MSG8 EQU A00057+00000032 FULLWORD POINTER 09600000 MSGDVAD EQU 00000016 8 BYTE(S) 09610000 MSGDVAD1 EQU 00000031 8 BYTE(S) 09620000 MSGDVAD2 EQU 00000032 8 BYTE(S) 09630000 MSGDVAD3 EQU 00000029 8 BYTE(S) 09640000 MSGDVAD4 EQU 00000019 8 BYTE(S) 09650000 MSGCSW EQU 00000018 14 BYTE(S) 09660000 MSGSNS EQU 00000016 48 BYTE(S) 09670000 SIX EQU * 2 BYTE(S) 09680000 DC X'0006' 09690000 MSGPARM EQU 00000000 8 BYTE(S) ON WORD 09700000 LENGTH EQU MSGPARM+00000000 1 BYTE(S) 09710000 BUFAD EQU MSGPARM+00000001 3 BYTE POINTER ON WORD+1 09720000 MSGECBAD EQU MSGPARM+00000004 FULLWORD INTEGER 09730000 ORG @DATA+00000200 09740000 DECB EQU * FULLWORD INTEGER 09750000 DC FL4'0' 09760000 INBUF EQU @DATA+00000204 62 BYTE(S) 09770000 CSWIN EQU INBUF+00000000 14 BYTE(S) 09780000 SNSIN EQU INBUF+00000014 48 BYTE(S) 09790000 ORG @DATA+00000266 09800000 SEEKVOL EQU * 7 BYTE(S) 09810000 DC X'00000000000003' 09820000 SEEKF0FE EQU * 6 BYTE(S) 09830000 DC X'000000060000' 09840000 SEEKMERL EQU * 6 BYTE(S) 09850000 DC X'000000000000' 09860000 ORG @DATA 09870000 DS 00000285C 09880000 @TEMPS DS 0F 09890000 @TEMP4 DC F'0' 09900000 * * 09910000 * CCW LIST * 09920000 * * 09930000 * SEEK LABEL ON VOL1 PACK * 09940000 LABEL0 DS 0D S20203 09950000 CCW 07,SEEKVOL,X'60',6 SEEK LABEL S20203 09960000 CCW 49,SEEKVOL+2,X'60',5 SEARCH FOR VOL1 ON LABEL S20203 09970000 CCW 08,*-8,X'60',1 TIC S20203 09980000 CCW 06,BUF,X'20',20 GET VOL1&SEC DATA S20203 09990000 * * 10000000 * SEEK FOR DATA ON FOFE PACK * 10010000 LABEL1 DS 0D S20203 10020000 CCW 07,SEEKF0FE,X'60',6 SEEK FOR F0FE S20203 10030000 CCW 22,BUF2,X'20',20 GET F0FE DATA R0+14 S20203 10040000 * * 10050000 * SEEK AND READ HOME ADDRESS ON MERLIN DEVICE * 10060000 LABEL2 DS 0D S20203 10070000 CCW 07,SEEKMERL,X'60',6 SEEK S20203 10080000 CCW 26,BUF1,X'20',5 READ HOME ADDR S20203 10090000 * * 10100000 * PARAMETER LIST FOR CONVERT MODULE * 10110000 CNVRT DC B'00000000' CONTROL PROGRAM FLAGS 10120000 DC AL1(2) MACRO LEVEL 10130000 DC CL2'41' MACRO ID 10140000 DC A(OUTBUFR) 10150000 DC A(INBUF) 10160000 DC AL2(31+32768) COUNT AND TYPE S20203 10170000 DEVPATCH DC 18XL2'0700' PATCH AREA 10180000 DSECTAA IFDCOM 10190000 A00000 EQU CESWT3+00000000 1 BYTE(S) 10200000 A00001 EQU A00000+00000000 3 BIT(S) 10210000 GRBCTL EQU A00000+00000000 1 BIT(S) 10220000 SUSDEL EQU A00000+00000000 1 BIT(S) 10230000 A00002 EQU A00000+00000000 1 BIT(S) 10240000 A00003 EQU OLTTAB+00000000 8 BYTE(S) ON WORD 10250000 OLTTAB1 EQU A00003+00000000 FULLWORD POINTER 10260000 OLTTAB2 EQU A00003+00000004 FULLWORD POINTER 10270000 A00004 EQU A00003+00000004 FULLWORD POINTER 10280000 A00005 EQU CHASCT+00000010 1 BYTE(S) 10290000 A00006 EQU A00005+00000000 1 BIT(S) 10300000 FPM EQU A00005+00000000 1 BIT(S) 10310000 A00007 EQU CHASCT+00000011 1 BYTE(S) 10320000 CDSFPM EQU A00007+00000000 1 BIT(S) 10330000 A00008 EQU A00007+00000000 1 BIT(S) 10340000 CDSCEVOL EQU A00007+00000000 1 BIT(S) 10350000 A00009 EQU A00007+00000000 5 BIT(S) 10360000 A00010 EQU CESWT+00000000 4 BYTE(S) ON WORD 10370000 A00011 EQU A00010+00000000 8 BIT(S) 10380000 A00012 EQU A00010+00000000 1 BIT(S) 10390000 PROTECT EQU A00010+00000000 1 BIT(S) 10400000 A00013 EQU A00010+00000000 6 BIT(S) 10410000 A00014 EQU A00010+00000001 8 BIT(S) 10420000 A00015 EQU A00010+00000001 4 BIT(S) 10430000 FILMSK EQU A00010+00000001 1 BIT(S) 10440000 A00016 EQU A00010+00000001 1 BIT(S) 10450000 ONLINEOK EQU A00010+00000001 1 BIT(S) 10460000 A00017 EQU A00010+00000001 1 BIT(S) 10470000 A00018 EQU A00010+00000002 8 BIT(S) 10480000 NDCFO EQU A00010+00000002 1 BIT(S) 10490000 DPONDEV EQU A00010+00000002 1 BIT(S) 10500000 A00019 EQU A00010+00000002 1 BIT(S) 10510000 CHANTEST EQU A00010+00000002 1 BIT(S) 10520000 A00020 EQU A00010+00000002 1 BIT(S) 10530000 A00021 EQU A00010+00000002 1 BIT(S) 10540000 TAPEHDR EQU A00010+00000002 1 BIT(S) 10550000 AMERLDV EQU A00010+00000002 1 BIT(S) 10560000 A00022 EQU A00010+00000003 8 BIT(S) 10570000 A00023 EQU A00010+00000003 1 BIT(S) 10580000 NURUN EQU A00010+00000003 1 BIT(S) 10590000 BYPDEV EQU A00010+00000003 1 BIT(S) 10600000 A00024 EQU A00010+00000003 1 BIT(S) 10610000 A00025 EQU A00010+00000003 1 BIT(S) 10620000 A00026 EQU A00010+00000003 1 BIT(S) 10630000 A00027 EQU A00010+00000003 1 BIT(S) 10640000 STDLAB EQU A00010+00000003 1 BIT(S) 10650000 BUFFER EQU INBUFR+00000000 1 BYTE(S) 10660000 @DATEND EQU * 10670000 @9FC EQU DPPACK11 10680000 @9F7 EQU DPPACK08 10690000 END 10700000 ./ ADD SSI=01010316,NAME=IFDOLT08,SOURCE=1 TITLE ' IFDOLT08--OLD DPRINT WRITE INTERFACE.' 00010000 * GENERATE; 00020000 MACRO 00030000 &NAME OLDCONV &TYPE,&FROM,&TO,&CNT 00040000 LCLA &FLAG 00050000 &NAME LA R14,R&SYSNDX . RETURN ADDRESS 00060000 L R15,OLTTAB+12 . TRANSIENT MANAGER ENTRY POINT 00070000 CNOP 2,4 . BOUNDARY ALIGNMENT 00080000 BALR R1,R15 . LINK TO TRANSIENT MANAGER 00090000 DC A(&FROM) . FROM ADDRESS 00100000 DC A(&TO) . TO ADDRESS 00110000 DC A(*+4) . ADDRESS OF TYPE AND COUNT 00120000 DC XL2'00' . BULL BYTES 00130000 AIF ('&TYPE' EQ 'EH').SKP1 00140000 &FLAG SETA 32768 00150000 .SKP1 ANOP 00160000 DC AL2(&CNT+&FLAG) . TYPE AND COUNT 00170000 R&SYSNDX DS 0H . RETURN POINT 00180000 MEND 00190000 * GENERATE; 00200000 TITLE ' IFDOLT08--OLD DPRINT WRITE INTERFACE.' 00210000 * IFDOLT08: /* MAIN AND ONLY ENTRY POINT OF THIS MODULE * 00220000 * /******************************************************************* 00230000 * /* * 00240000 * /* STATUS: CHANGE LEVEL 0 * 00250000 * /* * 00260000 * /* FUNCTION: TO SETUP MESSAGES ACCORDING TO PARAMETERS RECEIVED. * 00270000 * /* THE MESSAGES MAY INCLUDE HEADER, RESULTS, COMMENTS, * 00280000 * /* AND ERROR MESSAGES. THE DIFFERENT TYPES OF MESSAGES * 00290000 * /* WILL CONTAIN INFORMATION RELEVANT TO I/O OPERATIONS * 00300000 * /* AS WELL AS GENEALLY INFORMATIVE MESSAGES. * 00310000 * /* * 00320000 * /* ENTRY POINTS: IFDOLT08 IS THE MAIN AND ONLY ENTRY POINT OF * 00330000 * /* THIS MODULE. * 00340000 * /* * 00350000 * /* INPUT: REGISTER 1 WILL CONTAIN A POINTER TO A LIST OF PRINT * 00360000 * /* CONTROL WORDS. * 00370000 * /* * 00380000 * /* OUTPUT: MESSAGES WILL BE PRINTED ACCORDING TO CONTROL WORDS * 00390000 * /* RECEIVED. * 00400000 * /* * 00410000 * /* EXTERNAL ROUTINES: PWRT ROUTINE - IS INVOKED TO PERFORM THE * 00420000 * /* PRINT OPERATION. * 00430000 * /* * 00440000 * /* CONVERT ROUTINE - IS INVOKED TO DATA FROM * 00450000 * /* HEX TO EBCDIC. * 00460000 * /* * 00470000 * /* TABLES/WORK AREAS: CHECKFIELD IS REFERENCED FOR EXPECTED DATA. * 00480000 * /* THE TECB IS REFERENCED FOR RECEIVED DATA. * 00490000 * /* A 10 BYTE TABLE IS USED FOR TRANSLATING. * 00500000 * /* WORK AREAS AND BUFFERS ARE USED FOR SETTING * 00510000 * /* UP MESSAGE REQUESTS * 00520000 * /* * 00530000 * /* ATTRIBUTES: TRANSIENT, REUSABLE * 00540000 * /* * 00550000 * /******************************************************************* 00560000 * PROC(X) OPTIONS(DONTSAVE(15)); 00570000 LCLA &T,&SPN 0003 00580000 .@001 ANOP 0003 00590000 IFDOLT08 CSECT , 0003 00600000 ST @E,12(0,@D) 0003 00610000 STM @0,@C,20(@D) 0003 00620000 BALR @B,0 0003 00630000 @PSTART DS 0H 0003 00640000 USING @PSTART+00000,@B 0003 00650000 ST @D,@SAV001+4 0003 00660000 LA @F,@SAV001 0003 00670000 ST @F,8(0,@D) 0003 00680000 LR @D,@F 0003 00690000 * GEN( USING CHASCT,2); /* SET REG. 2 FOR DSECT * 00700000 USING CHASCT,2 00710000 DS 0H 00720000 * GENERATE DATA; 00730000 * RESTRICT(2,3,5,6,7); /* REGISTERS USED BY PROGRAM * 00740000 * DCL R0 REG(0) PTR; 00750000 * DCL R1 REG(1) PTR; /* PARM LIST POINTER RECEIVED* 00760000 * DCL R2 REG(2) PTR; /* DSECT BASE REGISTER * 00770000 * DCL R3 REG(3) PTR; /* ID AND ROUTINE NUMBER PTR * 00780000 * DCL R4 REG(4) PTR; /* CONTAIN SENSE COUNT * 00790000 * DCL R5 REG(5) PTR; /* PRINT BUFFER POINTER * 00800000 * DCL R6 REG(6) PTR; /* PARAMETER LIST POINTER * 00810000 * DCL R7 REG(7) PTR; /* WORK AREA POINTER * 00820000 * DCL R12 REG(12) PTR; 00830000 * DCL R13 REG(13) PTR; /* SAVE AREA POINTER * 00840000 * DCL R14 REG(14) PTR; /* RETURN ADDR REGISTER * 00850000 * DCL R15 REG(15) PTR; /* RETURN CODE REGISTER * 00860000 * DCL R9 REG(9) PTR; /* WORK REGISTER * 00870000 * GEN(EJECT); 00880000 EJECT 00890000 DS 0H 00900000 * /************************************************************ 00910000 * /* THE FOLLOWING DEFINES AREAS REFERENCED EXTERNAL TO THIS * 00920000 * /* MODULE. * 00930000 * /************************************************************ 00940000 * 00950000 * DCL CESWT2 CHAR(1) GENERATED; /* INTERNAL SWITCHES * 00960000 * DCL TAB28 PTR GENERATED; /* LINK POINTER * 00970000 * DCL DEVDEPAD PTR GENERATED; /* DEVICE ADDRESS * 00980000 * DCL CESWT CHAR(1) GENERATED; /* FLAG AREA * 00990000 * DCL PRTBUFR CHAR(124) GENERATED; /* PRINT BUFFER * 01000000 * DECLARE 01010000 * 1 * BASED(ADDR(CESWT2)), 01020000 * 2 * BIT(2), 01030000 * 2 FECOND BIT(1); /* FIRST ERROR CONDITION * 01040000 * DECLARE 01050000 * 1 * BASED(ADDR(CESWT)), /* FLAG AREA * 01060000 * 2 * BIT(6), /* NOT REFERENCED * 01070000 * 2 FERINT BIT(1); /* FIRST ERROR SWITCH * 01080000 * DCL CESWT6 CHAR(1) GENERATED; /* M4504* 01090000 * DECLARE 01100000 * 1 * BASED(DEVDEPAD), /* DEVDEPAD POINTER TO AREA * 01110000 * 2 * CHAR(6), /* NOT REFERENCED * 01120000 * 2 UNIT CHAR(2); /* UNIT ADDRESS * 01130000 * DCL CHASCT CHAR(88) GENERATED; /* SECTION CONTROL TABLE * 01140000 * DECLARE 01150000 * 1 * BASED(ADDR(CHASCT)), /* SECTION CONTROL TABLE ADR.* 01160000 * 2 * CHAR(2), /* NOT REFERENCED * 01170000 * 2 * CHAR(1), 01180000 * 3 * BIT(7), /* NOT REFERENCED * 01190000 * 3 FERCOM BIT(1), /* FIRST ERROR FLAG * 01200000 * 2 CHASCT3 CHAR(1), /* FIRST ERROR SWITCH * 01210000 * 3 CHASCTB BIT(1), 01220000 * 3 * BIT(5), /* NOT REFERENCED * 01230000 * 3 ERRLPB BIT(1); /* ERROR LOOP FLAG * 01240000 * DCL COMMINT PTR GENERATED; /* ADDRESS OF COMMUNICATIONS * 01250000 * DECLARE 01260000 * 1 BUFFERS BDY(DWORD), 01270000 * 2 * PTR, /* NOT USED * 01280000 * 2 FRMCON CHAR(1), /* FORMS CONTROL CHARACTER * 01290000 * 2 PRTBUFR1 CHAR(79), /* BUFFER AREA * 01300000 * 2 BUFFER2 CHAR(80); /* BUFFER WORK AREA * 01310000 * DCL BUFR CHAR(79) BASED(R5); /* BUFFER AREA * 01320000 * DCL CESWT5 CHAR(1) GENERATED; /* OLTEP SWITCHES M1390* 01330000 * DCL 1 * BASED(ADDR(CESWT5)), /* NA M1390* 01340000 * 2 * BIT(2), /* NA M1390* 01350000 * 2 FFEFLG BIT(1); /* FIRST FIRST ERROR M1390* 01360000 * GEN(EJECT); 01370000 EJECT 01380000 DS 0H 01390000 * /************************************************************ 01400000 * /* THE FOLLOWING MAP DESCRIBES THE PARAMETER LIST RECEIVED. * 01410000 * /************************************************************ 01420000 * 01430000 * DECLARE 01440000 * 1 * BASED(R6), /* REGISTER 6 CONTAINS THE * 01450000 * 2 * CHAR(1), /* ADDRESS OF THIS AREA. * 01460000 * 3 LASTFLG BIT(1), /* LAST MESSAGE FLAG * 01470000 * 3 HEADFLG BIT(1), /* HEADER REQUEST FLAG * 01480000 * 3 RSLTFLG BIT(1), /* RESULT REQUEST FLAG * 01490000 * 3 OVRDFLG BIT(1), /* OVER-RIDE REQUEST FLAG * 01500000 * 3 COMFLG BIT(1), /* COMMENT REQUEST FLAG * 01510000 * 3 ERRFLG BIT(1), /* ERROR MESSAGE FLAG * 01520000 * 3 * BIT(2), 01530000 * 2 FRMCNTL CHAR(1), /* FORM CONTROL BYTE * 01540000 * 2 * CHAR(1), 01550000 * 2 COUNT CHAR(1), /* MESSAGE LENGTH * 01560000 * 2 SUBCHK PTR; /* POINTER TO SUBTASK OR * 01570000 * /* CHECKFIELDS * 01580000 * GEN(EJECT); 01590000 EJECT 01600000 DS 0H 01610000 * /************************************************************ 01620000 * /* THE FOLLOWING MAP DESCRIBES THE SUBTASK AREA. * 01630000 * /************************************************************ 01640000 * 01650000 * DECLARE 01660000 * 1 * BASED(SUBCHK), /* SUBCHK POINTS TO AREA. * 01670000 * 2 * CHAR(1), /* CONTAINS THE FOLLOWING * 01680000 * /* FLAGS: * 01690000 * 3 DEVFLG BIT(1), /* DEVICE INDICATOR * 01700000 * 3 LSTFLG BIT(1), /* LAST PRINT INDICATOR * 01710000 * 3 * BIT(1), /* NOT REFERENCED * 01720000 * 3 CCWFLG BIT(1), /* CCW INDICATOR * 01730000 * 2 LSTCCW CHAR(7); /* CCW AREA * 01740000 * DCL AREA CHAR(80) BASED(SUBCHK); /* COMMENT AREA * 01750000 * GEN(EJECT); 01760000 EJECT 01770000 DS 0H 01780000 * /************************************************************ 01790000 * /* THE FOLLOWING MAP DESCRIBES THE CHECKFIELD AREA. * 01800000 * /************************************************************ 01810000 * 01820000 * DECLARE 01830000 * 1 * BASED(SUBCHK), 01840000 * 2 * CHAR(4), 01850000 * 3 RELIF CHAR(1), /* FLAG FIELDS INDICATING * 01860000 * /* AREAS TO BE PRINTED. * 01870000 * 4 RELAD BIT(1), /* CSW COMMAND ADDRESS * 01880000 * 4 CC BIT(1), /* CONDITION CODE * 01890000 * 4 CSWS1 BIT(1), /* 1ST BYTE OF CSW STATUS * 01900000 * 4 CSWS2 BIT(1), /* 2ND BYTE OF CSW STATUS * 01910000 * 4 CSWC BIT(1), /* CSW COUNT * 01920000 * 4 SNS BIT(1), /* SENSE DATA * 01930000 * 4 * BIT(1), /* NOT REFERENCED * 01940000 * 4 DATA BIT(1), /* DATA FLAG * 01950000 * 3 SNGLFLG BIT(1), /* SINGLE LINE OF PRINT * 01960000 * 3 * BIT(7), /* NOT USED * 01970000 * 3 DTACNT CHAR(1), /* DATA COUNT * 01980000 * 3 SNSCNT CHAR(1), /* SENSE COUNT * 01990000 * 2 TECBAD PTR, /* TECB ADDRESS * 02000000 * 2 EXPDINFO CHAR(16), /* THIS FIELD CONTAINS * 02010000 * /* EXPECTED - CONDITION CODE * 02020000 * /* CSW AND SENSE. * 02030000 * 2 REDTADR PTR, /* POINTER TO RECEIVED DATA * 02040000 * 2 EXPDTADR PTR; /* POINTER TO EXPECTED DATA * 02050000 * DCL RECEIV CHAR(256) BASED(REDTADR); /* RECEIVED DATA AREA * 02060000 * DCL EXPECT CHAR(256) BASED(EXPDTADR); /* EXPECTED DATA AREA * 02070000 * GEN(EJECT); 02080000 EJECT 02090000 DS 0H 02100000 * /************************************************************ 02110000 * /* THE FOLLOWING DEFINES INTERNAL WORK AREAS. * 02120000 * /************************************************************ 02130000 * 02140000 * DCL WKARA1 CHAR(96); /* WORK AREA * 02150000 * DCL WKAREA CHAR(96) BASED(R7); /* REGISTER 7 POINTS TO AREA * 02160000 * DECLARE 02170000 * 1 * BASED(R13), /* REG.13 POINTS TO SAVE AREA* 02180000 * 2 * PTR, /* NOT REFERENCED * 02190000 * 2 OLTSVAD PTR; /* POINTER TO OLT * 02200000 * DECLARE 02210000 * 1 * BASED(OLTSVAD), 02220000 * 2 * CHAR(32), /* NOT REFERENCED * 02230000 * 2 IDAD PTR; /* POINTER TO OLT ID * 02240000 * DECLARE 02250000 * 1 * BASED(IDAD), 02260000 * 2 * CHAR(76), /* NOT REFERENCED * 02270000 * 2 ID CHAR(8), /* OLT ID * 02280000 * 2 ROUTINE CHAR(1); /* OLT ROUTINE NUMBER * 02290000 * DCL XLATE1 CHAR(10) INIT('0123456789'); /* TRANSLATE TABLE * 02300000 * DCL PTCHAREA CHAR(60); /* IFDOLT08 PATCH AREA * 02310000 * GEN(EJECT); 02320000 EJECT 02330000 DS 0H 02340000 * /************************************************************ 02350000 * /* THE FOLLOWING MAPS DESCRIBE AREA'S REFERENCED FOR OPER- * 02360000 * /* ATOR COMMUNICATIONS * 02370000 * /************************************************************ 02380000 * 02390000 * DCL IFDMSG08 EXT ENTRY; /* IFDOLT08'S MESSAGE MODULE * 02400000 * DCL MSGMOD08 PTR INIT(ADDR(IFDMSG08)); /* PTR. TO IFDMSG08 * 02410000 * DECLARE 02420000 * 1 * BASED(MSGMOD08), 02430000 * 2 MSG129 PTR; /* ADDR OF MESSAGE IFD129I * 02440000 * DECLARE 02450000 * 1 * BASED(MSG129), /* MESSAGE IFD129I * 02460000 * 2 * CHAR(39), /* MESSAGE * 02470000 * 2 MSGID CHAR(6), /* OLT ID * 02480000 * 2 * CHAR(1), /* BLANK * 02490000 * 2 MSGRTN CHAR(2), /* OLT ROUTINE NUMBER * 02500000 * 2 * CHAR(6), /* MESSAGE * 02510000 * 2 MSGUNIT CHAR(3); /* UNIT ADDRESS * 02520000 * GEN(EJECT); 02530000 EJECT 02540000 DS 0H 02550000 * /************************************************************ 02560000 * /* THE FOLLOWING MAP DESCRIBES THE TECB AREA * 02570000 * /************************************************************ 02580000 * 02590000 * DECLARE 02600000 * 1 * BASED(TECBAD), /* TECB PTR IN CHECKFLD AREA * 02610000 * 2 * CHAR(4), /* NOT REFERENCED * 02620000 * 2 RCVDINFO CHAR(16); /* THIS FIELD CONTAINS * 02630000 * /* RECEIVED - CONDITION CODE * 02640000 * /* CSW AND SENSE. * 02650000 * GEN(EJECT); 02660000 EJECT 02670000 DS 0H 02680000 * /************************************************************ 02690000 * /* THE FOLLOWING CODE WILL INITIALIZE REGISTERS AND DETER- * 02700000 * /* MINE THE FUNCTION OR FUNCTIONS TO BE PERFORMED. * 02710000 * /************************************************************ 02720000 * 02730000 * R6 = R1; /* SET PARAMETER LIST PTR. * 02740000 LR @6,@1 0062 02750000 * PRT000: 02760000 * R5 = ADDR(PRTBUFR1); /* SET PRINT BUFFER PTR. * 02770000 PRT000 LA @5,BUFFERS+5 0063 02780000 * R7 = ADDR(WKARA1); /* SET WORK AREA PTR. * 02790000 LA @7,WKARA1 0064 02800000 * PRTBUFR = PRTBUFR && PRTBUFR; /* CLEAR PRINT BUFFER * 02810000 XC PRTBUFR(124),PRTBUFR 0065 02820000 * BUFFERS = BUFFERS && BUFFERS; /* CLEAR BUFFER AREA * 02830000 XC BUFFERS(164),BUFFERS 0066 02840000 * IF FRMCNTL = 'D9'X THEN /* FORMS CONTROL - RESTORE * 02850000 CLI 1(@6),X'D9' 0067 02860000 BC 07,@9FF 0067 02870000 * DO; /* DO THE FOLLOWING: * 02880000 * PRTBUFR(1:1) = '1B'X; /* SET RESTORE CONTROL * 02890000 MVI PRTBUFR,X'1B' 0069 02900000 * GEN( PWRT SIZE=80); /* INVOKE PRINT ROUTINE * 02910000 PWRT SIZE=80 02920000 DS 0H 02930000 * GO TO PRT0002; 02940000 BC 15,PRT0002 0071 02950000 * END; /* END OF RESTORE ROUTINE * 02960000 * IF FRMCNTL = 'F3'X THEN /* FORMS CONTROL - SPACE 3 * 02970000 @9FF CLI 1(@6),X'F3' 0073 02980000 BC 07,@9FE 0073 02990000 * DO; /* DO THE FOLLOWING: * 03000000 * FRMCON = '19'X; /* SET SPACE 3 CONTROL * 03010000 MVI BUFFERS+4,X'19' 0075 03020000 * GO TO PRT0001; 03030000 BC 15,PRT0001 0076 03040000 * END; /* END OF SPACE 3 ROUTINE * 03050000 * IF FRMCNTL = 'F2'X THEN /* FORMS CONTROL - SPACE 2 * 03060000 @9FE CLI 1(@6),X'F2' 0078 03070000 BC 07,@9FD 0078 03080000 * DO; /* DO THE FOLLOWING: * 03090000 * FRMCON = '11'X; /* SET SPACE 2 CONTROL * 03100000 MVI BUFFERS+4,X'11' 0080 03110000 * GO TO PRT0001; 03120000 BC 15,PRT0001 0081 03130000 * END; /* END OF SPACE 2 ROUTINE * 03140000 * PRT0002: 03150000 * FRMCON = '09'X; /* SET DEFAULT OF SPACE 1 * 03160000 @9FD EQU * 0083 03170000 PRT0002 MVI BUFFERS+4,X'09' 0083 03180000 * PRT0001: 03190000 * IF HEADFLG = '1'B THEN /* REQUEST FOR HEADER PRINT * 03200000 PRT0001 TM 0(@6),B'01000000' 0084 03210000 * GO TO PRT003; /* YES-GO TO HEADER ROUTINE * 03220000 BC 01,PRT003 0085 03230000 * IF RSLTFLG = '1'B THEN /* REQUEST FOR RESULT PRINT * 03240000 TM 0(@6),B'00100000' 0086 03250000 * GO TO PRT010; /* YES-GO TO RESULT ROUTINE * 03260000 BC 01,PRT010 0087 03270000 * IF COMFLG = '1'B THEN /* REQUEST FOR COMMENT PRINT * 03280000 TM 0(@6),B'00001000' 0088 03290000 * GO TO PRT022; /* YES-GO TO COMMENT ROUTINE * 03300000 BC 01,PRT022 0089 03310000 * BUFR(2:4) = 'BUG'; /* NO- INDICATE ERROR * 03320000 MVC 1(3,@5),@C9 0090 03330000 * PRTBUFR(1:80) = BUFFERS(5:84); /* SET PRINT BUFFER * 03340000 MVC PRTBUFR(80),BUFFERS+4 0091 03350000 * GEN( PWRT SIZE=80); /* INVOKE PRINT ROUTINE * 03360000 PWRT SIZE=80 03370000 DS 0H 03380000 * 03390000 * PRT001: 03400000 * IF FFEFLG='1'B THEN /* CHECK SWITCH M1390* 03410000 PRT001 TM A00012,B'00100000' 0093 03420000 * GOTO PRT002; /* PREVIOUS FIRST ERROR M1390* 03430000 BC 01,PRT002 0094 03440000 * IF FERCOM = '0'B THEN /* 1ST ERROR COMMUNICATION * 03450000 TM A00006+2,B'00000001' 0095 03460000 * GO TO PRT002; /* GO CHECK ERROR LOOP * 03470000 BC 08,PRT002 0096 03480000 * IF CHASCTB = '0'B THEN /* FIRST ERROR COMMUNICATION * 03490000 TM A00006+3,B'10000000' 0097 03500000 * GO TO PRT002; /* GO CHECK ERROR LOOP * 03510000 BC 08,PRT002 0098 03520000 * PRT001C: 03530000 * FERINT = '1'B; /* SET FIRST ERROR SWITCH * 03540000 PRT001C OI A00002,B'00000010' 0099 03550000 * MSGID = ID(1:6); /* SET OLT ID IN MESSAGE * 03560000 L @4,4(0,@D) 0100 03570000 L @4,32(0,@4) A00027 0100 03580000 L @C,MSGMOD08 0100 03590000 L @C,0(0,@C) A00031 0100 03600000 MVC 39(6,@C),76(@4) 0100 03610000 * R9 = ROUTINE; /* SETUP FOR TRANSLATE * 03620000 SR @9,@9 0101 03630000 IC @9,84(0,@4) 0101 03640000 * GENERATE; 03650000 CVD R9,BUFFER2+4 03660000 UNPK BUFFER2(2),BUFFER2+10(2) 03670000 NI BUFFER2+1,X'0F' 03680000 TR BUFFER2+1(1),XLATE1 03690000 DS 0H 03700000 * MSGRTN = BUFFER2(1:2); /* SET OLT ROUTINE IN MESSAGE* 03710000 MVC 46(2,@C),BUFFERS+84 0103 03720000 * BUFFER2(9:10) = UNIT; /* SET UNIT ADDRESS IN BUFFER* 03730000 L @8,DEVDEPAD 0104 03740000 MVC BUFFERS+92(2),6(@8) 0104 03750000 * R9 = ADDR(LINK1); /* SET LINK ADDRESS POINTER * 03760000 LA @9,LINK1 0105 03770000 * GO TO CONVERT1; /* GO TO CONVERT ROUTINE * 03780000 BC 15,CONVERT1 0106 03790000 * LINK1: 03800000 * MSGUNIT = BUFFER2(28:30); /* SET UNIT ADDRESS IN MSG. * 03810000 LINK1 L @4,MSGMOD08 0107 03820000 L @4,0(0,@4) A00031 0107 03830000 MVC 54(3,@4),BUFFERS+111 0107 03840000 * R9 = MSG129; /* SET MESSAGE POINTER * 03850000 L @C,MSGMOD08 0108 03860000 L @9,0(0,@C) 0108 03870000 * GEN( PWTO REG=(R9)); /* INVOKE PARALLEL PRINT RTN * 03880000 PWTO REG=(R9) 03890000 DS 0H 03900000 * FFEFLG='1'B; /* FIRST FIRST ERROR M1390* 03910000 OI A00012,B'00100000' 0110 03920000 * PRT001B: 03930000 * FECOND = '1'B; /* SET FIRST ERROR CONDITION * 03940000 PRT001B OI A00000,B'00100000' 0111 03950000 * CESWT6=CESWT6&'7F'X; /* CLEAR 1ST BIT IN SW M4504* 03960000 NI CESWT6,X'7F' 0112 03970000 * R15 = TAB28; /* SET LINK POINTER * 03980000 L @F,TAB28 0113 03990000 * GEN; 04000000 L R13,4(R13) RESTORE REGISTERS 04010000 L R14,12(R13) FOR RETURN TO TRANS. MANAGER 04020000 LM R0,R12,20(R13) 04030000 DS 0H 04040000 * GOTO R15; /* RETURN TO TRANS. MANAGER * 04050000 BCR 15,@F 0115 04060000 * 04070000 * PRT002: 04080000 * IF ERRLPB = '0'B THEN /* IF ERROR LOOP IS NOT ON * 04090000 PRT002 TM A00006+3,B'00000010' 0116 04100000 * GO TO FINISH; /* GO TO EXIT ROUTINE * 04110000 BC 08,FINISH 0117 04120000 * CHASCT3 = CHASCT3 & 'DF'X; /* RESET CATASTROPHIC FLAG * 04130000 NI A00006+3,X'DF' 0118 04140000 * GO TO FINISH; /* GO TO EXIT ROUTINE * 04150000 BC 15,FINISH 0119 04160000 * GEN(EJECT); 04170000 EJECT 04180000 DS 0H 04190000 * /************************************************************ 04200000 * /* THE FOLLOWING ROUTINE WILL PRINT HEADING REQUESTS * 04210000 * /************************************************************ 04220000 * PRT003: 04230000 * IF OVRDFLG = '1'B THEN /* OVER-RIDE REQUEST * 04240000 PRT003 TM 0(@6),B'00010000' 0121 04250000 * GO TO PRT009; /* YES - GO CHECK LAST ENTRY * 04260000 BC 01,PRT009 0122 04270000 * IF ERRFLG = '0'B THEN /* ERROR PRINT REQUEST * 04280000 TM 0(@6),B'00000100' 0123 04290000 * GO TO PRT004; /* NO- GO TO HEADER SETUP * 04300000 BC 08,PRT004 0124 04310000 * BUFR(1:1) = '*'; /* INDICATE ERROR MESSAGE * 04320000 MVI 0(@5),C'*' 0125 04330000 * R5 = R5 + 1; /* INCREMENT PRT BUFFER PTR * 04340000 AH @5,@D1 0126 04350000 * PRT004: 04360000 * BUFR(1:8) = ID; /* SET ID IN HEADER * 04370000 PRT004 L @4,4(0,@D) 0127 04380000 L @4,32(0,@4) A00027 0127 04390000 MVC 0(8,@5),76(@4) 0127 04400000 * R5 = R5 + 9; /* INCREMENT PRT BUFFER PTR * 04410000 AH @5,@D2 0128 04420000 * R9 = ROUTINE; /* SETUP FOR TRANSLATE * 04430000 SR @9,@9 0129 04440000 IC @9,84(0,@4) 0129 04450000 * GENERATE; 04460000 CVD R9,BUFFER2+4 04470000 UNPK BUFFER2(2),BUFFER2+10(2) 04480000 NI BUFFER2+1,X'0F' 04490000 TR BUFFER2+1(1),XLATE1 04500000 DS 0H 04510000 * BUFR(1:2) = BUFFER2(1:2); /* SET ROUTINE NUMBER IN MSG.* 04520000 MVC 0(2,@5),BUFFERS+84 0131 04530000 * R5 = R5 + 3; /* INCREMENT PRT BUFFER PTR * 04540000 AH @5,@D3 0132 04550000 * BUFFER2(2:8) = LSTCCW; /* GET LISTING & CCW ADDRESS * 04560000 L @C,4(0,@6) 0133 04570000 MVC BUFFERS+85(7),1(@C) 0133 04580000 * BUFFER2(9:10) = UNIT; /* GET UNIT ADDRESS * 04590000 L @8,DEVDEPAD 0134 04600000 MVC BUFFERS+92(2),6(@8) 0134 04610000 * R9 = ADDR(LINK2); /* SET LINK ADDRESS POINTER * 04620000 LA @9,LINK2 0135 04630000 * GO TO CONVERT1; /* GO TO CONVERT ROUTINE * 04640000 BC 15,CONVERT1 0136 04650000 * LINK2: 04660000 * IF LSTFLG = '0'B THEN /* IS LISTING ADDRESS PRESENT* 04670000 LINK2 L @4,4(0,@6) 0137 04680000 TM 0(@4),B'01000000' 0137 04690000 * GO TO PRT005; /* NO-GO CHECK FOR CCW * 04700000 BC 08,PRT005 0138 04710000 * BUFR(1:3) = 'IC-'; /* SET PREFIX IN MESSAGE * 04720000 MVC 0(3,@5),@C14 0139 04730000 * BUFR(4:8) = BUFFER2(14:18); /* SET LISTING ADDRESS IN MSG* 04740000 MVC 3(5,@5),BUFFERS+97 0140 04750000 * R5 = R5 + 9; /* INCREMENT PRT BUFFER PTR * 04760000 AH @5,@D2 0141 04770000 * PRT005: 04780000 * IF CCWFLG = '0'B THEN /* CCW PRESENT * 04790000 PRT005 L @4,4(0,@6) 0142 04800000 TM 0(@4),B'00010000' 0142 04810000 * GO TO PRT006; /* NO-GO CHECK FOR DEVICE * 04820000 BC 08,PRT006 0143 04830000 * BUFR(1:4) = 'CCW-'; /* SET PREFIX IN MESSAGE * 04840000 MVC 0(4,@5),@C15 0144 04850000 * BUFR(5:9) = BUFFER2(22:26); /* SET CCW IN MESSAGE * 04860000 MVC 4(5,@5),BUFFERS+105 0145 04870000 * R5 = R5 + 10; /* INCREMENT PRT BUFFER PTR * 04880000 AH @5,@D4 0146 04890000 * PRT006: 04900000 * IF DEVFLG = '0'B THEN /* DEVICE PRESENT * 04910000 PRT006 L @4,4(0,@6) 0147 04920000 TM 0(@4),B'10000000' 0147 04930000 * GO TO PRT008; /* NO-GO CHECK * 04940000 BC 08,PRT008 0148 04950000 * BUFR(1:9) = 'I/O ADDR-'; /* SET I/O ADDRESS PREFIX * 04960000 MVC 0(9,@5),@C16 0149 04970000 * BUFR(10:12) = BUFFER2(28:30); /* SET UNIT ID * 04980000 MVC 9(3,@5),BUFFERS+111 0150 04990000 * R5 = R5+13; /* INCREMENT PRT BUFFER PTR. * 05000000 AH @5,@D5 0151 05010000 * PRT008: 05020000 * PRTBUFR(1:80) = BUFFERS(5:84); /* SET PRINT BUFFER * 05030000 PRT008 MVC PRTBUFR(80),BUFFERS+4 0152 05040000 * GEN( PWRT SIZE=80); /* INVOKE PRINT ROUTINE * 05050000 PWRT SIZE=80 05060000 DS 0H 05070000 * PRT009: 05080000 * IF LASTFLG = '1'B THEN /* LAST ENTRY * 05090000 PRT009 TM 0(@6),B'10000000' 0154 05100000 * GO TO PRT001; /* YES-GO CHECK FIRST ERROR * 05110000 BC 01,PRT001 0155 05120000 * R6 = R6 + 8; /* SET POINTER TO NEXT ENTRY * 05130000 AH @6,@D6 0156 05140000 * GO TO PRT000; /* GO BACK TO THE BEGINNING * 05150000 BC 15,PRT000 0157 05160000 * GEN(EJECT); 05170000 EJECT 05180000 DS 0H 05190000 * /************************************************************ 05200000 * /* THE FOLLOWING ROUTINE WILL PRINT RESULT REQUESTS * 05210000 * /************************************************************ 05220000 * PRT010: 05230000 * IF OVRDFLG = '1'B THEN /* OVER-RIDE ON * 05240000 PRT010 TM 0(@6),B'00010000' 0159 05250000 * GO TO PRT009; /* YES-CHECK FOR LAST ENTRY * 05260000 BC 01,PRT009 0160 05270000 * R5 = ADDR(PRTBUFR1); /* SET PRINT BUFFER POINTER * 05280000 LA @5,BUFFERS+5 0161 05290000 * BUFR(1:5) = 'RCVD '; /* SET RECEIVED PREFIX * 05300000 MVC 0(5,@5),@C17 0162 05310000 * BUFFER2(1:5) = 'XPCTD'; /* SET EXPECTED PREFIX * 05320000 MVC BUFFERS+84(5),@C18 0163 05330000 * R5 = R5+6; /* INCREMENT PRT BUFFER PTR * 05340000 AH @5,@D7 0164 05350000 * WKAREA(1:16) = RCVDINFO; /* SET RECEIVED CONDITION * 05360000 L @4,4(0,@6) 0165 05370000 L @4,4(0,@4) A00021 0165 05380000 MVC 0(16,@7),4(@4) 0165 05390000 * /* CODE,CSW AND SENSE IN * 05400000 * /* WORK AREA. * 05410000 * WKAREA(17:32) = EXPDINFO; /* SET EXPECTED CONDITION * 05420000 L @C,4(0,@6) 0166 05430000 MVC 16(16,@7),8(@C) 0166 05440000 * /* CODE,CSW AND SENSE IN * 05450000 * /* WORK AREA. * 05460000 * R9 = ADDR(LINK3); /* SET LINK ADDRESS POINTER * 05470000 LA @9,LINK3 0167 05480000 * GO TO CONVERT2; /* GO TO CONVERT ROUTINE 2 * 05490000 BC 15,CONVERT2 0168 05500000 * LINK3: 05510000 * IF CC = '0'B THEN /* CONDITION CODE RELEVANT * 05520000 LINK3 L @4,4(0,@6) 0169 05530000 TM 0(@4),B'01000000' 0169 05540000 * GO TO PRT011; /* NO-GO CHECK CSW * 05550000 BC 08,PRT011 0170 05560000 * BUFR(1:3) = 'CC-'; /* SET CONDITION CODE PREFIX * 05570000 MVC 0(3,@5),@C19 0171 05580000 * BUFR(4:4) = WKAREA(33:33); /* RECEIVED AND EXPECTED IN * 05590000 MVC 3(1,@5),32(@7) 0172 05600000 * BUFR(83:83) = WKAREA(66:66); /* PRINT BUFFER * 05610000 MVC 82(1,@5),65(@7) 0173 05620000 * R5 = R5+5; /* INCREMENT PRT BUFFER PTR * 05630000 AH @5,@D8 0174 05640000 * PRT011: 05650000 * R9 = ADDR(RELIF); /* SET FLAG FIELD ADDRESS * 05660000 PRT011 L @4,4(0,@6) 0175 05670000 LR @9,@4 0175 05680000 * GEN; 05690000 TM 0(R9),X'B8' CSW RELEVANT 05700000 BZ PRT016 GO CHECK SENSE 05710000 DS 0H 05720000 * BUFR(1:6) = 'CSW-XX'; /* SET CSW RECEIVED AND * 05730000 MVC 0(6,@5),@C20 0177 05740000 * BUFR(80:85) = 'CSW-XX'; /* EXPECTED PREFIX IN BUF * 05750000 MVC 79(6,@5),@C20 0178 05760000 * 05770000 * PRT012: 05780000 * R5 = R5+7; /* INCREMENT PRT BUFFER PTR * 05790000 PRT012 AH @5,@D9 0179 05800000 * BUFR(80:96)='XXXXXX XXXX XXXX '; /* ASSUME TEMPORARY FIELDS * 05810000 MVC 79(17,@5),@C21 0180 05820000 * BUFR(1:6) = WKAREA(35:40); /* SET ADDRESS IN PRT BUFFER * 05830000 MVC 0(6,@5),34(@7) 0181 05840000 * BUFR(8:11) = WKAREA(41:44); /* SET STATUS IN PRT BUFFER * 05850000 MVC 7(4,@5),40(@7) 0182 05860000 * BUFR(13:16) = WKAREA(45:48); /* SET COUNT IN PRT BUFFER * 05870000 MVC 12(4,@5),44(@7) 0183 05880000 * IF SNGLFLG = '1'B THEN /* SINGLE LINE PRINT * 05890000 L @4,4(0,@6) 0184 05900000 TM 1(@4),B'10000000' 0184 05910000 * GO TO PRT015; /* YES-GO CHECK SENSE * 05920000 BC 01,PRT015 0185 05930000 * IF RELAD = '0'B THEN /* CSW ADDRESS RELEVANT * 05940000 TM 0(@4),B'10000000' 0186 05950000 * GO TO PRT013; /* YES-GO CHECK STATUS * 05960000 BC 08,PRT013 0187 05970000 * BUFR(80:85) = WKAREA(67:72); /* SET ADDRESS IN PRT BUFFER * 05980000 MVC 79(6,@5),66(@7) 0188 05990000 * PRT013: 06000000 * IF CSWS1 = '0'B & /* STATUS RELEVANT * 06010000 * CSWS2 = '0'B THEN 06020000 PRT013 L @4,4(0,@6) 0189 06030000 TM 0(@4),B'00100000' 0189 06040000 BC 05,@9FC 0189 06050000 TM 0(@4),B'00010000' 0189 06060000 * GO TO PRT014; /* YES-GO CHECK COUNT * 06070000 BC 10,PRT014 0190 06080000 * BUFR(87:90) = WKAREA(73:76); /* SET STATUS IN PRT BUFFER * 06090000 @9FB EQU * 0191 06100000 @9FC MVC 86(4,@5),72(@7) 0191 06110000 * PRT014: 06120000 * IF CSWC = '0'B THEN /* CSW COUNT RELEVANT * 06130000 PRT014 L @4,4(0,@6) 0192 06140000 TM 0(@4),B'00001000' 0192 06150000 * GO TO PRT015; /* YES-GO CHECK SENSE * 06160000 BC 08,PRT015 0193 06170000 * BUFR(92:95) = WKAREA(77:80); /* SET COUNT IN PRT BUFFER * 06180000 MVC 91(4,@5),76(@7) 0194 06190000 * PRT015: 06200000 * R5 = R5+17; /* INCREMENT PRT BUFFER PTR * 06210000 PRT015 AH @5,@D10 0195 06220000 * PRT016: 06230000 * IF SNS = '0'B THEN /* SENSE RELEVANT * 06240000 PRT016 L @4,4(0,@6) 0196 06250000 TM 0(@4),B'00000100' 0196 06260000 * GO TO PRT018; /* YES-GO CHECK DATA * 06270000 BC 08,PRT018 0197 06280000 * BUFR(1:4) = 'SNS-'; /* SET SENSE PREFIX IN BUFFER* 06290000 MVC 0(4,@5),@C22 0198 06300000 * R5 = R5+4; /* INCREMENT PRT BUFFER PTR * 06310000 AH @5,@D11 0199 06320000 * PRT017: 06330000 * RESTRICT(R4); /* RESTRICT SENSE COUNT REG. * 06340000 * DO 06350000 * R4 = SNSCNT TO 1 /* SET SENSE COUNT * 06360000 * BY - 1; 06370000 PRT017 L @C,4(0,@6) 0201 06380000 SR @F,@F 0201 06390000 IC @F,3(0,@C) 0201 06400000 LTR @4,@F 0201 06410000 BC 12,@DO9F9 0201 06420000 * BUFR(1:2) = WKAREA(49:50); /* MOVE SENSE RECEIVED * 06430000 @DO9FA MVC 0(2,@5),48(@7) 0202 06440000 * BUFR(80:81) = WKAREA(81:82); /* MOVE SENSE EXPECTED * 06450000 MVC 79(2,@5),80(@7) 0203 06460000 * R5 = R5+3; /* STEP PRINT BUFFER POINTER * 06470000 AH @5,@D3 0204 06480000 * R7 = R7+2; /* STEP WORK AREA POINTER * 06490000 AH @7,@D12 0205 06500000 * END; /* END OF SENSE FORMAT RTN. * 06510000 * RELEASE(R4); /* RELEASE SENSE COUNT REG. * 06520000 BCT @4,@DO9FA 0206 06530000 @DO9F9 EQU * 0206 06540000 * PRT018: 06550000 * IF DATA = '0'B THEN /* DATA RELEVANT * 06560000 PRT018 L @4,4(0,@6) 0208 06570000 TM 0(@4),B'00000001' 0208 06580000 * GO TO PRT021; /* YES-GO TO PRINT ROUTINE * 06590000 BC 08,PRT021 0209 06600000 * BUFR(1:5) = 'DATA-'; /* SET DATA PREFIX * 06610000 MVC 0(5,@5),@C23 0210 06620000 * R5 = R5+5; /* INCREMENT PRT BUFFER PTR * 06630000 AH @5,@D8 0211 06640000 * RESTRICT(R4,R9); 06650000 * R4 = ADDR(BUFFER2); /* SET MAXIMUM BUFFER SIZE * 06660000 LA @4,BUFFERS+84 0213 06670000 * R4 = R4-(R5); /* SET BUFFER RESIDUE * 06680000 LR @F,@5 0214 06690000 LCR @F,@F 0214 06700000 AR @4,@F 0214 06710000 * R4 = (R4-8)/2; /* DIVIDE RESIDUE BY 2 * 06720000 LR @E,@4 0215 06730000 SH @E,@D6 0215 06740000 SRDA @E,32 0215 06750000 LA @0,2 0215 06760000 DR @E,@0 0215 06770000 LR @4,@F 0215 06780000 * R9 = DTACNT; /* SET DATA CNT * 06790000 L @8,4(0,@6) 0216 06800000 SR @9,@9 0216 06810000 IC @9,2(0,@8) 0216 06820000 * IF R4 ª< R9 THEN /* DATA COUNT > RESIDUE * 06830000 CR @4,@9 0217 06840000 * GO TO PRT019; /* NO-GO TO DATA CONVERT * 06850000 BC 10,PRT019 0218 06860000 * R9 = R4; /* USED RESIDUE AS DATA CNT * 06870000 LR @9,@4 0219 06880000 * PRT019: 06890000 * R9 = R9 + R9; /* DOUBLE COUNT * 06900000 PRT019 AR @9,@9 0220 06910000 * WKAREA(1:30) = RECEIV(1:30); /* GET RECEIVED DATA * 06920000 L @8,4(0,@6) 0221 06930000 L @8,24(0,@8) A00021 0221 06940000 MVC 0(30,@7),0(@8) 0221 06950000 * R4 = R9; 06960000 LR @4,@9 0222 06970000 * R9 = ADDR(LINK4); /* SET LINK POINTER * 06980000 LA @9,LINK4 0223 06990000 * GO TO CONVERT2; /* GO TO CONVERT ROUTINE * 07000000 BC 15,CONVERT2 0224 07010000 * LINK4: 07020000 * BUFR(1:R4) = WKAREA(33:R4); /* SET DATA IN PRINT BUFFER * 07030000 LINK4 LA @E,32(0,@7) 0225 07040000 LR @8,@4 0225 07050000 BCTR @8,0 0225 07060000 LR @A,@5 0225 07070000 EX @8,@MVC 0225 07080000 * IF SNGLFLG = '1'B THEN /* SINGLE LINE OF PRINT * 07090000 L @8,4(0,@6) 0226 07100000 TM 1(@8),B'10000000' 0226 07110000 * GO TO PRT020; /* YES-GO PRINT LINE * 07120000 BC 01,PRT020 0227 07130000 * WKAREA(1:30) = EXPECT(1:30); /* SET EXPECTED DATA IN WKARA* 07140000 L @C,28(0,@8) A00021 0228 07150000 MVC 0(30,@7),0(@C) 0228 07160000 * R9 = ADDR(LINK5); /* SET LINK ADDRESS * 07170000 LA @9,LINK5 0229 07180000 * GO TO CONVERT2; /* GO TO CONVERT ROUTINE * 07190000 BC 15,CONVERT2 0230 07200000 * LINK5: 07210000 * R5 = R5+79; /* SET DATA MOVE POINTER * 07220000 LINK5 AH @5,@D13 0231 07230000 * BUFR(1:R4) = WKAREA(33:R4); /* SET EXPECTED DATA IN BUFR * 07240000 LA @E,32(0,@7) 0232 07250000 LR @8,@4 0232 07260000 BCTR @8,0 0232 07270000 LR @A,@5 0232 07280000 EX @8,@MVC 0232 07290000 * R5 = R5-(79); /* RESET DATA MOVE POINTER * 07300000 LA @F,79 0233 07310000 LCR @F,@F 0233 07320000 AR @5,@F 0233 07330000 * PRT020: 07340000 * R5 = R4+R5+1; /* AJUST PRINT BUFFER POINTER* 07350000 PRT020 LA @F,1 0234 07360000 AR @F,@5 0234 07370000 AR @F,@4 0234 07380000 LR @5,@F 0234 07390000 * PRT021: 07400000 * PRTBUFR(1:80) = BUFFERS(5:84); /* SET PRINT BUFFER * 07410000 PRT021 MVC PRTBUFR(80),BUFFERS+4 0235 07420000 * GEN( PWRT SIZE=80); /* INVOKE PRINT ROUTINE * 07430000 PWRT SIZE=80 07440000 DS 0H 07450000 * IF SNGLFLG = '1'B THEN /* SINGLE LINE PRINT * 07460000 L @8,4(0,@6) 0237 07470000 TM 1(@8),B'10000000' 0237 07480000 * GO TO PRT009; /* YES-CHECK LAST ENTRY * 07490000 BC 01,PRT009 0238 07500000 * BUFFERS(6:77) = BUFFER2(1:72); /* SET NEXT LINE OF PRINT * 07510000 MVC BUFFERS+5(72),BUFFERS+84 0239 07520000 * GO TO PRT008; /* GO PROCESS * 07530000 BC 15,PRT008 0240 07540000 * GEN(EJECT); 07550000 EJECT 07560000 DS 0H 07570000 * /************************************************************ 07580000 * /* THE FOLLOWING ROUTINE WILL PRINT COMMENT REQUESTS * 07590000 * /************************************************************ 07600000 * PRT022: 07610000 * IF OVRDFLG = '1'B THEN /* OVER-RIDE ON * 07620000 PRT022 TM 0(@6),B'00010000' 0242 07630000 * GO TO PRT009; /* YES-GO CHECK LAST ENTRY * 07640000 BC 01,PRT009 0243 07650000 * IF COUNT ª> '50'X THEN /* COUNT > 80 * 07660000 CLI 3(@6),X'50' 0244 07670000 * GO TO PRT023; /* NO-SETUP FOR PRINT * 07680000 BC 12,PRT023 0245 07690000 * COUNT = '50'X; /* SET COUNT TO 80 * 07700000 MVI 3(@6),X'50' 0246 07710000 * PRT023: 07720000 * R9 = COUNT; /* SET NEEDED COUNT * 07730000 PRT023 SR @9,@9 0247 07740000 IC @9,3(0,@6) 0247 07750000 * BUFR(1:R9) = AREA(1:R9); /* SET PRINT BUFFER * 07760000 L @8,4(0,@6) 0248 07770000 LR @E,@8 0248 07780000 LR @C,@9 0248 07790000 BCTR @C,0 0248 07800000 LR @A,@5 0248 07810000 EX @C,@MVC 0248 07820000 * GO TO PRT008; /* GO TO PRINT ROUTINE * 07830000 BC 15,PRT008 0249 07840000 * GEN(EJECT); 07850000 EJECT 07860000 DS 0H 07870000 * /************************************************************ 07880000 * /* THE FOLLOWING ROUTINE CONTAIN COMMON CONVERT MACRO'S * 07890000 * /* REFERENCED BY THIS MODULE. * 07900000 * /************************************************************ 07910000 * CONVERT1: /* CONVERT BUFFER2 FROM * 07920000 * GEN( OLDCONV HE,BUFFER2,BUFFER2+10,10); 07930000 CONVERT1 OLDCONV HE,BUFFER2,BUFFER2+10,10 07940000 DS 0H 07950000 * GO TO R9; 07960000 BCR 15,@9 0252 07970000 * 07980000 * CONVERT2: /*CONVERT WKAREA FROM * 07990000 * GEN( OLDCONV HE,WKARA1,WKARA1+32,32); 08000000 CONVERT2 OLDCONV HE,WKARA1,WKARA1+32,32 08010000 DS 0H 08020000 * GO TO R9; 08030000 BCR 15,@9 0254 08040000 * FINISH: 08050000 * RETURN; /* RETURN TO CALLER * 08060000 * END IFDOLT08; 08070000 @EL01 L @D,4(0,@D) 0256 08080000 L @E,12(0,@D) 0256 08090000 LM @0,@C,20(@D) 0256 08100000 BCR 15,@E 0256 08110000 @DATA1 EQU * 08120000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 08130000 @1 EQU 01 08140000 @2 EQU 02 08150000 @3 EQU 03 08160000 @4 EQU 04 08170000 @5 EQU 05 08180000 @6 EQU 06 08190000 @7 EQU 07 08200000 @8 EQU 08 08210000 @9 EQU 09 08220000 @A EQU 10 08230000 @B EQU 11 08240000 @C EQU 12 08250000 @D EQU 13 08260000 @E EQU 14 08270000 @F EQU 15 08280000 @D1 DC H'1' 08290000 @D2 DC H'9' 08300000 @D3 DC H'3' 08310000 @D4 DC H'10' 08320000 @D5 DC H'13' 08330000 @D6 DC H'8' 08340000 @D7 DC H'6' 08350000 @D8 DC H'5' 08360000 @D9 DC H'7' 08370000 @D10 DC H'17' 08380000 @D11 DC H'4' 08390000 @D12 DC H'2' 08400000 @D13 DC H'79' 08410000 @MVC MVC 0(1,@A),0(@E) 08420000 DS 0F 08430000 @C15 DC C'CCW-' 08440000 @C22 DC C'SNS-' 08450000 @C20 DC C'CSW-XX' 08460000 @C9 DC C'BUG' 08470000 @C14 DC C'IC-' 08480000 @C16 DC C'I/O ADDR-' 08490000 @C17 DC C'RCVD ' 08500000 @C18 DC C'XPCTD' 08510000 @C19 DC C'CC-' 08520000 @C21 DC C'XXXXXX XXXX XXXX ' 08530000 @C23 DC C'DATA-' 08540000 DS 0D 08550000 @DATA EQU * 08560000 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 08570000 X EQU 00000000 FULLWORD INTEGER 08580000 R0 EQU 00000000 FULLWORD POINTER REGISTER 08590000 R1 EQU 00000001 FULLWORD POINTER REGISTER 08600000 R2 EQU 00000002 FULLWORD POINTER REGISTER 08610000 R3 EQU 00000003 FULLWORD POINTER REGISTER 08620000 R4 EQU 00000004 FULLWORD POINTER REGISTER 08630000 R5 EQU 00000005 FULLWORD POINTER REGISTER 08640000 R6 EQU 00000006 FULLWORD POINTER REGISTER 08650000 R7 EQU 00000007 FULLWORD POINTER REGISTER 08660000 R12 EQU 00000012 FULLWORD POINTER REGISTER 08670000 R13 EQU 00000013 FULLWORD POINTER REGISTER 08680000 R14 EQU 00000014 FULLWORD POINTER REGISTER 08690000 R15 EQU 00000015 FULLWORD POINTER REGISTER 08700000 R9 EQU 00000009 FULLWORD POINTER REGISTER 08710000 A00004 EQU 00000000 8 BYTE(S) ON WORD 08720000 A00005 EQU A00004+00000000 6 BYTE(S) 08730000 UNIT EQU A00004+00000006 2 BYTE(S) 08740000 BUFFERS EQU @DATA+00000072 164 BYTE(S) ON DWORD 08750000 A00011 EQU BUFFERS+00000000 FULLWORD POINTER 08760000 FRMCON EQU BUFFERS+00000004 1 BYTE(S) 08770000 PRTBUFR1 EQU BUFFERS+00000005 79 BYTE(S) 08780000 BUFFER2 EQU BUFFERS+00000084 80 BYTE(S) 08790000 BUFR EQU 00000000 79 BYTE(S) 08800000 A00014 EQU 00000000 8 BYTE(S) ON WORD 08810000 A00015 EQU A00014+00000000 1 BYTE(S) 08820000 LASTFLG EQU A00014+00000000 1 BIT(S) 08830000 HEADFLG EQU A00014+00000000 1 BIT(S) 08840000 RSLTFLG EQU A00014+00000000 1 BIT(S) 08850000 OVRDFLG EQU A00014+00000000 1 BIT(S) 08860000 COMFLG EQU A00014+00000000 1 BIT(S) 08870000 ERRFLG EQU A00014+00000000 1 BIT(S) 08880000 A00016 EQU A00014+00000000 2 BIT(S) 08890000 FRMCNTL EQU A00014+00000001 1 BYTE(S) 08900000 A00017 EQU A00014+00000002 1 BYTE(S) 08910000 COUNT EQU A00014+00000003 1 BYTE(S) 08920000 SUBCHK EQU A00014+00000004 FULLWORD POINTER 08930000 A00018 EQU 00000000 8 BYTE(S) ON WORD 08940000 A00019 EQU A00018+00000000 1 BYTE(S) 08950000 DEVFLG EQU A00018+00000000 1 BIT(S) 08960000 LSTFLG EQU A00018+00000000 1 BIT(S) 08970000 A00020 EQU A00018+00000000 1 BIT(S) 08980000 CCWFLG EQU A00018+00000000 1 BIT(S) 08990000 LSTCCW EQU A00018+00000001 7 BYTE(S) 09000000 AREA EQU 00000000 80 BYTE(S) 09010000 A00021 EQU 00000000 32 BYTE(S) ON WORD 09020000 A00022 EQU A00021+00000000 4 BYTE(S) 09030000 RELIF EQU A00021+00000000 1 BYTE(S) 09040000 RELAD EQU A00021+00000000 1 BIT(S) 09050000 CC EQU A00021+00000000 1 BIT(S) 09060000 CSWS1 EQU A00021+00000000 1 BIT(S) 09070000 CSWS2 EQU A00021+00000000 1 BIT(S) 09080000 CSWC EQU A00021+00000000 1 BIT(S) 09090000 SNS EQU A00021+00000000 1 BIT(S) 09100000 A00023 EQU A00021+00000000 1 BIT(S) 09110000 DATA EQU A00021+00000000 1 BIT(S) 09120000 SNGLFLG EQU A00021+00000001 1 BIT(S) 09130000 A00024 EQU A00021+00000001 7 BIT(S) 09140000 DTACNT EQU A00021+00000002 1 BYTE(S) 09150000 SNSCNT EQU A00021+00000003 1 BYTE(S) 09160000 TECBAD EQU A00021+00000004 FULLWORD POINTER 09170000 EXPDINFO EQU A00021+00000008 16 BYTE(S) 09180000 REDTADR EQU A00021+00000024 FULLWORD POINTER 09190000 EXPDTADR EQU A00021+00000028 FULLWORD POINTER 09200000 RECEIV EQU 00000000 256 BYTE(S) 09210000 EXPECT EQU 00000000 256 BYTE(S) 09220000 WKARA1 EQU @DATA+00000236 96 BYTE(S) 09230000 WKAREA EQU 00000000 96 BYTE(S) 09240000 A00025 EQU 00000000 8 BYTE(S) ON WORD 09250000 A00026 EQU A00025+00000000 FULLWORD POINTER 09260000 OLTSVAD EQU A00025+00000004 FULLWORD POINTER 09270000 A00027 EQU 00000000 36 BYTE(S) ON WORD 09280000 A00028 EQU A00027+00000000 32 BYTE(S) 09290000 IDAD EQU A00027+00000032 FULLWORD POINTER 09300000 A00029 EQU 00000000 85 BYTE(S) ON WORD 09310000 A00030 EQU A00029+00000000 76 BYTE(S) 09320000 ID EQU A00029+00000076 8 BYTE(S) 09330000 ROUTINE EQU A00029+00000084 1 BYTE(S) 09340000 ORG @DATA+00000332 09350000 XLATE1 EQU * 10 BYTE(S) 09360000 DC C'0123456789' 09370000 PTCHAREA EQU @DATA+00000342 60 BYTE(S) 09380000 ORG @DATA+00000404 09390000 MSGMOD08 EQU * FULLWORD POINTER 09400000 DC VL4(IFDMSG08) 09410000 A00031 EQU 00000000 4 BYTE(S) ON WORD 09420000 MSG129 EQU A00031+00000000 FULLWORD POINTER 09430000 A00032 EQU 00000000 57 BYTE(S) ON WORD 09440000 A00033 EQU A00032+00000000 39 BYTE(S) 09450000 MSGID EQU A00032+00000039 6 BYTE(S) 09460000 A00034 EQU A00032+00000045 1 BYTE(S) 09470000 MSGRTN EQU A00032+00000046 2 BYTE(S) 09480000 A00035 EQU A00032+00000048 6 BYTE(S) 09490000 MSGUNIT EQU A00032+00000054 3 BYTE(S) 09500000 A00036 EQU 00000000 20 BYTE(S) ON WORD 09510000 A00037 EQU A00036+00000000 4 BYTE(S) 09520000 RCVDINFO EQU A00036+00000004 16 BYTE(S) 09530000 ORG @DATA 09540000 DS 00000428C 09550000 @TEMPS DS 0F 09560000 DSECT08 IFDCOM 09570000 A00000 EQU CESWT2+00000000 1 BYTE(S) ON WORD 09580000 A00001 EQU A00000+00000000 2 BIT(S) 09590000 FECOND EQU A00000+00000000 1 BIT(S) 09600000 A00002 EQU CESWT+00000000 1 BYTE(S) ON WORD 09610000 A00003 EQU A00002+00000000 6 BIT(S) 09620000 FERINT EQU A00002+00000000 1 BIT(S) 09630000 A00006 EQU CHASCT+00000000 4 BYTE(S) ON WORD 09640000 A00007 EQU A00006+00000000 2 BYTE(S) 09650000 A00008 EQU A00006+00000002 1 BYTE(S) 09660000 A00009 EQU A00006+00000002 7 BIT(S) 09670000 FERCOM EQU A00006+00000002 1 BIT(S) 09680000 CHASCT3 EQU A00006+00000003 1 BYTE(S) 09690000 CHASCTB EQU A00006+00000003 1 BIT(S) 09700000 A00010 EQU A00006+00000003 5 BIT(S) 09710000 ERRLPB EQU A00006+00000003 1 BIT(S) 09720000 A00012 EQU CESWT5+00000000 1 BYTE(S) ON WORD 09730000 A00013 EQU A00012+00000000 2 BIT(S) 09740000 FFEFLG EQU A00012+00000000 1 BIT(S) 09750000 @DATEND EQU * 09760000 FINISH EQU @EL01 09770000 END IFDOLT08 09780000 ./ ADD SSI=01012544,NAME=IFDOLT09,SOURCE=1 * IFDOLT09: /* MAIN AND ONLY ENTRY POINT OF THIS MODULE. * 00000000 * /******************************************************************* 00000010 * /* * 00000020 * /* STATUS: CHANGE LEVEL 0 * 00000030 * /* * 00000040 * /* FUNCTION: THE IFDOLT09 MODULE WILL COMPARE EXPECTED AND RE- * 00000050 * /* CEIVED RESULT FIELDS. INVALID RESULTS ARE FLAGGED * 00000060 * /* IN THE LOW ORDER BIT POSITIONS OF REGISTER 15. IF * 00000070 * /* ERRORS ARE ENCOUNTERED, IFDOLT09 WILL PASS CONTROL * 00000080 * /* TO AN ERROR EXIT ROUTINE PROVIDED BY THE CALLER. * 00000090 * /* * 00000100 * /* ENTRY POINTS: IFDOLT09 IS THE MAIN AND ONLY ENTRY POINT OF * 00000110 * /* THIS MODULE. * 00000120 * /* * 00000130 * /* INPUT: REGISTER 1 CONTAIN A POINTER TO THE FOLLOWING PARAMETER * 00000140 * /* LIST. * 00000150 * /* 1ST WORD - CONTAINS THE ADDRESS OF CHECKFIELD. * 00000160 * /* * 00000170 * /* 2ND WORD - CONTAINS THE ADDRESS OF THE ERROR EXIT * 00000180 * /* ROUTINE. * 00000190 * /* * 00000200 * /* OUTPUT: FLAG FIELD IN THE LOW ORDER BYTE OF REGISTER 15. * 00000210 * /* * 00000220 * /* EXTERNAL ROUTINES: AN ERROR EXIT ROUTINE IS PROVIDED BY THE * 00000230 * /* CALLER. * 00000240 * /* * 00000250 * /* TABLES/WORK AREAS: CHECKFIELD IS REFERENCE FOR EXPECTED DATA. * 00000260 * /* TECB IS REFERENCED FOR RECEIVED DATA. * 00000270 * /* * 00000280 * /* ATTRIBUTES: TRANSIENT, REUSABLE * 00000290 * /* * 00000300 * /******************************************************************* 00000310 * PROC(X) OPTIONS(DONTSAVE(15)); 00000320 LCLA &T,&SPN 0001 00000330 .@001 ANOP 0001 00000340 IFDOLT09 CSECT , 0001 00000350 ST @E,12(0,@D) 0001 00000360 STM @0,@C,20(@D) 0001 00000370 BALR @B,0 0001 00000380 @PSTART DS 0H 0001 00000390 USING @PSTART+00000,@B 0001 00000400 ST @D,@SAV001+4 0001 00000410 LA @F,@SAV001 0001 00000420 ST @F,8(0,@D) 0001 00000430 LR @D,@F 0001 00000440 * 00000450 * RESTRICT(5,6); /* REGISTERS USED BY PROGRAM * 00000460 * DCL R1 REG(1) PTR; /* PARAMETER LIST POINTER * 00000470 * DCL R5 REG(5) PTR; /* CHECKFIELD POINTER * 00000480 * DCL R6 REG(6) PTR; /* TECB POINTER * 00000490 * DCL R13 REG(13) PTR; /* REGISTER SAVE AREA POINTER* 00000500 * DCL R14 REG(14) PTR; /* RETURN ADDRESS REGISTER * 00000510 * DCL PTCHAREA CHAR(28); /* PATCH AREA USED FOR * 00000520 * /* MAINTAINING OF PROGRAM * 00000530 * DCL R15 REG(15) PTR; /* CONTAINS ERROR FLAGS * 00000540 * /************************************************************ 00000550 * /* THE FOLLOWING MAP DESCRIBES THE PORTIONS OF THE REGISTER* 00000560 * /* SAVE AREAS TO BE ALTERED WHEN CONTROL IS PASSED TO THE * 00000570 * /* ERROR EXIT ROUTINE. * 00000580 * /************************************************************ 00000590 * DECLARE 00000600 * 1 * BASED(R13), /* REGISTER 13 CONTAINS ADDR * 00000610 * 2 * PTR, /* NOT REFERENCED * 00000620 * 2 CALLSA PTR; /* POINTER TO CALLERS SAVE * 00000630 * /* AREA * 00000640 * DECLARE 00000650 * 1 * BASED(CALLSA), /* POINTER IN SAVE AREA * 00000660 * 2 * CHAR(12), /* NOT REFERENCED * 00000670 * 2 SAVRTN PTR; /* CONTAINS RETURN ADDRESS * 00000680 * /************************************************************ 00000690 * /* THE FOLLOWING MAP DESCRIBES THE PARAMETER LIST RECEIVED * 00000700 * /************************************************************ 00000710 * 00000720 * DECLARE 00000730 * 1 * BASED(R1), /* REGISTER 1 CONTAINS PTR. * 00000740 * 2 CHKFLD PTR, /* CHECKFIELD ADDRESS * 00000750 * 2 ERRTNAD PTR; /* ERROR EXIT ROUTINE ADDR. * 00000760 * /************************************************************ 00000770 * /* THE FOLLOWING MAP DESCRIBES THE CHECKFIELD AREA. * 00000780 * /************************************************************ 00000790 * 00000800 * DECLARE 00000810 * 1 * BASED(R5), /* REGISTER 5 CONTAINS PTR. * 00000820 * 2 * CHAR(4), /* CONTAINS FLAGS & BYTE CNT * 00000830 * 3 RELVT CHAR(1), /* FLAG FIELDS INDICATING * 00000840 * /* AREAS TO BE TESTED * 00000850 * 4 RELVT1 BIT(1), /* CSW COMMAND ADDRESS * 00000860 * 4 RELVT2 BIT(1), /* CONDITION CODE * 00000870 * 4 RELVT3 BIT(1), /* 1ST BYTE OF CSW STATUS * 00000880 * 4 RELVT4 BIT(1), /* 2ND BYTE OF CSW STATUS * 00000890 * 4 RELVT5 BIT(1), /* CSW COUNT * 00000900 * 4 RELVT6 BIT(1), /* SENSE DATA * 00000910 * 4 RELVT7 BIT(1), /* ERROR IN SENSE OPERATION * 00000920 * 4 RELVT8 BIT(1), /* DATA COMPARE * 00000930 * 3 * CHAR(1), /* NOT USED * 00000940 * 3 CNT CHAR(1), /* DATA COUNT * 00000950 * 3 SNSCNT CHAR(1), /* SENSE COUNT * 00000960 * 2 TECBAD PTR, /* TECB ADDRESS * 00000970 * 2 * CHAR(4), /* CONTAINS FOLLOWING 4 BYTES* 00000980 * 3 EXPCC CHAR(1), /* EXPECTED CONDITION CODE * 00000990 * 3 ADDR1 PTR(24), /* EXPECTED CSW * 00001000 * 2 STATUS1 CHAR(1), /* 1ST EXPECTED CSW STATUS * 00001010 * 2 STATUS2 CHAR(1), /* 2ND EXPECTED CSW STATUS * 00001020 * 2 COUNT CHAR(2), /* EXPECTED CSW COUNT * 00001030 * 2 EXPSNS CHAR(8), /* EXPECTED SENSE * 00001040 * 2 RECDATA PTR, /* ADDRESS OF RECEIVED DATA * 00001050 * 2 EXPDATA PTR; /* ADDRESS OF EXPECTED DATA * 00001060 * DCL RECEIV CHAR(256) BASED(RECDATA); /* RECEIVED DATA AREA * 00001070 * DCL EXPECT CHAR(256) BASED(EXPDATA); /* EXPECTED DATA AREA * 00001080 * /************************************************************ 00001090 * /* THE FOLLOWING MAP DESCRIBES THE TECB AREA * 00001100 * /************************************************************ 00001110 * 00001120 * DECLARE 00001130 * 1 * BASED(R6), /* REGISTER 6 CONTAINS PTR. * 00001140 * 2 * CHAR(4), /* NOT REFERENCED * 00001150 * 2 * CHAR(4), /* CONTAINS FOLLOWING 4 BYTES* 00001160 * 3 TRECC CHAR(1), /* RECEIVED CONDITION CODE * 00001170 * 3 TRECSW1 CHAR(3), /* RECEIVED CSW ADDRESS * 00001180 * 2 RESTAT1 CHAR(1), /* RECEIVED CSW STATUS 1 * 00001190 * 2 RESTAT2 CHAR(1), /* RECEIVED CSW STATUS 2 * 00001200 * 2 RECNT CHAR(2), /* RECEIVED CSW COUNT * 00001210 * 2 RECSNS CHAR(8), /* RECEIVED SENSE * 00001220 * 3 SNSERR CHAR(1), /* TEST SENSE ERROR * 00001230 * 3 * CHAR(7); /* NOT REFERENCED * 00001240 * DCL ERRFLG CHAR(1); /* ERROR FLAG AREA * 00001250 * /************************************************************ 00001260 * /* THE FOLLOWING CODE WILL COMPARE EXPECTED AND RECEIVED * 00001270 * /* FIELDS AS INDICATED BY THE TEST FLAG SETTINGS * 00001280 * /************************************************************ 00001290 * 00001300 * R5 = CHKFLD; /* SET REG 5 TO CHECKFLD PTR * 00001310 L @5,0(0,@1) 0018 00001320 * R6 = TECBAD; /* SET REG 6 TO TECB PTR. * 00001330 L @6,4(0,@5) 0019 00001340 * ERRFLG = '00'X; /* CLEAR ERROR FLAG FIELD * 00001350 MVI ERRFLG,X'00' 0020 00001360 * GENERATE; 00001370 TM 0(5),X'FC' 00001380 BZ CMP006 00001390 DS 0H 00001400 * IF RELVT2 = '0'B THEN /* CONDITION CODE TEST * 00001410 TM 0(@5),B'01000000' 0022 00001420 * GO TO CMP001; /* NO-BRANCH TO COMMAND * 00001430 BC 08,CMP001 0023 00001440 * /* ADDRESS TEST. * 00001450 * IF EXPCC = TRECC THEN /* VALID CONDITION CODE * 00001460 CLC 8(1,@5),4(@6) 0024 00001470 * GO TO CMP001; /* YES-BRANCH TO COMMAND * 00001480 BC 08,CMP001 0025 00001490 * /* ADDRESS TEST * 00001500 * ERRFLG = ERRFLG ³ '40'X; /* NO-SET ERROR FLAG * 00001510 OI ERRFLG,X'40' 0026 00001520 * CMP001: 00001530 * IF RELVT1 = '0'B THEN /* COMMAND ADDRESS TEST * 00001540 CMP001 TM 0(@5),B'10000000' 0027 00001550 * GO TO CMP002; /* NO-BRANCH TO 1ST CSW * 00001560 BC 08,CMP002 0028 00001570 * /* STATUS TEST. * 00001580 * IF ADDR1 = TRECSW1 THEN /* VALID COMMAND ADDRESS * 00001590 MVC @TEMP3+1(3),5(@6) 0029 00001600 L @F,@TEMP3 0029 00001610 MVC @TEMP3+1(3),9(@5) 0029 00001620 C @F,@TEMP3 0029 00001630 * GO TO CMP002; /* YES-BRANCH TO 1ST CSW * 00001640 BC 08,CMP002 0030 00001650 * /* STATUS TEST * 00001660 * ERRFLG = ERRFLG ³ '80'X; /* NO-SET ERROR FLAG * 00001670 OI ERRFLG,X'80' 0031 00001680 * CMP002: 00001690 * IF RELVT3 = '0'B THEN /* 1ST CSW STATUS TEST * 00001700 CMP002 TM 0(@5),B'00100000' 0032 00001710 * GO TO CMP003; /* NO-BRANCH TO 2ND CSW * 00001720 BC 08,CMP003 0033 00001730 * /* STATUS TEST. * 00001740 * IF STATUS1 = RESTAT1 THEN /* VALID CSW STATUS * 00001750 CLC 12(1,@5),8(@6) 0034 00001760 * GO TO CMP003; /* YES-BRANCH TO 2ND CSW * 00001770 BC 08,CMP003 0035 00001780 * /* STATUS TEST. * 00001790 * ERRFLG = ERRFLG ³ '20'X; /* NO-SET ERROR FLAG * 00001800 OI ERRFLG,X'20' 0036 00001810 * CMP003: 00001820 * IF RELVT4 = '0'B THEN /* 2ND CSW STATUS TEST * 00001830 CMP003 TM 0(@5),B'00010000' 0037 00001840 * GO TO CMP004; /* NO-BRANCH TO CSW COUNT * 00001850 BC 08,CMP004 0038 00001860 * /* TEST. * 00001870 * IF STATUS2 = RESTAT2 THEN /* VALID CSW STATUS * 00001880 CLC 13(1,@5),9(@6) 0039 00001890 * GO TO CMP004; /* YES-BRANCH TO CSW COUNT * 00001900 BC 08,CMP004 0040 00001910 * /* TEST. * 00001920 * ERRFLG = ERRFLG ³ '10'X; /* NO-SET ERROR FLAG * 00001930 OI ERRFLG,X'10' 0041 00001940 * CMP004: 00001950 * IF RELVT5 = '0'B THEN /* CSW COUNT TEST * 00001960 CMP004 TM 0(@5),B'00001000' 0042 00001970 * GO TO CMP005; /* NO-BRANCH TO SENSE DATA * 00001980 BC 08,CMP005 0043 00001990 * /* TEST. * 00002000 * IF COUNT = RECNT THEN /* VALID CSW COUNT * 00002010 CLC 14(2,@5),10(@6) 0044 00002020 * GO TO CMP005; /* YES-BRANCH TO SENSE DATA * 00002030 BC 08,CMP005 0045 00002040 * /* TEST. * 00002050 * ERRFLG = ERRFLG ³ '08'X; /* NO-SET ERROR FLAG * 00002060 OI ERRFLG,X'08' 0046 00002070 * CMP005: 00002080 * IF RELVT6 = '0'B THEN /* SENSE DATA TEST * 00002090 CMP005 TM 0(@5),B'00000100' 0047 00002100 * GO TO CMP006; /* NO-BRANCH TO DATA COMPARE * 00002110 BC 08,CMP006 0048 00002120 * /* TEST. * 00002130 * IF EXPSNS(1:SNSCNT) = RECSNS(1:SNSCNT) THEN /* VALID SENSE * 00002140 LA @E,12(0,@6) 0049 00002150 SR @4,@4 0049 00002160 IC @4,3(0,@5) 0049 00002170 BCTR @4,0 0049 00002180 LA @A,16(0,@5) 0049 00002190 EX @4,@CLC 0049 00002200 * GO TO CMP006; /* DATA-YES-BRANCH TO DATA * 00002210 BC 08,CMP006 0050 00002220 * /* COMPARE TEST. * 00002230 * ERRFLG = ERRFLG ³ '04'X; /* NO-SET ERROR FLAG * 00002240 OI ERRFLG,X'04' 0051 00002250 * 00002260 * IF SNSERR ª= 'FF'X THEN /* ERROR SENSE TEST VALID * 00002270 CLI 12(@6),X'FF' 0052 00002280 * GO TO CMP006; /* YES-BRANCH TO DATA COMPARE* 00002290 BC 07,CMP006 0053 00002300 * /* TEST. * 00002310 * ERRFLG = ERRFLG ³ '02'X; /* NO-SET ERROR FLAG. * 00002320 OI ERRFLG,X'02' 0054 00002330 * CMP006: 00002340 * IF RELVT8 = '0'B THEN /* DATA COMPARE TEST * 00002350 CMP006 TM 0(@5),B'00000001' 0055 00002360 * GO TO CMP007; /* NO-BRANCH TO EXIT ROUTINE * 00002370 BC 08,CMP007 0056 00002380 * IF RECEIV(1:CNT) = EXPECT(1:CNT) THEN /* VALID DATA * 00002390 L @4,28(0,@5) 0057 00002400 LR @E,@4 0057 00002410 SR @7,@7 0057 00002420 IC @7,2(0,@5) 0057 00002430 BCTR @7,0 0057 00002440 L @C,24(0,@5) 0057 00002450 LR @A,@C 0057 00002460 EX @7,@CLC 0057 00002470 * GO TO CMP007; /* COMPARE-YES-BRANCH TO * 00002480 BC 08,CMP007 0058 00002490 * /* EXIT ROUTINE * 00002500 * ERRFLG = ERRFLG ³ '01'X; /* NO-SET ERROR FLAG * 00002510 OI ERRFLG,X'01' 0059 00002520 * CMP007: 00002530 * IF ERRFLG = '00'X THEN /* IF NO ERRORS OCCURRED * 00002540 CMP007 CLI ERRFLG,X'00' 0060 00002550 * GO TO CMP008; /* BRANCH TO NORMAL RETURN * 00002560 BC 08,CMP008 0061 00002570 * SAVRTN = ERRTNAD; /* ELSE-SET ERROR RETURN ADR.* 00002580 L @4,4(0,@D) 0062 00002590 MVC 12(4,@4),4(@1) 0062 00002600 * R15 = ERRFLG; /* SET ERROR RETURN FLAGS * 00002610 SR @F,@F 0063 00002620 IC @F,ERRFLG 0063 00002630 * GO TO CMP009; /* BRANCH TO RETURN * 00002640 BC 15,CMP009 0064 00002650 * CMP008: 00002660 * R15 = '00'X; /* SET NORMAL RETURN CODE * 00002670 CMP008 LA @F,X'00' 0065 00002680 * CMP009: 00002690 * RETURN; /* RETURN TO CALLER * 00002700 * END IFDOLT09; /* END OF COMPARE MODULE * 00002710 @EL01 L @D,4(0,@D) 0067 00002720 L @E,12(0,@D) 0067 00002730 LM @0,@C,20(@D) 0067 00002740 BCR 15,@E 0067 00002750 @DATA1 EQU * 0067 00002760 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00002770 @1 EQU 01 00002780 @2 EQU 02 00002790 @3 EQU 03 00002800 @4 EQU 04 00002810 @5 EQU 05 00002820 @6 EQU 06 00002830 @7 EQU 07 00002840 @8 EQU 08 00002850 @9 EQU 09 00002860 @A EQU 10 00002870 @B EQU 11 00002880 @C EQU 12 00002890 @D EQU 13 00002900 @E EQU 14 00002910 @F EQU 15 00002920 @CLC CLC 0(1,@A),0(@E) 00002930 DS 0F 00002940 DS 0D 00002950 @DATA EQU * 00002960 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 00002970 X EQU 00000000 FULLWORD INTEGER 00002980 R1 EQU 00000001 FULLWORD POINTER REGISTER 00002990 R5 EQU 00000005 FULLWORD POINTER REGISTER 00003000 R6 EQU 00000006 FULLWORD POINTER REGISTER 00003010 R13 EQU 00000013 FULLWORD POINTER REGISTER 00003020 R14 EQU 00000014 FULLWORD POINTER REGISTER 00003030 PTCHAREA EQU @DATA+00000072 28 BYTE(S) 00003040 R15 EQU 00000015 FULLWORD POINTER REGISTER 00003050 A00000 EQU 00000000 8 BYTE(S) ON WORD 00003060 A00001 EQU A00000+00000000 FULLWORD POINTER 00003070 CALLSA EQU A00000+00000004 FULLWORD POINTER 00003080 A00002 EQU 00000000 16 BYTE(S) ON WORD 00003090 A00003 EQU A00002+00000000 12 BYTE(S) 00003100 SAVRTN EQU A00002+00000012 FULLWORD POINTER 00003110 A00004 EQU 00000000 8 BYTE(S) ON WORD 00003120 CHKFLD EQU A00004+00000000 FULLWORD POINTER 00003130 ERRTNAD EQU A00004+00000004 FULLWORD POINTER 00003140 A00005 EQU 00000000 32 BYTE(S) ON WORD 00003150 A00006 EQU A00005+00000000 4 BYTE(S) 00003160 RELVT EQU A00005+00000000 1 BYTE(S) 00003170 RELVT1 EQU A00005+00000000 1 BIT(S) 00003180 RELVT2 EQU A00005+00000000 1 BIT(S) 00003190 RELVT3 EQU A00005+00000000 1 BIT(S) 00003200 RELVT4 EQU A00005+00000000 1 BIT(S) 00003210 RELVT5 EQU A00005+00000000 1 BIT(S) 00003220 RELVT6 EQU A00005+00000000 1 BIT(S) 00003230 RELVT7 EQU A00005+00000000 1 BIT(S) 00003240 RELVT8 EQU A00005+00000000 1 BIT(S) 00003250 A00007 EQU A00005+00000001 1 BYTE(S) 00003260 CNT EQU A00005+00000002 1 BYTE(S) 00003270 SNSCNT EQU A00005+00000003 1 BYTE(S) 00003280 TECBAD EQU A00005+00000004 FULLWORD POINTER 00003290 A00008 EQU A00005+00000008 4 BYTE(S) 00003300 EXPCC EQU A00005+00000008 1 BYTE(S) 00003310 ADDR1 EQU A00005+00000009 3 BYTE POINTER 00003320 STATUS1 EQU A00005+00000012 1 BYTE(S) 00003330 STATUS2 EQU A00005+00000013 1 BYTE(S) 00003340 COUNT EQU A00005+00000014 2 BYTE(S) 00003350 EXPSNS EQU A00005+00000016 8 BYTE(S) 00003360 RECDATA EQU A00005+00000024 FULLWORD POINTER 00003370 EXPDATA EQU A00005+00000028 FULLWORD POINTER 00003380 RECEIV EQU 00000000 256 BYTE(S) 00003390 EXPECT EQU 00000000 256 BYTE(S) 00003400 A00009 EQU 00000000 20 BYTE(S) ON WORD 00003410 A00010 EQU A00009+00000000 4 BYTE(S) 00003420 A00011 EQU A00009+00000004 4 BYTE(S) 00003430 TRECC EQU A00009+00000004 1 BYTE(S) 00003440 TRECSW1 EQU A00009+00000005 3 BYTE(S) 00003450 RESTAT1 EQU A00009+00000008 1 BYTE(S) 00003460 RESTAT2 EQU A00009+00000009 1 BYTE(S) 00003470 RECNT EQU A00009+00000010 2 BYTE(S) 00003480 RECSNS EQU A00009+00000012 8 BYTE(S) 00003490 SNSERR EQU A00009+00000012 1 BYTE(S) 00003500 A00012 EQU A00009+00000013 7 BYTE(S) 00003510 ERRFLG EQU @DATA+00000100 1 BYTE(S) 00003520 DS 00000101C 00003530 @TEMPS DS 0F 00003540 @TEMP3 DC F'0' 00003550 @DATEND EQU * 00003560 CMP009 EQU @EL01 00003570 END IFDOLT09 00003580 ./ ADD SSI=01012588,NAME=IFDOLT10,SOURCE=1 TITLE 'IFDOLT10 CONVERT MODULE' 00010000 * GENERATE; 00020000 TITLE 'IFDOLT10 CONVERT MODULE' 00030000 * IFDOLT10: 00040000 * /******************************************************************** 00050000 * /* * 00060000 * /*STATUS- CHANGE LEVEL 000 * 00070000 * /* * 00080000 * /*FUNCTION- * 00090000 * /* THIS MODULE PROVIDES THE UNIT TEST WITH THE FACILITY TO CONVERT* 00100000 * /* EBCDIC TO HEX OR HEX TO EBCDIC. * 00110000 * /* * 00120000 * /*ENTRY POINTS- * 00130000 * /* IFDOLT10 IS THE MAIN AND ONLY ENTRY POINT. * 00140000 * /* * 00150000 * /*INPUT- * 00160000 * /* UPON ENTRY TO THIS MODULE REGISTER 1 MUST POINT TO A PARAMETER * 00170000 * /* LIST WHICH CONTAINS THE FOLLOWING: * 00180000 * /* FROMADDR DS F FROM ADDRESS * 00190000 * /* TOADDR DS F TO ADDRESS * 00200000 * /* DS F POINTER TO NEXT WORD * 00210000 * /* DS 2C SET TO ZERO * 00220000 * /* FLGCOUNT DS 2C FLAG AND COUNT * 00230000 * /* * 00240000 * /*OUTPUT- * 00250000 * /* UPON EXIT FROM THIS MODULE REGISTER 15 WILL CONTAIN ONE OF * 00260000 * /* THE FOLLOWING RETURN CODES: * 00270000 * /* * 00280000 * /* CODE MEANING * 00290000 * /* * 00300000 * /* 00 CONVERSION PERFORMED AS REQUESTED * 00310000 * /* * 00320000 * /* CHARACTER IF A CHARACTER CANNOT BE CONVERTED, IT IS * 00330000 * /* RETURNED AS THE ERROR CODE. * 00340000 * /* * 00350000 * /*EXTERNAL REFERENCES- * 00360000 * /* NONE. * 00370000 * /* * 00380000 * /*EXITS,NORMAL- * 00390000 * /* TO CALLER WHEN CONVERSION IS COMPLETE. * 00400000 * /* * 00410000 * /*EXITS,ERROR- * 00420000 * /* TO CALLER WHEN CHARACTER CANNOT BE CONVERTED. * 00430000 * /* * 00440000 * /*TABLE/WORK AREAS- * 00450000 * /* AXATBL-16 BYTE TABLE CONSISTING OF THE POSSIBLE HEX CHARACTERS * 00460000 * /* IN EBCDIC. * 00470000 * /* LOW15-4 BYTE MASK NEEDED TO CALCULATE TRUE COUNT. * 00480000 * /* AXFLGA-1 BYTE USED AS AN INTERNAL SWITCH. * 00490000 * /* * 00500000 * /*ATTRIBUTES- * 00510000 * /* REUSABLE. * 00520000 * /* * 00530000 * /*NOTES- * 00540000 * /* NONE. * 00550000 * /* * 00560000 * /******************************************************************** 00570000 * PROC OPTIONS(CODEREG(4),NOSAVEAREA,DONTSAVE(15)); 00580000 LCLA &T,&SPN 0002 00590000 .@001 ANOP 0002 00600000 IFDOLT10 CSECT , 0002 00610000 ST @E,12(0,@D) 0002 00620000 STM @0,@C,20(@D) 0002 00630000 BALR @4,0 0002 00640000 @PSTART DS 0H 0002 00650000 USING @PSTART+00000,@4 0002 00660000 * DCL PL REG(1) PTR(31); 00670000 * DCL ENDADDR REG(2) PTR(31); 00680000 * DCL R3 REG(3) PTR(24); 00690000 * DCL R5 REG(5) PTR(24); 00700000 * DCL R6 REG(6) PTR(24); 00710000 * DCL AXTBLPTR REG(7) PTR(31); 00720000 * DCL R7 REG(7) PTR(31); 00730000 * DCL R8 REG(8) PTR(31); 00740000 * DCL I REG(9) PTR(24); 00750000 * DCL R9 REG(9) PTR(31); 00760000 * DCL R11 REG(11) PTR(31); 00770000 * DCL R12 REG(12) PTR(31); 00780000 * DCL RC REG(15) PTR(24); 00790000 * DCL LOW15 CHAR(4) BDY(WORD) INIT('00007FFF'X); 00800000 * DCL 1 PARMLIST CHAR(16) BDY(WORD) BASED(PL), 00810000 * 3 FROMADDR PTR(31), 00820000 * 3 TOADDR PTR(31), 00830000 * 3 * PTR(31), 00840000 * 3 * CHAR(2), 00850000 * 3 FLGCOUNT PTR(16), 00860000 * 5 HEXBIT BIT(1), 00870000 * 5 * BIT(14), 00880000 * 5 LSTCNT BIT(1); 00890000 * DCL AXATBL CHAR(16) INIT('0123456789ABCDEF'); 00900000 * DCL AXFLGA CHAR(1); 00910000 * DCL INBUF CHAR(1) BASED(R5); 00920000 * DCL 1 OUTAREA CHAR(2) BASED(R6), 00930000 * 3 OUTBUF CHAR(1), 00940000 * 3 OUTBUF1 CHAR(1); 00950000 * DCL AXATBLEL CHAR(1) BASED(AXTBLPTR); 00960000 * RESTRICT(1,2,3,5,6,7,9,11,12); 00970000 * R5=FROMADDR; /* GET FROM ADDRESS INTO REG. 5.*/ 00980000 L @5,0(0,@1) 0024 00990000 * R6=TOADDR; /* GET TO ADDRESS INTO REG. 6. */ 01000000 L @6,4(0,@1) 0025 01010000 * R7=FLGCOUNT; /* GET COUNT IN REG. 7. */ 01020000 MVC @TEMP2+2(2),14(@1) 0026 01030000 L @7,@TEMP2 0026 01040000 * R7=R7&LOW15; 01050000 N @7,LOW15 0027 01060000 * IF R7=0 THEN /* IF COUNT IS ZERO, RETURN TO */ 01070000 LTR @7,@7 0028 01080000 * GO TO CNVERT06; /* CALLER. OTHERWISE CONVERT. */ 01090000 BC 08,CNVERT06 0029 01100000 * AXFLGA='00'X; /* CLEAR FLAG. */ 01110000 MVI AXFLGA,X'00' 0030 01120000 * ENDADDR=R5+R7; /* FIND END OF CONVERSION DATA. */ 01130000 LR @2,@7 0031 01140000 AR @2,@5 0031 01150000 * R3=ADDR(AXATBL); /* SET POINTER TO CHAR TABLE. */ 01160000 LA @3,AXATBL 0032 01170000 * IF HEXBIT='1'B THEN /* IS CONVERSION HEX TO EBCDIC. */ 01180000 TM 14(@1),B'10000000' 0033 01190000 * GO TO CNVERT05; /* YES, GO TO HEX TO EBCDIC */ 01200000 BC 01,CNVERT05 0034 01210000 * /* ROUTINE. */ 01220000 * CNVERT01: /* EBCDIC TO HEX CONVERSION */ 01230000 * DO I=16 TO 1 BY -1; /* SEE IF INPUT CHAR HAS A VALID*/ 01240000 CNVERT01 LA @9,16 0035 01250000 * IF INBUF=AXATBL(I) THEN /* HEX NUMBER EQUIVALENT. */ 01260000 @DO9FF LR @8,@9 0036 01270000 LA @E,AXATBL-1(@8) 0036 01280000 CLC 0(1,@5),0(@E) 0036 01290000 * GO TO CNVERT02; /* YES, CONVERT IT. */ 01300000 BC 08,CNVERT02 0037 01310000 * END; 01320000 * RC=INBUF; /* PUT BAD CHARACTER IN REG. 15 */ 01330000 BCT @9,@DO9FF 0038 01340000 SR @F,@F 0039 01350000 IC @F,0(0,@5) 0039 01360000 * GO TO CNVERT07; /* AND RETURN TO CALLER. */ 01370000 BC 15,CNVERT07 0040 01380000 * CNVERT02: 01390000 * R11=I-1; /* SAVE EQUIVALENT HEX CHAR. */ 01400000 CNVERT02 LH @B,@D1 0041 01410000 AR @B,@9 0041 01420000 * IF AXFLGAª='00'X THEN /* IF 2ND BYTE, GO TO ROUTINE */ 01430000 CLI AXFLGA,X'00' 0042 01440000 * GO TO CNVERT03; /* THAT WILL OUTPUT HEX EQUIV. */ 01450000 BC 07,CNVERT03 0043 01460000 * R12=R11*16; /* PUT 1ST HEX CHAR IN R12 TFF001* 01470000 LR @F,@B 0044 01480000 SLA @F,4 0044 01490000 LR @C,@F 0044 01500000 * AXFLGA='F0'X; /* SET FLAG TO NON-ZERO TO */ 01510000 MVI AXFLGA,X'F0' 0045 01520000 * /* INDICATE ONLY ONE CHARACTER */ 01530000 * /* HAS BEEN CONVERTED. */ 01540000 * GO TO CNVERT04; /* GO TO ROUTINE THAT DETERMINES*/ 01550000 BC 15,CNVERT04 0046 01560000 * /* IF MORE CONVERSION MUST BE */ 01570000 * /* DONE */ 01580000 * CNVERT03: /* OUTPUT ROUTINE FOR EBCDIC TO HEX CONVERSION */ 01590000 * R12=R12³R11; /* COMBINE TWO HEX CHARACTERS. */ 01600000 CNVERT03 OR @C,@B 0047 01610000 * GEN(STC R12,0(R6)); /* PUT CHAR IN OUTPUT AREA. */ 01620000 STC R12,0(R6) 01630000 DS 0H 01640000 * R6=R6+1; /* STEP TO ADDRESS BY 1. */ 01650000 LA @6,1(0,@6) 0049 01660000 * AXFLGA='00'X; /* SET FLAG TO ZERO. */ 01670000 MVI AXFLGA,X'00' 0050 01680000 * CNVERT04: /* IS MORE CONVERSION NECESSARY */ 01690000 * R5=R5+1; /* STEP FROM ADDRESS BY 1. */ 01700000 CNVERT04 LA @5,1(0,@5) 0051 01710000 * IF R5'00'X THEN /* EXCESS OF MULTIPLES */ 00480000 CLI H4,X'00' 0028 00490000 BC 12,@9F9 0028 00500000 * I4=H4; /* LESS THAN A MULTIPLE */ 00510000 MVC I+3(1),H4 0029 00520000 * RDDT1(1:I)=RD10; /* DATA INTO STORAGE AREA */ 00530000 @9F9 EQU * 0030 00540000 @9FA LA @E,RD10 0030 00550000 L @1,I 0030 00560000 BCTR @1,0 0030 00570000 LR @A,@5 0030 00580000 EX @1,@MVC 0030 00590000 * R5=ADDR(RDDT2); /* NEXT STORAGE AREA */ 00600000 LA @5,4(0,@5) 0031 00610000 * END; /* DATA STORAGE COMPLETED */ 00620000 * RETURN; /* RETURN TO CALLER */ 00630000 BCT @6,@DO9FE 0032 00640000 * END; /* END RANDOM DATA GENERATOR * 00650000 @EL01 LM @E,@C,12(@D) 0034 00660000 BCR 15,@E 0034 00670000 @DATA1 EQU * 00680000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00690000 @1 EQU 01 00700000 @2 EQU 02 00710000 @3 EQU 03 00720000 @4 EQU 04 00730000 @5 EQU 05 00740000 @6 EQU 06 00750000 @7 EQU 07 00760000 @8 EQU 08 00770000 @9 EQU 09 00780000 @A EQU 10 00790000 @B EQU 11 00800000 @C EQU 12 00810000 @D EQU 13 00820000 @E EQU 14 00830000 @F EQU 15 00840000 @D1 DC F'0' 00850000 @D2 DC H'1' 00860000 @MVC MVC 0(1,@A),0(@E) 00870000 DS 0F 00880000 @X2 DC X'1234' 00890000 DS 0D 00900000 @DATA EQU * 00910000 R1 EQU 00000001 FULLWORD POINTER REGISTER 00920000 R5 EQU 00000005 FULLWORD POINTER REGISTER 00930000 R6 EQU 00000006 FULLWORD POINTER REGISTER 00940000 R7 EQU 00000007 FULLWORD POINTER REGISTER 00950000 R8 EQU 00000008 FULLWORD POINTER REGISTER 00960000 R10 EQU 00000010 FULLWORD POINTER REGISTER 00970000 A00000 EQU 00000000 8 BYTE(S) ON WORD 00980000 RDDT1 EQU A00000+00000000 4 BYTE(S) 00990000 RDDT2 EQU A00000+00000004 4 BYTE(S) 01000000 A00001 EQU 00000000 12 BYTE(S) ON WORD 01010000 RINPA EQU A00001+00000000 FULLWORD POINTER 01020000 A00002 EQU A00001+00000004 FULLWORD POINTER 01030000 RCNT EQU A00001+00000008 FULLWORD INTEGER 01040000 A00003 EQU A00001+00000008 3 BYTE(S) 01050000 RCNT4 EQU A00001+00000011 1 BYTE(S) 01060000 I EQU * FULLWORD INTEGER 01070000 DC FL4'0' 01080000 A00004 EQU I+00000000 3 BYTE(S) 01090000 I4 EQU I+00000003 1 BYTE(S) 01100000 RD10 EQU @DATA+00000004 4 BYTE(S) ON WORD 01110000 A00005 EQU RD10+00000000 2 BYTE(S) 01120000 RD103 EQU RD10+00000002 2 BYTE(S) 01130000 ORG @DATA+00000008 01140000 A00006 EQU * FULLWORD INTEGER 01150000 DC FL4'65539' 01160000 RD11 EQU A00006+00000000 4 BYTE(S) 01170000 H4 EQU @DATA+00000012 1 BYTE(S) 01180000 ORG @DATA 01190000 DS 00000013C 01200000 @TEMPS DS 0F 01210000 @DATEND EQU * 01220000 @DO9FD EQU @EL01 01230000 END 01240000 ./ ADD SSI=01012456,NAME=IFDOLT13,SOURCE=1 TITLE ' IFDOLT13--CECOM WTO/R INTERFACE.' 00010000 * GENERATE; 00020000 TITLE ' IFDOLT13--CECOM WTO/R INTERFACE.' 00030000 * IFDOLT13: 00040000 * /******************************************************************** 00050000 * /* * 00060000 * /* STATUS: CHANGE LEVEL 0 * 00070000 * /* * 00080000 * /* FUNCTION: THIS MODULE PROVIDES THE OLT WRITER WITH A MEANS OF * 00090000 * /* COMMUNICATING WITH THE OPERATOR. THE USER CAN REQUEST * 00100000 * /* EITHER ONE OR TWO-WAY COMMUNICATION. THIS CONSISTS * 00110000 * /* OF WTO'S AND WTOR'S, WHICH ARE ISSUED BY A PARRELLEL * 00120000 * /* PRINT ROUTINE LOCATED IN OLTEP'S RESIDENT AREA. * 00130000 * /* * 00140000 * /* ENTRY POINTS: IFDOLT13 IS THE MAIN AND ONLY ENTRY POINT OF * 00150000 * /* THIS MODULE. * 00160000 * /* * 00170000 * /* INPUT: REGISTER 1 WILL CONTAIN THE ADDRESS OF THE FOLLOWING * 00180000 * /* PARAMETER LIST: * 00190000 * /* * 00200000 * /* 1ST WORD - ADDRESS OF THE OUT MESSAGE. * 00210000 * /* * 00220000 * /* 2ND WORD - ADDRESS OF THE OUT MESSAGE COUNT. * 00230000 * /* * 00240000 * /* 3RD WORD - ADDRESS OF THE REPLY MESSAGE BUFFER. * 00250000 * /* * 00260000 * /* 4TH WORD - ADDRESS OF THE EXPECTED REPLY COUNT * 00270000 * /* * 00280000 * /* OUTPUT: WTO OR WTOR'S WILL RESULT FROM THE EXECUTION OF THIS * 00290000 * /* MODULE. A COPY OF THE MESSAGES AND THEIR REPLIES WILL * 00300000 * /* BE RECORDED ON THE SYSOUT DEVICE. * 00310000 * /* * 00320000 * /* EXTERNAL ROUTINES: OLTEP'S PARALLEL PRINT ROUTINE IS INVOKED * 00330000 * /* TO OUTPUT ALL MESSAGES. * 00340000 * /* * 00350000 * /* TABLES/WORK AREAS: MESSAGE MODULE IFDMSG13 IS REFERENCED FOR * 00360000 * /* THE LIST FORM OF WTO'S AND WTOR'S NEEDED. * 00370000 * /* * 00380000 * /* ATTRIBUTES: TRANSIENT, REUSABLE * 00390000 * /* * 00400000 * /******************************************************************** 00410000 * PROC(X) OPTIONS(DONTSAVE(15)); 00420000 LCLA &T,&SPN 0002 00430000 .@001 ANOP 0002 00440000 IFDOLT13 CSECT , 0002 00450000 ST @E,12(0,@D) 0002 00460000 STM @0,@C,20(@D) 0002 00470000 BALR @B,0 0002 00480000 @PSTART DS 0H 0002 00490000 USING @PSTART+00000,@B 0002 00500000 ST @D,@SAV001+4 0002 00510000 LA @F,@SAV001 0002 00520000 ST @F,8(0,@D) 0002 00530000 LR @D,@F 0002 00540000 * GEN (USING CHASCT,2); 00550000 USING CHASCT,2 00560000 DS 0H 00570000 * GENERATE DATA; 00580000 * RESTRICT(2,5); /* REGISTERS USED BY PROGRAM * 00590000 * DCL R0 REG(0) PTR; 00600000 * DCL R1 REG(1) PTR; /* ADDRESS OF PARAMETER LIST * 00610000 * DCL R5 REG(5) PTR; /* ADDRESS OF IN MSG. * 00620000 * DCL R14 REG(14) PTR; /* RETURN REGISTER * 00630000 * DCL R15 REG(15) PTR; /* RETURN CODE REGISTER * 00640000 * GEN(EJECT); 00650000 EJECT 00660000 DS 0H 00670000 * /************************************************************ 00680000 * /* THE FOLLOWING MAP DESCRIBES THE PARAMETER LIST PASSED * 00690000 * /* TO IFDOLT13. REGISTER 1 WILL CONTAIN THE LIST ADDRESS. * 00700000 * /************************************************************ 00710000 * DECLARE 00720000 * 1 * BASED(R1), 00730000 * 2 OUTMSGAD PTR, /* ADDRESS OF OUT MESSAGE * 00740000 * 2 OUTCNTAD PTR, /* ADDRESS OF OUT MESSAGE * 00750000 * /* COUNT * 00760000 * 2 INMSGAD PTR, /* ADDRESS OF IN MESSAGE * 00770000 * 2 INCNTAD PTR; /* ADDRESS OF IN MESSAGE * 00780000 * /* COUNT * 00790000 * GEN(EJECT); 00800000 EJECT 00810000 DS 0H 00820000 * /************************************************************ 00830000 * /* THE FOLLOWING MAPS DESCRIBE THE AREAS USED DURING THE * 00840000 * /* PROCESSING OF MESSAGES. * 00850000 * /************************************************************ 00860000 * DCL OUTCNT CHAR(1) BASED(OUTCNTAD); /* OUT MESSAGE COUNT * 00870000 * DCL INCNT CHAR(1) BASED(INCNTAD); /* IN MESSAGE COUNT * 00880000 * DCL OUTMSG CHAR(61) BASED(OUTMSGAD); /* OUT MESSAGE * 00890000 * DCL INBUFR CHAR(72) GENERATED; /* WTOR REPLY BUFFER * 00900000 * DCL ECB13 FIXED INIT(0); /* ECB USED BY WTOR AND WAIT * 00910000 * DCL IFDMSG13 EXT ENTRY; /* IFDOLT13'S MESSAGE MODULE * 00920000 * DCL MSGMOD13 PTR INIT(ADDR(IFDMSG13)); /* ADDRESS OF * 00930000 * /* IFDMSG13 * 00940000 * /* THE FOLLOWING BITS ARE OLTEP'S ROUTING & DESCRIPTOR CODES * 00950000 * DCL ROUTCD BIT(32) INIT('00000010000000000000000001000000'B); 00960000 * GEN(EJECT); 00970000 EJECT 00980000 DS 0H 00990000 * /************************************************************ 01000000 * /* THE FOLLOWING MAP DESCRIBES THE POINTERS TO THE LIST * 01010000 * /* FORM OF MESSAGES IN MODULE IFDMSG13. * 01020000 * /************************************************************ 01030000 * DECLARE 01040000 * 1 * BASED(MSGMOD13), 01050000 * 2 WTOPTR PTR, /* ADDRESS OF WTO IFD100I * 01060000 * 2 WTORPTR PTR; /* ADDRESS OF WTOR IFD101D * 01070000 * GEN(EJECT); 01080000 EJECT 01090000 DS 0H 01100000 * /************************************************************ 01110000 * /* THE FOLLOWING MAP DESCRIBES THE AREAS CONTAINED WITHIN * 01120000 * /* THE LIST FORM OF THE MESSAGES IN MODULE IFDMSG13. * 01130000 * /************************************************************ 01140000 * DECLARE 01150000 * 1 * BASED(WTOPTR), /* LIST FORM OF WTO * 01160000 * 2 WTOLEN PTR(15), /* MESSAGE LENGTH * 01170000 * 2 * CHAR(10), /* MESSAGE ID * 01180000 * 2 MSAGE CHAR(63); /* MESSAGE AREA * 01190000 * DECLARE 01200000 * 1 * BASED(WTORPTR), /* LIST FORM OF WTOR * 01210000 * 2 REPLYCNT CHAR(1), /* WTOR REPLY COUNT * 01220000 * 2 INBUFRAD PTR(24), /* ADDRESS OF REPLY BUFFER * 01230000 * 2 ECB13ADR PTR, /* ADDRESS OF WTOR ECB * 01240000 * 2 WTORLEN PTR(15), /* MESSAGE LENGTH * 01250000 * 2 * CHAR(10), /* MESSAGE ID * 01260000 * 2 WRMSAGE CHAR(63); /* WTOR MESSAGE AREA * 01270000 * DCL OLTBUF CHAR(61) BASED(R5); /* OLT REPLY BUFFER * 01280000 * DCL OUTCNT13 CHAR(1); /* THE OUT MESSAGE LENGTH * 01290000 * DCL INCNT13 CHAR(1); /* THE IN MESSAGE LENGTH * 01300000 * DCL PTCHAREA CHAR(28); /* IFDOLT13 PATCH AREA * 01310000 * GEN(EJECT); 01320000 EJECT 01330000 DS 0H 01340000 * /************************************************************ 01350000 * /* THE FOLLOWING CODE WILL PERFORM THE FUNCTIONS PROVIDED * 01360000 * /* BY CECOM (IFDOLT13). * 01370000 * /************************************************************ 01380000 * IF OUTCNT = '00'X THEN /* IF COUNT IS ZERO * 01390000 L @3,4(0,@1) 0032 01400000 CLI 0(@3),X'00' 0032 01410000 BC 07,@9FF 0032 01420000 * DO; /* DO THE FOLLOWING: * 01430000 * OUTCNT13 = '01'X; /* SET COUNT TO 1 * 01440000 MVI OUTCNT13,X'01' 0034 01450000 * GO TO CHKWTOR; /* BRANCH TO WTOR CHECK * 01460000 BC 15,CHKWTOR 0035 01470000 * END; /* END OUT COUNT TEST * 01480000 * IF OUTCNT > '3D'X THEN /* SET LIMIT ON LENGTH OF * 01490000 @9FF L @3,4(0,@1) 0037 01500000 CLI 0(@3),X'3D' 0037 01510000 BC 12,@9FE 0037 01520000 * OUTCNT13 = '3D'X; /* OUT MESSAGE TO 61 * 01530000 MVI OUTCNT13,X'3D' 0038 01540000 BC 15,@9FD 0039 01550000 * ELSE /* HONOR ALL REQUESTS THAT * 01560000 * OUTCNT13 = OUTCNT; /* ARE LESS THAN 61 * 01570000 @9FE MVC OUTCNT13(1),0(@3) 0039 01580000 * CHKWTOR: 01590000 * IF R0 = '000001E6'X THEN /* IF TWO-WAY COMMUNICATIONS * 01600000 @9FD EQU * 0040 01610000 CHKWTOR C @0,@X4 0040 01620000 * GO TO SETWTO; /* IS NOT REQUESTED BRANCH * 01630000 BC 08,SETWTO 0041 01640000 * /* TO SETUP FOR ONE-WAY * 01650000 * /* COMMUNICATIONS. * 01660000 * ELSE /* ELSE-SETUP FOR TWO-WAY * 01670000 * DO; /* COMMUNICATIONS. * 01680000 * R5 = INMSGAD; /* SET REG 5 TO OLTBUF ADDR * 01690000 L @5,8(0,@1) 0043 01700000 * IF INCNT = '00'X THEN /* IF REPLY COUNT IS ZERO * 01710000 L @3,12(0,@1) 0044 01720000 CLI 0(@3),X'00' 0044 01730000 BC 07,@9FC 0044 01740000 * DO; /* DO THE FOLLOWING: * 01750000 * INCNT13 = '01'X; /* SET CECOM IN COUNT TO 1 * 01760000 MVI INCNT13,X'01' 0046 01770000 * REPLYCNT = '01'X; /* SET WTOR REPLY COUNT TO 1 * 01780000 L @4,MSGMOD13 0047 01790000 L @4,4(0,@4) A00001 0047 01800000 MVI 0(@4),X'01' 0047 01810000 * GO TO SETUP; /* BRANCH TO SETUP * 01820000 BC 15,SETUP 0048 01830000 * END; /* END OF COUNT ZERO CHECK * 01840000 * IF INCNT > '3D'X THEN /* SET LIMIT OF REPLY LENGTH * 01850000 @9FC L @3,12(0,@1) 0050 01860000 CLI 0(@3),X'3D' 0050 01870000 BC 12,@9FB 0050 01880000 * DO; /* TO 61 * 01890000 * REPLYCNT = '3D'X; /* SET REPLY LENGTH IN WTOR * 01900000 L @4,MSGMOD13 0052 01910000 L @4,4(0,@4) A00001 0052 01920000 MVI 0(@4),X'3D' 0052 01930000 * /* PARAMETER LIST * 01940000 * INCNT13 = '3D'X; /* RECORD LENGTH IN CECOM. * 01950000 MVI INCNT13,X'3D' 0053 01960000 BC 15,@9FA 0055 01970000 * END; 01980000 * ELSE /* ELSE- SET REPLY LENGTH IN * 01990000 * DO; /* WTOR PARAMETER LIST TO * 02000000 * INCNT13 = INCNT; /* REQUESTED LENGTH, AND * 02010000 @9FB L @3,12(0,@1) 0056 02020000 MVC INCNT13(1),0(@3) 0056 02030000 * REPLYCNT = INCNT; /* RECORD LENGTH IN CECOM. * 02040000 L @4,MSGMOD13 0057 02050000 L @4,4(0,@4) A00001 0057 02060000 MVC 0(1,@4),0(@3) 0057 02070000 * END; 02080000 * END; 02090000 @9FA EQU * 0059 02100000 * SETUP: 02110000 * ECB13ADR = ADDR(ECB13); /* SET WTOR PARAMETER LIST * 02120000 SETUP LA @F,ECB13 0060 02130000 L @3,MSGMOD13 0060 02140000 L @3,4(0,@3) A00001 0060 02150000 ST @F,4(0,@3) 0060 02160000 * /* ECB ADDRESS * 02170000 * INBUFRAD = ADDR(INBUFR); /* SET WTOR PARAMETER LIST * 02180000 LA @F,INBUFR 0061 02190000 ST @F,@TEMP4 0061 02200000 MVC 1(3,@3),@TEMP4+1 0061 02210000 * /* REPLY BUFFER ADDRESS * 02220000 * WRMSAGE(1:OUTCNT13) = OUTMSG(1:OUTCNT13); /* MOVE WTOR * 02230000 L @4,0(0,@1) 0062 02240000 LR @E,@4 0062 02250000 SR @C,@C 0062 02260000 IC @C,OUTCNT13 0062 02270000 BCTR @C,0 0062 02280000 LA @A,20(0,@3) 0062 02290000 EX @C,@MVC 0062 02300000 * /* MESSAGE INTO WTOR LIST * 02310000 * WRMSAGE(OUTCNT13+1:OUTCNT13+5)=ROUTCD; /* SET ROUT & DESC * 02320000 LA @E,ROUTCD 0063 02330000 LA @C,5 0063 02340000 SR @0,@0 0063 02350000 IC @0,OUTCNT13 0063 02360000 AR @C,@0 0063 02370000 LA @8,1 0063 02380000 IC @0,OUTCNT13 0063 02390000 AR @8,@0 0063 02400000 SR @C,@8 0063 02410000 LA @A,19(@8,@3) 0063 02420000 EX @C,@MVC 0063 02430000 * WTORLEN = OUTCNT13 + 12; /* SET WTOR OUT MESSAGE LEN. * 02440000 LA @F,12 0064 02450000 IC @0,OUTCNT13 0064 02460000 AR @F,@0 0064 02470000 STH @F,8(0,@3) 0064 02480000 * INBUFR = INBUFR && INBUFR; /* SET REPLY BUFFER TO ZERO * 02490000 XC INBUFR(72),INBUFR 0065 02500000 * ECB13 = 0 ; /* SET ECB TO ZERO * 02510000 SR @F,@F 0066 02520000 ST @F,ECB13 0066 02530000 * R1 = WTORPTR; /* SET REG.1 TO ADDRESS OF * 02540000 L @9,MSGMOD13 0067 02550000 L @1,4(0,@9) 0067 02560000 * /* WTOR * 02570000 * GEN( PWTOR REG=(1),WAIT=YES); /* INVOKE PARALLEL PRINT ROUTINE * 02580000 PWTOR REG=(1),WAIT=YES 02590000 DS 0H 02600000 * OLTBUF(1:INCNT13) = INBUFR(1:INCNT13); /* MOVE REPLY TO * 02610000 LA @E,INBUFR 0069 02620000 SR @4,@4 0069 02630000 IC @4,INCNT13 0069 02640000 BCTR @4,0 0069 02650000 LR @A,@5 0069 02660000 EX @4,@MVC 0069 02670000 * /* OLT AREA * 02680000 * GO TO FINISH; /* BRANCH TO END ROUTINE * 02690000 BC 15,FINISH 0070 02700000 * GEN(EJECT); 02710000 EJECT 02720000 DS 0H 02730000 * /************************************************************ 02740000 * /* THE FOLLOWING CODE WILL PROVIDE ONE-WAY COMMUNICATION. * 02750000 * /************************************************************ 02760000 * SETWTO: 02770000 * WTOLEN = OUTCNT13 + 12 ; /* SET OUT MESSAGE LENGTH IN * 02780000 SETWTO LA @F,12 0072 02790000 SR @0,@0 0072 02800000 IC @0,OUTCNT13 0072 02810000 AR @F,@0 0072 02820000 L @3,MSGMOD13 0072 02830000 L @3,0(0,@3) A00001 0072 02840000 STH @F,0(0,@3) 0072 02850000 * /* WTO PARAMETER LIST * 02860000 * MSAGE(1:OUTCNT13) = OUTMSG(1:OUTCNT13); /* MOVE OUT MESSAGE* 02870000 L @4,0(0,@1) 0073 02880000 LR @E,@4 0073 02890000 SR @C,@C 0073 02900000 IC @C,OUTCNT13 0073 02910000 BCTR @C,0 0073 02920000 LA @A,12(0,@3) 0073 02930000 EX @C,@MVC 0073 02940000 * /* INTO WTO PARAMETER LIST * 02950000 * MSAGE(OUTCNT13+1:OUTCNT13+5)=ROUTCD; /* SET ROUT & DESC * 02960000 LA @E,ROUTCD 0074 02970000 LA @C,5 0074 02980000 IC @0,OUTCNT13 0074 02990000 AR @C,@0 0074 03000000 LA @8,1 0074 03010000 IC @0,OUTCNT13 0074 03020000 AR @8,@0 0074 03030000 SR @C,@8 0074 03040000 LA @A,11(@8,@3) 0074 03050000 EX @C,@MVC 0074 03060000 * R1 = WTOPTR; /* SET REG.1 TO WTO ADDRESS * 03070000 L @9,MSGMOD13 0075 03080000 L @1,0(0,@9) 0075 03090000 * GEN( PWTO REG=(1)); /* INVOKE PARALLEL PRINT ROUTINE * 03100000 PWTO REG=(1) 03110000 DS 0H 03120000 * FINISH: /* END ROUTINE * 03130000 * R15 = '00'X; /* SET REG.15 TO ZERO * 03140000 FINISH LA @F,X'00' 0077 03150000 * RETURN; /* RETURN TO CALLER * 03160000 * END IFDOLT13; /* END OF IFDOLT13 MODULE * 03170000 @EL01 L @D,4(0,@D) 0079 03180000 L @E,12(0,@D) 0079 03190000 LM @0,@C,20(@D) 0079 03200000 BCR 15,@E 0079 03210000 @DATA1 EQU * 03220000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 03230000 @1 EQU 01 03240000 @2 EQU 02 03250000 @3 EQU 03 03260000 @4 EQU 04 03270000 @5 EQU 05 03280000 @6 EQU 06 03290000 @7 EQU 07 03300000 @8 EQU 08 03310000 @9 EQU 09 03320000 @A EQU 10 03330000 @B EQU 11 03340000 @C EQU 12 03350000 @D EQU 13 03360000 @E EQU 14 03370000 @F EQU 15 03380000 @MVC MVC 0(1,@A),0(@E) 03390000 DS 0F 03400000 @X4 DC X'000001E6' 03410000 DS 0D 03420000 @DATA EQU * 03430000 @SAV001 EQU @DATA+00000000 72 BYTE(S) ON WORD 03440000 X EQU 00000000 FULLWORD INTEGER 03450000 R0 EQU 00000000 FULLWORD POINTER REGISTER 03460000 R1 EQU 00000001 FULLWORD POINTER REGISTER 03470000 R5 EQU 00000005 FULLWORD POINTER REGISTER 03480000 R14 EQU 00000014 FULLWORD POINTER REGISTER 03490000 R15 EQU 00000015 FULLWORD POINTER REGISTER 03500000 A00000 EQU 00000000 16 BYTE(S) ON WORD 03510000 OUTMSGAD EQU A00000+00000000 FULLWORD POINTER 03520000 OUTCNTAD EQU A00000+00000004 FULLWORD POINTER 03530000 INMSGAD EQU A00000+00000008 FULLWORD POINTER 03540000 INCNTAD EQU A00000+00000012 FULLWORD POINTER 03550000 OUTCNT EQU 00000000 1 BYTE(S) 03560000 INCNT EQU 00000000 1 BYTE(S) 03570000 OUTMSG EQU 00000000 61 BYTE(S) 03580000 ORG @DATA+00000072 03590000 ECB13 EQU * FULLWORD INTEGER 03600000 DC FL4'0' 03610000 MSGMOD13 EQU * FULLWORD POINTER 03620000 DC VL4(IFDMSG13) 03630000 ROUTCD EQU * 32 BIT(S) ON BYTE 03640000 DC B'00000010000000000000000001000000' 03650000 A00001 EQU 00000000 8 BYTE(S) ON WORD 03660000 WTOPTR EQU A00001+00000000 FULLWORD POINTER 03670000 WTORPTR EQU A00001+00000004 FULLWORD POINTER 03680000 A00002 EQU 00000000 75 BYTE(S) ON WORD 03690000 WTOLEN EQU A00002+00000000 HALFWORD POINTER 03700000 A00003 EQU A00002+00000002 10 BYTE(S) 03710000 MSAGE EQU A00002+00000012 63 BYTE(S) 03720000 A00004 EQU 00000000 83 BYTE(S) ON WORD 03730000 REPLYCNT EQU A00004+00000000 1 BYTE(S) 03740000 INBUFRAD EQU A00004+00000001 3 BYTE POINTER ON WORD+1 03750000 ECB13ADR EQU A00004+00000004 FULLWORD POINTER 03760000 WTORLEN EQU A00004+00000008 HALFWORD POINTER 03770000 A00005 EQU A00004+00000010 10 BYTE(S) 03780000 WRMSAGE EQU A00004+00000020 63 BYTE(S) 03790000 OLTBUF EQU 00000000 61 BYTE(S) 03800000 OUTCNT13 EQU @DATA+00000084 1 BYTE(S) 03810000 INCNT13 EQU @DATA+00000085 1 BYTE(S) 03820000 PTCHAREA EQU @DATA+00000086 28 BYTE(S) 03830000 ORG @DATA 03840000 DS 00000114C 03850000 @TEMPS DS 0F 03860000 @TEMP4 DC F'0' 03870000 DSECT13 IFDCOM 03880000 @DATEND EQU * 03890000 END IFDOLT13 03900000 ./ ADD SSI=03010351,NAME=IFDOLT14,SOURCE=0 * COPY 00050021 TITLE 'IFDOLT14 SCAN, HEADER AND DESCRIPTION LINE SECTIONS' 00200020 ****************************** PROLOGUE ******************************* 00400020 * * 00600020 * TITLE: SCAN, HEADER AND DESCRIPTION LINES SECTION * 00800020 * * 01000020 * STATUS: CHANGE LEVEL - 001 * 01200021 * * 01400020 * FUNCTION: THIS MODULE IS DESIGNED AS FOLLOWS: * 01600020 * * 01800020 * SCAN SECTION * 02000020 * 1) DPRINT OPTIONS CHECKED; ALSO FIRST ERROR AND * 02200020 * CATASTROPHIC ERROR CONDITIONS. * 02400020 * 2) FORMS CONTROL SETUP * 02600020 * 3) SCAN DPRINT CONTROL WORD AND CALL DPRINT MODULES * 02800020 * REQUIRED FOR UNIT TEST ERROR PRINTOUT. * 03000020 * 4) PRINT FIRST ERROR OR CATASTROPHIC ERROR MESSAGE * 03200020 * * 03400020 * HEADER, DESCRIPTION SECTION * 03600020 * 1) SETUP HEADER LINE FOR PRINT * 03800020 * 2) SETUP DESCRIPTION LINES FOR PRINT * 04000020 * * 04200020 * ENTRY POINT: IFDOLT14 * 04400020 * * 04600020 * INPUTS: DPRINT PARAMETER LISTS * 04800020 * * 05000020 * REGISTER USAGE: R1 - ADDRESS OF DPRINT PARAMETERS * 05200020 * R2 - ADDRESS OF SECTION CTRL TABLE IN OLTEP ROOT * 05400020 * R3 - BASE REG FOR UNIT TEST SECTION PREFACE * 05600020 * R4 - BASE REG FOR THIS MODULE * 05800020 * R5-R11 - MISC. * 06000020 * R12 - ADDRESS OF DPRINT PARAMETER CTRL WORD * 06200020 * R13 - ADDRESS OF CALLERS SAVE AREA; CONVERT ADDR * 06400020 * R14 - ADDRESS OF CALLERS RETURN PT; CONVERT ADDR * 06600020 * R15 - LINK ADDR; CONVERT COUNT; RETURN CODE * 06800020 * * 07000020 * EXTERNAL ROUTINES: IFDOLT39- PARALLEL PRINT OUTPUT WRITER * 07200020 * * 07400020 * EXITS - NORMAL: RETURN TO ENTRY-EXIT SECTION OF IFDOLT39 * 07600020 * ERROR: NONE * 07800020 * * 08000020 * ATTRIBUTES: SERIALLY REUSABLE * 08200020 * * 08400020 *********************************************************************** 08600020 * CHANGE 03/71 - HANDLING OF EP/NEP,FE/NFE,ETC PARAMETERS * 08630021 * - CHAIN=YES SUPPORT * 08660021 * - SPACE BETWEEN OLT DPRINTS * 08690021 * - SYMBOLIC NAME IN HEADER * 08720021 *********************************************************************** 08750021 EJECT 08800020 IFDOLT14 CSECT 09000020 *A646000 A52641 09060021 *SA60982 FIX TO SAVE RTN CODE FROM IFDOLT15 AND 17 SA60982 09110000 * TO FIX ABEND DUE TO FE OPTION,ERROR DPRINT W/O HEADER * 09120021 SPACE 09200020 USING IFDOLT14,R4 HEADER MODULE BASE REG 09400020 USING CHASCT,R2 09600020 USING RTN#,R3 BASE REG FOR SECTION PREFACE 09800020 SPACE 10000020 R1 EQU 1 10200020 R2 EQU 2 10400020 R3 EQU 3 10600020 R4 EQU 4 10800020 R5 EQU 5 11000020 R6 EQU 6 11200020 R7 EQU 7 11400020 R8 EQU 8 11600020 R9 EQU 9 11800020 R10 EQU 10 12000020 R11 EQU 11 12200020 R12 EQU 12 12400020 R13 EQU 13 12600020 R14 EQU 14 12800020 R15 EQU 15 13000020 WTOFLG EQU X'01' 13200020 RSTRFLG EQU X'80' 13400020 WRTFLG EQU X'10' 13600020 NFEFLG EQU X'08' 13800020 DPRFLG EQU X'40' 14000020 HDRFLG EQU X'80' 14200020 FERINT EQU X'02' 14400020 NDRFLG EQU X'04' 14600020 FFEFLG EQU X'20' 14800020 FCEFLG EQU X'10' 15000020 PFEMSG EQU X'08' 15200020 PCEMSG EQU X'04' 15400020 NPROPT EQU X'04' 15600020 NEPOPT EQU X'04' 15800020 SYMNAME EQU X'08' 15860021 SYMBFLG EQU X'02' 15920021 EJECT 16000020 *********************************************************************** 16200020 * SCAN DPRINT PARAMETERS * 16400020 *********************************************************************** 16600020 SPACE 16800020 STM R14,R12,12(R13) SAVE CALLER'S REGS 17000020 LR R4,R15 LOAD BASE REG 17200020 L R3,SECPTR BASE REG FOR UNIT TEST SECT PREF. 17400020 AH R3,10(R3) ADD DISPLACEMENT FOR RTN# ADDR 17600020 LA R5,SHDSA ADDRESS OF MODULE REG SAVE AREA 17800020 ST R5,8(R13) STORE IT IN CALLER'S SA 18000020 ST R13,4(R5) STORE ADDR OF CALLER'S SA 18200020 L R1,4(R1) DPRINT PARAMETER ADDRESS M4506 18400020 ST R1,SAVER1 SAVE IT 18600020 SPACE 18800020 XC DPRTRNCD(4),DPRTRNCD CLEAR RETURN CODE WORD 19000020 CLI 1(R1),X'03' MACRO LEVEL OK? 19200021 BNH DPRSCAN YES. 19400021 MVI DPRTRNCD+3,X'04' NO. SET RETURN CODE TO 04 19600020 B DPR111A RETURN VIA COMM INTERVAL RTN 19800021 SPACE 20000020 DPRSCAN L R12,4(R1) DPRINT CONTROL WORD ADDR 20200020 MVI PRTBUFR+1,C' ' FILL PRINT BUFFER WITH BLANKS 20400020 MVC PRTBUFR+2(120),PRTBUFR+1 20600020 SPACE 20800020 * CHECK DPRINT OPTIONS; FIRST ERROR, CATASTROPHIC ERROR CONDITIONS. 21000020 SPACE 21200020 DPR100 TM 0(R12),X'02' ERROR DPRINT REQUESTED 21400021 BZ DPR100A NO. BRANCH 21600021 OI CHASCT+3,X'C0' YES. SET TEST ERR, ASTERIK BITS 21800021 DPR100A TM CHASCT+3,X'03' ERROR LOOP OR TEST LOOP REQUESTED 22000021 BZ DPR100B NO. BR IF BOTH OFF 22200021 TM CHASCT+2,NPROPT YES. PRINT OPTION ON 22400021 BZ DPR113 NO. BYPASS PRINT 22600021 SPACE 22800021 DPR100B TM 0(R12),X'02' ERROR DPRINT REQUESTED 23000021 BZ DPR101 NO. CONTINUE 23200021 TM CHASCT+3,X'20' YES. CATASTROPHIC ERROR BIT ON 23400021 BZ DPR100C NO. BRANCH 23600021 TM CESWT5,FCEFLG YES. FIRST CAT ERROR FLAG ON 23800021 BNZ DPR100C YES. BRANCH 24000021 OI CESWT5,FCEFLG NO. SET IT ON 24200021 OI CESWT5,PCEMSG TURN ON PRINT CAT ERR MSG FLAG 24400021 SPACE 24600021 DPR100C TM CHASCT+2,X'01' FE COMM OPTION ON 24800021 BNZ DPR100D YES. BRANCH 25000021 TM CHASCT+3,NEPOPT NO. ERROR PRINT OPTION ON 25200021 BZ DPR101 YES. CONTINUE 25400021 B DPR100E BRANCH 21937 25500021 DPR100D TM CESWT5,FFEFLG FIRST FE FLAG 25600021 BNZ DPR100E YES. BRANCH 25800021 OI CESWT5,FFEFLG NO. SET IT ON 26000021 OI CESWT5,PFEMSG TURN ON PRINT FE MSG FLAG 26200021 DPR100E TM CHASCT+3,NEPOPT ERROR PRINT OPTION ON 26400021 BZ DPR101 YES. BRANCH 26600021 TM CESWT5,PFEMSG+PCEMSG NO. PRINT FE OR CAT ERR MSG. 26800021 BZ DPR113 27000021 SPACE 27600020 * FORMS CONTROL SETUP 27800020 SPACE 28000020 DPR101 SR R8,R8 CLEAR R8 28200020 IC R8,0(R12) GET FORMS CONTROL BITS 28400020 SRL R8,5 SHIFT BITS 28600020 XC FORMS(2),FORMS CLEAR 28800020 STC R8,FORMS STORE FORMS CONTROL 29000020 CLI FORMS,X'05' RESTORE PAGE ? 29200020 BE DPR110C YES. 29400020 MVI PRTBUFR,X'09' NO. LOAD CTRL CHARC-SPACE 1 LINE 29600020 SPACE 29800020 * CHECK DPRINT CONTROL WORD FOR ACTIVE PARAMETERS 30000020 SPACE 30200020 DPR106 TM 0(R12),X'10' PRINT HEADER LINE 30400020 BZ DPR107 NO. 30600020 BAL R14,DPRHDR YES. HEADER SECTION 30800020 B DPR108 BRANCH TO CHECK RSLTS PRINTOUT 31000020 SPACE 31200020 * TEST FOR DESCRIPTION LINES PRINT 31400020 SPACE 31600020 DPR107 TM 2(R12),X'80' PRINT DESCRIPTION LINES 31800020 BZ DPR108 NO. 32000020 BAL R14,DPR030 YES. DESCRIPTION SECTION 32200020 SPACE 32400021 * TEST FOR RESULTS PRINT 32800020 SPACE 33000020 DPR108 LA R13,SHDSA SAVE AREA ADDRESS M4506 33200020 TM 2(R12),X'7F' PRINT RESULTS M4506 33400020 BZ DPR109 NO PRINT M4506 33600020 B DPR109A PRINT M4506 33800020 DPR109 TM 3(R12),X'EC' PRINT DATA, CC M4506 34000020 BZ DPR110 NO PRINT M4506 34200020 DPR109A BAL R9,DPRCL15 CALL MODULE ROUTINE M4506 34400020 CLI DPRTRNCD+3,X'00' ANY RETURN CODE ALREADY SET? 34600021 BNE DPR109B YES. BYPASS STORE 34800021 STC R15,DPRTRNCD+3 NO. STORE IT 35000021 DPR109B OI CESWT3,X'08' SUSPEND DELETION M4506 35200020 BAL R9,DPRCL15 CALL MODULE ROUTINE M4506 35400020 B DPR110 M4506 35600020 DPRCL15 IFDMOD CALL='15',LIST=SAVER1 M4506 35800020 BCR 15,R9 RETURN M4506 36000020 DPRCL17 IFDMOD CALL='17',LIST=SAVER1 M4506 36200020 BCR 15,R9 RETURN SA60982 36400000 SPACE 36600021 * TEST FOR MESSAGE LINES PRINT 37000020 SPACE 37200020 DPR110 TM 1(R12),X'01' PRINT MESSAGES 37400020 BZ DPR110A NO. 37600020 LA R13,SHDSA SAVE AREA ADDRESS 37800020 BAL R9,DPRCL17 CALL MODULE ROUTINE M4506 38000020 LTR R15,R15 CHECK RET CODE FOR ZERO SA60982 38150000 BZ DPR110X IF ZERO BYPASS SAVEING IT SA60982 38160000 ST R15,DPRTRNCD SAVE RET CODE SA60982 38170000 DPR110X OI CESWT3,X'08' SUSPEND DELETION SA60982 38200000 BAL R9,DPRCL17 CALL MODULE ROUTINE M4506 38400020 SPACE 38600020 * FORMS CONTROL- SPACE 2, 3 LINES, OR RESTORE PAGE. 38800020 SPACE 39000020 DPR110A CLI FORMS,X'04' PRINT RESTORE ? 39200020 BE DPR110C YES. 39400020 CLI FORMS,X'02' NO. SPACE 2 LINES ? 39600020 BNE DPR110B NO. 39800020 MVI PRTBUFR,X'09' YES. LOAD CTRL CHARC FOR 1 LINE 40000020 B DPR110D 40200020 DPR110B CLI FORMS,X'03' SPACE 3 LINES ? 40400020 BNE DPR111 NO. 40600020 MVI PRTBUFR,X'11' YES. LOAD CTRL CHARC FOR 2 LINES 40800020 B DPR110D 41000020 DPR110C MVI PRTBUFR,X'8B' RESTORE PAGR CTRL CHARC 41200020 OI CESWT4,RSTRFLG 41400020 DPR110D LA R13,SHDSA SAVE AREA ADDRESS 41600020 PWRT SIZE=70 RESTORE PAGE 41800020 MVI PRTBUFR,X'09' DEFAULT TO SPACE 1 LINE 42000020 CLI FORMS,X'05' RESTORE PAGE OP ? 42200020 BE DPR113 YES. TO EXIT ROUTINE 42400020 SPACE 2 42600021 *********************************************************************** 43000020 * FIRST ERROR, CATASTROPHIC ERROR MESSAGES OUTPUT * 43200020 *********************************************************************** 43400020 SPACE 43600020 DPR111 TM 0(R12),X'08' DPRINT CHAINING REQUESTED 43800021 BO DPR113 YES. 43860021 TM 0(R12),X'02' NO. IS IT AN ERROR DPRINT M2374 43862021 BZ DPR113 BRANCH IF NOT M2374 43864021 TM CESWT5,PFEMSG+PCEMSG PRINT FIRST ERR OR CAT ERR MSG? X43867021 21051 43874021 BZ DPR113 NO. 21051 43881021 TM 0(R12),X'10' YES. HAS HEADER BEEN PRINTED? 21051 43888021 BO DPR111A YES. 21051 43895021 BAL R9,DPR010 NO. USE HDR RTN TO GET DEVADR, ETC. X43902021 21051 43909021 DPR111A TM CESWT5,PFEMSG NO. PRINT FIRST ERROR MSG 43920021 BO DPR117 YES. GO PRINT IT 44000020 DPR112 TM CESWT5,PCEMSG NO. PRINT FIRST CAT ERROR MSG 44200020 BO DPR118 YES. GO PRINT IT. 44400020 SPACE 44800020 * RETURN TO ENTRY-EXIT ROOT SECTION 45000020 SPACE 45200020 DPR113 L R13,SHDSA+4 ADDRESS OF CALLER'S SA 45400020 MVC 16(4,R13),DPRTRNCD RETURN CODE IN R15 SAVE AREA 45600020 LM R14,R12,12(R13) RESTORE REGS 45800020 BR R14 RETURN TO ENTRY-EXIT DPRINT ROOT 46000020 SPACE 46200020 * INITIATE FIRST ERROR COMMUNICATION MESSAGE 46400020 SPACE 46600020 DPR117 LA R1,IFDMSG14 MESSAGE TABLE ADDRESS 46800020 L R1,0*4(R1) GET MESSAGE ADDRESS 47000020 L R7,SECPTR SECTION PREFACE POINTER 47200020 MVC 38(8,R1),0(R7) UNIT TEST ID 47400020 SPACE 47600020 MVC 47(3,R1),RTNNUM+1 ROUTINE NUMBER INTO MSG 47800021 MVC 56(4,R1),DEVADR DEVICE ADDR INTO MSG- EBCDIC 48800021 MVC 61(8,R1),SYMBNM SYMBOLIC NAME OR BLANKS 49800021 SPACE 51000020 LA R13,SHDSA SAVE AREA ADDRESS 51200020 PWTO REG=(1) WRITE TO OPERATOR MESSAGE 51400020 B DPR112 RETURN HERE 51600020 SPACE 51800021 * INITIATE CATASTROPHIC ERROR MESSAGE TO OPERATOR 52400020 SPACE 52600020 DPR118 LA R1,IFDMSG14 MESSAGE TABLE ADDRESS 52800021 L R1,1*4(R1) GET MESSAGE ADDRESS 53200021 MVC 41(4,R1),DEVADR DEVICE ADDRESS - EBCDIC 53600021 MVC 46(8,R1),SYMBNM SYMBOLIC NAME OR BLANKS 54000021 SPACE 54600020 LA R13,SHDSA SAVE AREA ADDRESS 54800020 PWTO REG=(1) WRITE TO OPERATOR MESSAGE 55000020 B DPR113 RETURN HERE 55200020 SPACE 55400020 CNOP 0,8 55600020 SHDSA DS 18F REGISTER SAVE AREA 55800020 CNOP 0,4 56000020 SAVER1 DC XL4'0' 56200020 RTNNUM DS CL4' ' ROUTINE NUMBER- EBCDIC 56250021 DEVADR DS CL4' ' DEVICE ADDRESS- EBCDIC 56300021 SYMBNM DS CL8' ' DEVICE SYMBOLIC NAME 56350021 DPRTRNCD DC XL4'0' RETURN CODE 56400020 FORMS DC XL2'0' FORMS CONTROL 56600020 SPACE 2 56800021 *********************************************************************** 57000020 * HEADER * 57200020 *********************************************************************** 57400020 SPACE 57600020 DPRHDR ST R14,SAVE14 SAVE LINK ADDRESS 57800020 L R12,4(R1) ADDRESS OF DPRINT CONTROL WORD 58000020 TM 0(R12),X'10' PRINT HEADER ? 58200020 BZ DPR030+4 NO 58400020 BAL R10,DPRWRT YES. PRINT BLANK LINE FOR SPACE 58600021 TM 0(R12),X'02' IS IT AN ERROR HEADER 58700021 BZ DPR010 NO 58800020 MVI PB,C'*' YES. PREFIX WITH '*' 59000020 OI 3(R2),X'C0' SET ERROR MSG BITS IN SCT 59100021 SPACE 59200020 * GET TEST SECTION ID, ROUTINE NO. FROM SECTION PREFACE. 59400020 SPACE 59600020 DPR010 L R7,SECPTR POINTER TO SECTION PREFACE 59800020 MVC PB+1(8),0(R7) UNIT TEST ID FROM SECT PREF 60000020 MVI PB+9,X'60' PUT DASH IN BUFFER 60200020 MVC PB+10(2),8(R7) ADD LEVEL TO IT 60400020 MVC PB+14(3),=C'RTN' PUT 'RTN' IN PRINT BUFFER 60600020 SR R7,R7 CLEAR R7. 60800020 IC R7,RTN# GET ROUTINE NUMBER. 61000020 CVD R7,WRK CONVERT TO DECIMAL. 61200020 SPACE 61400020 LA R13,WRK+6 GET ADDR OF RTN NO. 61600020 LA R14,WRK GET OUTPUT ADDR. 61800020 LA R15,2 GET COUNT 62000020 BAL R10,DPRCNV CONVERT RTN NO. TO EBCDIC. 62200020 MVC PB+18(3),WRK PUT RTN NUMBER IN PRINT BUFFER 62400020 MVC RTNNUM+1(3),WRK SAVE FOR FIRST ERR MSG 62500021 SPACE 62600020 * GET DEVICE ADDRESS FROM EITHER DPRINT PARAM TABLE, TECB, OR SCT. 62800020 SPACE 63000020 MVC PB+24(11),=C'DEV/LN NONE' PUT IN PRINT BUFFER 63200021 TM CESWT2,NDRFLG IS A DEVICE REQUESTED 63400020 BZ DPR011 YES 63600020 B DPR016 BRANCH TO BYPASS DEV ADDRESS LOAD 63800021 DPR011 MVC DPRDEVAD+2(2),9(R12) GET DEVICE ADDRESS PARAMETER 64200021 CLC DPRDEVAD+2(2),=X'0000' IS IT ZERO 64400021 BNE DPR015 BRANCH IF NO 64600021 L R1,SAVER1 GET PARM LIST ADDR A52641 64700021 SPACE 64800020 L R13,12(R1) GET TECB ADDRESS. 65000020 LTR R13,R13 IS A TECB ADDRESS SUPPLIED ? 65200020 BZ DPR012 NO. GET ADDRESS FROM SCT 65400020 CLI 7(R13),X'00' YES. IS THERE A POSTED EVENT FIELD 65600020 BE DPR012 NO. 65800020 MVC DPRDEVAD+1(3),9(R13) GET DEV ADDR FROM TECB 66000021 B DPR015 66200020 DPR012 MVC DPRDEVAD(4),CHASCT+12 GET PRIME DEV ADDR FROM SCT 66400021 SPACE 66600020 DPR015 LA R13,DPRDEVAD+2 INPUT ADDRESS FOR CONVERT 66800021 LA R14,PB+31 OUTPUT ADDRESS FOR CONVERT 66900021 LA R15,2 GET COUNT. 67000020 BAL R10,DPRCNV CONVERT DEV ADDR TO EBCDIC. 67200020 CLC DPRDEVAD(4),CHASCT+12 SAME DEV AS IN SCT? 67400021 BNE DPR016 NO. BYPASS SYMBOLIC NAME CHECK 67430021 TM CHASCT+11,SYMNAME YES. DEV SYMBOLIC NAME GIVEN? 67460021 BZ DPR016 NO. 67490021 MVC PB+36(8),CHASCT+24 YES. PUT IT IN PRINT BUFFER 67520021 MVC SYMBNM(8),CHASCT+24 SAVE FOR FIRST ERR, CAT ERR MSGS 67550021 OI CESWT5,SYMBFLG SYMBOLIC NAME FLAG 67580021 B DPR016A 67610021 DPR016 MVI SYMBNM,C' ' CLEAR WITH BLANKS 67640021 MVC SYMBNM+1(7),SYMBNM 67670021 DPR016A MVC DEVADR(4),PB+31 SAVE DEV ADDR FOR FE, CAT ERR MSGS 67700021 TM 0(R12),X'10' REGULAR PRINT HEADER ENTRY? 21051 67706021 BO DPR020 YES. 21051 67712021 BR R9 NO. RETURN TO FIRST ERROR MSG RTN. X67718021 21051 67724021 SPACE 67730021 * GET REFERENCE NO., ECA NO. FROM SECTION PREFACE. 67800020 SPACE 68000020 DPR020 LA R6,PB+3 GET PRINT BUFR ADDR FOR ADJUSTMENT 68200021 TM CESWT5,SYMBFLG IS SYMBOLIC NAME TO BE PRINTED 68250021 BZ DPR020A NO 68300021 LA R6,8(R6) YES. MOVE OVER ECA 68350021 DPR020A MVC 35(3,R6),=C'ECA' PUT 'ECA' IN PRINT BUFFER 68400021 MVC 39(3,R6),ECA# ALSO ECA NUMBER 68450021 SPACE 68500021 DPR023 TM 0(R12),X'01' IS REFNUM TO BE PRINTED 68600020 BZ DPR025 BRANCH IF NO 68800020 SPACE 69000020 MVC 44(6,R6),=C'REFNUM' PUT IN PRINT BUFFER 69200021 MVC WRK(1),REFNUM MOVE 1ST 2 DIGITS TO WORK AREA. 69400020 MVC WRK+1(2),7(R12) MOVE LAST 3 DIGITS TO WORK AREA 69600020 LA R13,WRK GET INPUT ADDR FOR CONVERT. 69800020 LA R14,WRK+8 GET OUTPUT ADDR FOR CONVERT. 70000020 LA R15,3 GET COUNT. 70200020 BAL R10,DPRCNV CONVERT REFNUM TO EBCDIC. 70400020 MVC 51(2,R6),WRK+8 PUT FIRST 2 DIGITD IN PRINT BUFFER 70600021 MVC 53(3,R6),WRK+11 PUT NEXT 3 DIGITS IN PRINT BUFFER 70800021 SPACE 71000020 DPR025 OI CESWT5,HDRFLG SET HEADER FLAG 71200020 BAL R10,DPRWRT PRINT HEADER LINE 71400020 NI CESWT5,255-HDRFLG RESET THIS FLAG 71600020 NI CESWT5,255-HDRFLG-SYMBFLG RESET THESE FLAGS 71700021 B DPR030+4 PRINT DESCRIPTION LINES 71800020 SPACE 2 72000020 *********************************************************************** 72200020 * DESCRIPTION * 72400020 *********************************************************************** 72600020 SPACE 72800020 DPR030 ST R14,SAVE14 SAVE LINK ADDR FOR RETURN 73000020 TM 2(R12),X'80' PRINT DESCRIPTION LINES? 73200020 BZ DPR041 NO. EXIT ROUTINE 73400020 SR R7,R7 YES. CLEAR R7 73600020 IC R7,16(R12) GET NUMBER OF DESC LINES 73800020 LTR R7,R7 NO. OF LINES = 0 ? 74000020 BZ DPR042 YES. EXIT RTN M2413 74200021 LA R11,60(R1) POINTER TO DESC LINE ADDRESS 74400020 LA R8,23(R12) ADDRESS OF BYTE COUNT 74600020 SPACE 74800020 DPR035 SR R6,R6 CLEAR R6. 75000020 IC R6,0(R8) GET COUNT. 75200020 LTR R6,R6 COUNT = 0 ? 75400020 BZ DPR040 BRANCH YES. 75600020 LH R5,MAXCNT GET MAX NO. BYTES ALLOWED. 75800020 CR R6,R5 COUNT GREATER THAN MAX ? 76000020 BNH DPR037 BRANCH IF NO. 76200020 LR R6,R5 SET COUNT TO MAX 76400020 SPACE 76600021 DPR037 L R5,0(R11) GET DESC LINE ADDR 77000020 BCTR R6,0 REDUCE COUNT FOR EXECUTE OF MVC. 77200020 EX R6,DPR605 MOVE DESC LINE TO PRINT BUFFER. 77400020 BAL R10,DPRWRT GO PRINT DESCRIPTION LINE 77600020 SPACE 77800020 DPR040 LA R11,4(R11) GET ADDR OF DESC LINE 2 ADDR. 78000020 LA R8,1(R8) GET NEXT COUNT ADDRESS M1010 78200020 BCT R7,DPR035 PROCESS LINE 2. 78400020 SPACE 78600020 DPR041 L R14,SAVE14 RESTORE LINK ADDRESS 78800020 BR R14 RETURN TO SCAN SECTION 79000020 DPR042 MVI DPRTRNCD+3,X'0C' SET RETURN CODE M2413 79060021 B DPR041 M2413 79120021 SPACE 79200020 DPR605 MVC PB(0),0(R5) MOVE TO PRINT BUFFER 79400020 EJECT 79600021 *********************************************************************** 79800020 * PRINT HEADER, DESCRIPTION LINE VIA PARALLEL PRINT OUTPUT WRITER * 80000020 *********************************************************************** 80200020 SPACE 80400020 DPRWRT LA R13,SHDSA SAVE AREA ADDRESS 80600020 PWRT SIZE=120 A46329 80800021 MVI PB,C' ' CLEAR PRINT BUFFER WITH BLANKS 81000020 MVC PB+1(120),PB 81200020 L R1,SAVER1 RESTORE DPRINT PARAMETER PTR 81400020 L R12,4(R1) ADDRESS OF DPRINT CTRL WORD 81600020 BR R10 RETURN TO CALLING ROUTINE 81800020 SPACE 82000020 WRK DS 16D 82200020 DPRDEVAD DC XL4'0' DEVICE ADDRESS - HEX 82300021 SAVE14 DC XL4'0' 82400020 MAXCNT DC H'119' MAX PRINT CHARACTERS M1010 82600020 DPRPATCH DS 20F PATCH AREA 82800020 SPACE 83000020 *********************************************************************** 83200020 * DPRINT MESSAGE SECTION * 83400020 *********************************************************************** 83600020 SPACE 1 83800020 IFDMSG14 DC A(IFD129) 84000020 DC A(IFD157) 84200020 SPACE 84400020 IFD129 WTO 'IFD129I FIRST ERROR COMMUNICATION XXXXXXXX YYY UNIT ZZZX84600021 Z SSSSSSSS',MF=L,ROUTCDE=10,DESC=7 84800021 IFD157 WTO 'IFD157I CATASTROPHIC ERROR ON DEVICE XXXX SSSSSSSS',MF=X85000021 L,ROUTCDE=10,DESC=7 85200021 EJECT 85400020 *********************************************************************** 85600020 * DPRCNV - HEX TO EBCDIC CONVERT * 85800020 * * 86000020 * CALL SEQ - R13 = INPUT ADDRESS * 86200020 * R14 = OUTPUT ADDRESS * 86400020 * R15 = INPUT BYTE COUNT * 86600020 * * 86800020 * BAL R10,DPRCNV * 87000020 *********************************************************************** 87200020 SPACE 87400020 DPRCNV STM R5,R6,SAVREGS2 SAVE REGS 5, 6 87600020 STM R13,R15,SAVREGS3 SAVE REGS 13-15 87800020 SPACE 88000020 LTR R15,R15 COUNT = 0 ? 88200020 BZ DPRCNV8 BRANCH IF YES. 88400020 SPACE 88600020 AR R14,R15 ADD COUNT TO OUTPUT ADDR. 88800020 AR R14,R15 ADD COUNT AGAIN. 89000020 AR R13,R15 ADD COUNT TO INPUT ADDR. 89200020 SR R5,R5 CLEAR R5. 89400020 SR R6,R6 CLEAR R6. 89600020 SPACE 89800020 DPRCNV4 S R14,=F'2' GET ADDR OF LAST BYTE OF OUTPUT. 90000020 BCTR R13,0 GET ADDR OF LAST BYTE OF INPUT. 90200020 IC R6,0(R13) GET HEX BYTE. 90400020 LR R5,R6 PUT IN R5. 90600020 SRL R6,4 GET BITS 0-3 IN R6. 90800020 N R5,=F'15' GET BITS 4-7 IN R5. 91000020 IC R6,DPREBC(R6) CONVERT BITS 0-3 TO EBCDIC CHAR. 91200020 IC R5,DPREBC(R5) CONVERT BITS 4-7 TO EBCDIC CHAR. 91400020 STC R6,0(R14) STORE 1ST EBCDIC CHAR IN OUTPUT. 91600020 STC R5,1(R14) STORE 2ND EBCDIC CHAR IN OUTPUT. 91800020 BCT R15,DPRCNV4 GET NEXT HEX BYTE. 92000020 DPRCNV8 LM R5,R6,SAVREGS2 RESTORE REGS 5, 6 92200020 LM R13,R15,SAVREGS3 RESTORE REGS 13-15 92400020 BR R10 RETURN TO CALLER. 92600020 SPACE 92800020 DPREBC DC C'0123456789ABCDEF' HEX TO EBCDIC CONVERT TABLE. 93000020 CNOP 0,4 93200020 SAVREGS2 DC 2F'00' 93400020 SAVREGS3 DC 3F'00' 93600020 SPACE 93800020 SECPREF DSECT SECTION PREFACE 94000020 RTN# DS CL1 94200020 DS CL16 94400020 REFNUM DS CL1 94600020 DS CL14 94800020 ECA# DS CL3 95000020 SPACE 95200020 DPRCOM IFDCOM 95400020 PB EQU PRTBUFR+1 95600020 END 95800020 ./ ADD SSI=21191017,NAME=IFDOLT15,SOURCE=0 * COPY 00050021 TITLE 'IFDOLT15 RESULTS AND DATA SECTIONS' 00100020 ****************************** PROLOGUE ******************************* 00200020 * * 00300020 * TITLE: DPRINT RESULTS AND DATA MODULE. * 00400020 * * 00500020 * STATUS: CHANGE LEVEL - 000 * 00600020 * * 00700020 * FUNCTION: THIS MODULE IS DESIGNED AS FOLLOWS: * 00800020 * * 00900020 * 1) TEST DPRINT CONTROL FIELD DEFINITION BITS TO * 01000020 * DETERMINE IF THE FOLLOWING ARE TO BE PRINTED: * 01100020 * CAW, CCW'S, ICW * 01200020 * EXPECTED, RECEIVED CONDITION CODE * 01300020 * EXPECTED, RECEIVED CSW * 01400020 * EXPECTED, RECEIVED SENSE DATA * 01500020 * EXPECTED, RECEIVED, WRITTEN DATA * 01600020 * 2) GET THE ADDRESS AND BYTE COUNT FOR THE ITEM. * 01700020 * IF EITHER IS NOT GIVEN, SET THE RETURN CODE TO 0C. * 01800020 * 3) GET, CONVERT TO EBCDIC, AND LOAD A RESULT OR DATA * 01900020 * LINE IN THE PRINT BUFFER. * 02000020 * 4) IDENTIFY AN ERROR LINE WITH AN ASTERISK. * 02100020 * 5) PRINT THE RESULT OR DATA LINE WITH A COMMON * 02200020 * PWRT INNER MACRO ROUTINE. * 02300020 * 6) DO THE ABOVE UNTIL ALL LINES HAVE BEEN PRINTED. * 02400020 * * 02500020 * ENTRY POINT: IFDOLT15 - FROM THE SCAN SECTION OF IFDOLT14. * 02600020 * * 02700020 * INPUT: DPRINT PARAMETER LIST IN TEST SECTION. * 02800020 * * 02900020 * REGISTER USAGE: R1 - ADDRESS OF DPRINT PARAMETER LIST. * 03000020 * R2 - ADDRESS OF SECT CTRL TABLE IN OLTEP ROOT. * 03100020 * R3 - ADDRESS OF TECB MAP. * 03200020 * R4 - BASE REG FOR THIS MODULE. * 03300020 * R5-R11 - MISCELLANEOUS * 03400020 * R12 - ADDRESS OF DPRINT CONTROL FIELD WORD. * 03500020 * R13 - ADDR OF CALLER'S SAVE AREA; ALSO CONVERT RTN * 03600020 * R14 - ADDR OF CALLER'S RETURN PT; ALSO CONVERT RTN * 03700020 * R15 - LINK ADDR; CONVERT COUNT; RETURN CODE. * 03800020 * * 03900020 * EXTERNAL ROUTINES: IFDOLT39 -PARALLEL PRINT OUTPUT WRITER. * 04000020 * * 04100020 * EXITS - NORMAL: RETURN TO SCAN SECTION OF IFDOLT14. * 04200020 * - ERROR: NONE * 04300020 * * 04400020 * ATTRIBUTES: SERIALLY REUSABLE * 04500020 * * 04600020 *********************************************************************** 04700020 EJECT 04800020 SPACE 2 04900020 IFDOLT15 CSECT 05000020 *D282000 A42315 05050021 *A147300,A147600 SA53321 05070000 USING IFDOLT15,R4 BASE REG FOR MODULE 05100020 USING CHASCT,R2 BASE REG FOR SECTION CTRL TABLE 05200020 USING TECBMAP,R3 05300020 SPACE 05400020 R1 EQU 1 05500020 R2 EQU 2 05600020 R3 EQU 3 05700020 R4 EQU 4 05800020 R5 EQU 5 05900020 R6 EQU 6 06000020 R7 EQU 7 06100020 R8 EQU 8 06200020 R9 EQU 9 06300020 R10 EQU 10 06400020 R11 EQU 11 06500020 R12 EQU 12 06600020 R13 EQU 13 06700020 R14 EQU 14 06800020 R15 EQU 15 06900020 RSLTFLG EQU X'40' 07000020 SPACE 07100020 DPRRSLTS STM R14,R12,12(R13) SAVE CALLER'S REGS 07200020 LR R4,R15 LOAD BASE REG 07300020 LA R5,RSLTSA ADDRESS OF RESULTS SAVE AREA 07400020 ST R5,8(R13) STORE IN CALLER'S SA 07500020 ST R13,4(R5) STORE ADDRESS OF CALLER'S SA 07600020 L R5,4(R1) ADR PTR SAVE AREA M4506 07700020 L R1,0(R5) GET DPRINT PARAMETER PTR 07800020 L R12,4(R1) PTR TO DPRINT CTRL FIELD WORD 07900020 L R3,12(R1) TECB ADDRESS 08000020 ST R1,SAVER1 SAVE DPRINT PARAMETER PTR 08100020 XC RETCODE(4),RETCODE CLEAR IT 08200020 EJECT 08300020 *********************************************************************** 08400020 * SET UP DEVICE ADDRESS * 08500020 *********************************************************************** 08600020 SPACE 08700020 DPR001 MVC DPRDEVAD+2(2),9(R12) GET DEV ADDR FROM OLT 08800020 CLC DPRDEVAD+2(2),=X'0000' IS IT 0? 08900020 BNE DPR050 BRANCH IF NO 09000020 L R9,12(R1) PTR TO TECB 09100020 LTR R9,R9 IS TECB ADDR GIVEN ? 09200020 BZ DPR002 BR IF NO 09300020 CLI TCBEVOC,X'00' IS THERE A POSTED EVENT FIELD 09400020 BE DPR002 BR IF NO 09500020 MVC DPRDEVAD+1(3),TCBFD01+1 PUT DEV ADDR IN BUFFER 09600020 B DPR050 09700020 DPR002 MVC DPRDEVAD(4),12(R2) GET PRIME DEV ADDR 09800020 SPACE 09900020 *********************************************************************** 10000020 * CAW CCW 10100020 *********************************************************************** 10200020 SPACE 10300020 DPR050 TM 2(R12),X'40' PRINT CCW? 10400020 BZ DPR060 BR IF NO 10500020 L R7,20(R1) GET CCW ADDRESS 10600020 LTR R7,R7 IS IT 0? 10700020 BNZ DPR052 BR IF NO 10800020 DPR050A MVI DPRTRNCD,X'0C' SET RETURN CODE 0C 10900020 B DPR060 GO CHK FOR CC PRINT 11000020 SPACE 11100020 DPR052 MVC PB+32(3),=C'CAW' PUT ' CAW' IN PRINT BUFFER 11200020 LA R13,20(R1) GET CCW ADDRESS 11300020 LA R14,PB+37 GET OUTPUT ADDR FOR CONVERT 11400020 LA R15,4 GET COUNT 11500020 BAL R10,DPRCNV CONVERT CCW ADDR TO EBCDIC 11600020 SR R8,R8 CLEAR 11700020 DPR052A IC R8,11(R12) GET CCW COUNT 11800020 LTR R8,R8 IS IT 0? 11900020 BZ DPR050A BR IF YES 12000020 SR R5,R5 CLEAR 12100020 IC R5,12(R12) GET NO. OF FAILING CCW 12200020 LA R6,1 SET CCW NO. 12300020 DPR053 MVC PB+1(3),=C'CCW' PUT 'CCW' IN PRINT BUFFER 12400020 TM 3(R12),X'10' ICW ? 12500020 BZ DPR053A BR IF NO 12600020 MVI PB+1,C'I' PUT 'I' IN BUFFER 12700020 DPR053A CVD R6,WRK CONVERT CCW NO. TO DECIMAL 12800020 SPACE 12900020 LA R13,WRK+6 GET ADDR OF CCW NO. 13000020 LA R14,WRK GET OUTPUT ADDR 13100020 LA R15,2 GET COUNT 13200020 BAL R10,DPRCNV CONVERT CCW NO. TO EBCDIC 13300020 DPR054 MVC PB+4(2),WRK+1 PUT CCW NO. IN PRINT BUFFER 13400020 SPACE 13500020 DPR056 LR R13,R7 GET CCW ADDR 13600020 LA R14,WRK GET OUTPUT ADDR FOR CONVERT 13700020 LA R15,8 GET COUNT 13800020 BAL R10,DPRCNV CONVERT CCW TO EBCDIC 13900020 MVC PB+7(2),WRK MOVE CMND CODE 14000020 MVC PB+10(6),WRK+2 DATA ADDR 14100020 MVC PB+17(2),WRK+8 FLAGS 14200020 MVC PB+20(2),WRK+10 UNUSED FLD 14300020 MVC PB+23(4),WRK+12 BUTE COUNT TO BUFFER 14400020 SPACE 14500020 CR R6,R5 IS THIS FAILING CCW? 14600020 BNE DPR058 BR IF NO 14700020 TM 1(R12),X'40' IS IT ERROR CCW? SA53321 14730000 BZ DPR058 BR IF NOT SA53321 14760000 MVI PB,C'*' PREFIX CCW WITH * 14800020 DPR058 BAL R10,DPRWRT GO PRINT CCW LINE 14900020 SPACE 15000020 LA R6,1(R6) BUMP CCW NO. 15100020 LA R7,8(R7) POINT TO NEXT CCW 15200020 BCT R8,DPR053 GO PROCESS NEXT CCW 15300020 SPACE 15400020 *********************************************************************** 15500020 * CONDITION CODE * 15600020 *********************************************************************** 15700020 SPACE 15800020 DPR060 TM 3(R12),X'04' PRINT CC? 15900020 BZ DPR080 BR IF NO 16000020 SR R6,R6 CLEAR 16100020 IC R6,6(R12) GET EXPECTED CC 16200020 LTR R6,R6 IS IT GIVEN? 16300020 BZ DPR070 BR IF NO 16400020 L R5,16(R1) GET RECEIVED CC ADDRESS 16500020 LTR R5,R5 IS IT 0? 16600020 BNZ DPR061 BR IF NO 21051 16700021 SPACE 16800020 * GET RECEIVED CONDITION CODE FROM A TECB FIELD. 16820021 SPACE 16840021 OI DPRFLAG,DPRLKCC TURN ON LOOK FOR CC FLAG 21051 16860021 BAL R10,DPR175 GO FIND FLD IN TECB 16900020 TM DPRFLAG,DPRSCHFL SEARCH FAIL? 17000020 BNZ DPR070 BR IF YES 17100020 LR R5,R13 PUT POINTER IN R5 17200020 DPR061 DS 0H 21051 17250021 CLI 0(R5),X'FF' IS CODE 'FF' 17300020 BNE DPR062 BR IF NO 17400020 MVI PB+22,X'F0' PUT CC 0 IN PRINT BUFFER 17500020 B DPR064 17600020 SPACE 17700020 DPR062 CLI 0(R5),C'0' IS CC=0,1,2,3? 21051 17730021 BE DPR063 21051 17760021 CLI 0(R5),C'1' 21051 17790021 BE DPR063 21051 17820021 CLI 0(R5),C'2' 21051 17850021 BE DPR063 21051 17880021 CLI 0(R5),C'3' 21051 17910021 BNE DPR070 NO. SET RETURN CODE TO 0C 21051 17940021 DPR063 MVC PB+22(1),0(R5) MOVE CC TO PRINT BUFFER 18000020 DPR064 STC R6,PB+9 PUT XPTD CC IN BUFFER 18100020 MVC PB+1(7),=C'XPTD CC' PUT 'XPTD CC' IN BUFFER 18200020 MVC PB+14(7),=C'RCVD CC' PUT 'RCVD CC' IN BUFFER 18300020 TM 3(R12),X'02' IS CC IN ERROR? 18400020 BZ DPR066 BR IF NO 18500020 MVI PB,C'*' PUT * IN BUFFER 18600020 SPACE 18700020 DPR066 BAL R10,DPRWRT GO PRINT CC LINE 18800020 B DPR080 GO CHK FOR XPTD CSW PRINT 18900020 SPACE 19000020 DPR070 MVI DPRTRNCD,X'0C' SET RTRN CODE TO 0C 19100020 NI DPRFLAG,255-DPRSCHFL-DPRLKCC CLEAR FLAGS 21051 19200021 B DPR080 GO CHK FOR XPTD CSW PRINT 19300020 SPACE 19400020 *********************************************************************** 19500020 * EXPECTED CSW * 19600020 *********************************************************************** 19700020 SPACE 19800020 DPR080 SR R7,R7 CLEAR 19900020 IC R7,13(R12) GET XPTD CSW MASKS 20000020 STC R7,DPRMASK SAVE IT 20100020 TM 2(R12),X'20' PRINT CSW1? 20200020 BNZ DPR086 BR IF YES 20300020 SPACE 20400020 DPR082 LA R11,DPR100 GET RTRN ADDR 20500020 LA R5,PB+11 POINT TO FLD IN BUFR 20600020 BAL R10,DPR092 GO CHK FOR XCSW2 PRINT 20700020 SPACE 20800020 MVC PB+1(9),=C'XPTD CSW2' PUT 'XPTD CSW2' IN BUFR 20900020 TM 3(R12),X'01' PSW PRINT? 21000020 BZ DPR084 BR IF NO 21100020 MVI PB+6,C'P' PUT 'P' IN BUFR 21200020 DPR084 B DPR098 GO PRINT 21300020 SPACE 21400020 DPR086 L R13,24(R1) GET XPTD CSW1 ADDRESS 21500020 LTR R13,R13 IS IT 0? 21600020 BNZ DPR088 BR IF NO 21700020 MVI DPRTRNCD,X'0C' SET RTRN CODE 0C 21800020 B DPR082 BR TO CHK XCSW2 21900020 SPACE 22000020 DPR088 MVC PB+1(9),=C'XPTD CSW1' PUT 'XPTD CSW1' IN BUFR 22100020 TM 3(R12),X'01' PSW? 22200020 BZ DPR090 BR IF NO 22300020 MVI PB+6,C'P' PUT 'P' IN BUFR 22400020 DPR090 LA R5,PB+11 GET FLD IN BUFR 22500020 BAL R11,DPR450 GO SET UP FOR PRINT 22600020 SPACE 22700021 LA R11,DPR098 GET RTRN ADDR 22900020 LA R5,PB+37 GET FLD ADDR IN BUFR 23000020 BAL R10,DPR092 GO CHK FOR XCSW2 PRINT 23100020 MVC PB+32(4),=C'CSW2' PUT 'CSW2' IN BUFR 23200020 TM 3(R12),X'01' PSW ? 23300020 BZ DPR098 BR IF NO 23400020 MVI PB+32,C'P' PUT 'P' IN BUFR 23500020 B DPR098 BR TO PRINT 23600020 SPACE 23700020 DPR092 TM 2(R12),X'08' PRINT XCSW2? 23800020 BNZ DPR094 BR IF YES 23900020 BR R11 RETURN 24000020 SPACE 24100020 DPR094 SR R7,R7 CLEAR 24200020 IC R7,DPRMASK GET MASK 24300020 SLL R7,28 FOR XCSW2 24400020 SRL R7,24 24500020 STC R7,DPRMASK PUT BACK 24600020 L R13,32(R1) GET XCSW2 ADDRESS 24700020 LTR R13,R13 IS IT 0? 24800020 BNZ DPR096 BR IF NO 24900020 MVI DPRTRNCD,X'0C' SET RTRN CODE 0C 25000020 BR R11 RETURN 25100020 SPACE 25200020 DPR096 BAL R11,DPR450 GO SET UP FOR PRINT 25300020 BR R10 RETURN 25400020 SPACE 25500020 DPR098 BAL R10,DPRWRT GO PRINT EXPECTED CSW LINE 25600020 B DPR100 25700020 SPACE 25800020 *********************************************************************** 25900020 * RECEIVED CSW * 26000020 *********************************************************************** 26100020 SPACE 26200020 DPR100 MVI DPRMASK,X'FF' SET MASK TO ONES 26300020 TM 2(R12),X'10' PRINT RCVD CSW1? 26400020 BNZ DPR102 BR IF YES 26500020 DPR101 LA R11,DPR200 GET RTRN ADDR 26600020 LA R5,PB+11 GET FIELD ADDR IN PRINT BUFFER 26700020 BAL R10,DPR150 GO CHK FOR CSW2 PRINT 26800020 MVC PB+1(9),=C'RCVD CSW2' PUT 'RCVD CSW2 IN PRINT BUFFER 26900020 TM 3(R12),X'01' PSW PRINT? 27000020 BZ DPR101A BR IF NO 27100020 MVI PB+6,C'P' PUT 'P' IN BUFFER 27200020 DPR101A B DPR110B GO PRINT 27300020 SPACE 27400020 DPR102 L R13,28(R1) GET RCVD CSW1 ADDRESS 27500020 LTR R13,R13 IS ADDR GIVEN? 27600020 BNZ DPR105 BR IF YES 27700020 BAL R10,DPR175 GO FIND EVENT IN TECB 27800020 TM DPRFLAG,DPRSCHFL SEARCH FAIL? 27900020 BNZ DPR101 BR IF YES 28000020 LA R13,4(R13) POINT TO CSW 28100020 SPACE 28300020 DPR105 TM 1(R12),X'20' RCVD CSW1 ERROR ? 28400020 BZ DPR110 BR IF NO 28500020 MVI PB,C'*' PREFIX CSW WITH '*' 28600020 DPR110 MVC PB+1(9),=C'RCVD CSW1' PUT 'RCVD CSW1' IN PRINT BUFFER 28700020 TM 3(R12),X'01' PSW PRINT? 28800020 BZ DPR110A BR IF NO 28900020 MVI PB+6,C'P' PUT 'P' IN BUFFER 29000020 DPR110A LA R5,PB+11 GET FLD ADDR IN PRINT BUFFER 29100020 BAL R11,DPR450 GO SET UP FOR PRINT 29200020 SPACE 29300020 LA R11,DPR115 GET RETURN ADDR 29400020 LA R5,PB+37 GET FLD ADDR IN BUFR 29500020 BAL R10,DPR150 GO CHK FOR CSW2 PRINT 29600020 MVC PB+32(4),=C'CSW2' PUT 'CSW2' IN PRINT BUFFER 29700020 TM 3(R12),X'01' PSW PRINT? 29800020 BZ DPR110B BR IF NO 29900020 MVI PB+32,C'P' PUT PSW IN BUFFER 30000020 DPR110B TM 1(R12),X'10' CSW2 ERROR? 30100020 BZ DPR115 BR IF NO 30200020 MVI PB,C'*' PREFIX LINE WITH * 30300020 SPACE 30400020 DPR115 BAL R10,DPRWRT GO PRINT RECEIVED CSW LINE 30500020 B DPR200 GO CHK FOR XPTD SNS PRINT 30600020 SPACE 30700020 DPR150 TM 2(R12),X'04' PRINT CSW2 ? 30800020 BNZ DPR155 BR IF YES 30900020 BR R11 RETURN ON R11 31000020 DPR155 L R13,36(R1) GET RECEIVED CSW2 ADDRESS 31100020 LTR R13,R13 IS ADDR GIVEN ? 31200020 BNZ DPR157A BR IF YES 31300020 MVI DPRFLAG,DPRSCH02 TURN ON FLG FOR CSW2 SEARCH 31400020 ST R10,DSAVERGS SAVE REG 10 31500020 BAL R10,DPR175 GO FIND CSW2 IN TECB 31600020 L R10,DSAVERGS RESTORE R10 31700020 TM DPRFLAG,DPRSCHFL SEARCH FAIL? 31800020 BZ DPR157 BR IF NO 31900020 BR R11 RETURN ON R11 32000020 DPR157 LA R13,4(R13) PTR TO CSW IN FIELD 32100020 DPR157A BAL R11,DPR450 GO SET UP FOR PRINT 32200020 BR R10 RETURN ON R10 32300020 SPACE 32400020 *********************************************************************** 32500020 * ENTER HERE TO FIND FLD IN TECB FOR CC, CSW, PSW * 32600021 *********************************************************************** 32700020 SPACE 32800020 DPR175 SR R15,R15 CLEAR 32900020 SR R14,R14 CLEAR 33000020 L R9,12(R1) PTR TO TECB 33100020 LTR R9,R9 IS A TECB ADDRESS GIVEN? 21051 33130021 BZ DPR185 BRANCH IF NO 21051 33160021 NI DPRFLAG,255-DPRSCHFL TURN OFF SEARCH FAIL FLAG 33200020 CLC TCBEVOC(1),TCBFDCT COMPARE CNT TO EVNT COUNT 33300020 BC 12,DPR177 BR ON EVNT CNT LE TO FLD CNT 33400020 IC R15,TCBFDCT GET NO. OF FIELDS TO CHECK 33500020 B DPR179 GO GET FLD LNGTH 33600020 SPACE 33700020 DPR177 IC R15,TCBEVOC GET NO. OF FLDS TO CHECK 33800020 LTR R15,R15 IS EVOC 0 ? 33900020 BZ DPR185 BR IF 0 34000020 DPR179 IC R14,TCBFDLN GET FLD LNGTH 34100020 LA R13,TCBFD01 PTR TO FIRST EVENT FLD 34200020 DPR181 CLC 1(3,R13),DPRDEVAD+1 EVENT FLD FOR DEV? 34300020 BNE DPR183 BR IF NO 34400020 TM DPRFLAG,DPRLKCC LOOKING FOR CC? 21051 34408021 BZ DPR181A NO. 21051 34416021 TM 0(R13),X'F0' YES. IS THERE A CC ENTRY? 21051 34424021 BO DPR187 YES. 21051 34432021 B DPR183 NO. TRY NEXT FIELD. 21051 34440021 SPACE 34448021 DPR181A TM 3(R12),X'01' LOOKING FOR A PSW? 21051 34456021 BNZ DPR183A YES. 21051 34464021 CLI 0(R13),X'F0' NO. CC=0 FIELD? 21051 34472021 BE DPR183 YES 21051 34480021 DPR182A DS 0H 21051 34488021 TM DPRFLAG,DPRSCH02 THIS THE ONE I WANT? 34500020 BZ DPR187 BR IF YES 34600020 SPACE 34700020 NI DPRFLAG,255-DPRSCH02 TURN OFF SEARCH CSW2 FLAG 34800020 DPR183 AR R13,R14 BUMP TO NEXT FLD 34900020 BCT R15,DPR181 GO CHK IF CORRECT FLD 35000020 SPACE 35100020 DPR185 MVI DPRTRNCD,X'0C' SET RTRN CODE 0C 35200020 OI DPRFLAG,DPRSCHFL TURN ON SEARCH FAIL FLAG 35300020 DPR187 BR R10 RETURN 35400020 DPR183A DS 0H 21051 35420021 TM 0(R13),X'F0' IS IT A PSW ENTRY? 21051 35440021 BNO DPR182A BRANCH IF NOT A COND CODE 21051 35460021 B DPR183 CHECK NEXT ENTRY 21051 35480021 SPACE 35500020 *********************************************************************** 35600020 * EXPECTED SENSE * 35700020 *********************************************************************** 35800020 SPACE 35900020 SPACE 36000020 DPR200 TM 2(R12),X'02' PRINT EXPECTED SENSE? M1005 36100020 BZ DPR210 NO. BRANCH M1005 36200020 L R13,40(R1) YES. GET EXPECTED SENSE ADDR M1005 36300020 LTR R13,R13 IS ADDRESS GIVEN M1005 36400020 BNZ DPR201 YES. BRANCH M1005 36500020 DPR200A MVI DPRTRNCD,X'0C' NO. SET RETURN CODE 0C M1005 36600020 B DPR210 GO CHK FOR RCVD SENSE PRINT M1005 36700020 SPACE 36800020 DPR201 SR R7,R7 CLEAR REG M1005 36900020 IC R7,14(R12) GET EXPECTED SENSE BYTE COUNT M1005 37000020 LTR R7,R7 IS IT 0? M1005 37100020 BZ DPR200A YES. BRANCH M1005 37200020 SPACE 37300020 DPR203 MVC PB+1(8),=C'XPTD SNS' LOAD IN PRINT BUFFER M1005 37400020 BAL R10,DPR218AA LOAD SENSE DATA IN PB M1005 37500020 B DPR210 GO CHK FOR RCVD SENSE PRINT M1005 37600020 SPACE 37700020 *********************************************************************** 37800020 * RECEIVED SENSE * 37900020 *********************************************************************** 38000020 SPACE 38100020 DPR210 TM 2(R12),X'01' PRINT RCVD SENSE? M1005 38200020 BZ DPR230 NO. BRANCH M1005 38300020 L R13,44(R1) YES. GET RCVD SENSE ADDRESS M1005 38400020 LTR R13,R13 IS ADDRESS GIVEN? M1005 38500020 BZ DPR211 NO. CHK IF TECB ADDR GIVEN M1005 38600020 SPACE 38700020 SR R7,R7 CLEAR REG M1005 38800020 IC R7,15(R12) GET SENSE BYTE COUNT M1005 38900020 LTR R7,R7 IS IT 0? M1005 39000020 BZ DPR212 YES. BRANCH M1005 39100020 DPR210A MVC PB+1(8),=C'RCVD SNS' LOAD IN PRINT BUFFER M1005 39200020 TM 1(R12),X'02' IS THERE A SENSE ERROR? M1005 39300020 BZ DPR210B NO. BRANCH M1005 39400020 MVI PB,C'*' YES. IDENTIFY IT WITH AN * M1005 39500020 DPR210B BAL R10,DPR218AA LOAD SENSE INFO IN PRINT BUFR M1005 39600020 B DPR230 GO CHECK FOR DATA PRINT M1005 39700020 SPACE 39800020 * GET RECEIVED SENSE DATA FROM TECB 39900020 SPACE 40000020 DPR211 L R9,12(R1) GET TECB ADDRESS M1005 40100020 LTR R9,R9 IS IT GIVEN? M1005 40200020 BZ DPR212 NO. BRANCH M1005 40300020 BAL R10,DPR213 GET RCVD SENSE FROM TECB M1005 40400020 B DPR210A GO LOAD IT IN PRINT BUFFER M1005 40500020 DPR212 MVI DPRTRNCD,X'0C' SET RETURN CODE 0C M1005 40600020 B DPR230 GO CHECK FOR DATA PRINT M1005 40700020 SPACE 40800020 DPR213 ST R10,SAVER10 SAVE R10 M1005 40900020 SR R10,R10 CLEAR REG M1005 41000020 SR R14,R14 CLEAR REG M1005 41100020 CLC TCBSNOC(1),TCBSNCT COMPARE EVENT COUNT TO FLD CNT M1005 41200020 BC 12,DPR214 BR ON EVNT COUNT LE TO FLD CNT M1005 41300020 IC R10,TCBSNCT GET NUMBER OF FLDS TO CHECK M1005 41400020 B DPR215 M1005 41500020 SPACE 41600020 DPR214 IC R10,TCBSNOC GET NUMBER OF FLDS TO CHECK M1005 41700020 DPR215 LTR R10,R10 IS IT 0? M1005 41800020 BZ DPR212 YES. BRANCH M1005 41900020 LH R14,TCBSNLN NO. GET FIELD LENGTH M1005 42000020 SR R6,R6 CLEAR REG M1005 42100020 SR R7,R7 CLEAR REG M1005 42200020 SR R8,R8 CLEAR REG M1005 42300020 IC R7,TCBFDLN GET FIELD SIZE M1005 42400020 IC R8,TCBFDCT GET NUMBER OF FIELDS M1005 42500020 MR R6,R8 MULTIPLY BY NUMBER OF FIELDS M1005 42600020 LA R8,8 ADD 8 TO M1005 42700020 AR R7,R8 TOTAL LENGTH OF FIELDS M1005 42800020 AR R7,R9 R7 POINTS TO FIRST TECB SNS FLDM1005 42900020 LR R13,R7 PUT SENSE FIELD ADDRESS IN R13 M1005 43000020 SPACE 43100020 DPR216 CLC 0(3,R13),DPRDEVAD+1 CHK DEV ADDR FOR RIGHT FIELD M1005 43200020 BE DPR217 YES. BRANCH TO GET SENSE INFO M1005 43300020 AR R13,R14 NO. BUMP TO NEXT FIELD M1005 43400020 BCT R10,DPR216 GO CHECK FIELD M1005 43500020 B DPR212 NO FIELD FOUND. SET RETURN CODEM1005 43600020 SPACE 43700020 DPR217 LA R13,3(R13) POINT TO SENSE DATA M1005 43800020 SR R7,R7 CLEAR REG M1005 43900020 IC R7,15(R12) GET RCVD SNS CNT FROM PARM LISTM1005 44000020 LTR R7,R7 IS IT 0? M1005 44100020 BNZ DPR218 NO. BRANCH M1005 44200020 IC R7,6(R9) GET RCVD SNS COUNT FROM TECB M1005 44300020 LTR R7,R7 IS IT 0? M1005 44400020 BZ DPR212 YES. BRANCH M1005 44500020 DPR218 L R10,SAVER10 RESTORE REG M1005 44600020 BR R10 RETURN M1005 44700020 SPACE 44800020 * CONVERT EXPECTED OR RECEIVED SENSE DATA AND LOAD PRINT BUFFER M1005 44900020 SPACE 45000020 DPR218AA ST R10,SAVER10 SAVE REG M1005 45100020 DPR218AB LA R14,WRK GET OUTPUT ADDRESS FOR CONVERT M1005 45200020 CH R7,MAXSNS COUNT GREATER THAN LINE MAX? M1005 45300020 BNH DPR218A NO. BRANCH M1005 45400020 LH R15,MAXSNS YES. PUT MAX COUNT IN R15 M1005 45500020 B DPR218B M1005 45600020 SPACE 45700020 DPR218A OI DPRFLAG,DPRLINE TURN ON LAST SENSE LINE FLAG M1005 45800020 LR R15,R7 PUT COUNT IN R15 M1005 45900020 DPR218B BAL R10,DPRCNV CONVERT RCVD SENSE TO EBCDIC M1005 46000020 LA R6,PB+12 PRINT BUFR ADDR FOR FIRST BYTE M1005 46100020 LA R5,WRK GET ADDR OF 1ST SENSE BYTE M1005 46200020 DPR219 MVC 0(2,R6),0(R5) MOVE SENSE ONE BYTE AT A TIME M1005 46300020 LA R6,3(R6) GET NEXT PRINT BUFR ADDRESS M1005 46400020 LA R5,2(R5) GET NEXT SENSE BYTE ADDRESS M1005 46500020 BCT R15,DPR219 MOVE NEXT BYTE M1005 46600020 BAL R10,DPRWRT PRINT SENSE LINE M1005 46700020 TM DPRFLAG,DPRLINE LAST LINE? M1005 46800020 BZ DPR220 NO. BRANCH FOR NEXT LINE M1005 46900020 NI DPRFLAG,255-DPRLINE YES. CLEAR FLAG M1005 47000020 L R10,SAVER10 RESTORE R10 M1005 47100020 BR R10 RETURN TO XPTCD/RCVD RTN M1005 47200020 SPACE 47300020 DPR220 AH R13,MAXSNS POINT TO NEXT LINE OF SENSE M1005 47400020 SH R7,MAXSNS SUBTRACT FOR REMAINING BYTES M1005 47500020 B DPR218AB GO SET UP NEXT LINE FOR PRINT M1005 47600020 SPACE 47700020 *********************************************************************** 47800020 * EXPECTED DATA * 47900020 *********************************************************************** 48000020 SPACE 48100020 DPR230 TM 3(R12),X'80' PRINT XPTD DATA? 48200020 BZ DPR240 BR IF NO 48300020 L R8,48(R1) GET EXPECTED DATA ADDRESS 48400020 MVC WRK(2),17(R12) GET EXPECTED DATA COUNT 48500020 LH R7,WRK GET XPTD DATA COUNT 48600020 LA R11,DPR240 GET RTRN ADDR 48700020 MVC PB+1(9),=C'XPTD DATA' MOVE 'XPTD DATA' TO PRINT BUFFER 48800020 BAL R9,DPR260 GO SET UP AND PRINT 48900020 SPACE 49000020 *********************************************************************** 49100020 * RECEIVED DATA * 49200020 *********************************************************************** 49300020 SPACE 49400020 DPR240 TM 3(R12),X'40' PRINT RCVD DATA? 49500020 BZ DPR250 BR IF NO 49600020 L R8,52(R1) GET RECEIVED DATA ADDRESS 49700020 MVC WRK(2),19(R12) GET RECEIVED DATA COUNT 49800020 LH R7,WRK GET RCVD DATA COUNT 49900020 LA R11,DPR250 GET RTRN ADDR 50000020 TM 3(R12),X'08' RCVD DATA ERROR ? 50100020 BZ DPR242 BR IF NO 50200020 MVI PB,C'*' PUT * IN LINE 50300020 DPR242 MVC PB+1(9),=C'RCVD DATA' MOVE 'RCVD DATA' TO PRINT BUFFER 50400020 BAL R9,DPR260 GO SET UP AND PRINT 50500020 SPACE 50600020 EJECT 50700020 *********************************************************************** 50800020 * WRITTEN DATA * 50900020 *********************************************************************** 51000020 SPACE 51100020 DPR250 TM 3(R12),X'20' PRINT WRITTEN DATA ? 51200020 BZ DPREXIT NO. EXIT RTN 51300020 L R8,56(R1) GET WRITTEN DATA ADDRESS 51400020 MVC WRK(2),21(R12) GET WRITTEN DATA COUNT 51500020 LH R7,WRK GET WRTN DATA COUNT 51600020 LA R11,DPREXIT GET EXIT RTN ADDRESS 51700020 MVC PB+1(9),=C'WRTN DATA' PUT 'WRTN DATA INTO PRINT BUFFER 51800020 BAL R9,DPR260 GO SET UP AND PRINT 51900020 B DPREXIT BRANCH TO EXIT MODULE 52000020 SPACE 52100020 DPR260 LTR R8,R8 ADDR GIVEN ? 52200020 BNZ DPR262 BR IF YES 52300020 DPR261 MVI DPRTRNCD,X'0C' SET RETURN CODE 0C 52400020 XC PB(10),PB CLEAR BUFFER 52500020 BR R11 BRANCH TO EXIT RTN M1005 52600020 DPR262 LTR R7,R7 IS COUNT 0 ? 52700020 BZ DPR261 BRANCH IF NO M1005 52800020 SPACE 52900020 DPR262A TM 1(R12),X'08' DON'T CONVERT BIT ON? M1005 53000020 BZ DPR262B NO. BRANCH M1005 53100020 MVI LIMIT+1,50 YES. CHANGE LIMIT TO 50 M1005 53200020 DPR262B CH R7,LIMIT MORE THAN 1 LINE? M1005 53300020 BNH DPR263 BR IF NO M1005 53400020 LH R15,LIMIT SET MAX COUNT M1005 53500020 B DPR264 GO SET UP FOR CONVERT M1005 53600020 DPR263 LR R15,R7 SET COUNT M1005 53700020 OI DPRFLAG,DPRLINE TURN ON LAST LINE FLAG M1005 53800020 SPACE 53900020 DPR264 TM 1(R12),X'08' DONT CONVERT BIT ON M1005 54000020 BZ DPR264A YES. BRANCH M1005 54100020 BCTR R15,0 NO. SUBT 1 FOR MVC CNT M1005 54200020 EX R15,DPRMVDAT MOVE DATA TO PRINT BUFFER M1005 54300020 B DPR264B M1005 54400020 DPR264A LR R13,R8 M1005 54500020 LA R14,PB+11 GET OUTPUT ADDR FOR CONVERT M1005 54600020 BAL R10,DPRCNV GO CONVERT TO EBCDIC M1005 54700020 DPR264B BAL R10,DPRWRT M1005 54800020 SPACE 54900020 TM DPRFLAG,DPRLINE LAST LINE? 55000020 BZ DPR265 BR IF NO 55100020 NI DPRFLAG,255-DPRLINE TURN OFF LAST LINE FLAG 55200020 BR R9 RETURN 55300020 SPACE 55400020 DPR265 AH R8,LIMIT POINT TO NEXT LINE OF DATA 55500020 SH R7,LIMIT GET NO BYTES 55600020 B DPR262A GO SET UP FOR LINE PRINT 55700020 SPACE 55800020 DPRMVDAT MVC PB+11(0),4(R8) M1005 55900020 *********************************************************************** 56000020 * ENTER HERE TO MOVE CSW/PSW INFO INTO PRINT BUFFER * 56100020 *********************************************************************** 56200020 SPACE 56300020 DPR450 ST R10,DSAVERGS+20 SAVE R10 56400020 LA R14,WRK GET OUTPUT ADDR FOR CONVERT 56500020 LA R15,8 GET COUNT 56600020 BAL R10,DPRCNV GO CONVERT 56700020 L R10,DSAVERGS+20 RESOTRE R10 56800020 LA R6,WRK 56900020 LA R7,DPRMASK POINT TO CSW MASK 57000020 TM 3(R12),X'01' IS IT PSW PRINT? 57100020 BZ DPR450A BR IF NO 57200020 MVC 0(16,R5),0(R6) PUT PSW IN BUFFER 57300020 B DPR460 57400020 DPR450A MVC 0(19,R5),=C'XX XXXXXX XXXX XXXX' SET UP FOR UNUSED 57500020 TM 0(R7),X'80' KEY GIVEN? 57600020 BO DPR452 BR IF YES 57700020 SPACE 57800020 TM 0(R7),X'40' CMND ADDR GIVEN? 57900020 BO DPR454 BR IF YES 58000020 SPACE 58100020 TM 0(R7),X'20' STATUS GIVEN? 58200020 BO DPR456 BR IF YES 58300020 SPACE 58400020 TM 0(R7),X'10' RESIDUAL COUNT GIVEN? 58500020 BO DPR458 BR IF YES 58600020 BR R11 RETURN 58700020 SPACE 58800020 DPR452 MVC 0(2,R5),0(R6) PUT KEY IN PRINT BUFFER 58900020 LA R6,2(R6) POINT TO CMND ADDR 59000020 SPACE 59100020 DPR454 TM 0(R7),X'40' CMND ADDR GIVEN? 59200020 BZ DPR460 BR IF NO 59300020 MVC 3(6,R5),0(R6) PUT CMND ADDR IN PRINT BUFFER 59400020 LA R6,6(R6) POINT TO STATUS 59500020 SPACE 59600020 DPR456 TM 0(R7),X'20' STATUS GIVEN? 59700020 BZ DPR460 BR IF NO 59800020 MVC 10(4,R5),0(R6) PUT STATUS IN PRINT BUFFER 59900020 LA R6,4(R6) POINT TO RESIDUAL COUNT 60000020 SPACE 60100020 DPR458 TM 0(R7),X'10' RESIDUAL COUNT GIVEN? 60200020 BZ DPR460 BR IF NO 60300020 MVC 15(4,R5),0(R6) PUT RESIDUAL COUNT IN PRINT BUFFER 60400020 DPR460 BR R11 RETURN 60500020 SPACE 60600020 EJECT 60700020 *********************************************************************** 60800020 * RETURN TO SCAN SECTION * 60900020 *********************************************************************** 61000020 SPACE 61100020 DPREXIT L R13,RSLTSA+4 ADDRESS OF CALLER'S SA 61200020 MVC 16(4,R13),RETCODE RETURN CODE TO R15 SAVE AREA LOC 61300020 LM R14,R12,12(R13) RESTORE REGS 61400020 BR R14 RETURN 61500020 SPACE 61600020 *********************************************************************** 61700020 * PRINT RESULTS, DATA LINE VIA PARALLEL PRINT OUTPUT WRITER * 61800020 *********************************************************************** 61900020 SPACE 62000020 DPRWRT ST R13,DSAVERGS SAVE R13 M1010 62100020 LA R13,RSLTSA SAVE AREA ADDRESS M1010 62200020 OI CESWT5,RSLTFLG SET RESULTS LINE PRINT FLAG 62300020 PWRT SIZE=120 A46329 62400021 MVI PB,C' ' CLEAR PRINT BUFFER WITH BLANKS 62500020 MVC PB+1(120),PB 62600020 L R1,SAVER1 RESTORE DPRINT PARAMETER PTR 62700020 L R12,4(R1) ADDRESS OF DPRINT CTRL WORD 62800020 L R13,DSAVERGS RESTORE R13 M1010 62900020 BR R10 RETURN TO CALLING ROUTINE 63000020 EJECT 63100020 *********************************************************************** 63200020 * DPRCNV - HEX TO EBCDIC CONVERT * 63300020 * * 63400020 * CALL SEQ - R13 = INPUT ADDRESS * 63500020 * R14 = OUTPUT ADDRESS * 63600020 * R15 = INPUT BYTE COUNT * 63700020 * * 63800020 * BAL R10,DPRCNV * 63900020 *********************************************************************** 64000020 SPACE 64100020 DPRCNV STM R5,R6,DSAVERGS SAVE R5,R6 64200020 STM R13,R15,DSAVERGS+8 SAVE R13,R14,R15 64300020 SPACE 64400020 LTR R15,R15 COUNT = 0 ? 64500020 BZ DPRCNV8 YES. BYPASS CONVERT 64600020 AR R14,R15 ADD COUNT TO OUTPUT ADDR. 64700020 AR R14,R15 ADD COUNT AGAIN. 64800020 AR R13,R15 ADD COUNT TO INPUT ADDR. 64900020 SR R5,R5 CLEAR R5. 65000020 SR R6,R6 CLEAR R6. 65100020 SPACE 65200020 DPRCNV4 S R14,=F'2' GET ADDR OF LAST BYTE OF OUTPUT. 65300020 BCTR R13,0 GET ADDR OF LAST BYTE OF INPUT. 65400020 IC R6,0(R13) GET HEX BYTE. 65500020 LR R5,R6 PUT IN R5. 65600020 SRL R6,4 GET BITS 0-3 IN R6. 65700020 N R5,=F'15' GET BITS 4-7 IN R5. 65800020 IC R6,DPREBC(R6) CONVERT BITS 0-3 TO EBCDIC CHAR. 65900020 IC R5,DPREBC(R5) CONVERT BITS 4-7 TO EBCDIC CHAR. 66000020 STC R6,0(R14) STORE 1ST EBCDIC CHAR IN OUTPUT. 66100020 STC R5,1(R14) STORE 2ND EBCDIC CHAR IN OUTPUT. 66200020 BCT R15,DPRCNV4 GET NEXT HEX BYTE. 66300020 DPRCNV8 LM R5,R6,DSAVERGS RESTORE R5,R6 66400020 LM R13,R15,DSAVERGS+8 RESTORE R13,R14,R15 66500020 BR R10 RETURN TO CALLER. 66600020 SPACE 66700020 DPREBC DC C'0123456789ABCDEF' HEX TO EBCDIC CONVERT TABLE. 66800020 SPACE 2 66900020 *********************************************************************** 67000020 *