-

差分

移動先: 案内検索

LIBRARIES PUBLIC DOCUMENT MDOS1LIB

6,268 バイト追加, 2017年8月16日 (水) 01:09
ページの作成:「HI-TECH C用MSX-DOSディスク入出力関数ライブラリ By Tatsuhiko Syoji 1996,1997 ==これは何か?== HI-TECH Cは元は、CP/M用のCコンパイラなの...」
HI-TECH C用MSX-DOSディスク入出力関数ライブラリ
By Tatsuhiko Syoji 1996,1997

==これは何か?==
HI-TECH Cは元は、CP/M用のCコンパイラなので、ディスク入出力は、CP/Mの機
能を使って行います。しかし、これでは、ファイルサイズが128バイト単位に
なってしまうので、特に、バイナリファイルを扱うときに支障が生じます。
我々が使っているOSはMSX-DOS(1/2)なので、MSX-DOSの機能を使って、ディス
ク入出力を行なうことで、この問題を解決することができます。
そこで、本ライブラリでは、低水準入出力関数をHI-TECH Cに元々付いてきた
ものから、自作のMSX-DOS1の機能を使うものに交換して、1バイト単位のディス
クアクセスをするようにします。
また、それに伴って、高水準入出力のテキストモードでEOFを不都合なく扱う
よう、一部の高水準入出力関数にも手を加えています。

==ファイルリスト==
;<nowiki>* .OBJ</nowiki> :MSX-DOS用に改良した関数の納められたオブジェクトファイルです。
;<nowiki> MSXIO .H </nowiki> :低水準入出力関数などを定義したヘッダファイルです。
;<nowiki> MDOS1 .L </nowiki> :本ライブラリのソースファイルです。拙作ELIBR用のソースファイルに
なっています。
;AREL .BAT :MDOS.LからOBJファイルを生成するためのELIBR用バッチファイルです。
;CREL .BAT :同上
;REPLIB .BAT :ELIBRにより、生成された.OBJファイルをLIBC.LIBの中の.OBJフ
ァイルと差し替えます。
;MDOS1LIB.DOC :このファイルです。
;GETARGSX.C :引数のワイルドカード展開+MSX-DOS1でのリダイレクトエミュレー
ションモジュールのソースファイルです。
;GETARGS .O :引数のワイルドカード展開+MSX-DOS1でのリダイレクトエミュレー
ションモジュールです。
;DOS .H :MSX-DOSファンクションコール代行関数のヘッダファイルです。
;DOS1 .H :MSX-DOSファンクションコール代行関数のヘッダファイルです。
;DOS1 .L :MSX-DOSファンクションコール代行関数のソースファイルです。
拙作ELIBR用のソースファイルになっています。

==インストール法+プログラムの組み方==
まず、HI-TECH CのLIBC.LIBのオリジナルのバックアップを取ります。
次に、HI-TECH CのLIBR.COMとLIBC.LIB、本パッケージの*.OBJとREPLIB.BATを
同じディスクに入れ、REPLIB.BATを実行します。
後は、プログラムを組む際に、ソースファイルを書く際は、低水準入出力関数
を使う場合は、本セットのMSXIO.Hをインクルードし、高水準入出力関数を使う
場合は、従来通りのヘッダファイルをインクルードします。
そして、リンクの時に、更新されたLIBC.LIBをリンクすることで、皆さんのHI
-TECH Cで組んだプログラムで、MSX-DOS1の機能を利用した関数が利用できます。

==機能拡張==
本セットをインストールすると、新たに、2つの関数が利用できます。

;unsigned char msx_bdos(int no,unsigned short de,unsigned short hl);
;unsigned short msx_bdosh(int no,unsigned short de,unsigned short hl);

:DEレジスタに引数deの内容を、HLレジスタに引数hlの内容を入れてno番目の
BDOS機能を呼び出します。
:msx_bdosでは、BDOSから戻ってきた際のAレジスタの内容を、同じくmsx_bdoshでは、BDOSから戻ってきた際のHLレジスタの内容を関数の値として返します。
;HLレジスタにも値を設定できるので、MSX-DOSで拡張された機能に対応することもできるでしょう。

==MSX-DOSファンクションコール代行関数==
これらの関数を使う場合は、使用するプログラムで、DOS.Hをインクルードし、
LIBC.LIBの前にLIBD1.LIBをリンクすることで、以下の関数が利用できます。

;unsigned _dos_getver(void);
:MSX-DOSのバージョン番号を上位バイトに主バージョン番号、、下位バイトに2桁のバージョン番号がBCD値で返ります。また、MSX-DOS1では、0100Hを、MSX-DOSでない場合は0000Hを返します。

;unsigned _dos_getftime(int fd,unsigned *date,unsigned *time);
:ファイルハンドルfdで示されるファイルの日付を*dateに、更新時刻を*timeにセットします。

;unsigned _dos_setftime(int fd,unsigned date,unsigned time);
:ファイルハンドルfdで示されるファイルの日付をdateに、更新時刻をtimeの値に変更します。

==GETARGSXについて=
GETARGSXはHI-TECH C付属の引数のワイルドカード展開+MSX-DOS1でのリダイレ
クトエミュレーションモジュール、GETARGSの改造版です。改良点としては、msx
_bdos関数を利用することにしたことと、ファイル名の文字コードを全ビット有
効にした事です。
更新後のLIBC.LIBの前にリンクして使います。

例)

LINK -Z -Ptext=0,data,bss -C100H -OSAMPLE.COM CRT.O SAMPLE.O GETARGSX.O LIBC.LIB

==制限事項==
MSX-DOS1にはファイルの属性はありませんが、MSX-DOS2用ライブラリとの兼合
いからchmod関数は常に0(成功)を返します。1つのソースからMSX-DOS1用とMSX-
DOS2用のプログラムを作るのに役立ててください。

==著作権他==
本ライブラリのライセンスはHI-TECH C for CP/M Version 3.09のヘッダ・
ソースファイルを改変しているためHI-TECH C for CP/M Version 3.09のライセ
ンスに従います。

オリジナルのZ80READ.MEより引用

The HI-TECH Z80 CP/M C compiler V3.09 is provided free of charge for any
use, private or commercial, strictly as-is. No warranty or product
support is offered or implied.

You may use this software for whatever you like, providing you acknowledge
that the copyright to this software remains with HI-TECH Software.

追加した関数については作者であるTatsuが著作権を所有しています。

案内メニュー