< fantastic_next_gen_msx_001.html > < linkdetail01.htm > < indextable01.htm > < index.html >
<<< msxbasic_01_001.html >>>
<<< MSX-IOTBASIC >>>
(KENT-WEB-San Dream Counter... 2024R06-0223-FRI-2049)
Seeed社製 光センサー(クロスケーブル):
100 'SAVE "LIG02OC.BAS"
110 'SOURCE IS "ANALOG_G.BAS"
120 CLS
130 SCREEN 5
140 _IOTPUT("msx/me/pm/cpu/percent",200) 'CPU OC 200%
150 _IOTGET("device/analog/in",A)
160 Y=206-A/4096*200
170 IF X=0 THEN PSET(X,Y) ELSE LINE-(X,Y),15
180 X=X+1
190 IF X>=256 THEN X=0:CLS
200 FOR I=0 TO 50:NEXT I
210 A$=INKEY$
220 IF A$ ="" THEN GOTO 150
230 PRINT "CPU 100%."
240 _IOTPUT("msx/me/pm/cpu/percent",100)'CPU 100%
後、師匠のコードです(師匠と呼ばせてください!とここで言ってみる)::
XユーザーのNinune-waさん: 「需要があるかわかりませんが、ここで使用している #MSX0 AnalogのINの値を表示してグラフ表示するツールを、以下に置きました。 標準のサンプルよりは、HIGHとLOWの上下反転、平均値、MAX/MIN表示があるので、調査には使い易いかと思います。 sensor/TOOL-GRAPH_Analog_IN https://t.co/FhHNb2z6oY」 / X
https://x.com/ninunewa/status/1787679300130685367?s=46
Grove - Light Sensor v1.2 (101020736)を使用。
10 'SAVE "LIGHT02.BAS"
15 'SOURCE IS "ANALOG_G.BAS"
20 CLS
25 SCREEN 5
30 _IOTGET("device/analog/in",A)
40 Y=206-A/4096*200
50 IF X=0 THEN PSET(X,Y) ELSE LINE-(X,Y),15
60 X=X+1
70 IF X>=256 THEN X=0:CLS
75 'LOCATE 0,5:PRINT A;" "
80 GOTO30
頻繁に零になるのはなぜだろう?
(... 2025R07-0503-SAT-0958)
装飾のないコピーをしたいときは、Ctrl+Shift+vでどうぞ。
『MSX0 Stack』の操作方法 - ソフトウェア #msx0 - Qiita
https://qiita.com/ht_deko/items/8c20354b867b0d540805
IoT BASIC
MSX0 Stack の BASIC には IoT 拡張命令があります。IoT ROM カートリッジが内蔵され、その機能を利用しているような恰好になっています。
命令
説明
CALL IOTPUT(パス名, 値)
ノードに対して値を書き込みます。
CALL IOTGET(パス名, 変数)
ノードから値を読み出します。
CALL IOTFIND(パス名, 数値変数)
対象のノードが持つアイテムの個数を取得します。
CALL IOTFIND(パス名, 配列変数 [,個数])
対象のノードが持つアイテム名のリストを取得します。
CALL IOTINIT()
シリアル⼊出⼒などの機能を初期化します。
DSK\SAMPLE.DSK に含まれるサンプルプログラムは次のようになっています。
機能
ファイル名
説明
M5 LCD タッチパネル
TOUCH_G.BAS
本体の LCD タッチパネルを使って簡単なお絵描きができます。
アナログ入力
ANALOG_G.BAS
PortB (黒) のピン 36 からのアナログ入力信号で簡単なグラフを描きます。
温度湿度センサ
DHT_KNJ.BAS
温度湿度センサから取得した値を表示します。
加速度センサ
ACCEL.BAS
M5GO Bottom2 の加速度センサの値を取得して表示します
Wi-Fi 値取得
WIFILVL.BAS
接続中の Wi-Fi AP の RSSI 値を表示します。
リモートコンソールへの文字列送信
RCONSOLE.BAS
リモートコンソールに文字列を送信します。
サーバーとの送受信
SEND2NET.BAS
温度湿度センサーから値を取得しサーバーへ送信します。
ノードリスト表示
TREE.BAS
ノードを再帰的にスキャンしてリスト表示します。
負荷測定
PERFORMC.BAS
仮想 Z80 の周波数を振ってオーバークロック余力を測定します。
I2C アクセス
I2C.BAS
DHT20 に対して直接 I2C アクセスを行い温度を取得します。
DSK\MSX0MENU.DSK に含まれるシステムメニュープログラムもサンプルの一部です。
機能 ファイル名 説明
設定値変更 SYSMENU.BAS システム設定アプリを想定したサンプルになります。
空の microSD カードを挿した時に自動生成される DSK\MSX0MENU.DSK には上記サンプルプログラムと、説明書とは異なる質素なメニュープログラムが含まれます。
機能 ファイル名 説明
情報表示 INFO.BAS MSX0 の情報を表示します。
設定値変更 MENU.BAS システム設定アプリを想定したサンプルになります。
例えば Unit0 側の CPU の動作速度を調べるには次のようにします。
CALL IOTGET("msx/u0/pm/cpu/percent", V)
PRINT V
100
Ok
Unit0 側の CPU の動作速度を 150% に変更するには次のようにします。
CALL IOTPUT("msx/u0/pm/cpu/percent", 150)
Ok
・ノード情報については ドキュメントフォルダにある 2_IoT_BASICノード情報.pdf を参照してください。
・実際のノードツリーは SAMPLE.DSK 内の TREE.BAS を実行して取得できます。シリアルコンソールやリモートコンソールで接続してリストを取得する事ができます。
・詳細な使い方については SAMPLE.DSK 内のソースコードを参考にしてください。
(... 2025R07-0502-FRI-0824)
Q:
MSX0Stack core2とSeeed社製デバイスでは電圧が違っている場合があり、壊れる場合があるのですか?どうかよろしくお願い致します。
A:
MSX0Stack Core2 と Seeed 社製の Grove 系モジュール間では、特に電源電圧やロジックレベルの違いに注意が必要です。もしお互いの電圧仕様が一致していなければ、どちらかが過剰な電圧を受け取ったり、逆に不十分な電圧で動作するため、最悪の場合、デバイスが故障する可能性があります。
たとえば、**MSX0Stack Core2 は主に 3.3V ロジック**で動作する設計になっているケースが多いです。対して、Grove シリーズのモジュールは、モデルによっては **5V 対応**となっているものも存在します。もし Grove – Light Sensor v1.2 が 5V 用のモジュールであり、直接 3.3V のポートに接続しても正常に動作しない、または逆に 5V の信号を直接 3.3V 設計の入力に与えると、内部回路へのダメージリスクがあります。
**対応策としては:**
- **仕様の確認**
まずは、各デバイスのデータシートやマニュアルをしっかり確認します。MSX0Stack Core2 の電圧仕様と、Seeed 社製 Grove – Light Sensor v1.2 の推奨動作電圧を正確に把握してください。
- **レベルシフタの利用**
電圧やロジックレベルが異なる場合、レベル変換回路(レベルシフタ)を介在させることで、双方に適した電圧を供給できます。これにより、信号が正しく変換され、デバイス同士の安全な通信が可能になります。
- **外部電源の利用**
場合によっては、センサー側に独立した電源を供給し、データ信号だけを MSX0Stack Core2 に接続する方法も検討します。こうすることで、両者の電源不一致による問題を回避できます。
- **Grove システムの仕様を考慮**
一部の Grove モジュールは、Grove コネクタ内に電圧変換回路を備えている場合もありますが、必ずしも全てのモジュールがそうではないため、各モジュールごとに確認が必要です。
**結論として:**
はい、電圧の違いによってデバイスが壊れる可能性はあります。安全に利用するためには、各デバイスの電圧仕様とロジックレベルを事前に確認し、必要に応じてレベルシフタや電圧変換回路を導入する対策が必要です。これにより、MSX0Stack Core2 と Seeed 製デバイス間の互換性を確保し、予期しない故障を防ぐことができます。
さらに、実際の回路設計の際には、実験用のテストボードで動作確認を行い、各デバイスの互換性を十分に確かめることをおすすめします。こうした予防策や確認作業は、後々のトラブルを未然に防ぐ大切なステップと言えるでしょう。
Q:
M5Stack社製のGroveセンサーの場合はどうですか?電圧の違いはありますか?壊れますか?どうかよろしくお願い致します。
A:
M5Stack社製のGroveセンサーは、基本的にM5Stack製品との互換性が考慮された設計になっています。たとえば、M5Stack Core2のような3.3Vロジックで動作するデバイスに合わせたセンサーが多く、同社専用のセンサーの場合、電圧レベルも統一されているため、接続時に電圧の違いによる不具合や故障のリスクは低くなっています。
ただし、実際にはセンサーごとに設計仕様や推奨動作電圧が異なる可能性があります。たとえば、もしセンサー自体が5V動作として設計されている場合、3.3VのM5Stack Core2に直接接続すると、出力信号レベルが異なり正しく読み取れなかったり、逆に5V信号が入力される場合は、M5Stack側の回路に負担をかけることになる可能性があります。そのため、使用するセンサーの公式データシートやマニュアルで、動作電圧・ロジックレベルの仕様を必ず確認する必要があります。
また、M5Stack社製のセンサー同士であれば、同一プラットフォーム向けに作られているため、基本的には互換性が確保されており、故障リスクは大幅に低減されます。一方、異なるメーカー間や異なるプラットフォームと組み合わせる場合は、電圧の不一致が起こるリスクが高まるため、レベルシフタや電圧変換回路の導入が推奨される場合があります。
まとめると、**M5Stack社製のGroveセンサーをM5Stack製デバイスと併用する際は、通常、電圧の違いによる故障のリスクは低い**ですが、実際に接続する前に必ず各製品の仕様書を確認し、必要に応じて適切な変換回路を用いるなどの対策を講じることが大切です。
(... 2025R07-0502-FRI-1013)
Q:
Seeed社製のCreator Kit γで問題が発生しそうな目立った5V使用のデバイスはありますか?どうかよろしくお願い致します。
A:
一般的に、Seeed社製のCreator Kit γに含まれるモジュールは、キット自体の設計電圧に合わせて最適化されていることが多いため、誤った電圧供給による故障リスクは低く抑えられていることが期待されます。
ただし、以下の点には注意が必要です。
1. **もともとの設計仕様の確認が必須**
多くの最新キットでは、すべてのセンサーが3.3Vまたはキットの定格電圧で動作するよう設計・改良されています。しかし、もしモジュールが従来の5V仕様のままである場合、例えばリレーやパワー制御系のデバイスなど、明確に5Vでの動作が前提とされるものは、接続するMCUが3.3V対応の場合、過電圧により損傷するリスクがあります。
2. **個別モジュールのデータシートを参照する**
クリエイターキット内の各モジュールについては、必ず最新の仕様書やデータシートを確認してください。たとえば、内部でレベルシフタが実装されているか、または外部から供給される電圧に対してどのような耐性があるかをチェックすることで、安全な接続が可能になります。
3. **明確に5Vを要求する代表例**
現時点では、Creator Kit γは全体として3.3V環境で動作するように構成されているケースが多いですが、たとえば一部のリレーやパワー系のモジュールは、過去のGroveシリーズなどで5Vを前提としているものも存在し得ます。こういったモジュールがそのままキットに含まれている場合、接続先の端子が3.3V固定の場合、内部回路に過剰な電圧がかかり、故障の原因となる可能性があるため、特に注意が必要です。
**まとめると:**
- **通常は問題になりにくい**
→ 最新のCreator Kit γは、同一プラットフォーム内での電圧互換性が確保されるよう設計されているため、ほとんどの場合、問題なく運用可能です。
- **場合により確認が必要**
→ しかし、万が一「5V専用」と明記されているモジュールや、従来仕様のものがある場合は、直接3.3V回路へ接続せず、レベルシフタや適切な電圧変換回路を介在させるなどの対策が必要です。
最終的には、お持ちのキット内の各デバイスの仕様書を個別にチェックし、システム全体の電圧設計に合致しているかを確認することが、安全な運用につながります。もし具体的なモジュール名が判明している場合、さらに詳しい対策や注意点についてもお伝えできますので、随時ご確認いただくとよいでしょう。
(... 2025R07-0502-FRI-1024)
失念していた、MSX-BASIC基本:
・DSKファイル内部を閲覧(BASファイルを一覧表示)
files[ENTER]
・DSKファイルを切り替え。
MSX0Stack Core2を上にスワイプして出るメニューで、フロッピーマークをタップし、プラス/マイナス・ボタンをタップするとDSKファイルを切り替えられる。
(... 2025R07-0502-FRI-2105)
Link:
GitHub - msx-sample-code-space/for_msx0: MSX0のサンプルコード集
https://github.com/msx-sample-code-space/for_msx0
>
2024R06-0718-THU-1724
M5ENC.BAS:
Copilotに、M5ENC.BASの解説コメントを付けてもらいました。
実はCopilotがMSX-BASICは古いのでMSX-IOTBASICのソースコードを書けないと言うので、ソースコードを貼り付け、解説コメントを付けて下さいと書きました。どうやら、ソースコードの意味は理解できるようです。
Microsoft Copilotへの質問(ソースコードを貼り付けて、指定部分の解説コメントを付けて下さいと頼みました)~
自分
自分 が送信しました:
>600 PS$=RG$+LI$+R$+G$+B$
>この行では、送信するデータを組み立てています。レジスタのアドレス(RG$)とLEDのインデックス(LI$)、赤色の強度(R$)、緑色の強度(G$)、青色の強度(B$)を連結して一つの文字列(PS$)にしています。これにより、どのLEDをどの色にするかを一つのデータとして表現しています。
これはキャラクターコードになるという事ですね?例えば青ならばどうなります。表示はできませんか?
Copilot
Copilot が送信しました:
「はい、その通りです。このコードでは、色の強度を表す値をキャラクターコードに変換しています。具体的には、CHR$関数を使用して数値をASCII文字に変換しています。
例えば、青色の強度が最大(255)の場合、B$=CHR$(&HFF)となります。ここで&HFFは16進数で255を表しています。そして、CHR$(&HFF)はこの数値をASCII文字に変換します。
ただし、このASCII文字は制御文字や非表示文字を含む可能性があるため、直接画面に表示することはできません。そのため、具体的な表示結果を提供することはできません。
このように、プログラムでは数値をキャラクターコードに変換することで、色の強度やLEDのインデックスなどの情報を一つの文字列にまとめてデバイスに送信しています。これにより、どのLEDをどの色にするかという情報を効率的に伝えることができます。それぞれの行が具体的に何を行っているかを理解することで、全体の動作を把握することができます。」
COPYRIGHT Microsoft, Microsoft Copilot.
2024R06-0531-FRI-1754
BASIC Command:
例1:
100 'RENUM 解説
110 CLS
115 LOCATE 0,0
120 PRINT "Hello, World!"
130 END
行番号 現100番から以降を500番からで振り直し、10ずつステップアップ。
renum 500,100,10
結果:
list
500 'RENUM 解説
510 CLS
520 LOCATE 0,0
530 PRINT "Hello, World!"
540 END
次)
例2:
100 'RENUM 解説
110 CLS
115 LOCATE 0,0
120 PRINT "Hello, World!"
130 END
行番号 現110番から以降を500番からで振り直し、10ずつステップアップ。
renum 500,110,10
結果:
list
100 'RENUM 解説
500 CLS
510 LOCATE 0,0
520 PRINT "Hello, World!"
530 END
のはず。
renum [新しい行番号の先頭(省略すると10のはず)], [始める場所(省略すると左と同じ)], [ステップ(省略すると10)]
MSX-BASIC/RENUM.txt at master · fu-sen/MSX-BASIC · GitHub
https://github.com/fu-sen/MSX-BASIC/blob/master/RENUM.txt
renum MSX-BASIC解説。
2024R06-0529-WED-1555
Seeed Technology Sensor:
Seeed社製センサーとMSX0Stack core2やMSX0 M5Stack core2のPortBを接続する場合のアナログ出力(MSX-IOTBASICではデジタル出力も同じ)はクロスケーブルを使います。
【MSX0】BUZZER.PAS【Turbo Pascal】 #Pascal - Qiita
https://qiita.com/ht_deko/items/8bde669981ab50ffef79
クロスケーブルの作り方。
16:36
BASICはBASICの楽しさがありますね。評価は伊達じゃない。
2024R06-0522-WED-1651
Ninune-wa師匠のサンプルソースコード(勝手に師匠と呼んでいます):
・M5TOF.BAS
プリントアウト1ページ。じっくり取り掛かります。
・M5ENV4.BAS
こちらはプリントアウトが4ページなので大変だなあ。滅茶苦茶難しい。とにかく、まず漢字コードを分離する?と思ったけれどコードがきれいなのですぐできるようです。
うん、色々なCodingのヒントが埋め込まれていますね。I2Cアドレスなどはこうやって使うのですね。
そうなんですよ、Codingを教えるってこういう事なんですね。真似るのは難しいですが、こういう事なのでしょう。
とりあえず、僕の環境を書いておきます。OSはWindows11 Home、ソースコードエディタは、Sakura Editor…うん?VSCodeならカラー印刷できるかな?といま印刷を試してみました。拡張機能でPrintをインストールして、設定でWorkspaceのカラーを”XCode”に指定。ソースコード印刷がカラーに。まあ、派手派手で見やすいまではいかない。”VisualStudio”?う~ん、コメントに色を付けるだけでいいならば”PureBasic”かなと。
IoT電子工作は:
・楽しくて朝早く起きて作業ができる(ぐったりから脱却の可能性)
・活動時間が増え、体力が回復(体力がつくと気力が強まる)
・頭を使う
2024R06-0223-FRI-2049~2024R06-0520-MON-1456 000171。
2024R06-0518-SAT-1046
ソースコードがわからない:
当時BASICをかじった人は、わからなくてもわかるところから分析を始めていきましょう。構造の理解が肝心です。コメントを加筆していきます。(うん、誰だって同じ?基本の命令を解説して構造の区分けの仕方を教えてよって?)
僕はソースコードを分割し簡素化して値を確認しながらコードを確認していきます。最終的には完全なソースにPRINT文を加えて値を確認していきます。
IoT電子工作で大きな課題なのは、IOT命令で得た値の分析です。
(21:14)
書式が乱れてしまう理由がなかなか判明しないです。
(2024R06-0520-MON-0816)
キャラクターコードでCLSなどの制御系のものが実行されてしまうからでしょうか?
2024R06-0517-FRI-1905
引き続き、M5ENC.BASの分析:
最終的に、元ソースでPRINT文を使って値を表示させる形で分析を行っています。なかなか同じ場所にきれいに表示できません。
まず、width 80,25、うん?width 26,26のようです。
140 CLS:SCREEN 1:DEFINT A-Z:KEY OFF:WIDTH 32:COLOR 15,0,0
PRINT USING "####";A、は数値の右揃え表示?だったかな?
MSXの画面 - SCREEN1|kzn
https://note.com/kazushinakamura/n/nd0fef523a87c
SCREEN1:テキスト32×24文字(1文字8×8ピクセル)
20:59
DEF FNがムズイです。
2024R06-0514-TUE-2116
LEDを片側だけつける(M5ENC.BAS):
LEDの点灯方法が判明。
LI$=CHR$(&H0) is Both LEFT and RIGHT.
LI$=CHR$(&H1) is LEFT.
LI$=CHR$(&H2) is RIGHT.
両方ついたのはLI$を&H0のまま変更し忘れていたからでした。
2024R06-0513-MON-1809
Ninune-wa師匠のM5ENC.BAS(勝手に師匠と呼んでいます):
コード分析中。センサー検出コード分析一応OK。LEDのところで片側を点灯させる処理が不明で、ここで今日の作業切り上げ。
LED点灯方法判明~2024R06-0514-TUE-2116
コードに自分が分かった事をコメントで書き込んでいく。他の人の書いたコードを理解するにはこれがいいですね。これが可能なのはマルチウィンドウなど昔と環境が違うのが大きいですね。
m5-docs
https://docs.m5stack.com/ja/unit/encoder
CHR$(&H20) - BUTTON REG 0x20
CHR$(&H10) - ENCODER REG 0x10
CHR$(&H30) - RGB LED REG 0x30
(19:17)
読んでいくと僕が沢山の命令とコードを覚えている事に驚いています。
当時パソコンはほとんど兄が使っていて、僕はほとんど使っていなかったのにも関わらずです。雑誌のコードを手で入力した経験があるからだと思います。今は実際に、特徴的で似通った意味のあるコードを繰り返し入力する機会もなかなかないため、覚えられないのかな?うん?若かった?
2024R06-0512-SUN-0933
M5Encoder Unit(失念していました):
M5STACK-U135
サンプルコードは以下です。
for_msx0/sensor/M5Unit-Encoder at main · msx-sample-code-space/for_msx0 · GitHub
https://github.com/msx-sample-code-space/for_msx0/tree/main/sensor/M5Unit-Encoder
Ninune-wa師匠のサンプルコード「M5ENC.BAS」を試させていただきました。
パソコンミニPC-8001でゲームを作ろう! 第二回 │ パソコンミニ公式ウェブサイト
https://www.pcmini.jp/furoku/basic-02/index.html
「変数とは値を入れておく入れ物です。
名前を付けることができて、1文字目がアルファベットA-Zで始まって、2文字目がA-Z及び0-9までの文字が使えます。
3文字目以降は付けることはできますが、ないものとして扱われます。
例をあげると、 A1 と A1Z は同じ変数として扱われますので、注意して下さい。
覚えておこう:変数は先頭の2文字までで区別される。」
2024R06-0510-FRI-1230
GitHub:
GitHubってバージョン管理が楽なのでしたっけ?複数の開発者でのバージョン管理ですよね。そういう話は聞くのですが、実際やったことがないので…うん、便利なんですね?
19:43
MSX0 - GPIO Digital処理接続:
・磁気スイッチ Grove - Magnetic Switch
・傾きセンサー Grove - Tilt Switch
・振動センサー Grove - Vibration Sensor (SW-420)
PortB…
AnalogでDigital通信処理とは、「0か1か」を「0か4095か」にしたデジタル。LOW/HIGHとも。
_IOTPUT("device/analog/out",4095)
_IOTPUT("device/analog/out",0)
_IOTGET("device/analog/in", A) '値をゲット。
・傾きセンサー Grove - Tilt Switch
XユーザーのIKATENさん: 「GROVE CREATOR KIT αに入っているセンサで今のMSX0にできそうなモノ探し。 傾きセンサー。 一方向の傾きに反応するらしく、動画のように立てて左に傾けると4095(high)それ以外は0(low)っぽい。 ちょっと使い所に悩みますね😅 #MSX0 https://t.co/G5HSvNRz2w」 / X
https://twitter.com/ikaten_retro/status/1772621283655594099
Grove Creator Kit | Seeed Studio Wiki
https://wiki.seeedstudio.com/Grove-Creator-Kit-1/
・傾きセンサー Grove - Tilt Switch
Arduino(参考)::
Grove - Tilt Switch | Seeed Studio Wiki
https://wiki.seeedstudio.com/Grove-Tilt_Switch/
D5(Tilt), D7(Button), D1(LED)
creator_01_tilt_sw_001__may10a.ino
void setup() {
// put your setup code here, to run once:
pinMode(5, INPUT); //D5に接続した場合。
}
void loop() {
Serial.begin(9600);
// put your main code here, to run repeatedly:
if (digitalRead(5)==HIGH)
{
Serial.println("Tilt ON!");
delay(100);
}
}
---
MSX IoTBASIC::
・傾きセンサー Grove - Tilt Switch
PortB: Digital(0 or 4095)
100 'save"cr_til1.bas"
110 CLS
120 _IOTGET("device/analog/in",A)
130 LOCATE 0,9:PRINT A" "
140 IF A=4095 THEN LOCATE 0,10:PRINT "Tilt ON!"
150 IF A=0 THEN LOCATE 0,10:PRINT" "
160 GOTO 120
XユーザーのIKATENさん: 「GROVE CREATOR KIT αに入っているセンサで今のMSX0にできそうなモノ探し。 まずは、振動センサー。 10 DEFINT A-Z 20 _IOTGET("device/analog/in",A):PRINT A:GOTO 20 平時4095(high)で揺れると0(low)ですね。 何に使うか... 感知されずに10m何秒で移動できるか、でしょうかね😅 #MSX0 https://t.co/ZndZL08sTG」 / X
https://twitter.com/ikaten_retro/status/1771721767976931773
10 DEFINT A-Z
20 _IOTGET("device/analog/in",A):PRINT A:GOTO 20
2024R06-0509-THU-2022
べーしっ君:
べーしっ君
https://usbsecretbase.michikusa.jp/basicun/basicun.html
通常のBASICソースには、べーしっ君に使えない命令が結構含まれています。
call run:
この命令を実行するだけで、BASICプログラムは、コンパイルされ、超高速に動作します。
call turbo on/off:
call turbo on:: この命令以降をコンパイルし実行します。
call turbo off:: コンパイル実行を終了します。
for_msx0/sensor/basicn at main · msx-sample-code-space/for_msx0 · GitHub
https://github.com/msx-sample-code-space/for_msx0/tree/main/sensor/basicn
CALL RUN(_RUN)。
2024R06-0416-TUE-0810
Commits · msx-sample-code-space/for_msx0 · GitHub
https://github.com/msx-sample-code-space/for_msx0/commits/main/?after=d23e3937e004fa41f2e6f45492beb6b34aa7df63+69
MSX0向けの情報を集めた場所との事です。サンプルコード集積所およびリンク集積所との事です。僕も参加したいのですが、ミスが多いので遠慮しています。
2024R06-0414-SUN-1616
IOT拡張命令 - ノード情報:
ノードリスト表示 TREE.BAS ノードを再帰的にスキャンしてリスト表示します。
『MSX0 Stack』の操作方法 - ソフトウェア #MSX - Qiita
https://qiita.com/ht_deko/items/8c20354b867b0d540805
CALL IOTPUT(パス名, 値) 'ノードに対して値を書き込みます。
CALL IOTGET(パス名, 変数) 'ノードから値を読み出します。
CALL IOTFIND(パス名, 数値変数) '対象のノードが持つアイテムの個数を取得します。
CALL IOTFIND(パス名, 配列変数 [,個数]) '対象のノードが持つアイテム名のリストを取得します。
CALL IOTINIT() 'シリアル⼊出⼒などの機能を初期化します。
"サンプルソースからIOT命令を書き出していましたが、最終的にサンプルコード自体をテキストに書き出しました。意味をとるにはコードを見ないといけませんから。"
「・ノード情報については ドキュメントフォルダにある 2_IoT_BASICノード情報.pdf を参照してください。
・実際のノードツリーは SAMPLE.DSK 内の TREE.BAS を実行して取得できます。シリアルコンソールやリモートコンソールで接続してリストを取得する事ができます。
・詳細な使い方については SAMPLE.DSK 内のソースコードを参考にしてください。」
参考)
【MSX0】IoT BASIC サンプルの移植【Turbo Pascal】 #Pascal - Qiita
https://qiita.com/ht_deko/items/2362488c5c99aec4afbf
18:26
INS:
BASICは行番号と文章でENTER(エンター)を押す事で保存します。INS(インサートキー)を押すと挿入モードに入ります。
20:09
TREE.BAS実行結果:
MobileFF: "これらのノードパスに_IOTGET()すると、16バイトのデータが得られる。(フォーマットは不明だ…" - Fedibird
https://fedibird.com/@mobileff/111084905329337405
「サンプルプログラムTREE.BASを実行すると出てくるノードパス
device/i2c_i/08
device/i2c_i/34
device/i2c_i/38
device/i2c_i/51
device/i2c_i/68
は何だろうと思って調べたところ、「_i」が示す通り内部デバイスとのI2Cで、この2桁数字は16進数なんですね。(0..9,a,b,c,d,e,f)
0x08 = Facesのキーボードユニット
0x34 = AXP192(電源管理ユニット)
0x38 = FT6336U(タッチパネル)
0x51 = BM8563(RTC)
0x68 = MPU6886(6軸加速度センサ:BatteryBottom2に搭載)
M5Stackに詳しい人ならすぐわかるのかもですがw」
『MSX0 Stack』の操作方法 - ハードウェア #MSX - Qiita
https://qiita.com/ht_deko/items/cdb1594e9879a5e9e660
「内蔵デバイス (充電端子接続含む) は IoT BASIC ノードの device/i2c_i/ に、Grove コネクタの PortA (赤) に接続したデバイスは device/i2c_a に列挙されます。」
M5Stackシリーズ x Grove拡張ユニット 組み合わせ方超入門 | マルツオンライン
https://www.marutsu.co.jp/pc/static/large_order/grove_221103
PortA(赤)(I2C), PortB(黒)(GPIO), PortC(青)(UART)
センサー紹介あり。
2024R06-0311-MON-0732
MSX-BASIC基本:
MSX BASIC言語の基本・命令を思い出しましょう(その1)! コマンドのPRINTやIFやGOTOを使ったくらいでやめてしまった方へ。初心者歓迎。 - ニャオニャオ21世紀
https://www.nyaonyao21.com/entry/2018/09/04/112247
INSキーで挿入ができます。
09:44
TeraTermとmsxtermについて(予定):
(18:16)
GitHub - akio-se/msxterm: CUI terminal software for MSX0.
https://github.com/akio-se/msxterm
msxtermがダウンロードできない場合はウイルスと検出されています。ウイルス対策ソフトを操作してください。
msxtermを実行可能に~ダウンロードしたmsxterm.exeをbasソースのあるフォルダにコピー。使用するときは、Windows Explorerのアドレスバーの右端あたりの空白を押してパス文字が反転状態になったらパスは消えますがそのままcmd[Enter]と入力。
> msxterm -f history.txt 192.168.*.*:2223
("history.txt"はコマンドヒストリーを記憶するファイルでお好きなファイル名で構いません。*はmsx0 m5stack core2の下部に出ている数字です。ipアドレスと言います。)
と入力[Enter]。msxtermを終了するときは、
> #quit
このmsxtermはEnterを送信してくれますので、複数行のコピペが可能です。
停止は、Ctrl+Cで行けたはず。
exe ファイルがウィルス扱いされる · Issue #2 · akio-se/msxterm · GitHub
https://github.com/akio-se/msxterm/issues/2
読み物。
2024R06-0223-FRI-1933
DSKファイル生成:
"BASファイルを入れたDSKファイルを作成するWindowsプログラムを教えていただきました、Disk-Managerというソフトです。BASファイルは、改行CR+LFもしくはCRで保存。SJIS, EUC-JP, UTF-8で確認。LFだけでは”Direct statement in file”エラー(?)になります。改行できずにフローする(?)わけではないみたいですが。"
Windowsのテキストエディタで入力したBASICプログラムをMSXエミュレータで動かす - プチコンで遊ぼう! (はてなブログ版)
https://eidaht.hatenablog.com/entry/20130714/1373805299
Software - LexLechz.at
http://www.lexlechz.at/en/software.html
Disk-Manager V0.17
"DiskExplorerというのもあります。"
MSX0 Stack で MSX-C ver1.2 のディスクを作る (C コンパイラを動かせるようにする) #C - Qiita
https://qiita.com/ht_deko/items/c81fdf6a9758cbf824ac
・DiskExplorer
・MSX Floppy Disk Manager
DiskExplorerの詳細情報 : Vector ソフトを探す!
https://www.vector.co.jp/soft/win95/util/se107750.html
DiskExplorer (EDITDISK.EXE)
2024R06-0221-WED-1336
Bottom2搭載のIMU:
IMU(Inertial Measurement Unit)はとても難しいので、全身脱力しつつ調べていきます。
慣性計測装置(IMU)の基本とセンサデバイスとの違い | 丸文株式会社
https://www.marubun.co.jp/products/4590/
①平行移動⇒加速度センサ、②回転⇒ジャイロセンサ
2024R06-0208-THU-0715
プログラムは〔Ctrl〕+〔Stop〕(MSX0 リモートコントロールパネルからは〔Ctrl〕+〔F12〕。〔Alt〕+〔F12〕で一時停止/再開。)で中断できます。10:35 ループ中のみならず、MSX0 リモートコントロールパネルではList表示でも停止はCtrl+F12、一時停止はAlt+F12?
『MSX0 Stack』の操作方法 - ソフトウェア #MSX - Qiita
https://qiita.com/ht_deko/items/8c20354b867b0d540805
付属の microSD に収録されているソフトウェア
開発ツールの組み合わせ
【MSX0】IoT BASIC サンプルの移植【Turbo Pascal】 #Pascal - Qiita
https://qiita.com/ht_deko/items/2362488c5c99aec4afbf
※ × になっているものは外部センサーが必要です。
(14:10)
SAMPLE.DSK:
ACCEL.BAS ◆加速度センサ〇 M5GO Battery Bottom2
ANALOG_G.BAS ◆アナログ入力×
DHT_KNJ.BAS ◆温度湿度センサ×
I2C.BAS ◆I2Cアクセス×
INFO.BAS ◆MSX0 Stack 情報〇
PERFORMC.BAS ◆負荷測定〇
RCONSOLE.BAS ◆リモートコンソールへの文字列送信〇
SEND2NET.BAS ◆サーバーとの送受信×
TOUCH_G.BAS ◆M5LCDタッチパネル〇
TREE.BAS ◆ノードリスト表示〇
WIFILVL.BAS ◆WiFi値取得〇
SYSMENU.BAS ◆設定値変更
by \DOC\SAMPLE.TXT
※ × になっているものは外部センサーが必要です。
16:41
正直、.BASファイルをパソコンのキレイなフォントで読まないと頭に入らないというのは言い訳?
17:06
MSXPen - MSX Developer Playground & Code Editor in the Browser
https://msxpen.com/
エディター付きWebMSX。
2024R06-0207-WED-1440
2024R06-0206-TUE-0832
WebMSX。MSX BASIC Versionが3.0/4.0ですね。基本練習にいいですね!バッテリーの消耗を気にしなくていいですね。
右下角の歯車アイコンで、[Select Machine]から[MSX2 Japan]に設定するとキーボード配列が日本語配列になります。
WebMSX&WindowsでBASICのループを中止する場合は、Ctrl+Pause/Break。エミュレーションの一時停止/再開はF8。
カセットテープに入れる場合のファイル名は拡張子(.BAS)を除いて6文字。メモリディスクは8文字。大文字小文字区別なし。
MSX-BASIC - Wikipedia
https://ja.wikipedia.org/wiki/MSX-BASIC
WebMSX
https://webmsx.org/
※ MSXプログラミングで必要なゲーム開発環境【エミュレータ前編】 - MSX-MAGAZINE.COM
https://msx-magazine.com/emulator1/
ダブルクォーテーションなどキーボード配列変更。
※ WebMSXの使い方 - なつみかん@はてな
https://tangerine.hateblo.jp/entry/2022/02/26/151603
※ WebMSXの使い方を調べてみました。 - ニャオニャオ21世紀
https://www.nyaonyao21.com/entry/2018/02/19/171536
プログラムコードをまとめて入力するには、Alt+B
MSX BASIC ゲームを作るときに便利なコピペサンプル - ニャオニャオ21世紀
https://www.nyaonyao21.com/entry/2019/03/23/090905
(2024R06-0207-WED-1440)
WebMSX&WindowsでBASICのループを中止する場合: Ctrl+Pause/Break。エミュレーターの一時停止/再開はCtrl+F8。
※ 1.2 MSX DISK-BASICの命令 - テクハンwiki
http://ngs.no.coocan.jp/doc/wiki.cgi/TechHan
http://ngs.no.coocan.jp/doc/wiki.cgi/TechHan?page=1%2E2+MSX+DISK%2DBASIC%A4%CE%CC%BF%CE%E1
※ FrontPage - MSX Datapack wiki化計画
http://ngs.no.coocan.jp/doc/wiki.cgi/datapack
MSX-Datapack マニュアル
MSX BASICでゲームをつくろう: 4月 2016
https://bps-basic.blogspot.com/2016/04/
https://bps-basic.blogspot.com/2016/04/bgm.html?m=1
>
2024R06-0117-WED-1809
GreenOwlさんのホームページをリンクさせて頂きました。問い合わせから事後報告メールを送信いたしました。
〇 暇ならオススメしたいゲームプログラミング | プログラミングとゲームの杜
https://www.greenowl5.com/gprogram/msx/basic_010.html
>
CC BY 2024 tDG.