mirror of https://github.com/nmlgc/ReC98.git
80 lines
1.4 KiB
NASM
80 lines
1.4 KiB
NASM
; master library - MS-DOS
|
|
;
|
|
; Description:
|
|
; ファイルポインタの移動
|
|
; ファイルポインタの読み取り
|
|
;
|
|
; Function/Procedures:
|
|
; void file_seek( long pos, int dir ) ;
|
|
; unsigned long file_tell( void ) ;
|
|
;
|
|
; Parameters:
|
|
; long pos 位置
|
|
; int dir 0: SEEK_SET ( ファイル先頭相対 )
|
|
; 1: SEEK_CUR ( 現在位置相対 )
|
|
; 2: SEEK_END ( ファイル末尾相対 )
|
|
;
|
|
; Returns:
|
|
; unsigned long file_tell(); ファイルの先頭からの距離(先頭=0)
|
|
;
|
|
; Binding Target:
|
|
; Microsoft-C / Turbo-C / Turbo Pascal
|
|
;
|
|
; Running Target:
|
|
; MS-DOS
|
|
;
|
|
; Requiring Resources:
|
|
; CPU: 8086
|
|
;
|
|
; Notes:
|
|
;
|
|
;
|
|
; Compiler/Assembler:
|
|
; TASM 3.0
|
|
; OPTASM 1.6
|
|
;
|
|
; Author:
|
|
; 恋塚昭彦
|
|
;
|
|
; Revision History:
|
|
; 92/11/30 Initial
|
|
; 95/ 4/ 1 [M0.22k] BUGFIX file_seek エラー時に位置の把握が狂った
|
|
|
|
func FILE_SEEK ; file_seek() {
|
|
call FILE_FLUSH
|
|
cmp BX,-1
|
|
je short @@ERROR
|
|
|
|
push BP
|
|
mov BP,SP
|
|
; 引数
|
|
@@pos = (RETSIZE+2)*2
|
|
@@dir = (RETSIZE+1)*2
|
|
|
|
mov AL,[BP+@@dir]
|
|
mov AH,42h
|
|
mov DX,[BP+@@pos]
|
|
mov CX,[BP+@@pos+2]
|
|
int 21h
|
|
pop BP
|
|
|
|
; errorがでたときのために位置を読みなおす
|
|
mov AX,4201h
|
|
mov DX,0
|
|
mov CX,DX
|
|
int 21h
|
|
mov file_Eof,0
|
|
mov WORD PTR file_BufferPos,AX
|
|
mov WORD PTR file_BufferPos+2,DX
|
|
@@ERROR:
|
|
ret 6
|
|
endfunc ; }
|
|
|
|
func FILE_TELL ; file_tell() {
|
|
mov AX,file_BufPtr
|
|
xor DX,DX
|
|
add AX,WORD PTR file_BufferPos
|
|
adc DX,WORD PTR file_BufferPos+2
|
|
ret
|
|
endfunc ; }
|