はじめに
『MSX0 Stack』付属の IoT BASIC サンプルを『Turbo Pascal』へ移植してみます。
TOUCH_G.BAS
◆M5LCD タッチパネル
項目 | 説明 |
---|---|
概要 | 本体の LCD タッチパネルを使って簡単なお絵描きができます。 |
ファイル名 | TOUCH_G.BAS |
対応デバイス | |
コメント | MSX0 の設定で TouchPad が Joy2 になっていない場合は、Setup Utility などで Joy2 に変更してください。 MSX の 汎用ポート B に MSX 用のタブレットデバイスが接続された想定で動作します。 スワイプで Unit が切り替わらないように、左上のボタンを長押ししてタッチパッド優先モードにしてください。 |
MSXの 汎用ポート B とは Grove の Port B の事ではなく、ジョイスティックポート #2 の事です。
See also:
MSX0 Stack での挙動
TOUCH_G.BAS
をロードして、
実行してみました。
ドキュメントにあったように、タッチパッド優先モードに変更して画面を触ると...
お絵描きできます。
プログラムは〔Ctrl〕+〔Stop〕(リモートコントロールパネルからは〔Ctrl〕+〔F12〕) で中断できます。
Turbo Pascal へ移植
別途、MDL-LIB と SYSUTILS.LIB
、IOT.LIB
が必要です。
program TOUCH_G;
{$I MDLLIB.LIB}
{$I VRAM2.LIB}
{$I GRAPMSX2.LIB}
{$I GAMEIO.LIB}
var
A: Boolean;
S: Byte;
begin
S := sys_scrmod;
ScrMode(5);
A := True;
repeat
while (Pad(4) = 0) and (not KeyPressed) do
A := True;
if A then
begin
Plot(Pad(5), Pad(6), 15);
A := False;
end
else
DrawTo(Pad(5), Pad(6), 15);
until KeyPressed;
ScrMode(S);
end.
実行してみました。今度はリモートコントロールパネルで。
任意のキーで中断できます。
解説
タッチパッド
Pad(4)
は汎用 I/O ポート (ジョイスティックポート) #2 に接続されたタッチパッドの押下を検出しています。Pad(5)
と Pad(6)
は押された座標です。汎用 I/O ポート #2 に何を接続するかは [Setup Utility] で変更可能なので、タッチパッドを JOY2
に設定していないと、お絵描きできません。
スクリーンモード
起動時のスクリーンモードを終了時に戻しています。
See also:
おわりに
今回の移植に関して難しい所は特にありませんでした。
この記事は IoT BASIC サンプルの移植シリーズなのですが、このサンプルって IoT 関連の機能は全く使われていないので、タッチパッドを持っていれば実機の MSX2 でも動作しますよね?