Files
Work/uudecode/CFILE.ASM
2024-08-07 09:16:27 -04:00

112 lines
5.6 KiB
NASM

;*************************************************************************************
; MODULE: CFILE.ASM DATE: APRIL 27,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT LAT MODEL
; FUNCTION : BUFFERED FILE FUNCTIONS
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
INCLUDE string.inc
INCLUDE openfile.inc
.DATA
crlf DB 0Dh,0Ah,00h
.CODE
_FileOpen proc near ; int FileOpen(char *pathFileName,FileInfo *pFileInfo,int access,int share,int open,int attributes)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index
CREATEFILE [ebp+08h],[ebp+10h],[ebp+14h],[ebp+18h],[ebp+1Ch] ; call create file
mov esi,[ebp+0Ch] ; move FileInfo ptr to esi
mov [FileInfo ptr [esi]].FileInfo@@mhFileHandle,eax ; store handle
pop esi ; restore source index
pop ebp ; restore previous frame
retn ; return near to caller
_FileOpen endp
_FileClose proc near ; int CloseFile(FileInfo *pFileInfo);
push ebp ; save prior frame
mov ebp,esp ; create new stack frame
push esi ; save source index register
mov esi,[ebp+08h]
cmp [FileInfo ptr [esi]].FileInfo@@mhFileHandle,INVALID_HANDLE ; check for valid handle
je @@FileCloseEnd ; handle is not valid
CLOSEHANDLE [FileInfo ptr[esi]].FileInfo@@mhFileHandle ; close handle
mov [FileInfo ptr[esi]].FileInfo@@mhFileHandle,INVALID_HANDLE ; set handle to invalid state
@@FileCloseEnd: ; end sync address
pop esi ; restore source index
pop ebp ; restore prior stack frame
retn ; return near to caller
_FileClose endp
_FileRead proc near ; FileRead(FileInfo *pFileInfo,BYTE *ptrByte);
push ebp ; save stack frame
mov ebp,esp ; create new stack frame
push esi ; save source index register
push edi ; save destination index register
mov esi,[ebp+08h] ; move pFileInfo to esi register
mov edi,[ebp+0Ch] ; move ptrByte to destination index register
FREAD esi,edi ; perform read from disk, or cache
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore stack frame
retn ; return near to caller
_FileRead endp
_FileWrite proc near
push ebp ; save previous stack frame
mov ebp,esp ; create new stack frame
pop ebp ; restore previous stack frame
retn ; return near to caller
_FileWrite endp
_FileReadLine proc near ; int FileReadLine(FileInfo *pFileInfo,char *strLine)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,[ebp+08h] ; move (pFileInfo *) to source index register
mov edi,[ebp+0Ch] ; move strLine to destination index register
FREADLINE esi,edi ; perform getLine
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore previous stack frame
retn ; return near to caller
_FileReadLine endp
_FileWriteLine proc near ; int FileWrite(FileInfo *pFileInfo,char *strLine,int length);
push ebp ; save previous stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,[ebp+08h] ; move pFileInfo to source index register
mov edi,[ebp+0Ch] ; move strLine to destination index register
FWRITELINE esi,edi ; write string to file
lea edi,crlf ; get crlf address to edi register
FWRITELINE esi,edi ; write string to file
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore previous stack frame
retn ; return near to caller
_FileWriteLine endp
_FileFlush proc near
push ebp ; save previous stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
mov esi,[ebp+08h] ; move pFileInfo to source index register
FFLUSH esi ; flush cache
pop esi ; restore source index register
pop ebp ; restore previous stack frame
retn ; return near to caller
_FileFlush endp
public _FileOpen
public _FileClose
public _FileRead
public _FileWrite
public _FileReadLine
public _FileWriteLine
public _FileFlush
END