home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oakland CPM Archive
/
oakcpm.iso
/
sigm
/
vol157
/
fcbfn.a86
< prev
next >
Wrap
Text File
|
1985-03-14
|
2KB
|
99 lines
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