-
「LIBRARIES PUBLIC DOCUMENT MDOSLIB」の版間の差分
(ページの作成:「HI-TECH C用MSX-DOS汎用関数ライブラリ By Tatsuhiko Syoji 1996-1998 ==これは何か?== 本ライブラリはHI-TECH CでMSX-DOS特有の機能を利用する...」) (タグ: モバイル編集、モバイルウェブ編集) |
細 |
||
37行目: | 37行目: | ||
;struct DPB *_dos_getDPB(unsigned char drive) | ;struct DPB *_dos_getDPB(unsigned char drive) | ||
:drive(0:カレント 1:A)で示されるドライブのDPBのアドレスを返します。この | :drive(0:カレント 1:A)で示されるドライブのDPBのアドレスを返します。この | ||
− | 関数を使って得られたアドレスのDPBには構造体DPBを使ってアクセスすることができます。 | + | :関数を使って得られたアドレスのDPBには構造体DPBを使ってアクセスすることができます。 |
:構造体DPBの内容は次のとおりです。 | :構造体DPBの内容は次のとおりです。 | ||
63行目: | 63行目: | ||
;<nowiki>unsigned sec;</nowiki> | ;<nowiki>unsigned sec;</nowiki> | ||
;<nowiki>int len;</nowiki> | ;<nowiki>int len;</nowiki> | ||
− | :drv (0:Aドライブ)で示されるドライブのディスクのsec | + | :drv (0:Aドライブ)で示されるドライブのディスクのsec 番セクターからlen個のセクターをメモリのbuf 番地に読み込みます。 |
− | |||
;void _dos_abswrite(buf,drv,sec,len) | ;void _dos_abswrite(buf,drv,sec,len) | ||
73行目: | 72行目: | ||
:メモリのbuf 番地からのセクターlen 個分の内容をdrv (0:Aドライブ)で示されるドライブのディスクのsec番セクターからlen 個のセクターに書き込みます。 | :メモリのbuf 番地からのセクターlen 個分の内容をdrv (0:Aドライブ)で示されるドライブのディスクのsec番セクターからlen 個のセクターに書き込みます。 | ||
− | ;<nowiki>unsigned char _PHYDIO_read(char *buf,unsigned char drive,unsigned sector, | + | ;<nowiki>unsigned char _PHYDIO_read(char *buf,unsigned char drive,unsigned sector,unsigned char len,unsigned char mediaid);</nowiki> |
− | unsigned char len,unsigned char mediaid);</nowiki> | ||
:PHYDIOを利用してdrive(0:Aドライブ)で示されるドライブのディスクのsector番セクターからセクターlen 個分の内容をbuf 番地からのメモリに読みこみます。 | :PHYDIOを利用してdrive(0:Aドライブ)で示されるドライブのディスクのsector番セクターからセクターlen 個分の内容をbuf 番地からのメモリに読みこみます。 | ||
− | :mediaidには、操作するディスクの種類に応じて、2DD, | + | :mediaidには、操作するディスクの種類に応じて、2DD,9セクタフォーマットのディスクでは0xf9、2DD,8セクタフォーマットのディスクでは0xfb、1DD,9セクタフォーマットのディスクでは0xf8、1DD,8セクタフォーマットのディスクでは0xfaをそれぞれ指定します。 |
− | |||
:MSX-DOS2では使用不可です。 | :MSX-DOS2では使用不可です。 | ||
− | ;<nowiki>unsigned char _PHYDIO_write(char *buf,unsigned char drive,unsigned | + | ;<nowiki>unsigned char _PHYDIO_write(char *buf,unsigned char drive,unsigned sector,unsigned char len,unsigned char mediaid);</nowiki> |
− | sector,unsigned char len,unsigned char mediaid);</nowiki> | + | :PHYDIOを利用してdrive(0:Aドライブ)で示されるドライブのディスクのsector番セクターからlen個分のセクターにbuf番地から始まるメモリの内容を書きこみます。 |
− | :PHYDIOを利用してdrive(0:Aドライブ) | ||
− | |||
− | |||
:mediaidの指定は_PHYDIO_read()関数と同じです。 | :mediaidの指定は_PHYDIO_read()関数と同じです。 | ||
:MSX-DOS2では使用不可です。 | :MSX-DOS2では使用不可です。 | ||
99行目: | 93行目: | ||
さい。 | さい。 | ||
− | ;<nowiki | + | ;<nowiki>unsigned _dos_getftime(int fd,unsigned *date,unsigned *time);</nowiki> |
:ファイルハンドルfdで示されるファイルの日付を<nowiki>*date</nowiki>に、更新時刻を<nowiki>*time</nowiki$に | :ファイルハンドルfdで示されるファイルの日付を<nowiki>*date</nowiki>に、更新時刻を<nowiki>*time</nowiki$に | ||
セットします。 | セットします。 | ||
;<nowiki>unsigned _dos_setftime(int fd,unsigned date,unsigned time);</nowiki> | ;<nowiki>unsigned _dos_setftime(int fd,unsigned date,unsigned time);</nowiki> | ||
− | : | + | :ファイルハンドルfdで示されるファイルの日付をdateに、更新時刻をtimeの値に変更します。 |
− | |||
==他モジュールとの依存関係== | ==他モジュールとの依存関係== | ||
122行目: | 115行目: | ||
==著作権他== | ==著作権他== | ||
本ライブラリはオリジナルのHI-TECH Cからソースファイルやヘッダファイル | 本ライブラリはオリジナルのHI-TECH Cからソースファイルやヘッダファイル | ||
− | の一部を改変して構築しているので、ライセンスはHI-TECH C for CP/M Version | + | の一部を改変して構築しているので、ライセンスはHI-TECH C for CP/M Version 3.09のものに従います。 |
− | |||
オリジナルのZ80READ.MEより引用 | オリジナルのZ80READ.MEより引用 | ||
+ | |||
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 |
2017年8月16日 (水) 01:16時点における最新版
HI-TECH C用MSX-DOS汎用関数ライブラリ By Tatsuhiko Syoji 1996-1998
これは何か?
本ライブラリはHI-TECH CでMSX-DOS特有の機能を利用するためのライブラリです。 また、本パッケージのHI-TECH C用MSX-DOSディスク入出力関数ライブラリおよ び、HI-TECH C用MSX-DOS2ディスク入出力関数ライブラリの内容は違うけれども 同じ働きをする関数のインターフェイスとなることで、ソースファイルレベルで MSX-DOS1とMSX-DOS2の互換性を保ちつつ、MSX-DOS1とMSX-DOS2で同じ機能は実現 できるけれども実現方法が違う機能を実現します。
ファイルリスト
- * .O
- 本ライブラリを構成する各関数のオブジェクトファイルです。
- DOS .H
- 本ライブラリに含まれるライブラリ関数を定義したヘッダファイルです。
- DOSLIB .L
- 本ライブラリ関数のELIBR(HI-TECH C Resource kit #1に収録)形式のソースファイルです。
- INSTALL .BAT
- 本ライブラリ関数をインストールするためのバッチファイルです。
- MDOS1LIB.DOC
- このファイルです。
インストール法
まず、DOS.HをあなたのHI-TECH C環境でヘッダファイルが置いてあるドライ ブ・ディレクトリにコピーします。 次に、HI-TECH C付属のLIBR.COMが実行できる環境で、INSTALL.BATと拡張子が. Oのファイルをカレントドライブ・ディレクトリに置き、INSTALL 本関数を結合 したいライブラリファイル名 とすることで、既存のライブラリファイルの後ろに本ライブラリが結合されま す。もちろん、ライブラリファイル名にはこれから作る新規のライブラリファイ ル名を指定することも出来ます。 これで、本ライブラリを利用する準備が整いました。後は、以下の使い方に したがって、本ライブラリを利用してください。
関数の使い方
これらの関数を利用する際は、ソースファイルでDOS.Hをインクルードし、リンクの際に、本ライブラリの入ったライブラリファイルをリンクすることが必要となります。
- unsigned _dos_getver(void);
- MSX-DOSのバージョン番号を上位バイトに主バージョン番号、、下位バイトに2桁のバージョン番号がBCD値で返ります。また、MSX-DOS1では、0100Hを、MSX-DOSでない場合は0000Hを返します。
- struct DPB *_dos_getDPB(unsigned char drive)
- drive(0:カレント 1:A)で示されるドライブのDPBのアドレスを返します。この
- 関数を使って得られたアドレスのDPBには構造体DPBを使ってアクセスすることができます。
- 構造体DPBの内容は次のとおりです。
struct DPB { unsigned char drive; unsigned char media; unsigned int sec_size; unsigned char dir_mask; unsigned char dir_shift; unsigned char clu_mask; unsigned char clu_shift; unsigned int fat_start; unsigned char fat_copy; unsigned char dir_entry; unsigned int data_start; unsigned int clu_end; unsigned char fat_size; unsigned int dir_start; void *fat_buf; };
- void _dos_absread(buf,drv,sec,len)
- char *buf;
- int drv;
- unsigned sec;
- int len;
- drv (0:Aドライブ)で示されるドライブのディスクのsec 番セクターからlen個のセクターをメモリのbuf 番地に読み込みます。
- void _dos_abswrite(buf,drv,sec,len)
- char *buf;
- int drv;
- unsigned sec;
- int len;
- メモリのbuf 番地からのセクターlen 個分の内容をdrv (0:Aドライブ)で示されるドライブのディスクのsec番セクターからlen 個のセクターに書き込みます。
- unsigned char _PHYDIO_read(char *buf,unsigned char drive,unsigned sector,unsigned char len,unsigned char mediaid);
- PHYDIOを利用してdrive(0:Aドライブ)で示されるドライブのディスクのsector番セクターからセクターlen 個分の内容をbuf 番地からのメモリに読みこみます。
- mediaidには、操作するディスクの種類に応じて、2DD,9セクタフォーマットのディスクでは0xf9、2DD,8セクタフォーマットのディスクでは0xfb、1DD,9セクタフォーマットのディスクでは0xf8、1DD,8セクタフォーマットのディスクでは0xfaをそれぞれ指定します。
- MSX-DOS2では使用不可です。
- unsigned char _PHYDIO_write(char *buf,unsigned char drive,unsigned sector,unsigned char len,unsigned char mediaid);
- PHYDIOを利用してdrive(0:Aドライブ)で示されるドライブのディスクのsector番セクターからlen個分のセクターにbuf番地から始まるメモリの内容を書きこみます。
- mediaidの指定は_PHYDIO_read()関数と同じです。
- MSX-DOS2では使用不可です。
DOSバージョン非依存インターフェイス関数
本パッケージのヘッダファイルDOS.Hでは、DOSのバージョンによるファイルの アクセス方法の違いをソースファイルレベルで吸収しつつ、各バージョンのDOS の能力を生かすため、次の関数をヘッダファイルで定義しています。 この後に挙げる関数を利用する際は、本パッケージのHI-TECH C用MSX-DOSディ スク入出力関数ライブラリおよび、HI-TECH C用MSX-DOS2ディスク入出力関数ライブラリを使える環境にし、HI-TECH C用MSX-DOS2ディスク入出力関数ライブラ リをMSX-DOS2用のプログラムを組む際は、#define DOS2 1と書いた後に、DOS.H をインクルードし、リンカーでHI-TECH C用MSX-DOSディスク入出力関数ライブラ リおよび、MSX-DOS2ディスク入出力関数ライブラリをリンクするようにしてくだ さい。
- unsigned _dos_getftime(int fd,unsigned *date,unsigned *time);
- ファイルハンドルfdで示されるファイルの日付を*dateに、更新時刻を*time</nowiki$に セットします。 ;<nowiki>unsigned _dos_setftime(int fd,unsigned date,unsigned time);
- ファイルハンドルfdで示されるファイルの日付をdateに、更新時刻をtimeの値に変更します。
他モジュールとの依存関係
本関数セットでは、_dos_absread(),_dos_abswrite()関数がHI-TECH C用MSX- DOSディスク入出力関数ライブラリもしくは、HI-TECH C用MSX-DOS2ディスク入出 力関数ライブラリのmsx_bdos()関数に依存しております。そのため、リンク/ラ イブラリファイルに連結する際はmsx_bdos()関数の前にリンクしたり、ライブラ リファイルの中で、msx_bdos関数の前に置くようにする必要があります。 また、DOSバージョン非依存インターフェイス関数は内部でHI-TECH C用MSX- DOSディスク入出力関数ライブラリもしくは、HI-TECH C用MSX-DOS2ディスク入出 力関数ライブラリの関数呼び出しに変換されます。そのため、HI-TECH C用MSX- DOSディスク入出力関数ライブラリもしくは、HI-TECH C用MSX-DOS2ディスク入出 力関数ライブラリをリンクする必要があります。 他の関数にはこのような依存関係はありません。
著作権他
本ライブラリはオリジナルのHI-TECH Cからソースファイルやヘッダファイル の一部を改変して構築しているので、ライセンスは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が著作権を所有しています。