;****************************************************************************** ; ファイル管理マクロ ;****************************************************************************** ifndef _FILEIO_INC_ _FILEIO_INC_ equ 0 ;****************************************************************************** ; 標準ハンドル ;****************************************************************************** stdin equ 0 ; 標準入力 stdout equ 1 ; 標準出力 stderr equ 2 ; 標準エラー出力 stdaux equ 3 ; 補助装置 stdprn equ 4 ; プリンタ ;****************************************************************************** ; ファイル属性 ; これは attribute の指定で使われます ; 通常は FILE_ATTRIB_NORMAL を指定してね ;****************************************************************************** FILE_ATTRIB_NORMAL equ 00h FILE_ATTRIB_READONLY equ 01h ; 読み込み専用 FILE_ATTRIB_HIDE equ 02h ; 隠しファイル FILE_ATTRIB_SYSTEM equ 04h ; システムファイル ;FILE_ATTRIB_VOLUME equ 08h ; ボリュームラベル FILE_ATTRIB_DIR equ 10h ; ディレクトリ FILE_ATTRIB_ARCHIVE equ 20h ; アーカイブ ;****************************************************************************** ; ハンドルを使ってファイルの作成 ;****************************************************************************** fc_create_handle macro path, attribute mov dx, offset path mov cx, attribute mov ah, 3ch int 21h endm ;****************************************************************************** ; ハンドルを使ってファイルをオープン ;****************************************************************************** ; ファイルアクセスコントロール FILE_OPEN_READ equ 00h ; 読み出し FILE_OPEN_WRITE equ 01h ; 書き込み FILE_OPEN_READWRITE equ 02h ; 読み出しと書き込み FILE_SHARE_COMPATIBLE equ 00h FILE_SHARE_RWUNABLED equ 10h FILE_SHARE_RUNABLED equ 20h FILE_SHARE_WUNABLED equ 30h FILE_SHARE_UNABLED equ 40h fc_open_handle macro path, access mov dx, offset path mov al, access mov ah, 3dh int 21h endm ;****************************************************************************** ; ハンドルを使うファイルのクローズ ;****************************************************************************** fc_close_handle macro handle mov bx, handle mov ah, 3eh int 21h endm ;****************************************************************************** ; ファイルかデバイスの読み出し ;****************************************************************************** fc_read_handle macro handle, buffer, bytes mov bx, handle mov dx, offset buffer mov cx, bytes mov ah, 3fh int 21h endm ;****************************************************************************** ; ファイルかデバイスへの書き込み ;****************************************************************************** fc_write_handle macro handle, buffer, bytes mov bx, handle mov dx, offset buffer mov cx, bytes mov ah, 40h int 21h endm ;****************************************************************************** ; ファイルの削除 ;****************************************************************************** fc_delete_file macro path mov dx, offset path mov ah, 41h int 21h endm ;****************************************************************************** ; ファイルポインタの移動 ;****************************************************************************** ; ファイルポインタの移動 method FILE_MOVEP_HEAD equ 00H FILE_MOVEP_CURRENT equ 01h FILE_MOVEP_TAIL equ 02h fc_move_fpointer macro handle, high, low, method mov bx, handle mov cx, high mov dx, low mov al, method mov ah, 42h int 21h endm ;****************************************************************************** ; 新しいファイルの作成 ;****************************************************************************** fc_create_file macro path, attribute mov cx, attribute mov dx, offset path mov ah, 5bh int 21h endm endif ; _FILEIO_INC_