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