
Mz-2000
yanataka60/MZ-2000_SD
MZ-80B、MZ-2000、MZ-2200でSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです。

MZ-80B、MZ-2000、MZ-2200でSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです。
MZ2000 SD is an open-source printed circuit board by yanataka60, from the yanataka60/MZ-2000_SD repository on GitHub, published under the MIT licence. It is a 2-layer board of 100 × 100 mm with 30 parts on 82 nets, routed with 1,252 tracks and 38 vias.
It is built around the 74LS245SC, 74LS04PC and 74LS273PC, with the 74LS30PC and 74LS10PC among its other parts. Its parts include 11 capacitors, 11 ICs, 3 connectors and 1 switch. It belongs with the AVR (ATmega, ATtiny) boards of this library.

MZ-80B、MZ-2000、MZ-2200でSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです。
MZ-80B、MZ-2000、MZ-2200では「/」キーを押しながら電源を入れる、又は「/」キーを押しながらIPLボタンを押すことでI/Oデバイスとして繋いだROMからプログラムを読み込ませて起動する機能があります。
この機能を使ってSD-CARDからアプリケーションを起動させる機能を持たせたMONITOR SB-1520(MZ-80B)、MONITOR 1Z-1Z001M(MZ-2000)をROM起動させます。
SD対応MONITORからはFD又はFDLコマンドでSDからアプリケーションをLOAD実行ができます。
LOAD実行範囲は、0000h~F7FFhです。アプリケーション、ゲームを起動させるにはほぼ問題ないと思います。
(2023.1.1)FDコマンドでの読み込み実行で読み込み終了アドレスがF800h以降であっても読み込みスタートアドレスが12A0h以降だった場合に限りFFFFhまでの読み込みに対応しました。
なお、アプリケーション中でのSD-CARDとのロード、セーブについては、アプリケーションごとにSD-CARD対応化を行う必要があります。
EXPANSION UNITが接続されていないMZ-2000、MZ-2200でも使えます。
MZ-2500の80Bモード、2000モードでも使えます。
現在、アプリケーション中でのSD-CARDとのLOAD、SAVEに対応できているものは以下のとおりです。
| アプリケーション名 | 備考 |
|---|---|
| BASIC MZ-1Z001 | |
| BASIC MZ-1Z002 | |
| 16BIT BASIC 1Z-012 | |
| MZ-LOGO V1.0 | |
| MZ-LISP | I/O '85/3月号 |
| S-OS SWORD TAPE版 | Oh!MZ '86/2月号 |
| TS-2000 | I/O '82/12月号 |
| BASE | I/O '83/1月号 |
| WICS | I/O '83/2月号 |
| EDASM | Oh!MZ '85/1月号 |
| TTL | Oh!MZ '84/10月号 |
| アプリケーション名 | 備考 |
|---|---|
| BASIC SB-5520 | |
| MZ-LISP | I/O '85/3月号 |
| FORTRAN | I/O別冊MZ-80B活用研究 |
| S-OS SWORD TAPE版 | Oh!MZ '86/2月号 |
| TS-1000 | I/O '82/2月号 I/O別冊MZ-80B活用研究 |
| WICS | I/O '82/3月号 I/O別冊MZ-80B活用研究 |
| TTL | Oh!MZ '84/10月号 |
なお、Arduino、ROMへ書き込むための機器が別途必要となります。
2枚構成のRev2.3(Rev3.3)と1枚構成のRev4.3があります。
Rev2.3(Rev3.3)は手元にSD-CARDが置ける、拡張ボックスが無くてもMZ-2000に装着が可能です。
Rev4.3は拡張ボックス専用でSD-CARDが背面にいってしまいますが、すっきりと収納できます。
好きな方を選択してください。
注1)MZ-2000_SD(SD-CARD UNIT基板)でU5 GAL22V10をTTLに置き換えたRev3.3基板のKiCadデータを追加しました。後述「MZ-2000_SD(SD-CARD UNIT基板)Rev3.3」を参照してください。
注2)MZ-80Bに拡張I/Oポートが装備されていない場合の接続方法については後述「MZ-80Bの拡張I/Oポートを使わずに接続する場合」を参照してください。
KiCadフォルダ内のMZ-2000_EXT-BOARDフォルダのMZ-2000_EXT-BOARD.pdf、MZ2000_SDフォルダのMZ2000_SD.pdfを参照してください。
インタフェース基板回路図
SD-CARD UNIT Rev2.3基板回路図

| 番号 | 品名 | 数量 | 備考 |
|---|---|---|---|
| J2 | 2x22Pinコネクタ | 1 | 秋月電子通商 PH-2x40SGなど |
| J4 | DCジャック | 1 | 秋月電子通商 MJ-179PHなど |
| J5 | 2x22Pinコネクタ | 1 | 秋月電子通商 PH-2x40RGなど(EXPANSION UNITを使う場合には必要ありません) |
| S1 | 3Pスライドスイッチ | 1 | 秋月電子通商 SS12D01G4など |
| 番号 | 品名 | 数量 | 備考 |
|---|---|---|---|
| J1 | 2x22Pinコネクタ | 1 | 秋月電子通商 PH-2x40RGなど |
| J2、J3のいずれか | |||
| J2 | Micro_SD_Card_Kit | 1 | 秋月電子通商 AE-microSD-LLCNV (注1) |
| J3 | MicroSD Card Adapter | 1 | Arduino等に使われる5V電源に対応したもの (注3) |
| U1,U2 | 74LS273 | 2 | |
| U3 | 8255 | 1 | |
| U4 | Arduino_Pro_Mini_5V | 1 | Atmega328版を使用 168版は不可。(注2) |
| U5 | GAL22V10 | 1 | |
| U6 | 27256/29C256/27512/27C512相当品 | 1 | 27256/29C256を使うときは、S1を5V側にして使うこと。28C256はピン配置が違うので使えません。 |
| U9 | 74LS245 | 1 | |
| C1 | 電解コンデンサ 16v100uF | 1 | |
| C2-C7 | 積層セラミックコンデンサ 0.1uF | 6 | |
| S1 | 3Pスライドスイッチ | 1 | 秋月電子通商 SS12D01G4など |
| ピンヘッダ | 2Pin分 | Arduino_Pro_MiniにはA4、A5用のピンヘッダが付いていないため別途調達が必要です 秋月電子通商 PH-1x40SGなど | |
| ピンソケット(任意) | 26Pin分 | Arduino_Pro_Miniを取り外し可能としたい場合に調達します 秋月電子通商 FHU-1x42SGなど |
注1)秋月電子通商 AE-microSD-LLCNVのJ1ジャンパはショートしてください。
注2)Arduino Pro MiniはA4、A5ピンも使っています。
注3)Arduino等に使われる5V電源に対応したMicroSD Card Adapterも正しく信号を繋げば使えるとご報告いただきました。
MZ-2000_SD(SD-CARD UNIT基板)Rev2.3のU5 GAL22V10が以下の部品に置き換わっています。以下の部品以外はMZ-2000_SD(SD-CARD UNIT基板)Rev2.3の説明を参照してください。
| 番号 | 品名 | 数量 | 備考 |
|---|---|---|---|
| U5 U7 | 74LS04 | 2 | |
| U8 U11 | 74LS30 | 2 | |
| U10 | 74LS10 | 1 | |
| C8-C11 | 積層セラミックコンデンサ 0.1uF | 4 |
EXT-BOARDとSD-CARD UNIT基板Rev3.3を1枚の基板とした拡張スロット装着専用の基板となります。
MZ-2000、MZ-2200ならEXPANSION UNIT、MZ-80Bなら拡張I/Oポート、MZ-2500なら拡張ユニットが必要です。
MZ-2000_SD(SD-CARD UNIT基板)Rev2.3のU5 GAL22V10がTTLに置き換わっています。
また、J1はカードエッジになっていますので「2x22Pinコネクタ」は必要なく、EXT-BOARDを必要としないのでフラットケーブルも不要です。
| 番号 | 品名 | 数量 | 備考 |
|---|---|---|---|
| J5、J6のいずれか | |||
| J5 | Micro_SD_Card_Kit | 1 | 秋月電子通商 AE-microSD-LLCNV (注1) |
| J6 | MicroSD Card Adapter | 1 | Arduino等に使われる5V電源に対応したもの (注3) |
| U1,U2 | 74LS04 | 2 | |
| U3,U4 | 74LS30 | 2 | |
| U5 | 74LS10 | 1 | |
| U6,U7 | 74LS273 | 2 | |
| U8 | 74LS245 | 1 | |
| U9 | 27256/29C256/27512/27C512相当品 | 1 | 27256/29C256を使うときは、S1を5V側にして使うこと。28C256はピン配置が違うので使えません。 |
| U10 | 8255 | 1 | |
| U11 | Arduino_Pro_Mini_5V | 1 | Atmega328版を使用 168版は不可。(注2) |
| C1 | 電解コンデンサ 16v100uF | 1 | |
| C2-C11 | 積層セラミックコンデンサ 0.1uF | 10 | |
| S2 | 3Pスライドスイッチ | 1 | 秋月電子通商 SS12D01G4など |
| ピンヘッダ | 2Pin分 | Arduino_Pro_MiniにはA4、A5用のピンヘッダが付いていないため別途調達が必要です 秋月電子通商 PH-1x40SGなど | |
| ピンソケット(任意) | 26Pin分 | Arduino_Pro_Miniを取り外し可能としたい場合に調達します 秋月電子通商 FHU-1x42SGなど |
注1)秋月電子通商 AE-microSD-LLCNVのJ1ジャンパはショートしてください。
注2)Arduino Pro MiniはA4、A5ピンも使っています。
注3)Arduino等に使われる5V電源に対応したMicroSD Card Adapterも正しく信号を繋げば使えるとご報告いただきました。
J3に取り付けます。
MicroSD Card Adapterについているピンヘッダを除去してハンダ付けするのが一番確実ですが、J3の穴にMicroSD Card Adapterをぴったりと押しつけ、裏から多めにハンダを流し込むことでハンダ付けをする方法もあります。なお、この方法の時にはしっかりハンダ付けが出来たかテスターで導通を確認しておいた方が安心です。
ハンダ付けに自信のない方はJ2の秋月電子通商 AE-microSD-LLCNVをお使いください。AE-microSD-LLCNVならパワーLED、アクセスLEDが付いています。
基板のコネクタは2x22Pinで設計していますが、2.54mmピッチ2x22Pinフラットケーブルが手に入りにくいので2.54mmピッチ2x25Pinフラットケーブルで代用しています。
2.54mmピッチ2x22Pinフラットケーブルが手に入るようであればそちらをお使いください。
・2.54mmピッチ2x25Pinフラットケーブル
長さは50~70cmあれば前面まで持ってこられます。
・2.54mmピッチ2x25Pinフラットケーブル、ただし片側はカードエッジコネクタ
長さは50~70cmあれば全面まで持ってこられます。
・2.54mmピッチ2x25Pinフラットケーブル
インタフェース基板とSD-CARD UNIT基板は重ねられるので10cm以上の長さがあれば十分です。
WINCUPLファルダのMZ2000_SD.jedをROMライター(TL866II Plus等)を使ってGAL22V10に書き込んでください。
まず、BASICからMONITOR(0000h~129Fh)を抜き出し、バイナリファイルとして保存します。
| 機種名 | BASIC名 | モニタ名 |
|---|---|---|
| MZ-80B | SB-5520 | SB-1520 |
| MZ-2000、MZ-2200 | MZ-1Z001 or MZ-1Z002 | MZ-1Z001M |
バイナリエディタで以下の修正をします。
| ADDRESS | 修正前 | 修正後 |
|---|---|---|
| 0000 | C3 3B 00 | 00 18 38 |
| 00AE | 01 76 49(C3 76 49) | C3 A0 12 |
| 00F6 | 56 17 02 | 46 00 F8 |
| 0252 | 16 01 21 | C3 03 F8 |
| 0283 | 16 02 ED | C3 06 F8 |
| 028F | 16 04 21 | C3 09 F8 |
| 02B3 | 16 08 ED | C3 0C F8 |
| 02BF | 16 08 ED | C3 0F F8 |
| ADDRESS | 修正前 | 修正後 |
|---|---|---|
| 0000 | C3 3B 00 | 00 18 38 |
| 00AE | 01 05 4C(C3 05 4C) | C3 A0 12 |
| 00E5 | 56 | 46 |
| 00E7 | 17 02 | 00 F8 |
| 0252 | 16 01 21 | C3 03 F8 |
| 0283 | 16 02 ED | C3 06 F8 |
| 028F | 16 04 21 | C3 09 F8 |
| 02B3 | 16 08 ED | C3 0C F8 |
| 02BF | 16 08 ED | C3 0F F8 |
次にEXT-ROMフォルダ内のEXT-ROM_SD MZ-80B.bin又はEXT-ROM_SD MZ-2000.binをMONITORの後ろ(12A0h~)に付け加えて保存します。出来上がるバイナリファイルは0000h~198Ehとなるはずです。
出来上がったバイナリファイルをROMライター(TL866II Plus等)を使って27C256に書き込んでください。
27C512を使えば二つのバイナリファイルを切り替えて使うような使い方ができます。このとき、一つのバイナリファイルは32KByte、二つ合わせて64KByteにして書き込んでください。
1 「/」キーを押しながら電源を入れる、又は「/」キーを押しながらIPLボタンを押す。
2 EXT-ROMからプログラムが読み込まれ、ノーマル時のメモリマップに切り替わった後、リセットされる。
3 MINITORが起動し、MZの初期化が行われた後、12A0hにJUMPする。
4 12A0hからの転送プログラムにより、SDアクセスルーチンをF800h以降に転送する。
5 MZ-2000_SDの8255を初期化する。
6 12A0hからの転送プログラムが再度起動しないよう00AEhに01hを書き込む。
7 コマンドプロンプトに戻る。
8 FDコマンド又はFDLコマンドによりSD-CARD内アプリケーションのLOAD実行が指示されるとF800hのSDアクセスルーチンにJUMPする。
9 指定したファイルがSDに存在したらスタックポインタをFFFFhに設定する。
10 MZTファイルのヘッダ情報にあるLOAD開始アドレスからファイル長分をSD-CARDから読み出しメインメモリに書き込む。
この時、LOAD終了アドレスがF800h以降でLOAD開始アドレスが12A0h以降ならSD-LOADルーチンを1200h~124Fhにコピーし1206hにJUMPしてLOADを実行する。
11 実行開始アドレスが0000hでないならスタックポインタを1140hに設定する。
12 実行開始アドレスにJUMPする。
前述のBASICからMONITORを抜き出してROMに書き込む方式は、自分が所有しているBASICから抜き出してROMに書き込むには問題が無いのですが、書き込み済みROMの配布はSHARPの著作権があるので出来ません。
そこで「@BOOT-A MZ-2000.bin」、「@BOOT-A MZ-80B.bin」というバイナリファイルをSD-CARDから読み込み起動するプログラムをROMに書き込む方式を追加しました。
ROMに27256を使えば「@BOOT-A MZ-xxxx.bin」、27512を使えば「@BOOT-A MZ-xxxx.bin」と「@BOOT-B MZ-xxxx.bin」を切り替えて読み込むことができます。
前述「ROMへの書込み」の手順により修正を加えたMONITORの後ろ(12A0h~)にEXT-ROM_SD MZ-2000.bin又はEXT-ROM_SD MZ-80B.binを付け加えて保存したバイナリファイル(従来ROMに書き込んでいたバイナリファイル)を「@BOOT-A MZ-2000.bin」又は「@BOOT-A MZ-80B.bin」のファイルネームでSD-CARDに保存してください。
27512を使うのであれば同様にBASICを加工したバイナリファイル(従来ROMに書き込んでいたバイナリファイル)を「@BOOT-B MZ-2000.bin」又は「@BOOT-B MZ-80B.bin」のファイルネームでSD-CARDに保存することでスイッチの切り替えで読み込むことができます。
BOOT_LOADERフォルダにある「BOOT_A_LOADER.bin」または「BOOT_AB_LOADER.bin」をROMに書き込みます。
27256を使用する場合は「BOOT_A_LOADER.bin」を書き込んでください。
27512を使用する場合は「BOOT_AB_LOADER.bin」を書き込んでください。
「ROMへの書込み」を参照してバイナリファイル(従来ROMに書き込んでいたバイナリファイル)を作成します。
出来上がったファイルの名前は、MZ-2000用なら「@BOOT-A MZ-2000.bin」、MZ-80B用なら「@BOOT-A MZ-80B.bin」としてSD-CARDに保存します。
起動させた機械がMZ-2000か、MZ-80Bか自動的に判断して「@BOOT-A MZ-2000.bin」、「@BOOT-A MZ-80B.bin」のどちらかを読み込まれます。
後述の「BASICをEXT-ROMから起動させる」を参照してバイナリファイル(従来ROMに書き込んでいたバイナリファイル)を作成し、出来上がったファイルの名前をMZ-2000用なら「@BOOT-B MZ-2000.bin」、MZ-80B用なら「@BOOT-B MZ-80B.bin」としてSD-CARDに保存します。
起動させた機械がMZ-2000か、MZ-80Bか自動的に判断して「@BOOT-B MZ-2000.bin」、「@BOOT-B MZ-80B.bin」のどちらかを読み込まれます。
この機能に対応させるためArduinoプログラムも更新しました。この機能を使いたい場合にはArduinoプログラムも書き込み直してください。
MZ-80K_SDと全く同じものを使用しています。
MZ-80K_SDでソケットを使用して差込式にしているのであればそのままMZ-2000_SDに差して使えます。
Arduino IDEを使ってMZ-80Kリポジトリ Arduinoフォルダ内のMZ-80K_SD.inoを書き込みます。
SdFatライブラリを使用しているのでArduino IDEメニューのライブラリの管理からライブラリマネージャを立ち上げて「SdFat」をインストールしてください。
「SdFat」で検索すれば見つかります。「SdFat」と「SdFat - Adafruit Fork」が見つかりますが「SdFat」のほうを使っています。
注)Arduinoを基板に直付けしている場合、Arduinoプログラムを書き込むときは、MZ-2000本体とは接続を外し、74LS04を外したうえで書き込んでください。
インタフェース基板は、安価に発注するために10cmx10cmで設計しているのでMZ-80B、MZ-2000、MZ-2200の拡張カードとしては寸足らずです。右側をガイドスロットに沿って差し込めるように設計しています。
インタフェース基板からMZ-2000_SDへのフラットケーブルは真ん中のJ2に差してください。
MZ-2200 EXPANSION UNITにインタフェース基板を挿入しようとしたところ、抜き差しが非常に硬く苦労する個体がありました。
開発ではMZ-2000 EXPANSION UNITでのスムーズな抜き差しを確認していますが、抜き差しに苦労する場合には画像の部分をほんの少しヤスリ掛け(4~5回)するだけでかなりスムーズになりますのでお試しください。

インタフェース基板のカードエッジ反対側のJ5と本体のカードエッジを接続します。
インタフェース基板からMZ-2000_SDへのフラットケーブルは真ん中のJ2に差してください。
変則的ではありますが、インタフェース基板に基板用カードエッジコネクタのピンを曲げて付けてみました。
カードエッジコネクタを基板にハンダ付けすると上面、下面が逆になってしまいますのでカードエッジコネクタは基板の裏面に付ける必要があります。
カードエッジコネクタB列のピンは90度曲げることでそのままハンダ付けできますが、A列のピンは空中に浮いてしまいますので手配線する必要があります。
また、MZ-2000本体のカードエッジに挿す時には、基板を逆さまに挿しますのでフラットケーブルが邪魔になって結構斜めになっています。
ちょっと強引な付け方になりますので試される方は自己責任でお願いします。
MZ-80Bに拡張I/Oポートが装備されていない場合には、MZ-80B用のインタフェース基板を使用します。
| 番号 | 品名 | 数量 | 備考 |
|---|---|---|---|
| J2 | 2x22Pinコネクタ | 1 | 秋月電子通商 PH-2x40SGなど |
| J3 | 1Pinコネクタ | 1 | 秋月電子通商 FHU-1x42SGなど |
| J4 | DCジャック | 1 | 秋月電子通商 MJ-179PHなど(J3により5Vを供給すれば特に必要はありません) |
| J5 | 2x20Pinソケット | 1 | 秋月電子通商 FHU-2x42SGなど |
| S1 | 3Pスライドスイッチ | 1 | 秋月電子通商 SS12D01G4など(J3により5Vを供給すれば特に必要はありません) |
| 2.54mmピッチ2x25Pinフラットケーブル | 1 | 長さは50~70cm(手に入れば2x22Pin) |
J5の2x20Pinソケットは基板裏側にハンダ付けします。
ケーブルはMZ-80Bインターフェース基板のJ3から一回反転させてMZ-8000_SDに繋ぎます。
MZ-80B本体後ろからカバーを開け、メインボードに二つ並んでいる2x20Pinコネクタのうち手前の2x20PinコネクタにMZ-80Bインターフェース基板を挿し込みます。ピンの位置を確認してずれて挿すことのないように装着します。
MZ-80B本体内部の拡張I/Oポート用電源から5V電源を供給すれば扱いが楽です。
MZ-80B用拡張I/Oポートが手に入ったときにはMZ-80Bインタフェース基板のカードエッジ側を拡張I/Oポートに挿してください。
MZ-2000_SDと本体内部のコネクタを単純にPinケーブルで接続するとA、B面が逆転してしまうため動作しません。MZ-2000_SDのコネクタを裏面にハンダ付けするか、変換アダプタを自作して接続してください。

変換アダプタは、MZ-2000 EXT-BOARDか、MZ-80B EXT-BOARDのどちらかで自作できます。
EXT-BOARD基板の長さではケースにあたってしまうので若干カットします。
カードエッジ部を挟み込むように25x2PinピンソケットをEXT-BOARD基板の表面からみて左側に3x2Pinがはみ出すようにハンダ付けします。
EXT-BOARD基板の裏面に22x2Pinピンヘッダをつけて出来上がりです。

MZ-2500本体内部のコネクタに変換アダプタを挿し込む方法で動作しない場合には、作成した変換アダプタをMZ-2000_SD基板側に取り付ける方法を試してみてください。
信号的には同じ接続のはずですが、コネクタの挿し込み具合等により前述の方法では動作しない場合があるようです。

EXPANSION UNITを使わずにMZ-2000、MZ-2200本体に接続する場合は、本体側カードエッジには5Vが出ていないため、外部電源が必要となります。
なお、MZ-2000_SD程度の消費電流であればMZ-2000本体内部から供給しても問題ないと思います。挑戦される方は自己責任でお願いします。
拡張スロットに差す場合には外部電源は必要ありません。拡張スロットに差した状態で外部電源を供給すると故障の原因となる恐れがあります。拡張スロットに差す運用のみであればインタフェース基板にはDCジャック及びJ5ピンヘッダは取り付けないほうが無難です。
出来れば8GB以下のSDカードを用意してください。
ArduinoのSdFatライブラリは、SD規格(最大2GB)、SDHC規格(2GB~32GB)に対応していますが、SDXC規格(32GB~2TB)には対応していません。
また、SDHC規格のSDカードであっても32GB、16GBは相性により動作しないものがあるようです。
FAT16又はFAT32が認識できます。NTFSは認識できません。
ルートに置かれたMZTファイルのみ認識できます。(MZT以外のファイル、フォルダも表示されますがLOAD実行の対象になりません)
ファイル名は「.MZT」を除いて32文字まで、ただし半角カタカナ、及び一部の記号はArduinoが認識しないので使えません。パソコンでファイル名を付けるときはアルファベット、数字および空白でファイル名をつけてください。
ROM起動させた場合にMONITORコマンド入力待ちから以下のコマンドが拡張されます。
MONITOR本来のMコマンド、Dコマンド、Jコマンドは同じように使えます。
Lコマンド、SコマンドはSD-CARD対応として使えます。LコマンドでのLOAD実行範囲は12A0h~F7FFhです。
Vコマンドは、使えません。
以下、SD-CARD内のファイルに付けられるファイル名をDOSファイル名、MZT形式ファイルのインフォメーションブロック内ファイル名をIBFファイル名とします。
FDのみでDOSファイル名「0000.MZT」がLOAD及び実行されます。
「0000.MZT」は、パソコンでBASIC等をリネームコピーして作成してください。
LOAD実行可能範囲は0000h~F7FFhです。
注)読み込み終了アドレスがF800h以降であっても読み込みスタートアドレスが12A0h以降だった場合に限りFFFFhまで読み込めます。
DOSファイル名で指定したバイナリファイルをLOADして実行します。
「.MZT」は省略可能です。
LOAD実行可能範囲は0000h~F7FFhです。
例)
FD TEST[CR]
注)読み込み終了アドレスがF800h以降であっても読み込みスタートアドレスが12A0h以降だった場合に限りFFFFhまで読み込めます。
SD-CARDルートディレクトリにあるファイルの一覧を表示します。20件表示したところで指示待ちになるので打ち切るならSHIFT+BREAK又は↑を入力すると打ち切られ、Bキーで前の20件に戻ります。それ以外のキーで次の20件を表示します。
行頭に「*FD」を付加して表示してあるので実行したいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOAD、実行が可能です。
表示される順番は、登録順となりファイル名アルファベッド順などのソートした順で表示することはできません。
LOAD実行可能範囲は0000h~F7FFhです。
ファイル名がxで始まるファイルの一覧を表示します。20件表示したところで指示待ちになるので打ち切るならSHIFT+BREAK又は↑を入力すると打ち切られ、Bキーで前の20件に戻ります。それ以外のキーで次の20件を表示します。
xはMZのキーボードから入力可能な32文字までの文字列です。(数字、記号、アルファベット)
LOAD実行可能範囲は0000h~F7FFhです。
例)
FDL S[CR]
FDL SP[CR]
FDL BASIC S[CR]
L、LOAD等アプリケーションが指定したコマンドの後ろにはIBFファイル名を指定可となっていますが、指定せずにL、LOAD等のコマンドのみで[CR]キーを押します。
CMTの場合にはここでPLAYボタンを押すよう指示が出るところですが、「DOS FILE:」と表示して行入力待ちになっているのでDOSファイル名を入力して[CR]キーを押します。この時、「.MZT」の入力は省略できます。
DOSファイル名は「.MZT」を除いて32文字まで、ただし半角カタカナ、及び一部の記号はArduinoが認識しないので使えません。パソコンでファイル名を付けるときはアルファベット、数字および空白でファイル名をつけてください。
例)BASIC MZ-1Z001では
× LOAD "TEST"[CR]
○ LOAD[CR]
DOS FILE:TEST[CR]
○ LOAD[CR]
DOS FILE:TEST.MZT[CR]
** 参考 **
S-OS SWORDでの運用に当たっては起動直後に「DV S:」としてデバイスを各SYSTEMデバイスとしてください。
FUZZY BASICだけかもしれませんが共通フォーマットデバイスのままだとLOADコマンドでIBFファイル名の省略ができませんでした。
「DOS FILE:」と表示して行入力待ちになったときに以下の特殊コマンドが使用可能です。
MONITORコマンド入力待ちからのFDL、FDL xと全く同等のファイル一覧機能が使えます。
検索結果の行頭には「DOS FILE:」を付加して表示してあるのでLOADしたいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOADが可能です。
「*FDL」で検索、カーソルで選んで読み込もうとした場合に「DOS FILE:」に戻ってしまうアプリケーションがありますが、再度カーソルを合わせて[CR]すれば読み込めます。
CMTの時と同様にアプリケーションの指定する入力方法、ルールでファイル名等を入力して保存してください。
ただし、半角カタカナはArduinoが認識できないため、使用できません。アルファベット、数字および空白で指定してください。
SAVE時は、入力したファイル名がIBFファイル名、DOSファイル名の両方に適用されます。
DOSファイル名としての「.MZT」は自動的に付加されます。
例)BASIC MZ-1Z001では
○ SAVE "TEST"[CR]
「SD-CARD INITIALIZE ERROR」と表示されたときは、SD-CARDをいったん抜き再挿入したうえでArduinoをリセットしてください。
SD-CARDにアクセスしていない時に電源が入ったままで SD-CARDを抜いた後、再挿入しSD-CARDにアクセスすると「SD-CARD INITIALIZE ERROR」となる場合があります。再挿入した場合にはSD-CARDにアクセスする前にArduinoを必ずリセットしてください。
SD-CARDの抜き差しは電源を切った状態で行うほうがより確実です。
(2024.3.10) SD-CARDにアクセスしていない時に電源が入ったままでSD-CARDを抜くと再度SD-CARDを挿入してもSD-CARDにアクセスできない問題を解消しました。(Arduinoを最新版に書き換えてください)
再度SD-CARDを挿入した後、FDL、LOAD、SAVE等でSD-CARDに3回ほどアクセスすれば復旧します。
SD-CARDへのセーブ時にDOSファイル名を指定せずに[CR]を押下してしまった場合、「.MZT」というDOSファイルが作成されてしまいます。この「.MZT」はアプリケーションからLOADする時にDOSファイル名を指定せずに[CR]を押下した場合に読み込まれることで不測の動作を起こす原因になるので作成された場合には削除しておく方が無難です。
「.MZT」はWindowsパソコンからリネーム又は削除してください。
バイナリエディタで以下の修正をします。フリーエリアの修正箇所はI/O '82/8月号 I/O別冊MZ-80B活用研究「BASIC SB-5520の拡張」を参考にしています。
| MZT ADDRESS | 実ADDRESS | 修正前 | 修正後 |
|---|---|---|---|
| 02D2 | 0252 | 16 01 21 | C3 00 52 |
| 0303 | 0283 | 16 02 ED | C3 03 52 |
| 030F | 028F | 16 04 21 | C3 06 52 |
| 0333 | 02B3 | 16 08 ED | C3 09 52 |
| 033F | 02BF | 16 08 ED | C3 0C 52 |
| 1329 | 12A9 | FF 49 | 9F 57 |
| 19FF | 197F | 5C 51 | A0 57 |
| 1AA2 | 1A22 | 5C 51 | A0 57 |
| 1C12 | 1B92 | 5C 51 | A0 57 |
| 1C2C | 1BAC | 5C 51 | A0 57 |
| 1C5B | 1BDB | 5C 51 | A0 57 |
| 1C63 | 1BE3 | 5C 51 | A0 57 |
| 1DDA | 1D5A | 5C 51 | A0 57 |
| 2014 | 1F94 | 5C 51 | A0 57 |
| 3CF5 | 3C75 | 5C 51 | A0 57 |
| 3DE3 | 3D63 | 5C 51 | A0 57 |
| 3E06 | 3D86 | 5E 51 | A2 57 |
| 3EE5 | 3E65 | 5C 51 | A0 57 |
| 3EEB | 3E6B | 5C 51 | A0 57 |
次にAPP_BASIC_LISP_SDフォルダ内のAPP_BASIC_LISP_SD_SB-5520.binをMZTアドレス5280h(実アドレス5200h)から付け加えて保存します。(MZTファイル0000h~5810h)
SD対応でフリーエリアが44268Byteから42664Byteに減少します。
バイナリエディタで以下の修正をします。フリーエリアの修正箇所はI/O '83/5月号「MZ-2000 BASICの拡張」を参考にしています。
| MZT ADDRESS | 実ADDRESS | 修正前 | 修正後 |
|---|---|---|---|
| 02D2 | 0252 | 16 01 21 | C3 00 55 |
| 0303 | 0283 | 16 02 ED | C3 03 55 |
| 030F | 028F | 16 04 21 | C3 06 55 |
| 0333 | 02B3 | 16 08 ED | C3 09 55 |
| 033F | 02BF | 16 08 ED | C3 0C 55 |
| 1329 | 12A9 | FF 4C | 9F 5A |
| 1A0C | 198C | 5C 54 | A0 5A |
| 1AAF | 1A2F | 5C 54 | A0 5A |
| 1C1F | 1B9F | 5C 54 | A0 5A |
| 1C39 | 1BB9 | 5C 54 | A0 5A |
| 1C68 | 1BE8 | 5C 54 | A0 5A |
| 1C70 | 1BF0 | 5C 54 | A0 5A |
| 1DE7 | 1D67 | 5C 54 | A0 5A |
| 2021 | 1FA1 | 5C 54 | A0 5A |
| 3CF2 | 3C72 | 5C 54 | A0 5A |
| 3DE1 | 3D61 | 5C 54 | A0 5A |
| 3E07 | 3D87 | 5E 54 | A2 5A |
| 3EE6 | 3E66 | 5C 54 | A0 5A |
| 3EEC | 3E6C | 5C 54 | A0 5A |
次にAPP_BASIC_LISP_SDフォルダ内のAPP_BASIC_LISP_SD_MZ-1Z001.binをMZTアドレス5580h(実アドレス5500h)から付け加えて保存します。(MZTファイル0000h~5B10h)
SD対応でフリーエリアが43500Byteから41896Byteに減少します。
バイナリエディタで以下の修正をします。フリーエリアの修正箇所はI/O '83/5月号「MZ-2000 BASICの拡張」を参考にしています。
| MZT ADDRESS | 実ADDRESS | 修正前 | 修正後 |
|---|---|---|---|
| 02D2 | 0252 | 16 01 21 | C3 00 66 |
| 0303 | 0283 | 16 02 ED | C3 03 66 |
| 030F | 028F | 16 04 21 | C3 06 66 |
| 0333 | 02B3 | 16 08 ED | C3 09 66 |
| 033F | 02BF | 16 08 ED | C3 0C 66 |
| 1329 | 12A9 | FF 5D | 9F 6B |
| 1A46 | 19C6 | 5C 65 | A0 6B |
| 1AE9 | 1A69 | 5C 65 | A0 6B |
| 1C59 | 1BD9 | 5C 65 | A0 6B |
| 1C73 | 1BF3 | 5C 65 | A0 6B |
| 1CA2 | 1C22 | 5C 65 | A0 6B |
| 1CAA | 1C2A | 5C 65 | A0 6B |
| 1E6D | 1DED | 5C 65 | A0 6B |
| 20A7 | 2027 | 5C 65 | A0 6B |
| 3D78 | 3CF8 | 5C 65 | A0 6B |
| 3E67 | 3DE7 | 5C 65 | A0 6B |
| 3E8D | 3E0D | 5E 65 | A2 6B |
| 3F6C | 3EEC | 5C 65 | A0 6B |
| 3F72 | 3EF2 | 5C 65 | A0 6B |
次にAPP_BASIC_LISP_SDフォルダ内のAPP_BASIC_LISP_SD_MZ-1Z002.binをMZTアドレス6680h(実アドレス6600h)から付け加えて保存します。(MZTファイル0000h~6C10h)
SD対応でフリーエリアが39148Byteから37544Byteに減少します。
APP_BASIC_LISP_SDフォルダ内のAPP_BASIC_LISP_SD_MZ-2Z002.wavとMZ-2Z002 SD.BAS.wavをカセットテープに録音します。
DISK BASIC MZ-2Z002を起動し、Filing CMTを使ってカセットテープに録音したAPP_BASIC_LISP_SD_MZ-2Z002.wavをFDに保存します。ファイル名は「SD.bin」となります。
次にLOAD/Tコマンドでカセットテープに録音したMZ-2Z002 SD.BAS.wavをFDに保存します。ファイル名は取り敢えず「SD.BAS」とします。
最後に現在のAUTO RUNをリネーム又は削除してから「SD.BAS」を「AUTO RUN」にリネームします。これで起動時にSD対応となります。
SD対応でフリーエリアが30956Byteから29161Byteに減少します。
27C512を使えば二つのバイナリファイルを切り替えて使う使い方ができるのでSD対応MONITORとROM起動SD対応BASICを切り替えて使うこともできます。
ROM起動SD対応BASICを使えばBASICマシンとしてはかなり快適です。
BASICをROMに焼くには、SD対応BASICのMZTファイルからヘッダを削除し、以下の修正を加えてROMに焼きます。
| ADDRESS | 修正前 | 修正後 |
|---|---|---|
| 0000 | C3 3B 00 | 00 18 38 |
バイナリエディタで以下の修正をします。
| MZT ADDRESS | 実ADDRESS | 修正前 | 修正後 |
|---|---|---|---|
| 012E | 00AE | 01 76 49 | C3 A0 12 |
| 02D2 | 0252 | 16 01 21 | C3 20 3F |
| 0303 | 0283 | 16 02 ED | C3 23 3F |
| 030F | 028F | 16 04 21 | C3 26 3F |
| 0333 | 02B3 | 16 08 ED | C3 29 3F |
| 033F | 02BF | 16 08 ED | C3 2C 3F |
| MZT ADDRESS | 実ADDRESS | 修正前 | 修正後 |
|---|---|---|---|
| 012E | 00AE | 01 05 4C | C3 A0 12 |
| 02D2 | 0252 | 16 01 21 | C3 20 3F |
| 0303 | 0283 | 16 02 ED | C3 23 3F |
| 030F | 028F | 16 04 21 | C3 26 3F |
| 0333 | 02B3 | 16 08 ED | C3 29 3F |
| 033F | 02BF | 16 08 ED | C3 2C 3F |
次にAPP_BASIC_LISP_SDフォルダ内のAPP_BASIC_LISP_SD_MZ-LISP_80B.bin又はAPP_BASIC_LISP_SD_MZ-LISP_2000.binをMZTアドレス3FA0h(実アドレス3F20h)から付け加えて保存します。(MZTファイル0000h~4530h)
MZ-80B版、MZ-2000、MZ-2200版(いづれもMONITORは不要)はSDからBOOTしたランチャー用MONITORからFD又はFDLコマンドでLOAD実行すればそのままSD対応となりますが、SDアクセスルーチンを保護するためにS-OSで使用できるメモリの上限を示す#MEMAXR値をSWORDのMZTファイル(MONITORは不要)をバイナリエディタで以下のように修正します。
| MZT ADDRESS | 実ADDRESS | 修正前 | 修正後 |
|---|---|---|---|
| 0CEB | 1F6B | FF | EF |
S-OSのアプリケーションはSD-CARD対応版SWORDはすべてSD-CARD対応となるはずです。
なお、SWORD起動直後に「DV S:」としてSYSTEMデバイスに切り替えておいた方が無難です。
バイナリエディタで以下の修正をします。
| MZT ADDRESS | 実ADDRESS | 修正前 | 修正後 | 備考 |
|---|---|---|---|---|
| 03F5 | 0375 | 16 04 21 | C3 06 F0 | |
| 0418 | 0398 | 16 08 ED | C3 09 F0 | |
| 0424 | 03A4 | 16 08 ED | C3 0C F0 | |
| 043F | 03BF | 16 01 21 | C3 00 F0 | |
| 0474 | 03F4 | 16 02 ED | C3 03 F0 | |
| 04F0 | 0470 | EF | C9 | (注1) |
| MZT ADDRESS | 実ADDRESS | 修正前 | 修正後 | 備考 |
|---|---|---|---|---|
| 0414 | 0394 | 16 04 21 | C3 06 F0 | |
| 0437 | 03B7 | 16 08 ED | C3 09 F0 | |
| 0443 | 03C3 | 16 08 ED | C3 0C F0 | |
| 045E | 03DE | 16 01 21 | C3 00 F0 | |
| 0493 | 0413 | 16 02 ED | C3 03 F0 | |
| 04F3 | 0473 | 3E | C9 | (注1) |
次にTS-1000、TS-2000共にAPP_BASIC_LISP_SDフォルダ内のAPP_TS-1000_TS-2000_SD.binをMZTアドレスF080h(実アドレスF000h)から付け加えて保存します。(MZTファイル0000h~F5EFh)
FD又はFDLコマンドでTS-2000をLOAD起動した後、LコマンドでBASEを読み込めばSD-CARD対応版として使えます。なお、F000h~F5EFhにはSDアクセスルーチンがあるので破壊しないようにしてください。
また、SD-CARD対応済みのTS-2000と合わせてMZTファイルとすれば起動が簡単になります。
FD又はFDLコマンドでMZ-80BならTS-1000、MZ-2000、MZ-2200ならTS-2000をLOAD起動した後、LコマンドでWICSを読み込めばSD-CARD対応版として使えます。なお、F000h~F5EFhにはSDアクセスルーチンがあるので破壊しないようにしてください。
また、SD-CARD対応済みのTS-2000と合わせてMZTファイルとすれば起動が簡単になります。
WICSコンパイラも同様です。
FD又はFDLコマンドでEDASMを読み込めばSD-CARD対応版として使えます。
なお、F800h~FE56hにはSDアクセスルーチンがあるので破壊しないようにしてください。
FD又はFDLコマンドでTTLを読み込めばSD-CARD対応版として使えます。
なお、F800h~FE56hにはSDアクセスルーチンがあるので破壊しないようにしてください。
FD又はFDLコマンドでFORTRANを読み込めばSD-CARD対応版として使えます。
なお、F800h~FE56hにはSDアクセスルーチンがあるので破壊しないようにしてください。
月刊I/O 1984年9月号のダンプリストを入力後、TS-1000をMZTアドレス0080h(実アドレス0000h)、WICSインタプリタをMZTアドレス1580h(実アドレス1500h)、APP_TS-1000_TS-2000_SDフォルダ内のAPP_q-Pascal_SD.binをMZTアドレスE080h(実アドレスE000h)に配置し、ひとつにまとめます。
そのうえで以下の修正をします。
| MZT ADDRESS | 実ADDRESS | 修正前 | 修正後 | 備考 |
|---|---|---|---|---|
| 0170 | 00F0 | -- -- -- | C3 00 4B | |
| 03F5 | 0375 | 16 04 21 | C3 06 E0 | |
| 0418 | 0398 | 16 08 ED | C3 09 E0 | |
| 0424 | 03A4 | 16 08 ED | C3 0C E0 | |
| 043F | 03BF | 16 01 21 | C3 00 E0 | |
| 0474 | 03F4 | 16 02 ED | C3 03 E0 | |
| 04F0 | 0470 | EF | C9 | (注1) |
| 5289 | 5209 | CD C7 63 | 00 00 00 | |
| 528E | 520E | 2A D0 65 | 00 00 00 | |
| 5291 | 5211 | EB | 00 | |
| 5292 | 5212 | EF 00 | 00 00 | |
| 5294 | 5214 | 2A D0 65 | 00 00 00 | |
| 5297 | 5217 | 11 0B 00 | 00 00 00 | |
| 529A | 521A | 19 | 00 | |
| 529B | 521B | 22 E0 65 | 00 00 00 | |
| 529E | 521E | ED 5B E0 65 | 00 00 00 00 | |
| 52A2 | 5222 | EF 2B | EF 10 | |
| 52A4 | 5224 | DA 45 4E | 00 00 00 |
月刊I/O 1984年10月号の80B用q-PascalソースリストにMZ-2000用の修正を加えてWICSでコンパイルします。
出来上がったオブジェクトで9月号のダンプリストを修正たものがMZ-2000用q-Pascalコンパイラになります。
これにTS-2000をMZTアドレス0080h(実アドレス0000h)、WICSインタプリタをMZTアドレス1580h(実アドレス1500h)、APP_TS-1000_TS-2000_SDフォルダ内のAPP_q-Pascal_SD.binをMZTアドレスE080h(実アドレスE000h)に配置し、ひとつにまとめます。
そのうえで以下の修正をします。
| MZT ADDRESS | 実ADDRESS | 修正前 | 修正後 | 備考 |
|---|---|---|---|---|
| 0170 | 00F0 | -- -- -- | C3 00 4B | |
| 0414 | 0394 | 16 04 21 | C3 06 E0 | |
| 0437 | 03B7 | 16 08 ED | C3 09 E0 | |
| 0443 | 03C3 | 16 08 ED | C3 0C E0 | |
| 045E | 03DE | 16 01 21 | C3 00 E0 | |
| 0493 | 0413 | 16 02 ED | C3 03 E0 | |
| 04F3 | 0473 | 3E | C9 | (注1) |
| 5289 | 5209 | CD C7 63 | 00 00 00 | |
| 528E | 520E | 2A D0 65 | 00 00 00 | |
| 5291 | 5211 | EB | 00 | |
| 5292 | 5212 | EF 00 | 00 00 | |
| 5294 | 5214 | 2A D0 65 | 00 00 00 | |
| 5297 | 5217 | 11 0B 00 | 00 00 00 | |
| 529A | 521A | 19 | 00 | |
| 529B | 521B | 22 E0 65 | 00 00 00 | |
| 529E | 521E | ED 5B E0 65 | 00 00 00 00 | |
| 52A2 | 5222 | EF 2B | EF 10 | |
| 52A4 | 5224 | DA 45 4E | 00 00 00 |
修正を加えて出来上がったものを開始アドレス0000h、ファイルサイズE56Fh、実行開始アドレス0000hのMZTファイルとして保存します。
なお、C-DOS常駐領域にSDアクセスルーチンを置いているのでFDの利用はできません。FD関連コマンド(dirなど)を実行すると暴走しますので気を付けてください。
まず、16BIT BASIC 1Z-012のカセットテープをWAVファイルにします。
次にbugfire2009さんの「DumpListEditor」
https://bugfire2009.ojaru.jp/input.html
または、ぎょっちさんの「Wav2bin」
https://www2s.biglobe.ne.jp/~kachan/w2b/
を使ってWAVファイルからMZTファイルに変換します。
1Z-012.mzt、1Z-012B.mzt、BASIC16.mztの3本のMZTファイルが出来上がるはずです。
バイナリエディタを使ってMZTファイル3本とも先頭128Byteのヘッダを削除します。
仮にヘッダ削除後のファイルを1Z-012.bin、1Z-012B.bin、BASIC16.binとします。
バイナリエディタを使って1Z-012.binを0000hから1Z-012B.binを0500hからBASIC16.binを3000hからに配置して1本にまとめます。隙間は00hで埋めておきます。
1本にまとまったバイナリファイルをBasic 1Z-012.binとします。当方のバージョンでは0000h~8D66hまでのファイルとなりました。バージョンにより多少違いがあるかもしれません。
Oh!MZ '85/5月号 p65「16ビットBASICをQDから起動する方法」のパッチを当てます。QDから起動する方法となっていますが、このパッチを当てることで元々3段ロードで起動していたものが1段ロードで起動できるようになり、MZ-2000_SDからも起動可能なファイルとなります。
記事は実機を使ってパッチを当てるので5000h以降にロードして作業を行っていますが、バイナリエディタを使えば0000hからのイメージを扱えますので5xxxhはすべて0xxxhとして修正します。
例)5032h -> 0032hを修正
なお、記事中の1152h~1154hまでの修正は必要ありません。
次に「APP_16BIT_BASIC_SD」フォルダ内の「APP_16BIT_BASIC_SD.BIN」を9000hからに配置してセーブします。隙間は00hで埋めてください。
これで0000h~93BChまでのバイナリファイルとなります。
最後にヘッダを付けてmztファイルとし、「16BIT BASIC 1Z-012_SD.MZT」等のファイルネームで保存し、SDにコピーします。実行アドレスは9000hです。
[0000] 01 31 5A 2D 30 31 32 0D 0D 0D 0D 0D 0D 0D 0D 0D
[0010] 0D 0D BD 93 00 00 00 90 00 00 00 00 00 00 00 00
[0020] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[0030] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[0040] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[0050] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[0060] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[0070] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
16BIT BASIC中からのLOAD、SAVEの使い方はCOLOR BASIC MZ-1Z002などと同様です。
MZ-LOGOの内部に関する資料を所有しておらず、いい加減な実装ですのでたまたま不都合が出ていないだけな可能性が非常に大きいと思います。
不都合が発見されても修正は困難だと思いますのでご了承願います
まず、MZ-LOGOのカセットテープをWAVファイルにします。
次にbugfire2009さんの「DumpListEditor」を使ってWAVファイルからMZTファイルに変換します。
https://bugfire2009.ojaru.jp/input.html
2段ロードになっており、ローダーのmztと本体のmztの2本のMZTファイルが出来上がるはずです。
私の所有しているカセットテープでは本体データの2度目繰り返しにチェックサムエラーが発生していたため単純に2本のMZTファイルとならずローダーと本体別々のWAVファイルに分けたうえでMZTファイルに変換しました。
バイナリエディタを使ってMZTファイル2本とも先頭128Byteのヘッダを削除します。
仮にヘッダ削除後のファイルをmonitor.bin、logo.binとします。
バイナリエディタを使ってmonitor.binの12A0h以降を削除したうえで12A0h以降にlogo.binを追加して1本にまとめます。
1本にまとまったバイナリファイルをMZ-LOGO.binとします。当方のバージョンでは0000h~B340hまでのファイルとなりました。
次に「APP_BASIC_LISP_SD」フォルダ内の「APP_BASIC_LISP_SD_MZ-LOGO.bin」をF000hからに配置してセーブします。隙間は00hで埋めてください。
これで0000h~F590hまでのバイナリファイルとなります。
バイナリエディタで以下の修正をします。
| ADDRESS | 修正前 | 修正後 |
|---|---|---|
| 0252 | 16 01 21 | C3 00 F0 |
| 0283 | 16 02 ED | C3 03 F0 |
| 028F | 16 04 21 | C3 06 F0 |
| 02B3 | 16 08 ED | C3 09 F0 |
| 02BF | 16 08 ED | C3 0C F0 |
最後にヘッダを付けてmztファイルとし、「MZ-LOGO V10_SD.MZT」等のファイルネームで保存し、SDにコピーします。実行アドレスは0000hです。
[0000] 01 4D 5A 2D 4C 4F 47 4F 20 56 31 2E 30 0D 0D 0D
[0010] 0D 0D 91 F5 00 00 00 00 00 00 00 00 00 00 00 00
[0020] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[0030] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[0040] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[0050] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[0060] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[0070] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
MZ-LOGO中からのLOAD、SAVEの使い方は基本的にMZ-LOGOの使い方ですが、LOADコマンドで「LOAD "xxxx」CRと入力した後に画面ではDotの表示と点滅となっていますが、DOSファイル名待ちになっています。
再度xxxxのファイル名を入力し、CRを押してください。
また、マニュアルでは確認できなかったのですが「OPEN "xxxx」でセーブファイル名を指定するときに使えない文字が在るようです。エラーが返ってくるようであればファイル名を変えてみてください。
拙作EMMボード for MZ-2000をバッテリーバックアップに対応させたのでMZ-2000_SDを起動させる時にEMM_for_MZ-2000からの起動も選択できるようにBOOT LOADERを修正してみました。
https://github.com/yanataka60/EMM_for_MZ-2000
「/」キーを押しながら電源ON時又はIPLリセットすることでMZ-2000_SDが起動しますが、「/」キーとテンキー「1」~「3」を同時に押しながら電源ON時又はIPLリセットすることで「EMM1」~「EMM3」のHuBASICから起動させることが出来ます。
なお、EMMの内容をチェックしていないのでEMMが起動可能な内容(HuBASIC起動イメージ)でなかった場合には暴走します。
EMMフォルダにある「BOOT_A_LOADER.bin」または「BOOT_AB_LOADER.bin」をROMに書き込みます。
27256を使用する場合は「BOOT_A_LOADER.bin」を書き込んでください。
27512を使用する場合は「BOOT_AB_LOADER.bin」を書き込んでください。
次にEMMフォルダにある「@BOOT-EMM1.MZT」、「@BOOT-EMM2.MZT」、「@BOOT-EMM3.MZT」をSDカードにコピーします。
それぞれがEMMxの起動に対応していますので起動させる気のない「「@BOOT-EMMx.MZT」はコピーしなくて良いです。
起動させたいEMMにはDISK版HuBASICの「Utility」から「2...COPY ALL」を使ってDISK版HuBASICをコピーします。
実機にFDDを繋いでEMMにコピーしてもよいですが、エミュレーター上でDISK版HuBASICのEMMのイメージを作成し、EMMMENUのEMMLOADでEMMに書き込む方法もあります。
基板の作成に当たり以下のデータを使わせていただきました。ありがとうございました。
Arduino Pro Mini
https://github.com/g200kg/kicad-lib-arduino
AE-microSD-LLCNV
https://github.com/kuninet/PC-8001-SD-8kRAM
kuran_kuran様、MZ-2500モードにおける問題点をご指摘いただきありがとうございました。
2022.6.6
部品表中、ROMについて追記。
2022.6.7
DISK BASIC MZ-2Z002のSD対応を追加しました。
2022.6.20
q-Pascalコンパイラの対応を追加しました。
回路図にネットラベルを追加しました。
2022.8.4
Arduinoを基板に直付けしている場合、Arduinoプログラムを書き込むときの注意点を書き加えました。
2022.8.8
EXPANSION UNITを使わずに接続する別の方法を追加しました。
2022.9.11
MicroSD Card Adapter用の端子を付加し、基板をRev2.3に更新。
2022.9.25
「MZ-80Bの拡張I/Oポートを使わずに接続する場合」を追記しました。
2022.9.29
TS-1000、TS-2000、q-Pascalコンパイラにおいてカセットテープを入れたままLOADコマンドを実行するとカセットテープの早送りが行われるため、早送りが行われないようTS-1000、TS-2000、q-Pascalコンパイラの修正点を一つ追加しました。
2022.12.10
GAL22V10をTTLに置き換えたMZ-2000_SD(SD-CARD UNIT基板)Rev3.3を追加しました。
2022.12.20
拡張スロット装着専用としたMZ-2000_SD(SD-CARD UNIT基板)Rev4.3を追加しました。
2022.12.30
MZ-80B用ゲーム「COSMO ODYSSEY」に対応。読み込みスタートアドレスが12A0H以降であればFFFFHまで読み込み可能にしました。
2023.1.1
MZ-2000、MZ-80BともFDコマンドでの読み込み終了アドレスがF800H以降であっても読み込みスタートアドレスが12A0H以降であれば読み込み可能とした。
2023.3.8
MZ-2500のZ80PIOとI/Oアドレスがぶつかっており、MZ-2500モードではMZ-2000_SDを接続したままRS-232C、マウスを使おうとするとハングアップすることを追記。
2023.6.19
従来のBASICから抽出したMONITORを修正してROMに書き込む方式以外に「BASICから抽出したMONITORを修正したバイナリファイル」をSD-CARDから読み込むプログラムをROMに書き込む方式を追加した。(現在MZ-80Bで動作不可。)
MZ-2500で拡張ユニットが無く、変換アダプタを自作するときの例を追加。
2023.6.21
起動新方式をMZ-2000、MZ-80B及び初期型を含めたMZ-2500の2000モード、80Bモードに対応した。
2023.6.23
起動新方式のエラーメッセージを「NOT FOUND @BOOT-x xxxxxxx.bin」に修正。
2024.1.15
SDカードは8GB以下が望ましいことを追記。
2024.2.21
16BIT BASIC 1Z-012のSD対応を追加。
2024.2.22
16BIT BASIC 1Z-012 SD対応版でLOADに時々失敗するため、修正
2024.3.10
電源が入ったままでSD-CARDを抜くと再度SD-CARDを挿入してもSD-CARDにアクセスできない問題を解消した。
2024.6.11
MZ-LOGOのSD対応を追加。
2024.6.12
MZ-LOGOのSD対応修正箇所の記載漏れを追記。
2024.7.15
16BIT BASIC 1Z-012_SD.MZT作成時のヘッダの誤りをしんでぶ様に指摘していただきました。ご指摘ありがとうございました。
誤) [0010] 0D 0D BB 93 00 00 00 90 00 00 00 00 00 00 00 00
正) [0010] 0D 0D BD 93 00 00 00 90 00 00 00 00 00 00 00 00
2024.10.17
S-OS SWORD TAPE版について判りにくい記述の修正及びアドレスが誤っていたMZTアドレスを修正しました。ポチさんご指摘ありがとうございました。
2025.7.14
EXT-BORADの挿入方法の説明に加筆。
2025.12.4
kuran_kuranさんにArduinoプログラムのバグを発見していただきました。精査した結果、不要な処理が含まれていることが原因であったため不要な処理部分を削除しました。なお、未修正のままでも実害はありません。kuran_kuranさん、ありがとうございました。
2026.1.23
MZ-2000_SD起動時にEMMにあるHuBASICからも起動可能なBOOT PROGRAMを公開しました。
2026.8.16
Rev2.3(Rev3.3)とRev4.3の違いを整理しました。
| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 0.1uF | Capacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mm | C2, C3, C4, C5, C6, C7, C8, C9, C10, C11 |
| 4 | MountingHole_3.2mm_M3 | MountingHole:MountingHole_3.2mm_M3 | MH1, MH2, MH3, MH4 |
| 2 | 74LS04 | Package_DIP:DIP-14_W7.62mm_LongPads | U5, U7 |
| 2 | 74LS273 | Package_DIP:DIP-20_W7.62mm_LongPads | U1, U2 |
| 2 | 74LS30 | Package_DIP:DIP-14_W7.62mm_LongPads | U8, U11 |
| 1 | 100uF | Capacitor_THT:CP_Radial_Tantal_D5.0mm_P2.50mm | C1 |
| 1 | 29C256/27C512 | Package_DIP:DIP-28_W15.24mm_LongPads | U6 |
| 1 | 74LS10 | Package_DIP:DIP-14_W7.62mm_LongPads | U10 |
| 1 | 74LS245 | Package_DIP:DIP-20_W7.62mm_LongPads | U9 |
| 1 | 8255 | Package_DIP:DIP-40_W15.24mm_LongPads | U3 |
| 1 | Arduino_Pro_Mini_5V | MZ2000_SD:Arduino_Pro_Mini | U4 |
| 1 | BUS | mz-2000:PinHeader_2x22_P2.54mm_Vertical | J1 |
| 1 | MicroSD Card Adapter | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J3 |
| 1 | Micro_SD_Card_Kit | MZ2000_SD:AE-microSD-LLCNV | J2 |
| 1 | SLIDE_SWITCH_3P | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | S1 |

yanataka60/MZ-2000_SD
MZ-80B、MZ-2000、MZ-2200でSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです。

yanataka60/MZ-2000_SD
MZ-80B、MZ-2000、MZ-2200でSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです。

yanataka60/MZ-2000_SD
MZ-80B、MZ-2000、MZ-2200でSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです。

yanataka60/MZ-2000_SD
MZ-80B、MZ-2000、MZ-2200でSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです。

CPTforever/8088-MicroATX-Computer
A 8088 based, IBM 5150 like computer compatible with the MicroATX motherboard form factor.

yanataka60/X1_SD
X1、X1turboでSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです


lynchaj/rhyophyre
Single Board Computer featuring Zilog Z180 processor and NEC µPD7220 Graphics Display Controller



lynchaj/duodyne
Duodyne is a hobbyist retrocomputer system designed to run ROMWBW. It is comprised of modules on a system bus

It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.
30 parts, built around the 74LS245SC, 74LS04PC, 74LS273PC and 74LS30PC. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the yanataka60/MZ-2000_SD repository on GitHub, at the commit this page was made from: the board is KiCad/MZ-2000_SD_3_3/MZ2000_SD.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).