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

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

2017-10-07 継続は惰性なり

なんか「memo」とか言ってるけどメモ的なことはtwitterとかのほうに書いちゃってるしなあ、うーん…

Raspberry PiのRaspbian jessieでNP2kaiをセルフビルドしてみた、的なメモ  Raspberry PiのRaspbian jessieでNP2kaiをセルフビルドしてみた、的なメモを含むブックマーク  Raspberry PiのRaspbian jessieでNP2kaiをセルフビルドしてみた、的なメモのブックマークコメント

2年ぐらい前にふつうの Debian jessie で xnp2 作ってみた時とだいたい同じで、記述内容もおおむねコピペです。

ポイントだけ先に書いておくと、x11版をそのままconfigureしてmakeするとpthread関連のリンクエラーが出るので、なんらかの方法で対処する必要があります。

下準備

必要なツール

build-essential
いろいろコンパイルに必要(最初から入ってたっけ? 覚えてない…)
autoconf, automake, libtool
configure と Makefile 作成
nasm
x86 コードのアセンブルに使う(np2埋込のx86ソースを変更しない場合は不要かも?)
unzip
np2tool の展開に必要(意外と忘れる)。あとソースをgithubから(git cloneしないで)ダウンロードする場合はソース展開に使う

必要なライブラリ(の開発キット)

libgtk2.0-dev
gtk2 のライブラリ(かなり依存パッケージ多め)
libsdl2-mixer-dev
SDL_mixer のライブラリ。SDL2用。(ほんとは libsdl2-dev があれば必須ではない)
libsdl2-ttf-dev
SDL_ttf のライブラリ。SDL2用。(sdl2版をビルドしない場合はいらない。でもsdl2版np2を作っておくとすこしだけ便利なので…)
libusb-1.0.0-dev
libusb-1.0.0(説明は特にないです…)

場合によってはあったほうがいいもの

git
ソースを弄りたい場合はあったほうがいいんじゃないかな…

以上を sudo apt-get install でインストールします。

次にNP2Kaiの最新版ソースを取ってきます。githubのリポジトリからgit cloneしてもいいですが、今回は安直にzipをダウンロードしてみます。
ちなみに自分は、ここから先の作業は /tmp ディレクトリの下で行いました。少しでもSDカードへの書き込みを抑えたいので…(実際の効果はよくわかんない)

$ wget https://github.com/AZO234/NP2kai/archive/master.zip

そのままunzip master.zip すると、NP2kai-masterというディレクトリの下にソースが展開されます。

X11版のビルド

まず autogen.sh を実行して configure と Makefile を作ります。

$ cd NP2kai-master/x11
$ ./autogen.sh

autogen.sh 内でconfigureが実行され、いちおうMakefileもできているのですが、もうすこし設定したいことがあるので configure をかけ直します。

というより、そのままだとリンク時にpthread関連のライブラリのリンクに失敗するため、そのあたりの指定を追加する必要があります。とりあえずリンク時の追加ライブラリに-lpthread指定すれば問題ないようですが、gccに専用オプション(-pthread)があるらしいので念のため使ってみました。コンパイル時に-pthreadオプションを指定するとマルチスレッド関連の定義(-D_REENTRANT)が追加され、リンク時には-lpthreadが追加されるようです(他にも何かオプションが使いされてる可能性があるけど、よく知らない)。

$ CPPFLAGS="-pthread" LDFLAGS="-pthread" ./configure --enable-build-all --disable-dependency-tracking

configureの設定を変えたら念のため

$ make clean

まっさらにしてから make します。今回は --enable-build-all をつけているので通常のxnp2とIA-32版のxnp21の両方が作成されます。

$ make

うまくいったらインストールしてもいいかもしれません。(今回はconfigure時に--prefixオプションを指定していないので、デフォルトの/usr/localにインストールされます)

$ sudo make install

SDL2版のビルド

要は sdl2 ディレクトリに移動して、

$ make -f Makefile.unix

もしくは

$ make -f Makefile21.unix

するだけです。
他の環境向けのビルドを行っていた場合はあらかじめ make clean してオブジェクトファイルの混在を防いでおきましょう(意外と忘れる…自分だけなのか?)。

sdl2版は実行バイナリ(np2 もしくは np21)と同じディレクトリに設定ファイルを作成するため、/usr/localの下などに「インストール」してしまうと逆にめんどくさいです。素直に自分のホームディレクトリで運用しましょう。


SDL2版np2の使い道

X11版だけでなくSDL2版もなんとなく作ってしまいましたが、実のところX11版が動作する環境でSDL2版を使うメリットは(現時点では)ほとんどないです。設定できる項目が少なくディスク選択もやや面倒(SDL2版はファイル選択にキーボードが使えない)で新規ディスクイメージ作成も未サポートです。なんでビルドしたし…しかしSDL2版にはX11版にはない機能があります。それはTrueTypeフォントからのフォントデータ生成です。

たとえばFONT.ROMその他のフォントデータを持ってきていない状態のxnp2を素のRaspbian jessieで起動すると、

f:id:lukewarm:20171008003405j:image:w480 f:id:lukewarm:20171008003401j:image:w480 f:id:lukewarm:20171008003358j:image:w480

まあこんな感じでして…そこで、

  1. xnp2の作業ディレクトリ ~/.np2 にSDL2版の実行ファイルと適当なTrueTypeフォントをコピーする。フォントファイルは default.ttf という名前にリネームしておく
  2. フォントキャッシュ(font.tmp)が残っていたら消しておく
  3. SDL2版np2実行
    f:id:lukewarm:20171008003354j:image:w360
  4. np2の画面上に日本語フォントがちゃんと表示されていることを確認したら、np2は終了してしまう(Alt+F4で終了できます)
  5. X11版のnp2を起動

f:id:lukewarm:20171008003350j:image:w480 f:id:lukewarm:20171008003345j:image:w480

フォントさえ用意できれば、ラズパイ内だけで作業が完結するのがいいところ(かなあ…?)。
見た目的にはWindowsのMSゴシック(msgothic.ttc)を使うのがいちばん無難だと思います。今回はKHドットフォントシリーズの小伝馬町16を使ってみました。そこはかとなくX68っぽい感じになります。

(そういやサウンド出力に関して、まったく確認してなかった…)

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) の起動システムをどうにか作ることができるのですがね…。

 

最近のコメント

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 |
2017 | 10 |

LP-Project
分所
@lpproj (twilog)
ページビュー
641246
Connection: close