.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