$FDUCB - FIND UCB MACRO M1110 15-MAR-78 16:33 PAGE 3 1 .TITLE $FDUCB - FIND UCB 2 .IDENT /02.1/ 3 ; 4 ; COPYRIGHT (C) 1976, 1977 5 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. 6 ; 7 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A 8 ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE 9 ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR 10 ; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE 11 ; MADE AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH 12 ; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE 13 ; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN 14 ; IN DEC. 15 ; 16 ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT 17 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL 18 ; EQUIPMENT CORPORATION. 19 ; 20 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF 21 ; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. 22 ; 23 24 ; VERSION: 02 25 ; BY: H. LEV 26 ; DATE: 11/15/73 27 ; MODIFIED: 12/23/74 ADD LOGICAL DEVICE CONTROL BLOCKS SEARCH 28 ; 3/10/75 SWITCH TO SYSTEM STATE FOR DEVICE LIST SEARCH 29 ; EB051 5/24/77 ADD $FDLGG TO ALLOW SPECIFICATION OF 30 ; DEVICE UNIT NUMBER IN BINARY (SEE $FILBN) 31 ; PL015 1-DEC-77 ADD SUPPORT FOR 3 DIGIT UNIT NUMBERS 32 ; 33 ; $FDUCB - FIND UCB MACRO M1110 15-MAR-78 16:33 PAGE 4 35 ;+ 36 ; *** - $FDUCB - FIND UCB FOR PHYSICAL DEVICE 37 ; *** - $FDLOG - FIND UCB ADDRESS OR LOGICAL DEVICE 38 ; *** - $FDLGG - FIND UCB ADDRESS OR LOGICAL DEVICE ; EB051 39 ; 40 ; THIS SUBROUTINE PARSES THE DEVICE SPECIFIER FROM THE 41 ; COMMAND STRING AND SEARCHES FOR THE DEVICE IN THE DEVICE TABLES 42 ; $FDLOG STARTS SEARCHING THE LOGICAL DEVICE CONTROL BLOCKS 43 ; AND IF IT DOESN'T FIND THE DEVICE IT THE GOES TO THE 44 ; UNIT CONTROL BLOCKS. $FDUCB SEARCHS THE UNIT CONTROL BLOCKS ONLY./ 45 ; 46 ; INPUT (AT $FDLOG AND $FDUCB): ; EB051 47 ; R0 - BUFFER ADDRESS ;**-1 48 ; R3 - PARAMETER AREA ADDRESS - 2 WORDS 49 ; INPUT (AT $FDLGG): ; EB051 50 ; R1 - BINARY DEVICE UNIT NUMBER ; EB051 51 ; R2 - ASCII COLON (:) ; EB051 52 ; R3 - ADDRESS OF PARAMETER AREA (TWO WORDS) ; EB051 53 ; (R3) - ASCII DEVICE MNEMONIC (TWO CHARACTERS) ; EB051 54 ; 55 ; OUTPUT: 56 ; CARRY SET - UCB NOT FOUND OR SYNTAX ERROR 57 ; R3 = 0 - SYNTAX ERROR 58 ; R3 <>0 - COULDN'T FIND LCB OR UCB 59 ; CARRY CLEAR - UCB FOUND 60 ; R0 - UPDATED 61 ; R1 - ADDRESS OF UCB 62 ; R2 - ADDRESS OF DCB 63 ; R3 - PARM AREA ADDRESS 64 ; (R3) - DEVICE MNEMONIC IN ASCII 65 ; 2(R3) - UNIT NUMBER IN BINARY 66 ; 67 ;- $FDUCB - FIND UCB MACRO M1110 15-MAR-78 16:33 PAGE 5 69 ; MACRO CALLS 70 ; 71 .MCALL DCBDF$,LCBDF$,TCBDF$,UCBDF$ 72 000000 DCBDF$ ;DEFINE DCB OFFSETS 73 000000 LCBDF$ ;DEFINE LCB OFFSETS 74 000000 TCBDF$ ;DEFINE TCB OFFSETS 75 000000 UCBDF$ ;DEFINE UCB OFFSETS $FDUCB - FIND UCB MACRO M1110 15-MAR-78 16:33 PAGE 6 77 .ENABL LSB 78 ; EB051 79 000000 012746 000062' $FDLGG:: MOV #4$,-(SP) ; SET ADDRESS FOR LOGICAL CONTROL BLOCK SCAN ; EB051 80 000004 000412 BR 240$ ; ; EB051 81 000006 012746 000062' $FDLOG:: MOV #4$,-(SP) ; SET ADDRESS FOR LOGICAL CONTROL BLOCK SCAN 82 000012 000402 BR 2$ ; 83 000014 012746 000154' $FDUCB:: MOV #9$,-(SP) ; SET ADDRESS FOR PHYSICAL DEVICE SCAN 84 000020 112013 2$: MOVB (R0)+,(R3) ; GET UNIT 85 000022 112063 000001 MOVB (R0)+,1(R3) ; MNEMONIC 86 000026 CALL $COTB ; GET UNIT NUMBER 87 000032 240$: ; ; EB051 88 000032 020127 000400 CMP R1,#256. ; IS IT VALID? 89 000036 103006 BHIS 3$ ; NO, ERROR 90 000040 010163 000002 MOV R1,2(R3) ; AND STORE IT 91 000044 120227 000072 CMPB R2,#': ; COLON MUST FOLLOW IT 92 000050 001001 BNE 3$ ; ERROR, IT DOESN'T 93 000052 000136 JMP @(SP)+ ; START SCAN AT RIGHT SPOT 94 000054 005726 3$: TST (SP)+ ; POP OFF ROUTINE ADDRESS 95 000056 005003 CLR R3 ; SET SYNTAX ERROR INDICATOR 96 000060 000504 BR 55$ ; ERROR 97 ; 98 ; SCAN LCBS FOR DEVICE 99 ; 100 000062 4$: CALL $SWSTK,60$ ; SWITCH TO SYSTEM STATE 101 000066 016704 000000G MOV $TKTCB,R4 ; GET TASK TCB ADDRESS 102 000072 016702 000000G MOV $LOGHD,R2 ; GET ADDRESS OF START OF LOGICAL UNITS 103 000076 001430 6$: BEQ 10$ ; END OF LOGICAL UNITS 104 000100 021362 000002 CMP (R3),L.NAM(R2) ; NAMES THE SAME? 105 000104 001013 BNE 7$ ; NO 106 000106 126362 000002 000004 CMPB 2(R3),L.UNIT(R2) ; YES, UNITS THE SAME 107 000114 001007 BNE 7$ ; NO 108 000116 105762 000005 TSTB L.TYPE(R2) ; GLOBAL DEFINITION? 109 000122 001407 BEQ 8$ ; YES 110 000124 026462 000026 000006 CMP T.UCB(R4),L.UCB(R2) ; NO, SAME TI? 111 000132 001403 BEQ 8$ ; YES 112 000134 016202 000000 7$: MOV L.LNK(R2),R2 ; GET ADDRESS OF NEXT LCB 113 000140 000756 BR 6$ ; LOOP 114 000142 016201 000010 8$: MOV L.ASG(R2),R1 ; GET UCB ADDRESS 115 000146 016102 000000 MOV U.DCB(R1),R2 ; GET DCB ADDRESS 116 000152 000436 BR 45$ ; 117 ; SCAN UCBS FOR DEVICE 118 ; 119 000154 9$: CALL $SWSTK,60$ ; SWITCH TO SYSTEM STATE 120 000160 016702 000000G 10$: MOV $DEVHD,R2 ; GET ADDRESS OF DEVICE TABLE 121 000164 021362 000004 12$: CMP (R3),D.NAM(R2) ; IS THIS THE DEVICE ? 122 000170 001404 BEQ 20$ ; YES 123 000172 016202 000000 15$: MOV D.LNK(R2),R2 ; NO, POINT TO NEXT DCB 124 000176 001372 BNE 12$ ; GOT ONE 125 000200 001430 BEQ 50$ ; END OF DEVICES, ERROR 126 000202 016305 000002 20$: MOV 2(R3),R5 ; GET UNIT NUMBER 127 000206 120562 000006 CMPB R5,D.UNIT(R2) ; IS UNIT ON THIS DCB? 128 000212 103767 BLO 15$ ; NO 129 000214 120562 000007 CMPB R5,D.UNIT+1(R2) ; MAYBE 130 000220 101364 BHI 15$ ; NO! 131 000222 005004 CLR R4 ; GET FIRST UNIT NUMBER ; PL015 132 000224 156204 000006 BISB D.UNIT(R2),R4 ; ; PL015 133 000230 016201 000002 MOV D.UCB(R2),R1 ; GET FIRST UCB ADDRESS ;**-1 $FDUCB - FIND UCB MACRO M1110 15-MAR-78 16:33 PAGE 6-1 134 000234 160405 SUB R4,R5 ; COMPUTE RELATIVE UNIT NUMBER 135 000236 001404 BEQ 45$ ; FOUND IT 136 000240 066201 000010 30$: ADD D.UCBL(R2),R1 ; NO, POINT TO NEXT UCB 137 000244 005305 DEC R5 ; FOUND IT YET? 138 000246 001374 BNE 30$ ; NO, LOOP 139 000250 010166 000004 45$: MOV R1,4(SP) ; SET USER R1 140 000254 010266 000006 MOV R2,6(SP) ; SET USER R2 141 000260 RETURN ; RETURN TO USER STATE 142 000262 017703 000000G 50$: MOV @$HEADR,R3 ; GET USER SP 143 000266 105263 000006 INCB 6(R3) ; SET CARRY BIT IN USER PS 144 ; WORKS BECAUSE CMPB R2,#': CLEARS C ; EB051 145 000272 000261 55$: SEC ; SET CARRY 146 000274 60$: RETURN ; 147 .DSABL LSB 148 000001 .END $FDUCB - FIND UCB MACRO M1110 15-MAR-78 16:33 PAGE 6-2 SYMBOL TABLE A$$CHK= 000000 LD$DK = 000000 TS.EXE= 100000 T2.STP= 000020 U.BUF 000024 A$$CPS= 000000 LD$DL = 000000 TS.MSG= 020000 T2.TIO= 001000 U.CBF = 000032 C$$CKP= 000000 LD$DM = 000000 TS.NRP= 010000 T2.WFR= 000001 U.CNT 000030 C$$ORE= 001000 LD$DP = 000000 TS.OUT= 000400 T3.ACP= 100000 U.CTL 000004 DV.CCL= 000002 LD$DR = 000000 TS.RDN= 040000 T3.CAL= 000100 U.CW1 000010 DV.COM= 020000 LD$DT = 000000 TS.RUN= 004000 T3.CLI= 001000 U.CW2 000012 DV.DIR= 000010 LD$DX = 000000 T$$A11= 000001 T3.MCR= 004000 U.CW3 000014 DV.F11= 040000 LD$LP = 000000 T$$C11= 000001 T3.NET= 000020 U.CW4 000016 DV.ISP= 002000 LD$MM = 000000 T$$J16= 000001 T3.NSD= 000200 U.DCB 000000 DV.MNT= 100000 LD$MT = 000000 T$$KMG= 000000 T3.PMD= 040000 U.LUIC 177774 DV.MXD= 000100 LD$PP = 000000 T$$MIN= 000000 T3.PRV= 010000 U.OWN 177776 DV.OSP= 004000 LD$PR = 000000 T$$M11= 000001 T3.REM= 020000 U.RED 000002 DV.PSE= 010000 L$$ASG= 000000 T.ACTL 000052 T3.ROV= 000040 U.SCB 000020 DV.REC= 000001 L$$DRV= 000000 T.ASTL 000016 T3.RST= 000400 U.STS 000005 DV.SDI= 000020 L$$P11= 000001 T.ATT 000054 T3.SLV= 002000 U.ST2 000007 DV.SQD= 000040 L.ASG 000010 T.CPCB 000004 UC.ALG= 000200 U.UIC = 000052 DV.SWL= 001000 L.LGTH= 000012 T.DPRI 000040 UC.ATT= 000010 U.UNIT 000006 DV.TTY= 000004 L.LNK 000000 T.EFLG 000022 UC.KIL= 000004 U.VCB = 000034 DV.UMD= 000200 L.NAM 000002 T.IOC 000003 UC.LGH= 000003 U2.AT.= 000020 D$$ISK= 000000 L.TYPE 000005 T.LBN 000041 UC.NPR= 000100 U2.CRT= 002000 D$$L11= 000001 L.UCB 000006 T.LDV 000044 UC.PWF= 000020 U2.DH1= 100000 D.DSP 000012 L.UNIT 000004 T.LNK 000000 UC.QUE= 000040 U2.DJ1= 040000 D.LNK 000000 M$$CRB= 000124 T.MXSZ 000050 US.ABO= 000001 U2.DZ1= 000100 D.MSK 000014 M$$CRX= 000000 T.NAM 000006 US.BSP= 000002 U2.ESC= 001000 D.NAM 000004 M$$FCS= 000000 T.OFF 000060 US.BSY= 000200 U2.HLD= 000040 D.PCB 000034 M$$MGE= 000000 T.PCB 000046 US.CRW= 000004 U2.LOG= 000400 D.UCB 000002 M$$OVR= 000000 T.PRI 000002 US.DSB= 000010 U2.LWC= 000001 D.UCBL 000010 N$$LDV= 000001 T.RCVL 000012 US.ECH= 000002 U2.L3S= 000004 D.UNIT 000006 P$$P11= 000001 T.RRFL 000064 US.FOR= 000040 U2.L8S= 010000 D.VCAN= 000002 P$$P45= 000000 T.SRCT 000063 US.FRK= 000002 U2.NEC= 004000 D.VINI= 000000 P$$R11= 000001 T.STAT 000032 US.LAB= 000004 U2.PRV= 000010 D.VOUT= 000004 R$$JPO= 000000 T.ST2 000034 US.MDE= 000002 U2.RMT= 020000 D.VPWF= 000006 R$$JP1= 000001 T.ST3 000036 US.MDM= 000020 U2.R04= 100000 F$$LVL= 000001 R$$K11= 000001 T.TCBL 000030 US.MNT= 000100 U2.SLV= 000200 G$$TPP= 000000 R$$L11= 000001 T.UCB 000026 US.OFL= 000001 U2.VT5= 000002 G$$TTK= 000000 R$$MOF= 000000 T2.ABO= 000100 US.OUT= 000001 U2.7CH= 010000 H$$RTZ= 000074 R$$M11= 000001 T2.AST= 100000 US.PUB= 000004 V$$CTR= 000400 I$$RAR= 000000 R$$P11= 000001 T2.BFX= 004000 US.PWF= 000010 $COTB = ****** GX I$$RDN= 000000 R$$X11= 000001 T2.CAF= 000400 US.RED= 000002 $DEVHD= ****** GX K$$CNT= 177546 R$$11M= 000000 T2.CHK= 020000 US.SHR= 000001 $FDLGG 000000RG K$$CSR= 177546 R$$6OF= 000000 T2.CKD= 010000 US.SPU= 000002 $FDLOG 000006RG K$$IEN= 000115 R$$611= 000001 T2.DST= 040000 US.UMD= 000010 $FDUCB 000014RG K$$LDC= 000001 S$$YSZ= 001400 T2.FXD= 002000 US.WCK= 000010 $HEADR= ****** GX K$$TPS= 000074 TS.BLK= 170700 T2.HLT= 000200 U.ACP = 000032 $LOGHD= ****** GX LD$CT = 000000 TS.CKP= 000200 T2.SPN= 000004 U.ATT 000022 $TKTCB= ****** GX LD$DB = 000000 TS.CKR= 000100 . ABS. 177776 000 000276 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 3829 WORDS ( 15 PAGES) DYNAMIC MEMORY: 4780 WORDS ( 18 PAGES) ELAPSED TIME: 00:00:08 FNDUCB,[202,34]FNDUCB/CR/-SP=[1,1]EXEMC/ML,[200,200]RSXMC/PA:1,[202,1]FNDUCB FNDUCB CREATED BY MACRO ON 15-MAR-78 AT 16:33 PAGE 1 SYMBOL CROSS REFERENCE CREF V01 SYMBOL VALUE REFERENCES D.LNK 000000 6-123 D.NAM 000004 6-121 D.UCB 000002 6-133 D.UCBL 000010 6-136 D.UNIT 000006 6-127 6-129 6-132 L.ASG 000010 6-114 L.LNK 000000 6-112 L.NAM 000002 6-104 L.TYPE 000005 6-108 L.UCB 000006 6-110 L.UNIT 000004 6-106 T.UCB 000026 6-110 U.DCB 000000 6-115 $COTB = ****** GX 6-86 $DEVHD = ****** GX 6-120 $FDLGG 000000 RG #6-79 $FDLOG 000006 RG #6-81 $FDUCB 000014 RG #6-83 $HEADR = ****** GX 6-142 $LOGHD = ****** GX 6-102 $TKTCB = ****** GX 6-101 FNDUCB CREATED BY MACRO ON 15-MAR-78 AT 16:33 PAGE 2 MACRO CROSS REFERENCE CREF V01 MACRO NAME REFERENCES CALL #6-86 #6-100 #6-119 DCBDF$ #5-71 5-72 LCBDF$ #5-71 5-73 RETURN #6-141 #6-146 TCBDF$ #5-71 #5-74 UCBDF$ #5-71 5-75