|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 39982 (0x9c2e)
Notes: pts_type(SC)
Names: »DRCC01.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/DRCC01.SC«
IDENT DRCC01 REL 8.2 78-09-15 870106240821 * ***************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * DRCC01 = DRIVER CASSETTE CHANGER * * * * * * ***************************************************** * * * * THIS DRVER HANDLES THREE CASSETTE CHANGERS CONNECTED * TO CPU VIA CHCC AND IOP ON MULTIPLEXED CHANNEL. * * THE CHANGERS ARE OPERATED COMPLETELY INDEPENDENT * OF EACH OTHER. * * DATA IS RECORDED IN BLOCKS FROM 2 TO 256 * CHARACTERS. NORMALLY THE LAST CHARACTER IS USED * AS A BLOCK SEQUENCE NUMBER. * * EJECT * THE DRIVER CONSISTS OF THE FOLLOWING PARTS: * * A C T I V A T I O N R O U T I N E * * O R D E R P R O C E S S O R S * * C O M M A N D H A N D L E R S * * I N T E R R U P T H A N D L E R * * P O W E R O N R O U T I N E * * D E V I C E W O R K T A B L E S * * * * ORDERS TREATED: * * CHANGER: * * /10 TEST STATUS SET IND /13 EJECT CASSETTE * /11 INSERT CASSETTE /14 FEED TRAY * /12 RETURN CASSETTE /3E RESET STATUS FLAGS * * RECORDER: * * /00 TEST STATUS /31 REWIND * /02 READ /37 LOAD * /06 WRITE /38 UNLOAD * /22 WRITE TAPE MARK /3D READ MATS * /3F RECOVER * EJECT * * STATUS BITS: * * CHANGER RECORDER * * 0: REQUEST ERROR REQUEST ERROR * 1: CAS IN DISCH COMP LEADER * 2: CAS NOT IN TRAY BOT MISSING * 3: NO TRAY ON TRANSP TAPE MARK * * 4: HANDL NOT AT TRAY NO DATA * 5: TRANSPORT FULL BOT/EOT * 6: WRITE PROTECTED * 7: B-SIDE * * 8: ILL ORDER SEQUENCE ILL ORDER SEQUENCE * 9: HARD ERR, TIME OUT TIME OUT * 10: * 11: SEQUENCE ERROR * * 12: INCORRECT LENGTH * 13: DATA ERROR * 14: THRU-PUT ERROR * 15: NOT OPERABLE NOT OPERABLE * EJECT * * ENTRIES * ENTRY IHCC1 INTERRUPT HANDLERS ENTRY IHCC2 ENTRY IHCC3 ENTRY DWCC01 DEVICE WORK TABLES ENTRY DWCC02 ENTRY DWCC03 ENTRY C1DRON POWER ON RECOVERY ENTRY C2DRON ENTRY C3DRON * * EXTERNALS * EXTRN TDISP DISPATCHER EXTRN DISEND DISPATCHER END I/O EXTRN DISIOE DISP I/O REQUEST ERROR EXTRN SAVE8 SAVE A1-A8 AND INH EXTRN SETIMP START TIMER EXTRN ECBBA ECB BUFFER ADDRESS EXTRN ECBRL ECB REQUESTED LENGTH EXTRN ECBEL ECB EFFECTIVE LENGTH EXTRN ECBCW ECB CONTROL WORD EXTRN INTSAV SAVE AREA LAST INTERRUPT EXTRN HALT MONITOR HALT ROUTINE EJECT * * CONSTANTS * CCRTRD EQU 10 MAX NO OF RETRIES AT READ CCRTWR EQU 3 MAX NO OF RETRIES AT WRITE CCRTSB EQU 5 MAX NO OF RETRIES AT SBOT CCRTLD EQU 3 MAX NO OF RETRIES AT LOAD CCRTRT EQU 3 MAX NO OF RETRIES AT RETURN CCRCBL EQU 20 MAX NO OF BLOCKS TO SEARCH AT RECOVERY CCSTPS EQU 50 MAX NO OF STEP TRAY :S CCPOFF EQU 20 TIME TO WAIT AT POWER OFF (100 MS) CCPON EQU 30 TIME TO WAIT AT POWER ON (100 MS) CCRBLK EQU 5 NO OF BLOCKS TO REVERSE AT POWER ON * * HARDWARE ADDRESSES * CHCC1 EQU /09 CHCC1 ADDRESS CHCC2 EQU /0A CHCC2 ADDRESS CHCC3 EQU /0B CHCC3 ADDRESS C1IOPL EQU CHCC1+CHCC1 IOP ADDRESSES C1IOPA EQU CHCC1+CHCC1+1 C2IOPL EQU CHCC2+CHCC2 C2IOPA EQU CHCC2+CHCC2+1 C3IOPL EQU CHCC3+CHCC3 C3IOPA EQU CHCC3+CHCC3+1 EJECT * * DWT DISPLACEMENTS * DWTCHP EQU 0 DWTST EQU 2 DWTECB EQU 4 DWTOR EQU 6 DWTADR EQU 8 DWTTAB EQU 10 DWTWAT EQU 12 DWTTQ EQU 14 DWTREQ EQU 16 DWTSAV EQU 18 DWTSB2 EQU 30 DWTSA2 EQU 32 DWTSA5 EQU 34 DWTSA7 EQU 36 DWTINT EQU 38 DWTMOD EQU 40 DWTSQC EQU 43 DWTTOT EQU 44 DWTTIM EQU 46 DWTHRC EQU 48 DWTLCK EQU 50 DWTSTP EQU 52 DWTPWF EQU 54 DWTWRL EQU 56 DWTWRA EQU 58 DWTRRA EQU 60 DWTIOS EQU 62 DWTIOH EQU 64 DWTSST EQU 66 DWTSTA EQU 68 DWTEOT EQU 70 DWTBUF EQU 72 DWTWBM EQU 74 DWTWIL EQU 76 DWTWSE EQU 78 DWTWRE EQU 80 DWTWOK EQU 82 DWTRNO EQU 86 DWTRBM EQU 88 DWTRIL EQU 90 DWTRSE EQU 92 DWTRRE EQU 96 DWTROK EQU 98 DWTMNO EQU 102 DWTMBM EQU 104 DWTMIL EQU 106 DWTMDE EQU 108 DWTMOK EQU 110 DWTREP EQU 114 DWTPND EQU 116 DWTPBM EQU 118 DWTPNS EQU 120 DWTPTF EQU 122 DWTPIT EQU 124 DWTPIS EQU 126 DWTPIE EQU 128 DWTPDB EQU 130 DWTTMK EQU 132 DWTINS EQU 134 DWTRET EQU 136 EJECT * * CCDA ACTIVATION ROUTINE. ENTERED AFTER LKM-REQUEST. * THE VALIDITY OF THE ORDER IS CHECKED AND A BRANCH TO * THE ORDER PROCESSOR IS MADE. * * * ENTRY: * * A5: DWTSB2,A6 * A6: DWT ADDRESS * A7: ORDER * A8: ECB ADDRESS * * EXIT: TO ORDER PROCESSOR * * A3: REQUESTED LENGTH * A4: BUFFER ADDRESS * A5: STACK POINTER * A6: DWT ADDRESS * A7: MAX NO OF RETRIES * A8: ECB ADDRESS * CCDA INH LDK A2,CCLEN CHECK IF LEGAL ORDER CCDA10 CC A7,CCTAB-1,A2 RF(E) CCDA30 FOUND SUK A2,1 RB(NZ) CCDA10 TRY NEXT CCDA20 ABL DISIOE ILLEGAL ORDER CCDA30 ADR A2,A2 ADKL A2,CCORD-2 ST A2,DWTREQ,A6 SAVE ADDRESS TO ORDER PNTR CCDA40 CWK A2,CCNOL DOES THIS ORDER REQUIRE LENGTH RF(NL) CCDA60 NO LD A3,ECBRL,A8 GET REQ LENGTH LD A4,DWTMOD,A6 CHECK IF SEQ NUMBERS RF(N) CCDA50 NO ADK A3,1 YES ADJUST LENGTH CCDA50 LDR A4,A3 CHECK REQ LENGTH SUK A4,2 RB(N) CCDA20 LESS THAN 2 CHARS SUK A4,254 RB(P) CCDA20 MORE THAN 256 CHARS CCDA60 LD A4,ECBBA,A8 GET BUFFER ADDRESS LDK A7,0 RESET NO OF RETRIES CM DWTEOT,A6 CLEAR EOT INDICATOR ABI* DWTREQ,A6 GO TO ORDER PROCESSOR EJECT * * ORDER PROCESSORS: * * ENTRY: * * A3: REQUESTED LENGTH * A4: BUFFER ADDRESS * A5: STACK POINTER * A6: DWT ADDRESS * A7: MAX NO OF RETRIES * A8: ECB ADDRESS * * EXIT: ABL DISEND * * A1: STATUS * A6: DWT ADDRESS * * EFFECTIVE LENGTH (ECBEL) AND CONTROL WORD (ECBCW) * ARE UPDATED. * * * TEST CHANGER STATUS AND SET INDICATORS /10 * TCSI LD A1,ECBCW,A8 LOAD IND PATTERN CF A5,SETI ABL ENDIOC EJECT * * INSERT CASSETTE /11 * ISRT LD A2,DWTHRC,A6 CHECK IF HANDLER AT RECORDER ABL(NZ) ILLORD YES ILLEGAL ORDER LD A2,DWTSTP,A6 CHECK IF TRAY STEPPED RF(NZ) ISRT30 YES LDK A7,CCSTPS SET UP MAX NO OF STEPS CF A5,MVCT PUT HANDLER IN TRAY ISRT10 LDKL A2,/1441 CK IF NO TRAY,TR FULL,TOT,N TM A1,A2 ABL(NZ) ENDIOC ILLEGAL CONDITIONS LDR A2,A1 ANKL A1,/0300 SAVE WP, B-SIDE ST A1,DWTSAV,A6 SLC A2,2 CHECK IF CAS IN TRAY RF(NN) ISRT20 YES INSERT IT SUK A7,1 ABL(Z) ENDIOE TO MANY STEPS CF A5,STPT STEP TRAY RB ISRT10 ISRT20 C1S DWTSTP,A6 INDICATE TRAY STEPPED CF A5,STPT STEP TRAY ABL(1) ENDIOE HAND NOT AT TRAY,TIM OUT,NOT OP ISRT30 CF A5,MVCR MOVE CAS TO RECORDER ANKL A1,/FBFF MASK OFF TRANSPORT FULL LDR A2,A1 CHECK IF NOT OPERABLE SRC A2,1 ABL(N) ENDIOC NOT OP CM DWTSTP,A6 CLEAR CHANGER FLAGS C1S DWTHRC,A6 INDICATE HANDLER AT RECORDER ABL ENDIOC EJECT * * RETURN CASSETTE /12 * RTRN LDK A7,CCRTRT LD A2,DWTLCK,A6 CHECK IF CAS LOCKED ABL(NZ) ILLORD YES ILLEGAL ORDER LD A2,DWTHRC,A6 CHECK IF HANDL AT REC ABL(Z) ILLORD NO ILLEGAL ORDER RTRN10 CF A5,MVCT MOVE CAS TO TRAY RF(0) RTRN20 STATUS OK IM DWTRET,A6 INC STAT CNT SUK A7,1 RF(N) RTRN20 ENOUGH WITH RETRIES CF A5,MVCR RB RTRN10 TRY AGAIN RTRN20 CM DWTHRC,A6 IND HANDL NOT AT REC ABL ENDIOC EJECT * * EJECT CASSETTE /13 * EJCT LD A2,DWTLCK,A6 CHECK IF CAS LOCKED ABL(NZ) ILLORD YES ILLEGAL ORDER LD A2,DWTHRC,A6 CHECK IF HANDL AT REC ABL(Z) ILLORD NO ILLEGAL ORDER CF A5,TEST LDKL A2,/4041 CHECK IF CAS IN DISCH COMP, TOT , NOT OP TM A1,A2 ABL(NZ) ENDIOC YES TO BAD CF A5,MVCD MOVE CAS TO DISCH COMP ABL(1) ENDIOC HAND N AT TRAY, TOT, N OP CM DWTHRC,A6 IND HANDL NOT AT REC ABL ENDIOC EJECT * * FEED TRAY TO END /14 * FEED LD A2,DWTHRC,A6 CHECK IF HANDLER AT REC ABL(NZ) ILLORD YES ILLEGAL ORDER LDK A7,CCSTPS SET UP MAX NO OF STEPS CF A5,MVCT FEED10 LDKL A2,/1441 CHECK IF NO TRAY,TR FULL TM A1,A2 ABL(NZ) ENDIOC YES RETURN SUK A7,1 ABL(Z) ENDIOE TO MANY STEPS CF A5,STPT STEP TRAY RB FEED10 EJECT * * RESET STATUS FLAGS /3E * RSET CM DWTSTP,A6 CLEAR TRAY STEPPED CM DWTLCK,A6 -CASSETTE LOCKED CM DWTHRC,A6 -HANDLER AT RECORDER ABL ENDIO6 EJECT * * TEST RECORDER STATUS /00 * TSTR LD A2,DWTHRC,A6 CHECK IF HANDLER AT REC ABL(Z) ILLORD NO ILLEGAL ORDER LD A1,DWTSAV,A6 GET WP,B-SIDE ABL ENDIO7 EJECT * * READ /02 * READ LD A2,DWTSQC,A6 GET SEQ COUNTER RF(NZ) READ10 NOT FIRST BLOCK LDK A2,CCRTSB FIRST BLOCK SEARCH BOT READ05 CF A5,SBOT RF(5) READ06 OK IM DWTRNO,A6 INC STAT CNT ABL ENDIO4 ILLEGAL STATUS READ06 EQU * ANKL A1,/0400 RF(NZ) READ10 BOT FOUND SUK A2,1 BOT NOT FOUND RF(NN) READ08 OK IM DWTRBM,A6 INC STAT CNT ABL ENDIOB NO MORE RETRIES READ08 EQU * CF A5,REWD TRY AGAIN RB READ05 READ10 CF A5,RBLK READ BLOCK RF(0) READ20 STATUS, DATA OK RF(5) READ12 ILL DATA IM DWTRIL,A6 INC STAT CNT ABL ENDIO4 ILL STATUS READ12 EQU * ADK A7,1 INC RETRY CNT CWK A7,CCRTRD RF(NG) READ14 MORE RETRIES LDR A2,A3 SAVE REQ LENGTH EX DWTRRA,A6 CWR A3,A4 RF(E) READ13 LENGTH OF READ BLOCK =0 IM DWTRRE,A6 INC STAT CNT ABL ENDIO1 NO MORE RETRIES READ13 LDK A7,CCRTRD ONE MORE TRY LDR A3,A2 RESTORE REQ LENGTH RB READ10 READ NEXT BLOCK READ14 EQU * LD A2,DWTSQC,A6 RF(NZ) READ15 NOT FIRST BLOCK CF A5,REWD FIRST BLOCK REWIND RB READ AND TRY AGAIN READ15 CF A5,SKPR REVERSE ONE BLOCK RF(6) READ19 NOT ILL DATA LD A2,DWTMOD,A6 RF(N) READ19 SEQ NO NOT USED LD A2,DWTSTA,A6 ANK A2,/16 RF(NZ) READ19 LAST STATUS ILL DATA CF A5,SKPR REVERSE ONE BLOCK CF A5,RBLK READ ONE BLOCK RB(2) READ12 ILL DATA SLC A1,3 RF(N) READ17 TAPE MARK LDR A2,A3 SAVE REQ LENGTH EX DWTRRA,A6 GET BUFFER POINTER SUK A3,1 MOD TO GET SEQ NO POINTER LCR A3,A3 GET SEQ NO ADK A3,1 CC A3,DWTSQC,A6 RF(NE) READ20 OK LDR A3,A2 RESTORE REQ LENGTH RB READ10 SEQ NO = PREV SEQ NO READ17 LD A2,DWTSTA,A6 SLC A2,3 RB(N) READ10 LAST STATUS = TAPE MARK RF READ20 READ19 EQU * CF A5,SKPR REVERSE ONE MORE BLOCK CF A5,RBLK RB READ10 TRY AGAIN READ20 LDR A5,A1 CHECK IF TAPE MARK SLC A5,3 ABL(N) ENDIO1 TAPE MARK EX DWTRRA,A6 RER A3,CXIOPA SUK A3,1 LD A2,DWTSQC,A6 GET SEQUENCE COUNTER CCR A2,A3 RF(E) READ40 SEQ NUMBER OK LD A5,DWTMOD,A6 CHECK SEQ MODE RF(N) READ40 NO SEQ NUMBERS ORKL A1,/0010 IND SEQ ERROR READ30 IM DWTRSE+2,A6 INC STAT CNTR(S) RF(NZ) READ35 IM DWTRSE,A6 READ35 RF READ45 READ40 IM DWTROK+2,A6 INC STAT CNTR(S) RF(NZ) READ45 IM DWTROK,A6 READ45 EQU * ABL ENDIO1 EJECT * * WRITE TAPE MARK /22 * WRTM C1S DWTTMK,A6 INDICATE TAPE MARK * * WRITE /06 * WRIT LD A2,DWTSQC,A6 GET SEQ COUNTER RF(NZ) WRIT10 NOT FIRST BLOCK CF A5,SBES FIRST BLOCK ERASE LDR A2,A1 SLC A2,5 CHECK IF BOT FOUND RF(N) WRIT05 OK IM DWTWBM,A6 INC STAT CNT ABL ENDIOB NOT BOT WRIT05 EQU * CF A5,ERAS LD A2,DWTTMK,A6 RF(NZ) WRIT17 NO SEQ NO FOR TM WRIT10 LD A2,DWTMOD,A6 CHECK SEQ MODE RF(N) WRIT20 NO SEQ NUMBERS LD A2,DWTSQC,A6 GET SEQ COUNTER LDR A1,A4 CALC ADDRESS TO SEQ NUMBER ADR A1,A3 SUK A1,1 SCR A2,A1 STORE SEQ NUMBER IN BUFFER WRIT15 LD A2,DWTTMK,A6 RF(Z) WRIT20 WRIT17 CF A5,WTMK WRITE TAPE MARK RF WRIT22 WRIT20 CF A5,WBLK WRITE BLOCK WRIT22 RF(4) WRIT24 NOT OK IM DWTWOK+2,A6 INC STAT CNTR(S) RF(NZ) WRIT23 IM DWTWOK,A6 WRIT23 EQU * ABL ENDIO1 STATUS, DATA OK WRIT24 RF(5) WRIT26 OK IM DWTWIL,A6 INC STAT CNT ABL ENDIO4 ILLEGAL STATUS WRIT26 EQU * CF A5,POSI POSITION TAPE RF(E) WRIT28 OK IM DWTWSE,A6 INC STAT CNT ABL ENDIO3 NO SUCCESS WRIT28 EQU * LD A2,DWTSQC,A6 RF(NZ) WRIT30 NOT FIRST BLOCK CF A5,ERAS FIRST BLOCK, ERASE CWK A7,CCRTWR-2 RF(NG) WRIT30 ADK A7,1 TOO MANY RETRIES ON FIRST BLOCK WRIT30 LD A2,DWTMOD,A6 RF(NN) WRIT40 SEQ NUMBERS USED LDK A2,0 NO SEQ NUMBERS RF WRIT50 WRIT40 LDR A2,A7 ERASE SOME BLOCKS WRIT50 CF A5,ERAS ANKL A1,/0400 SAVE EOT ORS A1,DWTEOT,A6 SUK A2,1 RB(NN) WRIT50 ADK A7,1 CWK A7,CCRTWR RF(NG) WRIT60 OK IM DWTWRE,A6 INC STAT CNT ANKL A1,/800 INDICATE ERROR ABL ENDIO3 NO MORE RETRIES WRIT60 EQU * RB WRIT15 EJECT * * LOAD /37 * LOAD LDK A7,CCRTLD LD A2,DWTHRC,A6 CHECK IF HANDL AT REC RF(Z) ILLORD NO ILLEGAL ORDER LD A2,ECBCW,A8 GET MODE BIT SRC A2,1 ST A2,DWTMOD,A6 SET SEQ MODE LOAD10 CF A5,LOCK RF(1) LOAD20 TIME OUT, NOT OPERABLE IM DWTLCK,A6 INDICATE LOCKED RF RWND LOAD20 LDR A2,A1 SRC A2,1 RF(NN) ENDIO4 TIME OUT IM DWTINS,A6 INC STAT CNT SUK A7,1 RF(N) ENDIO4 ENOUGH WITH RETRIES CF A5,MVCT TRY AGAIN TO MAKE MATS HAPPY CF A5,MVCR RB LOAD10 EJECT * * REWIND /31 * RWND CM DWTSQC,A6 CLEAR SEQ COUNTER CF A5,REWD REWIND TO LEADER RF ENDIO4 EJECT * * UNLOAD /38 * UNLD CM DWTSQC,A6 CLEAR SEQ COUNTER CF A5,REWD REWIND TO LEADER UNLD10 CF A5,UNLK UNLOCK CASSETTE CM DWTLCK,A6 INDICATE CAS NOT LOCKED RF ENDIO6 * * RECOVER /3F * RECV LD A2,DWTLCK,A6 CHECK IF CAS SHOULD BE LOCKED RF(Z) ILLORD NO NO CF A5,CCRC RECOVER RECORDER OR A1,DWTSAV,A6 PUT IN WP,B-SIDE RF ENDIO7 EJECT * * READ MATS /3D * RDMA LD A2,DWTSQC,A6 GET SEQ COUNTER RF(NZ) RDMA10 NOT FIRST BLOCK LDK A2,CCRTSB FIRST BLOCK SEARCH BOT RDMA05 CF A5,SBOT RF(5) RDMA07 OK IM DWTMNO,A6 INC STAT CNT ABL ENDIO4 ILL STATUS RDMA07 EQU * ANKL A1,/0400 RF(NZ) RDMA10 BOT FOUND SUK A2,1 BOT NOT FOUND RF(NN) RDMA08 OK IM DWTMBM,A6 INC STAT CNT ABL ENDIOB NO MORE RETRIES RDMA08 EQU * CF A5,REWD TRY AGAIN RB RDMA05 RDMA10 CF A5,MATS READ FOR MATS RF(4) RDMA12 IM DWTMOK+2,A6 INC STAT CNTR(S) RF(NZ) RDMA11 IM DWTMOK,A6 RDMA11 EQU * ABL READ20 STATUS, DATA OK RDMA12 RF(6) RDMA14 IM DWTMDE,A6 INC STAT CNT ABL ENDIO1 ILL DATA RDMA14 IM DWTMIL,A6 INC STAT CNT ABL ENDIO4 ILL STATUS EJECT * * ILLEGAL ORDER SEQUENCE * ILLORD LDKL A1,/0080 IND ILL ORDER RF ENDIO6 * * COMMON EXITS FOR ORDER PROCESSORS * ENDIOE ORKL A1,/0040 IND HARDWARE ERROR ENDIOC ANKL A1,/FCFF MASK WP, B-SIDE LDR A7,A1 CHECK IF NOT OPERABLE SRC A7,1 RF(N) CKPWF NOT OP, CHECK IF POWER FAIL RF ENDIO7 ENDIOB ORKL A1,/2000 INDICATE BOT MISSING RF ENDIO4 ENDIO1 IM DWTSQC,A6 INCR SEQ COUNTER ENDIO2 EX DWTRRA,A6 RER A3,CCIOPA SUR A3,A4 CALC EFFECTIVE LENGTH LD A4,DWTMOD,A6 CHECK IF SEQ NUMBERS RF(N) *+4 NO SUK A3,1 YES ADJUST LENGTH ST A3,ECBEL,A8 SAVE IN ECB ENDIO3 ST A7,ECBCW,A8 SAVE NO OF RETRIES ENDIO4 OR A1,DWTSAV,A6 PUT IN WP, B-SIDE OR A1,DWTEOT,A6 PUT IN EOT ENDIO5 LDR A7,A1 CHECK IF NOT OPERABLE SRC A7,1 RF(N) CKPWF NOT OP, CHECK IF POWER FAIL ENDIO6 ST A1,DWTSTA,A6 SAVE STATUS ENDIO7 CM DWTREQ,A6 IND NO ACTIVE REQUEST CM DWTTMK,A6 CLEAR TM INDICATOR ABL DISEND EJECT * * THE THING WAS NOT OPERABLE, CHECK IF A POWER * FAIL IS COMING ALONG. * CKPWF SLC A7,1 ST A7,DWTSA7,A6 SAVE STATUS LDR A1,A6 KEEP DWT ADDRESS LDK A4,DWTPWF ADR A4,A6 CF A15,SETIMP WAIT FOR POWER FAIL DATA CKPWF1,CCPOFF ABL TDISP CKPWF1 LDR A6,A1 RESTORE DWT ADDRESS LD A1,DWTSA7,A6 RESTORE STATUS CM DWTPWF,A6 IND NO PWF TIMER RB ENDIO7 EJECT * * POSI POSITION TAPE * * EXIT: * CR: E=SUCCESS, NE=NO SUCCESS * POSI LD A2,DWTMOD,A6 CHECK SEQ MODE RF(NN) POSI05 SEQ NUMBERS USED CF A5,SKPR NO SEQ NUMBERS RF POSIOK POSI05 CM DWTREP,A6 RESET REPOS DOUBLE COUNTER POSI10 LDK A2,5 REVERSE FIVE BLOCKS POSI20 SUK A2,1 RF(N) POSI28 CF A5,SKPR RB(5) POSI20 STATUS OK LD A2,DWTSQC,A6 NO DATA, SEQ NO GREAT THAN 10 ? SUK A2,8 RF(NG) POSI22 NO IM DWTPND,A6 INC STAT CNT RF POSIER POS ERROR POSI22 EQU * CF A5,REWD NO DATA, REWIND CF A5,SBOT LDR A2,A1 SLC A2,5 RF(N) POSI25 BOT FOUND IM DWTPBM,A6 INC STAT CNT RF POSIER POS ERROR POSI25 EQU * LDKL A3,-1 CLEAR SEQ NUMBER LD A2,DWTSQC,A6 RF(Z) POSIOK NO BLOCKS ON TAPE RF POSI40 POSI28 EQU * LDK A2,4 SET NO OF MAX READ POSI30 CF A5,RDSEQN READ SEQ NUMBER TO A3 POSI40 ANKL A1,/184F TEST STATUS RF(Z) POSI45 READ OK SUK A2,1 COUNT READ RB(P) POSI30 NOT ALL READ DONE IM DWTPNS,A6 INC STAT CNT RF POSI80 GIVE IT ONE MORE TRY POSI45 EQU * LC A2,DWTSQC,A6 CALC NO OF BLOCKS TO GO SUR A2,A3 SUK A2,1 ANK A2,/FF CWK A2,10 RF(NG) POSI48 WITHIN LIMITS IM DWTPTF,A6 INC STAT CNT RF POSIER POS ERROR POSI48 EQU * POSI50 SUK A2,1 POSITION TAPE RF(N) POSI60 CF A5,RDSEQN RB POSI50 POSI60 LDKL A2,/84F TEST STATUS TM A1,A2 RF(Z) POSI65 OK IM DWTPIE,A6 INC STAT CNT RF POSI80 GIVE IT ONE MORE TRY POSI65 EQU * LDR A2,A1 SLC A2,3 CHECK IF TAPE MARK RF(NN) POSI70 NOT TAPE MARK LD A2,DWTSTA,A6 TAPE MARK, GET LAST STATUS SLC A2,3 RF(N) POSIOK OK SHOULD BE TAPE MARK IM DWTPIT,A6 INC STAT CNT RF POSI80 GIVE IT ONE MORE TRY POSI70 ADK A3,1 CHECK SEQ NUMBER CC A3,DWTSQC,A6 RF(E) POSIOK IM DWTPIS,A6 INC STAT CNT, ILL SEQ NO POSI80 LD A2,DWTREP,A6 TEST IF ONE MORE TRY SHOULD BE DONE RF(Z) POSI90 YES IM DWTPDB,A6 INC STAT CNT RF POSIER POS ERROR POSI90 IM DWTREP,A6 ONE MORE TRY ABL POSI10 POSIOK ADK A5,4 SUR A2,A2 ABR* A5 POSIER ADK A5,4 ORK A1,/0014 INDICATE SEQ, DATA ERR ABR* A5 EJECT * * COMMAND HANDLERS * * ENTRY: CF A5,<COM> * * A3: IF RBLK,WBLK: REQUESTED LENGTH * A4: IF RBLK,WBLK: BUFFER ADDRESS * A6: DWT ADDRESS * * EXIT: RTN A5 * * A1: STATUS AFTER COMMAND * A2: RESTORED * A3: REQUESTED LENGTH IN ECB * A4: BUFFER ADDRESS IN ECB * A6: DWT ADDRESS * A7: RESTORED * A8: ECB ADDRESS * * CR: =0: NOT ILL STATUS, NOT ILL DATA * =1: ILL STATUS: HANDL NOT AT TRAY/ NO DATA, TOT, NOT OP * =2: NOT ILL STATUS, ILL DATA: DATA ERR, THRUPUT ERR * STPT LDK A1,/04 STEP TRAY RF COMM MVCR LDK A1,/05 MOVE CAS TO RECORDER RF COMM MVCT LDK A1,/06 MOVE CAS TO TRAY RF COMM MVCD LDK A1,/07 MOVE CAS TO DISCH COMP RF COMM TEST LDK A1,/00 TEST STATUS RF COMM SETI SLL A1,4 SET INDICATORS ANK A1,/FF ADK A1,/01 RF COMM LOCK LDK A1,/02 LOCK CASSETTE RF COMM UNLK LDK A1,/03 UNLOCK CASSETTE RF COMM SBES LDK A1,/08 SEARCH BOT AND ERASE RF COMM ERAS LDK A1,/09 ERASE RF COMM WBLK LDK A1,/0A WRITE BLOCK ORKL A3,/4000 INDICATE WRITE TO IOP RF RBLK10 WTMK LDK A1,/0B WRITE TAPE MARK RF COMM SBOT LDK A1,/0C SEARCH BOT RF COMM MATS LDK A1,/1D READ FOR MATS RF RBLK10 RBLK LDK A1,/0D READ BLOCK RBLK10 EX DWTWRL,A6 GIVE REQUESTED LENGTH EX DWTWRA,A6 AND BUFFER ADDRESS TO IOP RF COMM SKPR LDK A1,/0E SKIP REVERSE RF COMM REWD LDK A1,/0F REWIND TO LEADER LDKL A3,-600 60 SECONDS TIME OUT RF COMM10 COMM LDKL A3,-150 15 SECONDS TIME OUT COMM10 ST* A3,DWTTIM,A6 SET TIME OUT CM DWTINT,A6 IND INT ALLOWED EX DWTIOS,A6 CIO A1,1,CHCCX RF(A) COMM20 RF(3) COMM15 NO INTERFACE IN COMPUTER LDK A1,9 CF A15,HALT MONITOR HALT COMM15 LD A3,ECBRL,A8 RESTORE REG LD A4,ECBBA,A8 ADK A5,4 UPDATE A5 STACK POINTER LDKL A1,1 INDICATE NOT OPERABLE ABR* A5 COMM20 ST A2,DWTSA2,A6 SAVE REGISTERS ST A5,DWTSA5,A6 ST A7,DWTSA7,A6 ABL TDISP GO TO DISPATCHER EJECT * * TIMOUT ENTERED IF TIME OUT DURING COMMAND * TIMOUT LD A2,DWTINT,A1 CHECK IF INT ALLOWED RF(NZ) TOUT10 NO EX DWTIOH,A1 YES CIO HALT C1S DWTTOT,A1 IND TIME OUT TOUT10 LDKL A2,-1000 RESTART TIMER ST* A2,DWTTIM,A1 ABL TDISP EJECT * * IHCC1-3 INTERRUPT HANDLER CASSETTE CHANGER * IHCC1 CF A15,SAVE8 ENTRY FOR CC1 ST P,INTSAV SAVE LAST INT. LDKL A6,DWCC01 RF IHCC10 IHCC2 CF A15,SAVE8 ENTRY FOR CC2 ST P,INTSAV SAVE LAST INT. LDKL A6,DWCC02 RF IHCC10 IHCC3 CF A15,SAVE8 ENTRY FOR CC3 ST P,INTSAV SAVE LAST INT. LDKL A6,DWCC03 IHCC10 EX DWTSST,A6 SST A1,CHCCX RF(A) IHCC20 LDK A1,9 CF A15,HALT MONITOR HALT IHCC20 C1S DWTINT,A6 CHECK IF ILL INTERRUPT RF(NZ) IHCC30 LDK A1,5 CF A15,HALT MONITOR HALT IHCC30 LD A8,DWTECB,A6 GET ECB ADDRESS LD A5,DWTSA5,A6 RESTORE STACK POINTER IHCC40 LD A2,DWTTOT,A6 CHECK IF TIME OUT RF(Z) IHCC50 NO ORKL A1,/0040 YES IND IN STATUS CM DWTTOT,A6 RESET TOT INDICATOR IHCC50 LDK A2,/00 LDKL A3,/0847 CHECK IF ILL STATUS, DATA TM A1,A3 RF(Z) IHCC60 STATUS, DATA OK LDK A2,/40 SUK A3,/6 TM A1,A3 RF(NZ) IHCC60 ILL STATUS LDK A2,/80 ILL DATA IHCC60 SLC A2,2 ST A2,2,A5 UPDATE CR LD A3,ECBRL,A8 RESTORE REGISTERS LD A4,DWTMOD,A6 CHECK IF SEQ NUMBERS RF(N) *+4 NO ADK A3,1 YES ADJUST LENGTH LD A4,ECBBA,A8 LD A2,DWTSA2,A6 LD A7,DWTSA7,A6 RTN A5 EJECT * * CXDRON ENTRIES AT POWER ON RECOVERY * C1DRON CF A15,SAVE8 RECOVER CC1 LDKL A6,DWCC01 RF CCON C2DRON CF A15,SAVE8 RECOVER CC2 LDKL A6,DWCC02 RF CCON C3DRON CF A15,SAVE8 RECOVER CC3 LDKL A6,DWCC03 RF CCON CCON CM DWTST,A6 SET BUSY DWT LDR A1,A6 SAVE DWT ADDRESS LDK A4,DWTTIM CHECK IF COM TIMER STARTED ADR A4,A6 LDR* A3,A4 RF(NZ) CCON10 YES CF A15,SETIMP START COMMAND TIMER DATA TIMOUT,1000 CCON10 LDK A4,DWTPWF CHECK IF PWF TIMER ON ADR A4,A6 LDR* A3,A4 RF(NZ) CCON20 YES CF A15,SETIMP NO START IT DATA CCON30,CCPON RF CCON25 CCON20 LDKL A2,-CCPON WAIT FOR EVERYTHING STR A2,A3 LDKL A2,CCON30 LD A4,-2,A3 ST A2,2,A4 CCON25 ABL TDISP CCON30 LDR A6,A1 RESTORE DWT ADDRESS LDK A5,DWTSB2 LOAD STACK POINTER ADR A5,A6 LD A8,DWTECB,A6 LOAD ECB ADDRESS CM DWTPWF,A6 IND NO PWF TIMER LD A2,DWTLCK,A6 CHECK IF CAS SHOULD BE LOCKED RF(Z) CCON40 NO CF A5,CCRC RECOVER RECORDER CCON40 LD A2,DWTREQ,A6 CHECK IF ACTIVE REQUEST ABL(Z) DISEND NO RETURN ABL CCDA40 REPEAT ACTIVE REQUEST EJECT * * CCRC RECOVERY ROUTINE. THE CASSETTE IS LOCKED (IF CORR FLAG) * AND THE TAPE IS POSITIONED BEFORE THE BLOCK GIVEN BY THE * BLOCK SEQUENCE COUNTER. IF UNSUCCESSFUL DUE TO INCORRECT * SEQUENCE NUMBERS ON THE TAPE, THE CASSETTE IS UNLOADED. * CCRC LD A2,DWTMOD,A6 CHECK SEQ MODE RF(N) CCRCUK NO SEQ NUMBERS CF A5,LOCK RF(1) CCRCUK TIME OUT, NOT OPERABLE LD A7,DWTSQC,A6 GET SEQUECE COUNTER ABL(Z) REWD NO BLOCKS ON TAPE ANK A7,/FF LDK A2,CCRBLK REVERSE TAPE TO AVOID ANY OLD BLOCKS CCRC10 CF A5,SKPR SLC A1,4 CHECK IF DATA RF(N) CCRC20 NO DATA SUK A2,1 RB(NZ) CCRC10 CF A5,RDSEQN READ SEQ NUMBER CF A5,RDSEQN LDR A2,A1 SLC A2,3 CHECK IF TAPE MARK RF(NN) CCRC30 NOT TAPE MARK LDK A2,3 TAPE MARK, TRY PREVIOUS BLOCK RB CCRC10 CCRC20 CF A5,REWD REWIND AND SEARCH BOT CF A5,SBOT LDKL A3,-1 CLEAR SEQ NUMBER CCRC30 ANK A1,/004F CHECK IF TOT, INC LENGTH, DAT ERR, THRU ERR, NOT OP RF(NZ) CCRCUK ILL CONDITIONS ADK A3,2 CALC NO OF BLOCKS TO GO SUR A7,A3 CCK A7,/8000 COMPARE A7,128 RF(L) CCRC60 GO FORWARD CCRC40 NGR A7,A7 TRY REVERSE ANK A7,/FF CWK A7,CCRCBL RF(G) CCRCUK TOO MANY BLOCKS TO GO CCRC50 SUK A7,1 RF(N) CCRC80 CF A5,SKPR RB CCRC50 CCRC60 ANK A7,/FF TRY FORWARD CWK A7,CCRCBL RF(G) CCRCUK TOO MANY BLOCKS TO GO CCRC70 SUK A7,1 RF(N) CCRC80 CF A5,RDSEQN RB CCRC70 CCRC80 CF A5,RDSEQN READ SEQ NUMBER TO A3 LDKL A4,/E8FF CHECK IF ILLEGAL CONDITIONS TM A1,A4 RF(NZ) CCRCUK YES TO BAD LDR A4,A1 CHECK IF TAPE MARK SLC A4,3 RF(NN) CCRC90 NOT TAPE MARK LD A4,DWTSTA,A6 GET LAST STATUS SLC A4,3 RF(N) CCRCOK OK SHOULD BE TAPE MARK CCRCUK ABL UNLK AND UNLOCK CASSETTE CCRC90 ADK A3,1 CHECK SEQ NUMBER CC A3,DWTSQC,A6 RB(NE) CCRCUK NOT EQUAL CCRCOK RTN A5 OK RECOVERY READY EJECT * * RDSEQN READ SEQ NUMBER TO A3 * RDSEQN LDKL A3,256 SET UP BUFFER LD A4,DWTBUF,A6 CF A5,RBLK READ BLOCK EX DWTRRA,A6 RER A3,CCIOPA SUK A3,1 GET SEQ NUMBER LCR A3,A3 ANK A3,/FF RTN A5 EJECT * * LEGAL ORDER TAB * CCTAB DATA /0206,/3D00,/2231,/3738 DATA /3F10,/1112,/1314,/3E00 CCLEN EQU *-CCTAB-1 CCORD DATA READ,WRIT,RDMA,TSTR,WRTM,RWND,LOAD,UNLD DATA RECV,TCSI,ISRT,RTRN,EJCT,FEED,RSET CCNOL EQU *-12-12 * DWCC01 DEVICE WORK TABLE CC1 DWCC01 DATA CCDA DWTCHP DATA /8000 DWTST DATA 0 DWTECB DATA 0 DWTOR DATA DWCC01 DWTADR DATA 0 DWTTAB DATA 0 DWTWAT DATA 0 DWTTQ DATA 0 DWTREQ REQ ORDER POINTER DATA 0 DWTSAV SAVED WP,BSIDE DATA 0 SUBR STACK DATA 0 DATA 0 DATA 0 DATA 0 DATA 0 DWTSB2 STACK BASE DATA 0 DWTSA2 SAVE AREA FOR REG DATA 0 DWTSA5 DATA 0 DWTSA7 DATA /FFFF DWTINT /0: INT ALLOWED DATA 0 DWTMOD BIT0: SEQ MODE DATA 0 DWTSQC SEQ COUNTER DATA 0 DWTTOT TIME OUT FLAG DATA 0 DWTTIM TIMER ADDRESS DATA 0 DWTHRC HANDL AT REC FLAG DATA 0 DWTLCK CAS LOCKED FLAG DATA 0 DWTSTP TRAY STEPPED FLAG DATA 0 DWTPWF PWF TIMER ADDRESS WER A3,C1IOPL DWTWRL I/O INSTRUCTIONS WER A4,C1IOPA DWTWRA RER A3,C1IOPA DWTRRA CIO A1,1,CHCC1 DWTIOS CIO A1,0,CHCC1 DWTIOH SST A1,CHCC1 DWTSST DATA 0 DWTSTA LAST STATUS DATA 0 DWTEOT EOT INDICATOR DATA CCBUF1 DWTBUF BUFFER ADDRESS * STATISTIC COUNTERS FOR WRITE DATA 0 DWTWBM BOT MISSING DATA 0 DWTWIL ILLEGAL STATUS /0841 DATA 0 DWTWSE SEQ ERROR = POS ERROR /0010 DATA 0 DWTWRE RETRY ERROR = NORM DATA ERROR /0004 DATA 0,0 DWTWOK WRITING OK (32 BITS) * STATISTIC COUNTERS FOR READ DATA 0 DWTRNO NOT OPERABEL DATA 0 DWTRBM BOT MISSING DATA 0 DWTRIL ILLEGAL STATUS /0841 DATA 0,0 DWTRSE SEQ ERROR /0010 (32 BITS) DATA 0 DWTRRE RETRY ERROR = NORMAL DATA ERROR /000E DATA 0,0 DWTROK READING OK (32 BITS) * STATISTIC COUNTERS FOR CONTROL READ (READ MATS) DATA 0 DWTMNO NOT OPERABLE DATA 0 DWTMBM BOT MISSING DATA 0 DWTMIL ILLEGAL STATUS /0841 DATA 0 DWTMDE DATA ERROR (NO RETRY PERF) /000E DATA 0,0 DWTMOK CONTROL READING OK (32 BITS) * POS COUNTER DATA 0 DWTREP POS ONE MORE TRY COUNTER * STATISTIC COUNTERS FOR POS DATA 0 DWTPND NO DATA = PPOS ERR DATA 0 DWTPBM BOT MISSING = POS ERR DATA 0 DWTPNS NO SEQ NO FOUND = 2 TRIES DATA 0 DWTPTF TO FARE AWAY = POS ERR DATA 0 DWTPIT PREV=ILL TM = 2 TRIES DATA 0 DWTPIS PREV=ILL SEQ NO = 2 TRIES DATA 0 DWTPIE PREV =ILL DAT ERR = 2 TRIES DATA 0 DWTPDB ERROR AFTER 2 TRIES * DATA 0 DWTTMK TAPE MARK INDICATOR * * STATISTIC COUNTERS FOR CHANGER DATA 0 DWTINS INSERT FAILURE DATA 0 DWTRET RETURN FAILURE * CCBUF1 RES 128 BUFFER FOR RDSEQN * DWCC02 DEVICE WORK TABLE CC2 DWCC02 DATA CCDA DWTCHP DATA /8000 DWTST DATA 0 DWTECB DATA 0 DWTOR DATA DWCC02 DWTADR DATA 0 DWTTAB DATA 0 DWTWAT DATA 0 DWTTQ DATA 0 DWTREQ REQ ORDER POINTER DATA 0 DWTSAV SAVED WP,BSIDE DATA 0 SUBR STACK DATA 0 DATA 0 DATA 0 DATA 0 DATA 0 DWTSB2 STACK BASE DATA 0 DWTSA2 SAVE AREA FOR REG DATA 0 DWTSA5 DATA 0 DWTSA7 DATA /FFFF DWTINT /0: INT ALLOWED DATA 0 DWTMOD BIT0: SEQ MODE DATA 0 DWTSQC SEQ COUNTER DATA 0 DWTTOT TIME OUT FLAG DATA 0 DWTTIM TIMER ADDRESS DATA 0 DWTHRC HANDL AT REC FLAG DATA 0 DWTLCK CAS LOCKED FLAG DATA 0 DWTSTP TRAY STEPPED FLAG DATA 0 DWTPWF PWF TIMER ADDRESS WER A3,C2IOPL DWTWRL I/O INSTRUCTIONS WER A4,C2IOPA DWTWRA RER A3,C2IOPA DWTRRA CIO A1,1,CHCC2 DWTIOS CIO A1,0,CHCC2 DWTIOH SST A1,CHCC2 DWTSST DATA 0 DWTSTA LAST STATUS DATA 0 DWTEOT EOT INDICATOR DATA CCBUF2 DWTBUF BUFFER ADDRESS * STATISTIC COUNTERS FOR WRITE DATA 0 DWTWBM BOT MISSING DATA 0 DWTWIL ILLEGAL STATUS /0841 DATA 0 DWTWSE SEQ ERROR = POS ERROR /0010 DATA 0 DWTWRE RETRY ERROR = NORM DATA ERROR /0004 DATA 0,0 DWTWOK WRITING OK (32 BITS) * STATISTIC COUNTERS FOR READ DATA 0 DWTRNO NOT OPERABEL DATA 0 DWTRBM BOT MISSING DATA 0 DWTRIL ILLEGAL STATUS /0841 DATA 0,0 DWTRSE SEQ ERROR /0010 (32 BITS) DATA 0 DWTRRE RETRY ERROR = NORMAL DATA ERROR /000E DATA 0,0 DWTROK READING OK (32 BITS) * STATISTIC COUNTERS FOR CONTROL READ (READ MATS) DATA 0 DWTMNO NOT OPERABLE DATA 0 DWTMBM BOT MISSING DATA 0 DWTMIL ILLEGAL STATUS /0841 DATA 0 DWTMDE DATA ERROR (NO RETRY PERF) /000E DATA 0,0 DWTMOK CONTROL READING OK (32 BITS) * POS COUNTER DATA 0 DWTREP POS ONE MORE TRY COUNTER * STATISTIC COUNTERS FOR POS DATA 0 DWTPND NO DATA = PPOS ERR DATA 0 DWTPBM BOT MISSING = POS ERR DATA 0 DWTPNS NO SEQ NO FOUND = 2 TRIES DATA 0 DWTPTF TO FARE AWAY = POS ERR DATA 0 DWTPIT PREV=ILL TM = 2 TRIES DATA 0 DWTPIS PREV=ILL SEQ NO = 2 TRIES DATA 0 DWTPIE PREV =ILL DAT ERR = 2 TRIES DATA 0 DWTPDB ERROR AFTER 2 TRIES * DATA 0 DWTTMK TAPE MARK INDICATOR * * STATISTIC COUNTERS FOR CHANGER DATA 0 DWTINS INSERT FAILURE DATA 0 DWTRET RETURN FAILURE * CCBUF2 RES 128 BUFFER FOR RDSEQN * DWCC03 DEVICE WORK TABLE CC3 DWCC03 DATA CCDA DWTCHP DATA /8000 DWTST DATA 0 DWTECB DATA 0 DWTOR DATA DWCC03 DWTADR DATA 0 DWTTAB DATA 0 DWTWAT DATA 0 DWTTQ DATA 0 DWTREQ REQ ORDER POINTER DATA 0 DWTSAV SAVED WP,BSIDE DATA 0 SUBR STACK DATA 0 DATA 0 DATA 0 DATA 0 DATA 0 DWTSB2 STACK BASE DATA 0 DWTSA2 SAVE AREA FOR REG DATA 0 DWTSA5 DATA 0 DWTSA7 DATA /FFFF DWTINT /0: INT ALLOWED DATA 0 DWTMOD BIT0: SEQ MODE DATA 0 DWTSQC SEQ COUNTER DATA 0 DWTTOT TIME OUT FLAG DATA 0 DWTTIM TIMER ADDRESS DATA 0 DWTHRC HANDL AT REC FLAG DATA 0 DWTLCK CAS LOCKED FLAG DATA 0 DWTSTP TRAY STEPPED FLAG DATA 0 DWTPWF PWF TIMER ADDRESS WER A3,C3IOPL DWTWRL I/O INSTRUCTIONS WER A4,C3IOPA DWTWRA RER A3,C3IOPA DWTRRA CIO A1,1,CHCC3 DWTIOS CIO A1,0,CHCC3 DWTIOH SST A1,CHCC3 DWTSST DATA 0 DWTSTA LAST STATUS DATA 0 DWTEOT EOT INDICATOR DATA CCBUF3 DWTBUF BUFFER ADDRESS * STATISTIC COUNTERS FOR WRITE DATA 0 DWTWBM BOT MISSING DATA 0 DWTWIL ILLEGAL STATUS /0841 DATA 0 DWTWSE SEQ ERROR = POS ERROR /0010 DATA 0 DWTWRE RETRY ERROR = NORM DATA ERROR /0004 DATA 0,0 DWTWOK WRITING OK (32 BITS) * STATISTIC COUNTERS FOR READ DATA 0 DWTRNO NOT OPERABEL DATA 0 DWTRBM BOT MISSING DATA 0 DWTRIL ILLEGAL STATUS /0841 DATA 0,0 DWTRSE SEQ ERROR /0010 (32 BITS) DATA 0 DWTRRE RETRY ERROR = NORMAL DATA ERROR /000E DATA 0,0 DWTROK READING OK (32 BITS) * STATISTIC COUNTERS FOR CONTROL READ (READ MATS) DATA 0 DWTMNO NOT OPERABLE DATA 0 DWTMBM BOT MISSING DATA 0 DWTMIL ILLEGAL STATUS /0841 DATA 0 DWTMDE DATA ERROR (NO RETRY PERF) /000E DATA 0,0 DWTMOK CONTROL READING OK (32 BITS) * POS COUNTER DATA 0 DWTREP POS ONE MORE TRY COUNTER * STATISTIC COUNTERS FOR POS DATA 0 DWTPND NO DATA = PPOS ERR DATA 0 DWTPBM BOT MISSING = POS ERR DATA 0 DWTPNS NO SEQ NO FOUND = 2 TRIES DATA 0 DWTPTF TO FARE AWAY = POS ERR DATA 0 DWTPIT PREV=ILL TM = 2 TRIES DATA 0 DWTPIS PREV=ILL SEQ NO = 2 TRIES DATA 0 DWTPIE PREV =ILL DAT ERR = 2 TRIES DATA 0 DWTPDB ERROR AFTER 2 TRIES * DATA 0 DWTTMK TAPE MARK INDICATOR * * STATISTIC COUNTERS FOR CHANGER DATA 0 DWTINS INSERT FAILURE DATA 0 DWTRET RETURN FAILURE * CCBUF3 RES 128 BUFFER FOR RDSEQN END