ソフトな忘却力(58) FreeDOS、MSYS2、MINGW64のQEMUで実行

Joseph Halfmoon

前回はWSL2上のUbuntu24.04 LTSのQEMUでFreeDOSを走らせて、コマケーところを「観察」しました。今回は、毒を食らわば皿までとばかり、Windows11上で「直接」QEMUを走らせ、その上でFreeDOSの動きをみてみます。「直接」とは言ってもMSYS2のお世話になることになるのでありますが。

※「 ソフトな忘却力」投稿順 Index はこちら

※実機動作確認には以下を使用しております。

先に結論

このところFreeDOSを QEMU(システム)上で走らせてみてます。過去回と今回で実行してみた環境は以下の6つが主です。

    1. ラズパイ4(Arm v8.0機)上でRaspberry Pi OS(64bit)、VNC接続GUI
    2. ラズパイ4(Arm v8.0機)上でRaspberry Pi OS(64bit)、SSH接続curses
    3. WSL2上のUbuntu 24.04 LTS(64bit)、GUI
    4. WSL2上のUbuntu 24.04 LTS(64bit)、curses
    5. Windows11 (MINGW64)、GUI
    6. Windows11 (MINGW64)、curses

うち、1、3、5のQEMUのGUI(VGAエミュレーション)ウインドウを開いて使う方式では、どれも問題なくFreeDOS1.3を使えてます。唯一、(物理)日本語キーボード使っている場合、FreeDOS側がUSキーボードがデフォルトであるため記号が「化け」ますが、前回確認したとおり、

keyb jp

を行えば日本語キーボード配列も対応可能でした。GUIのみで運用してしまう場合には FDAUTO.BATにkeyb jp入れておくのが良さそうです。

一方、2,4,6は、テキストのみでそれぞれのコンソール内でFreeDOSを動作させるものです。Windowsパソコンでは、Windows Terminalのウインドウ(タブ)内でFreeDOSが走るのでいろいろお楽。なお、こちらの環境では keyb jp しなくても日本語キーボードで普通に入力可能です。keyb jpすると、かえって日本語キーボードとは異なるキーボード配列になってしまいます。どこのキーボードだが分かりませぬ。こちらの環境を使うならば keyb jp しないっと。

このモードでの起動は、使用するQEMUのバージョンにより、QEMUに付加するオプションが以下の2通りに異なります。

-curses

-diaplay curses

2の環境では、Windows Terminalのコマンドプロンプトからラズパイ4機にssh接続してます。テキスト表示に関する限り問題はでておらず、スクリーンエディタやFreeDOSのユーティリティツールなどもフツーに使えます。罫線キャラクタも正常表示されます。

4は、Windows TerminalのUbuntuのウインドウ内で正常にFreeDOSが動作しているように見えます。唯一の欠点がFreeDOSのエディタなどで多用されている罫線キャラクタが「化ける」ことです。IBM PCの 0xA0以降に割り振られている拡張文字をWindows TerminalのUTF-8環境で表示するときに ?(ひし形反転)になってしまうみたいです。

6は、今回インストールの上、テストしたものです。MSYS2のMINGW64版QEMUでは、VGA Blank mode と表示され、期待したような操作を行えませんでした。

なお、追加で述べておくと以下のQEMUオプションを使っても、FreeDOSはSTDIOにシリアル接続した風で立ち上がり、コンソール画面内である程度の操作はできます。しかしキーによっては意図せぬ挙動が発生したり無反応だったりします。また、FreeDOSのエディタなどは使えませんでした。ちょっと無理。

-nographic

Windows11上で「直接」QEMUしてFreeDOS

Windows11上で直接QEMUは実行可能ではあります。詳細は以下ページに

Download QEMU

しかし、もともとQEMUはLinux環境でビルドされるソフトウエアのようで、Windows11上にMSYS2環境がインストールされている前提です。

みんな大好きMSYS2はWindows11上で「直接」Linux系のソフトウエアをビルドして実行できる環境です。ただし、以下のような条件でMSYS2といっても環境は一種類ではありませぬ(いろいろあり、ショーガ無い、ノージンジャー)

    • 32ビットなのか64ビットなのか
    • 実行ライブラリは MSVCRT なのか UCRT なのか
    • ツールチェーンは GCC なのか LLVM(コマンド名的には clang)なのか

この辺の詳しい話は御本家の以下ページなど参照くだされ。

MSYS2 Environments

さて、実際にQEMUが対応しているのは、以下の2種のみみたいです。

    1. MINGW64
    2. UCRT64

32ビットは不可、64ビット環境のみで実行ライブラリは(Windowsの伝統的な)MSVCRTと、(最近イケてる?)UCRTの両対応。しかし、ツールチェーンは(伝統の)GCCのみ。(最近人気の)LLVMには対応せず。

ということらしいです。知らんけど。

忘却力のお惚け老人は固陋に MINGW64 のみ、直ぐに起動できるように手元環境を整えてあったので、MINGW64上でのみQEMU+FreeDOSしてみてます。UCRT64環境の方は見てないのであしからず。

QEMUのインストールそのものは、「いつもの」pacman で可能です。お楽。

pacman -S mingw-w64-x86_64-qemu

上記でインストールしたQEMUのバージョンが以下に。QEMUversion

9.0.2 とな。過去回の中で一番あたらしいんでないかい。つい数か月前くらいのバージョンみたい。

GUIでフツーに起動してみれば、Windows11上にQEMUのWindowが開き、過去回でやったとおりでFreeDOSのインストールが可能。そしてQEMUのGUIウインドウの中ではフツーに操作が可能です。罫線キャラクタも化けないし、EDITも動作OK。日本語キーボード対応に keyb jp が必用なことは想定内。問題なし。

今度はQEMUに -diaplay curses オプションつけて、テキスト・モードでどうよ、と実行してみたらこんな感じ。VGABlankmode

ダメだあ。メモリの中では「走っている」のかもだけれども、取り付く島もないないっす。やっぱり実行環境的にはWindowsはLinuxとは違うということ?

結局、cursesモードは、「遠く」のマシンで使う分には完璧、近ければ近いほど何か問題があると。なんだかな。。。

ソフトな忘却力(57) FreeDOS、WSL2上のUbuntuでのキー入力あれこれ へ戻る

ソフトな忘却力(59) FreeDOS、FreePASCAL、インストールしてHELLO へ進む