« Debian Linux を Secure Boot 環境で使う | トップページ

2023-03-22

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 にアクセスできるようになった。

JLM-CDROM

例によって修正後の自分の FreeDOS/V 環境を晒しておく。

FreeDOS/V 起動フロッピーイメージ

FreeDOS 1.3 リリースに関する記事kernel と FreeCOM アップデートの記事 から少し構成を変更し、 \FDOS\JP ディレクトリへ DBCS 版 FreeCOM 以外に日本語関連のドライバ (FDCONFIG.SYS の中から呼ぶもの) を入れるようにした。 本当は FDCONFIG.SYS から呼ぶドライバは全部 \FDOS\BIN から別のディレクトリに移したかったが、とりあえず他はそのまま。

Jemm Releases の v5.83 に同梱されている AHCICD.DLLXCDROM32.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 環境で使う | トップページ

パソコン・インターネット」カテゴリの記事

DOS」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« Debian Linux を Secure Boot 環境で使う | トップページ

2024年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ