LoginSignup
3
4

『MSX0 Stack』の操作方法 - ソフトウェア

Last updated at Posted at 2023-10-27

■ ソフトウェア

ソフトウェア関連です。

・収録ソフトウェア

付属の microSD に収録されているソフトウェアは次の通りです。

ディスク 内容 システム ドキュメント 備考
BLANK_DISK.DSK 空のディスクイメージ 2DD フォーマット (720KB)。
MSX_C.DSK MSX-C Ver1.2 MSX-DOS2 用。C コンパイラ。
MSX_C_LIB.DSK MSX-C Library C ライブラリ。
MSX_DOS_TOOLS.DSK MSX-DOS TOOLS DOS1 5, 6, 7 MSX-DOS 用。外部コマンド、スクリーンエディタ MED、M80 マクロアセンブラ、L80 リンカ付属。
MSX_DOS2_ENG.DSK MSX-DOS2 (英語) DOS2 9, 10 ROM カートリッジは内蔵。
MSX_DOS2_JPN.DSK MSX-DOS2 (日本語) DOS2 9, 10 ROM カートリッジは内蔵。
MSX_DOS2_TOOLS.DSK MSX-DOS2 TOOLS DOS2 11 MSX-DOS2 用。外部コマンド、スクリーンエディタ AKID、日本語スクリーンエディタ KID、M80 マクロアセンブラ、L80 リンカ付属。
MSX_SBUG.DSK MSX-SBUG 12 MSX-DOS 用 SBUG シンボリックデバッガ。
MSX_SBUG2.DSK MSX-SBUG2 13 MSX-DOS2 用 SBUG2 シンボリックデバッガ。
MSX0MENU.DSK MSX0 Stack システムメニュー DOS2 1 MSX System Unit1 (U1) の起動ディスクに指定されている。
SAMPLE.DSK IoT BASIC サンプルプログラム 2, 3, 4 DOC\SAMPLE.TXT が概要になっている。

・ドキュメントの番号は microSD の DOC\manual に格納されている PDF に付いている番号を表しています。
・※のものについては「アカシックライブラリ」にて無料で読む事ができます。

・開発ツール

開発ツールの組み合わせは次のようになります。

MSX MSX-DOS アセンブラ/
リンカ/エディタ
C コンパイラ C ライブラリ デバッガ
MSX1 MSX-DOS DOS TOOLS MSX-C ver1.1 MSX-C Library SBUG
MSX2 / 2+ MSX-DOS2 DOS2 TOOLS MSX-C ver1.2 MSX-C Library SBUG2

MSX-C ver1.1 が提供されておらず、ver1.2 の標準ライブラリをリンクした場合に生成される実行形式ファイルは MSX-DOS2 でしか動作しません。つまり、(現状の) MSX0 Stack の収録物では、C コンパイラを用いて MSX1 で動作する実行形式ファイルを作成する事はできない事になります。

MSX-C ver1.1 については提供方法を検討中との事です。

See also:

・ディスクからの起動

FD イメージを microSD の DSK フォルダに格納し、[システムメニュー | FD 変更] でディスクを指定して再起動します 1

FD イメージをイジェクトするには [Setup Utility | MSX System Unit0] でしか行えませんが、MSX-DOS を起動したくないだけであれば、空のディスクイメージである BLANK_DISK.DSK を指定すればよいでしょう。

MSX0 Stack で扱える FD イメージは 2DD (720KB) ベタ形式です。ファイルサイズは 737,280 bytes になります。

・ROM カートリッジからの起動

現状、現状では任意の ROM イメージを扱う事ができません。

[システムメニュー | カートリッジ変更] で ROM カートリッジを選択して再起動します 1

・MSX-DOS <-> BASIC への遷移

MSX-DOS から BASIC へは BASIC で移動できます。

MSX-DOS version 1.03
Copyright 1984 by Microsoft

COMMAND version 1.11

A>BASIC

BASIC から MSX-DOS へは CALL SYSTEM で移動できます 2

MSX BASIC version 2.0
(C)Copyright
Microsoft 1983-2023
IoT Media Lab 2023
MSX Licensing Corp 2016-2023

25335 Bytes free
Disk BASIC version 2.00
Ok
CALL SYSTEM

MSX-DOS2 の場合、CALL SYSTEM で遷移した時に REBOOT.BAT が実行されます。

・BASIC ソースの閲覧

BASIC 上では LIST で閲覧できますが、中間コード形式でセーブされている *.BAS ファイルはテキストエディタで読む事ができません。

LOAD "SYSMENU.BAS"
SAVE "SYSMENU2.BAS",A

image.png

BASIC で LOAD し、別名でアスキー形式セーブ (,A を指定) しましょう。

A:>LIST SYSMENU.BAS > SYSMENU2.BAS

『MSX-DOS TOOLS』や『MSX-DOS2 TOOLS』に含まれる LIST.COM を使って MSX-DOS 上から変換する事もできます。

・MSX べーしっ君 (BASIC コンパイラ)

『MSX べーしっ君 (X-BASIC)』の ROM カートリッジは内蔵されています。

べーしっ君には 3 種類あります。MSX0 Stack のものは、付属のマニュアルこそ無印の『MSX べーしっ君』ですが、搭載されている ROM は MSXturboR 対応の『MSX べーしっ君 たーぼ』との事です。

製品名 Ver 対応機種 形態 価格
MSX べーしっ君 1.0 MSX, MSX2 ROM ¥4,500
MSX べーしっ君 ぷらす 2.0 MSX, MSX2, MSX2+ ROM ¥6,800
MSX べーしっ君 たーぼ 3 2.1 MSX, MSX2, MSX2+, MSXturboR Disk ¥3,500

BASIC プログラムを RUN ではなく CALL RUN で実行すると、BASIC コンパイラを通して実行されます 2

BASIC コンパイラが実行できない命令が含まれるプログラムの場合、CALL TURBO ONCALL TURBO OFF で囲った部分だけをコンパイラに処理させる事もできます。この場合には CALL RUN ではなく RUN で実行します。

10 PRINT "Hello,"
20 CALL TURBO ON
30 PRINT "world."
40 CALL TURBO OFF
50 END

BASIC コンパイラの詳しい使い方はドキュメントを参照してください。

ドキュメントは microSD の DOC\manual に格納されている 14_MSXべーしっ君.pdf です。

掲載号 ページ 内容
1986/11 pp.187-190 ・コンパイラに挑戦: BASIC コンパイラ (MSX べーしっ君)
1986/12 pp.215-217 ・コンパイラに挑戦: BASIC コンパイラ (MSX べーしっ君) Part II
1987/03 pp.191-192 ・べーしっ君の使い方 (第 1 回)
1987/04 pp.191-192 ・べーしっ君の使い方 (第 2 回)
1987/05 pp.172-175 ・べーしっ君の使い方 (第 3 回)
1987/06 pp.174-177 ・べーしっ君の使い方 (最終回)
1992/05 pp.50-69 ・MSX べーしっ君たーぼ
1992/07 p.145 ・MSX べーしっ君たーぼ 補足・訂正

・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 内のソースコードを参考にしてください。

他の言語からの利用

MSX-BASIC 以外から使う方法もあります。

言語 説明
BASIC コンパイラ BACON (Github: @hra1129)
C LibIoT (Github: @renatus-xxxx)
Turbo Pascal IOT.LIB (Qiita: @ht_deko)
IOT.LIB (Github: @ht_deko)

See also:

・日本語入力/表示

『MSX0 Stack』には漢字 ROM が搭載されており、日本語の入力/表示が可能です。

  • 実機では〔かな〕英数入力 ⇔ かな/カナ入力 の切り替えで、〔CapsLock〕キーで かな入力 ⇔ カナ入力 切り替え。
  • 実機 (MSX2 以降) では〔Shift〕+〔かな〕英数入力 ⇔ ローマ字入力(かな/カナ) の切り替えで、〔CapsLock〕キーで ローマ字入力 (かな) ⇔ ローマ字入力 (カナ) 切り替え。
  • 実機では 漢字モード 中に〔Ctrl〕+〔Space〕日本語入力 (全角) の ON / OFF 切り替え。入力方法 (かな/ローマ字) や文字種 (Aあア) は切り替え前のものを引き継ぐ。
  • 日本語入力 時の文字種が英数以外の場合に 単漢字変換 が利用可能。

現状の『MSX0 Stack』だとリモートコントロールパネルでのみ日本語入力が可能です 4

image.png

日本語入力 / 表示が可能な 漢字モード への移行は

BASIC: CALL KANJI モード (0~3)
MSX-DOS2: KMODE モード (0~3)

元に戻すには

BASIC: CALL ANK
MSX-DOS2: KMODE OFF

となります 2

漢字ドライバ

MSX-DOS2 で KMODE を実行して 漢字ドライバが組み込まれていない! と怒られた場合には 2 通りの対処方法があります。

A> kmode 0
*** Kanji driver is not installed
*** use "CALL KANJI" under BASIC.

A>

・BASIC で CALL KANJI を実行する (そして CALL SYSTEM で戻ってくる)。
エラーメッセージの通りですね。なお、MSX-DOS(1) には KMODE はないのでこの方法で漢字モードにするしかありません (多分)。

A> BASIC
MSX BASIC version 2.0
(C)Copyright
Microsoft 1983-2023
IoT Media Lab 2023
MSX Licensing Corp 2016-2023

25335 Bytes free
Disk BASIC version 2.00
Ok
CALL KANJI

Ok
CALL SYSTEM

・任意の漢字モードで起動するようにディスクのブートセクタを書き替える。
毎度毎度 BASIC に移動するのが面倒な場合に。

A> KMODE OFF /S
ドライブ A: のディスクは日本語 MSX-DOS2 しか立ち上げられなくなります
何かキーを押して下さい

A>

ブートセクタを書き替えるための KMODE の書式は次の通りです。

KMODE [数値|OFF] /S [d:]

数値: 0~3 (漢字モード) | OFF: ANK 指定
d: ドライブ。未指定の場合はカレントドライブ。

最初から KMODE が使えるようになります。

・ディスクイメージの操作

FD イメージの操作には『DiskExplorer (EDITDISK.EXE)』が紹介されています。

image.png

・ブランクディスク

ブランクディスクは microSD の DSK フォルダにある BLANK_DISK.DSK (2DD / 720KB) をコピーして作ります。

現状、MSX-DOS の FORMAT コマンドや DISK BASIC の CALL FORMAT 2は動作しません。

Disk BIOS が有効 (MSX0 Stack では有効) かつ MSX-DOS のシステムディスクになっていないディスクに AUTOEXEC.BAS という名前の BASIC プログラムファイルを置いておくと起動時に自動実行されます。

・MSX-DOS のバージョンによる違い

ざっくりとした違いです。

MSX-DOS MSX-DOS2
最低動作環境 MSX MSX2
DOS ROM 不要 必要
Disk BASIC ver 1.0 ver 2.0
必要メモリ 64KB 以上 128KB 以上
階層化ディレクトリ なし あり
RAM ディスク なし あり
環境変数 なし あり
REBOOT.BAT なし あり
ヒストリ機能 なし あり

・MSX-DOS1 の起動ディスク

MSX-DOS1 の起動ディスクは microSD の DSK フォルダにある MSX_DOS_TOOLS.DSK をコピーして作ります。

image.png

MSX_DOS_TOOLS.DSK をコピーして MSX_DOS.DSK にリネームしたものを『DiskExplorer』で開き、MSXDOS.SYSCOMMAND.COM を除いて削除します。

MSXDOS.SYSCOMMAND.COM がルートディレクトリの最初の方にエントリされてないと許せない方 5 はブランクディスクに MSXDOS.SYSCOMMAND.COM をコピーして起動ディスクを作るか、Rewty で並べ替えてください。

・MSX-DOS2 の起動ディスク

MSX-DOS2 の起動ディスクは microSD の DSK フォルダにある MSX_DOS2_ENG.DSK または MSX_DOS2_JPN.DSK をコピーして作ります。

image.png

MMSX_DOS2_xxx.DSK をコピーして MSX_DOS2.DSK にリネームしたものを『DiskExplorer』で開き、MSXDOS2.SYSCOMMAND2.COM を除いて削除します。

MSXDOS2.SYSCOMMAND2.COM がルートディレクトリの最初の方にエントリされてないと許せない方 5 はブランクディスクに MSXDOS2.SYSCOMMAND2.COM をコピーして起動ディスクを作るか、Rewty で並べ替えてください。

・ディスク機能の無効化

MSX0 Stack では 2 つのディスクドライブ (A:, B:) が有効になっています。挙動を見る限り、B: ドライブは仮想ドライブ (2 ドライブシミュレータ) ではなさそうです。

2 ドライブシミュレータ というのは、1 台のドライブを都度切り替えて 2 台あるかのように振る舞う機能です。B: ドライブへのアクセスはディスク交換で対応します。

MSX では次のようなドライブ構成ができます。MSX0 Stack では B: ドライブの FD イメージを変更する UI がないため、(現状) B: ドライブは使えないものと思われます。

ドライブ A: ドライブ B:
2 ドライブ 実ドライブ 実ドライブ
2 ドライブ
シミュレータ
実ドライブ 仮想ドライブ
1 ドライブ 実ドライブ N/A
ドライブなし N/A N/A

起動時 (MSX ロゴが表示された直後) に特定のキーを押しっぱなしにして起動する事により、ディスクドライブを切り離す事ができます。

実機 MSX0
2 ドライブ
1 ドライブ 〔Ctrl〕 〔Fn〕を押して〔C〕を押しっぱなし 4
ドライブなし 〔Shift〕 〔Alt〕を押しっぱなし

BASIC で確認すると判りやすいです。ユーザーエリアのサイズに注目してください。

image.png

1 ドライブにするとユーザーエリアが増えます。但し Break が入っています。MSX-DOS で B: にアクセスすると Invalid Drive のエラーになります。

image.png

ドライブなしにすると純粋な ROM Basic が起動します (Disk BASIC の表示が消える)。ユーザーエリアは最大の 28,815 bytes になっています。

image.png

MSX0 Stack では CMT (カセットテープ) が使えないので、ユーザーエリアが増えても…🤔

Disk BIOS を無効にすると、結果的に AUTOEXEC.BAS の実行をキャンセルする事ができます。ただ、ディスクを読めないので、あまり使い道はないかと思います。

・MSX-DOS と CP/M-80 の関係

MSX-DOS は CP/M-80 (v1.4) と高い互換性があります。

MSX-DOS のコマンドは MS-DOS に寄せてあるので、とても使いやすいです。以下に MSX-DOS の内部コマンドと、対応する CP/M-80 のコマンドを示します。

機能 CP/M-80 MSX-DOS
ファイル: リスト表示 DIR DIR
ファイル: 削除 ERA DEL / ERA / ERASE
ファイル: コピー PIP (外部) COPY
ファイル: リネーム REN REN
ファイル: メモリをセーブ SAVE
ファイル: データの表示 TYPE TYPE
日付/時刻: 日付表示/設定 DATE
日付/時刻: 時刻表示/設定 TIME
バッチファイル: 一時停止 PAUSE
バッチファイル: コメント REM
ディスク: フォーマット FORMAT
ディスク: ベリファイ VERIFY
バッチファイルの実行 SUBMIT (外部)
BASIC 実行 MBASIC など (外部) BASIC
画面の文字数変更 MODE

「コマンドが違うのに互換性?」と思われたかもしれませんが、実は CP/M-80 用の実行形式ファイル (*.COM) の多くは MSX-DOS 上でそのまま動作します。なので、MSX-DOS は「MS-DOS の操作性を備えた CP/M-80」 とも言えます。

CP/M-80 における外部コマンド (トランジェントコマンド) とは、実行形式ファイル (*.COM) 事です。実行形式ファイルなしで実行できるのが DIR のような内部コマンド (ビルトインコマンド) です。例えば CP/M-80 でファイルコピーをしたい場合には PIP.COM が必要となります。

みんな大好き Turbo Pascal とかね。

image.png

・Borland 謹製の MSX-DOS 用『Turbo Pascal 3.0』が Philips から発売されていたようです (蘭∶ NMS 8901 / 伊: VG 8105)。へぇ~。

索引

  1. 本体上部のリセットボタンを押して再起動する事もできます 2

  2. BASIC の CALL_ で置換可能です。例えば CALL SYSTEM_SYSTEM と同じになります。 2 3 4

  3. 『MSX べーしっ君 たーぼ』を MSXturboR 以外で動かすと『MSX べーしっ君 ぷらす』同等品となります。

  4. Keyboard Face では〔Fn〕〔C〕(〔Ctrl〕+〔Stop〕) を利用して、〔Ctrl〕キーを押す事ができますが、理屈上 Break が一回含まれてしまいます。 2

  5. MS-DOS の使い過ぎです。IO.SYS とか IO2.SYS はありませんよ? 2

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