.TITLE MF06 SET UP FDB CONTROL BITS FOR FILE/BLOCK OPENING .IDENT /MF06.B/ ; ; (A) COPY CONTENTS OF DEFAULT FND IN FDB ; (B) THIS ROUTINE ALWAYS USES THE F$DFNB DEFAULT FILENAME BLOCK ; ; FILEFUN ;DESCRIBE FILE CONTROL FLAGS ; ; F$SETUP:: ;THIS PROCEDURE SETS UP THE FDB ; ; ; ENTRY CONDITIONS ; F$DFNB SET UP ; F$TYPE SET UP ; F$LUN SET UP ; ; EXIT CONDITIONS ; STATUS FLAG ONLY ; ; ; SAVE R4,R3,R2 ;PROTECT REGISTERS ; ; CALL F$SWITCH ;ENSURE WE ARE POINTING TO THE CORRECT FDB ; MOV F$FDB,R4 ;HOLD THE ADDRESS OF THE FDB ; ; CLR N.FID+F.FNB+0(R4) ;CLEAR OUT FILE ID WORDS ; CLR N.FID+F.FNB+2(R4) ;CLEAR OUT FILE ID WORDS ; CLR N.FID+F.FNB+4(R4) ;CLEAR OUT FILE ID WORDS ; MOV #F$DFNB,R2 ;HOLD ADDRESS OF DEFAULT FILENAME BLOCK MOV R2,F.DFNB(R4) ;HOLD ADDRESS OF THE DEFAULT FILENAME BLOCK MOV #17,R3 ;COUNT OF NUMBER OF WORDS TO COPY 5$: MOV @R2,F.FNB(R4) ;COPY OVER ONE WORD OF DATA CMP (R2)+,(R4)+ ;INCREMENT R2+2 AND R4+2 SOB R3,5$ ;COPY OVER DEFAULT FILENAME BLOCK ; MOV F$FDB,R4 ;HOLD BASE ADDRESS IF FDB MOVB F$LUN,F.LUN(R4) ;HOLD FILE LUN NUMBER ; BIT #.BLOCK,F$TYPE ;IS THIS A BLOCK TRANSFER OPEN REQUIRED ? BNE 62$ ;J IF BLOCK OPEN (NOT AVAILABLE YET) ; ; RECORD PROCESSING SECTION ; ; RECORD TYPE MOVB #R.VAR,F.RTYP(R4) ;ASSUME VARABLE LENGTH RECORDS BIT #.FIX,F$TYPE ;IS FILE TYPE FIXED LENGTH ? BEQ 10$ ;J IF NOT FIXED LENGTH MOVB #R.FIX,F.RTYP(R4) ;INDICATE FIXED LENGTH RECORDS MOV F$SIZE,F.RSIZ(R4) ;HOLD FIXED LENGTH RECORDS SIZE ; ; RECORD ATTRIBUTES ; 10$: MOVB #FD.CR,F.RATT(R4) ;ASSUME CR TYPE DEVICE (USUALLY IT IS) ; ; RECORD ACCESS ; CLRB F.RACC(R4) ;I THINK THIS HAS TO BE CLEARED MAYBE ; ; FILE ACCESS SECTION ; ADD #F.FACC,R4 ;HOLD ADDRESS OF FILE ACCESS BYTE CLRB @R4 ;REMOVE ALL FILE CONTROL FLAGS BIT #.READ,F$TYPE ;IS THE DEFAULT READ REQUEST BIT SET BEQ 15$ ;J IF THIS IS NOT A READ REQUEST ; BISB #FA.RD!FA.SHR,@R4 ;READ SHARED REQUEST BISB #FO.RD,@R4 ;READ BR 60$ ;EXIT ; 15$: BIT #.WRITE,F$TYPE ;IS FILE TO BE OPENED FOR WRITE BEQ 17$ ;J IF NOT A WRITE REQUEST ; BISB #FA.WRT!FA.CRE,@R4 ;WRITE CREATE OPTION FLAGS SET BISB #FO.WRT,@R4 ;WRITE CREATE OPTION FLAGS SET BR 60$ ;EXIT ; 17$: BIT #.EXTEND,F$TYPE ;IS THIS FILE TO BE EXTENDED SOMEHOW ? BEQ 62$ ;IF THIS OPTION NOT SELECTED THEN ERROR ; BISB #FA.EXT,@R4 ;SET EXTEND FLAG BISB #FO.UPD,@R4 ;SET UPDATE/EXTEND BR 60$ ;EXIT ; ; ; SUCCESS EXIT ; 60$: UNSAVE R4,R3,R2 ;RESTORE REGISTERS EXITSUCCESS ; ; ; ERROR EXIT ; 62$: UNSAVE R4,R3,R2 ;RESTORE REGISTERS EXITERROR ; ; ; .END ; ;