	.title	vatab
;
;
	.ident	/01/
;
;	data tables for virtual aether driver
;
;
;	j. s. sventek, 22-mar-81
;
;
;	this module provides the loadable driver data tables
;	for the virtual aether driver.
;
	.mcall	ucbdf$
	ucbdf$		; define UCB offsets and symbols
ld$va=0			; driver is loadable
v$$a11=1		; one unit
vector=0		; "interrupt vector"
csr=4			; control-status register
f1.kil=1		; function mask value for KIL
f1.wlb=2		; function mask value for WLB
f1.rlb=4		; function mask value for RLB
f1.att=10		; function mask value for ATT
f1.det=20		; function mask value for DET
f1.cln=200		; function mask value for CLN
f1.acr=20000		; function mask value for ACR
f1.acw=40000		; function mask value for ACW
f2.rvb=2		; function mask value for RVB
f2.wvb=4		; function mask value for WVB
f2.cre=20		; function mask value for CRE
f2.dac=1		; function mask value for DAC
f2.stp=20000		; function mask value for STP
lgl.f1=f1.kil!f1.wlb!f1.rlb!f1.att!f1.det!f1.cln!f1.acw!f1.acr ;legal functions
ctl.f1=f1.kil!f1.cln!f1.acw!f1.wlb!f1.rlb		; control functions
nop.f1=f1.att!f1.det!f1.acr				; noop functions
acp.f1=0						; acp functions
lgl.f2=f2.rvb!f2.wvb!f2.cre!f2.dac!f2.stp
ctl.f2=f2.cre!f2.dac!f2.stp!f2.wvb!f2.rvb
nop.f2=0
acp.f2=f2.rvb!f2.wvb
	.psect	.prog.,rw,i,lcl,rel,con
	.page
;
;
;	DCB for device
;
;
	.iif df ld$va,	$vatbl=0
$vadat::					; start of data base
.vadcb:						; Virtual aether DCB
	.word	0				; pointer to next DCB
	.word	.va0				; pointer to first UCB
	.ascii	/VA/				; device name
	.byte	0,v$$a11-1			; first and last units
	.word	vand-vast			; length of UCB
	.word	$vatbl				; pointer to dispatch table
	.word	lgl.f1,ctl.f1,nop.f1,acp.f1	; first function mask set
	.word	lgl.f2,ctl.f2,nop.f2,acp.f2	; second function mask set
	.if df	l$$drv
	.word	0				; PCB address for driver
	.endc
	.page
;
;
;	UCB for device
;
;
u.tim1==u.cw2				; offsets into UCB for interrupt time
u.tim2==u.cw3				; interval in ticks
u.clqb==u.vcb+2				; address of clock queue control block
u.pvcb==u.clqb+2			; pseudo VCB location
vast=.
	.if df	m$$mup
	.word	0			; owning tty address
	.endc
.va0::					; Virtual aether UCB
	.word	.vadcb			; back ptr to DCB
	.word	.-2			; redirect to self
	.byte	uc.pwf!uc.que		; u.ctl - notify on PWF
					; and when packet queued
	.byte	0			; u.sts
	.byte	0			; u.unit
	.byte	us.red!us.pub		; u.st2 - no redirect and public
	.word	dv.rec			; u.cw1
	.word	0,0			; u.cw2 & u.cw3
	.word	512.			; buffer size
	.word	$va0			; SCB pointer
	.word	0,0,0,0			; TCB, u.buf, u.buf+2, u.cnt
	.word	0,0			; u.acp (must be kept 0) and
					; u.vcb (will point to u.pvcb)
	.word	0,0			; clqb & pvcb
vand=.
	.page
;
;
;	SCB for device
;
;
pr0=0
$va0::					; Virtual aether SCB
	.word	0,.-2			; IRP DEQUEUE
	.byte	pr0,vector/4		; device priority, & vector
	.byte	0,2			; current and init timeout
	.byte	0*2,0			; cont index and status
	.word	csr			; CSR address
	.word	0			; IRP address
	.word	0,0,0,0			; fork block
	.if df l$$drv&m$$mge
	.word	0			; extra word in fork block
	.endc
	.if df	m$$mge&m$$ext
	.blkw	6
	.endc
$vaend::				; end of data base
;	.dsabl	lsb
	.end
