■ ソフトウェア
ソフトウェア関連です。
・収録ソフトウェア
付属の 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 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
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 ON
と CALL 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。
日本語入力 / 表示が可能な 漢字モード への移行は
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)』が紹介されています。
・ブランクディスク
ブランクディスクは 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
をコピーして作ります。
MSX_DOS_TOOLS.DSK
をコピーして MSX_DOS.DSK
にリネームしたものを『DiskExplorer』で開き、MSXDOS.SYS
と COMMAND.COM
を除いて削除します。
・MSX-DOS2 の起動ディスク
MSX-DOS2 の起動ディスクは microSD の DSK
フォルダにある MSX_DOS2_ENG.DSK
または MSX_DOS2_JPN.DSK
をコピーして作ります。
MMSX_DOS2_xxx.DSK
をコピーして MSX_DOS2.DSK
にリネームしたものを『DiskExplorer』で開き、MSXDOS2.SYS
と COMMAND2.COM
を除いて削除します。
・ディスク機能の無効化
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 で確認すると判りやすいです。ユーザーエリアのサイズに注目してください。
1 ドライブにするとユーザーエリアが増えます。但し Break が入っています。MSX-DOS で B:
にアクセスすると Invalid Drive のエラーになります。
ドライブなしにすると純粋な ROM Basic が起動します (Disk BASIC の表示が消える)。ユーザーエリアは最大の 28,815 bytes になっています。
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 とかね。
・Borland 謹製の MSX-DOS 用『Turbo Pascal 3.0』が Philips から発売されていたようです (蘭∶ NMS 8901 / 伊: VG 8105)。へぇ~。
索引
- ■ メイン
- ■ ハードウェア
- ■ システムメニュー
- ■ Setup Utility
- ■ リモート接続
- ■ ソフトウェア