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