MZ-700用BASICインタプリタ
MZ-700で動くBASICインタプリタを書いてみました。文法はHu-BASIC準拠を目指していますが、恐らくバグや挙動の違いがたくさんあると思うので、気付いた点があれば教えてもらえると幸いです。MITライセンスでの利用が可能です。
(2025.7.31 Ver.250731を公開しました。)

MZ-700用BASICインタプリタ
目次
- MZ-700用BASICインタプリタ (2025.7.31バージョン) をダウンロードして展開します。
- 展開した中にあるbasic.mztもしくはbasic.wavをロードしてください。
詳細については各エミュレータのマニュアルなどを参照してください。
- 文法はMZ-700用Hu-BASICにだいたい準拠したつもりです。
- 実機での動作は未検証です。エミュレータとMZ-NEW MONITORを使って動作確認しています。
- 以下の命令・機能には未対応です。
- Hu-BASICでRESERVED FEATUREになると思われる命令 (OFF, TRACE, ERASE, PUSH, POP, RANDOMIZE, GET, PUT, NAME, LSET, RSET, VDIM)
- テープでは使えなそうな命令 (CHAIN, FIELD, SET, KILL, DSKF, FPOS, LOC, LOF, ATTR$)
- セーブ・ロード時のパスワード
- テープ以外の外部記憶デバイス
- IOCSとしての利用 (ごく一部のみ実装)
- CTRL+カナの他に、SHIFT+カナでも平仮名入力モードに移行します。(手元のPCキーボードとエミュレータの相性が悪かったため)
Hu-BASIC用のゲームが公開されているサイトを紹介します。ありがたく遊ばせてもらってます。みんなも遊ぼう!
BASICプログラムを書いたテキストファイルをMZT形式のHu-BASIC用ファイルに変換するプログラムを同梱しました。使い方は、コマンドラインより
hu2mzt [-w] [-e] [-s] title infile outfile
のように打ち込みます。Windows以外のOSでは、src/hu2mzt.cをコンパイルして使ってください。出力ファイルは確認なく上書きするので注意してください。オプションは文字コード指定 (UTF-8, EUC-JP, Shift_JIS) です。無指定の場合はシステムの文字コードに従います。
- 実数値はBASICインタプリタ上での値と一致しない可能性があります。特に倍精度は桁が足りていないので一致しないものと思ってください。(0.1#など)
- 省略形 (P.でPRINTなど) は使えません。
- アスキーコード$20-$5D ( !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]) は半幅文字でも全幅文字でも入力できますが、対応が怪しい記号もあるので半幅の方が無難かも。
- 仮名文字、漢字、πはそのまま全幅文字で入力してください。濁音・半濁音は自動的に分割されます。
- ""中のアルファベット小文字と平仮名は自動的に顔マークで囲われます。""外のアルファベット小文字は大文字になります。
- {}の中に2桁の16進数を書くと、対応するアスキーコードとして扱われます。16進数以外の文字は無視されます。(例: {79}{7a}{7b}、{797A7B}、{79,7a,7b}はいずれも時分秒となる)
- コントロール用反転記号はアスキーコードでは$11-$16ですが、入力時はHu-BASICの格納用コードでの指定になります。
- 反転矢印 (アスキーコード$11-$14) は「下上右左」もしくは{1f}{1e}{1c}{1d}で入力できます。
- 反転H (アスキーコード$15) は{0b}で入力できます。
- 反転C (アスキーコード$16) は「©」(著作権マーク) もしくは{0c}で入力できます。
- アルファベットや仮名を囲う顔文字を直接指示する場合はは{10}と{11}で入力できます。
- ^は↑ ($5E) と判定されます。
- $7Dの円記号は全幅の「¥」で入力できます。
- $85のドットは全幅の「・」(中黒、中点) で入力してください。「.」は$2Eのドットになります。
- $5E,$5F,$69,$80,$C0,$C6,$C8,$CC,$F1,$F6,$F7は「↑←蛇↓→網■□●×○」で入力できます。
- 罫線 ($CB,$CD,$CE,$D0,$D1,$D2,$D3,$DD,$E0,$FB,$FD) は細線でも太線でも入力できます。
- トランプマーク ($E1,$F3,$F8,$FA) は「▲▼★◆」で入力できます。
MZT形式のファイルをwav形式の音声ファイルに変換するプログラムを同梱しました。ただしインフォメーションブロックとデータブロック各1回ずつの出力です。使い方は、コマンドラインより
mzttowav [options] infile.mzt outfile.wav
のように打ち込みます。Windows以外のOSでは、src/mzttowav.cをコンパイルして使ってください。出力ファイルは確認なく上書きするので注意してください。オプションは以下の通りです。
- -rオプション
- サンプリングレートを整数値で指定します。デフォルトは -r 24000です。
- -qオプション
- 量子化ビット数を指定します。8か16です。デフォルトは-q 8です。
- -cオプション
- チャンネル数を指定します。1か2です。デフォルトは-c 1 (モノラル) です。
- -wオプション
- ビット=0の時のパルス幅をμsec単位の整数値で指定します。ビット=1の時は指定値の2倍のパルス幅になります。デフォルトは-w 250です。
- -sオプション
- ストップビット数を指定します。デフォルトは-s 0 (ストップビット無し) です。
- -dオプション
- 対象ファイルをインフォメーションブロック無しのデータと見なし、データブロックのみの波形を出力します。デフォルトはオプション無し (インフォメーションブロック+データブロックの出力) です。
- 「MZ-700HuBASIC(パソコンライブラリ;14)」, 戸川隼人, サイエンス社, 1983.
- 「パソコン活用入門:MZ-700/Hu-BASICからの出発」, 沢栗裕二/山内新六, 大河出版, 1983.
- 「ザ・パソコンBASIC:SHARP MZ-700シリーズ わかりやすさ10倍楽しさ20倍」, 岡崎光男/飯島弘文, 広済堂出版, 1983.
- 「ADVANCED MZ-700」, 日本ソフトバンク, Oh!MZ第4巻第4号, 1985.
- 「MZ-700 HuBASIC マニュアルにない命令群」, 風間浩, Oh!MZ, 日本ソフトバンク, 1983年6月号.
- 「MZ-700(Hu-BASIC) 逆アセンブラの作成とその応用例」, 青木孝, Oh!MZ, 日本ソフトバンク, 1983年5月号.
- 「待望のHuBASIC V2.0登場 MZ-2000のパワーアップ」, 渡辺健, Oh!MZ, 日本ソフトバンク, 1983年5月号.
- We Love MZ-700
- Enri's Home PAGE : mz-80k
- Oh!石@RetroPC.NET : シャープ博物館
- mieki256's Homepage : Hu-BASICの記録フォーマットについてメモ
- AKD's site : MZTファイルの仕様について覚書
- SnailBarbarianMacho・GitHub : Joystick MZ-1X03 test
- Detailed information about the Sharp MZ40K, MZ80K, MZ80A / MZ1200, MZ80B, MZ700, MZ800 / MZ1500, MZ3500, MZ5600 / MZ6500 : Control characters for the plotter Sharp MZ-1P01
トップ > 雑多なもの > MZ-700用BASICインタプリタ