|
|
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: 23928 (0x5d78)
Notes: pts_type(SC)
Names: »DRTC01.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/DRTC01.SC«
IDENT DRTC01 REL 8.2 78-09-15 870105040820 NO SELECT AT PGM LOADING FAST I/O, SHORT INH TIME REL 8.1 78-04-21 ******************************************************* * * PHILIPS TERMINAL SYSTEM PTS * * DRTC01 = DRIVER TAPE CASSETTE RECORDER * * * * * * ******************************************************* * * * THIS DRIVER HANDLES ONE OR TWO TAPE CASSETTE RECORDERS * CONNECTED TO CPU VIA CHCR-DCR * * ONLY ONE RECORDER CAN BE BE OPERATED AT A TIME, EXCEPT * AT REWIND AND UNLOAD * * DATA IS RECORDED IN BLOCKS WITH LENGTHS FROM 2 TO * 256 CHARACTERS * EJECT DRTC01 * * * THE DRIVER CONSISTS OF THE FOLLOWING PARTS: * * T C D A : ACTIVATION PART * * I H T C : INTERRUPT HANDLER * * R C O V E R : RECOVERY ROUTINE * * D W T C 0 1 : DEVICE WORK TABLE 01 * * D W T C 0 2 : DEVICE WORK TABLE 02 * * AND O R D E R P R O C E S S O R S * * * THE FOLLOWING ORDERS ARE TREATED: * * ORDER /00: TEST STATUS * /02: READ * /05: WRITE * /06: WRITE * /22: WRITE TAPE MARK * /26: LOCK * /31: REWIND * /33: REVERSE * /24: ERASE * /37: LOAD * /38: UNLOAD * EJECT DRTC01 * * * THE FOLLOWING RETURN CODES ARE USED: * * BIT 0 REQUEST ERROR * 1 LEADER * 2 BOT MISSING * 3 TAPE MARK DETECTED * 4 NO DATA/ERASED * 5 BOT/EOT HOLE * 6 WRITE PROTECTED * 7 B-SIDE * 9 REWIND TIME-OUT * 11 SEQUENCE ERROR * -READ SEQUENCE ERROR * -POSITION OF TAPE UNSUCCESSFULL AT WRITE RECOVERY * -POWER RECOVERY WHEN SEQ. COUNTER NOT USED * -POWER RECOVERY NOT SUCCESSFULL * 12 INCORRECT LENGTH * 13 CRC ERRROR * 14 THROUGHPUT ERROR * 15 NOT OPERABEL * EJECT DRTC01 * * * NORMAL USAGE OF REGISTERS: * * REGISTER A1: RETURN CODE * A2: SST STATUS * A3: DWT STATUS AFTER SST * A4: RETRY COUNTER * A5: SEQUENCE CHARACTER AFTER READ/WRITE * A6: DWT ADDRESS * A8: SUBROUTINE STACK * * * SYSTEM ADAPTATION: * * BY MEANS OF CONDITIONAL ASSEMBLY THE DRIVER CAN BE * REDUCED TO HANDLE: * * -ONLY ONE CASSETTE RECORDER * -ORDERS REVERSE, ERASE AND LOCK EXCLUDED * EJECT DRTC01 * * *********** * ENTRIES * *********** * * ENTRY IHTC INTERRUPT ADDRESS ENTRY DWTC01 DWT FOR CASSETTE RECORDER 01 ENTRY DWTC02 DWT FOR CASSETTE RECORDER 02 ENTRY TCDRON POWER UP RECOVERY * * ******************************** * EXTERNAL TOSS MODULE ENTRIES * ******************************** * * EXTRN TDISP DISPATCHER MAIN ENTRY EXTRN SAVE8 DISPATCHER SAVE REGS 1-8 SUBROUTINE EXTRN RETUR8 DISPATCHER LOAD A1-A8 RETURN EXTRN TENDIO GLOBAL END-OF-I/O ROUTINE EXTRN DISEND GO TO DISPATCHER VIA TENDIO EXTRN DISIOE DISPATCHER I/O REQUEST ERROR ENTRY EXTRN INTSAV SAVE AREA LAST INTERRUPT EXTRN INIFLG INIT FLAG AT PGM LOADING EXTRN SWLXY SWITCH TO LEVEL XY EXTRN ECBRL REQUESTED LENGTH IN ECB EXTRN ECBEL EFFECTIVE LENGTH IN ECB EXTRN ECBCW CONTROL WORD IN ECB EJECT DRTC01 * * ****************** * DWT PARAMETERS * ****************** * * EXTRN DWTST DWT SOFTWARE STATUS: * BIT # 0 - DEVICE AND CONTROLLER READY * BIT #11 - TAPE MARK ENCOUNTERED ON LAST * BIT #12 - REPOSITIONING AT RECOVERY * BIT #13 - WRITE PROTECTED * BIT #14 - A-SIDE BIT #15 - DEVICE LOCKED (OPERABLE) EXTRN DWTOR DWT ORDER EXTRN DWTECB DWT ECB ADDRESS EJECT DRTC01 * * ************************ * CONDITIONAL ASSEMBLY * ************************ * * THE DRIVER CAN BE REDUCED TO HANDLE ONLY ONE CASSETTE * RECORDER BY SETTING X:A=1 * X:A EQU 1 DBCAS EQU X:A * * ORDERS REVERSE, ERASE AND LOCK MAY BE EXCLUDED * BY SETTING X:B=0 * X:B EQU 0 REVER EQU X:B * EJECT DRTC01 * * CONSTANTS AND WORK AREAS * TCAD DATA TCDA ACTIVATION ENTRY DATA 0 ABORT ROUTINE ADDRESS RES 4 SUBROUTINE STACK STB EQU *-2 * * TAB DATA /0031,/2237,/3802,/0506 IFT REVER=1 DATA /2633,/24FF XIF TABL EQU *-TAB EJECT DRTC01 * * *************************** * CHANNEL UNIT PARAMETERS * *************************** * * * DEVICE ADDRESS: * CHCRDA EQU /0E * * ************* * CONSTANTS * ************* * * RTRIES EQU 3 MAX NO OF RETRIES * PSUBS EQU 5 POWER UP BACKSPACE NUMBER * PREAD EQU 4 POWER UP READ NUMBER * PINT EQU 10 POWER UP RECOVERY BLOCK COUNT INTERVAL * IFT REVER=1 PERAS EQU 6 NO OF ERASE FOR ORDER /24 XIF EJECT DRTC01 * * * T C D A * * ACTIVATION PART : CHECK VALIDITY OF ORDERS AND START PROCESSING * * TCDA EQU * LDK A1,0 LDK A4,TABL-1 * TCDA10 CC A7,TAB,A4 FIND OUT IF LEGAL ORDER RF(E) TCDA20 VALID ORDER SUK A4,1 RB(NN) TCDA10 TRY NEXT * TCDA15 EQU * ABL DISIOE ILLEGAL ORDER * TCDA20 ADR A4,A4 DOUBLE TO GET INDEX ST A4,TCDAX SAVE INDEX LD A5,ECBRL,A8 GET REQUESTED LENGTH LD A3,SEKBYT,A6 SEQUENCE COUNTER ? RF(NE) TCDA21 NO ADK A5,1 COMPENSATE FOR SEQUENCE CHARACTER * TCDA21 EQU * LDR A2,A3 RECOVERY/SEQUENCE ERROR STATUS ANK A2,2 RF(NZ) TCDR10 YES * ADK A5,1 NGR A5,A5 MAKE REQUESTED LENGTH NEGATIVE ST A5,HELPME SAVE IT FOR RECOVERY PURPOSES SUK A7,/37 LOAD ? RF(NE) TCDA22 NO LD A3,ECBCW,A8 GET CONTROL WORD ANK A3,1 ST A3,SEKBYT,A6 INDICATE SEQ. COUNTER OR NOT * TCDA22 LD A3,2,A8 GET BUFFER ADDRESS ST A3,BUFADR SAVE IT FOR RECOVERY PURPOSES SUK A4,14 RF(Z) TCDA23 WRITE ADK A4,2 RF(NZ) TCDA25 NOT WRITE * TCDA23 ADK A5,3 CHECK REQUESTED LENGTH RB(P) TCDA15 LESS THAN 2 CHARACTERS ADK A5,254 RB(N) TCDA15 MORE THAN 256 CHARACTERS SUR A3,A5 LD A4,SEKBYT,A6 SEQ. COUNTING ? RF(NZ) TCDA25 NO LD A2,DWTBKC,A6 GET SEQUENCE CHARACTER SC A2,255,A3 STORE IT IN BUFFER * TCDA25 ST A6,TCDADT SAVE ACTIVE DWT EJECT DRTC01 * * * SELECT RECORDER * * TCDA30 LDKL A8,STB LOAD STACK BASE CF A8,SELECT SELECT CASSETT CF A15,SWLXY GIVE OTHER TASKS A CHANCE LDR A1,A2 SAVE STATUS LDK A4,RTRIES PRESET NUMBER OF RETRIES LDKL A2,0 GET FUNCTION INDEX TCDAX EQU *-2 **ORDER INDEX** INH ABI TCDFUN,A2 BRANCH TO FUNCTION TCDFUN DATA ENDIO,REWIND,TM,LOAD,UNLOAD,READ,WRITE,WRITE IFT REVER=1 DATA OLOCK,REVERS,ERTAPE XIF * EJECT DRTC01 * * * RECOVERY AFTER POWER ON * * TCDRON EQU * CF A15,SAVE8 LD A1,INIFLG CHECK IF PGM LOADING ABL(NZ) TDISP YES SKIP RECOVERY LDKL A8,STB LOAD STACK BASE LDKL A6,DWTC01 FIRST DWT CF A8,RCOVER RECOVERY IFT DBCAS=2 LDR* A6,A6 GET OTHER DWT CF A8,RCOVER RECOVERY XIF LDKL A4,0 GET ACTIVE DWT TCDADT EQU *-2 **ACTIVATED DWT ADDRESS** RF(Z) ENDIO NO REQUEST GOING ON LDR A6,A4 PUT DWT ADDRESS IN A6 LD A3,SEKBYT,A6 SEQ. COUNTING RB(Z) TCDA30 YES; REACTIVATE ORDER * TCDR10 ANK A3,1 JUSTIFY SEQ. INDICATOR ST A3,SEKBYT,A6 ORK A1,/10 IND SEQUENCE ERROR, BIT #11 RF ENDIO * EJECT DRTC01 * * R E A D * READ CF A8,READR READ RECORD ANKL A1,/400 SAVE EOT BIT ORR A1,A2 ANK A2,/0E RF(Z) READ20 STATUS OK * READ15 SUK A4,1 RECOVERABLE ERROR RF(Z) READ20 3 TRIALS DONE CF A8,BKSP BACKSPACE ONE BLOCK RB READ READ AGAIN * READ20 LDR A2,A1 SLL A2,3 CHECK IF TAPE MARK RF(NN) READ30 NOT TAPE MARK * READ25 ORK A3,/10 INDICATE TAPE MARK LDK A7,0 RESET EFFECTIVE LENGTH RF READ35 * READ30 LDR A2,A1 LDKL A7,0 GET EFFECTIVE LENGTH EFFLEN EQU *-2 **EFFECTIVE LENGTH** ANKL A2,/801 NO DATA,NOT OP RF(NZ) READ32 LDR A7,A7 RF(NZ) READ32 NOT EQUAL ZERO LDR A4,A4 THIRD TRIAL DONE RB(NZ) READ15 NO; READ SAME BLOCK AGAIN LDK A4,1 SET NO OF RETRIES TO ONE RB READ TRY NEXT BLOCK * READ32 EQU * ANK A3,/2F NOT TAPE MARK LD A2,SEKBYT,A6 SEQ. COUNTING ? RF(NE) READ35 NO SUK A7,1 DECREMENT EFF. LENGTH COUNTER CC A5,DWTBKC+1,A6 CHECK SEQUENCE COUNTER RF(E) READ35 OK ORK A1,/10 SEQUENCE ERROR * READ35 IM DWTBKC,A6 INCREMENT SEQUENCE COUNTER * READ40 LD A8,DWTECB,A6 GET ECB ADDRESS ST A7,ECBEL,A8 SAVE EFFECTIVE LENGTH LDK A2,RTRIES SUR A2,A4 GET NUMBER OF RETRIES PERFORMED ST A2,ECBCW,A8 SAVE IT IN CONTROL WORD * READ50 EQU * ST A3,DWTST,A6 SAVE STATUS EJECT DRTC01 * * * END OF I/O OPERATION * * ENDIO EQU * CM TCDADT INDICATE NONE ACTIVE DWT IFT DBCAS=2 CF A15,SWLXY GIVE OTHER TASKS A CHANCE LDR* A6,A6 GET OTHER DWT CF A15,TENDIO PERFORM TENDIO FOR THIS LDR* A6,A6 GET FIRST DWT XIF CF A15,SWLXY GIVE OTHER TASKS A CHANCE ABL DISEND GO TO DISPATCHER VIA TENDIO * EJECT DRTC01 * * * WRITE TAPE MARK * TM LDKL A3,-1 ST A3,HELPME * * W R I T E * * WRITE ONE BLOCK * * WRITE LD A3,DWTBKC,A6 GET BLOCK COUNTER RF(NZ) WRIT10 NOT FIRST BLOCK CF A8,ERASE MAKE ONE BLANK BLOCK SUK A4,1 DEC. NO OF RETRIES 1ST BLOCK * WRIT10 CF A8,WRITER WRITE RECORD ANKL A1,/400 SAVE EOT-BIT ORR A1,A2 ANK A2,/0E RF(Z) WRIT30 STATUS OK * WRIT12 ST A4,WRITA4 STORE RETRY COUNTER LD A2,SEKBYT,A6 RF(Z) WRIT15 SEQ. COUNTING * EJECT DRTC01 * * CF A8,BKSP BACKSPACE ONE BLOCK LDK A4,0 ONE ERASE RF WRIT20 * WRIT15 CF A8,REPOS POSITION TAPE CM SEKBYT,A6 RESET SEQ. INDICATOR LD A4,WRITA4 GET NO ... LDR A2,A2 RF(NZ) WRIT40 POSITIONING NOT OK SUK A4,RTRIES ... OF ERASE * WRIT20 CF A8,ERASE ERASE ORR A1,A2 SAVE EOT ADK A4,1 COUNT ERASE RB(NG) WRIT20 NOT READY LDKL A4,0 GET RETRY COUNTER WRITA4 EQU *-2 **RETRY COUNTER** SUK A4,1 RB(NZ) WRIT10 TRY AGAIN ORR A1,A2 3 TRIALS DONE,SET ERASE BIT #4 RF WRIT50 GIVE UP * EJECT DRTC01 * * WRIT30 LD A2,TCDAX GET ORDER SUK A2,4 TAPE MARK WRITTEN? RB(NZ) READ30 NO LDR A2,A1 CHECK IF SLL A2,3 TAPE MARK OK RB(N) READ25 YES RB WRIT12 NO * WRIT40 ORK A1,/10 POSITIONING FAILED = SEQUENCE ERROR * WRIT50 LD A7,EFFLEN GET EFFECTIVE LENGTH RB READ40 * EJECT DRTC01 * * * L O A D * * LOAD CASSETTE * * LOAD CF A8,LOCK LOCK CASSETTE RF(Z) REWIND CASSETTE LOCKED LOAD10 LDR A1,A2 NO CASSETTE RB READ50 * * * R E W I N D * * REWIND TAPE * * REWIND CM DWTBKC,A6 CLEAR BLOCK COUNTER CF A8,SBOT SEARCH BEGINNING OF TAPE REW010 EQU * LDR A3,A2 SRL A3,7 ANK A3,6 ORK A3,1 PREPARE STATUS RB LOAD10 * EJECT DRTC01 * * * U N L O A D * * UNLOAD CASSETTE * * UNLOAD CM DWTST,A6 RESET STATUS CF A8,UNLD UNLOAD CASSETTE UNLO10 LDR A1,A2 SAVE RETURN CODE RB ENDIO IFT REVER=1 * * * R E V E R S * * BACKSPACE ONE BLOCK * * REVERS CF A8,BKSP BACKSPACE LDKL A4,-1 DECREMENT BLOCK SEQ. ADS A4,DWTBKC,A6 COUNTER BY ONE RB UNLO10 * EJECT DRTC01 * * * E R T A P E * * ERASE TAPE * * ERTAPE LDK A4,PERAS SET NO OF ERASE ERT10 CF A8,ERASE ERASE ONE BLOCK ANKL A1,/400 SAVE EOT BIT ORR A1,A2 RETURN CODE SUK A4,1 RB(NZ) ERT10 ERASE NOT READY RB READ50 * * * O L O C K * * ORDER LOCK CASSETTE * * OLOCK CF A8,LOCK LOCK CASSETTE RB(Z) REW010 CASSETTE LOCKED RB LOAD10 XIF * EJECT DRTC01 * * * CASSETTE COMMANDS * * * SELECT * SELECT EQU * LDK A2,/FF LOAD MASK ANS A2,DWTST,A6 SET DWT BUSY IFT DBCAS=1 LDK A3,0 SELECT CODE XIF IFT DBCAS=2 LDR* A3,A6 GET OTHER DWT ANS A2,DWTST,A3 SET DWT BUSY ANK A3,1 GET SELECT CODE XIF * CRCOM CIO A3,1,CHCRDA CIO START RF EXIT * * READ SEQUENCE CHAR TO A5 * READSQ EQU * LDK A3,/A ST A3,REQLEN MAKE REQUESTED LENGTH > 0 RB CRCOM * EJECT DRTC01 * * READ ONE RECORD * READR LDK A3,/A READR1 CM EFFLEN RESET EFFECTIVE LENGTH LDKL A2,0 GET BUFFER ADDRESS BUFADR EQU *-2 **BUFADR** ST A2,TCDBA LDKL A2,0 GET REQUESTED LENGTH HELPME EQU *-2 **HELPME** ST A2,REQLEN RB CRCOM * * WRITE ONE RECORD * WRITER LDK A3,/B RB READR1 * * ERASE ONE BLOCK * ERASE LDK A3,9 RB CRCOM * * LOCK CASSETTE * LOCK LDK A3,2 RB CRCOM * EJECT DRTC01 * * SEARCH BEGINNING OF TAPE * SBOT LDK A3,8 RB CRCOM * * REWIND TAPE AND UNLOCK CASSETTE * UNLD LDK A3,/F RB CRCOM * * BACKSPACE ONE BLOCK * BKSP LDK A3,/E RB CRCOM * EJECT DRTC01 * * * I H T C * * INTERRUPT HANDLER : PROCESS OF INTERRUPT * * IHTC EQU * ST P,INTSAV SAVE LAST INTERRUPT STR A5,A15 SAVE A5 ON STACK SST A5,CHCRDA RF(A) SST SST ACCEPTED IM REQLEN INCREMENT COUNTER RF(Z) CIOHLT RF(P) INRSQ GET SEQUENCE COUNTER STR A3,A15 SAVE A3 ON STACK LDKL A3,0 GET BUFFER ADDRESS TCDBA EQU *-2 **BUFFER ADDRESS** IM TCDBA INCREMENT BUFFER ADDRESS LD A5,TCDAX GET FUNCTION SWITCH FOR READ/WRITE SUK A5,10 RF(NZ) IHTC05 WRITE * IHTC02 INR A5,0,CHCRDA READ CHAR. SCR A5,A3 STORE CHARACTER IN BUFFER RF EXIT2 * IHTC05 EQU * LCR A5,A3 GET CHAR FROM BUFFER OTR A5,0,CHCRDA OUTPUT IT EJECT DRTC01 * * EXIT2 ST A5,TCDA5 IM EFFLEN INCREMENT EFFECTIVE LENGTH LDR* A3,A15 RESTORE A3 AND A5 FROM STACK * EXIT3 LDR* A5,A15 RTN A15 * INRSQ INR A5,0,CHCRDA READ CHAR TO A5 ST A5,TCDA5 RB EXIT3 * SST ST A5,TCDA2 SAVE STATUS LDR* A5,A15 RESTORE A5 CF A15,SAVE8 SAVE REGISTERS LDKL A1,0 TCDA1 EQU *-2 LDKL A4,0 TCDA4 EQU *-2 LDKL A5,0 TCDA5 EQU *-2 LDKL A6,0 TCDA6 EQU *-2 LDKL A8,0 TCDA8 EQU *-2 EJECT DRTC01 * * LDKL A2,0 RESTORE STATUS TCDA2 EQU *-2 LDR A3,A2 GET STATUS SLL A3,9 SHIFT ST A3,2,A8 SAVE ON STACK LD A3,DWTST,A6 PUT DWT STATUS IN A3 * IHTRTN EQU * RTN A8 * CIOHLT EQU * CIO A1,0,CHCRDA CIO-HALT RB EXIT3 * EXIT ST A1,TCDA1 ST A4,TCDA4 ST A5,TCDA5 ST A6,TCDA6 ST A8,TCDA8 ABL TDISP GO TO DISPATCHER * EJECT DRTC01 * * * R C O V E R * * RECOVERY ROUTINE : POSITIONING OF TAPE AT POWER ON * * RCOVER EQU * CF A8,SELECT SELECT ANK A3,1 RB(Z) IHTRTN NOT LOCKED: RETURN FROM RECOVERY CF A8,LOCK RF(NZ) REPER NO CASSETTE LD A1,DWTBKC,A6 ANY BLOCK WRITTEN/READ RF(NZ) RC0050 YES CF A8,SBOT SEARCH BEGINNING OF TAPE SLL A2,5 RF(NN) REPER BOT NOT FOUND RF REPOK * RC0050 LD A1,SEKBYT,A6 SEQ. COUNTING RF(NZ) REPER NO * EJECT DRTC01 * * * R E P O S * * REPOSITIONING OF TAPE AT POWER ON * AND WRITE RECOVERY * * EXIT: A2 EQ ZERO SUCCESS * A2 NOT EQ ZERO NO SUCCESS * * REPOS EQU * LDK A4,8 SET REPOSITIONING BIT ORS A4,DWTST,A6 STORE IN DWT * REP005 EQU * LDK A4,PSUBS SET NO OF BACKSPACES * REP010 CF A8,BKSP BACKSPACE SLL A2,4 RF(NN) REP015 DATA FOUND LD A2,DWTBKC,A6 GET BLOCK COUNTER SUK A2,8 GREATER 8 ? RF(G) REPER YES CF A8,SBOT NO DATA; SEARCH BEGIN OF TAPE SLL A2,5 RF(NN) REPER BOT NOT FOUND LDKL A5,-1 RESET SEQ. COUNTER RF REP020 READ SEQ. CHAR * EJECT DRTC01 * * REP015 EQU * SUK A4,1 RB(NZ) REP010 BACKSPACE AGAIN LDK A4,PREAD SET NO OF MAX READ * REP017 CF A8,READSQ READ SEQ. CHAR LDKL A7,/180F SET READ MASK TM A2,A7 RF(Z) REP020 READ OK SUK A4,1 COUNT READ RB(P) REP017 NOT ALL READ DONE RF REP060 GIVE UP * REP020 LC A4,DWTBKC+1,A6 GET SEQ. CHAR SUR A4,A5 CALCULATE SUK A4,1 NO OF BLOCKS TO ANK A4,/FF READ FORWARD. CWK A4,PINT TOO MANY BLOCKS RF(G) REPER YES * EJECT DRTC01 * * REP030 SUK A4,1 POSITION TAPE RF(N) REP040 READY CF A8,READSQ READ NEXT BLOCK RB REP030 * REP040 LDK A4,RTRIES SET NO OF RETRY REP042 LDKL A7,/80F SET READ MASK TM A2,A7 CORRECT READ RF(Z) REP045 YES SUK A4,1 COUNT RETRY RF(NP) REP060 GIVE UP CF A8,BKSP BACKSPACE CF A8,READSQ READ SEQ NUMBER RB REP042 * EJECT DRTC01 * * REP045 SLC A2,3 RF(NN) REP050 NOT TAPE MARK ANK A3,/10 RF(Z) REP060 SHOULD NOT BE TAPE MARK RF REPOK * REP050 ADK A5,1 CHECK SEQ. NUMBER CC A5,DWTBKC+1,A6 RF(E) REPOK EQUAL * REP060 LD A7,DWTST,A6 ANK A7,8 TRY POSITIONING AGAIN? RF(Z) REPER NO XRS A7,DWTST,A6 RESET REPOSITIONING BIT RB REP005 YES * * REPER LDK A2,2 IND RECOVERY/SEQUENCE ERROR STATUS ORS A2,SEKBYT,A6 SAVE IN DWT RTN A8 * REPOK LDK A2,0 IND RECOVERY CORRECT RTN A8 * EJECT DRTC01 * * * D W T C 0 2 * * DEVICE WORK TABLE FOR CASSETTE RECORDER 02 * * DWTC02 EQU * TABLE ENTRY IFT DBCAS=2 DATA DWTC01+1 DWT NO. 1 DATA /8000 STATUS./8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA TCAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TERMINAL QUEUE DATA 0 BLOCK COUNTER DATA 0 SEQ. INDICATOR XIF EJECT DRTC01 * * * D W T C 0 1 * * DEVICE WORK TABLE FOR CASSETTE RECORDER 01 * * DWTC01 EQU * TABLE ENTRY DATA DWTC02 DWT NO. 2 DATA /8000 STATUS./8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA TCAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TERMINAL QUEUE DWTBKC EQU *-DWTC01 BLOCK COUNTER DATA 0 SEKBYT EQU *-DWTC01 DATA 0 SEQ. INDICATOR * * REQLEN DATA 0 REQUESTED LENGTH * * * END