ICCでやってた坂本龍一トリビュート展、お友達と見に行った時の感想の中で特に印象に残ってた〈Generative MV〉について、今通ってる芸術大学のレポート題材にして書いたのでここにも載せときます。本来は映画等の映像作品を題材にする事が期待されてたので、インタラクティブなインスタレーション作品を対象として書くのは少し冒険だったけど、ぼくの人生で一番大切なところに切り込んできたと感じた作品だったので。全体の講評を聞く感じ、自分の人生や行動にどう影響を与えたかを具体的に書いた方が高得点に繋がったっぽいかな。理系人生長かったので、人文や芸術系レポートの要求に対する細かい配慮がまだ足りてないです。
2024年6月23日日曜日
2024年4月21日日曜日
MZ-1500とQD関連
MZ-1500のメンテとQuick Disk関係で少し手を動かしたのでメモを残します。
入手したまましばらく寝てたMZ-1500の動作確認をしたところ、想定通りQDが動作しません。ファミコンのディスクシステム同様にゴムの劣化だろうと思い情報を探したら、ありがたい先人のページ(MZ-1500 QDドライブのベルト交換)を見つけ、その情報に従ってゴム交換をしたところ、無事動作するようになりました。
確認できてなかった1500の確認した。
— とよしま (@toyoshim) February 14, 2024
QDは予想通りゴムの死んでそうな音がしたので、バラして確認したら融解して辛うじて形状を維持してるようなドロドロの状態(笑)ピンセットでなるべく崩さないよう取り外したけど、一部はタール状になって付着、IPAと綿棒でも綺麗にはしきれなかった。
で、無事に動作したのでした。紹介されてる通り、千石で「φ40×1.2T ゴムベルト(角)」を入手してます。
ゴム届いたので交換。最初はエラーしてたけど、回転がこなれて来たらバッチリ動作してるようです。 https://t.co/994KxD0s4N pic.twitter.com/JRTJ4qBjIP
— とよしま (@toyoshim) February 16, 2024
で、あとはメディアなんですが、最初の投稿で、ファミコンのディスクを改造して使えないかなーって書いてたら「できますよ」ってコメントがあって。ディスクケースのサイズが違う事だけが問題らしいので自作する事に。
そう言えばーって試してみた。
— とよしま (@toyoshim) March 5, 2024
あれ?起動メニューでフォーマット選べないんだっけ?って、なったけどモニタから無事にフォーマット確認できた。
モニタコマンド知らなかったけど勘良すぎない?(笑) https://t.co/Cr7NN4qyrd pic.twitter.com/RMtJHVf1yZ
初回はこんな感じ。その後、ラベルの凹凸が逆だったのを直したり、不織布を安全に貼るために少し内部形状を変えたりってのを作って、しばらく寝かせてました。
んで、この新しいケースを使ってロポコ用のメディアを作ることにしたのが本日。いや、本当はそこまで気力なくて700取り出して動作確認だけと思ってたんだけど、ロポコ良い感じなのとQD対応してるようだったので、この際いっきにQD周りの知識を仕入れちゃおうという気力が湧いて。マニュアルとか持ってなかったのでモニタコマンドは当てずっぽうだったんですが、QXってコマンドを教えてもらえて。これ使うとテープ用のデータをそのままQDに保存できるんですね。で、最初に保存されてるやつが起動時に自動実行されるらしい。
ロポコに関しては容量的には1枚に入るんだけど、動作させるのにはテープと同じ構成で2枚に分ける必要があるっぽい。シナリオディスク読む時に先頭に保存されていないと駄目なのかな?あとセーブする時にうっかり既存の名前いれるとエラーして無限ループに入るのがちょっと危険w(→なんとアップデートでエラー時に回転止まるように修正されました。boothにてv1.2.1で修正されてます。感謝!!)
ファミコンのディスクを自作ケースに入れたやつで、まずはBoomBox動きました♪ pic.twitter.com/x89jmC4JhL
— とよしま (@toyoshim) April 21, 2024
で、ある程度の確認がとれたので、このケースのデータはここに公開しちゃいます。このデータでJLCPCBで作ってもらいました。細いところもあって「このまま作ると破損するかもしれないけど良い?」みたいな事を聞かれるかもしれないので、その時は「自己責任」でOKした上で依頼してみてください。何個か割れかけたのが混ざってるかな?くらいで仕上がるとは思います。片面のデータなので、ペアにして1枚のケースを構成します。
2024/9/23追記:選ぶ材質によっては湾曲して実用にならないようです。自分もベストな選択をしているわけではないですが、SLA(Resin)-Black Reginで実用に耐える成形ができています。
実際に作る際の手順も少し書き残しときます。
まずはディスクの分解。この書き込み禁止のところが一番攻めやすい気がします。ピンセットでうまく引っ掛けて、テコの原理でミシミシっとやると良いです。磁性面が見えてる窓とかもやりやすいとは思うんですが、磁性面をに傷をつけたらアウトなので、四つ角から攻めるのが良いです。それかNintendoロゴの粉砕。あの部分もガワだけ……だけど硬いし非推奨。破片で磁性面を傷つけるリスクもありますし。
2024年3月23日土曜日
ついにNew City Heroが実機で遊べた
前回のNew City Hero @ j80/macの続き。
エミュレータで動作確認してから実機で〜という事で奮闘しておりました。
まずは搭載メモリの確認からです。
これ、手持ちの実機調べたら32KB載ってるみたいだった。めでたしめでたし。
— とよしま (@toyoshim) December 31, 2023
> 発売当初は搭載メモリ16Kモデルのみの販売であった。さらに16Kの増設が可能で、増設して購入するユーザが大半であったため、32Kモデルも後に販売された。 https://t.co/BXpnYbpg8R
そしてM.K WorkshopさんのPSA基板を利用してボードを作成しようと思ったのですが……上のスレッドでも書いているように、どうにも世の中は半導体不足。表面実装の74ロジックICが思うように手配できません。指定ではLSになっている部品もやむを得ずHCを使う事に……そしておそらくこれが敗因。HCだと出力弱いからファンアウト大きくできないし遠くに飛ばすには不向きってあたりが怪しいのかな、と。
NCH起動直後に落ちる問題の調査。
— とよしま (@toyoshim) January 20, 2024
内藤さんがプログでPCG定義するBASICのサンプルを置いてくれてたので、まずはありがたくそれを試す……と、これはメモリが不安定デスねwww pic.twitter.com/oE5rbCv23X
ハンダ周りを見直して気になるとこは盛り直したり、色々とチェックしてみたんだけど改善せず。タイミング周りを調査するのは手間だし、頑張ってもあまり得るものも無い気がしたので、元々の最終ゴールだった完全自作へと踏み出します。
基本はPSAベースなのでI/O 1981年6月号の記事を読み解いていきますが、論理はCPLDに全部収める方針。また、NCHが3chサウンド対応なので、その部分の拡張も取り込んでいきます。またこのPSAではPCG-8100同様に文字コードの半分の128キャラ分を任意パターンに置き換えられるようになっていますが、256キャラ全部を置き換える拡張にも対応させました。
PSAが安定しなくて納得いかないんで、ソケットに直刺しして8253とアンプ以外はCPLDで組む、不確定要素の少ない基板をおこそうと思ってるんだけど、なんか元記事みたら嫌な回路が混ざってた。CHR RAM書く時の制御信号。帰還させる口を出すか、FFに置き換えるか…… pic.twitter.com/Ks1Jsbdiet
— とよしま (@toyoshim) January 28, 2024
この辺りの回路も同期回路で置き換え。Verilogで100行ちょっとくらいの論理です。Z80からのI/Oを受けて、かつキャラクタージェネレータ側のアドレスバスとデータバスに繋げる必要がありピン数は70くらいは必要。またピン数多い=レベル変換したくないので5Vトレラントなデバイスが良い……という事で現行チップから候補を見つけるのは難しく、骨董品のMAX7000(7128STC100)
足の多いCPLDは入手困難だし、制御以外のバスマルチプレクサやレジスタは外に出すかーって見積もったら、制御はGALで十分だな……こういうの1つ中に入れるたびに最低16くらいの単位で必要ピン数増えてくし、FPGAとかレベルシフタ並べると部品減らないし。
— とよしま (@toyoshim) February 3, 2024
ミキサーとアンプはM.K.Workshopさんの回路を追ってこんなもんかなーって書き起こした回路図を眺めて、増幅回路の教科書的なものと見比べて怪しいと思ったところを手直し。たぶん回路を追いそびれたり読み間違えたりしてる。
そして届いたのがこれ。
表面実装のコンデンサは綺麗につけるの難しいし、確実に線が繋がってるかの自信が持ちにくい。ただでさえ回路に自信がないから不確定要素を減らすために工場で実装してもらっちゃってます。CPLDとかSRAM、ボリュームなんかはあちらで手に入らないものだから自分の方で実装。
取り敢えずノーマルモードは動いてるのでピンアサイン間違えたり配線失敗したりとかは無さそう。
— とよしま (@toyoshim) March 6, 2024
PSAモードの論理は基板と一緒に書いたけどテスト全くしてない。本体壊しても嫌なので少しテスト書いてから明日にでも試してみますわ。 pic.twitter.com/NTFLAah7qw
最初のテストはこんな感じで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ありますか?って話でもありますけど。
自作PSA、検証終わったので試しに火を入れた。こいつ、動くぞ!
— とよしま (@toyoshim) March 20, 2024
ひゃっほー!! pic.twitter.com/GLdWbKPpLy
こんな感じでばっちり動作、安定してます。NCHクリアまで遊び倒したいと思います。ちなみに実装スペース的には下に一段下駄を入れて上下ちょうど収まる感じですね。下駄がないと下側で他のチップとぶつかるかもしれないし、上もこの状態でキーボード基板に接触しないスレスレでした。接触してもショートしそうな部分がないのは安心ですが、放熱的に少し心配ではありますね。Z80やROMはそれなりに熱くなりますし。
2024年3月14日木曜日
Apple IIc をメンテしてフロッピーから起動するまで
Apple IIeは持ってたんだけど、最近IIcを手に入れて。ACアダプターがなかったので海外から手配したら、なんか長年Apple IIどっぷりな方で、いろいろな資料といっしょにWozとのツーショット写真が送られてきた……というのはまた別の話。
AppleIIc用の電源アダプタを手配しただけなんだけど、その何倍もの資料やら手書きメモなどが送られてきた。海外の当時勢は熱量が凄い。
— とよしま (@toyoshim) March 10, 2024
CoCo3の同人ハードの時も日本からの注文は初めてだって凄く良くしてくれたし。
……と開けたら中に名刺が入っており……大学の教授だwww pic.twitter.com/rFYQNVwVZF
で、IIeを持っていたけど全然使い込んでないから何から手をつけたら良いのかわからない……というところからドライブをメンテ、仮想HDや仮想FDを駆使しつつ、実FDから起動するまでのメモです。
まずは動作確認をしてみたところディスクドライブのエラーで止まる。ドライブが生きてる事は期待してなかったけど、ここで止まって何もできないのは想定外。IIcまったくわからん……ってなりかけてたんだけど、ほとんどがヘッドクリーングで治るという話をみかけてチャレンジ。
という事で電源投入チャレンジ。
— とよしま (@toyoshim) March 10, 2024
これが出るのはほぼ期待通りで、ヘッドクリーニングでほぼ治る、とRedditのスレに書いてあったw
けど、また来週かな、これは。 https://t.co/JYHjeBoMwC pic.twitter.com/g6lHFJKaGA
Apple IIcの分解は手前の爪を外すところがちょっと難しい。IFIXITのDisassembling Apple IIc Coverに詳細が説明されてるんだけど、写真みても実際に外してみても、うーん……どうなってたんだ?って感じでした。ここが外れたら、ディスクを下に残して、最後に裏面がまたトリッキー。うまく説明もできないので、YouTubeで誰かの修理動画さがして見て下さいw
ドライブについてはApple IIc Floppy Drive Replacementを見るとヘッドにアクセスするとこまで分解できます。1Dなのでヘッドが下面にしかついてないのが新鮮。裏面にはベルトがあります。交換し易い場所にありますが、今回はなんとまったく劣化していませんでした。気になる点は
- ベルトの劣化でディスクが回転しなくなってないか
- ヘッドが汚れていないか(問答無用でクリーニングで良いかと)
- ヘッドが移動するか
ちなみに実際には、直さなくても先に進めるし、メディア入れてなければ壊れてなくても必ずこのエラーで止まるんだけど、それを知ったのは分解後なのであった。ちなみに、ここから内蔵BASICへ進めるにはCTRL+🍏+RESETを押せばOK。なんじゃって感じだけどRESETは単体押しだと何も起きない、ただの一般キーなのね。
ここに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。
そう言えばDO+に2DDメディアもそこそこ付いてきたので助かる。一枚千円くらい出せばまだ辛うじて手に入らない事もないけと。
— とよしま (@toyoshim) February 14, 2024
3.5だと良く2HDメディアを2DDフォーマットして使ってたけど、5インチ駄目っぽい話も出てるな。もう少しキープできるうちにした方が良いんだろうか。
この辺で軽く調べたんだけど、メディア的には5.25"の場合のみ2DD以前と2HD以降でコーティングに大きな違いがあり、2HD以降ではより強い磁力で書き込む必要があるらしい。ので2DD以前を想定したドライブでは2HDには書き込めない。のでその境界を越えなければ基本的にはより新しいメディアはそれまでのメディアと互換性があると思って良い。
あと1*と2*は片面両面の違いなので、1*に対して2*のメディアはちょっと細工すれば裏返して別ディスクとして使えます……って話はこの辺から。ライトプロテクションの場所に穴を開ければOK。
うぉー、Apple IIcなんとかブートストラップ構築してフロッピードライブから起動できる事を確認!分解掃除したけどベルト健在だったよ、すげぇ……
— とよしま (@toyoshim) March 13, 2024
5.25" 1Dは2DDのメディアでいけるから、基本5.25"は2DDと2HDのメディアがあれば生きていけそう。
これ、裏返して1D x2で使えたりするんかな? pic.twitter.com/D14hRCW60p
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常駐させてます。
https://t.co/yjNQHjeJJu
— はう (@Hau_oli) August 17, 2021
ファイル倉庫です。ch30_omake.sysの新しいのとかを入れております。
Xellent30実機での動作は確認済みですが、ストレージとかいろいろぶっ壊れても構わないよの人柱モードでの運用をどうか宜しくお願い致します。無保証です。
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で利用できる最大サイズやファイルシステムの限界の話です。
ストレージのコピー終わり!
— とよしま (@toyoshim) February 27, 2024
SxSI運用に切り替えた。ch30 omake fullからbootしてるから、config.sysとかそのままで他のSCSIマシンでもbootできるはず。
あとSCSI0でDynaPORTを有効にしてる。出来たらネプチューン互換のドライバ用意したいな。 pic.twitter.com/me94GS34kc
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されてます。
2022年12月の修理の時の写真漁って逃げた。IX1264がEXPERTの相当品っぽいな。SASIのコネクタは左下のやつだと思うから、その横にある642が該当品で、基本的には設計変更なしっぽい。まずは642探そ。写真残しとくもんだな。 pic.twitter.com/3tEPnDL7Ja
— とよしま (@toyoshim) February 11, 2024
場所的には底面基板に各種IOやFM音源がいます。CPU側のメイン基板から来てるケーブルにバスが全部載っており、電源側の基板からは電源と各ポートの入出力が繋がってます。Sと書かれた2本線がサウンド出力で内蔵スピーカーに向かっているようです。
投稿でカスタムと642の場所を説明してますが、さらに38は642の右に2つ並んでる38のうち左側のものがSASIとカスタムの間にあるやつです。今回は642にあたりを付けて交換しましたが、制御がおかしい場合にはこの38を交換する必要があるかもしれません。他にはアレイ抵抗が壊れてショートしていないかなども注意した方が良いと思いますが、底面基板なので電源入れて直接電圧を確認するのは難しいです。もし怪しいと思ったら、外に出てるSASIポートの電圧で確認するのが良いと思います。
データバスに関してはソフトでレジスタ叩いて出力の変化を見るのが良いかもしれません。
ハードいじる前にソフトに見える挙動を確認したかったのでテスト。
— とよしま (@toyoshim) February 25, 2024
これ、642のDIRECT制御が正しくなくなった時にカスタムと信号が衝突して、一部のbitは642側、残りのbitはカスタム側のトランジスタが壊れた?
642が外向きなのに一部のビットだけしか立たん。 https://t.co/Hhllsdgr9X pic.twitter.com/p1xqqQyADu
カスタムは出力中でもピンの電位を読み出せるようです。つまり、書いた後に読んだ値が実際にカスタムと642の間のデータバスの電位になります。ここで値がおかしいようなら642が外向きになっていなかったり、バッファが死んで常にGNDやVCCに張り付いているような状況が疑われます。一部張り付いているなら642を、全部張り付いてるなら38から入ってるI/Oを疑うのが良いかもしれません。またこの値は反転した形でSASIのデータバスに出ますから、ポートの電圧を測る事で642経由で期待通りの信号が出てるか確認できます。bitの値が0なら約3V、1なら約0Vですね。
今回は交換するまでは良かったんですが、交換時にソケット化したせいでICの位置が高くなってしまいシールドに接触するという大失態を侵しました。場所的にまさにシールドが出っ張っている位置なので要注意です。C1とか81あたりしか書けなかったら同じことをやらかしてる可能性大(笑)
裏面、絶縁対策!
— とよしま (@toyoshim) February 25, 2024
結局は最初の見立て、642交換で治ってたんよ(笑) pic.twitter.com/BufrT7eG0z
という事で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のハードディスクサポート何もわからん……からBlueSCSI認識してもらうとこまで辿り着いたよ……いけるか?! pic.twitter.com/Qze6y7TLdv
— とよしま (@toyoshim) January 11, 2024
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の倍数にする事
- 大きすぎると認識されないのでインタフェースの限界にあったサイズにする事
% 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がサウンドボードとぶつかっていて変更したり、画面に何も出ない設定になっていたり、そもそもコンデンサもげて挙動自体が怪しかったり……がスタート地点だったので、色々とリスト減らした上でなんとか正解にたどり着けた感じでした。