X1turboIIIをレストアする
- 2022/10/19 11:27
- カテゴリー:マニアックなおはなし, make:
先日,フラフラとWEBを見ていると,X1turboの内蔵Ni-Cd電池が液漏れして大変なことに,という記事を見ました。そうか,X1turboくらいになるとRTCをNi-Cd電池でバックアップしたりするんだよなあと思っていたのですが,問題はその結果フロッピーディスクが動作不良になるという話です。
機種によりますが,X1turboはFDCやデータセパレータなどが載った基板にNi-Cd電池が搭載されていることが多い上,フロッピーディスク関連の配線が電池の周りに走っているらしく,腐食でパターンが切れると大体フロッピーディスクに問題が出るそうです。
それは大変。昨年実家からあわてて引き上げてきたX1turboIIIも液漏れから動作不良になっているに違いありません。
そう,昨年の今頃,35年ぶりにX1turboIIIは私の手元にやって来たのです。このマシンは私にとってはもちろん,主なユーザーだった弟にとっても非常に重要な意味を持つマシンで,このマシンを手に入れて我々は初めてメジャーな機種のオーナーとなり,そしてメジャーなマシンとはどんなものなのかをハードとソフトの両面から味わったのです。
私個人はturboであったことが単純にうれしかったのですが,機種選定を行った弟がX1を選んだ理由がYM2151が使えるからで,しかも彼のその後の使い方を見ていると別にturboでなくても良かったことから,X1Gmodel30にして,余ったお金で周辺機器やソフトを買った方が良かったんじゃないかとも思います。
そんな「もったいない」X1turboIIIは私に,いくつかの初めてを見せてくれました。
まずフロッピーディスクの素晴らしさ。大容量であること,高速であることはもちろん,ランダムアクセスが可能なこと(つまりシーケンシャルアクセスではないということ)で私のコンピュータに対する理解は一気に高まりました。ファイルの概念,OSの概念,FATの概念など,これがなければ話にならないことばかりです。
アセンブラでの開発には必須となる理由やCP/Mとはどんなものかも実際にその作業を通じて理解できたのも,フロッピーディスクを実際に使うようになったからだと思います。
次にRGB接続の素晴らしさ。それまで使っていたPC-6001はコンポジットでボケボケの画像で,黒バックで使うことが画質的に無理があった機種だったこともあり,RGBの高精細かつ色ズレのない画面表示にはいつも憧れていました。2000文字表示が実用的であり,それがコンピュータを使う環境を劇的に改善することを身をもって知りました。
関連して400ライン表示の素晴らしさも上げておきます。200ライン表示のRGBにも感激しましたが,turboで可能になった水平周波数24kHzの400ライン表示には,まさに未来を見た気がしました。
いや,PC-9801では当たり前でしたし,PC-8801でも400ライン表示は出来ていましたが,私が感激したのは16ドットx16ドットの全角文字で1000文字を表示することの美しさです。8x8ドットのANKは,あれはあれで味がありますが,16x8のANKを使うと,同じマシンなのに上位機種を触っているような気分になります。8x8ドットの世界は200ラインですので民生品の流用という感じがしますが,400ラインの民生品は存在せず,コンピュータの世界からやってきた専用品というのが非日常な気分を醸し出していたんだろうと思います。
turboはBASICで全角文字を扱うことの出来る強力な仕組みを最初から持っていましたし,640x400ドットでPC-9801並の8色カラーグラフィックも扱えました。
私は後にX1Fを自分専用の開発マシンとして中古を安く買って使うことになるのですが,各種の改造でもどうにもならなかったのが400ライン表示でした。16ドットのキャラクタージェネレータや400ラインのためのGVRAMの増設だけでも大変なのに,ディスプレイまで買い換えないといけないような改造はさすがに敷居が高く,turboの存在意義がここにこそあると当時も思ったものです。
それからハードウェアの知識です。Z80のシステムはそれ以前から理解していたつもりでしたが,X1turboほど大規模なシステムは手を出すのも恐ろしく,しかしシステム構成が素直でわかりやすいことと,そして拡張スロットもわかりやすい形で利用可能になっていたことで,先程のX1Fと一緒に,MIDIやクロックアップ,外付けFDDはもちろん,CRTC-IIの搭載でスムーススクロールとか,X1FにCTCとDMAと搭載したりと,好き放題やっていたように思います。
それらの改造ハードウェアを使うには当然マシン語の知識も必要で,アセンブラも使えるようになったのは大きな進歩です。結局,基本に忠実に回路を組めば必ず期待に応えてくれることを学んだのでした。
そうそう,シンプルなシステムの1つに,I/Oアドレスが16ビットであることがあります。Z80や8080などの80系ではI/Oアドレスはメモリとは独立している代わりに,アドレスが8ビットしか割り当てられていません。
よく知られたことですので今さらですが,Z80のI/O空間へのアクセスはIN命令とOUT命令で行います。この時アドレスの指定はCレジスタで行うのですが,実際にはBCレジスタがアドレスバスに乗っています。
BCレジスタでI/Oアドレスの指定を行う事が出来るなら16ビットのアドレスで指定が出来る事に他ならず,Z80の隠し機能の1つとして知られるようになります。
もちろん,正式な仕様ではありませんのでいつ使えなくなるか分かりませんし,深刻なバグが潜んでいたりするかも知れません。しかし少なくともシャープ製のZ80では確実に機能しますし,他社のものでも動かないという話を聞いたことがありません。
ということでZ80はメモリ空間64kB,I/O空間64kBの合計128kBがダイレクトにアクセス出来るのですが,当然I/O空間にはコードは置けませんし,演算なども制限がありますので同じように扱えるわけではありません。
しかし当時の8ビットマシンにはもってこいの使い道がありました。それがVRAMです。当時標準的だった640x200ドットの8色カラーのグラフィックを使うには48kBのメモリが必要になります。64kBのメモリ空間しかないZ80にとって,48kBはメモリ空間の3/4を圧迫する大容量であり,当時の8ビットマシンにとってこの問題の解決が機能アップに不可欠でした。
X1はGVRAMをI/O空間に置く事で特別なハードウェアなしに解決しました。メインメモリはフル64kBをRAMで実装し,IPLやBIOSだけはバンク切り替えで対応することで,実に見通しのいいメモリマップを持っていました。
実はメモリ空間とI/O空間ではアクセス速度が違い,I/O空間の方が遅いのですが,それもまあGVRAMならそれほど問題にはなりません。加えてI/O空間になにかデバイスを置こうと思ったら16ビットフルデコードが必要になるので回路が面倒というデメリットもあるのですが,それよりは同時使用できないバンク切り替えのメモリ空間が実質存在しないというのは,とても楽ちんだったように思います。
話が逸れました。私のX1turboIIIの話に戻りましょう。
X1turboIIIのレストアもいずれ行う予定でしたが,AppleIIよりも大きく重い本体にキーボード別体,しかもディスプレイも用意しないといけない上,実はそんなにやりたいこともなく,ソフト類はほとんど持ち込んでいないという状況で,どうも後回しになってしまいました。
実家に持ち込んだ直後に一度起動することを確かめていますが,そのことも「まあそのうちに」と後回しにしてしまった理由です。
しかし,Ni-Cd電池の液漏れという緊急事態がわかった以上,もう放置は出来ません。早速レストアです。
まず驚いたのは,下手な改造がたくさん行われていたことです。クロックを6MHzにしたことは覚えていますが,CTCやSIO,PSGに4MHz由来のクロックを供給するために,基板のパターンをあちこち切って太い配線で自作の基板からクロックを供給していますし,FM音源ボードにも同じ方法でクロックを供給しているので,スロットからボードを抜く事すら出来ない状態でした。
それから予想通りNi-Cd電池は液漏れしており,スルーホールは腐食して,パターンのいくつかは細くなって切れそうでした。これはまずいです。
クロック切り替え用のスイッチを取り付けるために開けた穴も不細工ですし,本当に必要だったのか思う6MHz動作時のLEDの取り付け穴も,元に戻せない改造です。
電源ユニットのコンデンサは液漏れしていませんでしたが,これもいつダメになるかわかりませんので,出来るだけ交換しておきたいところです。
ということで,メンテナンスのメニューが決まりました。改造はすべて元に戻してオリジナルにする,Ni-Cd電池は取り外して代わりに電気二重層コンデンサに置き換えることをまず最初に行います。
改造ですが,元はカスタムICが16MHzを発振させて分周したクロックをCPUを含めてあちこちに分配してたものを,16MHzと27MHzのクロックジェネレータを載せた小基板を自作し,CPUのクロック以外は16MHzを分周したクロックが常に供給されるようにしてありました。
この子基板をはずし,カットしたパターンを修復,16MHzの水晶発振子に戻して一応元通りにしました。
Ni-Cd電池については取り外した跡地に1Fの電気二重層コンデンサを取り付け,充電回路に入った3kΩの両端に40Ωを並列に取り付けておきました。これで数日くらいは時刻を維持してくれると思います。
ところが組み立て後のテストで,カーソルが点滅しなくなってしまいました。X1の場合,RTCが動作してないとカーソルが点滅しなくなります。time$の値もタイマー画面での時刻表示も無茶苦茶な上時刻が進まないので,RTCが動いていないのだろうと思いましたが,どうも32kHzの微調整用のトリマコンデンサの不良で起きていたもののようでした。
これ,X1系ではよくある故障のようでして,私の場合もトリマを少し左右に回してやると直りました。本当は交換すべきなんでしょうけど,面倒だからこれでいいです。
電源部ユニットは2次側の電解コンデンサを近い容量のものにどんどん置き換えていきました。
先に水洗いが済んでいる筐体を組み立て,基板や電源,ファンを組み付けて通電テストを行いましたが,とりあえず問題なく起動くれました。短時間ならRTCもバックアップされているので,こちらも期待通りです。
ここまで来れば後は簡単で,フロッピーディスクドライブのベゼルを洗い,ヘッドを掃除して本体に組み込みます。これで本体は終了ですが,面倒なのはキーボードです。
酷使されたキーボードは汚れと変色,そして足が折れていました。よくあるカールコードは無事でしたが,代わりにキーボードカバーのゴムがキーボードの表面を溶かしていて,これがなんとも惨めです。
この融けた表面を修理するのは無理なので,もう放置することにします。見た目は悪いですが,機能的に問題はありません。
折れた足はアクリサンデー接着剤で溶着し,キートップ1つ1つを水洗いします。乾いてから組み立てればこれで終了です。
ところがテストをしてみると入力出来ないキーがいくつか出てきました。何度かキーを押しているうちに動くようになったのでOKとしましたが,メカスイッチはこういう経年劣化がやっぱり心配です。
もともと壊れていたわけではなく,改造箇所を元に戻しただけの作業ですから,動いて当然で,その分作業は楽だったのですが,大きくて重いことが作業の障害になりました。それに無骨なスチール製の筐体で随分手を切りました。
起動後,手元に僅かに残ったフロッピーディスクからあれこれと起動して試していますが,BASICの起動ディスク(3枚ありました)がことごとく壊れており,記録したユーティリティなどが読み込めなかったり暴走したりしました。
カビもないので壊れた原因に心当たりがないのですが,まあ30年近い時間を経ていますので,仕方がないかなと思います。自作のプログラムなども壊れてしまっているのですべて元通りには出来ないのですが,出来るだけサルベージしておこうと思います。
ふと冷静になってみると,AppleIIの面白さもPC-386BookLの実用性もなく,X1turboというマシンにはあまり魅力がないことに気が付いてしまいました。ソフトの大半は弟のところにありますし,開発に関係するものは当時のPC-9801に移行していましたから,別にX1でなければならないこともありません。
当初は2HDのドライブをもっていたことから,MS-DOS互換のOSを使ってPC-9801の5インチディスクをイメージファイルにする目的もありましたが,PC-386BookLのおかげでその必要もなくなりました。
とりあえず,AppleIIにもPC-386BookLにも課題が残っていますので,その後にじっくり使い道を考えて楽しんでみようと思います。