home *** CD-ROM | disk | FTP | other *** search
- TITLE 'FORM FILE STRING FROM FCB'
-
-
- PAGEWIDTH 110
-
- CSEG
-
- PUBLIC FCBFN,FFCBFN
-
- FNLEN EQU 8
- FEXTL EQU 3
-
- ;THIS SUBROUTINE FORMS A FILE NAME STRING FROM THE FIRST 12
- ;BYTES OF AN FCB. ITS MAIN USE IS TO ISSUE AN ERROR MESSAGE
- ;ABOUT A FILE PROPERLY FORMATTED. THE FILE STRING IS CONSTRUCTED
- ;IN THE USER BUFFER AND THE FIRST BYTE CONTAINS THE NUMBER OF
- ;BYTES IN THE FILE STRING.
-
- ;PROGRAMMED BY A. L. BENDER, M. D.
- ;NEUROLOGICAL SERVICES, INC.
- ;336 CENTER AVENUE
- ;WESTWOOD NJ 07675
- ;THIS IS IN PUBLIC DOMAIN AND MAY BE USED BY ALL BUT NEVER SOLD
- ;OR INCORPORATED IN SOFTWARE TO BE SOLD OR DISRIBUTED FOR PROFIT.
- ;
-
- ;
- ;CALL:
- ; BX-->ADDRESS OF USER BUFFER TO STORE FILE NAME
- ; DX-->ADDRESS OF USER'S FCB
- ; CALL FCBFN ;NEAR CALL
- ;OR CALL FFCBFN ;FAR CALL
- ;
- ; IN EITHER CASE DS: MUST BE SET TO DATA SEGMENT OF BOTH
- ; ON EXIT:
- ; THE STRING IS IN THE USER'S BUFFER.
- ; THE NUMBER OF BYTES IN THE STRING IS IN THE FIRST BYTE OF THE BUFFER
- ; BX->UNDISTURBED
- ; DX->UNDISTURBED
- ; ALL OTHER REGISTERS UNCHANGED
- ;
-
- FFCBFN: CALL FCBFN ;CALL NEAR PROCEDURE
- RETF ;RETURN FAR
-
- FCBFN: PUSH ES
- PUSH SI
- PUSH DI
- PUSH CX
- PUSH AX
- PUSHF
-
- MOV AX,DS
- MOV ES,AX ;SET ES: TO DS:
- MOV SI,0
- MOV DI,DX
- MOV BYTE PTR 0 [BX],0
-
- MOV AL,[DI]
- TEST AL,AL
- JZ FN
- ADD AL,'A'-1
- MOV BYTE PTR 1 [BX],AL
- MOV BYTE PTR 2 [BX],':'
- ADD SI,2
-
- FN: MOV CX,FNLEN
- FN1: MOV AL, 1 [DI] ;FILE NAME
- CMP AL,' ' ;CHECK FOR BLANK
- JZ FX ;FILE EXTENSION
- INC SI
- MOV BYTE PTR 0 [BX+SI],AL
- INC DI
- LOOP FN1
- FX: MOV CX,FEXTL
- INC SI
- MOV BYTE PTR 0 [BX+SI],'.'
- MOV DI,FNLEN ;GET TO EXTENSION
- ADD DI,DX ;POINT TO IT
-
- FX1: MOV AL, 1 [DI] ;FILE EXTENSION
- CMP AL,' '
- JZ DONE
- INC SI
- INC DI
- MOV BYTE PTR 0 [BX+SI],AL
- LOOP FX1
- DONE: MOV CX,SI
- MOV BYTE PTR 0 [BX],CL
-
- POPF
- POP AX
- POP CX
- POP DI
- POP SI
- POP ES
- RET
- END
-