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】RCONSOLE.PAS【Turbo Pascal】

Last updated at Posted at 2023-12-22

はじめに

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

RCONSOLE.BAS

◆リモートコンソールへの文字列送信

項目 説明
概要 リモートコンソールに文字列を送信します。
ファイル名 RCONSOLE.BAS
対応デバイス
コメント MSX0 上で稼働しているリモートコンソールサーバーに対して print "hello" の文字列を送信します。
リモートコンソールは通常 PC やスマホなどのターミナルソフトから制御しますが、それを MSX0 から制御するプログラムになります。
リモートコンソールで操作される側の MSX0 の Remote 設定が OFF になっている場合は Setup Utility などで ON にしてください。

See also:

MSX0 Stack での挙動

ターミナルソフトでのリモートコンソール接続が確立している場合、事前に接続を切っておく必要があります。リモートコントロールパネルやシリアルコンソールは接続したままで大丈夫です。

RCONSOLE.BAS をロードして、

image.png

実行してみました。

image.png

自分自身に print "hello"<return> が送られました。

BASIC プログラムのコメントに typo がありますね。

Turbo Pascal へ移植

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

RCONSOLE.PAS
program RCONSOLE;
type
  LibStr = string[80];
{$I SYSUTILS.LIB}
{$I IOT.LIB}
const
  PA = 'msx/me/if/NET0/';
begin
  { connect }
  IoTPutStr(PA + 'conf/addr', '127.0.0.1');
  IoTPutInt(PA + 'conf/port', 2223);
  IoTPutInt(PA + 'connect', 1);
  { check connect status }
  Delay(500);
  if IoTGetInt(PA + 'connect') <> 1 then
    { error }
    Writeln('connect fail')
  else
  begin
    { send message }
    IoTPutStr(PA + 'msg', 'print "hello"'#13#10);
    Delay(500);
  end;
  { disconnect }  
  IoTPutInt(PA + 'connect', 0);
end.

Turbo Pascal のオンメモリ実行だと、Turbo Pascal に文字列が送られて変な事になるので、実行形式ファイル (*.COM) を作って MSX-DOS 上で実行してみます。

image.png

MSX-DOS に PRINT なんてコマンドはないのでエラーになってしまいました。送るメッセージを変えてみましょう。

    { send message }
    IoTPutStr(PA + 'msg', 'dir A:\TP3'#13#10);
    Delay(500);

image.png

dir A:\TP3 が実行されました。

解説

コードがスッキリ読みやすい事位しか特筆すべき点はないというか…。

おわりに

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

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?