.TITLE VDTAB - VD: DRIVER TABLE .SBTTL VDTAB - TITLE PAGE .IDENT /V03.00/ ; ; ************************************************************************ ; * ; 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 * ; * ; ************************************************************************ ; ; VD: (VIRTUAL DISK) DEVICE DRIVER TABLE. ; ; VERSION: V03.00 ; ; AUTHOR: R.W. STAMERJOHN MAPC 03-FEB-79 ; ; MODIFICATION HISTORY: ; ; V02.00 04-APR-80 T. PANG, L. M. FRASER ; ; CONVERT FOR RSX-11M-PLUS V1.0 OPERATING SYSTEM. ; ; V03.00 08-Jul-82 R. B. Denny ; ; Restore 'M code, make 'M+ conditional. Convert ; for 'M Version 4, 'M+ version 2. Make U.NXT and ; U.UIC offset automatically calc'd here and set global. ; ; NOTE: ; M+ Version 2 changes UNTESTED!!! ; May require filling in fields. ; .PAGE .SBTTL VDTBL - DECLARATIONS ; ; MACRO LIBRARY CALLS: ; .MCALL DEVDF$ ;DEFINE DEVICE DATA STRUCTURE SYMBOLICS DEVDF$ ; ; GLOBAL DECLARATIONS: ; .GLOBL $VDDAT ;START OF DATA STRUCTURES .GLOBL $VDEND ;END OF DATA STRUCTURES .GLOBL $VDDCB ;START OF DCB .GLOBL .VD0 ;START OF UCB'S .GLOBL $VD0 ;START OF SCB ; ; SPECIAL UCB EXTENSION WORDS ; .GLOBL U.NXT ;VIRTUAL EXTENSION UCB OFFSET .GLOBL U.UFD ;FILE UIC IN UCB ; ; GLOBAL REFERENCES: ; .IF NDF LD$VD .GLOBL $VDTBL ;DRIVER DISPATCH TABLE .ENDC ; ; ; .PAGE .SBTTL VDTBL - MACRO DEFINITIONS ; ; DEFINE UCB CREATION MACRO. ; .MACRO UCBS UNIT .IF DF E$$DVC .WORD 0,0 ; (U.IOC) I/O COUNT SINCE MOUNT .BYTE 0,0 ; (U.ERSL)(U.ERHL) ERROR LIMITS .BYTE 0,0 ; (U.ERSC)(U.ERLC) ERROR COUNTS .ENDC .IF DF M$$MUP .WORD 0 ;(U.OWN ) OWNING TERMINAL UCB ADDRESS .ENDC .VD'UNIT:: ;REF. LABEL. .WORD $VDDCB ;(U.DCB ) POINTER TO DCB .WORD .-2 ;(U.RED ) REDIRECT UCB POINTER .BYTE UC.NPR!UC.ALG!UC.PWF!3 ;(U.CTL ) CONTROL FLAGS .IF DF R$$MPL .BYTE US.MNT!US.VV ;(U.STS ) STATUS FLAGS (M+) .IFF .BYTE US.MNT ;(U.STS ) STATUS FLAGS (M) .IFTF .BYTE UNIT ;(U.UNIT) UNIT NUMBER .BYTE US.RED!US.OFL ;(U.STS2) STATUS FLAGS ; ; NOTE THAT DV.MSD IS NOT SET. THIS DEVICE SHOULD NOT GENERATE ; LOGGABLE ERRORS ... THOSE SHOULD COME FROM THE PHYSICAL DEVICE ; ON WHICH THE VIRTUAL DISK RESIDES (RBD). ; .IF DF E$$DVC .WORD DV.DIR!DV.F11!DV.MNT!DV.MSD ;(U.CW1 ) DEVICE CHARACTERISTICS .IFF .WORD DV.DIR!DV.F11!DV.MNT ;(U.CW1 ) DEVICE CHARACTERISTICS .ENDC .WORD 0 ;(U.CW2 ) DEVICE CHARACTERISTICS .WORD 0 ;(U.CW3 ) DEVICE CHARACTERISTICS .WORD 1000 ;(U.CW4 ) BUFFER SIZE .WORD $VD0 ;(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) .WORD 0 ;(U.ACP ) ACP TCB ADDRESS .WORD 0 ;(U.VCB ) VCB ADDRESS .IFT ; ; M-PLUS (V2) SPECIFIC UCB FIELDS. M-PLUS USERS ... FILL THIS IN AS REQUIRED, ; THEN DELETE THE FOLLOWING .ERROR STATEMENT. .ERROR RSX-11M-PLUS VERSION 2 DEVICE TABLES NOT TESTED ; ; MSCP DEVICE FIELDS ; .WORD 0 ;(U.UTMO) UNIT COMMAND TIMEOUT (MSCP) .WORD 0,0 ;(U.LHD ) UNIT OUTSTANDING I/O PKT LIST .WORD 0,0 ;(U.BPKT) UNIT BADBLOCK PKT WAITING LIST ; ; CHARACTERISTICS FROM "GET UNIT STATUS" ; .WORD 0 ;(U.MLUN) MULTI-UNIT CODE .WORD 0 ;(U.UNFL) UNIT FLAGS .WORD 0,0 ;(U.HSTI) HOST IDENTIFIER .WORD 0,0,0,0 ;(U.UNTI) UNIT IDENTIFIER .WORD 0,0 ;(U.MEDI) MEDIA IDENTIFIER .WORD 0 ;(U.SHUN) SHADOW UNIT .WORD 0 ;(U.SHST) SHADOW UNIT STATUS .WORD 0 ;(U.TRCK) UNIT TRACK SIZE .WORD 0 ;(U.GRP ) UNIT GROUP SIZE .WORD 0 ;(U.CYL ) UNIT CULINDER SIZE .WORD 0 ;(U.RCTS) UNIT RCT TABLE SIZE .BYTE 0 ;(U.RBNS) UNIT RBN'S PER TRACK .BYTE 0 ;(U.RCTC) UNIT RCT COPIES ; ; CHAR'S FROM "ONLINE" OR "SET UNIT CHARACTERISTICS" END PACKETS ; .WORD 0,0 ;(U.UNSZ) UNIT SIZE .WORD 0 ;(U.VSER) VOLUME SERIAL NUMBER .ENDC ; ; VD'S SPECIAL FIELDS - FLOATING OFFSETS ; .IIF EQ VDHI U.NXT == . - .VD0 ;COMPUTE AND GLOBALIZE U.NXT .WORD 0 ;(U.NXT ) EXTENSION BLOCK ADDRESS OR 0 .IIF EQ VDHI U.UFD == . - .VD0 ;COMPUTE AND GLOBALIZE U.UFD .WORD 0 ;(U.UFD ) SAVED DIRECTORY FOR FILE .ENDM UCBS .PAGE .SBTTL VDTBL - 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$VD $VDTBL=0 ; ; DCB DATA STRUCTURE. ; $VDDAT:: ;REF. LABEL. $VDDCB:: ;REF. LABEL. .WORD 0 ;(D.LNK ) LINK TO NEXT DCB .WORD .VD0 ;(D.UCB ) LINK TO FIRST UCB .ASCII /VD/ ;(D.NAM ) DEVICE NAME .BYTE 0,VDHI-1 ;(D.UNIT) LOWEST, HIGHEST UNIT NUMBER .WORD VDND-VDST ;(D.UCBL) LENGTH OF UCB .WORD $VDTBL ;(D.DSP ) ADDRESS OF DRIVER DISPATCH TABLE .IF DF R$$MPL .WORD 177077 ;(D.MSK ) LEGAL FUNCTION MASK 0-15 (M+) .IFF .WORD 177037 ;(D.MSK ) LEGAL FUNCTION MASK 0-15 (M) .IFTF .WORD 000030 ; CNTRL FUNCTION MASK 0-15 .IFT .WORD 000040 ; NO-OP FUNCTION MASK 0-15 (M+) .IFF .WORD 000000 ; NO-OP FUNCTION MASK 0-15 (M) .ENDC .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 ; VDHI = 0 .REPT V$$D11 VDST = . UCBS \VDHI VDHI = VDHI+1 VDND = . .ENDR .PAGE .SBTTL SCB FOR VD DRIVER ; ; SCB FOR VD DEVICE. ; .IF DF R$$MPL .WORD 0 ;(S.OWN ) CURRENT UCB ADDRESS $VD0:: .WORD 0,.-2 ;(S.LHD ) I/O QUEUE LISTHEAD .IF DF M$$PRO .WORD 0 ;(S.URM )UNIBUS RUN MASK - MULTIPROCESSORS .ENDC .WORD 0,0,0,0 ;(S.FRK ) FORK LINK WORD .WORD 0 ;(S.KS5 ) KISAR5 .WORD 0 ;(S.PKT ) I/O PACKET ADDRESS .BYTE 0,0 ;(S.ITM + S.CTM) CURR/INIT TIMEOUT .BYTE 0,0 ;(S.ST2 + S.STS) CONTROLLER STATUS .WORD 0 ;(S.ST3 ) STATUS EXTENSION .WORD 0 ;(S.KRB ) KRB ADDRESS .IFF .IF DF E$$DVC .BYTE 0 ;(S.RCNT) REGISTERS TO COPY (NONE) .BYTE 0 ;(S.ROFF) OFFSET TO FIRST REGISTER .WORD 0 ;(S.BMSV) EMB POINTER .WORD 0 ;(S.BMSK) I/O ACTIVE BITMASK .ENDC $VD0:: ;REF. LABEL .WORD 0,.-2 ;(S.LHD ) I/O QUEUE LISTHEAD .IF DF E$$DVC .BYTE SP.LOG ;(S.PRI ) DEVICE PRIORITY (ERROR LOGGING AVAIL.) .IFF .BYTE 0 ;(S.PRI ) DEVICE PRIORITY .ENDC .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 .ENDC $VDEND:: ;END OF DATA BASE .END