0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【MSX0】TOUCH_G.PAS【Turbo Pascal】

Last updated at Posted at 2023-12-22

はじめに

『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 をロードして、

image.png

実行してみました。

image.png

ドキュメントにあったように、タッチパッド優先モードに変更して画面を触ると...

image.png

お絵描きできます。

プログラムは〔Ctrl〕+〔Stop〕(リモートコントロールパネルからは〔Ctrl〕+〔F12〕) で中断できます。

Turbo Pascal へ移植

別途、MDL-LIB と SYSUTILS.LIBIOT.LIB が必要です。

TOUCH_G.PAS
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.

実行してみました。今度はリモートコントロールパネルで。

image.png

任意のキーで中断できます。

解説

タッチパッド

Pad(4) は汎用 I/O ポート (ジョイスティックポート) #2 に接続されたタッチパッドの押下を検出しています。Pad(5)Pad(6) は押された座標です。汎用 I/O ポート #2 に何を接続するかは [Setup Utility] で変更可能なので、タッチパッドを JOY2 に設定していないと、お絵描きできません。

スクリーンモード

起動時のスクリーンモードを終了時に戻しています。

See also:

おわりに

今回の移植に関して難しい所は特にありませんでした。

この記事は IoT BASIC サンプルの移植シリーズなのですが、このサンプルって IoT 関連の機能は全く使われていないので、タッチパッドを持っていれば実機の MSX2 でも動作しますよね?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?