CATALS A.CPMOD 00001000
MACRO 00002000
&NAME CPMOD &TYPEFLE=,&IOAREA2=,&DISK=,&IOPTR=,&RETRY=,&SEPASMB=, X00003000
&RDONLY=,&ASCII=,&RPS= 00004000
LCLB &SWITCH,&RDNLYSW,&IO2SW 00005000
LCLC &NAM,&R 00006000
* IOCS AND DEV INDEPENDANT I/O CPMOD 5745-SC-IOX - REL. 34.0 @DA11146 00007000
AIF ('&ASCII' NE 'YES').NOASCII 00008000
&SWITCH SETB (1) 00009000
AIF ('&RPS' EQ 'SVA').RPSOPTA 00010000
AIF ('&TYPEFLE' EQ 'INPUT').ASCMNOT 00011000
AIF ('&IOAREA2' EQ 'YES').ASCMNOT 00012000
AIF (T'&DISK EQ 'O').ASCMNOT 00013000
AIF (T'&IOPTR NE 'O').ASCMNOT 00014000
AIF ('&RETRY' NE 'NO').ASCMNOT 00015000
AGO .NOASCII 00016000
.ASCMNOT ANOP 00017000
MNOTE 1,'CONFLICTING ASCII SPECIFICATION.MACRO GENERATION *00018000
TERMINATED.' 3-8 00019000
MEXIT 00020000
.RPSOPTA ANOP 00021000
* RPS=SVA, ASCII=YES IMPLIES THE FOLLOWING OPTIONS - DISK, @DL30SMT 00022000
* OUTPUT, NO I/O POINTER, ONE I/O AREA, @DL30SMT 00023000
* NO RETRY, SEPARATE ASSEMBLY AND READ ONLY @DL30SMT 00024000
.NOASCII ANOP 00025000
AIF ('&RPS' EQ 'SVA' AND '&ASCII' NE 'YES' AND T'&IOPTR EQ 'X00026000
O').SET2 00027000
AIF ('&IOAREA2' NE 'YES').TSTRNLY 00028000
.SET2 ANOP 00029000
&IO2SW SETB (1) 00030000
.TSTRNLY ANOP 00031000
AIF (T'&RDONLY EQ 'O' OR '&RDONLY' EQ 'YES').OK1A 00032000
MNOTE 0,'IMPROPER RDONLY. ''YES'' ASSUMED' 3-3 00033000
.OK1A ANOP 00034000
&R SETC 'P' 00035000
AIF (T'&RDONLY EQ 'O' AND '&RPS' NE 'SVA').OK1AA 00036000
&RDNLYSW SETB (1) 00037000
&R SETC 'O' 00038000
AIF ('&RPS' NE 'SVA').OK1AA 00039000
&R SETC 'V' 00040000
.OK1AA ANOP 00041000
AIF (T'&TYPEFLE NE 'O' OR '&RPS' EQ 'SVA').OK1B 00042000
MNOTE 1,'TYPEFLE OMMITTED, OUTPUT ASSUMED-HANDLES INPUT' 00043000
.OK1B ANOP 00044000
AIF (T'&IOPTR NE 'O' AND T'&IOAREA2 NE 'O').OK1 00045000
AGO .OK1C 00046000
.OK1 ANOP 00047000
AIF ('&IOAREA2' EQ 'NO').OK1C 00048000
MNOTE 1,'IMPROPER IOAREA2, ONE IOAREA ASSUMED' 3-3 00049000
.OK1C ANOP 00050000
AIF ('&RPS' EQ 'SVA').RSEP 00051000
AIF ('&SEPASMB' NE 'YES').OK1D 00052000
.RSEP ANOP 00053000
AIF (T'&NAME NE 'O').SEP1 00054000
AIF (NOT &SWITCH).NOASC 00055000
&NAM SETC 'IJJC&R.A1N' 00056000
AGO .SEP 00057000
.NOASC ANOP 00058000
AIF ('&RPS' NE 'SVA').NORPS 00059000
AIF (T'&IOPTR NE 'O').RPSOPTB 00060000
* RPS=SVA IMPLIES THE FOLLOWING OPTIONS - DISK, OUTPUT, @DL30SMT 00061000
* NO I/O POINTER, TWO I/O AREAS, RETRY, NOT ASCII, @DL30SMT 00062000
* SEPARATE ASSEMBLY AND READ ONLY @DL30SMT 00063000
AGO .GRTY1 00064000
.RPSOPTB ANOP 00065000
* RPS=SVA, IOPTR=YES IMPLIES THE FOLLOWING OPTIONS - DISK, @DL30SMT 00066000
* OUTPUT, NO I/O AREAS, RETRY, NOT ASCII, @DL30SMT 00067000
* SEPARATE ASSEMBLY AND READ ONLY @DL30SMT 00068000
AGO .GRTY3 00069000
.NORPS ANOP 00070000
AIF ('&TYPEFLE' NE 'INPUT').GOTPT 00071000
AIF (T'&IOPTR NE 'O').GVARND 00072000
AIF ('&IOAREA2' NE 'YES').GWIN 00073000
AIF (T'&DISK EQ 'O').GND1 00074000
&NAM SETC 'IJJC&R.D2' 00075000
AGO .SEP 00076000
.GVARND ANOP 00077000
AIF (T'&DISK EQ 'O').GNDVAR 00078000
&NAM SETC 'IJJC&R.DV2' 00079000
AGO .SEP 00080000
.GNDVAR ANOP 00081000
&NAM SETC 'IJJC&R.V2' 00082000
AGO .SEP 00083000
.GND1 ANOP 00084000
&NAM SETC 'IJJC&R.2' 00085000
AGO .SEP 00086000
.GOTPT ANOP 00087000
AIF (T'&IOPTR NE 'O').GVAROD 00088000
AIF ('&IOAREA2' NE 'YES').GWOUT 00089000
AIF (T'&DISK EQ 'O').GND3 00090000
AIF ('&RETRY' NE 'NO').GRTY1 00091000
&NAM SETC 'IJJC&R.D0N' 00092000
AGO .SEP 00093000
.GRTY1 ANOP 00094000
&NAM SETC 'IJJC&R.D0' 00095000
AGO .SEP 00096000
.GVAROD ANOP 00097000
AIF (T'&DISK EQ 'O').GNDVO 00098000
AIF ('&RETRY' NE 'NO').GRTY3 00099000
&NAM SETC 'IJJC&R.DV1' 00100000
AGO .SEP 00101000
.GRTY3 ANOP 00102000
&NAM SETC 'IJJC&R.DV' 00103000
AGO .SEP 00104000
.GNDVO ANOP 00105000
AIF ('&RETRY' NE 'NO').GRTYV 00106000
&NAM SETC 'IJJC&R.V1' 00107000
AGO .SEP 00108000
.GRTYV ANOP 00109000
&NAM SETC 'IJJC&R.V' 00110000
AGO .SEP 00111000
.GND3 ANOP 00112000
AIF ('&RETRY' NE 'NO').GRTYN1 00113000
&NAM SETC 'IJJC&R.0N' 00114000
AGO .SEP 00115000
.GRTYN1 ANOP 00116000
&NAM SETC 'IJJC&R.0' 00117000
AGO .SEP 00118000
.GWOUT ANOP 00119000
AIF (T'&DISK EQ 'O').GND5 00120000
AIF ('&RETRY' NE 'NO').GRTY2 00121000
&NAM SETC 'IJJC&R.D1N' 00122000
AGO .SEP 00123000
.GRTY2 ANOP 00124000
&NAM SETC 'IJJC&R.D1' 00125000
AGO .SEP 00126000
.GND5 ANOP 00127000
AIF ('&RETRY' NE 'NO').GRTYN2 00128000
&NAM SETC 'IJJC&R.1N' 00129000
AGO .SEP 00130000
.GRTYN2 ANOP 00131000
&NAM SETC 'IJJC&R.1' 00132000
AGO .SEP 00133000
.GWIN ANOP 00134000
AIF (T'&DISK EQ 'O').GND7 00135000
&NAM SETC 'IJJC&R.D3' 00136000
AGO .SEP 00137000
.GND7 ANOP 00138000
&NAM SETC 'IJJC&R.3' 00139000
AGO .SEP 00140000
.SEP1 ANOP 00141000
&NAM SETC '&NAME' 00142000
.SEP ANOP 00143000
AIF ('&RPS' NE 'SVA').SEPNRPS 00144000
PUNCH ' CATALR &NAM,34.0 ' @D34DEF4 00145000
PUNCH ' PHASE &NAM,*,NOAUTO,SVA ' @DM08008 00146000
AGO .OK1D 00147000
.SEPNRPS ANOP 00148000
PUNCH ' CATALR &NAM,34.0' @D34DEF4 00149000
.OK1D ANOP 00150000
IJJCPTAB DSECT 00151000
AIF (T'&DISK EQ 'O' AND '&RPS' NE 'SVA').TAPES 00152000
IJJCPCCB DS CL30 CCB, ADDR OF LOGIC, DTF TYPE, OPEN SW, FILE NAME 00153000
IJJCOMBT EQU IJJCPCCB+2 1ST COMMUNICATION BYTE 00154000
IJJCMBT2 EQU IJJCPCCB+3 2ND COMMUNICATION BYTE 00155000
IJJCPCB4 EQU IJJCPCCB+4 CSW STATUS 00156000
AIF (NOT &SWITCH).NOASC0 00157000
IJJASCSU EQU IJJCPCCB+6 SYMBOLIC UNIT ADDRESS 3-8 00158000
.NOASC0 ANOP 00159000
IJJCPTCB EQU IJJCPCCB+8 CCW ADDR 00160000
AIF (NOT &SWITCH).NOASC1 00161000
IJJASCII EQU IJJCPCCB+16 ASCII INDICATOR 3-8 00162000
.NOASC1 ANOP 00163000
IJJFLNME EQU IJJCPCCB+22 FILE NAME 00164000
IJJCPDDI EQU IJJCPCCB+29 DASDI DEVICE INDICATORS @DL30SMT 00165000
IJJCPF1 DS CL10 F1 ADDR, WORK AREA OR FLAG & SEQ. NO. & OPEN SW 00166000
IJJCPLD2 EQU IJJCPF1+2 LOAD INSTRUCTION FOR SYSTEM UNIT 00167000
IJJCPXTN DS CL2 XTNT SEQ. NO. OF LAST XTNT & WORK AREA 00168000
IJJCPHCD EQU IJJCPXTN FOR ADJUSTMENT OF PUNCH CODE 00169000
IJJCPSWS DS CL1 DEV IND & RPS SWITCH @DL30SMT 00170000
IJJC2NSW DS CL1 INDICATOR FOR OPEN AND LOGIC 00171000
IJJALSW DS CL1 LOGICAL INDICATORS 00172000
IJJCP2ND DS CL3 I/O AREA 00173000
IJJCPSCW DS CL4 CCW OR WORK AREA 00174000
IJJLOHED DS CL2 HH LOWER HEAD LIMIT 00175000
IJJCPMAX DS CL6 CCHH UPPER LIMIT & BB SEEK ADDR 00176000
IJJCCWE1 EQU IJJCPMAX+2 PUNCH ERROR CCW IF DEVICE IS 2540 PUNCH 00177000
IJJCPSEK DS CL4 CCHH 00178000
IJJCPREC DS CL4 00179000
IJJCCWE2 EQU IJJCPREC PUNCH ERROR CCW2 IF DEVICE IS 2540 PUNCH 00180000
IJJCPSSV EQU IJJCPREC PUNCH STACKER SELECT V CI 00181000
IJJCPSSW EQU IJJCPREC+1 PUNCH STACKER SELECT W CI 00182000
IJJCPEAD EQU IJJCPREC EOF ADD 00183000
IJJCPUPP DS CL4 UPPER LIMIT 00184000
IJJCPRMX DS CL1 NO. OF RECORDS/TRACK 00185000
IJJCPSV1 EQU IJJCPRMX 80 BYTE CARD IMAGE SAVEAREA 00186000
IJJFRSTR DS CL1 1 FIRST REC FOR INPUT OR OUTPUT 00187000
IJJCPADJ DS CL2 ADJUSTMENT FOR CCW ADDRESS 00188000
IJJCPCNT DS CL4 CCHH COUNT FIELD 00189000
IJJCPCTR DS CL2 RECORD & KEY LENGTH 00190000
IJJCPDAT DS CL2 DATA LENGTH 00191000
IJJLOAD DS CL4 00192000
IJJCPSST DS CL24 SEEK, SEARCH, TIC CCW'S 00193000
IJJCPCCW DS CL16 CCW'S FOR INPUT AND OUTPUT 00194000
IJJCPVER DS CL24 VERIFY CCW'S 00195000
IJJECCW1 DS CL8 2540 PUNCH ERROR CCW1 00196000
IJJCPSV2 EQU IJJECCW1 80 BYTE CARD IMAGE SAVEAREA 00197000
IJJECCW2 DS CL8 2540 PUNCH ERROR CCW2 00198000
IJJSAVEA DS CL64 RESERVED FOR SAVE AREA 00199000
SPACE 2 @DL30SMT 00200000
AIF (NOT &RDNLYSW).ELIM 00201000
AIF ('&RPS' EQ 'SVA').RPSDSCT 00202000
IJJXNTAB DSECT @DL30SMT 00203000
* USER REGISTER SAVE AREA FOR READ ONLY @DL30SMT 00204000
DS 0F @DL30SMT 00205000
IJJCPSAF DS 0CL48 USER REGISTER SAVE AREA @DL30SMT 00206000
DS CL20 @DL30SMT 00207000
IJJCPTMP DS CL4 ADDRESS WORK AREA @DL30SMT 00208000
DS CL4 DTF ADDR ADDR - TEMP @DL30SMT 00209000
DS CL1 PARM LIST END INDICATOR @DL30SMT 00210000
AIF (&SWITCH).ASC1 00211000
DS CL19 NOT USED @DL30SMT 00212000
AGO .DSEND1 00213000
.ASC1 ANOP 00214000
DS CL2 NOT USED @DL30SMT 00215000
IJJASCSW DS CL1 ASCII SWITCH @DL30SMT 00216000
IJJASCSV DS CL4 ASCII SAVE AREA @DL30SMT 00217000
DS CL12 NOT USED @DL30SMT 00218000
.DSEND1 ANOP 00219000
IXEND EQU *-IJJXNTAB LENGTH OF WORK SAVE AREA@DL30SMT 00220000
SPACE 2 @DL30SMT 00221000
AGO .ELIM 00222000
.RPSDSCT ANOP 00223000
IJJXNTAB DSECT @DL30SMT 00224000
* RPS DTF EXTENSION WORK AREA @DL30SMT 00225000
DS CL32 SEEK, SET SECTOR, SEARCH@DL30SMT 00226000
* AND TIC CCW'S @DL30SMT 00227000
IJJXRDWR DS 0D READ/WRITE CCW @DL30SMT 00228000
DS CL6 @DL30SMT 00229000
IJJLGFLD DS CL2 . RECORD LENGTH @DL30SMT 00230000
DS CL72 BALANCE OF CCW CHAIN @DL30SMT 00231000
DS CL52 RESERVED @DL30SMT 00232000
AIF (&SWITCH).ASC2 00233000
IJJCPTMP DS CL4 ADDRESS WORK AREA @DL30SMT 00234000
AGO .NASC1 00235000
.ASC2 ANOP 00236000
IJJASCSV DS CL4 ASCII SAVE AREA @DL30SMT 00237000
.NASC1 ANOP 00238000
IJJXDTF DS CL4 DTF POINTER @DL30SMT 00239000
DS CL1 SECTOR VALUE @DL30SMT 00240000
AIF (&SWITCH).ASC3 00241000
DS CL3 @DL30SMT 00242000
AGO .NASC2 00243000
.ASC3 ANOP 00244000
DS CL2 @DL30SMT 00245000
IJJASCSW DS CL1 ASCII SWITCH @DL30SMT 00246000
.NASC2 ANOP 00247000
DS CL4 ORIGINAL CCW CHAIN PTR @DL30SMT 00248000
DS CL4 ORIGINAL LOGIC MOD PTR @DL30SMT 00249000
IJJXNSAV DS 0CL72 REGISTER SAVE AREA @DL30SMT 00250000
DS CL8 @DL30SMT 00251000
IJJX1312 DS 0CL64 REGISTERS 13 THRU 12 @DL30SMT 00252000
IJJXRG13 DS CL4 REG 13 @DL30SMT 00253000
IJJXRG14 DS CL16 REGS 14, 15, 0, 1 @DL30SMT 00254000
IJJCPSAF DS CL20 REGS 2, 3, 4, 5, 6 @DL30SMT 00255000
DS CL24 REGS 7, 8, 9, 10, 11, 12@DL30SMT 00256000
IXEND EQU *-IJJXNTAB LENGTH OF RPS EXTENSION @DL30SMT 00257000
SPACE 2 @DL30SMT 00258000
AGO .ELIM 00259000
.TAPES ANOP 00260000
IJJCPCCB DS CL16 THE CCB 00261000
IJJCOMBT EQU IJJCPCCB+2 1ST COMMUNICATION BYTE 00262000
IJJCMBT2 EQU IJJCPCCB+3 2ND COMMUNICATION BYTE 00263000
IJJSTSBT EQU IJJCPCCB+4 STATUS BYTES 00264000
IJJLOGMD DS CL4 ADDRESS OF LOGIC MODULE 00265000
IJJDTFTY DS CL1 DTF TYPE 00266000
IJJSWITH DS CL1 NO. OF I/O AREAS, DEVICE TYPE 00267000
IJJFLNME DS CL8 FILENAME OUTPUT 00268000
IJJEOFAD EQU IJJFLNME+2 EOF ADDRESS INPUT 00269000
IJJPCHCD DS CL1 TO OBTAIN CORRECT PUNCH CODES 00270000
IJJCPLSW DS CL2 INDICATORS FOR LOGIC MODULE 00271000
IJJALTIO DS CL3 SECOND I/O AREA 00272000
IJJLOAD DS CL4 INSTRUCTION TO LOAD USER I/O REG 00273000
IJJCPCCW DS CL8 THE CCW 00274000
IJJIOARE EQU IJJCPCCW CCW DATA ADDRESS 00275000
AIF ('&TYPEFLE' EQ 'INPUT').ELIM 00276000
IJJCCWE1 DS CL8 PUNCH ERROR CCW1-OUTPUT 00277000
IJJCCWE2 DS CL8 PUNCH ERROR CCW2 00278000
IJJCPSSV EQU IJJCCWE2 PUNCH STACKER SELECT V CI 00279000
IJJCPSSW EQU IJJCCWE2+1 PUNCH STACKER SELECT W CI 00280000
IJJCPSV1 DS CL80 00281000
IJJCPSV2 DS CL80 00282000
.ELIM ANOP 00283000
AIF (T'&NAME NE 'O').USRNM 00284000
AIF (NOT &SWITCH).NOTASC 00285000
IJJC&R.A1N CSECT @DL30SMT 00286000
AGO .STRT 00287000
.NOTASC ANOP 00288000
AIF ('&RPS' NE 'SVA').NOTRPS 00289000
AIF (T'&IOPTR NE 'O').RTY3 00290000
AGO .RTY1 00291000
.NOTRPS ANOP 00292000
AIF ('&TYPEFLE' NE 'INPUT').OTPT 00293000
AIF (T'&IOPTR NE 'O').VARND 00294000
AIF ('&IOAREA2' NE 'YES').WIN 00295000
AIF (T'&DISK EQ 'O').ND1 00296000
IJJC&R.D2 CSECT 3-3 00297000
IJJC&R.D3 EQU * 3-3 00298000
ENTRY IJJC&R.D3 3-3 00299000
AGO .STRT 00300000
.VARND ANOP 00301000
AIF (T'&DISK EQ 'O').NDVAR 00302000
IJJC&R.DV2 CSECT 3-3 00303000
AGO .STRT 00304000
.NDVAR ANOP 00305000
IJJC&R.V2 CSECT 3-3 00306000
AGO .STRT 00307000
.ND1 ANOP 00308000
IJJC&R.2 CSECT 3-3 00309000
IJJC&R.3 EQU * 3-3 00310000
ENTRY IJJC&R.3 3-3 00311000
AGO .STRT 00312000
.OTPT ANOP 00313000
AIF (T'&IOPTR NE 'O').VAROD 00314000
AIF ('&IOAREA2' NE 'YES').WOUT 00315000
AIF (T'&DISK EQ 'O').ND3 00316000
AIF ('&RETRY' NE 'NO').RTY1 00317000
IJJC&R.D0N CSECT 3-3 00318000
IJJC&R.D1N EQU * 3-3 00319000
IJJC&R.D2 EQU * 3-3 00320000
IJJC&R.D3 EQU * 3-3 00321000
ENTRY IJJC&R.D1N,IJJC&R.D2,IJJC&R.D3 3-3 00322000
AGO .STRT 00323000
.RTY1 ANOP 00324000
IJJC&R.D0 CSECT 3-3 00325000
AIF ('&RPS' EQ 'SVA').STRT 00326000
IJJC&R.D0N EQU * 3-3 00327000
IJJC&R.D1 EQU * 3-3 00328000
IJJC&R.D1N EQU * 3-3 00329000
IJJC&R.D2 EQU * 3-3 00330000
IJJC&R.D3 EQU * 3-3 00331000
ENTRY IJJC&R.D1,IJJC&R.D2,IJJC&R.D3,IJJC&R.D0N,IJJC&R.D1N 3-3 00332000
AGO .STRT 00333000
.VAROD ANOP 00334000
AIF (T'&DISK EQ 'O').NDVO 00335000
AIF ('&RETRY' NE 'NO').RTY3 00336000
IJJC&R.DV1 CSECT 3-3 00337000
IJJC&R.DV2 EQU * 3-3 00338000
ENTRY IJJC&R.DV2 3-3 00339000
AGO .STRT 00340000
.RTY3 ANOP 00341000
IJJC&R.DV CSECT 3-3 00342000
AIF ('&RPS' EQ 'SVA').STRT 00343000
IJJC&R.DV1 EQU * 3-3 00344000
IJJC&R.DV2 EQU * 3-3 00345000
ENTRY IJJC&R.DV1,IJJC&R.DV2 3-3 00346000
AGO .STRT 00347000
.NDVO ANOP 00348000
AIF ('&RETRY' NE 'NO').RTYV 00349000
IJJC&R.V1 CSECT 3-3 00350000
IJJC&R.V2 EQU * 3-3 00351000
ENTRY IJJC&R.V2 3-3 00352000
AGO .STRT 00353000
.RTYV ANOP 00354000
IJJC&R.V CSECT 3-3 00355000
IJJC&R.V1 EQU * 3-3 00356000
IJJC&R.V2 EQU * 3-3 00357000
ENTRY IJJC&R.V1,IJJC&R.V2 3-3 00358000
AGO .STRT 00359000
.ND3 ANOP 00360000
AIF ('&RETRY' NE 'NO').RTYN1 00361000
IJJC&R.0N CSECT 3-3 00362000
IJJC&R.1N EQU * 3-3 00363000
IJJC&R.2 EQU * 3-3 00364000
IJJC&R.3 EQU * 3-3 00365000
ENTRY IJJC&R.1N,IJJC&R.2,IJJC&R.3 3-3 00366000
AGO .STRT 00367000
.RTYN1 ANOP 00368000
IJJC&R.0 CSECT 3-3 00369000
IJJC&R.0N EQU * 3-3 00370000
IJJC&R.1 EQU * 3-3 00371000
IJJC&R.1N EQU * 3-3 00372000
IJJC&R.2 EQU * 3-3 00373000
IJJC&R.3 EQU * 3-3 00374000
ENTRY IJJC&R.1,IJJC&R.2,IJJC&R.3,IJJC&R.0N,IJJC&R.1N 3-3 00375000
AGO .STRT 00376000
.WOUT ANOP 00377000
AIF (T'&DISK EQ 'O').ND5 00378000
AIF ('&RETRY' NE 'NO').RTY2 00379000
IJJC&R.D1N CSECT 3-3 00380000
IJJC&R.D3 EQU * 3-3 00381000
ENTRY IJJC&R.D3 3-3 00382000
AGO .STRT 00383000
.RTY2 ANOP 00384000
IJJC&R.D1 CSECT 3-3 00385000
IJJC&R.D1N EQU * 3-3 00386000
IJJC&R.D3 EQU * 3-3 00387000
ENTRY IJJC&R.D1N,IJJC&R.D3 3-3 00388000
AGO .STRT 00389000
.ND5 ANOP 00390000
AIF ('&RETRY' NE 'NO').RTYN2 00391000
IJJC&R.1N CSECT 3-3 00392000
IJJC&R.3 EQU * 3-3 00393000
ENTRY IJJC&R.3 3-3 00394000
AGO .STRT 00395000
.RTYN2 ANOP 00396000
IJJC&R.1 CSECT 3-3 00397000
IJJC&R.1N EQU * 3-3 00398000
IJJC&R.3 EQU * 3-3 00399000
ENTRY IJJC&R.1N,IJJC&R.3 3-3 00400000
AGO .STRT 00401000
.WIN ANOP 00402000
AIF (T'&DISK EQ 'O').ND7 00403000
IJJC&R.D3 CSECT 3-3 00404000
AGO .STRT 00405000
.ND7 ANOP 00406000
IJJC&R.3 CSECT 3-3 00407000
AGO .STRT 00408000
.USRNM ANOP 00409000
&NAME CSECT 00410000
.STRT ANOP 00411000
AIF (T'&DISK EQ 'O' AND '&RPS' NE 'SVA').TPESY 00412000
USING *,IJJCPBAS BASE FOR LOGIC 00413000
USING IJJCPTAB,IJJCPTBB ESTABLISH BASE FOR TABLE 00414000
AIF (NOT &RDNLYSW).NRPS1 00415000
USING IJJXNTAB,IJJCPSAV REG 13 WORK & SAVE BASE @DL30SMT 00416000
.NRPS1 ANOP 00417000
AIF ('&TYPEFLE' EQ 'INPUT' AND '&RPS' NE 'SVA').ISDIF 00418000
DS 0F 00419000
IJJERRAD DC C'$$BERRTN' ERROR ROUTINE NAME 00420000
AGO .CMTT1 00421000
.ISDIF ANOP 00422000
AIF (&RDNLYSW).BK001 00423000
DC F'0' USED FOR DISPLACEMENT @DM11837 00424000
.BK001 ANOP 00425000
IJJSKP DC H'04' CONSTANT 00426000
DC H'0' 00427000
.CMTT1 ANOP 00428000
B IJJCPGP ENTRY FOR GET 00429000
B IJJCPGP ENTRY FOR PUT 00430000
AIF ('&TYPEFLE' EQ 'INPUT').NOCLOS 00431000
AIF (NOT &IO2SW OR T'&IOPTR NE 'O').CLOS1 00432000
B IJJCLDU TEST 3540 @DA08318 00433000
IJJCPNC XC IJJCPDAT(2),IJJCPDAT DSK CLOSE, ZERO DATA LTH @DA08318 00434000
BAL IJJCPRGA,IJJCPDSK WRITE FILEMARK @DM08144 00435000
AGO .CLOS2 00436000
.CLOS1 ANOP 00437000
B IJJCLDU TEST 3540 @DA08318 00438000
IJJCPNC XC IJJCPDAT(2),IJJCPDAT DSK CLOSE, ZERO DATA LGTH@DA08318 00439000
BAL IJJBRG,IJJCPDSK WRITE FILEMARK @DM08144 00440000
.CLOS2 ANOP 00441000
AIF ('&RPS' EQ 'SVA').RPS1 00442000
LM IJJCP1ST,IJJCPLST,IJJCPSAF RESTORE REGS @DM08144 00443000
IJJCPNCL EQU * @DM08144 00444000
AGO .CLOS3 00445000
.RPS1 ANOP 00446000
LM IJJCPSAV,IJJREG12,IJJXRG13 RESTORE REGS @DM08144 00447000
IJJCPNCL EQU * @DM08144 00448000
.CLOS3 ANOP 00449000
AIF (&RDNLYSW).SVC9 00450000
TM IJJCPCCB+16,IJJXBKSP Q-FROM DISK BKSP RTN @DM08144 00451000
BCR 1,IJJCPRTR YES,RETURN BY REG 14 @DM08144 00452000
.SVC9 ANOP 00453000
SVC 9 RETURN TO CLOSE @DM08144 00454000
IJJCLDU CLI IJJCPF1-1,IJJCPFDT 3540 DEVICE @DM08144 00455000
BE IJJCPNCL YES,3540, GET OUT @DM08144 00456000
AIF ('&RPS' EQ 'SVA').RPS2 00457000
STM IJJCP1ST,IJJCPLST,IJJCPSAF SAVE USER REGS @DM08144 00458000
AGO .CLOS4 00459000
.RPS2 ANOP 00460000
L IJJCPTBB,IJJCPTCB LOAD RPS EXIT ADDR @DM08144 00461000
ST IJJCPSAV,IJJONE92(IJJCPTBB) SAVE REG 13 @DM08144 00462000
LR IJJCPSAV,IJJCPTBB LOAD EXTENS. BASE @DM08144 00463000
L IJJCPTBB,IJJXDTF RESTORE DTF ADDRESS @DM08144 00464000
STM IJJCPRTR,IJJREG12,IJJXRG14 SAVE REGS @DM08144 00465000
.CLOS4 ANOP 00466000
AIF (NOT &IO2SW OR T'&IOPTR NE 'O').CLOS5 00467000
B IJJCPNC PROCEED CLOSE @DA08318 00468000
SPACE 1 @DM08144 00469000
AGO .NOCLOS 00470000
.CLOS5 ANOP 00471000
B IJJCPNC PROCEED CLOSE @DA08318 00472000
SPACE 1 @DM08144 00473000
.NOCLOS ANOP 00474000
AIF ('&RPS' EQ 'SVA').RPS3 00475000
DS 0H @D34DE97 00476000
DC X'FFFFD9E5FFFF' LOGIC MOD LEVEL ID @D34DE97 00477000
DC X'3400' LOGIC MOD RELEASE LVL @D34DE97 00478000
IJJCPGP STM IJJCP1ST,IJJCPLST,IJJCPSAF SAVE USER REGISTERS 3-3 00479000
AGO .ASCLR2 00480000
.RPS3 ANOP 00481000
DS 0H @D34DE97 00482000
DC X'FFFFD9E5FFFF' LOGIC MOD LEVEL ID @D34DE97 00483000
DC X'3400' LOGIC MOD RELEASE LVL @D34DE97 00484000
IJJCPGP L IJJCPTBB,IJJCPTCB LOAD RPS EXT ADDR @DL30SMT 00485000
ST IJJCPSAV,IJJONE92(IJJCPTBB) SAVE REG 13 @DL30SMT 00486000
LR IJJCPSAV,IJJCPTBB LOAD EXTENSION BASE @DL30SMT 00487000
L IJJCPTBB,IJJXDTF RESTORE DTF ADDRESS @DL30SMT 00488000
STM IJJCPRTR,IJJREG12,IJJXRG14 SAVE REGISTERS @DL30SMT 00489000
.ASCLR2 ANOP 00490000
AIF (NOT &SWITCH).BK007 00491000
AIF (NOT &RDNLYSW).BK007 00492000
NI IJJASCSW,IJJASCOF CLEAR ASCII SWITCH @DL30SMT 00493000
.BK007 ANOP 00494000
L IJJCPCWR,IJJCPTCB LOAD CCW ADDRESS 00495000
AIF (NOT &SWITCH).NOASC2 00496000
CLI IJJCPSWS,IJJASCTP IS DEVICE TAPE 3-8 00497000
BNE IJJASCNO NOT A TAPE 3-8 00498000
TM IJJASCII,IJJASCIS ASCII SPECIFIED 3-8 00499000
BZ IJJASCNO NO 3-8 00500000
TM IJJASCSU,IJJASCSY Q- SYSTEM UNIT ON ASCII TAPE 3-8 00501000
BO IJJASCOK NO,BRANCH 3-8 00502000
SVC 50 YES, CANCEL JOB 3-8 00503000
IJJASCOK OI IJJASCSW,IJJASCMK TURN ASCII SWITCH ON 3-8 00504000
ST IJJCPTBB,IJJASCSV SAVE REGISTER 3-8 00505000
COMRG 3-8 00506000
L IJJASCR2,136(IJJCPTBB) POINTER TO COMREG EXTENSION 3-8 00507000
L IJJASCR2,44(IJJASCR2) POINTER TO TRANSLATE TABLE 3-8 00508000
L IJJCPTBB,IJJASCSV RESTORE REGISTER 3-8 00509000
IJJASCNO CLI IJJCPF1,IJJCPSYT IS DISK POSSIBLE WITH THIS TABLE 3-8 00510000
AGO .NOASC3 00511000
.NOASC2 ANOP 00512000
CLI IJJCPF1,IJJCPSYT IS DISK POSSIBLE WITH THIS TABLE 3-8 00513000
.NOASC3 ANOP 00514000
AIF (NOT &IO2SW OR T'&IOPTR NE 'O').STWON 00515000
BE IJJCPST NO 00516000
AGO .ADDJ 00517000
.STWON ANOP 00518000
BE IJJCPIO NO 00519000
.ADDJ ANOP 00520000
AH IJJCPCWR,IJJCPADJ ADJUST ADDRESS FOR TABLE TYPE 00521000
AIF ('&RPS' NE 'SVA').NRPS2 00522000
LA IJJCPCWR,IJJEIGHT(IJJCPCWR) ADD MORE FOR RPS @DL30SMT 00523000
.NRPS2 ANOP 00524000
AIF ('&TYPEFLE' EQ 'INPUT' AND '&RPS' NE 'SVA').INMD 00525000
AIF (NOT &IO2SW OR T'&IOPTR NE 'O').WOTMD 00526000
IJJCPST TM IJJALSW,IJJCP2FT OVERLAP AND/OR FIRST PASS 00527000
BO IJJCPSLO NOT FIRST PASS, BUT OVERLAP 00528000
BAL IJJCPRGA,IJJCPIO GET I/O 00529000
IJJCPSLO BAL IJJBRG,IJJWCHED WAIT FOR CHANNEL END 00530000
IJJCPUNX TM IJJCPCB4,IJJCPNEX HAS UNIT EXCEPTION OCCURRED 00531000
BO IJJCPMG1 YES 3-8 00532000
TM IJJALSW,X'80' Q - INPUT OR OUTPUT FILE 3-10 00533000
BZ IJJCPTOV IF OUTPUT FILE BYPASS /* CHECK 3-10 00534000
CLI IJJCPDDI,IJJCPFDT DEVICE 3540 @DL30SMT 00535000
BNE IJJCPF01 NO, CONTINUE @DL29R05 00536000
TM IJJCMBT2,IJJCHEND ' SPECIAL RECORD ' @DL29R05 00537000
BZ IJJCPF01 NO, CONTINUE @DL29R05 00538000
OI IJJCPLD2+6,IJJCPX40 SET DELETE REC SW @DL29R05 00539000
XI IJJCMBT2,IJJCHEND SET OFF SPECIAL REC SW @DL29R05 00540000
AIF ('&RPS' NE 'SVA').NRPS3 00541000
IJJCPF01 L IJJCTL,IJJXRDWR LOAD INPUT AREA ADDRESS @DL30SMT 00542000
AGO .RPS6 00543000
.NRPS3 ANOP 00544000
IJJCPF01 L IJJCTL,IJJCPCCW LOAD I/O AREA ADDR @DL29R05 00545000
.RPS6 ANOP 00546000
LA IJJCTL,0(IJJCTL) CLEAR HI ORDER BTYE @DL30SMT 00547000
CLC 0(3,IJJCTL),IJJEOF HAS /* BEEN READ @DA10192 00548000
BNE IJJCPTOV NO 3-8 00549000
IJJCPMG1 TM IJJCPSWS,IJJCPRT IS DEVICE A PRINTER 3-8 00550000
BO IJJCPTOV YES HANDLED BY LINE COUNT 00551000
TM IJJALSW,IJJTPHLT IS THIS SYSPCH OR SYSLST ON OUTPUT TAPE 00552000
BO IJJCPEOV TO EOV ROUTINE 00553000
IJJCPEND EQU * EOF PT FOR 3540 @DL29R05 00554000
L IJJCPZRO,IJJCPEAD EOF ADDRESS TO RETURN REGISTER 00555000
B IJJCEXEC BRANCH TO EOF ADDRESS 3-10 00556000
IJJCPEOV LR IJJDTFPS,IJJCPTBB ADDRESS OF DTF TABLE TO REGISTER 00557000
LH IJJZRO,6(IJJDTFPS) PASS LOGICAL UNIT AND CLASS 00558000
LA IJJCPTBB,IJJFLNME ADDRESS OF MULTI-VOLUME ROUTINE NAME 00559000
SVC 2 CALL IN TRANSIENT TO HANDLE EOV CONDITION 00560000
LR IJJCPTBB,IJJDTFPS RESTORE DTF TABLE ADDRESS TO REGISTER1 00561000
IJJCPTOV TM IJJALSW,IJJCPOLP ARE THER E 2 I/O AREAS 00562000
BZ IJJRTRN NO 00563000
XC IJJCP2ND(3),1(IJJCPCWR) SWAP I/O AREAS 00564000
XC 1(3,IJJCPCWR),IJJCP2ND NEW I/O AREA ADDRESS TO CCW 00565000
EX 0,*-12 COMPLETE THE EXCHANGE 00566000
BAL IJJCPRGA,IJJCPIO GET I/O 00567000
IJJRTRN LR IJJZRO,IJJCPRTR SAVE RETURN REGISTER 00568000
L IJJCPRTR,IJJALSW NEXT I/O AREA 00569000
TM IJJCPSWS,IJJCPTPH IS DEVICE A PRINTER OR PUNCH 00570000
BZ IJJCEXEC BRANCH TO EOF ADDRESS 3-10 00571000
BCTR IJJCPRTR,0 POINT TO CONTROL CHAR 3-10 00572000
AIF ('&RPS' EQ 'SVA').RPS7 00573000
IJJCEXEC LM IJJCP1ST,IJJCPLST,IJJCPSAF RESTORE REGISTERS 3-3 00574000
AGO .BK009B 00575000
.RPS7 ANOP 00576000
IJJCEXEC LM IJJCP1ST,IJJREG12,IJJCPSAF RESTORE REGISTERS @DL30SMT 00577000
L IJJCPSAV,IJJXRG13 RESTORE EXTN ADDR @DL30SMT 00578000
.BK009B ANOP 00579000
TM IJJCPF1,IJJCPSYT IS THIS A SYSTEM UNIT TABLE 00580000
BO IJJCPSLD YES 00581000
TM IJJCPSWS,IJJCPMFC TEST MFCM/U CI 00582000
BNZ IJJCPSLD YES CI 00583000
EX 0,IJJLOAD LOAD I/O REG 00584000
B IJJCPRES 00585000
IJJCPSLD EX 0,IJJCPLD2 LOAD I/O REGISTER 00586000
IJJCPRES LR IJJCPRTR,IJJCPZRO RESTORE RETURN REGISTER 00587000
OI IJJALSW,IJJCPNTF INDICATE NOT FIRST PASS 00588000
CLI IJJCPF1-1,IJJCPFDT 3540 DEVICE ? @DL29R05 00589000
BNE IJJCPF50 NO, CONTINUE @DL29R05 00590000
TM IJJCPLD2+6,IJJCPX40 'DELETE REC' SW ON ? @DL29R05 00591000
BZ IJJCPF50 NO, CONTINUE @DL29R05 00592000
XI IJJCPLD2+6,IJJCPX40 SET OFF DELETE SW @DL29R05 00593000
B IJJCPGP IGNORE READ @DL29R05 00594000
IJJCPF50 EQU * TO USER @DL29R05 00595000
BR IJJCPRTR TO USER 00596000
.WOTMD ANOP 00597000
AIF (T'&IOPTR EQ 'O').NDVRY 00598000
IJJCPIO TM IJJCPSWS,IJJDSKTP IS THIS A TAPE OR A DISK 00599000
BZ IJJCPSTO NO 00600000
TM IJJALSW,IJJLSTPH IS THIS SYSLST OR SYSPCH 00601000
BZ IJJCPSTO NO 00602000
BCTR IJJIOPTR,IJJIOPTR POINT TO CONTROL CHARACTER 00603000
IJJCPSTO ST IJJIOPTR,IJJCPTMP STORE DATA ADDRESS 3-3 00604000
MVC 1(3,IJJCPCWR),IJJCPTMP+1 MOVE ADDRESS TO CCW 3-3 00605000
TM IJJC2NSW,IJJCPRTD IS DEVICE READER, TAPE OR DISK 00606000
AGO .IOCOM 00607000
.NDVRY ANOP 00608000
IJJCPIO TM IJJC2NSW,IJJCPRTD IS DEVICE READER, TAPE OR DISK 00609000
.IOCOM ANOP 00610000
BO IJJCPDSK A DISK 00611000
BM IJJCPCAL DEVICE IS READER OR TAPE 00612000
TM IJJALSW,IJJCPEJT EJECT NEEDED FOR READER-PUNCH CI 00613000
BZ IJJCPMF1 NO EJECT NEEDED CI 00614000
NI IJJALSW,IJJCPNEJ INDICATE NO EJECT NEEDED CI 00615000
BAL IJJBRG,IJJCAL2 EJECT FIRST CARD CI 00616000
IJJCPMF1 L IJJCPCTL,0(IJJCPCWR) MUST BE PUNCH OR PRINTER CI 00617000
BCTR IJJCPCTL,0 POINT TO CONTROL CHAR 00618000
TM IJJCPSWS,IJJCPMFC TEST MFCM/U CI 00619000
BZ IJJCPTAS NO, TEST ASA CONTROL CHAR CI 00620000
OI IJJCPSCW+4,X'60' SET CHAIN BIT IN 1ST CCW CI 00621000
MVC IJJCPSCW(1),IJJCPSSW STACKER SELECT W TO 1ST CCW CI 00622000
CLI 0(IJJCPCTL),IJJCPTCW TEST W CONTROL CHAR CI 00623000
BE IJJCPAD8 RETURN CI 00624000
MVC IJJCPSCW(1),IJJCPSSV STACKER SELECT V TO 1ST CCW CI 00625000
CLI 0(IJJCPCTL),IJJCPTCV TEST V CONTROL CHAR CI 00626000
BE IJJCPAD8 RETURN CI 00627000
MVC IJJCPSCW(1),0(IJJCPCTL) CURRENT CTL CHAR TO 1ST CCW CI 00628000
IJJCPAD8 B IJJCPCAL BRANCH TO GET I/O CI 00629000
IJJCPTAS EQU * CI 00630000
LR IJJCMP,IJJCPZRO 00631000
IC IJJCPZRO,0(IJJCPCTL) CONTROL CHAR TO REG 00632000
LA IJJCPCTL,IJJNUMCH NO. OF CHAR TO COMPARE 00633000
IJJCPLUP IC IJJCMP,IJJCPASA(IJJCPCTL) ASA CHAR FROM TABLE 00634000
CR IJJCMP,IJJCPZRO SAME CHAR 00635000
BE IJJCFOND YES-THIS IS THE ONE 00636000
BCT IJJCPCTL,IJJCPLUP NOT THE ONE, CHECK NEXT 00637000
IJJCFOND CH IJJCPCTL,IJJSKP IS COMMAND A SKIP 00638000
BNL IJJMOV NO, NOT A SKIP CI 00639000
MVI 0(IJJCPCWR),IJJCPSP SPACE COMMAND TO CCW 00640000
BAL IJJBRG,IJJCAL2 SPACE FROM CHANNEL 00641000
IJJMOV LA IJJCPCTL,IJJCP360(IJJCPCTL) CONTROL CHAR ADDR 00642000
MVC 0(1,IJJCPCWR),0(IJJCPCTL) CONTROL CHARACTER TO CCW 00643000
OC 0(1,IJJCPCWR),IJJCPHCD PRODUCE CORRECT PUNCH CODE 00644000
AIF ('&RETRY' EQ 'NO' AND &SWITCH).NNRTY1 00645000
AIF ('&RETRY' EQ 'NO' AND '&RPS' NE 'SVA').NNRTY1 00646000
TM IJJALSW,IJJ2540 IS DEVICE 2540 PUNCH 00647000
BZ IJJCPCAL NO, GET I/O 00648000
IJJCPWDE TM IJJCOMBT,IJJDEVED WAIT FOR DEVICE END 00649000
BO *+6 00650000
SVC 7 WAIT 00651000
TM IJJCMBT2,IJJCP010 TEST IF PUNCH ERROR 00652000
BZ IJJSAVE NO, SAVE CARD IMAGES AND COMMAND CODES 00653000
IJJERRTN CLC IJJCPDAT(2),IJJDTZRO ENTERED FROM CLOSE 3-8 00654000
BNE IJJERROR NO, BRANCH TO ERROR RTN 3-8 00655000
OI IJJFRSTR,IJJNOEOF INDICATE NO EOF WRITTEN 3-8 00656000
BR IJJBRG RETURN TO CORRECT INSTRUCTION 3-8 00657000
IJJERROR LR IJJBRG,IJJCPTBB ADDRESS OF DTF TABLE TO REG 4 3-8 00658000
LA IJJCPTBB,IJJERRAD ADDRESS OF ERROR RECOVERY ROUTINE NAME 00659000
SVC 2 CALL IN TRANSIENT ROUTINE 00660000
LR IJJCPTBB,IJJBRG RESTORE DTF TABLE ADDRESS TO REGISTER 1 00661000
IJJSAVE MVC IJJCCWE2(1),IJJCCWE1 OPCODE 1ST ERR CCW INTO 2ND ERR CCW 00662000
MVC IJJCCWE1(1),IJJCPSCW OPCODE CURRENT CCW TO 1ST ERR CCW 00663000
MVC IJJCPSV2(80),IJJCPSV1 CARD IMAGE FROM SVAREA1 TO SVAREA2 00664000
L IJJIOADR,IJJCPSCW CALCULATE CURRENT I/O AREA ADDRESS 00665000
MVC IJJCPSV1(80),0(IJJIOADR) SAVE CURRENT CARD IMAGE 00666000
.NNRTY1 ANOP 00667000
AIF (NOT &IO2SW OR T'&IOPTR NE 'O').ONE 00668000
IJJCPCAL SVC 0 GET I/O 00669000
TM IJJCPSWS,IJJCPRT IS THIS A PRINTER 00670000
BCR 8,IJJCPRGA NOT PRINTER, GO TO CORRECT INSTRUCT 00671000
BAL IJJBRG,IJJWCHED A PRINTER, WAIT FOR CHANNEL END 00672000
MVI 0(IJJCPCWR),IJJCPRTC MOVE PRINT COMMAND TO CCW 00673000
SVC 0 START I/O FOR ACTUAL PRINT 00674000
BR IJJCPRGA TO CORRECT INSTRUCTION 00675000
IJJCAL2 SVC 0 START I/O FOR CONTROL 00676000
IJJWCHED TM IJJCOMBT,IJJCHEND TEST FOR CHANNEL END 00677000
BO *+6 00678000
SVC 7 WAIT 00679000
TM IJJCPSWS,IJJCPMFC MULTIFUNC CARD MCH ? @DA11146 00680000
BZR IJJBRG IF NOT BRANCH @DA11146 00681000
TM IJJALSW,X'80' INPUT OR OUTPUT FILE ? @DA11146 00682000
BOR IJJBRG IF INPUT FILE BRANCH @DA11146 00683000
LA IJJCPCWR,IJJCPSCW GET CCW ADDR. @DA11146 00684000
ST IJJCPCWR,IJJCPTCB STORE CCW ADDR. @DA11146 00685000
AH IJJCPCWR,IJJCPADJ ADJUST CCW ADDR. @DA11146 00686000
BR IJJBRG RETURN TO CORRECT INSTRUCTION 00687000
AGO .COMT 00688000
.ONE ANOP 00689000
IJJCPCAL BAL IJJBRG,IJJCAL2 GET I/O 00690000
TM IJJCPSWS,IJJCPRT IS THIS A PRINTER 00691000
BZ IJJUNITX NOT A PRINTER 00692000
IJJPWT MVI 0(IJJCPCWR),IJJCPRTC PRINTER, MOVE PRINT COMMAND TO CCW 00693000
BAL IJJBRG,IJJCAL2 00694000
IJJUNITX TM IJJCPCB4,IJJCPNEX HAS UNIT EXCEPTION OCCURRED 00695000
BO IJJCPMG3 GO TO EOF 3-8 00696000
TM IJJALSW,X'80' Q - INPUT OR OUTPUT FILE 3-10 00697000
BZ IJJC1RT IF OUTPUT FILE BYPASS /* CHECK 3-10 00698000
AIF ('&RPS' EQ 'SVA').RPS9 00699000
L IJJCTL,IJJCPCCW LOAD I/O AREA ADDRESS 3-8 00700000
AGO .NRPS4 00701000
.RPS9 ANOP 00702000
L IJJCTL,IJJXRDWR LOAD INPUT AREA ADDRESS @DL30SMT 00703000
.NRPS4 ANOP 00704000
LA IJJCTL,0(IJJCTL) CLEAR HI ORDER BTYE @DL30SMT 00705000
CLC 0(3,IJJCTL),IJJEOF HAS /* BEEN READ @DA10192 00706000
BNE IJJC1RT NO 00707000
IJJCPMG3 TM IJJALSW,IJJTPHLT Q- SYSLST OR SYSPCH ON OUTPUT TAPE 00708000
BO IJJCPEOV TO EOV ROUTINE 00709000
TM IJJCPSWS,IJJCPRT A PRINTER 00710000
BO IJJC1RT YES, HANDLED BY USER LINE COUNT 00711000
IJJCPEND EQU * EOF PT FOR 3540 @DL29R05 00712000
L IJJCPRTR,IJJCPEAD EOF ADDRESS TO RETURN REGISTER 00713000
AIF ('&RPS' EQ 'SVA').RPS10 00714000
IJJC1RT LM IJJCP1ST,IJJCPLST,IJJCPSAF RESTORE REGISTERS 3-3 00715000
AGO .NRPS5 00716000
.RPS10 ANOP 00717000
IJJC1RT LM IJJCP1ST,IJJREG12,IJJCPSAF RESTORE REGISTERS @DL30SMT 00718000
L IJJCPSAV,IJJXRG13 RESTORE EXTN ADDR @DL30SMT 00719000
.NRPS5 ANOP 00720000
OI IJJALSW,IJJCPNTF INDICATE NOT FIRST PASS @DL30SMT 00721000
CLI IJJCPF1-1,IJJCPFDT 3540 ? @DL29R05 00722000
BNE IJJCPF50 NO, CONTINUE @DL29R05 00723000
TM IJJCMBT2,IJJCHEND 'SPECIAL RECORD ' ? @DL29R05 00724000
BZ IJJCPF50 NO, CONTINUE @DL29R05 00725000
XI IJJCMBT2,IJJCHEND SET OF 'SPEC REC' SW @DL29R05 00726000
B IJJCPGP IGNORE RECORD @DL29R05 00727000
IJJCPF50 EQU * CONTINUE @DL29R05 00728000
BR IJJCPRTR TO USER 00729000
AGO .COMT 00730000
.INMD ANOP 00731000
AIF (T'&IOPTR NE 'O' OR NOT &IO2SW).WIMD 00732000
IJJCPST TM IJJALSW,IJJCP2FT OVERLAP AND/OR 1ST PASS 00733000
BO IJJSLOWI NOT FIRST PASS, BUT OVERLAP 00734000
BAL IJJCPRGA,IJJCP2IO GET I/O 00735000
IJJSLOWI TM IJJCOMBT,IJJCHEND TEST FOR CHANNEL END 00736000
BO *+6 00737000
SVC 7 WAIT 00738000
TM IJJCPSWS,IJJCPDSC IS THIS A DISK 00739000
BZ IJJCPINX NO 00740000
IC IJJCTL,IJJCPREC PICK UP REC NO. 00741000
LA IJJCTL,1(IJJCTL) ADD ONE 00742000
STC IJJCTL,IJJCPREC STROE NEW REC NO. IN SEARCH ADDR 00743000
IJJCPINX TM IJJCPCB4,IJJCPNEX HAS UNIT EXCEPTION OCCURRED 00744000
BO IJJCPMG2 00745000
TM IJJALSW,X'80' Q - INPUT OR OUTPUT FILE 3-10 00746000
BZ IJJTEST IF OUTPUT FILE BYPASS /* CHECK 3-10 00747000
CLI IJJCPF1-1,IJJCPFDT 3540 ? @DL29R05 00748000
BNE IJJCPF01 NO, CONTINUE @DL29R05 00749000
TM IJJCMBT2,IJJCHEND ' SPEC REC ' ? @DL29R05 00750000
BZ IJJCPF01 NO, CONTINUE @DL29R05 00751000
OI IJJCPLD2+6,IJJCPX40 SET DELETE REC SW @DL29R05 00752000
XI IJJCMBT2,IJJCHEND SET OFF SPEC REC SW @DL29R05 00753000
IJJCPF01 EQU * CONTINUE @DL29R05 00754000
L IJJCTL,0(IJJCPCWR) LOAD I/O AREA ADDR CI 00755000
LA IJJCTL,0(IJJCTL) CLEAR HI ORDER BYTE 3-8 00756000
CLC 0(3,IJJCTL),IJJEOF HAS /* BEEN READ @DA10192 00757000
BNE IJJTEST 3-8 00758000
IJJCPMG2 EQU * 00759000
AGO .COMN 00760000
.WIMD ANOP 00761000
AIF (T'&IOPTR EQ 'O').NDVRI 00762000
IJJCPIO ST IJJIOPTR,IJJCPTMP STORE DATA ADDRESS 3-3 00763000
MVC 1(3,IJJCPCWR),IJJCPTMP+1 MOVE ADDRESS TO CCW 3-3 00764000
TM IJJCPSWS,IJJCPDSC IS THIS A DISK 3-3 00765000
AGO .NDVR2 00766000
.NDVRI ANOP 00767000
IJJCPIO TM IJJCPSWS,IJJCPDSC IS DEVICE A DISK 00768000
.NDVR2 ANOP 00769000
BO IJJCPDSK YES 00770000
IJJCNDSK SVC 0 EXCP 00771000
IJJC2SLO TM IJJCOMBT,IJJCHEND TEST FOR CHANNEL END 00772000
BO *+6 00773000
SVC 7 WAIT 00774000
TM IJJCPSWS,IJJCPDSC IS THIS A DISK 00775000
BZ IJJWINX NO 00776000
IC IJJCTL,IJJCPREC PIK UP REC NO. 00777000
LA IJJCTL,1(IJJCTL) ADD ONE 00778000
STC IJJCTL,IJJCPREC STROE NEW REC NO. IN SEARCH ADDR 00779000
IJJWINX TM IJJCPCB4,IJJCPNEX HAS UNIT EXCEPTION OCCURRED 00780000
BO IJJCPMG4 YES 3-8 00781000
TM IJJALSW,X'80' Q - INPUT OR OUTPUT FILE 3-10 00782000
BZ IJJCNOEX IF OUTPUT FILE BYPASS /* CHECK 3-10 00783000
L IJJCTL,0(IJJCPCWR) LOAD I/O AREA ADDRESS CI 00784000
LA IJJCTL,0(IJJCTL) CLEAR HI ORDER BTYE 3-8 00785000
CLC 0(3,IJJCTL),IJJEOF HAS /* BEEN READ @DA10192 00786000
BNE IJJCNOEX NO 3-8 00787000
IJJCPMG4 EQU * 3-8 00788000
.COMN ANOP 00789000
AIF (&IO2SW AND T'&IOPTR EQ 'O').TWIN 00790000
IJJCPEND EQU * EOF PT FOR 3540 @DL29R05 00791000
L IJJCPRTR,IJJCPEAD EOF ADDRESS TO RETURN REGISTER 00792000
IJJCNOEX LM IJJCP1ST,IJJCPLST,IJJCPSAF RESTORE REGISTERS 3-3 00793000
CLI IJJCPF1-1,IJJCPFDT 3540 ? @DL29R05 00794000
BNE IJJCPF50 NO, CONTINUE @DL29R05 00795000
TM IJJCMBT2,IJJCHEND ' SPEC REC ' ? @DL29R05 00796000
BZ IJJCPF50 NO, CONTINUE @DL29R05 00797000
XI IJJCMBT2,IJJCHEND SET OFF SPEC REC SW @DL29R05 00798000
B IJJCPGP IGNORE RECORD @DL29R05 00799000
IJJCPF50 EQU * CONTINUE @DL29R05 00800000
BR IJJCPRTR TO USER 00801000
AGO .COMT1 00802000
.TWIN ANOP 00803000
AIF ('&RPS' EQ 'SVA').TWIN1 00804000
IJJCPEND EQU * EOF PT FOR 3540 @DL29R05 00805000
.TWIN1 ANOP 00806000
L IJJCPZRO,IJJCPEAD EOF ADDR TO RETURN REGISTER @DL30SMT 00807000
B IJJEXEC BRANCH TO EOF ADDRESS 00808000
IJJTEST TM IJJALSW,IJJCPOLP ARE THERE 2 I/O AREAS 00809000
BZ IJJRTRN NO 00810000
XC IJJCP2ND(3),1(IJJCPCWR) SWAP I/O AREAS 00811000
XC 1(3,IJJCPCWR),IJJCP2ND NEW I/O AREA ADDRESS TO CCW 00812000
EX 0,*-12 COMPLETE THE EXCHANGE 00813000
BAL IJJCPRGA,IJJCP2IO GET I/O 00814000
IJJRTRN LR IJJCPZRO,IJJCPRTR SAVE RETURN REGISTER 00815000
L IJJCPRTR,IJJCP2ND-1 NEXT I/O AREA 00816000
IJJEXEC LM IJJCP1ST,IJJCPLST,IJJCPSAF RESTORE REGISTERS 3-3 00817000
TM IJJCPF1,IJJCPSYT IS THIS A SYSTEM UNIT TABLE 00818000
BO IJJC2SLD YES 00819000
EX 0,IJJLOAD LOAD I/O REG 00820000
B IJJC2RES 00821000
IJJC2SLD EX 0,IJJCPLD2 LOAD I/O REG 00822000
IJJC2RES LR IJJCPRTR,IJJCPZRO RESTORE RETURN REGISTER 00823000
OI IJJALSW,IJJCPNTF INDICATE NOT FIRST PASS 00824000
CLI IJJCPF1-1,IJJCPFDT 3540 ? @DL29R05 00825000
BNE IJJCPF50 NO, CONTINUE @DL29R05 00826000
TM IJJCPLD2+6,IJJCPX40 'DELETE ' REC SW ON @DL29R05 00827000
BZ IJJCPF50 NO, CONTINUE @DL29R05 00828000
XI IJJCPLD2+6,IJJCPX40 SET OFF ' DELETE' SW @DL29R05 00829000
B IJJCPGP IGNORE RECORD @DL29R05 00830000
IJJCPF50 EQU * CONTINUE @DL29R05 00831000
BR IJJCPRTR TO USER 00832000
IJJCP2IO TM IJJCPSWS,IJJCPDSC IS DEVICE A DISK 00833000
BO IJJCPDSK YES 00834000
IJJCNDSK SVC 0 EXCP 00835000
BR IJJCPRGA TO CORRECT INSTRUCT 00836000
.COMT1 ANOP 00837000
IJJCPDSK CLC IJJCPREC(1),IJJCPRMX HAS REC LIMIT BEEN REACHED 00838000
AGO .CMTT2 00839000
.COMT ANOP 00840000
IJJCPDSK MVC IJJCPREC(1),IJJCPCTR UPDATE SEEK RECORD NO. 00841000
CLC IJJCPREC(1),IJJCPRMX HAS REC LIMIT BEEN REACHED 00842000
.CMTT2 ANOP 00843000
BNE IJJDKFST NO 00844000
AIF ('&TYPEFLE' EQ 'INPUT' OR &IO2SW).CMTT2A 00845000
LR IJJCPRGA,IJJBRG SAVE RETURN REGISTER 00846000
.CMTT2A ANOP 00847000
L IJJWRK,IJJCPSEK PICK UP CCHH 4-0 00848000
AH IJJWRK,IJJCPONE ADD 1 TO HEAD 4-0 00849000
LR IJJCTL,IJJWRK EQUATE REGISTERS 4-0 00850000
IC IJJCTL,IJJCPUPP+3 TAKE UPPER HEAD LIMIT 4-0 00851000
CR IJJWRK,IJJCTL COMPARE HEADS 4-0 00852000
BNH IJJCPSTS BRANCH IF LIMIT NOT EXCEEDED4-0 00853000
A IJJWRK,IJJCPONE ADD 1 TO CYLINDER 4-0 00854000
IC IJJWRK,IJJLOHED+1 SET LOWER HEAD LIMIT 4-0 00855000
IJJCPSTS ST IJJWRK,IJJCPSEK UPDATE SEEK FIELD 4-0 00856000
AIF ('&TYPEFLE' EQ 'INPUT' AND '&RPS' NE 'SVA').CPCOMN 00857000
AIF (&IO2SW).CMTT2B 00858000
LR IJJBRG,IJJCPRGA RESTORE RETURN REG 00859000
.CMTT2B ANOP 00860000
CLC IJJCPSEK(4),IJJCPMAX UPPER XTENT EXCEEDED 00861000
BL IJJCPF05 NO, CONTINUE @DL29R05 00862000
BE IJJCPF02 TEST IF 3540 @DL29R05 00863000
CLI IJJCPF1-1,IJJCPFDT 3540 DEVICE @DL29R05 00864000
BNE IJJERRTN CANCEL JOB @DL29R05 00865000
BE IJJCPF03 YES, ISSUE FEED @DL29R05 00866000
IJJCPF02 CLI IJJCPF1-1,IJJCPFDT 3540 DEVICE @DL29R05 00867000
BNE IJJCPF05 NO, CONTINUE @DL29R05 00868000
AIF ('&IOAREA2' NE 'YES' OR T'&IOPTR NE 'O').NOIOA2 00869000
TM IJJALSW,IJJCHEND INPUT FILE @DL29R05 00870000
BZ IJJCPF03 NO, OUTPUT, CONTINUE @DL29R05 00871000
TM IJJALSW,IJJCPOLP DUAL I/O AREAS @DL29R05 00872000
BZ IJJCPF03 NO, AT EOE, HANDLE IT @DL29R05 00873000
TM IJJCPLD2+6,IJJCHEND MORE EXTENTS @DL29R05 00874000
BZ IJJCPF03 YES, BRANCH TO FEED @DL29R05 00875000
MVC IJJCPREC(1),IJJFRSTR MOVE 1ST REC TO PASTN @DL29R05 00876000
B IJJRTRN GIVE USER LAST REC @DL29R05 00877000
.NOIOA2 ANOP 00878000
IJJCPF03 TM IJJCPLD2+6,IJJCHEND MORE EXTENTS @DL29R05 00879000
BZ IJJCPFA3 YES, FEED @DL29R05 00880000
TM IJJALSW,IJJCHEND INPUT FILE @DL29R05 00881000
BZ IJJCPF04 NO, OUTPUT, GET EXTENT @DL29R05 00882000
B IJJCPEND BR TO USER EOF RTN @DL29R05 00883000
IJJCPFA3 LA IJJWRK,IJJCPFED LA OF FEED CCW @DL29R05 00884000
ST IJJWRK,IJJCPTCB SET CCB CCW ADDRS @DL29R05 00885000
SVC 0 ISSUE FEED TO 3540 @DL29R05 00886000
TM IJJCOMBT,IJJCHEND TEST FOR CHAN END @DL29R05 00887000
BO *+6 YES, CONTINUE @DL29R05 00888000
SVC 7 WAIT @DL29R05 00889000
LA IJJWRK,IJJCPSST PT TO PROPER CCW @DL29R05 00890000
ST IJJWRK,IJJCPTCB SET CCB CCW ADDRS @DL29R05 00891000
IJJCPF04 STM IJJZRO,IJJCPLST,IJJCPSAF+20 SAVE REGS 0-6 @DL29R05 00892000
MVI IJJCPSAF+28,IJJCPSYT SET PARM LIST END IND @DL29R05 00893000
LA IJJZRO,IJJCPSAF+24 SET UP DTF ADRS ADRS @DL29R05 00894000
LA IJJCPTBB,IJJCPFDR PT TO OPEN TRANS. NAME @DL29R05 00895000
SVC 2 CALL OPEN TRANSIENT @DL29R05 00896000
MVI IJJCPSAF+28,IJJCPZRO RESET PARM LIST END IND @DL29R05 00897000
LM IJJZRO,IJJCPLST,IJJCPSAF+20 RSTR REGS 0-6 @DL29R05 00898000
IJJCPF05 MVC IJJCPREC(1),IJJFRSTR MOVE 1ST REC TO POSITION @DL29R05 00899000
MVC IJJCPCNT(4),IJJCPSEK MOVE IN ID 00900000
IJJDKFST IC IJJCTL,IJJCPREC PICK UP RECORD NO. 00901000
LA IJJCTL,1(IJJCTL) ADD ONE 00902000
STC IJJCTL,IJJCPCTR STORE IN COUNT FIELD 00903000
AIF (&IO2SW AND T'&IOPTR EQ 'O').XCP1 00904000
CLC IJJCPDAT(2),IJJDTZRO ENTERED FROM CLOSE 00905000
BNE IJJCPCAL NO GET I/O 00906000
AIF (NOT &SWITCH).NOASC4 00907000
IJJCAL2 TM IJJASCSW,IJJASCMK ASCII SWITCH ON 3-8 00908000
BZ IJJASCN1 NO 3-8 00909000
AH IJJASCR2,IJJASCHW PTR TO EBCDIC-ASCII TR TAB 3-8 00910000
AIF ('&RPS' EQ 'SVA').RPS11 00911000
L IJJASCR4,IJJCPCCW INIT POINTER FOR IOAREA 3-8 00912000
LH IJJASCR5,IJJCPCCW+6 GET RECORD LENGTH 3-8 00913000
AGO .NRPS6 00914000
.RPS11 ANOP 00915000
L IJJASCR4,IJJXRDWR INIT POINTER FOR IOAREA @DL30SMT 00916000
LH IJJASCR5,IJJLGFLD GET RECORD LENGTH @DL30SMT 00917000
.NRPS6 ANOP 00918000
IJJASCS1 SH IJJASCR5,IJJASCHW SUBTRACT 256 3-8 00919000
LTR IJJASCR5,IJJASCR5 BRANCH IF 3-8 00920000
BNP IJJASCA1 NOT POSITIVE 3-8 00921000
TR 0(256,IJJASCR4),0(IJJASCR2) TR 256 BYTES TO ASCII 3-8 00922000
LA IJJASCR4,256(IJJASCR4) UPDATE IOAREA POINTER 3-8 00923000
B IJJASCS1 3-8 00924000
IJJASCA1 LA IJJASCR5,255(IJJASCR5) ADD 255 3-8 00925000
EX IJJASCR5,IJJASCTR TRANSLATE TO ASCII 3-8 00926000
IJJASCN1 SVC 0 EXCP 3-8 00927000
AGO .NOASC5 00928000
.NOASC4 ANOP 00929000
IJJCAL2 SVC 0 EXCP 00930000
.NOASC5 ANOP 00931000
IJJWCHED TM IJJCOMBT,IJJCHEND TEST FOR CHANNEL END 00932000
BO *+6 00933000
SVC 7 WAIT 00934000
AIF (NOT &SWITCH).NOASC6 00935000
TM IJJASCSW,IJJASCMK ASCII SWITCH ON 3-8 00936000
BZ IJJASCN2 NO 3-8 00937000
SH IJJASCR2,IJJASCHW PTR TO ASCII-EBCDIC TR TAB 3-8 00938000
AIF ('&RPS' EQ 'SVA').RPS12 00939000
L IJJASCR4,IJJCPCCW INIT POINTER FOR IOAREA 3-8 00940000
LH IJJASCR5,IJJCPCCW+6 GET RECORD LENGTH 3-8 00941000
AGO .NRPS7 00942000
.RPS12 ANOP 00943000
L IJJASCR4,IJJXRDWR INIT POINTER FOR IOAREA @DL30SMT 00944000
LH IJJASCR5,IJJLGFLD GET RECORD LENGTH @DL30SMT 00945000
.NRPS7 ANOP 00946000
IJJASCS2 SH IJJASCR5,IJJASCHW SUBTRACT 256 3-8 00947000
LTR IJJASCR5,IJJASCR5 BRANCH IF 3-8 00948000
BNP IJJASCA2 NOT POSITIVE 3-8 00949000
TR 0(256,IJJASCR4),0(IJJASCR2) TR 256 BYTES TO EBCDIC 3-8 00950000
LA IJJASCR4,256(IJJASCR4) UPDATE IOAREA POINTER 3-8 00951000
B IJJASCS2 3-8 00952000
IJJASCA2 LA IJJASCR5,255(IJJASCR5) ADD 255 3-8 00953000
EX IJJASCR5,IJJASCTR TRANSLATE TO EBCDIC 3-8 00954000
IJJASCN2 BR IJJBRG RETURN TO CORRECT INSTRUCTION 3-8 00955000
AGO .NOASC7 00956000
NI IJJASCSW,255-IJJASCMK TURN ASCII SWITCH OFF 3-8 00957000
.NOASC6 ANOP 00958000
BR IJJBRG RETURN TO CORRECT INSTRUCTION 3-8 00959000
.NOASC7 ANOP 00960000
IJJCPEOV LR IJJDTFPS,IJJCPTBB ADDRESS OF DTF TABLE TO REGISTER 00961000
LH IJJZRO,6(IJJDTFPS) PASS LOGICAL UNIT AND CLASS 00962000
LA IJJCPTBB,IJJFLNME ADDRESS OF MULTI-VOLUME ROUTINE NAME 00963000
SVC 2 CALL IN TRANSIENT TO HANDLE EOV CONDITION 00964000
LR IJJCPTBB,IJJDTFPS RESTORE DTF TABLE ADDRESS TO REGISTER1 00965000
B IJJC1RT PREPARE TO RETURN TO USER 00966000
AGO .XCP2 00967000
.XCP1 ANOP 00968000
B IJJCPCAL GET I/O 00969000
.XCP2 ANOP 00970000
AIF ('&RETRY' NE 'NO' OR '&RPS' EQ 'SVA').YESRTY 00971000
IJJERRTN CLC IJJCPDAT(2),IJJDTZRO ENTER FROM CLOSE 3-8 00972000
BNE IJJERROR NO, BRANCH TO ERROR RTN 3-8 00973000
OI IJJFRSTR,IJJNOEOF INDICATE NO EOF WRITTEN 3-8 00974000
BR IJJBRG RETURN TO CORRECT INSTRUCTION 3-8 00975000
IJJERROR LR IJJBRG,IJJCPTBB ADDRESS OF DTF TABLE TO REG 4 3-8 00976000
LA IJJCPTBB,IJJERRAD ADDRESS OF ERROR RECOVERY ROUTINE NAME 00977000
SVC 2 CALL IN TRANSIENT ROUTINE 00978000
.YESRTY ANOP 00979000
AIF (&IO2SW).OUT2 00980000
AIF (T'&IOPTR EQ 'O').OUT1 00981000
IJJDTZRO DC H'0' CONSTANT 00982000
IJJSKP DC H'04' CONSTANT 00983000
AIF (&RDNLYSW).BK017 00984000
IJJCPTMP DC F'0' USED FOR STORAGE 3-3 00985000
IJJCPSAF DC 12F'0' REGISTER SAVE AREA @DL29R05 00986000
.BK017 ANOP 00987000
IJJCPASA EQU *-1 00988000
DC C'9C1+VW-0 ' ASA COMMAND CODES 00989000
IJJCP360 DC X'0BCBE38B0301411B130B' CORRESPONDING SYS/360 CODES 00990000
AGO .SAME 00991000
.OUT1 ANOP 00992000
AIF (NOT &SWITCH).NOASC8 00993000
IJJASCTR TR 0(0,IJJASCR4),0(IJJASCR2) ASCII TRANSLATE INSTR 3-8 00994000
AIF (&RDNLYSW).RPS13 00995000
IJJASCSW DC X'00' ASCII SWITCH 3-8 00996000
IJJASCSV DS F SAVE AREA 3-8 00997000
.RPS13 ANOP 00998000
IJJASCHW DC H'256' CONSTANT 3-8 00999000
.NOASC8 ANOP 01000000
IJJDTZRO DC H'0' CONSTANT 01001000
IJJSKP DC H'04' CONSTANT 01002000
AIF (&RDNLYSW).BK018 01003000
IJJCPTMP DC F'0' @DM11873 01004000
IJJCPSAF DC 12F'0' REGISTER SAVE AREA @DL29R05 01005000
.BK018 ANOP 01006000
IJJCPASA EQU *-1 01007000
DC C'9C1+VW-0 ' ASA COMMAND CODES 01008000
IJJCP360 DC X'0BCBE38B0301411B130B' CORRESPONDING SYS/360 CODES 01009000
AGO .SAME 01010000
.OUT2 ANOP 01011000
AIF (&RDNLYSW).BK019 01012000
IJJCPTMP DC F'0' @DM11873 01013000
IJJCPSAF DC 12F'0' REGISTER SAVE AREA @DL29R05 01014000
.BK019 ANOP 01015000
IJJSKP DC H'04' CONSTANT 01016000
IJJDTZRO DC H'0' 3-8 01017000
IJJCPASA EQU *-1 01018000
DC C'9C1+VW-0 ' ASA COMMAND CODES 01019000
IJJCP360 DC X'0BCBE38B0301411B130B' CORRESPONDING SYS/360 CODES 01020000
AGO .SAME 01021000
.CPCOMN ANOP 01022000
CLI IJJCPF1-1,IJJCPFDT IS THIS 3540 DEVICE @DL29R05 01023000
BNE IJJCPF11 NO, CONTINUE @DL29R05 01024000
CLC IJJCPSEK(4),IJJCPMAX END OF EXT ON 3540 @DL29R05 01025000
AIF ('&IOAREA2' EQ 'YES' AND T'&IOPTR EQ 'O').YIOA12 01026000
BNL IJJCPF13 YES, HANDLE IT @DL29R05 01027000
AGO .FDCONT 01028000
.YIOA12 ANOP 01029000
BH IJJCPF13 YES, HANDLE IT @DL29R05 01030000
BL IJJCPF11 NO, CONTINUE @DL29R05 01031000
TM IJJALSW,IJJCPOLP DUAL I/O AREAS @DL29R05 01032000
BZ IJJCPF13 NO, AT EOE, HANDLE IT @DL29R05 01033000
TM IJJCPLD2+6,IJJCHEND MORE EXTENTS @DL29R05 01034000
BZ IJJCPF13 YES, BRANCH TO FEED @DL29R05 01035000
MVC IJJCPREC(1),IJJFRSTR MOVE 1ST REC TO PASTN @DL29R05 01036000
B IJJRTRN GIVE USER LAST REC @DL29R05 01037000
.FDCONT ANOP 01038000
IJJCPF11 MVC IJJCPREC(1),IJJFRSTR MOVE 1ST REC # TO PASTN @DL29R05 01039000
IJJDKFST B IJJCNDSK GET I/O 01040000
IJJCPF13 TM IJJCPLD2+6,IJJCHEND MORE EXTENTS @DL29R05 01041000
BO IJJCPEND NO, BR TO USERS EOF RTN @DL29R05 01042000
LA IJJWRK,IJJCPFED LA OF FEED CCW @DL29R05 01043000
ST IJJWRK,IJJCPTCB SET CCB CCW ADDRS @DL29R05 01044000
SVC 0 ISSUE FEED TO 3540 @DL29R05 01045000
TM IJJCOMBT,IJJCHEND TEST FOR CHAN. END @DL29R05 01046000
BO *+6 YES, CONTINUE @DL29R05 01047000
SVC 7 WAIT @DL29R05 01048000
LA IJJWRK,IJJCPSST PT TO PROPER CCW @DL29R05 01049000
ST IJJWRK,IJJCPTCB SET CCB CCW ADDRS @DL29R05 01050000
IJJCPF14 STM IJJZRO,IJJCPLST,IJJCPSAF+20 SAVE REGS 0-6 @DL29R05 01051000
MVI IJJCPSAF+28,IJJCPSYT SET PARM LIST END IND @DL29R05 01052000
LA IJJZRO,IJJCPSAF+24 SET UP DTF ADRS ADRS @DL29R05 01053000
LA IJJCPTBB,IJJCPFDR PT TO OPEN TRANS. NAME @DL29R05 01054000
SVC 2 CALL OPEN TRANSIENT @DL29R05 01055000
MVI IJJCPSAF+28,IJJCPZRO RESET PARM LIST END IND @DL29R05 01056000
LM IJJZRO,IJJCPLST,IJJCPSAF+20 RSTR REGS 0-6 @DL29R05 01057000
B IJJCPF11 CONT WITH NEXT VOL @DL29R05 01058000
AIF (&RDNLYSW).SAME 01059000
IJJCPTMP DC F'0' @DM11873 01060000
IJJCPSAF DC 12F'0' SAVE AREA @DL29R05 01061000
.SAME ANOP 01062000
IJJCPFED CCW 23,*,0,1 3540 FEED CCW @DL29R05 01063000
IJJCPFDR DC CL8'$$BOPEN' OPEN NEXT VOL FOR 3540 @DL29R05 01064000
IJJCPONE DC F'65536' X'00010000' ADD 1 AT CYL. 4-0 01065000
IJJEOF DC C'/* ' TEST FOR /* ON INPUT @DA10192 01066000
IJJCPTBB EQU 1 DTF FILE BASE 01067000
IJJCPBAS EQU 15 BASE REGISTER 01068000
IJJZRO EQU 0 WORK REGISTER 01069000
IJJCPRTR EQU 14 RETURN REGISTER 01070000
IJJCPZRO EQU 0 WORK REGISTER 01071000
IJJCPRGA EQU 5 WORK REGISTER 01072000
IJJCPRG1 EQU 0 LOWER DISK ADDRESS 01073000
IJJIOADR EQU 3 USED TO CALCULATE I/O AREA ADDRESS 01074000
IJJCMP EQU 3 WORK REGISTER 01075000
IJJCTL EQU 4 WORK REGISTER 01076000
IJJWRK EQU 2 WORK REGISTER 01077000
IJJCP1ST EQU 2 WORK REGISTER 01078000
IJJCPLST EQU 6 WORK REGISTER 01079000
IJJCPCWR EQU 6 CONTAINS CCW ADDRESS 01080000
IJJDTFPS EQU 2 USED TO PASS DTF TABLE ADDRESS TO TRANSIENT 01081000
IJJTPHLT EQU X'02' TEST FOR SYSLST OR SYSPCH ON OUTPUT TAPE 01082000
IJJCPNEX EQU X'01' TEST FOR UNIT EXCEPTION 01083000
IJJCPSYT EQU X'FF' TEST TABLE FORMAT 01084000
IJJCPKN4 EQU 3 CONSTANT FOR COUNTER 01085000
IJJCPKN1 EQU 1 CONSTANT OF 1 @DL30SMT 01086000
AIF ('&RPS' NE 'SVA').NRPS8 01087000
IJJONE92 EQU 192 OFFSET TO SAVEAREA + 8 @DL30SMT 01088000
IJJEIGHT EQU 8 CONSTANT OF 8 @DL30SMT 01089000
IJJREG12 EQU 12 REGISTER 12 @DL30SMT 01090000
.NRPS8 ANOP 01091000
IJJCPSAV EQU 13 POINTER TO SAVE AREA 3-3 01092000
IJJXBKSP EQU X'04' TEST FOR BACKSPACE RTN 01093000
IJJCPNTF EQU X'20' INDICATE NOT FIRST PASS 01094000
IJJCPOLP EQU X'10' TEST FOR 2 I/O AREAS 01095000
IJJCPDSC EQU X'20' TEST FOR A DISK 01096000
IJJCP2FT EQU X'30' TEST FOR OVERLAP AND FIRST PASS 01097000
IJJCHEND EQU X'80' TEST FOR CHANNEL END 01098000
IJJCPFDT EQU X'06' TEST FOR 3540 @DL29R05 01099000
IJJCPX40 EQU X'40' MASK FOR 3540 DELETE @DL29R05 01100000
IJJCPMFC EQU X'80' TEST MFCM/U @DM08032 01101000
IJJCPTCV EQU X'E5' TEST CONTROL CHAR V CI 01102000
IJJCPTCW EQU X'E6' TEST CONTROL CHAR W CI 01103000
IJJNOEOF EQU X'F0' INDICATOR FOR NO EOF WRITTEN 3-8 01104000
AIF (T'&IOPTR EQ 'O').NOPTR 01105000
IJJIOPTR EQU 0 REGISTER POINTING TO I/O AREA 01106000
IJJLSTPH EQU X'04' TEST FOR SYSLST OR SYSPCH 01107000
IJJDSKTP EQU X'30' TEST FOR DISK OR TAPE 01108000
.NOPTR ANOP 01109000
AIF ('&TYPEFLE' EQ 'INPUT' AND '&RPS' NE 'SVA').FIN 01110000
IJJCPTPH EQU X'0C' TEST FOR PRINTER OR PUNCH 01111000
IJJCPSP EQU X'0B' SPACE COMMAND FOR PRINTER 01112000
IJJCPRTC EQU X'01' PRINT COMMAND 01113000
IJJCPRT EQU X'08' TEST FOR A PRINTER 01114000
IJJCPNEJ EQU X'BF' TURN OFF EJECT NEEDED 01115000
IJJCPEJT EQU X'40' TEST FOR EJECT NEEDED 01116000
IJJCPRTD EQU X'03' TEST FOR READER, TAPE OR DISK 01117000
IJJNUMCH EQU 9 NO. OF CONTROL CHARS 01118000
IJJBRG EQU 3 BRANCH REGISTER 01119000
IJJCPCTL EQU 4 WORK REGISTER 01120000
AIF (NOT &SWITCH).NOASC9 01121000
IJJASCIS EQU X'02' TEST FOR ASCII 3-8 01122000
IJJASCTP EQU X'10' TEST FOR A TAPE 3-8 01123000
IJJASCMK EQU X'01' ASCII MASK 3-8 01124000
IJJASCOF EQU X'FE' ASCII SWITCH OFF MASK @DL30SMT 01125000
IJJASCSY EQU X'01' TEST FOR SYSTEM UNIT 3-8 01126000
IJJASCR2 EQU 2 WORK REGISTER 3-8 01127000
IJJASCR4 EQU 4 WORK REGISTER 3-8 01128000
IJJASCR5 EQU 5 WORK REGISTER 3-8 01129000
.NOASC9 ANOP 01130000
AIF ('&RETRY' EQ 'NO' AND '&RPS' NE 'SVA').FIN 01131000
IJJ2540 EQU X'08' TEST FOR 2540 PUNCH 01132000
IJJDEVED EQU X'80' TEST FOR DEVICE END 01133000
IJJCP010 EQU X'10' TEST FOR PUNCH ERROR 01134000
AGO .FIN 01135000
.TPESY ANOP 01136000
USING *,IJJCPBAS BASE FOR LOGIC 01137000
USING IJJCPTAB,IJJTABAS ESTABLISH BASE FOR DTF TABLE 01138000
AIF ('&TYPEFLE' EQ 'INPUT').INMDT 01139000
AIF ('&IOAREA2' NE 'YES' OR T'&IOPTR NE 'O').WOTMDT 01140000
IJJCPSKP DC H'04' CONSTANT FOR SKIP TEST 01141000
DC H'0' 01142000
DC F'0' 01143000
B IJJGET 01144000
AIF (T'&RDONLY NE 'O').BK020 01145000
IJJGET STM IJJNXTRG,IJJENDRG,IJJCPSVE SAVE REGS THAT ARE USED 3-3 01146000
AGO .BK021 01147000
.BK020 ANOP 01148000
IJJGET STM IJJNXTRG,IJJENDRG,0(IJJRGSAV) SAVE USER REGS 3-3 01149000
.BK021 ANOP 01150000
IJJLAPOV TM IJJSWITH,IJJOLPFT OVERLAP AND/OR FIRST PASS 01151000
BO IJJTEST NOT FIRST PASS BUT OVERLAP 01152000
OI IJJSWITH,IJJFIRST INDICATE NOT FIRST PASS 01153000
BAL IJJRTBCK,IJJGETIO GET I/O 01154000
IJJTEST BAL IJJBRG,IJJWCHED TEST FOR CHANNEL END 01155000
TM IJJSTSBT,IJJUNTEX HAS UNIT EXCEPTION OCCURRED 01156000
BO IJJCPMG5 YES 3-8 01157000
L IJJENDRG,IJJCPCCW LOAD I/O AREA ADDRESS 3-8 01158000
LA IJJENDRG,0(IJJENDRG) CLEAR HI ORDER BYTE 3-8 01159000
CLC 0(3,IJJENDRG),IJJIEOF HAS /* BEEN READ @DA10192 01160000
BNE IJJT2IOA NO 3-8 01161000
IJJCPMG5 TM IJJSWITH,IJJPRNTR IS THIS A PRINTER 3-8 01162000
BO IJJT2IOA YES, HANDLED BY LINE COUNT 01163000
TM IJJCPLSW,IJJTPHLT IS SYSLST OR SYSPCH ON OUTPUT TAPE 01164000
BO IJJCPEOV TO EOV ROUTINE 01165000
TM IJJSWITH,X'08' TEST PUNCH FILE CI 01166000
BO IJJCPEXC YES CI 01167000
IJJCPEND L IJJZRO,IJJEOFAD PREPARE TO GO TO EOF ADDRESS 01168000
B IJJCPEXC BRANCH TO EOF ADDRESS 01169000
IJJCPEOV LR IJJDTFPS,IJJTABAS ADDRESS OF DTF TABLE TO REGISTER 01170000
LH IJJZRO,6(IJJDTFPS) PASS LOGICAL UNIT AND CLASS 01171000
LA IJJTABAS,IJJFLNME NAME OF TRANSIENT TO BE CALLED 01172000
SVC 2 CALL IN TRANSIENT ROUTINE TO HANDLE EOV CONDITION 01173000
LR IJJTABAS,IJJDTFPS RESTORE DTF TABLE ADDRESS TO REGISTER1 01174000
IJJT2IOA TM IJJSWITH,IJJOVLAP 2 I/O AREAS 01175000
BZ IJJRTRN NO 01176000
LA IJJRTBCK,IJJCPCCW CI 01177000
TM IJJCPLSW,IJJCPMFC TEST MFCM/U CI 01178000
BZ IJJCP2I NO CI 01179000
TM IJJCPLSW,IJJCPIN TEST INPUT FILE CI 01180000
BNZ IJJCP2I YES CI 01181000
LA IJJRTBCK,8(IJJRTBCK) POINTER TO 2ND OUTPUT CCW CI 01182000
IJJCP2I XC IJJALTIO(3),1(IJJRTBCK) SWAP I/O AREAS CI 01183000
XC 1(3,IJJRTBCK),IJJALTIO NEW I/O AREA ADDRESS TO CCW CI 01184000
EX 0,*-12 COMPLETE THE EXCHANGE 01185000
BAL IJJRTBCK,IJJGETIO GET I/O 01186000
IJJRTRN LR IJJZRO,IJJRTREG SAVE RETURN REGISTER 01187000
L IJJRTREG,IJJALTIO-1 NEXT I/O AREA 01188000
TM IJJCPLSW,IJJPTPH IS THIS A PUNCH OR A PRINTER 01189000
BZ IJJCPEXC NO 01190000
BCTR IJJRTREG,0 POINT TO CONTROL CHARACTER 01191000
AIF (T'&RDONLY NE 'O').BK022 01192000
IJJCPEXC LM IJJNXTRG,IJJENDRG,IJJCPSVE RESTORE REGISTERS 3-3 01193000
AGO .BK023 01194000
.BK022 ANOP 01195000
IJJCPEXC LM IJJNXTRG,IJJENDRG,0(IJJRGSAV) RESTORE USER REGS 3-3 01196000
.BK023 ANOP 01197000
EX 0,IJJLOAD LOAD I/O REGISTER WITH NEXT I/O AREA 01198000
LR IJJRTREG,IJJZRO RESTORE RETURN REGISTER 01199000
BR IJJRTREG TO USER 01200000
AGO .NOVAR 01201000
.WOTMDT ANOP 01202000
IJJCPSVE DC 2F'0' 01203000
B IJJGET 01204000
IJJGET STM IJJNXTRG,IJJENDRG,IJJCPSVE SAVE REGS THAT ARE USED 01205000
AGO .BK025 01206000
.BK024 ANOP 01207000
B IJJGET 3-3 01208000
IJJGET STM IJJNXTRG,IJJENDRG,0(IJJRGSAV) SAVE USER REGS 3-3 01209000
.BK025 ANOP 01210000
AIF (T'&IOPTR EQ 'O').NOVAR 01211000
IJJGETIO TM IJJSWITH,IJJCPTAP IS DEVICE A TAPE 01212000
BZ IJJSTOR NO 01213000
TM IJJCPLSW,IJJLTPCH SYSLST OR SYSPCH ON TAPE 01214000
BZ IJJSTOR NO 01215000
IJJADJJS BCTR IJJIOPTR,IJJIOPTR POINT TO CONTROL CHARACTER 01216000
AIF (T'&RDONLY NE 'O').BK026 01217000
IJJSTOR ST IJJIOPTR,IJJTEMP STORE ON FULL WORD BOUNDARY 3-3 01218000
MVC IJJCPCCW+1(3),IJJTEMP+1 MOVE DATA ADDRESS TO CCW 3-3 01219000
AGO .BK027 01220000
.BK026 ANOP 01221000
IJJSTOR ST IJJIOPTR,16(IJJRGSAV) DATA ADDR TO FULL WORD BOUNDR3-3 01222000
MVC IJJCPCCW+1(3),17(IJJRGSAV) MOVE DATA ADDR TO CCW 3-3 01223000
.BK027 ANOP 01224000
TM IJJSWITH,IJJRDTP IS DEVICE READER OR TAPE 01225000
AGO .WTCOM 01226000
.NOVAR ANOP 01227000
IJJGETIO TM IJJSWITH,IJJRDTP IS DEVICE READER OR TAPE 01228000
.WTCOM ANOP 01229000
BC 7,IJJCPCLL YES 01230000
TM IJJSWITH,IJJEJT IS EJECT NEEDED FOR A PUNCH CI 01231000
BZ IJJCPMF2 NO EJECT NEEDED CI 01232000
NI IJJSWITH,IJJNOEJ INDICATE NO EJECT NEEDED CI 01233000
BAL IJJBRG,IJJCAL2 EJECT FIRST CARD CI 01234000
IJJCPMF2 TM IJJCPLSW,IJJCPMFC TEST MFCM/U CI 01235000
BZ IJJCPTAS NO, TEST ASA CONTROL CHAR CI 01236000
AIF (T'&IOPTR EQ 'O').MF02 01237000
MVC IJJCCWE1+1(3),IJJCPCCW+1 IOADDR TO PUNCH CCW CI 01238000
.MF02 ANOP 01239000
L IJJCMDCD,IJJCCWE1 CI 01240000
BCTR IJJCMDCD,0 CI 01241000
OI IJJCPCCW+4,X'60' SET CHAIN BIT IN 1ST CCW CI 01242000
MVC IJJCPCCW(1),IJJCPSSW STACKER SELECT W TO 1ST CCW CI 01243000
CLI 0(IJJCMDCD),IJJCPTCW TEST W CONTROL CHAR CI 01244000
BE IJJCPAD8 RETURN CI 01245000
MVC IJJCPCCW(1),IJJCPSSV STACKER SELECT V TO 1ST CCW CI 01246000
CLI 0(IJJCMDCD),IJJCPTCV TEST V CONTROL CHAR CI 01247000
BE IJJCPAD8 RETURN CI 01248000
MVC IJJCPCCW(1),0(IJJCMDCD) CURRENT CTL CHAR TO 1ST CCW CI 01249000
IJJCPAD8 B IJJCPCLL BRANCH TO GET I/O CI 01250000
IJJCPTAS EQU * CI 01251000
L IJJCMDCD,IJJIOARE PUNCH OR PRINTER CI 01252000
BCTR IJJCMDCD,0 POINT TO COMMAND CODE 01253000
LA IJJCNTRL,IJJNMCHR NO. OF CHARACTERS TO COMPARE 01254000
LR IJJCOMPR,IJJCMDCD EQUATE REGISTERS 01255000
IC IJJCOMPR,0(IJJCMDCD) USER CONTROL CHARACTER TO REGISTER 01256000
IJJCPLUP IC IJJCMDCD,IJJCPASA(IJJCNTRL) ASA CHARACTER FROM TABLE 01257000
CR IJJCOMPR,IJJCMDCD USER CNTRL CHARACTER EQUAL ASA CHARCTR 01258000
BE IJJCPFND YES, THIS IS CHARACTER 01259000
BCT IJJCNTRL,IJJCPLUP NOT THE ONE, CHECK THE NEXT 01260000
IJJCPFND CH IJJCNTRL,IJJCPSKP IS COMMAND A SKIP 01261000
BNL IJJNOSK NO, NOT A SKIP 01262000
MVI IJJCPCCW,IJJCPSP MOVE SPACE COMMAND TO CCW 01263000
BAL IJJBRG,IJJCAL2 SPACE FROM CHANNEL 01264000
IJJNOSK TM IJJSWITH,IJJEJT IS EJECT NEEDED FOR A PUNCH 01265000
BZ IJJCPMOV NO EJECT NEEDED 01266000
NI IJJSWITH,IJJNOEJ INDICATE NO EJECT 01267000
BAL IJJBRG,IJJCAL2 EJECT FIRST CARD 01268000
IJJCPMOV LA IJJCNTRL,IJJCP360(IJJCNTRL) 360 CONTROL CHARACTER ADDR 01269000
MVC IJJCPCCW(1),0(IJJCNTRL) 360 CONTROL CHARACTER TO CCW 01270000
OC IJJCPCCW(1),IJJPCHCD PRODUCE CORRECT PUNCH CODE 01271000
AIF ('&RETRY' EQ 'NO').NRTY 01272000
TM IJJCPLSW,IJJ2540 IS DEVICE 2540 PUNCH 01273000
BZ IJJCPCLL NO, GET I/O 01274000
IJJCPWDE TM IJJCOMBT,IJJDEVED WAIT DEVICE END 01275000
BO *+6 01276000
SVC 7 WAIT 01277000
TM IJJCMBT2,IJJCP010 TEST IF PUNCH ERROR 01278000
BZ IJJSAVE NO, SAVE CARD IMAGES AND COMMAND CODES 01279000
LR IJJBRG,IJJTABAS ADDRESS OF DTF TABLE TO REGISTER 4 01280000
LA IJJTABAS,=C'$$BERRTN' ADDRESS OF PUNCH ERROR RECOVERY 01281000
SVC 2 CALL IN TRANSIENT ROUTINE 01282000
LR IJJTABAS,IJJBRG RESTORE DTF TABLE ADDRESS TO REGISTER 1 01283000
IJJSAVE MVC IJJCCWE2(1),IJJCCWE1 OPCODE 1ST ERR CCW INTO 2ND ERR CCW 01284000
MVC IJJCCWE1(1),IJJCPCCW OPCODE CURRENT CCW TO 1ST ERR CCW 01285000
MVC IJJCPSV2(80),IJJCPSV1 CARD IMAGE FROM SVAREA1 TO SVAREA2 01286000
L IJJIOADR,IJJIOARE CALCULATE CURRENT I/O AREA ADDRESS 01287000
MVC IJJCPSV1(80),0(IJJIOADR) SAVE CURRENT CARD IMAGE 01288000
.NRTY ANOP 01289000
IJJCPCLL SVC 0 EXCP 01290000
TM IJJSWITH,IJJPRNTR IS THIS A PRINTER 01291000
AIF ('&IOAREA2' NE 'YES' OR T'&IOPTR NE 'O').ONET 01292000
BZ 0(IJJRTBCK) NO, RETURN TO CORRECT INSTRUCTION 01293000
IJJPWT BAL IJJBRG,IJJWCHED WAIT FOR CHANNEL END 01294000
MVI IJJCPCCW,IJJPRTC MOVE PRINT COMMAND TO CCW 01295000
SVC 0 EXCP START I/O FOR ACTUAL PRINT 01296000
BR IJJRTBCK RETURN TO PROPER INSTRUCTION 01297000
IJJCAL2 SVC 0 EXCP 01298000
IJJWCHED TM IJJCOMBT,IJJCHEND TEST FOR CHANNEL END 01299000
BO *+6 01300000
SVC 7 WAIT 01301000
BR IJJBRG RETURN TO CORRECT INSTRUCTION 01302000
AGO .COMTT 01303000
.ONET ANOP 01304000
BZ IJJTEST NOT A PRINTER 01305000
IJJPWT BAL IJJBRG,IJJWCHED A PRINTER, WAIT FOR CHANNEL END 01306000
MVI IJJCPCCW,IJJPRTC MOVE PRINT COMMAND TO CCW 01307000
SVC 0 EXCP START I/O FOR ACTUAL PRINT 01308000
IJJTEST BAL IJJBRG,IJJWCHED TEST FOR CHANNEL END 01309000
TM IJJSTSBT,IJJUNTEX HAS UNIT EXCEPTION OCCURED 01310000
BO IJJCPMG6 YES 3-8 01311000
L IJJENDRG,IJJCPCCW LOAD I/O AREA ADDRESS 3-8 01312000
LA IJJENDRG,0(IJJENDRG) CLEAR HI ORDER BYTE 3-8 01313000
CLC 0(3,IJJENDRG),IJJIEOF HAS /* BEEN READ @DA10192 01314000
BNE IJJCPEXC NO 3-8 01315000
IJJCPMG6 TM IJJSWITH,IJJPRNTR IS THIS A PRINTER 3-8 01316000
BO IJJCPEXC YES, HANDLED BY LINE COUNT 01317000
TM IJJCPLSW,IJJTPHLT IS SYSLST OR SYSPCH ON OUTPUT TAPE 01318000
BO IJJCPEOV TO EOV ROUTINE 01319000
TM IJJSWITH,X'08' TEST PUNCH FILE CI 01320000
BO IJJCPEXC YES CI 01321000
IJJCPEND L IJJRTREG,IJJEOFAD EOF ADDRESS TO RETURN REGISTER 01322000
AIF (T'&RDONLY NE 'O').BK028 01323000
IJJCPEXC LM IJJNXTRG,IJJENDRG,IJJCPSVE RESTORE REGISTERS 3-3 01324000
AGO .BK029 01325000
.BK028 ANOP 01326000
IJJCPEXC LM IJJNXTRG,IJJENDRG,0(IJJRGSAV) RESTORE USER REGS 3-3 01327000
.BK029 ANOP 01328000
BR IJJRTREG RETURN TO USER 01329000
IJJCAL2 SVC 0 EXCP 01330000
IJJWCHED TM IJJCOMBT,IJJCHEND TEST FOR CHANNEL END 01331000
BO *+6 01332000
SVC 7 WAIT 01333000
TM IJJCPLSW,IJJCPMFC MULTIFUNC CARD MCH ? @DA11146 01334000
BZR IJJBRG IF NOT BRANCH @DA11146 01335000
TM IJJCPLSW,IJJCPIN INPUT OR OUTPUT FILE ? @DA11146 01336000
BOR IJJBRG IF INPUT FILE BRANCH @DA11146 01337000
LA IJJRTBCK,IJJCPCCW+8 GET CCW ADDR. @DA11146 01338000
ST IJJRTBCK,IJJCPCCB+8 STORE CCW ADDR. @DA11146 01339000
BR IJJBRG RETURN TO CORRECT INSTRUCTION 01340000
IJJCPEOV LR IJJDTFPS,IJJTABAS ADDRESS OF DTF TABLE TO REGISTER 01341000
LH IJJZRO,6(IJJDTFPS) PASS LOGICAL UNIT AND CLASS 01342000
LA IJJTABAS,IJJFLNME NAME OF TRANSIENT TO BE CALLED 01343000
SVC 2 CALL IN TRANSIENT ROUTINE TO HANDLE EOV CONDITION 01344000
LR IJJTABAS,IJJDTFPS RESTORE DTF TABLE ADDRESS TO REGISTER1 01345000
B IJJCPEXC PREPARE RETURN TO USER 01346000
.COMTT ANOP 01347000
AIF ('&IOAREA2' NE 'YES' OR T'&IOPTR NE 'O').DIFT 01348000
AIF (T'&RDONLY NE 'O').BK030 01349000
IJJCPSVE DC 3F'0' 3-3 01350000
.BK030 ANOP 01351000
LTORG 01352000
AIF (T'&IOPTR EQ 'O').KGO 01353000
AIF (T'&RDONLY NE 'O').KGO 01354000
IJJTEMP DC F'0' TEMPORARY STORAGE AREA 01355000
AGO .KGO 01356000
.DIFT ANOP 01357000
AIF (T'&IOPTR EQ 'O').NTPA 01358000
AIF (T'&RDONLY NE 'O').BK032 01359000
IJJTEMP DC F'0' TEMPORARY STORAGE AREA 3-3 01360000
.BK032 ANOP 01361000
LTORG 01362000
IJJCPSKP DC H'04' CONSTANT FOR SKIP TEST 01363000
AGO .KGO 01364000
.NTPA ANOP 01365000
LTORG 01366000
IJJCP360 DC X'0BCBE38B0301411B130B' CORRESPONDING SYS/360 CODES 01367000
IJJCPSKP DC H'04' CONSTANT FOR SKIP TEST 01368000
IJJCPASA EQU *-1 01369000
DC C'9C1+VW-0 ' ASA COMMAND CODES 01370000
AGO .REGS 01371000
.KGO ANOP 01372000
IJJCPASA EQU *-1 01373000
DC C'9C1+VW-0 ' ASA COMMAND CODES 01374000
IJJCP360 DC X'0BCBE38B0301411B130B' CORRESPONDING S/360 CODES 01375000
.REGS ANOP 01376000
IJJRGSAV EQU 13 POINTER TO SAVE AREA 3-3 01377000
IJJCPBAS EQU 15 BASE REGISTER 01378000
IJJBRG EQU 3 BRANCH REGISTER 01379000
IJJRTBCK EQU 2 BRANCH REGISTER 01380000
IJJCOMPR EQU 0 COMPARE REGISTER 01381000
IJJCMDCD EQU 3 INSERTS CONTROL COMMAND TO CCW 01382000
IJJNXTRG EQU 2 WORK REG 01383000
AIF ('&IOAREA2' NE 'YES' OR T'&IOPTR NE 'O').DODIF 01384000
IJJCNTRL EQU 4 COMPARE REGISTER 01385000
IJJENDRG EQU 4 WORK REG 01386000
IJJIEOF DC C'/* ' @DA10192 01387000
AGO .KGOO 01388000
.DODIF ANOP 01389000
IJJCNTRL EQU 2 COMPARE REGISTER 01390000
IJJENDRG EQU 3 WORK REG 01391000
IJJIEOF DC C'/* ' @DA10192 01392000
.KGOO ANOP 01393000
IJJRTREG EQU 14 HAS RETURN ADDRESS 01394000
IJJTABAS EQU 1 BASE REGISTER FOR DTF TABLE 01395000
IJJZRO EQU 0 WORK REGISTER 01396000
IJJDTFPS EQU 2 USED TO PASS DTF TABLE ADDRESS TO TRANSIENT 01397000
IJJTPHLT EQU X'08' TEST FOR SYSLST OR SYSPCH ON OUTPUT TAPE 01398000
IJJIOADR EQU 3 USED TO CALCULATE I/O AREA ADDRESS 01399000
IJJEJT EQU X'80' TEST FOR EJECT NEEDED 01400000
IJJFIRST EQU X'10' TURN OFF FIRST PASS BIT 01401000
IJJNOEJ EQU X'7F' TURN OFF EJECT BIT 01402000
IJJNMCHR EQU 9 NUMBER OF CHARACTERS TO COMPARE 01403000
IJJOLPFT EQU X'30' TEST FOR 2 I/O AREAS AND FIRST PASS 01404000
IJJOVLAP EQU X'20' TEST FOR 2 I/O AREAS 01405000
IJJPRNTR EQU X'04' TEST FOR A PRINTER 01406000
IJJPRTC EQU X'01' PRINT COMMAND 01407000
IJJPTPH EQU X'10' TEST FOR A PRINTER OR A PUNCH 01408000
IJJRDTP EQU X'03' TEST FOR READER OR TAPE 01409000
IJJCPSP EQU X'0B' SPACE COMMAND 01410000
IJJUNTEX EQU X'01' TEST FOR UNIT EXCEPTION 01411000
IJJCHEND EQU X'80' TEST FOR CHANNEL END 01412000
IJJCPIN EQU X'80' TEST INPUT FILE CI 01413000
IJJCPMFC EQU X'03' TEST FOR MFCM/U CI 01414000
IJJCPTCV EQU X'E5' TEST CONTROL CHAR V CI 01415000
IJJCPTCW EQU X'E6' TEST CONTROL CHAR W CI 01416000
AIF ('&RETRY' EQ 'NO').FINOT 01417000
IJJ2540 EQU X'20' TEST FOR 2540 PUNCH 01418000
IJJDEVED EQU X'80' TEST FOR DEVICE END 01419000
IJJCP010 EQU X'10' TEST FOR PUNCH ERROR 01420000
.FINOT ANOP 01421000
AIF (T'&IOPTR EQ 'O').FIN 01422000
IJJIOPTR EQU 0 REGISTER POINTING TO I/O AREA 01423000
IJJCPTAP EQU X'01' TEST FOR A TAPE 01424000
IJJLTPCH EQU X'40' TEST FOR SYSLST OR SYSPCH 01425000
AGO .FIN 01426000
.INMDT ANOP 01427000
AIF (T'&RDONLY NE 'O').BK033 01428000
IJJCPSVE DC F'0' REGISTER SAVE AREA 3-3 01429000
.BK033 ANOP 01430000
IJJSKP DC H'04' CONSTANT 01431000
DC H'0' 01432000
B IJJGET 01433000
AIF (T'&IOPTR NE 'O' OR '&IOAREA2' NE 'YES').WIMDT 01434000
AIF (T'&RDONLY NE 'O').BK034 01435000
IJJGET ST IJJCPWRK,IJJCPSVE SAVE WORK REGISTER 3-3 01436000
AGO .BK035 01437000
.BK034 ANOP 01438000
IJJGET ST IJJCPWRK,0(IJJREGSV) SAVE USER REG 3-3 01439000
.BK035 ANOP 01440000
IJJLAPOV TM IJJSWITH,IJJOLPFT OVERLAP AND/OR FIRST PASS 01441000
BO IJJTEST NOT FIRST PASS, BUT OVERLAP 01442000
OI IJJSWITH,IJJFIRST INDICATE NOT FIRST PASS 01443000
BAL IJJRTBCK,IJJGETIO GET I/O 01444000
IJJTEST TM IJJCOMBT,IJJCHEND TEST FOR CHANNEL END 01445000
BO *+6 01446000
SVC 7 WAIT 01447000
TM IJJSTSBT,IJJUNTEX HAS UNIT EXCEPTION OCCURRED 01448000
BO IJJCPEND YES 3-8 01449000
ST IJJENDRG,IJJENDSV SAVE USER REGISTER 4-0 01450000
L IJJENDRG,IJJCPCCW LOAD I/O AREA ADDRESS 3-8 01451000
LA IJJENDRG,0(IJJENDRG) CLEAR HI ORDER BYTE 3-8 01452000
CLC 0(3,IJJENDRG),IJJIEOF HAS /* BEEN READ @DA10192 01453000
L IJJENDRG,IJJENDSV RESTORE USER REGISTER 4-0 01454000
BNE IJJT2IOA NO, TEST FOR 2 I/O AREAS 3-8 01455000
AGO .TWIT 01456000
.WIMDT ANOP 01457000
AIF (T'&IOPTR EQ 'O').NOVRI 01458000
AIF (T'&RDONLY NE 'O').BK036 01459000
IJJGET ST IJJIOPTR,IJJTEMP STORE I/O AREA ADDRESS 3-3 01460000
MVC IJJCPCCW+1(3),IJJTEMP+1 I/O AREA ADDRESS TO CCW 3-3 01461000
SVC 0 GET I/O 3-3 01462000
AGO .NVR2 01463000
.BK036 ANOP 01464000
IJJGET ST IJJIOPTR,0(IJJREGSV) SAVE I/O AREA ADDR 3-3 01465000
MVC IJJCPCCW+1(3),1(IJJREGSV) MOVE I/O AREA ADDR TO CCW 3-3 01466000
SVC 0 GET I/O 3-3 01467000
AGO .NVR2 01468000
.NOVRI ANOP 01469000
IJJGET SVC 0 EXCP 01470000
.NVR2 ANOP 01471000
IJJTEST TM IJJCOMBT,IJJCHEND TEST FOR CHANNEL END 01472000
BO *+6 01473000
SVC 7 WAIT 01474000
TM IJJSTSBT,IJJUNTEX HAS UNIT EXCEPTION OCCURRED 01475000
BO IJJCPEND YES 3-8 01476000
ST IJJENDRG,IJJENDSV SAVE USER REGISTER 4-0 01477000
L IJJENDRG,IJJIOARE LOAD I/O AREA ADDRESS 3-8 01478000
LA IJJENDRG,0(IJJENDRG) CLEAR HI ORDER BYTE 3-8 01479000
CLC 0(3,IJJENDRG),IJJIEOF HAS /* BEEN READ @DA10192 01480000
L IJJENDRG,IJJENDSV RESTORE USER REGISTER 4-0 01481000
BNE IJJCPEXT NO 3-8 01482000
IJJCPEND L IJJRTREG,IJJEOFAD PREPARE TO GO TO EOF ADDRESS 01483000
IJJCPEXT BR IJJRTREG RETURN TO USER 01484000
AGO .LABINT 01485000
.TWIT ANOP 01486000
IJJCPEND L IJJZRO,IJJEOFAD PREPARE TO GO TO EOF ADDRESS 01487000
B IJJCPEXC BRANCH TO EOF ADDRESS 01488000
IJJT2IOA TM IJJSWITH,IJJOVLAP 2 I/O AREAS 01489000
BZ IJJRTRN NO 01490000
XC IJJALTIO(3),IJJIOARE+1 SWAP I/O AREAS 01491000
XC IJJIOARE+1(3),IJJALTIO NEW I/O AREA ADDRESS TO CCW 01492000
EX 0,*-12 COMPLETE THE EXCHANGE 01493000
BAL IJJRTBCK,IJJGETIO GET I/O 01494000
IJJRTRN LR IJJZRO,IJJRTREG SAVE RETURN REGISTER 01495000
L IJJRTREG,IJJALTIO-1 NEXT I/O AREA 01496000
AIF (T'&RDONLY NE 'O').BK037 01497000
IJJCPEXC L IJJCPWRK,IJJCPSVE RESTORE WORK REGISTER 3-3 01498000
AGO .BK038 01499000
.BK037 ANOP 01500000
IJJCPEXC L IJJCPWRK,0(IJJREGSV) RESTORE USER REG 3-3 01501000
.BK038 ANOP 01502000
EX 0,IJJLOAD LOAD I/O REGISTER WITH NEXT I/O AREA 01503000
LR IJJRTREG,IJJZRO RESTORE RETURN REGISTER 01504000
BR IJJRTREG RETURN TO USER 01505000
IJJGETIO SVC 0 EXCP 01506000
BR IJJRTBCK RFTURN TO PROPER INSTRUCTION 01507000
.LABINT ANOP 01508000
IJJENDSV DC F'0' SAVE AREA TO ENABLE USE OF IJJENDRG 4-0 01509000
IJJREGSV EQU 13 POINTER TO SAVE AREA 3-3 01510000
IJJCPBAS EQU 15 PROGRAM BASE REGISTER 01511000
IJJENDRG EQU 4 3-8 01512000
IJJIEOF DC C'/* ' @DA10192 01513000
IJJTABAS EQU 1 BASE REGISTER FOR DTF TABLE 01514000
IJJCPWRK EQU 2 WORK REGISTER 01515000
IJJRTBCK EQU 2 BRANCH REGISTER 01516000
IJJZRO EQU 0 WORK REGISTER 01517000
IJJRTREG EQU 14 HAS RETURN ADDRESS 01518000
IJJOLPFT EQU X'30' TEST FOR 2 I/O AREAS AND FIRST PASS 01519000
IJJFIRST EQU X'10' TURN OFF FIRST PASS BIT 01520000
IJJCHEND EQU X'80' TEST FOR CHANNEL END 01521000
IJJUNTEX EQU X'01' TEST FOR UNIT EXCEPTION 01522000
IJJOVLAP EQU X'20' TEST FOR 2 I/O AREAS 01523000
AIF (T'&IOPTR EQ 'O').FIN 01524000
AIF (T'&RDONLY NE 'O').BK039 01525000
IJJTEMP EQU IJJSKP 3-3 01526000
.BK039 ANOP 01527000
IJJIOPTR EQU 0 REGISTER POINTING TO I/O AREA 3-3 01528000
.FIN ANOP 01529000
AIF (T'&SEPASMB NE 'O' OR '&RPS' EQ 'SVA').FINIS 01530000
&SYSECT CSECT 01531000
.FINIS ANOP 01532000
MEND 01533000
/* 01534000