2024年3月23日土曜日

ついにNew City Heroが実機で遊べた

前回のNew City Hero @ j80/macの続き。

エミュレータで動作確認してから実機で〜という事で奮闘しておりました。

まずは搭載メモリの確認からです。

そしてM.K WorkshopさんのPSA基板を利用してボードを作成しようと思ったのですが……上のスレッドでも書いているように、どうにも世の中は半導体不足。表面実装の74ロジックICが思うように手配できません。指定ではLSになっている部品もやむを得ずHCを使う事に……そしておそらくこれが敗因。HCだと出力弱いからファンアウト大きくできないし遠くに飛ばすには不向きってあたりが怪しいのかな、と。

ハンダ周りを見直して気になるとこは盛り直したり、色々とチェックしてみたんだけど改善せず。タイミング周りを調査するのは手間だし、頑張ってもあまり得るものも無い気がしたので、元々の最終ゴールだった完全自作へと踏み出します。 

基本はPSAベースなのでI/O 1981年6月号の記事を読み解いていきますが、論理はCPLDに全部収める方針。また、NCHが3chサウンド対応なので、その部分の拡張も取り込んでいきます。またこのPSAではPCG-8100同様に文字コードの半分の128キャラ分を任意パターンに置き換えられるようになっていますが、256キャラ全部を置き換える拡張にも対応させました。

この辺りの回路も同期回路で置き換え。Verilogで100行ちょっとくらいの論理です。Z80からのI/Oを受けて、かつキャラクタージェネレータ側のアドレスバスとデータバスに繋げる必要がありピン数は70くらいは必要。またピン数多い=レベル変換したくないので5Vトレラントなデバイスが良い……という事で現行チップから候補を見つけるのは難しく、骨董品のMAX7000(7128STC100)

ミキサーとアンプはM.K.Workshopさんの回路を追ってこんなもんかなーって書き起こした回路図を眺めて、増幅回路の教科書的なものと見比べて怪しいと思ったところを手直し。たぶん回路を追いそびれたり読み間違えたりしてる。

そして届いたのがこれ。

表面実装のコンデンサは綺麗につけるの難しいし、確実に線が繋がってるかの自信が持ちにくい。ただでさえ回路に自信がないから不確定要素を減らすために工場で実装してもらっちゃってます。CPLDとかSRAM、ボリュームなんかはあちらで手に入らないものだから自分の方で実装。

最初のテストはこんな感じでCPLDの書き込みをして、次はZ80とキャラクターROMだけ載せた状態でCPLDには信号をほぼほぼパスするーするだけの本体基板相当の回路を書き込んで通常モードの動作を確認します。ここまで動けば基板の方は問題ないからCPLD側の論理のデバッグに集中できる。

んでまぁ、ここでCPLDの論理も一通り出来てたんだけど、検証してからじゃないと本体壊しても嫌だし……と2週間くらい渋るわけですが(笑)とりあえず最低限のテストをして最終動作確認へ。この辺り、趣味でやろうとすると大した環境がなくて辛い。仕事でやってた頃はQuestaでOVM使ってSystemVerilogで書いたテストをぶん回してたんですが、手頃にCI回せる選択肢となるとiverilogになってしまう。でも環境についてはVS Codeで新たにいくつか拡張を導入して試してみました。Verilog-HDL/SystemVerilog/Bluespec SystemVerilogとかWaveTraceとか。後者はライセンス購入しないと8chまでしか信号見れないので購入しちゃった。gtkwaveと比べて何が良いって全てCodeで片付くってだけではあるんだけど、まぁ高くはないし。

という事で出来た成果物はここに置いてあります。実はサイズを図って作ったにも関わらず、Z80とキャラROMの位置が少しずれてて、幅が2.5ピン分くらい狭くなってしまっています。何かしら不具合あるだろうし、この基板で確認できるとこだけでも確認しよう……とソケットの下駄を履かせ、ピンが少し外側に出るように折り曲げて2.5ピン分を補正してます(汗)もしこれを参考に自作する際には、基板は作り直してくださいませ。あとSRAMもこれはもう秋月に売ってないので別のやつに差し替えるなり。そもそもMAX7000ありますか?って話でもありますけど。

こんな感じでばっちり動作、安定してます。NCHクリアまで遊び倒したいと思います。ちなみに実装スペース的には下に一段下駄を入れて上下ちょうど収まる感じですね。下駄がないと下側で他のチップとぶつかるかもしれないし、上もこの状態でキーボード基板に接触しないスレスレでした。接触してもショートしそうな部分がないのは安心ですが、放熱的に少し心配ではありますね。Z80やROMはそれなりに熱くなりますし。

2024年3月14日木曜日

Apple IIc をメンテしてフロッピーから起動するまで

Apple IIeは持ってたんだけど、最近IIcを手に入れて。ACアダプターがなかったので海外から手配したら、なんか長年Apple IIどっぷりな方で、いろいろな資料といっしょにWozとのツーショット写真が送られてきた……というのはまた別の話。

で、IIeを持っていたけど全然使い込んでないから何から手をつけたら良いのかわからない……というところからドライブをメンテ、仮想HDや仮想FDを駆使しつつ、実FDから起動するまでのメモです。

まずは動作確認をしてみたところディスクドライブのエラーで止まる。ドライブが生きてる事は期待してなかったけど、ここで止まって何もできないのは想定外。IIcまったくわからん……ってなりかけてたんだけど、ほとんどがヘッドクリーングで治るという話をみかけてチャレンジ。

Apple IIcの分解は手前の爪を外すところがちょっと難しい。IFIXITのDisassembling Apple IIc Coverに詳細が説明されてるんだけど、写真みても実際に外してみても、うーん……どうなってたんだ?って感じでした。ここが外れたら、ディスクを下に残して、最後に裏面がまたトリッキー。うまく説明もできないので、YouTubeで誰かの修理動画さがして見て下さいw

ドライブについてはApple IIc Floppy Drive Replacementを見るとヘッドにアクセスするとこまで分解できます。1Dなのでヘッドが下面にしかついてないのが新鮮。裏面にはベルトがあります。交換し易い場所にありますが、今回はなんとまったく劣化していませんでした。気になる点は

  1. ベルトの劣化でディスクが回転しなくなってないか
  2. ヘッドが汚れていないか(問答無用でクリーニングで良いかと)
  3. ヘッドが移動するか
あたりなのかな。起動時にヘッドが外周側に向かってガガガガガガって動いて、壊れてるのかと思うけど、これは正常っぽいです(笑)。とりあえず手で内側に移動して電源入れて初期位置に戻るならOKなのかな。自分はそれで納得してクリーニングだけでフォーマット試しました。

ちなみに実際には、直さなくても先に進めるし、メディア入れてなければ壊れてなくても必ずこのエラーで止まるんだけど、それを知ったのは分解後なのであった。ちなみに、ここから内蔵BASICへ進めるにはCTRL+🍏+RESETを押せばOK。なんじゃって感じだけどRESETは単体押しだと何も起きない、ただの一般キーなのね。

How to get into Apple BASIC prompt on an Apple IIc?

ここにROMバージョンの確認の仕方があるけど、アドレス64447を読んで255なら初期版で`PR#7`でSmartPort経由の外部ドライブから起動できるらしい。それ以外だと内部ドライブが#6で外部ドライブは#6のセカンダリなのかな?そっちからは起動できない、と。自分のやつは0。新しいと3とか4もあるらしい。内蔵BASICでもディスク周りのサポートはそれらのブートだけで他の機能は何もない。

で、これは起動ディスク何か持ってないと何もできない?ってなりかけたんだけど、同じくSmartPort経由のハードディスクからは起動するようです。

というところでドライブのメンテの話に戻ります。この先どうやって動作確認を進めるかと言うと、Kero's Mac ModsさんのSPIISDを使ってProDOSで起動します。ここからCopy II Plusを使えばフロッピーのフォーマットとファイルやディスク単位のコピーが出来るので、まずはフォーマットできる事を確認して、ProDOS主要ファイルをフロッピーにコピー、無事にメディアから起動できれば確認完了。

あとは、この状態でハードディスクから起動したProDOSでイメージファイルを実FDにクローンできたら良いのだけど、その方法は知らなくて。今度はSmartPortにBMOW Floppy Emuを繋げた状態で実FDからProDOSを起動、Copy II Plusを使って仮想FDから実FDにディスクコピーという方法をとりました。ケーブルさえ用意すればSmartPortで仮想HDと仮想FDを同時に繋げる事もできるらしいけど。

これ以外でエミュレータと実機でデータやりとりするにはCiderPress IIを使う方法もあります。これは国産レトロPC向けツールで言うところのDisk ExplorerとVirtual Floppy Image Converterがセットになったようなツール。SPIISDのハードディスクイメージがProDOSフォーマットでこのソフトを使って中のファイルを読み書きできる。

フロッピーのメディアについては1Dなんだけど、2DDがあればOK。

この辺で軽く調べたんだけど、メディア的には5.25"の場合のみ2DD以前と2HD以降でコーティングに大きな違いがあり、2HD以降ではより強い磁力で書き込む必要があるらしい。ので2DD以前を想定したドライブでは2HDには書き込めない。のでその境界を越えなければ基本的にはより新しいメディアはそれまでのメディアと互換性があると思って良い。

あと1*と2*は片面両面の違いなので、1*に対して2*のメディアはちょっと細工すれば裏返して別ディスクとして使えます……って話はこの辺から。ライトプロテクションの場所に穴を開ければOK。

3.5"ディスクドライブの修理

最近やった3.5"フロッピードライブの修理について。

ディスクシステムやMSXだと決まってゴムベルトの劣化が問題なんだけど、今回はヘッドだったので少し記録を残します。たぶんドライブがベルトレスでのダイレクトドライブタイプかな?見当たらなかったってだけなので、もっと分解したらゴムが出てくるかもしれないですが。

もともとX68k compact向け3.5"メディアを読もうと思ったら、USBで持ってたドライブが1.44MBフォーマットしか対応してなくて困った、というところから。国産機では1.25MBフォーマットが主流でPC/AT機で使われてた1.44MBはIBMフォーマットとか言われてたんだけど、今ではそっちがグローバルスタンダード。3 mode対応とかうたってるドライブでしか読めなくなっており、最近の新品だと無理なのかな。まだ辛うじて2000年前後の中古USBドライブが手に入るみたいなので、そっちいくのが一番簡単。

んで、思い立ったが吉日で直ぐにでも読みたかったので、オークションで数千円で入手してたPC-9801用の外付けドライブのメンテを思い立つ。買った時に試した感じではほんのり読めたり、エラーコードA0やB0のCRCエラーが出たり、C0でセクタが見つからなかったりだったので、ヘッドの掃除くらいで治るんじゃないかとは思って放置してた。

こいつちゃん。わりとオークションで見かけるモデルだと思う。これに1.44切り替えスイッチついてるやつが上位モデルか後期モデルか知らないけど、ロゴマークの色が違うやつも良く見る。

分解は素直にネジを外してけば、混乱する事もなくここまでは進む。

真上からだとわかりにくいけど2段積みがセットネジ止めされた状態。これを1台ずつ外して掃除。

ここだけ爪で引っかかってるのでピンセット使って外してあげる必要があった。これだけでヘッドにアクセスできるようになるので、無水エタノールと綿棒で拭き掃除。

こんな感じで仮組みして動作を確認しつつ。電源入れたまま、ケーブル差したままの掃除は各自安全と思う範囲で自己責任のもとに……自分はドライブ全体の電源落としてから、ドライブユニットのケーブル抜いて取り外して作業してました。

そんなに何度もトライ&エラーする事もなく復活。読めない時は大事なディスク使うのは控えた方が良いかも。最初に読めなかったディスクはドライブ復活後も読めない事が多い気が……。今回最初に試してたメディアも見た目なんの傷もないのに読めるようにはならなかった。

って事で、無事に外部3.5"から起動できたので、本来読みたかったメディアをイメージ化して、5.25"に書き戻して68から利用して一件落着でした。

そうそう、後から当時のクリーニングディスクを入手しました。楽器屋でまだ新品が当時価格かな?で売ってた。ヤマハ製です。これがあれば突っ込んで電源いれるだけで直せてたかも。磁気ディスク、調べるほどに当時思ってたほど繊細じゃなくて、ヘッドもカセットテープのヘッドみたいなやつで上下から挟んでディスクをぐるぐる回転。え?これで傷つかないの?って感じ。3.5"もバラして円盤に不織布を貼り付ければクリーニングディスクになるかも。必要ならエタノール吸わせて。