以前から New シティヒーローの対価として、PC-8001mk2_SD というボードを頂いていたのですが、今までなかなか時間が取れず、そのまま放置していました。今回、ようやく時間が取れたので、こちらの取り付けと動作確認をしてみた顛末記です。


  • PC-8001mk2_SD とは
この PC-8001mk2_SD は SDカードドライブ(以下SDドライブと略す)です。PC-8001mk2 に接続された SDカード内部の cmt ファイルを高速に読み込める優れものとなります。PC-8001シリーズは基本的には 600baud の読み込み速度しか出ないため、32KBフルに使用したゲームのロードには 10分以上必要ととても忍耐がいる状態だったのですが、この SDドライブがあれば、30倍速程度までロードが高速化されます。計測では 18000baud ぐらいでした。

こちらは仕様に関しては以下で公開されています。


ボードに関しては BEEP通販で手に入れることができます。


なお、作者の yanataka さんは他機種向けに PC-8001, MZ80K, MZ-2000, FM-7, MSX 用の SDドライブも発表されていますので、興味があればご確認ください。


基本的には基板からの自前実装です。Micro SDカードスロットと動作のROMに関しては、既製品の組み込みが前提ですので、作成難易度はそんなに高くはないと思います。詳細は公式ページを見ていただくとして、簡単な手順説明としては
  1. 基板と部品を入手(必要に応じてICソケットなども入手)
  2. Arduino プログラムを Arduino_Pro_Mini_5V に書き込む
  3. EXT_ROM_SHIFT_[OFF|ON].bin を EEPROM(2764 or 28C64) に書き込む
  4. 上記で焼いた EEPROM を PC-8001mk2 本体の空きスロットに装着
  5. PC-8001mk2_SD ボードを拡張スロットに装着
このような手順を踏みます。私は yanataka さんから特別に上記 1,2,3 の手順が完了した状態のボードと EEPROM を頂きましたので、本ブログでは 4 と 5 に部分を紹介します。


  • パーツの意味がわからない
頂いたパーツをご開帳。すると、アルミに包まれた EEPROM とボードが出てきました。
EEPROM
PC-8001mk2_SDボード
説明書には Arduino ROM に書き込むための機器が別途必要と書いてある。
ROM書き込みの機器が別途必要
…なにそれ?この最初の勘違いから、しばらく大迷走しました。ROM ライターみたいなのは一応持ってはいるけど、EEPROM ライターは持ってない。
CPLD-Writer
手元にあるのは EEPROM だけど、これはどう見ても既に書き込み済みだよなあ。だとすると、Arduino ROM にプログラムを書き込むのか?えっ、まさか EEPROM の内容を書き込む?ROMライターはデータ読み込みのために必要なのかとか、Arduino IDE インストールして sdfat インストールしてとか、もうね(滝汗

あまりにも混乱したので、Twitterについこのような書き込みを。
Twitterにヘルプした
すると、私が信頼するたかはらさんから、即座にこんなリプが!
たかはらさんからのリプ
「拡張BASICみたいな」の部分でやっと我に返りました。そうか!$6000-$7FFF の空きエリアにコマンド拡張が実装されているから、PC-8001mk2 本体にこれを差し込むのかと。その後、ボード作者の yanataka さんからも
yanatakaさんからのリプ
全ての謎は解けた!そうか、あの説明書は 1,2,3,4,5 全ての工程を自分で行う人向けで、私のような 4,5 だけの人は、接続だけで良かったのかと。一度勘違いしてしまうと、なかなか抜け出せなかったという、分かってしまえば何のことはない簡単なことですが、沼にハマるとなかなか抜け出せないという状態でした。たっははは…_| ̄|○
※ 夏の外出やゴルフやウォーキングなどのスポーツにはコレ。汗がすっと引く感じが素晴らしい。日焼けを気にする場合はこれの長袖タイプをチョイス。実は私は長袖タイプを夏に着用しています。
※ 私の使ってるのはこういうヤツです。手放せないですね。

  • EEPROM を PC-8001mk2 本体に設置
今回 SD拡張するのは私の愛機、PC-8001mk2 です。少し黄ばんでますが頼りになります。New シティヒーロー動作確認にも使ったため、OBF という PCG ユニットが内蔵されています。
愛機PC-8001mk2
裏側の6個のネジを外します。
このネジを外します
上蓋を開けた直後です。
開封直後
キーボードユニットを取り外しました。ですが、空きスロットが見当たりません。
空きソケットが見当たらない
よく探してみると拡張スロットボックスの下、奥の方に開いている ICソケットを発見。片足14ピンなので、間違いなくこれだと判断しました。ならば、上に被さっている拡張スロットボックスを取り外さないといけない。
拡張スロットボックスの下に
と、ポロリと白いジャンパが落ちてきました。
落ちてきたジャンパ
おいおい、なんだよコレ。単に落ちていただけか。どっかから外れたんじゃないだろうな…というフラグが立ちまして、おかげでこの後、本日二度目の大混乱に巻き込まれようとは、この時点では知る由もなかった。
空きソケットがよく見える
拡張スロットを取り外して、先程見えていた ICソケットが見えるように。その上に D23128C が見える。これはマスクROM。場所的におそらく BASIC ROM だと思われる。拡張エリアは BASIC の後方 $6000-$7FFF なので位置的にもここで間違いと確信しました。
EEPROMを装着
サクッと PC-8001mk2_SD 拡張 EEPROM をソケットに差し込みます。今回は Shift 押しながらのリセットで SD 有効タイプをチョイス。このチェイスがさらに問題を広げていくことに、この時点では知る由も(ry


  • PC-8001mk2_SD カードの取り付け
拡張スロットやキーボードを元に戻して上蓋も元に戻す。拡張スロットのカバーを開けて、差込口を確認。少し、OBF接続ケーブルが垂れているけど問題ない。
拡張スロット差込口
ここに PC-8001mk2_SD カードを奥までガッチリ差し込みます。
PC-8001mk2_SDボードを装着
上のスロットには OBF ボードが見えてます。
上部にうっすら見えるOBFボー
電源 on、起動 OK!いいぞ!…と思ったその数秒後、異常は発生した。なんだ何が起こってる?


全くキーボードを受け付けず。リセットすると次はこんな画面に
ふんふんふんふんふん
うわあああああ、なんでこんな事に!?急いで電源を切り、とりあえず拡張スロットから PC-8001mk2_SD カードを抜いて再度電源を入れる。


ダメだ、症状が変わらない。ジャンパが気になっていたので、OBF の状態を確認する。
OBFボード
特に異常は見当たらない※1。あのジャンパはたまたま筐体内に落ちていた…と考えるしかなさそうだ。一旦、何もかも分解して確認してみるが…

どこにも異常が見つからない。この状態でもやっぱり症状は変わらない※2
分解状態のPC-8001mk2
もうダメかと落胆しかけるも、待てよと。そう言えば、コネクタをもう一度きっちりはめ込めばワンちゃんあるよなと思い直し、今度は一つ一つきっちりとはめ込みを確認しながら再度組み上げたところ…
無事動作しました!
無事動作しました!いやーマジで焦ったわー

※1. OBFボード
実は後で判明したのですが、ジャンパの設定が間違っていました。左上のジャンパですがクローズ、オープン、クローズという設定になってますが、実はこれ、PC-8001mk2SR の設定だったのです。後で気が付き、現在は正しい設定になっています。ただ、これが今回の異常を発生されたのとは無関係でした。なんだかなー😓 ちなみにPC-8001mk2では正しくはオープン、クローズ、クローズでした。

※2. 症状が変わらない
あとでわかったのですが、寧ろこの状態だからこそおかしな表示になっていたのでした。拡張スロットボックスがきっちりとマザーボードに刺さっていないとあの症状になります。
※ このカーテンで冷房効率をアップさせて暑い夏を乗り切りましょう。サッシの暑さをかなり軽減してくれます。

  • PC-8001mk2_SD の使い勝手
なにはともあれ、まずは New シティヒーローの起動確認。ゲームプログラム内で多段ロードしているので、その読み込み処理にパッチを当てる必要があります。基本的には、内部データロード呼び出しの CALL BIOS.CMT_READ($CD,$9E,$5F)を CALL $6006($CD,$06,$60)に置き換えます。また、CALL BIOS.CMT_OPEN_R($CD,$F3,$0B)は不要なので NOP($00,$00,$00)に置き換えます。このあたりのパッチの充て方はこちらで具体的に説明されていますので参考にしてください。

DumpListEditor、もはや統合レトロPC開発ツールですな…。
Newシティヒーロー起動
ということで、無事起動しました。その他、手持ちのソフトをいろいろ試してみました。

■ N80-BASIC のままで起動する
  • 内藤時浩 FROG The Lively
  • 内藤時浩 Jungle RUNNER: PCGの初期化不足で表示がおかしい
  • 内藤時浩 New シティヒーロー: パッチ充て必須
  • ENIX FUNFAN: 自動起動せず GA000 必須 ※ j80では自動起動する
  • ASCII 大貧民
  • 工学社 PCG Puck Man
  • 工学社 PCG SPACE MOUSE
  • 工学社 PLANET TIZER
  • 工学社 RIVER RESCUE
  • 工学社 SCRAMBLE: 自動起動せず GD55B 必須 ※ j80では自動起動する
■ N-BASIC で起動する
  • ASCII 美麗図柄馬鹿っ花
  • ASCII BARRIER ATTACK
  • ASCII STAR TREK
  • ASCII Super Pinball
  • ASCII SPACE INVADERS
  • 工学社 New RALLY X(サウンドパッチ有り)
  • 工学社 ICE WORLD 2(サウンドパッチ有り)
  • 工学社 PCG GALAXIAN
  • 工学社 MISSILE COMMANDER
■ 起動しない
  • 富士音響マイコンセンター PC花札
  • 富士音響マイコンセンター PCGジック・ザックⅠ
PCGのソフトは往々にして PC-8001mk2 では定義が反映されないので、どこかに OUT3,8 を追加が必要ですね。自分は自動起動IPLに OUT3,8を入れるようにしています。あと、マシン語モニタから BASIC に戻る時、通常なら ctrl+B ですが、この SDドライブを付けると ctrl+C に置き換わります。最初、それが分からず悩んでしまいました。
out3,8がないとPCGが正しく設
富士音響マイコンセンターのソフトは多段ロード方式っぽいです。そして、なんとPC花札は DumpListEditor で分解できないです。$EA68から$EDC1にローダーを配置して、そこからだらだらーっとデータをカセットから読んでいるみたいなので、$EA68 からのプログラム解析からですが、ROM内ルーチンコールをしていないっぽいので、これは対応が厳しそうです。いっそのこと自分でローダー作っちゃったほうが早いかもしれないレベルです。

PCGジック・ザックⅠは分解できました。リセット時のジャンプアドレスとファンクションキーアドレスを設定してモニタに戻っています。あれ、普通にモニタで L コマンド発行してるだけだ…。だったら後半のバイナリを自分で読み出して、$ED20 にジャンプすれば良いのかも。テストで後ろのバイナリだけ cmt にして ED20 にジャンプしたらいちお動いたんですが画面の初期化がおかしいままでした。多段ロードに L 使ってるのになんで読み込まないんだろう…。

なお、リセットすると自分自身を消してから BASIC に戻るように仕組まれているみたいです。富士音響マイコンセンター、恐ろしい娘…。

さて、ここまでテストしてきてひとつ問題に気が付きました。それは Shift を押していると Ctrl 押しながらのリセットで N-BASIC に移行しないというモノ。DIPSWだと手間もかかるし壊れてしまう可能性もあるので、少なくとも私は N80 から N モードへの切り替えは Ctrl + リセットを多用していました。それが、Shift も同時に押していると N モードに切り替わらないのです。

これは困ったと呟いたら、作者の yanataka さんから切り替えキーを A ボタンでは如何でしょうと提案が。リセット直後に文字が aaaa と表示されてはしまいますが、モードが切り替わらない問題に比べれば可愛いものです。現在最新のコントロールソフトは A ボタン押下にも対応しているものを配布中です。気になる人は EEPROM 焼き直しにはなりますが如何でしょうか?


最後におまけで私が以前開発してた Ys DEMO もパッチを充てて SDドライブに対応させてみました。いやー、夢が広がりまくります😁

FIN-982 サンカットシャドー1枚
ファイン
2021-01-18
※ これは私は使ってはいないのですが、現在最も気になっている室外機の発熱防止シェード。原理的にはそりゃ効くだろうなあとは理解できるので、本格的な夏が来る前に試してみたいブツです。