DataMuseum.dk

Presents historical artifacts from the history of:

Philips Data Systems

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Philips Data Systems

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦e0a1573b1⟧

    Length: 20678 (0x50c6)
    Notes: pts_type(SC)
    Names: »DRDU01.SC«

Derivation

└─⟦fcfed1ed9⟧ Bits:30009706 Philips computer tape "M_167"
    └─⟦this⟧ »M:167D/DRDU01.SC« 

PTS(SC)

	IDENT DRDU01 	REL 8.2 78-09-15  870105040820 

* 
**********************************************
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   DRDU01 = DRIVER FOR ONE/TWO DISC UNITS X/1215 AND/OR X/1216 
* 
* 
* 
* 
* 
* 
* 
**************************************************
* 
*   THIS DISC DRIVER HANDLES UP TO TWO DISC 
*   DRIVES X/1215,X/1216 CONNECTED TO CPU VIA IOP 
*   ON MULTIPLEX CHANNEL
* 
* 
*   THE FOLLOWING ORDERS ARE TRAETED :
* 
*   /00    TEST STATUS
*   /01    BASIC READ 
*   /05    BASIC WRITE
*   /11    PHYSICAL READ
*   /15    PHYSICAL WRITE 
* 
	EJECT			DRDU01 


* 
*********** 
* ENTRIES * 
*********** 
* 
	ENTRY	DUADR	ACTIVATION ADDRESS 
	ENTRY	DUON	RECIVERY ROUTINE
	ENTRY	IHDU1	INTERRUPT HANDLER DISC UNIT NO. 1
	ENTRY	IHDU	INTERRUPT HANDLER DISC UNIT NO. 1 
	ENTRY	IHDU2	INTERRUPT HANDLER DISC UNIT NO. 2
	ENTRY	DWDU01	DWT-ADDRESS DISC UNIT NO. 1 
	ENTRY	DWDU02	DWT-ADDRESS DISC UNIT NO. 2 



* 
************* 
* EXTERNALS * 
************* 
* 
	EXTRN	TDISP	DISPATCHER 
	EXTRN	TENDIO	ENDIO 
	EXTRN	SAVE8	SAVE REGS. A1-A8 ON A15 STACK
	EXTRN	DISIOE	REQUEST ERROR 
	EXTRN	DWTST	DWT STATUS 
	EXTRN	DWTOR	ORDER
	EXTRN	DWTECB	ECB-ADDRESS 
	EXTRN	INIFLG	INITIALIZATION FLAG 
	EXTRN	DWTVOL	VOLUME NAME 
	EXTRN	INTSAV	SAVEAREA LAST INTERRUPT 
	EXTRN	SETIMP	TIMER 
	EJECT


* 
**************************
*                        *
*  CONDITIONAL ASSEMBLY  *
*                        *
**************************
* 
*   READ AFTER WRITE MAY BE EXCLUDED FOR ORDER /15
*   BY SETTING X:A = 0
* 

X:A	EQU	0 
RAW	EQU	1 
* 
* 
*   THIS DRIVER CAN HANDLE TWO DISC UNITS 
*   IF X:B := 2 
* 

X:B	EQU	1 
NUNITS	EQU	1
* 
* 
*   DRIVE 1 MAY BE A X/1216 INSTEAD OF A X/1215 
*   BY SETTING X:C = 1
* 
X:C	EQU	0 
TYPE1	EQU	1 
* 
*   DRIVE 2 MAY BE A X/1216 INSTEAD OF A X/1215 
*   BY SETTING X:D = 1
* 
X:D	EQU	0 
TYPE2	EQU	1 
	EJECT			DRDU01 


* 
************* 
* CONSTANTS * 
************* 
* 
DAF1	EQU	/28	DEVICE ADDRESS FIXED DISC NO. 1
DAC1	EQU	/08	DEVICE ADDRESS CARTRIDGE DISC NO. 1
DAF2	EQU	/38	DEVICE ADDRESS FIXED DISC NO. 2
DAC2	EQU	/18	DEVICE ADDRESS CARTRIDGE DISC NO. 2
WER1	EQU	/10	MULTIPLEXOR ADDRESS
CUADR	EQU	/08	CONTROL UNIT ADDRESS


MAXCY5	EQU	203	MAX CYLINDER NO X/1215 
MAXCY6	EQU	407	MAX. CYLINDER NO X/1216
LENGTH	EQU	410	SECTOR LENGTH, CARACTERS 
RY1	EQU	1	RETRY COUNT FOR BASIC ORDERS
RY4	EQU	4	RETRY COUNT 
TIME	EQU	1000	2 MINUTES 


* 
*********************** 
*                     * 
*  DWT-DISPLACEMENTS  * 
*                     * 
*********************** 
* 
DWTA2	EQU	/12	DWT-DISPLACEMENT,SAVE A2
DWTA4	EQU	/14	                ,SAVE A4
DWTA5	EQU	/16	                ,SAVE A5
DWTSB1	EQU	/1A	                ,1:ST STACK BASE 
DWTSB2	EQU	/1E	                ,STACK BASE
	EJECT			DRDU01 


**************
* 
DUADR	DATA	DUAD	ACTIVATION ADDRESS
BUF	RES	5	SECTOR BUFFER - 200 WORDS 
	IFT	RAW=1
	RES	200	READ AFTER WRITE BUFFER
	XIF
*   RETRY IS USED TO DETECT RETRIES 
RETRY	DATA	0	MAX NO OF TRIES

* 
* 
*   TABLE FOR CONVERSION FROM LOGICAL TO PHYSICAL 
*   SECTOR NUMBER 
* 
* 
SECTAB	DATA	/0003,/0609,/0C0F,/0205,/080B,/0E01,/0407,/0A0D 
	DATA	/1013,/1619,/1C1F,/1215,/181B,/1E11,/1417,/1A1D 
	EJECT			DRDU01 
* 
* 
***************** 
*               * 
*  ACTIVATION   * 
*               * 
***************** 
* 
DUAD	EQU	*	ACTIVATION ENTRY 
	IFT	NUNITS=2 
	LDKL	A1,/7FFF
	LDR*	A2,A6	GET OTHER DISC UNIT DWT 
	ANS	A1,DWTST,A2	SET OTHER DISC UNIT BUSY 
	XIF


	SUK	A5,4	STACK BASE
	LDK	A4,RY1	RETRY COUNT = 1 
	ST	A4,RETRY	MAX NO OF TRIES
	LC	A1,DWTOR,A6	GET INDEX 
	ANK	A1,1 
	ADR	A1,A1
	ADR	A1,A6
	LD	A2,DWTBSY,A1
	RF(Z)	DUA:10	DISC READY
	LDR	A7,A7
	RF(Z)	DUA:10	TEST STATUS ORDER 
	LDK	A1,/80	DISC HAS BECOME READY 
	ABL	END:15 
	EJECT


DUA:10	LDR	A1,A7	ORDER
	RF(Z)	DU:010	TEST STATUS 
	SUK	A1,1	
	RF(Z)	DUA:30	BASIC READ
	SUK	A1,4 
	RF(Z)	DUA:30	BASIC WRITE 
	SUK	A1,12	 
	RF(Z)	DUA:20	PHYSICAL READ 
	SUK	A1,4	
	RF(Z)	DUA:20	PHYSICAL WRITE

	EJECT


DUERR	ABL	DISIOE	REQUEST ERROR


DUA:20	LDK	A4,RY4	RETRY COUNT = 4 

	ST	A4,RETRY	MAX NO OF TRIES

DUA:30	LD	A1,4,A8	REQUESTED LENGTH
	SUKL	A1,LENGTH 
	RB(NZ)	DUERR	REQUESTED LENGTH # 410
	EJECT			DRDU01 


	LD	A2,10,A8	RELATIVE SECTOR NUMBER 
	LDR	A3,A2
	ANK	A3,/1F	LOGICAL SECTOR NUMBER 
	LC	A3,SECTAB,A3	PHYSICAL SECTOR NUMBER 
	SC	A3,DWTSEC,A6	SAVE IT


	SRL	A2,5	CYLINDER NUMBER 
	CW	A2,DWTCMX,A6
	RB(G)	DUERR	CYLINDER NO GREATER THAN MAX.



	CW	A2,DWTCYL,A6	COMPARE WITH CURRENT CYLINDER NUMBER 
	RF(E)	DU:030	DISC HEAD ALREADT POSITIONED
	ST	A2,DWTCYL,A6	SAVE CYLINDER NUMBER 

	EJECT			DRDU01 


* 
************************
*                      *
*   SEEK SECTOR N      *
*                      *
************************
* 
DU:010	CF	A5,SEEK	SEEK CYLINDER N 
	SLC	A1,6 
	RF(NN)	DU:030	OK. SEEK COMPLETED 


* 
************************
*                      *
*   SEEK CYLINDER 0    *
*                      *
************************
* 
DU:015	CF	A5,SEEKZ	SEEK CYLINDER 0
	SLC	A1,6 
	RF(N)	DU:020	SECTOR 0 NOT FOUND
	SUK	A4,1 
	RB(NZ)	DU:010	TRY AGAIN

DU:020	LDKL	A3,/FFFF	ALL RETRIES DONE 
	ST	A3,DWTCYL,A6	SET ILLEGAL CYLINDER NUMBER
	LDKL	A1,/200	SEEK ERROR RETURN CODE
	ABL	END:IO	PERFORM ENDIO 
	EJECT			DRDU01 


* 
**************************
*                        *
*  GO AND EXECUTE ORDER  *
*                        *
**************************
* 
* 
DU:030	LDR	A1,A7	ORDER
	RF(Z)	TEST	TEST STATUS 
	SUK	A1,5 
	RF(Z)	WRIT:N	BASIC WRITE 
	SUK	A1,12
	RF(NP)	READ:N	READ 



* 
************************
*                      *
*   READ SECTOR N-1    *
*                      *
************************
* 
P:WRIT	CF	A5,WER:R5	EXECUTE WER INSTRUCTIONS
	CF	A5,READ5	READ FIVE WORDS
	ANK	A1,2 
	RF(Z)	P:WR10	OK. CHECK CYLINDER NUMBER 
	SUK	A4,1	DECREMENT RETRY COUNTER 
	ABL(Z)	END:IO	ALL RETRIES DONE 
	RB	P:WRIT	TRY AGAIN

	EJECT			DRDU01 


P:WR10	LD	A2,DWTCYL,A6	CYLINDER NUMBER
	CW	A2,BUF+1	COMPARE WITH CURRENT CYLINDER NUMBER 
	RB(NE)	DU:015	ERROR.SEEK CYLINDER 0



* 
********************* 
*                   * 
*   WRITE SECTOR N  * 
*                   * 
********************* 
* 
WRIT:N	CF	A5,WER:W	EXECUTE WER INSTRUCTIONS 
	CF	A5,WRITE	WRITE SECTOR N 
	ANK	A1,/1F 
	RF(Z)	WRIT20	OK. NO RETURN CODE
	SUK	A4,1	DECREMENT RETRY COUNTER 
	ABL(Z)	END:IO	ALL RETRIES DONE 
	RB	WRIT:N	TRY AGAIN

	IFT	RAW=1
WRIT20	CWK	A7,5 
	ABL(E)	END:IO	BASIC WRITE
	LDKL	A3,BUF	DRIVER BUFFER ADDRESS
	XIF
	IFF	RAW=1
WRIT20	ABL	END:IO	PERFORM END:IO
	XIF
	EJECT			DRDU01 


* 
**********************
*                    *
*   READ SECTOR N    *
*                    *
**********************
* 
READ:N	CF	A5,WER:R	EXECUTE WER INSTRUCTIONS 
	CF	A5,READ	READ SECTOR N 
	ANK	A1,/F
	RF(Z)	READ10	OK. NO RETURN CODE
	SUK	A4,1	DECREMENT RETRY COUNTER 
	ABL(Z)	END:IO	ALL RETRIES DONE 
	RB	READ:N	TRY AGAIN
* 
*************************** 
*                         * 
*  CHECK CYLINDER NUMBER  * 
*                         * 
*************************** 
* 
* 
READ10	LD	A2,DWTCYL,A6	REQUESTED CYLINDER NUMBER
	CW*	A2,2,A8	COMPARE WITH CURRENT CYLINDER NUMBER 
	RB(NE)	DU:015	ERROR. SEEK CYLINDER 0 
	ABL	END:IO	0K. PEABLORM ENDIO
	EJECT			DRDU01 


* 
********************* 
*                   * 
*   TEST STATUS     * 
*                   * 
********************* 
* 
TEST	LDKL	A2,DWTNAM	VOLUME NAME DWT DISPLACEMENT
	ADR	A2,A6
	LC	A3,DWTOR,A6	DWT INDEX 
	ANK	A3,1 
	RF(Z)	TEST10	FIXED DISC
	ADK	A2,6	CARTRIDGE DISC
TEST10	ST	A2,10,A8	SAVE ADDRESS TO VOLUME NAME
	SUR	A1,A1	SET RETURN CODE=0
	ABL	END:IO	PEABLORM ENDIO
	EJECT			DRDU01 


* 
******************************
*                            *
*  EXECUTE WER INSTRUCTIONS  *
*                            *
******************************
* 
WER:R5	LDKL	A2,/8005	READ 5 WORDS 
	LDKL	A3,BUF	DRIVER BUFFER ADDRESS
	RF	EX:WER


WER:R	LDKL	A2,/80CD	READ 1 SECTOR 
	CWK	A3,BUF 
	RF(E)	EX:WER 
	RF	WER:WB


WER:W	LDKL	A2,/C0CD	WRITE 1 SECTOR
WER:WB	LD	A3,2,A8	USER BUFFER ADDRESS 


EX:WER	EX	DWTWR1,A6	EXECUTE 1:ST WER
	EX	DWTWR2,A6	EXECUTE 2:ND WER
	RTN	A5 
	EJECT			DRDU01 


* 
******************* 
*                 * 
*  SEEK CYLINDER  * 
*                 * 
******************* 
* 
SEEK	LD	A2,DWTCYL,A6	CYLINDER NUMBER
	SLL	A2,3 
	ORK	A2,2 
	RF	CIO	EXECUTE CIO-START 


SEEKZ	EQU	* 
	LDK	A2,3 
	RF	CIO	EXECUTE CIO-START 


READ5	LC	A2,DWTSEC,A6	SECTOR NUMBER 
	ANK	A2,/1F 
	SUK	A2,3	SECTOR N-1
	ANK	A2,/1F 
	SLL	A2,2 
	RF	CIO	EXECUTE CIO-START 
	EJECT			DRDU01 


READ	LC	A2,DWTSEC,A6	SECTOR NUMBER
	ANK	A2,/1F 
	SLL	A2,2 
	RF	CIO	EXECUTE CIO-START 


WRITE	LD	A2,DWTCYL,A6	CYLINDER NUMBER 
	ST*	A2,2,A8	PUT CYLNMB. IN USER BUFFER 
	LC	A2,DWTSEC,A6	SECTOR NUMBER
	SLL	A2,2 
	ADK	A2,1 
	EJECT			DRDU01 



CIO	EQU	* 


EX:CIO	LC	A1,DWTOR,A6	
	ANK	A1,1	INDEX 
	ADR	A1,A1	DOUBLE INDEX 
	ADR	A1,A6
	EX	DWTCIO,A1	EXECUTE CIO-START 


SAVE	ST	A2,DWTA2,A6	SAVE REGS. A2 
	ST	A4,DWTA4,A6	           A4 
	ST	A5,DWTA5,A6	           A5 
T:DISP	ABL	TDISP	GO TO DISPATCHER 
	EJECT			DRDU01 


* 
**********************
*                    *
*  RECOVERY ROUTINE  *
*                    *
**********************
* 
DUON	CF	A15,SAVE8	SAVE REGS. A1-A8 ON A15 STACK 
	LDKL	A6,DWDU01 

	LD	A1,INIFLG	INITIALIZATION FLAG 
	RF(Z)	DUON08	POWER UP


DURED2	EQU	*
	LDKL	A1,/7FFF
	ANS	A1,DWTST,A6	SET DISC UNIT BUSY 
DUON05	LDKL	A5,DWTSB2	STACK BASE
	LDKL	A6,DWDU01 
	ADR	A5,A6	STACK BASE 
	CF	A5,VO:NAM	GET VOLUME NAME 
	CF	A15,TENDIO
	EJECT

	IFT	NUNITS=2 
	LDR*	A6,A6	OTHER DISC UNIT DWT-ADDRESS 
	LDKL	A5,DWTSB2 
	ADR	A5,A6	STACK BASE 


	LDKL	A1,/7FFF
	ANS	A1,DWTST,A6	SET DWT BUSY 


	CF	A5,VO:NAM	GET VOLUME NAME 
	CF	A15,TENDIO	PERFORM ENDIO
	XIF

	RB	T:DISP	DISPATCH 
* 
* 
*    READY INTERRUPT
* 
DUREDY	LD	A1,TIMER
	RB(Z)	DURED2	NO TIMER ACTIVE 
	RB	T:DISP	TIMER ACTIVE 
	EJECT
DUON08	EQU	*
	LDK	A1,2	THROUGHPUT ERROR
	LD	A2,DWTST,A6	GET DWT STATUS
	RF(N)	DUON10	UNIT FREE 
	CF	A15,TENDIO	PERFORM ENDIO


DUON10	EQU	*
	IFT	NUNITS=2 
	LDKL	A6,DWDU02	DISC UNIT NO. 2 
	LD	A2,DWTST,A6	DWT STSTUS
	RF(N)	DUON20	UNIT FREE 
	CF	A15,TENDIO	PERFORM ENDIO
	XIF
* 
*  SET DISC BUSY AND START TIMER
* 
DUON20	LDKL	A1,/7FFF
	IFT	NUNITS=2 
	ANS	A1,DWTST,A6	SET UNIT BUSY
	LDR*	A6,A6	OTHER DWT ADDRESS 
	XIF
	ANS	A1,DWTST,A6	SET UNIT BUSY
	LDKL	A4,TIMER	TIMER POINTER ADDRESS
	LDR*	A3,A4 
	RF(Z)	DUON30	NO TIMER ACTIVE 
	LDKL	A1,-TIME
	STR	A1,A3	RESTART TIMER
	RB	T:DISP
* 
DUON30	CF	A15,SETIMP	START TIMER
	DATA	DUON40,TIME	TIME OUT ADDRESS, TIME
	RB	T:DISP
* 
*   TIME-OUT
* 
DUON40	LDKL	A6,DWDU01 
	CM	TIMER 
	RB	DURED2
	EJECT			DRDU01 


* 
*********************** 
*                     * 
*  INTERRUPT HANDLER  * 
*                     * 
*********************** 
* 
IHDU2	EQU	* 
	IFT	NUNITS=2 
	ST	P,INTSAV	SAVE LAST INTERRUPT
	CF	A15,SAVE8 
	LDKL	A6,DWDU02	DISC UNIT NO. 2 
	RF	IHDU10
	XIF
IHDU	EQU	*
IHDU1	EQU	* 
	ST	P,INTSAV	SAVE LAST INTERRUPT
	CF	A15,SAVE8 
	LDKL	A6,DWDU01	DISC UNIT NO. 1 


IHDU10	SST	A1,CUADR	GET STATUS
	IFT	NUNITS=2 
	LDR	A2,A1
	ANK	A2,/40 
	RF(Z)	IHDU20 
	LDKL	A6,DWDU02 
	XIF
IHDU20	EQU	*
	ANKL	A1,/440F	MASK RETURN CODE 
	SLL	A1,1 
	RB(N)	DUREDY	READY INTERRUPT 
	SRL	A1,1 


	LD	A2,DWTSAV,A6
	RF(NN)	GET 
	LDR	A3,A1
	ANK	A3,1 
	RF(NZ)	END:IO	DISC UNIT NOT OPERABLE 
	EJECT			DRDU01 


GET	LD	A5,DWTA5,A6	RELOAD REGISTERS A5
	LD	A4,DWTA4,A6	                 A4 
	LD	A2,DWTA2,A6	                 A2 
	LD	A7,DWTOR,A6 
	ANK	A7,/FF	ORDER 
	LD	A8,DWTECB,A6	ECB-ADDRESS
	RTN	A5 
	EJECT			DRDU01 


* 
******************* 
*                 * 
*  PERFORM ENDIO  * 
*                 * 
******************* 
* 
END:IO	EQU	*

	ANKL	A1,/28F	MASK RETURN CODE
	RF(NZ)	END:10	ERROR
	LD	A2,4,A8	REQUESTED LENGTH =
	ST	A2,6,A8	EFFECTIVE LENGTH


END:10	EQU	*
	LD	A2,RETRY	MAX NO OF TRIES
	CW	A2,DWTA4,A6 
	RF(E)	END:15	NO RETRY
	ORKL	A1,/100	BIT 7 = RETRIES 
END:15	EQU	*
	LC	A2,DWTOR,A6	ORDER 
	ANK	A2,1	INDEX 
	ADR	A2,A2
	ADR	A2,A6
	CM	DWTBSY,A2	RESET READY WORD
	IFT	NUNITS=2 
	LDR*	A6,A6	OTHER DISC UNIT DWT-ADDRESS 
	CF	A15,TENDIO	PERFORM ENDIO
	LDR*	A6,A6	ACTIVE DISC UNIT DWT-ADDRESS
	XIF
	CF	A15,TENDIO	PERFORM ENDIO
END:20	ABL	TDISP	GO TO DISPATCHER 
	EJECT


VO:NAM	LD	A1,DWTOR,A6	ORDER 
	ST	A1,DWTSAV,A6	SAVE IT
	CM	DWTOR,A6	INDEX=0
VO:NA5	EQU	*



DU:NAM	CF	A5,SEEKZ	SEEK SECTOR 0
	ANKL	A1,/203 
	RF(NZ)	VO:NA8	SEEK-,THROUGHPUT-ERROR,NOT OPERABLE
	CF	A5,WER:R5	EXECUTE WER INSTRUCTIONS
	SUR	A2,A2	CYLINDER NUMBER = 0
	ST	A2,DWTCYL,A6
	CF	A5,CIO	READ VOLUME LABEL
	ANK	A1,3 
	RF(NZ)	VO:NA8	THROUGHPUT-ERROR,NOT OPERABLE


	LDKL	A2,DWTNAM 
	ADR	A2,A6
	LC	A1,DWTOR,A6	
	ANK	A1,1	DISC INDEX
	RF(Z)	DUNA10	FIXED DISC
	ADK	A2,6	CARTRIDGE DISC


DUNA10	SUR	A1,A1	RESET RETURN CODE
	LDKL	A3,BUF+2	BUFFER ADDRESS 
	LDK	A4,6 



DUNA20	LDR*	A7,A3	GET VOLUME NAME 
	CWR*	A7,A2	COMPARE WITH LAST VOLUME NAME 
	RF(E)	DUNA30	SAME DISC 
	LDK	A1,/80	NEW DISC LOADED 



DUNA30	STR	A7,A2	SAVE DISC NAME 
	ADK	A2,2	INCREMENT POINTERS
	ADK	A3,2 
	SUK	A4,2 
	RB(NZ)	DUNA20	GET NEXT WORD


	LDR	A1,A1
	RF(Z)	DUNA40	VOLUME MATCH
	LC	A2,DWTOR,A6	INDEX 
	ANK	A2,1 
	ADR	A2,A2
	ADR	A2,A6
	ST	A1,DWTBSY,A2	NEW VOLUME LOADED
DUNA40	EQU	*


	LD	A1,DWTOR,A6	ORDER 
	RF(NZ)	VO:NA8
	LDK	A1,1 
	SC	A1,DWTOR,A6	INDEX=1 
	RB	VO:NA5

VO:NA8	LD	A1,DWTSAV,A6	GET OLD DWT CONTENTS 
	ST	A1,DWTOR,A6	SAVE IT 
	LDKL	A1,-1 
	ST	A1,DWTSAV,A6
	LDKL	A5,DWTSB1 
	ADR	A5,A6	STACK BASE 
	LDK	A1,1	RETURN CODE. NOT OPERABLE 
	RTN	A5 
* 
* 
*   TIMER POINTER 
* 
TIMER	DATA	0	TIMER POINTER
	EJECT			DRDU01 


* 
*   DEVICE WORK TABLE DISC UNIT NO. 2 
* 
* 
DWDU02	EQU	*
	IFT	NUNITS=2 
	DATA	DWDU01	POINTER TO OTHER DWT 
	DATA	/8000	DWT STATUS
	DATA	0	ECB-ADDRESS 
	DATA	0	ORDER 
	DATA	DUADR	ACTIVATION ADDRESS
	DATA	0	TTAB-ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TERMINAL QUEUE
	DATA	/00FF	LEFT BYTE=SECTOR NUMBER 
	DATA	0,0,0	SAVE AREA FOR REGISTERS 
	DATA	0,0	STACK 
	DATA	0,0 
	DATA	/80	DISC UNIT BUSY INDICATOR
	DATA	/80 
			RIGHT BYTE = CYLINDER NUMBER 
	CIO	A2,1,DAF2	CIO-START FIXED DISC 
	CIO	A2,1,DAC2	CIO-START CARTRIDGE DISC 
	WER	A2,WER1
	WER	A3,WER1+1
	DATA	0,0,0	VOLUME NAME FIXED DISC
	DATA	0,0,0	VOLUME NAME CARTRIDGE DISC
	DATA	-1
	DATA	/FFFF	CYLINDER NO.
	IFT	TYPE2=0
	DATA	MAXCY5	MAX CYLINDER NO
	XIF
	IFT	NUNITS+TYPE2=3 
	DATA	MAXCY6	MAX CYLINDER NO
	XIF
	EJECT			DRDU01 

* 
*   DEVICE WORK TABLE DISC UNIT NO. 1 
* 
* 
DWDU01	EQU	*
	DATA	DWDU02	POINTER TO OTHER DWT 
	DATA	/8000	DWT-STATUS
	DATA	0	ECB-ADDRESS 
	DATA	0	ORDER 
	DATA	DUADR	ACTIVATION ADDRESS
	DATA	0	TTAB-ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TERMINAL QUEUE
DWTSEC	EQU	*-DWDU01	
	DATA	/00FF	LEFT BYTE=SECTOR NUMBER 
	DATA	0,0,0	SAVE AREA FOR REGISTERS 
	DATA	0,0	STACK 
	DATA	0,0 
DWTBSY	EQU	*-DWDU01	
	DATA	/80	UNIT BUSY INDICATOR 
	DATA	/80	UNIT BUSY INDICATOR 
DWTCIO	EQU	*-DWDU01	CIO-START 
	CIO	A2,1,DAF1
	CIO	A2,1,DAC1
DWTWR1	EQU	*-DWDU01	1:ST WER INSTRUCTION
	WER	A2,WER1
DWTWR2	EQU	*-DWDU01	2:ND WER INSTRUCTION
	WER	A3,WER1+1
DWTNAM	EQU	*-DWDU01 
	DATA	0,0,0	VOLUME NAME FIXED DISC
	DATA	0,0,0	VOLUME NAME CARTRIDGE DISC
DWTSAV	EQU	*-DWDU01 
	DATA	-1
DWTCYL	EQU	*-DWDU01 
	DATA	/FFFF	CYLINDER NUMBER 
	IFT	TYPE1=0
DWTCMX	EQU	*-DWDU01 
	DATA	MAXCY5	MAX CYLINDER X/1215
	XIF
	IFT	TYPE1=1
DWTCMX	EQU	*-DWDU01 
	DATA	MAXCY6	MAX CYLINDER NO X/1216 
	XIF
	END

Full view