                             ;
;	DEVICE DRIVER LIST
;
;	VERSION 7A
;
;	COPYRIGHT 1973 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
;
;	DISTRIBUTION FILE NAME:  DDL.PAL
;
;	RESIDENT TABLE SHOWING AVAILABILITY OF
;		DEVICE DRIVERS AND THEIR CURRENT
;		LOCATION
;FORMAT:-
;	4 WORDS PER ENTRY (POSITION IMMATERIAL EXCEPT
;		THAT THE DUMMY ENTRY MUST BE FIRST)
;	GENERAL FORM:
;
;		WORD 1:	DEVICE NAME (PACKED RADIX 50)
;		WORD 2:	CORE LOAD ADDRESS OR 0
;		WORD 3: INTERRUPT VECTOR ADDRESS
;		WORD 4:	ADR OF DDB
;

;		DUMMY ENTRY:	
;		WORDS 1 - 3:	0
;		WORD 4:	ADDRESS OF LOCATION AFTER TABLE END
;			(USED FOR SEARCH CONTROL)
;GENERATED AT SYSTEM BUILD TIME
;USED BY:-
;	1)  .INIT ROUTINE TO FIND THE DDB & DRIVER ADDRESS.
;	2)  CSI TO GET SYSTEM DEVICE.
;	3)  INITIALIZATION CODE TO FIND DRIVER INT VECTORS.
;
	.GLOBL	DDL.	;DEVICE DRIVER LIST
;
;SYSTEM DUMMY:
DDL.:	.WORD 0			;NAME - DUMMY'
	.WORD	0		;CORE ADDRESS
	.WORD	0		;I.V. ADDRESS
	.WORD	DDL.ND		;END OF TABLE
	.IFNZ	DC.DSC
	.GLOBL	DDL.DC	;DDL-RC11
	.GLOBL	DC	;RC11 DRIVER
	.GLOBL	DCDDB	;RC11 DDB
;RC11
DDL.DC:	.RAD50	'DC'	;NAME
	.WORD	DC	;CORE ADDRESS
	.WORD	210	;I.V. ADDRESS
	.WORD	DCDDB	;DDB ADDRESS
	.ENDC
	.IFNZ	DF.DSC
	.GLOBL	DDL.DF	;DDL-RF11
	.GLOBL	DF	;RF11 DRIVER
	.GLOBL	DFDDB	;RF11 DDB
;RF11
DDL.DF:	.RAD50	'DF'	;NAME
	.WORD	DF	;CORE ADDRESS
	.WORD	204	;I.V. ADDRESS
	.WORD	DFDDB	;DDB ADDRESS
	.ENDC
	.IFNZ	DK.DSC
	.GLOBL	DDL.DK	;DDL-RK11
	.GLOBL	DK	;RK11 DRIVER
	.GLOBL	DKDDB	;RK11 DDB
;RK11
DDL.DK:	.RAD50	'DK'	;NAME
	.WORD	DK	;CORE ADDRESS
	.WORD	220	;I.V. ADDRESS
	.WORD	DKDDB	;DDB ADDRESS
	.ENDC
;
;	TC11	DECTAPE
;
	.IFNZ	DT.DSC
;
	.GLOBL	DDL.DT
	.GLOBL	DT		;DRIVER ADDRESS
	.GLOBL	DTDDB		;DECTAPE DDB
;
DDL.DT:
	.RAD50	'DT'		;DRIVER NAME
	DT			;DRIVER ADDRESS
	214			;INTERRUPT VECTOR ADDRESS
	DTDDB			;DRIVER DDB ADDRESS
;
	.ENDC
;
;	MAG TAPE
;
	.IFNZ	MT.DSC
	.GLOBL	DDL.MT
	.GLOBL	MT
	.GLOBL	MTDDB
DDL.MT:	.RAD50	'MT'		;NAME
	.WORD	MT		;DRIVER ADDR
	.WORD	224		;I.V. ADDR
	.WORD	MTDDB		;DDB ADDR
	.ENDC
;
;	TA11 - CASSETTE
;
	.IFNZ	CT.DSC
	.GLOBL	DDL.CT
	.GLOBL	CT
	.GLOBL	CTDDB
DDL.CT:	.RAD50	'CT'
	.WORD	CT		;DRIVER CORE ADDRESS
	.WORD	260		;INTERRUPT VECTOR ADDRESS
	.WORD	CTDDB		;CASSETTE DDB
	.ENDC
;
	.IFNZ	TPSZ+KBFSZ
	.GLOBL	DDL.KO	;DDL-KB OUTPUT SIDE
	.GLOBL	KB	;KB DRIVER.
	.GLOBL	TPDDB	;KB TELEPRINTER DDB.
;TELEPRINTER:
DDL.KO:

	.RAD50	'KB'		;NAME - PACKED 'KB'
	.WORD	KB+16		;CORE ADDRESS
	.WORD	64		;I.V. ADDRESS
	.WORD	TPDDB
	.ENDC
	.IFNZ	TPSZ+KBFSZ
	.GLOBL	DDL.KB	;DDL-KB INPUT SIDE
	.GLOBL	KB	;KB DRIVER.
	.GLOBL	KBDDB	;KB KEYBOARD DDB.
;KEYBOARD

DDL.KB:	0			;ILLEGAL NAME
	.WORD	KB		;CORE ADDRESS
	.WORD	60		;I.V. ADDRESS
	.WORD	KBDDB
	.ENDC
	.IFNZ	TK.NOU
	.GLOBL	DDL.TO	;DDL-TT OUTPUT SIDE
	.GLOBL	DDL.TT	;DDL-TT INPUT SIDE
	.GLOBL	TODDB	;TT TELEPRINTER DDB.
	.GLOBL	TT	;TT DRIVER.
	.GLOBL	TTDDB	;TT KEYBOARD DDB.
;
	.IFNDF	TT0VCT
TT0VCT=300
	.ENDC
;
;NON-CONSOLE TELEPRINTER
;
DDL.TO:	.RAD50	'TT'		;NAME
	.WORD	TT+16		;CORE ADDRESS
	.WORD	TT0VCT+4	;I.V. ADDRESS
	.WORD	TODDB
;NON-CONSOLE KEYBOARD
DDL.TT:	.WORD	0		;NO NAME
	.WORD	TT		;CORE ADDRESS
	.WORD	TT0VCT		;I.V.ADDRESS
	.WORD	TTDDB
	.ENDC
	.IFNZ	PRSZ
	.GLOBL	DDL.PR	;DDL-PR
	.GLOBL	PR	;PR DRIVER.
	.GLOBL	PRDDB	;ADDRESS OF PR DDB.
;P/T READER:
DDL.PR:	.RAD50	'PR'		;NAME PACKED 'PR'
	.WORD	PR		;CORE ADDRESS
	.WORD	70		;I.V. ADDRESS
	.WORD	PRDDB
	.ENDC
	.IFNZ	PPSZ
	.GLOBL	DDL.PP	;DDL-PP
	.GLOBL	PP	;PP DRIVER.
	.GLOBL	PPDDB	;ADDRESS OF PP DDB.
;P/T PUNCH:
DDL.PP:	.RAD50	'PP'		;NAME - PACKED 'PP '
	.WORD	PP		;CORE ADDRESS
	.WORD	74		;I.V. ADDRESS
	.WORD	PPDDB
	.ENDC
	.IFNZ	LPSZ
	.GLOBL	DDL.LP	;DDL- LP
	.GLOBL	LP	;LP DRIVER.
	.GLOBL	LPDDB	;ADDRESS OF LP DDB.
;LINE PRINTER
DDL.LP:	.RAD50	'LP'		;NAME - PACKED 'LP '
	.WORD	LP		;CORE ADDRESS
	.WORD	200		;I.V. ADDRESS
	.WORD	LPDDB
	.ENDC
	.IFNE	AF.CHN
	.GLOBL	DDL.AF	;DDL-AFC
	.GLOBL	AF	;AFC DRIVER
	.GLOBL	AFDDB	;AFC DDB
;AFC
DDL.AF:	.RAD50	'AF'	;NAME
	.WORD	AF	;CORE ADDRESS.
	.WORD	134	;I.V. ADDRESS.
	.WORD	AFDDB	;DDB ADDRESS.
	.ENDC
	.IFNE	AD.CHN
	.GLOBL	DDL.AD	;DDL-ADC
	.GLOBL	AD	;AD01 DRIVER
	.GLOBL	ADDDB	;ADC DDB
;AD01
DDL.AD:	.RAD50	'AD'	;NAME
	.WORD	AD	;CORE ADDRESS.
	.WORD	130	;I.V. ADDRESS.
	.WORD	ADDDB	;DDB ADDRESS.
	.ENDC
	.IFNE	UD.CHN
	.GLOBL	DDL.UD	;DDL-UDC
	.GLOBL	UD	;UDC DRIVER
	.GLOBL	UDDDB	;UDC DDB
;UDC
DDL.UD:	.RAD50	'UD'	;NAME
	.WORD	UD	;CORE ADDRESS.
	.WORD	234	;I.V. ADDRESS.
	.WORD	UDDDB	;DDB ADDRESS.
	.ENDC
DDL.ND:

	.EOT
                                                         TIVATE AFTER DDB LOCKED
	.GLOBL	TR.H	;XFR-ACTIVATE AFTER DDB RESERVED
	.GLOBL	TR.I	;XFR-ACTIVATE AFTER DDB LOCKED(THIS TASK)
	.GLOBL	XFR	;XFR FUNCTION HANDLER
	.GLOBL	WAI	;WAIT HANDLER
	.GLOBL	WAR	;WAITR HANDLER
                        ;
;	DEFINE, AS 0, THOSE ROUTINES NOT NEEDED.
;
	.IFEQ	IO.XTH		;IF NO IO
CLS=0
CL.E=0
CL.F=0
CL.G=0
CL.M=0
INR=0
MS.HED=0
LODHED=0
OPHED=0
OPN=0
OP.H=0
OP.J=0
OP.K=0
OP.M=0
RLS=0
RWN=0
RW.K=0
RW.M=0
RW.N=0
SPC=0
SP.G=0
SP.H=0
SP.I=0
TR.G=0
TR.H=0
TR.I=0
XFR=0
WAI=0
WAR=0
	.ENDC
	.IFNE	IO.XTH
	.IFLE	IO.XTH-3
CLS=0				;NO CLOSE
CL.E=0
CL.F=0
CL.G=0
CL.M=0
LODHED=0
MS.HED=0
OPHED=0
OPN=0				;NO OPEN
OP.H=0
OP.J=0
OP.K=0
OP.M=0
RWN=0				;NO READ/WRITE
RW.K=0
RW.M=0
RW.N=0
	.IFEQ	IO.XTH-1
TR.H=0
TR.G=0
TR.I=0
XFR=0
	.ENDC
	.IFEQ	IO.XTH-2
SPC=0
SP.G=0
SP.H=0
SP.I=0
	.ENDC
	.ENDC
	.ENDC
	.IFEQ	IO.XTH-4
SPC=0				;NO SPECIAL FUNCTION
SP.G=0
SP.H=0
SP.I=0
TR.G=0
TR.H=0
TR.I=0
XFR=0
	.ENDC
	.IFEQ	IO.XTH-5
TR.G=0
TR.H=0
TR.I=0
XFR=0
	.ENDC
	.IFEQ	IO.XTH-6
SPC=0
SP.G=0
SP.H=0
SP.I=0
	.ENDC
	.IFEQ	IO.XTH-7
;	KEEP EVERYTHING
	.ENDC
                                        ;
;	IF KB OR TT NOT PRESENT, CREATE DUMMY GLOBAL VALUES
;	  TO KEEP READ/WRITE AND OPEN HAPPY.
;
	.IFEQ	TK.NOU		;NO TT?
	.GLOBL	DDL.TO	;DDL-TT OUTPUT SIDE
	.GLOBL	DDL.TT	;DDL-TT INPUT SIDE
	.GLOBL	TT	;TT DRIVER.
DDL.TO=0
DDL.TT=0
TT=0
	.ENDC
	.IFEQ	TPSZ+KBFSZ	;NO KB?
	.GLOBL	DDL.KB	;DDL-KB INPUT SIDE
	.GLOBL	DDL.KO	;DDL-KB OUTPUT SIDE
	.GLOBL	KB	;KB DRIVER.
DDL.KB=0
DDL.KO=0
KB=0
	.ENDC
;	DDL INITIALIZATION LOADS ONLY IF IO.XTH NOT ZERO.
	.IFNE	IO.XTH
	.GLOBL	BEGDDL	;DDL INITIALIZATION CODE
	.ENDC
;
;	FORCE DISK DUMP/RESTORE ROUTINE TO LINK
;
	.GLOBL	D.READ	;DISK DUMP/RESTORE ROUTINE
;
;
;	FORCE EMT HANDLER AND MRT TABLE TO LINK
;
	.GLOBL	EMT.	;EMT HANDLER
	.GLOBL	MRT.	;MONITOR RESIDENCE TABLE
;	FORCE SYSTEM TASKS TO LINK(UNLESS ALREADY SUPPRESSED)
	.GLOBL	LODHED	;ON-LINE LOADER HEADER
	.GLOBL	MS.HED	;ERROR MESSAGE TASK HEADER
	.GLOBL	OPHED	;OPERATOR TASK HEADER
	.GLOBL	UTILHD	;UTILITY TASK HEADER
;	FORCE BEGIN CODE TO LINK
	.GLOBL	ENTERL	;INITIALIZATION LIST OF TASKS TO ENTER
	.GLOBL	BEGB1	;INITIALIZATION CODE-PART 1
	.EOT
                                                                                                                                                                                                                                 