4
1

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】IoT BASIC サンプルの移植【Turbo Pascal】

Last updated at Posted at 2023-12-18

はじめに

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

image.png

See also:

サンプルプログラム

オリジナルの IoT BASIC サンプルは、microSD 内の DSK\SAMPLE.DSK に格納されています。

image.png

image.png

サンプルの説明は DOC\SAMPLE.TXT にあります。

まずは BASIC サンプルでオリジナルの動作を確認してみる事をオススメします。

移植リスト

移植したサンプルのリストです。サンプルのリンク先はソースコードではなく独立した記事となっています。

サンプル 本体 説明
ACCEL.PAS Battery Bottom2 の加速度センサの値を取得して表示します。
ANALOG_G.PAS × Port B (黒) のピン 36 からのアナログ入力信号で簡単なグラフを描きます。
DHT_KNJ.PAS × 温度湿度センサから取得した値を表示します。
I2C.PAS × DHT20 に対して直接 I2C アクセスを行い温度を取得します。
INFO.PAS システムメニューにある MSX0 Stack 情報 と同等のプログラムです。
LED.PAS 1 Face Bottom Base や Battery Bottoms に搭載されている 10 個の LED を iotput 命令を使って制御します。
PERFORMC.PAS 仮想 Z80 の周波数を振ってオーバークロック余力を測定します。
RCONSOLE.PAS リモートコンソールに文字列を送信します。
SEND2NET.PAS × 温度湿度センサーから値を取得しサーバーへ送信します。
TOUCH_G.PAS 本体の LCD タッチパネルを使って簡単なお絵描きができます。
TREE.PAS ノードを再帰的にスキャンしてリスト表示します。
WIFILVL.PAS 接続中の Wi-Fi AP の RSSI (受信信号強度) 値を表示します。

比較対象として BASIC で実行した結果も掲載してあります。Turbo Pascal に興味がなくても何かの参考にはなるかもしれません。

× になっているものは外部センサーが必要です。

その他のサンプルリスト

IoT BASIC サンプルにないサンプルのリストです。

サンプル 本体 説明
BLINK.PAS × いわゆる L チカを行います。
BUZZER.PAS × パッシブブザーを鳴らします。

× になっているものは外部センサーが必要です。

外部センサー

サンプルプログラムには『MSX0 Stack』に内蔵されていないセンサーを使ったものがあります。

Grove Beginner Kit

外部センサーは Seeed 社の 『Grove Beginner Kit for Arduino』 が想定されています。

中央の『Seeeduino Lotus (Arduino UNO R3 互換)』をプログラミングする事で、各種センサーがそのまま使える製品となっています (画像の状態ですべてのセンサーが結線されています)。

image.png

クラウドファンディング版『MSX0 Stack』に付属するのは『Grove Beginner Kit for Arduino』のカスタム品である 『Grove Beginner Kit for MSX0』 です。

image.png

Grove コネクタの位置が裏表になっている以外の差異はありませんので、当記事および関連記事ではオリジナルの方の画像を使っています。

切り離す or 切り離さない?

センサーモジュールを切り離してセンサー単体で使う事もできますが、単体で使う場合には付属の Grove ケーブルで結線する必要があります。もちろん一度切り離したセンサーを元に戻すのは不可能です。

・切り離して使う場合の注意点

センサーモジュールを切り離して使う場合、ビア (穴) でカットしないで下さい。ビアでカットしてしまった場合には、切断面をきれいにして短絡を防止してください。

image.png

センサーモジュールと MSX0 を Grove ケーブルで直接接続して使います。

・切り離さないで使う場合の注意点

センサーモジュールを (物理的に) 切り離して使わない場合、『Seeeduino Lotus』に空のスケッチを転送して制御 (デモプログラム) を殺しておく必要があります。

image.png

これを行わないと、センサーが動作しないか正しい値を返しません。Wiki にある Arduino IDE の使い方を参考にして空のスケッチを書き込んでください。デモプログラム (初期ファームウェア) を書き込んで元の状態に戻す事も可能です。

MSX0 とは普通に接続してもいいのですが、『Grove Beginner Kit for MSX0』だと Grove コネクタが裏にあるのでそのままでは接続しづらいです。中央の『Seeeduino Lotus』の Grove コネクタに接続しましょう。

image.png

I2C タイプのモジュールを挿せる所が 2 つあります。DHT20 等の I2C センサーを使う際にはいずれかに接続してください。

See also:

LTE 通信モジュール

クラウドファンディング版『MSX0 Stack』Plan E に付属する通信モジュールです。

LoRaWAN 通信モジュール

クラウドファンディング版『MSX0 Stack』Plan F に付属する通信モジュールです。

PoE 通信モジュール

クラウドファンディング版『MSX0 Stack』Plan G に付属する通信モジュール (有線 LAN + PoE モジュール) です。

UART モジュール

『MSX0 Stack』の PortC に接続して使うユニットです。

image.png

image.png

Turbo Pascal

MSX-DOS/2 では CP/M-80 用の『Turbo Pascal』が動作します。CP/M-80 で動作する『Turbo Pascal』の最終バージョンは 3.01A です。

image.png

ここに MSX 固有の機能を使うためのライブラリを整備して、IoT BASIC サンプルを移植しています。

必要なライブラリは各移植記事の中にも記述してあります。

See also:

おわりに

記事中のソースコードは GitHub でも公開されています。

  1. 要ファームウエア ver0.07.08 以上

  2. Wiki の Resources の所にあります。 2

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?