FreeDOS で SATA 接続 CD/DVD が利用可能に
FreeDOS で拡張メモリを使うために必要な重要コンポーネントの Jemm が昨年 12 月 v5.83 にアップデートされた。 実はこのバージョンで大きな機能追加がされていることに今更ながら気づいた。
Jemm Loadable Module (JLM) という 32bit protected-mode のデバイスドライバや TSR を拡張メモリにロードできるようになった。 この JLM 実装の例として CD/DVD ドライバが同梱された。 今まで SATA 接続の CD/DVD ドライブ用ドライバは安定的に動くものがほとんど無く、特に私のような AMD の Chipset で動くものは皆無だった。 そこに新たに JLM 版の AHCICD ドライバが登場したことで、ようやく安定的に SATA 接続 CD/DVD にアクセスできるようになった。
例によって修正後の自分の FreeDOS/V 環境を晒しておく。
FreeDOS/V 起動フロッピーイメージ
FreeDOS 1.3 リリースに関する記事 や kernel と FreeCOM アップデートの記事 から少し構成を変更し、
\FDOS\JP
ディレクトリへ DBCS 版 FreeCOM 以外に日本語関連のドライバ (FDCONFIG.SYS
の中から呼ぶもの) を入れるようにした。
本当は FDCONFIG.SYS
から呼ぶドライバは全部 \FDOS\BIN
から別のディレクトリに移したかったが、とりあえず他はそのまま。
Jemm Releases の v5.83 に同梱されている AHCICD.DLL
と XCDROM32.DLL
を \FDOS\JLM
ディレクトリに格納。
A:\
| KERNEL.SYS
| COMMAND.COM
| AUTOEXEC.BAT
| FDCONFIG.SYS
|
\--FDOS
+--BIN
| ...
|
+--XMSSWAP
| COMMAND.COM
|
+--JP
| COMMAND.COM
| FONTN.INI
| FONTNX.EXE
| 04GZN16X.FNT
| GURI16X.FNT
| GURI19X.FNT
| PANSI.SYS
|
\--JLM
AHCICD.DLL
XCDROM32.DLL
ディスクスペースに余裕が無くなってきたため DISPVB.EXE
等いくつかファイルを削っている。
Directory of A:\FDOS\BIN
[.] [..] ATTRIB.COM CHEJ.EXE CHKDSK.EXE
COUNTRY.SYS CP437UNI.TBL CP932UNI.TBL CPUID.EXE CPUSTAT.EXE
CWSDPMI.EXE DELTREE.COM DEVLOAD.COM DISPV.EXE DISPVA.EXE
DOSLFN.COM DSP4U.COM DSPVV.COM EIDL.COM EMSSTAT.EXE
FDAPM.COM FDISK.EXE FDISK.INI FDISKPT.INI FORMAT.EXE
JEMMEX.EXE JLOAD.EXE KEYB.EXE KEYBOARD.SYS LABEL.EXE
MEM.EXE MEMSTAT.EXE MI.COM MODE.COM MORE.EXE
MOVE.EXE MOVEXBDA.EXE NANSI.SYS SETVER.SYS SHSUCDX.COM
SYS.COM TREE.COM UMBM.EXE V.COM VASK.COM
VCHKBOX.COM VCHOICE.COM VCLS.COM VCPI.EXE VCURSOR.COM
VDELAY.COM VDELETE.COM VEACH.COM VECHO.COM VERRLVL.COM
VFDUTIL.COM VFONT.COM VFRAME.COM VGOTOXY.COM VINFO.COM
VINSERT.COM VLINE.COM VMATH.COM VMODE.COM VPAUSE.COM
VPCSPKR.COM VPROGRES.COM VREADKEY.COM VSTR.COM VVER.COM
VVIEW.COM XCOPY.EXE XMSSTAT.EXE
71 file(s) 669,028 bytes
2 dir(s) 48,128 bytes free
FDCONFIG.SYS
ディレクトリ構成変更に追従して若干変更。
JEMMEX 使用を前提として UMBPCI.SYS
は完全に外す。
;!SWITCHES=/F
!COUNTRY=081,,\FDOS\BIN\COUNTRY.SYS
!LASTDRIVE=Z
!BUFFERS=20
!FILES=40
!MENUCOLOR=7,1
MENU FreeDOS
MENU ----------------------------------------------------------------------
MENU 0 - Safe Mode (don't load any drivers)
MENU 1 - XMS
MENU 2 - XMS + EMS
MENU 3 - Japanese + XMS
MENU 4 - Japanese + XMS + EMS
MENU 5 - Japanese + XMS + DPMI
MENU ----------------------------------------------------------------------
MENUDEFAULT=3,10
0? ECHO Warning: basic stuff only!
12345? DOS=HIGH
12345? DOS=UMB
12345? DOSDATA=UMB
135? DEVICE=\FDOS\BIN\JEMMEX.EXE NOEMS X=TEST I=TEST
24? DEVICE=\FDOS\BIN\JEMMEX.EXE X=TEST I=TEST
345? DEVICEHIGH=\FDOS\JP\FONTNX.EXE
;12? DEVICEHIGH=\FDOS\BIN\NANSI.SYS /S
;345? DEVICEHIGH=\FDOS\JP\PANSI.SYS
0? SHELL=A:\COMMAND.COM A:\ /E:1024 /P=A:\AUTOEXEC.BAT
12? SHELLHIGH=A:\FDOS\XMSSWAP\COMMAND.COM A:\FDOS\XMSSWAP /E:1024 /P=A:\AUTOEXEC.BAT
345? SHELLHIGH=A:\FDOS\JP\COMMAND.COM A:\FDOS\JP /E:1024 /P=A:\AUTOEXEC.BAT
AUTOEXEC.BAT
Safe mode 以外ではどの CD/DVD ドライバを使うかを選択するように変更。 SATA 接続の場合には AHCICD を、仮想マシンも含め ATA/IDE 接続する場合には XCDROM を選択する。 日本語ディスプレイドライバの選択とは異なり、実際にドライバをロードしてみてエラーしたら再度 CD/DVD ドライバ選択画面に戻る。
@echo off
SET LANG=
SET TZ=JST-9
SET DOSDIR=A:\FDOS
SET PATH=%DOSDIR%\BIN
if not exist C:\FDOS\BIN\HELP.EXE goto FDONLY
SET DOSDIR=C:\FDOS
SET PATH=%DOSDIR%\BIN;%PATH%
if exist %DOSDIR%\NLS\CHOICE.EN SET NLSPATH=%DOSDIR%\NLS
if exist %DOSDIR%\HELP\COMMAND.EN SET HELPPATH=%DOSDIR%\HELP
SET TEMP=%DOSDIR%\TEMP
SET TMP=%TEMP%
:FDONLY
if "%CONFIG%"=="0" goto END
loadhigh FDAPM ADV:REG
loadhigh KEYB JP,932,%DOSDIR%\BIN\KEYBOARD.SYS
if "%CONFIG%"=="1" goto CDROM
if "%CONFIG%"=="2" goto CDROM
if not "%CONFIG%"=="5" goto JP
:DPMI
loadhigh CWSDPMI -p
if exist %DOSDIR%\djgpp\bin\cat.exe SET PATH=%PATH%;%DOSDIR%\djgpp\bin
:JP
vframe /x14 /y8 /h10 /w52 /fBlack /bGray Single Shadow
vecho
vecho /fBlue " Which driver do you want to use for Japanese?"
vline hidden
vecho " V: DSPVV"
vecho " D: DISPV"
vecho " A: DISPVA"
vecho " No display driver to load for now."
vchoice /fLightGreen /bBlack /t10 /d1
set choice=%errorlevel%
vgotoxy eot
verrlvl %choice%
set choice=
if errorlevel 4 goto CDROM
if errorlevel 3 goto DISPVA
if errorlevel 2 goto DISPV
:DSPVV
loadhigh DSPVV
goto JP2
:DISPV
loadhigh DISPV /HS=on
goto JP2
:DISPVA
loadhigh DISPVA /HS=on
goto JP2
:JP2
CHEJ JP
rem loadhigh DSP4U /VD=71
:CDROM
if not exist %DOSDIR%\BIN\JLOAD.EXE goto COMMON
if not exist %DOSDIR%\BIN\SHSUCDX.COM goto COMMON
vframe /x14 /y8 /h9 /w52 /fBlack /bGray Hidden Shadow
vecho
vecho /fBlue " Which driver do you want to use for CD/DVD?"
vline hidden
vecho " A: AHCICD"
vecho " X: XCDROM"
vecho " No CD/DVD driver to load for now."
vchoice /fLightGreen /bBlack /t10 /d3
set choice=%errorlevel%
cls
verrlvl %choice%
set choice=
if errorlevel 3 goto COMMON
if errorlevel 2 goto XCDROM32
:AHCICD
if not exist %DOSDIR%\JLM\AHCICD.DLL goto CDROM
DEVLOAD /H /Q %DOSDIR%\BIN\JLOAD.EXE %DOSDIR%\JLM\AHCICD.DLL /D:AHCICD$$ /R
if errorlevel 1 goto CDROM
goto CDLETTER
:XCDROM32
if not exist %DOSDIR%\JLM\XCDROM32.DLL goto CDROM
DEVLOAD /H /Q %DOSDIR%\BIN\JLOAD.EXE %DOSDIR%\JLM\XCDROM32.DLL /D:XCDROM$$
if errorlevel 1 goto CDROM
:CDLETTER
rem SHSUCDX /QQ /D3
SHSUCDX /QQ /~ /D:?AHCICD$$,Q /D:?XCDROM$$,Q
:COMMON
rem loadhigh DOSLFN
rem loadhigh RDISK /S80 /:R
rem loadhigh CTMOUSE
:END
SET DIRCMD=/P /OGN /Y
rem SET COPYCMD=/-Y
alias reboot=fdapm warmboot
alias reset=fdisk /reboot
alias halt=fdapm acpioff
alias shutdown=fdapm acpioff
なお、ドキュメント上は XCDROM32.DLL
のドライバ名のディフォルトは XCDROM$$
と書かれているが、実際には /D:
で指定しないとドライバがロードされずエラーとなる。
« Debian Linux を Secure Boot 環境で使う | トップページ
「パソコン・インターネット」カテゴリの記事
- FreeDOS で SATA 接続 CD/DVD が利用可能に(2023.03.22)
- Debian Linux を Secure Boot 環境で使う(2023.03.06)
- コンテナで GUI / GPU を使う(2022.10.19)
- 仮想環境のイメージ格納場所の移動(2022.09.10)
- PC ケースを変えてみたが…(2021.10.31)
「DOS」カテゴリの記事
- FreeDOS で SATA 接続 CD/DVD が利用可能に(2023.03.22)
- FreeDOS 1.3 リリース(2022.02.25)
- FreeDOS の kernel と COMMAND.COM がアップデート(2021.06.19)
- FreeDOS 1.2 がリリースされたので FreeDOS/V 化してみた(2016.12.30)
コメント