|
请问DPMS.lzma驱动如果想和F6IMG驱动统一放在UD区根目录的SRS目录,智能SRSF6模块代码应该怎样修改(它默认DPMS.lzma在boot/grub目录)?另外,原hotdll大的F6IMG模块默认B盘软驱为winblock驱动,不知道此智能SRSF6模块在使用F6IMG方案时是否也是这样。
!BAT by dragonflylee 2012.06
debug off || checkrange 20120522:-1 read 0x8278 || clear && pause Need grub4dos-0.4.5c-2012-05-22 or above. && exit 1
calc *0x8280&0xff/2 > nul || debug 1 > nul && command | call :zip_fix =
read 0x82b8 > nul && calc *0x82b9&0xff/2 > nul || debug 1 > nul && command | call :zip_fix =
setlocal && debug 0 || set *
map --mem=0x20000 %~f0 (rd)
cat --locate=\x1f\x8b --number=1 (rd)+1 > nul || exit 1
calc *0x82d8=*0x82d8-%?%
calc *0x82d0=*0x82d0+%?%
map --mem (rd)+1 (1)
map --hook
goto :FIRADISK
::处理U盘被识别为ZIP,为了保持和非ZIP一致,调整U盘为HD0
:zip_fix
setlocal
set /a hd0=*0x475&0xff+0x7f > nul
call :move_dsk
map (0) (hd0) > nul || goto :end
map --rehook
map --floppies=0
endlocal
set p=%~5
set p=%p:~4%
if "%p%"=="(bd)" || if "%~d4"=="(fd0)" command --set-path=(hd0)%~p4 || if "%~d4"=="(fd0,0)" command --set-path=(hd0,0)%~p4
read 0x8280 > nul || write 0x8280 0x80 > nul
read 0x82a0 > nul || write 0x82a0 0x80 > nul
read 0x82b8 > nul && calc *0x82b9=*0x82b9&0xffffff00|0x80 > nul
exit
:move_dsk
if %hd0%==127 exit
set /a hd1=%hd0%+1 > nul
map (%hd0%) (%hd1%) > nul
set /a hd0=%hd0%-1 > nul
goto :move_dsk
:FIRADISK
if not exist fira.opt && goto :FIRADISK_BOOT
cat --locate=###### --number=1 (fd1)/TXTSETUP.OEM > nul || pause Error: firadisk.img file error.. && exit 1
set offset=%?%
write --offset=%offset% (fd1)/TXTSETUP.OEM value=Parameters,StartOptions,REG_SZ,"%fira.opt%"\r\n
cat --skip=%offset% --locate=/ --replace=\\ (fd1)/TXTSETUP.OEM
goto :FIRADISK_BOOT
:FIRADISK_BOOT
font
if exist (fd1)/UNIFONT.HEX && font (fd1)/UNIFONT.HEX
terminal graphics
graphicsmode -1 640
echo -e >\n\t
echo -e ><回车>键——使用F6IMG方案, 可自动加载SRS目录下的驱动\n\t
echo -e ><空格>键——使用DPMS方案, 内置海量磁盘驱动\n\t
echo -e ><ECS>键——跳过磁盘驱动的加载\n\t
echo -e >\t等5秒, 请选择按<回车>还是<空格>键:\n\t
set keyt=
pause --wait=5 && set /A keyt=*0x4CB00
if not exist keyt goto :BLANK_FD0
if /i "%keyt%"=="0x20" goto :DPMSINST
goto :F6IMG
:F6IMG
(fd1)/F6IMG.BAT && goto Exit ! checkrange 0x20 pause F6IMG模块加载失败, 按<空格>键使用DPMS方案, 按其他键跳过驱动加载.. || goto :Exit
goto :DPMSINST
:DPMSINST
if exist %~dp0dpms.lzma (fd1)/DPMS.BAT %~dp0dpms.lzma 0 || if exist %~dp0dpms.iso (fd1)/DPMS.BAT %~dp0dpms.iso 0 || pause --wait=3 DPMS模块加载失败, 尝试使用F6IMG方案.. && goto :F6IMG
goto :EXIT
:BLANK_FD0
map --floppies=2
map --mem (md)+5760 (fd0)
map --hook
fat mkfs (fd0) > nul
write --offset=0x18 (fd0) \x24\0\2
:EXIT
map --hook
map (1)+1 (rd)
map --mem (rd)+1 (1)
map --e820cycles=3
map --rehook
exit
[ 本帖最后由 chanel 于 2013-3-26 01:24 编辑 ] |
|