fc2ブログ
オッサンのゲームに纏わる奮闘記です。
前回(前々回)までであらかた動作するようになったのですが、前回に書いたようにCMT周りの変更も作らなければなりませんでした。
出来たのがこんな感じ。
KIMG20240211_203108835.jpg
信号の変換をしているだけなんですが、結構難渋したw

MZ-80BのCMTは当時非常に高機能なカセットデッキでした。
速度も早く、頭出しなども可能であり、テープOSとかもI/O誌にあったりするようなものです。
MZ-2000はこれらの機能が使える以上に洗練された設計になっています。
詳細は回路図などを参照してもらえるとわかると思いますが、ブログですのでちょっと書いてみます。

続きます。

まずMZ-80BのCMT周りの信号と動作についてです。

以前のブログにも記載しましたが、MZ-80BをMZ-2000に改造する記事は1982年9月号のI/O誌に掲載されていました。
その記事中に、CMT周りも変換できるようにする回路図が記事があります。
しかし、その記事中にあるタイミングチャートなどは今回私が調べてみると全く異なっていました。
そもそもタイミングチャートにあるような信号の間隔などは、MZ-80BのIPLやBASICなどで実装されているコードによって異なります。
なので、結局はMZ-80Bの回路図をみるしかありませんでした。
MZ-80BSchema3.jpg MZ-80BSchema7.jpg
MZ-80Bのマニュアルには、CMT制御を行う信号の詳細が8255周りの資料として記載されています。
信号としては、STOP(PA3)、REW(PC5)、BLK1(PA1)、BLK2(PA0)、PNL(PA2)という信号名です(カッコ内は8255のピン名)
これらを組み合わせることで、再生、巻き戻し、早送り、停止などをコントロールします。

更にそれらの信号がCMTコントロールでどのように動作するのかも回路図を辿ることで理解できます。

まず、BLK1,BLK2,REW,PNLは74LS74のフリップフロップに入っています。 BLK1とREWはIC3007の74LS74に、DとしてBLK1、CKとしてREWが入力されています。 BLK2はIC3011にCKとして入力されています。 PNLはIC3007のCKとして入力されています。

これらはすべてSTOPによってClearされます。(STOPがフリップフロップのCLRに入っている)

BLK1はテープの走行方向を順方向(FF)か逆方向(REV)かの方向を指定する信号です。BLK1をHにするとFF,LにするとREVとなります。 このBLK1を出力し続けた状態で、REWをLからHに変化させると、フリップフロップなのでラッチされます。 ラッチした状態で、BLK2をLからHに変化させると、モーターの動作が開始され、FFもしくはREVになります。 これらのラッチされた信号はすべてSTOPの信号がくるとリセットされます。

PNLはカセットテープを通常のPLAY(READ)もしくはREC(WRITE)の状態で動作させます。 PNLをHとする前にテープ走行方向をFFにしておく必要があるので、BLK1をHにしながらREWをH、Lとしてラッチさせておく必要があります。 その後にPNLをH、Lとするとテープ走行が始まります。

これらの動作タイミングですが、エミュレータでのBASICの実装をデバッグしてみたり、実機でオシロスコープを使って測定してみると、おおよそ一つに信号出力は299ms程度持続し、次の信号出力するまでの間も299ms程度で実装されていました。

なのでI/Oの記事にある、15msや35msがどのように測定されたのか疑問なのですが、上記したように74LS74のデータやCKとしての機能ですので、そんなに長く持続させる必要はありません。

次にMZ-2000のCMTについてです
こちらもMZ-2000の回路図、マニュアルにある8255の信号についての資料をたどってみました。
MZ-80Bでは複数の信号を組み合わせることでCMTを制御していましたが、MZ-2000は東芝のTC9121PというCMT制御用のICを使うことで、非常にスッキリした設計に変わりました。
2000sc3.jpg2000sc7.jpg
それぞれの機能が8255のそれぞれのポートに一つづつ割り当てられているだけです。
APSSの機能はTC9121Pにはありませんので、別で設計されていますが、それでもかなり簡単な回路になっています。
また、APLAYやAREWという機能がTC9121Pに存在し、それも実装されています。
ただテープが動作中か停止中かを判定するためにTAPEENDという信号を作成する必要があるようになったこと、これらの信号が1ポートに1つづつ割り当てられう必要があるので、キーボードのLED制御が廃止されていることなどが変更でしょうか?
#MZ-80BにはキーボードのLEDをピカピカさせるゲームとかあった記憶
またKINHというカセットテープのスイッチを無効にするポートも実装されました。

さて、これらの変更点をどうやってMZ-80Bでコンパチブルとなるように実装しようか?と悩みました。
I/Oの記事も参考にしつつ、MZ-80Bとしての動作、MZ-2000としての動作がどちらも出来るマシンにしたい。
そのためにはMZ-80Bとして起動、IPL動作し、その後メインメモリーに動作が変更するタイミングでMZ-2000として動作したい。
なのでメインメモリー動作となった後、MZ-2000の各CMTの信号をMZ-80BのCMT信号の組み合わせへ変換するように設計しました。

MZ-80Bと同様に、MZ-2000側のCMTの信号についてもタイミングチャートのような調査をしてみました。
MZ-2000のBASICで調査したところ、1つの動作をさせるための信号は、おおよそ持続時間で300ms程度でした。
また次の動作(例えばSTOPしてPLAYするというようなとき)は間が300msで次の信号が出力されるようでした。
1つの出力で1つ動作になっている分、同じ時間でMZ-80Bへ変換すると、複数信号の組み合わせで時間が掛かってしまうため、場合によっては次の動作のための信号が来てしまいます。
ですが、回路図からは74LS74のフリップフロップへの信号であることがわかっていますので、もっと短くしても問題ないはず。

ということで、そのような変換を一旦AVRで信号を受け、それをMZ-80Bの信号へ変換するようにコードを書きました。
またそのAVRでTAPEENDの信号などを作成するようにしました。

出来たのが、こんな感じ。
簡単に書いていますが、なんか苦労したw
KIMG20240211_203108835.jpg
MZ-2000のテープを色々実験してみます。
まず、BASIC。
KIMG20240211_213807466.jpg
テープで起動後、複数のプログラムが書き込まれたテープで、自動頭出しで3つ目のプログラムを読み込んで見ます。
問題なく頭出しされて読み込めました!(APSS動作)
BASICの命令で、巻き戻し、早送りも可能です。

次に多段ロードするようなソフトを動かしてみます。
KIMG20240211_205046313.jpg KIMG20240211_210926923.jpg
ちゃっくんぽっぷ、F2グランプリなど、こちらも問題ありません!
どんどんやります。
Hu-BASIC ver2.0上でしか動作しない、テクノソフトのゴルフアイランド  (なんと敷居が高いw)
KIMG20240211_203745739.jpg KIMG20240211_204108797.jpg KIMG20240211_204434116.jpg
こらもロードできます。

ミステリーハウスII Vol1(なぜ分割したのか)です。
KIMG20240211_214054192.jpg

ということで、一体何年費やしたかわかりませんが(途中諦めたり、壊れたりしてたw)、やっとMZ-80BをMZ-2000(MZ-2200)にするボード一式が完成しました!
すげー嬉しいw
次回は回路図、コードの公開と、必要な方への頒布について書きます。
#欲しい人なんて、世界で10人も居ないと思うw
では〜
スポンサーサイト



テーマ:レトロゲーム - ジャンル:ゲーム


管理者にだけ表示を許可する
http://kitahei88.blog.fc2.com/tb.php/157-b07ff88a
この記事にトラックバックする(FC2ブログユーザー)
// ホーム //
Powered By FC2ブログ. copyright © 2024 レトロゲーム漫遊記 : episode2 all rights reserved.
最新記事
最新コメント
最新トラックバック

プロフィール

kitahei88

Author:kitahei88
dtiblogが閉鎖されたため、こちらでお世話になります。
ただのオッサンです。

カテゴリ
月別アーカイブ
検索フォーム

リンク
RSSリンクの表示
ブロとも申請フォーム
QRコード

QR