124 lines
3.0 KiB
Plaintext
124 lines
3.0 KiB
Plaintext
program DecodeSubraum;
|
||
|
||
uses Logo, Crt, VFx, Numbers;
|
||
|
||
var KeyF,DecF: text;
|
||
|
||
|
||
procedure Init;
|
||
begin
|
||
ClrScr;
|
||
CursorOff;
|
||
TextColor(14);
|
||
WriteCLn('-=ðþ Subraum Decoder þð=-');
|
||
WriteLn;
|
||
TextColor(8);
|
||
WriteLn('Decodiert KEYFILES vom Programm HRECORD.EXE.');
|
||
WriteLn;
|
||
TextColor(7);
|
||
window(1,5,80,25);
|
||
end;
|
||
|
||
procedure OpenInOut(InFile,OutFile: string);
|
||
begin
|
||
WStat('™ffne '+InFile+' f<>r Eingabeoperationen');
|
||
Assign(KeyF,InFile);
|
||
{$I-}
|
||
Reset(KeyF);
|
||
if IOResult<>0 then begin
|
||
Wcheck('%%140#FAIL');
|
||
CWriteLn('%%12#FEHLER!! Datei "'+InFile+'" konnte nicht ge”ffnet werden.');
|
||
Halt;
|
||
end;
|
||
{$I+}
|
||
Wcheck('%%10# OK ');
|
||
|
||
WStat('™ffne '+OutFile+' f<>r Ausgabeoperationen');
|
||
Assign(DecF,OutFile);
|
||
{$I-}
|
||
Rewrite(DecF);
|
||
if IOResult<>0 then begin
|
||
Wcheck('%%140#FAIL');
|
||
CWriteLn('%%10#FEHLER!! Datei "'+OutFile+'" konnte nicht ge”ffnet werden.');
|
||
Halt;
|
||
end;
|
||
{$I+}
|
||
Wcheck('%%10# OK ');
|
||
end;
|
||
|
||
procedure Decode;
|
||
var tmp: string;
|
||
key: byte;
|
||
dat: string;
|
||
begin
|
||
WStat('Decodierung');
|
||
dat := '';
|
||
while NOT Eof(KeyF) do begin
|
||
ReadLn(KeyF,tmp);
|
||
if Copy(tmp,1,3)='KEY' then begin
|
||
key := Hex2Dec(Copy(tmp,9,2));
|
||
case key of
|
||
008: dat := Copy(dat,1,Length(dat)-1);
|
||
013: begin WriteLn(DecF,dat); dat := ''; end;
|
||
else
|
||
dat:=dat+Chr(key);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
Wcheck('%%10# OK ');
|
||
end;
|
||
|
||
procedure CloseInOut;
|
||
begin
|
||
WStat('Schlieáe Eingabedatei');
|
||
Close(KeyF);
|
||
Wcheck('%%10# OK ');
|
||
WStat('Schlieáe Ausgabedatei');
|
||
Close(DecF);
|
||
Wcheck('%%10# OK ');
|
||
end;
|
||
|
||
procedure OutIt;
|
||
begin
|
||
WriteLn;
|
||
window(1,1,80,25);
|
||
GotoXY(1,24);
|
||
WriteLn('Programm beendet.');
|
||
CursorOn;
|
||
end;
|
||
|
||
begin
|
||
Init;
|
||
if ((ParamStr(1)='/?') OR (ParamStr(1)='-?') OR (ParamStr(1)='?') OR ((ParamStr(1)='') AND (ParamStr(2)=''))) then begin
|
||
WriteLogo;
|
||
TextColor(14);
|
||
WriteCLn('+ + + Taste dr<64>cken + + +');
|
||
ReadKey;
|
||
GotoXY(1,WhereY-1);
|
||
Write(Space(80));
|
||
GotoXY(1,WhereY-1);
|
||
TextColor(7);
|
||
WriteLn('Die DAT-Dateien sind nach folgendem Schema aufgebaut:');
|
||
WriteLn('Die erste Zeile ist eine Leerzeile, in der 2. Zeile steht die Gesamtzahl der');
|
||
WriteLn('enthaltenen Zeichen. Danach folgen die einzelnen Zeichen in folgender Form:');
|
||
WriteLn;
|
||
WriteLn('KEY: xx yy zz aa');
|
||
WriteLn('(xx,yy,zz und aa sind Hexadezimalwerte)');
|
||
WriteLn;
|
||
WriteLn('xx ist dabei der SCANCODE des eingelesenen Zeichens, yy der „quivalente');
|
||
WriteLn('ASCII-Code und zz ein STATUS-Code. aa hat scheinbar keine Bedeutung.');
|
||
WriteLn;
|
||
WriteLn('Dieses Programm wandelt die ASCII-Codes wieder in ASCII-Zeichen um und');
|
||
WriteLn('erstellt eine Datei mit dem "dechiffrierten" Text.');
|
||
WriteLn;
|
||
WriteLn('Syntax: ',ParamStr(0),' <Eingabedatei> <Ausgabedatei>');
|
||
WriteLn;
|
||
OutIt;
|
||
Halt;
|
||
end;
|
||
OpenInOut(ParamStr(1),ParamStr(2));
|
||
Decode;
|
||
CloseInOut;
|
||
OutIt;
|
||
end. |