home *** CD-ROM | disk | FTP | other *** search
- {$A+,B-,D-,E-,F-,G-,I+,L-,N-,O-,R-,S+,V+,X-}
- {$M 16384,0,655360}
-
- (*--------------------------------------------------------*)
- (* DUMPDIC.PAS *)
- (* Dictionary-Dump für Naxos Version 1.01 *)
- (* (C) 1992 DMV-Verlag & A. Zissis *)
- (* Compiler: Turbo Pascal 6.0 *)
- (*--------------------------------------------------------*)
-
- PROGRAM DumpDic;
- USES
- Dos;
- TYPE
- SymTab = RECORD
- Name : STRING[12];
- Typ : BYTE;
- Qfa : WORD;
- Par0,
- Par1,
- Par2,
- Par3 : WORD;
- QFALen : WORD;
- END;
-
- VAR
- Buf : SymTab;
- f, tf : FILE ;
- li, pc : WORD;
- ZPtr : WORD;
- ch : CHAR;
-
- FUNCTION TypStr (nx: BYTE): STRING;
- VAR
- n : STRING;
- BEGIN
- Str(nx:3, n);
- CASE nx OF
- 1 : n := 'VARIABLE';
- 2 : n := 'ARRAY';
- 3 : n := 'RECORD';
- 4 : n := 'FIELD';
- 5 : n := 'STRING';
- 10 : n := 'KONSTANTE';
- 11 : n := 'ADRESS-KONSTANTE';
- 12 : n := 'KOLON-DEFINITION';
- 13 : n := 'PROZEDUR';
- 14 : n := 'VEKTOR';
- 15 : n := 'DOUBLE-KONSTANTE';
- 16 : n := 'FLOAT-KONSTANTE';
- ELSE IF nx > 127 THEN n := 'SYSTEM #' + n;
- END;
- TypStr := n;
- END;
-
- BEGIN
- WriteLn(^J'NAXOS Dictionary Dump V1.00');
- WriteLn('(C) 1992 DMV-Verlag & A.Zissis');
- IF Paramcount < 1 THEN BEGIN
- WriteLn('Fehler: Name des Dictionaries muß '+
- 'angegeben werden!');
- END ELSE BEGIN
- WriteLn(ParamStr(1) + '.DIC');
- WriteLn(^J);
- Assign(f, ParamStr(1) + '.DIC');
- Assign(tf, ParamStr(1) + '.FTH');
- IF ParamCount > 1 THEN
- Assign(Output, ParamStr(1) + '.DMP');
- ReWrite(Output);
- Reset(f, 1);
- Reset(tf, 1);
- BlockRead(f,pc,2);
- IF pc = 0 THEN
- WriteLn('NAXOS V3.x Dictionary')
- ELSE
- WriteLn('NAXOS V2.x Dictionary, PC=', pc);
- WriteLn;
- IF ParamCount = 1 THEN BEGIN
- WriteLn('Weiter mit Return');
- ReadLn;
- END;
- li := 1;
- REPEAT
- BlockRead(f, Buf, SizeOf(Buf));
- IF Buf.Name[0] > #127 THEN BEGIN
- Buf.Name[0] := Chr($7F AND BYTE(Buf.Name[0]));
- Write('SEALED ');
- END;
- WriteLn(Buf.Name,' : Typ=', TypStr(Buf.Typ));
- WriteLn('PAR0=', Buf.Par0:5, ' PAR1=', Buf.Par1:5);
- WriteLn('PAR2=', Buf.Par2:5, ' PAR3=', Buf.Par3:5);
- WriteLn('QFA =', Buf.Qfa: 5, ' QFALEN=', Buf.QFALen);
- WriteLn;
- Seek(tf, Buf.Qfa);
- IF Buf.Typ < 128 THEN
- FOR ZPtr := 0 TO Buf.QFALen-1 DO BEGIN
- BlockRead(tf, ch, 1);
- Write(ch);
- END;
- WriteLn;
- Inc(li);
- (* IF (li MOD 4 = 0) AND (Paramcount = 1) THEN BEGIN
- WriteLn('Weiter mit Return');
- ReadLn;
- END;
- *)
- UNTIL EoF(f);
- Close(f);
- Close(tf);
- Close(Output);
- END;
- END.
-
- (*--------------------------------------------------------*)
- (* Ende von DUMPDIC.PAS *)
-