FNDIR - FIND DIRECTORY MACRO M1110 10-APR-78 13:30 PAGE 3 1 .TITLE FNDIR - FIND DIRECTORY 2 .IDENT /01.00/ 3 .LIST MEB 4 000000 .PSECT FNDIR 5 ; 6 ; AUTHOR: H. L. COLEMAN 7 ; MILLIKEN AND COMPANY 8 ; P. O. BOX 1926 9 ; MAIL STOP M-103 10 ; SPARTANBURG, S. C. 29304 11 ; (803)573-2556 12 ; 13 ; VERSION: 01.00 14 ; 15 ; DATE: 02/01/78 16 ; 17 ; MODIFICATIONS: 18 ; 19 ; FUNCTION: FIND THE DIRECTORY FILE AND SET THE FILE ID IN THE 20 ; FILE NAME BLOCK. 21 ; 22 ; INPUT: 23 ; 24 ; R0 = UIC OF THE DESIRED DIRECTORY 25 ; R1 = A(FILE NAME BLOCK) 26 ; LUN 2 ASSIGNED TO DEVICE 27 ; 28 ; OUTPUT: 29 ; 30 ; IF CC - NO ERROR DETECTED 31 ; FILE NAME BLOCK CONTAINS DIRECTORY FILE ID (N.DID) 32 ; RO = UIC 33 ; R1 = A(FILE NAME BLOCK) 34 ; 35 ; IF CS - ERROR DETECTED 36 ; 37 ; R1 = ERROR CODE FROM IOSB 38 ; 39 .MCALL QIOW$S,CKDSW$S FNDIR - FIND DIRECTORY MACRO M1110 10-APR-78 13:30 PAGE 4 41 ; CONSTANTS AND WORK AREAS 42 ; 43 000000 000000 000000 IOSB: .WORD 0,0 ;IOSB FOR FIND FNDIR - FIND DIRECTORY MACRO M1110 10-APR-78 13:30 PAGE 5 45 000004 010046 $FNDIR::MOV R0,-(SP) ;SAVE REGISTERS 46 000006 010146 MOV R1,-(SP) 47 000010 010246 MOV R2,-(SP) 48 000012 005021 CLR (R1)+ ;CLEAR FILE ID 49 000014 005021 CLR (R1)+ 50 000016 005021 CLR (R1)+ 51 000020 004767 000152 CALL UICR50 ;CONVERT UIC TO RAD50 52 000024 011602 MOV (SP),R2 ;R2 = LUN 53 000026 005021 CLR (R1)+ ;CLEAR LAST WORD OF NAME 54 000030 012721 015172 MOV #^RDIR,(R1)+ ;INSERT TYPE 55 000034 005021 CLR (R1)+ ;CLEAR VERSION 56 000036 005021 CLR (R1)+ ;CLEAR STATUS 57 000040 005021 CLR (R1)+ ;CLEAR .FIND CONTEXT 58 000042 012721 000004 MOV #4,(R1)+ ;MFD FILE NUMBER 59 000046 012721 000004 MOV #4,(R1)+ ;MDFD FILE SEQUENCE 60 000052 005011 CLR (R1) ;UIC [0,0] 61 000054 016601 000002 MOV 2(SP),R1 ;R1 = A(FILE NAME BLOCK) 62 000060 1000$: QIOW$S #IO.FNA,R2,#24.,,#IOSB,,<,,,,,R1> ;FIND DIRECTORY 000060 010146 MOV R1,-(SP) 000062 005046 CLR -(SP) 000064 005046 CLR -(SP) 000066 005046 CLR -(SP) 000070 005046 CLR -(SP) 000072 005046 CLR -(SP) 000074 005046 CLR -(SP) 000076 012746 000000' MOV #IOSB,-(SP) 000102 005046 CLR -(SP) 000104 112716 000030 MOVB #24.,(SP) 000110 010246 MOV R2,-(SP) 000112 012746 000000G MOV #IO.FNA,-(SP) 000116 012746 MOV (PC)+,-(SP) 000120 003 014 .BYTE 3,12. 000122 104377 EMT ^O<377> 63 000124 CKDSW$S 1000$,1200$ ;CHECK DSW STATUS 000124 004567 000000G JSR R5,$CKDSW 000130 000060' .WORD 1000$ 000132 000174' .WORD 1200$ 64 000134 012161 000022 MOV (R1)+,18.(R1) ;COPY DIRECTORY ID 65 000140 012161 000022 MOV (R1)+,18.(R1) 66 000144 012161 000022 MOV (R1)+,18.(R1) 67 000150 105767 177624 TSTB IOSB ;WAS FIND SUCESSFULL 68 000154 100003 BPL 1100$ ;IF PL, YES 69 000156 016716 177616 MOV IOSB,(SP) ;SET IOSB STATUS IN RETURN R1 70 000162 000261 SEC ;INDICATE ERROR 71 000164 012601 1100$: MOV (SP)+,R1 ;RESTORE REGISTERS 72 000166 012602 MOV (SP)+,R2 73 000170 012600 MOV (SP)+,R0 74 000172 000207 RETURN ;RETURN TO CALLER 75 000174 000000 1200$: HALT ;ABORT THE TASK FNDIR - FIND DIRECTORY MACRO M1110 10-APR-78 13:30 PAGE 6 77 ; UICR50 78 ; 79 ; FUNCTION: SUBROUTINE TO CONVERT UIC TO RAD50. 80 ; 81 ; INPUT: 82 ; 83 ; R0 = UIC - .BYTE GROUP,OWNER 84 ; R1 = A(TWO WORD BUFFER) 85 ; 86 ; OUTPUT: 87 ; 88 ; R0 = DESTROYED 89 ; R1 = A(NEXT WORD AFTER BUFFER) 90 ; R2 = DESTROYED 91 ; BUFFER CONTAINS SIX RAD50 CHARACTERS 92 ; 93 000176 004767 000012 UICR50: CALL 1000$ ;CONVERT GROUP 94 000202 005721 TST (R1)+ ;POINT TO SECOND WORD 95 000204 004767 000004 CALL 1000$ ;CONVERT OWNER 96 000210 005721 TST (R1)+ ;POINT TO NEXT WORD 97 000212 000207 RETURN ;RETURN TO CALLER 98 000214 005011 1000$: CLR (R1) ;CLEAR RESULT 99 000216 005002 CLR R2 ;CLEAR WORK REGISTER 100 000220 004767 000026 CALL 1200$ ;CONVERT HIGH DIGIT 101 000224 004717 CALL (PC) ;CONVERT 2ND DIGIT, RETURN TO 3RD 102 000226 011146 MOV (R1),-(SP) ;PUT RESULT ON STACK 103 000230 006311 ASL (R1) ;TIMES 2 104 000232 006311 ASL (R1) ;TIMES 4 105 000234 062611 ADD (SP)+,(R1) ;TIMES 5 106 000236 006311 ASL (R1) ;TIMES 10 107 000240 006311 ASL (R1) ;TIMES 20 108 000242 006311 ASL (R1) ;TIMES 40 109 000244 005002 CLR R2 ;CLEAR WORK REGISTER 110 000246 006300 ASL R0 ;PUT NEXT DIGIT IN WORK REGISTER 111 000250 006102 ROL R2 112 000252 006300 1200$: ASL R0 113 000254 006102 ROL R2 114 000256 006300 ASL R0 115 000260 006102 ROL R2 ;R2 = NEXT DIGIT 116 000262 062702 000036 ADD #36,R2 ;PLUS RAD50 ZERO 117 000266 060211 ADD R2,(R1) ;ADD TO RESULT 118 000270 000207 RETURN ;RETURN 119 000001 .END FNDIR - FIND DIRECTORY MACRO M1110 10-APR-78 13:30 PAGE 6-1 SYMBOL TABLE IOSB 000000R 002 UICR50 000176R 002 $CKDSW= ****** GX $FNDIR 000004RG 002 $$$ARG= 000002 IO.FNA= ****** GX . ABS. 000000 000 000000 001 FNDIR 000272 002 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 1062 WORDS ( 5 PAGES) DYNAMIC MEMORY: 2668 WORDS ( 10 PAGES) ELAPSED TIME: 00:00:08 FNDIR,[202,34]FNDIR/CR/SP=[1,1]EXEMC/ML,[202,1]MAC/ML,FNDIR FNDIR CREATED BY MACRO ON 10-APR-78 AT 13:30 PAGE 1 SYMBOL CROSS REFERENCE CREF V01 SYMBOL VALUE REFERENCES IOSB 000000 R #4-43 5-62 5-67 5-69 IO.FNA = ****** GX 5-62 UICR50 000176 R 5-51 #6-93 $CKDSW = ****** GX 5-63 $FNDIR 000004 RG #5-45 $$$ARG = 000002 #5-62 5-62 #5-62 5-62 #5-62 5-62 #5-62 5-62 #5-62 5-62 #5-62 5-62 #5-62 5-62 #5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 #5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 #5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 5-62 FNDIR CREATED BY MACRO ON 10-APR-78 AT 13:30 PAGE 2 MACRO CROSS REFERENCE CREF V01 MACRO NAME REFERENCES CKDSW$ #3-39 5-63 DIR$ #5-62 5-62 MOV$ #5-62 #5-62 #5-62 #5-62 #5-62 #5-62 #5-62 #5-62 #5-62 #5-62 #5-62 #5-62 #5-62 MVB$ #5-62 5-62 QDPB$S #5-62 5-62 QIOW$S #3-39 #5-62 RVP$ #5-62 #5-62 #5-62 #5-62