First post, by boxgnome
Hi,
A newbie here, but using DosBox for sometime. I created a autoexec script within the dosbox-0.74.conf file for creating a quick user interface menu for choosing and running DOS programs. The script below currently allows for up to 60 individual programs, although I only have the first 15 defined (page 1). I have run into the problem of a size limit of characters allowed in the autoexec section where if I exceed the limit (somewhere around 4000 characters, the script wont run.
So, can someone suggest a workaround (other than calling another batch file or getting data from an external file source)? And can the DosBox author consider a fix in buffer size for a future release?
Here is the script file, feel free to use and modify for your own purposes:
(note1) pasting the code has striped out the spaces and will affect proper formatting if you copy and paste from the posted code below- refer to my .conf file which I have attached
(note2) most variable name were kept short to conserve bytes. The PRG variable is used both for the name of the program directory and the program executable, to keep it simple in the :START execution section.
[autoexec]
@MOUNT -U C
@CLS
:DISP1
@SET P1=DUKE NUKEM I EPISODE ONE: "SHRAPNEL CITY"
@SET P2=DUKE NUKEM I EPISODE TWO: "MISSION: MOONBASE"
@SET P3=DUKE NUKEM I EPISODE THREE: "TRAPPED IN THE FUTURE!"
@SET P4=DUKE NUKEM II EPISODES 1,2,3 AND 4
@SET P5=DUKE NUKEM 3D EPISODES 1,2 AND 3
@SET P6=RAPTOR
@SET P7=REALMS OF CHAOS
@SET P8=RISE OF THE TRIAD
@SET P9=TERMINAL VELOCITY
@SET PA=WACKY WHEELS
@SET PB=COLOSSAL CAVE
@SET PC=ASTERIODS
@SET PD=CENTIPEDE
@SET PE=TURBO PASCAL 6
@SET PF=TURBO PASCAL 7
@SET PG=1
@GOTO DISPLAY
:DISP2
@SET P1=
@SET P2=
@SET P3=
@SET P4=
@SET P5=
@SET P6=
@SET P7=
@SET P8=
@SET P9=
@SET PA=
@SET PB=
@SET PC=
@SET PD=
@SET PE=
@SET PF=
@SET PG=2
@GOTO DISPLAY
:DISP3
@SET P1=
@SET P2=
@SET P3=
@SET P4=
@SET P5=
@SET P6=
@SET P7=
@SET P8=
@SET P9=
@SET PA=
@SET PB=
@SET PC=
@SET PD=
@SET PE=
@SET PF=
@SET PG=3
@GOTO DISPLAY
:DISP4
@SET P1=
@SET P2=
@SET P3=
@SET P4=
@SET P5=
@SET P6=
@SET P7=
@SET P8=
@SET P9=
@SET PA=
@SET PB=
@SET PC=
@SET PD=
@SET PE=
@SET PF=
@SET PG=4
:DISPLAY
ECHO. [1;37;44m
@CLS
@ECHO OFF
ECHO.[2J WELCOME TO THE CLASSIC DOS PROGRAMS!
ECHO. SELECT A PROGRAM
ECHO. _________________________________________________________________
ECHO.
ECHO. [1] %P1%
ECHO. [2] %P2%
ECHO. [3] %P3%
ECHO. [4] %P4%
ECHO. [5] %P5%
ECHO. [6] %P6%
ECHO. [7] %P7%
ECHO. [8] %P8%
ECHO. [9] %P9%
ECHO. [A] %PA%
ECHO. %PB%
ECHO. [C] %PC%
ECHO. [D] %PD%
ECHO. [E] %PE%
ECHO. [F] %PF%
ECHO.
ECHO. More options [X] Exit [Z] Command Line
ECHO.
ECHO. ___________________________ Page %PG% of 4 ___________________________
ECHO.
@CHOICE /C:123456789ABCDEFMXZ /N PRESS A [KEY] TO CHOOSE...%1
@SET EL==ERRORLEVEL
@SET PRG==""
@IF %EL%==18 GOTO END
@IF %EL%==17 EXIT
@IF NOT %EL%==16 GOTO LOAD%PG%
@IF %PG%==4 GOTO DISP1
@IF %PG%==3 GOTO DISP4
@IF %PG%==2 GOTO DISP3
@IF %PG%==1 GOTO DISP2
:LOAD1
@IF %EL%==1 SET PRG=DN1
@IF %EL%==2 SET PRG=DN2
@IF %EL%==3 SET PRG=DN3
@IF %EL%==4 SET PRG=nukem2
@IF %EL%==5 SET PRG=duke3d
@IF %EL%==6 SET PRG=RAP
@IF %EL%==7 SET PRG=ROCSW
@IF %EL%==8 SET PRG=ROTT
@IF %EL%==9 SET PRG=TV
@IF %EL%==10 SET PRG=WW
@IF %EL%==11 SET PRG=ADVENTURE
@IF %EL%==12 SET PRG=
@IF %EL%==13 SET PRG=
@IF %EL%==14 SET PRG=TP6
@IF %EL%==15 SET PRG=TP7
@GOTO START
:LOAD2
@IF %EL%==1 SET PRG=DN1
@IF %EL%==2 SET PRG=DN2
@IF %EL%==3 SET PRG=DN3
@IF %EL%==4 SET PRG=nukem2
@IF %EL%==5 SET PRG=duke3d
@IF %EL%==6 SET PRG=RAP
@IF %EL%==7 SET PRG=ROCSW
@IF %EL%==8 SET PRG=ROTT
@IF %EL%==9 SET PRG=TV
@IF %EL%==10 SET PRG=WW
@IF %EL%==11 SET PRG=ADVENTURE
@IF %EL%==12 SET PRG=
@IF %EL%==13 SET PRG=
@IF %EL%==14 SET PRG=TP6
@IF %EL%==15 SET PRG=TP7
@GOTO START
:LOAD3
@IF %EL%==1 SET PRG=DN1
@IF %EL%==2 SET PRG=DN2
@IF %EL%==3 SET PRG=DN3
@IF %EL%==4 SET PRG=nukem2
@IF %EL%==5 SET PRG=duke3d
@IF %EL%==6 SET PRG=RAP
@IF %EL%==7 SET PRG=ROCSW
@IF %EL%==8 SET PRG=ROTT
@IF %EL%==9 SET PRG=TV
@IF %EL%==10 SET PRG=WW
@IF %EL%==11 SET PRG=ADVENTURE
@IF %EL%==12 SET PRG=
@IF %EL%==13 SET PRG=
@IF %EL%==14 SET PRG=TP6
@IF %EL%==15 SET PRG=TP7
:LOAD4
@IF %EL%==1 SET PRG=DN1
@IF %EL%==2 SET PRG=DN2
@IF %EL%==3 SET PRG=DN3
@IF %EL%==4 SET PRG=nukem2
@IF %EL%==5 SET PRG=duke3d
@IF %EL%==6 SET PRG=RAP
@IF %EL%==7 SET PRG=ROCSW
@IF %EL%==8 SET PRG=ROTT
@IF %EL%==9 SET PRG=TV
@IF %EL%==10 SET PRG=WW
@IF %EL%==11 SET PRG=ADVENTURE
@IF %EL%==12 SET PRG=
@IF %EL%==13 SET PRG=
@IF %EL%==14 SET PRG=TP6
@IF %EL%==15 SET PRG=TP7
:START
@CLS
INTRO SPECIAL
ECHO.
ECHO.
@PAUSE
@CLS
@MOUNT c C:\DOS_PROGRAMS\%PRG%
@C:
@%PRG%.EXE
@CLS
@MOUNT -U C
GOTO DISP%PG%
:END
CLS
ECHO.[1;37;40m
@MOUNT -U C