シーズン2くる~?色んなニューフェイスがチラ見せしていて、議論が捗る。
シーズン2くる~?色んなニューフェイスがチラ見せしていて、議論が捗る。
以前の記事でWindows 2000以降がサポートするフロッピーディスクフォーマットについて書いたが、Win 9xではどうかというと、これがまた複雑な状況になっている。
ハードウェアの制約により、PC/AT互換機で3.5インチ1.2MBフォーマットのディスクを読み書きするには3モード対応FDDを搭載したPCとドライバーが必要なことはこちらに書いた通り。
→ PC/AT互換機のWin98にてPC98 1.2MBフォーマットのフロッピーディスクを読む
これに加え、Windows 95, 98, Meの日本語版に限り、Windows上で1.2MBフォーマットのディスクを読み書きできる。既にフォーマットされたディスクを読み書きすることはできるが、フォーマットすることはできない。また、MS-DOSモードではアクセスできない。
まず、1.2MBフォーマットと1.44MBフォーマットの仕様の違いは次の通り。1.2MBフォーマットの仕様は8インチ2Dディスクに由来し、5.25インチや3.5インチHDディスクではサイズやこれに関係する記録密度以外は同じ。
| フォーマットの種類 | 物理仕様 | 論理仕様 | ||||||||||
| 媒体の種類 | 回転速度 | トラック密度 | 記録方式 | 転送レート | 面数 | 容量(U) | セクタサイズ | セクタ数 | シリンダ数 | 容量(F) | ||
| 2D(1.2MB) | 8" 2D | 360rpm | 48tpi | MFM | 500Kbps | 2 | 1.6MB | 1024B | 8 | 77 | 1232KiB | |
| 2HD(1.44MB) | 3.5" 2HD | 300rpm | 135tpi | MFM | 500Kbps | 2 | 2.0MB | 512B | 18 | 80 | 1440KiB | |
Win 9xにおいてディスクアクセスの最下層(ハードウェアとの通信)を担うドライバーをPort Driverと呼び、フロッピーディスクの場合はHSFLOP.PDRというファイルがこれを担っている。Win 9x日本語版に含まれるHSFLOP.PDRのみ、3モードFDDのモード切り替え(別途、サードパーティの3モード対応ドライバーが必要)や1.2MBフォーマットに対応している。このPort DriverはBIOS (Int 13h) を使わないため、BIOSで3モードFDDのサポートが有効かどうかは関係なく、マザーボードのSuper I/O (FDC)に対応するドライバーがあれば、3.5インチ1.2MBフォーマットのディスクにアクセスできる。5.25インチドライブではこの制約はなく、Win 9x日本語版であれば読み書きできる。
Win 9xにおけるディスクフォーマットの判別メカニズムはDOSのそれと同じ。ディスクの最初のセクターにあるBPB (BIOS Parameter Block)のジオメトリー情報が正当であれば、それを利用する。BPBが有効でない場合は、メディアディスクリプターの値から判別して、ドライバー自身が持っているBPBをコピーする。Win 9x日本語版のHSFLOP.PDRだけ、1.2MBフォーマットのメディアディスクリプター (0FEh) に対応したBPBを復元できる。正当なBPBを持つ5.25インチ1.2MBフォーマットのディスクならWin 9x英語版でも読み書きできる可能性はあるが、どうなんだろう。
ネプ新作のサイトを一巡してみたけど、つなこが描くキャラクターはやっぱいいっすね。由来は見た目で連想しやすいですが、名前がフランス語っぽい繋がりがあるのは何なんでしょう。システムについては、高低差も含めた空間バトルになりそうですが、詳細はまだ出てきていません。過去作より自由度が高いことは確かですが、それをゲームシステムにどう落とし込むかですね。
通常のIDAフリーバージョンでは純粋な16ビットMS-DOSアプリケーション (COM, EXE) とWin32 PEバイナリ (EXE, DLL) しか逆アセンブルできないが、古いバージョンではOS/2やWin 3.x, 9x用NE (New Executable) ヘッダーやLE (Linear Executable) ヘッダーのバイナリ (EXE, DLL, VXDなど) を逆アセンブルできるということを最近知った。(もっと早く知っていればエミュレーターのデバッグが捗ったかもしれないのに!)
次のリンクからidafree.zip (Interactive Disassembler Pro Freeware version 4.1) をダウンロードして適当な場所に展開する。
→ IDA Pro Freeware (web archive)
このバージョンの実行ファイルはWin32コンソールアプリケーションで、Windows XPで動かすのは比較的簡単だが、現行のWindowsで動かすには大変。
展開したアーカイブ内のidaw.exeを実行するとIDAが起動する。マウスカーソルが動かない場合は以下の処置が必要。
手順3までは上と同じ。
chcp 437
idaw
Add-WindowsCapability -Online -Name Microsoft.Windows.Console.Legacyを実行する。私はてっきり自分のPC/AT互換機ではFM(単密度)フォーマットのフロッピーディスクを読むことはできないと思っていたのだが、5.25インチFDDを接続する機会があったので試してみたら、イメージ化することができた。使用しているマザーボードはASUS P2Bで、このマザーボードのSuper I/OはWinbond W83977TF-AW。
PC-98のDisk BASICでフォーマットされたディスクをイメージ化してみる。このディスクは最初のトラックだけ単密度(FM)、128バイト/セクターで、残りは倍密度(MFM)256バイト/セクターでフォーマットされている(一般的にMS-DOSが使用するフォーマットは全て倍密度512バイト/セクター)。このため通常はPC/AT互換機のDOSやWindowsで読み書きすることはできないが、IMDやSAMdiskはBIOSやWindows標準ドライバーを介さないため、使用環境次第では読み取ることができる。
次はDOS 5.0上でImageDisk (http://dunfield.classiccmp.org/img/)を使ってディスクイメージを作成するところ。
次はWindows 2000上でSAMdiskとfdrawcmd.sys (https://simonowen.com/)を使ってイメージ化したファイルの情報を出力。特別なオプションは使用せず、samdisk a: rxtrain.dskを実行してイメージ化した後、samdisk rxtrain.dsk rxtrain.d88でD88形式へ変換した。
なお、抽出したディスクデータの正体。
3.5インチディスクについては360 RPMに対応する内蔵ドライブを持っていないため試していない。
大雑把な手順と注意点だけ書く。詳細は各オンラインマニュアルを参照。
この順番通りじゃないと上手くいきません。
/domains/<ドメイン名>/public_htmlに設定する。このディレクトリにアップロードしたindex.htmlがそのドメインのトップページになる。あなたがこれを読んでいるということは、サーバーの引っ越しは無事に完了しています!
サイトの構造はほぼそのまま、見た目も変えていません。ただ、静的サイトジェネレーター (Hugo) をバージョンアップしたときに発生したエラーを解決するためにテンプレートを修正したので、内部のコードは若干変わっています。インデックスページは5ページまでさかのぼれます。それ以上さかのぼるビジターはほとんどいない中、毎回200ページ近くのインデックスをビルドするのは時間と資源の無駄遣いになっているため、やめました。カテゴリーやタグ、記事一覧からは従来通り全て参照できます。
Hugoで作ったサイトを設置するにふさわしいWebホスティングサービスを調べて、VercelかNetlify、Cloudflareの3択に絞った。Vercelは無料プランでは一切の商用利用が認められていない。このサイトではアフィリエイトリンクはあまり貼っていないが、全くないわけでもない。Netlifyは調べている過程で、日本からのアクセスは遅いという話(5年前の記事だが)があり、対処法はあるらしいが手間を掛けるのは勘弁なので、候補から外した。
Cloudflareは無料プランでも商用利用可能。Gitリポジトリーを通したビルドは月間500回まで。ファイル数は20,000。1ファイルのファイルサイズは25MiBまで。この中で少し気掛かりな制限はファイル数か。現状、このサイトには11,000ファイルがある。2025年の1年間で約800ファイルが増えているので、このペースだと10年後には20,000を超えている。また、ファイルサイズが数百MBあるので、ローカルプレビューや同期の負荷が重い(そのため現状でも画像ファイルは過去2年分しかローカルに保持していない)。この対策として、昔のGoogle Driveのように外部配信可能なクラウドストレージサービス “Cloudflare R2” を使った方法がある。記事と画像でアップロード先を変えるとなると、一手間加えないといけないが、自動同期まで設定できれば、そこまで大きな負担にはならないだろう。
今のテンプレートはHugoを8年前からアップデートせずに組み合わせて使っているため、Hugoの最新版でプレビュービルドしたところ、いくつかの仕様が変わった部分で不具合が発生した。私のテンプレートはインデックスのpaginatorとタグ、カテゴリーのインデックスページをあまり一般的でない形に改造しているので、ここを修正するのに少し手間取った。
GithubにファイルをアップロードしてCloudflareでディプロイを組むところまではできた。Github Desktopでプッシュした変更は、間もなくCloudflareでHugoが自動的に実行される。これは確かに便利だ。
しかし、ここで一つ難題が発覚した。私のサイトは一つのドメインにサブディレクトリーでHTMLページ群とHugoで生成したページ群を住み分けしている。一方、Cloudflareの自動ビルドはサブドメイン単位で設定される。また、旧来のHTMLサーバーのようなFTPアクセスやファイルマネージャーというものは存在しない。サイトの構造を変えないといけないようだ。HTTP 301応答でリダイレクトを組むことはできそうだが、それは結局、構造の変更を受け入れることになる。8年間維持してきたページ構造を変えることは私としては避けたい。Cloudflareは断念して、今より運用コストが下がるCORESERVERへ丸ごと移すのが無難なんかねぇ。うーむ。
→一応、サブディレクトリーで運用する方法はあるにはある。Hugoなどで作った成果物をGithubへアップロードして同期する方法だ。FTPでのアップロードがGitに変わるだけなのでディプロイの恩恵はないが、Cloudflareのインフラに魅力を感じるなら有か。
2018年にXdomain無料レンタルサーバーの不調に耐えかねてXREA有料枠へ移動してきたけど、こちらも障害情報には掲載されていない程度のダウンタイムが多い印象がある。短いときは数分で復旧するけど、長いときは2時間近くアクセスできない。このブログは自分のメモとしてとっさに見返すときがあるので、必要なときに見られないのはストレスが溜まる。
XREAを運営するGMOでは有料専用プランでCORESERVERという上位サービスを展開している。こちらは月額380円(初回は20%引き)だが、今なら.comドメインなどの更新費用が永年無料になる特典が付いてくる。これはほとんど従来のドメイン更新費用と同額であり、XREA Plusを併用するより確実にお得だ。ただ、バナーリンクの宣伝ページには書かれていないが、このサービスの初回は初期費用として1650円が別途かかる。36か月契約で考えればないような数字だが、そこは気持ちの問題だ。
そのバナーを見つけるまでは、全く別のサービスへ乗り換えることを検討していた。Hugoでサイトを作っている人を見ると、Github PagesやNetlifyを使う人が多いことに気付く。個人利用なら無料プランで問題ないという。しかし、つい3年前に日曜プログラマーとしてGithubを使い始めた私には、CDNとかディプロイかよくわからん。Hugoを使っている人はみんなこんな小難しいことをやっているのか。それとも、始めてみたら意外と難しくないのか。ITインフラの整備は私の仕事じゃない。ただブログを書きたいだけなんだけどな。
markdownをプッシュしたら自動でHTMLをビルドしてくれるのは少し魅力的なので、もう少し勉強してみて、できそうだったらやってみる。