ReC98/libs/master.lib/bopenr.asm

91 lines
1.4 KiB
NASM

; master library - (pf.lib)
;
; Description:
; ファイルを開く
;
; Functions/Procedures:
; bf_t bopenr(const char *fname);
;
; Parameters:
; fname
;
; Returns:
; 0 エラー。pferrnoに種別が格納される。
; PFENOMEM メモリ不足
; PFENOTOPEN ファイルが開けない
; 0以外 成功。以後この値を b*ファイル関数群に渡すこと。
;
; Binding Target:
; Microsoft-C / Turbo-C / Turbo Pascal
;
; Running Target:
; MS-DOS
;
; Requiring Resources:
; CPU: 186
;
; Notes:
;
;
; Assembly Language Note:
;
;
; Compiler/Assembler:
; TASM 3.0
; OPTASM 1.6
;
; Author:
; iR
; 恋塚昭彦
;
; Revision History:
; BOPENR.ASM 1 729 94-06-05 13:01
; 95/ 1/10 Initial: bopenr.asm/master.lib 0.23
; 95/ 2/14 [M0.22k] mem_AllocID対応
func BOPENR ; bopenr() {
push BP
mov BP,SP
;arg fname:dataptr
fname = (RETSIZE+1)*2
mov mem_AllocID,MEMID_bfile
mov AX,bbufsiz
add AX,size BFILE
push AX
_call HMEM_ALLOCBYTE
jc short @@_nomem
mov ES,AX ; BFILE構造体のセグメント
if LDATA
push word ptr [BP+fname+2]
endif
push word ptr [BP+fname]
_call DOS_ROPEN
jc short @@_cantopen
mov ES:[b_hdl],AX
mov ES:[b_left],0
mov AX,bbufsiz
mov ES:[b_siz],AX
mov AX,ES
pop BP
ret (DATASIZE)*2
@@_nomem:
mov byte ptr pferrno,PFENOMEM
jmp short @@_error
@@_cantopen:
push ES
_call HMEM_FREE
mov byte ptr pferrno,PFENOTOPEN
@@_error:
clr AX
pop BP
ret (DATASIZE)*2
endfunc ; }