home *** CD-ROM | disk | FTP | other *** search
- ⓪ MODULE SignumRead;
- ⓪
- ⓪ (*
- ⓪!* 19.02.92: '1' und '2' waren vertauscht.
- ⓪!*)
- ⓪
- ⓪ (*
- ⓪!* '#' markieren Fußnoten
- ⓪!* '@' stehen dort, wo Zeichen dichter als ihre Proportionen aufeinander liegen
- ⓪!* '@@@' markiert einen Bruch im Text
- ⓪!*)
- ⓪
- ⓪ IMPORT TOSIO, SimpleError;
- ⓪
- ⓪ FROM InOut IMPORT Write, WriteLn, WriteString, WriteCard, FlushKbd, WritePg,
- ⓪(WriteLHex, BusyRead, Read;
- ⓪
- ⓪ FROM SYSTEM IMPORT ADDRESS, ADR, TSIZE, BYTE, WORD, LONGWORD, ASSEMBLER;
- ⓪
- ⓪ FROM GEMEnv IMPORT RC, InitGem, DeviceHandle;
- ⓪
- ⓪ FROM EasyGEM0 IMPORT HideMouse;
- ⓪
- ⓪ FROM EasyGEM1 IMPORT SelectMask, SelectFile;
- ⓪
- ⓪ FROM FileNames IMPORT ConcatPath;
- ⓪
- ⓪ FROM Strings IMPORT Compare, Relation, String, Concat, Assign, Insert, Empty,
- ⓪(Append;
- ⓪
- ⓪ FROM Binary IMPORT ReadBytes, ReadBlock, FilePos, FileSize;
- ⓪
- ⓪ IMPORT Text;
- ⓪
- ⓪ FROM Files IMPORT File, Open, Create, Close, Access, ReplaceMode,
- ⓪(EOF, State, ResetState;
- ⓪
- ⓪ FROM Storage IMPORT DEALLOCATE;
- ⓪ IMPORT Storage;
- ⓪
- ⓪ PROCEDURE ALLOCATE (VAR ad: ADDRESS; l: LONGCARD);
- ⓪"BEGIN
- ⓪$WriteLn;
- ⓪$WriteString ('ALLOCATE: ');
- ⓪$WriteCard (l,0);
- ⓪$WriteLn;
- ⓪$Storage.ALLOCATE (ad, l)
- ⓪"END ALLOCATE;
- ⓪
- ⓪
- ⓪ VAR out: File;
- ⓪$chsnames: ARRAY [0..7], [0..9] OF CHAR;
- ⓪$chOffset: ARRAY [0..7], [0..127] OF LONGCARD;
- ⓪$font: ARRAY [0..7] OF ADDRESS;
- ⓪$spaceWidth: INTEGER;
- ⓪
- ⓪ TYPE Str255 = ARRAY [0..255] OF CHAR;
- ⓪
- ⓪ PROCEDURE Space ( n: INTEGER ): Str255;
- ⓪"(*$L-*)
- ⓪"BEGIN
- ⓪$ASSEMBLER
- ⓪(MOVE -(A3),D0
- ⓪(MOVE.L A3,A0
- ⓪(ADDA.W #256,A3
- ⓪(MOVEQ #' ',D1
- ⓪(BRA C
- ⓪&L MOVE.B D1,(A0)+
- ⓪&C SUBQ #1,D0
- ⓪(BPL L
- ⓪(CLR.B (A0)+
- ⓪$END
- ⓪"END Space;
- ⓪"(*$L=*)
- ⓪
- ⓪ PROCEDURE wait;
- ⓪"VAR c: CHAR;
- ⓪"BEGIN
- ⓪$FlushKbd;
- ⓪$Read (c)
- ⓪"END wait;
- ⓪
- ⓪ TYPE
- ⓪
- ⓪ (*
- ⓪"DocHead = RECORD
- ⓪2kenn: ARRAY [0..7] OF CHAR;
- ⓪2lg: LONGCARD;
- ⓪2div: ARRAY [0..127] OF CHAR
- ⓪0END;
- ⓪
- ⓪"ChsBlock = RECORD
- ⓪2kenn: ARRAY [0..3] OF CHAR;
- ⓪2lg: LONGCARD;
- ⓪0END;
- ⓪
- ⓪"Par1Block = RECORD
- ⓪2kenn: ARRAY [0..3] OF CHAR;
- ⓪2lg: LONGCARD;
- ⓪2tabs: ARRAY [1..40] OF INTEGER;
- ⓪2list: ARRAY [1..15] OF INTEGER;
- ⓪0END;
- ⓪
- ⓪"PageBlock = RECORD
- ⓪2kenn: ARRAY [0..3] OF CHAR;
- ⓪2lg: LONGCARD;
- ⓪2pages: LONGCARD;
- ⓪2kl: LONGCARD;
- ⓪2firstPnr: LONGCARD;
- ⓪2unused: ARRAY [0..5] OF LONGCARD
- ⓪0END;
- ⓪
- ⓪"Page = RECORD
- ⓪2index: INTEGER;
- ⓪2physPnr: INTEGER;
- ⓪2logPnr: INTEGER;
- ⓪2lines: INTEGER;
- ⓪2lmargin: INTEGER;
- ⓪2rmargin: INTEGER;
- ⓪2tmargin: INTEGER;
- ⓪2bmargin: INTEGER;
- ⓪2numbpos: INTEGER;
- ⓪2kapitel: INTEGER;
- ⓪2intern: INTEGER;
- ⓪2unused: ARRAY [1..8] OF INTEGER
- ⓪0END;
- ⓪
- ⓪"TextHead = RECORD
- ⓪2kenn: ARRAY [0..3] OF CHAR;
- ⓪2lg: LONGCARD;
- ⓪2lines: LONGCARD;
- ⓪2text: WORD (* ... *)
- ⓪0END;
- ⓪
- ⓪"Zeile = RECORD
- ⓪2blLines: CARDINAL;
- ⓪2codeLen: CARDINAL;
- ⓪2code: CHAR (*...*)
- ⓪0END;
- ⓪
- ⓪"LineBit = (unused0, unused1,
- ⓪1hauptZeile, absatz, formel, pgEnd, pgBegin, nonEdit);
- ⓪"LineBits = SET OF LineBit;
- ⓪
- ⓪"DescBits = SET OF [0..7];
- ⓪"DescWord = WORD;
- ⓪ *)
- ⓪
- ⓪"Char = RECORD
- ⓪2CASE : CARDINAL OF
- ⓪2| 1: mode: INTEGER; (* negativ -> 'short' Modus *)
- ⓪2| 2: short: WORD
- ⓪2| 4: low: WORD; high: WORD
- ⓪2END;
- ⓪0END;
- ⓪
- ⓪"PtrChar = POINTER TO Char;
- ⓪
- ⓪
- ⓪ PROCEDURE taste (): BOOLEAN;
- ⓪"VAR ch: CHAR;
- ⓪"BEGIN
- ⓪$BusyRead (ch);
- ⓪$IF ch # 0C THEN
- ⓪&FlushKbd;
- ⓪&IF ch = 33C THEN RETURN TRUE END;
- ⓪&Read (ch);
- ⓪&IF ch = 33C THEN RETURN TRUE END;
- ⓪$END;
- ⓪$RETURN FALSE
- ⓪"END taste;
- ⓪
- ⓪ PROCEDURE toASCII (no: CARDINAL): CHAR;
- ⓪"(*$L-*)
- ⓪"BEGIN
- ⓪$ASSEMBLER
- ⓪(MOVE -(A3),D0
- ⓪(LEA tab(PC),A0
- ⓪(MOVE.B 0(A0,D0.W),(A3)+
- ⓪(ADDQ.L #1,A3
- ⓪(RTS
- ⓪&tab:
- ⓪(ASC ' ()/*0123456789'
- ⓪(ASC '()/*0123456789'
- ⓪(ASC '+-.§!"#$'
- ⓪(ASC "%&'()*+,-./"
- ⓪(ASC '0123456789'
- ⓪(ASC ':;<=>?ü'
- ⓪(ASC 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
- ⓪(ASC 'öÜä^_`'
- ⓪(ASC 'abcdefghijklmnopqrstuvwxyz'
- ⓪(ASC 'Ö|Ä~ß@@@@@@@@@@@@@@@@@@@@@'
- ⓪(SYNC
- ⓪$END
- ⓪"END toASCII;
- ⓪"(*$L=*)
- ⓪
- ⓪ PROCEDURE decode (VAR sc: Char;
- ⓪2VAR ofs: INTEGER; VAR chNo: CARDINAL; VAR width: INTEGER;
- ⓪2VAR footNote: BOOLEAN): BOOLEAN;
- ⓪"VAR fontNo: INTEGER;
- ⓪&ok: BOOLEAN;
- ⓪&p: POINTER TO CHAR;
- ⓪"BEGIN
- ⓪$ASSEMBLER
- ⓪(MOVE.L footNote(A6),A2
- ⓪(MOVE.L sc(A6),A0
- ⓪(
- ⓪(MOVE.W (A0),D2
- ⓪(MOVE.W D2,D1
- ⓪(ANDI #$7F,D2
- ⓪(BEQ error
- ⓪(MOVE.L chNo(A6),A1
- ⓪(MOVE D2,(A1)
- ⓪(
- ⓪(MOVE.L (A0),D0
- ⓪(BPL l
- ⓪(
- ⓪(SWAP D0
- ⓪(ROL.W #7,D0
- ⓪(ANDI #$003F,D0
- ⓪(LSR.W #7,D1
- ⓪(ANDI #3,D1
- ⓪(CLR.W (A2) ; keine Fußnote
- ⓪(BRA e
- ⓪
- ⓪%error
- ⓪(CLR ok(A6)
- ⓪(BRA ee
- ⓪
- ⓪%l BTST #10,D1
- ⓪(SNE D2
- ⓪(ANDI #1,D2
- ⓪(MOVE D2,(A2) ; Fußnote
- ⓪(
- ⓪(BTST #11,D0
- ⓪(BEQ n1
- ⓪(BTST #12,D0
- ⓪(BNE error ; groß- und kleinschrift geht nicht
- ⓪%n1 MOVE D1,D2
- ⓪(ANDI #0011100000000000%,D2
- ⓪(BNE error ; reserviert - müssen Null sein
- ⓪
- ⓪(ANDI #$07FF,D0
- ⓪(LSR.W #7,D1
- ⓪(ANDI #7,D1
- ⓪(
- ⓪%e MOVE.L ofs(A6),A0
- ⓪(MOVE D0,(A0)
- ⓪(MOVE D1,fontNo(A6)
- ⓪(MOVE #1,ok(A6)
- ⓪
- ⓪%ee
- ⓪$END;
- ⓪$IF NOT ok OR (font [fontNo] = NIL) THEN
- ⓪&RETURN FALSE
- ⓪$END;
- ⓪$p:= font [fontNo] + chOffset [fontNo][chNo] + 2L;
- ⓪$width:= ORD (p^);
- ⓪$(*
- ⓪&Write (toASCII (sc));
- ⓪&WriteCard (chNo, 4);
- ⓪&WriteCard (fontNo, 2);
- ⓪&WriteCard (spc, 3);
- ⓪&IF taste () THEN HALT END;
- ⓪&ASSEMBLER
- ⓪*MOVE.L p(A6),A0
- ⓪*BREAK
- ⓪&END;
- ⓪&WriteCard (ORD (p^), 3);
- ⓪&WriteLn;
- ⓪$*)
- ⓪$RETURN TRUE
- ⓪"END decode;
- ⓪
- ⓪ PROCEDURE advChar (VAR p: PtrChar);
- ⓪"(*$L-*)
- ⓪"BEGIN
- ⓪$ASSEMBLER
- ⓪(MOVE.L -(A3),A0
- ⓪(MOVE.L (A0),A1
- ⓪(TST.W (A1)
- ⓪(BMI w
- ⓪(ADDQ.L #4,(A0)
- ⓪(RTS
- ⓪&w ADDQ.L #2,(A0)
- ⓪$END
- ⓪"END advChar;
- ⓪"(*$L=*)
- ⓪
- ⓪ PROCEDURE peek (VAR p: ADDRESS; VAR d: ARRAY OF BYTE);
- ⓪"(*$L-*)
- ⓪"BEGIN
- ⓪$ASSEMBLER
- ⓪(MOVE.W -(A3),D1
- ⓪(MOVE.L -(A3),A1
- ⓪(MOVE.L -(A3),A0
- ⓪(MOVE.L (A0),A2
- ⓪&L MOVE.B (A2)+,(A1)+
- ⓪(DBRA D1,L
- ⓪(MOVE.L A2,(A0)
- ⓪$END
- ⓪"END peek;
- ⓪"(*$L=*)
- ⓪
- ⓪ PROCEDURE wrln;
- ⓪"BEGIN
- ⓪$Text.WriteLn (out);
- ⓪"END wrln;
- ⓪
- ⓪ PROCEDURE wrstr (s: ARRAY OF CHAR);
- ⓪"BEGIN
- ⓪$Text.WriteString (out, s)
- ⓪"END wrstr;
- ⓪
- ⓪ PROCEDURE wr (c: CHAR);
- ⓪"BEGIN
- ⓪$Text.Write (out, c)
- ⓪"END wr;
- ⓪
- ⓪ PROCEDURE wrpg;
- ⓪"BEGIN
- ⓪$Text.WritePg (out)
- ⓪"END wrpg;
- ⓪
- ⓪ PROCEDURE beginOfPage (p: ADDRESS): BOOLEAN;
- ⓪"BEGIN
- ⓪$INC (p,2);
- ⓪$IF p^ # WORD (4) THEN RETURN FALSE END;
- ⓪$INC (p,2);
- ⓪$IF p^ # WORD ($C080) THEN RETURN FALSE END;
- ⓪$INC (p,2);
- ⓪$RETURN p^ # WORD (0)
- ⓪"END beginOfPage;
- ⓪
- ⓪
- ⓪ PROCEDURE parseText (ad: ADDRESS; len: LONGCARD);
- ⓪"
- ⓪"VAR p: PtrChar;
- ⓪&lastp, endp: ADDRESS;
- ⓪&lastseite, seite: CARDINAL;
- ⓪&error: BOOLEAN;
- ⓪
- ⓪"PROCEDURE scan (VAR p: PtrChar): BOOLEAN;
- ⓪$VAR chNo, blankLines, c1, c2, c3: CARDINAL;
- ⓪(ofs, lastWidth, width, i1, i2, i3: INTEGER;
- ⓪(l1, l2, l3: LONGCARD;
- ⓪(ch: CHAR;
- ⓪(sc: Char;
- ⓪(flag: SET OF [0..7];
- ⓪(p2: ADDRESS;
- ⓪(pos: CARDINAL;
- ⓪(lastFoot, footNote, ok: BOOLEAN;
- ⓪(s: ARRAY [0..255] OF CHAR;
- ⓪$BEGIN
- ⓪&(* Zeilenbeginn *)
- ⓪&peek (p, blankLines);
- ⓪&peek (p, c1);
- ⓪&IF c1 > 10000 THEN RETURN FALSE END;
- ⓪&p2:= ADDRESS (p) + LONG (c1);
- ⓪&peek (p, flag);
- ⓪&IF 7 IN flag THEN
- ⓪(IF 5 IN flag THEN
- ⓪*(*
- ⓪,wrpg ();
- ⓪**)
- ⓪(ELSIF 6 IN flag THEN
- ⓪*WriteString ('Seite ');
- ⓪*WriteCard (seite,0);
- ⓪*WriteLn;
- ⓪*INC (seite)
- ⓪(ELSE
- ⓪*(* eines von beiden muß es sein! *)
- ⓪*error:= TRUE;
- ⓪*RETURN FALSE;
- ⓪(END
- ⓪&ELSIF 3 IN flag THEN
- ⓪(wrln () (* Absatz *)
- ⓪&END;
- ⓪&peek (p, flag);
- ⓪&FOR c2:= 0 TO 7 DO
- ⓪(IF c2 IN flag THEN
- ⓪*peek (p, c3);
- ⓪(END
- ⓪&END;
- ⓪&pos:= 0; lastWidth:= 0;
- ⓪&lastFoot:= FALSE;
- ⓪&LOOP
- ⓪(IF ADDRESS (p) >= p2 THEN EXIT END;
- ⓪((* jedes Zeichen der Zeile *)
- ⓪(IF NOT decode (p^, ofs, chNo, width, footNote) THEN
- ⓪*error:= TRUE;
- ⓪*RETURN FALSE
- ⓪(END;
- ⓪(IF ofs < lastWidth THEN
- ⓪*s[pos]:= '@';
- ⓪*INC (pos)
- ⓪(ELSE
- ⓪*FOR i2:= 1 TO (ofs - lastWidth + spaceWidth - 4) DIV spaceWidth DO
- ⓪,IF pos >= SIZE (s) THEN RETURN FALSE END;
- ⓪,s[pos]:= ' ';
- ⓪,INC (pos);
- ⓪*END;
- ⓪(END;
- ⓪(IF pos >= SIZE (s) THEN RETURN FALSE END;
- ⓪(lastWidth:= width;
- ⓪(IF footNote THEN
- ⓪*IF NOT lastFoot THEN
- ⓪,lastFoot:= TRUE;
- ⓪,s[pos]:= '#';
- ⓪,INC (pos);
- ⓪,IF pos >= SIZE (s) THEN RETURN FALSE END;
- ⓪*END
- ⓪(ELSE
- ⓪*lastFoot:= FALSE
- ⓪(END;
- ⓪(s[pos]:= toASCII (chNo);
- ⓪(INC (pos);
- ⓪(IF pos >= SIZE (s) THEN RETURN FALSE END;
- ⓪(advChar (p);
- ⓪&END;
- ⓪&
- ⓪&IF pos > 0 THEN
- ⓪(s[pos]:= 0C;
- ⓪(wrstr (s);
- ⓪&END;
- ⓪&wrln ();
- ⓪$
- ⓪&IF error THEN RETURN FALSE END;
- ⓪$
- ⓪&RETURN TRUE
- ⓪$END scan;
- ⓪
- ⓪"BEGIN
- ⓪$endp:= ad + len;
- ⓪$(* rest vom header überlesen *)
- ⓪$seite:= 1;
- ⓪$p:= ad + 4L;
- ⓪$ASSEMBLER
- ⓪*MOVE.L p(A6),A0
- ⓪*; BREAK
- ⓪$END;
- ⓪$
- ⓪$(* zeilen lesen *)
- ⓪$REPEAT
- ⓪&
- ⓪&error:= FALSE;
- ⓪&
- ⓪&LOOP
- ⓪(lastp:= p;
- ⓪(
- ⓪((*
- ⓪*IF ~(scan (p) & scan (p) & scan (p) & scan (p) & scan (p) & scan (p)) THEN
- ⓪,p:= lastp+2;
- ⓪*END;
- ⓪(*)
- ⓪(IF scan (p) THEN END;
- ⓪(
- ⓪(IF p >= endp THEN EXIT END;
- ⓪&END; (* LOOP *)
- ⓪&
- ⓪&IF error THEN
- ⓪(wrln ();
- ⓪(wrstr ('@@@');
- ⓪(wrln ();
- ⓪(wrln ();
- ⓪(WriteString ('Bruch!'); WriteLn;
- ⓪(
- ⓪(IF ODD (p) THEN INC (p) END;
- ⓪((*
- ⓪(REPEAT
- ⓪*INC (p,2);
- ⓪(UNTIL beginOfPage (p) OR (ADDRESS (p) >= endp)
- ⓪(*)
- ⓪&END;
- ⓪
- ⓪$UNTIL ADDRESS (p) >= endp;
- ⓪"END parseText;
- ⓪
- ⓪ PROCEDURE readFont (n: CARDINAL);
- ⓪"VAR
- ⓪$s8: ARRAY [0..7] OF CHAR;
- ⓪$len, lc: LONGCARD;
- ⓪$buf: ADDRESS;
- ⓪$ok: BOOLEAN;
- ⓪$s: String;
- ⓪$f: File;
- ⓪"BEGIN
- ⓪$Concat (chsnames [n], '.E24', s, ok);
- ⓪$ConcatPath (SelectMask, s, SelectMask);
- ⓪$SelectFile ('Font?', s, ok);
- ⓪$WritePg;
- ⓪$IF NOT ok THEN RETURN END;
- ⓪$Open (f, s, readOnly);
- ⓪$
- ⓪$ReadBlock (f, s8);
- ⓪$IF Compare ('eset0001', s8) # equal THEN
- ⓪&WriteString ("Dies ist keine Font-Datei!");
- ⓪&wait;
- ⓪&RETURN
- ⓪$END;
- ⓪$
- ⓪$ReadBlock (f, lc);
- ⓪$ALLOCATE (buf, lc);
- ⓪$IF buf = NIL THEN WriteString ('Out of mem'); wait; RETURN END;
- ⓪$ReadBytes (f, buf, lc, len);
- ⓪$IF lc # len THEN
- ⓪&WriteString ("EOF!");
- ⓪&wait;
- ⓪$END;
- ⓪$DEALLOCATE (buf, lc);
- ⓪$
- ⓪$ReadBlock (f, chOffset[n]);
- ⓪$ALLOCATE (font[n], chOffset[n][0]);
- ⓪$IF font[n] = NIL THEN WriteString ('Out of mem'); wait; RETURN END;
- ⓪$ReadBytes (f, font[n], chOffset[n][0], len);
- ⓪$IF chOffset[n][0] # len THEN
- ⓪&WriteString ("EOF!");
- ⓪&wait;
- ⓪$END;
- ⓪$Close (f);
- ⓪"END readFont;
- ⓪
- ⓪ VAR f: File;
- ⓪$ok: BOOLEAN;
- ⓪$s: String;
- ⓪$s8: ARRAY [0..7] OF CHAR;
- ⓪$s4: ARRAY [0..3] OF CHAR;
- ⓪$c: CARDINAL;
- ⓪$i: CARDINAL;
- ⓪$len, lc: LONGCARD;
- ⓪$fonts: BOOLEAN;
- ⓪$buf: ADDRESS;
- ⓪$dev: DeviceHandle;
- ⓪
- ⓪ BEGIN
- ⓪"InitGem (RC, dev, ok);
- ⓪"HideMouse;
- ⓪"WritePg;
- ⓪"SelectMask:= '*.sdo';
- ⓪"s:= '';
- ⓪"SelectFile ('Signum-Datei zum Lesen', s, ok);
- ⓪"WritePg;
- ⓪"IF NOT ok THEN RETURN END;
- ⓪"Open (f, s, readOnly);
- ⓪"
- ⓪"spaceWidth:= 9;
- ⓪"
- ⓪"ReadBlock (f, s8);
- ⓪"IF Compare ('sdoc0001', s8) # equal THEN
- ⓪$WriteString ("Dies ist keine Signum-Datei!");
- ⓪$wait;
- ⓪$RETURN
- ⓪"END;
- ⓪"
- ⓪"(* Info-Blocks überlesen *)
- ⓪"s4:= '';
- ⓪"fonts:= FALSE;
- ⓪"LOOP
- ⓪$ReadBlock (f, lc);
- ⓪$IF Compare ('cset', s4) = equal THEN
- ⓪&fonts:= TRUE;
- ⓪&ReadBlock (f, chsnames);
- ⓪&FOR i:= 0 TO 6 DO
- ⓪(IF NOT Empty (chsnames[i]) THEN
- ⓪*readFont (i);
- ⓪(END
- ⓪&END
- ⓪$ELSE
- ⓪&(* geht nur, wenn die Blöcke fehlerfrei sind:
- ⓪(ALLOCATE (buf, lc);
- ⓪(IF buf = NIL THEN WriteString ('Out of mem'); wait; RETURN END;
- ⓪(ReadBytes (f, buf, lc, len);
- ⓪(IF lc # len THEN
- ⓪*WriteString ("EOF vor 'tebu'!");
- ⓪*wait;
- ⓪*RETURN
- ⓪(END;
- ⓪(DEALLOCATE (buf, lc);
- ⓪&*)
- ⓪&IF fonts THEN
- ⓪(EXIT (* damit werden auch die restlichen Blocks als Text geladen *)
- ⓪&END
- ⓪$END;
- ⓪$ReadBlock (f, s4);
- ⓪$IF Compare ('tebu', s4) = equal THEN EXIT END;
- ⓪"END;
- ⓪"
- ⓪"(*
- ⓪#* Text einlesen
- ⓪#*)
- ⓪"(* Länge der Text-Daten: ReadBlock (f, lc); *)
- ⓪"lc:= FileSize (f) - FilePos (f); (* Ganzen Datei-Rest lesen *)
- ⓪"WriteString ('Textpos: '); WriteLHex (FilePos(f), 0); WriteLn;
- ⓪"WriteString ('Textlänge: '); WriteLHex (lc, 0); WriteLn;
- ⓪"ALLOCATE (buf, lc);
- ⓪"IF buf = NIL THEN WriteString ('Out of mem'); wait; RETURN END;
- ⓪"ReadBytes (f, buf, lc, len);
- ⓪"IF lc # len THEN
- ⓪$WriteString ("Datei ist zu kurz! Weiter...");
- ⓪$wait;
- ⓪$WriteLn;
- ⓪"END;
- ⓪"
- ⓪"Close (f);
- ⓪
- ⓪"SelectMask:= '*.txt';
- ⓪"s:= 'output.txt';
- ⓪"SelectFile ('Ausgabe-Datei', s, ok);
- ⓪"WritePg;
- ⓪"IF NOT ok THEN RETURN END;
- ⓪"Create (out, s, writeOnly, replaceOld);
- ⓪"WriteString ('Start...');
- ⓪"WriteLn;
- ⓪"parseText (buf, len);
- ⓪"Close (out);
- ⓪
- ⓪"WriteLn;
- ⓪"WriteString ('Ende');
- ⓪"wait
- ⓪ END SignumRead.
- ⓪ ə
- (* $FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$00001AB9$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7$FFED8BD7Ç$00000050T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$000026CD$0000289A$000028FE$00002A91$00002ADD$00002ABD$00000E11$00000050$00002B34$00002ADD$00002096$00002111$0000208C$000026D7$000028AB$0000289AáÇé*)
-