Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ、自作ソフトの配布など。

しくじり先生:ファームウェア更新に失敗したCarnivore2の復旧と更新を目指すブログ(完結編)

2021年1月20日更新

https://p.gigamix.jp/carnivore2/cg/20201023164750.jpg

 およそ一ヶ月前の2020.9.23頃、自分の無知・無能が原因でCarnivore2のファームウェアを壊し、ブートメニューすら起動しなくなりました。既にあとに引けない状況なため、PCからCarnivore2のFPGAファームウェアを書き込む正式な方法で復旧することを目指します。

 これまでの人生経験の中で電子工作という作業を殆どして来なかった自分がどこまでできるのかを、恥を晒しながら記録に残します。

 そして2020.10.23、Carnivore2のファームウェア並びに各種BIOSが復旧し、再び利用できるようになりました。

事前準備

Carnivore2ユーザーガイドを正しく知る

 マニュアルは正しく読みましょう。

sysadminmosaic.ru

 そもそもの失敗は、ブートメニュー=ファームウェアだと勘違いをしていました。マニュアルの「How to upload the firmware」の項を読み飛ばした(「How to enable the cartridge and install BIOS ROMs」を先に読んでしまった)ために、ブートメニューの更新はPCを利用せずMSXの実機でも可能と勘違いし、その後の事の重大さに気付きませんでした。

本体更新について正しく知る

 もうひとつの失敗は、ファームウェアはブートメニューや各種BIOS等も内包するものだと勘違いをしていました。実際は「FPGA」と「FlashROM」の分離構造になっていて、Carnivore2における「本体を書き換える」シーンが2種類存在していました。書き換えの影響範囲が違いますので、何を更新したい場合は何をすべきなのかは正しく知っておきましょう。

FPGA

 ファームウェアについては、FPGAを書き換えます。FPGAは1MB増設RAM、内部スロット拡張、SCC互換音源、MSX-MUSIC互換音源等の物理ハードウェア部分が含まれています。一方、ブートメニュー、IDE BIOS、FMPAC BIOSファームウェアに含まれていません

 FPGAの書き換えに必要なハードウェアは…

  • Windows PC
  • 「USB Blaster」と呼ばれるFPGA書き換え用USBデバイス
  • 「ASコネクタ」と呼ばれる、基板とUSB Blasterを接続するためのコネクタ
  • カートリッジ基板への電源供給用USBケーブル
  • OSはWindows 10(「USB Blaster」の中華製ジェネリック品を利用する場合はWindows 7が便利らしいが玄人向きなので割愛)

 FPGAの書き換えに必要なソフトウェアは…

  • 「Quartus」と呼ばれるFPGA開発ツール
  • 場合によってはQuartusに含まれているUSB Blaster用デバイスドライバの手動インストールが必要

 FPGAの書き換え用バイナリーデータは、メーカー・RBSCの公式GitHubからダウンロードできます(Firmwareディレクトリ、拡張子は .pof)。

github.com

FlashROM

 ブートメニュー、IDE BIOS、FMPAC BIOSの3点については、FlashROMを書き換えます。

 FlashROMの書き換えに必要なハードウェアは…

  • MSXの実機。turboR規格の場合、Z80モードに切り替えての運用をメーカーは推奨しているようです。
  • OSはMSX-DOS2またはNextor

 FlashROMの書き換えに必要なソフトウェアは、C2MAN、C2BACKUP等です。RBSCのGitHubからダウンロードできます(Utilディレクトリ、拡張子は .COM)。

 それぞれのFlashROMの書き換え用バイナリーデータは、RBSCのGitHubから3ファイルをダウンロードできます(BIOSesとBootMenuディレクトリ、拡張子は .BIN)。これらはバイナリーデータの先頭2バイトが「AB」となっていて「起動できるROMイメージ」の体になっています。それぞれのBIOSは個別に書き換えできます。3つまとめて更新する必要はありません。

 なお、これらのデータはファームウェアに含まれませんファームウェアを最新版に書き換えたからと言ってブートメニューが最新になるわけではありません。私はここを勘違いしていました。

物理的に必要なもの

 マニュアルを読むと、以下のパーツが必要な様子。

  • 「USB Blaster Programmer」と呼ばれるFPGAを書き換えるためのケーブルセット
  • カートリッジへ5Vを供給するための簡単なUSBケーブル
  • ASカートリッジのコネクターに挿入するための2列のピンヘッダー

カートリッジへ5Vを供給するための簡単なUSBケーブル

https://sysadminmosaic.ru/_media/msx/carnivore2/usb_blaster_5v_01.png?w=350&tok=0f303a

 ケーブルの目的は理解できるものの、ケーブルの呼称がさっぱり分からない。検索キーワードが思いつかない。「電源供給」「USB」「FPGA」などの語句でネット検索してみても該当するケーブルが見つけられない状態。

 そもそも売り物なのか、自作する必要があるのか。構造は簡単かもしれんけど、電子工作経験がほぼ無い人間がこれを用意することができるのか…!?と考えていたら、識者の皆さんから商品を教えていただきました。

給電用USBケーブル(市販品)

電源のケーブルは私はこれを使いました。https://t.co/QwplUuZpx9 ASのコネクタはたまたまあった(GR8NETに同梱されていた…?)のでそれが使えて助かりました。 — kansaizine (@kansaizine) 2020年9月29日
 既製品・マザーボード接続用のUSBケーブルを転用する方法。不要なものを取り除けば完成。

www.sanwa.co.jp  「USBケーブル USB Aコネクタメス-バラ4P メス」これを分解して作れそう。端子が分離されている状態を「バラ」と呼ぶのか。オスのケーブルも一見良さそうに見えるのだがバラ側がピンになっているので、メスのケーブルのほうが加工が楽そう。

 上のケーブルに1個250円くらいの「USB オス-オス変換アダプタ」を付ければ給電できるはず。

Carnivore2のファームウェア復旧キット第1弾が着荷しました。 pic.twitter.com/zVj6VteRgW — Takashi Kobayashi (@nf_ban) 2020年10月2日
 これは超手軽。工作不要!

Carnivore2の出荷時期によって違うかもしれませんが、私のは基盤側にピンがついてなかったので、ピンをハンダ付けしてこのケーブルをそのまま使いました。 — kansaizine (@kansaizine) 2020年9月29日
 これは重要な指摘。Carnivore2は販売元が複数あり、それぞれの販路で基板構成が違います。ものによっては電源ピンが出ていない基板があるそうです。基板のロット違いも存在しているかもしれません。自分のカートリッジの場合はどうなのか、を知る必要があります。

信頼できるUSB Blaster

 まずはAmazonで購入。IchigoJamの福野さんのサイトでこれが紹介されていました。FPGA更新用のASコネクタケーブルと給電用のminiUSBケーブルが付属されていました。

ところがUSB Blasterが認識しないトラブルが発生。

互換品だといろいろめんどくさそうです…https://t.co/yVq5sSSpbv — Narita Kuniaki (@narikuni) 2020年10月11日

うちの環境だと、Quartusをインストールしてから接続すると、自動的にドライバがインストールされたような気がします…。ちなみにQuartus Prime 18.1です。ただ、この手の中華USB Blaster互換機は、中身がけっこうまちまちで、まともに動かないやつがあるとも聞きますね…。 — きょろ㌠ (@tme205) 2020年10月7日
 今回調達した中華製のUSB Blasterがいわゆる「ジェネリック品」であることがFPGA書き込み不能の原因である可能性が強まる。しかもモノは複数入り乱れているらしい。

2個目のUSB Blasterが届きました。左が1個目、右が2個目。寸法は同じだけどラベルが微妙に違う! pic.twitter.com/XwPOLCierE — Takashi Kobayashi (@nf_ban) 2020年10月12日
 別の業者から2個目のUSB Blasterを調達。2個目には「ALTERA」の文字が入っていたりして、ラベルの表記が微妙に違っている。

信頼できるminiUSBケーブル(あれば便利)

 USB Blasterの購入時に給電用のminiUSBケーブルが付属されていましたが、FPGAに書き込めない原因の一つ(USB Blasterへ正しく給電しない可能性)を未然に防ぐために、信頼できるケーブルがあれば安心です。

ありゃま残念です。いちおう USB デバイスとしては認識されてるようなので、手持ちの他の USB ケーブルで試してダメなら初期不良っぽいですね。 — Narita Kuniaki (@narikuni) 2020年10月11日

だめなときはUSBケーブルが問題だった場合ぐらいで… — applesorce (@applesorce) 2020年10月11日

mini USBケーブルを買いました。 pic.twitter.com/YF11cr5HNl — Takashi Kobayashi (@nf_ban) 2020年10月12日
 USB Blasterに付属するmini USBケーブルが不良である可能性を除去するため、念のため新品のケーブルを調達。

FPGA書き込みアプリ「Quartus」

 Windows PCからUSB Blasterを通してFPGAを書き換えるためのアプリです。

インテルFPGAのアカウントを作り、PCにQuartus IIをインストールした。Quartus IIの最新バージョンは20.3なのだがCarnivore2のユーザーガイドでは15.0で解説されていたから俺もとりあえずユーザーガイドに倣って15.0を採用した。Carnivore2のファームウェア復旧まであと少し、だと思いたい… pic.twitter.com/XMmIk5qP05 — Takashi Kobayashi (@nf_ban) 2020年10月7日
 Quartusのダウンロードは無料で可能ですが、Intel FPGAプログラムへのアカウント登録(無料)が必要。けっこう個人情報を入力させられる…

んー。Quartus II ProgrammerツールにてCurrently selected hardwareが「No Hardware」になってしまうなー。USB Blasterが選択肢に出てこないのが気になる。繋ぎ方が悪くてPCからFPGAが見えていないのか?ASコネクタをもっと斜めに倒さないと接点が付かないのか?何かインストールが足りていないのか? pic.twitter.com/4SHkYYyWLw — Takashi Kobayashi (@nf_ban) 2020年10月7日
 が、USB Blaster(1個目)が認識しないトラブル発生。

あっ、USB Blasterのドライバが動いてない!ドライバは自動インストールではないのか。そういやCarnivore2のユーザーガイドにはドライバに関する記述は無かったな。ドライバ入れないと… pic.twitter.com/egemQNUm9I — Takashi Kobayashi (@nf_ban) 2020年10月7日
 USB Blasterのドライバがインストールされていないことを確認。Quartusと同時にドライバがインストールされるかと思ったら実際はドライバはインストールされない様子。手動でのドライバインストールが必要。ここもハマりポイントでした。

https://t.co/50ah9UB5sf を読むとQuartus IIのインストールディレクトリのどこかにドライバがありそうな感じではあるのだが当方で使用するバージョンは15.0で古いんだよな…んー、どこだろう? — Takashi Kobayashi (@nf_ban) 2020年10月7日
 QuartusのインストールフォルダにUSB Blasterのドライバが付属されているが…

Quartus IIの中からそれっぽいドライバが見つかった!と思ったらインストールできなかった件。んんー pic.twitter.com/Y0gEO7VJ58 — Takashi Kobayashi (@nf_ban) 2020年10月7日
 しかしドライバはインストールできなかった。原因は不明。

 中華のUSB Blaster用署名なしドライバというものがインターネット上に存在する(インストール方法も特殊な)のですが、このドライバをインストールしてもQuartus II 15.0、Quartus Prime 20.1 LiteのどちらでもUSB Blasterを認識しませんでした。頭がこんがらがったのでUSB Blasterのドライバをいったん削除してみることに。

Quartus II 15.0 Web editionと付属ドライバをインストール(署名はアルテラになってる)して、1個目のUSB Blasterを付けてQuartusを起動したらご覧の有様… pic.twitter.com/VS5sfEwudZ — Takashi Kobayashi (@nf_ban) 2020年10月12日
 その後Quartus II 15.0 Web editionに付属するUSB Blasterのドライバがインストールできたものの、USB Blasterを付けてQuartusを起動したらブルースクリーンでフリーズするトラブル発生。何度試しても同じ症状。ドライバと本体が合っていないのでは…?ハードウェア側のトラブルの疑いを持つ。

まずはバージョン周り…。 pic.twitter.com/TKHnYcIMmV — kansaizine (@kansaizine) 2020年10月11日
書き込み直前の状態までは正常にいけました。 pic.twitter.com/0W5xTLZle0 — kansaizine (@kansaizine) 2020年10月11日
USB Blaster のドライババージョンは、Altera 15.0.0.145 Web Editionに付属のものみたいです。多分私の時は、ドライバを入れる前にUSB Blasterを挿したらうまくいかなくて、最終的にドライバを消して付属のものを入れたんだったかな…。あと何かハマった気がするんだけど…。 — kansaizine (@kansaizine) 2020年10月11日
 kansaizineさんの事例に合わせることを目指すことに。Quartusのバージョンは15.0(Quartus II Web Edition)、USB BlasterのバージョンはAltera 15.0.0.145(Web Editionに付属のもの)。

2個目のUSB BlasterならブルースクリーンにならずQuartusで認識してるっぽい!これ、もしかしていけるんとちゃうか!? pic.twitter.com/UhGBTC3sZ2 — Takashi Kobayashi (@nf_ban) 2020年10月12日
 2個目のUSB Blasterは、Quartusで認識できました。USB BlasterのドライバはQuartus II 15.0 Web editionに付属したものを継続使用。

ファームウェアの流し込み

 QuartusでUSB Blasterを正しく認識できたなら、FPGAを書き換えましょう。FPGA流し込み用のファームウェアは、Carnivore2のGithub→Firewareにあります。拡張子は *.pof です。

ファームウェアデータ(拡張子.pof)の流し込み指定は、右クリック→Edit→Change Fileでいいのかな? pic.twitter.com/jnopRiGpn3 — Takashi Kobayashi (@nf_ban) 2020年10月12日
3つのオプションにチェック付けるのを忘れずに。この状態でASコネクタを固定しながらStartボタンを押せば、FPGAに書き込めるんじゃないかな…? pic.twitter.com/aaMDhcd26o — Takashi Kobayashi (@nf_ban) 2020年10月12日
 ファームウェアデータの流し込み設定。

あと、ASコネクタはまさにこうやりました。ホールに対してピンが細いので、指で押して斜めにしてやらないと導通しないという。やってみて初めてこの写真の意味が分かりました。 pic.twitter.com/2pyCZVm1Rz — kansaizine (@kansaizine) 2020年10月1日

 Carnivore2のユーザーガイドでASコネクタを斜めにする写真が上がっていた理由を、ここで理解する。半田付けしないでピンへの接点を確実に行うために、コネクタを斜めに固定することが必要だったのです。

ASコネクタの設置はこう。ピンクの線が正面から左側を向くように。また、ピンの接点が増えるようにだいぶ傾けている。コネクタが動かないよう念のためコネクタをセロハンテープで固定している。Takashi Kobayashi (@nf_ban) 2020年10月21日

おっ、Progressが100%までいったぞ。書き込み成功したんじゃない? pic.twitter.com/3XTYKzldMq — Takashi Kobayashi (@nf_ban) 2020年10月12日
 FPGAへの流し込みが完了した?のか!?

あかーん!Carnivore2の初期画面すら出ない。FDDを読みに行ってしまう。ファームウェア書き込みに失敗したのか、まだ何か足りないのか、BIOSROMも書き込まないとダメなのか…?🤔 pic.twitter.com/kKFQmipwCP — Takashi Kobayashi (@nf_ban) 2020年10月12日
 しかしMSXの実機ではCarnivore2がまったく認識しないまま。本当に書き込みできたのか!?ファームウェアだけではダメなのか。他にも何か作業が必要なのか?→その後、認識しない原因はFlashROMの流し込みミスであったことが判明しました。

FPGA書き込み成功・失敗の判断材料

EPCS4はFPGAの左上の8本足ICのコンフィグレーションROMですね。EPCS4で良いとは思うのですが。 — KK6 (@6am6oo) 2020年10月12日
 Quartusで指定するFPGAの種類は「EPCS4」です。

何かでやむを得ずやった覚えがあるんですが、経験上スルーホールにピンを押し当てるやり方は非常に不安定です。書き込み中はずっと接点に確実に触れるように軽く手で押し当てておくか、はんだ付けしてしまう(外すのは手間ですが確実)のがいいと思います。それでもダメだと、どれかが壊れてるかと…。 — sdhizumi / S.Kudo (@sdhizumi) 2020年10月21日

 今回はFPGAの書き込みに成功しましたが、本来はASコネクタのピンの接点を固定して(場合によってはハンダ付けもしながら)確実に通電させることが正しい接続方法です(後述)。

 RBSCサポートからの情報によると、FPGAの書き込みに成功した・失敗したの判断は、本体メモリが1MB増設されたか否かが一つの判断材料だそうです。起動時にメモリが1MB増設されている場合は「FPGA自体は正常動作している=書き込みに成功している」ことが確定しています。本体が起動しない・増設されない場合はFPGAの書き込み手順に問題があります。

VERIFYが通っているのでFPGA自体は正常という前提で、書き換え以外の要因を探ってみるとすれば、(あてずっぽうで的外れも多いかもしれませんが)・違うファームウェア・違うスロット・違う本体・カートリッジ掃除・CFカードを外すを試すとかでしょうか…… — うにスキー (@uniskie) 2020年10月21日
あと、FPGAのファーム(U4:EPCS4)は書き込み失敗ならさすがにベリファイでエラー起こりそうなので書けているのではないかなと想像してます。再起動が必要なのが解せませんが、マッパを認識している=FPGA内でスロット拡張が動作している、ということかと思いますので。 — ゆたぽん (@piyota99) 2020年10月22日
 Quartusの処理にてVERIFYに成功している=FPGAの書き込みには成功している、と判断して概ね良いかと思います。Carnivore2の動作不良について、FPGAの書き込みには成功していてもFlashROMの書き込みが正しいかは全く別の問題です。

ファームウェア更新の手順(タイムライン)

子供の寝かし付けに成功したので、Carnivore2のファームウェア書き換え工程をもう一度見直して再チャレンジしようと思います。 pic.twitter.com/ApMERwPVxG — Takashi Kobayashi (@nf_ban) 2020年10月21日

 RBSCサポートに診ていただきましたが、私が作業した上記twitterスレッドのタイムラインは正しい手順、と判断していただきました。

FlashROMの流し込み

 ファームウェアとFlashROMは別物ですので、ファームウェアを書き換えて動作しない場合は、FlashROMに記録されている各BIOS(3種類)も書き換える必要があります。これはMSXの実機が必要です。メンテナンスツール「C2MAN」を用います。FlashROM流し込み用のBIOSは、Carnivore2のGithub→BIOSesにあります。拡張子は *.BIN です。

 FlashROMを流し込んではみたものの、当初は正常に動作しませんでした。

誤動作1:FlashROMのダウンロードミス→異常なBIOSが流し込まれていた

C2MANでそのエラーが出るの、Boot MenuのROMがおかしいからじゃないでしょうか?ソース見ると対象スロットの4010hに’CMFCCFRC’という文字列(BOOTCMFC.BINの10hにあるやつ)があるかチェックしているようです。 — ゆたぽん (@piyota99) 2020年10月22日
あ!原因が分かったかも?ダンプデータをバイナリで見ると4000h辺りからHTMLのようなテキストが読めるの絶対おかしい。念のためBoot MenuやIDE BIOS等のBINデータを再ダウンロードしたら容量が全然違う。容量の小さいほうが正しいデータではないだろうか。もう一度FlashROMに書き込んでみよう… pic.twitter.com/ujMeUKd2SI — Takashi Kobayashi (@nf_ban) 2020年10月22日
Carnivore2がなぜ起動しなくなったかを振り返ると、おそらく、ファームウェアを更新しようとして公式サイトから3つのBINデータをダウンロードしたものの、何らかの理由で壊れていたBINデータをFlashROMに書き込んだため、と思われる。ちなみに昨日の復旧までの手順に間違いは無かった(メーカー判断)。 — Takashi Kobayashi (@nf_ban) 2020年10月22日
 前述の先頭2バイト「AB」に繋がる話ですが、簡潔に書くと私のBIOSデータのダウンロード方法にミスがあり、ダウンロードに失敗した各BIOSのBINファイルをCarnivore2のFlashROMへ書き込んだことが原因で私のCarnivore2が起動しなくなったことが判明しました。

お恥ずかしいことですがダウンロードデータの化けは再現性があって、GitHubってファイル名のリンクを右クリックのコンテンツ保存すると実データではなく次に遷移するWebページのHTMLをそのファイル名で保存される仕様に気付きませんでした…Downloadボタンを押さないと実データが入手できない、と。 pic.twitter.com/5BM8Q0vuUu — Takashi Kobayashi (@nf_ban) 2020年10月23日
 GitHubからバイナリーデータを取得したつもりが実際は正しく取得しておらず、しかもダウンロードしたファイルのファイルネームはBINファイルそのものに見えるため、BIOSの内訳をダンプで確認するまでダウンロードミスに気付けませんでした。ここが、私的には一番大きなハマりポイントでした

誤動作2:IDE BIOSの相性問題でCFカードが利用不能→Nextor起動不能

FlashROMの書き換え完了して電源再投入。来たよ!!!久方ぶりのCarnivore2ブートメニュー。Firmware v2.40、BootMenu v2.40。FPGAちゃんと書き込めてた! pic.twitter.com/iigqtbhL0R — Takashi Kobayashi (@nf_ban) 2020年10月22日
と思ったらNextorが起動しねぇ!なんで!?😰 Sunrise IDE Driverのバージョンが変わったことが原因なのか。 pic.twitter.com/UP3f6FXMF0 — Takashi Kobayashi (@nf_ban) 2020年10月22日
 各種BIOSもv2.40提供のものに書き換えたら、ブートメニューやFMPAC BIOSは正常動作しているものの、Nextorの起動に不具合が生じるようになってしまいました。

 RBSCサポートからの情報によると、IDE BIOS(BIDECMFC.BIN)はデバイスドライバ「Sunrise IDE Driver v0.1.5」が含まれていますが、このBIOSは一部のCFカード・SDカードとの相性問題があるそうで、Nextorの起動に問題が出る場合はIDE BIOSを「Alternate版と呼ばれるバイナリーデータ(BIDECMFC.ALT)」に差し替えてください(ファイルネームを「BIDECMFC.BIN」にリネームしてC2MANからインストールしてください)、とのことです。ここもハマりポイントです。

 Alternate版はデバイスドライバ「Sunrise compatible IDE Driver v0.1.7」が含まれています。私の環境下ではv0.1.5ではNextorの起動に不具合が生じましたので、v0.1.7で利用しています。

Firmware v2.40、BootMenu v2.30のCarnivore2。Sunrise IDE driverのバージョンがやっぱり上がってる。そのおかげなのか分からないけどNextorが正常に起動、CFカードが読めるようになった!なんだか解せないけどとりあえず復旧と見なす。ヨシ!! pic.twitter.com/TRx5zM9eGD — Takashi Kobayashi (@nf_ban) 2020年10月22日
 IDE BIOSをv2.30提供のAlternate版(v0.1.7)でFlashROMを書き換えたら、Nextorが正常に起動しました!

 その後、v2.40のAlternate版(v0.1.7)で更新しても、Nextorが正常に起動しました。めでたく復旧!!

補足:FMPAC BIOSのライセンスについて

 Carnivore2の公式が配布するFMPACのBIOS松下電器産業(現:パナソニック)製の製品から無許可でBIOSを抜き出して英訳したものであり、著作権を侵害しています

https://t.co/YM1JPafyRv 「The RBCS was not involved in creation of these BIOS ROM files.」とか書いてありますね。232, Max Iwamoto and GDX が英訳したと書いてあるので、日本語版のROMに英訳パッチを当てたもののようですね・・。 — HRA! (@thara1129) 2020年11月11日
The copyright of the FMPAC ROM is owned by Panasonic, and Carnivore2 contains an illegal copy. — ごりぽん (@goripon_tw) 2020年11月14日

ライセンスが気になる&1chipMSXの実物をお持ちの方への回避策

FMPAC は、32KB の ROM なんでしょうかね?後半 16KB の方に CALL FMPAC で表示されるメッセージの類いが入ってるように見えます。前半半分は、OCM の FM-BIOS とかなり一致していますね。ARPLOPLL を PACHOPLL とかに換えて書き込んでみましょうかね。後半16KBは全部ダミーに置き換える。 — HRA! (@thara1129) 2020年11月11日

 HRA!さんの「Carnivore2内蔵 FMPAC用 BIOS生成ツール」を用いることで、実物からのBIOSデータを作成することができます。→http://hraroom.s602.xrea.com/msx/

できた!(*´▽`*) pic.twitter.com/vvHqBeXM3E — HRA! (@thara1129) 2020年11月12日

ライセンスが気になる&FMPACの実物をお持ちの方への回避策

すみません。適当な記憶でMGSAVEと言ってしまいました。FMPACのバンク選択レジスタは7FF7h。SUPER-Xの他、汎用のツールなどが使えます。https://t.co/nYzYEda2UD SAVEROM FMPAC.ROM⏎ Select Type: Custom Switch Address: 7FF7 Save Address: 4000 Block Size: 4000 First Block: 0 Last Block: 3 — うにスキー (@uniskie) 2020年11月16日

 Sean Youngさんの「SAVEROM.COM」を用いることで、実物からのBIOSデータを作成することができます。→http://bifi.msxnet.org/msxnet/utils/saverom

SAVEROMで吸い出したFMPACのROMイメージでCarnivore2へインストラクターできました!FMPACを差さない状態でスロット1-3で認識していますし、CALL FMPACで日本語メニューが出ているのでインストールに成功しているんじゃないかと思います。情報ありがとうございます。 pic.twitter.com/dsTwOXreGf — Takashi Kobayashi (@nf_ban) 2020年11月16日

 なお、作成した代替データは「FMPCCMFC.BIN」というファイルネームに変更してからC2MANよりインストールします。

補足:IDE BIOS(Sunrise IDE 互換カーネル)について

 IDE BIOSについてはCarnivore2のGithub→BIOSesで入手できるデータよりもNextor開発者のkonamimanさんが提供するデータのほうが最新版(安定版)である可能性があります。

https://t.co/C9S62XsrGm Sunrise IDE版をダウンロードしてきて、BIDECMFC.BIN に改名。これをCFカードに書き込んで、C2MAN起動。サービスメニュー9 から 5-Write IDE ROM BIOS (bidecmfc.bin) を選択すると更新されます。 pic.twitter.com/LZNX7O7AdK — HRA! (@thara1129) 2021年1月18日

 2021年1月19日現在、Carnivore2の「BIDECMFC.ALT」はNextor kernel version 2.1.0 beta 2、Konamimanさんの「Nextor-2.1.0.SunriseIDE.ROM」はNextor kernel version 2.1.0(安定版)でした。

 なお、どちらのBIOSも「BIDECMFC.BIN」というファイルネームに変更してからC2MANよりインストールします。

検討した結果とりやめた作業

給電用USBケーブルの工作

電源供給用のこの基板を作るには・USBオス to DIP https://t.co/fYxdz15IWG ・ジャンパワイヤ2本(メス-メス) https://t.co/yRORnOgWGE があれば作れると思います。お持ちでなければピンヘッダも。ストレート https://t.co/yhxytfAWHc L字 https://t.co/nYHZ4P1gOa — sdhizumi / S.Kudo (@sdhizumi) 2020年9月29日
 ケーブルを構成するパーツの最小構成を集めて自作する方法。いわゆる電子工作。のちに市販のUSBケーブルで代用できることが分かり、工作する必要がなくなりました。

www.aitendo.com  この端子部分は「USBコネクタwith基板」という名称でした。

www.aitendo.com  このケーブルは「ジャンパワイヤ」という名称でした。

USBコネクタ側は基板の穴にはめるだけなのね。簡単だ!逆側はピンを出さないといけないから、ピンヘッダを2個切り離してはんだ付けか。必要なピンの長さはちょっとよく分からないから、まぁ長めに付けてあとで調整するか… pic.twitter.com/FVFwpboVRy — Takashi Kobayashi (@nf_ban) 2020年10月5日
 こんな感じになるらしい。USBコネクタ側ははめ込むだけでOKだが、ピン側はハンダ付けが必要。ピンの長さをどの程度出すべきなのかはよく分からないので、長めに付けてから切ることを考える。

ASカートリッジのコネクターに挿入するための2列のピンヘッダーの工作

https://sysadminmosaic.ru/_media/msx/carnivore2/usb_blaster_as_02.png?cache=&w=900&h=484&tok=67e771

 PLD 2×5、2.54 mm。プログラマケーブルのコネクタをこの形に変形しないとケーブル接続できない。

www.aitendo.com  必要なぶんだけ折って切り離せるらしい。便利!

注意点としては、USBコネクタのGNDは外装全体も含むので、外装の耳とGNDピンをはんだ付けができる温度に上げるためには結構温度が必要です。コテ側の出力もそれなりに大きい or 大きくできるものがあると楽です。 — sdhizumi / S.Kudo (@sdhizumi) 2020年9月29日

おっと!こういうのは使わなくても4ピン付けてしまった方が取り付け作業も転用時も楽です。ピンの長さは短い側をはんだ付けすればジャストな感じになると思います。 https://t.co/YuCiG44Wmw — sdhizumi / S.Kudo (@sdhizumi) 2020年10月7日
 私は勘違いをしていました。ピンヘッダーは「L字」という商品があったのを忘れて「ストレート」を買ってしまいました。ストレートだと折らないといけないので半田付けが面倒臭い。

ボックスヘッダの工作

 本来はボックスヘッダを基板に固定したうえでASコネクタを接続させるべきなのですが、ボックスヘッダを基板に固定してしまうとカートリッジケースに収まらなくなることが判明し、ASコネクタを斜めに当てて手を抑えながらFPGAを更新することにしました。

それでもってASコネクターに繋ぐためのピンは、基板側のデザインを見るに、これの10ピン(2x5)を想定しているようですね。もちろん普通の2.54mmピッチのヘッダピンでも大丈夫です。(ケースとどのくらい干渉するかは未確認)ケーブルはライターに付属するようですね。https://t.co/pLcMyXFLMC — sdhizumi / S.Kudo (@sdhizumi) 2020年9月29日

www.aitendo.com  この部品は「ボックスヘッダ」という名称らしい。aitendoの商品の場合サムネイル写真はピン数が多く見えるものの、6ピンから40ピンまで種類が豊富にある。今回の場合は「10ピン」が該当。

ASコネクタはピンを10本はんだ付けするだけなので、手間や難度自体は温度が必要なUSBコネクタよりは簡単かな、と思います。繰り返しですが、ASコネクタにピンヘッダを付けた際にどれくらいカートリッジシェルと干渉するのかは分からないので、作業後に取り外しになるかもしれません…。 — sdhizumi / S.Kudo (@sdhizumi) 2020年9月29日

USB Blasterケーブルのほうはボックスヘッダがこんな感じで付くのかな。10ピンはそのまま差さるけど少しぐらつくから、はんだ付けしたほうがいいんだろうね。とは言え裏側にピンが1.5mmくらいしか出ないからはんだ付けしないでテープで固定するだけじゃダメだろうか(横着者 pic.twitter.com/0QjLJXgG6r — Takashi Kobayashi (@nf_ban) 2020年10月5日

USB Blasterケーブルの続き。Carnivore2のユーザーガイドで紹介されている取り付け写真と、俺の所有するケーブルが上下逆になっているらしく、写真を見てもその通りにならなくて違和感があった。基板の正面から見てケーブルの左側にピンクの線が入っている状態が正しい配線なのだと理解している。 pic.twitter.com/F4sfylDgA2 — Takashi Kobayashi (@nf_ban) 2020年10月6日
 こんな感じでつなげるらしい。10ピンの部分はそのまま差さるけど、裏側は1.5mm程度しかピンが出ないので、できればハンダ付けをやらないで済ませたい…

コンタクトピン(あれば便利)

 コンタクトピンと呼ばれる部品で半田付けなしに手軽に固定できるらしいことを教えていただきました。

これはコンタクトピン(バネで引っかかる)で繋ぐといいのかも — applesorce (@applesorce) 2020年10月1日

逆作用バネみたいになってて半田付けするまでもない時に使う感じっすな。 — applesorce (@applesorce) 2020年10月1日

秋月で売ってるこんなやつでどうでしょうか。 https://t.co/iJ5Y3sNXX3 — おまんじゅう・エポキシ(epoxy) (@drepoxy) 2020年10月1日

失敗までの顛末

 ファームウェア2.30のCarnivore2を所有していますが、デュアルスロット設定の新機能が備わっている最新版の2.40の情報を知り、自分のCarnivore2も2.40へ更新したくなりました。開発元・RBSCのGithubにはBIOSやブートメニュー等のリポジトリが登録されていました。

 前述の通りブートメニュー=ファームウェアだと勘違いをしていたため、必要な3つのBINファイル(BOOTCMFC.BIN、BIDECMFC.BIN、FMPCCMFC.BIN)をCarnivore2のメンテナンスツール「C2MAN」で更新すればファームウェアが更新される?と考え、ユーザーズマニュアルの「How to enable the cartridge and install BIOS ROMs」の手順でFlashROMの書き換えを実行したわけです。

 一度はブートメニューが2.40に更新されたCarnivore2が起動していましたが、Nextorが起動しないような不安定さでした。

またヘルペス発症である。最近身体の具合が悪いことばかりだ。今日はゆっくりのんびり休むことにした。悪いことは重なる。Carnivore2のファームウェアを実機でアップデートしたらブートメニューは変わったけどNextorが起動しなくなった。つらい。とりあえず今は寝る… pic.twitter.com/uBzVzKzDAP — Takashi Kobayashi (@nf_ban) 2020年9月29日

 工場出荷時のFlashROMの内容はCarnivore2のFlashROMバックアップツール「C2BACKUP」でバックアップしていました。バックアップデータは8MB強のファイルサイズになっていました。

 そこで、Carnivore2のFlashROMを工場出荷時の内容へ「C2BACKUP」で書き戻し、復旧しました(2.30へ戻る)。

Carnivore2、復旧。工場出荷時のFlashROMをバックアップしていたので、C2BACKUPというツールでFlashROMを戻した。8MBというFlashROMの容量はMSXではなかなかキツい。俺はMegaSCSIを持ってたから8MBのデータファイルをSCSIのストレージに置けたけど、Carnivore2しか持たない人はどう復旧するのか。 pic.twitter.com/2AreGpDR4T — Takashi Kobayashi (@nf_ban) 2020年9月29日

 再度2.40への更新を目指し、最新のリポジトリから上記3ファイルをダウンロードし「C2MAN」でFlashROMへ書き換えた(2回目)ところ、1回目とは違って以後まったく起動しなくなりました。スルーされています。

 「C2BACKUP」で戻そうとしましたが、1回目とは違い2回目は以下のようなメッセージを表示してアプリが終了するようになってしまいました。

WARNING!
Uninitalized cartridge or wrong version of Caanivore cartridge found!
Only Carnivore2 cartridge is supported. The program will now exit.

(要約)
初期化されていないカートリッジまたは間違ったバージョンのCarnivoreカートリッジが見つかりました!
Carnivore2カートリッジのみがサポートされています。 プログラムは終了します。

 「C2MAN」も2回目以降は警告を発するようになりました。

Uninitalized cartridge or wrong version of Caanivore cartridge found!
Using this utility with the wrong cartridge version may damage data on it!
Proceed only if you have an unitialized Carnivore2 cartridge. Continue? (y/n)

(要約)
初期化されていないカートリッジまたは間違ったバージョンのCarnivoreカートリッジが見つかりました!
間違ったカートリッジバージョンでこのユーティリティを使用すると、データが破損する可能性があります。
初期化されていないCarnivore2カートリッジがある場合にのみ続行してください。 続けますか?(y/n)

 後々分かったことですが、GitHubからダウンロードしたBIOS3ファイルのダウンロード方法をミスしていたにも関わらず「C2MAN」でFlashROMへ更新してしまったことで「C2BACKUP」ではメンテナンスできない状態にしてしまいました。「C2BACKUP」でいつでも工場出荷時の設定に戻せると思っていた考えは、浅はかだったわけです。

 俺みたいになるな!!

謝辞

 貴重な情報を提供していただいた皆様に感謝します。メーカー・RBSCサポートチーム、twitter @applesorce @goripon_tw @kansaizine @narikuni @piyota99 @sdhizumi @tme205 @thara1129 @uniskie @6am6oo 識者の方々…本当にありがとうございました。