-

差分

移動先: 案内検索

LIBRARIES PUBLIC DOCUMENT MDOS2LIB

8 バイト除去, 2017年8月16日 (水) 01:26
編集の要約なし
;<nowiki>* .OBJ</nowiki> :MSX-DOS用に改良した関数の納められたオブジェクトファイルです。
;MSXIO .H :低水準入出力関数などを定義したヘッダファイルです。
;DOS2 .H :MSX-DOS2に依存するMSX-DOSファンクションコール代行関数のヘッダファイルです。DOSファンクションコール代行関数のヘッダファイルです。;MDOS2 .L :本ライブラリのソースファイルです。拙作ELIBR用のソースファイルになっています。本ライブラリのソースファイルです。拙作ELIBR用のソースファイルになっています。
;AREL .BAT :MDOS2.LからOBJファイルを生成するためのELIBR用バッチファイルです。
;CREL .BAT :同上
;REPLIB .BAT :ELIBR等により、生成された.OBJファイルをLIBC.LIBの中の.OBJファイルと差し替えます。OBJファイルと差し替えます。
;MDOS2LIB.DOC :このファイルです。
;CRT2 .AS :起動時にDOSのバージョンチェックを行なうスタートアップモジュールのソースファイルです。起動時にDOSのバージョンチェックを行なうスタートアップモジュールのソースファイルです。
;CRT2 .O :起動時にDOSのバージョンチェックを行なうスタートアップモジュール
;GETARGS2.C :引数のワイルドカード展開モジュールのソースファイルです。
;GETARGS2.O :引数のワイルドカード展開モジュールです。
;DOS .H :MSX-DOSファンクションコール代行関数のヘッダファイルです。
;DOS2 .L :MSX-DOSファンクションコール代行関数のソースファイルです。拙作ELIBR用のソースファイルになっています。DOSファンクションコール代行関数のソースファイルです。拙作ELIBR用のソースファイルになっています。
==インストール法+プログラムの組み方==
;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レジスタの内容を関数の値として返します。DEレジスタに引数deの内容を、HLレジスタに引数hlの内容を入れてno番目のBDOS機能を呼び出します。msx_bdosでは、BDOSから戻ってきた際のAレジスタの内容を、同じくmsx_bdoshでは、BDOSから戻ってきた際のHLレジスタの内容を関数の値として返します。:MSX-C V1.1のbdos,bdosh関数の移植版ですが、DOS2はBレジスタをシステムコールに多用したりするので、(最初の引数の上位8バイトをBレジスタに入れているけど)DOS2で有用かどうかは疑問です。
==MSX-DOSファンクションコール代行関数==
;unsigned _dos_setftime(int fd,unsigned date,unsigned time);
:ファイルハンドルfdで示されるファイルの日付をdateに、更新時刻をtimeの値に変更します。
以下の関数は、MSX-DOS2固有の機能を使っているので、MSX-DOS2専用となっています。DOS2専用となっています。
;int findfirst(unsigned char *path,unsigned attr,MSXFIB *fib);
;unsigned setfileattr(char *path, unsigned attr);
:MSX-DOS2システムコール0x50により、pathで示されるファイルの属性をattrに変更します。成功すると0を返し、失敗するとerrnoをセットして、MSXDOS2システムコール0x50により、pathで示されるファイルの属性をattrに変更します。成功すると0を返し、失敗するとerrnoをセットして、MSX-DOS2のエラーコードを返します。
==MSX-DOS2における変更点==
:exit,_exit関数はMSX-DOS2システムコール62Hを使ってエラー番号を伴う終了を行ないます。80Hを引数にして呼び出すことで、バッチファイルが止まります。
:この改良により、main関数の引数もMSX-DOS2システムコール62Hの引数になります。main関数は必ず値を返すようにしてください。main関数は正常終了時は0を、異常終了時はそれ以外の値を返すようにしてください。
:また、高/低水準入出力関数が失敗したときにエラーの種類をerrnoにセットします。errnoをMSX低水準入出力関数が失敗したときにエラーの種類をerrnoにセットします。errnoをMSX-DOS2のシステムコール66Hに渡すことでエラーの種類が説明できます。DOS2のシステムコール66Hに渡すことでエラーの種類が説明できます。
==CRT2.Oについて==
Sorry,this program needs MSX-DOS version 2.xx or later.
と表示するだけでプログラムを終了します。MSX-DOS2専用プログラムで使用してください。DOS2専用プログラムで使用してください。
==GETARGS2について==
持っているので、リダイレクトエミュレーション機能を削ったことです。
更新後のLIBC.LIBの前にリンクして使います。
 
例)
==互換性==
MSX-DOS1用ライブラリを使うときとソースレベルで互換性を取るには次の事に気を付ける必要があります。DOS1用ライブラリを使うときとソースレベルで互換性を取るには次の事に気を付ける必要があります。
;1.DOS2.Hで宣言されている関数、定数を使わない。
:MSX-DOS1とMSX-DOS2では、ファイルをアクセスする方法が異なっているので、同じ機能を持つ関数でも、関数名が異なっています。そこで、DOS.Hでは、DOS2の定義の有無を見て、同じ機能を持つMSX-DOSファンクションコール代行関数に対し、同じ名前を付けるようにしています。これにより、同一の関数名で、各バージョンのMSX-DOSの能力を生かした関数を利用することができます。
:更に、低水準入出力関数を使うときのヘッダーファイルに気を付けるとCP/M用ライブラリと互換性を取る事ができると思います。
何故、互換性についてわざわざ述べるかと言うと、それは一言、「必ずしもMSX-DOS2が必要な訳ではないのに、DOS2専用にするプログラムが
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が著作権を所有しています。

案内メニュー