mirror of https://github.com/nmlgc/ReC98.git
91 lines
1.4 KiB
NASM
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 ; }
|