TIO TITLE 'DMSTIO (CMS) VM/370 - RELEASE 6' 00001000 SPACE 2 00002000 *. 00004000 * MODULE NAME: 00005000 * 00006000 * DMSTIO (TAPEIO) 00007000 * 00008000 * FUNCTION: 00009000 * 00010000 * TO READ OR WRITE A TAPE RECORD OR TO CONTROL TAPE 00011000 * POSITIONING. 00012000 * 00013000 * ENTRY POINTS: 00014000 * 00015000 * 1. DMSTIO, TAPEIO 00016000 * 00017000 * ATTRIBUTES: 00018000 * 00019000 * | NUCLEUS RESIDENT, REENTRANT, CALLED VIA SVC 202. 00020100 * 00021000 * ENTRY CONDITIONS: 00022000 * 00023000 * LA 1,PLIST 00024000 * SVC 202 00025000 * DC A(ERROR) 00026000 * 00027000 * PLIST DC CL8'TAPEIO' 00028000 * DC CL8'FUNCTION' OPERATION TO BE PERFORMED 00029000 * DC CL4'DEVICE ID' TAPE DRIVE IDENTIFICATION 00030000 * DC XL1'MODE' MODE OF OPERATION 00031000 * DC AL3(BUFFER) BUFFER ADDRESS 00032000 * DC F'LENGTH' BUFFER LENGTH (MAX 65535) 00033100 * DC F'0' NUMBER OF BYTES READ 00034000 * 00035000 * FUNCTION MUST BE ONE OF THE FOLLOWING: 00036000 * 00037000 * READ - READ ONE RECORD 00038000 * WRITE - WRITE ONE RECORD 00039000 * READBK - READ ONE RECORD BACKWARD 00040000 * SENSE - SENSE THE TAPE CONTROL UNIT 00041000 * REW - REWIND THE TAPE 00042000 * RUN - REWIND AND UNLOAD THE TAPE 00043000 * ERG - ERASE A GAP 00044000 * WTM - WRITE A TAPE MARK 00045000 * BSR - BACKSPACE ONE RECORD 00046000 * BSF - BACKSPACE ONE FILE 00047000 * FSR - FORWARD SPACE ONE RECORD 00048000 * FSF - FORWARD SPACE ONE FILE 00049000 * 00050000 * THE DEVICE ID MAY BE EITHER A SYMBOLIC TAPE NUMBER 00051000 * (TAP1 - TAP7, TAP8 - TAPF) OR THE CORRESPONDING UNIT HRC002DS 00052590 * ADDRESS (0181 - 0187, 0288 - 028F). HRC002DS 00053180 * 00054000 * THE MODE BYTE IDENTIFITES THE NUMBER OF TRACKS, 00055000 * DENSITY, AND TRANSLATION OPTIONS. IT MUST BE IN THE 00056000 * FORM DDMMM011 WHERE: 00057000 * 00058000 * DD | TRACKS AND DENSITY 00059000 * _____|__________________________________________ 00060000 * _ 00061000 * | 00062000 * 00 | 7 TRACK, 200 BPI 00063000 * 01 | 7 TRACK, 556 BPI 00064000 * 10 | 7 TRACK, 800 BPI 00065000 * 11 | 9 TRACK, SEE MMM 00066000 * 00067000 * 00068000 * MMM | MODE 00069000 * _____|_______________________________________________ 00070000 * _ 00071000 * | 00072000 * 000 | 1600 BPI (9 TRACK ONLY) 00073000 * 001 | 800 BPI (9 TRACK ONLY) 00074000 * 010 | ODD PARITY, DATA CONVERT ON, TRANSLATOR OFF 00075000 * 011 | READ TRACK IN ERROR (9 TRACK ONLY) 00076000 * 100 | EVEN PARITY, DATA CONVERT OFF, TRANSLATOR OFF 00077000 * 101 | EVEN PARITY, DATA CONVERT OFF, TRANSLATOR ON 00078000 * 110 | ODD PARITY, DATA CONVERT OFF, TRANSLATOR OFF 00079000 * 111 | ODD PARITY, DATA CONVERT OFF, TRANSLATOR ON 00080000 * 00081000 * 00082000 * EXIT CONDITIONS: 00083000 * 00084000 * NORMAL RETURN 00085000 * 00086000 * R15 = 0 SUCCESSFUL COMPLETION 00087000 * 00088000 * ERROR RETURN 00089000 * 00090000 * R15 = 1 INVALID FUNCTION OR PARAMETER LIST 00091000 * R15 = 2 END-OF-FILE OR END-OF-TAPE ENCOUNTERED 00092000 * R15 = 3 PERMANENT I/O ERROR 00093000 * R15 = 4 ILLEGAL DEVICE ID SPECIFIED 00094000 * R15 = 5 TAPE NOT ATTACHED 00095000 * R15 = 6 TAPE IS FILE PROTECTED 00096000 * R15 = 8 INCORRECT LENGTH 00096650 * 00097300 * CALLS TO OTHER ROUTINES: 00098000 * 00099000 * NONE 00100000 * 00101000 * EXTERNAL REFERENCES: 00102000 * 00103000 * NUCON - NUCLEUS AREA CONSTANTS 00104000 * DEVTAB - DEVICE TABLE 00105000 * 00106000 * TABLES/WORKAREAS: 00107000 * 00108000 * COMTAB - TABLE OF TAPE FUNCTIONS 00109000 * 00110000 * REGISTER USAGE: 00111000 * 00112000 * GPR2 = BASE REGISTER 00113000 * GPR1, GPR3 = PLIST 00114000 * 00115000 * NOTES: 00116000 * 00117000 * USES CP DIAGNOSE FOR I/O 00118000 * 00118100 * FOR 'READBK' OPERATION, THE BUFFER ADDRESS IN THE 00118200 * PLIST MUST POINT TO THE LAST BYTE OF THE BUFFER. 00118300 * 00118400 * | "TAPEIO" IS TREATED AS A "COMMAND" OR A "FUNCTION" 00118500 * | ACCORDING TO THE HIGH-ORDER BYTE OF R1 AT INPUT, VIZ: 00118600 * | IF = X'0C', IT WAS ISSUED AS A COMMAND FROM DMSINT. 00118700 * | IF = X'0D', IT WAS ISSUED FROM AN EXEC FILE (DMSEXT), 00118800 * | WITH "&CONTROL" SET TO EITHER "CMS" OR "ALL". 00118900 * | IF = X'0E', IT WAS ISSUED FROM AN EXEC FILE (DMSEXT), 00119000 * | WITH "&CONTROL OFF" IN EFFECT. 00119100 * | IF < X'0C' OR > X'0E', IT IS ASSUMED TO BE A FUNCTION, 00119200 * | I.E. CALLED FROM ANOTHER PROGRAM. 00119300 * 00119400 * | TAPEIO MUST BE CALLED AS A FUNCTION; 00119500 * | IF CALLED AS A COMMAND, AN ERROR 1 IS RETURNED. 00119600 * 00119700 * OPERATION: 00120000 * 00121000 * DMSTIO FIRST VERIFIES THAT THE DEVICE ID IS VALID. 00122000 * IF THE FUNCTION IS A READ, WRITE, READBK, OR SENSE, A 00123000 * CONTROL CCW IS BUILT TO SET THE MODE. IF THE MODE IS 00124000 * OMITTED FROM THE PARAMETER LIST, THE MODE IS TAKEN @VA13323 00124500 * FROM THE FIRST BYTE OF THE DEVMISC FIELD OF THE DEVTAB@VA13323 00125000 * IN THE NUCLEUS. IF THERE IS NO MODE STORED IN THE @VA13323 00125500 * DEVICE TABLE, THE DEFAULT MODE IS 1600 BPI FOR DUAL @VA13323 00126000 * DENSITY TAPES, ODD PARITY CONVERTER OFF AND @VA13323 00126500 * TRANSLATOR OFF FOR 7-TRACK TAPES. @VA13323 00127000 * THE BUFFER ADDRESS AND BYTE COUNT ARE FILLED 00128000 * INTO A READ, WRITE, READBK, OR SENSE CCW AND IT IS 00129000 * COMMAND CHAINED TO THE CONTROL CCW. A DIAGNOSE 00130000 * INSTRUCTION IS EXECUTED TO CAUSE CP TO INITIATE THE 00131000 * I/O OPERATION. WHEN CONTROL IS RETURNED, THE 00132000 * OPERATION IS COMPLETE AND NECESSARY RETRY OPERATIONS 00133000 * HAVE ALREADY BEEN EXECUTED BY CP. IF THE FUNCTION IS 00134000 * A CONTROL OPERATION, THE CCW STRING IS BUILT IN THE SAME 00135000 * WAY. A 00136000 * DIAGNOSE INSTRUCTION IS EXECUTED TO CAUSE THE I/O 00137000 * OPERATION TO BE STARTED. CP WILL RETURN CONTROL AS 00138000 * SOON AS THE OPERATION IS STARTED. CONTROL IS THEN 00139000 * RETURNED TO THE CALLING PROGRAM. 00140000 *. 00141000 EJECT 00142000 TAPEIO START 0 00143000 DMSTIO EQU * 00144000 ENTRY DMSTIO 00145000 LR BASE,15 00146000 USING TAPEIO,BASE 00147000 LR PLIST,1 00148000 USING PLISTX,PLIST 00149000 USING NUCON,R0 ACCESS NUCLESUS CONSTANTS AREA 00150000 USING SCRATCH,R13 00151000 CLM R1,8,=X'0C' WAS TAPEIO CALLED AS A COMMAND? @VA01154 00152100 BL OKFUN NO - OK (CALLED AS A FUNCTION). @VA01154 00152200 CLM R1,8,=X'0E' CHECK FURTHER (0C/0D/0E) @VA01154 00152300 BNH ERR01 ERROR IF CALLED FROM TERMINAL @VA01154 00152400 * OR FROM AN EXEC FILE. 00152500 OKFUN L TAPE,PTAPE OK - GET SYMBOLIC TAPE NAME, @VA01154 00152600 CLI PTAPE,X'FF' IS THERE A 'FENCE' THERE INSTEAD ? LL 00155000 BNE TPOK BNE IF NOT, TAPE NO. SHOULD BE OK. JS 00156000 L TAPE,=CL4'TAP1' IF FENCE THERE, USE 'TAP1' INSTEAD. 00157000 B TPOK2 SEE IF THE DEVICE IS ATTACHED 00159000 * GET INDICES FOR DEVICE ADDRESS TABLE 00160000 * 00161000 TPOK EQU * 00162000 LA XR1,PTAPE SEE IF THE DEVICE IS ALL NUMERIC 00163000 LA XR2,4 COMPARE ALL FOUR CHARACTERS 00164000 LOOP EQU * 00165000 TM 0(XR1),X'F0' IS THIS CHARACTER NUMERIC 00166000 BNO TPOK2 NO, COMPARE SYMBOLIC DEVICE 00167000 LA XR1,1(,XR1) COMPARE THE NEXT CHARACTER 00168000 BCT XR2,LOOP IF HAVEN'T COMPARED ALL 4 00169000 XC DBLWRD1(L'DBLWRD1+L'DBLWRD2),DBLWRD1 00170000 MVC DBLWRD1+4(4),PTAPE MOVE THE FIELD TO A DOUBLE WORD 00171000 PACK DBLWRD2,DBLWRD1 FOR CONVERSION 00172000 L TAPE,DBLWRD2+4 GET THE NUMBER 00173000 SRL TAPE,4 SHIFT OFF THE SIGN 00174000 TPOK2 EQU * COMPARE THE DEVADDR IN DEVICE TABLE 00175000 L XR1,ADEVTAB XR1 = A(DEVICE TABLE) 00176000 USING DEVSECT,XR1 ACCESS THE DEVICE TABLE SYMBOLLICALLY 00177000 L XR3,ATABEND XR3 = A(END OF DEVICE TABLE) 00178000 LA XR2,DEVSIZE XR2 = SIZE OF AN ENTRY IN THE DEVICE TBL. 00179000 * 00180000 * (XR1, XR2, & XR3 ALL SET FOR BXLE-LOOP NOW ...) JS 00181000 * 00182000 TLOP EQU * 00183000 CL TAPE,DEVNAME COMPARE THE DEVICE NAMES 00184000 BE FOUND 00185000 CH TAPE,DEVADDR COMPARE THE DEVICE ADDRESSES 00186000 BE FOUND 00187000 BXLE XR1,XR2,TLOP 00188000 B ERR04 00189000 FOUND EQU * 00191000 LR R0,R5 SAVE XR1 @VA11365 00191010 LH R5,DEVADDR GET THE DEVICE CUU @VA11365 00191020 DROP XR1 @VA11365 00191030 DIAG R5,R6,X'24' DIAGNOSE FOR DEVICE INFO @VA11365 00191040 BNE ERR05 DEVICE NOT ATTACHED @VA11365 00191050 MVC MODECCW(16),DEFLTCCW SET CCW STRING FROM DEFAULT@V305032 00191100 LR R5,R0 RESTORE XR1 @VA13323 00191102 USING DEVSECT,R5 EST. ADDRESSABILITY TO DEVTAB @VA13323 00191104 CLI DEVMISC,ZEROMODE IS THERE NO MODE IN DEVTAB @VA13323 00191106 BE SKIPMODE NO MODE, USE DEFAULT @VA13323 00191108 MVC MODECCW(1),DEVMISC GET THE MODE FROM THE DEVTAB @VA13323 00191110 SKIPMODE EQU * @VA13323 00191112 DROP R5 RELEASE REGISTER @VA13323 00191114 ICM R15,B'1000',PBUFF PLIST MODESET @VA11365 00191120 BZ PMODEOK OK IF NONE @VA11365 00191140 CLM R7,B'0100',TYP3420 IS IT 3420 MODEL .? @VA11365 00191160 BNE PMODEOK IF NOT, NO CHECK DONE..ELSE IS IT@VA11365 00191180 CLM R7,B'0010',MODEL3 MODEL 3 OR LESS? @VA11365 00191200 BNH TST34208 GO CHECK 800 BPI @VA11365 00191220 CLM R7,B'0010',MODEL5 MODEL 5? @VA11365 00191240 BE TST34208 GO CHECK 800 BPI @VA11365 00191260 CLM R7,B'0010',MODEL7 MODEL 7? @VA11365 00191280 BE TST34208 GO CHECK 800 BPI @VA11365 00191300 TM PBUFF,D8009TRK 800 BPI? @VA11365 00191320 BO ERR01 YES, ERROR 800 BPI NOT SUPPORTED @VA11365 00191340 SLDL R6,25 NOW.. THIS IS SOME STRANGE WAY @VA11365 00191360 * TO STRIP OFF THE DUAL DENSITY 00191380 * FEATURE FROM R7, BUT THAT'S LIFE..!! 00191400 LTR R7,R7 IS THE X'40' BIT ON.? @VA11365 00191420 SRDL R6,25 MAKE R7 PRESENTABLE AGAIN @VA11365 00191440 BM PMODEOK YES, 1600 SUPPORTED FOR 4,6,8 @VA11365 00191460 TM PBUFF,TRK96250 DID HE ASK FOR 6250.? @VA11365 00191480 BO PMODEOK LOOKS GOOD. 6250 IS THE DEFAULT @VA11365 00191500 B ERR01 ELSE HE (SHE) IS WET..!! @VA11365 00191520 TST34208 DS 0H @VA11365 00191540 TM PBUFF,D8009TRK IS THIS 800 BPI ? @VA11365 00191560 BNO TEST6250 BRANCH IF NOT TO CHECK 6250BPI @VA11365 00191580 * HERE WE GO AGAIN TESTING FOR DUAL FTR 00191600 SLDL R6,25 NOW.. THIS IS SOME STRANGE WAY @VA11365 00191620 * TO STRIP OFF THE DUAL DENSITY 00191640 * FEATURE FROM R7, BUT THAT'S LIFE.. 00191660 LTR R7,R7 IS THE X'40' BIT ON.? @VA11365 00191680 SRDL R6,25 MAKE R7 PRESENTABLE AGAIN @VA11365 00191700 BNM ERR01 800 BPI NOT SUPPORTED @VA11365 00191720 B PMODEOK ELSE ALL SET. @VA11365 00191740 TEST6250 DS 0H @VA11365 00191760 TM PBUFF,TRK96250 IS IT 6250.? @VA11365 00191780 BO ERR01 YES, CAN'T HAVE IT.! @VA11365 00191800 PMODEOK EQU * @VA11365 00191820 LR R5,R0 RESTORE XR1 @VA11365 00191840 LR R11,XR1 SAVE LOCATION OF DEVICE TABLE ENTRY 00192000 USING DEVSECT,R11 ACCESS IN FUTURE FROM R11 00193000 LH TAPE,DEVADDR GET THE DEVICE ADDRESS 00194000 * 00195000 * SEE IF THE TAPEIO FUNCTION IS VALID 00196000 * 00197000 LM XR1,XR3,COMTABX SEARCH FOR COMMAND 00198000 LA R12,CONTRL1 SET BRANCH POINT FOR CONTROL COMMAND 00199000 LA R15,RDBKSNS SET BRANCH POINT FOR READBK OR SENSE 00200000 TLIP CLC PCOMM2(8),0(XR1) 00201000 BE 8(,XR1) 00202000 BXLE XR1,XR2,TLIP 00203000 B ERR01 00204000 EJECT 00205000 * 00206000 * SENSE AND READBK CONTROL COMMANDS 00207000 * 00208000 SPACE 2 00209000 RDBKSNS EQU * 00210000 MVC RDWRCCW(2),10(XR1) MOVE IN THE CONTROL CODE 00211000 B READ10 FILL IN THE REST OF THE READ INFORMATION 00212000 SPACE 2 00213000 * 00214000 * READ CONTROL COMMAND 00215000 * 00216000 SPACE 2 00217000 READ05 EQU * 00218000 MVI RDWRCCW,X'02' SET FOR READ @VM08813 00218100 READ10 EQU * @VM08813 00218200 MVI RDWRCCW+4,X'00' SET FLAGS 00225000 B RDWR @VA01538 00227100 SPACE 2 00229000 * 00230000 * WRITE CONTROL COMMAND 00231000 * 00232000 SPACE 2 00233000 WRITE05 EQU * 00234000 MVI RDWRCCW,X'01' SET THE MODE FOR WRITE 00235000 * NOTE: SILI FLAG IS ALREADY SET 00236100 SPACE 2 00243000 * 00244000 * READ / WRITE / READBK / SENSE 00245000 * 00246000 SPACE 2 00247000 RDWR EQU * 00248000 CLC PBUFF+1(3),=F'0' BUFFER ADDR ZERO ? @VA01538 00248125 BE ERR01 YES, ERROR @VA01538 00248250 CLC PBUFFSZ(4),=F'0' BUFFER LENGTH ZERO ? @VA01538 00248375 BE ERR01 YES, ERROR @VA01538 00248500 CLC PBUFFSZ(4),=F'65535' BUFF LEN EXCEEDS MAX ? @VA01538 00248625 BH ERR01 YES, ERROR @VA01538 00248750 MVC RDWRCCW+1(3),PBUFF+1 SET BUFFER ADDRESS 00249000 MVC RDWRCCW+6(2),PBUFFSZ+2 SET BUFFER SIZE 00250000 BAL LINK,TAPWAIT START THE TAPE AND WAIT 00251000 L TEMP,PBUFFSZ GET BUFFER SIZE 00252000 ST TEMP,PRECSZ SET RECORD READ SIZE 00253000 B RETURN 00254000 EJECT 00255000 ******************************************************************* 00256000 * 00257000 * CONTROL MODES 00258000 * 00259000 ******************************************************************* 00260000 SPACE 2 00261000 CONTRL1 EQU * 00262000 MVC RDWRCCW(2),10(XR1) MOVE IN THE CONTROL FUNCTION 00263000 * NOTE: SILI FLAG IS SET & BYTE COUNT = 1 00264100 BAL LINK,TAPWAIT 00266000 B RETURN 00267000 EJECT 00268000 TAPWAIT EQU * 00269000 * NOTE: DEFAULT MODE ALREADY SET @VA13323 00269400 * TO THE MODE IN THE DEVTAB @VA13323 00269800 * OR X'B3' IF THERE WAS NO @VA13323 00270200 * MODE IN THE DEVTAB @VA13323 00270600 ICM R15,8,PBUFF GET MODE-SET SPECIFIED BY CALLER @V305032 00271100 BZ NOMODSET IF NONEXISTENT, KEEP THE DEFAULT @V305032 00272100 STCM R15,8,MODECCW OTHERWISE USE CALLER'S MODE-SET. @V305032 00273100 NOMODSET EQU * 00274000 LA CAWADR,MODECCW SET THE A(CCW STRING) 00275000 DIAG20 DC X'839A0020' DIAGNOSE TAPE I/O @VA03458 00276100 BCR 8,LINK RETURN IF NO ERRORS 00277000 BC 4,CKBUSY SEE IF BUSY OR NOT ATTACHED @VA03458 00278100 BC 2,TEST2 BRANCH IF UNIT EXCEPTION OR INCOR LENGTH 00279000 STH CAWADR,DEVMISC+2 SAVE THE SENSE INFO. FROM CP 00280000 TM DEVMISC+2,X'80' COMMAND REJECT (WRITE)? V0033 00280100 BNO ERR3A NOT A PROTECT ERR V0033 00280200 TM DEVMISC+3,X'02' FILE PROTECTED ? 00281000 BO FILEPRO BRANCH IF YES 00282000 ERR3A EQU * @VA08542 00283100 CH R15,DEC13 TEST RETCOD FOR PERM ERR @VA08542 00283110 BE ERR03 SET RETCOD3 @VA08542 00283120 XR XR3,XR3 SIGNAL UNIT CHECK @VA08542 00283130 B TEST2A V0033 00283200 SPACE 00284000 CKBUSY CH R15,=H'5' WAS DEVICE BUSY? @VA03458 00284100 BNE ERR05 NO - DEVICE NOT ATTACHED @VA03458 00284200 B DIAG20 YES - TRY AGAIN @VA03458 00284300 TEST2 CH R15,=H'2' IS IT A UNIT EXCEPTION 00285000 BE UNITEXCP BRANCH IF YES 00286000 TEST2A EQU * V0033 00286100 LH R15,CSW+6 GET RESIDUAL COUNT 00287000 N R15,=X'0000FFFF' CLEAR SIGN IF NEGATIVE 00288000 L TEMP,PBUFFSZ LOAD BUFFER LENGTH 00289000 SR TEMP,R15 SUBTRACT RESIDUAL COUNT 00290000 ST TEMP,PRECSZ STORE NUMBER OF BYTES READ 00291000 LTR R15,R15 IS THERE A RESIDUAL COUNT? @VA03457 00291025 BZ INCLEN NO, THEN GIVE ERROR 8 @VA03457 00291050 LTR XR3,XR3 WAS THERE A UNIT CHECK? V0033 00291100 BZ ERR03 ERR RETURN WITH NO.BYTES READ V0033 00291200 * OTHERWISE CONTINUE TO 'RETURN' ... 00292100 RETURN SR 15,15 NORMAL RETURN 00294000 BR 14 00295000 ERR01 LA 15,1 INVALID COMMAND 00296000 BR 14 00297000 UNITEXCP LA 15,2 EOF 00298000 BR 14 00299000 ERR03 LA 15,3 PERM I/O ERROR 00300000 BR 14 00301000 ERR04 LA 15,4 ILLEGAL SYMBOLIC UNIT 00302000 BR 14 00303000 ERR05 LA R15,5 TAPE NOT ATTACHED 00304000 BR R14 AND EXIT. 00305000 * 00306000 FILEPRO EQU * FILE-PROTECTED ON A 'WRITE' ... 00307000 LA R15,6 ERROR NO. 6, 00308000 BR R14 EXIT. 00309000 INCLEN LA R15,8 INCORRECT LENGTH ERROR @VA03457 00309100 BR R14 @VA03457 00309200 DEC13 DC H'13' RETCOD FROM DIAG 20 @VA08542 00309210 EJECT 00310000 PLISTX DSECT 00311000 PCOMM1 DC CL8'TAPEIO' 00312000 PCOMM2 DC CL8' ' 00313000 PTAPE DC CL4'TAPX' SYMBOLIC TAPE ADDRESS 00314000 PBUFF DC A(0) BUFFER ADDRESS 00315000 PBUFFSZ DC F'0' BUFFER SIZE 00316000 PRECSZ DC F'0' ACTUAL NO. OF BYTES READ 00317000 SPACE 00317100 SCRATCH DSECT 00318000 DBLWRD1 DS 1D 00319000 DBLWRD2 DS 1D 00320000 * FILLED-IN CCW-STRING .. 00320100 MODECCW CCW X'B3',0,SILI+CC,1 800,ODD,CONV-OFF,TRANS-OFF @V305032 00320200 RDWRCCW CCW *-*,*-*,SILI,*-* READ, WRITE, CONTROL @V305032 00320300 SPACE 00320400 TAPEIO CSECT 00321000 EJECT 00322000 * 00323000 * CONSTANTS 00324000 BASE EQU 2 00325000 PLIST EQU 3 00326000 LINK EQU 4 00327000 XR1 EQU 5 00328000 XR2 EQU 6 00329000 XR3 EQU 7 00330000 TAPE EQU 9 00331000 TEMP EQU 8 00332000 CAWADR EQU 10 00333000 * 00334000 * 00335000 COMTAB DS 0F 00336000 DC CL8'READ' 00337000 B READ05 00338000 DC CL8'WRITE' 00339000 B WRITE05 00340000 DC CL8'REW' REWIND 00341000 BR R12 00342000 DC X'0700' 00343000 DC CL8'WTM' 00344000 BR R12 00345000 DC X'1F00' 00346000 DC CL8'RUN' 00347000 BR R12 00348000 DC X'0F00' 00349000 DC CL8'BSR' 00350000 BR R12 00351000 DC X'2700' 00352000 DC CL8'FSR' 00353000 BR R12 00354000 DC X'3700' 00355000 DC CL8'FSF' 00356000 BR R12 00357000 DC X'3F00' 00358000 DC CL8'BSF' 00359000 BR R12 00360000 DC X'2F00' 00361000 DC CL8'ERG' JS 00362000 BR R12 JS 00363000 DC X'1700' JS 00364000 DC CL8'SENSE' SENSE 00365000 BR R15 00366000 DC X'0400' 00367000 DC CL8'READBK' READBK 00368000 BR R15 00369000 DC X'0C00' 00370000 COMTABN EQU * 00371000 COMTABX DC A(COMTAB,12,COMTABN-12) 00372000 * 00373000 * 00374000 * DEFAULT (INITIAL) VALUES FOR MODECCW AND RDWRCCW .. 00375100 DEFLTCCW CCW X'B3',0,SILI+CC,1 800,ODD,CONV-OFF,TRANS-OFF @V305032 00375600 CCW *-*,*-*,SILI,1 READ, WRITE, CONTROL @V305032 00376100 * 00376200 MODEL3 DC X'03' 3420 MODEL 3 @VA11365 00376300 MODEL5 DC X'05' 3420 MODEL 5 @VA11365 00376400 MODEL7 DC X'07' 3420 MODEL 7 @VA11365 00376500 TYP3420 DC X'10' 3420 TAPE DRIVE..!! @VA11365 00376600 D8009TRK EQU X'CB' MODESET - 9 TRACK, 800 BPI @VA11365 00376700 TRK96250 EQU X'D3' MODESET - 9 TRACK, 6250 BPI @VA11365 00376800 * 00377000 ZEROMODE EQU X'00' INDICATES DEVTAB HAS NO MODE @VA13323 00377500 LTORG 00378000 EJECT 00379000 NUCON 00380000 DEVSECT 00381000 REGEQU 00382000 EQUATES 00383000 END 00384000