2024年12月28日土曜日

mac mini 2024とintel資産運用

前ふり

mac miniのARM移行については、DAW系ソフトとかも含め心配事が多いので踏ん切りがつかなかったのですが、mac mini 2024の超小型化に心動かされ、頑張って移行する事にしました。

一般ソフトの移行

最近のやつなら、ほぼUniversalでパッケージされていて、ARMで起動すればARM版が動いてくれます。万が一古いIntelバイナリだったとしても、Rosetta 2経由で快適に動きます。例えばVLCのビデオエンコードとかはIntelバイナリを変換して動かした方が速いくらいだし、Unreal Engineみたいな重たい開発環境でも、新しい版ならUniversal、古い版ならIntel版が快適に動いてます。

少し気にしないと行けないのがPlug-in系。例えば配信ソフトのOBSはVLCがインストールされてるとVLCを入力ソースとして選び、映像ストリーミングを受信したりできますが、お互いインストールされてるバイナリタイプが一致していないと拡張として認識されません。例えばOBSだけ最新版でUniversal、VLCはIntelって場合は、ARMに移行した時にOBSだけARMで動くようになり、VLCの拡張が利用できなくなります。このような場合、VLCをUniversalかARMに更新すれば連携できるようになります。もし両者をARMで揃えられない場合は、UniversalアプリをRosetta経由で強制的にIntelバイナリで起動するという方法もあります。

DAWやVST/AUの対応事情

DAWやDJソフトなんかはわりと早期にARM対応してたみたいで、今なら特に困ることなく移行できます。が、VST/AU周りは少しハマりポイントも。

VST/AUは基本的には先述のPlug-in問題と同じで、基本的にはアーキテクチャが一致してる事が望まれます。が、調べた範囲だとAUに関してはOSレベルでクロスアーキテクチャをサポートしてるので透過的に使えるらしく、全てのDAWでサポートされてると思って良さそう。VSTに関してもDAWごとに内部的にブリッジ用意して使えるように努力してくれてます。

FL Studio ... この辺で説明されてるけど、ARM版で起動してもIntel VSTをブリッジしてくれます。Intel AUは少しはまりポイントがあったので後述。

Cubase ... VST3はARM版しかサポートせず。VST2に関してはIntel版もブリッジしてくれます。古くて移行してくれてないやつはだいたいVST2なので納得感ある、かつ公式らしい対応。

Studio One ... 2でも3でもIntel VSTをブリッジしてくれる。

AUに関しては落とし穴があって、読み込み時にシステムダイアログで警告を受けます。

ここでうっかりゴミ箱に入れないようにしましょう。「このまま開く」から許可する手順に入ります。すでに具体的な事はわすれてしまったけど、もしかしたら左のダイアログが先に出て、人まずは完了でパスして、この後にシステム設定に設定項目が現れて、そこから許可をすると右のダイアログで許可できるようになったかも。システム拡張とかパーミッションの設定と近いプロセス。

で、落とし穴は、このダイアログがでない環境があるって事。自分のケースではFL StudioではSynth1は黙殺されてましたが、Studio Oneでこのダイアログが表示され、そこから承認プロセスを通したらFL Studioでも使えるようになりました。

あと、マシン移行時にライセンスの再認証が必要なPlug-insが多いと思うので注意しましょう。自分の場合、iZotopeの再認証をしてなかったため、Studio Oneで定期的に音切れが発生する、という現象に悩まされてました。

新規仮想マシンの運用

もし一般的なWindowsアプリが動かしたい場合は、Parallelsか無償になったVMware Fusion経由でARM版Windowsを動かすのがおすすめ。ARM版Windows自体がIntelバイナリを実行する機能を持っているため、大半のソフトは問題なく動きます。問題が起きるとすれば、特殊なドライバを必要とする開発系ツールなど。あとはゲームでアンチチートに弾かれる事はあります。最近の需要で言えばVRChatが該当します。かつては問題なく動いていましたがEAC導入後は弾かれてます。VCRChatに関しては公式から非公式情報が出ており、エミュレーションするハードウェアの固有値をうまく設定する事で回避できるようですが、ARM版Windowsのバイナリ変換ではこの辺の固有値は設定できないので対応不可と思われます。

Linuxに関しても、今はARM版LinuxからRosetta 2経由でIntel版アプリを動かす事もできるようになってます。という事で、いずれの場合の新規OSインストールが許容できるなら、ARMベースで動かしてアプリレベルで必要に応じてIntelバイナリを変換、というのがパフォーマンス的にもベスト。

Intel仮想マシンの移行

すでに運用してたIntel版Windowsをそのまま持ち越したい、という需要が大きいとは思うんですが、ビジネスでそれをサポートしてくれてるとこは残念ながらありません。今のところ、そこそこうまく言っているのは、UTMでqemuのバックエンドを使い、Intelシステムエミュレーションの上で変換したVMイメージを使う方法くらいです。以下、注意点をいくつか。

事前にParallels関係のVM補助ツールは全部アンインストールしましょう。残っていると他のVMに持っていった際に関連ドライバ(prl_strg.sys)が起動中にクラッシュします。

Parallelsのディスクイメージは、snapshotとったりサイズ可変の設定になってたりすると変換がうまくいきません(サイレントに壊れて、起動失敗したところで深く悩みます)。元のマシンでこれらの設定をはずしてから、 /Applications/Parallels Desktop.app/Contents/MacOSts/MacOS/prl_convert などを使ってplainなフォーマットに変更しましょう。そこまで変換しておけば、UTMでファイルを選択した際にqcow2形式に自動変換した上でVMのフォルダ内にコピーを作ってくれます。

UTMに持ってきたら、CPUのマルチコア設定に注意。qemuはマルチコアエミュレーションをする際、コアごとに別スレッドでエミュレーションをするので物理スレッド数くらいまでエミュレーションするCPUを増やせばスケールするはず!と思うと失敗します。ARM上でIntelをエミュレーションするのは、strong-on-weakと呼ばれるケースに該当します。要はマルチコアにおけるメモリ一貫性保証の制約がARMの方がパフォーマンスを出しやすいweak memory orderを採用している。その上でより制約の厳しいstrong memory orderをエミュレーションするのは難しい/オーバーヘッドがでかいです。そのため、デフォルトでは正確性を優先してマルチスレッド対応は切られてる。そこで、システム設定にある「マルチコアを強制」にチェックを入れると、memory consistencyのサポートは諦めてマルチスレッドで動くようになります。この設定を受け入れないと実用的な速度では動きません。qemuの方でも一応バランスを見てバリアを埋めてくれてはいるようで、実用上は問題にはならない気はします。実際、ARM版Windowsのバイナリ変換でも標準設定でははmemory consistencyは壊れてます。実行ファイルのプロパティにある互換性設定でバイナリごとにエミュレーション精度を指定できるようになっており「標準設定でうまく動かなかったら、ここを変えてね」という扱い。一方Rosetta 2に関してはApple Silicon側にstrong memory orderをサポートする仕掛けがあり、正確かつ高速なエミュレーションができている、と言われてます。ほんと夢がある石なんだよ……。

Windows 10のイメージを持ってくるのに使ってる設定は以下の通り(いじったとこだけ)。

アーキテクチャ: x86_64
システム: Standard PC (Q35 + ICH9, 2009) (alias of pc-q35-9.1) (q35), 8192MiB
CPU: デフォルト, 4コア, マルチコアを強制
QEMU: 「ベースクロックにローカル時間を使用」のみチェック(非UEFI環境)
ディスプレイ: virtio-vga-gl (GPU Supported)

Linux系を持ってくる場合もParallels用のドライバは削除した方が良いみたい。GPU Supportedなディスプレイカード設定を入れると画面が落ちるのは古いせいかと思ってたら、どうもParallels用のドライバが悪かった。/Applications/Parallels\ Desktop.app/Contents/Resources/Tools/prl-tools-lin.isoあたりをマウントしてinstallerを実行すれば、uninstallが選べます。これでUbuntu22でvirtio-gpu-gl-pci (GPU Supported)が動くようになった。それまではvmware-svgaしか動いてなかった。virtio-ramfb-gl (GPU Supported)がいけるという話もあるけど、自分は動かなかった(けど、Parallelsの掃除してからは試してない)。

既存のVMイメージの流用だけじゃなく、どうしてもIntel版Windowsが必要って場合もUTMで同様の設定で新規インストールするのが唯一の解だと思います。新規の場合はギャラリーにあるイメージが最適設定の参考になるかと。VRChatのハードウェア設定もUTMで設定いれればワンチャン動くかもしれません(未確認)。

Wine

そうそう、Wineryとかwine系ラッパーで作ってあったパッケージはそのまま快適に動いてます。たぶんRosetta 2経由で起動してる。

その他

何から何まで移行・動作確認できてるわけじゃないので、他にも色々とあるかも。

例えばbrewとかはARMだとインストールする場所が変わるので、intel版残したままARM版も入れて様子見てる。

VS Codeの拡張とかもintel依存多いので怪しい。たぶんログアウトして同期を切ってからアプリとデータを削除、再インストールするのが正しい……けど、やってない。同期したままファイル消したりすると伝播するので危険……というのは以前経験した。

VRChat動かしたい人は、ARM版LinuxでRosetta for Linuxを使ってSteamを動かせば、Proton経由で動く可能性がありますね。少なくともSteamDeckではProtonでEAC突破できてるので。

追記(2024/12/31):Rosetta for Linuxはx86_64しかサポートしてない模様。Steam Launcherが32bitアプリなので一工夫必要。i386だけbinfmtにqemuを登録するとか?と思って試してみたけど、最終的にはlibGLの中で落ちた。

試したい人向けにやった事のメモをしとくと、UTMでGalleryにあるDebian 12 (Rosetta)をインストール、その中で以下の作業を敢行。

sudo apt install qemu-user-static
sudo update-binfmts --install qemu-i386 /usr/bin/qemu-i386-static --magic '\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
sudo dpkg --add-architecture i386
sudo apt update
# https://store.steampowered.com/about/ から steam_latest.deb をダウンロード
sudo apt install ~/Download/steam_latest.deb
steam

Xに垂れ流してた作業ログを簡単にまとめただけなので、もし詳細を教えて欲しい!ってとこがあれば、Xで声かけてください。分かる範囲でなら答えたり追記したりします。

2024年12月25日水曜日

今年の芸術方面の活動

今年はメタバースで18回DJやらせてもらいました。そのうち7回は海外イベント。

あとは随伴音楽。1つ目は大学の仲間と作った映像のBGM。


もう1つは課題で作った動画のBGMとSE。


あとは映像関係の勉強に伴い、VJ周りの環境も再構築中。自作のウェブベースのやつとTDをVDMXに繋げる形であれこれお試し中です。

ドラムは教室通いを続けてて、今YAMAHAのドラムのテキスト3冊目。会社のメンツと時々集まって演奏したりしてます。

結局ゲーム何やったんだ?

思い出しながらメモってみたら、わりと沢山あるのでは……だったら、もっと頻繁にメモしないと駄目だ。でもまぁ、だいたい春まで。年末になって少し再開したけど。

PS5

  • Ys X - NORDICS
  • DQ III HD-2D
Switch
  • Xenoblade Definitive Edition(6章まで)
  • DQ X (フリープレイに誘われて少し再開、Version 3に入ったとこ)
X68000
  • ロマンシア
  • ダンジョンマスター(序盤……)
PC-8801
  • ぽっぷるメイル
  • ブライ上巻
PC-9801
  • Xak
  • Xak II
  • ブランディッシュ
Apple IIc
  • Wizardry(まだ序盤だと思われ……)
MZ-1500
  • ロポコ
PC-8001mk2
  • XeGrader

括弧書きで何もコメントしてないやつはクリア。

京都芸術大学について

前ふり

今年のブログ、4月まではPC-9801RAとDO+を使えるようにして、X68k EXPERTのSASIポートを修理して、Apple IIcを使えるようにしてWizardryで遊び、8001用にPCGもどきボードを作ってNew City Heroで遊び、MZ-1500のQDを修理、QDのケース作ってディスクシステムのメディアを再利用してロポコで遊び……と順調なレトロPCライフだったわけですが、そこで活動停止orz

何をしていたかと言えば、京都芸術大学に入ってリモート講義を受けてただけなんですが、一切の活動がピタリと止まるくらいには忙しく真面目に勉強してました。

京都芸術大学

もともとは瓜生山学園 京都造形芸術大学と呼ばれていたところで、略称は瓜芸。オンラインに力を入れて勢力拡大の中、京都芸術大学と改名。もともと存在した京都市立芸術大学(略称:京都芸大)と名前で揉め、略す場合は瓜芸と呼ぶことになってる。最近はあちこちに広告出してるし、オタク向けなコースが沢山あるので名前は知ってるという人も多そう。

自分が通ってるのは文化コンテンツ創造学科 映像コース。フジテレビが全面協力して設立されたコースで、自分は一期生。ぶっちゃけ一期生という響きが良かったので選びました。学費は年間40万円弱で、すでに大学出てる場合は三年次編入ができ、きっちり単位を収めれば芸術学士が取得できます。40万円が高いか安いかは個人の価値観で違うかとは思いますが、今どきの子育てにかかるお金と比べたら鼻くそレベルです。これで学割でAdobe CC使ったりiPadやmac mini買ったり、DAWのあれこれやVDMXを買ったりしてると、割引だけで元がとれちゃう。提携してるDMM英会話も3ヶ月毎日30分マンツーマンで1万円ぽっきりです。

講義の内容に関してはかなり良いです。少なくともコースの担当者たちは、それぞれの分野の第一人者ばかり。日本のテレビや映画の歴史を作ってきた、今まさに作ってるような人達が教えてくれます。これぞオンラインの醍醐味ですね。スケールするから講師にお金かけられる。たとえば第一期生は400人以上いるらしいし、学部共通科目とか受けるとレポート提出者は毎回1000人近くになる。私立の大学だとそういう話も聞くけど、東大ではせいぜい数十人規模の講義しか受けた事なかったから、これは凄いカルチャーショック。

どんな講義を受けてる?

ほんとに映像の何から何まで(広く浅くではあるけど)教えてくれる感じで、例えば必修でとった単位はこんな内容。

  • 映像I-1 映像学入門
  • 映像I-2 企画の方程式
  • 映像II-1 映像制作概論1(ミュージックビデオ・広告)
  • 映像II-2 映像制作概論2(エンターテイメント・コメディ)
  • 映像III-1 シナリオライティング論
  • 映像講義1 コンテンツビジネス論
  • 映像講義2 映像と向き合う
  • 映像基礎1 映像思考概論1
  • 映像演習I-1 企画のつくり方
  • 映像演習I-2 技術を知る(撮影・照明)
  • 映像基礎2 映像思考概論2
  • 映像演習II-1 シナリオライティング演習
  • 映像演習II-2 技術を知る(編集・サウンド)
まだ取れてないやつが
  • 映像演習III-1 アイデアをデザインする
  • 映像演習III-2 技術を知る(モーショングラフィックスと応用)
  • 映像IV-1 映像制作概論3(ドラマ・映画) - 講義受講済み、作品制作中
  • 映像IV-2 映像制作概論4(アニメーション) - 講義受講済み、作品制作中
  • 映像V-1 社会を変える企画 - 講義受講済み、作品制作中
  • 映像V-2 映像制作概論5(ノンフィクション)
  • 映像V-3 映像制作概論6(メディアとアート)
必修以外でとったのが
  • 芸術理論1 東洋の芸術理論
  • 芸術史講義(日本)1 日本の造形芸術の成立から平安時代、鎌倉時代までの展開
  • 芸術史講義(日本)2 日本の造形芸術の近世および近代の絵画・工芸
  • 芸術史講義(アジア)1 中国の古代から明清時代に至るまでの芸術史
  • 芸術史講義(近現代)1 20世紀初頭から21世紀まで、特に欧米での造形芸術の流れ
  • 文化研究3 写真、映画、TVなどの映像文化の起源と、現在の文化に及ぼす影響
FNS歌謡祭の裏舞台、シェキラ☆☆☆の進行表やリハーサルの様子が見れたり、プリキュアを例に技術解説してくれたり、とかがオタク的には美味しいと思う。八代健志さんの工房に密着してストップモーションについて解説するあたりも貴重かも。まぁ、コース必修はどれもヨダレもんです、実際。

学習時間

だいたい科目あたり30〜100時間くらい時間を使い、3年次編入だと62単位が卒業要件。1年半で単位を揃えて、最後の半年が卒業制作です。

科目は3タイプあります。

1) TRと呼ばれる自習型科目。テキストを読んで1000文字前後のレポートと、同じく1000文字くらいのオンラインの試験を受けます。オンライン試験は基本的には小論文。ただ、事前に課題候補が何個か提示され、試験ではその中のいくつか、あるいは近いテーマが提示されて、それを1時間以内に小論文にまとめて提出します。時間以内で書き上げるには下調べが必要なので、結局は候補全て、つまりはテキスト全域について軽くまとめ上げる事が要求されます。レポートに10時間、試験準備に20時間、それ以外にテキスト読んでメモとる時間が必要なので30〜50時間くらい使ってる気がします。

2) TWと呼ばれる作品提出型科目。参考資料を元に作品を作って提出することになってますが、映像コースは参考資料が全て講義映像になってます。なので30〜60分くらいの映像が15本。それを一時停止や見直ししながらノートとるだけで20時間くらいは必要。そこから決められたテーマで作品を作るわけだけど、ここが進むにつれて高度な内容になっていくので、最初は10時間くらいで済んでいたけど、現状では50時間とか使ってる。

3) WSと呼ばれる講義型科目。これは講義映像で、やはり30〜60分くらいの映像で15回なので同様に20時間くらい。レポートを出して講評会があるんだけど、映像コースの場合はレポートも作品提出に近くて、企画書だったりシナリオプロットだったり、はたまは普通に絵を描いたりなどなど。やっぱり数十時間は平気でもってかれます。共通科目の芸術史とかは普通にレポートだけど、追加で文献調べてプチ研究っぽい事を求められることもあり、やっぱり一番重いタイプな気がします。

と考えるとまぁ、講義ごとに大作RPGを遊ぶくらいの時間になるので、それは他の事に使う時間もなくなるなぁ……という。

4学期制

春・夏・秋・冬の4学期があります。毎学期開講される講義も少しはありますが、だいたいは1つ起きの年2回開講が多いです。春・夏、または秋・冬って感じで、春に取り逃がしたら半年後の秋を待たなければならない。講義ごとに依存関係があって、Aの単位をとらないとBの講義が開放されるに受講できない、みたいな制約があるので、のんびりしてると講義とれずに時間ばかり過ぎると思います。実際、半分くらいの人はほぼ単位とれずにいるようです。今、このブログを書いてる時点では、1年目の春・夏・秋が終わったところです。

各学期は3ヶ月ありますが、この3ヶ月も緻密にデザインされてて、締め切りに追われていればどんどん勝手に単位が取れてくはず(なんだけど、万人がその波に乗れるわけではないのねぇ……)。例えば春では4月にTR科目とTW科目の締め切りがあり、5月にはTW科目の2度目の締め切りとWS科目の締め切りがあります。TWは重たい課題も多いので、真の締め切り一発だと間に合わない人が続出なんだと思います(笑)そして6月にTR課題の試験。浅い理解になりがちな自習レポート科目を時間を開けて復習させるのは良くできてます。試験後はWSの講評くらいで少し時間に余裕ができるので、ここで裏技的に半年後に受ける予定の講義を先に見たり、次の期に受けたいTR講義のテキストを読んだりしておくのがおすすめです。本当はテスト終わったらすぐに次の期の講義が受けられるようになれば良いのですが……締切は基本的に上旬なので、ひと月目のTRとか講義開放から10日くらいしかなくて締め切りタイトなんですよ。

成績

成績評価はかなり厳しいです。毎度「こいつは完璧だぜ」って思って提出しても80点そこそこ。90点越えたのとか1回しかない。優秀作例として講評会で紹介されても80点台だったりも。

最初の説明会で「B(70点台)はそうとう良い成績なので、がっかりしないでください」みたいな事を言っていて「???」って思ってたんだけど、要はワケアリっぽいです。例えば、400人いるうち40人しか提出できてない状況で1%にしか出せない成績を出すのは難しいんじゃないかな……とか。芸術史系とか話を聞いてると1000人とかいても90点以上のSが出るのは数人。採点も減点法で、講師の想定したチェック項目がたくさんあって、外すとガリガリ減点されてくので、高得点狙おうとするとかなり深読みした忖度と運が必要になってくる。あまり点数は気にしない方が良いのかも。

2024年6月23日日曜日

Generative MV

ICCでやってた坂本龍一トリビュート展、お友達と見に行った時の感想の中で特に印象に残ってた〈Generative MV〉について、今通ってる芸術大学のレポート題材にして書いたのでここにも載せときます。本来は映画等の映像作品を題材にする事が期待されてたので、インタラクティブなインスタレーション作品を対象として書くのは少し冒険だったけど、ぼくの人生で一番大切なところに切り込んできたと感じた作品だったので。全体の講評を聞く感じ、自分の人生や行動にどう影響を与えたかを具体的に書いた方が高得点に繋がったっぽいかな。理系人生長かったので、人文や芸術系レポートの要求に対する細かい配慮がまだ足りてないです。

2024年4月21日日曜日

MZ-1500とQD関連

MZ-1500のメンテとQuick Disk関係で少し手を動かしたのでメモを残します。

入手したまましばらく寝てたMZ-1500の動作確認をしたところ、想定通りQDが動作しません。ファミコンのディスクシステム同様にゴムの劣化だろうと思い情報を探したら、ありがたい先人のページ(MZ-1500 QDドライブのベルト交換)を見つけ、その情報に従ってゴム交換をしたところ、無事動作するようになりました。

で、無事に動作したのでした。紹介されてる通り、千石で「φ40×1.2T ゴムベルト(角)」を入手してます。

で、あとはメディアなんですが、最初の投稿で、ファミコンのディスクを改造して使えないかなーって書いてたら「できますよ」ってコメントがあって。ディスクケースのサイズが違う事だけが問題らしいので自作する事に。

初回はこんな感じ。その後、ラベルの凹凸が逆だったのを直したり、不織布を安全に貼るために少し内部形状を変えたりってのを作って、しばらく寝かせてました。

んで、この新しいケースを使ってロポコ用のメディアを作ることにしたのが本日。いや、本当はそこまで気力なくて700取り出して動作確認だけと思ってたんだけど、ロポコ良い感じなのとQD対応してるようだったので、この際いっきにQD周りの知識を仕入れちゃおうという気力が湧いて。マニュアルとか持ってなかったのでモニタコマンドは当てずっぽうだったんですが、QXってコマンドを教えてもらえて。これ使うとテープ用のデータをそのままQDに保存できるんですね。で、最初に保存されてるやつが起動時に自動実行されるらしい。

ロポコに関しては容量的には1枚に入るんだけど、動作させるのにはテープと同じ構成で2枚に分ける必要があるっぽい。シナリオディスク読む時に先頭に保存されていないと駄目なのかな?あとセーブする時にうっかり既存の名前いれるとエラーして無限ループに入るのがちょっと危険w(→なんとアップデートでエラー時に回転止まるように修正されました。boothにてv1.2.1で修正されてます。感謝!!)

で、ある程度の確認がとれたので、このケースのデータはここに公開しちゃいます。このデータでJLCPCBで作ってもらいました。細いところもあって「このまま作ると破損するかもしれないけど良い?」みたいな事を聞かれるかもしれないので、その時は「自己責任」でOKした上で依頼してみてください。何個か割れかけたのが混ざってるかな?くらいで仕上がるとは思います。片面のデータなので、ペアにして1枚のケースを構成します。

2024/9/23追記:選ぶ材質によっては湾曲して実用にならないようです。自分もベストな選択をしているわけではないですが、SLA(Resin)-Black Reginで実用に耐える成形ができています。

実際に作る際の手順も少し書き残しときます。

まずはディスクの分解。この書き込み禁止のところが一番攻めやすい気がします。ピンセットでうまく引っ掛けて、テコの原理でミシミシっとやると良いです。磁性面が見えてる窓とかもやりやすいとは思うんですが、磁性面をに傷をつけたらアウトなので、四つ角から攻めるのが良いです。それかNintendoロゴの粉砕。あの部分もガワだけ……だけど硬いし非推奨。破片で磁性面を傷つけるリスクもありますし。


こんな感じ。ディスクシステムのケースは裏と表で非対称でオスメスある感じです。外周部にところどころある円柱とNintendoロゴがはめ込みパーツになってます。このロゴ、何気に工業デザイン的な意味合いもあったのだ。
あと、これ見て安心して良いんですが、不織布はディスク全体をくまなく覆う必要はないみたい。ケースとの接触で回転時に磁性面が傷つかないように、という役目はあるものの、大部分が覆われていたら、不織布の厚みで浮くから、ケースと直接接触することはなくなります。逆に不織布付けないと直ぐに円状の傷だらけになります。


ただ不織布にはもう1つの役目があるそうで、回転しながらディスクが拾ったゴミを拭き落とす効果が期待されています。フロッピーとかはメディアをわざと挟み込んで圧力かける機構があるくらい。んで、ディスクシステムのケースも不織布を外してみると、こんな感じで上下で45度ずれる感じで、互い違いに法線方向の細い土台が盛り上がってます。この効果で回転時には磁性面はゆるやかに波打つような動きをして要所要所で不織布に接触してゴミが落とされる感じらしい。使用エリア最内周から最外周までキッチリで作られてますね。メディアを出しっぱなしにしたり、埃っぽい環境での使用を考えるなら真面目にやった方が良いのかもしれませんが、まぁ大人だし(笑)って事でここは真面目に再現しませんでした。


不織布に関しては、CD用の不織布ケースを使って、こんな感じでケースを中に入れて、セロファン面に雑に線を引いてやって、最後に中身を抜いてセロファンと不織布を同時にカットしてあげれば不織布の部分は作れます。


最後に円から外れた角に接着剤を付けて、上からカットした不織布を載せます。接着剤が多すぎて円周内に入ってきちゃうと、固まった接着剤が磁性面を傷つける可能性があるので、外側にちょこっとだけ。全面貼らないと剥がれちゃうんじゃないかって不安になりますが、挟み込んでしまえばめくれ上がる余裕はなくて安定してますね。
最後は四つ角にある四角形の凹凸のとこに接着剤を付け、磁性面を挟んで閉じてあげれば完成です。

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"もバラして円盤に不織布を貼り付ければクリーニングディスクになるかも。必要ならエタノール吸わせて。



2024年2月29日木曜日

X68000でBlueSCSIを使ってみる

修理したSASIポートでSxSIの力を借りてBlueSCSIを繋いでみました。BlueSCSIにはパリティを無効化する設定があり、もともとX68000+SxSIで動くという報告があったので、それの追試験と、容量の限界に対する詳しい情報についてです。

まずSxSIですが、はうさんのch30_omakeの最新版をこちらから頂き、SRAM常駐させてます。

Phantom搭載機なのでfull版を入れてます。これでSASIポートに繋がったSCSIデバイスからbootできるようになりますし、SxSIのドライバなどをconfig.sysに登録しなくてもSASIポート版SCSI IOCSが利用できる状態でbootします。この状態だと起動時にSCSI IOCSが見えるからデバイスドライバはhumanのやつが利用されるのかな?

ちなみにSCSI 0番からはbootできませんでした。デバイス名も取得できず名前が一覧に出ませんでした。本来SxSIでは番号を空けずに0番から受けてく事が推奨されているので、0番が使えないのは030_omakeの制限なのかもしれません。この点については詳しく調べずに0版はDynaPortをアサインしてしまいました。これについては今回は触れませんが、SCSIに繋がるWIFIポートになります。READ/WRITEしたものがイーサーネットに出入りするので、将来的にはNeptune互換で使えるようドライバを書きたいです。

で、今回詳しく記録に残すのはハードディスクやファイルシステムの容量関係の話。SxSIやSCSIで利用できる最大サイズやファイルシステムの限界の話です。

SCSI IOCSの仕様的にはブロックサイズ256B/512B/1024Bがサポートされているようです。指定可能な論理アドレスサイズ×ブロックサイズでアクセス可能なHDDの範囲が決まるので、一番大きな1024Bを設定するのが良いです。BlueSCSIではファイル名で指定するのでHD1_1024.HDAみたいなファイル名になります。

またSCSIではREAD6/WRITE6/SEEK6という21bitアドレス指定のコマンドグループと、READ10/WRITE10/SEEK10という32bitアドレス指定のコマンドグループがあります。これらはSCSI IOCSではREAD/WRITE/SEEKとREADEXT/WRITEEXT/SEEKEXTとしてAPI化されているようです。動作をみた感じではアクセスする範囲に応じて必要ならEXT系を利用して*10の方のコマンドが出てきており、32bitフルにアクセスできるのではないかと思います(注1)。つまり4GB x 1024Bなので4TBまではSCSI的にはアクセス可能。

一方でファイルシステム上の制限もあります。HumanはFAT16を採用しているため、クラスタアドレスは16bitで指定できる範囲に限られます。4GBの仮想HDDに対してformatコマンドを使って最大サイズのパーティションを確保したところ、クラスタサイズは65535Bでフォーマットされました。つまりは4GBフルに使えてます。また同じイメージをSxSIのscsiformatでフォーマットしたらクラスタサイズは倍の128KBになり、これも正しく使えているため、おそらく4GB以上のディスクでもクラスタサイズが適切に大きくなって扱える可能性が高いです。軽く確認した範囲では16GBを超えると認識時にセクタサイズが大きすぎると言われてリセットになります(注2)。これも厳密には16381MBが限界だったと思います。ただ、4GBが32bitで表現できる限界なので、これを超えるとアプリケーションレベルで色々なところに弊害が出てきます。例えばディスク空き容量なんかは正しく表示できなくなります。よって、安全に使うなら4GB(MB指定だと4095MB)で使うのが無難なのかなぁ、と思います。

あと実機上での利用では関係ないですが、BlueSCSIのイメージをDiskExplorerを使ってWindowsから読み書きしようとした場合、scsiformatでフォーマットしたイメージはパラメータを調整しても読めませんでした。SCSI搭載機でformatを使って初期化したイメージはプリセットで読めているので、scsiformatは避けるのが無難かもしれません。原因は深く追っていないので、倍になったクラスタサイズのせいかもしれず、別のサイズのイメージだったら違う結果になるかもしれません。またDiskExplorerも古いソフトなので32bitの4GB制約があるかもしれないので、イメージからのデータ読み書きには4GB以下のイメージを使うのが無難でしょう(注3)。

以下、立花さんに教えてもらったLIBCのソースに含まれるSCSI.DOCを読んで判明した(というか大昔に読んだ記憶あったので思い出した?)情報です。

(注1)SCSIコマンドを発行してディスクを読むドライバはハードディスクの先頭付近に置かれているようです。なので32bitアドレス版のコマンドを使っているかどうかはフォーマットしたプログラムに依存するかもしれません。

(注2)この制約はformat.xが書き込むドライバの制限だそうで、LBAが24bitに制限された結果のようです。確かにこの実験はXVIでやっているので、format.xのドライバに依存してそうです。

また、format.xでフォーマットした際に1GB以上のHDDから起動するためには田圃さんのGOVERHD.xが利用できるそうです。自分はch30_omakeからこのパッチなしで起動できてしまっています。田圃さんのSCSI周りの数々の功績には頭が下がります。BlueSCSIも田圃さんのArdSCSinoのforkのforkです。

以下、田圃さんのコメントに基づく注釈です。

(注3)SEEKがsigned 32bitなので、2GBを超えるファイルの操作は危険が伴います。より安全を見るなら2GBが無難です。

2024年2月28日水曜日

X68000 EXPERT SASIポートの修理

昨年にX68000 修理にて復活!という投稿をしました。

電源をATX電源化、電池はケース化したうえで交換、VRAMが1つ故障していたので交換したところまでが修理の内容でした。ハードディスクはXVIを使って吸い出したもののEXPERTのSASIポートではうまく動作しないままでした。今回はその残るSASIポートの修理についてのメモです。

SASIポート周りについてはOutside X68000付属の初代機の回路図が参考になります。各ポートの制御はIX0909というカスタムチップが1つ鎮座しており、ソフトに見えるレジスタはおそらくその中に入っています。SASIはハードでは制御らしい制御はなく、このカスタムがレジスタアクセスに応じて直接SASIバスの信号を出し入れし、その外にある回路はバッファ程度なので、壊れるとしたらカスタムかバッファに使われているロジックIC、後者なら交換で簡単に直せるはずです。

初代機とEXPERTではカスタムチップの型番とピン配置が少し違います。ロジックICも使っているピンが違ったりはするのですが、基本的には同じ構成です。データバスは74LS642で出し受けしており、双方向バッファの方向は外から入ってくるI/Oで決まりますが、開放時は出力方向になっています。制御信号のうち入力は74LS19がシュミットトリガーで受け、出力は74LS38でオープンコレクタ。すべての信号がロジックの内側は5V、外側は約3Vで動いており、抵抗で分圧したうえでpull-upされてます。

場所的には底面基板に各種IOやFM音源がいます。CPU側のメイン基板から来てるケーブルにバスが全部載っており、電源側の基板からは電源と各ポートの入出力が繋がってます。Sと書かれた2本線がサウンド出力で内蔵スピーカーに向かっているようです。

投稿でカスタムと642の場所を説明してますが、さらに38は642の右に2つ並んでる38のうち左側のものがSASIとカスタムの間にあるやつです。今回は642にあたりを付けて交換しましたが、制御がおかしい場合にはこの38を交換する必要があるかもしれません。他にはアレイ抵抗が壊れてショートしていないかなども注意した方が良いと思いますが、底面基板なので電源入れて直接電圧を確認するのは難しいです。もし怪しいと思ったら、外に出てるSASIポートの電圧で確認するのが良いと思います。

データバスに関してはソフトでレジスタ叩いて出力の変化を見るのが良いかもしれません。

カスタムは出力中でもピンの電位を読み出せるようです。つまり、書いた後に読んだ値が実際にカスタムと642の間のデータバスの電位になります。ここで値がおかしいようなら642が外向きになっていなかったり、バッファが死んで常にGNDやVCCに張り付いているような状況が疑われます。一部張り付いているなら642を、全部張り付いてるなら38から入ってるI/Oを疑うのが良いかもしれません。またこの値は反転した形でSASIのデータバスに出ますから、ポートの電圧を測る事で642経由で期待通りの信号が出てるか確認できます。bitの値が0なら約3V、1なら約0Vですね。

今回は交換するまでは良かったんですが、交換時にソケット化したせいでICの位置が高くなってしまいシールドに接触するという大失態を侵しました。場所的にまさにシールドが出っ張っている位置なので要注意です。C1とか81あたりしか書けなかったら同じことをやらかしてる可能性大(笑)

という事でSASIポートが直ったのでSxSIを使ってBlueSCSIを接続するわけですが、それはまた別のエントリで詳しく書こうと思います。

ちなみにSASIのバスを3Vで駆動しているけど、これは何もバスが3V論理だという事ではないようです。SCSIの仕様書をみると5Vも許容範囲ですし、EXPERTや初代の回路的にも5Vを受けられるように設計されてます。3Vでpull-upしているのはターミネーターの推奨値だからかな?初代機の抵抗値はSCSIリファレンスの分圧でターミネートする時の推奨値でした。EXPERTはもう少し小さい値で近い比率で分圧してたように思います(具体的な数字はメモしてなくて忘れてしまった)。

2024年1月12日金曜日

PC-9801RAにBlueSCSIを繋いでみた記録

年末年始、集めたまま火を入れてない物の中で、特に興味の高いものを整理してました。PC-9801RAもその中の一つ。8001もそうでしたが、NECのパソコンはほとんど触れずに来ていて、大学の時に譲ってもらったPC-486で(いや、それはNECじゃない……)少し曲を作ったりはしてたんですが、身内の手違いで破棄されてしまって(良くあるような悪い話ではない……はずです)。詳しい資料や当時の情報を持っていないので手探りで環境構築してます。

その中でも今となっては厄介なのがハードディスクの整備。とりあえず今から物理ドライブ使うのはデータ消失が怖いし、ネットワークないマシンだとデータのやり取りも大変。という事で、変換器使った何かを考えていたのですが、9801系で有名どころと思われる変換番長が半導体不足で在庫がない状況だったので、せっかくだから少し冒険。オープンソースなら最悪どうにでもなるだろって事でBlueSCSIを選びました。設計データまで公開されてるので自分で基板から作っても良いのですが、最初からそれだと問題切り分けが大変です。国内ではヤフオクで完成品を公式に扱ってる人がいるので、そちらをあたってみる事にしました。自分はmac用のDB25直差し用を購入してます。というのも、自分も元macユーザーで将来はそっちでも使いたいってのと、当時使ってたDB25 to アンフェノールハーフピッチのケーブルが手元に残っているのと、さらにDB25のオスメス変換器が安く売っていたのと。接続は

98本体(アンフェノールハーフメス)⇔ケーブル(アンフェノールハーフオス→DB25オス)⇔変換器(DB25メス→DB25メス)⇔BlueSCSI(DB25オス)

こんな感じ。手持ちが違う人は違うやつ選んだ方が良いかもしれません。

んでBlueSCSIなんですが、なんと元はたんぼ(TNB製作所)さんが作ったArdSCSinoだそうで。Arduinoで動いていたものがARM(STM32)に移植されArdSCSino-stm32となり、そこから派生してBlueSCSIが出てきたようです。現行のv2はSTM32から更にターゲットを変えて、Raspberry Pi Picoで動いてます。さらに最近ではPico Wを使うことでWIFI機能を使い、SCSIバス上に仮想ネットワークカードを繋げられるようです。この機能はホスト側でドライバを書く必要があるので、現状では開発者がメインターゲットにしてるMacintoshのみの機能かな、と思います。が、ゆくゆくは国産レトロ機でもドライバが出てくると面白そうです。

開発者が主にMacintoshユーザーなので、その他の環境への対応がどうなったのか心配なところでもあるのですが、対応してるSCSIコマンドは他のプロジェクトより多そうなので、最悪ちょっとコードいじればなんとかなりそうな感じがありますし、互換性リストではX68000なんかも入ってます。標準SCSIインタフェースでも動くし、旧機種のSASIでもSxSIを使えば本体改造なしで動きそうです(サンプルではパリティを無効にする設定が入ってます)。

で、詳しい経緯に興味ある人はこちらの一連のポストを見てもらうとして、とりあえず無事に動作したので設定をまとめようと思います。

98だとSCSI I/Fも大量に出てると思うのですが、自分が成功したのはIF-92Bになります。が、98固有の問題は内包してるので、他のボードでも状況は似たような感じじゃないかと思います。NEC純正はベンダー設定が必要かも。

[SCSI]
; Debug=1
; Vendor=NEC
System="Generic"
Quirks=0
DisableROMDrive=1
SectorsPerTrack=8
HeadsPerCylinder=32

この中で必須だと思われるのは最後の2つです。この辺りは98固有の事情に関係してるようで、SCSI BIOSのアドレス指定がLBAではなくCHSになっている事に起因するかと思います。これらの情報はNEC純正ではSCSI非標準の問い合わせで得るようですが、サードパーティー製や後期純正だと内部的にこれら8/32の値を想定して変換を行うようです。SCSI BIOSが純粋に全部の変換を行いLBAでディスクにアクセスしてるなら設定不要で動いても良さそうなのですが、少なくともIF-92Bではここを違う値にするとFORMAT.EXEが0除算で落ちるようになります。

また設定以外にディスクイメージも必要ですが、注意点としては

  • セクタサイズは512バイトにする事
  • イメージサイズは8×32×512の倍数にする事
  • 大きすぎると認識されないのでインタフェースの限界にあったサイズにする事
を満たす必要があります。セクタサイズはファイル名に埋め込むようになっているので注意が必要です(設定でBlockSizeを書いても良いかもしれませんが試してません)。この辺りはソースコード見れたので調査がはかどりました。やっぱりオープンソース選んで正解。

% dd if=/dev/zero of=HD0_512.hda bs=131072 count=4096

自分はこんな感じで作りました。Linuxやmacなら同様に、WindowsならWSL使えば同様にできるし、中身空で良いので他にも色々と方法はあるかと思います。

ちなみにcount=4096はIF-92B v1.10の限界っぽいです。サイズとしては512MBですね。1GBまで認識はするようなのですが、領域確保できるのが512Bまででした。巷では1.01や1.20も出回っているので、それぞれ限界は違うかと思います。1.20だと2GBまでいけるって話も見かけます。BIOSパッチ当てられれば良いんだけど、ここはホームグラウンドじゃないから、ひとまずこれで様子見です。

ちなみにボード自体もDIPSWがサウンドボードとぶつかっていて変更したり、画面に何も出ない設定になっていたり、そもそもコンデンサもげて挙動自体が怪しかったり……がスタート地点だったので、色々とリスト減らした上でなんとか正解にたどり着けた感じでした。