-

「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コンパイラなの...」)
(タグ: モバイル編集モバイルウェブ編集)
 
 
17行目: 17行目:
 
;<nowiki>*      .OBJ</nowiki> :MSX-DOS用に改良した関数の納められたオブジェクトファイルです。
 
;<nowiki>*      .OBJ</nowiki> :MSX-DOS用に改良した関数の納められたオブジェクトファイルです。
 
;<nowiki> MSXIO  .H  </nowiki> :低水準入出力関数などを定義したヘッダファイルです。
 
;<nowiki> MSXIO  .H  </nowiki> :低水準入出力関数などを定義したヘッダファイルです。
;<nowiki> MDOS1  .L  </nowiki> :本ライブラリのソースファイルです。拙作ELIBR用のソースファイルに
+
;<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の中の.OBJフ
+
;REPLIB  .BAT :ELIBRにより、生成された.OBJファイルをLIBC.LIBの中の.OBJファイルと差し替えます。
ァイルと差し替えます。
 
 
;MDOS1LIB.DOC :このファイルです。
 
;MDOS1LIB.DOC :このファイルです。
;GETARGSX.C  :引数のワイルドカード展開+MSX-DOS1でのリダイレクトエミュレー
+
;GETARGSX.C  :引数のワイルドカード展開+MSX-DOS1でのリダイレクトエミュレーションモジュールのソースファイルです。
ションモジュールのソースファイルです。
+
;GETARGS .O  :引数のワイルドカード展開+MSX-DOS1でのリダイレクトエミュレーションモジュールです。
;GETARGS .O  :引数のワイルドカード展開+MSX-DOS1でのリダイレクトエミュレー
 
ションモジュールです。
 
 
;DOS    .H  :MSX-DOSファンクションコール代行関数のヘッダファイルです。
 
;DOS    .H  :MSX-DOSファンクションコール代行関数のヘッダファイルです。
 
;DOS1    .H  :MSX-DOSファンクションコール代行関数のヘッダファイルです。
 
;DOS1    .H  :MSX-DOSファンクションコール代行関数のヘッダファイルです。
;DOS1    .L  :MSX-DOSファンクションコール代行関数のソースファイルです。
+
;DOS1    .L  :MSX-DOSファンクションコール代行関数のソースファイルです。拙作ELIBR用のソースファイルになっています。
              拙作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番目の
+
:DEレジスタに引数deの内容を、HLレジスタに引数hlの内容を入れてno番目のBDOS機能を呼び出します。
BDOS機能を呼び出します。
 
 
:msx_bdosでは、BDOSから戻ってきた際のAレジスタの内容を、同じくmsx_bdoshでは、BDOSから戻ってきた際のHLレジスタの内容を関数の値として返します。
 
:msx_bdosでは、BDOSから戻ってきた際のAレジスタの内容を、同じくmsx_bdoshでは、BDOSから戻ってきた際のHLレジスタの内容を関数の値として返します。
;HLレジスタにも値を設定できるので、MSX-DOSで拡張された機能に対応することもできるでしょう。
+
: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が著作権を所有しています。