.TITLE VMTAB - DATA STRUCTURES FOR VM: .IDENT /V01.00/ ; ; COPYRIGHT (C) 1979,1980 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE ; MADE AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH ; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE ; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN ; IN DEC. ; ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL ; EQUIPMENT CORPORATION. ; ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. ; ; ; MODULE DESCRIPTION ; ; VMDRV - VIRTUAL MAGTAPE DRIVER ; ; ; ; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING ; ; IDENT HISTORY: ; ; 1.00 15-JUL-80 ; J. A. SCHRIESHEIM ; .SBTTL SYSTEM DEFINITIONS ;+ ; ; UCB BIT DEFINITIONS ; ;- .MCALL UCBDF$ UCBDF$ ; DEFINE UCB OFFSETS AND FLAGS ; ; THIS CONSTANT IS USED TO DETERMINE WHETHER TO EXPAND THE UCB ; TABLE OR NOT. ( 0 = NO EXPANSION, OTHERWISE EXPAND IT) ; .IIF NDF, TB.EXP, TB.EXP=1 ; EXPANSION ; ; THIS CONSTANT DEFINES THE HIGHEST UNIT NUMBER HANDLED BY ; THE VM: DEVICE. IT IS USED TO GENERATE THE PROPER NUMBER ; OF UCB'S. IT MAY BE CHANGED BY EITHER EDITING THE SOURCE COPY ; OR BY DEFINING IT IN A PREFIX FILE. .IIF NDF, VM.UNT, VM.UNT=1 ; DEFAULT UNITS = 0-1 ; ; THE VM: DEVICE IS A LOADABLE DRIVER ; VM$OV = 0 ; LOADABLE DRIVER SYMBOL ; ; DEFINE START OF LOADABLE DRIVER DATA BASE ; $VMDAT:: ; ADDRESS OF START OF TABLES .SBTTL DCB DEFINITION ;+ ; ; VM: DEVICE CONTROL BLOCK ; ;- VMDCB: .WORD 0 ; D.LNK - LINK TO NEXT DCB .WORD VMUCB ; D.UCB - LINK TO FIRST UCB .ASCII /VM/ ; D.NAM - DEVICE NAME .BYTE 0 ; D.UNT - LOW UNIT NUMBER .BYTE VM.UNT ; - HIGH UNIT NUMBER .WORD VMND-VMST ; D.UCBL - LENGTH OF UCB .WORD 0 ; D.DSP - DRIVER DISPATCH TABLE .IF DF A$$NSI ; IF ANSI TAPE SUPPORT .WORD 171177 ; D.MSK - LEGAL FCTS (0-15.) .WORD 170 ; - CONTROL FUNCTIONS .WORD 10000 ; - NO-OP'ED FUNCTIONS .WORD 161000 ; - ACP FUNCTIONS .WORD 537 ; - LEGAL FCTS (16.-31.) .WORD 0 ; - CONTROL FUNCTIONS .WORD 0 ; - NO-OP'ED FUNCTIONS .WORD 537 ; - ACP FUNCTIONS .IFF ; DF A$$NSI .WORD 120177 ; D.MSK - LEGAL FCTS (0-15.) .WORD 170 ; - CONTROL FUNCTIONS .WORD 160000 ; - NO-OP'ED FUNCTIONS .WORD 0 ; - ACP FUNCTIONS .WORD 7 ; - LEGAL FCTS (16.-31.) .WORD 0 ; - CONTROL FUNCTIONS .WORD 1 ; - NO-OP'ED FUNCTIONS .WORD 6 ; - ACP FUNCTIONS .ENDC ; DF A$$NSI .WORD 0 ; D.PCB - PCB ADDRESS .SBTTL UCB DEFINITION ;+ ; ; VM: UNIT CONTROL BLOCKS ; ;- .IIF NE,TB.EXP, .LIST MEB NM.UNT = -1 .REPT VM.UNT+1 ; GENERATE MULTIPLE UCB'S .PAGE NM.UNT = NM.UNT+1 .IIF EQ,NM.UNT, VMST = . .WORD 0 ; U.AST - CANCEL I/O AST ADDRESS .WORD 0 ; U.USR - UCB ADDRESS OF REQUESTOR .WORD 0 ; U.VDV - TCB ADDRESS OF FRONT END .IF DF,M$$MUP .WORD 0 ; - MULTI-USER PROTECTION WORD .ENDC .IF EQ,NM.UNT VMUCB: .WORD VMDCB ; U.DCB - BACK POINTER TO DCB .IFF .WORD VMDCB ; U.DCB - BACK POINTER TO DCB .ENDC .WORD .-2 ; U.RED - REDIRECT POINTER .BYTE UC.ALG!UC.KIL!1 ; U.CTL - CONTROL FLAGS .BYTE US.MNT ; U.STS - DEVICE STATUS .BYTE NM.UNT ; U.UNIT - PHYSICAL UNIT NUMBER .BYTE US.OFL ; U.ST2 - DEVICE STATUS .IF DF A$$NSI .WORD DV.REC!DV.SQD!DV.F11!DV.MNT ; U.CW1 - CHARACTERISTIC WORD 1 .IFF ; DF A$$NSI .WORD DV.REC!DV.SQD ; U.CW1 - CHARACTERISTIC WORD 1 .ENDC ; DF A$$NSI .WORD 4 ; U.CW2 - CHARACTERISTIC WORD 2 .WORD 0 ; U.CW3 - CHARACTERISTIC WORD 3 .WORD 512. ; U.CW4 - CHARACTERISTIC WORD 4 .WORD VMSCB ; U.SCB - POINTER TO SCB .WORD 0 ; U.ATT - TCB OF ATTACHED TASK .WORD 0,0 ; U.BUF - BUFFER ADDRESS .WORD 0 ; U.CNT - BYTE COUNT .WORD 0,0,0,0,0,0 .IIF EQ,NM.UNT, VMND=. .ENDR .IIF NE,TB.EXP, .NLIST MEB .SBTTL SCB DEFINITION ;+ ; ; VM: STATUS CONTROL BLOCK ; ;- VMSCB: .WORD 0,.-2 ; S.LHD - I/O QUEUE LISTHEAD .IF DF M$$PRO .WORD 0 ; S.URM - UNIBUS RUN MASK .ENDC .BYTE 0 ; S.PRI - NO INTERRUPT PRIORITY .BYTE 0 ; S.VCT - NO INTERRUPT VECTOR .BYTE 0 ; S.CTM - NO CURRENT TIMEOUT .BYTE 0 ; S.ITM - NO TIMEOUTS USED .BYTE 0 ; S.CON - CONTROLLER ZERO .BYTE 0 ; S.STS - CONTROLLER STATUS .WORD 0 ; S.CSR - NO DEVICE CSR .WORD 0 ; S.PKT - ADDRESS OF CURRENT I/O PACKET .IF DF,L$$DRV&M$$MGE .WORD 0,0,0,0,0 ; S.FRK - LARGE FORK BLOCK .IFF .WORD 0,0,0,0 .ENDC .SBTTL END LABEL $VMEND:: ; END OF VM: LOADABLE DRIVER DATA BASE .END