MZ-1M01
(MZ-2000/2200用16ビットボード)

Tweet

 MZ-2000/2200のオプションにいろいろあれど、やはり一番はこの「16ビットボード」でしょう。結果的には「イロモノ」の分類に入ったこのオプションですが、発表された当時はそれはもうわくわくしたものです。

 1983年初頭だったと思いますが、MZ-1M01をはじめて見たのは新聞の経済欄の新商品コーナーでした。「8bitマシンであるMZ-2000が16bitマシンに化ける!」という16ビットボードキットの登場はかなりの衝撃でした。I/Oポート(MZ-1U01)を持っていないユーザーにも対応するためキーボード下に収納するともありました。写真の女性(シャープはなぜか新聞・雑誌発表用の写真にはモデルの女の子に商品を持たせるんよねぇ)が手にしているボードはかなり横長で、それまでのMZ用オプションボードとしては異色の形状をしていました。

 情報が明らかになるにつれて期待は増します。メモリは本体の倍の128KB、それまでサードパーティしか供給していなかった漢字ROMをサポート、しかもそれまでのシステムをロードさせると従来どおりの8bitマシンとして使用可能。しかし定価78000円というのはちょっと高かったですねぇ。まぁ当時私はMZ-2000すら持ってなかったのでそれ以前の問題だったのですけど。

 ですが結局16ビットボードはヒットせず1982年暮れの段階で16bitマシンをリリースしなかったシャープはマイナーの道へ。売れ行き次第だったのかもしれませんが、DISK BASICはリリースされませんでした。システムがテープBASICのみではいくらメインメモリが大きくなっても使う気にはなれないでしょう。まぁシステムに関してはアイビット電子がDISK BASICの開発をしたり(但しプログラムの読み書きに留まり、シーケンシャル/ランダムデータファイルの取り扱いはできないβレベルで開発ストップとか)、Oh!MZ誌にてCP/M86の移植記事が掲載されたりしましたけど、そういうのを実務で使うはずもないでしょうしね。

 そして決定的だったのが16bitモードでは8bitモードよりも遅い、という事実。8088/5MHzというCPUはそれ自体ではZ80/4MHzと大きなパフォーマンス差というものがないのでしょう。それに加えてI/O処理のために双方のCPUが相手に対して割り込みをかけあい、それがオーバーヘッドとなって全体が遅くなっていたのです。後に漢字ROMとしてMZ-1R13を発売した段階では、もう16ビットボードは(もしかすると思い出したくもない)過去のものだったのかもしれません。せめて8087がつけられるようになっていればまた違った展開もあったかもしれませんが。

 で、余ったMZ-1M01の多くはアイビット電子へ。定価から考えると叩き売り状態で、私は8000円くらいで買ったような気がしますが、その後もまだ値下げされたようです。アイビット電子ではMZ-1M01を漢字ROM付で販売しましたが、この漢字ROMは純正のMZ-1R08ではなく同じ回路らしいコンパチ品。使ってみると部分的に字の半分だけベタになったりで調子が悪く、一度交換しましたがもっと悪かったのであきらめました。後にジャンク品としてMZ-1R08を入手しましたのでそれに交換しています。もちろん文字化けなどはありません。

 16ビットボードの全景です。要はMZ-2000の「ボンネット」を開けたところなのですが、見やすいようにグラフィックRAMボード(MZ-1R01)は取り外しています。
 手前の横長の基板がMZ-1M01本体で、この基板を左右から挟んでいるのはキーボードの支柱です。支柱そのものは真ん中右寄りにもあったのですが、MZ-1M01の取り付けに伴い撤去しています。さらには真ん中と右の支柱の間にあったスピーカーを取り外しブラウン管の横に移設することで場所を確保しています。
 左の支柱と基板との間に見える白っぽいものは基板を支える金具で、これと一部の基板上のねじ穴で基板自体を支えています。無論最初からMZ-1M01のために用意されたねじ穴などありませんので、別の目的のために開けてあったものとかスピーカーなど撤去することで開いた穴を利用しています。そのために基板の設計もかなりの制約を受けながら進められた雰囲気が伺えます。
 拡張されたMZ-2000が16bitマシンとして動くには8088をメインCPU、Z80をサブCPUというかI/Oプロセッサとして働かせる必要があります。8088としては外部I/Oデータを間接的に取り扱うわけですが、だとしても16ビットボードはZ80からI/Oデバイスとして見えなければなりません。拡張I/Oスロットのお世話にならない16ビットボードとしてはどうやってZ80バスと接続するか…?
 この答えが「Z80の交換」です。ソケット実装であることを利用して、元もとのZ80を取り除き、16ビットボードにつながっているフレキシブル基板の先にあるZ80を基板ごと挿し込むのです。やはりこのあたりはあとから考えた拡張であることがよくわかる部分ですね。最初からZ80カードが発売されることが予定されていたFM-8/7/11なぞは専用スロットという形でCPUを切り替えられる仕組みを作ってあったわけですが、そうでないMZ-2000では苦労の跡がありありです。
 16ビットボードのCPUとクロック。もともとここには8088が載っていたのですが、これをV20と置き換えてみたわけです。もちろん期待通り正常に動きました。が、そのままではやはり速くないんです。8086/8088とV30/V20では命令自体処理速度が上がっているものもあって、ただ交換するだけで速度アップが見込めなくもないんですけど、実際に簡単なベンチマークプログラムを動かしてみるとほとんど差が出ないんですよね。速くなってないわけではないんですけど、効果は1〜2%程度しかない。
 そこで、8MHz版のV20しか手に入らなかったのを幸いにクロックアップを試みることにしました。16ビットボードの回路図を見る限り8088のCPUクロックがZ80側に何らかの影響を及ぼしていないようでしたので、実行に踏み切ったのです。
 8088の回路は8284というクロックジェネレータで原発振を1/3に分周しています。5MHzのシステムに使われている水晶は15MHzというわけですね。8MHzだと24MHz。日本橋でその水晶を買ったのですが、失敗したら怖いですし、元に戻せるように15MHzも購入。さらに8MHzがだめでももう少し低い値なら動く可能性もあるので、22,20,18MHzの水晶も購入。
 でまずは高いところからと24MHzを試してみたら、なんと一発で成功。これだと本当に8bitモードより速く、ようやくMZ-1M01の価値が出たような気がします。
 実はMZ-2000は電源が弱いんです。といっても耐久性がないということではなく、CRTを内蔵しているために本体の基本部分だけの電源で巨大になっているんです。実際MZ-1U01ではI/Oユニット自体に電源を搭載していますし、16ビットボードでは専用の電源を用意しています。それがこのスリットがいくつも入っているケースに収まった箱。16ビットボード自体は特別な電圧を必要としているわけではなくて、単に電源容量が足らないので別電源を用意したということのようです。
 キット付属のラベルです。基本はこのカセットの蓋に貼るもののはずですが、Oh!MZのCP/M86移植記事では「キーボードに貼った"16bit"のエンブレムが泣いている」とかなんとか書いてありましたので、もしかしたらMZ-2200あたりではキーボードの右上に貼るような人がわりといたのかもしれません。
 いやでもしかし、16ビットボードの現実を知ったらこのエンブレムは逆に情けなさをアピールしているみたいで、やっぱり泣けてきます。
 16ビットボード付属のドライバー。「キット」ですからそれなりの道具が必要なわけですが、こんな立派なドライバーが同梱されていました。このドライバーでほとんどの箇所のねじを取り扱うことができ、ひじょうに重宝しています。

8088とZ80の連携のしくみ

 今や16ビットボード込みでのエミュレータが使える時代です。作者の武田さんがアップした、16ビットボード付属のデモ動画をご覧ください。

 エミュレータがあるとソフト開発の利便性が高まりますね。今さら感もなきにしもあらずではありますが、16ビット環境で動くソフト、それもシステムソフトを作りたくなってきます。いろいろ妄想も捗りますが、妄想を現実化する一歩として16ビットボードの仕組みを解析してみましょう。

 動画にあったブロック図はマニュアルにあるものとだいたい同じですが、その図では動作まで読み取れません。両CPU間の通信に注目したブロック図を作ってみました。

 真ん中辺りの縦線の、右が8088、左がZ80の領域です。通信動作の説明に必要なパーツだけピックアップしていますので、細かい信号や回路上必要だがプログラムとしては気にしなくてよいものは省略したりしています。

 都合によりZ80側から説明します。図にあるZ80A PIOはMZ本体に元からあるものではなく、16ビットボード上に搭載されているものです(左の方にある点線の右が16ビットボード、左がMZ本体)。新設されたPIOのアドレスは次のとおりです。

アドレス 機能 備考
$D4 ポートA データ モード2(双方向モード)
$D5 ポートA コントロール  
$D6 ポートB データ モード3(ビットモード)
$D7 ポートB コントロール  

 ポートAをモード2・双方向モード、割り込み許可、ポートBをモード3・ビットモード(ビット7のみ出力・残りのビット6〜0を入力)、割り込み許可で初期化しています。ポートAが双方向モードで初期化された時の割り込みは、ポートAデータ引き取り(ASTB)にてポートA割り込み、ポートAデータセット(BSTB)にてポートB割り込みとして動作するため、ポートBの入力パターンによる割り込み防止として全ビットをマスクしています。これはZ80解説本にも書いてあるほどのスタンダードな使い方です。

 ただZ80側の割り込みについて、16ビットボードのマニュアルに注意書きがあります。それは多重割り込みの使用禁止で、確かに回路を確認しても16ビットボード上のPIOのデイジーチェーンがどこにもつながっていません。IEIはプルアップしてあるのみ(Hレベル固定=優先度最高)、IEOは外部に出力するコネクタも用意されているのですが、そこと接続するケーブルは存在しません。メインボードとの接続がCPU端子だけなので、そこに来ていないIEI/IEOを接続するわけにはいかなかったということなのでしょうが…。

 次に8088側です。Z80との通信に関係するI/Oアドレスを次に示します…と言うか、この通信部以外はROMとRAMしかないようなものなので、この表はそのまま8088側のI/Oマップということにもなります。

アドレス 機能 備考 
$7C 設定・制御 8259A
$7D
$7E データ入出力 PIO ポートA 
$7F コマンド・ステータス PIO ポートB bit7…入力
bit6-0…出力

 このアドレスがMZ-5500に引き継がれていたら「やっぱり16ビットボードは本格的16ビットパソコンの原形だったんだ」と嬉しくなるところだったのですが、全然違いましたね…。

 Z80A PIOと対向する回路は双方向バッファとラッチになっています。PIOのポートAに対してはポートアドレス$7Eに対して書き込みを行うとBSTBを操作してデータをセットし、またアドレス$7Eを読み出すとASTBを操作してPIOにZ80側からセットされているデータを8088のバスに引きだします。このそれぞれの操作でZ80側に割り込みが発生するわけです。

 ポートアドレス$7Fに書き込んだデータはPIOの手前にあるラッチに記憶されます。これは7ビット幅になっていて、最上位ビットは捨てられます。逆に読み出すとPIOポートBの最上位ビットが8088のデータバスに引き出されます。この時残りの7ビットは無効です。ポートBに対する読み書きではZ80に割り込みは発生しません。

 Z80A PIOのARDY出力(ポートAにデータがセットされるとHレベルになる)とBRDY出力(ポートAに外部からセットされたデータが読み出されバッファが空になるとHレベルになる)はいずれも8259AのIR0とIR1の入力端子に接続され、8088への割り込みとして受け付けられます。図ではポートBのビット7もIR2に接続されていますが、この信号はIPLとBASICでは割り込みとしては使用されず、プログラムで状態を確認する使い方になっています。

 8259Aの初期化はIR0・IR1のみ有効の他はエッジセンス・自動EOI・ベクタ20Hという内容です。ベクタが20HだとMS-DOSで使用しているソフト割り込みと重なりますが、その時は別の値をセットすればいいだけの話ですね。インテルによれば1FHまでリザーブということなので、使用できる先頭を設定しただけなんだと思います。

 では次に実際の動作について見ていきましょう。これはブート時とBASIC動作時とで多少の違いがありますので、順番に紹介します。

 リセット後、8088のIPLは8259Aを初期化した後PIOからのARDY割り込み待ちになります。ちなみに、割り込み待ちとは割り込みハンドラで1に書き換えられるワークメモリを参照して0ならループして待つ、というような意味です。
 本体側のIPLは16ビットボード装着後も元のままのプログラムですから16ビットボードのことなど知る由もありません。そのため、IPL動作中は16ビットボードのPIOは初期化されないままになっています。もちろん8ビットモードで動き続ける限りこの状態が続きます。

 Z80側にLOADERがロードされて初めて、16ビットボードのPIOが初期化され通信が可能になります。まずZ80からポートAに00Hが書き込まれることで8088に割り込みが発生します。8088ではこれを読み出して、00Hであることを確認したらいよいよ8088のプログラムを転送します。

 プログラム本体に先立ち、10バイトのプログラム情報を転送します。構成は次のとおりです。

いずれも2バイトです。従って、IPLでロードできる8088のプログラムの大きさは64KBに制限されることになります。そしていよいよこの情報にもとづいてプログラム本体が8088に転送されます。

 この時の転送とは、具体的に

  1. (Z80)1バイトをポートAに書き込み→(8088)割り込み発生
  2. (8088)ポートAから1バイト引き取り→(Z80)割り込み発生
  3. 以上を必要バイト数だけ繰り返し

というものなので、まぁ速くはないですね…。

 そして転送が終われば、最初に渡された実行アドレスのオフセットとセグメントを$3FC〜$3FFに書き込み、INT 255を実行することでプログラムがスタートします。ソフト割り込みを使うのは8086の命令にレジスタ間接FARジャンプがないからですね。飛んだ先でも割り込みを終わらせるような動作になっていないようなのですが、レジスタやらスタックやらステータスやらは行った先で再構築するということなのでしょう。

 以上がIPLの基本的な動作となるのですが、実際にはもうちょっと機能があります。
 8088のIPLはZ80からの割り込みを待ち始めてから実際に割り込みがかかるまでの時間を計測しており、これが150ms未満だとプログラムの転送を行わず即座に実行アドレスにジャンプします。これはIPLリセットと通常のリセットを区別するためのもので、IPLリセット(ブート)の場合はLOADERを読み込む時間が発生するので150ms以上かかるのに対し、通常のリセットは既にロードされているZ80側のプログラムがすぐ動き出して8088のIPLにアクションをかけるため150ms未満で割り込みが入る…という理屈なのでしょう。

 それから、8259Aの初期化の3ms後でPIOポートBビット7が0と読めたら、プログラムの転送を行わず特定のアドレスにジャンプするようになっています。リセット後であれば、PIOは両ポート共入力モード(モード1)になっているはずで、実際の回路にはあるバッファ(LS125)の入力が開放される格好になり、その場合このビット7はHレベル…つまり1が読めるはずなのです。それが0であるということは、ポートBは出力モードとして初期化されているということになり、8088側だけがリセットされている(Z80側はリセットされていない)ことを意味します。なぜこの状況を想定しているのかさっぱりわからないのですが、開発段階で使用した機能なのではないかと推測します。

 さらに、最初のZ80からの割り込みの際にポートAに00H以外の値が書き込まれた場合も、また別のアドレスにジャンプするようになっています。ジャンプ先ではZ80側からの指示でメモリを読み書きしたり指定したアドレスにジャンプするなど、16ビットボードをターゲットにしたデバッグモニタを構成するためかのようなインターフェースになっています。この機能については後で改めて触れます。

 BASICが起動すると、それぞれのCPUの役割(メインかサブか)が入れ替わり、それに伴ってブート時には使われなかったPIOポートBが活用されるようになります。

 Z80側にはIOCSがロードされ、I/O処理の一切を受け持ちます。IOCS起動時に改めてI/Oを初期化しますが、16ビットボードのZ80A PIOは割り込みベクタ以外の設定値をLOADERと同じ内容で書き込むため、その動作もブート時と同様ということになります。一方8088側では8259Aを初期化しないまま=IPLでの設定のまま処理が進行します。

 Z80 IOCSは初期化終了後BREAKキーをチェックしながら8088からPIOポートAへの書き込みを待ちます。もしBREAKキーが押されていたら、PIOポートBに80Hを書き込みます。つまりビット7に1が出力されることで、8088はBREAKキーが押されたと知ることができるのです。

 8088側でI/O操作が必要な機能を実行すると、まずポートBに機能番号を格納し、次いでポートAにパラメータを書き込むとZ80側に割り込みが入ります。Z80側はポートBから機能番号を受け取り、番号に応じた処理ルーチンに飛んだ先でポートAにある最初のパラメータを受け取ります。

 パラメータといっても機能ごとにいろいろなものがあります。例えば1文字表示なら最初のパラメータが表示すべき文字になりますし、文字列ならば最初のパラメータは1文字目となります。時刻取得など8088からのパラメータが必要ない場合でも割り込み発生のためにダミーパラメータの書き込みは必要です。

 いずれにしても、共有メモリやRAMディスクのようなある程度の大きさのRAMでデータ交換するような仕組みでなかったのは残念です。仮に8088の方が高速に処理できる(乗除算とかZ80からするとうらやましい命令もありますしね)としても、データの転送がアドバンテージを全て帳消しにしてしまうのでは、カタログに謳う「並列処理」の宣伝文句が泣きます(もっとも他メーカーも含めて16ビット化で従来部分がI/O処理専門になることをこう表現してさもメリットのように書くのは常套だったようですが)。基板の大きさという制約もありますし、必要最小限の部品での実現ということでは仕方なかったのでしょうが…。

デバッグモード?

 8088側のIPLではZ80側からの指示でメモリを読み書きする機能があると紹介しましたが、それについてもうちょっと詳しく説明しましょう。

 8088がZ80からのアクション、つまりブートプロセスの開始を知らせる00Hの代わりにそれ以外の値がPIOポートAに書き込まれると、デバッグモードと思しきいくつかのコマンド待ちに移行します。コマンドの一覧を次に示します。

コード 機能 入力 出力
00 漢字フォント読み出し JISコード
(アスキー文字列、4バイト)
漢字フォント
(32バイト)
01 メモリ読み出し オフセット
セグメント
サイズ
(いずれもワード、計6バイト)
メモリのデータ
(サイズで指定した長さ)
02 メモリ書き込み オフセット
セグメント
サイズ
(いずれもワード、計6バイト)
データ
(サイズで指定した長さ)
 
それ以外 指定アドレスにジャンプ オフセット
セグメント
(いずれもワード、計4バイト)
 

 普通によくありそうな、パソコンのI/Oの先につないだマイコンボードのメモリを読み書きしプログラムの実行ができる、モニタのインターフェースという感じですね。ブレークポイントで止めてレジスタを表示させて…というようなデバッガの機能を実現するにはちょっと厳しそうですが、メモリダンプや逆アセンブルぐらいなら十分そうです。

 ただ、ひとつだけ雰囲気の違うコマンド…コマンドコード00Hの「漢字フォント読み出し」とかいうものがなんであるんでしょうか。JISコードをバイナリではなくアスキー文字列で渡すと、対応するフォントを漢字ROMから読み出してZ80側に返してくれるのです。これ8ビットモードのシステムで使える漢字ROM同然じゃないですか。しかもコード、つまり機能番号が0番なんですよ。筆頭です。逆にメモリの読み書きの方がついでなのかもしれないと思ってしまいます。

 せっかくなのでこの仕組みを使って漢字を表示するテストプログラムを作ってみました。

88IPL_TEST1.zip

こんな感じでJIS第一水準の全コードの文字を表示します。16ビットボードの漢字ROMのパターンを表示していますが、動かしているのは8ビットのBASICプログラムです。

 PIO-3055/MZ-1R13を装着して表示させるのと変わらないようにも見えますが、MZ-1R13などは一部に第一水準外の文字を含んでおり、それが表示されるかどうかで見分けることができます(例えばJISコード2577から重さ・容量の単位記号が並んでいるかどうか)。

 特に16ビット側にプログラムを用意する必要もなく漢字フォントが得られるなら、漢字ROMボードの代わりになりそうですよね。16ビットボードのオマケ機能として提供されても不思議ではないぐらいの準備状況なのですが、実際にそうならなかったのはやはり16ビットボードと16ビット環境が漢字出力機能を実現するための製品であり、8ビットのソフトで漢字出力できちゃったら意味がないと考えたからかもしれません。

 もうひとつ、メモリ読み書きが可能ならS-OS"SWORD"環境でRAMディスクとして使えるんじゃない? と思いつき、システムにパッチを当てるプログラムを作ってみました。

88IPL_TEST2.zip

 GRAMディスクだと特殊ワークエリアとして取られてしまう分があるので管理領域を含めても8クラスタ(1クラスタ=4KB)しか容量がありませんが、16ビットボードのRAMは128KBですから全部で32クラスタあることになります。ただし末端に8088のスタックがあるのでそこを避けて31クラスタというのが仕様です。

 MAGICでグラフィック表示にGRAMを使ってしまうとRAMディスクが消えてしまいましたから、全く別の所にあるメモリをRAMディスクとして使えるのはいいですね。この機能、もっと昔に気づきたかったな…。

テープフォーマット

 入手した時はそれはもう一生懸命いじり倒して、上記のように改造とかしたりもしたのですが、同時に解析もいろいろやってました。マニュアルにモニタ他のソースリストが掲載されていたこともあり、実際に動かして試しながら理解を進めていたのです。
 改めてマニュアルを手に取ると、そこに当時のテープフォーマット解析メモが挟んでありました。16ビットモードで書き出したテープは8ビットモードで読めるのか、その逆は…と考えたのがそもそもの発端だったかと思いますが、結果はともかくその情報をここで公開することにします。

  +0h +1h +2h +3h +4h +5h +6h +7h +8h +9h +Ah +Bh +Ch +Dh +Eh +Fh
00h 属性 ファイル名
10h   0Dh サイズ ロード
(オフセット)
? ロード
(セグメント)
? スタート
(オフセット)
スタート
(セグメント)

 内訳は以下の通りです。

 使われていない部分とか気になりますが、もう今となっては…。当時にしたってツールとか提供されませんでしたからねぇ。きっとFDOSで動く8088クロスアセンブラがあったと思うのですが。ということもあって8088オブジェクトは違う属性にしてあるのかもしれません。

CP/M86

 月刊Oh!MZ誌・1985年5月号と7月号に、なんとCP/M86を16ビットボードに移植するという記事が掲載されました。早速…ではなく、掲載から何年も経ってからですが記事に従って移植作業を実行し、どうにか成功しました。

 MSA版のMZ-2000用CP/M80をベースにI/O処理部を作り、それがCP/M86のBIOSと通信するというシステムになっています。キー操作や画面はCP/M80のまま、右下に時計が表示される…はずがなんかバグってますが、CP/M86としては問題なさそうです。V20に交換したこともあり、CP/M86用CP/M80エミュレータも動作します。

 CP/M86の基本部分は5月号掲載分で動作します。7月号にはグラフィック表示と漢字表示が追加できるリストが掲載されました。これらの機能は拡張BIOSを呼び出すことで使用できます。

 まぁしかし私がこの移植作業を行ったのはもうMS-DOS全盛でCP/M86が忘れ去られかけてた時期で、せっかく動かせるようになっても何かのソフトが手に入るわけでもなく…無理を承知で、MS-DOS(またはPC-DOS)が移植できてたらもうちょっとマシだったんでしょうけどね…。

幻のDISK BASIC

 月刊Oh!MZ誌・1985年9月号から11月号までの間、アイビット電子の広告に「16Bit Disk BASIC開発中!」という告知が掲載されました。もちろん、16ビットボードキットに続けての告知ですから、16ビットボード用のDISK BASICであることは明らかです。

 なんと、いち小売業であるアイビット電子が、メーカーも発売しなかったDISkバージョンのBASICを出そうというのです。なかなかに大胆な試みではありませんか。

 タイミングとしてはMZ-2500の発表から発売開始、MZ-5500もMZ-6500も過去のマシンと化した状況で、アイビットとしては大量に抱えた16ビットボードの在庫処分を促進すべく企画したのかもしれません。

 …しかし、その後アイビットの広告に16ビットボード用DISK BASICが載ることはありませんでした。まぁ有り体に言えば、開発に成功しなかったということですね。

 ところが、です。どうもその16ビットボード用DISK BASIC、こっそりと売っていたようなのです。そして幸いなことに、それが手元にあるのです。

 このDISK BASIC、テープ版のBASIC(1Z-012)を拡張してディスクにアクセスできるようにしたもので、

とまぁ、ちょっとがっかりする仕様になっています。特にデータファイルを作成できないのは痛いですね。マニュアルには配列をSAVEするようなデータファイルを扱う仕様にて1986年6月完成予定で開発中とあるのですが、これも完成しなかったようです。ディスクのデータをあらかじめまるごとロードしてしまえばなんとでもできるでしょ、という思想でしょうか。

 こういった、テープ版BASICやインタープリタPASCALにディスクへのセーブ・ロード機能を付け足そうというのは、雑誌にも度々掲載された、MZ/X1特有のネタですね。テープ版BASICはディスク版よりフリーエリアが大きいので、ディスク入出力とフリーエリアのいいとこ取りをしたい人に好まれました。しかしそういうのをDISK BASICと呼んでいいかは微妙ですね…。

 なお、2000円で売っている5インチDisk版LOADのみと注釈された専用16Bit BASICは、キットに添付されているテープ版BASICをディスクからブートできるようにしたものです。ブートした後にディスクをアクセスできるわけではありません。Oh!MZ1985年5月号に、QDから起動できるようにする方法が紹介されたことがありましたが、それと似たようなものですね。

各社の8ビットパソコン用16ビットボード(純正限定)

 こんな変態オプションを出したりするのなんかシャープぐらいかと思ってたら、どうもけっこうあちこちのメーカーから16ビットボード的な拡張機器が出ているらしいという…。ちょっと一覧にしてみましょう。

メーカー 品名
型番
CPU RAM 適用機種 サポートOS
シャープ 16ビットボード
MZ-1M01
8088/5MHz 128KB MZ-2000
MZ-2200
 
NEC 16ビットカード
PC-8801-16
8086/8MHz  128KB PC-8801
PC-8801mkII
PC-8801mkIISR
MS-DOS V1.25
富士通 8088カード
MB22404
8088/4.9MHz 64KB(最大192KB) FM-8 CP/M86
8088カード
MB28041/MB28042
8088/8MHz 128/256KB(最大960KB) FM-11 CP/M86
MS-DOS V2.11
日立 16ビットカード
MP-1600
8088/4.77MHz 128KB ベーシックマスター
レベル3
MS-DOS V1.25
ソニー スーパーチャージャー
SMC-7086
8086 256KB(最大768KB) SMC-70 CP/M86

 この一覧表は、メーカー純正に限定しました。メーカーがこういった製品を出すからには、単なる遊びなどではなく、例え建前だとしても何らかの戦略や見込みがあってのことだろうと思われるからです。サードパーティー製品はそれこそ「出した者勝ち」というか「目立ってナンボ」というか出しさえすれば誰か買って好きなように使ってくれるだろうというような、特段の戦略などなくても製品化してしまうようなことが考えられるので一緒にしない方がいいだろうと判断しました。

 ではその戦略とはいかに? …といってもほぼ推測なのですが…。

シャープ  MZ-1M01の場合は、MZ-1R08の項にも書いているのですが、MZ-2000にそれまでなかった漢字出力機能を提供するためのものではないかと考えます。もちろん既にMZ-3500という日本語を強力にサポートしたMZはありましたが、その設計に限界を感じていたのかもしれません。8086系であれば特に工夫がなくとも1MBのメモリ空間があるわけですから、日本語テキストで肥大化しがちな要求メモリ、表示のための漢字ROMなどは余裕で配置できます。

 一方で、CPUの性能が大きく向上したわけでもなく、16ビットマシンのメリットが巨大なメモリぐらいしかないのであれば、わざわざ別個に16ビットパソコンを作らなくてもアップグレードキットで16ビット化できれば十分だという可能性が生まれます。キット自体がそれなりに高価でも16ビットパソコンに買い換えるよりは安くなるはずです。要はそういう特殊事情でもない限りパソコンが16ビットである必要は少なく、それ以外は8ビットパソコンで十分という見込みだったということなのでしょう。
 
NEC  PC-8801-16の発売はMZ-1M01よりも遅く、しかもほとんどBASICをサポートしない(DOSのコマンドラインからダイレクトモード限定で使用できる)という割り切りです。MS-DOSは移植されているのでDOS用ツールは使えます。当時まだDOSの歴史が浅いのであまりソフトはなかったかもしれませんが、CP/M86用のプログラムは動作したでしょうし。

 ただまぁ…BASICはサポートしない、BASIC命令を限定的に使用可能にするMS-DOSは別売り…といったいユーザーがどういう目的で買うことを想定していたのか不思議すぎるんですよね。せめてDOSをセットにしないと何もできないじゃないですか。

 なおUCSD p-Systemの総代理店である日興通信がPC-8801-16対応品を発売していました。この手のハード製品にサードパーティーが対応製品を出すというのは珍しいように思います。

 タイミング的にはPC-100用ソフトの開発に使ってた可能性があるんじゃないかとか、PC-9801用MS-DOS1.25の発売と同時期らしくまた型番もそっくり(PS88-111とPS98-111)なのは何か意味があるんだろうかとか、邪推はとどまるところを知らなかったりしますが…何か特定用途向けカスタム品を一般販売しただけという可能性もなきにしもあらず…。
 
富士通  MB22404は同様に提供されていたZ80カード(MB22401他)と同じく専用のコネクタに装着するもので、Z80とは排他的に利用できることになります。つまりCP/M80の代わりにCP/M86が使える…というかCP/M80だけでなくCP/M86も使えるようにしておこう、ということなのでしょう。ボード上にはRAMがなく標準では本体のRAMを使用するのですがさすがに64KBでは足りなさすぎ、オプションの外付け128KB RAMを追加しないとどうしようもなかった模様です。

 6809マシンに異CPU環境を純正で提供するのは万が一の保険だったのかもしれませんが、FM-7ではZ80ボードしか発売されなかったところを見るとさすがに8088環境までは不要だと判断したのでしょう。

 そうなるとFM-11に8088カード(MB28041他)があるのはどういうことだ? と思うところですが、最上位機種ということもあり、8088搭載モデルを発売しているところからしてFM-11を16ビットマシンとしても位置づけていたのではないかと推測します。他の機種とはちょっと違う扱いというわけです。
 
日立  MP-1600はどうもベーシックマスター16000の発売より後の製品らしく、パンフによれば搭載することでBM16000と同等のソフト体系になると書かれてあります。これが部分的には「コンパチブル」などと表現されているのでハード的にも同じである、ハードを直接叩くプログラムも同じように動くと解釈したくなりますが…。

 おそらくグラフィック解像度など表面的なスペックとして同等、どちらもMS-DOSが動かせるから同等…ぐらいのものではないかと思います。BM16000はIBM PCコンパチと言われており、MP-1600もBIOSレベルでPCコンパチになっている可能性はあります。

 ただ完全に上位機種と同じだと解釈するのは行きすぎとしても、買い換えではなく追加で同等に使用できると案内するのは旧機種ユーザーへの救済措置なのでしょうね。その後どこまでソフトのサポートを続けるつもりがあったのかはわかりませんが…。
 
ソニー  SMC-7086は雑誌で型番が明らかになっていない状況でも「スーパーチャージャー」として紹介されているのでこちらの方が通りが良いかもしれません。SMC-70発表時からこの製品に関するアナウンスがされており、SMC-70自体がソニー初のパソコン製品であるにも関わらず、まるで使う前から16ビットへのグレードアップを案内されているようです。

 16ビットパソコンも作りたかったがさすがにそこまでの体力はないので、グレードアップオプションに留めた…ということなのでしょうか。SMC-70の企画は1980年頃に始まったようで、そこからの製品化なら8ビットパソコンになるのは当然だろうと思われるのですが、しかし時代は徐々に16ビットに向かい始めており、そこへの布石もするべきではないかと考えた…。
 

 こうしてそれぞれのケースを見て、さらにその後の歴史と併せて考えると、16ビットボードというものは本格的な16ビットパソコンまでのつなぎでしかなく、しかもその実状はお世辞にもつなぎですらなかった…と言えるのではないでしょうか。多分FM-11だけは例外でかなり本格的に16ビットパソコンとして活用されていた印象がありますが、その他はごく一部のユーザーだけが有効利用するもののメーカーはろくにサポートをせず、次の16ビットパソコンに注力して忘れられてしまう…。

 でも個人的にはこういうのが大好きなんですよね〜。端境期の徒花ほど楽しいものはないのかもしれません。

サードパーティー製シャープマシン用16ビットボード

 一転してサードパーティーの話です。もうちょっとネタがあったんでした。

 1983年の月刊マイコン誌の広告から。なんと、当時のMZシリーズのほぼ全てを対象に、CPUソケットに取り付ける(16ビットボードキットと同様)16ビットカードを開発した? している? 会社がありました。

 しかもメモリは本体共用とありますから、カード自体にRAMを持たず、Z80のメモリを直接アクセスするようです。同様にI/Oポートも全てアクセス可能とあります。

 推測するに、8088バスとZ80バスのブリッジがこのカードの肝で、MZ本体からは8088のコードを実行できるZ80プロセッサに見えるということではないかと思います。

 MZ-1M01が現役の時代ですから、39800円というのはなかなかにお買い得な価格設定です。約半額ですよ!

 …とは言え…いろいろ気になるところはありますよね…。まず、なんと言ってもソフトがどうなっているのか全く触れられていないのが謎です。BASICは? OSは? 買って取り付けたらまず何ができるの?

 あくまで直感で何の情報もありませんが、もしかするとメモリ読み書き程度のモニタプログラムがROMに搭載されているだけなのではないでしょうか。いやもしかしたらそれすらなくて、ROMの代わりにMZのメインメモリがマッピングされ、Z80動作時にあらかじめ所定の位置に必要なプログラムやデータをロードしておく必要があるとか…?

 8088のクロック周波数が銘記されていませんが、本体リソースをアクセスするなら5MHzですかね…それよりも割り込みの方が問題ですよ。さすがに8259くらいは使ってるんでしょうか…本体側は多分モード0割り込み相当の動作でないとまずいですよね。でもそうするとZ80ファミリLSIの割り込みは使えなくなる…。

 それと、本体メモリを使うのはいいとして(FMシリーズなんかと同じですよね)、64KBでも狭いのにMZ-80K1200だと最大でも48KBですよ。拡張予定となっていますがどれだけ増やせるのか、どうやって増やすのか…カードからしたら外付けっぽい気がしますがどこに置こうというのか…。

 ちゃんと売ったんでしょうかね…売ったとしたら買った人いたんでしょうか…実物を見てみたいですねぇ。何もできないワンボードマイコン以下の製品か、それとも意外にいろいろソフトがついてて遊べたのか…。

 もうひとつのネタが、X1/turbo用68000ユニットのJAZZ turbo。計測技研の製品で、ちょうどX68000がデビューする頃だったので気になってたんですよね。

 「CP/M68Kは別売」とありますが、むしろCP/M68Kを実行するためのシステムのようですね。X1側はCP/M80が必要とのことで、BIOS処理をCP/M80にやらせるということなのでしょう。

 X1側は拡張スロットにパラレルI/Fを装着して、そことこのユニットを接続するのだそうです。広告だけでなくOh!MZ誌にもちょっとだけ記事になっていますが、そのI/Fもユニットもさっぱり見かけることはありませんしネットを検索しても見つかりません。

 ただ、計測技研はMac関連のパーツを多数取り扱っていた会社で、「JAZZ turbo」という名称でならこちらのようにロジックボードを売っていた形跡があります。もしかしたらですが、Mac用ロジックボードをパラレルで接続してX1の外付けユニットにしてしまうというのがX1/turbo用JAZZ turboだったのではないでしょうか。

 さすがに、この価格でCP/M68Kを使いたいというだけの理由では買おうという気になりにくいと思いますけどね…。


MZ-1R08
(16ビットボード用JIS第一水準漢字ROM)

 MZ-80B時代はおろか、MZ-2000にモデルチェンジして以降もメーカー純正での漢字表示手段が提供されないという事態…まさか「JIS漢字コード」というソフト製品での解決が見送られた影響が残っていたわけではないと思いますが…他のメーカーが当然のように漢字ROMボードを供給する中、1982年度末まで何も手当てされないというのは今から見てもちょっと異常事態だったと思います。

 その頃にはサードパーティー製品としてI・Oデータ機器からPIO-3055という漢字ROMボードが発売されており、漢字出力手段がまったくないわけではなかったのですが…BASIC命令でサポートされていたわけでもありませんしね…。

 そんなわけで、16ビットボードはメーカーとしてMZ-2000の漢字出力を可能にするための製品だったとも言えるわけですね。専用の漢字ROMボードであるMZ-1R08はやはり専用のコネクタに装着する形状となっており、16ビットボード以外と組み合わせることはできないようになっていました。

 ちなみに、メインのRAMはこの下に並んでいます。

 さてその漢字ROM、MB83256-019〜022で構成する一般的なもの(X1turboと同じ)で、128KBあります。Z80の手に余る漢字ROMも、8088ならば余裕で配置可能…ということで、最もアクセスしやすいメインメモリの空間に割り当てられています。

 しかしその配置アドレス、なんと他のマシンならRAMの真っ只中であろう4000:0000h〜5000:FFFFhというもので…RAMのアドレス0000:0000h〜1000:FFFFhの直後ではないのはせめてもの良心(RAM容量を256KBにできる可能性は残した)なのかもしれませんが、やっぱりこれはないんじゃないかと…。

 回路的には空けてあるRAMと漢字ROMの間の128KBも改造以外に実装する方法がないですし、拡張することを全く考えていなかったんでしょうね…FDOSやCP/M86はおろか、DISK BASICすら発売しなかったのは、元々そういうつもりだった…とは思いたくないなぁ。

 さすがに漢字出力したいだけで10万円出す人がそれほどいるわけでもなく…MZ-2200の時代になってPIO-3055を純正化したMZ-1R13の発売で、存在価値を失いました。

所蔵品一覧に戻る