はじめに
『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
をロードして、
実行してみました。
自分自身に print "hello"<return>
が送られました。
BASIC プログラムのコメントに typo がありますね。
Turbo Pascal へ移植
別途、MDL-LIB と SYSUTILS.LIB
、IOT.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 上で実行してみます。
MSX-DOS に PRINT
なんてコマンドはないのでエラーになってしまいました。送るメッセージを変えてみましょう。
{ send message }
IoTPutStr(PA + 'msg', 'dir A:\TP3'#13#10);
Delay(500);
dir A:\TP3
が実行されました。
解説
コードがスッキリ読みやすい事位しか特筆すべき点はないというか…。
おわりに
今回の移植に関して難しい所は特にありませんでした。