3
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?

DelphiAdvent Calendar 2023

Day 15

【MSX0】ACCEL.PAS【Turbo Pascal】

Last updated at Posted at 2023-12-16

はじめに

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

ACCEL.BAS

◆加速度センサ

項目 説明
概要 Battery Bottom2 の加速度センサの値を取得して表示します
ファイル名 ACCEL.BAS
対応デバイス M5GO Battery Bottom2
コメント 加速度センサを搭載した M5GO Battery Bottom2 を装着した状態で本体を起動し、プログラムを実行してください。

Battery Bottom 2 の加速度センサの値を取得して表示します

製品名が少し正確ではない記述となっています。

Plan B 以外の『MSX0 Stack』には『M5GO Bottom2』が付属し、Plan B には加えて『Core2 Battery Bottom』が付属します。

『Faces II Bottom』を装着している場合にはセンサーが搭載されている『M5GO Bottom2』または『Core2 Battery Bottom』に換装する必要があります。

『Core2 Battery Bottom』を使う場合、小さなフタのようなものにセンサーが付いていますので、これを必ず取り付けてください。

See also:

MSX0 Stack での挙動

ACCEL.BAS をロードして、

image.png

実行してみました。

image.png

『MSX0 Stack』を傾けると値が変動します。

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

Turbo Pascal へ移植

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

ACCEL.PAS
program ACCEL;
type
  LibStr = string[80];
{$I SYSUTILS.LIB}
{$I IOT.LIB}
var
  X, Y, Z: Integer;
begin
  ClrScr;
  while not KeyPressed do
  begin
    X := IoTGetInt('device/accel/x');
    Y := IoTGetInt('device/accel/y');
    Z := IoTGetInt('device/accel/z');
    Writeln(X:6, Y:6, Z:6);
  end;
end.

実行してみました。

image.png

『MSX0 Stack』を傾けると値が変動します。

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

解説

ループ

GOTO ループを while での無限ループに替え、KeyPressed() でキー押下を検出して抜けるようにしました。

書き出しパラメータ

Writeln()X:6 というのは、書き出しパラメータ というもので、少し特殊な書式設定です。整数型変数 X の表示最小幅を 6 に設定しています (Y と Z も同様)。

See also:

おわりに

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

3
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
3
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?