.TITLE FILNAM .IDENT /UPPSAL/ .PSECT FILNAM ; ; AUTHOR B-E TAPPER ; ; REVISION HISTORY: ; IDENT DATE WHO REASON ; ; UPPSAL 85-08-22 B TAPPER URUPPF\RANDE ; UPPSAL 85-08-22 B TAPPER ;UIC IS REALLY F.DID ; ; CALLING SEQUENCE: CALL FILNAM(ILUN,FILNAM,FILLEN,IERR) ; ALT. CALLING SEQUENCE: CALL FILNAM(ILUN,FILNAM,FILLEN,IERR,UIC) ; ILUN= LUN WITH FILE ; FILNAM= 30 BYTE CHARACTER ASCII STRING ; FILLEN= LEN OF STRING ; IERR= 0 OK ; -1 DEVICE TABLE NOT FOUND ; UIC= 6 BYTE ASCII UIC (GGGMMM) IF PRESENT ; [141,306] IF NOT PRESENT ; ; FUNCTIONAL DESCRIPTION: ; GETS FILNAM OF OPEN FILE ON ILUN ; DVFDB =14 ; OFFSET TO FDB (FROM DSPOOL.MAC) ; NARG=0 ;PARAMETER BLOCK OFFSETS ILUN=2 FILE=4 FLEN=6 IERR=8. UIC=10. ; .MCALL NBOF$L,FDOF$L .MCALL CALL,RETURN ; NBOF$L FDOF$L ; .EVEN FILNAM:: ; ; FIND FDB OF OPEN FILE ON ILUN ; MOV @ILUN(R5),R2 ;GET LUN MOV #$OTSVA,R3 ;POINT AT OTS IMPURE AREA CALL $FCHNL ;GET FDB TABLE ADRESS ; ;ADRESS IS NOW IN R0 TST R0 ;FOUND ? BNE FIELDS ;YES JMP ERROR ;NO - ERROR ; ; FIND ASCII FILE NAME, USE R3 AS PRIMARY SOURCE REGISTER ; FIELDS: MOV R0,R3 ;USE R3 AS POINTER TO FDB MOV FILE(R5),R0 ;POINT TO ASCII FILE NAME ; ; FIND FNB ADRESS ; ADD #DVFDB,R3 ;POINT AT FDB (FROM DSPOOL) ADD #F.FNB,R3 ;POINT AT FNB MOV R3,R4 ;SAVE FNB ADRESS IN R4 ; ; TRANSFER DEVICE NAME ; ADD #N.DVNM,R3 ;POINT TO FNB DEVICE NAME MOV (R3)+,(R0)+ ;MOVE TO FILE NAME, POINT TO DEVICE UNIT ; ; TRANSFER AND CONVERT DEVICE UNIT NUMBER ; MOV (R3),R1 ;BINARY UNIT NUMBER CLR R2 ;LEADING ZERO SUPPRESSION, LEFT JUSTIFIED OUTPUT CALL $CBOMG ;CONVERT TO 6-DIGIT OCTAL MAGNITUDE MOVB KOLON,(R0)+ ;DELIMITER ; ; TRANSFER AND CONVERT FILE UIC ; ; MOV R4,R3 ;RESTORE F.FNB ; ADD #N.DID,R3 ;POINT TO FNB FILE NAME(WHICH IS OF NO USE) ; MOVB LEFT,(R0)+ ;DELIMITER ; CMPB NARG(R5),#5 ;ARE THERE 5 ARGUMENTS BNE UICDEF ; ; MOV UIC(R5),R1 ;GET UIC PARAMETER ADRESS MOVB (R1)+,(R0)+ MOVB (R1)+,(R0)+ MOVB (R1)+,(R0)+ MOVB KOMMA,(R0)+ ;KOMMA MOVB (R1)+,(R0)+ MOVB (R1)+,(R0)+ MOVB (R1)+,(R0)+ ; BR UICEND ; ; UICDEF: ; MOVB #'1,(R0)+ MOVB #'4,(R0)+ MOVB #'1,(R0)+ MOVB KOMMA,(R0)+ ;KOMMA MOVB #'3,(R0)+ MOVB #'0,(R0)+ MOVB #'6,(R0)+ ; ; THIS WAS WHAT COULD HAVE BEEN ; ; MOVB (R3)+,(R0)+ ;UIC ; MOVB (R3)+,(R0)+ ;UIC ; MOVB (R3)+,(R0)+ ;UIC ; MOVB KOMMA,(R0)+ ;KOMMA ; MOVB (R3)+,(R0)+ ;UIC ; MOVB (R3)+,(R0)+ ;UIC ; MOVB (R3)+,(R0)+ ;UIC ; UICEND: MOVB RIGHT,(R0)+ ;DELIMITER ; ; ; TRANSFER AND CONVERT FILE NAME ; MOV R4,R3 ;RESTORE F.FNB ADD #N.FNAM,R3 ;POINT TO FNB FILE NAME ; MOV (R3)+,R1 ;RADIX - 50 VALUE AND POINT TO NEXT CALL $C5TA ;CONVERT TO ASCII MOV (R3)+,R1 ;RADIX - 50 VALUE AND POINT TO NEXT BEQ NXT0 ;HOPPA \VER OM BLANKA CALL $C5TA ;CONVERT TO ASCII NXT0: MOV (R3)+,R1 ;RADIX - 50 VALUE AND POINT TO TYPE BEQ NXT1 ;HOPPA \VER OM BLANKA CALL $C5TA ;CONVERT TO ASCII ; ; TRANSFER AND CONVERT FILE TYPE ; NXT1: MOVB PKT,(R0)+ ;DELIMITER MOV (R3)+,R1 ;RADIX - 50 VALUE AND POINT TO VERSION CALL $C5TA ;CONVERT TO ASCII ; ; TRANSFER AND CONVERT FILE VERSION NUMBER ; MOVB SEMI,(R0)+ ;DELIMITER MOV (R3),R1 ;BINARY VERSION NUMBER CLR R2 ;LEADING ZERO SUPPRESSION, LEFT JUSTIFIED OUTPUT CALL $CBOMG ;CONVERT TO 6-DIGIT OCTAL MAGNITUDE ; ; TRANSFER FILENAME FIELD LENGTH ; SUB FILE(R5),R0 ;L[NGDEN MOV R0,@FLEN(R5) ; GIVE NAME LENGTH ; CLR R4 ; NO ERROR BR EXIT ; ERROR: CLR R4 DEC R4 ;IERR = -1 FDB NOT FOUND ; EXIT: ; MOV R4,@IERR(R5) ; GIVE RETURN CODE TO IERR RETURN ; PKT: .BYTE '. SEMI: .BYTE '; KOLON: .BYTE ': LEFT: .BYTE '[ KOMMA: .BYTE ', RIGHT: .BYTE '] ; .END