-
LIBRARIES PUBLIC DOCUMENT MCLIB BIOS
提供: HI-TECH C for CP/M Fan WIKI(JP)
MSX-C Library下位互換ライブラリ MSX-BIOS function library By Tatsuhiko Syoji(Tatsu) 1999-2000
本ライブラリについて
本ライブラリはMSX-C LibraryのうちBIOSライブラリと互換性を持ったライブラリです。 ソースコードは完全に自由に使える事が確認されているソースコードで構成しています。 実装が面倒なくせに余り使わないスロット関係の関数以外を実装しています。
構成ファイル
- .AS
- 本ライブラリのソースファイルです。
- BIOS .TXT
- このファイルです。
- MSXBIOS.H
- 本ライブラリのヘッダファイルです。
アセンブル
MKBLIB.BATを実行すると本ライブラリのソースをアセンブルすることができます。 ライブラリファイルはLIBM.LIBというファイル名で生成されます。
screen()関数は内部でMSX-C Library下位互換ライブラリ MSX-Graphic function libraryのiniplt()関数を呼び出していますので、この後に、MSX-Graphic function libraryを結合するなり、リンカを起動する際に、本ライブラリの後にMSX-Graphic function libraryをリンクするようにして下さい。
あとはヘッダファイルのあるディレクトリにMSXBIOS.Hを、ライブラリのあるディレクトリにライブラリファイルをコピーすればOKです。
その他
rnd()関数はHI-TECH Cに相当する関数があるので、実装する予定はありません。
関数リファレンス
- void disscr(void);
- 画面表示を禁止します。
- void enascr(void);
- 画面表示を許可します。
- void screen(char sc);
- スクリーンモードをsc番に設定します。
- void gicini(void);
- PSGを初期化します。
- void sound(char reg,unsigned char val);
- PSGのreg番レジスタに値valを書きこみます。
- unsigned char rdpsg(char reg);
- PSGのreg番レジスタの値を読みます。
- int chsns(void);
- キーボードバッファが空の場合0,そうでない場合1を返します。
- void chput(unsigned char ch);
- テキスト画面に文字コードch番の文字を表示します。
- unsigned char chget(void);
- キーボードから1文字入力してその値を返します。
- unsigned char lptout(char ch);
- プリンタに文字コードch番を出力します。
- 成功した場合は0、失敗した場合は1を返します。
- unsigned char lptstt(void);
- プリンタの準備ができていれば0、準備できていない場合1を返します。
- unsigned char *pinlin(void);
- MSX-BASICのスクリーンエディタで1行入力し、入力した文字列へのポインタを返します。
- unsigned char *inlin(void);
- MSX-BASICのスクリーンエディタで1行入力し、入力した文字列へのポインタを返します。
- AUTFLG(F6AAH)がセットされる以外はpinlinと同じです。
- char breakx(void);
- CTRL+STOPが押されていると1、押されていないと0を返します。
- void beep(void);
- BEEP音を鳴らします。
- void cls(void);
- 画面を消去します。
- void locate(char x,char y);
- (x,y)にカーソルを移動します。
- void erafnk(void);
- ファンクションキー表示を消去します。
- void dspfnk(void);
- ファンクションキーを表示します。
- char gtstck(char port);
- BIOSを使用してport番のジョイスティックの状態を返します。
0 | カーソルキー |
1 | ポート1 |
2 | ポート2 |
- 返ってきた値と押された方向の対応は次のようになっています。
0 | 押されていない |
1 | 上 |
2 | 右上 |
3 | 右 |
4 | 右下 |
5 | 下 |
6 | 左下 |
7 | 左 |
8 | 左上 |
- char gstex(char port);
- I/Oポートを直接操作してport番のジョイスティックの状態を返します。
0 | カーソルキー |
1 | ポート1 |
2 | ポート2 |
- 返ってきた値と押された方向の対応にgtstckで返される値に加え次の値が追加されています。
9 | FM-TOWNS用ジョイパッドのRUNボタン |
10 | FM-TOWNS用ジョイパッドのSELECTボタン |
- この関数はMSX-C Libraryには存在しません。
- スロット操作がない分gtstckより高速動作が期待できます。
- char gttrig(char no);
- port番のジョイスティックの状態を返します。
- 押されていない場合は0、押されていると-1を返します。
0 | カーソルキー |
1 | ポート1のトリガA |
2 | ポート2のトリガA |
3 | ポート1のトリガB |
4 | ポート2のトリガB |
- char gtpad(char no);
- BIOSのGTPAD(00DBH)を呼び出してno番の入出力装置の状態を調べます。
- unsigned char gtpdl(char no);
- no番のパドルの状態を調べ、回転角を返します。
- char chgsnd(char stat);
- 1ビットサウンドポートの状態を変えます。
- statが0の時off、1の時onになります。
- unsigned char snsmat(char row);
- row列のキーボードマトリクスの状態を返します。
- void kilbuf(void);
- キーバッファをクリアします。
- void ei(void);
- 割り込みを許可します。
- void di(void);
- 割り込みを禁止します。
- /* MSX Turbo R BIOS function */
- void chgcpu(char no);
- CPUモードをnoに切り替えます。
- noの下位2ビットでCPUモードを設定し、bit7でLEDの状態変化の有無を設定します。
- MSX2+以下のマシンでは何もしません。
- 下位2ビットの値は次のようになっています。
0 | Z80 |
1 | R800 ROM |
2 | R800 DRAM |
- この関数はMSX-C Library発売当時にMSX Turbo RがなかったのでMSX-C Libraryには存在しません。
- char getcpu(void);
- 現在のCPUモードを調べます。
- 値の意味は次のようになっています。
0 | Z80 |
1 | R800 ROM |
2 | R800 DRAM |
- この関数はMSX-C Library発売当時にMSX Turbo RがなかったのでMSX-C Libraryには存在しません。
;Copyright (c) 1999-2000 Tatsuhiko Syoji, Japan . All rights reserved. ; ;Redistribution and use in source and binary forms, with or without ;modification, are permitted provided that the following conditions are ;met: ; ;1 Redistributions of source code must retain the above copyright notice, ; this list of conditions and the following disclaimer as the first lines ; of this file unmodified. ; ;2 Redistributions in binary form must reproduce the above copyright ;notice, this list of conditions and the following disclaimer in the ;documentation and/or other materials provided with the distribution. ; ;THIS SOFTWARE IS PROVIDED BY Tatsuhiko Syoji ``AS IS AND ANY EXPRESS ;ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ; DISCLAIMED. IN NO EVENT SHALL Tatsuhiko Syoji BE LIABLE FOR ANY DIRECT, ; INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ;(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ;SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ;HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ;STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING ;IN ; ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ;POSSIBILITY OF SUCH DAMAGE.