LoginSignup
2
0

【MSX0】INFO.PAS【Turbo Pascal】

Last updated at Posted at 2023-12-20

はじめに

『MSX0 Stack』付属の IoT BASIC サンプルを『Turbo Pascal』へ移植してみます。

INFO.BAS

◆MSX0 Stack 情報表示

項目 説明
概要 システムメニューにある [MSX0 Stack 情報] と同等のプログラムです。
ファイル名 INFO.BAS
対応デバイス
コメント

ファイルは存在するのですが、DOC\SAMPLES.TXT には説明がありません。SYSMENU.BAS と差し替えられたのでしょうか?

See also:

MSX0 Stack での挙動

INFO.BAS をロードして、

image.png

実行してみました。

image.png

ホスト名、内部ソフトウェアバージョン、IP アドレス、ヒープメモリ、バッテリーレベルが表示されます。ディスク内に SYSMENU.BAS が存在すれば、終了時に実行されます。

プログラムは〔Ctrl〕+〔Stop〕(リモートコントロールパネルからは〔Ctrl〕+〔F12〕) または画面タッチ (リモートコントロールパネルならマウスクリック) で中断できます。

Turbo Pascal へ移植

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

INFO.PAS
program INFO;
{$I MDLLIB.LIB}
{$I VRAM2.LIB}
{$I GAMEIO.LIB}
{$I SYSUTILS.LIB}
{$I IOT.LIB}
var
  I: Integer;
begin
  ClrScr;
  ScrMode(1);
  GoToXY(1, 2);
  Writeln('name : ', IoTGetStr('host/name')      );
  Writeln('sw   : ', IoTGetStr('host/sw_version'));
  Writeln('ip   : ', IoTGetStr('host/ip')        );
  while True do
  begin
    GoToXY(1, 6);
    Writeln('heap : ', IoTGetInt('host/heap'         ):4 , ' KB');
    Writeln('batt : ', IoTGetInt('host/battery/level'):4 , ' %' );
    for I:=1 to 32 do
      begin
        if Keypressed or (Pad(4) <> 0) then
          Exit;
        Delay(100);  
      end;
  end;
end.

実行してみました。

image.png

ホスト名、内部ソフトウェアバージョン、IP アドレス、ヒープメモリ、バッテリーレベルが表示されます。ファンクションキーの表示がないので、ちゃんと Turbo Pascal での実行結果です。SYSMENU.BAS に相当するものはないので、プログラムを抜けると単純に終了します。

任意のキーまたは画面タッチで中断できます。

解説

Pad()

Pad(4) は汎用 I/O ポート (ジョイスティックポート) #2 に接続されたタッチパッドの押下を検出しています。汎用 I/O ポート #2 に何を接続するかは [Setup Utility] で変更可能なので、タッチパッドを JOY2 に設定していないと、画面タッチでは抜けられなくなります。

更新頻度

BASIC では 100 回の FOR ループ内でタッチを待ち、FOR 文実行の 20 回毎に、ヒープメモリとバッテリーレベルを更新しています。実測すると 4 秒くらいで更新されているようでしたので、Turbo Pascal のコードでも大体同じくらいの頻度で更新されるようになっています。

スクリーンモード

オリジナルの通りに移植したので、スクリーンモードを変更して元に戻していません。ちょっとお行儀がよくないですね。

See also:

おわりに

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

2
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
2
0