home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Der Mediaplex Sampler - Die 6 von Plex
/
6_v_plex.zip
/
6_v_plex
/
DISK6
/
OS_19
/
WUNDERKI.ZIP
/
PATCHBP.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-09-30
|
3KB
|
92 lines
Program PatchBP; {--- 1993 Matthias Withopf / c't ---}
Var
f : File of Byte;
s : String;
c : Byte;
BP701 : Boolean;
Error : Boolean;
Procedure Chg(O1,O1a,O2,O2a,O3,O3a : LongInt;
OldVal,NewVal : Array of Char);
Var
b : Byte;
i : Integer;
O : LongInt;
Begin
If BP701 then
Case c of 1 : O := O1a; 2 : O := O2a; 3 : O := O3a; End
else
Case c of 1 : O := O1; 2 : O := O2; 3 : O := O3; End;
If O <> 0 then
Begin
For i := Low(OldVal) to High(OldVal) do
Begin
Seek(f,O); Read(f,b); Seek(f,O);
If (b = Ord(OldVal[i])) or (b = Ord(NewVal[i])) then
Begin
b := Ord(NewVal[i]); Write(f,b)
End
else
Begin
WriteLn('Fehler beim Patchen! Abbruch.');
Close(f); Halt(50);
End;
Inc(O);
End;
End;
End;
Begin
Error := True;
If ParamCount >= 2 then
Begin
s := ParamStr(2) + ' ';
c := Pos(UpCase(s[1]),'CIR');
If c > 0 then Error := False;
BP701 := ParamStr(3) = '701';
End;
If Error then
Begin
WriteLn('Aufruf: PatchBP <Dateiname> C [701] für BPC.EXE');
WriteLn(' PatchBP <Dateiname> I [701] für BP.EXE');
WriteLn(' PatchBP <Dateiname> R [701] für BP.REZ');
Halt(10);
End;
Assign(f,ParamStr(1)); Reset(f);
{ Kein InitTask() bei Programmstart. }
Chg($086F9,$08706,$1BBEF,$1BB30,$0 ,$0 ,#6,#2);
{ Application Flags = 2. }
Chg($0D3FE,$0D421,$20CAF,$20C06,$0 ,$0 ,#3,#2);
{ (Compatible with Windowing API). }
Chg($0D408,$0D42B,$20CB9,$20C10,$0 ,$0 ,#$83,#$82);
{ Operating System = OS/2. }
Chg($0D48B,$0D4AE,$20D3C,$20C93,$0 ,$0 ,#2,#1);
{ Stub gibt 'This program requires OS/2' aus. }
Chg($0E5AA,$0E5AA,$11BEC,$11AEC,$0 ,$0,'Microso','OS/2'#13#10'$');
{ Compiler meldet sich mit 'Version 7OS2'. }
Chg($14C19,$14C19,$010C3,$010C3,$0 ,$0 ,'.0 ','OS2');
{ Kommandozeilen-Parameter -CO = OS/2 target. }
Chg($14D4B,$14D4B,$0 ,$0 ,$0 ,$0 ,'W','O');
Chg($14D4F,$14D4F,$0 ,$0 ,$0 ,$0 ,'Windows','OS/2 ');
Chg($01376,$01375,$0 ,$0 ,$0 ,$0 ,'W','O');
{ Standard-Unit-Extension ist 'TPO'. }
Chg($15391,$15391,$617A7,$617A7,$0 ,$0 ,'W','O');
{ 'OS2' als bedingtes Symbol definieren. }
Chg($1645E,$1645E,$61882,$61882,$0 ,$0 ,#7'WINDO',#3'OS2'#0#2);
{ Compiler|Zielplattform einstellen = 'OS/2'. }
Chg($0 ,$0 ,$6D290,$6D390,$02B9C,$02B9C,'W~indows','O~S/2 ');
{ Optionen|Compiler = 'OS/2'. }
Chg($0 ,$0 ,$6D788,$6D888,$030D9,$030D9,'Windows','OS/2 ');
{ Optionen|Speicherauslegung = 'OS/2'. }
Chg($0 ,$0 ,$6D949,$6DA49,$03298,$03298,'Windows',' OS/2');
{ Standard-Library ist 'OS2.TPL'. }
Chg($1525A,$1525A,$6E86E,$6E96E,$04251,$04251,'TPW','OS2');
{ Compiler|Zielplattform = 'OS/2'. }
Chg($0 ,$0 ,$70311,$70411,$06396,$06396,'Windows',' OS/2');
{ Compile-Box = 'OS/2'. }
Chg($0 ,$0 ,$779B5,$77AB5,$0E034,$0E034,'Windows',' OS/2');
WriteLn('Patch ok.');
Close(f);
End.