DataMuseum.dk

Presents historical artifacts from the history of:

Jet Computer Jet80

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Jet Computer Jet80

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦030e753d0⟧

    Length: 11776 (0x2e00)
    Names: »CROSSREF.PAS«

Derivation

└─⟦e92e6bb75⟧ Bits:30005993 MicroPro WordStar release 3.00 dantegn arbejdsdiskette
    └─ ⟦this⟧ »CROSSREF.PAS« 

Hex Dump

0x0000…0020 50 52 4f 47 52 41 4d 20 63 72 6f 73 73 72 65 66 3b 20 7b 24 52 2d 2c 4b 2d 7d 0d 0a 0d 0a 7b 20   ┆PROGRAM crossref; æ$R-,K-å    æ ┆
0x0020…0040 54 68 69 73 20 70 72 6f 67 72 61 6d 20 77 69 6c 6c 20 67 65 6e 65 72 61 74 65 20 61 20 63 72 6f   ┆This program will generate a cro┆
0x0040…0060 73 73 20 72 65 66 65 72 65 6e 63 65 20 6d 61 70 20 6f 66 20 61 6e 79 20 50 6f 6c 79 2d 20 7d 0d   ┆ss reference map of any Poly- å ┆
0x0060…0080 0a 7b 20 50 61 73 63 61 6c 20 70 72 6f 67 72 61 6d 2c 20 69 2e 65 2e 20 61 20 6d 61 70 20 74 68   ┆ æ Pascal program, i.e. a map th┆
0x0080…00a0 61 74 20 6c 69 73 74 73 20 61 6c 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 75 73 65 64 20 20 20   ┆at lists all identifiers used   ┆
0x00a0…00c0 20 7d 0d 0a 7b 20 77 69 74 68 69 6e 20 74 68 65 20 70 72 6f 67 72 61 6d 20 61 73 20 77 65 6c 6c   ┆ å  æ within the program as well┆
0x00c0…00e0 20 61 73 20 74 68 65 20 6c 69 6e 65 20 6e 75 6d 62 65 72 73 20 6f 66 20 61 6c 6c 20 6c 69 6e 65   ┆ as the line numbers of all line┆
0x00e0…0100 73 20 20 20 7d 0d 0a 7b 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 20 72 65 66 65 72 65 6e 63 65 73   ┆s   å  æ that contain references┆
0x0100…0120 20 74 6f 20 74 68 65 20 69 64 65 6e 74 69 66 69 65 72 73 2e 20 4f 70 74 69 6f 6e 61 6c 6c 79 2c   ┆ to the identifiers. Optionally,┆
0x0120…0140 20 61 20 20 20 20 20 7d 0d 0a 7b 20 73 6f 75 72 63 65 20 6c 69 73 74 69 6e 67 20 77 69 74 68 20   ┆ a     å  æ source listing with ┆
0x0140…0160 6c 69 6e 65 20 6e 75 6d 62 65 72 73 20 6d 61 79 20 62 65 20 6f 75 74 70 75 74 2e 20 20 20 20 20   ┆line numbers may be output.     ┆
0x0160…0180 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 7b 20 4f 6e 20 70 72 6f 63 65 73 73 69 6e 67 20 74   ┆          å    æ On processing t┆
0x0180…01a0 68 65 20 69 6e 70 75 74 20 66 69 6c 65 2c 20 61 6c 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 61   ┆he input file, all identifiers a┆
0x01a0…01c0 72 65 20 65 78 74 72 61 63 74 65 64 20 20 20 7d 0d 0a 7b 20 61 6e 64 20 63 6f 6d 70 61 72 65 64   ┆re extracted   å  æ and compared┆
0x01c0…01e0 20 77 69 74 68 20 74 68 65 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 73 20 6f 66 20 50 6f 6c 79   ┆ with the reserved words of Poly┆
0x01e0…0200 50 61 73 63 61 6c 2e 20 49 66 20 61 6e 20 20 20 20 20 7d 0d 0a 7b 20 69 64 65 6e 74 69 66 69 65   ┆Pascal. If an     å  æ identifie┆
0x0200…0220 72 20 69 73 20 6e 6f 74 20 61 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 2c 20 69 74 20 69 73 20   ┆r is not a reserved word, it is ┆
0x0220…0240 65 6e 74 65 72 65 64 20 69 6e 74 6f 20 61 20 20 20 20 20 20 20 7d 0d 0a 7b 20 62 69 6e 61 72 79   ┆entered into a       å  æ binary┆
0x0240…0260 20 74 72 65 65 2e 20 45 61 63 68 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 62 69 6e 61 72 79 20   ┆ tree. Each entry in the binary ┆
0x0260…0280 74 72 65 65 20 63 6f 6e 74 61 69 6e 73 20 61 20 70 6f 69 6e 74 65 72 09 7d 0d 0a 7b 20 74 6f 20   ┆tree contains a pointer å  æ to ┆
0x0280…02a0 74 68 65 20 69 64 65 6e 74 69 66 69 65 72 2c 20 61 6e 64 20 61 20 6c 65 66 74 20 6e 6f 64 65 20   ┆the identifier, and a left node ┆
0x02a0…02c0 61 6e 64 20 61 20 72 69 67 68 74 20 6e 6f 64 65 20 70 6f 69 6e 74 65 72 20 20 20 7d 0d 0a 7b 20   ┆and a right node pointer   å  æ ┆
0x02c0…02e0 74 6f 20 73 75 62 73 65 71 75 65 6e 74 20 65 6e 74 72 69 65 73 20 28 6f 72 20 4e 49 4c 20 69 66   ┆to subsequent entries (or NIL if┆
0x02e0…0300 20 6e 6f 20 65 6e 74 72 69 65 73 20 66 6f 6c 6c 6f 77 29 2e 20 46 75 72 74 68 65 72 2d 20 7d 0d   ┆ no entries follow). Further- å ┆
0x0300…0320 0a 7b 20 6d 6f 72 65 2c 20 61 6e 20 65 6e 74 72 79 20 63 6f 6e 74 61 69 6e 73 20 61 20 70 6f 69   ┆ æ more, an entry contains a poi┆
0x0320…0340 6e 74 65 72 20 74 6f 20 74 68 65 20 66 69 72 73 74 20 72 65 63 6f 72 64 20 69 6e 20 61 20 20 20   ┆nter to the first record in a   ┆
0x0340…0360 20 7d 0d 0a 7b 20 6c 69 6e 65 20 6e 75 6d 62 65 72 20 72 65 66 65 72 65 6e 63 65 20 63 68 61 69   ┆ å  æ line number reference chai┆
0x0360…0380 6e 2c 20 61 6e 64 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 61 73 74 20 72 65 63   ┆n, and a pointer to the last rec┆
0x0380…03a0 6f 72 64 20 7d 0d 0a 7b 20 69 6e 20 74 68 61 74 20 63 68 61 69 6e 2e 20 57 68 65 6e 20 61 6e 20   ┆ord å  æ in that chain. When an ┆
0x03a0…03c0 69 64 65 6e 74 69 66 69 65 72 20 69 73 20 65 6e 74 65 72 65 64 20 69 6e 74 6f 20 74 68 65 20 74   ┆identifier is entered into the t┆
0x03c0…03e0 72 65 65 20 20 20 20 7d 0d 0a 7b 20 66 6f 72 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 2c 20   ┆ree    å  æ for the first time, ┆
0x03e0…0400 74 68 65 20 70 72 6f 67 72 61 6d 20 61 6c 6c 6f 63 61 74 65 73 20 62 6f 74 68 20 61 20 6e 65 77   ┆the program allocates both a new┆
0x0400…0420 20 69 64 65 6e 74 69 2d 20 20 7d 0d 0a 7b 20 66 69 65 72 20 72 65 63 6f 72 64 20 61 6e 64 20 61   ┆ identi-  å  æ fier record and a┆
0x0420…0440 20 6c 69 6e 65 20 6e 75 6d 62 65 72 20 72 65 66 65 72 65 6e 63 65 20 72 65 63 6f 72 64 2e 20 53   ┆ line number reference record. S┆
0x0440…0460 75 62 73 65 71 75 65 6e 74 20 20 20 20 7d 0d 0a 7b 20 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20   ┆ubsequent    å  æ references to ┆
0x0460…0480 74 68 61 74 20 69 64 65 6e 74 69 66 69 65 72 20 77 69 6c 6c 20 74 68 65 6e 20 65 78 70 61 6e 64   ┆that identifier will then expand┆
0x0480…04a0 20 74 68 65 20 6c 69 6e 65 20 6e 75 6d 2d 20 20 7d 0d 0a 7b 20 62 65 72 20 72 65 66 65 72 65 6e   ┆ the line num-  å  æ ber referen┆
0x04a0…04c0 63 65 20 63 68 61 69 6e 2c 20 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 74 68 65 20 6c 69 6e 65   ┆ce chain, provided that the line┆
0x04c0…04e0 20 6e 75 6d 62 65 72 20 69 73 20 6e 6f 74 20 74 68 65 20 7d 0d 0a 7b 20 73 61 6d 65 20 61 73 20   ┆ number is not the å  æ same as ┆
0x04e0…0500 74 68 61 74 20 6f 66 20 74 68 65 20 6c 61 73 74 20 72 65 66 65 72 65 6e 63 65 2e 20 20 20 20 20   ┆that of the last reference.     ┆
0x0500…0520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 7b 20 57 68 65   ┆                      å    æ Whe┆
0x0520…0540 6e 20 61 6c 6c 20 6c 69 6e 65 73 20 68 61 76 65 20 62 65 65 6e 20 70 72 6f 63 65 73 73 65 64 2c   ┆n all lines have been processed,┆
0x0540…0560 20 74 68 65 20 70 72 6f 67 72 61 6d 20 74 72 61 76 65 72 73 65 73 20 74 68 65 20 7d 0d 0a 7b 20   ┆ the program traverses the å  æ ┆
0x0560…0580 62 69 6e 61 72 79 20 74 72 65 65 2c 20 70 72 69 6e 74 69 6e 67 20 61 6c 6c 20 69 64 65 6e 74 69   ┆binary tree, printing all identi┆
0x0580…05a0 66 69 65 72 73 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 6e 75 6d 62 65 72 73 20 20 7d 0d   ┆fiers along with the numbers  å ┆
0x05a0…05c0 0a 7b 20 6f 66 20 74 68 65 20 6c 69 6e 65 73 20 77 69 74 68 69 6e 20 77 68 69 63 68 20 74 68 65   ┆ æ of the lines within which the┆
0x05c0…05e0 79 20 61 72 65 20 72 65 66 65 72 65 6e 63 65 64 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆y are referenced.               ┆
0x05e0…0600 20 7d 0d 0a 0d 0a 43 4f 4e 53 54 0d 0a 0d 0a 7b 20 56 61 72 69 6f 75 73 20 63 6f 6e 73 74 61 6e   ┆ å    CONST    æ Various constan┆
0x0600…0620 74 73 20 7d 0d 0a 0d 0a 20 20 6d 61 78 64 6f 74 73 20 3d 20 35 30 3b 09 09 7b 20 4d 61 78 20 6e   ┆ts å      maxdots = 50;  æ Max n┆
0x0620…0640 75 6d 62 65 72 20 6f 66 20 64 6f 74 73 20 70 65 72 20 6c 69 6e 65 20 6f 6e 20 43 52 54 20 7d 0d   ┆umber of dots per line on CRT å ┆
0x0640…0660 0a 20 20 6e 6f 66 72 77 6f 72 64 73 20 3d 20 34 34 3b 09 7b 20 4e 75 6d 62 65 72 20 6f 66 20 72   ┆   nofrwords = 44; æ Number of r┆
0x0660…0680 65 73 65 72 76 65 64 20 77 6f 72 64 73 20 7d 0d 0a 20 20 66 6f 72 6d 66 65 65 64 20 3d 20 5e 4c   ┆eserved words å    formfeed = ^L┆
0x0680…06a0 3b 09 7b 20 46 6f 72 6d 2d 66 65 65 64 20 63 68 61 72 61 63 74 65 72 20 7d 0d 0a 0d 0a 7b 20 54   ┆; æ Form-feed character å    æ T┆
0x06a0…06c0 61 62 6c 65 20 6f 66 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 73 20 7d 0d 0a 0d 0a 20 20 72 77   ┆able of reserved words å      rw┆
0x06c0…06e0 6f 72 64 73 3a 20 41 52 52 41 59 5b 31 2e 2e 6e 6f 66 72 77 6f 72 64 73 5d 20 4f 46 20 53 54 52   ┆ords: ARRAYÆ1..nofrwordsÅ OF STR┆
0x06e0…0700 49 4e 47 5b 39 5d 20 3d 20 28 0d 0a 20 20 20 20 27 4c 41 42 45 4c 27 2c 27 45 4c 53 45 27 2c 27   ┆INGÆ9Å = (      'LABEL','ELSE','┆
0x0700…0720 43 41 53 45 27 2c 27 41 54 27 2c 27 41 4e 44 27 2c 27 41 52 52 41 59 27 2c 27 42 45 47 49 4e 27   ┆CASE','AT','AND','ARRAY','BEGIN'┆
0x0720…0740 2c 27 44 49 56 27 2c 27 43 4f 44 45 27 2c 0d 0a 20 20 20 20 27 43 4f 4e 53 54 27 2c 27 44 4f 27   ┆,'DIV','CODE',      'CONST','DO'┆
0x0740…0760 2c 27 44 4f 57 4e 54 4f 27 2c 27 46 4f 52 27 2c 27 45 58 54 45 52 4e 41 4c 27 2c 27 45 4e 44 27   ┆,'DOWNTO','FOR','EXTERNAL','END'┆
0x0760…0780 2c 27 45 58 4f 52 27 2c 27 46 49 4c 45 27 2c 27 47 4f 54 4f 27 2c 0d 0a 20 20 20 20 27 46 4f 52   ┆,'EXOR','FILE','GOTO',      'FOR┆
0x0780…07a0 57 41 52 44 27 2c 27 46 55 4e 43 54 49 4f 4e 27 2c 27 49 46 27 2c 27 49 4e 27 2c 27 52 45 50 45   ┆WARD','FUNCTION','IF','IN','REPE┆
0x07a0…07c0 41 54 27 2c 27 4f 54 48 45 52 57 49 53 45 27 2c 27 4e 4f 54 27 2c 27 4d 4f 44 27 2c 0d 0a 20 20   ┆AT','OTHERWISE','NOT','MOD',    ┆
0x07c0…07e0 20 20 27 4e 49 4c 27 2c 27 4f 46 27 2c 27 4f 52 27 2c 27 50 52 4f 47 52 41 4d 27 2c 27 50 41 43   ┆  'NIL','OF','OR','PROGRAM','PAC┆
0x07e0…0800 4b 45 44 27 2c 27 50 52 4f 43 45 44 55 52 45 27 2c 27 52 45 43 4f 52 44 27 2c 27 54 4f 27 2c 27   ┆KED','PROCEDURE','RECORD','TO','┆
0x0800…0820 53 48 52 27 2c 0d 0a 20 20 20 20 27 53 45 54 27 2c 27 53 48 4c 27 2c 27 53 54 52 49 4e 47 27 2c   ┆SHR',      'SET','SHL','STRING',┆
0x0820…0840 27 54 48 45 4e 27 2c 27 56 41 52 27 2c 27 54 59 50 45 27 2c 27 55 4e 54 49 4c 27 2c 27 57 48 49   ┆'THEN','VAR','TYPE','UNTIL','WHI┆
0x0840…0860 4c 45 27 2c 27 57 49 54 48 27 29 3b 0d 0a 0d 0a 54 59 50 45 0d 0a 0d 0a 7b 20 49 64 65 6e 74 69   ┆LE','WITH');    TYPE    æ Identi┆
0x0860…0880 66 69 65 72 20 74 79 70 65 73 20 7d 0d 0a 0d 0a 20 20 69 64 65 6e 74 70 74 72 20 3d 20 5e 69 64   ┆fier types å      identptr = ^id┆
0x0880…08a0 65 6e 74 3b 0d 0a 20 20 69 64 65 6e 74 20 3d 20 53 54 52 49 4e 47 5b 33 32 5d 3b 0d 0a 0d 0a 7b   ┆ent;    ident = STRINGÆ32Å;    æ┆
0x08a0…08c0 20 4c 69 6e 65 20 72 65 63 6f 72 64 20 74 79 70 65 73 2e 20 45 61 63 68 20 6c 69 6e 65 20 72 65   ┆ Line record types. Each line re┆
0x08c0…08e0 63 6f 72 64 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 20 20 7d   ┆cord contains the number of a  å┆
0x08e0…0900 0d 0a 7b 20 6c 69 6e 65 2c 20 77 69 74 68 69 6e 20 77 68 69 63 68 20 61 20 67 69 76 65 6e 20 69   ┆  æ line, within which a given i┆
0x0900…0920 64 65 6e 74 69 66 69 65 72 20 69 73 20 72 65 66 65 72 65 6e 63 65 64 2c 20 61 6e 64 20 61 20 20   ┆dentifier is referenced, and a  ┆
0x0920…0940 20 20 7d 0d 0a 7b 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6c 69 6e 65 20   ┆  å  æ pointer to the next line ┆
0x0940…0960 72 65 63 6f 72 64 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆record.                         ┆
0x0960…0980 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 6c 69 6e 65 72 65 63 70 74 72 20 3d 20 5e 6c 69 6e 65 72 65   ┆     å      linerecptr = ^linere┆
0x0980…09a0 63 3b 0d 0a 20 20 6c 69 6e 65 72 65 63 20 3d 20 52 45 43 4f 52 44 0d 0a 09 20 20 20 20 20 20 6e   ┆c;    linerec = RECORD         n┆
0x09a0…09c0 75 6d 62 65 72 3a 20 69 6e 74 65 67 65 72 3b 0d 0a 09 20 20 20 20 20 20 6e 65 78 74 3a 20 6c 69   ┆umber: integer;         next: li┆
0x09c0…09e0 6e 65 72 65 63 70 74 72 3b 0d 0a 09 20 20 20 20 45 4e 44 3b 0d 0a 0d 0a 7b 20 49 64 65 6e 74 69   ┆nerecptr;       END;    æ Identi┆
0x09e0…0a00 66 69 65 72 20 72 65 63 6f 72 64 20 74 79 70 65 73 2e 20 45 61 63 68 20 69 64 65 6e 74 69 66 69   ┆fier record types. Each identifi┆
0x0a00…0a20 65 72 20 72 65 63 6f 72 64 20 63 6f 6e 74 61 69 6e 73 20 61 20 20 20 20 7d 0d 0a 7b 20 70 6f 69   ┆er record contains a    å  æ poi┆
0x0a20…0a40 6e 74 65 72 20 74 6f 20 74 68 65 20 69 64 65 6e 74 69 66 69 65 72 20 73 74 72 69 6e 67 2c 20 61   ┆nter to the identifier string, a┆
0x0a40…0a60 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 66 69 72 73 74 20 61 6e 64 20 20 7d 0d 0a 7b 20   ┆ pointer to the first and  å  æ ┆
0x0a60…0a80 74 68 65 20 6c 61 73 74 20 6c 69 6e 65 20 72 65 63 6f 72 64 20 69 6e 20 74 68 65 20 72 65 66 65   ┆the last line record in the refe┆
0x0a80…0aa0 72 65 6e 63 65 20 63 68 61 69 6e 2c 20 61 6e 64 20 61 20 6c 65 66 74 20 6e 6f 64 65 20 20 7d 0d   ┆rence chain, and a left node  å ┆
0x0aa0…0ac0 0a 7b 20 61 6e 64 20 61 20 72 69 67 68 74 20 6e 6f 64 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 73   ┆ æ and a right node pointer to s┆
0x0ac0…0ae0 75 62 73 65 71 75 65 6e 74 20 65 6e 74 72 69 65 73 20 69 6e 20 74 68 65 20 62 69 6e 61 72 79 20   ┆ubsequent entries in the binary ┆
0x0ae0…0b00 20 7d 0d 0a 7b 20 74 72 65 65 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ å  æ tree.                     ┆
0x0b00…0b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆                                ┆
0x0b20…0b40 20 20 20 20 7d 0d 0a 0d 0a 20 20 69 64 65 6e 74 72 65 63 70 74 72 20 3d 20 5e 69 64 65 6e 74 72   ┆    å      identrecptr = ^identr┆
0x0b40…0b60 65 63 3b 0d 0a 20 20 69 64 65 6e 74 72 65 63 20 3d 20 52 45 43 4f 52 44 0d 0a 09 20 20 20 20 20   ┆ec;    identrec = RECORD        ┆
0x0b60…0b80 20 20 69 64 3a 20 69 64 65 6e 74 70 74 72 3b 0d 0a 09 20 20 20 20 20 20 20 72 65 73 65 72 76 65   ┆  id: identptr;          reserve┆
0x0b80…0ba0 64 3a 20 62 6f 6f 6c 65 61 6e 3b 0d 0a 09 20 20 20 20 20 20 20 66 69 72 73 74 6c 69 6e 65 2c 6c   ┆d: boolean;          firstline,l┆
0x0ba0…0bc0 61 73 74 6c 69 6e 65 3a 20 6c 69 6e 65 72 65 63 70 74 72 3b 0d 0a 09 20 20 20 20 20 20 20 6c 65   ┆astline: linerecptr;          le┆
0x0bc0…0be0 66 74 2c 72 69 67 68 74 3a 20 69 64 65 6e 74 72 65 63 70 74 72 3b 0d 0a 09 20 20 20 20 20 45 4e   ┆ft,right: identrecptr;        EN┆
0x0be0…0c00 44 3b 0d 0a 0d 0a 7b 20 53 6f 75 72 63 65 20 6c 69 6e 65 20 74 79 70 65 2e 20 54 68 65 20 6d 61   ┆D;    æ Source line type. The ma┆
0x0c00…0c20 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 61 20 73 6f 75 72 63 65 20 6c 69 6e 65 20 69 73   ┆ximum length of a source line is┆
0x0c20…0c40 20 31 32 37 20 20 7d 0d 0a 7b 20 63 68 61 72 61 63 74 65 72 73 2e 20 20 20 20 20 20 20 20 20 20   ┆ 127  å  æ characters.          ┆
0x0c40…0c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆                                ┆
0x0c60…0c80 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 73 6f 75 72 63 65 6c 69 6e 65 20 3d 20 53 54 52   ┆         å      sourceline = STR┆
0x0c80…0ca0 49 4e 47 5b 31 32 37 5d 3b 0d 0a 0d 0a 56 41 52 0d 0a 0d 0a 7b 20 47 6c 6f 62 61 6c 20 76 61 72   ┆INGÆ127Å;    VAR    æ Global var┆
0x0ca0…0cc0 69 61 62 6c 65 73 2e 09 09 09 09 09 09 7d 0d 0a 0d 0a 20 20 6c 69 6e 65 6e 75 6d 62 65 72 2c 20   ┆iables.      å      linenumber, ┆
0x0cc0…0ce0 20 20 20 20 20 20 20 20 20 20 7b 20 43 75 72 72 65 6e 74 20 6c 69 6e 65 20 6e 75 6d 62 65 72 20   ┆          æ Current line number ┆
0x0ce0…0d00 7d 0d 0a 20 20 6e 6f 66 69 64 65 6e 74 73 2c 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 4e 75 6d   ┆å    nofidents,            æ Num┆
0x0d00…0d20 62 65 72 20 6f 66 20 69 64 65 6e 74 69 66 69 65 72 73 20 70 72 6f 63 65 73 73 65 64 20 7d 0d 0a   ┆ber of identifiers processed å  ┆
0x0d20…0d40 20 20 6c 69 6e 69 65 6e 72 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 43 75 72 72 65 6e   ┆  linienr,              æ Curren┆
0x0d40…0d60 74 20 6c 69 6e 65 70 6f 73 69 74 69 6f 6e 20 7d 0d 0a 20 20 6c 69 6e 65 70 6f 73 2c 20 20 20 20   ┆t lineposition å    linepos,    ┆
0x0d60…0d80 20 20 20 20 20 20 20 20 20 20 7b 20 50 6f 73 69 74 69 6f 6e 20 77 69 74 68 69 6e 20 63 75 72 72   ┆          æ Position within curr┆
0x0d80…0da0 65 6e 74 20 6c 69 6e 65 20 7d 0d 0a 20 20 6c 69 6e 65 6c 65 6e 3a 20 69 6e 74 65 67 65 72 3b 20   ┆ent line å    linelen: integer; ┆
0x0da0…0dc0 20 20 20 20 7b 20 4c 65 6e 67 74 68 20 6f 66 20 63 75 72 72 65 6e 74 20 6c 69 6e 65 20 7d 0d 0a   ┆    æ Length of current line å  ┆
0x0dc0…0de0 20 20 63 68 3a 20 63 68 61 72 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 43 75 72 72 65 6e   ┆  ch: char;             æ Curren┆
0x0de0…0e00 74 20 63 68 61 72 61 63 74 65 72 20 7d 0d 0a 20 20 69 6e 6f 70 65 6e 2c 20 20 20 20 20 20 20 20   ┆t character å    inopen,        ┆
0x0e00…0e20 20 20 20 20 20 20 20 7b 20 54 72 75 65 20 69 66 20 69 6e 70 75 74 20 66 69 6c 65 20 6f 70 65 6e   ┆       æ True if input file open┆
0x0e20…0e40 20 7d 0d 0a 20 20 6f 75 74 6f 70 65 6e 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 54 72   ┆ å    outopen,              æ Tr┆
0x0e40…0e60 75 65 20 69 66 20 6f 75 74 70 75 74 20 66 69 6c 65 20 6f 70 65 6e 20 7d 0d 0a 20 20 6c 69 73 74   ┆ue if output file open å    list┆
0x0e60…0e80 69 6e 67 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 54 72 75 65 20 69 66 20 73 6f 75 72   ┆ing,              æ True if sour┆
0x0e80…0ea0 63 65 20 6c 69 73 74 69 6e 67 20 72 65 71 75 65 73 74 65 64 20 7d 0d 0a 20 20 65 72 72 6f 72 3a   ┆ce listing requested å    error:┆
0x0ea0…0ec0 20 62 6f 6f 6c 65 61 6e 3b 20 20 20 20 20 20 20 7b 20 45 72 72 6f 72 20 66 6c 61 67 20 7d 0d 0a   ┆ boolean;       æ Error flag å  ┆
0x0ec0…0ee0 20 20 6c 69 6e 65 3a 20 73 6f 75 72 63 65 6c 69 6e 65 3b 20 20 20 20 20 7b 20 43 75 72 72 65 6e   ┆  line: sourceline;     æ Curren┆
0x0ee0…0f00 74 20 73 6f 75 72 63 65 20 6c 69 6e 65 20 7d 0d 0a 20 20 69 64 74 72 65 65 3a 20 69 64 65 6e 74   ┆t source line å    idtree: ident┆
0x0f00…0f20 72 65 63 70 74 72 3b 20 20 7b 20 52 6f 6f 74 20 6f 66 20 63 72 6f 73 73 20 72 65 66 65 72 65 6e   ┆recptr;  æ Root of cross referen┆
0x0f20…0f40 63 65 20 74 72 65 65 20 7d 0d 0a 20 20 69 6e 66 69 6c 65 3a 20 74 65 78 74 5b 34 30 39 36 5d 3b   ┆ce tree å    infile: textÆ4096Å;┆
0x0f40…0f60 20 20 20 7b 20 49 6e 70 75 74 20 66 69 6c 65 20 7d 0d 0a 20 20 6f 75 74 66 69 6c 65 3a 20 74 65   ┆   æ Input file å    outfile: te┆
0x0f60…0f80 78 74 3b 20 20 20 20 20 20 20 20 7b 20 4f 75 74 70 75 74 20 66 69 6c 65 20 7d 0d 0a 20 20 69 6e   ┆xt;        æ Output file å    in┆
0x0f80…0fa0 6e 61 6d 65 2c 6f 75 74 6e 61 6d 65 3a 20 53 54 52 49 4e 47 5b 36 34 5d 3b 0d 0a 20 20 6c 69 73   ┆name,outname: STRINGÆ64Å;    lis┆
0x0fa0…0fc0 74 79 6e 3a 20 53 54 52 49 4e 47 5b 31 5d 3b 0d 0a 0d 0a 0d 0a 7b 20 46 52 45 45 4d 45 4d 20 72   ┆tyn: STRINGÆ1Å;      æ FREEMEM r┆
0x0fc0…0fe0 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61 76 61 69 6c   ┆eturns the number of bytes avail┆
0x0fe0…1000 61 62 6c 65 20 6f 6e 20 74 68 65 20 68 65 61 70 2e 20 20 20 20 7d 0d 0a 7b 20 54 68 65 20 72 65   ┆able on the heap.    å  æ The re┆
0x1000…1020 73 75 6c 74 20 74 79 70 65 20 69 73 20 72 65 61 6c 20 74 6f 20 61 6c 6c 6f 77 20 66 6f 72 20 76   ┆sult type is real to allow for v┆
0x1020…1040 61 6c 75 65 73 20 6f 75 74 73 69 64 65 20 74 68 65 20 69 6e 74 65 2d 20 7d 0d 0a 7b 20 67 65 72   ┆alues outside the inte- å  æ ger┆
0x1040…1060 20 72 61 6e 67 65 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ range.                         ┆
0x1060…1080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a   ┆                           å    ┆
0x1080…10a0 46 55 4e 43 54 49 4f 4e 20 66 72 65 65 6d 65 6d 3a 20 72 65 61 6c 3b 0d 0a 42 45 47 49 4e 0d 0a   ┆FUNCTION freemem: real;  BEGIN  ┆
0x10a0…10c0 20 20 49 46 20 6d 65 6d 61 76 61 69 6c 3e 30 20 54 48 45 4e 0d 0a 20 20 66 72 65 65 6d 65 6d 3a   ┆  IF memavail>0 THEN    freemem:┆
0x10c0…10e0 3d 6d 65 6d 61 76 61 69 6c 2a 31 36 2e 30 20 45 4c 53 45 0d 0a 20 20 66 72 65 65 6d 65 6d 3a 3d   ┆=memavail*16.0 ELSE    freemem:=┆
0x10e0…1100 36 35 35 33 36 2e 30 2d 6d 65 6d 61 76 61 69 6c 2a 31 36 2e 30 3b 0d 0a 45 4e 44 3b 0d 0a 0d 0a   ┆65536.0-memavail*16.0;  END;    ┆
0x1100…1120 7b 20 4e 45 58 54 43 48 20 72 65 61 64 73 20 74 68 65 20 6e 65 78 74 20 63 68 61 72 61 63 74 65   ┆æ NEXTCH reads the next characte┆
0x1120…1140 72 20 66 72 6f 6d 20 74 68 65 20 69 6e 70 75 74 20 66 69 6c 65 20 69 6e 74 6f 20 43 48 2e 20 20   ┆r from the input file into CH.  ┆
0x1140…1160 7d 0d 0a 7b 20 49 66 20 61 20 73 6f 75 72 63 65 20 6c 69 73 74 69 6e 67 20 77 61 73 20 72 65 71   ┆å  æ If a source listing was req┆
0x1160…1180 75 65 73 74 65 64 2c 20 4e 45 58 54 43 48 20 6c 69 73 74 73 20 69 6e 70 75 74 20 6c 69 6e 65 73   ┆uested, NEXTCH lists input lines┆
0x1180…11a0 20 20 20 7d 0d 0a 7b 20 74 6f 20 74 68 65 20 6f 75 74 70 75 74 20 66 69 6c 65 20 61 73 20 74 68   ┆   å  æ to the output file as th┆
0x11a0…11c0 65 79 20 61 72 65 20 72 65 61 64 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 61 20 64 6f 74 20 69 73   ┆ey are read. Otherwise, a dot is┆
0x11c0…11e0 20 20 20 20 20 20 7d 0d 0a 7b 20 70 72 69 6e 74 65 64 20 6f 6e 20 74 68 65 20 63 6f 6e 73 6f 6c   ┆      å  æ printed on the consol┆
0x11e0…1200 65 20 66 6f 72 20 65 61 63 68 20 6c 69 6e 65 20 72 65 61 64 2e 20 41 20 5e 5a 20 63 68 61 72 61   ┆e for each line read. A ^Z chara┆
0x1200…1220 63 74 65 72 20 69 73 20 20 7d 0d 0a 7b 20 72 65 74 75 72 6e 65 64 20 6f 6e 20 72 65 61 63 68 69   ┆cter is  å  æ returned on reachi┆
0x1220…1240 6e 67 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 69 6e 70 75 74 20 66 69 6c 65 2e 20 20 20   ┆ng the end of the input file.   ┆
0x1240…1260 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 50 52 4f 43 45 44 55 52 45 20 6e 65 78 74 63   ┆            å    PROCEDURE nextc┆
0x1260…1280 68 3b 0d 0a 56 41 52 0d 0a 20 20 70 2c 74 3a 20 69 6e 74 65 67 65 72 3b 0d 0a 42 45 47 49 4e 0d   ┆h;  VAR    p,t: integer;  BEGIN ┆
0x1280…12a0 0a 20 20 49 46 20 28 6c 69 6e 65 70 6f 73 3c 3d 6c 69 6e 65 6c 65 6e 29 20 54 48 45 4e 0d 0a 20   ┆   IF (linepos<=linelen) THEN   ┆
0x12a0…12c0 20 42 45 47 49 4e 0d 0a 20 20 20 20 63 68 3a 3d 6c 69 6e 65 5b 6c 69 6e 65 70 6f 73 5d 3b 20 6c   ┆ BEGIN      ch:=lineÆlineposÅ; l┆
0x12c0…12e0 69 6e 65 70 6f 73 3a 3d 6c 69 6e 65 70 6f 73 2b 31 3b 0d 0a 20 20 20 20 49 46 20 28 63 68 3e 3d   ┆inepos:=linepos+1;      IF (ch>=┆
0x12e0…1300 27 61 27 29 20 41 4e 44 20 28 63 68 3c 3d 27 7a 27 29 20 54 48 45 4e 20 63 68 3a 3d 63 68 72 28   ┆'a') AND (ch<='z') THEN ch:=chr(┆
0x1300…1320 6f 72 64 28 63 68 29 2d 33 32 29 3b 0d 0a 20 20 45 4e 44 20 45 4c 53 45 0d 0a 20 20 49 46 20 4e   ┆ord(ch)-32);    END ELSE    IF N┆
0x1320…1340 4f 54 20 65 6f 66 28 69 6e 66 69 6c 65 29 20 54 48 45 4e 0d 0a 20 20 42 45 47 49 4e 0d 0a 20 20   ┆OT eof(infile) THEN    BEGIN    ┆
0x1340…1360 20 20 72 65 61 64 6c 6e 28 69 6e 66 69 6c 65 2c 6c 69 6e 65 29 3b 0d 0a 20 20 20 20 6c 69 6e 65   ┆  readln(infile,line);      line┆
0x1360…1380 6e 75 6d 62 65 72 3a 3d 6c 69 6e 65 6e 75 6d 62 65 72 2b 31 3b 0d 0a 20 20 20 20 6c 69 6e 69 65   ┆number:=linenumber+1;      linie┆
0x1380…13a0 6e 72 3a 3d 6c 69 6e 69 65 6e 72 2b 31 3b 0d 0a 20 20 20 20 49 46 20 6c 69 73 74 69 6e 67 20 54   ┆nr:=linienr+1;      IF listing T┆
0x13a0…13c0 48 45 4e 0d 0a 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 20 20 77 72 69 74 65 28 6f 75 74 66   ┆HEN      BEGIN        write(outf┆
0x13c0…13e0 69 6c 65 2c 27 3c 27 2c 6c 69 6e 65 6e 75 6d 62 65 72 3a 35 2c 27 3e 20 27 29 3b 0d 0a 20 20 20   ┆ile,'<',linenumber:5,'> ');     ┆
0x13e0…1400 20 20 20 74 3a 3d 38 3b 0d 0a 20 20 20 20 20 20 46 4f 52 20 70 3a 3d 31 20 54 4f 20 6c 65 6e 28   ┆   t:=8;        FOR p:=1 TO len(┆
0x1400…1420 6c 69 6e 65 29 20 44 4f 0d 0a 20 20 20 20 20 20 49 46 20 6c 69 6e 65 5b 70 5d 3c 3e 5e 49 20 54   ┆line) DO        IF lineÆpÅ<>^I T┆
0x1420…1440 48 45 4e 0d 0a 20 20 20 20 20 20 42 45 47 49 4e 0d 0a 09 77 72 69 74 65 28 6f 75 74 66 69 6c 65   ┆HEN        BEGIN   write(outfile┆
0x1440…1460 2c 6c 69 6e 65 5b 70 5d 29 3b 20 74 3a 3d 74 2d 31 3b 20 49 46 20 74 3d 30 20 54 48 45 4e 20 74   ┆,lineÆpÅ); t:=t-1; IF t=0 THEN t┆
0x1460…1480 3a 3d 38 3b 0d 0a 20 20 20 20 20 20 45 4e 44 20 45 4c 53 45 0d 0a 20 20 20 20 20 20 42 45 47 49   ┆:=8;        END ELSE        BEGI┆
0x1480…14a0 4e 0d 0a 09 77 72 69 74 65 28 6f 75 74 66 69 6c 65 2c 27 27 3a 74 29 3b 20 74 3a 3d 38 3b 0d 0a   ┆N   write(outfile,'':t); t:=8;  ┆
0x14a0…14c0 20 20 20 20 20 20 45 4e 44 3b 0d 0a 20 20 20 20 20 20 49 46 20 6c 69 6e 69 65 6e 72 3e 3d 36 30   ┆      END;        IF linienr>=60┆
0x14c0…14e0 20 54 48 45 4e 0d 0a 20 20 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 20 20 20 20 77 72 69 74   ┆ THEN        BEGIN          writ┆
0x14e0…1500 65 6c 6e 28 6f 75 74 66 69 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 77 72 69 74 65 28 6f 75 74   ┆eln(outfile);          write(out┆
0x1500…1520 66 69 6c 65 2c 66 6f 72 6d 66 65 65 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 6c 69 6e 69 65 6e 72   ┆file,formfeed);          linienr┆
0x1520…1540 3a 3d 30 3b 0d 0a 20 20 20 20 20 20 45 4e 44 20 45 4c 53 45 20 77 72 69 74 65 6c 6e 28 6f 75 74   ┆:=0;        END ELSE writeln(out┆
0x1540…1560 66 69 6c 65 29 3b 0d 0a 20 20 20 20 45 4e 44 20 45 4c 53 45 0d 0a 20 20 20 20 42 45 47 49 4e 0d   ┆file);      END ELSE      BEGIN ┆
0x1560…1580 0a 20 20 20 20 20 20 77 72 69 74 65 28 27 2e 27 29 3b 0d 0a 20 20 20 20 20 20 49 46 20 6c 69 6e   ┆       write('.');        IF lin┆
0x1580…15a0 65 6e 75 6d 62 65 72 20 4d 4f 44 20 6d 61 78 64 6f 74 73 3d 30 20 54 48 45 4e 20 77 72 69 74 65   ┆enumber MOD maxdots=0 THEN write┆
0x15a0…15c0 6c 6e 3b 0d 0a 20 20 20 20 45 4e 44 3b 0d 0a 20 20 20 20 6c 69 6e 65 6c 65 6e 3a 3d 6c 65 6e 28   ┆ln;      END;      linelen:=len(┆
0x15c0…15e0 6c 69 6e 65 29 3b 20 6c 69 6e 65 70 6f 73 3a 3d 31 3b 20 63 68 3a 3d 27 20 27 3b 0d 0a 20 20 45   ┆line); linepos:=1; ch:=' ';    E┆
0x15e0…1600 4e 44 20 45 4c 53 45 0d 0a 20 20 63 68 3a 3d 5e 5a 3b 0d 0a 45 4e 44 3b 0d 0a 0d 0a 7b 20 45 4e   ┆ND ELSE    ch:=^Z;  END;    æ EN┆
0x1600…1620 54 45 52 49 44 20 65 6e 74 65 72 73 20 4e 45 57 49 44 20 69 6e 74 6f 20 74 68 65 20 63 72 6f 73   ┆TERID enters NEWID into the cros┆
0x1620…1640 73 20 72 65 66 65 72 65 6e 63 65 20 62 69 6e 61 72 79 20 74 72 65 65 2e 20 20 20 20 7d 0d 0a 7b   ┆s reference binary tree.    å  æ┆
0x1640…1660 20 4e 6f 74 65 20 74 68 61 74 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 72 65 63 6f 72 64 20   ┆ Note that an identifier record ┆
0x1660…1680 69 73 20 61 6c 6c 6f 63 61 74 65 64 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 69 64 65 6e 2d 20 7d   ┆is allocated only if the iden- å┆
0x1680…16a0 0d 0a 7b 20 74 69 66 69 65 72 20 69 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 77 69 74 68 69 6e   ┆  æ tifier is not already within┆
0x16a0…16c0 20 74 68 65 20 74 72 65 65 2e 20 41 6c 73 6f 20 6e 6f 74 65 20 74 68 65 20 75 73 65 20 6f 66 20   ┆ the tree. Also note the use of ┆
0x16c0…16e0 20 20 7d 0d 0a 7b 20 74 68 65 20 41 4c 4c 4f 43 41 54 45 20 70 72 6f 63 65 64 75 72 65 20 74 6f   ┆  å  æ the ALLOCATE procedure to┆
0x16e0…1700 20 61 6c 6c 6f 63 61 74 65 20 6f 6e 6c 79 20 74 68 65 20 72 65 71 75 69 72 65 64 20 6e 75 6d 62   ┆ allocate only the required numb┆
0x1700…1720 65 72 20 20 20 7d 0d 0a 7b 20 6f 66 20 62 79 74 65 73 20 66 6f 72 20 74 68 65 20 69 64 65 6e 74   ┆er   å  æ of bytes for the ident┆
0x1720…1740 69 66 69 65 72 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e   ┆ifier instead of the maximum len┆
0x1740…1760 67 74 68 2e 20 20 20 20 7d 0d 0a 0d 0a 50 52 4f 43 45 44 55 52 45 20 65 6e 74 65 72 69 64 28 6e   ┆gth.    å    PROCEDURE enterid(n┆
0x1760…1780 65 77 69 64 3a 20 69 64 65 6e 74 3b 20 72 77 6f 72 64 3a 20 62 6f 6f 6c 65 61 6e 29 3b 0d 0a 56   ┆ewid: ident; rword: boolean);  V┆
0x1780…17a0 41 52 0d 0a 20 20 78 3a 20 6c 69 6e 65 72 65 63 70 74 72 3b 0d 0a 0d 0a 50 52 4f 43 45 44 55 52   ┆AR    x: linerecptr;    PROCEDUR┆
0x17a0…17c0 45 20 65 6e 74 65 72 28 56 41 52 20 72 6f 6f 74 3a 20 69 64 65 6e 74 72 65 63 70 74 72 29 3b 0d   ┆E enter(VAR root: identrecptr); ┆
0x17c0…17e0 0a 42 45 47 49 4e 0d 0a 20 20 49 46 20 72 6f 6f 74 3d 4e 49 4c 20 54 48 45 4e 0d 0a 20 20 42 45   ┆ BEGIN    IF root=NIL THEN    BE┆
0x17e0…1800 47 49 4e 0d 0a 20 20 20 20 6e 65 77 28 72 6f 6f 74 29 3b 0d 0a 20 20 20 20 57 49 54 48 20 72 6f   ┆GIN      new(root);      WITH ro┆
0x1800…1820 6f 74 5e 20 44 4f 0d 0a 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 20 20 61 6c 6c 6f 63 61 74   ┆ot^ DO      BEGIN        allocat┆
0x1820…1840 65 28 69 64 2c 6c 65 6e 28 6e 65 77 69 64 29 2b 31 29 3b 20 69 64 5e 3a 3d 6e 65 77 69 64 3b 0d   ┆e(id,len(newid)+1); id^:=newid; ┆
0x1840…1860 0a 20 20 20 20 20 20 72 65 73 65 72 76 65 64 3a 3d 72 77 6f 72 64 3b 0d 0a 20 20 20 20 20 20 49   ┆       reserved:=rword;        I┆
0x1860…1880 46 20 4e 4f 54 20 72 65 73 65 72 76 65 64 20 54 48 45 4e 0d 0a 20 20 20 20 20 20 42 45 47 49 4e   ┆F NOT reserved THEN        BEGIN┆
0x1880…18a0 0d 0a 20 20 20 20 20 20 20 20 6e 65 77 28 66 69 72 73 74 6c 69 6e 65 29 3b 0d 0a 20 20 20 20 20   ┆          new(firstline);       ┆
0x18a0…18c0 20 20 20 66 69 72 73 74 6c 69 6e 65 5e 2e 6e 75 6d 62 65 72 3a 3d 6c 69 6e 65 6e 75 6d 62 65 72   ┆   firstline^.number:=linenumber┆
0x18c0…18e0 3b 20 66 69 72 73 74 6c 69 6e 65 5e 2e 6e 65 78 74 3a 3d 4e 49 4c 3b 0d 0a 20 20 20 20 20 20 20   ┆; firstline^.next:=NIL;         ┆
0x18e0…1900 20 6c 61 73 74 6c 69 6e 65 3a 3d 66 69 72 73 74 6c 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20 6e   ┆ lastline:=firstline;          n┆
0x1900…1920 6f 66 69 64 65 6e 74 73 3a 3d 6e 6f 66 69 64 65 6e 74 73 2b 31 3b 0d 0a 20 20 20 20 20 20 45 4e   ┆ofidents:=nofidents+1;        EN┆
[…truncated at 200 lines…]