|
|
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: 26984 (0x6968)
Notes: pts_type(SC)
Names: »DRFD02.SC«
└─⟦71472ef1e⟧ Bits:30009661 Philips computer tape "600103"
└─⟦this⟧ »BDKMON/DRFD02.SC«
IDENT DRFD01 PRERELEASE 1977-09-09 UPDATE #0 77-09-09 * ********************************************** * * PHILIPS TERMINAL SYSTEM PTS * * DRFD01 = DRIVER FOR FLEXIBLE DISK * * * LEVEL #2 77-09-09 * * RELEASE #7 77-09-09 * ********************************************* * THIS DISK DRIVER HANDLES UP TO FOUR DAISY * CHAINED FLEXIBLE DISK DRIVES PTS 6879, * CONNECTED TO CPU VIA CHANNEL UNIT CHFD ON * MULTIPLEX OR PROGRAMMED CHANNEL * ********* * * ORDERS: * * /00 TEST STATUS * /01 PHYSICAL READ * /02 SEQUENTIAL READ -IBM DISC ONLY- * /05 BASIC WRITE * /06 SEQUENTIAL WRITE -IBM DISC ONLY- * /0C WRITE DELETED DATA * /11 PHYSICAL READ * /15 PHYSICAL WRITE * /1A SEARCH KEY * /26 LOCK * /31 REWIND -IBM DISC ONLY- * /37 LOAD * /38 UNLOAD * ********* * * ENTRY PARAMETERS: * * A5 STACK BASE * A6 DWT-ADDRESS * A7 ORDER * A8 ECB-ADDRESS EJECT * *********** * * * ENTRIES * * * *********** * ENTRY FDADR ACTIVATION ADDRESS ENTRY IHFD INTERRUPT HANDLER ENTRY FDON RECOVERY ROUTINE ENTRY DWFD01 DWT-ADDRESS * ************* * * * EXTERNALS * * * ************* * EXTRN TDISP DISPATCHER EXTRN TENDIO ENDIO EXTRN DISIOE REQUEST ERROR EXTRN DWTOR ORDER EXTRN DWTECB ECB-ADDRESS EXTRN DWTST DWT STATUS EXTRN SAVE8 SAVE A1-A8 ON A15 STACK EXTRN SETIMP TIMER EXTRN INIFLG INITIALIZATION FLAG EXTRN INTSAV INTERRUPT SAVE AREA * ************************ * * * CONDITIONAL ASSEMBLY * * * ************************ * * MULTIPLEX CHANNEL INSTEAD OF PROGRAMMED * CHANNEL BY SETTING X:A = 0 * X:A EQU 1 CHAN EQU X:A * * FD DRIVER MAY BE ADAPTED FOR DATA MANAGEMENT * BY SETTING X:B = 1 * X:B EQU 0 DAMA EQU X:B * * IBM LABELLED DISC HANDLING MAY BE INCLUDED BY SETTING * X:C = 1 * X:C EQU 1 IBM EQU X:C EJECT * ************* * * * CONSTANTS * * * ************* * CUADR EQU 09 CONTROL UNIT ADDRESS MUXADR EQU CUADR+CUADR MUX-ADDRESS LENGTH EQU 410 SECTOR LENGTH TIME EQU 20 DELAY - POWER ON ******************** * * * DWT-DISPLACEMENTS* * * ******************** * DWTA2 EQU /12 DWTA3 EQU /14 DWTA5 EQU /16 DWTSB2 EQU /1E STACK BASE * ********** * * * TABLES * * * ********** * FDADR DATA FDAD ACTIVATION ADDRESS * EJECT * ************** * * * ACTIVATION * * * ************** * FDAD EQU * ACTIVATION ENTRY LDK A3,0 LC A3,DWTOR,A6 INDEX LDR A2,A3 SAVE FOR FDIX SLL A3,4 * * PUT DRIVE NO IN CIO-INSTRUCTION * LDKL A4,/FFCF ANS A4,FD:CIO ORS A3,FD:CIO * CM DWTRCW,A6 SAVE RETURN CODE WORD * * CHECK IF LOCKED * LD A1,DWTLC,A6 LOCK INDICATOR CF A5,FDIX GET BIT MASK IN A3 ST A3,DWTA3,A6 SAVE DRIVE INDEX MASK ANR A1,A3 RF(NZ) FD:ORD LOCKED LDR A1,A7 SUK A1,/26 RF(Z) FD:100 LOCK ORDER SUK A1,/11 RF(Z) FD:100 LOAD ORDER LDKL A1,/8001 RETURN CODE ABL END:IO EJECT * * ORDER? * FD:ORD EQU * * LDR A1,A7 RF(Z) FD:070 TEST STATUS SUK A1,1 RF(Z) FD:040 PHYSICAL READ SUK A1,4 RF(Z) FD:010 BASIC WRITE SUK A1,7 RF(Z) FD:030 WRITE DELETED DATA SUK A1,5 RF(Z) FD:040 PHYSICAL READ SUK A1,4 RF(Z) FD:020 PHYSICAL WRITE SUK A1,5 IFT DAMA=0 RF(Z) FD:050 SEARCH KEY XIF SUK A1,/1E ABL(Z) FD:400 UNLOAD FD:DIS EQU * ABL DISIOE REQUEST ERROR EJECT * *************** * * * BASIC WRITE * * * *************** * FD:010 CF A5,BIO ORK A2,1 FD:015 CF A5,FD:WRI PERFORM WRITE RF FD:048 TRANSFORM RETURN CODE * ****************** * * * PHYSICAL WRITE * * * ****************** * FD:020 CF A5,BIO ORK A2,5 INSERT BIO BITS 13-15 RB FD:015 EJECT * ********************** * * * WRITE DELETED DATA * * * ********************** * FD:030 CF A5,BIO ORK A2,6 RB FD:015 * ***************** * * * PHYSICAL READ * * * ***************** * FD:040 CF A5,BIO:RE FD:045 CF A5,FD:REA PERFORM READ FD:048 EQU * ABL FD:RC EJECT IFT DAMA=0 * ************** * * * SEARCH KEY * * * ************** * FD:050 EQU * LD A4,10,A8 KEY AREA ADDRESS LDR* A2,A4 KEY AREA LENGTH LDR A1,A2 ABL(NP) END:10 ILLEGAL LENGTH SUK A1,128 ABL(P) END:10 ILLEGAL LENGTH LDR A3,A2 * * IF ODD CHANGE TO EVEN NO OF BYTES * ADK A3,1 SRL A3,1 SLL A3,1 * SLL A2,3 ORK A2,7 BIO ADK A3,4 ADK A4,2 KEY ADDRESS CF A5,FD:WRI SEARCH KEY LDR A3,A3 RETURN CODE RB(NZ) FD:048 * * READ RECORD WITH KEY COMMAND * FD:060 EQU * LDKL A2,/8004 BIO LD A3,4,A8 REQUESTED LENGTH CWK A3,130 ABL(NE) END:10 ILLEGAL LENGTH LD A4,2,A8 BUFFER ADDRESS RB FD:045 XIF * *************** * * * TEST STATUS * * * *************** * FD:070 EQU * LDKL A2,/FFF9 BIO DUMMY CF A5,FD:WRI ANKL A3,/0201 WRITE PROTECT? LDR A1,A3 LC A3,DWTOR,A6 DRIVE NO CF A5,VOLADR GET VOL NAME ADDR IN A2 ST A2,10,A8 STORE IN CONTROL WORD ABL END:IO * ******** * * * LOAD * * * ******** * FD:100 EQU * LDK A2,/24 DATA /5700 CF A5,FD:190 ANK A3,0 RF(NZ) FD:210 NOT OPERABLE IFT IBM=1 * * CHECK IF TOSS/IBM LABEL * LDK A2,0 BIO LDKL A4,BUF LDK A3,36 NO OF BYTES CF A5,FD:REA CF A5,LD:RC LD A1,DWTA3,A6 DRIVE INDEX LDKL A4,BUF ADK A4,34 LDR* A2,A4 CWK A2,'DT' RF(NE) FD:110 IBM LABEL PREASSUMED ADK A4,2 LDR* A2,A4 CWK A2,'OS' RF(NE) FD:110 IBM LABEL XIF * * READ VOLUME NAME * LDK A3,8 LENGTH LDK A2,0 BIO IFT IBM=1 C1R A1,A1 ANS A1,DWTLAB,A6 RF FD:120 * FD:110 LDK A3,10 LENGTH LDK A2,/30 BIO ORS A1,DWTLAB,A6 INDICATE IBM DISC FD:120 EQU * XIF LDKL A4,BUF BUFFER ADDRESS CF A5,FD:REA CF A5,LD:RC LDK A1,2 IFT IBM=1 LD A2,DWTLAB,A6 AN A2,DWTA3,A6 RF(Z) FD:130 TOSS LABEL LDK A3,10 LDKL A4,BUF CF A5,ASCII LDK A1,4 FD:130 EQU * XIF * * GET DWT VOL NAME ADDRESS * LC A3,DWTOR,A6 DRIVE NO CF A5,VOLADR ADDRESS TO A2 * * STORE NAME IN DWT * LDK A3,3 FD:140 LD A4,BUF,A1 STR A4,A2 SUK A3,1 RF(Z) FD:150 ADK A1,2 ADK A2,2 RB FD:140 FD:150 EQU * IFT IBM=1 * * DATA SET OPENING WANTED? * LD A1,DWTA3,A6 DRIVE INDEX AN A1,DWTLAB,A6 RF(Z) FD:200 TOSS LD A1,DWTOR,A6 ANK A1,/37 ORDER SUK A1,/26 RF(Z) FD:200 LOCK * * READ DATA SET LABEL * LD A2,10,A8 SECTOR NO SUK A2,8 ABL(N) DISIOE SUK A2,17 ABL(P) DISIOE ADK A2,25 SLL A2,3 BIO LDK A3,80 LENGTH LDKL A4,BUF CF A5,FD:REA CF A5,LD:RC LDKL A4,BUF ADK A4,34 BOE ADDRESS CF A5,LOGSEC TRANSFORM TO LOGICAL SECTOR LDK A2,DWTBOE CF A5,STDWT STORE BOE NO IN DWT ADK A4,2 CF A5,LOGSEC LDK A2,DWTEOE CF A5,STDWT STORE EOE NO IN DWT ADK A4,36 CF A5,LOGSEC LDK A2,DWTEOD CF A5,STDWT STORE EOD NO IN DWT * FD:200 EQU * XIF LD A2,DWTA3,A6 ORS A2,DWTLC,A6 INDICATE LOCK FD:205 LD A3,DWTRCW,A6 RETURN CODE FD:210 RF FD:RC * * ERROR , UNLOCK * FD:220 LDK A2,/14 DATA /5700 CF A5,FD:190 RB FD:205 * * LD:RC SUBROUTINE * LD:RC ORS A3,DWTRCW,A6 ANKL A3,/0405 FATAL ERROR? RB(NZ) FD:220 RTN A5 * ********** * * * UNLOAD * * * ********** * FD:400 EQU * LDK A2,/14 DATA /5700 CF A5,FD:190 ANKL A3,0 TEMP DUMMY RF(NZ) FD:410 LD A2,DWTA3,A6 INDEX MASK XRS A2,DWTLC,A6 INDICATE UNLOCKED FD:410 EQU * RF FD:RC EJECT * ***************** * * * PERFORM ORDER * * * ***************** * * * INPUT: A2 BIO CONTENTS * A3 NO OF BYTES TO BE TRANSFERED * A4 BUFFER ADDRESS * FD:WRI EQU * IFT CHAN=0 LDKL A1,/C000 WORDS,WRITE XIF IFT CHAN=1 CM DWTRW,A6 INDICATOR TO WRITE MODE XIF RF FD:800 * FD:REA EQU * IFT CHAN=1 LDK A1,1 ST A1,DWTRW,A6 READ MODE XIF IFT CHAN=0 LDKL A1,/8000 WORDS READ XIF FD:800 EQU * IFT CHAN=0 SRL A3,1 FROM BYTES TO WORDS ORR A3,A1 WER1 WER A3,MUXADR FIRST WER WER2 WER A4,MUXADR+1 SECOND WER XIF IFT CHAN=1 * * PUT BUFFER START AND END ADDRESS IN DWT * ST A4,DWTUB,A6 ADR A3,A4 ST A3,DWTUBE,A6 END ADDRESS+2 XIF FD:820 EQU * ST A5,DWTA5,A6 SAVE STACK POINTER FD:CIO CIO A2,1,CUADR CIO-START RF T:DISP EJECT * ************************************* * * * FD:RC - TRANSFORM RETURN CODE * * * ************************************* * * INPUT: A3 RETURN CODE FROM CONTROL UNIT * FD:RC EQU * LDR A1,A3 RF(Z) FD:RC2 ZERO ANKL A1,/0A05 LDR A4,A3 ANKL A4,/0400 BIT 5 SLC A4,7 SHIFT TO BIT 14 ORR A1,A4 IFT DAMA=0 LDR A4,A3 ANKL A4,/2000 BIT 2 SLL A4,1 SHIFT TO BIT 1 ORR A1,A4 XIF LDR A4,A3 ANK A4,/20 BIT 10 SLL A4,3 SHIFT TO BIT 7 ORR A1,A4 ANK A3,/10 BIT 11 SRC A3,5 SHIFT TO BIT 0 ORR A1,A3 FD:RC2 EQU * * * PUT EFFECTIVE LENGTH IN ECB * LD A2,4,A8 REQ LENGTH ST A2,6,A8 EFF LENGTH * ********** * * * END:IO * * * ********** * END:IO CF A15,TENDIO T:DISP ABL TDISP * * * ENTRY FROM RECOVERY ROUTINE * END:05 CM DWTECB,A6 RESET ECB ADDRESS IN DWT * * ILLEGAL LENGTH * END:10 LDKL A1,/8008 RETURN CODE RB END:IO EJECT * ******************** * * * RECOVERY ROUTINE * * * ******************** * FDON INH CF A15,SAVE8 LDKL A6,DWFD01 DWT ADDRESS LD A1,INIFLG RF(Z) FDON05 POWER UP LDKL A1,-1 ST A1,DWTST2,A6 FDON05 EQU * IM DWTA2,A6 SET FDON FLAG CM DWTRTY,A6 RESET RETRY FLAG LDK A5,DWTSB2 ADR A5,A6 STACK BASE CF A5,SETBSY SAVE DWTST IF NOT DONE , INDICATE BUSY * * DELAY 2 SEC * LD A4,DWTTP,A6 RF(Z) FDON10 NO TIMER SET LDKL A4,-TIME ST* A4,DWTTP,A6 RESTART TIMER RB T:DISP FDON10 LDK A4,DWTTP ADR A4,A6 LDR A1,A6 SAVE A6 CF A15,SETIMP DATA FDON20,TIME ST A4,DWTTP,A6 RB T:DISP * * TIME OUT ROUTINE * FDON20 LDR A6,A1 CM DWTTP,A6 LDK A5,DWTSB2 ADR A5,A6 STACK BASE * * LOCK DOORS * LDK A2,1 FDON25 EQU * LD A1,DWTLC,A6 LOCK INDICATOR ANR A1,A2 RF(Z) FDON30 NOT LOCKED ST A2,DWTA3,A6 SAVE * * PUT DRIVE NO IN CIO INSTR * LDKL A4,/FFCF ANS A4,FD:CIO SRN A2,A4 SLL A4,4 ORS A4,FD:CIO LDK A2,/24 DATA /5700 CF A5 FD:190 LD A2,DWTA3,A6 DRIVE IND. ANKL A3,/0 TEMP CODE RF(Z) FDON30 OK XRS A2,DWTLC,A6 INDICATE UNLOCK FDON30 EQU * SLL A2,1 CWK A2,/0010 RB(NE) FDON25 * * ANY REQUEST? * CF A5,GETST CM DWTA2,A6 RESET FDON FLAG FDON60 EQU * LD A2,DWTST,A6 RB(N) END:05 NO REQUEST, RETURN VIA TENDIO * * RETRY REQUEST * IM DWTRTY,A6 INDICATE RETRY LD A7,DWTOR,A6 ANK A7,/3F ORDER LD A8,DWTECB,A6 ECB ADDRESS ABL FDAD REACTIVATE EJECT * ********************* * * * INTERRUPT HANDLER * * * ********************* * IHFD EQU * ST P,INTSAV SAVE LAST INTERRUPT IFT CHAN=1 STR A1,A15 STR A2,A15 LDKL A2,DWFD01 LD A1,DWTUB,A2 POINTER AT WORD IN BUFFER LD A2,DWTRW,A2 READ / WRITE INDICATOR RF(NZ) IH010 READ LDR* A2,A1 OTR A2,0,CUADR WRITE RF(A) IH020 ACCEPTED RF IH040 NOT ACCEPTED IH010 INR A2,0,CUADR READ RF(NA) IH040 NOT ACCEPTED STR A2,A1 STORE WORD IN BUFFER IH020 LDKL A2,DWFD01 DWT-ADDRESS ADK A1,2 ST A1,DWTUB,A2 POINTER AT NEXT WORD CW A1,DWTUBE,A2 RF(NE) IH030 NOT LAST WORD CIO A2,0,CUADR CIO HALT IH030 EQU * LDR* A2,A15 LDR* A1,A15 RTN A15 * * SAVE A4-A8 FOR DISPATCHER * IH040 EQU * LDR* A2,A15 LDR* A1,A15 XIF CF A15,SAVE8 SST A3,CUADR STATUS LDKL A6,DWFD01 DWT ADDRESS LD A8,DWTECB,A6 ECB ADDRESS LD A5,DWTA5,A6 STACK POINTER SLL A3,1 RF(N) FDRE READY INTERRUPT SRL A3,1 LD A2,DWTRTY,A6 RETRY? RF(Z) IH:10 NO CM DWTRTY,A6 RESET RETRY FLAG LDR A1,A3 ANKL A1,/0405 RF(Z) IH:10 RETURN CODE OK LDK A1,/4 ORR A3,A1 CRC ERROR IH:10 EQU * ANKL A3,/FF37 RTN A5 EJECT * ******************** * * * READY INTERRUPT * * * ******************** * FDRE EQU * LD A2,DWTA2,A6 ABL(NZ) T:DISP POWER ON ROUTINE ACTIVE LDK A5,DWTSB2 ADR A5,A6 STACK BASE RB FDON60 EJECT * ******************************************* * * * S U B R O U T I N E S * * * ******************************************* * * ********** * * * SETBSY * * * ********** * * SETBSY SAVES DWTST TO DWTST2 IF NOT ALREADY DONE. * DWTST IS SET BUSY * * INPUT: A6 DWT ADDRESS * * REG A2 IS WORKING REGISTER SETBSY EQU * LD A2,DWTST2,A6 CWK A2,-1 RF(NE) SET:10 ALREADY SAVED LD A2,DWTST,A6 ST A2,DWTST2,A6 SET:10 CM DWTST,A6 SET BUSY RTN A5 EJECT * ********* * * * GETST * * * ********* * * FUNCTION: GETST RESTORES STATUS SAVED IN DWTST2 TO DWTST. * DWTST2 IS SET TO -1 * * INPUT: A6 DWT ADDRESS * * WORKING REGISTER: A2 * GETST EQU * LD A2,DWTST2,A6 ST A2,DWTST,A6 LDKL A2,-1 ST A2,DWTST2,A6 RTN A5 * EJECT * ******* * * * BIO * * * ******* * * * INPUT: A8 ECB ADDRESS * * OUTPUT: A2 BITS 0-12 OF CONTROL WORD USED BY CIO START * A3 NO OF BYTES TO BE TRANSFERED * A4 BUFFER ADDRESS * BIO EQU * LDK A4,0 FLAG RF BIO010 BIO:RE LDK A4,1 BIO010 EQU * LD A1,4,A8 REQ LEN RF(N) BIOERR ILLEGAL LENGTH LDR A3,A1 IFT DAMA=0 LDK A2,0 BIO020 LDR A4,A4 RF(NZ) BIO030 SUK A1,128 RF(Z) BIO100 REQ LEN ACCEPTED RF BIO040 BIO030 SUK A1,128 RF(NP) BIO100 REQ LEN ACCEPTED BIO040 ADK A2,1 NO OF SECTEORS CWK A2,3 RB(NG) BIO020 BIO050 RF BIOERR ILLEGAL LENGTH XIF IFT DAMA=1 SUKL A1,LENGTH BIO055 LDR A4,A4 RF(Z) BIO070 WRITE LDR A1,A1 RF(P) BIOERR REQ LEN NOT ACCEPTED LDK A2,0 LDR A1,A3 REQ LEN BIO060 SUK A1,128 RF(NP) BIO100 REQ LEN ACCEPTED ADK A2,1 CWK A2,3 RB(NG) BIO060 RF BIOERR ILLEGAL REQ LENGTH BIO070 LDR A1,A1 RF(NZ) BIOERR ILLEGAL LENGTH LDK A2,3 NO OF SECTORS XIF * * BIO100 SRC A2,2 SHIFT NO OF SECTORS INTO POS 0-1 LD A1,10,A8 SECTOR NO LDR A4,A1 IFT DAMA=1 SUKL A4,499 RF(P) BIODIS SLL A1,2 MULTIPLY BY 4 XIF IFF DAMA=1 SUKL A4,2001 RF(P) BIODIS XIF SLL A1,3 ORR A2,A1 LD A4,2,A8 BUFFER ADDRESS RTN A5 * * * ILLEGAL REQUESTED LENGTH, RETURN VIA TENDIO * BIOERR ABL END:10 BIODIS ABL FD:DIS ILLEGAL SECTOR NO * ********* * * * FDIX * * * ********* * * INPUT: A2 X * * OUTPUT: A3 2 POWER(X) * FDIX LDK A3,1 LDR A2,A2 FDIX10 EQU * RF(Z) FDIX20 SLL A3,1 SUK A2,1 RB FDIX10 FDIX20 RTN A5 EJECT ****************** * * * VOLADR * * * ****************** * * INPUT: A3 BIT 14-15 DRIVE NO * A6 DWT ADDRESS * * OUTPUT: A2 VOLUME NAME ADDRESS * A3 ZERO * VOLADR LDK A2,DWTVO0 ADR A2,A6 ANK A3,/3 VOLA10 EQU * RF(Z) VOLA20 ADK A2,6 UPDATE ADDRESS SUK A3,1 RB VOLA10 VOLA20 RTN A5 IFT IBM=1 EJECT * ********* * ASCII * ********* * * FUNCTION: ASCII TRANSFORMS A STRING FROM EBCDIC TO * ASCII CODE * INPUT: A3 NO OF CHARACTERS * A4 STRING ADDRESS * WORKING REG: A1,A2 * ASCII EQU * RTN A5 EJECT * ********** * LOGSEC * ********* * * FUNCTION: LOGSEC TRANSFORMS PHYSICAL SECTOR TO STANDARD * LOGICAL SECTOR (BINARY). * FORMAT OF PHYS. SEC. TT0SS (EBCDIC CODE) * TT = TRACK, SS=SECTOR * INPUT: A4 ADDRESS TO PHYS. SEC. * OUTPUT: A3 BINARY SECTOR NO * A4 ADDRESS TO PHYS. SEC. +4 LOGSEC EQU * CF A5,DECBIN LDR A3,A1 SAVE ADK A4,2 * * MULTIPLY BY 26 * SLL A3,5 *32 LDR A2,A1 SLL A2,2 SUR A3,A2 *28 SLL A1,1 SUR A3,A1 *26 CF A5,DECBIN SUK A1,1 ADR A3,A1 * * CHECK SECTOR NO * LDR A1,A3 SUK A1,25 RF(NP) LOG:10 SUKL A1,1898 RF(P) LOG:10 NOT ACC SEC. NO RTN A5 LOG:10 LDKL A1,/4000 RETURN CODE ORS A1,DWTRCW,A6 ABL FD:220 ERROR ROUTINE * ********** * DECBIN* ********** * * FUNCTION: DECBIN TRANSFORMS TWO EBCDIC CODED DIGITS TO * BINARY. RANGE OF EBCDIC CODE /F0 - /F9 IS CHECKED * INPUT: A4 ADDRESS TO FIRST DIGIT * OUTPUT: A1 BINARY * WORKING REG: A2,A7 * DECBIN LDK A1,0 LDK A2,0 LDK A7,2 DEC:10 LCR A2,A4 DIGIT SUK A2,/F0 RB(N) LOG:10 SUK A2,9 RB(P) LOG:10 NOT DIGIT ADK A2,9 SUK A7,1 RF(Z) DEC:30 ADK A4,1 ADDRESS TO SECOND DIGIT DEC:20 SUK A2,1 RB(N) DEC:10 NEXT DIGIT ADK A1,/A MULTIPLY BY 10 RB DEC:20 DEC:30 ADR A1,A2 RTN A5 EJECT * ********* * STDWT * ********* * * FUNCTION: STDWT STORES SECTOR NO INDWT * INPUT: A2 OFFSET IN DWT * A3 SECTOR NO * A6 DWT ADDRESS * STDWT EQU * LDK A1,0 LC A1,DWTOR,A6 DRIVE NO SLL A1,1 DRIVE OFFSET ADR A1,A2 STR A3,A6 RTN A5 XIF * * D R I V E R B U F F E R BUF DATA 0,0,0,0 IFT IBM=1 RES 38 XIF EJECT * ********************* * * * DEVICE WORK TABLE * * * ********************* * DWFD01 EQU * DATA 0 DATA /8000 DWT STATUS DATA 0 ECB-ADDRESS DATA 0 ORDER DATA FDADR ACTIVATION ADDRESS DATA 0 TTAB-ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TERMINAL QUEUE DATA 0 DATA 0 SAVE AREA DATA 0 DATA 0 DATA 0,0,0,0 STACK DWTST2 EQU *-DWFD01 SAVE STATUS WORD DATA -1 DWTRTY EQU *-DWFD01 RETRY REQUEST FLAG DATA 0 DWTTP EQU *-DWFD01 TIMER POINTER DATA 0 DWTRCW EQU *-DWFD01 TEMP RETURN CODE DATA 0 DWTLAB EQU *-DWFD01 DISC LABEL INDICATOR DATA 0 DWTLC EQU *-DWFD01 DRIVE LOCK INDICATOR DATA 0 DWTVO0 EQU *-DWFD01 VOLUME NAME NO 0 DATA 0,0,0 DWTVO1 EQU *-DWFD01 VOLUME NAME NO 1 DATA 0,0,0 DWTVO2 EQU *-DWFD01 VOLUME NAME NO 2 DATA 0,0,0 DWTVO3 EQU *-DWFD01 VOLUME NAME NO 3 DATA 0,0,0 IFT CHAN=1 DWTUB EQU *-DWFD01 POINTER AT NEXT WORD IN BUFFER DATA 0 DWTUBE EQU *-DWFD01 BUFFER END ADDRESS+2 DATA 0 DWTRW EQU *-DWFD01 READ/WRITE INDICATOR DATA 0 XIF IFT IBM=1 DWTBOE EQU *-DWFD01 BEGINNING OF EXTENT DATA 0,0,0,0 DWTEOD EQU *-DWFD01 END OF DATA DATA 0,0,0,0 DWTEOE EQU *-DWFD01 END OF EXTENT DATA 0,0,0,0 XIF END