UPDATE: FreeDOS (REV1.33) for UBCD4/5

Discussion/announcements about test/beta releases of UBCD will be posted here.

Moderators: Icecube, StopSpazzing

Message
Author
as702
Posts: 276
Joined: Tue Jun 17, 2008 3:14 am

#41 Post by as702 » Sun Aug 17, 2008 11:51 pm

Victor Chew wrote:whenever I try to launch a DOS app...
From the menu or from the command prompt?? does the batch file ACTUALLY exist (check the bin directory).

Do you receive any prior error messages? Did you make any significant changes to the CD? (it works on stock 4.11 and 5.0b4)

...in the command prompt, type "set debug=1" and then run the dosapp in question. you can use scroll-lock to then scroll up/down the page to view what's going. let me know what it says....
is there a text pager like MORE.COM
no

as702
Posts: 276
Joined: Tue Jun 17, 2008 3:14 am

#42 Post by as702 » Tue Aug 19, 2008 9:14 am

UMBPCI release 3.77 is out.
http://www.uwe-sieber.de/umbpci_e.html
Support for SiS 671
It will be included in the next NwDsk release (i.e. this coming week).

as702
Posts: 276
Joined: Tue Jun 17, 2008 3:14 am

#43 Post by as702 » Sat Aug 23, 2008 2:28 am

I've been examining the NwDsk ramdisk driver(s)...

SHSURDRV
Syntax:

Code: Select all

SHSURDRV [/D][size][Ssectors][Ccluster][Dentries][Ffats][$[label],][drive]]
XMSDSK
Syntax:

Code: Select all

XMSDSK <size in Kbytes> /y [/c ##] [/t]
Either driver can be used (SHSURDRV takes precedence if found). Currently, XMSDSK is being used...

Autoexec.bat
:_shsurdrv
shsurdrv /D:%ramsz%K,%ramdrv% /T /Q
if errorlevel 1 if not errorlevel 255 goto _ramok
goto _abort
:_xmsdsk
xmsdsk %ramsz% %ramdrv% /y /t >nul
if errorlevel 1 goto _ramok
goto _abort
I've observed stability issues and "Invalid cluster nr." errors in certain instances. As it turns out, the problem had to do with neither driver being set a default/valid cluster size. Ideally, the sector size should be set to 512 bytes. I modified the above to account for this...
:_shsurdrv
shsurdrv /D:%ramsz%K,%ramdrv%,C0 /T /Q
if errorlevel 1 if not errorlevel 255 goto _ramok
goto _abort
:_xmsdsk
xmsdsk %ramsz% %ramdrv% /y /t /c1 >nul
if errorlevel 1 goto _ramok
goto _abort
This appears to have corrected the problem (and SHSURDRV now works without issue).

as702
Posts: 276
Joined: Tue Jun 17, 2008 3:14 am

#44 Post by as702 » Mon Aug 25, 2008 8:49 am

R1.31 (now available)
adjusted NwDsk version number (3.42=>3.40)
updated UMBPCI to 3.77
adjusted ramdisk:
- set ramdisk XMSDSK/SHSURDRV sector size from 0(?) to 512 bytes
- replaced XMSDSK with SHSURDRV v1.10
replaced unzip.exe with pkunzip.exe (PKWARE 2.50 for DOS) ~20Kb smaller
- adjusted autoexec.bat, runapp.bat and unpack.bat to refelct change
adjusted /level3 post-processing
- adjusted cd drive detection routine (e.g. no longer dependent on ubcd.ico)
- NwDsk settings can now be supplemented via an .INI file
- relative path(s) of dosapps no longer dependent on UBCD version*
- can now choose to launch CD dosapps as an archive or unpacked as a directory**
- launching CD dosapps is no longer dependent on "dosapp" root directory (NwDsk will find it)**
adjusted UBCD program handling
- automatically finds the program archive/directory regardless of location**
- added archive support to include rar,7z and uha in addition to cab and zip
adjusted saveset.bat in utilz.cab
removed ranish partition manager (already included on CD)
fixed an error in cdrom loader for non-eltorito drives : "_devld not found"
replaced stype.exe with more.exe (~18Kb smaller)
added mdir.exe (consistent DIR command across FD/DR/MS platforms)
fixed other tiny errors

* Feature-ready, but not yet implemented for legacy support
**UBCD 5beta only
Development Notes
All previous versions of NwDsk (R series) relied on a rather cumbersome detection routine for determining UBCD version number which, in turn, was used as a requisite in establishing variables and parameters used for post-processing operations (e.g. menu generation, application handling etc). Previously, this was handled using information from the following file:

Code: Select all

\menus\defaults.cfg

Code: Select all

MENU TITLE Ultimate Boot CD V4.1.1                        http://www.ultimatebootcd.com
PROMPT 0
ALLOWOPTIONS 0
MENU MARGIN 0
MENU ROWS 20
MENU COLOR BORDER	37;44 #40000000 #00000000 std
MENU COLOR TITLE 1;33;44 #c00090f0 #00000000 std
MENU COLOR SCROLLBAR 37;44 #40000000 #00000000 std

Code: Select all

\ubcd\menus\defaults.cfg

Code: Select all

MENU TITLE Ultimate Boot CD V5.0B4                        http://www.ultimatebootcd.com

MENU MARGIN 0
MENU ROWS -9
MENU TABMSG
MENU TABMSGROW -3
MENU CMDLINEROW -3
MENU HELPMSGROW -4
MENU HELPMSGENDROW -1

MENU COLOR SCREEN 37;40
MENU COLOR BORDER 34;40
MENU COLOR TITLE 1;33;40
MENU COLOR SCROLLBAR 34;46
MENU COLOR SEL 30;47
MENU COLOR UNSEL 36;40
MENU COLOR CMDMARK 30;40
MENU COLOR CMDLINE 30;40
MENU COLOR TABMSG 37;40
MENU COLOR DISABLED 37;40
MENU COLOR HELP 32;40
Put simply, this method was arse and has since been been scrapped. Instead, the version number is now determined via 2 available methods...

1) CD VolumeID
For version 4.1.1, this should be set to "UBCD411" (for version 5.0b, "UBCD50bx" where x=1..4)
Image
2) Optional .INI file
Alternatively, use an INI file to supplement the correct version ID...
;(use ";" to declare comments)
;
[Version]
Signature = $Ubcd$
Version = 4.1.1
Url = http://www.ultimatebootcd.com/
Two version will be supplied in the download (one for 4.1.1 and the other for 5beta). This can be placed anywhere on the CD and named anything you want provided it retains the *.INI suffix.

"That's nice, but how do I customise the location of my "dosapps" folder?"
Good question, chief. In previous builds, this proved almost impossible. For instance, suppose you wanted to relocate your "dosapp" programs from...

Code: Select all

/ubcd/dosapps
to

Code: Select all

/dos
NwDsk would return errors complaining about not being able to find the program folder. So, there are now 2 methods one can use to set the default program path...

1) From the NwDsk itself...

Code: Select all

/etc/autoset.bat
:: Ramdrive Letter (UpperCase!)
set ramltr=Q:
:: Ramdrive size (KB), put 0 to disable
set ramsz=16384
:: ScrollBackBuffer size (KB), put 0 to disable
set persz=512
:: TimeZone (optional)
set tz=GMT+1
:: Cache (KB)
set cachesz=6144
:: Cdrom Cache on FreeDOS (KB), put 0 to disable
set cachecd=1024
:: Uncomment to disable Diskette caching on FreeDOS
rem set tickle=0
:: Uncomment for Verbose Extracting
rem set xtrct=verbose
:: Uncomment to set "dosapps" Directories - [main;user]
rem set appdir=\ubcd\dosapps;\ubcd\dosapps\custom
rem set appdir=\dosapps;\dosapps\custom
2) Optional .INI file...
[Settings]
MainPrograms = \ubcd\dosapps
UserPrograms = \ubcd\dosapps\custom
Use either method as you see fit.

DEMO:
Image
Note, if the program archive is not found in the given dosapp directories, the script will scan the entire CD to try and locate the archive dynamically (UBCD 5 only).

The two main scripts used to accomplish all this...
UBCD.BAT (WIP)

Code: Select all

@if "%debug%"=="" echo off
if "%1"==":" if not "%2"=="" goto %2
::
for %%i in (xgrep.com concat.exe stow.exe varset.com var.bat) do if not exist %ramdrv%\bin\%%i %0 : _err missing %%i (check utilz.%arcext%)
for %%i in (wbat.com tfind.com lmod.com) do if not exist %ramdrv%\bin\%%i %0 : _err missing %%i (check utils.%arcext%)
:_start
if not "%cddrv%"=="" goto _init
if not exist %ramdrv%\bin\bcdw.com goto _nobcdw
bcdw.com CheckForBCDW
bcdw.com FindBootableCDLetter
bcdw.com GetBootImageCommandLine
if "%ubcdcmd%"=="" set ubcdcmd=%BCDW_CL%
:_bcdw
for %%i in (%cd1% %BCDW_CDROM%: %ramdrv% A:) do if "%cddrv%"=="" call %0 : _testdrv %%i
if not "%cddrv%"=="" goto _init
:_nobcdw
for %%i in (C D E F G H) do if "%cddrv%"=="" call %0 : _testdrv %%i:
for %%i in (I J K L M N) do if "%cddrv%"=="" call %0 : _testdrv %%i:
for %%i in (O P Q R S T) do if "%cddrv%"=="" call %0 : _testdrv %%i:
for %%i in (U V W X Y Z) do if "%cddrv%"=="" call %0 : _testdrv %%i:
if "%cddrv%"=="" goto _nocd
goto _init
:_testdrv
shift
shift
if "%1"==""  goto _eof
if "%1"==":" goto _eof
call drd.bat %1 -$
if errorlevel 255 goto _eof
if errorlevel 100 goto _eof
set | xgrep -shy ^[:u]?initrd[:p]?= | lmod /s=/ [$!] | stow _i >%tmp%\nul
mdir /s /b /o %1\ >%tmp%\_ubcd.bak
type %tmp%\_ubcd.bak | xgrep -shy %_i%$ >%tmp%\nul
if errorlevel 1 goto _nodrv
set cddrv=%1
copy %tmp%\_ubcd.bak %djdir%\index.dat /y >%tmp%\nul
:_nodrv
set _i=
goto _eof
:_info
echo.
if not "%ubcd_ver%"=="" echo UBCD %ubcd_ver% [%ubcd_ts%]
if not "%ubcd_url%"=="" echo %ubcd_url%
if "%ubcd_url%"=="" echo http:\\www.ultimatebootcd.com\
echo.
if "%os%"=="fd" date /t | lmod [$4:$5]
if "%os%"=="fd" time /t | lmod [$4:$5]
:_drives
echo ЪДДДДДДДДДДДДДДДДДДДДДї
echo і BOOTDRV: %srcdrv%         і
echo і RAMDRV:  %ramdrv%         і
if not "%cddrv%"=="" echo і CDDRV:   %cddrv%         і
echo АДДДДДДДДДДДДДДДДДДДДДЩ
goto _eof
::
:_init
call readset UBCD
if not "%ubcd_ver%"=="" goto _chkcmd
:_getini
xgrep -shy [:p]\ini$ %djdir%\index.dat >%tmp%\_ubcd.tmp
for %%e in (1 2 255) do if errorlevel %%e goto _noini
call var set _o=lines %tmp%\_ubcd.tmp
set _i=0
if exist %tmp%\_ubcd.bak del %_delq% %tmp%\_ubcd.bak
:_lp_ini
    call var set _i=(%_i%+1)
    linex %_i% <%tmp%\_ubcd.tmp | stow _f >%tmp%\nul
    xgrep -shy [$]?"Ubcd"[$]$ %_f% >%tmp%\nul
    if errorlevel 1 goto _skip_ini
    xgrep -syv ^; %_f% >%tmp%\_ubcd.bak
    call %0 : _ts %_f%
    set _f=
    :_skip_ini
  if exist %tmp%\_ubcd.bak goto _end_ini
  if "%_i%"=="%_o%" goto _end_ini
  goto _lp_ini
:_end_ini
@rem pause
for %%i in (_i _n _o) do set %%i=
if exist %tmp%\_ubcd.bak call %0 : _inird
:_noini
call %0 : _getver
for %%e in (255 1) do if errorlevel %%e goto _nover
if "%ver%"=="4" goto _oldver
if "%ver%"=="5" goto _oldver
goto _mkhlp
:_ts
shift
shift
echo UBCD: Scanning "%1"
call var set _d=date %1
call var set _t=time %1
set ubcd_ts=%_d% %_t%
for %%i in (d t) do set _%%i=
goto _eof
:_inird
:_iniver
inifile %tmp%\_ubcd.bak [Version] | lmod /l* /s [$2:$!]>%tmp%\_ubcd.tmp
xgrep -shy ^[:a]?Version[:s]?= %tmp%\_ubcd.tmp | lmod /s= @set ubcd_ver=[$2]>%tmp%\_ubcd.bat
xgrep -shy ^[:a]?Url[:s]?= %tmp%\_ubcd.tmp | lmod /s= @set ubcd_url=[$2] >>%tmp%\_ubcd.bat
inifile %tmp%\_ubcd.bak [Settings] | lmod /l* /s [$2:$!]>%tmp%\_ubcd.tmp
xgrep -shy ^[:a]?Menu[:s]?= %tmp%\_ubcd.tmp | lmod /s= @set _mkbat=[$2]>>%tmp%\_ubcd.bat
if not "%appdir%"=="" goto _inifin
xgrep -sry ^[:a]?MainPrograms[:s]?= %tmp%\_ubcd.tmp | lmod /s= %cddrv%[$2] | stow appdir >%tmp%\nul
xgrep -sry ^[:a]?UserPrograms[:s]?= %tmp%\_ubcd.tmp | lmod /s= @set appdir=%appdir%;%cddrv%[$2]>>%tmp%\_ubcd.bat
:_inifin
call %tmp%\_ubcd.bat
for %%d in (Version Settings) do inifile %tmp%\_ubcd.bak [%%d] /remove
type %tmp%\_ubcd.bak | xgrep -syv ^; >%djdir%\programs.cfg
call saveset UBCD -$
goto _eof
:_getver
if not "%ubcd_ver%"=="" goto _chkver
varset n=vol %cddrv% | lmod /b= [$2] | xgrep -shy ^[:a:d]?UBCD >%tmp%\_ubcd.tmp
if errorlevel 1 goto _nover
lmod /sD [$2]<%tmp%\_ubcd.tmp | stow ubcd_ver>%tmp%\nul
call saveset UBCD -$
:_chkver
echo %ubcd_ver% | lmod /s. [$1][$2]>%tmp%\_ubcd.tmp 
lmod /s set _v=[1,2]<%tmp%\_ubcd.tmp >>%tmp%\_ubcd.bat
call %tmp%\_ubcd.bat
call var set _v=(%_v%+1)
for %%e in (255 1) do if errorlevel %%e goto _eof
if "%_v%"=="51" set ver=5
if "%_v%"=="42" set ver=4
if "%_v%"=="11" set ver=?
set  _v=
if "%ver%"=="" el! 1
goto _eof
:_nover
goto _eof
:_mkhlp
xgrep -sy ^[[][:a:d:s]*[]]$ %djdir%\programs.cfg >%tmp%\_ubcd.tmp
if errorlevel 1 goto _chkcmd
lmod /l* /s[] [$1:$!]<%tmp%\_ubcd.tmp >%tmp%\_ubcd.bak
xgrep -syv ^[[][:a:d:s]*[]]$ %djdir%\programs.cfg >%tmp%\_ubcd.tmp
lmod /s; /l* [$4:$!]<%tmp%\_ubcd.tmp >%tmp%\_ubcd.tm#
lmod /s; /l* [$1]<%tmp%\_ubcd.tmp >%tmp%\_ubcd.tm$
concat %tmp%\_ubcd.tm$ %tmp%\_ubcd.tm# /f9 >%ramdrv%\help\ubcd.hlp
echo ubcd     Ultimate Boot CD>>%ramdrv%\help\ubcd.hlp
echo.>>%ramdrv%\help\ubcd.hlp
:_mkbat
set _i=0
set _j=0
call var set _m=lines %tmp%\_ubcd.bak
mkdir %tmp%\~bin
:_loop_i
  call var set _i=(%_i%+1)
  linex %_i% <%tmp%\_ubcd.bak | stow _cat >%tmp%\nul
  inifile %djdir%\programs.cfg [%_cat%] | lmod /l* /s [$2:$!]>%tmp%\_ubcd.dat
  call var set _n=lines %tmp%\_ubcd.dat
  @rem pause
    :_loop_j
      call var set _j=(%_j%+1)
      lmod /l%_j% /s; @set _app=[$4:$!][+]@set _appcmd=[$2][+]@set _apparc=[$1][+]@set _appmnu=[$3]<%tmp%\_ubcd.dat >%tmp%\~bin\_ubcd.bat
      call %tmp%\~bin\_ubcd.bat
      ren %tmp%\~bin\_ubcd.bat %_apparc%.bat
    @rem pause
    if "%_j%"=="%_n%" goto _end_j
    goto _loop_j
    :_end_j
     for %%i in (_j _n) do set %%i=
  if "%_i%"=="%_m%" goto _end_i
  goto _loop_i
:_end_i
for %%d in (%tmp%\~bin\*.bat) do echo @runapp.bat >>%%d
for %%i in (_i _m _cat) do set %%i=
set | xgrep -shy ^_app | lmod /l* /b= set [$1]=>%tmp%\_ubcd.bat
call %tmp%\_ubcd.bat
:_movbat
xcopy %tmp%\~bin\*.bat %ramdrv%\bin /q /r /s /y /n >%tmp%\_ubcd.tmp
type %tmp%\_ubcd.tmp | lmod [$1] program(s) found
deltree /y %tmp%\~bin >%tmp%\nul
goto _chkcmd
::
:_oldver
if exist %tmp%\_ubcd.bak del %_delq% %tmp%\_ubcd.bak
if "%appdir%"=="" if "%ver%"=="5" set appdir=%cddrv%\ubcd\dosapps
if "%appdir%"=="" if "%ver%"=="4" set appdir=%cddrv%\dosapps
echo %appdir% | lmod /s; set _dir1=[$1][+]set _dir2=[$2]>%tmp%\_ubcd.bat
call %tmp%\_ubcd.bat
if "%_dir1%"=="%_dir2%" set _dir2=
set _i=0
set _lim=2
:_lp_dir
    call var set _i=(%_i%+1)
    echo _dir | lmod set _dir=[~37][]%_i%[~37]>%tmp%\_ubcd.bat
    call %tmp%\_ubcd.bat
    varset x=string %_dir% >%tmp%\nul
    if "%_dir%"=="" goto _skip_dir
    tfind /f1,%errorlevel% "%_dir%" %djdir%\index.dat>>%tmp%\_ubcd.bak
    @rem pause
  :_skip_dir
  if "%_i%"=="%_lim%" goto _end_dir
  goto _lp_dir
:_end_dir
@rem pause
for %%i in (_i _dir _lim) do set %%i=
for %%i in (2 1) do set _dir%%i=
call var set _x=lines %tmp%\_ubcd.bak
if "%_x%"=="0" el! 1
set  _x=
if errorlevel 1 goto _npath
mkdir %tmp%\~main
xgrep -shy startup[:p]?.bat$ %tmp%\_ubcd.bak >%tmp%\_ubcd.tmp
if errorlevel 1 goto _npath
for %%i in (4 5) do if "%ver%"=="%%i" goto _ver%%i
:_ver5
type %tmp%\_ubcd.tmp | lmod /s\ /l* copy [] %tmp%\~main\[$!-1].bat /Y [~62]%tmp%\nul >%tmp%\_ubcd.bat
call %tmp%\_ubcd.bat
if exist %ramdrv%\bin\attrib.com attrib +a -rhs %tmp%\~main\*.bat /s >%tmp%\nul
call %0 : _oldmenu APPNAME=
mkdir %ramdrv%\MAIN
xcopy %tmp%\~main\*.bat %ramdrv%\main /q /r /s /y /n >%tmp%\_ubcd.tmp
type %tmp%\_ubcd.tmp | lmod [$1] program(s) found
deltree /y %tmp%\~main >%tmp%\nul
set path=%path%;%ramdrv%\main
goto _chkcmd
:_oldmenu
shift
shift
if exist %tmp%\_ubcd.* del %_delq% %tmp%\_ubcd.*
xgrep -shxy %1 %tmp%\~main\*.bat >%tmp%\_ubcd.tmp
lmod /l* /b= [$2]~%ramdrv%\main\<%tmp%\_ubcd.tmp >>%tmp%\_ubcd.bak
lmod /l* /b= [$2]<%tmp%\_ubcd.tmp >>%tmp%\_ubcd.tm$
mdir /o /b %tmp%\~main\*.bat | lmod /l* []>%tmp%\_ubcd.tmp
lmod /s. /l* [$1,l]<%tmp%\_ubcd.tmp >%tmp%\_ubcd.tm#
if not exist %ramdrv%\help\nul mkdir %ramdrv%\help
concat %tmp%\_ubcd.tm# %tmp%\_ubcd.tm$ /f9 >%ramdrv%\help\ubcd.hlp
concat %tmp%\_ubcd.bak %tmp%\_ubcd.tmp >%djdir%\ubcd.mnu
echo ubcd     Ultimate Boot CD>>%ramdrv%\help\ubcd.hlp
echo.>>%ramdrv%\help\ubcd.hlp
goto _eof
:_ver4
xgrep -shy startup[:p]?.bat$ %tmp%\_ubcd.bak >%tmp%\_ubcd.tmp
type %tmp%\_ubcd.tmp | lmod /s\ /l* echo %cddrv% [~62]%tmp%\~main\[$!-1,l].bat >%tmp%\_ubcd.bat
xgrep -shxy "%cddrv%" <%tmp%\_ubcd.tmp | lmod /s\ /l* type [] [~62][~62]%tmp%\~main\[$!-1,l].bat >>%tmp%\_ubcd.bat
call %tmp%\_ubcd.bat
if exist %ramdrv%\bin\attrib.com attrib +a -rhs %tmp%\~main\*.bat /s >%tmp%\nul
mdir /o /b %tmp%\~main\*.bat | lmod /s. /l* [$1]~%ramdrv%\main\[$1].bat >%djdir%\ubcd.mnu
if exist %tmp%\~main\vc.bat del %_delq% %tmp%\~main\vc.bat
mkdir %ramdrv%\MAIN
xcopy %tmp%\~main\*.bat %ramdrv%\main /q /r /s /y /n >%tmp%\_ubcd.tmp
type %tmp%\_ubcd.tmp | lmod [$1] program(s) found
deltree /y %tmp%\~main >%tmp%\nul
set ubcddrv=%cddrv%
goto _chkcmd

:_npath
:: to be done...
::
:_nocd
echo UBCD: Warning! could not set version (cd-rom disabled)
goto _chkcmd

:_chkcmd
set ubcd_off=
if "%ubcdcmd%"=="" goto _runcmd 
if exist %ramdrv%\main\%ubcdcmd%.bat goto _runcmd
if exist %ramdrv%\bin\%ubcdcmd%.bat goto _runcmd
echo UBCD: Error!!! missing %ubcdcmd%.bat (check CD)
echo.
set ubcdcmd=
@pause
:_runcmd
if "%1"==":" call %0 : _info
%ramdrv%
cd \
if not "%ubcdcmd%"=="" call %ubcdcmd%
set ubcdcmd=
if "%ubcd_off%"=="1" goto _ubcdend

:_ubcd
if "%w_but%"=="" set w_but=1
for %%i in (%tmp%\_ubcd.*) do if exist %%i del %_delq% %%i>%tmp%\nul
if "%ubcd_ti%"=="" set ubcd_ti=0
echo :w_msg "Ultimate Boot CD %ubcd_ver%" [x]>%tmp%\_ubcd.tmp
echo                      (~press any key~: #? sec.)>>%tmp%\_ubcd.tmp
echo.>>%tmp%\_ubcd.tmp
echo [ Launch ]  CD applications >>%tmp%\_ubcd.tmp
echo.>>%tmp%\_ubcd.tmp
echo [ System ]  Drivers/network/system tools >>%tmp%\_ubcd.tmp
echo.>>%tmp%\_ubcd.tmp
echo [  Help  ]  List available commands >>%tmp%\_ubcd.tmp
echo.>>%tmp%\_ubcd.tmp
echo [ Browse ]  File browser (lfn support) >>%tmp%\_ubcd.tmp
echo.>>%tmp%\_ubcd.tmp
echo             If you experience a problem when >>%tmp%\_ubcd.tmp
echo             running a program, try enabling  >>%tmp%\_ubcd.tmp
echo             an alternate boot mode. >>%tmp%\_ubcd.tmp
echo.>>%tmp%\_ubcd.tmp
echo                           [ About ] [? Exit ] >>%tmp%\_ubcd.tmp
call w.bat box @%tmp%\_ubcd.tmp:w_msg #%w_but%,%ubcd_ti%
if errorlevel 100 goto _ubcdend
if errorlevel 6 goto _ubcdend
if errorlevel 5 goto _about
if errorlevel 4 goto _vc
if errorlevel 3 goto _cmd
if errorlevel 2 goto _nwdsk
if exist %djdir%\ubcd.mnu goto _dosold
goto _dos
:_ubcdend
echo UBCD: Type "ubcd" to return to main menu
echo.
goto _end

:_nwdsk
set w_but=2
if not exist %ramdrv%\bin\menu.bat %0 : _err missing menu.bat (check menu.%arcext%)
call menu.bat :
goto _ubcd
:_cmd
set w_but=3
if not exist %ramdrv%\bin\help.bat %0 : _err missing help.bat (check help.%arcext%)
call help.bat :
goto _ubcd
:_vc
set w_but=4
if not exist %ramdrv%\bin\vc.bat %0 : _err missing vc.bat (check vc.%arcext%)
if exist %ramdrv%\bin\lfn.bat if "%lfn%"=="N" call lfn -e
call %ramdrv%\bin\vc.bat
if "%ubcd_ver%"=="4.1.1" if "%lfn%"=="Y" call lfn -d
goto _ubcd
:_about
set w_but=5
if not exist %ramdrv%\bin\about.bat %0 : _err missing about.bat (check modboot.%arcext%)
call about.bat :
goto _ubcd
:_dos2
set w_but=1
if not "%cddrv%"=="" goto _dos3
echo UBCD: Aborted! Cd-rom support disabled (type "cdrom" to enable)
echo.
@pause
goto _ubcd

:_dos
set w_but=1
if not "%cddrv%"=="" goto _dosok
echo UBCD: Aborted! Cd-rom support disabled (type "cdrom" to enable)
echo.
@pause
goto _ubcd
:_dosok
%ramdrv%
:_loop_l
for %%i in (%tmp%\_ubcd.*) do del %_delq% %%i
echo :w_ubcd " CD Applications " [x]>%tmp%\_ubcd.bak
xgrep -sy ^[[][:a:d:s]*[]]$ %djdir%\programs.cfg | lmod /l* /s[] [$1:$!] >>%tmp%\_ubcd.bak
call w.bat list @%tmp%\_ubcd.bak:w_ubcd
if "%wbat%"=="" goto _ubcd
echo :w_ubcd " CD Applications - %wbat% " [x]>%tmp%\_ubcd.tmp
inifile %djdir%\programs.cfg [%wbat%] | lmod /l* /s; [$5:$!]>>%tmp%\_ubcd.tmp
:_loop_m
if "%ubcd_off%"=="1" goto _ubcdend
call w.bat list @%tmp%\_ubcd.tmp:w_ubcd
if "%wbat%"=="" goto _loop_l
type %djdir%\programs.cfg | tfind "%wbat%" | lmod /s; %ramdrv%\bin\[$1].bat | stow wbat >%tmp%\nul
if "%wbat%"=="" goto _ubcd
call %wbat%
goto _loop_m

:_dosold
set w_but=1
if not "%cddrv%"=="" goto _dosoldok
echo UBCD: Aborted! Cd-rom support disabled (type "cdrom" to enable)
echo.
@pause
goto _ubcd
:_dosoldok
%ramdrv%
:_loop_k
if "%ubcd_off%"=="1" goto _ubcdend
for %%i in (%tmp%\_ubcd.*) do del %_delq% %%i
echo :w_ubcd " Ultimate Boot CD %ubcd_ver% " [x]>%tmp%\_ubcd.bak
type %home%\ubcd.mnu>>%tmp%\_ubcd.tmp
type %tmp%\_ubcd.tmp | lmod /L* /B~ echo [$1][~62][~62]%tmp%\_ubcd.bak>%tmp%\_ubcd.bat
call %tmp%\_ubcd.bat
call w.bat list @%tmp%\_ubcd.bak:w_ubcd
if "%wbat%"=="" goto _ubcd
type %tmp%\_ubcd.tmp | tfind "%wbat%" | lmod /B~ set wbat=[$2] [$3]>%tmp%\_ubcd.bat
call %tmp%\_ubcd.bat
if "%wbat%"=="" goto _ubcd
call %wbat%
set wbat=
goto _loop_k

:_warn
shift
shift
if errorlevel 255 goto _eof
echo UBCD: Warning! %1 %2 %3 %4 %5 %6 %7 %8
echo.
el! 255
goto _eof
:_err
shift
shift
echo UBCD: Error!!! %1 %2 %3 %4 %5 %6 %7 %8
echo.
goto _end
:_abort
shift
shift
echo UBCD: Aborted!
echo.
goto _end
:_end
set ?=
set | tfind /f1,2 "W_" >%tmp%\_ubcd.tmp
set | tfind /f1,5 "ubcd_" >>%tmp%\_ubcd.tmp
set | tfind /f1,5 "_ubcd" >>%tmp%\_ubcd.tmp
set | tfind /f1,5 "bcdw_" >>%tmp%\_ubcd.tmp
type %tmp%\_ubcd.tmp | lmod /L* /B= set [$1]=>%tmp%\_ubcd.bat
call %tmp%\_ubcd.bat
set wbat=
set wrb=
for %%i in (1 2 3 4 5 6 7 8 9) do set wcb%%i=
if exist %tmp%\_ubcd.* del %_delq% %tmp%\_ubcd.*
::
:_eof
RUNAPP.BAT

Code: Select all

@if "%debug%"=="" echo off
if "%1"==":" if not "%2"=="" goto %2
::
for %%i in (varset.com var.bat stow.exe) do if not exist %ramdrv%\bin\%%i %0 : _err missing %%i (check utilz.%arcext%)
for %%i in (wbat.com tfind.com lmod.com) do if not exist %ramdrv%\bin\%%i %0 : _err missing %%i (check utils.%arcext%)
:_init
if "%cddrv%"=="" goto _abort
for %%i in (name code exe) do if "%app%%i%"=="" goto _initok
set _app=%appname%
set _appcmd=%appexe%
set _apparc=%appcode%
for %%i in (appname appcode appexe) do set %%i=
for %%i in (_app _appcmd _apparc) do if "%%%i%"=="" goto _end
:_initok
set _appdir=%_apparc%
if exist %djdir%\index.dat goto _initbin
mdir /s /b /o %cddrv%\ >%djdir%\index.dat
:_initbin
echo %_appcmd% | lmod [$1] | stow _appbin >%tmp%\nul
if "%_appbin%"=="callver" goto _getbin1
goto _start
:_getbin1
echo %_appcmd% | lmod [$3] | stow _appbin >%tmp%\nul
:_start
echo UBCD: Searching...
:_start2
if exist %tmp%\_runa.* del %_delq% %tmp%\_runa.*
set _$dest=%ramdrv%\usr\%_appdir%
if exist %_$dest%\%_appbin% goto _unpok2
if "%appdir%"=="" goto _scan
echo %appdir% | lmod /s; @set _appsrc1=[$1][+]@set _appsrc2=[$2]>%tmp%\_runa.bat
call %tmp%\_runa.bat
:_scan
for %%f in (cab zip uha rar 7z) do call %0 : _getarc %%f
if "%_$arcext%"=="" goto _getdir
for %%f in (cab zip uha rar 7z) do xgrep -shy [:p].?%%f$ %tmp%\_runa.bak >>%tmp%\_runa.tmp
call var set _$dupl=lines %tmp%\_runa.tmp
if "%_$dupl%"=="0" goto _auto
if "%_$dupl%"=="1" goto _getarcok
goto _duplex
:_getarcok
set _$dupl=
lmod []<%tmp%\_runa.tmp | stow _$archive >%tmp%\nul
call %0 : _getpath %_$archive%
call %0 : _app%_$arcext% %_$archive% %_appbin%
if errorlevel 1 goto _getdir
goto _arcok
:_getarc
shift
shift
set _$lim=2
if "%_appsrc1%"=="%_appsrc2%" set _$lim=1
set _i=0
:_lp_src
    call var set _i=(%_i%+1)
    if "%appdir%"=="" goto _auto_src
    echo _appsrc | lmod set _$src=[~37][]%_i%[~37]>%tmp%\_runa.bat
    call %tmp%\_runa.bat
    xgrep -shy ^%_$src%\%_apparc%.%1$ %djdir%\index.dat >>%tmp%\_runa.bak
  if errorlevel 1 goto _nxt_src
  set _$arcext=%1
  goto _nxt_src
  :_auto_src
    xgrep -shy [:a:d]?%_apparc%[:p].?%1$ %djdir%\index.dat >>%tmp%\_runa.bak
  if errorlevel 1 goto _end_src
  set _$arcext=%1
  goto _end_src
  :_nxt_src
  if "%_i%"=="%_$lim%" goto _end_src
  goto _lp_src
:_end_src
for %%i in (lim src) do set _$%%i=
set _i=
goto _eof
:_duplex
set _i=0
:_lp_dup
    call var set _i=(%_i%+1)
    lmod /l%_i% /s. set _$arcext=[$2,l][+]set _$archive=[]<%tmp%\_runa.tmp >%tmp%\_runa.bat
    call %tmp%\_runa.bat
    call %0 : _app%_$arcext% %_$archive% %_appbin%
  if errorlevel 1 goto _nxt_dup
  goto _end_dup
  :_nxt_dup
  el! 255
  if "%_i%"=="%_$dupl%" goto _end_dup
  goto _lp_dup
:_end_dup
set _$dupl=
set _i=
if errorlevel 255 goto _getdir
echo UBCD: Found! Installing %_app%
goto _enufdisc
:_getdir
xgrep -shy \\%_appdir%[:a:d:p]*%_appbin%$ %djdir%\index.dat >%tmp%\_runa.bak
if errorlevel 1 goto _apperr
lmod /l1 []<%tmp%\_runa.bak | stow _$src >%tmp%\nul
call %0 : _getpath %_$src%
goto _runcd
:_apperr
if "%appdir%"=="" %0 : _err missing archive/directory (%_appdir%.?)
echo %appdir% >%tmp%\_appdir.set
set | tfind /f1,2 "_$" >%tmp%\_runa.tmp
set | tfind /f1,6 "appdir" >%tmp%\_runa.tmp
type %tmp%\_runa.tmp | lmod /L* /B= set [$1]=>%tmp%\_runa.bat
call %tmp%\_runa.bat
if exist %tmp%\_runa.* del %_delq% %tmp%\_runa.*
goto _start2
:_getpath
shift
shift
varset x=string %1 >%tmp%\nul
set _$char=%_$char%~%errorlevel%
call var set n=ext %1
varset x=string %n% >%tmp%\nul
set _$char=%_$char%~%errorlevel%
echo %1 | lmod /s.\ [$!-1] | stow n >%tmp%\nul
varset x=string %n% >%tmp%\nul
set _$char=%_$char%~%errorlevel%
echo %_$char% | lmod /s~ call var set n=([$1]-([$2]+[$3]+2)[+]set _$char=>%tmp%\_runa.bat
call %tmp%\_runa.bat
echo %1 | lmod [1,%n%] | stow _$src >%tmp%\nul
set n=
goto _eof
::
:_arcok
echo UBCD: Found! Installing %_app%
echo %_appbin% | lmod [l] | stow _appbin >%tmp%\nul
for %%d in (_apparc _appdir) do echo %%%d% | lmod /l* [l] | stow %%d >%tmp%\nul
for %%d in (cab zip uha rar 7z) do if "%_$arcext%"=="%%d" call %0 : _app%%d %_$archive% %_appbin%
if errorlevel 1 %0 : _err missing %_appbin% (check %_apparc%.%_$arcext%)
goto _enufdisc
:_appcab
shift
shift
if not exist %ramdrv%\bin\extract.exe %0 : _err missing extract.exe (check %srcdrv%\bin)
extract.exe %1 /D | lmod /l* [l] >%tmp%\_runa.tm$
tfind /f1 "%2" <%tmp%\_runa.tm$ >%tmp%\nul
if errorlevel 1 goto _eof
tfind /f1 " bytes" <%tmp%\_runa.tm$ | lmod /s /l* [$!-1] >%tmp%\_runa.tm$
lmod /s, /l* [$1][$2][$3][$4][$5][$6][$7][$8]<%tmp%\_runa.tm$ | stow _appsz >%tmp%\nul
goto _eof
:_appzip
shift
shift
:: if not exist %ramdrv%\bin\unzip.exe %0 : _err missing unzip.exe (check %srcdrv%\bin)
:: unzip.exe -l %1 | lmod /l* [l] >%tmp%\_runa.tm$
if not exist %ramdrv%\bin\pkunzip.exe %0 : _err missing pkunzip.exe (check %srcdrv%\bin)
pkunzip.exe -v %1 | lmod /l* [l] >%tmp%\_runa.tm$
tfind /f1 "%2" <%tmp%\_runa.tm$ >%tmp%\nul
if errorlevel 1 goto _eof
call var set _n=lines %tmp%\_runa.tm$
:: lmod /l%_n% [$1]<%tmp%\_runa.tm$ | stow _appsz >%tmp%\nul
lmod /l%_n% [$2]<%tmp%\_runa.tm$ | stow _appsz >%tmp%\nul
set _n=
goto _eof
:_appuha
shift
shift
if not exist %ramdrv%\bin\uharcd.exe %0 : _err missing uharcd.exe (check %srcdrv%\bin)
uharcd.exe l -y+ -o+ %1 >%tmp%\_runa.tm$
tfind /f1 "%2" <%tmp%\_runa.tm$ >%tmp%\nul
if errorlevel 1 goto _eof
call var set _n=lines %tmp%\_runa.tm$
call var set _n=(%_n%-1)
for %%e in (255 1) do if errorlevel %%e %0 : _err arithmetic (uha)
lmod /l%_n% [$!]<%tmp%\_runa.tm$ | stow _appsz >%tmp%\nul
set _n=
goto _eof
:_apprar
shift
shift
if not exist %ramdrv%\bin\unrar.exe %0 : _err missing unrar.exe (check %srcdrv%\bin)
unrar.exe vt %1 >%tmp%\_runa.tm$
tfind /f1 "%2" <%tmp%\_runa.tm$ >%tmp%\nul
if errorlevel 1 goto _eof
call var set _n=lines %tmp%\_runa.tm$
call var set _n=(%_n%-1)
for %%e in (255 1) do if errorlevel %%e %0 : _err arithmetic (uha)
lmod /l%_n% [$2]<%tmp%\_runa.tm$ | stow _appsz >%tmp%\nul
set _n=
goto _eof
:_app7z
shift
shift
if not exist %ramdrv%\bin\7za.exe %0 : _err missing 7za.exe (check %srcdrv%\bin)
7za.exe l %1 >%tmp%\_runa.tm$
tfind /f1 "%2" <%tmp%\_runa.tm$ >%tmp%\nul
if errorlevel 1 goto _eof
call var set _n=lines %tmp%\_runa.tm$
lmod /l%_n% [$1]<%tmp%\_runa.tm$ | stow _appsz >%tmp%\nul
set _n=
goto _eof
::
:_enufdisc
call var set _appsz=(%_appsz%/1024)
call var set _appszt=(3072+%_appsz%)
dir %ramdrv% | tfind " bytes free" >%tmp%\_runa.bak
lmod /s /l* [$!-2]<%tmp%\_runa.bak >%tmp%\_runa.tmp
lmod /s, /l* [$1][$2][$3][$4][$5][$6][$7][$8]<%tmp%\_runa.tmp | stow _appenuf >%tmp%\nul
call var set _appenuf=(%_appenuf%/1024)
call var set _appdiff=(%_appenuf%-%_appszt%)
if errorlevel 255 %0 : _abort
if errorlevel 1 goto _noenuf
:_unpack
echo %_appdir% | lmod [u] | stow _appdir >%tmp%\nul
if not exist %ramdrv%\usr\nul mkdir %ramdrv%\usr
if not exist %ramdrv%\usr\%_appdir%\nul mkdir %ramdrv%\usr\%_appdir%
for %%d in (_apparc _appdir) do call var set %%d=string %%%d% /u
echo UNPACK: Extracting "%_$archive%"
for %%d in (cab zip uha rar 7z) do if "%_$arcext%"=="%%d" goto _un%%d
:_uncab
extract.exe /Y /E /L %_$dest% %_$archive% >%tmp%\extract.out
goto _unpok
:_unzip
pkunzip.exe -o -d %_$archive% %_$dest% >%tmp%\extract.out
goto _unpok
:_unzip2
unzip.exe -o -C -qq %_$archive% -d %_$dest% >%tmp%\extract.out
goto _unpok
:_unuha
uharcd.exe x -y+ -o+ -t%_$dest% %_$archive% >%tmp%\extract.out
goto _unpok
:_unrar
unrar.exe x -c- -o+ -y %_$archive% %_$dest% >%tmp%\extract.out
goto _unpok
:_un7z
7za.exe x -bd -o%_$dest% %_$archive% >%tmp%\extract.out
:_unpok
if errorlevel 1 %0 : _err
if exist %ramdrv%\bin\attrib.com attrib +r -hsa %ramdrv%\usr\%_appdir%\*.* /s >%tmp%\nul
:_unpok2
%ramdrv%
dir /s /b /o %ramdrv%\usr\%_appdir% >%tmp%\_runa.bak
xgrep -shy %_appdir%[:a:d:p]*%_appbin%$ %tmp%\_runa.bak >%tmp%\_runa.tmp
lmod /l1 []<%tmp%\_runa.tmp | stow _$src >%tmp%\nul
call %0 : _getpath %_$src%
goto _run
:_runcd
%cddrv%
:_run
cd \
cd %_$src%
set | tfind /f1,2 "_$" >%tmp%\_runa.tmp
for %%i in (_appdir _appsz _appsrc _appbin _apparc _appenuf _appdiff) do call %0 : _preclr %%i
type %tmp%\_runa.tmp | lmod /L* /B= set [$1]=>%tmp%\_runa.bat
echo set _app=>>%tmp%\_runa.bat
call %tmp%\_runa.bat
if exist %tmp%\_runa.* del %_delq% %tmp%\_runa.*
if exist autorun.bat goto _runauto
call %_appcmd%
goto _endapp
:_runauto
call autorun.bat
:_endapp
if "%_appmnu%"=="-" goto _end
if "%_appmnu%"=="-p" pause
if "%_appmnu%"=="-o" set ubcd_off=1
goto _end
::
:_noenuf
if "%_appclr%"=="1" %0 : _err Ramdisk full (try increasing size of ramdisk)
echo :w_config "Ramdisk is full" [x]>%tmp%\_runa.tmp
echo        (~press any key~: #? sec.)>>%tmp%\_runa.tmp
echo.>>%tmp%\_runa.tmp
echo !! Warning !! >>%tmp%\_runa.tmp
echo.>>%tmp%\_runa.tmp
echo There is not enough free space >>%tmp%\_runa.tmp
echo to extract "%_apparc%.%_$arcext%" >>%tmp%\_runa.tmp
echo.>>%tmp%\_runa.tmp
echo [$ _appsz,9] Kb required >>%tmp%\_runa.tmp
echo [$ _appszt,9] Kb required (total) >>%tmp%\_runa.tmp
echo [$ _appenuf,9 ] Kb available (%ramdrv%\) >>%tmp%\_runa.tmp
echo.>>%tmp%\_runa.tmp
echo Delete previous installation(s)>>%tmp%\_runa.tmp
echo to free up available memory?>>%tmp%\_runa.tmp
echo.>>%tmp%\_runa.tmp
echo.>>%tmp%\_runa.tmp
echo        [ Ok ] [? Cancel ] >>%tmp%\_runa.tmp
call w.bat box @%tmp%\_runa.tmp:w_config #4,30
if errorlevel 2 %0 : _err Ramdisk full (not enough free space)
echo UBCD: Deleting contents "%ramdrv%\usr\.."
%ramdrv%
cd \
set _appclr=1
dir /b %ramdrv%\usr | tfind /v /f1,2 "VC" | lmod /s /l* deltree /y %ramdrv%\usr\[$1][~62]%tmp%\nul>%tmp%\_runa.bat
call %tmp%\_runa.bat
goto _enufdisc
::
:_err
shift
shift
if not exist %tmp%\extract.out goto _err2
type %tmp%\extract.out
@pause
goto _end
echo UNPACK: Error while unpacking "%_apparc%.%_$arcext%"
:_err2
echo UBCD: Error!!! %1 %2 %3 %4 %5 %6 %7 %8
echo.
@pause
goto _end
:_abort
shift
shift
echo UBCD: Aborted
:_preclr
shift
shift
varset x=string %1 >%tmp%\nul
set | tfind /f1,%errorlevel% "%1">>%tmp%\_runa.tmp
goto _eof
:_end
set ?=
if not exist %tmp%\_appdir.set goto _end2
lmod []<%tmp%\_appdir.set | stow appdir >%tmp%\nul
:_end2
set | tfind /f1,2 "W_" >%tmp%\_runa.tmp
set | tfind /f1,2 "_$" >>%tmp%\_runa.tmp
set | tfind /f1,5 "_app" >>%tmp%\_runa.tmp
type %tmp%\_runa.tmp | lmod /L* /B= set [$1]=>%tmp%\_runa.bat
call %tmp%\_runa.bat
set wbat=
set wrb=
for %%i in (1 2 3 4 5 6 7 8 9) do set wcb%%i=
for %%i in (%tmp%\_runa.* %tmp%\extract.out) do if exist %%i del %_delq% %%i
::
:_eof
"So, what else is new?"
Namely, this
viewtopic.php?t=1422&start=29

The feature is available (UBCD4.11 and UBCD 5) but not activated by default (Victor is working on formalising the format for the next UBCD release). If you intend to use, it, simply populate the INI file with the dosapp programs in question and place it anywhere in the ISO.

There's other aspects that have been significantly improved but I'd like to finish this release before outlining their function.

as702
Posts: 276
Joined: Tue Jun 17, 2008 3:14 am

#45 Post by as702 » Tue Aug 26, 2008 7:42 am

R1.31 is up.

grayfox
Posts: 48
Joined: Sat Mar 22, 2008 6:04 am

Not Working

#46 Post by grayfox » Wed Aug 27, 2008 4:02 am

Not working for me. :cry:
It stops at Q:\>

as702
Posts: 276
Joined: Tue Jun 17, 2008 3:14 am

Re: Not Working

#47 Post by as702 » Wed Aug 27, 2008 4:27 am

R1.32 is up
fixed serious bug for UBCD 4.1.1 (forgot to set valid path to "dosapps" /main folder)
adjusted ramdrive (volume label now assigned)
replaced SHSURDRV to 1.11a (no-GZIP + ~10Kb smaller)
replaced stow.exe with nset.exe (~3Kb smaller + more features)
replaced choice.exe with choix.exe (~4Kb smaller)
There's always something. (-:
grayfox wrote:Not working for me. :cry:
It stops at Q:\>
Try the update. It should fix the problem. What version of UBCD are you using?

as702
Posts: 276
Joined: Tue Jun 17, 2008 3:14 am

#48 Post by as702 » Thu Aug 28, 2008 7:32 am

More musings...

Since R1.32 now supports fully customisable paths for "dosapps" (either via NwDsk or an *.INI file), I added a few lines to ubcd.bat to dynamically locate the dosapps folder if any of these paths aren't found.

Code: Select all

:_fpath
echo ЪДДДДДДДДДДДДДДДДДДДДДї
echo і Scanning media...   і
echo АДДДДДДДДДДДДДДДДДДДДДЩ
::
xgrep -shy startup[:p]?.bat$ %djdir%\index.dat >%tmp%\_ubcd.bak
xgrep -syrl ^s?e?t?[:s]*a?p?p?c?o?d?e[:p]?= %cddrv%\*.bat >%tmp%\_ubcd.tmp
call var set _x=lines %tmp%\_ubcd.tmp
call var set _y=lines %tmp%\_ubcd.bak
if not "%_x%"=="0" goto _ver5
if "%_y%"=="0" goto _npath
type %tmp%\_ubcd.bak >%tmp%\_ubcd.tmp
goto _ver4
Image

This works for existing versions of UBCD 4/5. It's probably overkill but I thought it might make a nice addition for the next release(?).

as702
Posts: 276
Joined: Tue Jun 17, 2008 3:14 am

Ext2/Ext3/NTFS support

#49 Post by as702 » Tue Sep 16, 2008 9:06 am

Just an update...

The next release should be following shortly (alongside native MS-DOS support). I've also been experimenting with an Ext2/Ext3/NTFS driver by Paragon (IFS for DOS). Below are some of the results...

Image
Memory usage statistics of IFS driver (requires HX DOS-Extender)

Image
Ext3 file system support (Ubuntu volume)

Image
NTFS support (Vista volume)

LongFileName support is included (doesn't require DOSLFN) and the memory footprint is tiny (~40Kb in total). It works natively in MS-DOS environments (6.22 and 7.10) but requires 4DOS in order to use with FreeDOS (FreeCOM doesn't seem to agree with it when running DIR commands). I haven't had a chance to test it with (E)DR-DOS yet.
"If you think things can't get any worse it's probably because you lack sufficient imagination."

Victor Chew
Posts: 1368
Joined: Mon Feb 21, 2005 10:59 pm
Contact:

#50 Post by Victor Chew » Tue Sep 16, 2008 2:41 pm

The Paragon driver sounds exciting!

Can't wait to test it (since I told you NTFS4DOS is extremely unstable for me).

Icecube
Posts: 1278
Joined: Fri Jan 11, 2008 2:52 pm
Contact:

#51 Post by Icecube » Wed Feb 04, 2009 5:06 am

When you boot the freedos image (UBCD50b10), you get very soon:

Code: Select all

Problem with range parameters in CONFIG.SYS!
Format: DEVICE-UMBPCI.SYS /I=aaaa-bbbb /I=cccc-dddd
The version is not correctly displayed in the freedos image (missing the last digit, version is set correctly in ubcd.ini).
For UBCD50b10:

Code: Select all

59 program(s) found

UBCD 5.0.b1
http://www.ultimatebootcd.com
The title of the dialog is 'Ultimate Boot CD 5.0.b1'.

Can you look at it (as702 or Victor)?

I added grub4dos support to the autoexec.bat (added the bold part):
:_nobdrv
if "%srcdrv%"=="" set srcdrv=A:
set _srcdrv=%srcdrv%
set _memdisk=
set _linux=


rem For Grub4dos floppy emulation, we need to get the ubcdcmd parameter from setargs.bat
set ubcdcmd=0
call setargs.bat
if not "%ubcdcmd%"=="0" goto _argsset
set ubcdcmd=



if not exist %ramdrv%\bin\getargs.* goto _ngetargs
getargs >nul
if errorlevel 3 if not errorlevel 4 set _memdisk=3
if errorlevel 2 if not errorlevel 3 set _memdisk=2
if errorlevel 1 if not errorlevel 2 set _memdisk=1

:_ngetargs
if "%_memdisk%"=="" goto _nmemdsk
echo AUTOEXEC: MEMDISK(%_memdisk%)
getargs M >nul
if errorlevel 52 if not errorlevel 53 set _linux=4
if errorlevel 51 if not errorlevel 52 set _linux=3
if errorlevel 50 if not errorlevel 51 set _linux=2
if errorlevel 49 if not errorlevel 50 set _linux=1


:_argsset
rem Here end changes for grub4dos fd0 chainloading and passing the
rem ubcdcmd parameter.



if not "%_linux%"=="" echo AUTOEXEC: (%_linux%)LINUX
if not "%_linux%"=="1" goto _nmemdsk
if exist %ramdrv%\bin\modboot.* goto _nmemdsk
It works, but can anyone confirm that this is good batch programming?

I added also a file \bin\setargs.bat:

Code: Select all

@echo off
set ubcdcmd=0
                                                                
exit 0
It has 64 spaces between set ubcdcmd=0 and exit 0. The total filesize is 100 bytes. (Copy it from the atached freedos image).

To boot the freedos image with attached ubcdcmd parameter with grub4dos, use the following:

Code: Select all

title BIOS V1.35.0
map --mem /ubcd/images/fdubcd.igz (fd0)
map --hook
write --offset=15 (fd0)/bin/setargs.bat ubcdcmd=bios\r\n
chainloader (fd0)+1
rootnoverify (fd0)
map --mem /ubcd/images/fdubcd.igz (fd0):
  • tell grub4dos to emulate a floppy drive (= fd0) and emulate the freedos image in it + copy the image to ram (--mem)
map --hook:
  • after this command the mapping defined in the previous commands is executed.
write --offset=15 (fd0)/bin/setargs.bat ubcdcmd=bios\r\n:
  • Use the write command of grub4dos to write to a existing file in a memory mapped image.
    Start writing the string 'ubcdcmd=bios\r\n' at offset 15 (offset 0 is the beginning of the file). This will skip the following text in setargs.bat (\r\n are symbols for the 'cariage return' and the 'newline' character, which determine the end of a line in dos) (without the quotes).

    Code: Select all

    '@echo off\r\nset '
    So own write command overwrites 'ubcdcmd=0\r\n in setargs.bat. The '\r\n' is important to add at the end, else the ubcdcmd parameter will be set to:

    Code: Select all

    'bios                                                             '
    This will result in an error at the end of the boot process, because the freedos image will search for the filename:

    Code: Select all

    bios                                                             .bat
    in ubcd.ini.

    The error that you get is:

    Code: Select all

    UBCD: Error!!! missing bios
             .bat (check CD)
chainloader (fd0)+1:
  • load the first sector of the freedos image.
rootnoverify (fd0):
  • make the floppy image the boot device.
Now it will boot the image.

Modified freedos image:

http://ubcd.partedmagic.com/downloads/f ... fdubcd.igz

More info about grub4dos (doesn't contain the options of the write command used here):
http://diddy.boot-land.net/grub4dos/Grub4dos.htm

Download the last version of Grub4dos from (read also the documentation inside this zip file):
http://download.gna.org/grub4dos/


Thanks go especially to the following members of the boot-land.net forums:
- tinybit (developer of grub4dos) for implementing the new write function in grub4dos
- caze for giving the modifications needed in autoexec.bat on which my modifications in autoexec.bat are based.
http://www.boot-land.net/forums/index.p ... st&p=56416
- all others like jaclaz (wrote some batch files) which brainstormed with me, finding a way to get the ubcdcmd parameter passed to a grub4dos memory mapped image.
Download Ultimate Boot CD v5.0: http://www.ultimatebootcd.com/download.html
Use Parted Magic for handling all partitioning task: http://partedmagic.com/

Victor Chew
Posts: 1368
Joined: Mon Feb 21, 2005 10:59 pm
Contact:

#52 Post by Victor Chew » Thu Feb 26, 2009 8:29 pm

When you boot the freedos image (UBCD50b10), you get very soon:

Problem with range parameters in CONFIG.SYS!
Format: DEVICE-UMBPCI.SYS /I=aaaa-bbbb /I=cccc-dddd
I don't get this error at all using the default boot option (tried it on both VMWare and VirtualPC). I did fix an error with AUTOEXEC.BAT which resulted in an invalid parameter:

---
rem For Grub4dos floppy emulation, we need to get the ubcdcmd
rem parameter from setargs.bat
---

Added the missing "rem" in bold. How do I reproduce the error?
The version is not correctly displayed in the freedos image (missing the last digit, version is set correctly in ubcd.ini).
For UBCD50b10:
Code:
59 program(s) found

UBCD 5.0.b1
http://www.ultimatebootcd.com
Fixed it in "ubcd.bat" within level3\autorun3.cab.

---
UBCD.BAT
lmod [1,1].[2,1].[3,3]<%tmp%\_ubcd.tmp | nset ubcd_ver=$0
---

Changed the "2" to "3" (bold).

Please download from: http://localhostr.com/files/8b242c/fdubcd.igz

Icecube
Posts: 1278
Joined: Fri Jan 11, 2008 2:52 pm
Contact:

#53 Post by Icecube » Fri Feb 27, 2009 5:14 am

Problem with range parameters in CONFIG.SYS!
Format: DEVICE-UMBPCI.SYS /I=aaaa-bbbb /I=cccc-dddd
I get this error with VirtualBox.
In qemu it doesn't show up either, so it won't be that important.
Download Ultimate Boot CD v5.0: http://www.ultimatebootcd.com/download.html
Use Parted Magic for handling all partitioning task: http://partedmagic.com/

pio
Posts: 9
Joined: Tue May 20, 2008 6:46 pm

#54 Post by pio » Sun Mar 08, 2009 3:59 pm

This floppy image is a very good DOS distribution.

But why is it a floppy image? Why compression is used?

Without need to decompress the startup process could be much faster. Is there still need to pressure all those functionality into floppy image?

Since the grub4dos support in ubcd you could also use a harddisk image... Or if you want drive letter A:\ the superfloppy format. some big sized floppy image as example

All the dosapps plus the Distro FreeDOS R1.33 could be within one single image.

This would have the additional benefit that if you use UBCD on USB that settings could be stored permanently inside the image. (Only the --mem switch would need to be removed in grub4dos menu entry from the map command.)

Icecube
Posts: 1278
Joined: Fri Jan 11, 2008 2:52 pm
Contact:

Free DOS USB driver package

#55 Post by Icecube » Thu Jul 16, 2009 1:49 am

I found a free DOS USB driver package, which is open source and which is very recent (July 1, 2009).
http://bretjohnson.us/
DOS USB Drivers (New as of July 1, 2009)

THIS downloads a zip file containing the complete set of DOS USB drivers (542 kB).

The files are current as of June 30, 2009. The programs are all still in a testing phase (alpha/beta), so do not yet include complete documentation. Read the included USBINTRO.DOC file for documentation and information on how to use the programs.

The zip file contains more than 20 different programs, and includes drivers for keyboards, mice, joysticks, printers, and disk drives, as well as several different test and support programs. Unfortunately, the only type of host controller currently supported is UHCI (full-speed controllers made by Intel and Via Technologies). Support for additional host controllers (OHCI, EHCI, WHCI, XHCI) and devices will be added in the future.

THIS downloads a zip file containing the source code for all of the programs in DOS USB driver package above. Most of the programs are written in Assembly Language, but some are written in C++.
This is a DOS USB driver package. There are several programs here that
will allow you to use USB keyboards, mice, joysticks, printers, and disk
drives in DOS. These programs work VERY differently than any of the DOS
USB drivers you have seen before, and will allow you to use USB devices
in ways you probably never even imagined possible until now.

These programs do have some limitations, however. The main limitation
is that the only USB Host Controller protocol included here is UHCI
(Universal Host Controller Interface). This means that these programs
will currently only work with USB host controllers manufactured by Intel
Corporation or Via Technologies, and will only operate a full-speed
(maximum 12 Mbps). One of the included programs (USBHOSTS.COM) will
tell you what kind(s) of USB host controller(s) you have if you don't
already know. In the future, support for other protocols (OHCI) and
faster speeds (EHCI, WHCI, XHCI) will be added, as will support for
other types of devices.

These programs are still under development (alpha/beta), and therefore
do not include complete documentation. The attached USBINTRO.DOC file
contains basic documentation for all of the programs, and you should
read it before attempting to use any of the programs. It explains
everything you should need to know to be able to start using the
programs, including the licensing arrangements.

You can also go to my web site (http://bretjohnson.us) and download the
source code for all of the programs if you want. The source code is not
included here since I know most people will not be interested in it
anyway, and it takes up a lot of space (makes the download take a lot
longer and takes up a lot of room on your hard drive).

If anybody is interested in helping me out with the progression of this
DOS USB project, I will gladly accept volunteers. There are LOTS of
things that still need to be done, including testing, documentation,
program additions and upgrades, etc. You don't necessarily need to be a
programmer to help out, either. In fact, NOT being a programmer or even
a "power user" is a tremendous asset for certain things, especially
writing documentation.


Good luck,

Bret Johnson
Email: see !README file in the zip file
http://bretjohnson.us
The USBINTRO.DOC file for documentation and information on how to use the programs is fairly large (184 pages).

I didn't test it yet, but a new developed DOS USB driver will hopefully work better than the old ones, which are floating around the internet.
Download Ultimate Boot CD v5.0: http://www.ultimatebootcd.com/download.html
Use Parted Magic for handling all partitioning task: http://partedmagic.com/

superchuck
Posts: 22
Joined: Sun Feb 24, 2008 4:01 pm
Location: Cincinnati, OH
Contact:

#56 Post by superchuck » Fri Jul 17, 2009 6:59 pm

I keep getting the "memory management" screen with the options 0-6 and hardly any of the tools run for UBCD 4.1.1.

I have tried various options (0 through 6) -- but most of the tools do not run properly. When option 0 is selected, I get the PANIC, MCB chain corrupted. I've been searching the forum and came across this post.
Download
Source: MediaFire
http://ubcd.partedmagic.com/downloads/f ... fdubcd.igz - (2.88Mb core version) for UBCD4.11/5.xx

Installation
Download, unzip, then replace the existing image "dosubcd.igz" from the UBCD ISO:
UBCD 5.0b
Code:
/ubcd/images/dosubcd.igz

UBCD 4.1.1
Code:
/images/dosubcd.igz
I downloaded this file -- but do not see "dosubcd.igz" anywhere! What am I overlooking?

Icecube
Posts: 1278
Joined: Fri Jan 11, 2008 2:52 pm
Contact:

#57 Post by Icecube » Sat Jul 18, 2009 10:32 am

dosubcd.igz is renamed to fdubcd.igz (abbreviation of
Freedos UBCD).
Download Ultimate Boot CD v5.0: http://www.ultimatebootcd.com/download.html
Use Parted Magic for handling all partitioning task: http://partedmagic.com/

superchuck
Posts: 22
Joined: Sun Feb 24, 2008 4:01 pm
Location: Cincinnati, OH
Contact:

#58 Post by superchuck » Sat Jul 18, 2009 11:04 am

So what am I supposed to do?


a) Save fdubcd.igv to the UBCD\images folder

or

b) Rename fdubcd.igz to dosubcd.igz and overwrite the existing file

Victor Chew
Posts: 1368
Joined: Mon Feb 21, 2005 10:59 pm
Contact:

#59 Post by Victor Chew » Sat Jul 18, 2009 1:32 pm

a)

superchuck
Posts: 22
Joined: Sun Feb 24, 2008 4:01 pm
Location: Cincinnati, OH
Contact:

#60 Post by superchuck » Sat Jul 18, 2009 3:20 pm

Victor Chew wrote:a)
OK -- thanks...

May I ask for an explanation? (fdubcd.igz does not exist in the images folder of the ucbd411.iso I downloaded.)

How does UBCD know to use fbubcd.igz instead of dosubcd.igz?

Is there something I should read up on?

Post Reply