< fantastic_next_gen_msx_001.html > < linkdetail01.htm > < indextable01.htm > < index.html >

tack Developers Group Homepage!

<<< msxbasic_01_001.html >>>
<<< MSX-IOTBASIC >>>


(KENT-WEB-San Dream Counter... 2024R06-0223-FRI-2049)

Link:
GitHub - msx-sample-code-space/for_msx0: MSX0のサンプルコード集
https://github.com/msx-sample-code-space/for_msx0
>


2024R06-0531-FRI

2024R06-0531-FRI-1754
BASIC Command:

renum 500,100,10
行番号 現100番から以降を500番からで振り直し、10ずつステップアップ。

list
100 'RENUM 解説
110 CLS
120 LOCATE 0,0
130 PRINT "Hello, World!"
140 END
renum 500,110,10
100 'RENUM 解説
500 CLS
510 LOCATE 0,0
520 PRINT "Hello, World!"
530 END
のはず。

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

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

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-0520-MON

2024R06-0223-FRI-20492024R06-0520-MON-1456 000171。


2024R06-0518-SAT

2024R06-0518-SAT-1046
ソースコードがわからない:

当時BASICをかじった人は、わからなくてもわかるところから分析を始めていきましょう。構造の理解が肝心です。コメントを加筆していきます。(うん、誰だって同じ?基本の命令を解説して構造の区分けの仕方を教えてよって?)
僕はソースコードを分割し簡素化して値を確認しながらコードを確認していきます。最終的には完全なソースにPRINT文を加えて値を確認していきます。
IoT電子工作で大きな課題なのは、IOT命令で得た値の分析です。
(21:14)
書式が乱れてしまう理由がなかなか判明しないです。
(2024R06-0520-MON-0816)
キャラクターコードでCLSなどの制御系のものが実行されてしまうからでしょうか?


2024R06-0517-FRI

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

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

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

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」を試させていただきました。


2024R06-0511-SAT

2024R06-0511-SAT-1854
BASIC高速化:

2001年3月の小ネタ
https://fukuchi.org/coneta/2001-03.html
「N-BASICやMSX BASICでは、特に明示しない限り、変数は全て浮動小数型として扱われます。 このデフォルト時の挙動を変える命令が "DEFxxx" で、"DEFINT" は 『型が明示されていない変数はデフォルトで整数型として扱う』という意味になります。」

DEFINT A-Z - Google 検索
https://www.google.com/search?q=DEFINT+A-Z&oq=DEFINT+A-Z

MSX-BASIC/DEFINT.txt at master · fu-sen/MSX-BASIC · GitHub
https://github.com/fu-sen/MSX-BASIC/blob/master/DEFINT.txt
コマンド解説。「DEFINT を実行する事で、 変数のメモリ管理が少なくなり処理が高速になる事から、 初期設定として DEFINT A-Z とする手段が有効です。」
(21:43)
みんな同じ疑問があると思う。A-Zって一字のみ?有効な変数とはMSX-BASICでは2文字らしい。そして数字は2文字目のみ。

パソコンミニ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

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

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

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

2024R06-0117-WED-1809

GreenOwlさんのホームページをリンクさせて頂きました。問い合わせから事後報告メールを送信いたしました。

〇 暇ならオススメしたいゲームプログラミング | プログラミングとゲームの杜
https://www.greenowl5.com/gprogram/msx/basic_010.html
>

(... 2024R06-0117-WED-1809)

CC BY 2024 tDG.