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

⟦250a46a8e⟧

    Length: 20694 (0x50d6)
    Notes: pts_type(SC)
    Names: »DRMD01.SC«

Derivation

└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
    └─⟦this⟧ »TOSSWORK/DRMD01.SC« 
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
    └─⟦this⟧ »TOSSWORK/DRMD01.SC« 

PTS(SC)

	IDENT DRMD01 	REL 11.0 81-01-26 870105041100 

			=1, PRR 11.0 80-11-19 ,ATTACH BIT CLEARED BY RECOVERY
* 
* 
**************************************************
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   DRMD01 = DRIVER FOR ONE TO FOUR DISC UNITS
* 
*   PTS 8863 (X1250)
* 
* 
* 
* 
* 
**************************************************
* 
* 
*   THIS DISC DRIVER HANDLES UP TO FOUR DISC
*   DRIVES X1250 CONNECTED TO CPU VIA IOP 
*   ON MULTIPLEX CHANNEL
* 
* 
*   THE FOLLOWING ORDERS ARE TREATED :
* 
*   /00    TEST STATUS
*   /01    BASIC READ 
*   /05    BASIC WRITE
*   /11    PHYSICAL READ
*   /15    PHYSICAL WRITE 
*   /1F    FORMAT VOLUME
* 
	EJECT			DRMD01			DRMD01
* 
* 
*********** 
* ENTRIES * 
*********** 
* 
* 
	ENTRY	MDADR	ACTIVATION ADDRESS 
	ENTRY	MDON	RECOVERY ROUTINE
	ENTRY	IHMD	INTERRUPT HANDLER 
	ENTRY	DWMD01	DWT ADDRESS 
	EJECT			DRMD01 
* 
* 
************* 
* EXTERNALS * 
************* 
* 
* 
	EXTRN	TDISP	DISPATCHER 
	EXTRN	TENDIO	END I/O 
	EXTRN	SAVE8	SAVE REGS. A1-A8 ON A15 STACK
	EXTRN	DISIOE	REQUEST ERROR 
	EXTRN	VOLADR 
	EXTRN	VOLCLR	CLEAR VOLUME NAME FROM DWT
	EXTRN	VOLNAM 
	EXTRN	INTSAV	SAVE AREA LAST INTERRUPT
	EXTRN	INIFLG	INITIALIZATION FLAG 
	EXTRN	PFPOST	PWF POST PROC. FLAG 
	EXTRN	INXDWT	DOUBLED INDEX + DWT ADDRESS 
	EXTRN	SETIMP	TIMER 
	EXTRN	DWTST	STATUS 
	EXTRN	DWTECB	ECB ADDRESS 
	EXTRN	DWTOR	DWT INDEX AND ORDER
	EXTRN	DWTA2	SAVE AREA A2 
	EXTRN	DWTA4	SAVE AREA A4 
	EXTRN	DWTA5	SAVE AREA A5 
	EXTRN	DWTSB1	STACK BASE 1 IN DWT 
	EXTRN	DWTSB2	STACK BASE 2 IN DWT 
	EXTRN	DWTORD	ORDER SAVE AREA 
	EXTRN	DWTVOL	VOLUME NAME AREAS 
	EXTRN	ECBBA	ECB BUFFER ADDRESS 
	EXTRN	ECBRL	ECB REQUESTED LENGTH 
	EXTRN	ECBEL	ECB EFFECTIVE LENGTH 
	EXTRN	ECBRC	ECB RETURN CODE
	EXTRN	ECBCW1	ECB 1:ST CONTROL WORD 
	EXTRN	ECBCW2	ECB 2:ND CONTROL WORD 
	EJECT			DRMD01 
* 
* 
**************************
*                        *
*  CONDITIONAL ASSEMBLY  *
*                        *
**************************
* 
* 
*   READ AFTER WRITE MAY BE EXCLUDED FOR ORDER /15
*   BY SETTING X:A = 0
* 
X:A	EQU	0 
RAW	EQU	X:A 
* 
* 
*   A PROGRAM VERSION USING TOSS MMU PAGING 
*   IS OBTAINED BY SETTING MMUPAG EQU 1 
* 
MMUPAG	EQU	0
* 
CPU852	EQU	1
	EJECT			DRMD01			DRMD01
* 
* 
************* 
* CONSTANTS * 
************* 
* 
* 
CUADR	EQU	/04	CONTROL UNIT ADDRESS
DAMD1	EQU	CUADR+/00	DEVICE ADDRESS UNIT 1 
DAMD2	EQU	CUADR+/10	DEVICE ADDRESS UNIT 2 
DAMD3	EQU	CUADR+/20	DEVICE ADDRESS UNIT 3 
DAMD4	EQU	CUADR+/30	DEVICE ADDRESS UNIT 4 
WERAD	EQU	CUADR+CUADR	MUX ADDRESS 
* 
MAXSEC	EQU	23400	MAX NO OF SECTORS
SECLEN	EQU	256	SECTOR LENGTH, CHARACTERS
QRETRY	EQU	4	NO OF RETRIES
TIME	EQU	1000	1 MIN 40 SEC
* 
DEVIND	EQU	10 
* 
	EJECT			DRMD01			DRMD01
* 
* 
	DATA	0	INDICATES NO MMU BUFFER 
	DATA	DEVIND	DISC DEVICE INDEX
MDADR	DATA	MDAD	ACTIVATION ADDRESS
	DATA	0	ABORT ROUTINE ADDRESS 
* 
	EJECT		DRMD01
* 
* 
*********************** 
*                     * 
*  INTERLACING TABLE  * 
*                     * 
*********************** 
* 
* 
TRATAB	EQU	*
	DATA	/0004,/080C,/1014,/181C,/2024 
	DATA	/282C,/3001,/0509,/0D11,/1519 
	DATA	/1D21,/2529,/2D31,/0206,/0A0E 
	DATA	/1216,/1A1E,/2226,/2A2E,/3203 
	DATA	/070B,/0F13,/171B,/1F23,/272B 
	DATA	/2F33 
* 
	EJECT		DRMD01
* 
****************
*              *
*  ACTIVATION  *
*              *
****************
* 
* 
MDAD	EQU	*
	LD	A1,DWTOR,A6	SAVE INDEX AND ORDER FOR RECOVERY 
	ST	A1,DWTORD,A6
	CF	A15,INXDWT
	LD	A1,DWTCYL,A4	ACTUALL CYLINDER 
	ST	A1,DWTSEK,A6
MDAD:0	EQU	*
	CM	DWTIOR,A6	PREPARE FOR ORDER 
	IFT	MMUPAG=1 
	LDR*	A3,A8	GET 1:ST WORD OF ECB
	ANKL	A3,/3000
	ORKL	A3,/8080	PREPARE FOR 1:ST WER INSTR.
	XIF
	IFT	MMUPAG=0 
	LDKL	A3,/8080	PREPARE FOR 1:ST WER INSTR.
	XIF
	LDR	A1,A7	GET ORDER
	RF(Z)	TESTST	TEST STATUS 
	SUK	A1,/01 
	RF(Z)	INI:01	BASIC READ
	SUK	A1,/04 
	RF(Z)	INI:00	BASIC WRITE 
	SUK	A1,/0C 
	RF(Z)	INI:01	PHYSICAL READ 
	SUK	A1,/04 
	RF(Z)	INI:00	PHYSICAL WRITE
	SUK	A1,/0A 
	RF(Z)	FORVOL	FORMAT VOLUME 
	ABL	DISIOE	INCORRECT ORDER 
* 
	EJECT		DRMD01
* 
* 
* 
***************** 
*               * 
*  TEST STATUS  * 
*               * 
***************** 
* 
* 
TESTST	EQU	*
	CF	A5,VO:NAM 
	ORS	A1,ECBRC,A8	SAVE RETURN CODE 
	CF	A15,VOLNAM
	LDK	A1,0	RESET RETURN CODE 
	ABL	END:20 
* 
	EJECT		DRMD01
* 
***************************** 
*                           * 
*   FORMAT VOLUME           * 
*                           * 
***************************** 
* 
FORVOL	EQU	*
	LDK	A4,QRETRY
FORV10	EQU	*
	LDKL	A3,/4002	HEAD  1 AND ORDER CODE 
	ST	A3,DWTSEK,A6
	LDK	A3,2	ORDER CODE
	ST	A3,DWTSEN,A6
FORV20	EQU	*
	CF	A5,CIO:00 
	ANK	A1,2 
	RF(NZ)	FORV50	SEEK ERROR 
	LD	A3,DWTSEK,A6	HEAD 1 
	CF	A5,CIO:00 
	ANK	A1,2 
	RF(NZ)	FORV50	SEEK ERROR 
	LDK	A3,4	NEXT CYLINDER 
	ADS	A3,DWTSEK,A6	HEAD 0
	AD	A3,DWTSEN,A6	HEAD 0 
	ST	A3,DWTSEN,A6
	CWK	A3,920	4*230 
	RB(NG)	FORV20
	LDKL	A2,923	CYLINDER NUMBER AND SEEK ORDER 
FORV40	EQU	*
	ABL	END:15 
FORV50	EQU	*
	SUK	A4,1 
	RB(NN)	FORV10	RETRY
	LDK	A2,0	DUMMY CYLINDER NUMBER AND ORDER CODE
	RB	FORV40	ENDIO
	EJECT		DRMD01
* 
* 
***************************** 
*                           * 
*  TEST OF INPUT PARAMETERS  *
*  ECBRL,ECBCW1 AND ECBCW2  * 
*                           * 
***************************** 
* 
* 
INI:00	EQU	*
	IM	DWTIOR,A6	WRITE ORDER 
	ADKL	A3,/4000	WER INSTRUCTION
INI:01	EQU	*
	ST	A3,DWTWE1,A6	1:ST WER INSTRUCTION PREPARED
	LD	A1,ECBRL,A8	GET REQUESTED LENGTH
	RF(Z)	INCLEN	ERROR 
	ECR	A3,A1	GET NUMBER OF SECTORS
	ANK	A1,/FF 
	RF(NZ)	INCLEN	INCORRECT REQUESTED LENGTH 
	LD	A2,ECBCW2,A8	GET SECTOR NUMBER
	RF(N)	INCLEN 
	NGR	A1,A3	NEGATE FOR SECTOR COUNTING 
	ST	A1,DWTSEN,A6	NUMBER OF SECTORS IN IO
	IFT	RAW=1
	ST	A1,BUFF	SAVE FOR READ AFTER WRITE 
	XIF
	ADR	A3,A2
	RF(O)	INCLEN 
	SUKL	A3,MAXSEC 
	RF(NP)	INI:20
INCLEN	LDKL	A1,/8008	INCORRECT LENGTH 
	ABL	END:15 
* 
	EJECT		DRMD01
* 
* 
*********************************** 
* 
*  TRANSFER LOGICAL SECTOR NUMBER * 
*  TO CYLINDER NUMBER AND         * 
*  SECTOR NUMBER ON CYLINDER      * 
*                                 * 
*********************************** 
* 
* 
INI:20	EQU	*
	LD	A1,ECBBA,A8	GET BUFFER ADDRESS
	ST	A1,DWTWE2,A6	PREPARE FOR SECOND WER INSTRUCTION 
	LDK	A1,0 
INI:22	EQU	*
	LDK	A4,QRETRY
	DVK	104
*  A1=REMAINER = SECTOR NUMBER O N CYLINDER 
*  A2=QUOTIENT = CYLINDER NUMBER
	ST	A1,DWTSEC,A6	SAVE SECTOR NUMBER 
* 
	EJECT		DRMD01
* 
* 
	SLL	A2,2	CYLINDER NUMBER IN POSITION 
	ADK	A2,3	SEEK ORDER CODE 
	CW	A2,DWTSEK,A6	TEST IF SAME CYLINDER
	RF(E)	INI:35 
INI:30	EQU	*
	IM	DWTSFL,A6	INDICATE SEEK TO BE DONE
	ST	A2,DWTSEK,A6	SAVE IN SEEK REGISTER SAVE AREA
* 
	EJECT		DRMD01
* 
* 
*   PREPARE HEAD NUMBER 
* 
INI:35	EQU	*
	LDK	A3,0	HEAD NO 0 
	CWK	A1,52	SECTOR ON 1:ST OR 2:ND TRACK 
	RF(L)	INI:40 
	SUK	A1,52
	LDKL	A3,/4000	HEAD NO 1
* 
* 
*   GET PHYSICAL SECTOR NUMBER AND PREPARE DWTIOR,A6
* 
INI:40	EQU	*
	LC	A1,TRATAB,A1	GET INTERLACED SECTOR NUMBER 
	SRC	A2,3 
	RF(NN)	INI:42	EVEN CYLINDER NUMBER 
	SUK	A1,26	SKEW FACTOR = 26 SECTORS 
	RF(NN)	INI:42
	ADK	A1,52
INI:42	EQU	*
	SLL	A1,2	SECTOR NO IN POSITION 
	ADR	A1,A3	HEAD NUMBER
	ORS	A1,DWTIOR,A6	SAVE IN CIO REGISTER SAVE AREA
	LD	A1,DWTSFL,A6	SEEK TO BE DONE ?
	RF(Z)	INI:45 
* 
	EJECT		DRMD01
* 
* 
INI:43	EQU	*
	CF	A5,SEEK	PERFORM SEEK
	ADK	A1,0 
	RF(Z)	INI:44	NO RETURN CODE
	LDKL	A2,/100	RETRIES PERFORMED 
	ORS	A2,ECBRC,A8
	SUK	A4,1 
	RB(NZ)	INI:43	RETRY
	LDK	A2,0	DUMMY CYL NO AND ORDER CODE 
	RF	END:15	NO MORE RETRIES
INI:44	EQU	*
	CM	DWTSFL,A6	RESET SEEK FLAG 
* 
*   CIO AND CHECK RETURN CODE 
* 
INI:45	EQU	*
	CF	A5,CIO	PERFORM IO 
	ADK	A1,0	CHECK RETURN CODE 
	RF(Z)	INI:50	OK
	LDKL	A2,/100	RETRIES DONE
	ORS	A2,ECBRC,A8
	SUK	A4,1	RETRY COUNTER 
	RB(NZ)	INI:45	RETRY
	RF	END:15
* 
	EJECT		DRMD01
* 
* 
INI:50	EQU	*
	LDKL	A3,SECLEN	GET SECTOR LENGTH 
	LDR	A4,A3	GET SECTOR LENGTH
	LDK	A2,1 
	ANS	A2,DWTIOR,A6	SAVE ORDER TYPE 
	IFT	RAW=1
	SUK	A7,/15	
	RF(NZ)	INI:52	NOT PHYSICAL WRITE 
	LD	A2,DWTIOR,A6	CHECK IF READ IS DONE
	RF(NZ)	INI:54
	LDK	A4,0	SAME BUFFER FOR READ AFTER WRITE TEST 
INI:52	EQU	*
	XIF
	ADS	A3,ECBEL,A8	UPDATE EFFECTIVE LENGTH
INI:54	EQU	*
	IM	DWTSEN,A6	UPDATE SECTOR COUNTER 
	RF(Z)	END:00	LAST SECTOR DONE
* 
	IFT	MMUPAG=0 
	ADS	A4,DWTWE2,A6	UPDATE BUFFER ADDRESS 
	XIF
* 
	IFT	MMUPAG=1 
	ADK	A4,0 
	RF(Z)	INI:60	READ AFTER WRITE ON 
	ML	2,DWTWE1,A6	GET WER REGISTERS 
	SLC	A1,4	BIT 0,1 OF BUFFER ADDRESS IN POSITION 
	SRL	A2,1	BIT 2,17 IN POSITION
	LDR	A3,A1
	DAK	/0,/0080	SECTOR LENGTH 
* 
	EJECT		DRMD01
* 
* 
	ANK	A1,3	BIT 0,1 
	ANKL	A3,/FFFC
	ORR	A1,A3	1ST WER
	SRC	A1,4	IN POSITION 
	SLL	A2,1 
	MS	2,DWTWE1,A6 
INI:60	EQU	*
	XIF
* 
	LDK	A4,QRETRY	RETRIES
	IM	DWTSEC,A6	UPDATE SECTOR NUMBER ON CYLINDER
	LD	A2,DWTSEK,A6	PREPARE FOR SEEK 
	LD	A1,DWTSEC,A6	GET SECTOR NO ON CYLINDER
	CWK	A1,104	NEXT CYLINDER ? 
	RB(L)	INI:35	SAME CYLINDER 
	CM	DWTSEC,A6	NEW CYLINDER
	LDK	A1,0	SECTOR 0
	ADK	A2,4	NEXT CYLINDER 
	RB	INI:30	IO ON SEC. 0 ON NEXT CYLINDER
	EJECT		DRMD01
* 
* 
* 
********************
*                  *
*   SEEK AND CIO    * 
*    SUBROUTINE     * 
*                  *
********************
* 
SEEK	EQU	*
	LD	A3,DWTSEK,A6
	RF	CIO:00
* 
CIO	EQU	* 
	LD	A3,DWTWE1,A6	GET 1ST WER INST. REG. 
	WER	A3,WERAD 
	LD	A3,DWTWE2,A6	GET 2ND WER INST. REG. 
	WER	A3,WERAD+1 
	LD	A3,DWTIOR,A6	GET CIO INST. REG. 
CIO:00	EQU	*
	ST	A4,DWTA4,A6	SAVE A4 
	LD	A2,PFPOST 
	RF(NZ)	CIOAB	PWF POST PROCESSING ON
	CF	A15,INXDWT
	EX	DWTCIO,A4 
	LDK	A1,1 
	RF(3)	END:30	CU ADDRESS UNKNOWN
CIOAB	EQU	* 
	ST	A5,DWTA5,A6 
	RF	T:DISP
* 
	EJECT		DRMD01
* 
* 
END:00	EQU	*
	IFT	RAW=1
	ADK	A7,0	PHYSICAL WRITE ?
	RF(NZ)	END:10	NOT PHYSICAL WRITE 
	LD	A2,DWTIOR,A6	 
	ANK	A2,1	
	RF(Z)	END:10	READ AFTER WRITE DONE 
	LDKL	A1,/8001
	ST	A1,DWTWE1,A6	READ ONE WORD TO CHECK CRC 
	LDKL	A1,BUFF	DRIVER WORK BUFFER
	ST	A1,DWTWE2,A6	BUFFER ADDRESS TO 2:ND WER 
	CM	DWTIOR,A6 
	LD	A1,BUFF	GET NUMBER OF SECTORS IN IO 
	ST	A1,DWTSEN,A6	UPDATE DWTSEN FOR READ AFTER WRITE 
	LDK	A1,0 
	LD	A2,ECBCW2,A8
	ABL	INI:22 
	XIF
END:10	EQU	*
	LD	A2,DWTSEK,A6	GET CYL NO AND ORDER CODE
END:15	EQU	*
	CF	A15,INXDWT
	ST	A2,DWTCYL,A4
END:20	EQU	*
	CF	A15,TENDIO	PERFORM ENDIO
T:DISP	ABL	TDISP
* 
END:30	EQU	*	DEVICE ADDRESS UNKNOWN 
	ORS	A1,DWTST,A6	INDICATE 1ST RECOVERY DONE	=1
	RB	END:20
* 
	EJECT		DRMD01
* 
* 
VO:NAM	EQU	*
	CM	DWTSAV,A6	INDICATE VOLUME NAME READING
	LDK	A1,6 
	CF	A15,VOLCLR
	LDK	A1,3 
	ST	A1,DWTSEK,A6	SEEK PREPARATION CYL 0 
	CF	A5,SEEK 
	LDK	A2,0 
	ANK	A1,/3	RETURN CODE
	RF(NZ)	VO:NA8	ERROR
	LDKL	A1,/8003	READ 3 WORDS VOLUME NAME 
	ST	A1,DWTWE1,A6	WER PREPARATION
	CF	A15,VOLADR	GET ADDRESS TO DWT VOLUME NAME 
	ST	A1,DWTWE2,A6	READ TO DWT
	CM	DWTIOR,A6	READ SECTOR 0 
	CF	A5,CIO
	LD	A2,DWTSEK,A6
VO:NA8	EQU	*
	CF	A15,INXDWT
	ST	A2,DWTCYL,A4
	LDKL	A2,-1 
	ST	A2,DWTSAV,A6	INDICATE READY 
	RTN	A5 
	EJECT			DRMD01			DRMD01
* 
**********************
*                    *
*  RECOVERY ROUTINE  *
*                    *
**********************
* 
MDON	EQU	*
	IFT	CPU852=0 
	MSR	8,A15	SAVE A1-A8 ON STACK
	XIF
	IFT	CPU852=1 
	CF	A15,SAVE8 
	XIF
	LDKL	A6,DWMD01 
	LDKL	A1,/7FFE	SET UNIT BUSY AND RECOVERY ON	=1 
	ANS	A1,DWTST,A6		=1
	LD	A1,INIFLG	POWER UP? 
	RF(NZ)	MDON25
* 
	LDKL	A4,TIMER	TIMER POINTER ADDRESS
	LDR*	A3,A4 
	RF(Z)	MDON10	NO TIMER ACTIVE 
	LDKL	A1,-TIME
	STR	A1,A3	RESTART TIMER
	RB	T:DISP
* 
MDON10	CF	A15,SETIMP	START TIMER
	DATA	MDON20,TIME	TIME OUT ADDRESS, TIME
	RB	T:DISP
* 
*   TIME OUT
* 
MDON20	LDKL	A6,DWMD01 
	CM	TIMER 
* 
	EJECT			DRMD01 
* 
* 
MDON25	EQU	*
	LDKL	A5,DWTSB2	STACK BASE
	ADR	A5,A6
	LDK	A1,0	UNIT 0
MDON30	ST	A1,DWTOR,A6 
	CF	A5,VO:NAM	GET VOLUME NAME 
	LD	A1,DWTOR,A6 
	ADKL	A1,/100	NEXT UNIT 
	CWK	A1,/300
	RB(NG)	MDON30
	IM	DWTST,A6	INDICATE VOLUME NAMES READ 
	LD	A8,DWTECB,A6	GET ECB ADDRESS
	RB(Z)	END:15	NOREQUEST ON
* 
	LD	A7,DWTORD,A6	GET ORDER
	ST	A7,DWTOR,A6	RESTORE INDEX AND ORDER 
	ANK	A7,/3F 
	ABL	MDAD:0 
* 
* 
	EJECT			DRMD01			DRMD01
* 
* 
*********************** 
*                     * 
*  INTERRUPT HANDLER  * 
*                     * 
*********************** 
* 
* 
IHMD	EQU	*
	MSR	8,A15	SAVE A1-A8 ON STACK
	LDKL	A6,DWMD01	DWT ADDRESS 
* 
	SST	A1,CUADR	GET STATUS
	ANKL	A1,/617	MASK RETURN CODE
	LDR	A2,A1
	ANKL	A2,/610	MOVE BITS 
	SRC	A2,5	PROGRAM ERROR BIT 
	RF(NN)	IHMD30	 
	ORKL	A1,/8000	REQUEST ERROR
IHMD30	EQU	*
	SRL	A2,3	SEEK ERROR,DATA ERROR 
	ORR	A1,A2
	ANKL	A1,/8007	MASK RETURN CODE 
	LD	A2,DWTSAV,A6
	RF(NN)	GET 
	LDR	A3,A1
	ANKL	A3,/8001
	RB(NZ)	END:15	DISC UNIT NOT OPERABLE OR REQUEST ERROR
* 
GET	LD	A5,DWTA5,A6	RELOAD REGISTERS A5
	LD	A4,DWTA4,A6	                 A4 
	LD	A7,DWTOR,A6 
	ANK	A7,/3F	ORDER 
	LD	A8,DWTECB,A6	ECB ADDRESS
	RTN	A5 
* 
* 
*  TIMER POINTER
TIMER	DATA	0	TIMER POINTER
	IFT	RAW=1
*   BUFFER
BUFF	DATA	0 
	XIF
* 
	EJECT			DRMD01			DRMD01
* 
* 
*   DEVICE WORK TABLE DISC UNIT NO. 1 
* 
* 
DWMD01	EQU	*
DWTSAV	EQU	*-DWMD01 
	DATA	-1
	DATA	/8000	DWT STATUS
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	MDADR	ACTIVATION ADDRESS
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TERMINAL QUEUE
	IFT	MMUPAG=1 
	DATA	0	SAVE AREA USER ECB ADDRESS
	DATA	ECBMD1	MMU ECB ADDRESS
	XIF
DWTSEC	EQU	*-DWMD01	
	DATA	0	SECTOR NUMBER 
	DATA	0,0,0	SAVE AREA FOR REGISTERS 
	DATA	0,0	STACK 
	DATA	0,0 
	DATA	0	ORDER SAVE AREA 
	DATA	/C000 
	DATA	/C000 
	DATA	/C000 
	DATA	/C000 
	DATA	/FFFF,/FFFF,/FFFF	VOLUME NAME UNIT 1
	DATA	/FFFF,/FFFF,/FFFF	VOLUME NAME UNIT 2
	DATA	/FFFF,/FFFF,/FFFF	VOLUME NAME UNIT 3
	DATA	/FFFF,/FFFF,/FFFF	VOLUME NAME UNIT 4
DWTWE1	EQU	*-DWMD01 
	DATA	0	1:ST WER INSTRUCTION REG. 
DWTWE2	EQU	*-DWMD01 
	DATA	0	2:ND WER INSTRUCTION REG. 
DWTIOR	EQU	*-DWMD01 
	DATA	0	CIO REG: HEAD, DWTSEC,A6, ORDER 
DWTSEK	EQU	*-DWMD01 
	DATA	0	SEEK REG: CYL NO AND ORDER
DWTSFL	EQU	*-DWMD01 
	DATA	0	SEEK FLAG 
DWTSEN	EQU	*-DWMD01 
	DATA	0	SECTOR COUNTER
DWTCIO	EQU	*-DWMD01	CIO START 
	CIO	A3,1,DAMD1	UNIT 1
	CIO	A3,1,DAMD2	UNIT 2
	CIO	A3,1,DAMD3	UNIT 3
	CIO	A3,1,DAMD4	UNIT 4
DWTCYL	EQU	*-DWMD01 
	DATA	0	CYLINDER NUMBER AND SEEK ORDER CODE 
	DATA	0 
	DATA	0 
	DATA	0 
	IFT	MMUPAG=1 
ECBMD1	EQU	*
	DATA	0,0,0,0,0,0,0 
	XIF
	END

Full view