Skip to the content
2 layers100 × 100 mmMZ2000 SD, the printed circuit board in 3D

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

Size
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
30
Nets
82
Pads
318
Tracks, vias
1,252, 38
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
31 May 2022
Updated
16 Aug 2026

Overview

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.

Main components

5

README

README.md

MZ-80B、MZ-2000、MZ-2200にSD-CARDからのアプリケーション起動、ロード、セーブ機能

MZ-2000_SD MZ-2000_SD2

 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モードでも使えます。

(追記2023.3.8)MZ-2500のZ80PIOとI/Oアドレスがぶつかっていることを失念していました。80Bモード、2000モードでは問題ありませんが、MZ-2500モードではMZ-2000_SDを接続したままRS-232C、マウスは使えません。

 現在、アプリケーション中でのSD-CARDとのLOAD、SAVEに対応できているものは以下のとおりです。

MZ-2000、MZ-2200用

アプリケーション名備考
BASIC MZ-1Z001
BASIC MZ-1Z002
16BIT BASIC 1Z-012
MZ-LOGO V1.0
MZ-LISPI/O '85/3月号
S-OS SWORD TAPE版Oh!MZ '86/2月号
TS-2000I/O '82/12月号
BASEI/O '83/1月号
WICSI/O '83/2月号
EDASMOh!MZ '85/1月号
TTLOh!MZ '84/10月号

MZ-80B用

アプリケーション名備考
BASIC SB-5520
MZ-LISPI/O '85/3月号
FORTRANI/O別冊MZ-80B活用研究
S-OS SWORD TAPE版Oh!MZ '86/2月号
TS-1000I/O '82/2月号 I/O別冊MZ-80B活用研究
WICSI/O '82/3月号 I/O別冊MZ-80B活用研究
TTLOh!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を参照してください。

インタフェース基板回路図 EXT-BOARD SD-CARD UNIT Rev2.3基板回路図 MZ-2000_SD

部品

MZ-2000_EXT-BOARD(インタフェース基板)

番号品名数量備考
J22x22Pinコネクタ1秋月電子通商 PH-2x40SGなど
J4DCジャック1秋月電子通商 MJ-179PHなど
J52x22Pinコネクタ1秋月電子通商 PH-2x40RGなど(EXPANSION UNITを使う場合には必要ありません)
S13Pスライドスイッチ1秋月電子通商 SS12D01G4など

MZ-2000_SD(SD-CARD UNIT基板)Rev2.3

番号品名数量備考
J12x22Pinコネクタ1秋月電子通商 PH-2x40RGなど
J2、J3のいずれか
J2Micro_SD_Card_Kit1秋月電子通商 AE-microSD-LLCNV (注1)
J3MicroSD Card Adapter1Arduino等に使われる5V電源に対応したもの (注3)
U1,U274LS2732
U382551
U4Arduino_Pro_Mini_5V1Atmega328版を使用 168版は不可。(注2)
U5GAL22V101
U627256/29C256/27512/27C512相当品127256/29C256を使うときは、S1を5V側にして使うこと。28C256はピン配置が違うので使えません。
U974LS2451
C1電解コンデンサ 16v100uF1
C2-C7積層セラミックコンデンサ 0.1uF6
S13Pスライドスイッチ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基板)Rev3.3

 MZ-2000_SD(SD-CARD UNIT基板)Rev2.3のU5 GAL22V10が以下の部品に置き換わっています。以下の部品以外はMZ-2000_SD(SD-CARD UNIT基板)Rev2.3の説明を参照してください。

番号品名数量備考
U5 U774LS042
U8 U1174LS302
U1074LS101
C8-C11積層セラミックコンデンサ 0.1uF4
Rev3.3回路図

SD-CARD UNIT基板Rev3.3回路図 MZ-2000_SD Rev3.3

MZ-2000_SD(SD-CARD UNIT基板)Rev4.3

 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のいずれか
J5Micro_SD_Card_Kit1秋月電子通商 AE-microSD-LLCNV (注1)
J6MicroSD Card Adapter1Arduino等に使われる5V電源に対応したもの (注3)
U1,U274LS042
U3,U474LS302
U574LS101
U6,U774LS2732
U874LS2451
U927256/29C256/27512/27C512相当品127256/29C256を使うときは、S1を5V側にして使うこと。28C256はピン配置が違うので使えません。
U1082551
U11Arduino_Pro_Mini_5V1Atmega328版を使用 168版は不可。(注2)
C1電解コンデンサ 16v100uF1
C2-C11積層セラミックコンデンサ 0.1uF10
S23Pスライドスイッチ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も正しく信号を繋げば使えるとご報告いただきました。

Rev4.3回路図

SD-CARD UNIT基板Rev4.3回路図 MZ-2000_SD Rev4.3(1) Rev4.3(2) Rev4.3(3)

MicroSD Card Adapterを使う

J3に取り付けます。

MicroSD Card Adapterについているピンヘッダを除去してハンダ付けするのが一番確実ですが、J3の穴にMicroSD Card Adapterをぴったりと押しつけ、裏から多めにハンダを流し込むことでハンダ付けをする方法もあります。なお、この方法の時にはしっかりハンダ付けが出来たかテスターで導通を確認しておいた方が安心です。

ハンダ付けに自信のない方はJ2の秋月電子通商 AE-microSD-LLCNVをお使いください。AE-microSD-LLCNVならパワーLED、アクセスLEDが付いています。

MicroSD Card Adapter1

MicroSD Card Adapter2

MicroSD Card Adapter3

MicroSD Card Adapter4

その他必要なもの

 基板のコネクタは2x22Pinで設計していますが、2.54mmピッチ2x22Pinフラットケーブルが手に入りにくいので2.54mmピッチ2x25Pinフラットケーブルで代用しています。

 2.54mmピッチ2x22Pinフラットケーブルが手に入るようであればそちらをお使いください。

EXPANSION UNITの拡張スロットに挿入して使用する場合

・2.54mmピッチ2x25Pinフラットケーブル

 長さは50~70cmあれば前面まで持ってこられます。

EXPANSION UNITを使わない場合

・2.54mmピッチ2x25Pinフラットケーブル、ただし片側はカードエッジコネクタ

 長さは50~70cmあれば全面まで持ってこられます。

・2.54mmピッチ2x25Pinフラットケーブル

 インタフェース基板とSD-CARD UNIT基板は重ねられるので10cm以上の長さがあれば十分です。

GAL22V10への書込み

 WINCUPLファルダのMZ2000_SD.jedをROMライター(TL866II Plus等)を使ってGAL22V10に書き込んでください。

ROMへの書込み

 まず、BASICからMONITOR(0000h~129Fh)を抜き出し、バイナリファイルとして保存します。

機種名BASIC名モニタ名
MZ-80BSB-5520SB-1520
MZ-2000、MZ-2200MZ-1Z001 or MZ-1Z002MZ-1Z001M

バイナリエディタで以下の修正をします。

MZ-80B SB-1520

ADDRESS修正前修正後
0000C3 3B 0000 18 38
00AE01 76 49(C3 76 49)C3 A0 12
00F656 17 0246 00 F8
025216 01 21C3 03 F8
028316 02 EDC3 06 F8
028F16 04 21C3 09 F8
02B316 08 EDC3 0C F8
02BF16 08 EDC3 0F F8

MZ-2000、MZ-2200 MZ-1Z001M

ADDRESS修正前修正後
0000C3 3B 0000 18 38
00AE01 05 4C(C3 05 4C)C3 A0 12
00E55646
00E717 0200 F8
025216 01 21C3 03 F8
028316 02 EDC3 06 F8
028F16 04 21C3 09 F8
02B316 08 EDC3 0C F8
02BF16 08 EDC3 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する。

ROMにBOOT LOADERを書き込む方式の追加

 前述の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をROMに書き込む

 BOOT_LOADERフォルダにある「BOOT_A_LOADER.bin」または「BOOT_AB_LOADER.bin」をROMに書き込みます。

  27256を使用する場合は「BOOT_A_LOADER.bin」を書き込んでください。

  27512を使用する場合は「BOOT_AB_LOADER.bin」を書き込んでください。

「@BOOT-A MZ-xxxx.bin」を作成してSD-CARDに保存する

 「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」のどちらかを読み込まれます。

「@BOOT-B MZ-xxxx.bin」を作成してSD-CARDに保存する(27512を使用する場合)

 後述の「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プログラムも更新しました。この機能を使いたい場合には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を外したうえで書き込んでください。

接続

MZ-80B、MZ-2000、MZ-2200、MZ-2500の拡張スロットに差し込む

 インタフェース基板は、安価に発注するために10cmx10cmで設計しているのでMZ-80B、MZ-2000、MZ-2200の拡張カードとしては寸足らずです。右側をガイドスロットに沿って差し込めるように設計しています。

2025.7.14追記) カードエッジコネクタは規格通りです。左側をガイドスロットに沿って差し込むと違うピンが接触してしまうわけではありません。(左側をガイドスロットに沿って差し込もうとしても差し込めません)

 インタフェース基板からMZ-2000_SDへのフラットケーブルは真ん中のJ2に差してください。

EXT_CONNECT_1 EXT_CONNECT_2 EXT_CONNECT_3 EXT_CONNECT_4 EXT_CONNECT_5

MZ-2200、MZ-80B、MZ-2500拡張スロットへの抜き差しに苦労する場合

 MZ-2200 EXPANSION UNITにインタフェース基板を挿入しようとしたところ、抜き差しが非常に硬く苦労する個体がありました。

 開発ではMZ-2000 EXPANSION UNITでのスムーズな抜き差しを確認していますが、抜き差しに苦労する場合には画像の部分をほんの少しヤスリ掛け(4~5回)するだけでかなりスムーズになりますのでお試しください。

Adjustment

MZ-2000、MZ-2200のEXPANSION UNITを使わずに接続する場合

 インタフェース基板のカードエッジ反対側のJ5と本体のカードエッジを接続します。

 インタフェース基板からMZ-2000_SDへのフラットケーブルは真ん中のJ2に差してください。

DIRECT_CONNECT_1 DIRECT_CONNECT_2 DIRECT_CONNECT_3 DIRECT_CONNECT_4 DIRECT_CONNECT_5 DIRECT_CONNECT_6

カードエッジコネクタを使う

 変則的ではありますが、インタフェース基板に基板用カードエッジコネクタのピンを曲げて付けてみました。

 カードエッジコネクタを基板にハンダ付けすると上面、下面が逆になってしまいますのでカードエッジコネクタは基板の裏面に付ける必要があります。

 カードエッジコネクタB列のピンは90度曲げることでそのままハンダ付けできますが、A列のピンは空中に浮いてしまいますので手配線する必要があります。

 また、MZ-2000本体のカードエッジに挿す時には、基板を逆さまに挿しますのでフラットケーブルが邪魔になって結構斜めになっています。

 ちょっと強引な付け方になりますので試される方は自己責任でお願いします。

DIRECT_CONNECT_7 DIRECT_CONNECT_8 DIRECT_CONNECT_9 DIRECT_CONNECT_10

MZ-80Bの拡張I/Oポートを使わずに接続する場合

 MZ-80Bに拡張I/Oポートが装備されていない場合には、MZ-80B用のインタフェース基板を使用します。

MZ-80Bインタフェース基板回路図 MZ-80B_EXT-BOARD

番号品名数量備考
J22x22Pinコネクタ1秋月電子通商 PH-2x40SGなど
J31Pinコネクタ1秋月電子通商 FHU-1x42SGなど
J4DCジャック1秋月電子通商 MJ-179PHなど(J3により5Vを供給すれば特に必要はありません)
J52x20Pinソケット1秋月電子通商 FHU-2x42SGなど
S13Pスライドスイッチ1秋月電子通商 SS12D01G4など(J3により5Vを供給すれば特に必要はありません)
2.54mmピッチ2x25Pinフラットケーブル1長さは50~70cm(手に入れば2x22Pin)

J5の2x20Pinソケットは基板裏側にハンダ付けします。

ケーブルはMZ-80Bインターフェース基板のJ3から一回反転させてMZ-8000_SDに繋ぎます。

MZ-80B_EXT_BOARD(1)

MZ-80B本体後ろからカバーを開け、メインボードに二つ並んでいる2x20Pinコネクタのうち手前の2x20PinコネクタにMZ-80Bインターフェース基板を挿し込みます。ピンの位置を確認してずれて挿すことのないように装着します。

MZ-80B_EXT_BOARD(2)

MZ-80B本体内部の拡張I/Oポート用電源から5V電源を供給すれば扱いが楽です。

MZ-80B_EXT_BOARD(3)

MZ-80B_EXT_BOARD(4)

MZ-80B_EXT_BOARD(5)

MZ-80B用拡張I/Oポートが手に入ったときにはMZ-80Bインタフェース基板のカードエッジ側を拡張I/Oポートに挿してください。

MZ-80B_EXT_BOARD(6)

MZ-2500の拡張ユニットが無く、本体内部のコネクタに接続する場合

2023.7.23追記 MZ-2500本体内部のコネクタに変換アダプタを挿し込む方法では正常に動作しない場合があるようです。正常に動作しない場合には、後述の変換アダプタをMZ-2000_SD基板側に装着する方法を試してください。

 MZ-2000_SDと本体内部のコネクタを単純にPinケーブルで接続するとA、B面が逆転してしまうため動作しません。MZ-2000_SDのコネクタを裏面にハンダ付けするか、変換アダプタを自作して接続してください。

MZ-2500_1 MZ-2500_2

 変換アダプタは、MZ-2000 EXT-BOARDか、MZ-80B EXT-BOARDのどちらかで自作できます。

 EXT-BOARD基板の長さではケースにあたってしまうので若干カットします。

 カードエッジ部を挟み込むように25x2PinピンソケットをEXT-BOARD基板の表面からみて左側に3x2Pinがはみ出すようにハンダ付けします。

 EXT-BOARD基板の裏面に22x2Pinピンヘッダをつけて出来上がりです。

MZ-2500_3 MZ-2500_4 MZ-2500_5

作成した変換アダプタをMZ-2000_SD基板側に取り付ける場合

 MZ-2500本体内部のコネクタに変換アダプタを挿し込む方法で動作しない場合には、作成した変換アダプタをMZ-2000_SD基板側に取り付ける方法を試してみてください。

 信号的には同じ接続のはずですが、コネクタの挿し込み具合等により前述の方法では動作しない場合があるようです。

MZ-2500_6 MZ-2500_7

外部電源

 EXPANSION UNITを使わずにMZ-2000、MZ-2200本体に接続する場合は、本体側カードエッジには5Vが出ていないため、外部電源が必要となります。

 なお、MZ-2000_SD程度の消費電流であればMZ-2000本体内部から供給しても問題ないと思います。挑戦される方は自己責任でお願いします。

 拡張スロットに差す場合には外部電源は必要ありません。拡張スロットに差した状態で外部電源を供給すると故障の原因となる恐れがあります。拡張スロットに差す運用のみであればインタフェース基板にはDCジャック及びJ5ピンヘッダは取り付けないほうが無難です。

SD-CARD

 出来れば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[CR]

 FDのみでDOSファイル名「0000.MZT」がLOAD及び実行されます。

 「0000.MZT」は、パソコンでBASIC等をリネームコピーして作成してください。

 LOAD実行可能範囲は0000h~F7FFhです。

 注)読み込み終了アドレスがF800h以降であっても読み込みスタートアドレスが12A0h以降だった場合に限りFFFFhまで読み込めます。

FD DOSファイル名[CR]

 DOSファイル名で指定したバイナリファイルをLOADして実行します。

 「.MZT」は省略可能です。

 LOAD実行可能範囲は0000h~F7FFhです。

例)

FD TEST[CR]

 注)読み込み終了アドレスがF800h以降であっても読み込みスタートアドレスが12A0h以降だった場合に限りFFFFhまで読み込めます。

FDL[CR]

 SD-CARDルートディレクトリにあるファイルの一覧を表示します。20件表示したところで指示待ちになるので打ち切るならSHIFT+BREAK又は↑を入力すると打ち切られ、Bキーで前の20件に戻ります。それ以外のキーで次の20件を表示します。

 行頭に「*FD」を付加して表示してあるので実行したいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOAD、実行が可能です。

 表示される順番は、登録順となりファイル名アルファベッド順などのソートした順で表示することはできません。

 LOAD実行可能範囲は0000h~F7FFhです。

FDL x[CR]

ファイル名がxで始まるファイルの一覧を表示します。20件表示したところで指示待ちになるので打ち切るならSHIFT+BREAK又は↑を入力すると打ち切られ、Bキーで前の20件に戻ります。それ以外のキーで次の20件を表示します。

xはMZのキーボードから入力可能な32文字までの文字列です。(数字、記号、アルファベット)

 LOAD実行可能範囲は0000h~F7FFhです。

例)

FDL S[CR]

FDL SP[CR]

FDL BASIC S[CR]

アプリケーションからのLOAD

 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ファイル名の省略ができませんでした。

LOAD時の特殊コマンド

 「DOS FILE:」と表示して行入力待ちになったときに以下の特殊コマンドが使用可能です。

*FDL[CR]
*FDL x[CR]

 MONITORコマンド入力待ちからのFDL、FDL xと全く同等のファイル一覧機能が使えます。

 検索結果の行頭には「DOS FILE:」を付加して表示してあるのでLOADしたいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOADが可能です。

 「*FDL」で検索、カーソルで選んで読み込もうとした場合に「DOS FILE:」に戻ってしまうアプリケーションがありますが、再度カーソルを合わせて[CR]すれば読み込めます。

アプリケーションからのSAVE

 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パソコンからリネーム又は削除してください。

アプリケーションからSD-CARDとのLOAD、SAVEをするための対応

BASIC

MZ-80B SB-5520

バイナリエディタで以下の修正をします。フリーエリアの修正箇所はI/O '82/8月号 I/O別冊MZ-80B活用研究「BASIC SB-5520の拡張」を参考にしています。

MZT ADDRESS実ADDRESS修正前修正後
02D2025216 01 21C3 00 52
0303028316 02 EDC3 03 52
030F028F16 04 21C3 06 52
033302B316 08 EDC3 09 52
033F02BF16 08 EDC3 0C 52
132912A9FF 499F 57
19FF197F5C 51A0 57
1AA21A225C 51A0 57
1C121B925C 51A0 57
1C2C1BAC5C 51A0 57
1C5B1BDB5C 51A0 57
1C631BE35C 51A0 57
1DDA1D5A5C 51A0 57
20141F945C 51A0 57
3CF53C755C 51A0 57
3DE33D635C 51A0 57
3E063D865E 51A2 57
3EE53E655C 51A0 57
3EEB3E6B5C 51A0 57

 次にAPP_BASIC_LISP_SDフォルダ内のAPP_BASIC_LISP_SD_SB-5520.binをMZTアドレス5280h(実アドレス5200h)から付け加えて保存します。(MZTファイル0000h~5810h)

 SD対応でフリーエリアが44268Byteから42664Byteに減少します。

MZ-2000、MZ-2200 MZ-1Z001

バイナリエディタで以下の修正をします。フリーエリアの修正箇所はI/O '83/5月号「MZ-2000 BASICの拡張」を参考にしています。

MZT ADDRESS実ADDRESS修正前修正後
02D2025216 01 21C3 00 55
0303028316 02 EDC3 03 55
030F028F16 04 21C3 06 55
033302B316 08 EDC3 09 55
033F02BF16 08 EDC3 0C 55
132912A9FF 4C9F 5A
1A0C198C5C 54A0 5A
1AAF1A2F5C 54A0 5A
1C1F1B9F5C 54A0 5A
1C391BB95C 54A0 5A
1C681BE85C 54A0 5A
1C701BF05C 54A0 5A
1DE71D675C 54A0 5A
20211FA15C 54A0 5A
3CF23C725C 54A0 5A
3DE13D615C 54A0 5A
3E073D875E 54A2 5A
3EE63E665C 54A0 5A
3EEC3E6C5C 54A0 5A

 次にAPP_BASIC_LISP_SDフォルダ内のAPP_BASIC_LISP_SD_MZ-1Z001.binをMZTアドレス5580h(実アドレス5500h)から付け加えて保存します。(MZTファイル0000h~5B10h)

 SD対応でフリーエリアが43500Byteから41896Byteに減少します。

MZ-2000、MZ-2200 MZ-1Z002

バイナリエディタで以下の修正をします。フリーエリアの修正箇所はI/O '83/5月号「MZ-2000 BASICの拡張」を参考にしています。

MZT ADDRESS実ADDRESS修正前修正後
02D2025216 01 21C3 00 66
0303028316 02 EDC3 03 66
030F028F16 04 21C3 06 66
033302B316 08 EDC3 09 66
033F02BF16 08 EDC3 0C 66
132912A9FF 5D9F 6B
1A4619C65C 65A0 6B
1AE91A695C 65A0 6B
1C591BD95C 65A0 6B
1C731BF35C 65A0 6B
1CA21C225C 65A0 6B
1CAA1C2A5C 65A0 6B
1E6D1DED5C 65A0 6B
20A720275C 65A0 6B
3D783CF85C 65A0 6B
3E673DE75C 65A0 6B
3E8D3E0D5E 65A2 6B
3F6C3EEC5C 65A0 6B
3F723EF25C 65A0 6B

 次にAPP_BASIC_LISP_SDフォルダ内のAPP_BASIC_LISP_SD_MZ-1Z002.binをMZTアドレス6680h(実アドレス6600h)から付け加えて保存します。(MZTファイル0000h~6C10h)

 SD対応でフリーエリアが39148Byteから37544Byteに減少します。

MZ-2000、MZ-2200 DISK BASIC MZ-2Z002

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に減少します。

BASICをEXT-ROMから起動させる

 27C512を使えば二つのバイナリファイルを切り替えて使う使い方ができるのでSD対応MONITORとROM起動SD対応BASICを切り替えて使うこともできます。

 ROM起動SD対応BASICを使えばBASICマシンとしてはかなり快適です。

 BASICをROMに焼くには、SD対応BASICのMZTファイルからヘッダを削除し、以下の修正を加えてROMに焼きます。

ADDRESS修正前修正後
0000C3 3B 0000 18 38

MZ-LISP

バイナリエディタで以下の修正をします。

MZ-80B版
MZT ADDRESS実ADDRESS修正前修正後
012E00AE01 76 49C3 A0 12
02D2025216 01 21C3 20 3F
0303028316 02 EDC3 23 3F
030F028F16 04 21C3 26 3F
033302B316 08 EDC3 29 3F
033F02BF16 08 EDC3 2C 3F
MZ-2000、MZ-2200版
MZT ADDRESS実ADDRESS修正前修正後
012E00AE01 05 4CC3 A0 12
02D2025216 01 21C3 20 3F
0303028316 02 EDC3 23 3F
030F028F16 04 21C3 26 3F
033302B316 08 EDC3 29 3F
033F02BF16 08 EDC3 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)

S-OS SWORD TAPE版

MZ-80B版、MZ-2000、MZ-2200版(いづれもMONITORは不要)はSDからBOOTしたランチャー用MONITORからFD又はFDLコマンドでLOAD実行すればそのままSD対応となりますが、SDアクセスルーチンを保護するためにS-OSで使用できるメモリの上限を示す#MEMAXR値をSWORDのMZTファイル(MONITORは不要)をバイナリエディタで以下のように修正します。

MZT ADDRESS実ADDRESS修正前修正後
0CEB1F6BFFEF

 S-OSのアプリケーションはSD-CARD対応版SWORDはすべてSD-CARD対応となるはずです。

 なお、SWORD起動直後に「DV S:」としてSYSTEMデバイスに切り替えておいた方が無難です。

TS-1000 TS-2000

バイナリエディタで以下の修正をします。

TS-1000
MZT ADDRESS実ADDRESS修正前修正後備考
03F5037516 04 21C3 06 F0
0418039816 08 EDC3 09 F0
042403A416 08 EDC3 0C F0
043F03BF16 01 21C3 00 F0
047403F416 02 EDC3 03 F0
04F00470EFC9(注1)
(注1)この修正によりカセットテープを入れたままLコマンドを実行するとカセットテープの早送りが行われるのが回避できます。
TS-2000
MZT ADDRESS実ADDRESS修正前修正後備考
0414039416 04 21C3 06 F0
043703B716 08 EDC3 09 F0
044303C316 08 EDC3 0C F0
045E03DE16 01 21C3 00 F0
0493041316 02 EDC3 03 F0
04F304733EC9(注1)
(注1)この修正によりカセットテープを入れたままLコマンドを実行するとカセットテープの早送りが行われるのが回避できます。

 次にTS-1000、TS-2000共にAPP_BASIC_LISP_SDフォルダ内のAPP_TS-1000_TS-2000_SD.binをMZTアドレスF080h(実アドレスF000h)から付け加えて保存します。(MZTファイル0000h~F5EFh)

Lコマンドから「*FDL」で検索、カーソルで選んで読み込もうとした場合に「DOS FILE:」に戻ってしまいますが、再度カーソルを合わせて[CR]すれば読み込めます。

BASE MZ-2000 MZ-2200

 FD又はFDLコマンドでTS-2000をLOAD起動した後、LコマンドでBASEを読み込めばSD-CARD対応版として使えます。なお、F000h~F5EFhにはSDアクセスルーチンがあるので破壊しないようにしてください。

 また、SD-CARD対応済みのTS-2000と合わせてMZTファイルとすれば起動が簡単になります。

WICS MZ-80B MZ-2000 MZ-2200

 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コンパイラも同様です。

EDASM MZ-2000 MZ-2200

 FD又はFDLコマンドでEDASMを読み込めばSD-CARD対応版として使えます。

 なお、F800h~FE56hにはSDアクセスルーチンがあるので破壊しないようにしてください。

TTL MZ-80B MZ-2000 MZ-2200

 FD又はFDLコマンドでTTLを読み込めばSD-CARD対応版として使えます。

 なお、F800h~FE56hにはSDアクセスルーチンがあるので破壊しないようにしてください。

FORTRAN MZ-80B

 FD又はFDLコマンドでFORTRANを読み込めばSD-CARD対応版として使えます。

 なお、F800h~FE56hにはSDアクセスルーチンがあるので破壊しないようにしてください。

q-Pascalコンパイラ

MZ-80B版

月刊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修正前修正後備考
017000F0-- -- --C3 00 4B
03F5037516 04 21C3 06 E0
0418039816 08 EDC3 09 E0
042403A416 08 EDC3 0C E0
043F03BF16 01 21C3 00 E0
047403F416 02 EDC3 03 E0
04F00470EFC9(注1)
52895209CD C7 6300 00 00
528E520E2A D0 6500 00 00
52915211EB00
52925212EF 0000 00
529452142A D0 6500 00 00
5297521711 0B 0000 00 00
529A521A1900
529B521B22 E0 6500 00 00
529E521EED 5B E0 6500 00 00 00
52A25222EF 2BEF 10
52A45224DA 45 4E00 00 00
(注1)この修正によりカセットテープを入れたままLOADコマンドを実行するとカセットテープの早送りが行われるのが回避できます。
MZ-2000、MZ-2200版

月刊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修正前修正後備考
017000F0-- -- --C3 00 4B
0414039416 04 21C3 06 E0
043703B716 08 EDC3 09 E0
044303C316 08 EDC3 0C E0
045E03DE16 01 21C3 00 E0
0493041316 02 EDC3 03 E0
04F304733EC9(注1)
52895209CD C7 6300 00 00
528E520E2A D0 6500 00 00
52915211EB00
52925212EF 0000 00
529452142A D0 6500 00 00
5297521711 0B 0000 00 00
529A521A1900
529B521B22 E0 6500 00 00
529E521EED 5B E0 6500 00 00 00
52A25222EF 2BEF 10
52A45224DA 45 4E00 00 00
(注1)この修正によりカセットテープを入れたままLOADコマンドを実行するとカセットテープの早送りが行われるのが回避できます。
MZ-80B、MZ-2000、MZ-2200版共通

修正を加えて出来上がったものを開始アドレス0000h、ファイルサイズE56Fh、実行開始アドレス0000hのMZTファイルとして保存します。

なお、C-DOS常駐領域にSDアクセスルーチンを置いているのでFDの利用はできません。FD関連コマンド(dirなど)を実行すると暴走しますので気を付けてください。

16BIT BASIC 1Z-012

まず、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 V1.0

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修正前修正後
025216 01 21C3 00 F0
028316 02 EDC3 03 F0
028F16 04 21C3 06 F0
02B316 08 EDC3 09 F0
02BF16 08 EDC3 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からの起動

 拙作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起動イメージ)でなかった場合には暴走します。

BOOT LOADERをROMに書き込む

 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の違いを整理しました。

Parts

30
QtyValueFootprintReferences
100.1uFCapacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mmC2, C3, C4, C5, C6, C7, C8, C9, C10, C11
4MountingHole_3.2mm_M3MountingHole:MountingHole_3.2mm_M3MH1, MH2, MH3, MH4
274LS04Package_DIP:DIP-14_W7.62mm_LongPadsU5, U7
274LS273Package_DIP:DIP-20_W7.62mm_LongPadsU1, U2
274LS30Package_DIP:DIP-14_W7.62mm_LongPadsU8, U11
1100uFCapacitor_THT:CP_Radial_Tantal_D5.0mm_P2.50mmC1
129C256/27C512Package_DIP:DIP-28_W15.24mm_LongPadsU6
174LS10Package_DIP:DIP-14_W7.62mm_LongPadsU10
174LS245Package_DIP:DIP-20_W7.62mm_LongPadsU9
18255Package_DIP:DIP-40_W15.24mm_LongPadsU3
1Arduino_Pro_Mini_5VMZ2000_SD:Arduino_Pro_MiniU4
1BUSmz-2000:PinHeader_2x22_P2.54mm_VerticalJ1
1MicroSD Card AdapterConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ3
1Micro_SD_Card_KitMZ2000_SD:AE-microSD-LLCNVJ2
1SLIDE_SWITCH_3PConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalS1

More from yanataka60/MZ-2000_SD

4
  • 2 layers115.8 × 142.7 mmMz-2000, the printed circuit board in 3D

    Mz-2000

    yanataka60/MZ-2000_SD

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

    30 parts16MIT
  • 2 layers100 × 100 mmMZ2000 SD, the printed circuit board in 3D

    MZ2000 SD

    yanataka60/MZ-2000_SD

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

    22 parts16MIT
  • 2 layers100 × 99.8 mmMz-80b, the printed circuit board in 3D

    Mz-80b

    yanataka60/MZ-2000_SD

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

    7 parts16MIT
  • 2 layers100 × 99.8 mmMz-2000, the printed circuit board in 3D

    Mz-2000

    yanataka60/MZ-2000_SD

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

    5 parts16MIT

Similar boards

  • 6 layers244 × 244 mmRetroslop, the printed circuit board in 3D

    Retroslop

    CPTforever/8088-MicroATX-Computer

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

    193 parts
  • 2 layers137 × 140.7 mmX1 SD, the printed circuit board in 3D

    X1 SD

    yanataka60/X1_SD

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

    40 parts6MIT
  • 2 layers190 × 100 mmVga, the printed circuit board in 3D

    Vga

    tetrix450/masic-vga

    MASIC VGA adapter schematics and PCB

    64 partsMIT
  • 2 layers279.4 × 203.2 mmZ180GDC, the printed circuit board in 3D

    Z180GDC

    lynchaj/rhyophyre

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

    249 parts12
  • 4 layers129.5 × 106.7 mmIBMReceiver, the printed circuit board in 3D

    IBMReceiver

    schlae/ibm-extender

    IBM 5161 expansion chassis extender and receiver cards

    39 parts33
  • 2 layers235 × 160 mmInput output.SelfHost, the printed circuit board in 3D

    Input output.SelfHost

    lynchaj/duodyne

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

    139 parts15
  • 2 layers100 × 100 mmALU1, the printed circuit board in 3D

    ALU1

    Left-Hand/74-gate-computer

    An logic gate computer made of 74 gates

    75 parts19

Questions

How big is the MZ2000 SD PCB?

It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the MZ2000 SD use?

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.

Where can I download the MZ2000 SD KiCad files?

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.

Can I use the MZ2000 SD design in my own project?

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).