DOS | OS/2 memo このページをアンテナに追加 RSSフィード Twitter

ありがちカテゴリ:DOS OS/2 bochs qemu
 

2016-09-11 メディアが先か、ドライブが先か

どうでもいい近況から始めますが、最近またUSBのFDドライブを入手しました(3台目)。
いや3台もいらないんですが、なんかハードオフで108円だったから、つい…まあ読み書き時にエラーの出るディスクもドライブを替えるとうまく読み書きできることがあるので完全に無駄ではないんですが。

しかしジャンクとは言え、メディアよりもドライブのほうが入手が容易になる(≒安い)とは予想外でした。こういうリムーバブルメディアってだいたいまともなドライブが入手できなくなったあとでも対応メディアがずっと売ってたりするもんなんですけどね…(部屋の片隅にある、もはや読み出し手段のなくなったPDメディアを眺めながら)

[] Windows 10 RS1 (Anniversary Update) でフロッピーディスクPC-98 2HD フォーマットができなくなった件とその対策  Windows 10 RS1 (Anniversary Update) でフロッピーディスクの PC-98 2HD フォーマットができなくなった件とその対策を含むブックマーク  Windows 10 RS1 (Anniversary Update) でフロッピーディスクの PC-98 2HD フォーマットができなくなった件とその対策のブックマークコメント

USB 接続の3モードFDドライブの場合、format コマンドにオプション(2000 および Vista 以降では /F:1.23、XP の場合は /T:77 /N:8)を明示することで、いわゆる 2HD 形式でフロッピーディスクを初期化できるのですが…というか、できたのですが、Windows 10 の最近の更新で、どうも出来なくなったようです。

f:id:lukewarm:20160911181735p:image

実のところ Windows におけるフロッピーディスクのサポートは21世紀初頭から縮小方向にあり、たとえばすでに Windows XP の時点で format コマンドが 2DD のフォーマットさえ公式にはサポートしなくなっていて、PC-98 向けの 2HD は /T と /N オプションを使った裏技的な方法でフォーマットするしかありませんでした。しかし Vista では 2000 と同様に /F オプションでの容量指定が通るようになり(やっぱり文句が出たんですかね…?)、つい最近の Windows 10 TH2 まではこれが使えました。そして RS1で、どうやら 2HD フォーマット機能は format コマンドから完全に削除されたように思われます。どうして事前に言ってくれないのか…まあ今まで使えてたのが単なる「(undocumentedな)サービス」というだけだったのかもしれませんが…。

愚痴をいっても仕方ないので、何か対策を考えてみましょう…。

対策1:(仮想マシンで)すこし前の Windows を使う

よーするに古い Windows なら使えるんやから古い Windows 使えばええんやろ?(直球)という身もふたもないソリューションですが、USB パススルー機能のある仮想マシンを使って、ゲストOS側に USB-FDD を直接認識させます。

まあ「できるかどうか試したい」という程度の気分なので、安直に Edge の開発サイトにある仮想マシンを適当に見繕って、"IE8 on Win7"の VirtualBoxアプライアンスをVirtualBox に入れてみました。

んでまあ、ホストに USB-FDD を接続して VirtualBox の VM を起動し、「デバイス」メニューの USB からそれっぽいデバイスを選んで VM にキャプチャさせます。

f:id:lukewarm:20160911184913p:image

f:id:lukewarm:20160911184951p:image

認識されたらふつうにフォーマット可能です。

f:id:lukewarm:20160911185023p:image

ゲスト側の言語設定とキーボードドライバをいじらないと、キーボードレイアウトが英語モードのままなので戸惑う。まあ format だけなら気になるのはコロンぐらいなので特に問題ありません。ほんとに format するだけならね…。

対策2:すこし前の Windows のインストールメディアを使う

だいたい上と同じですが、まあぶっちゃけ USB-FDD が認識され、コマンドプロンプトが起動し、format コマンドが使える状態になってればええんやろ?ということに気づいたので、インストール時にコマンドプロンプト開けばいいんじゃね?ということです。

とりあえず手元に Windows 8.1 enterprize の x86 評価版 iso があったのでそれを使いました。(format に 64bit は必要ないかな…)

例によって VirtualBox に適当な VM を作成し(念のため未フォーマットの HD イメージも接続しましたが、必要ですかね…?)、iso イメージを突っ込んで起動。

f:id:lukewarm:20160911190255p:image f:id:lukewarm:20160911190340p:image

コンピュータを修復する(R)を押して、「トラブルシューティング」→「詳細オプション」→「コマンド プロンプト」

f:id:lukewarm:20160911190457p:image f:id:lukewarm:20160911190456p:image f:id:lukewarm:20160911190455p:image

で、画面にコマンドプロンプトが出たら、同じようにホストの USB-FDD をキャプチャします。ただしこの場合、ゲスト VM 側に認識されても通知メッセージは何も出ません。

f:id:lukewarm:20160911190651p:image

まあ、実際に format して確かめればいいよね…(適当)

f:id:lukewarm:20160911190725p:image

実ディスクでない iso イメージを使う限り、まともにインストールされた Windows 7 を最初から起動するよりはこちらのほうが早くコマンドプロンプトにたどりつくんじゃないでしょうか(RTA並感)。


対策3:まじめに(?)代替 format を作る

…あかん、ネタが長すぎた。
一応フォーマットプログラムを自作しました。2HD フォーマットに関しては、手持ちの USB-FDD3台(YE-DATA と TEAC)でのみ動作確認しています。また 2DD 系は 640K バイトも指定できますが、これはドライブ側が対応していない場合が多いです(手持ちの TEAC の USB ドライブは未対応でした)。

x86, x64 バイナリ:format2hd-wip-20160811-bin.zip
ソース:だいたい https://github.com/lpproj/mydosuty/tree/master/win/format2hd のあたり

ベリファイチェックを端折っているので本家の format よりは高速かもしれません。メリットはそれくらいでしょうか…

2016-03-02 適当に

以前の更新が半年前か…。

[] FreeDOS(98) 方面の近況  FreeDOS(98) 方面の近況を含むブックマーク  FreeDOS(98) 方面の近況のブックマークコメント

(忘れそうなので先に書いておこう…最近のソースやら起動フロッピーイメージやらは以下の場所からどうぞ…)

http://bauxite.sakura.ne.jp/software/dos/freedos.htm
https://github.com/lpproj/fdkernel/releases

んで、最近、PC がらみ(の現実逃避)はこれぐらいしかやってないし…ということで前回からの進捗を書いてみようと思いましたが、要は

(純正 MS-DOS との)互換性向上

という一言になっちゃうんだよなあ…(というか、今後もそうなるだろう)。しいて言うと「WXP と ATOK が(たぶん)使えるようになった」というのが個人的には割と大きい。なにしろ「ATOK 動かない≒一太郎(ある意味 PC-98 で最もメジャーなビジネスソフト)使えない」だし。本当に長かったなあ、入れても死ななくなるまで、うん…。

…まあ、FreeDOS は DOS 6 相当の互換 DOS なので、DOS5 登場以前の FEP(に限らず、ファイルアクセスを行うデバイスドライバや常駐プログラム)の動作は基本的におすすめできないってのはあるんですけどね。本家 MS-DOS には一応そのための KKCSAV.SYS というドライバがあるのですが、これは int 21h にフックかましてごそごそやる系のあやしい(←ひでえ)ドライバなので、必要ないときは常駐させないほうがいいと思う。

あ、そうだ、重要なことを言い忘れていた。NEC AI は動作しません。あと動作対応もしません。あれ IO.SYS 内部をちょっと書き換えて、内部処理をオーバライドするっぽいんですよね…まじめに MS-DOS の内部解析しないといけないけど縛り違反だから…

おまけ:せっかく無料なので、動作確認してみた(ほぼツイッター上での報告の焼き直し)

コープスパーティーエンターブレインのサイトからダウンロードできる exe は Windows 用の自己展開バイナリですが、ふつうに MS-DOS 版の LHA でも展開できます。そのまま corpse.bat を実行するだけ。特に問題ないと思われます。

Demon's Eye:なんか検索したら製作元より先に紹介(攻略?)ページっぽいところが出てきた。int DCh 経由の画面消去と 20 行表示のエスケープシーケンス対応が必要でした…

画像は Demon's Eye III。ハードディスクにアーカイブを展開して hd.bat の実行で起動。なお、そこそこ空きメモリが必要なので、たぶん XMS ドライバと DOS=HIGH の設定が必要かと思われます。

2015-09-17 寒いッシュ(素描)

やたらと咳がでるので空きの花粉か…と思ったらふつうに風邪だったでござる。

[] FreeDOS(98) unstable kernel 近況 (2015-09-16)  FreeDOS(98) unstable kernel 近況 (2015-09-16)を含むブックマーク  FreeDOS(98) unstable kernel 近況 (2015-09-16)のブックマークコメント

こっちのほうは2ヶ月くらい書いてないか…前回近況からの更新分をおおざっぱにまとめると

  • SCSI ハードディスク対応
  • コンソールのエスケープシーケンス対応いろいろ追加
  • adddrv/deldrv (adddev/deldev) サポート
  • 日本語 (DBCS) ファイル名サポート
  • ハードディスク簡易初期化ツール(btnpart)
  • その他バグ修正

とかそんな感じでしょうか…。

実は日本語ファイル名サポートは昔やろうとして(メンドくさくて)放棄したことがあったのですが、今やってみたらそれほど実装に困ることもなくそこそこ動くようになってしまった。うーん、昔に比べて自分のスキルが向上したとかそういうことはないはずなのに(むしろ昔よりいろいろ退化してるし)これは何なのか…。まあファイル名に日本語が使われている系のソフトがヘンな小細工なしでふつうにインストールして起動できるようになったので(すくなくとも PC-98 用の DOS としては)そこそこ使えるようになったと思いたい。

あとはハードディスク初期化ツールを適当に作ってみました。FD イメージにカーネルと一緒にぶち込んであるので、これで MS-DOS に依存せずに実機やエミュレータFreeDOS(98) をハードディスク(イメージ)にインストールできるはずです。

とまあ更新(改善)点はこんなもんですが、PC-98 用 MS-DOS としての「互換度」に関してはまだまだ問題点が多いです。
一番の問題は FEP です。WX2, WX3系EPSON 版 MS-DOS 付属の WXA や Windows9x 付属の DOS 版 MSIME 含む)以外の FEP はほぼ動作しません。無理に入れると操作不能もしくはシステムクラッシュするレベルなので入れないでください。ちなみに WXP もダメだよ…。最初コンソールドライバの実装の問題かと思ってましたがもうすこし根深いようです。せめて ATOK 系は使えるとよかったんですがね。いやー直せるんですかねこれ(白目)。

KAZ.KKAZ.K 2015/09/18 12:03 もう正直うろ覚えなんですが・・・なにせTATOKDを作っていたときの話なんで、タイムスタンプみたら最後が2003とかだし。
要はNEC DOSのCONがBIOSの段階で8bitデータを出しても通してくれないのが一つ、ことあるごとにBIOSワークを直読みして勝手にキー入力を食べてしまうのが一つで、FEP側でその辺に対抗する必要があるです。ATOKが98版だけCON持っている(DOS/V版には無かったはず)のはその辺が理由かなと。
結局逆汗読んでないので実際のATOK8 CONがどういう実装かは知らないですが、さすがにIO.SYS自体をアレして動いている訳ではないと思うので、全部自前で処理する方針でIO.SYS管内のキー定義(60:[60:16C0]〜)等を直読みするか(TATOKD 2.0系まではコレ)、ごまかしてDOS CONにチェインする方針でタイミング計ってBIOSワークをちょろまかすか(TATOKD 2.1系はこっち)、たぶんどっちかしている筈です。後者ならIO.SYSへの依存度はまだしも低いですが油断するとすぐにスタック溢れで崩壊するし、やることはどっちも同じ程度にはやくざな感じで正直ロクな予感がしません。
TATOKDの実装をみたら他にもシステムラインの状態の辻褄あわせでIO.SYS管内60:0111を直読みしているのを見つけたけれど、この辺はそもそも本来のATOK8の挙動に似せて作ったのかどうかすら記憶がない。それ以外はBIOSワークの参照だけっぽいのでたぶん問題ない・・・ですかねぇ。

2015-07-25 暑いッシュ(素描)

冷房機器が扇風機しかない部屋で摂氏35度に勝てるわけないだろいい加減にしろ(脱水症状)

FreeDOS(98) unstable kernel 近況 (2015-07-24)  FreeDOS(98) unstable kernel 近況 (2015-07-24)を含むブックマーク  FreeDOS(98) unstable kernel 近況 (2015-07-24)のブックマークコメント

「いちおう」フロッピーディスクの読み書きに対応。

フォーマットしたフロッピーに付属の sys コマンドでシステムを転送すると FreeDOS(98) のブートディスクが作れます。
いちおう、というのもアレなんですが、アクセス速度がクッソ遅い(特に実機だと)というのが最大の問題点です。理由はいくつかあって、

  1. メディア入れ替え検出を行っていない(DOS に対して常に「入れ替え不明」を返す)
  2. 常に1セクタ単位でしか読み出さない

といったあたりが…まあつまり実装の手抜きです…。
エミュレータ上なら幸い(?)速度的にはあまり気になりません。まあ 98 系の実機をお持ちでなおかつ人柱精神旺盛な方は、実機でブートして、フロッピーディスクに dir コマンドかけてみるといいさ…2DD が超オヌヌメ…。

ところで、フロッピーへの転送は PC-98(系のエミュ)でなくても行えます(ハードディスクへのシステム転送は処理の過程で PC-98 のディスク BIOS を呼び出しているため、機種依存です)。あとはハードディスクの初期化と領域設定用のツールがあれば、純正 MS-DOS なしでも FreeDOS(98) の起動システムをどうにか作ることができるのですがね…。

2015-07-04 肉≒若さ

ラーメン屋でべつにチャーシュー麺でもないのにチャーシューが複数枚乗っかってるラーメンが出てくると「もうチャーシュー1枚でいいから、いやいっそなくてもいいから50円くらい安くなりませんかね…?」とか心の中で思ってしまうほどに肉恋しさ(ん?)が薄れている最近の自分。

でもチャーシューなしですこし安め(あるいは麺大盛)ってよくある「学生ラーメン」な気がしないでもない…。

[] FreeDOS(98) unstable kernel 近況 (2015-07-04)  FreeDOS(98) unstable kernel 近況 (2015-07-04)を含むブックマーク  FreeDOS(98) unstable kernel 近況 (2015-07-04)のブックマークコメント

twitter だけじゃなくてたまにはこっちにも書くか…、的な気分で。

いちおうちまちまと作業を進め、

  • 256 バイト/セクタの SASI ドライブ
  • 複数パーティション
  • 先頭パーティション以外からの起動

といったあたりに対応してみました。

カーネルのソースとバイナリも一応あげときました。適当にどうぞ。

 

最近のコメント

1. 09/17 KAZ.K
2. 04/19 tensor
3. 04/19 tensor
4. 04/19 sfish
5. 03/22 lukewarm
6. 03/22 SaitoAtsushi
7. 02/16 lukewarm
8. 02/16 SaitoAtsushi
9. 03/30 Roy
10. 03/25 lukewarm
1999 | 01 |
2000 | 01 |
2001 | 01 |
2002 | 01 |
2003 | 01 | 02 | 03 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 11 | 12 |
2012 | 03 | 04 | 06 | 07 | 08 | 09 | 12 |
2013 | 01 | 02 | 04 | 05 | 10 |
2014 | 03 |
2015 | 02 | 03 | 04 | 06 | 07 | 09 |
2016 | 03 | 09 |

LP-Project
分所
@lpproj (twilog)
ページビュー
510693