tb1/tb1_dos/tbsetup.pas

226 lines
6.4 KiB
ObjectPascal

program TOM_BOMBEM_SETUP;
uses dos,crt,detect;
{$I tbs1.pas}
type screentype = array[0..3999] of byte;
var screen: screentype absolute $B800:0000;
ch:char;
i:byte;
getsettings,redo:boolean;
BLASTER: string;
BASEIO,DMA,IRQ,DMA16:word;
sbsound,soundeffects:byte;
ii:integer;
ff:text;
bobb:word;
label bob,skipper;
function gets(x,y,z,a:integer;hex:boolean):word;
var tempst:string;
tempw:word;
codei:integer;
begin
codei:=0;
gotoxy(x,y);
readln(tempst);
if hex then begin val(tempst,bobb,codei); insert('$',tempst,1); end;
val(tempst,tempw,codei);
if (tempw>=a) or (tempw<=z) then tempw:=255;
if codei<>0 then tempw:=255;
gets:=tempw;
end;
function UpcaseStr(Str: string): string;
var i: byte;
Temp: string;
begin
Temp[0] := Str[0];
for i := 1 to Length(Str) do Temp[i] := Upcase(Str[i]);
UpcaseStr := Temp;
end;
function getsetting(str:string;id:char;hex:boolean):word;
var Temp : string;
Num : word;
Code : integer;
begin
Temp := Str;
if Pos(ID, Temp) <> 0 then begin
Delete(Temp, 1, Pos(ID, Temp));
Delete(Temp, Pos(' ', Temp), 255);
if Hex then begin val(temp, bobb, code); Insert('$', Temp, 1); end;
Val(Temp, Num, Code);
if Code = 0 then GetSetting := Num
else GetSetting := $FF;
end
else GetSetting := $FF;
end;
procedure quit;
begin
halt(0);
end;
begin
{OPENING}
clrscr;
move(imagedata1,screen,4000);
bob:
redo:=false;
{REQUIREMENTS}
clrscr;
move(imagedata2,screen,4000);
repeat
repeat until keypressed;
ch:=readkey;
if upcase(ch)='Q' then quit;
until ch=#13;
{Ask About SoundBlaster Sound}
clrscr;
sbsound:=0;
move(imagedata4,screen,4000);
for i:=11 to 20 do begin
gotoxy(4,i);
writeln(' ');
end;
textcolor(13);
gotoxy(4,12); write('Do You Want To Have Sound Effects?');
gotoxy(6,13); write('(y/n)---->');
gotoxy(17,13);
textcolor(3);
repeat
repeat until keypressed;
ch:=readkey;
if (upcase(ch)='Y') or (upcase(ch)='N') then begin
if upcase(ch)='Y' then soundeffects:=1;
if upcase(ch)='N' then soundeffects:=0;
write(ch);
gotoxy(17,13);
end;
if upcase(ch)='Q' then quit;
until ch=#13;
if soundeffects=0 then goto skipper;
{check if want soundbalster}
textcolor(13);
gotoxy(4,16); write('Do You Have A Soundblaster Card?');
gotoxy(6,17); write('(y/n)---->');
gotoxy(17,17);
textcolor(3);
repeat
repeat until keypressed;
ch:=readkey;
if (upcase(ch)='Y') or (upcase(ch)='N') then begin
if upcase(ch)='Y' then sbsound:=1;
if upcase(ch)='N' then sbsound:=0;
write(ch);
gotoxy(17,17);
end;
if upcase(ch)='Q' then quit;
until ch=#13;
{If Soundblaster, then configure it}
if (sbsound=1) then begin
clrscr;
move(imagedata4,screen,4000);
BLASTER := UpcaseStr(GetEnv('BLASTER'));
BaseIO := GetSetting(BLASTER, 'A', true); {Hex}
IRQ := GetSetting(BLASTER, 'I', false); {Decimal}
DMA := GetSetting(BLASTER, 'D', false); {Decimal}
DMA16 := GetSetting(BLASTER, 'H', false); {Decimal}
ii:=-1;
repeat
ii:=ii+22;
textcolor(3);
gotoxy(ii,14); write(bobb);
gotoxy(ii,15); write(irq);
gotoxy(ii,16); write(dma);
gotoxy(ii,17); write(dma16);
if BaseIO = $FF then begin gotoxy(ii,14); write('---'); end;
if IRQ = $FF then begin gotoxy(ii,15); write('---'); end;
if DMA = $FF then begin gotoxy(ii,16); write('---'); end;
if DMA16 = $FF then begin gotoxy(ii,17); write('---'); end;
until ii>=43;
gotoxy(14,20);
repeat
gotoxy(14,20);
repeat until keypressed;
ch:=readkey;
if (ch>'0') and (ch<'5') then begin
case ch of
'1':begin gotoxy(43,14); writeln(' ');
baseio:=gets(43,14,100,400,true);
gotoxy(43,14); writeln(' ');
gotoxy(43,14); write(bobb);
end;
'2':begin gotoxy(43,15); writeln(' ');
irq:=gets(43,15,2,12,false);
gotoxy(43,15); writeln(' ');
gotoxy(43,15); write(irq);
end;
'3':begin gotoxy(43,16); writeln(' ');
dma:=gets(43,16,0,100,false);
gotoxy(43,16); writeln(' ');
gotoxy(43,16); write(dma);
end;
'4':begin gotoxy(43,17); writeln(' ');
dma16:=gets(43,17,0,100,false);
gotoxy(43,17); writeln(' ');
gotoxy(43,17); write(dma16);
end;
end;
end;
if upcase(ch)='Q' then quit;
until ch=#13;
end;
{Check for mistakes}
skipper:
clrscr;
move(imagedata5,screen,4000);
gotoxy(16,12);
textcolor(3);
if soundeffects=1 then begin
write('Sound Effects : ');
if sbsound=1 then writeln('Sound Blaster')
else writeln('No Soundblaster');
end
else writeln('No Sound Effects');
if (sbsound=1) then begin
gotoxy(16,14);
writeln('BaseIo:',bobb);
gotoxy(16,15);
writeln('IRQ: ',irq);
gotoxy(16,16);
writeln('DMA: ',dma);
end;
repeat
repeat until keypressed;
ch:=readkey;
if upcase(ch)='R' then begin redo:=true; ch:=#13; end;
if upcase(ch)='Q' then quit;
until ch=#13;
if redo then goto bob;
assign(ff,'config.tb1');
rewrite(ff);
writeln(ff,soundeffects);
writeln(ff,sbsound);
writeln(ff,baseio);
writeln(ff,irq);
writeln(ff,dma);
close(ff);
clrscr;
move(imagedata6,screen,4000);
gotoxy(1,24);
end.