mirror of https://github.com/nmlgc/ReC98.git
88 lines
1.7 KiB
NASM
88 lines
1.7 KiB
NASM
|
; master library - MS-DOS
|
||
|
;
|
||
|
; Description:
|
||
|
; ファイルの追加オープン
|
||
|
;
|
||
|
; Function/Procedures:
|
||
|
; int file_append( const char * filename ) ;
|
||
|
; function file_append( filename:string ) : integer ;
|
||
|
;
|
||
|
; Parameters:
|
||
|
; char * filename ファイル名
|
||
|
;
|
||
|
; Returns:
|
||
|
; 1 = 成功
|
||
|
; 0 = 失敗
|
||
|
;
|
||
|
; Binding Target:
|
||
|
; Microsoft-C / Turbo-C / Turbo Pascal
|
||
|
;
|
||
|
; Running Target:
|
||
|
; MS-DOS
|
||
|
;
|
||
|
; Requiring Resources:
|
||
|
; CPU: 8086
|
||
|
;
|
||
|
; Notes:
|
||
|
; ファイルが存在しなければ作成します。
|
||
|
; また、バッファリングされていなければ読み書きが可能です。
|
||
|
; バッファリングしている場合、読み込みと書き込みの動作の間には
|
||
|
; file_flushまたはfile_seekを実行する必要があります。
|
||
|
;
|
||
|
; Compiler/Assembler:
|
||
|
; TASM 3.0
|
||
|
; OPTASM 1.6
|
||
|
;
|
||
|
; Author:
|
||
|
; 恋塚昭彦
|
||
|
;
|
||
|
; Revision History:
|
||
|
; 92/12/14 Initial
|
||
|
; 93/ 5/15 [M0.16] pascal対応(dos_axdx使用)
|
||
|
|
||
|
func FILE_APPEND
|
||
|
push BP
|
||
|
mov BP,SP
|
||
|
|
||
|
; 引数
|
||
|
@@filename = (RETSIZE+1)*2
|
||
|
|
||
|
mov AX,0 ; FAILURE
|
||
|
mov BX,file_Handle
|
||
|
cmp BX,-1 ; house keeping
|
||
|
jne short @@EXIT
|
||
|
|
||
|
mov AX,3d02h ; ファイルへの読み書きオープン
|
||
|
push AX
|
||
|
if LDATA
|
||
|
push word ptr [BP+@@filename+2]
|
||
|
endif
|
||
|
push word ptr [BP+@@filename]
|
||
|
_call DOS_AXDX
|
||
|
or AX,DX ; エラーなら -1
|
||
|
mov file_Handle,AX
|
||
|
mov CX,AX
|
||
|
xor AX,AX
|
||
|
mov file_InReadBuf,AX
|
||
|
mov file_BufPtr,AX
|
||
|
mov file_Eof,AX
|
||
|
mov file_ErrorStat,AX
|
||
|
mov WORD PTR file_BufferPos,AX
|
||
|
mov WORD PTR file_BufferPos+2,AX
|
||
|
inc DX
|
||
|
jz short @@EXIT
|
||
|
|
||
|
; 末尾へ移動
|
||
|
mov BX,CX
|
||
|
xor CX,CX
|
||
|
mov DX,CX
|
||
|
mov AX,4202h ; seek from end
|
||
|
int 21h
|
||
|
mov WORD PTR file_BufferPos,AX
|
||
|
mov WORD PTR file_BufferPos+2,DX
|
||
|
mov AX,1
|
||
|
|
||
|
@@EXIT: pop BP
|
||
|
ret DATASIZE*2
|
||
|
endfunc
|