-

「LIBRARIES PUBLIC DOCUMENT MDOS1LIB」の版間の差分

提供: HI-TECH C for CP/M Fan WIKI(JP)
移動先: 案内検索
(ページの作成:「HI-TECH C用MSX-DOSディスク入出力関数ライブラリ By Tatsuhiko Syoji 1996,1997 ==これは何か?== HI-TECH Cは元は、CP/M用のCコンパイラなの...」)
(タグ: モバイル編集モバイルウェブ編集)
(相違点なし)

2017年8月16日 (水) 01:09時点における版

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を不都合なく扱う よう、一部の高水準入出力関数にも手を加えています。

ファイルリスト

* .OBJ 
MSX-DOS用に改良した関数の納められたオブジェクトファイルです。
MSXIO .H  
低水準入出力関数などを定義したヘッダファイルです。
MDOS1 .L  
本ライブラリのソースファイルです。拙作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が著作権を所有しています。