MZ-80CをX1turbo並みに改造する


これは頓挫した計画です

 考えてみるとMZ-80Cはフロッピーは2S、グラフィックなし、英小文字もなしということでS-OSが使えても非常に制限された使い方しかできません。仲間はずれはいやだ!ということでかなり昔ですがMZ-80Cの改造を構想しました。結局時間不足とか他の優先事項ができたりとかで延び延びになっているうちに現役当時ならばフル装備という状態になってしまったので、結局ほとんど手をつけずに今に至っています。そこで当時を思い出しながら、どのようにして改造するつもりだったのか挙げてみようと思います。


フルRAM化

 Z80のアドレスは、4to16デコーダである74151によって4KBのブロック毎の*CSとして管理されています。これが例えばROMやVRAMといったデバイスごとにあって、それぞれに配線されています。*CSのうちRAMに配線されてないものを新設したRAMにつなぎかえれば、64KBすべてRAMで埋められるわけです。ROMが隠れると即暴走するんじゃないのかとかVRAMが見えなくなったら画面が止まるとか考えられますが、「その状態のときにはそのメモリ構造に対応したモニタがあればよい」ということで、64KBモードの時はSP-1002の改造したものか新規設計のものをRAMにロードして使うことにします。


テキスト80桁化

 とあるメーカーからかつてMZ-80Kシリーズ用に80桁ボードが発売されていました。使用するには本体をそれなりに改造しないといけなかったのですが、改造により本体CRTに80桁のテキスト表示ができるようになりました。私の場合はボードを内蔵するのではなく本体のVRAM容量の倍加とドットクロック生成カウンタの変更で実現します。単純に横方向の文字数を増やすには水平走査期間中に表示するドットの数を増やせばよく、つまりはドットクロックの周期を半減すればいいわけです。VRAMに対しては8ドット周期で1バイトアクセスし、その文字コードに対応したアドレスをCGROMに与え、読み出されたデータをドットクロック毎に1ビットずつ送り出しています。ドットクロックが速くなればそれらの周期も短くなることになります。VRAMアドレスは1行につき8回(縦のドット数)走査されるのでそのカウンタも変更しないといけません。さらに、80桁固定ではないので切替機構も必要になります。幸いにして本体内ではメモリマップドI/Oしかないので、普通のI/Oにそのポートを入れれば従来のソフトが誤操作することはないでしょう。


PCGとカラー

 通常使用してても思うのですが、MZ-80Cは英小文字が使えないのが非常につらいです。読めないことが起こらない様にS-OSでは大文字に変換して表示するようになっていますが、ファイル名の判定とかはやはり小文字のコードのままで行っているので時々指定できないファイルがあったりします。ですがCGROMを入れかえるというのは少々乱暴です。過去に雑誌などでそのような記事がありましたけれども、それだと従来からのアプリを走らせたときに不都合がおきてしまいます。そこで、PCGです。すでにPCG-8000が装着済みなので、それを利用することにします。コードが違う可能性はありますが、変換テーブルで対処することにしましょう。
 カラーについては単純8色で良ければMZ-700みたいなアトリビュートを設ければ解決します。テキストVRAMと同じタイミングで読み込み、アトリビュートの内容に従ってデコードして送り出せばOK。ただ多色に対応させるとなるとそのぶんのアトリビュートビットが長くなることになります。但し点滅とかリバースなどのアトリビュートに関してはぶっちゃけた話、色さえ出せればそれほとむずかしい回路ではありません。


グラフィック表示

キャラクタ表示しかないMZにとってグラフィックは憧れでした。それを実現しようというハードはいくつかあったのですが、高かったり、PCGを並べているだけだったり、本体の改造が必要だったりで本当に一般的なものはありませんでした。さて、実はグラフィックとテキストではそれほどハード的な違いというものはないんです。テキストではテキストVRAMを読み、そのコードに対応する文字バターんをCGROMから読み、それを1ドットずつ送り出しています。グラフィックでは、グラフィックVRAMから読み出した値を1ドットずつ送り出しています。構造的にはグラフィックの方が簡単ですが、VRAMの内容がそのまま使われるか一旦CGROMを介するかの違いしかないわけです。
 表示するのがカラーであっても問題なくて、色の数だけ同時に読み出して同時に送り出せばいいんです。それが8色なら3プレーン分、65536色なら16プレーンあるとして16ビット取り出し、D/A変換して送り出すだけです。この次に400ラインの話をするので400ラインをサポートしたいところですが、色数を優先したほうが表現力の点で自由度が出ますので、多色にしたうえで容量との相談ということになるでしょうか。


インターレース表示と漢字

 どの号だったか忘れてしまいましたが、Oh!FMにFM-7をインターレース表示できるように改造して、400ラインを実現する記事がありました。私の場合はそのまま応用はできないですが、いろいろ参考にさせていただきました。
 インターレース表示にするには、垂直走査期間を倍に伸ばせばよいはずです。走査線は水平のようで実は右下にわずかに傾いています。そして最後の走査線は画面の半分ほどで表示できない領域に入ります(というかそうなるように垂直振幅を調整します)。ノンインターレースだとその直後に帰線して左上に戻るのですが、インターレースでは垂直の走査速度はそのままに帰線する周期が倍になっているのでまた上から表示を始めます。但し今度はさっきの「最後の走査線」が見えなくなったところから始まるので、右に半分、そして垂直にも線の太さ半分ずれて表示されることになります。実はここが一番検討してない部分だったりしますが…。
 画面が400ラインになった時のテキストの表示ですが、簡単には「2度目の走査も同じ内容を表示する」ということになります。見た目は400ラインCRTで見るMZ-2500のMZ-2000/80Bモードと同じ感じになります。理想は縦16ドットのCGROMを用意してそれと切りかえるのがいいんでしょうけどね。
 せっかく400ラインが表示できるのなら漢字も表示したいところ。グラフィックで表示させるのも手ではありますが、パワーもないことですし、漢字VRAMを設けるのがベストでしょう。原理的にはテキストVRAMと変わらないのですが、悩ましいのがVRAMに書きこむ際の漢字コード。ソフト的にはJISかシフトJISを漢字VRAMに書きこむのがベストなんですが、漢字ROMには漢字アドレスを与える仕様になっているので、ハード的には漢字VRAMに専用の漢字アドレスを書きこむのがいいのです。実際X1turboやPC-9801などはそのようになっています。逆に英語ソフトでの日本語テキストの親和性を高めるためにAXでは漢字VRAMにシフトJISを書きこむようになっています。漢字ROMがどうなっているのか(ハードでコード変換でもやっているのか?)わからないんですが。まぁこの問題は入手できる漢字ROMと搭載できる回路規模によって変わってくるんでしょうね(さらなる問題は、時代の流れか漢字ROMが生産されてないような気がすることですな)。


2D FDD

 MZ-80Cには2SのFDDがサポートされていますが、このFDCは単密度専用で2Dには使えません。それどころか当時それさえも持っていなかった私としては、都合よく余っていたX1用の拡張I/OボックスとFDD I/F(CZ-8BFI)を流用することにしました。Oh!Xにあった記事の応用で、X1の拡張ボードを接続するためのI/Fボードを制作し、その先にX1用拡張I/Oボックスをつなぎ、その中にFDD I/Fを入れたのです。一旦テープからロードするS-OSにはX1用のディスクI/Oルーチンを埋め込むことで、このI/Fは動作しました。ちょっと困ったのがクロックで、VFOのクロックの元になっているのだと思いますが、CPUクロックが2MHzではドライブが回転してもI/Oエラーとなりました。4MHzにすると正しく読めます。本当はX1用ボードのアダプタに4MHzのオシレータを載せるのが正しいのでしょうけど、本体から4MHzも出ることだし省略してました(^_^;)。
 とりあえず動くので次はブートROMだ!と適当にロードできそうなプログラムを作り試して見ましたが、うまく動きません。ダンプするとあちこち化けているみたいです。I/Oボックスと本体の間はフラットケーブルなのでノイズの影響を受けやすいと考え(以前CMU-800を接続していたMZ-80Cもどきが蛍光灯のノイズで簡単に暴走していた)、フェアライトコアを取り付けたものの効果なし、ではそのケーブルをシールドできるものに交換したらどうだろう?と先がフラットになっているシールドケーブルを調達してきただけで今に至ります。ノイズよりもROMの速度に問題があったのでは…と今更ながら考えてたりしますが。


その他

 サウンドなんかはどうするの?と思われるかもしれませんが、あれは言わば付加機能ですので、拡張I/Oボックスに入れるとかなんとかするだけです。強いて言えば既存のサウンドとMixするくらいでしょうか。ジョイスティックもそうですね。改造が必要な項目というのは、すでに内蔵している機能を強化するというものなので、元からない機能は外にどんどん足すだけの話です。


気がつくと完璧

計画が頓挫するうちに時間が経ち、そのうちにMZ-80Cの環境は激変しました。MZ-MLにて放出品の告知があり、半年以上かかりましたが無事FDD I/FとシステムサコムのFDD(シングル)、ニデコのカラーボードが手に入り、ニュースグループで純正シングルFDDをGetし、それならということでアイビットにてFDOSを仕入れ、それまであったPCGと倍速基板とプリンタI/Fによってまさに完璧になりました。
このように完璧になったマシンをいじってしまうのはもったいない!ということで計画を進めない理由がまた増えてしまったのです。せめて、RS-232Cボードでも作ってやるかなぁ…。


戻る