home *** CD-ROM | disk | FTP | other *** search
- {---------------------------------------------------------------------------}
- { Patch fuer Turbo-Pascal 3.0 unter CP/M 3.0 Plus zur korrekten Anzeige des
- freien Disketten-Speicherplatzes bei Ausfuehrung des DIR-Kommandos. }
-
- PROGRAM TurPatch; { Version 1.10.86 }
-
- CONST w: ARRAY[65..104] OF BYTE = { neue Maschinen-Routine }
- (14, 26, 17, 116, 44, 205, 5, 0, 14, 25, 205,
- 5, 0, 14, 46, 95, 205, 5, 0, 42, 116, 44, 58,
- 118, 44, 79, 6, 3, 175, 203, 25, 203, 28, 203,
- 29, 16, 247, 195, 119, 44);
-
- TYPE buf = ARRAY[0..127] OF BYTE;
-
- VAR f : FILE; { fuer TURBO.COM }
- i0, i: INTEGER; { Ein-/Ausgabe-Fehlernummer, Laufvariable }
- b : buf; { Ein-/Ausgabepuffer fuer BLOCKREAD und -WRITE }
-
- BEGIN
- BDos(45, 225); { BDOS-Error-Mode auf "return" setzen }
- ASSIGN(f, 'TURBO.COM');
- REPEAT
- WRITELN;
- WRITE('Bitte Diskette mit TURBO.COM in das angemeldete Lauf');
- WRITELN('werk legen und');
- WRITE('RETURN druecken! (^C fuer Abbruch) ');
- READLN;
- {$I-} { Ein-/Ausgabefehlerbehandlung durch Pascal ausschalten }
- RESET(f);
- {$I+} { " " " " anschalten }
- i0:=IORESULT;
- IF i0 > 0 THEN
- WRITELN('Fehler-Nr. ', I0, ' beim File-RESET!');
- UNTIL i0 = 0;
- SEEK(f, 86); { zu 'patchenden' Record suchen }
- BLOCKREAD(f, b, 1); { und von Disk lesen... }
- FOR i := 65 TO 104 DO b[i] := w[i]; { Record flicken... }
- SEEK(f, 86); { und wieder auf Disk zurueck- }
- { schreiben... }
- {$I-}
- BLOCKWRITE(f, b, 1);
- {$I+}
- i0 := IORESULT; { Datei vielleicht schreibgeschuetzt? }
- IF i0 = 0 THEN
- BEGIN
- SEEK(f, 87);
- BLOCKREAD(f, b, 1); { Zweiten Teil der Routine ... }
- FOR i := 17 TO 20 DO b[i] := 0; { ... mit NOP'S ueberschreiben }
- SEEK(f, 87);
- BLOCKWRITE(f, b, 1);
- WRITELN; WRITELN('Patch installiert!'); WRITELN;
- END
- ELSE
- WRITELN('Fehler ', i0, ' beim BLOCKWRITE. Programm gestoppt!');
- CLOSE(f);
- END.