.TITLE FXTAB - FX: DRIVER TABLE .IDENT /1.0/ ; edited GCE - M+ CONDITIONALS FOR FXDRVX... ALSO M V4 ; EDIT # 0007 21 Sept 1982 10:45:40 DB1:[21,7]FXTAB.MAC;13 ; PREVIOUS EDIT 21 Sept 1982 10:33:04 DB1:[21,7]FXTAB.MAC;12 ;**- ; Module name: FXTAB - FX: DATA BASE ; ; NOTE: ; DEFINE "R$MPV2" FOR RSX11M+ V2 (ELSE GET FOR V1) ; DEFINE "R$XMV4" FOR RSX11M V4 (ELSE GET V3.2) ; ; ; .MCALL DEVDF$ ;DEFINE DEVICE DATA STRUCTURE SYMBOLICS DEVDF$ .MACRO UCBS UNIT .IF DF,R$MPV2 .WORD 0,0,0 .ENDC .IF DF,R$XMV4 ;RSX11M V4 IF DEFINED .WORD 0,0,0,0 ;ACCOUNTING .WORD 0,0 ;U.CLI,U.LUIC WORDS. .ENDC .IF DF M$$MUP .WORD 0 ;(U.OWN ) OWNING TERMINAL UCB ADDRESS .ENDC .FX'UNIT:: ;REF. LABEL. .WORD .FXDCB ;(U.DCB ) POINTER TO DCB .WORD .-2 ;(U.RED ) REDIRECT UCB POINTER .BYTE UC.ALG!UC.PWF!1 ;(U.CTL ) CONTROL FLAGS .IF NDF,R$$MPL .BYTE US.MNT ;(U.STS ) STATUS FLAGS .IFF .BYTE US.MNT!US.VV ;(U.STS ) STATUS FLAGS .ENDC .BYTE UNIT ;(U.UNIT) UNIT NUMBER ; N.B. - LEAVE MARKED ONLINE FOR M+ .BYTE US.RED ;(U.STS2) STATUS FLAGS .IF DF,M$MDI ;NORMAL ODS-1 VIRTUAL DISK (MULTI UICS) .WORD DV.DIR!DV.F11!DV.MNT ;(U.CW1 ) DEVICE CHARACTERISTICS .IFF ;SINGLE DIRECTORY DEVICE (MFD ONLY... IGNORES UICS) .WORD DV.SDI!DV.DIR!DV.F11!DV.MNT ;(U.CW1 ) DEVICE CHARACTERISTICS .ENDC .WORD 0 ;(U.CW2 ) DEVICE CHARACTERISTICS .WORD 0 ;(U.CW3 ) "DISK" SIZE .WORD 1000 ;(U.CW4 ) BUFFER SIZE .WORD $FX0 ;(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 ;RSX11M+ V2 .WORD 0 ;(U.UCBX) UCB EXTENSION AREA ADDRESS .ENDC .WORD 0 ;(U.ACP ) ACP TCB ADDRESS .WORD 0 ;(U.VCB ) VCB ADDRESS .IF DF,R$$MPL .WORD 0,0,0,0,0 ;ADDITIONAL RSX11M+ LOCS .IF DF,R$MPV2 .WORD 0,0,0,0,0,0,0 .ENDC .ENDC .WORD 0 ;(U.NXT ) VIRTUAL CONTROL BLOCK .IIF DF, R$XMV4, .WORD 0,0 ;SAFETY BUFFER... .IIF DF,R$$MPL, .WORD 0,0 ;SAFETY .ENDM UCBS ; ; THE VIRTUAL fixed DISK STRUCTURE LOOKS LIKE A NORMAL DISK STRUCTURE WITH ; one UNITS AND ONE CONTROLLER. HOWEVER, ; THE SCB USES A NULL CSR AND VECTOR. ; THE FOLLOWING HAS CHANGED... (GCE) ; The driver never calls $fork, so the mapping relocation bias for the ; "disk" partition is kept in the fork block of the SCB. ; ; DCB DATA STRUCTURE. ; $FXDAT:: ;REF. LABEL. .FXDCB:: ;REF. LABEL. .WORD 0 ;(D.LNK ) LINK TO NEXT DCB .WORD .FX0 ;(D.UCB ) LINK TO FIRST UCB .ASCII /FX/ ;(D.NAM ) DEVICE NAME .BYTE 0,0 ;(D.UNIT) LOWEST, HIGHEST UNIT NUMBER .WORD FXND-FXST ;(D.UCBL) LENGTH OF UCB .WORD $FXTBL ;(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 .WORD 0 ;(D.PCB) PCB ADDRESS ; ; UCB DATA STRUCTURE ; FXST = . UCBS 0 ; CREATED THE UCB FXND = . ; ; SCB DATA STRUCTURE. ; $FX0:: ;REF. LABEL .IF NDF,R$$MPL ;FOR RSX11M .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 ;NOTE WE ADD THE NEXT WORD SO THAT FORK BLOCK IS NOT USED BY DRIVER ; FOR STORING PARTITION BASE. THIS ALLOWS DRIVER TO FORK AND ; NOT GET CLOBBERED. S.PRLB==.-$FX0 ;GLOBAL OFFSET TO PARTITION BASE FOR DRIVER .WORD 0 ;EXTRA WORD FOR PARTITION BASE (IN DATA SPACE) .IFF ;RSX11M+ .WORD 0,.-2 ;S.LHD I/O QUEUE LISTHEAD .WORD 0,0,0,0 ;FORK CELL .IF DF,L$$DRV .WORD 0 ;EXTRA FORK CELL WORD .ENDC .WORD 0 ;S.PKT .BYTE 0 ;S.CTM .BYTE 0 ;S.ITM .BYTE 0 ;S.STS .BYTE 0 ;S.ST3 .WORD 0 ;S.ST2 .WORD 0 ;S.KRB (NONE) .BYTE 0,0 ;S.ROFF,S.RCNT ERROR LOGGING .WORD 0 ;S.EMB ;NOTE WE ADD THE NEXT WORD SO THAT FORK BLOCK IS NOT USED BY DRIVER ; FOR STORING PARTITION BASE. THIS ALLOWS DRIVER TO FORK AND ; NOT GET CLOBBERED. S.PRLB==.-$FX0 ;GLOBAL OFFSET TO PARTITION BASE FOR DRIVER .WORD 0 ;EXTRA WORD FOR PARTITION BASE (IN DATA SPACE) .ENDC $FXEND:: ;END OF DATA BASE .END