Win9xでの3.5インチ1.2MBフォーマット対応について

以前の記事で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英語版でも読み書きできる可能性はあるが、どうなんだろう。

260419 ネプ新キャラ

Image: 260419 ネプ新キャラ

超新時空ゲイム ネプテューヌ∞

ネプ新作のサイトを一巡してみたけど、つなこが描くキャラクターはやっぱいいっすね。由来は見た目で連想しやすいですが、名前がフランス語っぽい繋がりがあるのは何なんでしょう。システムについては、高低差も含めた空間バトルになりそうですが、詳細はまだ出てきていません。過去作より自由度が高いことは確かですが、それをゲームシステムにどう落とし込むかですね。

16/32ビット混在バイナリ(Win16アプリやVXD形式)を逆アセンブルする

Image: 16/32ビット混在バイナリ(Win16アプリやVXD形式)を逆アセンブルする

通常の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など) を逆アセンブルできるということを最近知った。(もっと早く知っていればエミュレーターのデバッグが捗ったかもしれないのに!)

Image: IDA Freeware version 4.1

次のリンクからidafree.zip (Interactive Disassembler Pro Freeware version 4.1) をダウンロードして適当な場所に展開する。

IDA Pro Freeware (web archive)

このバージョンの実行ファイルはWin32コンソールアプリケーションで、Windows XPで動かすのは比較的簡単だが、現行のWindowsで動かすには大変。

Windows 2000, XP 英語版で動かすには

展開したアーカイブ内のidaw.exeを実行するとIDAが起動する。マウスカーソルが動かない場合は以下の処置が必要。

  1. idaw.exeを右クリックしてショートカットを作成する。
  2. 作成したショートカットを右クリックしてプロパティーを開く。
  3. オプション タブ - 簡易編集モード のチェックを外す。
  4. OKボタンで閉じる。
  5. このショートカットからIDAを起動する。

英語版以外のWindows 2000, XPで動かすには

手順3までは上と同じ。

  1. 「現在のコードページ」を「437 (OEM - United States)」に変える。
  2. OKボタンで閉じる。
  3. このショートカットからIDAを起動する。

Windows 10, 11で動かすには

  1. テキストエディターで以下の内容のバッチファイルを作成し、idaw.exeと同じフォルダーに置く。
chcp 437
idaw
  1. このバッチファイルを右クリックしてショートカットを作成する。
  2. 作成したショートカットを右クリックしてプロパティーを開く。
  3. オプション タブ - 簡易編集モードのチェックを外す。
  4. レガシ コンソールを使用する にチェックを入れる。しかし、Windows 11ではレガシーコンソールモードはオプション機能となっていて、追加インストールする必要がある。設定アプリを開き、システム→オプション機能→機能を表示→使用可能な機能を表示する→Legacy Console Hostを追加する。もしくは、Powershellを管理者権限で開いてAdd-WindowsCapability -Online -Name Microsoft.Windows.Console.Legacyを実行する。
  5. フォント タブでサイズとフォントを再セットする。
  6. レイアウト タブ - 画面バッファーのサイズ - 幅 80、高さ 25 にセットする。
  7. OKボタンで閉じる。
  8. このショートカットからIDAを起動する。

Image: ショートカットのプロパティ

Win2kで単密・倍密 (FM/MFM) 混在フォーマットのディスクをイメージ化する

私はてっきり自分の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/)を使ってディスクイメージを作成するところ。

Image: IMD

次はWindows 2000上でSAMdiskとfdrawcmd.sys (https://simonowen.com/)を使ってイメージ化したファイルの情報を出力。特別なオプションは使用せず、samdisk a: rxtrain.dskを実行してイメージ化した後、samdisk rxtrain.dsk rxtrain.d88でD88形式へ変換した。

Image: SAMdisk

なお、抽出したディスクデータの正体。

Image: VM Training Disk

3.5インチディスクについては360 RPMに対応する内蔵ドライブを持っていないため試していない。

Windows 2000以降で利用できるフロッピーフォーマット

Image: Windows 2000以降で利用できるフロッピーフォーマット
Win32 APIのKernel32.dllが持つDeviceIoControl 関数にIOCTL_DISK_GET_MEDIA_TYPESコントロールコードを送ることで、あるドライブで利用可能なディスクフォーマットのジオメトリー情報を知ることができる。そこで、Windows標準ドライバーで動作する内蔵5.25インチFDDと3.5インチFDD、一般的なスリムタイプのUSB外付け3.5インチFDD(デバイスマネージャーでの表示名はY-E DATA USB-FDU USB Device)について調べてみた。
本文を読む…

XREAからコアサーバー (CORESERVER V2) への移転方法

大雑把な手順と注意点だけ書く。詳細は各オンラインマニュアルを参照。

想定条件

  • ドメインはValue Domainで独自ドメインを取得済み
  • CGIやPHP、WordPressを使用しない静的コンテンツのみホストする
  • FTPクライアントはFileZillaを使用する

手順

この順番通りじゃないと上手くいきません。

  1. コアサーバー (V2) のアカウントを取得する
  2. コアサーバーに取得済みドメインを登録する(DNSの設定変更は後回しでいい)
    ドメイン設定の新規作成 | マニュアル | サポート | レンタルサーバー CORESERVER(コアサーバー)
  3. 設定したドメインのルートディレクトリにファイルをアップロードする(任意)
    FileZillaの設定方法 | マニュアル | サポート | レンタルサーバー CORESERVER(コアサーバー)
    デフォルトのリモートディレクトリは/domains/<ドメイン名>/public_htmlに設定する。このディレクトリにアップロードしたindex.htmlがそのドメインのトップページになる。
  4. XREAサイトの無料SSLを解除する
    無料SSLの新規設定 | マニュアル | 無料から使えるレンタルサーバー【 XREA(エクスリア)】
  5. 取得済みドメインのDNS設定を変更する
    DNS情報・URL転送の設定 | バリュードメイン ユーザーガイド
  6. コアサーバーに無料SSL(常時SSL)を設定する
    無料SSLの新規設定 | マニュアル | サポート | レンタルサーバー CORESERVER(コアサーバー)
  7. 取得済みドメインを無料対象として紐付け申請する(V2プランのみ。購入後1か月以内に申請する必要あり。)
    既存ドメインを永久無料対象として紐付け | マニュアル | サポート | レンタルサーバー CORESERVER(コアサーバー)

260414 CORESERVERへ移転完了

あなたがこれを読んでいるということは、サーバーの引っ越しは無事に完了しています!

サイトの構造はほぼそのまま、見た目も変えていません。ただ、静的サイトジェネレーター (Hugo) をバージョンアップしたときに発生したエラーを解決するためにテンプレートを修正したので、内部のコードは若干変わっています。インデックスページは5ページまでさかのぼれます。それ以上さかのぼるビジターはほとんどいない中、毎回200ページ近くのインデックスをビルドするのは時間と資源の無駄遣いになっているため、やめました。カテゴリーやタグ、記事一覧からは従来通り全て参照できます。

260413 Cloudflareへの移行を検討するが...

Hugoで作ったサイトを設置するにふさわしいWebホスティングサービスを調べて、VercelかNetlify、Cloudflareの3択に絞った。Vercelは無料プランでは一切の商用利用が認められていない。このサイトではアフィリエイトリンクはあまり貼っていないが、全くないわけでもない。Netlifyは調べている過程で、日本からのアクセスは遅いという話(5年前の記事だが)があり、対処法はあるらしいが手間を掛けるのは勘弁なので、候補から外した。

Cloudflareを検討

Cloudflareは無料プランでも商用利用可能。Gitリポジトリーを通したビルドは月間500回まで。ファイル数は20,000。1ファイルのファイルサイズは25MiBまで。この中で少し気掛かりな制限はファイル数か。現状、このサイトには11,000ファイルがある。2025年の1年間で約800ファイルが増えているので、このペースだと10年後には20,000を超えている。また、ファイルサイズが数百MBあるので、ローカルプレビューや同期の負荷が重い(そのため現状でも画像ファイルは過去2年分しかローカルに保持していない)。この対策として、昔のGoogle Driveのように外部配信可能なクラウドストレージサービス “Cloudflare R2” を使った方法がある。記事と画像でアップロード先を変えるとなると、一手間加えないといけないが、自動同期まで設定できれば、そこまで大きな負担にはならないだろう。

Hugoテンプレートを修正

今のテンプレートは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のインフラに魅力を感じるなら有か。

260412 XREAレンタルサーバーをやめたい

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をビルドしてくれるのは少し魅力的なので、もう少し勉強してみて、できそうだったらやってみる。