-
「LIBRARIES PUBLIC DOCUMENT MDOS1LIB」の版間の差分
(ページの作成:「HI-TECH C用MSX-DOSディスク入出力関数ライブラリ By Tatsuhiko Syoji 1996,1997 ==これは何か?== HI-TECH Cは元は、CP/M用のCコンパイラなの...」) (タグ: モバイル編集、モバイルウェブ編集) |
細 |
||
17行目: | 17行目: | ||
;<nowiki>* .OBJ</nowiki> :MSX-DOS用に改良した関数の納められたオブジェクトファイルです。 | ;<nowiki>* .OBJ</nowiki> :MSX-DOS用に改良した関数の納められたオブジェクトファイルです。 | ||
;<nowiki> MSXIO .H </nowiki> :低水準入出力関数などを定義したヘッダファイルです。 | ;<nowiki> MSXIO .H </nowiki> :低水準入出力関数などを定義したヘッダファイルです。 | ||
− | ;<nowiki> MDOS1 .L </nowiki> : | + | ;<nowiki> MDOS1 .L </nowiki> :本ライブラリのソースファイルです。拙作ELIBR用のソースファイルになっています。 |
− | |||
;AREL .BAT :MDOS.LからOBJファイルを生成するためのELIBR用バッチファイルです。 | ;AREL .BAT :MDOS.LからOBJファイルを生成するためのELIBR用バッチファイルです。 | ||
;CREL .BAT :同上 | ;CREL .BAT :同上 | ||
− | ;REPLIB .BAT :ELIBRにより、生成された.OBJファイルをLIBC.LIBの中の. | + | ;REPLIB .BAT :ELIBRにより、生成された.OBJファイルをLIBC.LIBの中の.OBJファイルと差し替えます。 |
− | |||
;MDOS1LIB.DOC :このファイルです。 | ;MDOS1LIB.DOC :このファイルです。 | ||
− | ;GETARGSX.C :引数のワイルドカード展開+MSX- | + | ;GETARGSX.C :引数のワイルドカード展開+MSX-DOS1でのリダイレクトエミュレーションモジュールのソースファイルです。 |
− | + | ;GETARGS .O :引数のワイルドカード展開+MSX-DOS1でのリダイレクトエミュレーションモジュールです。 | |
− | ;GETARGS .O :引数のワイルドカード展開+MSX- | ||
− | |||
;DOS .H :MSX-DOSファンクションコール代行関数のヘッダファイルです。 | ;DOS .H :MSX-DOSファンクションコール代行関数のヘッダファイルです。 | ||
;DOS1 .H :MSX-DOSファンクションコール代行関数のヘッダファイルです。 | ;DOS1 .H :MSX-DOSファンクションコール代行関数のヘッダファイルです。 | ||
− | ;DOS1 .L :MSX- | + | ;DOS1 .L :MSX-DOSファンクションコール代行関数のソースファイルです。拙作ELIBR用のソースファイルになっています。 |
− | |||
==インストール法+プログラムの組み方== | ==インストール法+プログラムの組み方== | ||
49行目: | 44行目: | ||
;unsigned short msx_bdosh(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レジスタの内容を関数の値として返します。 | :msx_bdosでは、BDOSから戻ってきた際のAレジスタの内容を、同じくmsx_bdoshでは、BDOSから戻ってきた際のHLレジスタの内容を関数の値として返します。 | ||
− | + | :HLレジスタにも値を設定できるので、MSX-DOSで拡張された機能に対応することもできるでしょう。 | |
==MSX-DOSファンクションコール代行関数== | ==MSX-DOSファンクションコール代行関数== | ||
67行目: | 61行目: | ||
:ファイルハンドルfdで示されるファイルの日付をdateに、更新時刻をtimeの値に変更します。 | :ファイルハンドルfdで示されるファイルの日付をdateに、更新時刻をtimeの値に変更します。 | ||
− | ==GETARGSXについて= | + | ==GETARGSXについて== |
GETARGSXはHI-TECH C付属の引数のワイルドカード展開+MSX-DOS1でのリダイレ | GETARGSXはHI-TECH C付属の引数のワイルドカード展開+MSX-DOS1でのリダイレ | ||
クトエミュレーションモジュール、GETARGSの改造版です。改良点としては、msx | クトエミュレーションモジュール、GETARGSの改造版です。改良点としては、msx | ||
92行目: | 86行目: | ||
The HI-TECH Z80 CP/M C compiler V3.09 is provided free of charge for any | 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 | use, private or commercial, strictly as-is. No warranty or product | ||
− | support is offered or implied. | + | support is offered or implied. |
You may use this software for whatever you like, providing you acknowledge | You may use this software for whatever you like, providing you acknowledge |
2017年8月16日 (水) 01:29時点における最新版
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が著作権を所有しています。