DRACC.MAC;6/au/-bf=[13,10]DRACC.MAC;1 -40,41,/;DLE001/ ; @.DRAC1 AND IT EXITS BY A JMP .DSPAT AFTER RESETTING THE STACK (SP=.STACK) ; THE PURPOSE OF THE ROUTINE IS TO SET UP .FCBAD WITH THE ADDRESS OF THE FCB -65,66,/;DLE001/ -73,79,/;DLE001/ CMPB #r.var,.HDBUF+H.UFAT+F.RTYP ; RECORD TYPE MUST BE variable BNE 10$ CMP #1000,.HDBUF+H.UFAT+F.RSIZ ; AND THE RECORD SIZE <= 512. blt 10$ ; BRANCH IF IT IS NOT bitb #sc.dir,.hdbuf+h.scha ; Is this a directory? bne 20$ ; If bit on then yes 10$: ERRX IE.BDR, 20$: CALL .SCFAC ; SEE IF ITS ALREADY ACCESSED -86,96,/;DLE001/ MOV R4,R2 ; Fetch offset pointer ADD #V.FCB,R2 ; Point to Volume concrol block FCB BR 40$ 30$: MOV (R2),R2 ; Point to next FCB 40$: MOV (R2),R0 ; Point to FCB BEQ 60$ ; BRANCH IF END OF FCB LIST (ERROR) BIT #FC.DIR,F.STAT(R0) ; Is this a directory FCB? BEQ 30$ ; Try next FCB MOV R0,.FCBAD ; Set this FCB as current FCB... TST (R0) ; ...UNLESS THE FCB IS ALREADY AT THE END -102,102,/;DLE001/ 50$: CALL .INFCB ; REINIT THE EXISTING FCB -106,107,/;DLE001/ 60$: DECB V.LRUC(R4) ; WAS 0, MAKE NEGATIVE, DISABLING LRU 70$: CALL .CRFCB ; CREATE AND INIT AN FCB -125,126,/;DLE001/ 80$: INCB V.LRUC(R4) 90$: MOV .UCBAD,.HDUCB ;BOC .HDBUF IS VALID -133,133,/;DLE001/ 100$: MOV R0,-(SP) -137,140,/;DLE001/ 110$: TST (SP)+ ; IF THIS ACCESS REQUIRE WRITE ACCESS BEQ 120$ ; CALL .WACCK ; SEE IF WRITE ACCESS WOULD BE ALLOWED 120$: MOV .FCBAD,R0 ; -145,152,/;DLE001/ .IF NDF N$$LRU mov r0,-(sp) ; Save r0 clr r0 bisb .hdbuf+h.idof,r0 asl r0 ; Form byte offset to ident area of head add #.hdbuf+i.fnam,r0 ; Point to name clr r1 ; Do not fetch period call $cat5 ; Convert directory name to rad50 mov (sp)+,r0 ; r2 = term character mov r1,f.drnm(r0) ; Set first word of file name -159,159,/;DLE001/ 130$: CMP F.SIZE+2(R0),R1 ; DIRECTORY EOF BEYOND LAST BLOCK? -163,163,/;DLE001/ 140$: TST R2 ; IF SAVED FFBY NON ZERO -167,168,/;DLE001/ 150$: BIS #FC.CEF,F.STAT(R0) ; NOTE HEADER SHOULD BE FIXED 160$: MOV R1,F.DREF(R0) ; SAVE DIRECTORY EOF BLOCK IN FCB -175,,/;DLE001/ /