.TITLE VETBL - VE: DRIVER TABLE .SBTTL VETBL - TITLE PAGE .IDENT /V01.2X/ ; ; ************************************************************************ ; * ; THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * ; COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * ; THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * ; LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * ; * ; FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * ; SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * ; PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * ; WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * ; * ; ************************************************************************ ; ; VE: (VIRTUAL DISK) DEVICE DRIVER TABLE. ; ; VERSION: V01.00 ; ; AUTHOR: R.W. STAMERJOHN MAPC 03-FEB-79 ; ; MODIFICATION HISTORY: ; ; R.S. MEARNS, INFORMATICS INC. 30-MAR-81 ; MODIFIED TO RUN UNDER RSX-11/M+ V1.0 ; ALL CHANGES ASSOCIATED WITH M+ ARE DENOTED BY CONDITIONAL ; ASSEMBLY BASED ON THE SYMBOL 'R$$MPL'. ; ; G. EVERHART -- ALLOW MULTIPLE PHYSICAL DISKS TO ; ASSOCIATE WITH A SINGLE VIRTUAL ONE (M$VE$$ CONDITIONAL) ; RENAME TO VE: FOR USE ALONG WITH VD: TYPE VIRTUAL DISKS. ; G. EVERHART -- 19-JUL-82 ; ADD OWNING TERMINAL AND ACCESS PASSWORD FIELDS ; TO UCBS. DRIVER WILL CHECK, ALLOW ACCESS ONLY TO OWNING ; TERMINAL. SPECIAL LOCK VE TASK WILL SET TERMINAL AS THE ; ONE ALLOWED TO ACCESS. AVE WILL CLEAR THE FIELDS TO KNOWN ; STATE TO PERMIT INITIAL MOUNT. ; .SBTTL VETBL - DECLARATIONS ; ; MACRO LIBRARY CALLS: ; .MCALL DEVDF$ ;DEFINE DEVICE DATA STRUCTURE SYMBOLICS DEVDF$ ; ; GLOBAL DECLARATIONS: ; .GLOBL $VEDAT ;START OF DATA STRUCTURES .GLOBL $VEEND ;END OF DATA STRUCTURES .GLOBL .VEDCB ;START OF DCB .GLOBL .VE0 ;START OF UCB'S .GLOBL $VE0 ;START OF SCB ; ; GLOBAL REFERENCES: ; .IF NDF LD$VE .GLOBL $VETBL ;DRIVER DISPATCH TABLE .ENDC .SBTTL VETBL - MACRO DEFINITIONS ; ; DEFINE UCB CREATION MACRO. ; .MACRO UCBS UNIT,SGL ; .PSECT .IF DF,R$MV4!R$MPV2 .IF DF,R$MPV2 .IF NDF,X..AC .WORD 0 ;U.UAB ;(MAY NOT BE APPROPRIATE FOR VE:) .ENDC .ENDC .IF DF,R$MV4 .BLKW 4 ;ERROR LOGGING DATA AREA .ENDC .WORD 0,0 ;U.MUP, U.LUIC ; .ENDC .IF DF M$$MUP .WORD 0 ;(U.OWN ) OWNING TERMINAL UCB ADDRESS .ENDC .VE'UNIT:: ;REF. LABEL. .WORD .VEDCB ;(U.DCB ) POINTER TO DCB .WORD .-2 ;(U.RED ) REDIRECT UCB POINTER ;NOTE THE 3 BELOW MAY BE 1 FOR ONLY SINGLE WORD ALIGNMENT IF NO REAL ;DISKS NEED DOUBLE WORD ALIGNMENT. .BYTE UC.NPR!UC.ALG!UC.PWF!1 ;(U.CTL ) CONTROL FLAGS ; .BYTE UC.NPR!UC.ALG!UC.PWF!3 ;(U.CTL ) CONTROL FLAGS .IF NDF,R$$MPL ;FOR RSX11M .BYTE US.MNT ;(U.STS ) STATUS FLAGS .IFF ;FOR RSX11M+ .BYTE US.MNT!US.VV ;(U.STS ) STATUS FLAGS .ENDC .BYTE UNIT ;(U.UNIT) UNIT NUMBER .IF NDF,R$$MPL ;FOR RSX11M .BYTE US.RED ;(U.STS2) STATUS FLAGS .IFF ;FOR RSX11M+ .BYTE US.RED!US.OFL ;(U.STS2) STATUS FLAGS .ENDC .IF B,SGL .WORD DV.DIR!DV.F11!DV.MNT ;(U.CW1 ) DEVICE CHARACTERISTICS .IFF .WORD DV.DIR!DV.F11!DV.MNT!DV.SDI ;(U.CW1) .ENDC .WORD 0 ;(U.CW2 ) DEVICE CHARACTERISTICS .WORD 0 ;(U.CW3 ) DEVICE CHARACTERISTICS .WORD 1000 ;(U.CW4 ) BUFFER SIZE .WORD $VE0 ;(U.SCB ) SCB POINTER .WORD 0 ;(U.ATT ) ATTACH WORD .WORD 0,0 ;(U.BUF ) BUFFER RELOCATION ADDRESS .WORD 0 ;(U.CNT ) BUFFER SIZE (BYTES) .IF DF,R$MPV2 .WORD 0 ;(U.UCBX) UCB EXTENSION AREA .ENDC .WORD 0 ;(U.ACP ) ACP TCB ADDRESS .WORD 0 ;(U.VCB ) VCB ADDRESS .IF DF,R$$MPL ;FOR RSX11M+ ---------------------- .WORD 0,0 ; ADDITIONAL LOCATIONS .BYTE 0,0 ; USED BY RSX11M+ .WORD 0,0 ; DISK DRIVERS .IF DF,R$MPV2 .WORD 0 .WORD 0,0,0,0,0,0 .ENDC .ENDC ; --------------------------------- .WORD 0 ;(U.NXT ) VIRTUAL CONTROL BLOCK ;U.NXT=U.CNT+40 .IF DF,O$WNRS .WORD 0 ;OWNER TERMINAL TI: UCB ADDRESS .WORD 0 ;ACCESS PASSWORD TO CHANGE OWNER UCB ADDRESS ;N.B. - A ZERO IN OWNER UCB ADDRESS IMPLIES NO RESTRICTIONS. .ENDC .ENDM UCBS .SBTTL VETBL - DATA STRUCTURE ; ; THE VIRTUAL DISK DATA STRUCTURE LOOKS LIKE A NORMAL DISK STRUCTURE WITH ; SEVERAL UNITS AND ONE CONTROLLER. HOWEVER, THE UCB IS EXPANDED TO INCLUDE ; ADDITIONAL MAPPING INFORMATION AND THE SCB USES A NULL CSR AND VECTOR. .IIF DF LD$VE $VETBL=0 ; ; DCB DATA STRUCTURE. ; $VEDAT:: ;REF. LABEL. .VEDCB:: ;REF. LABEL. .WORD 0 ;(D.LNK ) LINK TO NEXT DCB .WORD .VE0 ;(D.UCB ) LINK TO FIRST UCB .ASCII /VE/ ;(D.NAM ) DEVICE NAME .BYTE 0,VEHI-1 ;(D.UNIT) LOWEST, HIGHEST UNIT NUMBER .WORD VEND-VEST ;(D.UCBL) LENGTH OF UCB .WORD $VETBL ;(D.DSP ) ADDRESS OF DRIVER DISPATCH TABLE .WORD 177077 ;(D.MSK ) LEGAL FUNCTION MASK 0-15 .WORD 000030 ; CNTRL FUNCTION MASK 0-15 .WORD 000040 ; NO-OP FUNCTION MASK 0-15 .WORD 177000 ; ACP FUNCTION MASK 0-15 .WORD 000377 ; LEGAL FUNCTION MASK 16-31 .WORD 000000 ; CNTRL FUNCTION MASK 16-31 .WORD 000000 ; NO-OP FUNCTION MASK 16-31 .WORD 000377 ; ACP FUNCTION MASK 16-31 .IF DF L$$DRV .WORD 0 ;(D.PCB) PCB ADDRESS .ENDC ; ; UCB DATA STRUCTURE ; VEHI = 0 .IIF NDF,N$VDS,N$VDS=0 V$$E1X=V$$E11-N$VDS .IIF LT, V$$E1X, .ERROR ;NUMBER OF VE UCBS LESS THAN NUMBER SINGLE DIR UCBS .REPT V$$E1X VEST = . UCBS \VEHI VEHI = VEHI+1 VEND = . .ENDR ;ADDITIONAL UCBS FOR SINGLE-DIRECTORY VE: DEVICES. ;THESE ARE USEFUL FOR SMALL VIRTUAL DISKS OR ONES WHICH SHOULD NOT ;NEED UIC SPECIFICATIONS FOR ACCESS TO THEM. THEY FOLLOW THE NORMAL ;VE: UNITS. .REPT N$VDS VEST=. UCBS \VEHI,SGL VEND=. VEHI=VEHI+1 .ENDR ; ; SCB DATA STRUCTURE. ; .IF NDF,R$$MPL ;FOR RSX11M ----------------------------- $VE0:: ;REF. LABEL .WORD 0,.-2 ;(S.LHD ) I/O QUEUE LISTHEAD .BYTE 0 ;(S.PRI ) DEVICE PRIORITY .BYTE 0/4 ;(S.VCT ) VECTOR ADDRESS/4 .BYTE 0 ;(S.CTM ) CURRENT TIMEOUT COUNT .BYTE 0 ;(S.ITM ) INITIAL TIMEOUT COUNT .BYTE 0 ;(S.CON ) CONTROLLER NUMBER .BYTE 0 ;(S.STS ) CONTROLLER STATUS .WORD 4 ;(S.CSR ) CSR ADDRESS .WORD 0 ;(S.PKT ) CURRENT PACKET ADDRESS .WORD 0,0,0,0 ;(S.FRK ) FORK CELL .IF DF L$$DRV&M$$MGE .WORD 0 ; ADDITIONAL WORD .ENDC .IF DF M$$EXT .WORD 0,0,0,0,0,0 ; ADDITIONAL SPACE IF 11/70 .ENDC .IFF ;FOR RSX11M+ ------------------------------- $VE0:: ;REF LABEL .WORD 0, .-2 ;(S.LHD ) I/O QUEUE LISTHEAD .WORD 0,0,0,0 ;(S.FRK ) FORK CELL .IF DF,L$$DRV .WORD 0 ; ADDITIONAL FORK CELL WORD .ENDC .WORD 0 ;(S.PKT ) CURRENT PACKET ADDRESS .BYTE 0 ;(S.CTM ) CURRENT TIME OUT COUNT .BYTE 0 ;(S.ITM ) INITIAL TIME OUT COUNT .BYTE 0 ;(S.STS ) CONTROLLER STATUS .BYTE 0 ;(S.ST3 ) STATUS EXTENSION .WORD 0 ;(S.ST2 ) STATUS EXTENSION .WORD 0 ;(S.KRB ) CONTROLLER REQUEST BLOCK (NONE) .BYTE 0,0 ;(S.ROFF S.RCNT) ERROR LOGGING .WORD 0 ;(S.EMB ) ERROR LOGGING .ENDC ; ----------------------------------------- $VEEND:: ;END OF DATA BASE .END