JavaScriptを有効にすると、ここにメニューを表示します。
FM-7 / FM-77AV40 / FM-TOWNS 再生プロジェクト

ysflight.com

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