JavaScriptを有効にすると、ここにメニューを表示します。
富士通FM-7 / FM-77AV40 / FM-TOWNS 実機再生プロジェクト
時には昔の実機を

ysflight.com

 

2024/03/25

FM TOWNS/Martyエミュレータ「津軽」Linux対応!

Linux対応って、もうLinux上で走るじゃんということじゃなくて、津軽のVM上でLinux+JE4 1995-12というのが動くようになった。このLinux、1995年12月のものだけにカーネルのバージョンがなんと1.3.30。まだインストールまでは試してないけど、CDから起動するバージョンで、X-WindowとFVWMまで動作を確認した。ハイレゾモードでX-Windowを立ち上げるとマウスインテグレーションにも対応する。ちょっとウィンドウサイズ変えようとしたときマウスがグラグラするけど。

Windows 95まで起動できるんだからあっさり起動するだろう、と、思ったら、まずCD-ROMドライバが割り込み許可状態でタイマーI/Oをポーリング。本来タイマーアップのフラグは割り込みハンドラが消してしまうから、割り込み禁止しておかないとポーリングできないはずなのだ。しかし、実機で同じコンディションでテストしたところ、ポーリングできてしまうことが判明。しかも、タイマー割り込みもかかってきていた。どうも実機ではタイマーがアップしてから割り込みがかかるまでの間に少なくとも20クロック程度のラグがあるようだ。しかも、同じコードは386 TOWNSでも動いたはずだから、結構なラグと思われる。どうやって実装したもんかなと思ったけど、いい方法を思いついたのでここは突破。

続いて、なんと他のどのOSでも使ってなかったCPUによるタスクスイッチングを使用していることが判明。80386以降のCPUはCPUがタスクスイッチングの面倒を見る機能がある。が、しかし、余計な処理までしているらしくソフトウェアで切り替えた方が効率が良いということで、誰も使わなくなり、AMDのCPUでは既に削除された機能らしい。複数の情報から、Linuxも相当初期のバージョン以降はハードウェアタスクスイッチングは使わなくなったと聞いていたので、遭遇しないだろうと思っていたら、これはその相当初期のバージョンだった!このハードウェアタスクスイッチング、単純に他のタスクにジャンプするだけならいいのだが、ネステドタスクというものが存在するらしく、CPUのリファレンスを見てもどう対応していいかわからない。しかし、他のタスクにジャンプするとこだけ実装してみたら動いちゃった。

ということで、下はそのFM TOWNS用Linuxのスクリーンショット。


2024/03/07

FM TOWNS/Martyエミュレータ「津軽」Windows 95対応!

この1月から大きく動きがあって、ついにFM TOWNS/Martyエミュレータ「津軽」がWindows 95に対応した。いや、Windows 95で実行できるようになったんじゃなくて、VM上でwindows 95を実行できるようになった。



FM TOWNS/Martyエミュレータ「津軽」はもともとFM TOWNS II MXの再現を目指してスタートした。本当にFM TOWNS II MXを再現するならば、TOWNS OSに加えてFM OASYS, Windows 3.1, Windows 95, Linuxも起動できなくてはならない。ただし、WindowsやLinuxをエミュレートするなら敢えてFM TOWNSを使う必要はない。当初はTOWNS OSのゲームまでサポートできればいいだろうというつもりだったから、DOS6、Windows 3.1, Windows 95には対応しないつもりだった。しかし、ユーザの皆さまからの強い要望により、DOS6に対応。Windows 3.1の要望はほとんどなかったものの、DOS6までできたらWindows 3.1もできるんじゃね?という安易な考えを起こして、結果さんざん苦労してWindows 3.1まで対応、3.1までやったならどうせなら95も対応したい、というところで止まっていた。

似たような経験が大学生の頃にあった。青森県弘前市のド田舎から、ほぼ同じレベルの田舎である神奈川県藤沢市北部に引っ越して一年目、エアコンなんてなくても死なないだろう、と、思ってエアコンを買わなかった。今の温暖化した地球よりは涼しかったとはいえ、何度かものすごく熱い日を経験した。二年目、さすがにもうエアコン無いと死ぬだろう、と、思ったので買おうかと思ったのだが、いや、ここで買ってしまっては去年の苦労が水の泡だ。やっぱりやめよう。と、思って買わなかった。そして、ものすごく暑い日で苦しんだ。三年目、さすがに今度こそエアコン無いと死ぬ、今度こそ買うだろう。と、思ったのだが、いや、ここで買ってしまっては去年と一昨年の苦労が水の泡だ。やっぱりやめよう。と思って買わなかった。以下これを合計7年間繰り返してしまった。という非常によく似た経験であった。(どこが!?)

Windows 95のサポートができないまま停滞していたのが大きく動いたのは、FM TOWNS掲示板の常連さんで津軽にかなりコントリビュートしてくれている、BCCさんより、まだWindows 3.1にちょっとだけ32ビット環境を追加するWin32sがダウンロードできるとのこと。そして、津軽上のWindows 3.1で使おうとすると、おまけゲームのフリーセルがクラッシュするとの報告があった。

Windows 95とWindows 3.1の大きな違いはWindows 95は32ビットアプリケーションを走らせることができる点だ。Win32SはWindows 3.1にその機能の一部を追加するものだ。もしもWindows 3.1上でWin32Sに対応できたら、そのままWindows 95起動まで持っていけるのではないか? そこで、中身を調べて変だったところを修正してフリーセルまで実行できるようにした。

そのままWindows 95まで行けるのではないかという甘い予想は打ち砕かれて、やっぱり起動できなかったのだが、ちょっとやる気が出た。最後にやってみたとき、どうもTOWNSSYN.DRVというドライバの中でクラッシュしているようだったのだが、相当調べた結果、このドライバのWindows 95上でのクラッシュは回避できないという結論に達した。さらに.INFファイルの解析から、実はこのドライバはWindows 3.1からアップグレードしたとき本来削除されるべきものということがわかった。それどころか、なぜかWindows 95インストール注にFMRSYN.DRVというどう見てもFM-R用ドライバがインストールされているという謎があったので、なぜこのドライバをインストールしているのか調べたところ、機種判別が正しくできていなかったことがわかって、それを直して、この部分は突破。

インストールまで成功したと思ったら今度は起動中にディスクイメージのFATを破壊してしまう。何かと思ったらVDMADとVSCSIDの初期化に失敗していたようで、原因は、DMAステータスI/Oが津軽上で間違って書き込み専用になってた。VDMADはステータスをI/Oから読み込んで、フラグを足したり消したししてから書き戻していたのだが、読み込みができない(常にFFを返してた)状態だったので、書き戻したときにすべてのフラグが立ってしまっていた。これを修正して、あとは浮動小数点プロセッサを有効にしておけば割と安定して起動するようになった。

その後IMEのモードを切り替えるとクラッシュする問題、Explorerのドライブプロパティを閉じるときにクラッシュする問題、DOS窓を開くとごくたまにクラッシュする問題を修正し、大体安定して動くようになったと思う。手元に残っていたNamco History Vol.1、ぷよぷよ通、その他いくつかのゲームはインストールできて実行できた。ただ、80386の保護機能のかなり深いところまで使っている影響で遅いけど。そのうちAppleとかIntelがホストマシンを速くしてくれるだろう。

結構大きなマイルストーンをクリアしたと思ったら、FM-7用ゲームでずっと追ってたタカラフェニックスのQIXがヤフオクに! QIXは人生で最初に買ったゲームだった。いや、ENIXがSQUARE ENIXになる前に売っていたCOSMO CRASHが最初だった可能性もあるが、QIXとCOSMO CRASHが人生で最初に買った2本だったことは間違いなくて、QIXがおそらく先だった。だから、このゲームをなんとしても手に入れたかった。懐かしいから自分でもう一度やってみたいというのもあるし、DemosplashとかRetro Game Nightで展示して来場者に使ってもらいたいと思っていた。QIXがヤフオクに出たのはこれが最初ではなく、Buyee.jpがサービスを開始して、アメリカらからでも参戦できるようになって割と早い時期に一度出たのだが、そのときは価格が高騰してしまって自分は競り勝てなかった。だが、またすぐ出るだろうと思ってからすでに数年。ここまでレアなゲームだったとは。今回は10万円(だけど今円が安いから$700)まで戦うつもりだったのだが、15500円ぐらいで落ちた。

それが届いて、テープのリストアは最近成功率が高いから余裕だろうと思っていたら、なぜかデータレコーダが不調。波形の上と下が安定してくれない。こんなこともあろうかと予備に買っておいて実機で動作確認済みのデータレコーダをつなげたところ、音が一瞬録音されるのだがすぐにレベルが落ちてしまう謎現象が発生。多分あまりにもくっきりした波形になっていてPCのサウンドボードがノイズかなにかと間違えてフィルタしてしまっているのではないかと見ているのだが、使えなかった。

だが、不調になったデータレコーダで録ったWAVは手作業で直せるレベルだったので、我がテープイメージツールを駆使して修正。無事陸奥XM7で動作を確認した。展示するまでに、ジョイスティック対応パッチを書いておこう。



という、ふたつも(自分的に)大きな進展があったもんだから、やや放心状態だったのだが、jckarterさんからFM TOWNS 386SXモデルで自作IPLで起動させる方法を解明したという連絡が。

自分は津軽を書いているが、宇宙の終焉までFM TOWNSの栄光を語り継ぐためには実機の動態保存も可能な限り続けていくべきだと考えている。そのために、問題となっているのがFM TOWNSの内蔵CDドライブが故障すると交換部品が無く、実質何もできなくなってしまう問題だった。この問題を解決するために、起動時に細工をして内蔵ドライブアクセスを外付けSCSI CDドライブアクセスにリダイレクトする救難IPLの開発に成功した。

ところが、このIPLは80386SXを搭載した廉価版FM TOWNSでは使えなかった。なぜかというと80386SX搭載機は既に発売されていたソフトに対応するために、起動時に結構複雑なことをやっていて、単純に自作IPLを読み込んで起動してくれなかった。ところが、jckarterさんが自作IPLで起動する方法を解明したとのこと。そこで、その方法を使って救難IPLを386SX搭載機に対応させることに成功した。と、思う。多分。手元に386SX機が無いもんだから、津軽上でしか試せない。が、最近の津軽の再現性はかなり上がってきているから、結構実機でもそのまま動く自信がある。

残念ながらFM TOWNS Martyは、SCSI CDドライブを接続できないので、救難IPLで救うことはできないが、それでもこのIPLでMarty以外のすべてのモデルを救うことができるようになった(と、思う)。

なんか内容の濃い第一四半期だったな。

2022/04/16


FM-7/77用RS232Cカード、ジャンパピンによってCOM0/COM1切り替えに成功。PCBなどはここ(githug)

純正品互換RS232Cカードはこれまで、オンボードRS232Cカードとの競合の問題からFM77AV40以降の機種で使うことができなかった。多分オンボードRS232Cをオフにしておくことで大丈夫だったかもしれないが、 うっかりオンにしたとき何が起こるかわからなかったのでやっぱり使えなかった。しかし、オンボードRS232Cは最高速度19200bps。外付けカードだと38400bpsまで出るので、半分のスピードしか使えなかった。新しいバージョンでは、COM1に設定することにより、I/Oポートの競合が無くなるのでFM77AV40以降の機種でも使えるはず。(まだAV40でテストできてないんだけど多分大丈夫)

RS232CによるリダイレクションはなによりF-BASICたった4行でインストールできるのがメリットで、フロッピーディスクドライブが既にだめになってしまったFM-77などでもある程度ソフトを起動できる。また、テープインターフェースがそもそもついてなくてテープ版ソフトが実行できなかったFM77AV40SXでもテープ版ソフトを起動できてしまう。

新バージョンによって、AV40以降の機種でも38400bpsによる爆速起動や、ディスクドライブよりは遅いけどある程度使い物になる速度のディスクエミュレーションが可能になった。

それに伴って、FM-7シリーズ再稼働ユーティリティも更新。Disk BIOSリダイレクタ, Tape BIOSリダイレクタどちらもCOM0/COM1を自動判別するようにした。COM0, COM1両方存在する場合はCOM1を優先する。

2022/01/21

FM77AVの「夢幻戦士ヴァリスはAct 6がクリアできない?」(全マップ付き)

FM TOWNSエミュレータ「津軽」で「大航海時代」をプレイする

2021/11/16

FM TOWNS実機とWindows/mac/Linux間でファイル転送する方法

Towns MENUの英語化

2020/09/29

FM TOWNS救難ブートローダープロジェクト

FM TOWNS動態保存界(そんな界があるのか!?)に衝撃!初期モデル以外 (多分 II CX以降。自分はHR実機、エミュレータ上でMXで確認) であれば、SCSI CDドライブとCD-Rメディア1枚あれば起動不能に陥ってるTOWNSが起動可能に!

2020/09/27

FM TOWNS救難ブートローダープロジェクト 

2019/12/04

FM TOWNS内蔵CD-ROMリバースエンジニアリングプロジェクト

FM TOWNSの内蔵CD-ROMの代わりにSCSI CDドライブを使うドライバ YSSCSICD.SYS, SYSDRV.EXE

FM TOWNS未公開BIOS機能、I/O Ports

FM TOWNSの延命を目指すプロジェクト進行中。

2019/11/15

FM77AVのキーボード赤外線信号のほぼ完全なサンプリングに成功。

 

2019/10/26

FM TOWNS用386DEBUGを探す旅

FM TOWNS用386ASMと386DEBUGを探している。CDドライブが故障してしまったFM TOWNSのためにCDISC.SYS, CDSD.SYSを使うことで外付けCDドライブを内蔵ドライブの代わりとして使うことができるが、なぜか実行できるソフトウェアと実行できないソフトウェアがある。実行できないものがどこで止まっているのか解明できればパッチを当てることもできる。あるいは、そもそもCD BIOSがどのように動作しているのかを解明して、CDコネクタから出ているコマンドを解明できれば、ハードウェア的にSCSI CD ROMドライブを内蔵ドライブ代わりに使うアダプタを作ることも可能かもしれない。その目的のためにも386DEBUGがあればいろいろ楽に解析できる。

FM TOWNSを現役で使っていたとき、386ASM, 386DEBUGは最低5枚のフロッピーディスクにバックアップを取っていたと記憶している。自分はFM-7時代にテープがダメになってデータやプログラムを無くすという経験を山のように積んだ結果、重要なファイルは最低でも三重にバックアップを取らないと不安で眠れない体になってしまった。にもかかわらず、FM TOWNS時代のソースコードはほとんど全部残っているのに、使っていたプログラムのバックアップがあまり残っていない。とにかく386ASM, 386DEBUGが入ったフロッピーディスクを探したのだがついに出てこなかった。

最後に残った希望は、手元に残っていた「バックアップ」「D01」と書かれたMOディスクだった。そのどちらかに386ASM, 386DEBUGが残っているのではないか。それが最後の希望だった。今日Windows 98SE機を借りてIODATAの640MB MOドライブで読んでみたところ、どうやらこれは自分のバックアップではなく、家族のものらしいということがわかった。入っていたのはFM OASYSのデータファイル、それと新聞の切り抜きをスキャンしたようなものだった。最後の希望も絶たれてしまった。

Pharlapのオリジナルバージョンの386ASM, 386DEBUGを入手することができたのでFM TOWNS実機上で実行しようとしたのだが、割り込み0が発生というエラーが出てどちらも実行できなかった。どうやらFM TOWNS用386ASMと386DEBUGは特別にFM TOWNS用にカスタマイズされたものらしい。

最近一度だけヤフオクにFM TOWNS用386ASM, 386DEBUGが出たときは、戦ったのだが10万円を突破したところであきらめた。あれを落とした人は本当に使ってるのかな。ただのコレクションにしてるのかな。

2019/08/05

Arduinoを使ってFM77AV/AV40にキーボード信号を送信することに成功。キーボードエミュレータも対応。


2019/05/19

富士通純正品互換FM-7用RS232Cカード38400bps駆動の改造

このあいだ製作に成功したFM-7用純正品互換RS232Cカードは、実は38400bpsまで行けることが判明した。

富士通純正品は19200bpsが最大ということになっている。純正品は82年ごろ製造のIntel 8251Aチップを使っている。多分、8251Aは本当に19200bpsが最大なのだと思う。

これに対してOKIの互換チップ82C51Aは38400bpsまで保証している。また、Intel製でも手元にある82C51Aチップは90年製造で富士通純正品のRS232Cカードが生産されてから8年も経過しているようだ。これなら実はIntel製P82C51Aも38400bps行けるのではないかと思って実験してみた。

(続きを読む

2019/05/13

富士通FM-7用FM音源カードの再生産に成功!


 

2019/05/03

死の淵から蘇るFM-7

RS232Cカードは成功したものの、自分はハードウェアの素人であることに変わりはない。FM-7に煙を吹かせてしまった場合に備えて、FM音源カードの再生産を前に、FM-7を一台増強することにした。

ヤフオクで5000円ぐらいで動作品と称するFM-7を落札した。それが届いた。よほど几帳面な人が使っていたのだろう。綺麗にGRAPHキーのシールが貼ってあって、プラスチックの黄ばみも無い。ミゾにホコリが貯まっていさえしない。綺麗なハードだった。これが動かないはずが無いだろう、と、思いながら電源を投入してみたのだが状況が良くない。


外見上ものすごく保存状態のいいFM-7









基板取り出しの様子。中身も外見上保存状況が良い。

まずFM-7の動作チェックで最初にすることと言ったら、CAPSとカナを押すことでLEDが点灯・消灯できるか。それができないとそもそもかなり重症と言える。FM-7のキーボードはMB88401というワンチップマイコン(早い話がチップひとつで一応完結するコンピュータ)が制御している。そのチップは基本的にメインCPUとサブCPUと独立して動作している。CAPSとカナの反応を見ることで、このチップにクロックが入ってきて正常に動作していることを確認できる。

それは、できた。

次にINSキーを押す。INSキーはソフトウェア的に制御されているので、INSのLEDが点滅すればCPUが動作していることを確認できる。ところが、INSを押してもLEDは点灯しなかった。それどころか、CAPSとカナも反応しなくなった。これは、相当重症に見えた。一応モニタもつなげてみたが、画面には何も出ない。結構状態が悪くて何の反応が無いときでもサブCPUさえ動作していれば画面左上のカーソルの点滅だけは確認できるはずだが、それも見えない。

またメインCPUが動作しているのであればDOSモードで起動するとビープが鳴りっぱなしになるはず。そういうわけでディップスイッチの4番をONにして起動してみたもののビープは鳴らない。 <-(実は後で判明したのだがディップスイッチの番号を間違って覚えていた。ディップスイッチの1番をオフにするのが正解だったので、実はこの時点でメインCPUは動いていたらしい。)

INSキーを押すまでは、CAPSもカナも点灯・消灯するのでMB88401は動作しているはずだ。FM-7の回路図は公開されているので、それを辿ってみたところ、キーボードを押したときMB88401はサブCPUにFIRQを発行する。サブCPUは$D000からキーコードを読み込むことでMB88401にアクノリッジを返す。このアクノリッジが届いていないのではないか?

動作するFM-7があったので、サブCPUのFIRQをマスクしたまま無限ループに入れるコードを書いて実験してみた。すると、CAPS・カナ以外のキーを二度押すことで同様の現象を再現することができた。当時FM-7を使っていた時CAPSとカナだけは何があっても反応するものだと思っていたのだが、35年の時を経て知る意外な事実。ひょっとするとサブCPUをHALTしたままでも同じ現象が起こるかもしれない。

そうであれば少なくともサブCPUがFIRQを正しくハンドルしていないことだけはまず確定した。問題はなぜか?

電源電圧はテスタで簡単に確認できる。電源をはずして確認したところ、黒・青・オレンジ・赤のそれぞれの線の間で、

赤-黒: 9.3V

オレンジ-黒: 20.9V

黒-青:  20.9V

オレンジ-青: 40V

大体 +5V, 12Vと比例している。なお、オレンジ-青は+12V-12Vだから24Vに対応しているはず。多分これを基板上で降圧して使っているのだろう。

次に負荷をかけたとき電圧が低下していないか。どうやら製造されてから一度もケースをはずされたことが無いと思われる綺麗な状態のFM-7。多分ふたを開けられるのはこれが初めてだったのではないだろうか。アルミのカバーをはずして基盤が見えるようになったが、コンデンサの液漏れも無く、目視で確認できるようなダメージはひとつも無い。なぜこれが動かないのか?とにかく、電源をつなげていくつかのICの+5VとGNDの間の電圧を測ってみたがいずれも+5.04V。十分な電圧が供給されているようだ。

電源でもない。

これを困ったときは例によってApolloさんに話してみたところ、電源の次はCPUにクロックが来ているか、CPUからE・Qが出ているか、メモリから読んでいるかを確認するのが良いとのこと。ちなみに、コンピュータクラブの電子工学科の学生さんにクロック信号をテストしたいんだけど、と僕が聞くより先にCPUのクロックと電源をテストするといいよ、と、同じことを言われた。彼はツワモノで最近ヤフオクで落としたX68000の電源ユニットを修理して起動可能な状態にしていた。さすがカーネギー・メロンが誇る電子工学科の学生さんだと思った。彼によると、ロジックアナライザでテストすればいろいろわかるとのこと。

この時点での僕の仮説はEPROMの消失ではないか、と思った。航空便で送ったから結構強いX線で検査されたかもしれない。それがEPROMを消してしまっていたとしたら、サブシステムモニタ(サブCPUのOSみたいなもん)が無いから当然FIRQにも反応が無いはず。動作しているFM-7のEPROMをソケットから抜いて刺してみるという可能性もあるにはあったのだが、万一動作していない方のFM-7にショートがあるとか電圧の異常があるとかでチップにダメージを与える可能性を考えるとそれはできない。

ロジックアナライザでテストする前にテスト項目とかどのピンをテストするといいのかとかまとめている途中で、この仮説に疑問発生。FM-7回路図ではサブシステムモニタはMB2764-20というEPROMに書いてあるはずだった。ところが実機の写真を確認するとMB8364が載っている。これはEPROMでは無い。だとするとサブシステムモニタの消失という仮説は成り立たないかもしれない。

なにはともあれ、ロジックアナライザでテストしてもらった。結論はサブCPUが故障した模様。サブCPU、メインCPUともにクロック信号は入っている。メインCPUのアドレスバスの最下位ビットは0と1に振れているのでメインCPUはメモリから何かを読んで実行しているようだった。ところがサブCPUのアドレスバスの最下位ビットは1に固定されたまま動かない。HALT、RESETのシグナルがLow (Active-Low)にスタックしているのではないか、というテストもしたもののともにHighだった。

今までCPUが壊れるなんて聞いたことが無かったのだがどうやらCPUが壊れた。FM-7は同じCPUを二つ積んでいるので、試しにメインとサブのCPUを交換してみた。すると、なんと、INSその他のキーを押した後でもCAPSとカナは反応する。

そして、ロジックアナライザでサブCPUがFIRQを受け取った後のCPUのアドレスバス下位4ビットの動作を見たところ、0110 (6), 0111 (7)でおそらくFIRQベクタ $FFF6 を読みに行き、次にFIRQハンドラの最初のアドレス$FDACからインストラクションを読むために 1100 (C) を波形で確認することができた。ちなみにモニタにつないだところ、カーソルの点滅も確認できた。FM-7のサブCPUはNMIに反応してカーソルを点滅させるので、NMIハンドラも正常動作していることがわかった。


メインCPUのクロックをテスト。




6809に供給されるクロックの波形。

CPUを交換してサブCPUが動作し始めたということはどうやらもともとサブ側に刺さっていた6809が故障したと見て間違い無さそうだった。

早速JAMECOから68B09EPを念のため4個発注。

ちなみに、なぜか手元には日立製6809互換CPU、HD63C09Pが残っていた。このCPU、実は取り換えるだけでFM-7のパフォーマンスが上がると聞いて秋葉原で試しにひとつだけ買ってみたものの、当時入れ替えてみたらなぜかPSGが焼けるという事故が起こって、以後実家の自分の部屋の壁に袋に入れて画びょうで止めてあったのだが、それをこの間持って帰ってきた。しかし、今思い返すとPSGが焼けたのは実は逆刺ししてしまったからではないか、という気がしていてひょっとすると63C09は悪くないのではないか。どうせ既にひとつのCPUが無いわけなので、68B09Pを待っている間に試してみることにした。


なぜか残っていた63C09P


それが入ってた袋。この店(タカヒロ電子有限会社)は今でも健在の模様。

メインCPUソケットに68C09Pを刺して電源投入。しかし、何も起らない。カーソルが左上で点滅しているまま。次にDOSモードで電源投入。Diskの存在をチェックする一瞬の間を置いて、BEEP!CPUは生きている!だがしかしF-BASICのプロンプトは出ない。DOSモード(ディップスイッチ1番オフの状態で起動またはリセット)では、まずディスクドライブの存在をチェックする。だから、電源投入直後一瞬黙る。もしもディスクドライブから反応が無かった場合は何もできないので、ビープを鳴らしたまま無限ループになる。これによって、

であろうことが推測できた。だが、なぜF-BASICが起動しないのか?何かを待っている。F-BASIC起動までで待つものと言ったらサブCPUぐらいしか思いつかない。だがサブCPUは動いている。63C09PはFM-7のメインCPUとしては動作しない?F-BASICが6809の未定義命令を使っている?F-BASICのROMが破壊されている?あるいは、ブートROMのBASICモード部分が破壊されている?ROM/RAM選択の信号がRAMモードで固まっている?などいろいろ可能性が思いつくが、とりあえず68B09EPの到着を待つことにした。

そして、68B09EP到着。早速とりつけて見た。電源投入。何も起こらない。DOSモードで起動。ビープも鳴らない。いや、大丈夫だこんなこともあろうかと4個発注した。2個目を刺してみる。が、何も起こらない。3個目も何も起こらない。そして4個目も何もおこらなかった。試しにサブCPUソケットにJAMECOから届いた68B09EPを刺してみたが、やっぱりだめ。68B09Pじゃないとだめなのかな?クロックも電圧も範囲内だと思うのだが。


届いた68B09EP

これは仕方ない。ダメ元で63C09Pをサブ、動作している68E09Pをメインにしてみた。(初回アップロード時ミスタイプ。入れたのは動いている方の68E09P) DOSモードで起動するとビープが聞こえる、が、画面がピンクでガビガビに。多分サブCPUがVRAMにめちゃくちゃな値を書いているらしい。サブCPUを置き換えられないのであれば、63C09PはそのままだとFM-7のメインCPUも置き換えられないのか?

あきらめてこれまでで最も良かった状態、メインCPUに63C09P、サブCPUに68B09Pを刺して最後にもう一度電源を入れてみた。すると。。。。

F-BASIC 3.0のプロンプトが!!!!!

FM-7は死の淵から蘇った!その後PSGとキーボードを刺してテストしてみたが、まったく何事も無かったかのように動作している。キーボードから PLAY "V10CDEFGAB" でPSGから普通に音が鳴る。

なぜふたたび動き出したのかわからない。動き出してしまったのでもう検証できない。が、やったことはCPUを抜いて刺してを繰り返しただけだった。電子工学科の学生さんがCPUを抜いた時ピンが酸化して黒くなっていたので接触が悪いのかもしれないと言っていた。たしかに、動作しない方の68B09P、ピンを見ると黒くなっている箇所がある。だとするとソケット側にも酸化があって接触が悪くなっていたかもしれない。CPUがなかなかソケットに入らないので余っているコンデンサの足を突っ込んでゴリゴリ削ったし、その後何度もCPUを抜き刺ししたことで酸化被膜が削れて再度通電するようになったのかもしれない。


取り外した方の68B09Pの足。拡大してみると、結構酸化してるな。。。。

そうであれば元の68B09Pのピンをクリーニングして刺せば普通に動作する可能性もある。というかその可能性は結構高い。が、マーフィーの法則によると動いているなら変更するなということなので、当面このFM-7は63C09PをメインCPUとして使うことにする。ただ、抜いたCPUのピンはクリーニングしておく。いつかまたメインCPUの動作が変になったときは交換してみる。

動き出したのでデータシートを見直してみているが、メインCPUがサブCPUをHALTするとき、

1       LDA    $FD05
        BMI    1
        LDA    #$80
        STA    $FD05
2       LDA    $FD05
        BPL    2

というループを定番で回すのだが、最初のReady待ちのループはサブCPUからのBUSY信号がクリアされるまで回り続けるが、例えばサブCPUのBA、BS信号 (ピン5、6)が汚れていた場合、いつまでたってもクリアされない可能性がある。結果メインCPUはサブCPUのBUSY信号のクリア待ちで永遠に回り続けていたの鴨しれない。

教訓: FM-7が動作しないときは、試しにCPUを抜いてピンをクリーニング。そしてCPUソケットにコンデンサとか抵抗のような細い脚を2~3回突っ込んでゴリゴリ削ってから刺しなおしてみると直るかもしれない。起動しないFM-7があってもあきらめて捨ててはいけない。

ところで、今わかったんだけど、↓によると、

https://groups.google.com/forum/#!topic/comp.sys.m6809/nhhvKV3YRD4

68B09Pと68B09EPって信号が一部互換性無いのね。そんなバージョンが存在したとは。68A09と68B09の対応できるクロックスピードが違うってのは知ってたんだけど。新たに知る古い知識は結構たくさんある。

2019/04/16

FM-7用FM音源カード、リバースエンジニアリング&再生産プロジェクト開始!

FM-7用Delphis勝手にジョイスティック対応化パッチ

FM-7用Emergency勝手にジョイスティック対応パッチ

2019/04/05

大技!RS232C経由でFM-7用ディスク版ソフトを起動!

まさか成功すると思わなかったのが成功した。始めてから起動するとこまでたった4日でできると思わなかった。その後サーバーのパラメータとか追加するのでさらに4日ぐらいかかったけど。(続きを読む)

FM77AVキーボードエミュレータも更新

なお、FM77AVキーボードエミュレータがコンソール無しモードでコンパイルするとなぜか大半のキーを送り損ねるという問題が発生したので、コンソール付きモードでコンパイルしなおしたやつをアップロードした。

2019/02/23

Sanyoのデータレコーダを修理しようとするが失敗

去年駿河屋からFM-7用Plazma Lineを買ったとき、リストアするためにヤフオクでSanyoのデータレコーダMR33DRを落とした。そのときの記述によると、データレコーダはモーターが回るもののそれ以上の機能は確認できなかった、とのことだったのだが、データレコーダが故障すると言えば大体モーター回りのようなので、モーターが回るなら大丈夫だろうと思って手に入れて、例によってBuyee.jpによって太平洋を越えた。

で、届いて試したところ、確かにモーターは回る。だが、音が出ない。スピーカーからもイヤフォンジャックからも音が出ない。予想外であった。仕方ないのでPlazma Lineは、WAV録音した波形にフィルターをかけてデータを抽出して再現に成功したのだが、もしもデータレコーダが使えたならもっと楽だっただろうになあ、と、思ったままその後何本も同じプログラムでテープ版ソフトの抽出と実行に成功してきた。

しかし、ここ最近RS232Cカードを作ってみたりハードウェアをいじくったり結構やってきたので、今なら修理できるかもしれん!と、思って再挑戦してみた。スピーカーもイヤフォンジャックも音が出ないということは、テープの磁気ヘッドに近いところに問題があるに違いない。この手のハードウェアでモーターの次に壊れそうな部品と言ったら、稼働部品であるボリュームレバーの半固定抵抗ではないか、と、見ていた。実は、今のホンダフィットに乗る前、日産セントラ(日本でいうところのサニーらしい)に乗っていたとき、空調ファンが全力だと回るけど、その手前の強度1~4だと回らないという現象が起きたことがあった。まさに半固定抵抗が電気を通さなくなってしまって、抵抗をバイパスする全力モードだけ回っていた。

(続きを読む)

2019/01/29

FM-7/77実機でRS232CからT77形式のテープ版ソフトを読み込んで実行(セーブもできる)ユーティリティ公開。

2019/01/24

FM-7/77シリーズ用純正品互換RS232Cカード製作プロジェクト成功

案外あっさり成功。実機FM-7で動作も確認できた。

実は、カードの制作に成功だけでなく、BIOSをオーバーライドしてRS232C経由でテープ版ソフトを起動することにも成功した。BIOSオーバーライドコード、サーバーコードは間もなくYSFLIGHT.COMで公開予定。

2019/01/15

FM-7/77シリーズ再稼働支援ユーティリティ更新。

FM77AV/AV20/AV40実機用赤外線ワイヤレスキーボードエミュレータ更新

2018/12/03

FM-7/77シリーズ再稼働支援ユーティリティ更新。

2018/11/17

FM77AV/AV20/AV40実機用赤外線ワイヤレスキーボードエミュレータ更新

Windows XP 32bit対応版リリースと、自動タイピング機能。短いプログラムぐらいだったらこれで流し込める。 

2018/11/12

Demosplash 2018

Demosplash 2018が終わってしまった。一大イベントだし、持ってるFMシリーズの晴れ舞台だし、Demo Compoにも参戦したし、祭りの後の心地よい虚脱感にひたる間もなくボウリングリーグは続く(ちなみに現在4週連続3ゲームトータルが600超え中)。いや、授業教えなきゃいけない方が切迫してるんだけど。

Demo Compoでは投票の結果、レトロ部門でApple II用デモに一点差 (146対145だった)で惜しくも2位。来年は首位を奪還しなくては。

最近、書いたプログラムを自由に発表するのが少しずつ難しくなっている。業界全体で個人で開発してるプルグラマーを叩き潰そうにしている。それが嫌ならば、何かに忠誠を誓うことを強要される。

悪いが、俺が忠誠を誓うのはFM-7とFM TOWNSだけだ。勝手にやってくれ。

そんな中にあってデモパーティー、Demosceneは数少ない貴重な機会だと思う。

レトロゲーミングルームにはFM-7, FM77AV, FM77AV40, FM TOWNS 2F, FM TOWNS 2MXと富士通が輝いてた頃のパソコンを並べて存在感を出してみた。ちなみにその隣にはコンピュータクラブ収蔵のMSX2とX68000が存在感を出していた。

なおDemo Compoレトロ部門2位に輝いたデモがこれ。今回は最近間違ってヤフオクで落としてしまったFM TOWNS 2MXで走らせた。

[The Golden Age of Fujitsu Micro]

エミュレータまたは実機で実行できない人は YouTube Video

ところで、1984年頃だと思うんだけど、青森県弘前市の電巧堂代官町店で、BGMのカルメン序曲に合わせてキツツキが並んで木をつつきまくるオートデモが流れていたと記憶してるんだけどあれは何の機種のデモだったのかが気になって探しているのだが見つからない。

そしてこれがPouetへのリンク

また、調子に乗ってFM-7用も書いて、これはディスクからブートしないとロードに果てしなく時間がかかるのでFM77AV40を使って実行した。来年はFM77AV以降専用のデモを書く予定。コンピュータ幾何学が専門だけどドット絵描くの下手だからやっぱりワイヤーフレーム中心になる予定。FM77AVはハードウェア直線補完持ってるからね。

ちなみに今回発表したデモはこれ。誰がなんと言おうと世界で初めてGeneral Purpose GPUを実装したのはFM-8だ。

[SONATA for Two 6809s (ふたつの6809のためのソナタ)]

エミュレータまたは実機で実行できない人は YouTube Video

そしてこれがPouetへのリンク

今回はUniversity Centerの二階に会場を移して、レトロゲーミングルームとデモスクリーニング会場が隣接してたから簡単に行き来できてよかったと思う。

その他以下はDemosplashの模様。 

2018/10/16

Demosplash 2018参戦プログラムをアップロードした。今年はFM-7用とFM TOWNS用のデモ2本書いた。一年にFM-7用とFM TOWNS用デモを一本ずつ書くのが目標。

ただ、アップロードするときデモのビデオを同時にアップロードすることが推奨されているのだが、録画がひどく大変だった。FM TOWNSだったらVGAが出てるからVGAからビデオ信号に変換するアダプタとUSBのビデオキャプチャデバイスを使えば簡単だろうと思った。それでAmazonから適当に選んでVGAからビデオ信号に変換するユニットIO DATAのGV-USB2 (日本のAmazonだと→GV-USB2)を買ってみた。

ところが、それぞれのデバイスは機能しているのだがなぜか二つを組み合わせると機能しない。Think Pad X250をビデオ信号に変換するユニットにつなげてテレビに出したら見える。ケーブルテレビのセットトップボックスからビデオ信号をGV-USB2に出すとキャプチャできる。が、なぜかふたつを組み合わせると何も見えない。僕はIO DATAは絶対的に信頼しているので多分VGAからビデオに変換するところで信号が不安定とかそんな感じなんだと思う。

これはどうしようかと思ったらこの間ヤフオクで間違って落とした2MXの背面にビデオカードIIIが。15KHzモードにするとビデオカードIIIから信号を出せると思ったのだがビデオカードIIIの後ろのコネクタは6ピン。SVideoコネクタは4ピン。なんじゃそりゃ?そんな規格のSVideoコネクタがあるのか?と思って調べたところなんとビデオカードIIIのコネクタは特殊な専用コネクタらしい。

しかも、奇跡的にそのピン配列がここに!早速DigiKeyからコネクタを発注。はんだ付けが下手なのでコネクタ一本ダメにしたものの、二本目は作った直後動いていたものの途中で絵が出なくなったと思ったらはんだ付けが甘くて結線がはずれてしまった上にピン一本がGNDにショートしていたので今度は丁寧に修理して絶縁テープもきちんと巻いて、念のためバックアップのケーブルも一本作って、今日無事ビデオキャプチャ終了。

FM-7用デモはVGAをビデオ信号に出すユニットがこの有様ではどうしようかと思ったのだが、JP21ピンをHDMIに変換するアダプタがあるからHDMIをビデオ信号に変換すればよいのではないかと思って探したらあったのでそれを発注。今日TOWNS用デモのビデオを作ってる間に届いたのでそのまま勢いに乗ってFM-7用デモも77AVから録画してパッケージに入れてアップロードしてしまった。

Demosplash 2018は11月2日と3日アメリカ東部時間で2日は16時から3日は昼の12時から。日本時間だと11月3日の午前5時からと11月4日の午前1時から。なお、見逃した人はScensatから録画が見れるらしい。

アップロードしてしまったのでちょっと気が楽になった。次のリリースはYSFLIGHTの正式版だな。アップルが余計な作業を増やしやがったけど昨日やっとmacOS版がバッチテストが通るようになった。

来年は何をしようかな。アイディアはいくつかあるけど。来年はFM77AV用にしてハードウェア直線補完とか使ってみようかな。ハードウェア直線補完があるからサブCPUにもう少し計算を受け持たせた方がいいんだな。クリッピングまでサブにやらせるのがいいような気がする。問題は直線補完のI/Oの使い方をよく覚えていないという点だ。4096色使えるから何かしてみたいもののドット絵を描くのが下手という問題があるけど。

2018/09/16

FM TOWNS実機再稼働&延命支援プロジェクト: 非常用Towns OS GUI起動ディスクの作成 (あと英語化も可能)

 

2018/09/15

FM TOWNS再稼働支援プロジェクト: Windows 10で1.23MBディスクイメージから実フロッピーディスクへの書き戻し方法

 

2018/09/10

FM TOWNS用外付けSCSI CD driver「CDSD.SYS」のビルド方法

どうやらFM-TOWNSの内蔵CDドライブは壊れやすいらしい。もう30年以上前に生産されたPCだもんな。この間、間違ってヤフオクで落としてしまったFM-TOWNSも、CDドライブ動作確認と言ってたのに、届いてみたら動かなかった、というかかろうじてTownsOSが起動するものの、エラー出まくる、CD-DA再生できず、で現実的に使えない。

しかし、ほとんど奇跡的なことに外付けCDドライブを内蔵ドライブ代わりに使うドライバCDSD.SYSとCDISC2.SYSが存在する。しかし、CDSD.SYSはバイナリは製品とあるにもかかわらずもう売ってない。公開されているのはソースだけ。しかもバグっててTownsOSではそのままでは使えない(READMEにはFM TOWNS対応って書いてあるのに!)。

仕方がないのでバグ取った。あとFM用ビルド方法も確立したので公開した。なお、実機FM TOWNS 2MXで動作確認した。

FM TOWNSを宇宙の終焉のときまで生かすのだ。

2018/03/09

ローマ字タイプ→カナキーコンバータ

テープ版「PLAZMA LINE」を読み込んでWAVを処理してXM7上と実機で実行することに成功したので、調子にのってなぜか手元に残っていた「テラ4001」も復活させてみた。本当に復活したか確認するために最後までプレイしたかったのだが、カナキータイプができない。しかも、使ってるのはUSキーボードだからカナの刻印すらない。

ということでローマ字タイプするとカナモードでどのキーを押せばいいのか表示するプログラムを書いた。40年前のアドベンチャーゲームを今更プレイしたい僕のような中年のオッサン向け。 

レトロ・ゲーミング・ナイト 2018

先週土曜日、カーネギーメロン大学のコンピュータクラブ主催のレトロ・ゲーミング・ナイトにFM77AV, FM77AV40, FM-TOWNSを展示した。FM7はいまだ入院中。77AVと77AV40は、ぎりぎり間に合ってリストアに成功したPLAZMA LINEの他、テープ経由で書き戻したソフトをいくつかローテーションで実行した。

PLAZMA LINEは単純明快なところが受けたのか、結構好評だった。おそらく世界で初めて家庭用PC向けでポリゴンベースの3Dグラフィックスを使ったタイトルと説明すると、結構感心する人がいた。今のところ、誰も1984年12月以前に家庭用PC向けポリゴンベース3Dグラフィックスを使ったゲームを知ってる人は出ていない。ワイヤーフレームだったらあったんだけどね。

FM-TOWNSではずっとVSGPを実行してたんだけど、レースゲームだから割と単純明快で誰でも楽しめるかなと思ったら、案外みんな苦戦していたようだった。コーナー入る前にブレーキかけないんだもんな。

なお、キーボードエミュレータも完璧に動作して、普通にゲームがプレイできるレベルだった。プレイできるというか、PLAZMA LINEとかはキーを押した瞬間に機体が動くので、急いで障害物を回避しようと思ったらキーを連打しなくてはならない。が、キーボードエミュレータの連射機能により、あたかもキーを押しているあいだだけスムーズに移動して、キーを放すと停止するような操作感を実現できた。

去年の年末に77AVと77AV40を中古で買ったときは、ここまでリストアできると思ってなかったから、大成功だったと思う。写真は準備中の様子。




 

2018/02/25

PLAZMA LINEリストア

駿河屋で買ったFM-7用テープ版Plazma Lineが例によってtenso.com経由で届いた。このPlazma Lineというゲーム、当時I/Oの広告で見て欲しいなあ、と、思いながら中学生の小遣いでは何本もゲームを買うことはできず、結局ファルコムのゲームに投入していた影響で、断念していたタイトルだった。当時はとくにファルコムファンだったという意識は無かったんだけど、今思い返すとファルコム製品ずいぶん買ったなあ。

テープ版ゲームはディスク版よりも劣化が速い。テープが物理的に伸びてしまうとか、磁気が弱まって読めなくなってしまうとか。だから、届いたらまず実機に読み込み、ローダーをフックしてディスクに起動直前のダンプを書き込み、そのディスクイメージからプログラムを抽出して、起動可能なディスクイメージとディスクを作るという工程を考えていた。似たようなことは当時もやったことがあって、ドラゴンスレイヤーのテープ版をディスクに起こしたとき、たしか裏ラムに退避しきれなかったもんだから、FM77AVの拡張RAMに退避したもんだから、あのときはなぜかFM77AV専用のドラゴンスレイヤーができた。でもDisk BASICから起動できたよ。

なお、今回、実機も稼働状態にしたことだし、これからまたレアなタイトルを見かけたらイメージ化して保存するためにデータレコーダも一台ヤフオクで落として、こちらはbuyee.com経由でほぼ同時に届いた。

ディスクに起動イメージを保存するプログラムは既に書いてあったので、あとはデータレコーダから実機に読み込めてくれれば大丈夫、と、思ったら問題発生。データレコーダ、「モーターが回ることだけは確認」という中古品だったのだが、音が出ない。モーターは確かに回っているがスピーカーからもオーディオ出力からも何も聞こえない。フタを開けてみたが、明らかな断線のようなものは見えなかった。原因は不明。そもそもプログラマーでハードウェアにそんなに強くない僕の腕ではデータレコーダの修理を成功させる可能性はほぼゼロと言っていい。

作戦変更。

俺はプログラマーだ。C++でなんとかする。

とにかく、ロードできないのはわかっていたが、我が家のオーディオカセットレコーダで.WAVファイルに録音してみた。ステレオで録音すると、どうも右側の方が波形の再現性が高い。左側は、目視で波の山が完全につぶれてしまっている(山と谷が二連続あるはずの個所がひとつに見える)箇所が多い。左側をなんとか処理して読み込み可能な形式にできないか。ApolloさんのサイトにWAV2T77というユーティリティがあるから、このユーティリティでT77形式ファイルが作れるところまで持っていければいい。

きわめてユーザーアンフレンドリーなWAV編集プログラムの開発開始。


生録音。波長は出てるようだけど上下がぜんぜんでたらめ

なお、生録音の波形を見ると、波長は出てるっぽいけど、ピークが上がったり下がったり安定しない。基本的にすべての波が同じ高さでなくてはならない。

幸い、.WAVファイルを処理するYsSimpleSoundなるライブラリを書いてあったから、.WAVの読み込みは既に手持ちのコードでできた。まず何より必要なのは、山と谷の高さを揃えることだ。そのためには、波のピークを検出して、そのピークを含むエンベロープを計算して、エンベロープが-30000~+30000にフィットするように各サンプルをスケールしてやればいい。

無音部のホワイトノイズまで+-30000に広げてしまうと困るので、まず目視でホワイトノイズ部分を0にする。目で見ると明らかにファイルが三本存在する。その間は無音部。ここを自動化する意味は無くて目で見ればわかるので手作業でゼロにする。


ホワイトノイズクリア化前


ホワイトノイズ消去(手作業で範囲指定)

次の問題は、ピークを検出と言ってもサンプルの凸凹の影響で、本来は山でも谷でもない部分に微細な山と谷が発生する。また、ピーク付近の凸凹で山の頂(または谷底)に尾根が複数発生したりする。そういう場合、何をすればいいかというと教科書通りのメディアンフィルター。この手のノイズには必殺の一撃と言えるし、あっという間に実装できる。

メディアンフィルタを何度かかけると目視だけど明らかに改善が見られた。次にエンベロープ。これは、山と山、谷と谷を結ぶ関数を作れば良くて、まずは線形補完でやってみた。そしてできたWAVをWAV2T77にかけると、なんとXM7上でBASICのローダーが読めるようになった!これは希望がある!と、思ったのだが、BASICのローダーが読み込むマシン語のローダー(というか本物のローダー)の読み込みで恐怖のDevice I/O Errorが出る。


メディアンフィルタ前


メディアンフィルタ後

実は、これに関してはマシン語ローダー部に怪しいスパイクがあって、これじゃねえか?と、思っていた。このスパイクの直前は0xffで、次も多分0xffになるはずなのだが、その2バイトの0xffの境界の波が壊れている。しかし、不思議なのは、Plasma LineはA面、B面に同じ内容が記録されているのだが、どっちの面から録音してもそのスパイクが入っている点。実は違うのかもしれないが、とりあえず波を修理してみる。


スパイク (-30000~30000に丸めてしまったからスパイクに見えないけど丸める前はスパイクだった)

44KHzサンプルでは、1のビットの波は約45サンプル、0のビットの波は約20サンプルに相当する。が、ここは1のビットが65サンプルにも伸びている。余計なサンプルを削って、サイン波で置き換えてやる。が、それでもDevice I/O Errorが取れない。

こうなりゃ、もうバイトの壊れを探して直すしかない。FM-7のテープには、それぞれのバイト(8ビット)を11回の波で記録している。各バイトは、

0xxxxxxxx11

と、0の波に続けて8ビット分の波、最後に1の波が二回。これが1バイトに相当する。もしも、これが壊れていて、最初が0で無かったり、最後が11で無かったり、あるいは、0でも1でもない長さの波が含まれていると、Device I/O Errorになる(多分)。

また、ファイルの最初は0xffが連続していて、F-BASICでセーブした波は256バイト(255だったかな?)の0xffに続けてデータが入ってくる。読み込むときは、この0xffの連続を検出することでファイルの先頭を識別できる。

まず、ひとつの波を検出するコードを書き、それが1のビットか0のビットか判定するコードを書き、0のビットを検出したらそれに続く10の波を調べて一バイトが成立するかチェックするコードを書く。そして、0xffの列を検出、一瞬モーターが止まるタイミングで波が途切れるが、それに続けてマシン語部のデータは最後まで正しいバイトデータであることが判明した。

なぜDevice I/O Errorが出るんだ?チェックサムが誤っている?疑問が残ったが、この時点でマシン語部のダンプが取れてしまったのでどうでもよくなってしまった。このマシン語部は、0x7C00から読み込まれて、実行するとテープから0x0000~0x7BFFまでのコードを読み込み、Sレジスタに0x8000をセットして0x0000にJMPするようだ。

ダンプが取れたから、ダンプを元にテープイメージを作ってみる。これはまったく新しく作ったテープイメージだから絶対Device I/O Errorが出るはずがない。ところが、これをBASICのローダーから読ませてみると、Beep! Device I/O Error。

なんで?BASICのローダーを使わずに試しに、

CLEAR ,&H1FFF
LOADM "PLAZMA2"

と直接コマンドタイプしたらロードするじゃん。しかし、BASICのローダーのように、CLEAR ,&HFFF でロードするとDevice I/O Errorが出る。なんと。実はイメージの問題じゃなかった?

あとはプログラム本体。既にマシン語部のダンプが取れるレベルになっていたから、試しにそのままWAV2T77をかけてみるが、失敗。テープの最後まで進むのだが起動しない。

XM7のデバッガで見ると、0x0000から、

CLRA
TFR    A,DP
LDS    #$FC80
JMP    $362B

意味のありそうなコードだが、0x362Bからのコードは意味の無いコードだった。途中までは読めているようだ。

WAVに戻ってバイト列として成立するかどうか確認すると、どうもバイトの最後の11がやや間延びしている箇所がある。山の後半が微妙に長すぎで前半が微妙に短い。手作業でサイン波で置き換えていく。すると、スパイク発見。どうやら、メディアンフィルタで取り切れなかった凸凹が原因のようだ。

手作業で100か所ぐらい修正したところで、ボウリングの試合の時間になったので行ってくる。183, 211, 181。まあ、悪くない。ボウリング場二か所で投げてるけど、土曜日のForward Lanesのリーグはぜんぜん真剣じゃないリーグで、投げてるボウラーだけじゃなくボウリング場もまじめにオイルを塗る気が無いらしく、レーンがカチカチ。そういうコンディションだと、僕みたいにスピードが無いボウラーは不利になる。まあ、平たく言うと筋力がものをいうコンディション。強くピンに食い込んでいくボールを使うには速球を投げなくてはならない。あとは、このコンディションでも弱いボールでストライクを確実に出すコースは存在するからコントロールが超人的勝てるけど、そこまでのコントロールは僕には無い。3ゲーム目なんて、ひとつもはずさなかったのにストライクが散発の2回で200届かなかったもんね。木曜のPlaymorのリーグは公認リーグで真剣なリーグだからきちんとオイルが敷いてあって僕でも割と200出せる。

帰り道、このまま波の手作業補正を続けても修復は多分無理。せめて半自動化しないと。ひとつは、波の上下の長さを厳しくチェックする代わりに波長だけ(HighとLowの合計)見るように条件をリラックスさせる。もうひとつは、メディアンフィルタで取り切れなかった凸凹を取る。

まず、メディアンで取り切れなかった凸凹除去は、閾値の選択が問題。山から次の谷、あるいは谷から次の山までの高さの変化が小さすぎる場合、それをピークと取らないように修正するわけだが、閾値が見当もつかない。なので、隣接するピーク間の高さの変化を見て、それを小さい順にSort。キーを押すたびに小さい順に表示するようにしてみた。どうも閾値1500ぐらいが妥当のようだ。8000あたりから本物のピークが出てくる。というわけで、キーで選んだ波を閾値としてピークを消す。


謎のスパイク


メディアンで取り切れない凸凹が原因でエンベロープがつぶれている


閾値を指定して凸凹をキャンセル。正しいエンベロープ。


正しい波形

また、エンベロープを線形補完からコサイン関数でスムーズに補完するように修正して、エンベロープを適用。

そして、バイト列が成立するか確認の前に、長すぎる波、短すぎる波を探す。すると、異常に長い波をひとつ検出。1500の閾値にひっかかったのかな?波を見ると明らかに短い波(0ビット)がひとつつぶれてしまっている。が、目視でははっきりどうなるべきかわかる。


不正波付近のエンベロープ


引き伸ばした状態


手作業で修復

この波を手作業で修復。これによって、最短が17、最長が46の波となった。すべて、1のビットか0のビットと判別できる。

そして、バイト列として成立するかのチェック通過!合計0x7C04バイトを抽出することができた。このWAVをWAV2T77にかけてみたのだが、読み込み失敗。だが、バイトデータがダンプできてしまったからそっちから直接起動を試みる。最初に余計な0があったが、2バイト目からが0x0000に対応するよだ。後半を見るとCOURSEとかGAME OVERとか文字列が見える。どうやら正しいデータらしい。

そこで、このダンプを下位0x4000バイトと上位0x3C03バイトに分割。いったん裏RAMに退避して、最後に0x0000~0x7C03に展開して0x0000にJMPするコードを書く。6809アセンブラ楽しい。最初にトライしたら、2バイトずつコピーして終端をチェックするときBNEにしてたもんだから、スカっと7C03を通過してメモリを破壊してしまったけど、それをBCSに書き換えたら実行に成功!

ステージ1だけプレイしたけどきちんと動作した。というか、キーのストロークで移動するからサッと障害物を回避したいときキーを連打しないといけないんですけど。他のFM-7のゲームみたいにキー押しで移動開始5でストップにしてくれた方が手が疲れないんですけど。と、198x年のゲームに今何を言ってるんだいって感じだが。

Plazma Lineは1980年代の8ビットPCでポリゴンの3Dグラフィックスを実現していた。当時は超絶技巧プログラマーがいた。今の僕は、彼らのレベルに達しているのだろうか?もうあんな超絶技巧プログラマーは絶滅危惧種かもしれない。いや、まだ存在しているけど、プログラマーのすそ野が広がってしまったから埋もれているだけかな。

とりあえず、Plazma Lineのコピーをひとつ、歴史的なソフトウェアとして保存しておくことにしよう。

なお、実機での動作も確認。

これなら「テラ4001」もリストアできそうな気がするなあ。一応、同じ設定で録音しなおしだけしておこう。

2018/02/19

ガンダーラ

ヤフオクでFM77AV用「ガンダーラ」 (ENIX)を落とした。実はFM77AVにガンダーラが出ていたと知らなかったので、ヤフオクで見たときは、「あったのか!!」という感じだった。あまりプレイしたいかというとそれほど興味が無いのだが、レアものなので確保しておこうと思った。あっさり落札できて、またbuyee.comのおかげで海外まで無事届いた。

最初ディスクのふたを開けて状態をチェックしたときは、カビかと思うような変色箇所があったのだが、どうもホコリだったようで、一度ボールペンを駆使して一周回してみたところ見えなくなった。

問題は、実機はあるものの長時間プレイして実機に負荷をかけたくない。そもそも、既に老朽化しつつあるディスクメディアをあまり回したくない。ディスクイメージ化してエミュレータ上で使いたい。イメージ化するには、今のところUSBではなく、内蔵フロッピードライブを搭載したDOSマシンが必要。だけど、そんなDOSマシンは既に手元に無くなってしまった。だから、わざわざテープ経由でイメージを書き戻すプログラムを書いたんだよなーーーと、思っていたら、あった!一台残ってた!

我が妻が結婚前、渡米するにあたって買ったというダイナブック。既にCD-ROMドライブは読み取りできなくなってしまっているが、フロッピーディスク内蔵してた。というわけで、大学でモスボールしていたダイナブックを急きょ引っ張り出してきた。しかも都合のいいことに、Windows 98起動ディスクが残っていた。DOSに近い環境のコマンドモードを起動することができる。これならいけるかもしれない。

まず、電源をつなげて電源が入るかどうか。無事入った!

Windows 98起動ディスクで起動に成功!インストール用のコマンドモード。これは実質的にDOSだ。

そしてDITT.EXEを実行。。。。。。と、思ったらなぜかDITT.EXEは何もしないで固まってしまう。なぜか残っていたAbitのBIOS Flash用ディスクでDrDOSを立ち上げてみたが、それもDITT失敗。やっぱりだめか。。。。と、あきらめかけたとき、ふとNDittを思い出す。このダイナブック、まだWindows XPが起動する。NDittならなんとかなるのではないか?

もう10年近く電源を投入していなかったこのダイナブックだけにパスワードは10年前のまま。あのとき何使ってたっけ?と、いくつか思いつくパスワードを試してみて、ついにログインに成功。FDRAWCMD.SYSをインストールして、DITTを実行すると、、、

大成功!


タイトル画面


ゲーム画面

FM77AV用「ガンダーラ」のディスクイメージ作成に成功した模様。ただ、起動しか確認してないから、途中プロテクトにひっかかる可能性はまだある。D77ディスクイメージは、F5, F6, F7セクタの存在をチェックするだけのプロテクトだと割と対応するようだが、セクタとセクタの間に何か書いてあるとかいうタイプのプロテクトには対応できない。また、NDittはCRCエラーが起きているセクタは正しい情報を読み取ることができないらしい。だからCRCエラーが起きているセクタの内容をチェックするようなプロテクトだとひっかかる。

クリア確認したいところだけどな。学期中だから暇ないな。他にもまだ奇跡的に残ってたFM77AV用ディスクは既にイメージ持ってるんだけどNDittの動作確認のために合わせてイメージ化してみたら、やっぱりCRCエラーセクタの内容がだめみたいね。内容チェックしてるやつはひっかかって落ちた。あと「九玉伝」はディスクが破損してるのかな。これもNDittでは失敗。起動するけど、「一度2DDドライブで使ったので使用不可」と出て続行できなかった。ディスクAのトラック13と18、ディスクBのトラック19だったかな

けど、このNDittでD77イメージの書き戻しに成功してしまったら苦労してテープ経由書き戻しツール作ったあの苦労は。。。。と、思ったけど、あれはあれでおもしろいプログラミングだったな。たまにアセンブリコードを書いて記憶をリフレッシュするのは悪くない。 (追記: NDittは256バイト/セクタ以外書き込もうとするとクラッシュするっぽいから、やっぱりテープ経由書き戻しツール作っといてよかった)

しかし、このDynabookもハードディスクが寿命になったら 今更IDEドライブなんて手に入るのだろうか。しかも内蔵CD-ROMドライブが既に寿命になってるから再インストールするにはCDドライブの入れ替えから始めなきゃ。大切に使おう。けど、なんでDITT失敗したのかな?ただのDOSマシンのはずなのだが。多分これからそんなにイメージ化作業が発生することないと思うけど、ときどきレアなソフトが出たら落として保存しようと思っている。

今のオンラインゲームのようにサーバーが無いとプレイできないタイプのゲームは30年後、40年後に残らない。iOSやAndroidのゲームもベンダーがサポートの継続をやめてしまったらいずれ消えてしまう。優れたゲームもたくさんあると思うんだけど、残念だと思う。昔のコンピュータやゲームって大切に扱ったら長持ちした。今のコンピュータは大切に扱おうが粗末にしようが、ベンダーがサポートをやめたらそれで実質的に使えなくなってしまう。そうやって物を粗末にするのが新しく、物を大切にするのが時代遅れというのなら、僕は時代遅れでかまわない。抵抗できる限り抵抗してみよう。

2018/02/14

FM77AV40のドライブ1の動作も確認!

昨日、日本からサンワサプライのフロッピーディスクドライブクリーナーが届いた。早速、FM77AV40のドライブ1にかけてみた。FM77AV40のドライブ1は中古で買ったとき、どうやらフロッピーディスクが30年以上入ったままになっていたようで、入っていたディスクの表面にヘッドの型がついている状態だった。ヘッド自体も無事では無かろうと思ったので、貴重な2D/2DDフロッピーディスクを入れて試す前にまずヘッドをクリーニングすることにして、クリーナーの到着を待っていた。

当然アメリカ国内で生産されたフロッピーディスククリーナーを買うこともできたけど、僕はサンワサプライを信頼しているので、時間がかかってもサンワ製を買った。というか、アメリカのAmazon.comに売りに出てたんだけど。最近、日本の製品をアメリカのAmazon.comとかeBayとかで平気で売ってるのね。ありがたいことだ。この手のクリーナーは中古で既に汚れをふき取った後のものだとあまり役に立たない気がしたけど、本当に新品らしいものが届いたので良かった。ちなみに、当然、このフロッピーディスククリーナーはもう生産されてないから、どこかで売れ残ってたのが出回ってるだけなんだろうな。今の若い人だとそもそもフロッピーディスク知らなさそうだし、フロッピーディスククリーナーなんて見たことないだろうね。

全体的に見た感じFM77AV40の状態は非常に良かったので、案外あっさり動くのではないかと期待していた通り、クリーニング後ディスクを入れてみたらあっさり読み込みに成功。Laydockを起動してみてドライブ1の状態もまったく問題ないことを確認した。これで、手元に2台完全に動作する状態のFM77AVシリーズ機が確保できた。毎年二回ぐらいしか出番無いけど、大事にしよう。

なお、このテスト中、IRToyによるワイヤレスキーボードエミュレータで操作しようと思ったらいきなり何もキーに反応が無くて焦ったんだけd、リピートタイマーを初期化するの忘れてて、いつまでたってもキーコードが送られてないだけだった。きわめて少ない需要しか無いとは思うけど、修正版をアップロードした。  

2018/01/31

FM77AV/AV40赤外線ワイヤレスキーボードエミュレータFM-7/77シリーズ再稼働支援ユーティリティ更新。 

2018/01/24

FM77AV/AV40赤外線ワイヤレスキーボードエミュレータ公開!

2018/01/14

FM-7/77シリーズ再稼働支援ユーティリティ公開。

2018/01/05

FM77AV40海を越える。

ヤフオクで落としたFM77AV40が届いた。RGB21->HDMIコンバータが既に届いていたのだが、自分(が半ば専用に使っている)部屋のモニタにはVGAとDVIしか出ない影響で、まだ絵は出せてない。ちなみに、このRGB21→HDMIコンバータ。

が、絵が出なくてもとりあえずテストできることはある。昨日と今日でとりあえずテストした項目は、

  1. 電源が入る。
  2. 電源を入れてしばらく待って、INSキーを押してLEDが点灯する。これでCPUが動いていることを確認。
  3. BEEPコマンドで、RGB21->HDMIコンバータのオーディオ出力からBEEPが鳴る。
  4. 同じくPLAY文でPSGの動作確認。
  5. あらかじめ作っておいたデータレコーダケーブルで、WAV化したT77ファイルを読み込み、実行可能。
  6. 液漏れでさびていたキーボードワイヤレス接続用バッテリー端子をガリガリ削って、ワイヤレス接続も使えることを確認。
  7. RGB21->HDMIコンバータだと音が不安定なので、LINE OUTも確認。

絵は出ないけど、このぐらいはできる。なんと、ボロボロとはいえ元の箱に入っていて、しかも未開封と思われるマニュアル4冊もそろっているから、元の持ち主は大切に保管していたのではないか、と、思ったのだが、唯一残念だったのは、Drive 0と1のふたつのうちDrive 1にフロッピーディスクが入りっぱなしだった。ディスク自体は既にぼろぼろで本来磁性体を回すためにディスクがつかむはずの金属部品と磁性体が分離している。しかも、ヘッドの型がついている。多分、Drive 1のヘッドは無事ではなさそうだ。だとしてもDrive 0だけ使えれば相当いろんなことができる。目的はRetro Gaming NightとDemosplashに展示とDemo開発用だから、ある意味テープインターフェースだけ生きてれば使えるとも言えるんだけど。

ところで、FM77AVシリーズは、モニター出力が21ピンコネクタから出る。このコネクタは日本バージョンがRGB21、ヨーロッパバージョンがSCARTと呼ばれている(らしい)。悪いことにピン配置がぜんぜん違うので、ヨーロッパSCARTデバイスをRGB21デバイスに接続すると、最悪基盤を焼いてしまう危険があるらしい。さらに、ケーブルが直線結線ではないらしい。FM-7の知識が半端ないApolloさんによると、入力と出力をクロス結線にする必要があるらしい。

その情報があったので、米Amazonで買ったSCARTケーブルを、実際使う前にテスターで結線を確認してみた。いや、確認してよかった。米Amazon.comから買ったケーブルは、たしかに入力と出力がクロスになっているが、SCARTのピン配列でクロスになっていて、RGB21のピン配列ではまったく意味のない結線だった。ちなみに、テスタで調べた結果がこれ。


米Amazonから買ったSCARTケーブルの結線

ただ、EURO SCARTだとしても、下から2段目 (pin 17と18)のクロスは間違いなのではないかと思ったんだけど。これに対して、Apolloさんが調べて公開してくださったRGB21ケーブルの結線はこれ。

RGB21の結線

FM77AVシリーズで使うためには、ピン1~ピン10の偶数ピンと奇数ピンがクロスになるよなるように結線する。EUROのSCARTに使う予定はなかったので、米Amazonから買ったケーブルもRGB21結線になるように下手なはんだごてを使ってつなぎかえた。

ちなみに、ヤフオクで落としたFM77AV40は、奇跡的にRGB21ケーブル、プリンタケーブル、キーボード、キーボードケーブルが揃っているというもので、RGB21ケーブルもついてきたので、テスターで確認したところ、確かにピン1~10の偶数ピンと奇数ピンのクロスだった。 

2017/12/16

FM-7手術失敗。

VRAMのBlue Planeのビット7が全部立つ現象をなんとかするべく、コンピュータクラブに手術を依頼したのだが、失敗。状況は悪化してしまって、ほとんど画面の文字が読めなくなってしまった。

いったんは基板から煙が上がったもんだから、これはもうダメかと思ったんだけど、そこはさすがでショート箇所を特定してくれて、起動できるレベルまでは回復させてくれた。

しかし、VRAM関連の部分は何かが焼けたらしく、今度はビット6が全プレーンで立ってしまっているような印象なのと、文字が横ににじむような感じになってしまって、現実問題として読めない。

ただ、おそらくLS244のうちの一つが揚がったのであろう、ということで、年明けに検査して上がったLS244を交換してみる予定。

ヤフオクでもう一台FM-7落としてしまおうかな。 

ちなみに、FM77AV40を落としたので、それは年明けぐらいにピッツバーグに届く予定。電源が入る以上のチェックができなかったということなんだけど。電源が入るなら、多分F-BASICは起動するのではないかと思う。でもディスクドライブが生きてるかどうか。

2017/12/09

カーネギーメロン大学にはコンピュータクラブというのがある。さすが、全米ランキング1位のコンピュータ・サイエンス学部がある大学だけに、ここのコンピュータクラブの技術レベルが半端ない。学部生レベルでアセンブラは平気で使いこなすし、多少のハードの問題は神業のハンダごて裁きで修理してしまう。また、彼らの中にはコンピュータが辿ってきた進化の過程に興味を持つ人がいて、レトロPCを修理して稼働状態で何台も保存している。それさえ知っていれば、実家にあったFM-77AVは捨てずにこっちに持ってきたのに!

が、この夏帰省したとき、実家で奇跡的にまだ眠っていたFM-TOWNSとFM-7をピッツバーグに持ってきた。FM-TOWNSはほぼ完全に動く状態。ときどきCD-ROMドライブがふたが閉まってないと思うらしく動かないが、開けて閉めるとまた動き出す。このFM-TOWNSは、三代目が残っていたと思ったのだが、今限りなくこれは二代目なのではないかという気がしている。FM-7は、I/O 1986年1月号に乗っていたVRAMアクセスウェイトを強制的にオフにする改造が加わっていてやや不安定な以外は稼働状態。

その話をしたところ、コンピュータクラブ主催のデモパーティー、Demosplash 2017で日本のレトロPCについてプレゼンを頼まれて、人前で話すのが好きな僕は快く引き受けて、準備していたら6809プログラミングに燃えてしまって調子にのってFM-7用デモを書いたら、レトロ部門のデモコンペで優勝してしまったりしたところまでは、ここに書いた。

このFM-7は小学生時代、いじめられっこだったがいじめ問題が社会に認知される以前だったため、よく自殺しなかったものだと思う時代、僕の友達だった。FM-TOWNSは高校時代、大学時代、共に悪のPC9801帝国と戦った戦友だった。これからの時代は三次元グラフィックスだ。(僕はあまりコンピュータで動画を見ることには興味が無かったから、何にこだわっていたかというと3次元グラフィックスにこだわっていた)。PC9801なんて非力なコンピュータには退けてもらって、FM-TOWNSが日本の標準にならなきゃ、せっかく日本で育ってきたコンピュータは世界の潮流に飲まれて無くなってしまうよ。と、思った。僕は、間違った未来予測をするのが得意だ。僕の予想では2015年ぐらいにはローエンドCPUが8コアになってて、GPUとCPUの垣根は無くなって、シェーダーなんていうへんてこなプログラミング言語は無くなって、C++のコールバック関数で用が済むようになっているだろう、と、思っていた。大外れだ。だけど、日本で育ってきたコンピュータが無くなってしまうという予測だけは当たっちゃった。

だから、ほぼ30年ぶりにFM-7とFM-TOWNSの電源を入れたとき、古い友達に再会したような気がした。FM-TOWNSとFM-7は生きたいだけ生かしておくつもりでいる。多分年に何度も電源を入れることは無いかもしれないけれど、かえってその方が長く生きるかもしれない。毎年二度は晴れ舞台がある。コンピュータクラブ主催のレトロゲーミングナイトとDemosplashのレトロゲーミングルーム。コンピュータクラブが維持しているX68000の隣でFM-7、FM-TOWNSを稼働させるつもりだ。

SCSI2SD

最近、こっちの友達から、SCSI2SDなるデバイスを借してもらった。当分僕が使っててもいいということだった。このデバイスは、SDカードでSCSI接続のハードディスクをエミュレートするというもので、FM-TOWNSにつなげばハードディスクとして認識されるはずであるということだった。今の若い人はSCSIなんて知らないという問題は、ネットで検索してもらうとして、昔はハードディスクをつなげようと思ったらUSBじゃなくてSCSIが普通だった。

おそらくFM-TOWNSのCD-ROMドライブはほぼ健全で、フタが閉まったことを認識するスイッチが緩いのではないかと思うけど、SCSI2SDからブートするようにしておくと、なるべく負荷をかけずに使い続けることができる。レトロゲーミングではVSGPを走らせたいと思ってるから、ハードディスクにインストールしてしまえばあとはCDは使わなくても済む。

いや、僕の当時の自作ソフトって三次元が多いから、カジュアルにちょっと触ってやってみるには敷居が高いらしい。

しかし、困ったのがケーブル。昔は呼びも含めてSCSI-1ケーブルなんてごろごろ転がっていたのに、手元を探したが一本も残ってない。Amazonで探したらあったから、とりあえず買う。そして、問題は、SCSI2SDからSCSI-1ケーブルにどうやってつなぐか。SCSI2SDは内蔵ドライブ用のコネクタが出ている。が、SCSI-1ケーブルは外付け用だ。いわば、SATAドライブをケースに入れないとUSBにつながらないのと似たような状況で、ケースが無い。と、思ったら、eBayで発見!まじめにやろうと思ったら、ケースを作ってこのコネクタを外に出すんだろうけど、とりあえずむきだしでも使えるだろう。

SCSI2SDを使うには、まず公式サイトに行って、設定ユーティリティをダウンロードする。いったん、SDカードも抜いて、SCSIケーブルも接続しない状態にして、USBケーブルでPCに接続する。そして、エミュレートするハードディスクの仕様を設定する。当時は、テラバイトどころかギガバイトなんていう単位のハードディスクは無くて、まだメガバイトの時代。FM-TOWNSのOSはそもそも1パーティションあたり127MBが限界。だから、SDカードが何ギガあろうが、512MBだけ使うようにする。なお、TOWNS-OSはSCSI ID 0番からの起動が設定できないようになってるので、SCSI IDは1番にする。これは、内蔵ドライブから起動するように設定して、内蔵ドライブの起動に必要なファイルが破損すると一般ユーザには手も足も出ない状況になるのを防止するため。外付けドライブだったら電源入れなければいい。そう。このころは外付けドライブから起動なんて普通だったんだよ。DOSに移行したとき、なんと不便なPCだろうと思ったもんだった。

SCSI2SD_SETTINGS
SCSI2SDの設定

そして、16GBのSDカードを刺して。SCSIケーブル二本経由してFM-TOWNSに接続。TOWNS-OSを起動。そして、あっさり認識に成功!こんなに簡単にできていいのか?とにかく、起動できるようにしてしまえばこっちのものだから、TOWNS-OS起動ディスクを4枚のSDカードにインストールする。なんでひとつだけインストールしてイメージ取らないかって?イメージ化したやつを書き戻して認識するか保証がないから、まずは複数起動かのうなディスクを生産することにしたんよ。イメージ化してバックアップするのは次のステップ。16GBのSDカードを10枚パックで買ってあるから、書き戻すテストもする予定。

SCSI2SD
むき出しだけど、LEDが見えるし。まあ、いいか。


おお!512MBと認識した!


パーティション設定。


そしてドライブ割り当て。

TOWNSOS
インストール中。なお、iPhone5Sの箱はSCSI2SD保管用。

なお、SDカードの読み書き程度の電力はSCSIケーブルが供給する電源で間に合うらしく、外部電源はつながなくてもいい。このFM-TOWNSの基盤自体は健全のようだ。ざっと見たところコンデンサーの破裂などは確認できない。まだまだ生きそう。

FM-7

FM-7シリーズ実機の動作テストは簡単だ。まず、電源を入れて2~3秒待つ。ディスク搭載機の場合は、何もディスクが入ってないということを認識するまで待つから多分数秒から10秒ぐらいは待つ。そして、INSキーを押す。INSのLEDがキーを押すごとに点滅すれば、CPUが動いているとわかる。なんでかって?FM-7シリーズのINSのLEDはソフトウェアからコントロールしている。CPUが稼働していなかったらINSキーはキー押下と連動して点滅しないのだ。次のテストは、適当にランダムな文字を打ち込んでリターンキーを押す。F-BASICが起動していればエラーになるから「ピー」とビープ音が鳴る。なお、僕がテストしたのは、キーボードから画面が見えない状態で、

PLAY "CDEFGAB"

とタイプ。PSGが健全ならドレミファソラシと音階が聞こえるはずだ。去年実家で引っ張り出してこの音が鳴った時は感動的だった。なお、ディップスイッチもしくは本体正面スイッチがDOSモードになっているとF-BASICが起動しないから、必ずBASICモードにしてこれを試すようにする。

このFM-7、起動したり起動しなかったりするが、どうやらCPUは健全だ。FM-7再生で、何より困ったのはどうやって絵を出すかってことだった。FM-7のモニター出力はデジタルRGB。そんなケーブルもう売ってない。グリーンCRT用出力からRCAビデオ出力を出すケーブルの作り方がApolloさんのページに出ていたが、できればカラーを出したい。なんとかならんもんか、と、思ったら、あった!クラシックPC研究会!ここで売ってる!

FM-7のデジタルRGBアウトをVGAにつなぐケーブル

しかも海外発送してくれる。ここからケーブルを買ってみることにした。しかし、FM-7の200ラインの出力周波数は15KHz。最近のLCDモニタでは表示できないかもしれない。電波新聞社のX-RGBシリーズを使えばなんとかなりそうだが、高い。さすがに日本からの輸送に既に6万円突っ込んだのにさらに3万円突っ込むのはきつい。が、金に糸目つけてる場合か!セスナ借りて2時間飛ぶのを一回控えたと思えばいいじゃないか!と、思い詰めてX-RGB3買う寸前まで行ったのだが、Amazonに安いやつを発見。

$89の15KHzからアップスキャンコンバータ

とりあえず試すことにした。そして、ケーブルとスキャンコンバータが届いて接続。大成功!なお、このスキャンコンバータ、15kHz専用のようで24KHzはダメで、それ以上の周波数もスルーで出してくれないから、FM-TOWNSで15KHzモードを出す専用には使えるけど、Towns-OSと行き来するたびにケーブルのつなぎ換えが必要だけど、まあ、でも、アフターバーナーとかLCDモニタに出したいときは使える。


奥の白い箱がスキャンコンバータ。

次の問題は、どうやってプログラム読み書きするか。毎回タイプしていたのではせいぜい10行か20行のプログラムが限界。ちょっとショボいデモしかできない。そこで、Apolloさんのページのデータレコーダケーブルを自作。このケーブルの制作は、たいして上手でもないはんだごてを駆使して自力でやった。ThinkPadの音声入出力では失敗したが、Dellのデスクトップ機と2008 MacBook Proをデータレコーダにしてファイルのロードとセーブに成功!後に、6809用コード書くのが止まらなくなってデモを書いてしまったときは2008 MacBook Pro経由で実機FM-7に読み込ませて実行することができた。

データレコーダケーブルピン配列

今更FM-7用のコードが書けるというのはシュールだったが、レトロプログラミングってめっちゃ楽しい。小学5年生当時では数学もプログラミングテクニックも知らないことが多すぎた。今は、当時と比べて圧倒的な知識量。しかもWindows上で書けるから80x25のモニタで書いてた頃よりコードがめちゃくちゃ見やすい。しかもバージョンコントロールシステムがあるし、(僕は旧態依然な人だからまだSubVersion使ってる。GitHubも便利なのかもしらんけど、なんでもひとつに集中するのって嫌なんだよ。)、Windows上でアセンブルするとビルドが超速い。強くてニューゲームしたら最初の方のボスを一撃で倒せちゃうあの感覚。

これは、オッサンの道楽だな。

 

FM-7のクリーンアップとコンデンサ交換

このFM-7、VRAMがおかしい。CRTCから見ると、Blue Plane ($0000-$3FFF)のすべてのバイトのビット7が立っているように見えるらしい。また、サブCPUから見ると、同じビットが立っていたり立っていなかったりするらしい。Apolloさんに助言をいただいて、関連していると思われるVRAMのチップまで特定した。なんでも、FM-7のVRAMのビット7は部品番号M158のMB8116Hというチップが記憶しているらしい。チップさえ見つかれば、交換ぐらいできるよ、と、コンピュータクラブのハンダの達人の頼もしい言葉なのだが、チップが見当たらない。eBayとかで売っているのだが、どうも粗悪品がよく出てくるようで、ひどいものだと別のチップのラベルを書き換えて売っていたりするそうで、やめた方がいいとのことだった。目視ではとくにその周辺でハンダのひび割れとかは見当たらなかったし、コンピュータクラブのハンダの達人が試しにハンダを溶かして付け直すというのをやってくれたが改善しなかった。

だが、このFM-7上にも書いたとおり、I/O 1986年1月号掲載の画面にノイズが載るかわりに高速化する改造が加わっている。ただし、既に高速モードではサブCPUが止まってしまい、通常モードでしか動作しなくなっていた。この改造がノイズの原因である可能性を排除したかったので、まずはこの改造をもとに戻すことにした。奇跡的にその記事を発見することができたので、戻し方はわかった。

この改造では、カスタムチップMB60H010というLSIの足を二本外側に曲げて信号をバイパスしている。完全に元に戻すには、バイパス用のワイヤーを全部はずして、ピンを曲げ戻してソケットに入れればいいが、僕のハンダごての腕では、線をはずしたときうっかりハンダ玉を基盤上に投下してしまう自信があった。とりあえず、戻るかどうかの確認のために、ワイヤーを全部切断。そして、バイパスに使っていたワイヤー同士を直結して、回路のトポロジーをもとに戻してみた。


クリックで拡大。きれいになった。

これで青い線が消えてくれれば。もとに戻すどころか完全に破壊してしまっている可能性もあったので、ちょっと不安になりながら、祈るような思いで電源投入。無事に起動。画面も出る。が、青い線は消えなかった。あいかわらずこのFM-7はVRAMのBlue Planeのすべてのバイトのビット7が立っていると思っている。

ただ、これによってワイヤーを全部除去して曲げたピンをソケットに入れれば元通りになるらしいことはわかった。そして、それはハンダの達人によってあっさり実行されてしまった。もちょっと僕もハンダ付けがうまくなりたい、と思った。

ここまでが先週。この後、VRAMチップ交換を試みるのだが、悲劇が待っていた。

Comments are welcome.  Send E-Mail to: 

Back to http://www.ysflight.com