DataMuseum.dk

Presents historical artifacts from the history of:

DANOSI

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

See our Wiki for more about DANOSI

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics

⟦e2496af23⟧ Bits:30010503 DVBS1.SW2103.rel.1.14-2/4 SW2103 Release 1.14 RTP3502DOS Compiler Source - UNIX tar #2/4 DVBS1.SW2103.src.1.14-2/4, 5¼" Floppy Disk, ImdContainer

    Length: 1228800 (0x12c000)
    Description: Bits:30010503 DVBS1.SW2103.rel.1.14-2/4 SW2103 Release 1.14 RTP3502DOS Compiler Source - UNIX tar #2/4 DVBS1.SW2103.src.1.14-2/4
    Types: 5¼" Floppy Disk, ImdContainer

Default Hex Dump

0x000000…000020 (0, 0, 1)   64 65 70 6f 6e 2e 74 61 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆depon.tar                       ┆
0x000020…000040             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x000060…000080             00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 34 35 33 35   ┆       640     255     146  4535┆
0x000080…0000a0             30 30 30 00 30 30 30 20 20 35 34 30 37 33 35 37 32 34 36 20 20 20 37 30 35 32 00 20 00 00 00 00   ┆000 000  5407357246   7052      ┆
0x0000a0…0000c0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x2…]
0x000100…000120             00 32 00 00 00 34 00 00 00 31 37 32 32 30 30 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆ 2   4   17220000               ┆
0x000120…000140             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x6…]
0x000200…000220 (0, 0, 2)   69 6e 74 65 72 76 61 6c 73 20 5b 20 73 74 61 72 74 5f 69 6e 74 65 72 76 61 6c 20 5d 20 2e 20 74   ┆intervals [ start_interval ] . t┆
0x000220…000240             72 61 69 6c 65 72 5f 6e 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 72 65 70 65 61 74 0a 77 69 74   ┆railer_nr then begin  repeat wit┆
0x000240…000260             68 20 69 6e 74 65 72 76 61 6c 73 20 5b 20 73 74 61 72 74 5f 69 6e 74 65 72 76 61 6c 20 5d 20 64   ┆h intervals [ start_interval ] d┆
0x000260…000280             6f 0a 62 65 67 69 6e 0a 66 6f 75 6e 64 3a 3d 20 28 64 69 73 70 6c 61 63 65 6d 65 6e 74 20 3e 3d   ┆o begin found:= (displacement >=┆
0x000280…0002a0             20 69 6e 74 65 72 76 61 6c 5f 6c 6f 77 29 20 61 6e 64 20 28 64 69 73 70 6c 61 63 65 6d 65 6e 74   ┆ interval_low) and (displacement┆
0x0002a0…0002c0             20 3c 3d 20 69 6e 74 65 72 76 61 6c 5f 68 69 67 68 29 3b 0a 69 66 20 6e 6f 74 20 66 6f 75 6e 64   ┆ <= interval_high); if not found┆
0x0002c0…0002e0             20 74 68 65 6e 20 73 74 61 72 74 5f 69 6e 74 65 72 76 61 6c 3a 3d 20 6e 65 78 74 5f 69 6e 74 65   ┆ then start_interval:= next_inte┆
0x0002e0…000300             72 76 61 6c 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a 29 0a 0a 75 6e 74 69 6c 20 66 6f   ┆rval;  end; (* with *)  until fo┆
0x000300…000320             75 6e 64 20 6f 72 20 28 20 73 74 61 72 74 5f 69 6e 74 65 72 76 61 6c 20 3d 20 30 20 29 3b 0a 0a   ┆und or ( start_interval = 0 );  ┆
0x000320…000340             69 66 20 66 6f 75 6e 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 70 63 6f 64 65 73   ┆if found then begin with opcodes┆
0x000340…000360             20 5b 20 63 75 72 72 65 6e 74 5f 63 6f 64 65 20 5d 20 64 6f 0a 62 65 67 69 6e 0a 28 2a 24 52 2d   ┆ [ current_code ] do begin (*$R-┆
0x000360…000380             2a 29 0a 20 20 75 73 65 5f 63 6f 75 6e 74 3a 3d 20 75 73 65 5f 63 6f 75 6e 74 20 2d 20 31 3b 0a   ┆*)   use_count:= use_count - 1; ┆
0x000380…0003a0             28 2a 24 52 2b 2a 29 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 6f 70 63 6f 64 65 73 20 5b 20 69 6e 74   ┆(*$R+*) end;  with opcodes [ int┆
0x0003a0…0003c0             65 72 76 61 6c 73 20 5b 20 73 74 61 72 74 5f 69 6e 74 65 72 76 61 6c 20 5d 20 2e 20 61 69 73 5f   ┆ervals [ start_interval ] . ais_┆
0x0003c0…0003e0             63 6f 64 65 5f 76 61 6c 20 5d 20 64 6f 0a 62 65 67 69 6e 0a 63 6f 64 65 5f 62 75 66 66 65 72 20   ┆code_val ] do begin code_buffer ┆
0x0003e0…000400             5b 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 2d 20 31 20 5d 3a 3d 20 6f 70 63 6f 64 65 76 61   ┆[ current_offset- 1 ]:= opcodeva┆
0x000400…000420 (0, 0, 3)   6c 3b 0a 0a 28 2a 69 66 20 6e 65 67 61 74 69 76 65 5f 73 68 6f 72 74 20 69 6e 73 74 72 75 63 74   ┆l;  (*if negative_short instruct┆
0x000420…000440             69 6f 6e 20 63 68 61 6e 67 65 20 6e 65 67 61 74 69 76 65 20 64 69 73 70 6c 61 63 65 6d 65 6e 74   ┆ion change negative displacement┆
0x000440…000460             20 74 6f 20 70 6f 73 69 74 69 76 65 0a 20 64 69 73 70 6c 61 63 65 6d 65 6e 74 20 69 2e 65 2e 20   ┆ to positive  displacement i.e. ┆
0x000460…000480             72 65 76 6c 62 20 2d 36 20 7e 20 72 65 76 6c 62 6e 73 20 36 20 2a 29 0a 69 66 20 6f 70 63 6f 64   ┆revlb -6 ~ revlbns 6 *) if opcod┆
0x000480…0004a0             65 5f 6b 69 6e 64 20 3d 20 6e 65 67 61 74 69 76 65 5f 73 68 6f 72 74 20 74 68 65 6e 20 64 69 73   ┆e_kind = negative_short then dis┆
0x0004a0…0004c0             70 6c 61 63 65 6d 65 6e 74 3a 3d 20 2d 20 64 69 73 70 6c 61 63 65 6d 65 6e 74 3b 0a 0a 6c 65 6e   ┆placement:= - displacement;  len┆
0x0004c0…0004e0             67 74 68 5f 6f 66 5f 63 75 72 72 65 6e 74 5f 63 6f 64 65 3a 3d 20 74 6f 74 61 6c 5f 6c 65 6e 67   ┆gth_of_current_code:= total_leng┆
0x0004e0…000500             74 68 3b 0a 0a 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 3a 3d 20 72 65 6d 5f 62 75 66 66 65   ┆th;  rem_buffer_size:= rem_buffe┆
0x000500…000520             72 5f 73 69 7a 65 20 2b 20 6f 70 65 72 61 6e 64 73 69 7a 65 20 2d 20 74 72 61 69 6c 65 72 73 20   ┆r_size + operandsize - trailers ┆
0x000520…000540             5b 20 74 72 61 69 6c 65 72 6e 72 20 5d 3b 0a 0a 6f 70 65 72 61 6e 64 73 69 7a 65 3a 3d 20 74 72   ┆[ trailernr ];  operandsize:= tr┆
0x000540…000560             61 69 6c 65 72 73 20 5b 20 74 72 61 69 6c 65 72 6e 72 20 5d 3b 0a 0a 28 2a 24 52 2d 2a 29 0a 75   ┆ailers [ trailernr ];  (*$R-*) u┆
0x000560…000580             73 65 5f 63 6f 75 6e 74 3a 3d 20 75 73 65 5f 63 6f 75 6e 74 20 2b 20 31 3b 0a 28 2a 24 52 2b 2a   ┆se_count:= use_count + 1; (*$R+*┆
0x000580…0005a0             29 0a 0a 28 2a 20 65 78 65 63 75 74 69 6f 6e 20 74 69 6d 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e   ┆)  (* execution time information┆
0x0005a0…0005c0             20 63 68 61 6e 67 65 64 20 21 21 21 20 2a 29 0a 69 66 20 63 6f 64 65 6c 69 73 74 20 74 68 65 6e   ┆ changed !!! *) if codelist then┆
0x0005c0…0005e0             0a 69 66 20 63 75 72 72 65 6e 74 5f 74 69 6d 65 3c 3e 2d 31 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆ if current_time<>-1 then begin ┆
0x0005e0…000600             28 2a 24 52 2d 2a 29 0a 74 6f 74 61 6c 5f 74 69 6d 65 3a 3d 74 6f 74 61 6c 5f 74 69 6d 65 2d 63   ┆(*$R-*) total_time:=total_time-c┆
0x000600…000620 (0, 0, 4)   75 72 72 65 6e 74 5f 74 69 6d 65 2b 65 78 63 5f 74 69 6d 65 3b 0a 28 2a 24 52 2b 2a 29 0a 63 75   ┆urrent_time+exc_time; (*$R+*) cu┆
0x000620…000640             72 72 65 6e 74 5f 74 69 6d 65 3a 3d 65 78 63 5f 74 69 6d 65 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b   ┆rrent_time:=exc_time; end;  end;┆
0x000640…000660             20 28 2a 20 77 69 74 68 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 69 66 20 66 6f 75 6e 64 20 2a 29   ┆ (* with *)  end; (* if found *)┆
0x000660…000680             0a 0a 65 6e 64 3b 20 28 2a 20 69 66 20 74 72 61 69 6c 65 72 6e 72 20 2e 2e 2e 20 2a 29 0a 0a 65   ┆  end; (* if trailernr ... *)  e┆
0x000680…0006a0             6e 64 3b 20 28 2a 20 69 66 20 61 69 73 20 63 6f 64 65 73 20 2e 2e 2e 20 2a 29 0a 0a 0a 0a 63 61   ┆nd; (* if ais codes ... *)    ca┆
0x0006a0…0006c0             73 65 20 6f 70 65 72 61 6e 64 73 69 7a 65 20 6f 66 0a 62 79 74 65 73 69 7a 65 3a 20 6f 75 74 62   ┆se operandsize of bytesize: outb┆
0x0006c0…0006e0             79 74 65 28 20 64 69 73 70 6c 61 63 65 6d 65 6e 74 20 29 3b 0a 77 6f 72 64 73 69 7a 65 3a 20 6f   ┆yte( displacement ); wordsize: o┆
0x0006e0…000700             75 74 77 6f 72 64 28 20 64 69 73 70 6c 61 63 65 6d 65 6e 74 20 29 3b 0a 61 64 64 72 73 69 7a 65   ┆utword( displacement ); addrsize┆
0x000700…000720             3a 20 62 65 67 69 6e 0a 6f 75 74 62 79 74 65 28 20 30 20 29 3b 20 6f 75 74 77 6f 72 64 28 20 64   ┆: begin outbyte( 0 ); outword( d┆
0x000720…000740             69 73 70 6c 61 63 65 6d 65 6e 74 20 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 3b 0a 65 6e 64 3b 20   ┆isplacement ); end; else ; end; ┆
0x000740…000760             28 2a 20 63 61 73 65 20 2a 29 0a 0a 0a 69 66 20 74 72 61 69 6c 65 72 6e 72 20 3c 20 6d 61 78 5f   ┆(* case *)   if trailernr < max_┆
0x000760…000780             6e 6f 5f 6f 66 5f 74 72 61 69 6c 65 72 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a 74 72 61 69 6c 65   ┆no_of_trailers then begin traile┆
0x000780…0007a0             72 6e 72 3a 3d 20 74 72 61 69 6c 65 72 6e 72 20 2b 20 31 3b 0a 6f 70 65 72 61 6e 64 73 69 7a 65   ┆rnr:= trailernr + 1; operandsize┆
0x0007a0…0007c0             3a 3d 20 74 72 61 69 6c 65 72 73 20 5b 20 74 72 61 69 6c 65 72 6e 72 20 5d 20 3b 0a 65 6e 64 0a   ┆:= trailers [ trailernr ] ; end ┆
0x0007c0…0007e0             65 6c 73 65 0a 6f 70 65 72 61 6e 64 73 69 7a 65 3a 3d 20 30 3b 20 28 2a 20 73 74 6f 70 20 2a 29   ┆else operandsize:= 0; (* stop *)┆
0x0007e0…000800             0a 0a 69 66 20 28 6f 70 65 72 61 6e 64 73 69 7a 65 20 3e 20 30 29 20 61 6e 64 20 28 6c 69 6e 65   ┆  if (operandsize > 0) and (line┆
0x000800…000820 (0, 0, 5)   20 5b 20 6c 69 6e 65 69 6e 64 65 78 20 5d 20 3c 3e 20 27 2c 27 29 20 74 68 65 6e 0a 62 65 67 69   ┆ [ lineindex ] <> ',') then begi┆
0x000820…000840             6e 0a 6d 61 72 6b 65 72 72 6f 72 28 20 37 20 29 3b 20 28 2a 20 6d 69 73 73 69 6e 67 20 6f 70 65   ┆n markerror( 7 ); (* missing ope┆
0x000840…000860             72 61 6e 64 20 2a 29 0a 6f 70 65 72 61 6e 64 73 69 7a 65 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 65   ┆rand *) operandsize:= 0; end;  e┆
0x000860…000880             6e 64 3b 20 28 2a 20 77 68 69 6c 65 20 6f 70 65 72 61 6e 64 73 69 7a 65 20 3e 20 30 20 2a 29 0a   ┆nd; (* while operandsize > 0 *) ┆
0x000880…0008a0             0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 6f 70 63 6f 64 65 73 20 5b 20 63 75 72 72 65 6e 74 5f   ┆ end; (* with opcodes [ current_┆
0x0008a0…0008c0             63 6f 64 65 20 5d 20 2a 29 0a 0a 74 6f 6b 65 6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65   ┆code ] *)  token:= get_next_toke┆
0x0008c0…0008e0             6e 3b 20 28 2a 20 70 72 65 70 61 72 65 20 6e 65 78 74 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 2a   ┆n; (* prepare next instruction *┆
0x0008e0…000900             29 0a 0a 65 6e 64 3b 20 28 2a 20 68 61 6e 64 6c 65 20 63 6f 64 65 20 2a 29 0a 0a 0c 0a 70 72 6f   ┆)  end; (* handle code *)    pro┆
0x000900…000920             63 65 64 75 72 65 20 68 61 6e 64 6c 65 5f 63 6f 6e 73 74 61 6e 74 3b 0a 0a 28 2a 20 6a 75 73 74   ┆cedure handle_constant;  (* just┆
0x000920…000940             20 72 65 61 64 20 27 63 2e 27 20 6e 6f 77 20 68 61 6e 64 6c 65 20 3a 0a 0a 2e 20 20 20 2d 2d 2d   ┆ read 'c.' now handle :  .   ---┆
0x000940…000960             2d 2d 3e 20 73 69 7a 65 20 2d 3e 2d 3e 20 20 66 69 65 6c 64 20 20 2d 2d 2d 2d 3e 2d 2d 2d 2d 2d   ┆--> size ->->  field  ---->-----┆
0x000960…000980             2d 2d 3e 20 20 65 2e 20 20 2d 2d 2d 2d 2d 2d 2d 3e 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆-->  e.  -------> .             ┆
0x000980…0009a0             20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 0a 2e 20 20 20 20 20 20 20 20 20   ┆   !                ! .         ┆
0x0009a0…0009c0             20 20 20 20 20 20 20 21 3c 2d 2d 2d 20 6e 6c 20 3c 2d 2d 2d 2d 2d 2d 2d 21 0a 2e 20 20 20 20 20   ┆       !<--- nl <-------! .     ┆
0x0009c0…0009e0             20 20 20 20 20 20 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 0a 2e 20   ┆           !                ! . ┆
0x0009e0…000a00             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 3c 2d 2d 2d 20 20 2c 20 3c 2d 2d 2d 2d 2d 2d 2d   ┆               !<---  , <-------┆
0x000a00…000a20 (0, 0, 6)   21 0a 2e 0a 2e 20 77 68 65 72 65 20 66 69 65 6c 64 20 69 73 20 64 65 66 69 6e 65 64 20 61 73 3a   ┆! . . where field is defined as:┆
0x000a20…000a40             0a 2e 0a 2e 20 20 20 2d 2d 2d 3e 2d 2d 2d 2d 2d 2d 2d 2d 3e 2d 2d 2d 2d 2d 2d 3e 20 73 79 6d 62   ┆ . .   --->-------->------> symb┆
0x000a40…000a60             6f 6c 69 63 20 65 78 70 72 65 73 73 69 6f 6e 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 3e 0a 2e 20 20 20   ┆olic expression ----------> .   ┆
0x000a60…000a80             20 20 20 20 21 20 20 20 20 20 20 20 20 21 0a 2e 20 20 20 20 20 20 20 21 2d 3e 20 24 62 20 2d 3e   ┆    !        ! .       !-> $b ->┆
0x000a80…000aa0             21 0a 2e 20 20 20 20 20 20 20 21 20 20 20 20 20 20 20 20 21 0a 2e 20 20 20 20 20 20 20 21 2d 3e   ┆! .       !        ! .       !->┆
0x000aa0…000ac0             20 24 69 20 2d 3e 21 0a 2e 20 20 20 20 20 20 20 21 20 20 20 20 20 20 20 20 21 0a 2e 20 20 20 20   ┆ $i ->! .       !        ! .    ┆
0x000ac0…000ae0             20 20 20 21 2d 3e 20 24 61 20 2d 3e 21 0a 0a 2a 29 0a 0a 74 79 70 65 0a 63 6f 6e 73 74 61 6e 74   ┆   !-> $a ->!  *)  type constant┆
0x000ae0…000b00             5f 6d 6f 64 65 73 20 3d 20 28 62 79 74 65 5f 6d 6f 64 65 2c 20 77 6f 72 64 5f 6d 6f 64 65 2c 20   ┆_modes = (byte_mode, word_mode, ┆
0x000b00…000b20             61 64 64 72 5f 6d 6f 64 65 29 3b 0a 0a 76 61 72 0a 63 75 72 72 65 6e 74 5f 6d 6f 64 65 20 3a 20   ┆addr_mode);  var current_mode : ┆
0x000b20…000b40             63 6f 6e 73 74 61 6e 74 5f 6d 6f 64 65 73 3b 0a 73 65 67 6d 65 6e 74 2c 20 64 69 73 70 2c 20 63   ┆constant_modes; segment, disp, c┆
0x000b40…000b60             6f 6e 73 74 61 6e 74 5f 73 69 7a 65 2c 20 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 73 79   ┆onstant_size, size : integer; sy┆
0x000b60…000b80             6d 62 20 3a 20 6e 61 6d 65 5f 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 69 66 20 74 65 73 74 20 74   ┆mb : name_ptr;  begin  if test t┆
0x000b80…000ba0             68 65 6e 20 6f 75 74 74 65 73 74 28 27 68 61 6e 64 6c 65 20 63 6f 6e 73 74 61 6e 74 27 29 3b 0a   ┆hen outtest('handle constant'); ┆
0x000ba0…000bc0             0a 63 75 72 72 65 6e 74 5f 6d 6f 64 65 3a 3d 20 77 6f 72 64 5f 6d 6f 64 65 3b 20 28 2a 20 64 65   ┆ current_mode:= word_mode; (* de┆
0x000bc0…000be0             66 61 75 6c 74 20 2a 29 0a 63 6f 6e 73 74 61 6e 74 5f 73 69 7a 65 3a 3d 20 32 3b 0a 0a 77 6f 72   ┆fault *) constant_size:= 2;  wor┆
0x000be0…000c00             64 5f 61 6c 69 67 6e 3b 20 28 2a 20 61 73 73 75 72 65 20 63 6f 6e 73 74 61 6e 74 20 73 74 61 72   ┆d_align; (* assure constant star┆
0x000c00…000c20 (0, 0, 7)   74 20 61 74 20 61 20 77 6f 72 64 20 62 6f 75 6e 64 61 72 79 20 2a 29 0a 0a 72 65 61 64 5f 73 79   ┆t at a word boundary *)  read_sy┆
0x000c20…000c40             6d 62 6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 73 69 7a 65 29 3b 0a   ┆mbolic_expression( symb, size); ┆
0x000c40…000c60             69 66 20 73 75 72 76 65 79 5f 67 72 65 61 74 65 73 74 5f 63 6f 6e 73 74 3c 73 69 7a 65 20 74 68   ┆if survey_greatest_const<size th┆
0x000c60…000c80             65 6e 0a 73 75 72 76 65 79 5f 67 72 65 61 74 65 73 74 5f 63 6f 6e 73 74 3a 3d 20 73 69 7a 65 3b   ┆en survey_greatest_const:= size;┆
0x000c80…000ca0             0a 69 66 20 6e 6f 74 20 72 65 73 65 72 76 65 63 6f 64 65 28 20 73 69 7a 65 20 29 20 74 68 65 6e   ┆ if not reservecode( size ) then┆
0x000ca0…000cc0             0a 73 69 7a 65 3a 3d 20 2d 31 3b 20 28 2a 20 66 6f 72 63 65 20 73 6b 69 70 20 6f 66 20 63 6f 6e   ┆ size:= -1; (* force skip of con┆
0x000cc0…000ce0             73 74 61 6e 74 20 2a 29 0a 0a 77 68 69 6c 65 20 74 6f 6b 65 6e 20 3c 3e 20 62 6c 6f 63 6b 65 6e   ┆stant *)  while token <> blocken┆
0x000ce0…000d00             64 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 6c 69 6e 65 69 6e 64 65 78 20 3d 20 6c 69 6e 65 6c 65   ┆d do begin if lineindex = linele┆
0x000d00…000d20             6e 67 74 68 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 28 65 72 72 6f 72 69 6e 64 65 78 20 3e   ┆ngth then begin if (errorindex >┆
0x000d20…000d40             20 30 29 20 61 6e 64 20 65 72 72 6f 72 72 65 70 6f 72 74 69 6e 67 20 74 68 65 6e 20 77 72 69 74   ┆ 0) and errorreporting then writ┆
0x000d40…000d60             65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 69 66 20 63 6f 64 65 6c 69 73 74 20 61 6e 64 20 6e 6f 74   ┆eln(output); if codelist and not┆
0x000d60…000d80             20 70 72 69 6e 74 65 64 20 74 68 65 6e 20 70 72 69 6e 74 6c 69 6e 65 3b 0a 72 65 61 64 6c 69 6e   ┆ printed then printline; readlin┆
0x000d80…000da0             65 3b 0a 69 66 20 63 6f 64 65 6c 69 73 74 20 74 68 65 6e 20 70 72 69 6e 74 6c 69 6e 65 3b 0a 65   ┆e; if codelist then printline; e┆
0x000da0…000dc0             6e 64 3b 0a 69 66 20 6c 69 6e 65 20 5b 20 6c 69 6e 65 69 6e 64 65 78 20 2b 20 31 20 5d 20 3d 20   ┆nd; if line [ lineindex + 1 ] = ┆
0x000dc0…000de0             27 24 27 20 74 68 65 6e 0a 62 65 67 69 6e 0a 63 61 73 65 20 6c 69 6e 65 20 5b 20 6c 69 6e 65 69   ┆'$' then begin case line [ linei┆
0x000de0…000e00             6e 64 65 78 20 2b 20 32 20 5d 20 6f 66 0a 27 62 27 2c 20 27 42 27 20 3a 20 0a 62 65 67 69 6e 0a   ┆ndex + 2 ] of 'b', 'B' :  begin ┆
0x000e00…000e20 (0, 0, 8)   63 75 72 72 65 6e 74 5f 6d 6f 64 65 3a 3d 20 62 79 74 65 5f 6d 6f 64 65 3b 20 63 6f 6e 73 74 61   ┆current_mode:= byte_mode; consta┆
0x000e20…000e40             6e 74 5f 73 69 7a 65 3a 3d 20 62 79 74 65 73 69 7a 65 3b 0a 65 6e 64 3b 0a 0a 27 69 27 2c 20 27   ┆nt_size:= bytesize; end;  'i', '┆
0x000e40…000e60             49 27 20 3a 0a 62 65 67 69 6e 0a 63 75 72 72 65 6e 74 5f 6d 6f 64 65 3a 3d 20 77 6f 72 64 5f 6d   ┆I' : begin current_mode:= word_m┆
0x000e60…000e80             6f 64 65 3b 20 63 6f 6e 73 74 61 6e 74 5f 73 69 7a 65 3a 3d 20 77 6f 72 64 73 69 7a 65 3b 0a 65   ┆ode; constant_size:= wordsize; e┆
0x000e80…000ea0             6e 64 3b 0a 0a 27 61 27 2c 20 27 41 27 20 3a 0a 62 65 67 69 6e 0a 63 75 72 72 65 6e 74 5f 6d 6f   ┆nd;  'a', 'A' : begin current_mo┆
0x000ea0…000ec0             64 65 3a 3d 20 61 64 64 72 5f 6d 6f 64 65 3b 20 63 6f 6e 73 74 61 6e 74 5f 73 69 7a 65 3a 3d 20   ┆de:= addr_mode; constant_size:= ┆
0x000ec0…000ee0             61 64 64 72 73 69 7a 65 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a   ┆addrsize; end;  end; (* case *) ┆
0x000ee0…000f00             6c 69 6e 65 69 6e 64 65 78 3a 3d 20 6c 69 6e 65 69 6e 64 65 78 20 2b 20 32 3b 20 28 2a 20 73 6b   ┆lineindex:= lineindex + 2; (* sk┆
0x000f00…000f20             69 70 20 72 61 64 69 78 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 69 66 20 63 68 61 6e 67 65 20 6d   ┆ip radix *)  end; (* if change m┆
0x000f20…000f40             6f 64 65 20 2a 29 0a 0a 73 69 7a 65 3a 3d 20 73 69 7a 65 20 2d 20 63 6f 6e 73 74 61 6e 74 5f 73   ┆ode *)  size:= size - constant_s┆
0x000f40…000f60             69 7a 65 3b 0a 0a 69 66 20 73 69 7a 65 20 3c 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 74 6f 6b   ┆ize;  if size < 0 then begin tok┆
0x000f60…000f80             65 6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 3b 20 28 2a 20 73 6b 69 70 20 75 6e 74   ┆en:= get_next_token; (* skip unt┆
0x000f80…000fa0             69 6c 20 27 65 2e 27 20 2a 29 0a 69 66 20 73 69 7a 65 20 2b 20 63 6f 6e 73 74 61 6e 74 5f 73 69   ┆il 'e.' *) if size + constant_si┆
0x000fa0…000fc0             7a 65 20 3c 20 30 20 74 68 65 6e 0a 6d 61 72 6b 65 72 72 6f 72 28 20 38 20 29 3b 20 28 2a 20 74   ┆ze < 0 then markerror( 8 ); (* t┆
0x000fc0…000fe0             6f 6f 20 6d 61 6e 79 20 66 69 65 6c 64 73 20 69 6e 20 73 74 72 75 63 74 75 72 65 64 20 63 6f 6e   ┆oo many fields in structured con┆
0x000fe0…001000             73 74 61 6e 74 20 64 65 66 69 6e 69 74 69 6f 6e 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67   ┆stant definition *) end else beg┆
0x001000…001020 (0, 0, 9)   69 6e 0a 72 65 61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d   ┆in read_symbolic_expression( sym┆
0x001020…001040             62 2c 20 64 69 73 70 29 3b 0a 0a 69 66 20 73 79 6d 62 20 3c 3e 20 6e 69 6c 5f 6e 61 6d 65 20 74   ┆b, disp);  if symb <> nil_name t┆
0x001040…001060             68 65 6e 0a 77 69 74 68 20 73 79 6d 62 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 73 65 67 6d 65 6e 74   ┆hen with symb ^ do begin segment┆
0x001060…001080             3a 3d 20 64 65 66 5f 73 65 67 6d 65 6e 74 3b 0a 69 66 20 28 73 65 67 6d 65 6e 74 20 3c 3e 20 6e   ┆:= def_segment; if (segment <> n┆
0x001080…0010a0             69 6c 6c 29 20 61 6e 64 20 28 63 75 72 72 65 6e 74 5f 6d 6f 64 65 20 3c 3e 20 61 64 64 72 5f 6d   ┆ill) and (current_mode <> addr_m┆
0x0010a0…0010c0             6f 64 65 29 20 74 68 65 6e 0a 64 69 73 70 3a 3d 20 64 69 73 70 20 2b 20 64 65 66 5f 6f 66 66 73   ┆ode) then disp:= disp + def_offs┆
0x0010c0…0010e0             65 74 0a 65 6c 73 65 0a 75 73 65 5f 63 68 61 69 6e 3a 3d 20 61 64 64 5f 75 6e 73 61 74 69 73 66   ┆et else use_chain:= add_unsatisf┆
0x0010e0…001100             69 65 64 5f 6e 6f 64 65 28 20 75 73 65 5f 63 68 61 69 6e 2c 20 66 61 6c 73 65 2c 20 63 6f 6e 73   ┆ied_node( use_chain, false, cons┆
0x001100…001120             74 61 6e 74 5f 73 69 7a 65 29 3b 0a 65 6e 64 0a 0a 65 6c 73 65 0a 0a 73 65 67 6d 65 6e 74 3a 3d   ┆tant_size); end  else  segment:=┆
0x001120…001140             20 30 3b 0a 0a 63 61 73 65 20 63 75 72 72 65 6e 74 5f 6d 6f 64 65 20 6f 66 0a 0a 62 79 74 65 5f   ┆ 0;  case current_mode of  byte_┆
0x001140…001160             6d 6f 64 65 20 3a 20 6f 75 74 62 79 74 65 28 20 64 69 73 70 20 29 3b 0a 0a 77 6f 72 64 5f 6d 6f   ┆mode : outbyte( disp );  word_mo┆
0x001160…001180             64 65 20 3a 20 6f 75 74 77 6f 72 64 28 20 64 69 73 70 20 29 3b 0a 0a 61 64 64 72 5f 6d 6f 64 65   ┆de : outword( disp );  addr_mode┆
0x001180…0011a0             20 3a 20 0a 62 65 67 69 6e 0a 6f 75 74 62 79 74 65 28 20 30 20 29 3b 20 6f 75 74 77 6f 72 64 28   ┆ :  begin outbyte( 0 ); outword(┆
0x0011a0…0011c0             20 64 69 73 70 20 29 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a   ┆ disp ); end;  end; (* case *)  ┆
0x0011c0…0011e0             65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65 20 6e 6f 74 20 62 6c 6f 63 6b 65 6e 64   ┆end;  end; (* while not blockend┆
0x0011e0…001200             20 2a 29 0a 0a 69 66 20 73 69 7a 65 20 3e 20 30 20 74 68 65 6e 20 0a 6d 61 72 6b 65 72 72 6f 72   ┆ *)  if size > 0 then  markerror┆
0x001200…001220 (0, 0, 10)  28 20 39 20 29 3b 20 28 2a 20 74 6f 6f 20 66 65 77 20 63 6f 6e 73 74 61 6e 74 73 20 2a 29 0a 0a   ┆( 9 ); (* too few constants *)  ┆
0x001220…001240             74 6f 6b 65 6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a   ┆token:= get_next_token;  end; (*┆
0x001240…001260             20 68 61 6e 64 6c 65 20 63 6f 6e 73 74 61 6e 74 73 20 2a 29 0a 0a 0c 0a 70 72 6f 63 65 64 75 72   ┆ handle constants *)    procedur┆
0x001260…001280             65 20 72 65 61 64 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 28 2a 0a 0a 2e 20 20 20 2d 2d 2d   ┆e read_declaration;  (*  .   ---┆
0x001280…0012a0             2d 3e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 3e 2d 2d 3e 20 20 2e   ┆->----------------------->-->  .┆
0x0012a0…0012c0             20 20 2d 2d 2d 3e 20 20 6e 6c 20 20 2d 2d 2d 3e 0a 2e 20 20 20 20 20 20 20 20 21 20 20 20 20 20   ┆  --->  nl  ---> .        !     ┆
0x0012c0…0012e0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 0a 2e 20 20 20 20 20 20 20 20 21 2d 3e   ┆                  ! .        !->┆
0x0012e0…001300             2d 3e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 2d 2d 3e 2d 2d 3e 21 0a 2e 20 20 20 20 20 20 20 20   ┆-> declaration -->-->! .        ┆
0x001300…001320             20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 0a 2e 20 20 20 20 20 20 20 20   ┆   !                 ! .        ┆
0x001320…001340             20 20 20 21 3c 2d 2d 2d 2d 2d 2d 2d 2d 2d 3c 2d 20 2c 20 3c 2d 21 0a 2e 20 20 20 20 20 20 20 20   ┆   !<---------<- , <-! .        ┆
0x001340…001360             20 20 20 21 20 20 20 20 20 20 20 20 20 21 0a 2e 20 20 20 20 20 20 20 20 20 20 20 21 3c 2d 20 6e   ┆   !         ! .           !<- n┆
0x001360…001380             6c 20 3c 2d 2d 21 0a 0a 0a 74 68 65 72 65 20 69 73 20 6e 6f 20 63 68 65 63 6b 20 61 67 61 69 6e   ┆l <--!   there is no check again┆
0x001380…0013a0             73 74 20 64 6f 75 62 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2c 0a 74 68 65 20 6e 61 6d 65   ┆st double declarations, the name┆
0x0013a0…0013c0             73 20 61 72 65 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 6e 61 6d 65 20 74 61 62   ┆s are inserted into the name tab┆
0x0013c0…0013e0             6c 65 20 69 6e 20 6f 70 70 6f 73 69 74 65 20 6f 72 64 65 72 20 6f 66 0a 64 65 63 6c 61 72 61 74   ┆le in opposite order of declarat┆
0x0013e0…001400             69 6f 6e 0a 0a 2a 29 0a 6c 61 62 65 6c 20 20 31 31 37 3b 20 20 28 2a 20 61 6c 6c 6f 77 20 6c 69   ┆ion  *) label  117;  (* allow li┆
0x001400…001420 (0, 0, 11)  6e 65 20 6e 75 6d 62 65 72 73 20 62 65 74 77 65 65 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20   ┆ne numbers between declarations ┆
0x001420…001440             2a 29 0a 0a 76 61 72 0a 6c 6f 63 61 6c 74 6f 6b 65 6e 20 3a 20 74 6f 6b 65 6e 73 3b 0a 73 74 65   ┆*)  var localtoken : tokens; ste┆
0x001440…001460             70 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6c 6f 63 61 6c 5f 6c 65 76 65 6c 3a 20 6c 65 76 65 6c 5f   ┆p : integer; local_level: level_┆
0x001460…001480             70 74 72 3b 0a 6e 61 6d 65 70 74 72 20 3a 20 6e 61 6d 65 5f 70 74 72 3b 0a 0a 62 65 67 69 6e 0a   ┆ptr; nameptr : name_ptr;  begin ┆
0x001480…0014a0             0a 69 66 20 74 65 73 74 20 74 68 65 6e 20 6f 75 74 74 65 73 74 28 27 72 65 61 64 20 64 65 63 6c   ┆ if test then outtest('read decl┆
0x0014a0…0014c0             61 72 61 74 69 6f 6e 27 29 3b 0a 0a 69 66 20 66 72 65 65 5f 6c 65 76 65 6c 5f 6c 69 73 74 3d 6e   ┆aration');  if free_level_list=n┆
0x0014c0…0014e0             69 6c 5f 6c 65 76 65 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 65 77 28 6c 6f 63 61 6c 5f 6c 65   ┆il_level then begin new(local_le┆
0x0014e0…001500             76 65 6c 29 3b 0a 73 75 72 76 65 79 5f 6c 65 76 65 6c 5f 6e 6f 64 65 73 3a 3d 20 73 75 72 76 65   ┆vel); survey_level_nodes:= surve┆
0x001500…001520             79 5f 6c 65 76 65 6c 5f 6e 6f 64 65 73 2b 31 3b 0a 6c 6f 63 61 6c 5f 6c 65 76 65 6c 5e 2e 66 6f   ┆y_level_nodes+1; local_level^.fo┆
0x001520…001540             72 6d 65 72 5f 6c 65 76 65 6c 3a 3d 20 6e 69 6c 5f 6c 65 76 65 6c 3b 0a 65 6e 64 0a 65 6c 73 65   ┆rmer_level:= nil_level; end else┆
0x001540…001560             0a 6c 6f 63 61 6c 5f 6c 65 76 65 6c 3a 3d 20 66 72 65 65 5f 6c 65 76 65 6c 5f 6c 69 73 74 3b 0a   ┆ local_level:= free_level_list; ┆
0x001560…001580             0a 66 72 65 65 5f 6c 65 76 65 6c 5f 6c 69 73 74 3a 3d 20 6c 6f 63 61 6c 5f 6c 65 76 65 6c 5e 2e   ┆ free_level_list:= local_level^.┆
0x001580…0015a0             66 6f 72 6d 65 72 5f 6c 65 76 65 6c 3b 0a 6c 6f 63 61 6c 5f 6c 65 76 65 6c 5e 2e 66 6f 72 6d 65   ┆former_level; local_level^.forme┆
0x0015a0…0015c0             72 5f 6c 65 76 65 6c 3a 3d 20 63 75 72 72 65 6e 74 5f 6c 65 76 65 6c 3b 0a 63 75 72 72 65 6e 74   ┆r_level:= current_level; current┆
0x0015c0…0015e0             5f 6c 65 76 65 6c 3a 3d 20 6c 6f 63 61 6c 5f 6c 65 76 65 6c 3b 0a 0a 63 75 72 72 65 6e 74 5f 6c   ┆_level:= local_level;  current_l┆
0x0015e0…001600             65 76 65 6c 20 5e 2e 6c 65 76 65 6c 5f 6c 69 73 74 3a 3d 20 6e 69 6c 5f 6e 61 6d 65 3b 0a 0a 72   ┆evel ^.level_list:= nil_name;  r┆
0x001600…001620 (0, 0, 12)  65 70 65 61 74 0a 6c 6f 63 61 6c 74 6f 6b 65 6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65   ┆epeat localtoken:= get_next_toke┆
0x001620…001640             6e 3b 0a 31 31 37 3a 20 69 66 20 28 6c 6f 63 61 6c 74 6f 6b 65 6e 20 3c 3e 20 73 79 6d 62 6f 6c   ┆n; 117: if (localtoken <> symbol┆
0x001640…001660             29 20 61 6e 64 20 28 6c 6f 63 61 6c 74 6f 6b 65 6e 20 3c 3e 20 6f 74 68 65 72 29 20 28 2a 20 65   ┆) and (localtoken <> other) (* e┆
0x001660…001680             6d 70 74 79 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 2a 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69   ┆mpty declaration *) then begin i┆
0x001680…0016a0             66 20 6c 6f 63 61 6c 74 6f 6b 65 6e 20 3d 20 73 6f 75 72 63 65 5f 6c 69 6e 65 5f 6e 75 6d 62 65   ┆f localtoken = source_line_numbe┆
0x0016a0…0016c0             72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 68 61 6e 64 6c 65 5f 6c 69 6e 65 3b 0a 6c 6f 63 61 6c 74   ┆r then begin handle_line; localt┆
0x0016c0…0016e0             6f 6b 65 6e 3a 3d 20 74 6f 6b 65 6e 3b 20 28 2a 20 74 6f 6b 65 6e 20 77 61 73 20 61 73 73 69 67   ┆oken:= token; (* token was assig┆
0x0016e0…001700             6e 65 64 20 62 79 20 68 61 6e 64 6c 65 20 6c 69 6e 65 20 2a 29 0a 67 6f 74 6f 20 31 31 37 3b 20   ┆ned by handle line *) goto 117; ┆
0x001700…001720             28 2a 20 70 72 6f 63 65 65 64 20 61 73 20 69 66 20 73 6f 75 72 63 65 20 6c 69 6e 65 20 77 61 73   ┆(* proceed as if source line was┆
0x001720…001740             20 6e 6f 74 20 6d 65 74 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 6d 61 72 6b 65 72 72 6f 72 28 20   ┆ not met *) end else markerror( ┆
0x001740…001760             31 30 20 29 3b 20 28 2a 20 65 72 72 6f 72 20 69 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 2a 29   ┆10 ); (* error in declaration *)┆
0x001760…001780             0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 6c 61 73 74 63 68 61 72 20 3e 20 30 20 74 68 65 6e 0a 62   ┆ end else if lastchar > 0 then b┆
0x001780…0017a0             65 67 69 6e 0a 28 2a 20 6e 6f 6e 20 65 6d 70 74 79 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 2a 29   ┆egin (* non empty declaration *)┆
0x0017a0…0017c0             0a 6e 61 6d 65 70 74 72 3a 3d 20 67 65 74 6e 61 6d 65 6e 6f 64 65 3b 0a 0a 77 69 74 68 20 6e 61   ┆ nameptr:= getnamenode;  with na┆
0x0017c0…0017e0             6d 65 70 74 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 66 6f 72 20 73 74 65 70 3a 3d 20 31 20 74 6f   ┆meptr ^ do begin for step:= 1 to┆
0x0017e0…001800             20 6c 61 73 74 63 68 61 72 20 64 6f 0a 69 66 20 73 74 65 70 20 3c 3d 20 6e 61 6d 65 6c 65 6e 67   ┆ lastchar do if step <= nameleng┆
0x001800…001820 (0, 0, 13)  74 68 20 74 68 65 6e 0a 6e 61 6d 65 70 61 72 74 20 5b 20 73 74 65 70 20 5d 3a 3d 20 63 68 62 75   ┆th then namepart [ step ]:= chbu┆
0x001820…001840             66 20 5b 20 73 74 65 70 20 5d 20 3b 0a 64 65 66 5f 73 65 67 6d 65 6e 74 3a 3d 20 6e 69 6c 6c 3b   ┆f [ step ] ; def_segment:= nill;┆
0x001840…001860             20 28 2a 20 75 6e 64 65 66 69 6e 65 64 20 2a 29 0a 64 65 66 5f 6f 66 66 73 65 74 3a 3d 20 30 3b   ┆ (* undefined *) def_offset:= 0;┆
0x001860…001880             0a 6b 69 6e 64 3a 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 6e 65 78 74 5f 6e 61 6d 65 3a 3d 20 63   ┆ kind:= undefined; next_name:= c┆
0x001880…0018a0             75 72 72 65 6e 74 5f 6c 65 76 65 6c 20 5e 2e 6c 65 76 65 6c 5f 6c 69 73 74 3b 0a 65 6e 64 3b 20   ┆urrent_level ^.level_list; end; ┆
0x0018a0…0018c0             28 2a 20 77 69 74 68 20 2a 29 0a 63 75 72 72 65 6e 74 5f 6c 65 76 65 6c 20 5e 2e 6c 65 76 65 6c   ┆(* with *) current_level ^.level┆
0x0018c0…0018e0             5f 6c 69 73 74 3a 3d 20 6e 61 6d 65 70 74 72 3b 0a 0a 65 6e 64 3b 0a 0a 75 6e 74 69 6c 20 6c 69   ┆_list:= nameptr;  end;  until li┆
0x0018e0…001900             6e 65 20 5b 20 6c 69 6e 65 69 6e 64 65 78 20 5d 20 3d 20 27 2e 27 3b 20 28 2a 20 65 6e 64 20 64   ┆ne [ lineindex ] = '.'; (* end d┆
0x001900…001920             65 63 6c 61 72 61 74 69 6f 6e 20 6c 69 73 74 20 2a 29 0a 0a 74 6f 6b 65 6e 3a 3d 20 67 65 74 5f   ┆eclaration list *)  token:= get_┆
0x001920…001940             6e 65 78 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 72 65 61 64 20 64 65 63 6c 61 72   ┆next_token;  end; (* read declar┆
0x001940…001960             61 74 69 6f 6e 20 2a 29 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 75 6e 73 74 61 63 6b 5f 6c 65 76   ┆ation *)   procedure unstack_lev┆
0x001960…001980             65 6c 3b 0a 0a 28 2a 0a 2e 20 20 20 20 20 2d 2d 2d 2d 2d 2d 3e 20 20 20 65 2e 20 20 20 20 2d 2d   ┆el;  (* .     ------>   e.    --┆
0x001980…0019a0             2d 2d 2d 2d 2d 3e 0a 0a 74 72 61 76 65 72 73 65 20 74 68 65 20 6e 61 6d 65 20 6c 69 73 74 20 6f   ┆----->  traverse the name list o┆
0x0019a0…0019c0             66 20 63 75 72 72 65 6e 74 20 6c 65 76 65 6c 20 0a 69 66 20 75 73 65 20 63 68 61 69 6e 20 3d 20   ┆f current level  if use chain = ┆
0x0019c0…0019e0             75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 20 74 68 65 6e 20 72 65 6d 6f 76 65 20 65 6e 74 72   ┆unsatisfied_nil then remove entr┆
0x0019e0…001a00             79 0a 65 6c 73 65 0a 69 66 20 6e 6f 74 20 64 65 66 69 6e 65 64 20 74 68 65 6e 20 65 72 72 6f 72   ┆y else if not defined then error┆
0x001a00…001a20 (0, 0, 14)  0a 65 6c 73 65 20 70 75 74 20 74 68 65 20 6e 61 6d 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 6e   ┆ else put the name definition in┆
0x001a20…001a40             74 6f 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 6c 69 6e 6b 20 6c 69 73 74 0a 0a 72 65 6d 6f 76   ┆to the internal link list  remov┆
0x001a40…001a60             65 20 6c 65 76 65 6c 20 0a 0a 2a 29 0a 0a 76 61 72 0a 6c 6f 63 61 6c 5f 66 72 65 65 5f 6c 65 76   ┆e level   *)  var local_free_lev┆
0x001a60…001a80             65 6c 3a 20 6c 65 76 65 6c 5f 70 74 72 3b 0a 6c 6f 63 61 6c 5f 6e 65 78 74 5f 6e 61 6d 65 20 2c   ┆el: level_ptr; local_next_name ,┆
0x001a80…001aa0             20 6c 69 73 74 20 3a 20 6e 61 6d 65 5f 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 74 65 73 74   ┆ list : name_ptr;  begin if test┆
0x001aa0…001ac0             20 74 68 65 6e 0a 6f 75 74 74 65 73 74 28 27 75 6e 73 74 61 63 6b 20 6c 65 76 65 6c 27 29 3b 0a   ┆ then outtest('unstack level'); ┆
0x001ac0…001ae0             0a 69 66 20 64 75 6d 70 5f 6e 61 6d 65 74 61 62 6c 65 20 74 68 65 6e 0a 6f 75 74 70 75 74 5f 6e   ┆ if dump_nametable then output_n┆
0x001ae0…001b00             61 6d 65 73 3b 0a 0a 6c 69 73 74 3a 3d 20 63 75 72 72 65 6e 74 5f 6c 65 76 65 6c 20 5e 2e 6c 65   ┆ames;  list:= current_level ^.le┆
0x001b00…001b20             76 65 6c 5f 6c 69 73 74 3b 0a 0a 77 68 69 6c 65 20 6c 69 73 74 20 3c 3e 20 6e 69 6c 5f 6e 61 6d   ┆vel_list;  while list <> nil_nam┆
0x001b20…001b40             65 20 64 6f 0a 77 69 74 68 20 6c 69 73 74 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 6c 6f 63 61 6c 5f   ┆e do with list ^ do begin local_┆
0x001b40…001b60             6e 65 78 74 5f 6e 61 6d 65 3a 3d 20 6e 65 78 74 5f 6e 61 6d 65 3b 0a 69 66 20 75 73 65 5f 63 68   ┆next_name:= next_name; if use_ch┆
0x001b60…001b80             61 69 6e 20 3d 20 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 20 74 68 65 6e 0a 72 65 74 75 72   ┆ain = unsatisfied_nil then retur┆
0x001b80…001ba0             6e 6e 61 6d 65 28 6c 69 73 74 29 0a 65 6c 73 65 0a 69 66 20 6b 69 6e 64 20 3d 20 75 6e 64 65 66   ┆nname(list) else if kind = undef┆
0x001ba0…001bc0             69 6e 65 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6d 61 72 6b 65 72 72 6f 72 31 28 20 31 31 2c 20   ┆ined then begin markerror1( 11, ┆
0x001bc0…001be0             6e 61 6d 65 70 61 72 74 20 29 3b 20 28 2a 20 75 6e 64 65 66 69 6e 65 64 20 62 75 74 20 75 73 65   ┆namepart ); (* undefined but use┆
0x001be0…001c00             64 20 6c 61 62 65 6c 20 2a 29 0a 72 65 74 75 72 6e 6e 61 6d 65 28 20 6c 69 73 74 20 29 3b 0a 65   ┆d label *) returnname( list ); e┆
0x001c00…001c20 (0, 0, 15)  6e 64 0a 0a 65 6c 73 65 0a 0a 62 65 67 69 6e 0a 6e 65 78 74 5f 6e 61 6d 65 3a 3d 20 69 6e 74 65   ┆nd  else  begin next_name:= inte┆
0x001c20…001c40             72 6e 61 6c 5f 6c 69 6e 6b 5f 6c 69 73 74 3b 0a 69 6e 74 65 72 6e 61 6c 5f 6c 69 6e 6b 5f 6c 69   ┆rnal_link_list; internal_link_li┆
0x001c40…001c60             73 74 3a 3d 20 6c 69 73 74 0a 65 6e 64 3b 0a 0a 6c 69 73 74 3a 3d 20 6c 6f 63 61 6c 5f 6e 65 78   ┆st:= list end;  list:= local_nex┆
0x001c60…001c80             74 5f 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65 20 6c 69 73 74 20 3c 3e 20 6e   ┆t_name;  end; (* while list <> n┆
0x001c80…001ca0             69 6c 5f 6e 61 6d 65 20 2a 29 0a 0a 6c 6f 63 61 6c 5f 66 72 65 65 5f 6c 65 76 65 6c 3a 3d 20 66   ┆il_name *)  local_free_level:= f┆
0x001ca0…001cc0             72 65 65 5f 6c 65 76 65 6c 5f 6c 69 73 74 3b 0a 66 72 65 65 5f 6c 65 76 65 6c 5f 6c 69 73 74 3a   ┆ree_level_list; free_level_list:┆
0x001cc0…001ce0             3d 20 63 75 72 72 65 6e 74 5f 6c 65 76 65 6c 3b 0a 63 75 72 72 65 6e 74 5f 6c 65 76 65 6c 3a 3d   ┆= current_level; current_level:=┆
0x001ce0…001d00             20 63 75 72 72 65 6e 74 5f 6c 65 76 65 6c 5e 2e 66 6f 72 6d 65 72 5f 6c 65 76 65 6c 3b 0a 66 72   ┆ current_level^.former_level; fr┆
0x001d00…001d20             65 65 5f 6c 65 76 65 6c 5f 6c 69 73 74 5e 2e 66 6f 72 6d 65 72 5f 6c 65 76 65 6c 3a 3d 20 6c 6f   ┆ee_level_list^.former_level:= lo┆
0x001d20…001d40             63 61 6c 5f 66 72 65 65 5f 6c 65 76 65 6c 3b 0a 0a 74 6f 6b 65 6e 3a 3d 20 67 65 74 5f 6e 65 78   ┆cal_free_level;  token:= get_nex┆
0x001d40…001d60             74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 75 6e 73 74 61 63 6b 20 6c 65 76 65 6c 20   ┆t_token;  end; (* unstack level ┆
0x001d60…001d80             2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 61 64 5f 6f 70 74 69 6f 6e 73 3b 0a 28 2a 0a   ┆*)   procedure read_options; (* ┆
0x001d80…001da0             2e 20 20 20 2d 2d 2d 2d 2d 2d 3e 20 20 6f 2e 20 20 2d 2d 2d 2d 3e 2d 2d 2d 2d 3e 20 70 61 73 73   ┆.   ------>  o.  ---->----> pass┆
0x001da0…001dc0             20 6e 72 20 20 2d 2d 3e 20 20 6f 70 74 69 6f 6e 20 20 2d 2d 3e 20 20 76 61 6c 75 65 20 2d 2d 3e   ┆ nr  -->  option  -->  value -->┆
0x001dc0…001de0             2d 2d 2d 3e 20 2e 20 2d 2d 2d 3e 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆---> . ---> .                   ┆
0x001de0…001e00             20 21 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   ┆ !                              ┆
0x001e00…001e20 (0, 1, 1)   20 20 20 20 20 20 20 20 20 20 20 21 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆           ! .                  ┆
0x001e20…001e40             20 20 21 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 3c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆  !---------------<-------------┆
0x001e40…001e60             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 21 0a 0a 69 66 20 70 61 73 73 20 6e 72 20 3c 3e 20 28 30 2c   ┆------------!  if pass nr <> (0,┆
0x001e60…001e80             20 36 29 20 74 68 65 6e 20 73 6b 69 70 0a 0a 6c 65 67 61 6c 20 6f 70 74 69 6f 6e 73 20 3a 0a 0a   ┆ 6) then skip  legal options :  ┆
0x001e80…001ea0             2e 20 20 20 6f 70 74 69 6f 6e 20 20 20 20 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 20 20   ┆.   option      default value   ┆
0x001ea0…001ec0             20 20 6d 65 61 6e 69 6e 67 0a 2e 20 20 20 20 31 20 28 6c 69 73 74 29 20 20 20 20 20 20 20 20 30   ┆  meaning .    1 (list)        0┆
0x001ec0…001ee0             20 28 6e 6f 29 20 20 20 20 20 20 20 63 6f 64 65 6c 69 73 74 3a 3d 20 76 61 6c 75 65 3d 31 0a 2e   ┆ (no)       codelist:= value=1 .┆
0x001ee0…001f00             20 20 20 20 32 20 28 74 65 73 74 29 20 20 20 20 20 20 20 20 30 20 28 6e 6f 29 20 20 20 20 20 20   ┆    2 (test)        0 (no)      ┆
0x001f00…001f20             20 74 65 73 74 20 20 20 20 3a 3d 20 76 61 6c 75 65 3d 31 0a 2e 20 20 20 20 33 20 28 63 6f 64 65   ┆ test    := value=1 .    3 (code┆
0x001f20…001f40             73 69 7a 65 29 20 20 35 31 32 20 20 20 20 20 20 20 20 20 20 20 20 73 65 67 6d 65 6e 74 5f 73 69   ┆size)  512            segment_si┆
0x001f40…001f60             7a 65 3a 3d 20 6d 61 78 28 6d 69 6e 5f 62 75 66 66 65 72 5f 73 69 7a 65 2c 20 76 61 6c 75 65 29   ┆ze:= max(min_buffer_size, value)┆
0x001f60…001f80             0a 2e 20 20 20 20 34 20 28 70 72 69 6e 74 29 20 20 20 20 20 20 20 30 20 28 6e 6f 29 20 20 20 20   ┆ .    4 (print)       0 (no)    ┆
0x001f80…001fa0             20 20 20 70 72 69 6e 74 5f 63 6f 64 65 3a 3d 20 76 61 6c 75 65 3d 31 0a 2e 20 20 20 20 35 20 28   ┆   print_code:= value=1 .    5 (┆
0x001fa0…001fc0             65 72 72 6f 72 6d 65 73 73 29 20 20 20 30 20 28 6e 6f 29 20 20 20 20 20 20 20 65 72 72 6f 72 72   ┆errormess)   0 (no)       errorr┆
0x001fc0…001fe0             65 70 6f 72 74 69 6e 67 3a 3d 20 76 61 6c 75 65 3d 31 0a 2e 20 20 20 20 36 20 28 70 72 65 73 65   ┆eporting:= value=1 .    6 (prese┆
0x001fe0…002000             72 76 65 29 20 20 20 20 30 20 28 6e 6f 29 20 20 20 20 20 20 20 70 72 65 73 65 72 76 65 5f 6f 70   ┆rve)    0 (no)       preserve_op┆
0x002000…002020 (0, 1, 2)   74 69 6f 6e 3a 3d 20 76 61 6c 75 65 3d 31 0a 2e 20 20 20 20 37 20 28 6e 61 6d 65 74 61 62 6c 65   ┆tion:= value=1 .    7 (nametable┆
0x002020…002040             29 20 20 20 30 20 28 6e 6f 29 20 20 20 20 20 20 20 64 75 6d 70 5f 6e 61 6d 65 74 61 62 6c 65 3a   ┆)   0 (no)       dump_nametable:┆
0x002040…002060             3d 20 76 61 6c 75 65 3d 31 0a 2e 20 20 20 20 38 31 2e 2e 38 36 20 28 6c 65 66 74 20 68 61 6e 64   ┆= value=1 .    81..86 (left hand┆
0x002060…002080             20 73 69 64 65 29 20 20 20 20 20 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 69 73 20 67 69 76   ┆ side)      the file name is giv┆
0x002080…0020a0             65 6e 20 61 73 20 6f 70 74 69 6f 6e 73 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆en as options .                 ┆
0x0020a0…0020c0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 38 31 20 74 6f 20 38 36 2c 20 74 77 6f 20 63 68   ┆                81 to 86, two ch┆
0x0020c0…0020e0             61 72 61 63 74 65 72 73 20 70 65 72 20 6f 70 74 69 6f 6e 0a 2e 20 20 20 20 39 20 28 73 70 61 63   ┆aracters per option .    9 (spac┆
0x0020e0…002100             69 6e 67 29 20 20 20 20 20 20 20 20 35 32 20 20 20 20 20 20 20 20 6c 69 6e 65 20 74 61 62 6c 65   ┆ing)        52        line table┆
0x002100…002120             20 73 70 61 63 69 6e 67 3a 3d 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ spacing:= .                    ┆
0x002120…002140             20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 28 20 34 2c 20 6d 69 6e 28 76 61 6c 75 65 2c 20   ┆             max( 4, min(value, ┆
0x002140…002160             73 65 67 6d 65 6e 74 5f 73 69 7a 65 29 29 0a 2e 20 20 20 31 30 20 20 28 73 74 61 74 69 73 74 69   ┆segment_size)) .   10  (statisti┆
0x002160…002180             63 73 29 20 20 20 20 20 30 20 20 20 20 20 20 20 20 67 65 6e 65 72 61 74 65 20 73 74 69 74 69 73   ┆cs)     0        generate stitis┆
0x002180…0021a0             74 69 63 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2e 20 20 20 31 31 20 28 6c 69 6e 65 69 6e   ┆tical information .   11 (linein┆
0x0021a0…0021c0             66 6f 29 20 20 20 20 20 20 20 20 31 20 28 79 65 73 29 20 20 67 65 6e 65 72 61 74 65 20 6c 69 6e   ┆fo)        1 (yes)  generate lin┆
0x0021c0…0021e0             65 20 74 61 62 6c 65 73 20 61 6e 64 20 6f 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2e   ┆e tables and other information .┆
0x0021e0…002200             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   ┆                                ┆
0x002200…002220 (0, 1, 3)   20 66 6f 72 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 20 68 61 6e 64 6c 65 72 0a 2e 20 20 20 31   ┆ for the exception handler .   1┆
0x002220…002240             32 20 28 6f 70 65 6e 20 6f 72 20 63 6c 6f 73 65 64 29 20 20 31 20 28 63 6c 6f 73 65 64 29 20 20   ┆2 (open or closed)  1 (closed)  ┆
0x002240…002260             20 70 72 6f 67 72 61 6d 5f 6b 69 6e 64 3a 3d 20 76 61 6c 75 65 20 6f 66 20 6f 70 74 28 31 32 29   ┆ program_kind:= value of opt(12)┆
0x002260…002280             0a 2e 20 20 20 31 33 20 73 68 6f 72 74 20 20 20 20 20 20 20 20 20 20 20 20 20 31 20 20 28 79 65   ┆ .   13 short             1  (ye┆
0x002280…0022a0             73 29 20 75 73 65 20 73 68 6f 72 74 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 28 61 69 73 29 0a   ┆s) use short instructions (ais) ┆
0x0022a0…0022c0             2e 20 20 20 31 34 31 20 73 74 61 72 74 20 74 69 6d 65 20 79 65 61 72 0a 2e 20 20 20 31 34 32 20   ┆.   141 start time year .   142 ┆
0x0022c0…0022e0             73 74 61 72 74 20 74 69 6d 65 20 6d 6f 6e 74 68 0a 2e 20 20 20 31 34 33 20 73 74 61 72 74 20 74   ┆start time month .   143 start t┆
0x0022e0…002300             69 6d 65 20 64 61 79 0a 2e 20 20 20 31 34 34 20 73 74 61 72 74 20 74 69 6d 65 20 68 6f 75 72 0a   ┆ime day .   144 start time hour ┆
0x002300…002320             2e 20 20 20 31 34 35 20 73 74 61 72 74 20 74 69 6d 65 20 6d 69 6e 75 74 65 0a 2e 20 20 20 31 34   ┆.   145 start time minute .   14┆
0x002320…002340             36 20 73 74 61 72 74 20 74 69 6d 65 20 73 65 63 6f 6e 64 0a 2e 20 20 20 31 35 20 20 28 76 65 72   ┆6 start time second .   15  (ver┆
0x002340…002360             73 69 6f 6e 29 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 20 64 65 66 69   ┆sion)     0            user defi┆
0x002360…002380             6e 65 64 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 2c 20 73 61 76 65 64 20 69 6e 0a 2e 20 20   ┆ned version number, saved in .  ┆
0x002380…0023a0             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   ┆                                ┆
0x0023a0…0023c0             64 65 73 63 72 69 70 74 6f 72 20 73 65 67 6d 65 6e 74 20 70 61 72 74 20 6f 6e 65 0a 0a 2e 50 41   ┆descriptor segment part one  .PA┆
0x0023c0…0023e0             53 53 30 20 6f 70 74 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 65 73 74 20 66 6f 72 20 70 61 73 73   ┆SS0 options of interest for pass┆
0x0023e0…002400             20 36 0a 2e 20 20 20 35 20 20 76 65 72 73 69 6f 6e 20 6f 66 20 70 61 73 73 35 20 20 20 20 20 20   ┆ 6 .   5  version of pass5      ┆
0x002400…002420 (0, 1, 4)   20 20 20 20 20 20 6d 75 73 74 20 62 65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65 71   ┆      must be greater than or eq┆
0x002420…002440             75 61 6c 20 74 6f 20 64 65 6d 61 6e 64 65 64 5f 70 61 73 73 35 5f 76 65 72 73 69 6f 6e 0a 2e 20   ┆ual to demanded_pass5_version . ┆
0x002440…002460             20 20 38 31 2e 2e 38 35 20 20 73 6f 75 72 63 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 20   ┆  81..85  source date and time  ┆
0x002460…002480             20 79 65 61 72 2c 20 6d 6f 6e 74 68 2c 20 64 61 79 2c 20 68 6f 75 72 2c 20 6d 69 6e 75 74 65 20   ┆ year, month, day, hour, minute ┆
0x002480…0024a0             73 61 76 65 64 20 69 6e 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆saved in .                      ┆
0x0024a0…0024c0             20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63 72 69 70 74 6f 72 20 73 65 67 6d 65 6e 74 20 70   ┆            descriptor segment p┆
0x0024c0…0024e0             61 72 74 20 6f 6e 65 0a 0a 2a 29 0a 0a 76 61 72 0a 73 79 6d 62 20 3a 20 6e 61 6d 65 5f 70 74 72   ┆art one  *)  var symb : name_ptr┆
0x0024e0…002500             3b 0a 63 75 72 72 65 6e 74 5f 63 6f 64 65 20 3a 20 63 6f 64 65 72 61 6e 67 65 3b 0a 70 61 73 73   ┆; current_code : coderange; pass┆
0x002500…002520             2c 20 6f 70 74 2c 20 76 61 6c 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 72 65 70   ┆, opt, val : integer;  begin rep┆
0x002520…002540             65 61 74 0a 72 65 70 65 61 74 20 0a 72 65 61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65 78 70 72 65 73   ┆eat repeat  read_symbolic_expres┆
0x002540…002560             73 69 6f 6e 28 20 73 79 6d 62 2c 20 70 61 73 73 20 29 3b 0a 72 65 61 64 5f 73 79 6d 62 6f 6c 69   ┆sion( symb, pass ); read_symboli┆
0x002560…002580             63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 6f 70 74 20 20 29 3b 0a 72 65 61 64   ┆c_expression( symb, opt  ); read┆
0x002580…0025a0             5f 73 79 6d 62 6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 76 61 6c 20   ┆_symbolic_expression( symb, val ┆
0x0025a0…0025c0             20 29 3b 0a 0a 69 66 20 70 61 73 73 20 3d 20 36 20 74 68 65 6e 0a 62 65 67 69 6e 0a 63 61 73 65   ┆ );  if pass = 6 then begin case┆
0x0025c0…0025e0             20 6f 70 74 20 6f 66 0a 31 3a 0a 62 65 67 69 6e 0a 63 6f 64 65 6c 69 73 74 3a 3d 20 76 61 6c 20   ┆ opt of 1: begin codelist:= val ┆
0x0025e0…002600             3d 20 31 3b 0a 65 72 72 6f 72 72 65 70 6f 72 74 69 6e 67 3a 3d 20 65 72 72 6f 72 72 65 70 6f 72   ┆= 1; errorreporting:= errorrepor┆
0x002600…002620 (0, 1, 5)   74 69 6e 67 20 6f 72 20 28 20 76 61 6c 20 3d 20 31 20 29 3b 0a 65 6e 64 3b 0a 0a 32 3a 20 74 65   ┆ting or ( val = 1 ); end;  2: te┆
0x002620…002640             73 74 3a 3d 20 76 61 6c 20 3d 20 31 3b 0a 0a 33 3a 20 69 66 20 6e 6f 74 20 63 6f 64 65 73 69 7a   ┆st:= val = 1;  3: if not codesiz┆
0x002640…002660             65 5f 6d 65 74 20 61 6e 64 20 28 63 75 72 72 65 6e 74 5f 73 65 67 6d 65 6e 74 3d 31 29 20 61 6e   ┆e_met and (current_segment=1) an┆
0x002660…002680             64 0a 28 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3c 20 6d 69 6e 5f 62 75 66 66 65 72 5f 73   ┆d (current_offset < min_buffer_s┆
0x002680…0026a0             69 7a 65 20 28 2a 20 69 2e 65 2e 20 62 65 66 6f 72 65 20 63 6f 64 65 20 2a 29 29 20 74 68 65 6e   ┆ize (* i.e. before code *)) then┆
0x0026a0…0026c0             0a 62 65 67 69 6e 0a 69 66 20 76 61 6c 20 3c 20 6d 69 6e 5f 62 75 66 66 65 72 5f 73 69 7a 65 20   ┆ begin if val < min_buffer_size ┆
0x0026c0…0026e0             74 68 65 6e 20 76 61 6c 3a 3d 20 6d 69 6e 5f 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 73 65 67 6d   ┆then val:= min_buffer_size; segm┆
0x0026e0…002700             65 6e 74 5f 73 69 7a 65 3a 3d 20 28 28 76 61 6c 20 73 68 72 20 31 29 20 73 68 6c 20 31 29 20 2d   ┆ent_size:= ((val shr 1) shl 1) -┆
0x002700…002720             20 31 3b 0a 63 6f 64 65 73 69 7a 65 5f 6d 65 74 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 0a 34   ┆ 1; codesize_met:= true; end;  4┆
0x002720…002740             3a 20 70 72 69 6e 74 5f 63 6f 64 65 3a 3d 20 76 61 6c 20 3d 20 31 3b 0a 0a 35 3a 20 65 72 72 6f   ┆: print_code:= val = 1;  5: erro┆
0x002740…002760             72 72 65 70 6f 72 74 69 6e 67 3a 3d 20 65 72 72 6f 72 72 65 70 6f 72 74 69 6e 67 20 6f 72 20 28   ┆rreporting:= errorreporting or (┆
0x002760…002780             76 61 6c 20 3d 20 31 29 3b 0a 0a 36 3a 20 70 72 65 73 65 72 76 65 5f 6f 70 74 69 6f 6e 3a 3d 20   ┆val = 1);  6: preserve_option:= ┆
0x002780…0027a0             76 61 6c 3d 31 3b 0a 0a 37 3a 20 64 75 6d 70 5f 6e 61 6d 65 74 61 62 6c 65 3a 3d 20 76 61 6c 20   ┆val=1;  7: dump_nametable:= val ┆
0x0027a0…0027c0             3d 20 31 3b 0a 0a 39 3a 0a 69 66 20 6e 6f 74 20 73 70 61 63 69 6e 67 5f 6d 65 74 20 61 6e 64 20   ┆= 1;  9: if not spacing_met and ┆
0x0027c0…0027e0             28 63 75 72 72 65 6e 74 5f 73 65 67 6d 65 6e 74 20 3d 20 31 29 0a 61 6e 64 20 28 63 75 72 72 65   ┆(current_segment = 1) and (curre┆
0x0027e0…002800             6e 74 5f 6f 66 66 73 65 74 20 3c 20 6d 69 6e 5f 62 75 66 66 65 72 5f 73 69 7a 65 20 28 2a 20 69   ┆nt_offset < min_buffer_size (* i┆
0x002800…002820 (0, 1, 6)   2e 65 2e 20 62 65 66 6f 72 65 20 63 6f 64 65 20 2a 29 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69   ┆.e. before code *)) then begin i┆
0x002820…002840             66 20 76 61 6c 20 3c 20 34 20 74 68 65 6e 0a 76 61 6c 3a 3d 20 34 3b 0a 6c 69 6e 65 5f 73 70 61   ┆f val < 4 then val:= 4; line_spa┆
0x002840…002860             63 69 6e 67 3a 3d 20 76 61 6c 3b 0a 73 70 61 63 69 6e 67 5f 6d 65 74 3a 3d 20 74 72 75 65 3b 0a   ┆cing:= val; spacing_met:= true; ┆
0x002860…002880             65 6e 64 3b 0a 0a 31 30 3a 20 62 65 67 69 6e 0a 73 75 72 76 65 79 5f 69 6e 66 6f 3a 3d 20 76 61   ┆end;  10: begin survey_info:= va┆
0x002880…0028a0             6c 3d 31 3b 0a 0a 67 65 6e 65 72 61 74 65 5f 73 74 61 74 69 73 74 69 63 73 3a 3d 20 76 61 6c 20   ┆l=1;  generate_statistics:= val ┆
0x0028a0…0028c0             3e 20 31 3b 0a 69 66 20 67 65 6e 65 72 61 74 65 5f 73 74 61 74 69 73 74 69 63 73 20 61 6e 64 20   ┆> 1; if generate_statistics and ┆
0x0028c0…0028e0             73 74 61 74 69 73 74 69 63 61 6c 5f 76 65 72 73 69 6f 6e 20 74 68 65 6e 0a 62 65 67 69 6e 0a 73   ┆statistical_version then begin s┆
0x0028e0…002900             75 72 76 65 79 5f 6f 70 74 69 6f 6e 5f 6e 75 6d 62 65 72 3a 3d 20 76 61 6c 3b 0a 69 66 20 28 76   ┆urvey_option_number:= val; if (v┆
0x002900…002920             61 6c 20 3d 20 33 29 20 6f 72 20 28 76 61 6c 20 3d 20 35 29 20 74 68 65 6e 20 62 61 72 72 69 65   ┆al = 3) or (val = 5) then barrie┆
0x002920…002940             72 3a 3d 20 30 20 65 6c 73 65 20 62 61 72 72 69 65 72 3a 3d 20 2d 31 3b 0a 0a 69 66 20 73 75 72   ┆r:= 0 else barrier:= -1;  if sur┆
0x002940…002960             76 65 79 5f 6f 70 74 69 6f 6e 5f 6e 75 6d 62 65 72 20 3e 20 35 20 74 68 65 6e 0a 28 2a 20 6e 6f   ┆vey_option_number > 5 then (* no┆
0x002960…002980             20 6c 6f 6e 67 65 72 20 70 65 72 6d 69 74 74 65 64 20 21 21 21 21 21 21 21 21 20 38 35 20 31 30   ┆ longer permitted !!!!!!!! 85 10┆
0x002980…0029a0             20 32 33 20 20 20 20 6a 61 62 61 20 20 20 20 20 2a 29 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75   ┆ 23    jaba     *) writeln(outpu┆
0x0029a0…0029c0             74 2c 20 27 2a 2a 2a 2a 2a 2a 20 57 41 52 4e 49 4e 47 3a 20 73 74 61 74 69 73 74 69 63 61 6c 20   ┆t, '****** WARNING: statistical ┆
0x0029c0…0029e0             69 6e 66 6f 72 6d 61 74 69 6f 6e 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70 72 6f 64 75 63 65 64   ┆information will not be produced┆
0x0029e0…002a00             20 27 29 3b 0a 0a 0a 65 6e 64 3b 20 28 2a 20 67 65 6e 65 72 61 74 65 20 73 74 61 74 69 73 74 69   ┆ ');   end; (* generate statisti┆
0x002a00…002a20 (0, 1, 7)   63 73 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 31 30 20 2a 29 0a 0a 0a 31 31 3a 20 69 66 20 6e 6f   ┆cs *)  end; (* 10 *)   11: if no┆
0x002a20…002a40             74 20 6c 69 6e 65 69 6e 66 6f 5f 6d 65 74 20 61 6e 64 0a 20 28 63 75 72 72 65 6e 74 5f 73 65 67   ┆t lineinfo_met and  (current_seg┆
0x002a40…002a60             6d 65 6e 74 20 3d 20 31 29 20 61 6e 64 20 28 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3c 20   ┆ment = 1) and (current_offset < ┆
0x002a60…002a80             6d 69 6e 5f 62 75 66 66 65 72 5f 73 69 7a 65 29 0a 61 6e 64 20 28 76 61 6c 20 3c 3e 20 31 29 20   ┆min_buffer_size) and (val <> 1) ┆
0x002a80…002aa0             74 68 65 6e 0a 62 65 67 69 6e 0a 6c 69 6e 65 69 6e 66 6f 5f 6d 65 74 3a 3d 20 74 72 75 65 3b 0a   ┆then begin lineinfo_met:= true; ┆
0x002aa0…002ac0             67 65 6e 65 72 61 74 65 5f 6c 69 6e 65 5f 69 6e 66 6f 3a 3d 20 66 61 6c 73 65 3b 0a 28 2a 20 72   ┆generate_line_info:= false; (* r┆
0x002ac0…002ae0             65 74 75 72 6e 20 74 68 65 20 6c 69 6e 65 20 74 61 62 6c 65 20 68 65 61 64 20 2a 29 0a 63 75 72   ┆eturn the line table head *) cur┆
0x002ae0…002b00             72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d 20 30 3b 0a 73 74 61 72 74 5f 6f 66 5f 6c 69 6e 65 5f 74   ┆rent_offset:= 0; start_of_line_t┆
0x002b00…002b20             61 62 6c 65 3a 3d 20 30 3b 20 28 2a 20 64 6f 20 6e 6f 74 20 72 65 73 65 72 76 65 20 72 6f 6f 6d   ┆able:= 0; (* do not reserve room┆
0x002b20…002b40             20 66 6f 72 20 6c 69 6e 65 20 74 61 62 6c 65 73 20 2a 29 0a 69 6e 74 65 72 6e 61 6c 5f 6c 69 6e   ┆ for line tables *) internal_lin┆
0x002b40…002b60             6b 5f 6c 69 73 74 3a 3d 20 6e 69 6c 5f 6e 61 6d 65 3b 20 28 2a 20 66 6f 72 67 65 74 20 74 68 65   ┆k_list:= nil_name; (* forget the┆
0x002b60…002b80             20 6e 61 6d 65 73 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68 20 6c 69 6e 65 20 69   ┆ names in connection with line i┆
0x002b80…002ba0             6e 66 6f 20 2a 29 0a 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 3a 3d 20 73 65 67 6d 65 6e 74   ┆nfo *) rem_buffer_size:= segment┆
0x002ba0…002bc0             5f 73 69 7a 65 20 2b 20 31 20 2d 20 6c 6f 6e 67 6a 75 6d 70 5f 73 69 7a 65 3b 0a 65 6e 64 3b 0a   ┆_size + 1 - longjump_size; end; ┆
0x002bc0…002be0             0a 31 32 3a 20 69 66 20 28 76 61 6c 20 3d 20 30 29 20 61 6e 64 20 28 63 75 72 72 65 6e 74 5f 73   ┆ 12: if (val = 0) and (current_s┆
0x002be0…002c00             65 67 6d 65 6e 74 20 3d 20 31 29 20 61 6e 64 0a 28 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20   ┆egment = 1) and (current_offset ┆
0x002c00…002c20 (0, 1, 8)   3c 3d 20 6c 65 6e 67 74 68 5f 6f 66 5f 64 65 73 63 72 69 70 74 6f 72 20 2b 20 31 29 20 74 68 65   ┆<= length_of_descriptor + 1) the┆
0x002c20…002c40             6e 0a 70 72 6f 67 72 61 6d 5f 6b 69 6e 64 3a 3d 20 6f 70 65 6e 5f 72 6f 75 74 69 6e 65 3b 0a 0a   ┆n program_kind:= open_routine;  ┆
0x002c40…002c60             31 33 3a 20 73 68 6f 72 74 5f 69 6e 73 74 72 75 63 74 69 6f 6e 73 3a 3d 20 76 61 6c 20 3d 20 31   ┆13: short_instructions:= val = 1┆
0x002c60…002c80             3b 0a 0a 31 35 3a 20 75 73 65 72 73 5f 76 65 72 73 69 6f 6e 3a 3d 20 76 61 6c 3b 0a 0a 65 6c 73   ┆;  15: users_version:= val;  els┆
0x002c80…002ca0             65 0a 62 65 67 69 6e 0a 69 66 20 28 6f 70 74 20 3e 3d 20 38 31 29 20 61 6e 64 20 28 6f 70 74 20   ┆e begin if (opt >= 81) and (opt ┆
0x002ca0…002cc0             3c 3d 20 38 36 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6f 70 74 20 3d 20 38 31 20 74 68   ┆<= 86) then begin if opt = 81 th┆
0x002cc0…002ce0             65 6e 20 61 73 73 69 67 6e 5f 61 6c 66 61 28 63 6f 64 65 66 69 6c 65 6e 61 6d 65 2c 27 20 20 20   ┆en assign_alfa(codefilename,'   ┆
0x002ce0…002d00             20 20 20 20 20 20 20 20 20 27 29 3b 0a 63 6f 64 65 66 69 6c 65 6e 61 6d 65 20 5b 20 32 20 2a 20   ┆         '); codefilename [ 2 * ┆
0x002d00…002d20             28 20 6f 70 74 20 2d 20 38 31 20 29 20 2b 20 31 20 5d 3a 3d 20 63 68 72 20 28 20 76 61 6c 20 73   ┆( opt - 81 ) + 1 ]:= chr ( val s┆
0x002d20…002d40             68 72 20 38 20 29 3b 0a 63 6f 64 65 66 69 6c 65 6e 61 6d 65 20 5b 20 32 20 2a 20 28 20 6f 70 74   ┆hr 8 ); codefilename [ 2 * ( opt┆
0x002d40…002d60             20 2d 20 38 31 20 29 20 2b 20 32 20 5d 3a 3d 20 63 68 72 20 28 20 76 61 6c 20 61 6e 64 20 32 35   ┆ - 81 ) + 2 ]:= chr ( val and 25┆
0x002d60…002d80             35 20 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 28 6f 70 74 3e 3d 31 34 31 29 20 61 6e 64 20   ┆5 ); end else if (opt>=141) and ┆
0x002d80…002da0             28 6f 70 74 3c 3d 31 34 36 29 20 74 68 65 6e 0a 77 69 74 68 20 73 74 61 72 74 5f 63 6c 6f 63 6b   ┆(opt<=146) then with start_clock┆
0x002da0…002dc0             20 64 6f 0a 63 61 73 65 20 6f 70 74 20 6f 66 0a 31 34 31 3a 20 79 65 61 72 20 3a 3d 20 76 61 6c   ┆ do case opt of 141: year := val┆
0x002dc0…002de0             3b 0a 31 34 32 3a 20 6d 6f 6e 74 68 3a 3d 20 76 61 6c 3b 0a 31 34 33 3a 20 64 61 79 20 20 3a 3d   ┆; 142: month:= val; 143: day  :=┆
0x002de0…002e00             20 76 61 6c 3b 0a 31 34 34 3a 20 68 6f 75 72 20 3a 3d 20 76 61 6c 3b 0a 31 34 35 3a 20 6d 69 6e   ┆ val; 144: hour := val; 145: min┆
0x002e00…002e20 (0, 1, 9)   20 20 3a 3d 20 76 61 6c 3b 0a 31 34 36 3a 20 73 65 63 20 20 3a 3d 20 76 61 6c 3b 0a 65 6e 64 3b   ┆  := val; 146: sec  := val; end;┆
0x002e20…002e40             20 28 2a 20 63 61 73 65 20 31 34 31 20 2e 2e 20 31 34 36 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 6f   ┆ (* case 141 .. 146 *) end; (* o┆
0x002e40…002e60             74 68 65 72 77 69 73 65 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 69 66 20 28   ┆therwise *) end; (* case *) if (┆
0x002e60…002e80             6f 70 74 20 3d 20 33 29 20 6f 72 20 28 6f 70 74 20 3d 20 39 29 20 74 68 65 6e 0a 62 65 67 69 6e   ┆opt = 3) or (opt = 9) then begin┆
0x002e80…002ea0             0a 28 2a 20 61 64 6a 75 73 74 20 74 68 65 20 6d 75 74 75 61 6c 20 64 65 70 65 6e 64 65 6e 74 20   ┆ (* adjust the mutual dependent ┆
0x002ea0…002ec0             76 61 72 61 62 6c 65 73 20 2a 29 0a 28 2a 24 52 2d 2a 29 0a 6c 69 6e 65 5f 74 61 62 6c 65 5f 73   ┆varables *) (*$R-*) line_table_s┆
0x002ec0…002ee0             69 7a 65 3a 3d 20 28 73 65 67 6d 65 6e 74 5f 73 69 7a 65 20 2b 20 31 20 2d 20 66 69 78 5f 6c 69   ┆ize:= (segment_size + 1 - fix_li┆
0x002ee0…002f00             6e 65 5f 74 61 62 6c 65 5f 70 61 72 74 29 20 64 69 76 20 28 6c 69 6e 65 5f 73 70 61 63 69 6e 67   ┆ne_table_part) div (line_spacing┆
0x002f00…002f20             20 2b 20 31 29 20 2b 20 66 69 78 5f 6c 69 6e 65 5f 74 61 62 6c 65 5f 70 61 72 74 3b 0a 6c 69 6e   ┆ + 1) + fix_line_table_part; lin┆
0x002f20…002f40             65 5f 74 61 62 6c 65 5f 73 69 7a 65 3a 3d 20 28 6c 69 6e 65 5f 74 61 62 6c 65 5f 73 69 7a 65 20   ┆e_table_size:= (line_table_size ┆
0x002f40…002f60             2b 20 31 29 20 64 69 76 20 32 20 2a 20 32 3b 20 28 2a 20 69 6e 74 65 67 72 61 6c 20 6e 75 6d 62   ┆+ 1) div 2 * 2; (* integral numb┆
0x002f60…002f80             65 72 20 6f 66 20 77 6f 72 64 73 20 2a 29 0a 73 74 61 72 74 5f 6f 66 5f 6c 69 6e 65 5f 74 61 62   ┆er of words *) start_of_line_tab┆
0x002f80…002fa0             6c 65 3a 3d 20 73 65 67 6d 65 6e 74 5f 73 69 7a 65 20 2b 20 31 20 2d 20 6c 69 6e 65 5f 74 61 62   ┆le:= segment_size + 1 - line_tab┆
0x002fa0…002fc0             6c 65 5f 73 69 7a 65 3b 0a 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 3a 3d 20 73 65 67 6d 65   ┆le_size; rem_buffer_size:= segme┆
0x002fc0…002fe0             6e 74 5f 73 69 7a 65 2b 31 2d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 2d 6c 6f 6e 67 6a 75 6d   ┆nt_size+1-current_offset-longjum┆
0x002fe0…003000             70 5f 73 69 7a 65 3b 0a 70 72 65 70 61 72 65 5f 6c 69 6e 65 74 61 62 6c 65 3b 0a 28 2a 24 52 2b   ┆p_size; prepare_linetable; (*$R+┆
0x003000…003020 (0, 1, 10)  2a 29 0a 65 6e 64 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 70 61 73 73 20 3d 20 30 20 74 68 65   ┆*) end; end else if pass = 0 the┆
0x003020…003040             6e 0a 62 65 67 69 6e 0a 69 66 20 6f 70 74 3d 35 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 76   ┆n begin if opt=5 then begin if v┆
0x003040…003060             61 6c 20 3c 20 64 65 6d 61 6e 64 65 64 5f 70 61 73 73 35 5f 76 65 72 73 69 6f 6e 20 74 68 65 6e   ┆al < demanded_pass5_version then┆
0x003060…003080             0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 27 20 63 6f 6d 70 69 6c 65 72 20 69 6e 63 6f 6e 73   ┆ begin writeln(' compiler incons┆
0x003080…0030a0             69 73 74 65 6e 63 79 20 2e 2e 2e 2e 20 27 29 3b 0a 72 74 70 68 61 6c 74 28 20 74 72 75 65 20 28   ┆istency .... '); rtphalt( true (┆
0x0030a0…0030c0             2a 20 74 65 72 6d 69 6e 61 74 65 20 70 72 6f 67 72 61 6d 20 77 69 74 68 20 74 72 61 63 65 20 61   ┆* terminate program with trace a┆
0x0030c0…0030e0             6e 64 20 6f 6b 2e 6e 6f 20 2a 29 29 3b 0a 65 6e 64 3b 20 28 2a 20 74 65 73 74 20 6f 66 20 70 61   ┆nd ok.no *)); end; (* test of pa┆
0x0030e0…003100             73 73 35 20 76 65 72 73 69 6f 6e 20 2a 29 0a 65 6e 64 20 28 2a 20 6f 70 74 3d 35 20 2a 29 0a 65   ┆ss5 version *) end (* opt=5 *) e┆
0x003100…003120             6c 73 65 0a 28 2a 24 52 2d 2a 29 0a 63 61 73 65 20 6f 70 74 20 6f 66 0a 38 31 3a 20 73 6f 75 72   ┆lse (*$R-*) case opt of 81: sour┆
0x003120…003140             63 65 5f 64 61 74 65 3a 3d 20 28 76 61 6c 2d 31 39 30 30 29 20 73 68 6c 20 39 3b 20 28 2a 20 72   ┆ce_date:= (val-1900) shl 9; (* r┆
0x003140…003160             65 73 65 74 20 6f 6c 64 20 76 61 6c 75 65 2c 20 69 66 20 70 72 65 73 65 6e 74 20 2a 29 0a 38 32   ┆eset old value, if present *) 82┆
0x003160…003180             3a 20 73 6f 75 72 63 65 5f 64 61 74 65 3a 3d 20 73 6f 75 72 63 65 5f 64 61 74 65 2b 76 61 6c 20   ┆: source_date:= source_date+val ┆
0x003180…0031a0             73 68 6c 20 35 3b 0a 38 33 3a 20 73 6f 75 72 63 65 5f 64 61 74 65 3a 3d 20 73 6f 75 72 63 65 5f   ┆shl 5; 83: source_date:= source_┆
0x0031a0…0031c0             64 61 74 65 2b 76 61 6c 3b 0a 38 34 3a 20 73 6f 75 72 63 65 5f 74 69 6d 65 3a 3d 20 76 61 6c 20   ┆date+val; 84: source_time:= val ┆
0x0031c0…0031e0             73 68 6c 20 36 3b 20 28 2a 20 72 65 73 65 74 20 6f 6c 64 20 76 61 6c 75 65 20 2a 29 0a 38 35 3a   ┆shl 6; (* reset old value *) 85:┆
0x0031e0…003200             20 73 6f 75 72 63 65 5f 74 69 6d 65 3a 3d 20 73 6f 75 72 63 65 5f 74 69 6d 65 2b 76 61 6c 0a 65   ┆ source_time:= source_time+val e┆
0x003200…003220 (0, 1, 11)  6c 73 65 20 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 28 2a 24 52 2b 2a 29 0a 65 6e   ┆lse ; end; (* case *) (*$R+*) en┆
0x003220…003240             64 3b 20 28 2a 20 70 61 73 73 20 3d 20 30 20 20 2e 2e 2e 20 2a 29 0a 0a 0a 0a 0a 75 6e 74 69 6c   ┆d; (* pass = 0  ... *)     until┆
0x003240…003260             20 6c 69 6e 65 20 5b 20 6c 69 6e 65 69 6e 64 65 78 20 5d 20 3d 20 27 2e 27 3b 0a 0a 74 6f 6b 65   ┆ line [ lineindex ] = '.';  toke┆
0x003260…003280             6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 3b 0a 0a 75 6e 74 69 6c 20 74 6f 6b 65 6e   ┆n:= get_next_token;  until token┆
0x003280…0032a0             20 3c 3e 20 6f 70 74 69 6f 6e 20 3b 0a 0a 65 6e 64 3b 20 28 2a 20 72 65 61 64 20 6f 70 74 69 6f   ┆ <> option ;  end; (* read optio┆
0x0032a0…0032c0             6e 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 61 64 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74   ┆n *)  procedure read_environment┆
0x0032c0…0032e0             3b 0a 28 2a 20 72 65 61 64 20 73 74 61 6e 64 61 72 64 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 66   ┆; (* read standard definitions f┆
0x0032e0…003300             72 6f 6d 20 66 69 6c 65 3a 20 27 72 74 70 33 35 30 32 32 65 6e 35 27 0a 74 68 65 20 6e 61 6d 65   ┆rom file: 'rtp35022en5' the name┆
0x003300…003320             73 20 61 72 65 20 64 65 63 6c 61 72 65 64 20 6f 6e 20 6c 65 76 65 6c 20 3d 20 67 6c 6f 62 61 6c   ┆s are declared on level = global┆
0x003320…003340             5f 6c 65 76 65 6c 20 2a 29 0a 28 2a 20 73 79 6e 74 61 78 3a 0a 0a 2e 20 20 20 61 6e 79 74 68 69   ┆_level *) (* syntax:  .   anythi┆
0x003340…003360             6e 67 20 2d 2d 2d 3e 20 62 2e 20 2d 2d 2d 3e 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 2d 2d 3e   ┆ng ---> b. ---> declarations -->┆
0x003360…003380             20 64 65 66 69 6e 69 74 69 6f 6e 73 20 2d 2d 3e 20 2e 20 2d 2d 3e 0a 0a 2e 20 20 64 65 63 6c 61   ┆ definitions --> . -->  .  decla┆
0x003380…0033a0             72 61 74 69 6f 6e 73 3a 20 20 73 65 65 20 70 72 6f 63 65 64 75 72 65 20 72 65 61 64 5f 64 65 63   ┆rations:  see procedure read_dec┆
0x0033a0…0033c0             6c 61 72 61 74 69 6f 6e 0a 0a 2e 20 20 64 65 66 69 6e 69 74 69 6f 6e 73 3a 0a 2e 20 20 2d 2d 2d   ┆laration  .  definitions: .  ---┆
0x0033c0…0033e0             3e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 3e 2d 2d 2d 2d   ┆>-------------------------->----┆
0x0033e0…003400             3e 0a 2e 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆> .     !                       ┆
0x003400…003420 (0, 1, 12)  20 20 20 20 21 0a 2e 20 20 20 20 20 21 3c 2d 2d 2d 20 63 6f 6e 73 74 61 6e 74 20 64 65 66 69 6e   ┆    ! .     !<--- constant defin┆
0x003420…003440             69 74 69 6f 6e 20 3c 2d 21 0a 2e 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ition <-! .     !               ┆
0x003440…003460             20 20 20 20 20 20 20 20 20 20 20 20 21 0a 2e 20 20 20 20 20 21 3c 2d 2d 2d 20 6f 70 74 69 6f 6e   ┆            ! .     !<--- option┆
0x003460…003480             20 3c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 21 0a 2e 20 20 20 20 20 21 20 20 20 20 20 20 20   ┆ <--------------! .     !       ┆
0x003480…0034a0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 0a 2e 20 20 20 20 20 21 3c 2d 2d   ┆                    ! .     !<--┆
0x0034a0…0034c0             2d 20 63 6f 6d 6d 65 6e 74 20 3c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 21 0a 0a 2e 20 20 63 6f   ┆- comment <-------------!  .  co┆
0x0034c0…0034e0             6e 73 74 61 6e 74 20 64 65 66 69 6e 69 74 69 6f 6e 3a 0a 2e 20 20 2d 2d 3e 20 69 64 65 6e 74 69   ┆nstant definition: .  --> identi┆
0x0034e0…003500             66 69 65 72 20 2d 2d 3e 20 3d 20 2d 2d 3e 20 73 79 6d 62 6f 6c 69 63 20 65 78 70 72 65 73 73 69   ┆fier --> = --> symbolic expressi┆
0x003500…003520             6f 6e 20 2d 2d 3e 0a 0a 2e 20 20 73 79 6d 62 6f 6c 69 63 20 65 78 70 72 65 73 73 69 6f 6e 3a 20   ┆on -->  .  symbolic expression: ┆
0x003520…003540             73 65 65 20 70 72 6f 63 65 64 75 72 65 20 72 65 61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65 78 70 72   ┆see procedure read_symbolic_expr┆
0x003540…003560             65 73 73 69 6f 6e 0a 0a 2a 29 0a 76 61 72 0a 63 68 61 69 6e 20 3a 20 6e 61 6d 65 5f 70 74 72 3b   ┆ession  *) var chain : name_ptr;┆
0x003560…003580             0a 0a 0a 62 65 67 69 6e 0a 61 73 73 69 67 6e 28 69 6e 70 75 74 2c 63 6f 6e 63 61 74 28 72 74 70   ┆   begin assign(input,concat(rtp┆
0x003580…0035a0             33 35 5f 70 61 74 68 6e 61 6d 65 2c 20 69 5f 70 61 73 73 36 5f 65 6e 76 6e 61 6d 65 29 29 3b 0a   ┆35_pathname, i_pass6_envname)); ┆
0x0035a0…0035c0             73 65 74 74 65 78 74 62 75 66 28 69 6e 70 75 74 2c 20 69 6e 5f 62 75 66 5f 70 74 72 5e 29 3b 0a   ┆settextbuf(input, in_buf_ptr^); ┆
0x0035c0…0035e0             28 2a 24 49 2d 2a 29 0a 72 65 73 65 74 28 69 6e 70 75 74 29 3b 0a 69 66 20 69 6f 72 65 73 75 6c   ┆(*$I-*) reset(input); if ioresul┆
0x0035e0…003600             74 20 3c 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 6f 66 69 6c 65 28 63 6f 6e 63 61 74 28   ┆t <> 0 then begin nofile(concat(┆
0x003600…003620 (0, 1, 13)  72 74 70 33 35 5f 70 61 74 68 6e 61 6d 65 2c 20 69 5f 70 61 73 73 36 5f 65 6e 76 6e 61 6d 65 29   ┆rtp35_pathname, i_pass6_envname)┆
0x003620…003640             29 3b 0a 65 6e 64 3b 0a 28 2a 24 49 2b 2a 29 0a 0a 77 68 69 6c 65 20 67 65 74 5f 6e 65 78 74 5f   ┆); end; (*$I+*)  while get_next_┆
0x003640…003660             74 6f 6b 65 6e 20 3c 3e 20 62 6c 6f 63 6b 62 65 67 69 6e 20 64 6f 0a 28 2a 20 73 6b 69 70 20 2c   ┆token <> blockbegin do (* skip ,┆
0x003660…003680             20 6e 6f 20 63 68 65 63 6b 20 66 6f 72 20 65 6f 66 20 21 21 21 21 21 20 2a 29 3b 0a 0a 72 65 61   ┆ no check for eof !!!!! *);  rea┆
0x003680…0036a0             64 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 20 28 2a 20 69 6e 63 6c 75 64 65 73 3a 20 74 6f 6b 65   ┆d_declaration; (* includes: toke┆
0x0036a0…0036c0             6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 20 2a 29 0a 0a 77 68 69 6c 65 20 74 6f 6b   ┆n:= get_next_token *)  while tok┆
0x0036c0…0036e0             65 6e 20 3c 3e 20 6f 74 68 65 72 20 64 6f 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 63   ┆en <> other do  case token of  c┆
0x0036e0…003700             6f 6e 73 74 64 65 66 3a 20 75 70 64 61 74 65 5f 73 79 6d 62 6f 6c 3b 0a 0a 6f 70 74 69 6f 6e 3a   ┆onstdef: update_symbol;  option:┆
0x003700…003720             20 72 65 61 64 5f 6f 70 74 69 6f 6e 73 3b 0a 0a 63 6f 6d 6d 65 6e 74 3a 20 74 6f 6b 65 6e 3a 3d   ┆ read_options;  comment: token:=┆
0x003720…003740             20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 3b 20 28 2a 20 73 6b 69 70 20 2a 29 0a 0a 0a 65 6c   ┆ get_next_token; (* skip *)   el┆
0x003740…003760             73 65 0a 0a 62 65 67 69 6e 0a 6d 61 72 6b 65 72 72 6f 72 28 20 31 35 20 29 3b 20 28 2a 20 65 72   ┆se  begin markerror( 15 ); (* er┆
0x003760…003780             72 6f 72 20 69 6e 20 6c 61 6d 62 64 61 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 2a 29 0a 74 6f 6b   ┆ror in lambda environment *) tok┆
0x003780…0037a0             65 6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28   ┆en:= get_next_token; end; end; (┆
0x0037a0…0037c0             2a 20 63 61 73 65 20 2a 29 0a 0a 63 68 61 69 6e 3a 3d 20 63 75 72 72 65 6e 74 5f 6c 65 76 65 6c   ┆* case *)  chain:= current_level┆
0x0037c0…0037e0             20 5e 2e 6c 65 76 65 6c 5f 6c 69 73 74 3b 0a 28 2a 20 63 68 65 63 6b 20 74 68 61 74 20 61 6c 6c   ┆ ^.level_list; (* check that all┆
0x0037e0…003800             20 6e 61 6d 65 73 20 66 72 6f 6d 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 61 72 65 20 64 65 66 69   ┆ names from environment are defi┆
0x003800…003820 (0, 1, 14)  6e 65 64 20 2a 29 0a 77 68 69 6c 65 20 63 68 61 69 6e 20 3c 3e 20 6e 69 6c 5f 6e 61 6d 65 20 64   ┆ned *) while chain <> nil_name d┆
0x003820…003840             6f 0a 77 69 74 68 20 63 68 61 69 6e 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 6b 69 6e 64 20   ┆o with chain ^ do begin if kind ┆
0x003840…003860             3d 20 75 6e 64 65 66 69 6e 65 64 20 74 68 65 6e 0a 6d 61 72 6b 65 72 72 6f 72 31 28 20 31 31 2c   ┆= undefined then markerror1( 11,┆
0x003860…003880             20 6e 61 6d 65 70 61 72 74 20 29 3b 20 28 2a 20 75 6e 64 65 66 69 6e 65 64 20 63 6f 6e 73 74 61   ┆ namepart ); (* undefined consta┆
0x003880…0038a0             6e 74 20 2a 29 0a 63 68 61 69 6e 3a 3d 20 6e 65 78 74 5f 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 0a   ┆nt *) chain:= next_name; end;   ┆
0x0038a0…0038c0             63 6c 6f 73 65 28 20 69 6e 70 75 74 20 29 3b 0a 6c 69 6e 65 69 6e 64 65 78 20 3a 3d 20 6c 69 6e   ┆close( input ); lineindex := lin┆
0x0038c0…0038e0             65 6c 65 6e 67 74 68 3b 0a 0a 65 6e 64 3b 20 28 2a 20 72 65 61 64 20 65 6e 76 69 72 6f 6e 6d 65   ┆elength;  end; (* read environme┆
0x0038e0…003900             6e 74 20 2a 29 0a 0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 68 61 6e 64 6c 65 5f 64 65 73   ┆nt *)       procedure handle_des┆
0x003900…003920             63 72 69 70 74 6f 72 5f 62 6c 6f 63 6b 3b 0a 0a 28 2a 20 70 72 6f 63 65 73 73 20 74 68 65 20 64   ┆criptor_block;  (* process the d┆
0x003920…003940             65 73 63 72 69 70 74 6f 72 62 6c 6f 63 6b 73 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65   ┆escriptorblocks according to the┆
0x003940…003960             20 69 6e 70 75 74 0a 64 65 73 63 72 69 70 74 69 6f 6e 73 20 61 6e 64 20 74 68 65 20 69 6e 74 65   ┆ input descriptions and the inte┆
0x003960…003980             72 6e 61 6c 20 6c 69 6e 6b 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 67 61 74 68 65 72 65 64 20 64   ┆rnal link information gathered d┆
0x003980…0039a0             75 72 69 6e 67 20 74 68 65 0a 63 6f 64 65 20 70 72 6f 63 65 73 73 69 6e 67 20 2a 29 0a 0a 76 61   ┆uring the code processing *)  va┆
0x0039a0…0039c0             72 0a 66 6f 72 6d 65 72 2c 20 6c 69 6e 6b 2c 20 6c 69 6e 6b 31 2c 20 73 79 6d 62 2c 20 6e 6f 5f   ┆r former, link, link1, symb, no_┆
0x0039c0…0039e0             6f 66 5f 69 6e 74 5f 6c 69 6e 6b 73 20 3a 20 6e 61 6d 65 5f 70 74 72 3b 0a 6e 6f 6f 66 69 6e 74   ┆of_int_links : name_ptr; noofint┆
0x0039e0…003a00             65 72 6e 61 6c 6c 69 6e 6b 73 2c 0a 6e 6f 6f 66 70 61 72 61 6d 73 2c 20 64 65 73 63 72 65 6c 65   ┆ernallinks, noofparams, descrele┆
0x003a00…003a20 (0, 1, 15)  6d 2c 20 73 74 65 70 2c 20 73 74 65 70 31 2c 20 6e 6f 6f 66 6c 69 6e 6b 73 2c 20 64 65 73 63 72   ┆m, step, step1, nooflinks, descr┆
0x003a20…003a40             70 74 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 63 68 61 69 6e 20 3a 20 75 6e 73 61 74 72 65 66 5f   ┆ptr : integer; chain : unsatref_┆
0x003a40…003a60             70 74 72 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 28 2a 6c 6f 63 61 6c 2a 29 6f 75 74 77 6f 72   ┆ptr;   procedure (*local*)outwor┆
0x003a60…003a80             64 28 20 77 6f 72 64 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 0a 62 65 67 69 6e 0a 69 66 20   ┆d( word : integer );   begin if ┆
0x003a80…003aa0             72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 20 3c 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65   ┆rem_buffer_size < 2 then begin e┆
0x003aa0…003ac0             6d 69 74 63 6f 64 65 28 66 61 6c 73 65 29 3b 20 28 2a 20 65 6d 70 74 79 20 74 68 65 20 62 75 66   ┆mitcode(false); (* empty the buf┆
0x003ac0…003ae0             66 65 72 20 77 69 74 68 6f 75 74 20 65 78 69 74 2d 6a 75 6d 70 20 2a 29 0a 28 2a 20 64 6f 20 6e   ┆fer without exit-jump *) (* do n┆
0x003ae0…003b00             6f 74 20 72 65 73 65 72 76 65 20 72 6f 6f 6d 20 66 6f 72 20 61 6e 20 65 78 69 74 20 6a 75 6d 70   ┆ot reserve room for an exit jump┆
0x003b00…003b20             20 2a 29 0a 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 3a 3d 20 72 65 6d 5f 62 75 66 66 65 72   ┆ *) rem_buffer_size:= rem_buffer┆
0x003b20…003b40             5f 73 69 7a 65 20 2b 20 6c 6f 6e 67 6a 75 6d 70 5f 73 69 7a 65 3b 0a 28 2a 20 64 6f 20 6e 6f 74   ┆_size + longjump_size; (* do not┆
0x003b40…003b60             20 70 72 6f 64 75 63 65 20 6d 6f 72 65 20 6c 69 6e 65 20 74 61 62 6c 65 73 20 2a 29 0a 73 74 61   ┆ produce more line tables *) sta┆
0x003b60…003b80             72 74 5f 6f 66 5f 6c 69 6e 65 5f 74 61 62 6c 65 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 72 65 6d 5f   ┆rt_of_line_table:= 0; end;  rem_┆
0x003b80…003ba0             62 75 66 66 65 72 5f 73 69 7a 65 3a 3d 20 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 20 2d 20   ┆buffer_size:= rem_buffer_size - ┆
0x003ba0…003bc0             32 3b 0a 63 6f 64 65 5f 62 75 66 66 65 72 20 5b 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20   ┆2; code_buffer [ current_offset ┆
0x003bc0…003be0             5d 3a 3d 20 77 6f 72 64 20 73 68 72 20 38 3b 0a 63 6f 64 65 5f 62 75 66 66 65 72 20 5b 20 63 75   ┆]:= word shr 8; code_buffer [ cu┆
0x003be0…003c00             72 72 65 6e 74 5f 6f 66 66 73 65 74 20 2b 20 31 20 5d 3a 3d 20 77 6f 72 64 20 61 6e 64 20 32 35   ┆rrent_offset + 1 ]:= word and 25┆
0x003c00…003c20 (1, 0, 1)   35 3b 0a 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66   ┆5;  current_offset:= current_off┆
0x003c20…003c40             73 65 74 20 2b 20 32 3b 0a 0a 65 6e 64 3b 20 28 2a 20 6c 6f 63 61 6c 20 6f 75 74 20 77 6f 72 64   ┆set + 2;  end; (* local out word┆
0x003c40…003c60             20 2a 29 0a 0a 0a 62 65 67 69 6e 0a 69 66 20 74 65 73 74 20 74 68 65 6e 20 6f 75 74 74 65 73 74   ┆ *)   begin if test then outtest┆
0x003c60…003c80             28 27 68 61 6e 64 6c 65 5f 64 65 73 63 72 69 70 74 6f 72 5f 62 6c 6f 63 6b 73 27 29 3b 0a 0a 28   ┆('handle_descriptor_blocks');  (┆
0x003c80…003ca0             2a 20 66 69 6c 6c 20 69 6e 20 64 65 73 63 72 31 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 20 20 20   ┆* fill in descr1 as follows:    ┆
0x003ca0…003cc0             65 6e 74 72 79 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e 74 73 0a 0a 20 20 20 20 30 20 20   ┆entry          contents      0  ┆
0x003cc0…003ce0             20 20 20 20 6c 65 6e 67 74 68 20 6f 66 20 64 65 73 63 72 69 70 74 6f 72 20 70 61 72 74 20 31 0a   ┆    length of descriptor part 1 ┆
0x003ce0…003d00             20 20 20 20 31 20 20 20 20 20 20 6e 6f 20 6f 66 20 70 72 6f 67 72 61 6d 20 70 61 67 65 73 0a 20   ┆    1      no of program pages  ┆
0x003d00…003d20             20 20 20 32 20 20 20 20 20 20 73 69 7a 65 20 6f 66 20 61 20 70 72 6f 67 72 61 6d 20 70 61 67 65   ┆   2      size of a program page┆
0x003d20…003d40             0a 33 20 20 20 20 20 20 6e 6f 20 6f 66 20 62 79 74 65 73 20 6f 6e 20 6c 61 73 74 20 70 61 67 65   ┆ 3      no of bytes on last page┆
0x003d40…003d60             0a 34 20 20 20 20 20 20 6b 69 6e 64 20 6f 66 20 6f 62 6a 65 63 74 20 70 72 6f 67 72 61 6d 0a 35   ┆ 4      kind of object program 5┆
0x003d60…003d80             2d 31 30 20 20 20 6e 61 6d 65 20 6f 66 20 6f 62 6a 65 63 74 20 70 72 6f 67 72 61 6d 0a 31 31 2d   ┆-10   name of object program 11-┆
0x003d80…003da0             31 32 20 20 65 6e 74 72 79 20 70 6f 69 6e 74 0a 31 33 2d 31 34 20 20 65 78 63 65 70 74 69 6f 6e   ┆12  entry point 13-14  exception┆
0x003da0…003dc0             20 70 6f 69 6e 74 0a 31 35 20 20 20 20 20 64 65 66 61 75 6c 74 20 63 72 65 61 74 65 20 73 69 7a   ┆ point 15     default create siz┆
0x003dc0…003de0             65 0a 31 36 20 20 20 20 20 67 6c 6f 62 61 6c 20 66 72 61 6d 65 20 6f 66 66 73 65 74 20 6f 66 20   ┆e 16     global frame offset of ┆
0x003de0…003e00             66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 6f 72 20 72 6f 75 74 69 6e 65 20 61 70 70 65 74   ┆first parameter or routine appet┆
0x003e00…003e20 (1, 0, 2)   69 74 65 0a 31 37 20 20 20 20 20 73 6f 75 72 63 65 20 64 61 74 65 20 28 70 61 63 6b 65 64 20 61   ┆ite 17     source date (packed a┆
0x003e20…003e40             73 20 63 6f 64 65 64 20 64 61 74 65 29 0a 31 38 20 20 20 20 20 73 6f 75 72 63 65 20 74 69 6d 65   ┆s coded date) 18     source time┆
0x003e40…003e60             20 28 70 61 63 6b 65 64 20 61 73 20 63 6f 64 65 64 20 74 69 6d 65 29 0a 31 39 20 20 20 20 20 75   ┆ (packed as coded time) 19     u┆
0x003e60…003e80             73 65 72 20 64 65 66 69 6e 65 64 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 2c 20 64 65 66 61   ┆ser defined version number, defa┆
0x003e80…003ea0             75 6c 74 3d 30 0a 32 30 20 20 20 20 20 66 72 65 65 20 77 6f 72 64 20 66 6f 72 20 66 75 74 75 72   ┆ult=0 20     free word for futur┆
0x003ea0…003ec0             65 20 75 73 65 0a 32 31 20 20 20 20 20 6e 6f 20 6f 66 20 70 61 72 61 6d 65 74 65 72 73 0a 32 32   ┆e use 21     no of parameters 22┆
0x003ec0…003ee0             2d 32 33 20 20 74 79 70 65 2c 20 73 69 7a 65 20 6f 66 20 66 69 72 73 74 20 70 61 72 61 6d 0a 32   ┆-23  type, size of first param 2┆
0x003ee0…003f00             34 2d 32 35 20 20 74 79 70 65 2c 20 73 69 7a 65 20 6f 66 20 73 65 63 6f 6e 64 20 70 61 72 61 6d   ┆4-25  type, size of second param┆
0x003f00…003f20             0a 2e 2e 2e 2e 0a 2e 2e 2e 2e 0a 2e 2e 2e 2e 0a 2a 29 0a 0a 0a 64 65 73 63 72 31 20 5b 20 31 20   ┆ .... .... .... *)   descr1 [ 1 ┆
0x003f20…003f40             5d 3a 3d 20 63 75 72 72 65 6e 74 5f 73 65 67 6d 65 6e 74 3b 20 28 2a 20 6e 75 6d 62 65 72 20 6f   ┆]:= current_segment; (* number o┆
0x003f40…003f60             66 20 63 6f 64 65 62 6c 6f 63 6b 73 20 2a 29 0a 64 65 73 63 72 31 20 5b 20 32 20 5d 3a 3d 20 73   ┆f codeblocks *) descr1 [ 2 ]:= s┆
0x003f60…003f80             65 67 6d 65 6e 74 5f 73 69 7a 65 20 2b 20 31 3b 0a 64 65 73 63 72 31 20 5b 20 33 20 5d 3a 3d 20   ┆egment_size + 1; descr1 [ 3 ]:= ┆
0x003f80…003fa0             63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3b 0a 77 68 69 6c 65 20 67 65 74 5f 6e 65 78 74 5f 74   ┆current_offset; while get_next_t┆
0x003fa0…003fc0             6f 6b 65 6e 20 3c 3e 20 73 79 6d 62 6f 6c 20 64 6f 20 28 2a 20 73 6b 69 70 20 75 6e 74 69 6c 20   ┆oken <> symbol do (* skip until ┆
0x003fc0…003fe0             70 72 6f 67 72 61 6d 20 6e 61 6d 65 20 2a 29 20 3b 0a 0a 0a 66 6f 72 20 73 74 65 70 3a 3d 20 6c   ┆program name *) ;   for step:= l┆
0x003fe0…004000             61 73 74 63 68 61 72 20 2b 20 31 20 74 6f 20 61 6c 66 61 6c 65 6e 67 74 68 20 64 6f 0a 63 68 62   ┆astchar + 1 to alfalength do chb┆
0x004000…004020 (1, 0, 3)   75 66 20 5b 20 73 74 65 70 20 5d 3a 3d 20 27 20 27 3b 0a 64 65 73 63 72 70 74 72 3a 3d 20 34 3b   ┆uf [ step ]:= ' '; descrptr:= 4;┆
0x004020…004040             0a 66 6f 72 20 73 74 65 70 3a 3d 20 31 20 74 6f 20 61 6c 66 61 6c 65 6e 67 74 68 20 64 6f 0a 62   ┆ for step:= 1 to alfalength do b┆
0x004040…004060             65 67 69 6e 0a 69 66 20 6f 64 64 28 73 74 65 70 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20   ┆egin if odd(step) then begin (* ┆
0x004060…004080             6e 65 78 74 20 77 6f 72 64 20 2a 29 0a 64 65 73 63 72 70 74 72 3a 3d 20 64 65 73 63 72 70 74 72   ┆next word *) descrptr:= descrptr┆
0x004080…0040a0             20 2b 20 31 3b 0a 64 65 73 63 72 31 20 5b 20 64 65 73 63 72 70 74 72 20 5d 3a 3d 20 30 3b 0a 65   ┆ + 1; descr1 [ descrptr ]:= 0; e┆
0x0040a0…0040c0             6e 64 3b 0a 64 65 73 63 72 31 20 5b 20 64 65 73 63 72 70 74 72 20 5d 3a 3d 20 64 65 73 63 72 31   ┆nd; descr1 [ descrptr ]:= descr1┆
0x0040c0…0040e0             20 5b 20 64 65 73 63 72 70 74 72 20 5d 20 2a 20 32 35 36 20 2b 20 6f 72 64 28 20 63 68 62 75 66   ┆ [ descrptr ] * 256 + ord( chbuf┆
0x0040e0…004100             20 5b 20 73 74 65 70 20 5d 20 29 3b 0a 28 2a 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20 6e 61 6d   ┆ [ step ] ); (* remember the nam┆
0x004100…004120             65 20 66 6f 72 20 73 75 72 76 65 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 2a 29 0a 70 72 6f 63   ┆e for survey information *) proc┆
0x004120…004140             6e 61 6d 65 20 5b 20 73 74 65 70 20 5d 3a 3d 20 63 68 62 75 66 20 5b 20 73 74 65 70 20 5d 3b 0a   ┆name [ step ]:= chbuf [ step ]; ┆
0x004140…004160             0a 65 6e 64 3b 20 28 2a 20 70 72 6f 67 72 61 6d 20 6e 61 6d 65 20 2a 29 0a 0a 28 2a 20 6b 69 6e   ┆ end; (* program name *)  (* kin┆
0x004160…004180             64 20 6f 66 20 6f 62 6a 65 63 74 20 70 72 6f 67 72 61 6d 20 2a 29 0a 72 65 61 64 5f 73 79 6d 62   ┆d of object program *) read_symb┆
0x004180…0041a0             6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 64 65 73 63 72 65 6c 65 6d   ┆olic_expression( symb, descrelem┆
0x0041a0…0041c0             20 29 3b 0a 64 65 73 63 72 31 20 5b 20 34 20 5d 3a 3d 20 64 65 73 63 72 65 6c 65 6d 3b 0a 0a 28   ┆ ); descr1 [ 4 ]:= descrelem;  (┆
0x0041c0…0041e0             2a 20 65 6e 74 72 79 20 70 6f 69 6e 74 2c 20 65 78 63 65 70 74 69 6f 6e 20 70 6f 69 6e 74 2c 20   ┆* entry point, exception point, ┆
0x0041e0…004200             2a 29 0a 64 65 73 63 72 70 74 72 3a 3d 20 31 30 3b 0a 66 6f 72 20 73 74 65 70 3a 3d 20 31 20 74   ┆*) descrptr:= 10; for step:= 1 t┆
0x004200…004220 (1, 0, 4)   6f 20 32 20 64 6f 0a 62 65 67 69 6e 0a 72 65 61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65 78 70 72 65   ┆o 2 do begin read_symbolic_expre┆
0x004220…004240             73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 64 65 73 63 72 65 6c 65 6d 20 29 3b 0a 77 69 74 68 20 73   ┆ssion( symb, descrelem ); with s┆
0x004240…004260             79 6d 62 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 64 65 73 63 72 70 74 72 3a 3d 20 64 65 73 63 72 70   ┆ymb ^ do begin descrptr:= descrp┆
0x004260…004280             74 72 20 2b 20 31 3b 0a 64 65 73 63 72 31 20 5b 20 64 65 73 63 72 70 74 72 20 5d 3a 3d 20 64 65   ┆tr + 1; descr1 [ descrptr ]:= de┆
0x004280…0042a0             66 5f 73 65 67 6d 65 6e 74 3b 0a 64 65 73 63 72 70 74 72 3a 3d 20 64 65 73 63 72 70 74 72 20 2b   ┆f_segment; descrptr:= descrptr +┆
0x0042a0…0042c0             20 31 3b 0a 64 65 73 63 72 31 20 5b 20 64 65 73 63 72 70 74 72 20 5d 3a 3d 20 64 65 66 5f 6f 66   ┆ 1; descr1 [ descrptr ]:= def_of┆
0x0042c0…0042e0             66 73 65 74 20 2b 20 64 65 73 63 72 65 6c 65 6d 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2e   ┆fset + descrelem; end; (* with .┆
0x0042e0…004300             2e 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 66 6f 72 20 2e 2e 2e 20 2a 29 0a 0a 28 2a 20 64 65 66   ┆. *)  end; (* for ... *)  (* def┆
0x004300…004320             61 75 6c 74 20 61 70 70 65 74 69 74 65 20 2a 29 0a 72 65 61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65   ┆ault appetite *) read_symbolic_e┆
0x004320…004340             78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 64 65 73 63 72 31 20 5b 20 31 35 20 5d 20 29   ┆xpression( symb, descr1 [ 15 ] )┆
0x004340…004360             3b 0a 0a 28 2a 20 6c 61 73 74 20 70 61 72 61 6d 20 6f 66 66 73 65 74 20 2a 29 0a 72 65 61 64 5f   ┆;  (* last param offset *) read_┆
0x004360…004380             73 79 6d 62 6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 64 65 73 63 72   ┆symbolic_expression( symb, descr┆
0x004380…0043a0             31 20 5b 20 31 36 20 5d 20 29 3b 0a 28 2a 20 73 6f 75 72 63 65 20 64 61 74 65 20 61 6e 64 20 74   ┆1 [ 16 ] ); (* source date and t┆
0x0043a0…0043c0             69 6d 65 20 61 6e 64 20 76 65 72 73 69 6f 6e 20 6e 6f 74 20 69 6e 69 74 69 61 6c 69 7a 65 64 20   ┆ime and version not initialized ┆
0x0043c0…0043e0             62 79 20 70 61 73 73 20 35 20 2a 29 0a 66 6f 72 20 73 74 65 70 3a 3d 20 31 20 74 6f 20 34 20 64   ┆by pass 5 *) for step:= 1 to 4 d┆
0x0043e0…004400             6f 20 72 65 61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 73 79 6d 62 2c   ┆o read_symbolic_expression(symb,┆
0x004400…004420 (1, 0, 5)   64 65 73 63 72 31 5b 31 36 20 2b 20 73 74 65 70 5d 29 3b 0a 64 65 73 63 72 31 5b 20 31 37 20 5d   ┆descr1[16 + step]); descr1[ 17 ]┆
0x004420…004440             3a 3d 20 73 6f 75 72 63 65 5f 64 61 74 65 3b 0a 64 65 73 63 72 31 5b 20 31 38 20 5d 3a 3d 20 73   ┆:= source_date; descr1[ 18 ]:= s┆
0x004440…004460             6f 75 72 63 65 5f 74 69 6d 65 3b 0a 64 65 73 63 72 31 5b 20 31 39 20 5d 3a 3d 20 75 73 65 72 73   ┆ource_time; descr1[ 19 ]:= users┆
0x004460…004480             5f 76 65 72 73 69 6f 6e 3b 0a 64 65 73 63 72 31 5b 20 32 30 20 5d 3a 3d 20 63 6f 6d 70 69 6c 65   ┆_version; descr1[ 20 ]:= compile┆
0x004480…0044a0             72 5f 76 65 72 73 69 6f 6e 3b 0a 28 2a 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29 0a   ┆r_version; (* parameter list *) ┆
0x0044a0…0044c0             0a 72 65 61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c   ┆ read_symbolic_expression( symb,┆
0x0044c0…0044e0             20 6e 6f 6f 66 70 61 72 61 6d 73 20 29 3b 0a 64 65 73 63 72 70 74 72 3a 3d 20 32 31 3b 0a 69 66   ┆ noofparams ); descrptr:= 21; if┆
0x0044e0…004500             20 64 65 73 63 72 70 74 72 20 2b 20 6e 6f 6f 66 70 61 72 61 6d 73 20 2a 20 32 20 3e 20 64 65 73   ┆ descrptr + noofparams * 2 > des┆
0x004500…004520             63 72 31 5f 73 69 7a 65 20 74 68 65 6e 0a 73 74 6f 70 28 27 64 65 73 63 72 31 5f 73 69 7a 65 27   ┆cr1_size then stop('descr1_size'┆
0x004520…004540             2c 20 27 68 61 6e 64 6c 65 20 64 65 73 63 72 69 70 74 6f 72 27 29 3b 0a 64 65 73 63 72 31 20 5b   ┆, 'handle descriptor'); descr1 [┆
0x004540…004560             20 64 65 73 63 72 70 74 72 20 5d 3a 3d 20 6e 6f 6f 66 70 61 72 61 6d 73 3b 0a 0a 66 6f 72 20 73   ┆ descrptr ]:= noofparams;  for s┆
0x004560…004580             74 65 70 3a 3d 20 31 20 74 6f 20 6e 6f 6f 66 70 61 72 61 6d 73 20 2a 20 32 20 64 6f 0a 28 2a 20   ┆tep:= 1 to noofparams * 2 do (* ┆
0x004580…0045a0             65 61 63 68 20 70 61 72 61 6d 65 74 65 72 20 63 6f 6e 73 69 73 74 20 6f 66 20 74 79 70 65 20 61   ┆each parameter consist of type a┆
0x0045a0…0045c0             6e 64 20 73 69 7a 65 20 2a 29 0a 62 65 67 69 6e 0a 72 65 61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65   ┆nd size *) begin read_symbolic_e┆
0x0045c0…0045e0             78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 64 65 73 63 72 65 6c 65 6d 20 29 3b 0a 64 65   ┆xpression( symb, descrelem ); de┆
0x0045e0…004600             73 63 72 70 74 72 3a 3d 20 64 65 73 63 72 70 74 72 20 2b 20 31 3b 0a 64 65 73 63 72 31 20 5b 20   ┆scrptr:= descrptr + 1; descr1 [ ┆
0x004600…004620 (1, 0, 6)   64 65 73 63 72 70 74 72 20 5d 3a 3d 20 64 65 73 63 72 65 6c 65 6d 3b 0a 65 6e 64 3b 20 28 2a 20   ┆descrptr ]:= descrelem; end; (* ┆
0x004620…004640             66 6f 72 20 2e 2e 2e 20 2a 29 0a 0a 64 65 73 63 72 31 20 5b 20 30 20 5d 3a 3d 20 28 64 65 73 63   ┆for ... *)  descr1 [ 0 ]:= (desc┆
0x004640…004660             72 70 74 72 20 2b 20 31 29 20 2a 20 32 3b 20 28 2a 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20 6c   ┆rptr + 1) * 2; (* remember the l┆
0x004660…004680             65 6e 67 74 68 20 6f 66 20 70 61 72 74 31 20 2a 29 0a 0a 28 2a 20 65 6e 64 20 6f 66 20 70 61 72   ┆ength of part1 *)  (* end of par┆
0x004680…0046a0             74 20 31 20 2a 29 0a 0a 0a 28 2a 20 6e 6f 77 20 74 68 65 20 65 78 74 65 72 6e 61 6c 20 6c 69 6e   ┆t 1 *)   (* now the external lin┆
0x0046a0…0046c0             6b 69 6e 67 20 74 61 62 6c 65 20 6d 75 73 74 20 62 65 20 70 72 6f 64 75 63 65 64 20 61 6e 64 20   ┆king table must be produced and ┆
0x0046c0…0046e0             70 75 74 20 69 6e 74 6f 0a 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 62 6c 6f 63 6b 0a 6e 6f 74   ┆put into the descriptorblock not┆
0x0046e0…004700             65 3a 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 20 62 6c 6f 63 6b 20 73 74 61 72 74 73 20 61   ┆e: the descriptor block starts a┆
0x004700…004720             74 20 61 20 77 6f 72 64 20 62 6f 75 6e 64 61 72 79 20 2a 29 0a 69 66 20 6f 64 64 28 63 75 72 72   ┆t a word boundary *) if odd(curr┆
0x004720…004740             65 6e 74 5f 6f 66 66 73 65 74 29 20 74 68 65 6e 20 6f 75 74 62 79 74 65 28 30 29 3b 0a 72 65 6d   ┆ent_offset) then outbyte(0); rem┆
0x004740…004760             5f 62 75 66 66 65 72 5f 73 69 7a 65 3a 3d 20 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 20 2b   ┆_buffer_size:= rem_buffer_size +┆
0x004760…004780             20 6c 6f 6e 67 6a 75 6d 70 5f 73 69 7a 65 3b 0a 28 2a 20 72 6f 6f 6d 20 66 6f 72 20 65 78 69 74   ┆ longjump_size; (* room for exit┆
0x004780…0047a0             20 6a 75 6d 70 20 69 73 20 6e 6f 74 20 6e 65 65 64 65 64 20 2a 29 0a 0a 0a 28 2a 20 72 65 61 64   ┆ jump is not needed *)   (* read┆
0x0047a0…0047c0             20 74 68 65 20 65 78 74 65 72 6e 61 6c 20 6c 69 6e 6b 69 6e 67 20 74 61 62 6c 65 20 61 6e 64 0a   ┆ the external linking table and ┆
0x0047c0…0047e0             73 75 62 73 74 69 74 75 74 65 20 74 68 65 20 73 79 6d 62 6f 6c 73 20 62 79 20 74 68 65 20 61 73   ┆substitute the symbols by the as┆
0x0047e0…004800             73 6f 63 69 61 74 65 64 20 61 64 64 72 65 73 73 65 73 20 2a 29 0a 0a 72 65 61 64 5f 73 79 6d 62   ┆sociated addresses *)  read_symb┆
0x004800…004820 (1, 0, 7)   6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 6e 6f 6f 66 6c 69 6e 6b 73   ┆olic_expression( symb, nooflinks┆
0x004820…004840             20 29 3b 0a 0a 28 2a 6c 6f 63 61 6c 2a 29 6f 75 74 77 6f 72 64 28 20 6e 6f 6f 66 6c 69 6e 6b 73   ┆ );  (*local*)outword( nooflinks┆
0x004840…004860             20 29 3b 20 28 2a 20 6e 75 6d 62 65 72 20 6f 66 20 65 78 74 65 72 6e 61 6c 20 6c 69 6e 6b 20 65   ┆ ); (* number of external link e┆
0x004860…004880             6e 74 72 69 65 73 20 2a 29 0a 0a 66 6f 72 20 73 74 65 70 3a 3d 20 31 20 74 6f 20 6e 6f 6f 66 6c   ┆ntries *)  for step:= 1 to noofl┆
0x004880…0048a0             69 6e 6b 73 20 64 6f 0a 62 65 67 69 6e 0a 0a 74 6f 6b 65 6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f   ┆inks do begin  token:= get_next_┆
0x0048a0…0048c0             74 6f 6b 65 6e 3b 20 28 2a 20 72 65 61 64 20 74 68 65 20 6e 61 6d 65 20 2a 29 0a 66 6f 72 20 73   ┆token; (* read the name *) for s┆
0x0048c0…0048e0             74 65 70 31 3a 3d 20 6c 61 73 74 63 68 61 72 20 2b 20 31 20 74 6f 20 61 6c 66 61 6c 65 6e 67 74   ┆tep1:= lastchar + 1 to alfalengt┆
0x0048e0…004900             68 20 64 6f 0a 63 68 62 75 66 20 5b 20 73 74 65 70 31 20 5d 3a 3d 20 27 20 27 3b 0a 0a 0a 66 6f   ┆h do chbuf [ step1 ]:= ' ';   fo┆
0x004900…004920             72 20 73 74 65 70 31 3a 3d 20 31 20 74 6f 20 61 6c 66 61 6c 65 6e 67 74 68 20 64 69 76 20 32 20   ┆r step1:= 1 to alfalength div 2 ┆
0x004920…004940             64 6f 0a 28 2a 6c 6f 63 61 6c 2a 29 6f 75 74 77 6f 72 64 28 20 6f 72 64 28 63 68 62 75 66 20 5b   ┆do (*local*)outword( ord(chbuf [┆
0x004940…004960             32 2a 73 74 65 70 31 20 2d 20 31 5d 29 20 73 68 6c 20 38 20 2b 20 6f 72 64 28 63 68 62 75 66 20   ┆2*step1 - 1]) shl 8 + ord(chbuf ┆
0x004960…004980             5b 32 20 2a 20 73 74 65 70 31 5d 29 29 3b 0a 0a 28 2a 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73   ┆[2 * step1]));  (* parameter lis┆
0x004980…0049a0             74 20 2a 29 0a 0a 72 65 61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20   ┆t *)  read_symbolic_expression( ┆
0x0049a0…0049c0             73 79 6d 62 2c 20 6e 6f 6f 66 70 61 72 61 6d 73 20 29 3b 0a 28 2a 6c 6f 63 61 6c 2a 29 6f 75 74   ┆symb, noofparams ); (*local*)out┆
0x0049c0…0049e0             77 6f 72 64 28 20 6e 6f 6f 66 70 61 72 61 6d 73 20 29 3b 0a 0a 66 6f 72 20 73 74 65 70 31 3a 3d   ┆word( noofparams );  for step1:=┆
0x0049e0…004a00             20 31 20 74 6f 20 32 20 2a 20 6e 6f 6f 66 70 61 72 61 6d 73 20 64 6f 0a 62 65 67 69 6e 0a 72 65   ┆ 1 to 2 * noofparams do begin re┆
0x004a00…004a20 (1, 0, 8)   61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 64 65   ┆ad_symbolic_expression( symb, de┆
0x004a20…004a40             73 63 72 65 6c 65 6d 20 29 3b 0a 28 2a 6c 6f 63 61 6c 2a 29 6f 75 74 77 6f 72 64 28 20 64 65 73   ┆screlem ); (*local*)outword( des┆
0x004a40…004a60             63 72 65 6c 65 6d 20 29 3b 0a 65 6e 64 3b 20 28 2a 20 65 6e 64 20 6f 66 20 70 61 72 61 6d 65 74   ┆crelem ); end; (* end of paramet┆
0x004a60…004a80             65 72 20 6c 69 73 74 20 2a 29 0a 0a 0a 28 2a 20 75 73 65 73 20 6c 69 73 74 20 2a 29 0a 0a 72 65   ┆er list *)   (* uses list *)  re┆
0x004a80…004aa0             61 64 5f 73 79 6d 62 6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 28 20 73 79 6d 62 2c 20 6e 6f   ┆ad_symbolic_expression( symb, no┆
0x004aa0…004ac0             6f 66 70 61 72 61 6d 73 20 29 3b 0a 28 2a 6c 6f 63 61 6c 2a 29 6f 75 74 77 6f 72 64 28 20 6e 6f   ┆ofparams ); (*local*)outword( no┆
0x004ac0…004ae0             6f 66 70 61 72 61 6d 73 20 29 3b 20 28 2a 20 6e 75 6d 62 65 72 20 6f 66 20 75 73 65 73 20 2a 29   ┆ofparams ); (* number of uses *)┆
0x004ae0…004b00             0a 0a 28 2a 20 72 65 61 64 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 6e 61 6d 65 20 61 6e 64 20   ┆  (* read the internal name and ┆
0x004b00…004b20             6f 75 74 70 75 74 20 74 68 65 20 75 73 65 20 63 68 61 69 6e 20 2a 29 0a 72 65 61 64 5f 73 79 6d   ┆output the use chain *) read_sym┆
0x004b20…004b40             62 6f 6c 69 63 5f 65 78 70 72 65 73 73 69 6f 6e 20 28 20 73 79 6d 62 2c 20 64 65 73 63 72 65 6c   ┆bolic_expression ( symb, descrel┆
0x004b40…004b60             65 6d 20 29 3b 0a 77 69 74 68 20 73 79 6d 62 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 63 68 61 69 6e   ┆em ); with symb ^ do begin chain┆
0x004b60…004b80             3a 3d 20 75 73 65 5f 63 68 61 69 6e 3b 0a 75 73 65 5f 63 68 61 69 6e 3a 3d 20 75 6e 73 61 74 69   ┆:= use_chain; use_chain:= unsati┆
0x004b80…004ba0             73 66 69 65 64 5f 6e 69 6c 3b 0a 65 6e 64 3b 0a 0a 0a 0a 66 6f 72 20 73 74 65 70 31 3a 3d 20 31   ┆sfied_nil; end;    for step1:= 1┆
0x004ba0…004bc0             20 74 6f 20 6e 6f 6f 66 70 61 72 61 6d 73 20 64 6f 0a 62 65 67 69 6e 0a 0a 69 66 20 63 68 61 69   ┆ to noofparams do begin  if chai┆
0x004bc0…004be0             6e 20 3d 20 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 20 74 68 65 6e 0a 6d 61 72 6b 65 72 72   ┆n = unsatisfied_nil then markerr┆
0x004be0…004c00             6f 72 31 20 28 20 31 32 2c 20 73 79 6d 62 20 5e 20 2e 20 6e 61 6d 65 70 61 72 74 20 29 3b 20 28   ┆or1 ( 12, symb ^ . namepart ); (┆
0x004c00…004c20 (1, 0, 9)   2a 20 74 72 6f 75 62 6c 65 20 77 69 74 68 20 64 65 73 63 72 69 70 74 6f 72 20 62 6c 6f 63 6b 20   ┆* trouble with descriptor block ┆
0x004c20…004c40             2a 29 0a 0a 77 69 74 68 20 63 68 61 69 6e 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 28 2a 6c 6f 63 61   ┆*)  with chain ^ do begin (*loca┆
0x004c40…004c60             6c 2a 29 6f 75 74 77 6f 72 64 28 20 75 73 65 5f 73 65 67 6d 65 6e 74 20 29 3b 0a 28 2a 6c 6f 63   ┆l*)outword( use_segment ); (*loc┆
0x004c60…004c80             61 6c 2a 29 6f 75 74 77 6f 72 64 28 20 75 73 65 5f 6f 66 66 73 65 74 20 29 3b 0a 72 65 6d 6f 76   ┆al*)outword( use_offset ); remov┆
0x004c80…004ca0             65 5f 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 6f 64 65 28 20 63 68 61 69 6e 20 29 3b 0a 65 6e 64   ┆e_unsatisfied_node( chain ); end┆
0x004ca0…004cc0             3b 0a 0a 65 6e 64 3b 20 28 2a 20 75 73 65 73 20 6c 69 73 74 20 2a 29 0a 0a 69 66 20 63 68 61 69   ┆;  end; (* uses list *)  if chai┆
0x004cc0…004ce0             6e 20 3c 3e 20 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 20 74 68 65 6e 0a 6d 61 72 6b 65 72   ┆n <> unsatisfied_nil then marker┆
0x004ce0…004d00             72 6f 72 31 20 28 20 31 32 2c 20 73 79 6d 62 20 5e 20 2e 20 6e 61 6d 65 70 61 72 74 20 29 3b 20   ┆ror1 ( 12, symb ^ . namepart ); ┆
0x004d00…004d20             28 2a 20 74 72 6f 75 62 6c 65 20 77 69 74 68 20 64 65 73 63 72 69 70 74 6f 72 20 62 6c 6f 63 6b   ┆(* trouble with descriptor block┆
0x004d20…004d40             20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 66 6f 72 20 2e 2e 20 74 6f 20 6e 6f 6f 66 6c 69 6e 6b 73   ┆ *)  end; (* for .. to nooflinks┆
0x004d40…004d60             20 2a 29 0a 0a 75 6e 73 74 61 63 6b 5f 6c 65 76 65 6c 3b 0a 0a 28 2a 20 4e 42 21 21 21 3a 20 69   ┆ *)  unstack_level;  (* NB!!!: i┆
0x004d60…004d80             6e 73 74 65 61 64 20 6f 66 20 22 72 65 73 65 72 76 65 63 6f 64 65 28 32 29 3b 20 61 64 64 5f 75   ┆nstead of "reservecode(2); add_u┆
0x004d80…004da0             6e 73 61 74 69 73 66 69 65 64 5f 6e 6f 64 65 2e 2e 3b 20 6f 75 74 77 6f 72 64 28 30 29 22 2c 20   ┆nsatisfied_node..; outword(0)", ┆
0x004da0…004dc0             6f 75 74 77 6f 72 64 20 69 73 0a 63 61 6c 6c 65 64 20 66 69 72 73 74 20 61 6e 64 20 74 68 65 20   ┆outword is called first and the ┆
0x004dc0…004de0             61 64 64 72 65 73 73 20 69 6e 20 74 68 65 20 75 6e 73 61 74 5f 6e 6f 64 65 20 69 73 20 63 68 61   ┆address in the unsat_node is cha┆
0x004de0…004e00             6e 67 65 64 20 61 63 63 6f 72 64 69 6e 67 6c 79 2c 20 61 66 74 65 72 77 61 72 64 73 20 2a 29 0a   ┆nged accordingly, afterwards *) ┆
0x004e00…004e20 (1, 0, 10)  28 2a 6c 6f 63 61 6c 2a 29 6f 75 74 77 6f 72 64 28 20 30 20 29 3b 20 28 2a 20 72 6f 6f 6d 20 66   ┆(*local*)outword( 0 ); (* room f┆
0x004e20…004e40             6f 72 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 74 65 72 6e 61 6c 20 6c 69 6e 6b 73 20   ┆or the number of internal links ┆
0x004e40…004e60             2a 29 0a 0a 6e 6f 5f 6f 66 5f 69 6e 74 5f 6c 69 6e 6b 73 3a 3d 20 67 65 74 6e 61 6d 65 6e 6f 64   ┆*)  no_of_int_links:= getnamenod┆
0x004e60…004e80             65 3b 0a 28 2a 20 6d 61 6b 65 20 61 20 6e 61 6d 65 20 6e 6f 64 65 20 74 6f 20 64 65 73 63 72 69   ┆e; (* make a name node to descri┆
0x004e80…004ea0             62 65 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 3a 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 74 65 72   ┆be the constant: number of inter┆
0x004ea0…004ec0             6e 61 6c 20 6c 69 6e 6b 73 20 2a 29 0a 77 69 74 68 20 6e 6f 5f 6f 66 5f 69 6e 74 5f 6c 69 6e 6b   ┆nal links *) with no_of_int_link┆
0x004ec0…004ee0             73 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 75 73 65 5f 63 68 61 69 6e 3a 3d 20 61 64 64 5f 75 6e 73   ┆s ^ do begin use_chain:= add_uns┆
0x004ee0…004f00             61 74 69 73 66 69 65 64 5f 6e 6f 64 65 28 75 73 65 5f 63 68 61 69 6e 2c 20 66 61 6c 73 65 2c 77   ┆atisfied_node(use_chain, false,w┆
0x004f00…004f20             6f 72 64 73 69 7a 65 29 3b 0a 77 69 74 68 20 75 73 65 5f 63 68 61 69 6e 5e 20 64 6f 0a 75 73 65   ┆ordsize); with use_chain^ do use┆
0x004f20…004f40             5f 6f 66 66 73 65 74 3a 3d 20 75 73 65 5f 6f 66 66 73 65 74 2d 32 3b 20 28 2a 20 74 68 65 20 61   ┆_offset:= use_offset-2; (* the a┆
0x004f40…004f60             64 64 72 65 73 73 20 77 61 73 20 69 6e 63 72 65 6d 65 6e 74 65 64 20 62 65 66 6f 72 65 20 74 68   ┆ddress was incremented before th┆
0x004f60…004f80             65 20 63 61 6c 6c 20 2a 29 0a 65 6e 64 3b 0a 0a 6e 6f 6f 66 69 6e 74 65 72 6e 61 6c 6c 69 6e 6b   ┆e call *) end;  noofinternallink┆
0x004f80…004fa0             73 3a 3d 20 30 3b 0a 0a 6c 69 6e 6b 3a 3d 20 69 6e 74 65 72 6e 61 6c 5f 6c 69 6e 6b 5f 6c 69 73   ┆s:= 0;  link:= internal_link_lis┆
0x004fa0…004fc0             74 3b 0a 66 6f 72 6d 65 72 3a 3d 20 6e 69 6c 5f 6e 61 6d 65 3b 0a 0a 77 68 69 6c 65 20 6c 69 6e   ┆t; former:= nil_name;  while lin┆
0x004fc0…004fe0             6b 20 3c 3e 20 6e 69 6c 5f 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 6c 69 6e 6b 20 5e 20 64 6f 0a   ┆k <> nil_name do with link ^ do ┆
0x004fe0…005000             62 65 67 69 6e 0a 69 66 20 28 6b 69 6e 64 20 3d 20 6c 61 62 65 6c 5f 64 65 66 29 20 61 6e 64 20   ┆begin if (kind = label_def) and ┆
0x005000…005020 (1, 0, 11)  28 75 73 65 5f 63 68 61 69 6e 20 3c 3e 20 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 29 20 74   ┆(use_chain <> unsatisfied_nil) t┆
0x005020…005040             68 65 6e 0a 62 65 67 69 6e 0a 63 68 61 69 6e 3a 3d 20 75 73 65 5f 63 68 61 69 6e 3b 0a 0a 77 68   ┆hen begin chain:= use_chain;  wh┆
0x005040…005060             69 6c 65 20 63 68 61 69 6e 20 3c 3e 20 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 20 64 6f 0a   ┆ile chain <> unsatisfied_nil do ┆
0x005060…005080             77 69 74 68 20 63 68 61 69 6e 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 0a 6e 6f 6f 66 69 6e 74 65 72   ┆with chain ^ do begin  noofinter┆
0x005080…0050a0             6e 61 6c 6c 69 6e 6b 73 3a 3d 20 6e 6f 6f 66 69 6e 74 65 72 6e 61 6c 6c 69 6e 6b 73 20 2b 20 31   ┆nallinks:= noofinternallinks + 1┆
0x0050a0…0050c0             3b 0a 28 2a 6c 6f 63 61 6c 2a 29 6f 75 74 77 6f 72 64 28 20 75 73 65 5f 73 65 67 6d 65 6e 74 20   ┆; (*local*)outword( use_segment ┆
0x0050c0…0050e0             29 3b 0a 28 2a 6c 6f 63 61 6c 2a 29 6f 75 74 77 6f 72 64 28 20 75 73 65 5f 6f 66 66 73 65 74 20   ┆); (*local*)outword( use_offset ┆
0x0050e0…005100             29 3b 0a 28 2a 6c 6f 63 61 6c 2a 29 6f 75 74 77 6f 72 64 28 20 64 65 66 5f 73 65 67 6d 65 6e 74   ┆); (*local*)outword( def_segment┆
0x005100…005120             20 29 3b 0a 28 2a 6c 6f 63 61 6c 2a 29 6f 75 74 77 6f 72 64 28 20 64 65 66 5f 6f 66 66 73 65 74   ┆ ); (*local*)outword( def_offset┆
0x005120…005140             20 29 3b 0a 0a 72 65 6d 6f 76 65 5f 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 6f 64 65 28 20 63 68   ┆ );  remove_unsatisfied_node( ch┆
0x005140…005160             61 69 6e 20 29 3b 0a 0a 0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65 20 63 68 61 69 6e 20 2e 2e 2e   ┆ain );   end; (* while chain ...┆
0x005160…005180             20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 69 66 20 6b 69 6e 64 20 3d 20 6c 61 62 65 6c 5f 64 65 66   ┆ *)  end; (* if kind = label_def┆
0x005180…0051a0             20 2a 29 0a 0a 6c 69 6e 6b 31 3a 3d 20 6e 65 78 74 5f 6e 61 6d 65 3b 0a 69 66 20 28 6b 69 6e 64   ┆ *)  link1:= next_name; if (kind┆
0x0051a0…0051c0             20 3d 20 6c 61 62 65 6c 5f 64 65 66 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 72 65 74 75 72 6e 6e   ┆ = label_def) then begin returnn┆
0x0051c0…0051e0             61 6d 65 28 6c 69 6e 6b 29 3b 0a 69 66 20 66 6f 72 6d 65 72 20 3d 20 6e 69 6c 5f 6e 61 6d 65 20   ┆ame(link); if former = nil_name ┆
0x0051e0…005200             74 68 65 6e 0a 69 6e 74 65 72 6e 61 6c 5f 6c 69 6e 6b 5f 6c 69 73 74 3a 3d 20 6c 69 6e 6b 31 0a   ┆then internal_link_list:= link1 ┆
0x005200…005220 (1, 0, 12)  65 6c 73 65 0a 20 66 6f 72 6d 65 72 20 5e 20 2e 20 6e 65 78 74 5f 6e 61 6d 65 3a 3d 20 6c 69 6e   ┆else  former ^ . next_name:= lin┆
0x005220…005240             6b 31 3b 0a 65 6e 64 20 28 2a 20 72 65 6d 6f 76 65 20 74 68 65 20 6e 61 6d 65 20 6e 6f 64 65 20   ┆k1; end (* remove the name node ┆
0x005240…005260             2a 29 0a 65 6c 73 65 0a 66 6f 72 6d 65 72 3a 3d 20 6c 69 6e 6b 3b 0a 6c 69 6e 6b 3a 3d 20 6c 69   ┆*) else former:= link; link:= li┆
0x005260…005280             6e 6b 31 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65 20 6c 69 6e 6b 20 2e 2e 2e 20 2a 29 0a   ┆nk1;  end; (* while link ... *) ┆
0x005280…0052a0             77 69 74 68 20 6e 6f 5f 6f 66 5f 69 6e 74 5f 6c 69 6e 6b 73 20 5e 20 64 6f 0a 62 65 67 69 6e 0a   ┆with no_of_int_links ^ do begin ┆
0x0052a0…0052c0             64 65 66 5f 73 65 67 6d 65 6e 74 3a 3d 20 31 3b 20 28 2a 20 64 65 66 69 6e 65 64 20 2a 29 0a 64   ┆def_segment:= 1; (* defined *) d┆
0x0052c0…0052e0             65 66 5f 6f 66 66 73 65 74 3a 3d 20 6e 6f 6f 66 69 6e 74 65 72 6e 61 6c 6c 69 6e 6b 73 3b 0a 6b   ┆ef_offset:= noofinternallinks; k┆
0x0052e0…005300             69 6e 64 3a 3d 20 63 6f 6e 73 74 61 6e 74 5f 64 65 66 3b 0a 6e 65 78 74 5f 6e 61 6d 65 3a 3d 20   ┆ind:= constant_def; next_name:= ┆
0x005300…005320             69 6e 74 65 72 6e 61 6c 5f 6c 69 6e 6b 5f 6c 69 73 74 3b 0a 69 6e 74 65 72 6e 61 6c 5f 6c 69 6e   ┆internal_link_list; internal_lin┆
0x005320…005340             6b 5f 6c 69 73 74 3a 3d 20 6e 6f 5f 6f 66 5f 69 6e 74 5f 6c 69 6e 6b 73 3b 0a 65 6e 64 3b 20 28   ┆k_list:= no_of_int_links; end; (┆
0x005340…005360             2a 20 77 69 74 68 20 2e 2e 20 2a 29 0a 0a 0a 0a 28 2a 20 65 6e 64 20 6f 66 20 69 6e 74 65 72 6e   ┆* with .. *)    (* end of intern┆
0x005360…005380             61 6c 20 6c 69 6e 6b 73 20 2a 29 0a 69 66 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3c 3e   ┆al links *) if current_offset <>┆
0x005380…0053a0             20 30 20 74 68 65 6e 0a 65 6d 69 74 63 6f 64 65 28 66 61 6c 73 65 29 3b 20 28 2a 20 65 6d 70 74   ┆ 0 then emitcode(false); (* empt┆
0x0053a0…0053c0             79 20 74 68 65 20 63 6f 64 65 20 62 75 66 66 65 72 20 2a 29 0a 0a 0a 65 6e 64 3b 20 28 2a 20 68   ┆y the code buffer *)   end; (* h┆
0x0053c0…0053e0             61 6e 64 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 62 6c 6f 63 6b 73 20 2a 29 0a 0a 0a 0a 0a 0a   ┆andle descriptor blocks *)      ┆
0x0053e0…005400             0a 70 72 6f 63 65 64 75 72 65 20 69 6e 73 65 72 74 5f 63 6f 6e 73 74 61 6e 74 73 3b 0a 0a 76 61   ┆ procedure insert_constants;  va┆
0x005400…005420 (1, 0, 13)  72 0a 66 6f 72 6d 65 72 2c 20 63 68 61 69 6e 2c 20 6c 69 73 74 2c 20 73 6f 72 74 6c 69 73 74 20   ┆r former, chain, list, sortlist ┆
0x005420…005440             3a 20 75 6e 73 61 74 72 65 66 5f 70 74 72 3b 0a 73 74 65 70 2c 20 63 6f 64 65 70 74 72 2c 0a 6e   ┆: unsatref_ptr; step, codeptr, n┆
0x005440…005460             65 78 74 5f 73 65 67 6d 65 6e 74 2c 20 6e 65 78 74 5f 6f 66 66 73 65 74 20 3a 20 69 6e 74 65 67   ┆ext_segment, next_offset : integ┆
0x005460…005480             65 72 3b 0a 6c 69 6e 6b 2c 20 6e 65 78 74 5f 6c 69 6e 6b 20 3a 20 6e 61 6d 65 5f 70 74 72 3b 0a   ┆er; link, next_link : name_ptr; ┆
0x005480…0054a0             63 6f 64 65 5f 77 6f 72 64 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 0a 62 65 67 69 6e 0a 72 65 73   ┆code_word : integer;   begin res┆
0x0054a0…0054c0             65 74 28 63 6f 64 65 66 69 6c 65 2c 20 31 29 3b 0a 69 66 20 6e 6f 74 20 6f 62 6a 65 63 74 5f 63   ┆et(codefile, 1); if not object_c┆
0x0054c0…0054e0             6f 64 65 5f 66 69 6c 65 5f 6f 70 65 6e 65 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 61 73 73 69   ┆ode_file_opened then begin  assi┆
0x0054e0…005500             67 6e 28 63 6f 64 65 2c 20 63 6f 6e 63 61 74 28 73 6f 75 72 63 65 5f 70 61 74 68 2c 63 6f 64 65   ┆gn(code, concat(source_path,code┆
0x005500…005520             66 69 6c 65 6e 61 6d 65 29 29 3b 0a 72 65 77 72 69 74 65 28 63 6f 64 65 2c 20 31 29 3b 0a 6f 62   ┆filename)); rewrite(code, 1); ob┆
0x005520…005540             6a 65 63 74 5f 63 6f 64 65 5f 66 69 6c 65 5f 6f 70 65 6e 65 64 3a 3d 20 74 72 75 65 3b 0a 65 6e   ┆ject_code_file_opened:= true; en┆
0x005540…005560             64 3b 0a 0a 28 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 69 67 6e 69 66 69 63 61 6e 74   ┆d;  (* the number of significant┆
0x005560…005580             20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 64 65 73 63 72 69 70 74 6f 72 20 62 6c 6f 63 6b 20 70 61   ┆ elements of descriptor block pa┆
0x005580…0055a0             72 74 20 31 0a 69 73 20 6b 65 70 74 20 69 6e 20 64 65 73 63 72 31 20 5b 20 30 20 5d 20 2a 29 0a   ┆rt 1 is kept in descr1 [ 0 ] *) ┆
0x0055a0…0055c0             69 66 20 70 72 69 6e 74 5f 63 6f 64 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 63 6f 64 65   ┆if print_code then begin if code┆
0x0055c0…0055e0             6c 69 73 74 20 61 6e 64 20 6e 6f 74 20 70 72 69 6e 74 65 64 20 74 68 65 6e 20 70 72 69 6e 74 6c   ┆list and not printed then printl┆
0x0055e0…005600             69 6e 65 3b 20 28 2a 6f 75 74 70 75 74 20 74 68 65 20 6c 61 73 74 20 6c 69 6e 65 20 62 65 66 6f   ┆ine; (*output the last line befo┆
0x005600…005620 (1, 0, 14)  72 65 0a 64 65 73 63 72 69 70 74 6f 72 73 65 67 6d 65 6e 74 20 70 61 72 74 20 31 2a 29 0a 77 72   ┆re descriptorsegment part 1*) wr┆
0x005620…005640             69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 20 64 65 73 63 72 69 70 74 6f 72 20 70 61 72 74 20   ┆iteln(output, ' descriptor part ┆
0x005640…005660             31 20 27 29 3b 0a 65 6e 64 3b 0a 0a 0a 66 6f 72 20 73 74 65 70 3a 3d 20 30 20 74 6f 20 64 65 73   ┆1 '); end;   for step:= 0 to des┆
0x005660…005680             63 72 31 20 5b 20 30 20 5d 20 64 69 76 20 32 20 2d 20 31 20 64 6f 0a 62 65 67 69 6e 0a 63 6f 64   ┆cr1 [ 0 ] div 2 - 1 do begin cod┆
0x005680…0056a0             65 5f 77 6f 72 64 20 3a 3d 20 64 65 73 63 72 31 20 5b 20 73 74 65 70 20 5d 3b 0a 63 6f 64 65 5f   ┆e_word := descr1 [ step ]; code_┆
0x0056a0…0056c0             77 6f 72 64 20 3a 3d 20 6c 6f 28 63 6f 64 65 5f 77 6f 72 64 29 20 73 68 6c 20 38 20 2b 20 68 69   ┆word := lo(code_word) shl 8 + hi┆
0x0056c0…0056e0             28 63 6f 64 65 5f 77 6f 72 64 29 3b 0a 62 6c 6f 63 6b 77 72 69 74 65 28 63 6f 64 65 2c 20 63 6f   ┆(code_word); blockwrite(code, co┆
0x0056e0…005700             64 65 5f 77 6f 72 64 2c 20 32 20 29 3b 0a 69 66 20 70 72 69 6e 74 5f 63 6f 64 65 20 74 68 65 6e   ┆de_word, 2 ); if print_code then┆
0x005700…005720             0a 77 72 69 74 65 5f 68 65 78 5f 64 65 73 63 72 28 64 65 73 63 72 31 20 5b 20 73 74 65 70 20 5d   ┆ write_hex_descr(descr1 [ step ]┆
0x005720…005740             20 29 3b 0a 65 6e 64 3b 0a 69 66 20 70 72 69 6e 74 5f 63 6f 64 65 20 74 68 65 6e 0a 62 65 67 69   ┆ ); end; if print_code then begi┆
0x005740…005760             6e 0a 6e 6f 5f 6f 66 5f 65 6c 65 6d 73 5f 69 6e 5f 6c 69 6e 65 3a 3d 20 65 6c 65 6d 73 5f 70 65   ┆n no_of_elems_in_line:= elems_pe┆
0x005760…005780             72 5f 6c 69 6e 65 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 20 77 72 69 74 65 6c 6e   ┆r_line; writeln(output); writeln┆
0x005780…0057a0             28 6f 75 74 70 75 74 29 3b 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 65 6e 64 3b 0a   ┆(output); writeln(output); end; ┆
0x0057a0…0057c0             0a 0a 0a 28 2a 20 6e 6f 77 2c 20 6d 61 6b 65 20 61 20 73 6f 72 74 65 64 20 6c 69 73 74 20 6f 66   ┆   (* now, make a sorted list of┆
0x0057c0…0057e0             20 63 6f 6e 73 74 61 6e 74 20 75 73 65 73 20 2a 29 0a 0a 75 6e 73 61 74 69 73 66 69 65 64 5f 6e   ┆ constant uses *)  unsatisfied_n┆
0x0057e0…005800             69 6c 20 5e 20 2e 20 75 73 65 5f 73 65 67 6d 65 6e 74 3a 3d 20 63 75 72 72 65 6e 74 5f 73 65 67   ┆il ^ . use_segment:= current_seg┆
0x005800…005820 (1, 0, 15)  6d 65 6e 74 20 2b 20 31 3b 20 28 2a 20 73 74 6f 70 20 6d 61 72 6b 20 2a 29 0a 0a 73 6f 72 74 6c   ┆ment + 1; (* stop mark *)  sortl┆
0x005820…005840             69 73 74 3a 3d 20 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 3b 0a 0a 6c 69 6e 6b 3a 3d 20 69   ┆ist:= unsatisfied_nil;  link:= i┆
0x005840…005860             6e 74 65 72 6e 61 6c 5f 6c 69 6e 6b 5f 6c 69 73 74 3b 0a 0a 77 68 69 6c 65 20 6c 69 6e 6b 20 3c   ┆nternal_link_list;  while link <┆
0x005860…005880             3e 20 6e 69 6c 5f 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 6c 69 6e 6b 20 5e 20 64 6f 0a 62 65 67   ┆> nil_name do with link ^ do beg┆
0x005880…0058a0             69 6e 0a 69 66 20 6b 69 6e 64 20 3d 20 63 6f 6e 73 74 61 6e 74 5f 64 65 66 20 74 68 65 6e 0a 62   ┆in if kind = constant_def then b┆
0x0058a0…0058c0             65 67 69 6e 0a 63 68 61 69 6e 3a 3d 20 75 73 65 5f 63 68 61 69 6e 3b 0a 77 68 69 6c 65 20 63 68   ┆egin chain:= use_chain; while ch┆
0x0058c0…0058e0             61 69 6e 20 3c 3e 20 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 20 64 6f 0a 62 65 67 69 6e 0a   ┆ain <> unsatisfied_nil do begin ┆
0x0058e0…005900             0a 28 2a 20 69 6e 73 65 72 74 20 63 68 61 69 6e 20 69 6e 74 6f 20 74 68 65 20 73 6f 72 74 65 64   ┆ (* insert chain into the sorted┆
0x005900…005920             20 6c 69 73 74 20 73 74 61 72 74 69 6e 67 20 61 74 20 73 6f 72 74 6c 69 73 74 20 2a 29 0a 0a 6c   ┆ list starting at sortlist *)  l┆
0x005920…005940             69 73 74 3a 3d 20 73 6f 72 74 6c 69 73 74 3b 0a 66 6f 72 6d 65 72 3a 3d 20 75 6e 73 61 74 69 73   ┆ist:= sortlist; former:= unsatis┆
0x005940…005960             66 69 65 64 5f 6e 69 6c 3b 0a 0a 77 69 74 68 20 63 68 61 69 6e 20 5e 20 64 6f 0a 62 65 67 69 6e   ┆fied_nil;  with chain ^ do begin┆
0x005960…005980             0a 77 68 69 6c 65 20 28 75 73 65 5f 73 65 67 6d 65 6e 74 20 3e 20 6c 69 73 74 20 5e 20 2e 20 75   ┆ while (use_segment > list ^ . u┆
0x005980…0059a0             73 65 5f 73 65 67 6d 65 6e 74 29 0a 6f 72 20 28 28 20 75 73 65 5f 73 65 67 6d 65 6e 74 20 3d 20   ┆se_segment) or (( use_segment = ┆
0x0059a0…0059c0             20 6c 69 73 74 20 5e 20 2e 20 75 73 65 5f 73 65 67 6d 65 6e 74 29 0a 61 6e 64 20 28 75 73 65 5f   ┆ list ^ . use_segment) and (use_┆
0x0059c0…0059e0             6f 66 66 73 65 74 20 20 20 3e 20 20 6c 69 73 74 20 5e 20 2e 20 75 73 65 5f 6f 66 66 73 65 74 29   ┆offset   >  list ^ . use_offset)┆
0x0059e0…005a00             29 20 64 6f 0a 62 65 67 69 6e 0a 66 6f 72 6d 65 72 3a 3d 20 6c 69 73 74 3b 0a 6c 69 73 74 3a 3d   ┆) do begin former:= list; list:=┆
0x005a00…005a20 (1, 1, 1)   20 6c 69 73 74 20 5e 20 2e 20 6e 65 78 74 5f 72 65 66 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 6e 6f 77   ┆ list ^ . next_ref; end;  (* now┆
0x005a20…005a40             20 69 6e 73 65 72 74 20 27 63 68 61 69 6e 27 20 62 65 74 77 65 65 6e 20 27 66 6f 72 6d 65 72 27   ┆ insert 'chain' between 'former'┆
0x005a40…005a60             20 61 6e 64 20 27 6c 69 73 74 27 20 2a 29 0a 69 66 20 73 69 7a 65 20 3d 20 31 20 74 68 65 6e 0a   ┆ and 'list' *) if size = 1 then ┆
0x005a60…005a80             73 69 7a 65 20 3a 3d 20 64 65 66 5f 6f 66 66 73 65 74 20 61 6e 64 20 32 35 35 0a 65 6c 73 65 0a   ┆size := def_offset and 255 else ┆
0x005a80…005aa0             73 69 7a 65 20 3a 3d 20 64 65 66 5f 6f 66 66 73 65 74 3b 0a 28 2a 20 74 68 65 20 73 69 7a 65 20   ┆size := def_offset; (* the size ┆
0x005aa0…005ac0             69 73 20 6b 6e 6f 77 6e 20 74 6f 20 62 65 20 32 20 62 79 74 65 73 2c 20 61 6e 64 20 27 73 69 7a   ┆is known to be 2 bytes, and 'siz┆
0x005ac0…005ae0             65 27 20 6d 61 79 20 62 65 20 75 73 65 64 20 74 6f 20 68 6f 6c 64 20 74 68 65 0a 63 6f 6e 73 74   ┆e' may be used to hold the const┆
0x005ae0…005b00             61 6e 74 20 76 61 6c 75 65 2c 20 69 2e 65 2e 20 74 68 65 20 6e 61 6d 65 20 6e 6f 64 65 20 69 73   ┆ant value, i.e. the name node is┆
0x005b00…005b20             20 6e 6f 74 20 6e 65 65 64 65 64 20 61 6e 79 20 6d 6f 72 65 20 2a 29 0a 0a 69 66 20 66 6f 72 6d   ┆ not needed any more *)  if form┆
0x005b20…005b40             65 72 20 3c 3e 20 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 20 74 68 65 6e 0a 66 6f 72 6d 65   ┆er <> unsatisfied_nil then forme┆
0x005b40…005b60             72 20 5e 20 2e 20 6e 65 78 74 5f 72 65 66 3a 3d 20 63 68 61 69 6e 0a 65 6c 73 65 0a 73 6f 72 74   ┆r ^ . next_ref:= chain else sort┆
0x005b60…005b80             6c 69 73 74 3a 3d 20 63 68 61 69 6e 3b 0a 63 68 61 69 6e 3a 3d 20 6e 65 78 74 5f 72 65 66 3b 0a   ┆list:= chain; chain:= next_ref; ┆
0x005b80…005ba0             6e 65 78 74 5f 72 65 66 3a 3d 20 6c 69 73 74 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 63 68   ┆next_ref:= list; end; (* with ch┆
0x005ba0…005bc0             61 69 6e 60 20 2e 2e 2e 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65 20 63 68 61 69 6e   ┆ain` ... *)  end; (* while chain┆
0x005bc0…005be0             20 3c 3e 20 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20   ┆ <> unsatisfied_nil *)  end; (* ┆
0x005be0…005c00             20 77 69 74 68 20 2e 2e 20 69 66 20 63 6f 6e 73 74 61 6e 74 5f 64 65 66 20 20 2a 29 0a 0a 6e 65   ┆ with .. if constant_def  *)  ne┆
0x005c00…005c20 (1, 1, 2)   78 74 5f 6c 69 6e 6b 3a 3d 20 6e 65 78 74 5f 6e 61 6d 65 3b 0a 72 65 74 75 72 6e 6e 61 6d 65 28   ┆xt_link:= next_name; returnname(┆
0x005c20…005c40             20 6c 69 6e 6b 20 29 3b 0a 6c 69 6e 6b 3a 3d 20 6e 65 78 74 5f 6c 69 6e 6b 3b 0a 0a 65 6e 64 3b   ┆ link ); link:= next_link;  end;┆
0x005c40…005c60             20 28 2a 20 77 68 69 6c 65 20 2a 29 0a 0a 0a 28 2a 20 6e 6f 77 20 63 6f 70 79 20 74 68 65 20 63   ┆ (* while *)   (* now copy the c┆
0x005c60…005c80             6f 64 65 20 61 6e 64 20 69 6e 73 65 72 74 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 73 20 2a 29 0a   ┆ode and insert the constants *) ┆
0x005c80…005ca0             69 66 20 74 65 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 75 74 70 75 74 20 74 68 65   ┆if test then begin (* output the┆
0x005ca0…005cc0             20 73 6f 72 74 65 64 20 6c 69 73 74 20 6f 66 20 63 6f 6e 73 74 61 6e 74 73 20 2a 29 0a 63 68 61   ┆ sorted list of constants *) cha┆
0x005cc0…005ce0             69 6e 3a 3d 20 73 6f 72 74 6c 69 73 74 3b 0a 77 68 69 6c 65 20 63 68 61 69 6e 20 3c 3e 20 75 6e   ┆in:= sortlist; while chain <> un┆
0x005ce0…005d00             73 61 74 69 73 66 69 65 64 5f 6e 69 6c 20 64 6f 0a 77 69 74 68 20 63 68 61 69 6e 20 5e 20 64 6f   ┆satisfied_nil do with chain ^ do┆
0x005d00…005d20             0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 27 6e 65 78 74 3a 27 2c 20 73 65 67 28 6e 65 78 74   ┆ begin writeln('next:', seg(next┆
0x005d20…005d40             5f 72 65 66 29 2c 20 6f 66 73 28 6e 65 78 74 5f 72 65 66 29 2c 0a 20 20 20 20 20 20 20 20 27 20   ┆_ref), ofs(next_ref),         ' ┆
0x005d40…005d60             75 73 65 3a 27 2c 20 75 73 65 5f 73 65 67 6d 65 6e 74 2c 20 75 73 65 5f 6f 66 66 73 65 74 2c 20   ┆use:', use_segment, use_offset, ┆
0x005d60…005d80             27 20 76 61 6c 75 65 3d 27 2c 20 73 69 7a 65 29 3b 0a 63 68 61 69 6e 3a 3d 20 6e 65 78 74 5f 72   ┆' value=', size); chain:= next_r┆
0x005d80…005da0             65 66 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a 29 0a 65 6e 64 3b 0a 0a 63 75 72 72 65 6e   ┆ef; end; (* with *) end;  curren┆
0x005da0…005dc0             74 5f 73 65 67 6d 65 6e 74 3a 3d 20 31 3b 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d 20   ┆t_segment:= 1; current_offset:= ┆
0x005dc0…005de0             30 3b 0a 0a 0a 69 66 20 74 65 73 74 20 74 68 65 6e 20 6f 75 74 74 65 73 74 28 27 73 74 61 72 74   ┆0;   if test then outtest('start┆
0x005de0…005e00             20 6f 66 20 63 6f 6e 73 74 61 6e 74 20 69 6e 73 65 72 74 69 6f 6e 20 27 29 3b 0a 0a 62 6c 6f 63   ┆ of constant insertion ');  bloc┆
0x005e00…005e20 (1, 1, 3)   6b 72 65 61 64 28 63 6f 64 65 66 69 6c 65 2c 20 63 6f 64 65 5f 62 75 66 66 65 72 2c 20 73 65 67   ┆kread(codefile, code_buffer, seg┆
0x005e20…005e40             6d 65 6e 74 5f 73 69 7a 65 2b 31 29 3b 0a 0a 77 68 69 6c 65 20 73 6f 72 74 6c 69 73 74 20 3c 3e   ┆ment_size+1);  while sortlist <>┆
0x005e40…005e60             20 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 69 6c 20 64 6f 0a 77 69 74 68 20 73 6f 72 74 6c 69 73   ┆ unsatisfied_nil do with sortlis┆
0x005e60…005e80             74 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74 5f 73 65 67 6d 65 6e 74 3a 3d 20 75 73 65 5f   ┆t ^ do begin next_segment:= use_┆
0x005e80…005ea0             73 65 67 6d 65 6e 74 3b 0a 6e 65 78 74 5f 6f 66 66 73 65 74 3a 3d 20 75 73 65 5f 6f 66 66 73 65   ┆segment; next_offset:= use_offse┆
0x005ea0…005ec0             74 20 2d 20 31 3b 20 28 2a 20 66 69 72 73 74 20 62 79 74 65 20 6f 66 20 74 68 65 20 63 6f 6e 73   ┆t - 1; (* first byte of the cons┆
0x005ec0…005ee0             74 61 6e 74 20 2a 29 0a 0a 28 2a 20 63 6f 70 79 20 75 6e 74 69 6c 20 28 6e 65 78 74 5f 73 65 67   ┆tant *)  (* copy until (next_seg┆
0x005ee0…005f00             6d 65 6e 74 2c 20 6e 65 78 74 5f 6f 66 66 73 65 74 29 20 2a 29 0a 0a 77 68 69 6c 65 20 28 63 75   ┆ment, next_offset) *)  while (cu┆
0x005f00…005f20             72 72 65 6e 74 5f 73 65 67 6d 65 6e 74 20 3c 20 6e 65 78 74 5f 73 65 67 6d 65 6e 74 29 20 64 6f   ┆rrent_segment < next_segment) do┆
0x005f20…005f40             0a 62 65 67 69 6e 0a 62 6c 6f 63 6b 77 72 69 74 65 28 63 6f 64 65 2c 20 63 6f 64 65 5f 62 75 66   ┆ begin blockwrite(code, code_buf┆
0x005f40…005f60             66 65 72 2c 20 73 65 67 6d 65 6e 74 5f 73 69 7a 65 2b 31 20 28 2a 20 6e 6f 74 20 6c 61 73 74 20   ┆fer, segment_size+1 (* not last ┆
0x005f60…005f80             73 65 67 6d 65 6e 74 20 2a 29 29 3b 0a 63 75 72 72 65 6e 74 5f 73 65 67 6d 65 6e 74 3a 3d 20 63   ┆segment *)); current_segment:= c┆
0x005f80…005fa0             75 72 72 65 6e 74 5f 73 65 67 6d 65 6e 74 2b 31 3b 0a 0a 62 6c 6f 63 6b 72 65 61 64 28 63 6f 64   ┆urrent_segment+1;  blockread(cod┆
0x005fa0…005fc0             65 66 69 6c 65 2c 20 63 6f 64 65 5f 62 75 66 66 65 72 2c 20 73 65 67 6d 65 6e 74 5f 73 69 7a 65   ┆efile, code_buffer, segment_size┆
0x005fc0…005fe0             2b 31 29 3b 0a 0a 65 6e 64 3b 0a 28 2a 20 63 6f 64 65 5f 62 75 66 66 65 72 20 63 6f 6e 74 61 69   ┆+1);  end; (* code_buffer contai┆
0x005fe0…006000             6e 73 20 74 68 65 20 73 65 67 6d 65 6e 74 20 74 6f 20 62 65 20 6d 6f 64 69 66 69 65 64 20 2a 29   ┆ns the segment to be modified *)┆
0x006000…006020 (1, 1, 4)   0a 28 2a 20 6e 6f 74 65 3a 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65 20 61 6c 77 61 79 73 20 73   ┆ (* note: constants are always s┆
0x006020…006040             65 65 6e 20 61 73 20 32 20 63 6f 6e 73 65 63 75 74 69 76 65 20 62 79 74 65 73 2c 0a 69 6e 73 65   ┆een as 2 consecutive bytes, inse┆
0x006040…006060             72 74 69 6f 6e 20 6f 66 20 73 6d 61 6c 6c 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65 20 64 6f 6e   ┆rtion of small constants are don┆
0x006060…006080             65 20 6a 75 73 74 20 61 73 20 6c 6f 6e 67 20 63 6f 6e 73 74 61 6e 74 73 2c 20 69 2e 65 2e 0a 61   ┆e just as long constants, i.e. a┆
0x006080…0060a0             64 64 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 61 6c 72   ┆dd the value to the contents alr┆
0x0060a0…0060c0             65 61 64 79 20 70 75 74 20 69 6e 74 6f 20 74 68 65 20 63 6f 64 65 20 77 69 74 68 20 62 79 74 65   ┆eady put into the code with byte┆
0x0060c0…0060e0             20 6f 66 66 73 65 74 73 0a 6e 65 78 74 5f 6f 66 66 73 65 74 20 61 6e 64 20 6e 65 78 74 5f 6f 66   ┆ offsets next_offset and next_of┆
0x0060e0…006100             66 73 65 74 2b 31 20 2a 29 0a 0a 63 6f 64 65 5f 62 75 66 66 65 72 5b 20 6e 65 78 74 5f 6f 66 66   ┆fset+1 *)  code_buffer[ next_off┆
0x006100…006120             73 65 74 20 20 20 20 20 5d 20 3a 3d 0a 63 6f 64 65 5f 62 75 66 66 65 72 5b 20 6e 65 78 74 5f 6f   ┆set     ] := code_buffer[ next_o┆
0x006120…006140             66 66 73 65 74 20 5d 20 2b 20 73 69 7a 65 20 73 68 72 20 38 3b 0a 63 6f 64 65 5f 62 75 66 66 65   ┆ffset ] + size shr 8; code_buffe┆
0x006140…006160             72 5b 20 6e 65 78 74 5f 6f 66 66 73 65 74 20 2b 20 31 20 5d 20 3a 3d 0a 63 6f 64 65 5f 62 75 66   ┆r[ next_offset + 1 ] := code_buf┆
0x006160…006180             66 65 72 5b 20 6e 65 78 74 5f 6f 66 66 73 65 74 20 2b 20 31 20 5d 20 2b 20 28 73 69 7a 65 20 61   ┆fer[ next_offset + 1 ] + (size a┆
0x006180…0061a0             6e 64 20 32 35 35 29 3b 0a 0a 69 66 20 74 65 73 74 20 74 68 65 6e 20 77 72 69 74 65 6c 6e 28 27   ┆nd 255);  if test then writeln('┆
0x0061a0…0061c0             77 68 65 72 65 3a 27 2c 20 6e 65 78 74 5f 73 65 67 6d 65 6e 74 2c 20 6e 65 78 74 5f 6f 66 66 73   ┆where:', next_segment, next_offs┆
0x0061c0…0061e0             65 74 2c 20 27 20 76 61 6c 75 65 3d 27 2c 20 73 69 7a 65 29 3b 0a 0a 72 65 6d 6f 76 65 5f 75 6e   ┆et, ' value=', size);  remove_un┆
0x0061e0…006200             73 61 74 69 73 66 69 65 64 5f 6e 6f 64 65 28 20 73 6f 72 74 6c 69 73 74 20 29 3b 0a 0a 0a 65 6e   ┆satisfied_node( sortlist );   en┆
0x006200…006220 (1, 1, 5)   64 3b 20 28 2a 20 77 69 74 68 20 73 6f 72 74 6c 69 73 74 5e 20 2e 2e 2e 2e 20 2a 29 0a 0a 69 66   ┆d; (* with sortlist^ .... *)  if┆
0x006220…006240             20 74 65 73 74 20 74 68 65 6e 20 6f 75 74 74 65 73 74 28 27 65 6e 64 20 6f 66 20 63 6f 6e 73 74   ┆ test then outtest('end of const┆
0x006240…006260             61 6e 74 20 69 6e 73 65 72 74 69 6f 6e 27 29 3b 0a 0a 28 2a 20 6f 75 74 70 75 74 20 74 68 65 20   ┆ant insertion');  (* output the ┆
0x006260…006280             72 65 6d 61 69 6e 69 6e 67 20 63 6f 64 65 20 61 6e 64 20 64 65 73 63 72 69 70 74 6f 72 20 70 61   ┆remaining code and descriptor pa┆
0x006280…0062a0             72 74 20 32 20 2a 29 0a 69 66 20 6e 6f 74 20 65 6f 66 28 63 6f 64 65 66 69 6c 65 29 20 74 68 65   ┆rt 2 *) if not eof(codefile) the┆
0x0062a0…0062c0             6e 0a 62 6c 6f 63 6b 77 72 69 74 65 28 63 6f 64 65 2c 20 63 6f 64 65 5f 62 75 66 66 65 72 2c 20   ┆n blockwrite(code, code_buffer, ┆
0x0062c0…0062e0             73 65 67 6d 65 6e 74 5f 73 69 7a 65 2b 31 20 28 2a 20 6e 6f 74 20 6c 61 73 74 20 73 65 67 6d 65   ┆segment_size+1 (* not last segme┆
0x0062e0…006300             6e 74 20 2a 29 29 0a 65 6c 73 65 0a 62 6c 6f 63 6b 77 72 69 74 65 28 63 6f 64 65 2c 20 63 6f 64   ┆nt *)) else blockwrite(code, cod┆
0x006300…006320             65 5f 62 75 66 66 65 72 2c 20 6c 61 73 74 5f 74 6f 5f 65 6d 69 74 2b 31 29 3b 0a 0a 77 68 69 6c   ┆e_buffer, last_to_emit+1);  whil┆
0x006320…006340             65 20 6e 6f 74 20 65 6f 66 28 63 6f 64 65 66 69 6c 65 29 20 64 6f 0a 62 65 67 69 6e 0a 62 6c 6f   ┆e not eof(codefile) do begin blo┆
0x006340…006360             63 6b 72 65 61 64 28 63 6f 64 65 66 69 6c 65 2c 20 63 6f 64 65 5f 62 75 66 66 65 72 2c 20 73 65   ┆ckread(codefile, code_buffer, se┆
0x006360…006380             67 6d 65 6e 74 5f 73 69 7a 65 20 2b 20 31 29 3b 0a 69 66 20 6e 6f 74 20 65 6f 66 28 63 6f 64 65   ┆gment_size + 1); if not eof(code┆
0x006380…0063a0             66 69 6c 65 29 20 74 68 65 6e 0a 62 6c 6f 63 6b 77 72 69 74 65 28 63 6f 64 65 2c 20 63 6f 64 65   ┆file) then blockwrite(code, code┆
0x0063a0…0063c0             5f 62 75 66 66 65 72 2c 20 73 65 67 6d 65 6e 74 5f 73 69 7a 65 2b 31 20 28 2a 20 6e 6f 74 20 6c   ┆_buffer, segment_size+1 (* not l┆
0x0063c0…0063e0             61 73 74 20 73 65 67 6d 65 6e 74 20 2a 29 29 0a 65 6c 73 65 0a 62 6c 6f 63 6b 77 72 69 74 65 28   ┆ast segment *)) else blockwrite(┆
0x0063e0…006400             63 6f 64 65 2c 20 63 6f 64 65 5f 62 75 66 66 65 72 2c 20 6c 61 73 74 5f 74 6f 5f 65 6d 69 74 2b   ┆code, code_buffer, last_to_emit+┆
0x006400…006420 (1, 1, 6)   31 29 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 69 6e 73 65 72 74 20 63 6f 6e 73 74 61 6e   ┆1); end;  end; (* insert constan┆
0x006420…006440             74 73 20 2a 29 0a 74 68 65 6e 20 6f 75 74 74 65 73 74 28 27 65 6e 64 20 6f 66 20 63 6f 6e 73 74   ┆ts *) then outtest('end of const┆
0x006440…006460             61 6e 74 20 69 6e 73 65 72 74 69 6f 6e 27 29 3b 0a 0a 28 2a 20 6f 75 74 70 75 74 20 74 68 65 20   ┆ant insertion');  (* output the ┆
0x006460…006480             72 65 6d 61 69 6e 69 6e 67 20 63 6f 64 65 20 61 6e 64 20 64 65 73 63 72 69 70 74 6f 72 20 70 61   ┆remaining code and descriptor pa┆
0x006480…0064a0             72 74 20 32 20 2a 29 0a 69 66 20 6e 6f 74 20 65 6f 66 28 63 6f 64 65 66 69 6c 65 29 20 74 68 65   ┆rt 2 *) if not eof(codefile) the┆
0x0064a0…0064c0             6e 0a 62 6c 6f 63 6b 77 72 69 74 65 28 63 6f 64 65 2c 20 63 6f 64 65 5f 62 75 66 66 65 72 2c 20   ┆n blockwrite(code, code_buffer, ┆
0x0064c0…0064e0             73 65 67 6d 65 6e 74 5f 73 69 7a 65 2b 31 20 28 2a 20 6e 6f 74 20 6c 61 73 74 20 73 65 67 6d 65   ┆segment_size+1 (* not last segme┆
0x0064e0…006500             6e 74 20 2a 29 29 0a 65 6c 73 65 0a 62 6c 6f 63 6b 77 72 69 74 65 28 63 6f 64 65 2c 20 63 6f 64   ┆nt *)) else blockwrite(code, cod┆
0x006500…006520             65 5f 62 75 66 66 65 72 2c 20 6c 61 73 74 5f 74 6f 5f 65 6d 69 74 2b 31 29 3b 0a 0a 77 68 69 6c   ┆e_buffer, last_to_emit+1);  whil┆
0x006520…006540             65 20 6e 6f 74 20 65 6f 66 28 63 6f 64 65 66 69 6c 65 29 20 64 6f 0a 62 65 67 69 6e 0a 62 6c 6f   ┆e not eof(codefile) do begin blo┆
0x006540…006560             63 6b 72 65 61 64 28 63 6f 64 65 66 69 6c 65 2c 20 63 6f 64 65 5f 62 75 66 66 65 72 2c 20 73 65   ┆ckread(codefile, code_buffer, se┆
0x006560…006580             67 6d 65 6e 74 5f 73 69 7a 65 20 2b 20 31 29 3b 0a 69 66 20 6e 6f 74 20 65 6f 66 28 63 6f 64 65   ┆gment_size + 1); if not eof(code┆
0x006580…0065a0             66 69 6c 65 29 20 74 68 65 6e 0a 62 6c 6f 63 6b 77 72 69 74 65 28 63 6f 64 65 2c 20 63 6f 64 65   ┆file) then blockwrite(code, code┆
0x0065a0…0065c0             5f 62 75 66 66 65 72 2c 20 73 65 67 6d 65 6e 74 5f 73 69 7a 65 2b 31 20 28 2a 20 6e 6f 74 20 6c   ┆_buffer, segment_size+1 (* not l┆
0x0065c0…0065e0             61 73 74 20 73 65 67 6d 65 6e 74 20 2a 29 29 0a 65 6c 73 65 0a 62 6c 6f 63 6b 77 72 69 74 65 28   ┆ast segment *)) else blockwrite(┆
0x0065e0…006600             63 6f 64 65 2c 20 63 6f 64 65 5f 62 75 66 66 65 72 2c 20 6c 61 73 74 5f 74 6f 5f 65 6d 69 74 2b   ┆code, code_buffer, last_to_emit+┆
0x006600…006620 (1, 1, 7)   2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 78 32 36 00 00 00 00 00 00 00 00 00 00 00   ┆../sw2103/src/rtp/x26           ┆
0x006620…006640             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x006660…006680             00 00 00 00 20 20 20 37 35 35 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       755     255     146      ┆
0x006680…0066a0             20 20 32 34 37 36 31 20 20 35 32 36 36 37 35 35 37 32 37 20 20 20 37 33 32 36 00 20 00 00 00 00   ┆  24761  5266755727   7326      ┆
0x0066a0…0066c0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x006800…006820 (1, 1, 8)   70 72 6f 67 72 61 6d 20 72 74 70 33 35 30 32 32 70 36 28 69 6e 70 75 74 2c 6f 75 74 70 75 74 2c   ┆program rtp35022p6(input,output,┆
0x006820…006840             63 6f 64 65 29 3b 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆code); (*-----------------------┆
0x006840…006860             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x006860…006880             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31   ┆---------- -- -- (C) Copyrigth 1┆
0x006880…0068a0             39 39 32 20 20 44 41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆992  DANOSI -- -----------------┆
0x0068a0…0068c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0068c0…0068e0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 09 52 65 76 69 73 69 6f   ┆------------------ -- -- Revisio┆
0x0068e0…006900             6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ns -- --------------------------┆
0x006900…006920             2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20 38 39 2e 30 33 2e 31 34 20 20 45 42 4b 20 20   ┆------ --        89.03.14  EBK  ┆
0x006920…006940             20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20 31 2e 31 32 0a 2d 2d 20 20 31 2e 31 20 20 20   ┆ Used in release 1.12 --  1.1   ┆
0x006940…006960             39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73   ┆92.10.14  HEJ   SCCS and UNIX us┆
0x006960…006980             65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ed. -- -------------------------┆
0x006980…0069a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0069a0…0069c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2d   ┆---------- -- SCCS information -┆
0x0069c0…0069e0             2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f 64 75 6c 65 20 3a 20 20 25 4d 25   ┆- File   :  %P% -- Module :  %M%┆
0x0069e0…006a00             0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09 44 61 74 65 20 20 20 3a 20 20 25   ┆ -- Version:  %I% -- Date   :  %┆
0x006a00…006a20 (1, 1, 9)   45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆E%  %U% ------------------------┆
0x006a20…006a40             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x006a40…006a60             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 75 73 65 73 20 72 74 70 75 6e 69 74 2c 20 64 6f   ┆----------- *)  uses rtpunit, do┆
0x006a60…006a80             73 3b 0a 0a 28 2a 20 69 66 20 75 73 65 64 20 61 73 20 61 6e 20 61 73 65 6d 62 6c 65 72 20 74 68   ┆s;  (* if used as an asembler th┆
0x006a80…006aa0             65 20 63 61 6c 6c 20 69 73 3a 0a 0a 3c 63 6f 64 65 20 66 69 6c 65 3e 20 3d 20 72 74 70 33 35 30   ┆e call is:  <code file> = rtp350┆
0x006aa0…006ac0             32 32 70 36 20 3c 6f 70 74 69 6f 6e 20 6c 69 73 74 3e 20 3c 73 6f 75 72 63 65 20 66 69 6c 65 3e   ┆22p6 <option list> <source file>┆
0x006ac0…006ae0             0a 0a 3c 63 6f 64 65 20 66 69 6c 65 3e 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 66 69 6c 65   ┆  <code file>        object file┆
0x006ae0…006b00             2c 20 64 65 66 61 75 6c 74 20 6e 61 6d 65 20 69 73 20 72 74 70 70 61 73 73 36 2e 63 6f 64 0a 3c   ┆, default name is rtppass6.cod <┆
0x006b00…006b20             73 6f 75 72 63 65 20 66 69 6c 65 3e 20 20 20 20 20 20 64 65 66 61 75 6c 74 20 6e 61 6d 65 20 69   ┆source file>      default name i┆
0x006b20…006b40             73 20 72 74 70 70 61 73 73 35 2e 63 6f 64 0a 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆s rtppass5.cod  .               ┆
0x006b40…006b60             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   ┆                                ┆
0x006b60…006b80             20 20 20 20 20 20 2a 0a 3c 6f 70 74 69 6f 6e 20 6c 69 73 74 3e 20 3a 3a 3d 20 28 20 3c 6f 70 74   ┆      * <option list> ::= ( <opt┆
0x006b80…006ba0             69 6f 6e 3e 20 2e 20 3c 79 65 73 20 6f 72 20 6e 6f 20 6f 72 20 6e 75 6d 62 65 72 3e 20 29 0a 0a   ┆ion> . <yes or no or number> )  ┆
0x006ba0…006bc0             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 20 20 20 20 20 64   ┆.                              d┆
0x006bc0…006be0             65 66 61 75 6c 74 20 20 20 20 20 20 20 20 20 6d 65 61 6e 69 6e 67 0a 0a 3c 6f 70 74 69 6f 6e 3e   ┆efault         meaning  <option>┆
0x006be0…006c00             20 3a 3a 3d 20 6c 69 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 20 6e 6f 20 29 20 20 20   ┆ ::= list              ( no )   ┆
0x006c00…006c20 (1, 1, 10)  20 20 20 6c 69 73 74 20 74 68 65 20 69 6e 70 75 74 0a 2e 20 20 20 20 20 20 20 20 20 20 21 20 74   ┆   list the input .          ! t┆
0x006c20…006c40             65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 20 6e 6f 20 29 20 20 20 20 20 20 67 65 6e   ┆est              ( no )      gen┆
0x006c40…006c60             65 72 61 74 65 20 74 65 73 74 20 6f 75 74 70 75 74 0a 2e 20 20 20 20 20 20 20 20 20 20 21 20 63   ┆erate test output .          ! c┆
0x006c60…006c80             6f 64 65 73 69 7a 65 20 20 20 20 20 20 20 20 20 20 28 20 35 31 32 20 29 20 20 20 20 20 73 69 7a   ┆odesize          ( 512 )     siz┆
0x006c80…006ca0             65 20 6f 66 20 61 20 70 72 6f 67 72 61 6d 20 70 61 67 65 0a 2e 20 20 20 20 20 20 20 20 20 20 21   ┆e of a program page .          !┆
0x006ca0…006cc0             20 70 72 69 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20 28 20 6e 6f 20 29 20 20 20 20 20 20 70   ┆ print             ( no )      p┆
0x006cc0…006ce0             72 69 6e 74 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 20 63 6f 64 65 0a 2e 20 20 20 20 20 20 20   ┆rint the generated code .       ┆
0x006ce0…006d00             20 20 20 21 20 65 72 72 6f 72 6d 65 73 73 20 20 20 20 20 20 20 20 20 28 20 6e 6f 20 29 20 20 20   ┆   ! errormess         ( no )   ┆
0x006d00…006d20             20 20 20 6c 69 73 74 20 65 72 72 6f 6e 65 75 73 20 6c 69 6e 65 73 0a 2e 20 20 20 20 20 20 20 20   ┆   list erroneus lines .        ┆
0x006d20…006d40             20 20 21 20 6e 61 6d 65 74 61 62 6c 65 20 20 20 20 20 20 20 20 20 28 20 6e 6f 20 29 20 20 20 20   ┆  ! nametable         ( no )    ┆
0x006d40…006d60             20 20 6c 69 73 74 20 74 68 65 20 6e 61 6d 65 74 61 62 6c 65 20 61 74 20 62 6c 6f 63 6b 65 6e 64   ┆  list the nametable at blockend┆
0x006d60…006d80             73 0a 2e 20 20 20 20 20 20 20 20 20 20 21 20 73 70 61 63 69 6e 67 20 20 20 20 20 20 20 20 20 20   ┆s .          ! spacing          ┆
0x006d80…006da0             20 28 20 35 32 20 29 20 20 20 20 20 20 6c 69 6e 65 20 74 61 62 6c 65 20 73 70 61 63 69 6e 67 0a   ┆ ( 52 )      line table spacing ┆
0x006da0…006dc0             2e 20 20 20 20 20 20 20 20 20 20 21 20 73 74 61 74 69 73 74 69 63 73 20 20 20 20 20 20 20 20 28   ┆.          ! statistics        (┆
0x006dc0…006de0             20 6e 6f 20 29 20 20 20 20 20 20 67 65 6e 65 72 61 74 65 20 6f 70 2d 63 6f 64 65 20 73 74 61 74   ┆ no )      generate op-code stat┆
0x006de0…006e00             69 73 74 69 63 73 0a 2e 20 20 20 20 20 20 20 20 20 20 21 20 6c 69 6e 65 69 6e 66 6f 20 20 20 20   ┆istics .          ! lineinfo    ┆
0x006e00…006e20 (1, 1, 11)  20 20 20 20 20 20 28 20 79 65 73 20 29 20 20 20 20 20 67 65 6e 65 72 61 74 65 20 6c 69 6e 65 20   ┆      ( yes )     generate line ┆
0x006e20…006e40             69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2e 20 20 20 20 20 20 20 20 20 20 21 20 70 72 65 73 65 72 76   ┆information .          ! preserv┆
0x006e40…006e60             65 20 20 20 20 20 20 20 20 20 20 28 20 6e 6f 20 29 20 20 20 20 20 20 70 72 65 73 65 72 76 65 20   ┆e          ( no )      preserve ┆
0x006e60…006e80             70 61 73 73 35 63 6f 64 65 0a 0a 0a 3c 79 65 73 20 6f 72 20 6e 6f 20 6f 72 20 6e 75 6d 62 65 72   ┆pass5code   <yes or no or number┆
0x006e80…006ea0             3e 20 3a 3a 3d 20 79 65 73 20 20 21 20 6e 6f 20 20 21 20 3c 6e 75 6d 62 65 72 3e 0a 0a 0a 0a 0a   ┆> ::= yes  ! no  ! <number>     ┆
0x006ea0…006ec0             2a 29 0a 0a 28 2a 24 4d 20 32 35 30 30 30 2c 30 2c 36 35 35 33 36 30 2a 29 0a 28 2a 24 52 2b 2a   ┆*)  (*$M 25000,0,655360*) (*$R+*┆
0x006ec0…006ee0             29 0a 0a 74 79 70 65 0a 74 65 78 74 5f 62 75 66 5f 74 79 70 65 20 3d 20 61 72 72 61 79 5b 31 2e   ┆)  type text_buf_type = array[1.┆
0x006ee0…006f00             2e 31 30 32 34 5d 20 6f 66 20 63 68 61 72 3b 0a 0a 76 61 72 20 65 78 69 74 73 61 76 65 3a 20 70   ┆.1024] of char;  var exitsave: p┆
0x006f00…006f20             6f 69 6e 74 65 72 3b 0a 69 6e 5f 62 75 66 5f 70 74 72 3a 20 5e 74 65 78 74 5f 62 75 66 5f 74 79   ┆ointer; in_buf_ptr: ^text_buf_ty┆
0x006f20…006f40             70 65 3b 0a 0a 28 2a 24 49 20 70 36 69 6e 69 74 20 2a 29 0a 28 2a 24 49 20 70 36 72 65 73 74 20   ┆pe;  (*$I p6init *) (*$I p6rest ┆
0x006f40…006f60             2a 29 0a 0a 0a 28 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆*)   (**************************┆
0x006f60…006f80             2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆********************************┆
0x006f80…006fa0             2a 2a 2a 2a 2a 2a 2a 2a 29 0a 28 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆********) (*********************┆
0x006fa0…006fc0             2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆********************************┆
0x006fc0…006fe0             2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 29 0a 28 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20   ┆*************) (*************** ┆
0x006fe0…007000             20 20 20 20 20 20 6d 61 69 6e 20 70 72 6f 67 72 61 6d 20 6f 66 20 70 61 73 73 36 20 2a 2a 2a 2a   ┆      main program of pass6 ****┆
0x007000…007020 (1, 1, 12)  2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 29 0a 28 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆******************) (***********┆
0x007020…007040             2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆********************************┆
0x007040…007060             2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 29 0a 28 2a 2a 2a 2a 2a 2a   ┆***********************) (******┆
0x007060…007080             2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆********************************┆
0x007080…0070a0             2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 29 0a 0a 0a   ┆****************************)   ┆
0x0070a0…0070c0             0a 62 65 67 69 6e 0a 0a 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3b 0a 0a 69 6e 69 74 5f 62 65   ┆ begin  initialization;  init_be┆
0x0070c0…0070e0             74 77 65 65 6e 5f 63 6f 64 65 5f 62 6c 6f 63 6b 73 3b 0a 0a 72 65 61 64 5f 65 6e 76 69 72 6f 6e   ┆tween_code_blocks;  read_environ┆
0x0070e0…007100             6d 65 6e 74 3b 0a 0a 72 65 61 64 63 61 6c 6c 3b 0a 0a 69 66 20 74 65 73 74 20 74 68 65 6e 0a 77   ┆ment;  readcall;  if test then w┆
0x007100…007120             72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 63 75 72 5f 64 61 74 65 2c 20 63 75 72 5f 74 69 6d   ┆riteln(output, cur_date, cur_tim┆
0x007120…007140             65 2c 20 76 65 72 73 69 6f 6e 3a 20 35 30 2c 20 27 20 28 27 2c 20 70 61 73 73 36 5f 76 65 72 73   ┆e, version: 50, ' (', pass6_vers┆
0x007140…007160             69 6f 6e 2c 20 27 29 27 29 3b 0a 0a 74 6f 6b 65 6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b   ┆ion, ')');  token:= get_next_tok┆
0x007160…007180             65 6e 3b 0a 0a 77 68 69 6c 65 20 74 6f 6b 65 6e 20 3c 3e 20 65 6e 64 70 72 6f 67 72 61 6d 20 64   ┆en;  while token <> endprogram d┆
0x007180…0071a0             6f 0a 62 65 67 69 6e 0a 0a 77 68 69 6c 65 20 74 6f 6b 65 6e 20 3c 3e 20 62 6c 6f 63 6b 62 65 67   ┆o begin  while token <> blockbeg┆
0x0071a0…0071c0             69 6e 20 64 6f 20 20 20 20 28 2a 20 20 2d 2d 2d 2d 3e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 3e 20   ┆in do    (*  ---->------------> ┆
0x0071c0…0071e0             73 74 61 72 74 20 62 6c 6f 63 6b 20 2d 2d 2d 3e 20 20 2a 29 0a 20 20 63 61 73 65 20 74 6f 6b 65   ┆start block --->  *)   case toke┆
0x0071e0…007200             6e 20 6f 66 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 20 20 20 20 20 21 20 20   ┆n of                 (*      !  ┆
0x007200…007220 (1, 1, 13)  20 20 20 20 20 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0a   ┆          !                  *) ┆
0x007220…007240             20 20 20 20 73 6f 75 72 63 65 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 20 3a 20 68 61 6e 64 6c 65 5f   ┆    source_line_number : handle_┆
0x007240…007260             6c 69 6e 65 3b 20 28 2a 21 3c 2d 2d 20 6e 6c 20 3c 2d 2d 2d 2d 21 20 20 20 20 20 20 20 20 20 20   ┆line; (*!<-- nl <----!          ┆
0x007260…007280             20 20 20 20 20 20 20 20 2a 29 0a 20 20 20 20 63 6f 6d 6d 65 6e 74 20 3a 20 74 6f 6b 65 6e 3a 3d   ┆        *)     comment : token:=┆
0x007280…0072a0             20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 3b 28 2a 21 20 20 20 20 20 20 20 20 20 20 20 20 21   ┆ get_next_token;(*!            !┆
0x0072a0…0072c0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0a 20 20 20 20 6f 70 74 69 6f 6e 20   ┆                  *)     option ┆
0x0072c0…0072e0             3a 20 72 65 61 64 5f 6f 70 74 69 6f 6e 73 3b 20 20 20 20 20 20 28 2a 20 20 20 20 20 20 21 3c 2d   ┆: read_options;      (*      !<-┆
0x0072e0…007300             20 6f 70 74 69 6f 6e 20 3c 2d 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0a   ┆ option <--                  *) ┆
0x007300…007320             65 6e 64 70 72 6f 67 72 61 6d 3a 20 67 6f 74 6f 20 39 39 39 38 3b 20 20 28 2a 20 6e 6f 20 6d 6f   ┆endprogram: goto 9998;  (* no mo┆
0x007320…007340             72 65 20 73 6f 75 72 63 65 73 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 6d 61 72 6b 65 72 72   ┆re sources *) else begin markerr┆
0x007340…007360             6f 72 28 20 31 36 20 29 3b 20 28 2a 20 73 79 6e 74 61 78 20 65 72 72 6f 72 20 2a 29 0a 74 6f 6b   ┆or( 16 ); (* syntax error *) tok┆
0x007360…007380             65 6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 20 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20   ┆en:= get_next_token ; end; end; ┆
0x007380…0073a0             28 2a 20 63 61 73 65 20 2a 29 0a 0a 69 66 20 67 65 6e 65 72 61 74 65 5f 6c 69 6e 65 5f 69 6e 66   ┆(* case *)  if generate_line_inf┆
0x0073a0…0073c0             6f 20 74 68 65 6e 0a 65 6d 69 74 5f 73 74 61 72 74 5f 6f 66 5f 6c 69 6e 65 5f 74 61 62 6c 65 3b   ┆o then emit_start_of_line_table;┆
0x0073c0…0073e0             0a 0a 0a 72 65 61 64 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 20 20 20 20 28 2a 20 73 74 61 72 74   ┆   read_declaration;    (* start┆
0x0073e0…007400             20 62 6c 6f 63 6b 20 2a 29 0a 0a 0a 77 68 69 6c 65 20 74 6f 6b 65 6e 20 3d 20 73 6f 75 72 63 65   ┆ block *)   while token = source┆
0x007400…007420 (1, 1, 14)  5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 20 64 6f 20 68 61 6e 64 6c 65 5f 6c 69 6e 65 3b 0a 0a 69 66   ┆_line_number do handle_line;  if┆
0x007420…007440             20 74 6f 6b 65 6e 20 3d 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 72 65 61 64 5f 6f 70 74 69 6f 6e   ┆ token = option then read_option┆
0x007440…007460             73 3b 20 20 20 28 2a 20 6d 61 79 62 65 20 6f 70 74 69 6f 6e 28 20 6f 70 65 6e 20 72 6f 75 74 69   ┆s;   (* maybe option( open routi┆
0x007460…007480             6e 65 20 29 20 20 20 20 2a 29 0a 0a 69 66 20 70 72 6f 67 72 61 6d 5f 6b 69 6e 64 20 3d 20 63 6c   ┆ne )    *)  if program_kind = cl┆
0x007480…0074a0             6f 73 65 64 5f 72 6f 75 74 69 6e 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 77 68 69 6c 65 20 74   ┆osed_routine then begin  while t┆
0x0074a0…0074c0             6f 6b 65 6e 20 3c 3e 20 73 74 61 72 74 64 65 73 63 72 20 64 6f 0a 0a 63 61 73 65 20 74 6f 6b 65   ┆oken <> startdescr do  case toke┆
0x0074c0…0074e0             6e 20 6f 66 0a 0a 62 6c 6f 63 6b 62 65 67 69 6e 20 3a 20 72 65 61 64 5f 64 65 63 6c 61 72 61 74   ┆n of  blockbegin : read_declarat┆
0x0074e0…007500             69 6f 6e 3b 0a 0a 62 6c 6f 63 6b 65 6e 64 20 20 20 3a 20 75 6e 73 74 61 63 6b 5f 6c 65 76 65 6c   ┆ion;  blockend   : unstack_level┆
0x007500…007520             3b 0a 0a 63 6f 6e 73 74 62 65 67 69 6e 20 3a 20 68 61 6e 64 6c 65 5f 63 6f 6e 73 74 61 6e 74 3b   ┆;  constbegin : handle_constant;┆
0x007520…007540             0a 0a 6c 69 6e 65 5f 74 61 62 6c 65 20 20 3a 20 68 61 6e 64 6c 65 5f 6c 69 6e 65 74 61 62 6c 65   ┆  line_table  : handle_linetable┆
0x007540…007560             3b 0a 0a 73 6f 75 72 63 65 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 20 3a 20 68 61 6e 64 6c 65 5f 6c   ┆;  source_line_number : handle_l┆
0x007560…007580             69 6e 65 3b 0a 0a 6c 61 62 65 6c 64 65 66 20 20 20 3a 20 75 70 64 61 74 65 5f 73 79 6d 62 6f 6c   ┆ine;  labeldef   : update_symbol┆
0x007580…0075a0             3b 0a 0a 63 6f 6e 73 74 64 65 66 20 20 20 3a 20 75 70 64 61 74 65 5f 73 79 6d 62 6f 6c 3b 0a 0a   ┆;  constdef   : update_symbol;  ┆
0x0075a0…0075c0             63 6f 6d 6d 65 6e 74 20 20 20 20 3a 20 28 2a 20 64 6f 20 6e 6f 74 68 69 6e 67 20 2a 29 20 74 6f   ┆comment    : (* do nothing *) to┆
0x0075c0…0075e0             6b 65 6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 3b 0a 0a 73 79 6d 62 6f 6c 20 20 20   ┆ken:= get_next_token;  symbol   ┆
0x0075e0…007600             20 20 3a 20 28 2a 20 6d 75 73 74 20 62 65 20 61 6e 20 6f 70 5f 63 6f 64 65 20 2a 29 20 68 61 6e   ┆  : (* must be an op_code *) han┆
0x007600…007620 (1, 1, 15)  64 6c 65 5f 63 6f 64 65 3b 0a 0a 6f 70 74 69 6f 6e 20 20 20 20 20 3a 20 72 65 61 64 5f 6f 70 74   ┆dle_code;  option     : read_opt┆
0x007620…007640             69 6f 6e 73 3b 0a 0a 6f 74 68 65 72 3a 0a 62 65 67 69 6e 0a 69 66 20 65 6f 66 28 69 6e 70 75 74   ┆ions;  other: begin if eof(input┆
0x007640…007660             29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6d 61 72 6b 65 72 72 6f 72 28 20 31 33 20 29 20 3b 20 28   ┆) then begin markerror( 13 ) ; (┆
0x007660…007680             2a 20 70 72 65 6d 61 74 75 72 65 20 65 6e 64 20 6f 66 20 66 69 6c 65 20 2a 29 0a 74 6f 6b 65 6e   ┆* premature end of file *) token┆
0x007680…0076a0             3a 3d 20 73 74 61 72 74 64 65 73 63 72 3b 20 20 28 2a 20 65 78 69 74 20 63 6f 64 65 20 68 61 6e   ┆:= startdescr;  (* exit code han┆
0x0076a0…0076c0             64 6c 69 6e 67 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 6f 74 68 65 72 20 2a 29 0a 0a   ┆dling *) end; end; (* other *)  ┆
0x0076c0…0076e0             0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 0a 28 2a 20 70 72 65 70 61 72 65 20 69 6e   ┆ end; (* case *)   (* prepare in┆
0x0076e0…007700             74 65 72 6e 61 6c 20 6c 69 6e 6b 69 6e 67 20 6f 66 20 73 68 6f 72 74 20 6a 75 6d 70 73 20 6f 75   ┆ternal linking of short jumps ou┆
0x007700…007720             74 20 6f 66 20 74 68 65 20 73 65 67 6d 65 6e 74 20 2a 29 0a 66 69 6c 6c 5f 69 6e 5f 6a 75 6d 70   ┆t of the segment *) fill_in_jump┆
0x007720…007740             73 3b 0a 0a 69 66 20 67 65 6e 65 72 61 74 65 5f 6c 69 6e 65 5f 69 6e 66 6f 20 74 68 65 6e 0a 62   ┆s;  if generate_line_info then b┆
0x007740…007760             65 67 69 6e 0a 0a 28 2a 20 6d 6f 76 65 20 74 68 65 20 6c 61 73 74 20 6c 69 6e 65 20 74 61 62 6c   ┆egin  (* move the last line tabl┆
0x007760…007780             65 20 74 6f 20 65 6e 64 2d 6f 66 2d 63 6f 64 65 20 2a 29 0a 69 66 20 63 75 72 72 65 6e 74 5f 6f   ┆e to end-of-code *) if current_o┆
0x007780…0077a0             66 66 73 65 74 20 3c 3e 20 73 74 61 72 74 5f 6f 66 5f 6c 69 6e 65 5f 74 61 62 6c 65 20 74 68 65   ┆ffset <> start_of_line_table the┆
0x0077a0…0077c0             6e 0a 62 65 67 69 6e 0a 68 65 6c 70 3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3b 0a 66   ┆n begin help:= current_offset; f┆
0x0077c0…0077e0             6f 72 20 73 74 65 70 3a 3d 20 73 74 61 72 74 5f 6f 66 5f 6c 69 6e 65 5f 74 61 62 6c 65 20 74 6f   ┆or step:= start_of_line_table to┆
0x0077e0…007800             20 6e 65 78 74 5f 6c 69 6e 65 5f 74 61 62 6c 65 5f 65 6e 74 72 79 20 2d 20 31 20 64 6f 0a 62 65   ┆ next_line_table_entry - 1 do be┆
0x007800…007820 (2, 0, 1)   67 69 6e 0a 63 6f 64 65 5f 62 75 66 66 65 72 20 5b 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74   ┆gin code_buffer [ current_offset┆
0x007820…007840             20 5d 3a 3d 20 63 6f 64 65 5f 62 75 66 66 65 72 20 5b 20 73 74 65 70 20 5d 3b 0a 63 75 72 72 65   ┆ ]:= code_buffer [ step ]; curre┆
0x007840…007860             6e 74 5f 6f 66 66 73 65 74 3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 2b 20 31 3b 0a   ┆nt_offset:= current_offset + 1; ┆
0x007860…007880             65 6e 64 3b 0a 73 74 61 72 74 5f 6f 66 5f 6c 69 6e 65 5f 74 61 62 6c 65 3a 3d 20 68 65 6c 70 3b   ┆end; start_of_line_table:= help;┆
0x007880…0078a0             0a 6e 65 78 74 5f 6c 69 6e 65 5f 74 61 62 6c 65 5f 65 6e 74 72 79 3a 3d 20 63 75 72 72 65 6e 74   ┆ next_line_table_entry:= current┆
0x0078a0…0078c0             5f 6f 66 66 73 65 74 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 63 75 72 72 65 6e 74 20   ┆_offset;  (* initialize current ┆
0x0078c0…0078e0             6c 69 6e 65 20 72 65 63 6f 72 64 20 62 65 66 6f 72 65 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20   ┆line record before the internal ┆
0x0078e0…007900             6c 69 6e 6b 69 6e 67 20 69 73 20 70 65 72 66 6f 72 6d 65 64 20 2a 29 0a 77 69 74 68 20 63 75 72   ┆linking is performed *) with cur┆
0x007900…007920             72 65 6e 74 5f 6c 69 6e 65 5f 72 65 63 6f 72 64 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 64 65 66 5f   ┆rent_line_record ^ do begin def_┆
0x007920…007940             73 65 67 6d 65 6e 74 3a 3d 20 63 75 72 72 65 6e 74 5f 73 65 67 6d 65 6e 74 3b 0a 64 65 66 5f 6f   ┆segment:= current_segment; def_o┆
0x007940…007960             66 66 73 65 74 3a 3d 20 73 74 61 72 74 5f 6f 66 5f 6c 69 6e 65 5f 74 61 62 6c 65 3b 0a 6b 69 6e   ┆ffset:= start_of_line_table; kin┆
0x007960…007980             64 3a 3d 20 6c 61 62 65 6c 5f 64 65 66 3b 0a 0a 28 2a 20 70 72 65 70 61 72 65 20 61 64 64 5f 75   ┆d:= label_def;  (* prepare add_u┆
0x007980…0079a0             6e 73 61 74 69 73 66 69 65 64 5f 6e 6f 64 65 20 2e 2e 2e 20 2a 29 0a 63 75 72 72 65 6e 74 5f 6f   ┆nsatisfied_node ... *) current_o┆
0x0079a0…0079c0             66 66 73 65 74 3a 3d 20 73 74 61 72 74 5f 6f 66 5f 6c 69 6e 65 5f 74 61 62 6c 65 3b 0a 28 2a 20   ┆ffset:= start_of_line_table; (* ┆
0x0079c0…0079e0             6c 65 74 20 74 68 65 20 73 75 63 63 65 73 73 6f 72 20 6f 66 20 6c 61 73 74 20 6c 69 6e 65 20 72   ┆let the successor of last line r┆
0x0079e0…007a00             65 63 6f 72 64 20 62 65 20 69 74 73 65 6c 66 20 2a 29 0a 75 73 65 5f 63 68 61 69 6e 3a 3d 20 61   ┆ecord be itself *) use_chain:= a┆
0x007a00…007a20 (2, 0, 2)   64 64 5f 75 6e 73 61 74 69 73 66 69 65 64 5f 6e 6f 64 65 20 28 20 75 73 65 5f 63 68 61 69 6e 2c   ┆dd_unsatisfied_node ( use_chain,┆
0x007a20…007a40             20 66 61 6c 73 65 2c 61 64 64 72 73 69 7a 65 20 29 3b 0a 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 28   ┆ false,addrsize );  end;  end; (┆
0x007a40…007a60             2a 20 61 64 6a 75 73 74 20 63 75 72 72 65 6e 74 20 6f 66 66 73 65 74 20 74 6f 20 62 65 20 66 69   ┆* adjust current offset to be fi┆
0x007a60…007a80             72 73 74 20 62 79 74 65 20 61 66 74 65 72 20 74 68 65 20 6c 69 6e 65 20 74 61 62 6c 65 20 2a 29   ┆rst byte after the line table *)┆
0x007a80…007aa0             0a 63 6f 64 65 5f 62 75 66 66 65 72 20 5b 6e 65 78 74 5f 6c 69 6e 65 5f 74 61 62 6c 65 5f 65 6e   ┆ code_buffer [next_line_table_en┆
0x007aa0…007ac0             74 72 79 2b 31 20 5d 3a 3d 20 30 3b 20 28 2a 20 7a 65 72 6f 20 66 69 6c 6c 20 70 6f 73 73 69 62   ┆try+1 ]:= 0; (* zero fill possib┆
0x007ac0…007ae0             6c 65 20 64 75 6d 6d 79 20 62 79 74 65 20 20 2a 29 0a 28 2a 20 63 6f 64 65 20 62 75 66 66 65 72   ┆le dummy byte  *) (* code buffer┆
0x007ae0…007b00             20 5b 20 6e 65 78 74 20 6c 69 6e 65 20 74 61 62 6c 65 20 65 6e 74 72 79 20 5d 20 77 69 6c 6c 20   ┆ [ next line table entry ] will ┆
0x007b00…007b20             62 65 20 61 73 73 69 67 6e 65 64 20 61 20 74 65 72 6d 69 6e 61 74 69 6e 67 20 6c 69 6e 65 0a 61   ┆be assigned a terminating line a┆
0x007b20…007b40             64 64 20 69 6e 20 70 72 6f 63 65 64 75 72 65 20 6f 75 74 63 6f 64 65 20 21 21 21 21 20 20 2a 29   ┆dd in procedure outcode !!!!  *)┆
0x007b40…007b60             0a 28 2a 24 52 2d 2a 29 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d 20 6e 65 78 74 5f 6c   ┆ (*$R-*) current_offset:= next_l┆
0x007b60…007b80             69 6e 65 5f 74 61 62 6c 65 5f 65 6e 74 72 79 20 64 69 76 20 32 20 2a 20 32 20 2b 20 32 3b 20 28   ┆ine_table_entry div 2 * 2 + 2; (┆
0x007b80…007ba0             2a 20 73 74 61 72 74 20 6f 66 20 6e 65 78 74 20 77 6f 72 64 20 2a 29 0a 0a 6c 61 73 74 5f 70 61   ┆* start of next word *)  last_pa┆
0x007ba0…007bc0             67 65 3a 3d 20 74 72 75 65 3b 0a 0a 28 2a 20 69 6e 20 63 61 73 65 20 6f 66 20 61 6c 69 67 6e 6d   ┆ge:= true;  (* in case of alignm┆
0x007bc0…007be0             65 6e 74 20 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 20 69 73 20 6e 6f 74 20 63 6f 72 72 65   ┆ent rem_buffer_size is not corre┆
0x007be0…007c00             63 74 2c 20 74 68 65 72 65 66 6f 72 65 20 2a 29 0a 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65   ┆ct, therefore *) rem_buffer_size┆
0x007c00…007c20 (2, 0, 3)   3a 3d 20 73 65 67 6d 65 6e 74 5f 73 69 7a 65 20 2b 20 31 20 2d 20 63 75 72 72 65 6e 74 5f 6f 66   ┆:= segment_size + 1 - current_of┆
0x007c20…007c40             66 73 65 74 20 2d 20 6c 6f 6e 67 6a 75 6d 70 5f 73 69 7a 65 3b 0a 28 2a 24 52 2b 2a 29 0a 0a 28   ┆fset - longjump_size; (*$R+*)  (┆
0x007c40…007c60             2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 73 20 6c 65 6e 67 74   ┆* initialize the constants lengt┆
0x007c60…007c80             68 5f 6f 66 5f 6c 61 73 74 5f 73 65 67 6d 65 6e 74 20 61 6e 64 20 6c 61 73 74 5f 6c 69 6e 65 5f   ┆h_of_last_segment and last_line_┆
0x007c80…007ca0             6e 75 6d 62 65 72 20 2a 29 0a 0a 77 69 74 68 20 6c 65 6e 67 74 68 5f 6f 66 5f 6c 61 73 74 5f 73   ┆number *)  with length_of_last_s┆
0x007ca0…007cc0             65 67 6d 65 6e 74 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 64 65 66 5f 73 65 67 6d 65 6e 74 3a 3d 20   ┆egment ^ do begin def_segment:= ┆
0x007cc0…007ce0             31 3b 20 28 2a 20 64 65 66 69 6e 65 64 20 2a 29 0a 64 65 66 5f 6f 66 66 73 65 74 20 3a 3d 20 73   ┆1; (* defined *) def_offset := s┆
0x007ce0…007d00             74 61 72 74 5f 6f 66 5f 6c 69 6e 65 5f 74 61 62 6c 65 3b 0a 6b 69 6e 64 3a 3d 20 63 6f 6e 73 74   ┆tart_of_line_table; kind:= const┆
0x007d00…007d20             61 6e 74 5f 64 65 66 3b 0a 6e 65 78 74 5f 6e 61 6d 65 3a 3d 20 69 6e 74 65 72 6e 61 6c 5f 6c 69   ┆ant_def; next_name:= internal_li┆
0x007d20…007d40             6e 6b 5f 6c 69 73 74 3b 0a 69 6e 74 65 72 6e 61 6c 5f 6c 69 6e 6b 5f 6c 69 73 74 3a 3d 20 6c 65   ┆nk_list; internal_link_list:= le┆
0x007d40…007d60             6e 67 74 68 5f 6f 66 5f 6c 61 73 74 5f 73 65 67 6d 65 6e 74 3b 0a 65 6e 64 3b 0a 0a 77 69 74 68   ┆ngth_of_last_segment; end;  with┆
0x007d60…007d80             20 6c 61 73 74 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 64 65 66   ┆ last_line_number ^ do begin def┆
0x007d80…007da0             5f 73 65 67 6d 65 6e 74 3a 3d 20 31 3b 20 28 2a 20 64 65 66 69 6e 65 64 20 2a 29 0a 64 65 66 5f   ┆_segment:= 1; (* defined *) def_┆
0x007da0…007dc0             6f 66 66 73 65 74 20 3a 3d 20 63 75 72 72 65 6e 74 5f 73 6f 75 72 63 65 5f 6c 69 6e 65 3b 0a 6b   ┆offset := current_source_line; k┆
0x007dc0…007de0             69 6e 64 3a 3d 20 63 6f 6e 73 74 61 6e 74 5f 64 65 66 3b 0a 6e 65 78 74 5f 6e 61 6d 65 3a 3d 20   ┆ind:= constant_def; next_name:= ┆
0x007de0…007e00             69 6e 74 65 72 6e 61 6c 5f 6c 69 6e 6b 5f 6c 69 73 74 3b 0a 69 6e 74 65 72 6e 61 6c 5f 6c 69 6e   ┆internal_link_list; internal_lin┆
0x007e00…007e20 (2, 0, 4)   6b 5f 6c 69 73 74 3a 3d 20 6c 61 73 74 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 3b 0a 65 6e 64 3b 0a   ┆k_list:= last_line_number; end; ┆
0x007e20…007e40             0a 65 6e 64 3b 20 28 2a 20 6c 69 6e 65 20 74 61 62 6c 65 20 68 61 6e 64 6c 69 6e 67 20 2a 29 0a   ┆ end; (* line table handling *) ┆
0x007e40…007e60             0a 65 6e 64 20 28 2a 20 63 6c 6f 73 65 64 20 72 6f 75 74 69 6e 65 20 6f 72 20 70 72 6f 63 65 73   ┆ end (* closed routine or proces┆
0x007e60…007e80             73 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28 2a 20 6f 70 65 6e 20 72 6f 75 74 69 6e 65 20   ┆s *) else begin (* open routine ┆
0x007e80…007ea0             2a 29 0a 28 2a 20 72 6f 6f 6d 20 66 6f 72 20 6a 75 6d 70 20 74 6f 20 6e 65 78 74 20 70 61 67 65   ┆*) (* room for jump to next page┆
0x007ea0…007ec0             20 61 6e 64 20 61 20 6c 69 6e 65 20 74 61 62 6c 65 20 69 73 20 6e 6f 74 20 6e 65 65 64 65 64 20   ┆ and a line table is not needed ┆
0x007ec0…007ee0             2a 29 0a 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 3a 3d 20 72 65 6d 5f 62 75 66 66 65 72 5f   ┆*) rem_buffer_size:= rem_buffer_┆
0x007ee0…007f00             73 69 7a 65 20 2b 20 6c 6f 6e 67 6a 75 6d 70 5f 73 69 7a 65 20 2b 20 6c 69 6e 65 5f 74 61 62 6c   ┆size + longjump_size + line_tabl┆
0x007f00…007f20             65 5f 73 69 7a 65 3b 0a 73 74 61 72 74 5f 6f 66 5f 6c 69 6e 65 5f 74 61 62 6c 65 3a 3d 20 30 3b   ┆e_size; start_of_line_table:= 0;┆
0x007f20…007f40             20 28 2a 20 65 6d 69 74 63 6f 64 65 20 77 69 6c 6c 20 6e 6f 74 20 72 65 73 65 72 76 65 20 72 6f   ┆ (* emitcode will not reserve ro┆
0x007f40…007f60             6f 6d 20 66 6f 72 20 6c 69 6e 65 74 61 62 6c 65 73 20 2a 29 0a 77 68 69 6c 65 20 74 6f 6b 65 6e   ┆om for linetables *) while token┆
0x007f60…007f80             20 3c 3e 20 73 74 61 72 74 64 65 73 63 72 20 64 6f 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66   ┆ <> startdescr do  case token of┆
0x007f80…007fa0             0a 0a 6f 70 74 69 6f 6e 3a 20 72 65 61 64 5f 6f 70 74 69 6f 6e 73 3b 0a 0a 63 6f 6d 6d 65 6e 74   ┆  option: read_options;  comment┆
0x007fa0…007fc0             2c 0a 73 6f 75 72 63 65 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 3a 20 62 65 67 69 6e 0a 28 2a 20 73   ┆, source_line_number: begin (* s┆
0x007fc0…007fe0             6b 69 70 20 74 68 65 20 6c 69 6e 65 20 2a 29 0a 6c 69 6e 65 69 6e 64 65 78 3a 3d 20 6c 69 6e 65   ┆kip the line *) lineindex:= line┆
0x007fe0…008000             6c 65 6e 67 74 68 3b 0a 74 6f 6b 65 6e 3a 3d 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 3b 0a   ┆length; token:= get_next_token; ┆
0x008000…008020 (2, 0, 5)   65 6e 64 3b 0a 0a 6f 74 68 65 72 3a 20 62 65 67 69 6e 0a 6d 61 72 6b 65 72 72 6f 72 28 20 31 33   ┆end;  other: begin markerror( 13┆
0x008020…008040             20 29 3b 20 20 28 2a 20 70 72 65 6d 61 74 75 72 65 20 65 6e 64 20 6f 66 20 63 6f 64 65 20 2a 29   ┆ );  (* premature end of code *)┆
0x008040…008060             0a 74 6f 6b 65 6e 3a 3d 20 73 74 61 72 74 64 65 73 63 72 3b 20 28 2a 20 66 6f 72 63 65 20 65 78   ┆ token:= startdescr; (* force ex┆
0x008060…008080             69 74 20 6f 66 20 20 77 68 69 6c 65 20 20 3c 3e 20 73 74 61 72 74 64 65 73 63 72 20 2e 2e 2e 20   ┆it of  while  <> startdescr ... ┆
0x008080…0080a0             2a 29 0a 65 6e 64 3b 0a 0a 0a 65 6c 73 65 0a 0a 62 65 67 69 6e 0a 69 66 20 74 6f 6b 65 6e 20 3d   ┆*) end;   else  begin if token =┆
0x0080a0…0080c0             20 73 79 6d 62 6f 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 63 68 65 63 6b 5f 6f 70 65 6e 5f 63 6f   ┆ symbol then begin check_open_co┆
0x0080c0…0080e0             64 65 3a 3d 20 66 69 6e 64 5f 63 6f 64 65 3b 20 20 28 2a 20 63 68 65 63 6b 20 6c 65 67 61 6c 20   ┆de:= find_code;  (* check legal ┆
0x0080e0…008100             6f 70 63 6f 64 65 20 2a 29 0a 6c 69 6e 65 69 6e 64 65 78 3a 3d 20 6c 69 6e 65 6c 65 6e 67 74 68   ┆opcode *) lineindex:= linelength┆
0x008100…008120             3b 20 28 2a 20 73 6b 69 70 20 70 61 72 61 6d 65 72 74 65 72 73 20 61 6e 64 20 63 6f 6d 6d 65 6e   ┆; (* skip paramerters and commen┆
0x008120…008140             74 73 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 28 74 6f 6b 65 6e 20 3d 20 62 6c 6f 63 6b   ┆ts *) end else if (token = block┆
0x008140…008160             62 65 67 69 6e 29 20 6f 72 20 28 74 6f 6b 65 6e 20 3d 20 63 6f 6e 73 74 64 65 66 29 20 74 68 65   ┆begin) or (token = constdef) the┆
0x008160…008180             6e 0a 6c 69 6e 65 69 6e 64 65 78 3a 3d 20 6c 69 6e 65 6c 65 6e 67 74 68 3b 20 28 2a 20 73 6b 69   ┆n lineindex:= linelength; (* ski┆
0x008180…0081a0             70 20 74 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 70 61 72 74 20 6f 66 20 74 68 65 20 6c 69 6e 65   ┆p the remaining part of the line┆
0x0081a0…0081c0             2c 0a 69 74 20 69 73 20 6e 6f 74 20 63 68 65 63 6b 65 64 20 69 66 20 74 68 65 20 64 65 63 6c 61   ┆, it is not checked if the decla┆
0x0081c0…0081e0             72 61 74 69 6f 6e 20 69 73 20 74 65 72 6d 69 6e 61 74 65 64 20 63 6f 72 72 65 63 74 20 2a 29 0a   ┆ration is terminated correct *) ┆
0x0081e0…008200             69 66 20 6e 6f 74 20 70 72 69 6e 74 65 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 70 72 69 6e 74 65   ┆if not printed then begin printe┆
0x008200…008220 (2, 0, 6)   64 3a 3d 20 74 72 75 65 3b 0a 6c 69 6e 65 20 5b 20 6c 69 6e 65 6c 65 6e 67 74 68 20 2b 20 31 20   ┆d:= true; line [ linelength + 1 ┆
0x008220…008240             5d 3a 3d 20 27 3b 27 3b 0a 28 2a 20 61 6c 77 61 79 73 20 61 6e 20 65 76 65 6e 20 6e 75 6d 62 65   ┆]:= ';'; (* always an even numbe┆
0x008240…008260             72 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 20 70 65 72 20 6c 69 6e 65 20 2a 29 0a 73 74 65 70   ┆r of characters per line *) step┆
0x008260…008280             3a 3d 20 2d 31 3b 0a 72 65 70 65 61 74 0a 73 74 65 70 3a 3d 20 73 74 65 70 20 2b 20 32 3b 0a 69   ┆:= -1; repeat step:= step + 2; i┆
0x008280…0082a0             66 20 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 20 3c 20 32 20 74 68 65 6e 0a 62 65 67 69 6e   ┆f rem_buffer_size < 2 then begin┆
0x0082a0…0082c0             0a 65 6d 69 74 63 6f 64 65 28 66 61 6c 73 65 29 3b 0a 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a   ┆ emitcode(false); rem_buffer_siz┆
0x0082c0…0082e0             65 3a 3d 20 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 20 2b 20 6c 6f 6e 67 6a 75 6d 70 5f 73   ┆e:= rem_buffer_size + longjump_s┆
0x0082e0…008300             69 7a 65 0a 65 6e 64 3b 0a 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 3a 3d 20 72 65 6d 5f 62   ┆ize end; rem_buffer_size:= rem_b┆
0x008300…008320             75 66 66 65 72 5f 73 69 7a 65 20 2d 20 32 3b 0a 69 66 20 6c 69 6e 65 20 5b 20 73 74 65 70 20 2d   ┆uffer_size - 2; if line [ step -┆
0x008320…008340             20 31 20 5d 20 3d 20 27 20 27 20 74 68 65 6e 20 20 28 2a 20 6e 62 20 6c 69 6e 65 20 5b 20 30 20   ┆ 1 ] = ' ' then  (* nb line [ 0 ┆
0x008340…008360             5d 20 3d 20 27 20 27 20 20 2a 29 0a 62 65 67 69 6e 20 28 2a 20 73 74 61 74 65 20 3a 20 20 61 66   ┆] = ' '  *) begin (* state :  af┆
0x008360…008380             74 65 72 20 73 70 61 63 65 28 73 29 20 2a 29 0a 77 68 69 6c 65 20 6c 69 6e 65 20 5b 20 73 74 65   ┆ter space(s) *) while line [ ste┆
0x008380…0083a0             70 20 5d 20 3d 20 27 20 27 20 64 6f 20 73 74 65 70 3a 3d 20 73 74 65 70 20 2b 20 31 3b 20 28 2a   ┆p ] = ' ' do step:= step + 1; (*┆
0x0083a0…0083c0             20 73 6b 69 70 20 2a 29 0a 69 66 20 6c 69 6e 65 20 5b 20 73 74 65 70 20 5d 20 3d 20 27 3b 27 20   ┆ skip *) if line [ step ] = ';' ┆
0x0083c0…0083e0             74 68 65 6e 20 67 6f 74 6f 20 39 39 39 37 3b 20 28 2a 20 64 72 6f 70 20 74 72 61 69 6c 69 6e 67   ┆then goto 9997; (* drop trailing┆
0x0083e0…008400             20 62 6c 61 6e 6b 73 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 6c 69 6e 65 20 5b 20 73 74   ┆ blanks *) end else if line [ st┆
0x008400…008420 (2, 0, 7)   65 70 20 5d 20 3d 20 27 20 27 20 74 68 65 6e 0a 28 2a 20 73 74 61 74 65 20 3a 20 73 74 61 72 74   ┆ep ] = ' ' then (* state : start┆
0x008420…008440             20 6f 66 20 73 70 61 63 65 28 73 29 20 20 2a 29 0a 62 65 67 69 6e 0a 77 68 69 6c 65 20 6c 69 6e   ┆ of space(s)  *) begin while lin┆
0x008440…008460             65 20 5b 20 73 74 65 70 20 2b 20 31 20 5d 20 3d 20 27 20 27 20 64 6f 20 73 74 65 70 3a 3d 20 73   ┆e [ step + 1 ] = ' ' do step:= s┆
0x008460…008480             74 65 70 20 2b 20 31 3b 20 28 2a 20 73 6b 69 70 20 2a 29 0a 69 66 20 6c 69 6e 65 20 5b 20 73 74   ┆tep + 1; (* skip *) if line [ st┆
0x008480…0084a0             65 70 20 2b 20 31 20 5d 20 3d 20 27 3b 27 20 74 68 65 6e 20 28 2a 20 64 72 6f 70 20 74 72 61 69   ┆ep + 1 ] = ';' then (* drop trai┆
0x0084a0…0084c0             6c 69 6e 67 20 62 6c 61 6e 6b 73 20 2a 29 0a 67 6f 74 6f 20 39 39 39 37 3b 20 28 2a 20 65 6e 64   ┆ling blanks *) goto 9997; (* end┆
0x0084c0…0084e0             20 6f 66 20 6c 69 6e 65 20 61 63 74 69 6f 6e 2c 20 62 75 66 66 65 72 20 72 6f 6f 6d 20 68 61 73   ┆ of line action, buffer room has┆
0x0084e0…008500             20 62 65 65 6e 20 72 65 73 65 72 76 65 64 20 2a 29 0a 65 6e 64 3b 0a 6f 75 74 77 6f 72 64 28 20   ┆ been reserved *) end; outword( ┆
0x008500…008520             6f 72 64 28 20 6c 69 6e 65 20 5b 20 73 74 65 70 20 5d 20 29 20 2a 20 6d 61 78 62 79 74 65 20 2b   ┆ord( line [ step ] ) * maxbyte +┆
0x008520…008540             0a 6f 72 64 28 20 6c 69 6e 65 20 5b 20 73 74 65 70 20 2b 20 31 20 5d 20 29 20 29 3b 0a 75 6e 74   ┆ ord( line [ step + 1 ] ) ); unt┆
0x008540…008560             69 6c 20 28 6c 69 6e 65 20 5b 20 73 74 65 70 20 2b 20 31 20 5d 20 3d 20 27 3b 27 29 20 6f 72 20   ┆il (line [ step + 1 ] = ';') or ┆
0x008560…008580             28 6c 69 6e 65 20 5b 20 73 74 65 70 20 2b 20 32 20 5d 20 3d 20 27 3b 27 29 20 3b 0a 0a 0a 69 66   ┆(line [ step + 2 ] = ';') ;   if┆
0x008580…0085a0             20 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 20 3c 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆ rem_buffer_size < 2 then begin ┆
0x0085a0…0085c0             65 6d 69 74 63 6f 64 65 28 66 61 6c 73 65 29 3b 0a 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65   ┆emitcode(false); rem_buffer_size┆
0x0085c0…0085e0             3a 3d 20 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 20 2b 20 6c 6f 6e 67 6a 75 6d 70 5f 73 69   ┆:= rem_buffer_size + longjump_si┆
0x0085e0…008600             7a 65 3b 0a 65 6e 64 3b 0a 0a 72 65 6d 5f 62 75 66 66 65 72 5f 73 69 7a 65 3a 3d 20 72 65 6d 5f   ┆ze; end;  rem_buffer_size:= rem_┆
0x008600…008620 (2, 0, 8)   62 75 66 66 65 72 5f 73 69 7a 65 20 2d 20 32 3b 0a 39 39 39 37 3a 20 6f 75 74 77 6f 72 64 28 20   ┆buffer_size - 2; 9997: outword( ┆
0x008620…008640             6f 72 64 28 27 20 27 29 20 2a 20 6d 61 78 62 79 74 65 20 2b 20 31 30 20 29 3b 0a 65 6e 64 3b 20   ┆ord(' ') * maxbyte + 10 ); end; ┆
0x008640…008660             28 2a 20 63 6f 70 79 20 6c 69 6e 65 20 2a 29 0a 0a 74 6f 6b 65 6e 3a 3d 20 67 65 74 5f 6e 65 78   ┆(* copy line *)  token:= get_nex┆
0x008660…008680             74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 6f 74 68 65 72 77 69 73 65 20 2a 29 0a 65   ┆t_token;  end; (* otherwise *) e┆
0x008680…0086a0             6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 0a 65 6e 64 3b 20 28 2a 20 6f 70 65 6e 20 72 6f   ┆nd; (* case *)   end; (* open ro┆
0x0086a0…0086c0             75 74 69 6e 65 73 20 2a 29 0a 0a 68 61 6e 64 6c 65 5f 64 65 73 63 72 69 70 74 6f 72 5f 62 6c 6f   ┆utines *)  handle_descriptor_blo┆
0x0086c0…0086e0             63 6b 3b 0a 0a 69 6e 73 65 72 74 5f 63 6f 6e 73 74 61 6e 74 73 3b 0a 69 6e 69 74 5f 62 65 74 77   ┆ck;  insert_constants; init_betw┆
0x0086e0…008700             65 65 6e 5f 63 6f 64 65 5f 62 6c 6f 63 6b 73 3b 20 28 2a 20 70 72 65 70 61 72 65 20 6e 65 78 74   ┆een_code_blocks; (* prepare next┆
0x008700…008720             20 63 6f 64 65 20 62 6c 6f 63 6b 20 20 2a 29 0a 0a 77 68 69 6c 65 20 74 6f 6b 65 6e 20 3d 20 73   ┆ code block  *)  while token = s┆
0x008720…008740             6f 75 72 63 65 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 20 64 6f 20 68 61 6e 64 6c 65 5f 6c 69 6e 65   ┆ource_line_number do handle_line┆
0x008740…008760             3b 0a 0a 65 6e 64 3b 20 20 20 28 2a 20 77 68 69 6c 65 20 74 6f 6b 65 6e 20 3c 3e 20 65 6e 64 70   ┆;  end;   (* while token <> endp┆
0x008760…008780             72 6f 67 72 61 6d 20 2a 29 0a 39 39 39 38 3a 20 20 28 2a 20 6e 6f 20 6d 6f 72 65 20 69 6e 70 75   ┆rogram *) 9998:  (* no more inpu┆
0x008780…0087a0             74 20 6d 6f 64 75 6c 65 73 2c 20 74 65 72 6d 69 6e 61 74 65 20 70 61 73 73 36 20 2a 29 0a 0a 69   ┆t modules, terminate pass6 *)  i┆
0x0087a0…0087c0             66 20 63 6f 64 65 6c 69 73 74 20 61 6e 64 20 6e 6f 74 20 70 72 69 6e 74 65 64 20 74 68 65 6e 20   ┆f codelist and not printed then ┆
0x0087c0…0087e0             70 72 69 6e 74 6c 69 6e 65 3b 20 28 2a 20 6f 75 74 70 75 74 20 74 68 65 20 6c 61 73 74 20 6c 69   ┆printline; (* output the last li┆
0x0087e0…008800             6e 65 20 2a 29 0a 0a 62 6c 6f 63 6b 77 72 69 74 65 28 20 63 6f 64 65 2c 20 65 6e 64 5f 6f 66 5f   ┆ne *)  blockwrite( code, end_of_┆
0x008800…008820 (2, 0, 9)   63 6f 64 65 2c 20 32 20 29 3b 20 28 2a 20 65 6e 64 20 6f 66 20 63 6f 64 65 20 6d 61 72 6b 20 2a   ┆code, 2 ); (* end of code mark *┆
0x008820…008840             29 0a 0a 69 66 20 6f 62 6a 65 63 74 5f 63 6f 64 65 5f 66 69 6c 65 5f 6f 70 65 6e 65 64 20 74 68   ┆)  if object_code_file_opened th┆
0x008840…008860             65 6e 0a 62 65 67 69 6e 0a 63 6c 6f 73 65 28 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6e   ┆en begin close(code); end;  if n┆
0x008860…008880             6f 74 20 70 72 65 73 65 72 76 65 5f 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 62 65 67 69 6e 0a 63 6c   ┆ot preserve_option then begin cl┆
0x008880…0088a0             6f 73 65 28 69 6e 70 75 74 29 3b 0a 65 72 61 73 65 28 69 6e 70 75 74 29 3b 0a 63 6c 6f 73 65 28   ┆ose(input); erase(input); close(┆
0x0088a0…0088c0             63 6f 64 65 66 69 6c 65 29 3b 0a 61 73 73 69 67 6e 28 63 6f 64 65 66 69 6c 65 2c 20 63 6f 6e 63   ┆codefile); assign(codefile, conc┆
0x0088c0…0088e0             61 74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 36 5f 77 6f 72 6b 6e 61 6d 65 29   ┆at(path1_name, o_pass6_workname)┆
0x0088e0…008900             29 3b 0a 65 72 61 73 65 28 63 6f 64 65 66 69 6c 65 29 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a   ┆); erase(codefile) end;  end; (*┆
0x008900…008920             20 72 74 70 20 70 61 73 73 36 20 2a 29 0a 0a 0a 28 2a 24 46 2b 2a 29 20 70 72 6f 63 65 64 75 72   ┆ rtp pass6 *)   (*$F+*) procedur┆
0x008920…008940             65 20 6d 79 65 78 69 74 3b 20 28 2a 24 46 2d 2a 29 0a 62 65 67 69 6e 0a 0a 65 78 69 74 70 72 6f   ┆e myexit; (*$F-*) begin  exitpro┆
0x008940…008960             63 20 3a 3d 20 65 78 69 74 73 61 76 65 3b 0a 0a 69 66 20 65 78 69 74 63 6f 64 65 20 3d 20 30 20   ┆c := exitsave;  if exitcode = 0 ┆
0x008960…008980             74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 66 20 65 72 72 6f 72 63 6f 75 6e 74 20 3e 20 30 20 74 68   ┆then begin  if errorcount > 0 th┆
0x008980…0089a0             65 6e 20 70 72 69 6e 74 65 72 72 6f 72 73 20 65 6c 73 65 20 77 72 69 74 65 6c 6e 3b 0a 0a 65 6e   ┆en printerrors else writeln;  en┆
0x0089a0…0089c0             64 3b 0a 0a 72 75 6e 74 69 6d 65 5f 65 72 72 6f 72 28 27 65 6e 64 20 6f 66 20 52 45 41 4c 2d 54   ┆d;  runtime_error('end of REAL-T┆
0x0089c0…0089e0             49 4d 45 20 50 41 53 43 41 4c 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 6f 72 20 52 43 33 35 30   ┆IME PASCAL compilation for RC350┆
0x0089e0…008a00             32 2f 32 27 29 3b 0a 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 75 72 76 65 79 5f 6f   ┆2/2');  end;  procedure survey_o┆
0x008a00…008a20 (2, 0, 10)  75 74 3b 0a 76 61 72 20 63 75 72 5f 63 6c 6f 63 6b 3a 20 64 61 74 65 74 69 6d 65 3b 0a 20 20 20   ┆ut; var cur_clock: datetime;    ┆
0x008a20…008a40             20 63 75 72 5f 70 61 63 6b 65 64 5f 74 69 6d 65 2c 20 73 74 61 72 74 5f 70 61 63 6b 65 64 5f 74   ┆ cur_packed_time, start_packed_t┆
0x008a40…008a60             69 6d 65 3a 20 6c 6f 6e 67 69 6e 74 3b 0a 20 20 20 20 68 65 61 70 66 72 65 65 3a 20 6c 6f 6e 67   ┆ime: longint;     heapfree: long┆
0x008a60…008a80             69 6e 74 3b 0a 62 65 67 69 6e 0a 0a 67 65 74 63 6c 6f 63 6b 28 63 75 72 5f 63 6c 6f 63 6b 29 3b   ┆int; begin  getclock(cur_clock);┆
0x008a80…008aa0             0a 70 61 63 6b 74 69 6d 65 28 63 75 72 5f 63 6c 6f 63 6b 2c 20 63 75 72 5f 70 61 63 6b 65 64 5f   ┆ packtime(cur_clock, cur_packed_┆
0x008aa0…008ac0             74 69 6d 65 29 3b 0a 70 61 63 6b 74 69 6d 65 28 73 74 61 72 74 5f 63 6c 6f 63 6b 2c 73 74 61 72   ┆time); packtime(start_clock,star┆
0x008ac0…008ae0             74 5f 70 61 63 6b 65 64 5f 74 69 6d 65 29 3b 0a 75 6e 70 61 63 6b 74 69 6d 65 28 63 75 72 5f 70   ┆t_packed_time); unpacktime(cur_p┆
0x008ae0…008b00             61 63 6b 65 64 5f 74 69 6d 65 20 2d 20 73 74 61 72 74 5f 70 61 63 6b 65 64 5f 74 69 6d 65 2c 20   ┆acked_time - start_packed_time, ┆
0x008b00…008b20             63 75 72 5f 63 6c 6f 63 6b 29 3b 0a 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 77 72   ┆cur_clock);  writeln(output); wr┆
0x008b20…008b40             69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75 72 76 65   ┆iteln(output, 'Information surve┆
0x008b40…008b60             79 20 66 72 6f 6d 20 27 2c 20 76 65 72 73 69 6f 6e 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70   ┆y from ', version); writeln(outp┆
0x008b60…008b80             75 74 2c 20 27 4d 61 78 20 6e 75 6d 62 65 72 20 6f 66 20 61 63 74 69 76 65 20 6c 61 62 65 6c 73   ┆ut, 'Max number of active labels┆
0x008b80…008ba0             3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 0a 73 75 72 76 65 79 5f 6e 61 6d 65   ┆:                 ', survey_name┆
0x008ba0…008bc0             5f 6e 6f 64 65 73 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 4d 61 78 20 6e 75   ┆_nodes); writeln(output, 'Max nu┆
0x008bc0…008be0             6d 62 65 72 20 6f 66 20 6c 61 62 65 6c 73 20 61 74 20 6f 6e 65 20 69 6e 73 74 72 75 63 74 69 6f   ┆mber of labels at one instructio┆
0x008be0…008c00             6e 3a 20 20 20 20 20 27 2c 0a 73 75 72 76 65 79 5f 63 75 72 5f 6c 61 62 65 6c 5f 6e 6f 64 65 73   ┆n:     ', survey_cur_label_nodes┆
0x008c00…008c20 (2, 0, 11)  29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 4d 61 78 20 6e 75 6d 62 65 72 20 6f   ┆); writeln(output, 'Max number o┆
0x008c20…008c40             66 20 75 6e 73 6f 6c 76 65 64 20 69 6e 74 65 72 64 65 70 65 6e 64 65 6e 63 69 65 73 3a 20 20 20   ┆f unsolved interdependencies:   ┆
0x008c40…008c60             20 27 2c 0a 73 75 72 76 65 79 5f 64 65 70 65 6e 64 65 6e 63 65 5f 6e 6f 64 65 73 29 3b 0a 77 72   ┆ ', survey_dependence_nodes); wr┆
0x008c60…008c80             69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 44 65 65 70 65 73 74 20 62 6c 6f 63 6b 20 6e 65 73   ┆iteln(output, 'Deepest block nes┆
0x008c80…008ca0             74 69 6e 67 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 0a 73   ┆ting:                       ', s┆
0x008ca0…008cc0             75 72 76 65 79 5f 6c 65 76 65 6c 5f 6e 6f 64 65 73 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70   ┆urvey_level_nodes); writeln(outp┆
0x008cc0…008ce0             75 74 2c 20 27 4d 61 78 20 6e 75 6d 62 65 72 20 6f 66 20 75 6e 73 6f 6c 76 65 64 20 6a 75 6d 70   ┆ut, 'Max number of unsolved jump┆
0x008ce0…008d00             73 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 0a 73 75 72 76 65 79 5f 6a 75 6d 70   ┆s:                ', survey_jump┆
0x008d00…008d20             5f 6e 6f 64 65 73 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 4d 61 78 20 6e 75   ┆_nodes); writeln(output, 'Max nu┆
0x008d20…008d40             6d 62 65 72 20 6f 66 20 75 6e 73 6f 6c 76 65 64 20 72 65 66 65 72 65 6e 63 65 73 3a 20 20 20 20   ┆mber of unsolved references:    ┆
0x008d40…008d60             20 20 20 20 20 20 20 27 2c 0a 73 75 72 76 65 79 5f 75 6e 73 61 74 5f 6e 6f 64 65 73 29 3b 0a 77   ┆       ', survey_unsat_nodes); w┆
0x008d60…008d80             72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 47 72 65 61 74 65 73 74 20 63 61 73 65 20 74 61   ┆riteln(output, 'Greatest case ta┆
0x008d80…008da0             62 6c 65 20 6f 72 20 73 74 72 75 63 74 75 72 65 64 20 63 6f 6e 73 74 61 6e 74 3a 20 20 27 2c 0a   ┆ble or structured constant:  ', ┆
0x008da0…008dc0             73 75 72 76 65 79 5f 67 72 65 61 74 65 73 74 5f 63 6f 6e 73 74 29 3b 0a 77 72 69 74 65 20 20 28   ┆survey_greatest_const); write  (┆
0x008dc0…008de0             6f 75 74 70 75 74 2c 20 27 45 6c 61 70 73 65 64 20 74 69 6d 65 20 28 68 6f 75 72 73 2e 6d 69 6e   ┆output, 'Elapsed time (hours.min┆
0x008de0…008e00             75 74 65 73 2e 73 65 63 6f 6e 64 73 29 3a 20 20 20 20 20 20 20 20 27 29 3b 0a 69 66 20 63 75 72   ┆utes.seconds):        '); if cur┆
0x008e00…008e20 (2, 0, 12)  5f 63 6c 6f 63 6b 2e 68 6f 75 72 20 3c 20 31 30 20 74 68 65 6e 20 77 72 69 74 65 28 6f 75 74 70   ┆_clock.hour < 10 then write(outp┆
0x008e20…008e40             75 74 2c 20 27 30 27 29 3b 0a 77 72 69 74 65 20 20 28 6f 75 74 70 75 74 2c 20 63 75 72 5f 63 6c   ┆ut, '0'); write  (output, cur_cl┆
0x008e40…008e60             6f 63 6b 2e 68 6f 75 72 3a 20 31 2c 20 27 2e 27 29 3b 0a 69 66 20 63 75 72 5f 63 6c 6f 63 6b 2e   ┆ock.hour: 1, '.'); if cur_clock.┆
0x008e60…008e80             6d 69 6e 20 20 3c 20 31 30 20 74 68 65 6e 20 77 72 69 74 65 28 6f 75 74 70 75 74 2c 20 27 30 27   ┆min  < 10 then write(output, '0'┆
0x008e80…008ea0             29 3b 0a 77 72 69 74 65 20 20 28 6f 75 74 70 75 74 2c 20 63 75 72 5f 63 6c 6f 63 6b 2e 6d 69 6e   ┆); write  (output, cur_clock.min┆
0x008ea0…008ec0             20 3a 20 31 2c 20 27 2e 27 29 3b 0a 69 66 20 63 75 72 5f 63 6c 6f 63 6b 2e 73 65 63 20 20 3c 20   ┆ : 1, '.'); if cur_clock.sec  < ┆
0x008ec0…008ee0             31 30 20 74 68 65 6e 20 77 72 69 74 65 28 6f 75 74 70 75 74 2c 20 27 30 27 29 3b 0a 77 72 69 74   ┆10 then write(output, '0'); writ┆
0x008ee0…008f00             65 6c 6e 28 6f 75 74 70 75 74 2c 20 63 75 72 5f 63 6c 6f 63 6b 2e 73 65 63 20 3a 20 31 29 3b 0a   ┆eln(output, cur_clock.sec : 1); ┆
0x008f00…008f20             68 65 61 70 66 72 65 65 20 3a 3d 20 6d 65 6d 61 76 61 69 6c 3b 0a 72 65 6c 65 61 73 65 28 68 65   ┆heapfree := memavail; release(he┆
0x008f20…008f40             61 70 6f 72 67 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 48 65 65 70 20 73 70   ┆aporg); writeln(output, 'Heep sp┆
0x008f40…008f60             61 63 65 20 75 73 65 64 20 69 6e 20 62 79 74 65 73 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ace used in bytes:              ┆
0x008f60…008f80             20 20 20 20 20 20 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 61 76 61 69   ┆      ',                 memavai┆
0x008f80…008fa0             6c 20 2d 20 68 65 61 70 66 72 65 65 29 3b 0a 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b   ┆l - heapfree);  writeln(output);┆
0x008fa0…008fc0             0a 0a 65 6e 64 3b 0a 0a 62 65 67 69 6e 0a 0a 65 78 69 74 73 61 76 65 20 20 20 20 3a 3d 20 65 78   ┆  end;  begin  exitsave    := ex┆
0x008fc0…008fe0             69 74 70 72 6f 63 3b 0a 65 78 69 74 70 72 6f 63 20 20 20 20 3a 3d 20 40 6d 79 65 78 69 74 3b 0a   ┆itproc; exitproc    := @myexit; ┆
0x008fe0…009000             0a 63 6c 6f 73 65 28 69 6e 70 75 74 29 3b 0a 6e 65 77 28 69 6e 5f 62 75 66 5f 70 74 72 29 3b 0a   ┆ close(input); new(in_buf_ptr); ┆
0x009000…009020 (2, 0, 13)  0a 65 6e 64 5f 6f 66 5f 63 6f 64 65 20 3a 3d 20 30 3b 0a 0a 61 73 73 69 67 6e 28 63 6f 64 65 66   ┆ end_of_code := 0;  assign(codef┆
0x009020…009040             69 6c 65 2c 20 63 6f 6e 63 61 74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 36 5f   ┆ile, concat(path1_name, o_pass6_┆
0x009040…009060             77 6f 72 6b 6e 61 6d 65 29 29 3b 0a 6e 65 77 28 63 6f 64 65 5f 62 75 66 66 65 72 5f 70 74 72 29   ┆workname)); new(code_buffer_ptr)┆
0x009060…009080             3b 0a 0a 64 61 74 65 28 63 75 72 5f 64 61 74 65 29 3b 0a 74 69 6d 65 28 63 75 72 5f 74 69 6d 65   ┆;  date(cur_date); time(cur_time┆
0x009080…0090a0             29 3b 0a 0a 70 61 73 73 36 28 63 6f 64 65 5f 62 75 66 66 65 72 5f 70 74 72 5e 29 3b 0a 0a 0a 69   ┆);  pass6(code_buffer_ptr^);   i┆
0x0090a0…0090c0             66 20 73 75 72 76 65 79 5f 69 6e 66 6f 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 75 74 70   ┆f survey_info then begin (* outp┆
0x0090c0…0090e0             75 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 75 73 65 20 6f 66 20 64 79 6e 61   ┆ut information about use of dyna┆
0x0090e0…009100             6d 69 63 20 73 74 72 75 63 74 75 72 65 73 20 2a 29 0a 73 75 72 76 65 79 5f 6f 75 74 3b 0a 65 6e   ┆mic structures *) survey_out; en┆
0x009100…009120             64 3b 20 28 2a 20 73 75 72 76 65 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 2a 29 0a 0a 0a 0a 77   ┆d; (* survey information *)    w┆
0x009120…009140             72 69 74 65 6c 6e 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 27 20 63 6f 64 65 3a 20 27   ┆riteln; writeln(output,' code: '┆
0x009140…009160             2c 20 64 65 73 63 72 31 20 5b 20 31 20 5d 20 2d 20 31 20 3a 20 31 2c 20 27 20 2e 20 27 2c 20 64   ┆, descr1 [ 1 ] - 1 : 1, ' . ', d┆
0x009160…009180             65 73 63 72 31 20 5b 20 33 20 5d 20 3a 20 31 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆escr1 [ 3 ] : 1,                ┆
0x009180…0091a0             20 27 20 20 3d 20 27 2c 20 28 20 64 65 73 63 72 31 20 5b 20 31 20 5d 20 2d 20 31 20 29 20 2a 20   ┆ '  = ', ( descr1 [ 1 ] - 1 ) * ┆
0x0091a0…0091c0             28 73 65 67 6d 65 6e 74 5f 73 69 7a 65 20 2b 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆(segment_size + 1)              ┆
0x0091c0…0091e0             20 20 20 20 20 20 20 20 20 20 20 2b 20 64 65 73 63 72 31 20 5b 20 33 20 5d 20 3a 20 31 2c 20 27   ┆           + descr1 [ 3 ] : 1, '┆
0x0091e0…009200             20 62 79 74 65 73 27 29 3b 0a 0a 0a 65 6e 64 2e 0a 77 28 69 6e 5f 62 75 66 5f 70 74 72 29 3b 0a   ┆ bytes');   end. w(in_buf_ptr); ┆
0x009200…009220 (2, 0, 14)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 73 2e 70 31 63 6f 64 65 2e 70 61 73 00 00   ┆../sw2103/src/rtp/s.p1code.pas  ┆
0x009220…009240             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x009260…009280             00 00 00 00 20 20 20 34 34 34 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       444     255     146      ┆
0x009280…0092a0             20 31 31 34 36 36 31 20 20 35 32 36 36 37 36 30 33 37 35 20 20 31 31 31 31 32 00 20 00 00 00 00   ┆ 114661  5266760375  11112      ┆
0x0092a0…0092c0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x009400…009420 (2, 0, 15)  01 68 33 31 34 30 32 0a 01 73 20 30 31 35 39 30 2f 30 30 30 30 30 2f 30 30 30 30 30 0a 01 64 20   ┆ h31402  s 01590/00000/00000  d ┆
0x009420…009440             44 20 31 2e 31 20 39 32 2f 31 30 2f 31 34 20 30 39 3a 35 37 3a 33 32 20 73 77 32 31 30 33 20 31   ┆D 1.1 92/10/14 09:57:32 sw2103 1┆
0x009440…009460             20 30 0a 01 63 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2c 20 73 6f 75 72 63 65   ┆ 0  c SCCS and UNIX used, source┆
0x009460…009480             20 66 69 6c 65 20 39 32 2e 30 31 2e 32 30 2e 0a 01 65 0a 01 75 0a 01 55 0a 01 74 0a 01 54 0a 01   ┆ file 92.01.20.  e  u  U  t  T  ┆
0x009480…0094a0             49 20 31 0a 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆I 1  (*-------------------------┆
0x0094a0…0094c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0094c0…0094e0             2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39   ┆-------- -- -- (C) Copyrigth 199┆
0x0094e0…009500             32 20 20 44 41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 31 43 4f 44 45 2e 50 41 53 0a 2d 2d 0a 2d 2d   ┆2  DANOSI -- -- P1CODE.PAS -- --┆
0x009500…009520             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
                            […0x1…]
0x009540…009560             2d 0a 2d 2d 0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆- -- -- Revisions -- -----------┆
0x009560…009580             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20   ┆--------------------- --        ┆
0x009580…0095a0             39 32 2e 30 31 2e 32 30 20 20 45 42 4b 20 20 20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20   ┆92.01.20  EBK   Used in release ┆
0x0095a0…0095c0             31 2e 31 32 0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53   ┆1.12 --  1.1   92.10.14  HEJ   S┆
0x0095c0…0095e0             43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆CCS and UNIX used. -- ----------┆
0x0095e0…009600             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x009600…009620 (2, 1, 1)   2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43   ┆------------------------- -- SCC┆
0x009620…009640             53 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d   ┆S information -- File   :  %P% -┆
0x009640…009660             2d 09 4d 6f 64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25   ┆- Module :  %M% -- Version:  %I%┆
0x009660…009680             0a 2d 2d 09 44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Date   :  %E%  %U% ---------┆
0x009680…0096a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0096a0…0096c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 28   ┆-------------------------- *)  (┆
0x0096c0…0096e0             2a 20 62 6f 62 73 20 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 20 2a 29 0a 28 2a 24 72 2b 2a 29   ┆* bobs procedure code *) (*$r+*)┆
0x0096e0…009700             0a 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 28 6f 6c 64 74 6f 70 2c 6e 65 77 74 6f 70 3a 20 73   ┆ procedure code(oldtop,newtop: s┆
0x009700…009720             74 61 63 6b 69 6e 78 3b 20 70 72 6f 64 3a 20 69 6e 74 65 67 65 72 29 3b 0a 28 2a 24 72 2d 2a 29   ┆tackinx; prod: integer); (*$r-*)┆
0x009720…009740             0a 0a 28 2a 20 62 6f 62 73 20 6c 6f 63 61 6c 20 70 72 6f 63 65 64 75 72 65 73 2a 29 0a 70 72 6f   ┆  (* bobs local procedures*) pro┆
0x009740…009760             63 65 64 75 72 65 20 67 65 74 73 74 72 69 6e 67 28 73 79 2c 73 74 61 72 74 3a 20 69 6e 74 65 67   ┆cedure getstring(sy,start: integ┆
0x009760…009780             65 72 3b 20 76 61 72 20 73 74 72 3a 73 74 72 69 6e 67 3b 20 76 61 72 20 6c 65 6e 67 74 68 3a 20   ┆er; var str:string; var length: ┆
0x009780…0097a0             69 6e 74 65 67 65 72 29 3b 0a 76 61 72 20 69 2c 6a 2c 74 3a 69 6e 74 65 67 65 72 3b 0a 62 65 67   ┆integer); var i,j,t:integer; beg┆
0x0097a0…0097c0             69 6e 0a 73 74 72 3a 3d 20 62 6c 61 6e 6b 3b 0a 69 66 20 73 79 3e 3d 30 20 74 68 65 6e 20 74 3a   ┆in str:= blank; if sy>=0 then t:┆
0x0097c0…0097e0             3d 20 6e 65 77 74 6f 70 2b 28 73 79 2d 31 29 0a 65 6c 73 65 20 74 3a 3d 20 6f 6c 64 74 6f 70 2b   ┆= newtop+(sy-1) else t:= oldtop+┆
0x0097e0…009800             28 73 79 2d 31 29 3b 0a 6c 65 6e 67 74 68 3a 3d 20 61 74 74 73 74 61 63 6b 5b 74 5d 2e 63 68 62   ┆(sy-1); length:= attstack[t].chb┆
0x009800…009820 (2, 1, 2)   75 66 70 2d 61 74 74 73 74 61 63 6b 5b 74 2d 31 5d 2e 63 68 62 75 66 70 2b 73 74 61 72 74 2d 31   ┆ufp-attstack[t-1].chbufp+start-1┆
0x009820…009840             3b 0a 69 66 20 6c 65 6e 67 74 68 3e 73 74 72 69 6e 67 6d 61 78 2d 73 74 61 72 74 2b 31 20 74 68   ┆; if length>stringmax-start+1 th┆
0x009840…009860             65 6e 20 20 73 74 6f 70 28 35 29 3b 0a 6a 3a 3d 20 73 74 61 72 74 3b 0a 66 6f 72 20 69 3a 3d 20   ┆en  stop(5); j:= start; for i:= ┆
0x009860…009880             61 74 74 73 74 61 63 6b 5b 74 2d 31 5d 2e 63 68 62 75 66 70 20 74 6f 20 61 74 74 73 74 61 63 6b   ┆attstack[t-1].chbufp to attstack┆
0x009880…0098a0             5b 74 5d 2e 63 68 62 75 66 70 2d 31 20 64 6f 0a 62 65 67 69 6e 0a 73 74 72 5b 6a 5d 3a 3d 20 63   ┆[t].chbufp-1 do begin str[j]:= c┆
0x0098a0…0098c0             6f 6e 76 63 68 20 5b 63 68 62 75 66 5b 69 5d 20 5d 20 3b 20 6a 3a 3d 20 6a 2b 31 0a 65 6e 64 0a   ┆onvch [chbuf[i] ] ; j:= j+1 end ┆
0x0098c0…0098e0             65 6e 64 3b 20 28 2a 67 65 74 73 74 72 69 6e 67 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f   ┆end; (*getstring*)   procedure o┆
0x0098e0…009900             75 74 74 65 73 74 3b 0a 28 2a 6f 75 74 74 65 73 74 20 70 72 6f 64 75 63 65 73 20 61 20 73 65 71   ┆uttest; (*outtest produces a seq┆
0x009900…009920             75 65 6e 63 65 20 6f 66 20 73 6e 61 70 68 6f 74 73 20 6f 66 20 74 68 65 20 70 61 72 73 65 0a 28   ┆uence of snaphots of the parse (┆
0x009920…009940             2a 6f 75 74 74 65 73 74 20 6d 61 79 20 62 65 20 72 65 6d 6f 76 65 64 20 62 79 20 74 68 65 20 75   ┆*outtest may be removed by the u┆
0x009940…009960             73 65 72 20 2a 29 0a 28 2a 64 75 72 69 6e 67 20 74 68 65 20 70 61 72 73 65 2c 20 73 6e 61 70 73   ┆ser *) (*during the parse, snaps┆
0x009960…009980             68 6f 74 73 20 61 72 65 20 77 72 69 74 74 65 6e 20 6f 6e 20 66 69 6c 65 20 6f 75 74 70 75 74 20   ┆hots are written on file output ┆
0x009980…0099a0             2a 29 0a 28 2a 70 72 6f 67 72 61 6d 20 6c 69 6e 65 73 20 77 68 69 63 68 20 77 72 69 74 65 73 20   ┆*) (*program lines which writes ┆
0x0099a0…0099c0             73 6e 61 70 73 68 6f 74 73 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 63 6f 6d 6d 65 6e 74 3a 2a   ┆snapshots contains the comment:*┆
0x0099c0…0099e0             29 0a 28 2a 2a 2a 73 6e 61 70 73 68 6f 74 2a 2a 2a 29 0a 76 61 72 20 73 3a 20 73 74 72 69 6e 67   ┆) (***snapshot***) var s: string┆
0x0099e0…009a00             3b 0a 69 2c 6a 2c 6c 3a 69 6e 74 65 67 65 72 3b 20 63 68 3a 63 68 61 72 3b 0a 62 65 67 69 6e 0a   ┆; i,j,l:integer; ch:char; begin ┆
0x009a00…009a20 (2, 1, 3)   77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 77 72 69 74 65 28 6f 75 74 70 75 74 2c 27 20   ┆writeln(output); write(output,' ┆
0x009a20…009a40             70 72 6f 64 75 63 74 69 6f 6e 3a 27 2c 70 72 6f 64 3a 33 29 3b 0a 66 6f 72 20 69 3a 3d 20 31 20   ┆production:',prod:3); for i:= 1 ┆
0x009a40…009a60             74 6f 20 6f 6c 64 74 6f 70 2d 6e 65 77 74 6f 70 2b 31 20 64 6f 0a 62 65 67 69 6e 20 67 65 74 73   ┆to oldtop-newtop+1 do begin gets┆
0x009a60…009a80             74 72 69 6e 67 28 69 2c 31 2c 73 2c 6c 29 3b 0a 69 66 20 6c 3e 30 20 74 68 65 6e 0a 62 65 67 69   ┆tring(i,1,s,l); if l>0 then begi┆
0x009a80…009aa0             6e 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 77 72 69 74 65 28 6f 75 74 70 75 74 2c   ┆n writeln(output); write(output,┆
0x009aa0…009ac0             27 20 20 20 73 79 6d 62 27 2c 69 3a 31 2c 27 20 27 29 3b 0a 66 6f 72 20 6a 3a 3d 20 31 20 74 6f   ┆'   symb',i:1,' '); for j:= 1 to┆
0x009ac0…009ae0             20 6c 20 64 6f 20 77 72 69 74 65 28 6f 75 74 70 75 74 2c 73 5b 6a 5d 29 0a 65 6e 64 0a 65 6e 64   ┆ l do write(output,s[j]) end end┆
0x009ae0…009b00             0a 65 6e 64 3b 20 28 2a 6f 75 74 74 65 73 74 2a 29 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 72 65   ┆ end; (*outtest*)    function re┆
0x009b00…009b20             61 64 6e 61 6d 65 20 3a 20 6e 61 6d 65 68 65 61 64 70 74 72 3b 0a 28 2a 20 72 65 61 64 20 74 68   ┆adname : nameheadptr; (* read th┆
0x009b20…009b40             65 20 6e 61 6d 65 20 66 72 6f 6d 20 63 68 62 75 66 28 6f 6c 64 74 6f 70 29 20 69 6e 74 6f 20 61   ┆e name from chbuf(oldtop) into a┆
0x009b40…009b60             20 6e 61 6d 65 20 73 74 72 75 63 74 75 72 65 0a 61 6e 64 20 72 65 74 75 72 6e 20 61 20 72 65 66   ┆ name structure and return a ref┆
0x009b60…009b80             65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 68 65 61 64 20 20 2a 29 0a 0a 76 61 72 0a 6c 6f 63 61   ┆erence to the head  *)  var loca┆
0x009b80…009ba0             6c 68 65 61 64 20 3a 20 6e 61 6d 65 68 65 61 64 70 74 72 3b 0a 63 68 62 75 66 69 6e 64 65 78 2c   ┆lhead : nameheadptr; chbufindex,┆
0x009ba0…009bc0             20 63 68 61 72 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6c 6f 63 61 6c 6e 61 6d 65 20   ┆ charcount : integer; localname ┆
0x009bc0…009be0             3a 20 6e 61 6d 65 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 6c 6f 63 61 6c 68 65 61 64 3a 3d 20 67 65   ┆: nameptr;  begin localhead:= ge┆
0x009be0…009c00             74 6e 61 6d 65 68 65 61 64 3b 20 28 2a 20 61 6c 6c 6f 63 61 74 65 20 61 20 6e 65 77 20 6e 61 6d   ┆tnamehead; (* allocate a new nam┆
0x009c00…009c20 (2, 1, 4)   65 20 68 65 61 64 20 2a 29 0a 77 69 74 68 20 20 6c 6f 63 61 6c 68 65 61 64 20 5e 20 64 6f 0a 62   ┆e head *) with  localhead ^ do b┆
0x009c20…009c40             65 67 69 6e 0a 6c 65 6e 67 74 68 3a 3d 20 61 74 74 73 74 61 63 6b 5b 6f 6c 64 74 6f 70 5d 2e 63   ┆egin length:= attstack[oldtop].c┆
0x009c40…009c60             68 62 75 66 70 2d 61 74 74 73 74 61 63 6b 5b 6f 6c 64 74 6f 70 2d 31 5d 2e 63 68 62 75 66 70 3b   ┆hbufp-attstack[oldtop-1].chbufp;┆
0x009c60…009c80             0a 73 74 61 72 74 3a 3d 20 67 65 74 6e 61 6d 65 6e 6f 64 65 3b 0a 6c 6f 63 61 6c 6e 61 6d 65 3a   ┆ start:= getnamenode; localname:┆
0x009c80…009ca0             3d 20 73 74 61 72 74 3b 20 63 68 61 72 63 6f 75 6e 74 3a 3d 20 30 3b 20 63 68 62 75 66 69 6e 64   ┆= start; charcount:= 0; chbufind┆
0x009ca0…009cc0             65 78 3a 3d 20 61 74 74 73 74 61 63 6b 5b 6f 6c 64 74 6f 70 2d 31 5d 2e 63 68 62 75 66 70 3b 0a   ┆ex:= attstack[oldtop-1].chbufp; ┆
0x009cc0…009ce0             0a 72 65 70 65 61 74 0a 77 69 74 68 20 20 6c 6f 63 61 6c 6e 61 6d 65 20 5e 20 64 6f 0a 6e 61 6d   ┆ repeat with  localname ^ do nam┆
0x009ce0…009d00             65 70 61 72 74 5b 20 28 63 68 61 72 63 6f 75 6e 74 20 6d 6f 64 20 61 6c 66 61 6c 65 6e 67 74 68   ┆epart[ (charcount mod alfalength┆
0x009d00…009d20             29 2b 31 20 5d 3a 3d 20 63 6f 6e 76 63 68 20 5b 20 63 68 62 75 66 5b 20 63 68 62 75 66 69 6e 64   ┆)+1 ]:= convch [ chbuf[ chbufind┆
0x009d20…009d40             65 78 20 5d 20 5d 20 3b 0a 63 68 61 72 63 6f 75 6e 74 3a 3d 20 63 68 61 72 63 6f 75 6e 74 2b 31   ┆ex ] ] ; charcount:= charcount+1┆
0x009d40…009d60             3b 0a 63 68 62 75 66 69 6e 64 65 78 3a 3d 20 63 68 62 75 66 69 6e 64 65 78 2b 31 3b 0a 0a 69 66   ┆; chbufindex:= chbufindex+1;  if┆
0x009d60…009d80             20 28 28 63 68 61 72 63 6f 75 6e 74 20 6d 6f 64 20 61 6c 66 61 6c 65 6e 67 74 68 29 3d 30 29 20   ┆ ((charcount mod alfalength)=0) ┆
0x009d80…009da0             61 6e 64 20 28 63 68 61 72 63 6f 75 6e 74 3c 6c 65 6e 67 74 68 29 20 74 68 65 6e 0a 77 69 74 68   ┆and (charcount<length) then with┆
0x009da0…009dc0             20 20 6c 6f 63 61 6c 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 28 2a 20 67 65 74 20 61 20   ┆  localname ^ do begin (* get a ┆
0x009dc0…009de0             6e 65 77 20 6e 61 6d 65 20 6e 6f 64 65 20 2a 29 0a 6e 65 78 74 3a 3d 20 67 65 74 6e 61 6d 65 6e   ┆new name node *) next:= getnamen┆
0x009de0…009e00             6f 64 65 3b 0a 6c 6f 63 61 6c 6e 61 6d 65 3a 3d 20 6e 65 78 74 3b 0a 65 6e 64 3b 0a 0a 75 6e 74   ┆ode; localname:= next; end;  unt┆
0x009e00…009e20 (2, 1, 5)   69 6c 20 63 68 61 72 63 6f 75 6e 74 3d 6c 65 6e 67 74 68 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69   ┆il charcount=length;  end; (* wi┆
0x009e20…009e40             74 68 20 2e 2e 2e 20 20 2a 29 0a 0a 72 65 61 64 6e 61 6d 65 3a 3d 20 6c 6f 63 61 6c 68 65 61 64   ┆th ...  *)  readname:= localhead┆
0x009e40…009e60             3b 0a 0a 65 6e 64 3b 20 20 28 2a 20 72 65 61 64 20 6e 61 6d 65 20 2a 29 0a 0a 70 72 6f 63 65 64   ┆;  end;  (* read name *)  proced┆
0x009e60…009e80             75 72 65 20 65 72 72 6f 72 73 65 63 74 69 6f 6e 3b 0a 0a 0a 62 65 67 69 6e 0a 65 6d 69 74 63 6f   ┆ure errorsection;   begin emitco┆
0x009e80…009ea0             64 65 28 63 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 65 78 70   ┆de(cerror); end;   procedure exp┆
0x009ea0…009ec0             6f 72 74 5f 73 65 63 74 69 6f 6e 3b 0a 28 2a 20 73 65 63 74 69 6f 6e 20 33 20 2a 29 0a 0a 76 61   ┆ort_section; (* section 3 *)  va┆
0x009ec0…009ee0             72 0a 6c 65 6e 67 74 68 20 3a 20 69 6e 74 65 67 65 72 3b 0a 73 74 72 20 3a 20 73 74 72 69 6e 67   ┆r length : integer; str : string┆
0x009ee0…009f00             3b 20 28 2a 20 70 61 63 6b 20 74 68 65 20 65 78 70 6f 72 74 20 6b 69 6e 64 20 69 6e 74 6f 20 73   ┆; (* pack the export kind into s┆
0x009f00…009f20             74 72 20 2a 29 0a 0a 62 65 67 69 6e 0a 63 61 73 65 20 70 72 6f 64 20 6f 66 0a 33 30 31 3a 20 20   ┆tr *)  begin case prod of 301:  ┆
0x009f20…009f40             28 2a 20 3c 65 78 70 6f 72 74 20 64 65 66 3e 20 3a 3a 3d 20 3c 65 78 70 6f 72 74 20 6e 61 6d 65   ┆(* <export def> ::= <export name┆
0x009f40…009f60             3e 3d 3c 65 78 70 6f 72 74 20 6b 69 6e 64 3e 20 3c 73 69 6d 70 6c 65 20 76 61 72 69 61 62 6c 65   ┆>=<export kind> <simple variable┆
0x009f60…009f80             3e 0a 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 3c 73 65 6d   ┆>                           <sem┆
0x009f80…009fa0             69 63 6f 6c 6f 6e 73 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆icolons>                        ┆
0x009fa0…009fc0             20 20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0a 28 2a 20 20 63 6f 64 65 3a 20 65 78 70 6f 72 74   ┆             *) (*  code: export┆
0x009fc0…009fe0             28 6b 69 6e 64 29 20 20 2a 29 0a 65 6d 69 74 63 6f 64 65 28 20 63 75 72 72 65 6e 74 5f 65 78 70   ┆(kind)  *) emitcode( current_exp┆
0x009fe0…00a000             6f 72 74 5f 6b 69 6e 64 20 29 3b 0a 0a 33 30 32 3a 20 20 28 2a 20 3c 65 78 70 6f 72 74 20 6b 69   ┆ort_kind );  302:  (* <export ki┆
0x00a000…00a020 (2, 1, 6)   6e 64 3e 20 3a 3a 3d 20 6e 61 6d 65 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 78 70 6f 72 74 20   ┆nd> ::= name *) (* code: export ┆
0x00a020…00a040             20 2a 29 0a 28 2a 20 61 63 74 69 6f 6e 20 3a 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20 6b 69 6e   ┆ *) (* action : remember the kin┆
0x00a040…00a060             64 20 2a 29 0a 62 65 67 69 6e 0a 0a 65 6d 69 74 63 6f 64 65 28 20 63 65 78 70 6f 72 74 20 29 3b   ┆d *) begin  emitcode( cexport );┆
0x00a060…00a080             0a 0a 67 65 74 73 74 72 69 6e 67 20 28 20 31 2c 20 31 2c 20 73 74 72 2c 20 6c 65 6e 67 74 68 20   ┆  getstring ( 1, 1, str, length ┆
0x00a080…00a0a0             29 3b 0a 0a 69 66 20 73 74 72 3d 27 56 41 4c 55 45 27 20 74 68 65 6e 20 63 75 72 72 65 6e 74 5f   ┆);  if str='VALUE' then current_┆
0x00a0a0…00a0c0             65 78 70 6f 72 74 5f 6b 69 6e 64 3a 3d 20 63 65 78 70 6f 72 74 76 61 6c 75 65 0a 65 6c 73 65 0a   ┆export_kind:= cexportvalue else ┆
0x00a0c0…00a0e0             69 66 20 73 74 72 3d 27 44 49 53 50 27 20 74 68 65 6e 20 63 75 72 72 65 6e 74 5f 65 78 70 6f 72   ┆if str='DISP' then current_expor┆
0x00a0e0…00a100             74 5f 6b 69 6e 64 3a 3d 20 63 65 78 70 6f 72 74 64 69 73 70 0a 65 6c 73 65 0a 69 66 20 73 74 72   ┆t_kind:= cexportdisp else if str┆
0x00a100…00a120             3d 27 53 49 5a 45 27 20 74 68 65 6e 20 63 75 72 72 65 6e 74 5f 65 78 70 6f 72 74 5f 6b 69 6e 64   ┆='SIZE' then current_export_kind┆
0x00a120…00a140             3a 3d 20 63 65 78 70 6f 72 74 73 69 7a 65 0a 65 6c 73 65 0a 69 66 20 73 74 72 3d 27 41 44 44 52   ┆:= cexportsize else if str='ADDR┆
0x00a140…00a160             45 53 53 27 20 74 68 65 6e 20 63 75 72 72 65 6e 74 5f 65 78 70 6f 72 74 5f 6b 69 6e 64 3a 3d 20   ┆ESS' then current_export_kind:= ┆
0x00a160…00a180             63 65 78 70 6f 72 74 61 64 64 72 0a 65 6c 73 65 0a 69 66 20 73 74 72 3d 27 4f 46 46 53 45 54 27   ┆cexportaddr else if str='OFFSET'┆
0x00a180…00a1a0             20 74 68 65 6e 20 63 75 72 72 65 6e 74 5f 65 78 70 6f 72 74 5f 6b 69 6e 64 3a 3d 20 63 65 78 70   ┆ then current_export_kind:= cexp┆
0x00a1a0…00a1c0             6f 72 74 6f 66 66 73 65 74 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 6d 61 72 6b 65 72 72 6f 72 28 20   ┆ortoffset else begin markerror( ┆
0x00a1c0…00a1e0             31 30 34 20 29 3b 20 28 2a 20 65 78 70 6f 72 74 20 6b 69 6e 64 20 65 78 70 65 63 74 65 64 20 28   ┆104 ); (* export kind expected (┆
0x00a1e0…00a200             76 61 6c 75 65 2c 20 64 69 73 70 2c 20 73 69 7a 65 2c 20 61 64 64 72 65 73 73 2c 20 6f 72 20 6f   ┆value, disp, size, address, or o┆
0x00a200…00a220 (2, 1, 7)   66 66 73 65 74 20 29 20 20 2a 29 0a 63 75 72 72 65 6e 74 5f 65 78 70 6f 72 74 5f 6b 69 6e 64 3a   ┆ffset )  *) current_export_kind:┆
0x00a220…00a240             3d 20 63 65 78 70 6f 72 74 73 69 7a 65 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 33 30 32   ┆= cexportsize; end;  end; (* 302┆
0x00a240…00a260             20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 65 78   ┆ *)  end; (* case *)  end; (* ex┆
0x00a260…00a280             70 6f 72 74 20 73 65 63 74 69 6f 6e 20 2a 29 0a 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 6c 69 74   ┆port section *)    procedure lit┆
0x00a280…00a2a0             65 72 61 6c 73 28 20 70 72 6f 64 20 3a 20 69 6e 74 65 67 65 72 20 20 29 3b 0a 28 2a 20 73 65 63   ┆erals( prod : integer  ); (* sec┆
0x00a2a0…00a2c0             74 69 6f 6e 20 34 20 2a 29 0a 0a 76 61 72 0a 69 6e 78 2c 20 6c 65 6e 67 74 68 2c 20 73 74 65 70   ┆tion 4 *)  var inx, length, step┆
0x00a2c0…00a2e0             76 61 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 63 6f 64 65 6b 69 6e 64 20 3a 20 63 6f 64 65 73 3b   ┆var : integer; codekind : codes;┆
0x00a2e0…00a300             0a 6f 72 64 5f 63 68 61 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 63 68 61 72 5f 6e 61 6d 65 3a 20   ┆ ord_char : integer; char_name: ┆
0x00a300…00a320             61 6c 66 61 3b 20 28 2a 20 66 6f 72 20 6e 61 6d 65 20 6f 66 20 63 6f 6e 74 72 6f 6c 20 63 68 61   ┆alfa; (* for name of control cha┆
0x00a320…00a340             72 61 63 74 65 72 20 2a 29 0a 0a 66 75 6e 63 74 69 6f 6e 20 67 65 74 5f 63 68 61 72 5f 63 6f 6e   ┆racter *)  function get_char_con┆
0x00a340…00a360             73 74 28 63 68 61 72 5f 6e 61 6d 65 3a 20 61 6c 66 61 29 3a 20 69 6e 74 65 67 65 72 3b 0a 28 2a   ┆st(char_name: alfa): integer; (*┆
0x00a360…00a380             20 73 65 61 72 63 68 20 74 68 65 20 74 61 62 6c 65 20 6f 66 20 63 68 61 72 20 63 6f 6e 73 74 61   ┆ search the table of char consta┆
0x00a380…00a3a0             6e 74 73 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20 6f 72 64 69 6e 61 6c 0a 76 61 6c 75 65   ┆nts and return the ordinal value┆
0x00a3a0…00a3c0             20 6f 66 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 63 6f   ┆ of the character constant *) co┆
0x00a3c0…00a3e0             6e 73 74 0a 6e 6f 5f 6f 66 5f 63 68 61 72 5f 6e 61 6d 65 73 3d 20 33 34 3b 0a 74 79 70 65 0a 63   ┆nst no_of_char_names= 34; type c┆
0x00a3e0…00a400             68 61 72 5f 6e 61 6d 65 74 79 70 65 20 3d 20 61 72 72 61 79 20 5b 20 30 2e 2e 6e 6f 5f 6f 66 5f   ┆har_nametype = array [ 0..no_of_┆
0x00a400…00a420 (2, 1, 8)   63 68 61 72 5f 6e 61 6d 65 73 20 5d 20 6f 66 20 61 6c 66 61 3b 0a 63 6f 6e 73 74 0a 20 20 28 2a   ┆char_names ] of alfa; const   (*┆
0x00a420…00a440             20 20 20 20 20 20 20 20 20 20 20 30 20 20 20 20 20 20 31 20 20 20 20 20 20 32 20 20 20 20 20 20   ┆           0      1      2      ┆
0x00a440…00a460             33 20 20 20 20 20 20 34 20 20 20 20 20 20 35 20 20 20 20 20 20 36 20 20 20 20 20 20 37 20 20 20   ┆3      4      5      6      7   ┆
0x00a460…00a480             20 20 20 38 20 20 20 20 20 20 39 20 2a 29 0a 63 68 61 72 5f 6e 61 6d 65 73 3a 20 63 68 61 72 5f   ┆   8      9 *) char_names: char_┆
0x00a480…00a4a0             6e 61 6d 65 74 79 70 65 20 3d 20 28 0a 28 2a 20 20 20 20 20 30 20 2a 29 20 20 27 4e 55 4c 20 20   ┆nametype = ( (*     0 *)  'NUL  ┆
0x00a4a0…00a4c0             20 20 20 20 20 20 20 27 2c 20 27 53 4f 48 20 20 20 20 20 20 20 20 20 27 2c 20 27 53 54 58 20 20   ┆       ', 'SOH         ', 'STX  ┆
0x00a4c0…00a4e0             20 20 20 20 20 20 20 27 2c 0a 28 2a 20 20 20 20 20 33 20 2a 29 20 20 27 45 54 58 20 20 20 20 20   ┆       ', (*     3 *)  'ETX     ┆
0x00a4e0…00a500             20 20 20 20 27 2c 20 27 45 4f 54 20 20 20 20 20 20 20 20 20 27 2c 20 27 45 4e 51 20 20 20 20 20   ┆    ', 'EOT         ', 'ENQ     ┆
0x00a500…00a520             20 20 20 20 27 2c 0a 28 2a 20 20 20 20 20 36 20 2a 29 20 20 27 41 43 4b 20 20 20 20 20 20 20 20   ┆    ', (*     6 *)  'ACK        ┆
0x00a520…00a540             20 27 2c 20 27 42 45 4c 20 20 20 20 20 20 20 20 20 27 2c 20 27 42 53 20 20 20 20 20 20 20 20 20   ┆ ', 'BEL         ', 'BS         ┆
0x00a540…00a560             20 27 2c 0a 28 2a 20 20 20 20 20 39 20 2a 29 20 20 27 48 54 20 20 20 20 20 20 20 20 20 20 27 2c   ┆ ', (*     9 *)  'HT          ',┆
0x00a560…00a580             20 27 4e 4c 20 20 20 20 20 20 20 20 20 20 27 2c 20 27 56 54 20 20 20 20 20 20 20 20 20 20 27 2c   ┆ 'NL          ', 'VT          ',┆
0x00a580…00a5a0             0a 28 2a 20 20 20 20 31 32 20 2a 29 20 20 27 46 46 20 20 20 20 20 20 20 20 20 20 27 2c 20 27 43   ┆ (*    12 *)  'FF          ', 'C┆
0x00a5a0…00a5c0             52 20 20 20 20 20 20 20 20 20 20 27 2c 20 27 53 4f 20 20 20 20 20 20 20 20 20 20 27 2c 0a 28 2a   ┆R          ', 'SO          ', (*┆
0x00a5c0…00a5e0             20 20 20 20 31 35 20 2a 29 20 20 27 53 49 20 20 20 20 20 20 20 20 20 20 27 2c 20 27 44 4c 45 20   ┆    15 *)  'SI          ', 'DLE ┆
0x00a5e0…00a600             20 20 20 20 20 20 20 20 27 2c 20 27 44 43 31 20 20 20 20 20 20 20 20 20 27 2c 0a 28 2a 20 20 20   ┆        ', 'DC1         ', (*   ┆
0x00a600…00a620 (2, 1, 9)   20 31 38 20 2a 29 20 20 27 44 43 32 20 20 20 20 20 20 20 20 20 27 2c 20 27 44 43 33 20 20 20 20   ┆ 18 *)  'DC2         ', 'DC3    ┆
0x00a620…00a640             20 20 20 20 20 27 2c 20 27 44 43 34 20 20 20 20 20 20 20 20 20 27 2c 0a 28 2a 20 20 20 20 32 31   ┆     ', 'DC4         ', (*    21┆
0x00a640…00a660             20 2a 29 20 20 27 4e 41 4b 20 20 20 20 20 20 20 20 20 27 2c 20 27 53 59 4e 20 20 20 20 20 20 20   ┆ *)  'NAK         ', 'SYN       ┆
0x00a660…00a680             20 20 27 2c 20 27 45 54 42 20 20 20 20 20 20 20 20 20 27 2c 0a 28 2a 20 20 20 20 32 34 20 2a 29   ┆  ', 'ETB         ', (*    24 *)┆
0x00a680…00a6a0             20 20 27 43 41 4e 20 20 20 20 20 20 20 20 20 27 2c 20 27 45 4d 20 20 20 20 20 20 20 20 20 20 27   ┆  'CAN         ', 'EM          '┆
0x00a6a0…00a6c0             2c 20 27 53 55 42 20 20 20 20 20 20 20 20 20 27 2c 0a 28 2a 20 20 20 20 32 37 20 2a 29 20 20 27   ┆, 'SUB         ', (*    27 *)  '┆
0x00a6c0…00a6e0             45 53 43 20 20 20 20 20 20 20 20 20 27 2c 20 27 46 53 20 20 20 20 20 20 20 20 20 20 27 2c 20 27   ┆ESC         ', 'FS          ', '┆
0x00a6e0…00a700             47 53 20 20 20 20 20 20 20 20 20 20 27 2c 0a 28 2a 20 20 20 20 33 30 20 2a 29 20 20 27 52 53 20   ┆GS          ', (*    30 *)  'RS ┆
0x00a700…00a720             20 20 20 20 20 20 20 20 20 27 2c 20 27 55 53 20 20 20 20 20 20 20 20 20 20 27 2c 20 27 53 50 20   ┆         ', 'US          ', 'SP ┆
0x00a720…00a740             20 20 20 20 20 20 20 20 20 27 2c 0a 28 2a 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6e 6c 20 2a 29   ┆         ', (* alternative nl *)┆
0x00a740…00a760             20 20 20 20 20 20 20 20 20 27 4c 46 20 20 20 20 20 20 20 20 20 20 27 2c 0a 28 2a 20 20 20 31 32   ┆         'LF          ', (*   12┆
0x00a760…00a780             37 20 2a 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 44 45 4c 20 20 20 20 20 20   ┆7 *)                  'DEL      ┆
0x00a780…00a7a0             20 20 20 27 29 3b 0a 0a 76 61 72 0a 73 74 65 70 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69   ┆   ');  var step: integer;  begi┆
0x00a7a0…00a7c0             6e 0a 73 74 65 70 3a 3d 20 2d 31 3b 0a 0a 72 65 70 65 61 74 0a 73 74 65 70 3a 3d 20 73 74 65 70   ┆n step:= -1;  repeat step:= step┆
0x00a7c0…00a7e0             2b 31 3b 0a 75 6e 74 69 6c 20 28 63 68 61 72 5f 6e 61 6d 65 3d 63 68 61 72 5f 6e 61 6d 65 73 5b   ┆+1; until (char_name=char_names[┆
0x00a7e0…00a800             20 73 74 65 70 20 5d 29 20 6f 72 20 28 73 74 65 70 3e 6f 72 64 28 73 70 29 29 3b 0a 0a 69 66 20   ┆ step ]) or (step>ord(sp));  if ┆
0x00a800…00a820 (2, 1, 10)  73 74 65 70 3c 3d 6f 72 64 28 73 70 29 20 74 68 65 6e 0a 67 65 74 5f 63 68 61 72 5f 63 6f 6e 73   ┆step<=ord(sp) then get_char_cons┆
0x00a820…00a840             74 3a 3d 20 73 74 65 70 0a 65 6c 73 65 0a 69 66 20 63 68 61 72 5f 6e 61 6d 65 3d 27 4c 46 20 20   ┆t:= step else if char_name='LF  ┆
0x00a840…00a860             20 20 20 20 20 20 20 20 27 20 74 68 65 6e 0a 67 65 74 5f 63 68 61 72 5f 63 6f 6e 73 74 3a 3d 20   ┆        ' then get_char_const:= ┆
0x00a860…00a880             31 30 0a 65 6c 73 65 0a 69 66 20 63 68 61 72 5f 6e 61 6d 65 3d 27 44 45 4c 20 20 20 20 20 20 20   ┆10 else if char_name='DEL       ┆
0x00a880…00a8a0             20 20 27 20 74 68 65 6e 0a 67 65 74 5f 63 68 61 72 5f 63 6f 6e 73 74 3a 3d 20 31 32 37 0a 65 6c   ┆  ' then get_char_const:= 127 el┆
0x00a8a0…00a8c0             73 65 0a 62 65 67 69 6e 0a 6d 61 72 6b 65 72 72 6f 72 28 31 30 38 29 3b 20 28 2a 20 6e 6f 74 20   ┆se begin markerror(108); (* not ┆
0x00a8c0…00a8e0             6e 61 6d 65 20 6f 66 20 63 68 61 72 20 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 67 65 74 5f 63 68 61   ┆name of char constant *) get_cha┆
0x00a8e0…00a900             72 5f 63 6f 6e 73 74 3a 3d 20 30 3b 0a 65 6e 64 3b 20 28 2a 20 75 6e 6b 6e 6f 77 6e 20 63 68 61   ┆r_const:= 0; end; (* unknown cha┆
0x00a900…00a920             72 20 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 67 65 74 20 63 68 61 72 20 63   ┆r constant *) end; (* get char c┆
0x00a920…00a940             6f 6e 73 74 20 2a 29 0a 0a 0a 62 65 67 69 6e 20 28 2a 20 6c 69 74 65 72 61 6c 73 20 2a 29 0a 63   ┆onst *)   begin (* literals *) c┆
0x00a940…00a960             61 73 65 20 70 72 6f 64 20 6f 66 0a 34 30 31 3a 20 28 2a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20   ┆ase prod of 401: (* called from ┆
0x00a960…00a980             65 6d 69 74 72 6f 75 74 69 6e 65 64 65 63 6c 2c 20 65 6d 69 74 20 74 68 65 20 6e 61 6d 65 20 61   ┆emitroutinedecl, emit the name a┆
0x00a980…00a9a0             73 20 61 20 6c 69 74 65 72 61 6c 20 74 65 78 74 20 2a 29 0a 63 6f 64 65 6b 69 6e 64 3a 3d 20 63   ┆s a literal text *) codekind:= c┆
0x00a9a0…00a9c0             74 65 78 74 3b 0a 0a 34 30 32 3a 20 28 2a 20 3c 75 6e 73 69 67 6e 65 64 20 6e 75 6d 62 65 72 3e   ┆text;  402: (* <unsigned number>┆
0x00a9c0…00a9e0             20 3a 3a 3d 20 3c 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 3e 20 2a 29 0a 63 6f 64 65 6b   ┆ ::= <unsigned integer> *) codek┆
0x00a9e0…00aa00             69 6e 64 3a 3d 20 63 69 6e 74 65 67 65 72 3b 0a 0a 34 30 33 3a 20 28 2a 20 3c 75 6e 73 69 67 6e   ┆ind:= cinteger;  403: (* <unsign┆
0x00aa00…00aa20 (2, 1, 11)  65 64 20 6e 75 6d 62 65 72 3e 20 3a 3a 3d 20 72 65 61 6c 6b 6f 6e 73 74 20 2a 29 0a 63 6f 64 65   ┆ed number> ::= realkonst *) code┆
0x00aa20…00aa40             6b 69 6e 64 3a 3d 20 63 72 65 61 6c 3b 0a 34 30 34 3a 20 20 28 2a 20 3c 75 6e 73 69 67 6e 65 64   ┆kind:= creal; 404:  (* <unsigned┆
0x00aa40…00aa60             20 69 6e 74 65 67 65 72 3e 20 3a 3a 3d 20 23 20 6e 61 6d 65 20 2a 29 0a 63 6f 64 65 6b 69 6e 64   ┆ integer> ::= # name *) codekind┆
0x00aa60…00aa80             3a 3d 20 63 69 6e 74 65 67 65 72 3b 0a 0a 34 30 35 3a 20 20 28 2a 20 3c 65 78 70 6f 72 74 20 6e   ┆:= cinteger;  405:  (* <export n┆
0x00aa80…00aaa0             61 6d 65 3e 20 3a 3a 3d 20 6e 61 6d 65 20 20 2a 29 0a 63 6f 64 65 6b 69 6e 64 3a 3d 20 63 74 65   ┆ame> ::= name  *) codekind:= cte┆
0x00aaa0…00aac0             78 74 3b 0a 0a 34 30 36 2c 20 28 2a 20 3c 73 74 72 69 6e 67 3e 20 3a 3a 3d 20 73 74 72 69 6e 67   ┆xt;  406, (* <string> ::= string┆
0x00aac0…00aae0             20 2a 29 0a 34 30 37 3a 20 28 2a 20 20 20 20 20 20 20 20 20 20 21 20 20 20 3c 73 74 72 69 6e 67   ┆ *) 407: (*          !   <string┆
0x00aae0…00ab00             3e 20 26 20 73 74 72 69 6e 67 20 2a 29 0a 28 2a 20 62 75 69 6c 64 20 73 74 72 69 6e 67 20 63 6f   ┆> & string *) (* build string co┆
0x00ab00…00ab20             6e 73 74 61 6e 74 20 2a 29 0a 62 65 67 69 6e 0a 6c 65 6e 67 74 68 3a 3d 20 61 74 74 73 74 61 63   ┆nstant *) begin length:= attstac┆
0x00ab20…00ab40             6b 5b 20 6f 6c 64 74 6f 70 20 5d 2e 63 68 62 75 66 70 2d 61 74 74 73 74 61 63 6b 5b 20 6f 6c 64   ┆k[ oldtop ].chbufp-attstack[ old┆
0x00ab40…00ab60             74 6f 70 2d 31 20 5d 2e 63 68 62 75 66 70 3b 0a 69 66 20 70 72 6f 64 3d 34 30 36 20 74 68 65 6e   ┆top-1 ].chbufp; if prod=406 then┆
0x00ab60…00ab80             20 28 2a 20 73 74 61 72 74 20 6f 66 20 6e 65 77 20 73 74 72 69 6e 67 20 2a 29 0a 73 74 72 5f 63   ┆ (* start of new string *) str_c┆
0x00ab80…00aba0             6f 6e 73 74 5f 74 6f 70 3a 3d 20 31 3b 0a 66 6f 72 20 73 74 65 70 76 61 72 3a 3d 20 61 74 74 73   ┆onst_top:= 1; for stepvar:= atts┆
0x00aba0…00abc0             74 61 63 6b 5b 20 6f 6c 64 74 6f 70 2d 31 20 5d 2e 63 68 62 75 66 70 20 74 6f 20 61 74 74 73 74   ┆tack[ oldtop-1 ].chbufp to attst┆
0x00abc0…00abe0             61 63 6b 5b 20 6f 6c 64 74 6f 70 20 5d 2e 63 68 62 75 66 70 2d 31 20 64 6f 0a 62 65 67 69 6e 0a   ┆ack[ oldtop ].chbufp-1 do begin ┆
0x00abe0…00ac00             73 74 72 69 6e 67 5f 63 6f 6e 73 74 5b 20 73 74 72 5f 63 6f 6e 73 74 5f 74 6f 70 20 5d 3a 3d 20   ┆string_const[ str_const_top ]:= ┆
0x00ac00…00ac20 (2, 1, 12)  6f 72 64 28 63 68 62 75 66 5b 20 73 74 65 70 76 61 72 20 5d 29 3b 0a 69 66 20 73 74 72 5f 63 6f   ┆ord(chbuf[ stepvar ]); if str_co┆
0x00ac20…00ac40             6e 73 74 5f 74 6f 70 3d 6d 61 78 6e 61 6d 65 6c 65 6e 67 74 68 20 74 68 65 6e 0a 62 65 67 69 6e   ┆nst_top=maxnamelength then begin┆
0x00ac40…00ac60             0a 77 61 72 6e 69 6e 67 28 31 30 37 29 3b 20 28 2a 20 72 65 6d 61 69 6e 69 6e 67 20 70 61 72 74   ┆ warning(107); (* remaining part┆
0x00ac60…00ac80             20 6f 66 20 73 74 72 69 6e 67 20 73 6b 69 70 70 65 64 20 2a 29 0a 73 74 65 70 76 61 72 3a 3d 20   ┆ of string skipped *) stepvar:= ┆
0x00ac80…00aca0             61 74 74 73 74 61 63 6b 5b 20 6f 6c 64 74 6f 70 20 5d 2e 63 68 62 75 66 70 3b 20 28 2a 20 65 78   ┆attstack[ oldtop ].chbufp; (* ex┆
0x00aca0…00acc0             69 74 20 70 69 63 6b 75 70 20 73 74 72 69 6e 67 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 73 74 72   ┆it pickup string *) end else str┆
0x00acc0…00ace0             5f 63 6f 6e 73 74 5f 74 6f 70 3a 3d 20 73 74 72 5f 63 6f 6e 73 74 5f 74 6f 70 2b 31 3b 0a 65 6e   ┆_const_top:= str_const_top+1; en┆
0x00ace0…00ad00             64 3b 20 28 2a 20 66 6f 72 20 73 74 65 70 76 61 72 20 2e 2e 2e 20 2a 29 0a 65 6e 64 3b 20 28 2a   ┆d; (* for stepvar ... *) end; (*┆
0x00ad00…00ad20             20 34 30 36 2c 20 34 30 37 20 2a 29 0a 0a 34 30 38 3a 20 28 2a 20 3c 73 74 72 69 6e 67 3e 20 3a   ┆ 406, 407 *)  408: (* <string> :┆
0x00ad20…00ad40             3a 3d 20 3c 73 74 72 69 6e 67 3e 20 26 20 6e 61 6d 65 20 20 28 6f 66 20 63 6f 6e 74 72 6f 6c 20   ┆:= <string> & name  (of control ┆
0x00ad40…00ad60             63 68 61 72 61 63 74 65 72 29 20 2a 29 0a 28 2a 20 70 69 63 6b 75 70 20 6e 61 6d 65 20 6f 66 20   ┆character) *) (* pickup name of ┆
0x00ad60…00ad80             63 6f 6e 74 72 6f 6c 20 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 69 6e 73 65 72 74 20 76 61 6c   ┆control character and insert val┆
0x00ad80…00ada0             75 65 20 61 73 20 6e 65 78 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 74 68 65 20 73 74 72 69   ┆ue as next character of the stri┆
0x00ada0…00adc0             6e 67 20 2a 29 0a 62 65 67 69 6e 0a 69 6e 78 3a 3d 20 31 3b 0a 66 6f 72 20 73 74 65 70 76 61 72   ┆ng *) begin inx:= 1; for stepvar┆
0x00adc0…00ade0             3a 3d 20 61 74 74 73 74 61 63 6b 5b 20 6f 6c 64 74 6f 70 2d 31 20 5d 2e 63 68 62 75 66 70 20 74   ┆:= attstack[ oldtop-1 ].chbufp t┆
0x00ade0…00ae00             6f 20 61 74 74 73 74 61 63 6b 5b 20 6f 6c 64 74 6f 70 20 5d 2e 63 68 62 75 66 70 2d 31 20 64 6f   ┆o attstack[ oldtop ].chbufp-1 do┆
0x00ae00…00ae20 (2, 1, 13)  0a 62 65 67 69 6e 0a 63 68 61 72 5f 6e 61 6d 65 5b 20 69 6e 78 20 5d 3a 3d 20 63 6f 6e 76 63 68   ┆ begin char_name[ inx ]:= convch┆
0x00ae20…00ae40             5b 20 63 68 62 75 66 5b 20 73 74 65 70 76 61 72 20 5d 5d 3b 0a 69 6e 78 3a 3d 20 69 6e 78 2b 31   ┆[ chbuf[ stepvar ]]; inx:= inx+1┆
0x00ae40…00ae60             3b 0a 69 66 20 69 6e 78 3e 61 6c 66 61 6c 65 6e 67 74 68 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6d   ┆; if inx>alfalength then begin m┆
0x00ae60…00ae80             61 72 6b 65 72 72 6f 72 28 31 30 38 29 3b 20 28 2a 20 6e 6f 74 20 6e 61 6d 65 20 6f 66 20 63 68   ┆arkerror(108); (* not name of ch┆
0x00ae80…00aea0             61 72 20 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 73 74 65 70 76 61 72 3a 3d 20 61 74 74 73 74 61 63   ┆ar constant *) stepvar:= attstac┆
0x00aea0…00aec0             6b 5b 20 6f 6c 64 74 6f 70 20 5d 2e 63 68 62 75 66 70 3b 20 28 2a 20 65 78 69 74 20 70 69 63 6b   ┆k[ oldtop ].chbufp; (* exit pick┆
0x00aec0…00aee0             75 70 20 73 74 72 69 6e 67 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 66 6f 72 20 73 74   ┆up string *) end; end; (* for st┆
0x00aee0…00af00             65 70 76 61 72 20 2e 2e 2e 20 2a 29 0a 0a 66 6f 72 20 69 6e 78 3a 3d 20 69 6e 78 20 74 6f 20 61   ┆epvar ... *)  for inx:= inx to a┆
0x00af00…00af20             6c 66 61 6c 65 6e 67 74 68 20 64 6f 0a 63 68 61 72 5f 6e 61 6d 65 5b 20 69 6e 78 20 5d 3a 3d 20   ┆lfalength do char_name[ inx ]:= ┆
0x00af20…00af40             27 20 27 3b 0a 63 68 61 72 5f 6e 61 6d 65 5b 30 5d 20 3a 3d 20 63 68 72 28 61 6c 66 61 6c 65 6e   ┆' '; char_name[0] := chr(alfalen┆
0x00af40…00af60             67 74 68 29 3b 0a 73 74 72 69 6e 67 5f 63 6f 6e 73 74 5b 20 73 74 72 5f 63 6f 6e 73 74 5f 74 6f   ┆gth); string_const[ str_const_to┆
0x00af60…00af80             70 20 5d 3a 3d 20 67 65 74 5f 63 68 61 72 5f 63 6f 6e 73 74 28 63 68 61 72 5f 6e 61 6d 65 29 3b   ┆p ]:= get_char_const(char_name);┆
0x00af80…00afa0             0a 69 66 20 73 74 72 5f 63 6f 6e 73 74 5f 74 6f 70 3d 6d 61 78 6e 61 6d 65 6c 65 6e 67 74 68 20   ┆ if str_const_top=maxnamelength ┆
0x00afa0…00afc0             74 68 65 6e 0a 77 61 72 6e 69 6e 67 28 31 30 37 29 20 28 2a 20 72 65 6d 61 69 6e 69 6e 67 20 70   ┆then warning(107) (* remaining p┆
0x00afc0…00afe0             61 72 74 20 6f 66 20 73 74 72 69 6e 67 20 73 6b 69 70 70 65 64 20 2a 29 0a 65 6c 73 65 0a 73 74   ┆art of string skipped *) else st┆
0x00afe0…00b000             72 5f 63 6f 6e 73 74 5f 74 6f 70 3a 3d 20 73 74 72 5f 63 6f 6e 73 74 5f 74 6f 70 2b 31 3b 0a 65   ┆r_const_top:= str_const_top+1; e┆
0x00b000…00b020 (2, 1, 14)  6e 64 3b 20 28 2a 20 34 30 38 20 2a 29 0a 0a 34 30 39 3a 20 28 2a 20 3c 76 61 6c 75 65 20 64 65   ┆nd; (* 408 *)  409: (* <value de┆
0x00b020…00b040             6e 6f 74 61 74 69 6f 6e 3e 20 3a 3a 3d 20 3c 73 74 72 69 6e 67 3e 20 2a 29 0a 28 2a 20 63 6f 64   ┆notation> ::= <string> *) (* cod┆
0x00b040…00b060             65 3a 20 6c 69 74 65 72 61 6c 28 74 65 78 74 20 6c 65 6e 67 74 68 29 20 73 74 72 69 6e 67 20 2a   ┆e: literal(text length) string *┆
0x00b060…00b080             29 0a 62 65 67 69 6e 0a 65 6d 69 74 63 6f 64 65 28 63 6c 69 74 65 72 61 6c 29 3b 0a 65 6d 69 74   ┆) begin emitcode(cliteral); emit┆
0x00b080…00b0a0             28 63 74 65 78 74 2c 20 73 74 72 5f 63 6f 6e 73 74 5f 74 6f 70 2d 31 2c 20 6e 69 6c 6c 2c 20 63   ┆(ctext, str_const_top-1, nill, c┆
0x00b0a0…00b0c0             6e 6f 63 6f 64 65 29 3b 0a 66 6f 72 20 73 74 65 70 76 61 72 3a 3d 20 31 20 74 6f 20 73 74 72 5f   ┆nocode); for stepvar:= 1 to str_┆
0x00b0c0…00b0e0             63 6f 6e 73 74 5f 74 6f 70 2d 31 20 64 6f 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 73 74 72   ┆const_top-1 do emit(cnocode, str┆
0x00b0e0…00b100             69 6e 67 5f 63 6f 6e 73 74 5b 20 73 74 65 70 76 61 72 20 5d 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63   ┆ing_const[ stepvar ], nill, cnoc┆
0x00b100…00b120             6f 64 65 29 3b 0a 65 6e 64 3b 20 28 2a 20 34 30 39 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 63 61   ┆ode); end; (* 409 *)  end; (* ca┆
0x00b120…00b140             73 65 20 2a 29 0a 0a 69 66 20 70 72 6f 64 3c 3d 34 30 35 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28   ┆se *)  if prod<=405 then begin (┆
0x00b140…00b160             2a 20 63 6f 64 65 3a 20 6c 69 74 65 72 61 6c 28 6c 65 6e 67 74 68 20 63 6f 64 65 6b 69 6e 64 29   ┆* code: literal(length codekind)┆
0x00b160…00b180             20 73 74 72 69 6e 67 20 2a 29 0a 0a 6c 65 6e 67 74 68 3a 3d 20 61 74 74 73 74 61 63 6b 5b 6f 6c   ┆ string *)  length:= attstack[ol┆
0x00b180…00b1a0             64 74 6f 70 5d 2e 63 68 62 75 66 70 2d 61 74 74 73 74 61 63 6b 5b 6f 6c 64 74 6f 70 2d 31 5d 2e   ┆dtop].chbufp-attstack[oldtop-1].┆
0x00b1a0…00b1c0             63 68 62 75 66 70 3b 0a 69 66 20 70 72 6f 64 3d 34 30 34 20 74 68 65 6e 20 6c 65 6e 67 74 68 3a   ┆chbufp; if prod=404 then length:┆
0x00b1c0…00b1e0             3d 20 6c 65 6e 67 74 68 2b 31 3b 20 28 2a 20 27 23 27 20 2a 29 0a 0a 65 6d 69 74 63 6f 64 65 28   ┆= length+1; (* '#' *)  emitcode(┆
0x00b1e0…00b200             63 6c 69 74 65 72 61 6c 29 3b 0a 65 6d 69 74 28 63 6f 64 65 6b 69 6e 64 2c 20 6c 65 6e 67 74 68   ┆cliteral); emit(codekind, length┆
0x00b200…00b220 (2, 1, 15)  2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 69 66 20 70 72 6f 64 3d 34 30 34 20 74 68   ┆, nill, cnocode); if prod=404 th┆
0x00b220…00b240             65 6e 20 28 2a 20 65 6d 69 74 28 20 27 23 27 20 29 20 20 2a 29 0a 65 6d 69 74 28 63 6e 6f 63 6f   ┆en (* emit( '#' )  *) emit(cnoco┆
0x00b240…00b260             64 65 2c 20 6f 72 64 28 27 23 27 29 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 20 29 3b 0a 66   ┆de, ord('#'), nill, cnocode ); f┆
0x00b260…00b280             6f 72 20 73 74 65 70 76 61 72 3a 3d 20 61 74 74 73 74 61 63 6b 5b 6f 6c 64 74 6f 70 2d 31 5d 2e   ┆or stepvar:= attstack[oldtop-1].┆
0x00b280…00b2a0             63 68 62 75 66 70 20 74 6f 20 61 74 74 73 74 61 63 6b 5b 6f 6c 64 74 6f 70 5d 2e 63 68 62 75 66   ┆chbufp to attstack[oldtop].chbuf┆
0x00b2a0…00b2c0             70 2d 31 20 64 6f 0a 62 65 67 69 6e 0a 6f 72 64 5f 63 68 61 72 3a 3d 20 6f 72 64 28 20 63 68 62   ┆p-1 do begin ord_char:= ord( chb┆
0x00b2c0…00b2e0             75 66 20 5b 20 73 74 65 70 76 61 72 20 5d 20 29 3b 0a 69 66 20 28 28 70 72 6f 64 3d 34 30 31 29   ┆uf [ stepvar ] ); if ((prod=401)┆
0x00b2e0…00b300             20 6f 72 20 28 70 72 6f 64 3d 34 30 34 29 29 20 61 6e 64 20 28 28 6f 72 64 5f 63 68 61 72 3e 3d   ┆ or (prod=404)) and ((ord_char>=┆
0x00b300…00b320             6f 72 64 28 27 41 27 29 29 20 61 6e 64 20 28 6f 72 64 5f 63 68 61 72 3c 3d 6f 72 64 28 27 5d 27   ┆ord('A')) and (ord_char<=ord(']'┆
0x00b320…00b340             29 29 29 20 74 68 65 6e 0a 6f 72 64 5f 63 68 61 72 3a 3d 20 6f 72 64 5f 63 68 61 72 2b 6f 72 64   ┆))) then ord_char:= ord_char+ord┆
0x00b340…00b360             28 27 61 27 29 2d 6f 72 64 28 27 41 27 29 3b 20 28 2a 20 63 6f 6e 76 65 72 74 20 74 6f 20 6c 6f   ┆('a')-ord('A'); (* convert to lo┆
0x00b360…00b380             77 65 72 20 63 61 73 65 20 2a 29 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 6f 72 64 5f 63 68   ┆wer case *) emit(cnocode, ord_ch┆
0x00b380…00b3a0             61 72 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a   ┆ar, nill, cnocode); end; end; (*┆
0x00b3a0…00b3c0             20 70 72 6f 64 3c 3d 34 30 35 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 6c 69 74 65 72 61 6c 73 20 2a   ┆ prod<=405 *) end; (* literals *┆
0x00b3c0…00b3e0             29 0a 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 6e 73 74 61 6e 74 64 65 63 6c 61 72 61 74 69   ┆)    procedure constantdeclarati┆
0x00b3e0…00b400             6f 6e 3b 0a 28 2a 20 73 65 63 74 69 6f 6e 20 35 20 2a 29 0a 0a 76 61 72 0a 6e 61 6d 65 20 3a 20   ┆on; (* section 5 *)  var name : ┆
0x00b400…00b420 (3, 0, 1)   6e 61 6d 65 68 65 61 64 70 74 72 3b 0a 6e 61 6d 65 73 70 69 78 20 3a 20 69 6e 74 65 67 65 72 3b   ┆nameheadptr; namespix : integer;┆
0x00b420…00b440             0a 0a 62 65 67 69 6e 0a 63 61 73 65 20 70 72 6f 64 20 6f 66 0a 20 35 30 31 3a 20 20 28 2a 20 3c   ┆  begin case prod of  501:  (* <┆
0x00b440…00b460             63 6f 6e 73 74 61 6e 74 20 64 65 66 69 6e 69 74 69 6f 6e 3e 20 3a 3a 3d 20 3c 63 6f 6e 73 74 6e   ┆constant definition> ::= <constn┆
0x00b460…00b480             61 6d 65 3e 3d 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 3c 73 65 6d 69 63 6f 6c 6f 6e 73 3e 20 2a   ┆ame>=<expression> <semicolons> *┆
0x00b480…00b4a0             29 0a 28 2a 63 6f 64 65 3a 20 65 6e 64 63 6f 6e 73 74 61 6e 74 64 65 63 6c 20 2a 29 0a 65 6d 69   ┆) (*code: endconstantdecl *) emi┆
0x00b4a0…00b4c0             74 63 6f 64 65 28 63 65 6e 64 63 6f 6e 73 74 61 6e 74 64 65 63 6c 29 3b 0a 0a 35 30 32 3a 20 20   ┆tcode(cendconstantdecl);  502:  ┆
0x00b4c0…00b4e0             28 2a 20 3c 63 6f 6e 73 74 6e 61 6d 65 3e 20 3a 3a 3d 20 6e 61 6d 65 20 2a 29 0a 28 2a 20 64 65   ┆(* <constname> ::= name *) (* de┆
0x00b4e0…00b500             63 6c 61 72 61 74 69 6f 6e 28 63 6f 6e 73 74 61 6e 74 29 20 64 65 63 6c 61 72 65 28 73 70 69 78   ┆claration(constant) declare(spix┆
0x00b500…00b520             29 20 20 2a 29 0a 62 65 67 69 6e 0a 6e 61 6d 65 3a 3d 20 72 65 61 64 6e 61 6d 65 3b 0a 6e 61 6d   ┆)  *) begin name:= readname; nam┆
0x00b520…00b540             65 73 70 69 78 3a 3d 20 73 65 61 72 63 68 6e 61 6d 65 28 6e 61 6d 65 29 3b 0a 65 6d 69 74 28 20   ┆espix:= searchname(name); emit( ┆
0x00b540…00b560             63 64 65 63 6c 61 72 61 74 69 6f 6e 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 63 6f 6e 73 74   ┆cdeclaration, nill, nill, cconst┆
0x00b560…00b580             61 6e 74 29 3b 0a 65 6d 69 74 64 65 63 6c 61 72 65 28 64 65 63 6c 2c 20 6e 61 6d 65 73 70 69 78   ┆ant); emitdeclare(decl, namespix┆
0x00b580…00b5a0             29 3b 0a 65 6e 64 3b 20 28 2a 20 35 30 32 20 2a 29 0a 0a 35 30 33 3a 20 20 28 2a 20 3c 63 6f 6e   ┆); end; (* 502 *)  503:  (* <con┆
0x00b5a0…00b5c0             73 74 61 6e 74 20 64 65 66 69 6e 69 74 69 6f 6e 3e 20 3a 3a 3d 20 3c 63 6f 6e 73 74 6e 61 6d 65   ┆stant definition> ::= <constname┆
0x00b5c0…00b5e0             3e 20 65 72 72 6f 72 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 69 64 28 61 6e 6f 6e 79 6d 6f 75 73   ┆> error *) (* code: id(anonymous┆
0x00b5e0…00b600             29 20 65 6e 64 65 78 70 72 65 73 73 69 6f 6e 20 65 6e 64 63 6f 6e 73 74 61 6e 74 64 65 63 6c 20   ┆) endexpression endconstantdecl ┆
0x00b600…00b620 (3, 0, 2)   2a 29 0a 62 65 67 69 6e 0a 69 66 20 72 65 64 75 63 65 64 5f 69 6e 74 65 72 6d 65 64 69 61 74 65   ┆*) begin if reduced_intermediate┆
0x00b620…00b640             5f 6c 61 6e 67 75 61 67 65 20 74 68 65 6e 0a 65 6d 69 74 28 63 69 64 2c 20 61 6e 6f 6e 79 6d 6f   ┆_language then emit(cid, anonymo┆
0x00b640…00b660             75 73 73 70 69 78 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 0a 65 6c 73 65 0a 65 6d 69 74   ┆usspix, nill, cnocode) else emit┆
0x00b660…00b680             28 63 69 64 2c 20 61 6e 6f 6e 79 6d 6f 75 73 73 70 69 78 2c 20 6e 69 6c 6c 2c 20 63 65 6e 64 65   ┆(cid, anonymousspix, nill, cende┆
0x00b680…00b6a0             78 70 72 65 73 73 69 6f 6e 29 3b 0a 65 6d 69 74 63 6f 64 65 28 63 65 6e 64 63 6f 6e 73 74 61 6e   ┆xpression); emitcode(cendconstan┆
0x00b6a0…00b6c0             74 64 65 63 6c 29 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 65   ┆tdecl); end;  end; (* case *)  e┆
0x00b6c0…00b6e0             6e 64 3b 20 28 2a 20 63 6f 6e 73 74 61 6e 74 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 2a 29 0a 0a   ┆nd; (* constant declaration *)  ┆
0x00b6e0…00b700             0c 0a 70 72 6f 63 65 64 75 72 65 20 74 79 70 65 64 65 66 69 6e 69 74 69 6f 6e 3b 0a 28 2a 20 73   ┆  procedure typedefinition; (* s┆
0x00b700…00b720             65 63 74 69 6f 6e 20 36 20 2a 29 0a 0a 76 61 72 0a 63 6f 64 65 77 6f 72 64 20 3a 20 63 6f 64 65   ┆ection 6 *)  var codeword : code┆
0x00b720…00b740             73 3b 0a 6e 61 6d 65 20 3a 20 6e 61 6d 65 68 65 61 64 70 74 72 3b 0a 73 74 65 70 76 61 72 2c 0a   ┆s; name : nameheadptr; stepvar, ┆
0x00b740…00b760             6e 61 6d 65 73 70 69 78 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 0a 69 66 20   ┆namespix : integer;  begin   if ┆
0x00b760…00b780             28 70 72 6f 64 3e 3d 36 30 31 29 20 61 6e 64 20 28 70 72 6f 64 3c 36 32 30 29 20 74 68 65 6e 0a   ┆(prod>=601) and (prod<620) then ┆
0x00b780…00b7a0             62 65 67 69 6e 0a 63 61 73 65 20 70 72 6f 64 20 6f 66 0a 36 30 31 3a 20 20 28 2a 20 3c 74 79 70   ┆begin case prod of 601:  (* <typ┆
0x00b7a0…00b7c0             65 20 64 65 66 69 6e 69 74 69 6f 6e 3e 20 3a 3a 3d 20 3c 74 79 70 65 20 6e 61 6d 65 3e 20 3c 66   ┆e definition> ::= <type name> <f┆
0x00b7c0…00b7e0             6f 72 6d 61 6c 20 70 61 72 61 6d 65 74 65 72 73 3e 20 3c 65 71 20 74 79 70 65 3e 20 2a 29 0a 28   ┆ormal parameters> <eq type> *) (┆
0x00b7e0…00b800             2a 20 63 6f 64 65 3a 20 65 6e 64 74 79 70 65 64 65 63 6c 20 65 6e 64 6c 65 76 65 6c 20 20 2a 29   ┆* code: endtypedecl endlevel  *)┆
0x00b800…00b820 (3, 0, 3)   0a 62 65 67 69 6e 0a 65 6d 69 74 63 6f 64 65 28 63 65 6e 64 74 79 70 65 64 65 63 6c 29 3b 0a 63   ┆ begin emitcode(cendtypedecl); c┆
0x00b820…00b840             6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 6c 65 76 65 6c 3b 0a 65 6e 64 3b 0a 0a 36 30 32 2c 20   ┆odeword:= cendlevel; end;  602, ┆
0x00b840…00b860             20 28 2a 20 3c 65 71 3e 20 3a 3a 3d 20 3d 2a 29 0a 36 31 36 3a 20 20 28 2a 20 20 20 20 20 20 21   ┆ (* <eq> ::= =*) 616:  (*      !┆
0x00b860…00b880             20 20 20 20 3a 20 20 20 20 2a 29 0a 28 2a 20 20 6e 6f 20 63 6f 64 65 20 2a 29 0a 62 65 67 69 6e   ┆    :    *) (*  no code *) begin┆
0x00b880…00b8a0             0a 69 66 20 70 72 6f 64 3d 36 31 36 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 61 72 6e 69 6e 67 28   ┆ if prod=616 then begin warning(┆
0x00b8a0…00b8c0             31 30 36 29 3b 0a 70 72 6f 64 3a 3d 20 36 30 32 3b 0a 65 6e 64 3b 0a 63 6f 64 65 77 6f 72 64 3a   ┆106); prod:= 602; end; codeword:┆
0x00b8c0…00b8e0             3d 20 63 6e 6f 63 6f 64 65 3b 0a 65 6e 64 3b 20 28 2a 20 36 30 32 2c 20 36 31 36 20 2a 29 0a 0a   ┆= cnocode; end; (* 602, 616 *)  ┆
0x00b8e0…00b900             36 30 33 3a 20 20 28 2a 20 3c 74 79 70 65 3e 20 3a 3a 3d 20 3c 76 61 72 69 61 62 6c 65 3e 20 2a   ┆603:  (* <type> ::= <variable> *┆
0x00b900…00b920             29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 74 79 70 65 20 2a 29 0a 62 65 67 69 6e 0a 74 79 70 65   ┆) (* code: endtype *) begin type┆
0x00b920…00b940             62 75 66 66 65 72 5b 20 61 74 74 73 74 61 63 6b 5b 20 6e 65 77 74 6f 70 2d 31 20 5d 2e 62 75 66   ┆buffer[ attstack[ newtop-1 ].buf┆
0x00b940…00b960             66 65 72 73 74 61 72 74 5d 3a 3d 20 6f 72 64 28 63 74 79 70 65 69 64 29 3b 0a 28 2a 20 69 2e 65   ┆ferstart]:= ord(ctypeid); (* i.e┆
0x00b960…00b980             2e 20 63 68 61 6e 67 65 20 74 68 65 20 66 6f 72 6d 65 72 20 67 65 6e 65 72 61 74 65 64 20 69 64   ┆. change the former generated id┆
0x00b980…00b9a0             20 74 6f 20 74 79 70 65 69 64 20 2a 29 0a 69 66 20 72 65 64 75 63 65 64 5f 69 6e 74 65 72 6d 65   ┆ to typeid *) if reduced_interme┆
0x00b9a0…00b9c0             64 69 61 74 65 5f 6c 61 6e 67 75 61 67 65 20 74 68 65 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63   ┆diate_language then codeword:= c┆
0x00b9c0…00b9e0             6e 6f 63 6f 64 65 0a 65 6c 73 65 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 74 79 70 65 3b   ┆nocode else codeword:= cendtype;┆
0x00b9e0…00ba00             0a 65 6e 64 3b 0a 0a 36 30 34 3a 20 20 28 2a 20 3c 74 79 70 65 3e 20 3a 3a 3d 20 3c 73 74 72 75   ┆ end;  604:  (* <type> ::= <stru┆
0x00ba00…00ba20 (3, 0, 4)   63 74 75 72 65 64 20 74 79 70 65 3e 20 2a 29 0a 28 2a 20 20 20 20 21 20 3c 70 6f 6f 6c 20 74 79   ┆ctured type> *) (*    ! <pool ty┆
0x00ba20…00ba40             70 65 3e 20 20 20 20 2a 29 0a 28 2a 20 6e 6f 20 63 6f 64 65 20 2a 29 0a 63 6f 64 65 77 6f 72 64   ┆pe>    *) (* no code *) codeword┆
0x00ba40…00ba60             3a 3d 20 63 6e 6f 63 6f 64 65 3b 0a 0a 36 30 35 3a 20 20 28 2a 20 3c 74 79 70 65 3e 20 3a 3a 3d   ┆:= cnocode;  605:  (* <type> ::=┆
0x00ba60…00ba80             20 3c 75 70 61 72 72 6f 77 3e 20 3c 74 79 70 65 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e   ┆ <uparrow> <type> *) (* code: en┆
0x00ba80…00baa0             64 70 6f 69 6e 74 65 72 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 70 6f 69 6e 74   ┆dpointer *) codeword:= cendpoint┆
0x00baa0…00bac0             65 72 3b 0a 0a 36 30 36 3a 20 20 28 2a 20 3c 74 79 70 65 3e 20 3a 3a 3d 20 3c 72 65 61 64 20 6f   ┆er;  606:  (* <type> ::= <read o┆
0x00bac0…00bae0             6e 6c 79 3e 20 3c 74 79 70 65 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 72 65 61 64 6f   ┆nly> <type> *) (* code: endreado┆
0x00bae0…00bb00             6e 6c 79 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 72 65 61 64 6f 6e 6c 79 3b 0a   ┆nly *) codeword:= cendreadonly; ┆
0x00bb00…00bb20             0a 36 30 37 3a 20 20 28 2a 20 3c 74 79 70 65 3e 20 3a 3a 3d 20 3c 73 74 61 72 74 20 73 63 61 6c   ┆ 607:  (* <type> ::= <start scal┆
0x00bb20…00bb40             61 72 3e 20 3c 69 64 65 6e 74 69 66 69 65 72 20 6c 69 73 74 3e 20 29 20 20 2a 29 0a 28 2a 20 63   ┆ar> <identifier list> )  *) (* c┆
0x00bb40…00bb60             6f 64 65 3a 20 65 6e 64 73 63 61 6c 61 72 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65   ┆ode: endscalar  *) codeword:= ce┆
0x00bb60…00bb80             6e 64 73 63 61 6c 61 72 3b 0a 0a 36 30 38 3a 20 20 28 2a 20 3c 74 79 70 65 3e 20 3a 3a 3d 20 3c   ┆ndscalar;  608:  (* <type> ::= <┆
0x00bb80…00bba0             65 78 70 72 65 73 73 69 6f 6e 3e 20 3c 65 6e 64 20 73 75 62 72 61 6e 67 65 3e 20 20 2a 29 0a 28   ┆expression> <end subrange>  *) (┆
0x00bba0…00bbc0             2a 20 63 6f 64 65 3a 20 65 6e 64 73 75 62 72 61 6e 67 65 20 2a 29 0a 62 65 67 69 6e 0a 77 69 74   ┆* code: endsubrange *) begin wit┆
0x00bbc0…00bbe0             68 20 61 74 74 73 74 61 63 6b 5b 20 6e 65 77 74 6f 70 2d 31 20 5d 20 64 6f 0a 62 65 67 69 6e 0a   ┆h attstack[ newtop-1 ] do begin ┆
0x00bbe0…00bc00             74 79 70 65 62 75 66 66 65 72 5b 20 62 75 66 66 65 72 73 74 61 72 74 2d 32 20 5d 3a 3d 20 6f 72   ┆typebuffer[ bufferstart-2 ]:= or┆
0x00bc00…00bc20 (3, 0, 5)   64 28 63 6e 65 77 74 79 70 65 29 3b 0a 74 79 70 65 62 75 66 66 65 72 5b 20 62 75 66 66 65 72 73   ┆d(cnewtype); typebuffer[ buffers┆
0x00bc20…00bc40             74 61 72 74 2d 31 20 5d 3a 3d 20 6f 72 64 28 63 73 75 62 72 61 6e 67 65 29 3b 0a 65 6e 64 3b 20   ┆tart-1 ]:= ord(csubrange); end; ┆
0x00bc40…00bc60             28 2a 20 77 69 74 68 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 73 75 62 72 61 6e   ┆(* with *) codeword:= cendsubran┆
0x00bc60…00bc80             67 65 3b 0a 65 6e 64 3b 0a 0a 36 30 39 3a 20 20 28 2a 20 3c 74 79 70 65 3e 20 3a 3a 3d 20 3c 65   ┆ge; end;  609:  (* <type> ::= <e┆
0x00bc80…00bca0             78 74 65 72 6e 61 6c 20 70 72 6f 63 65 73 73 3e 20 3c 66 6f 72 6d 61 6c 20 70 61 72 61 6d 65 74   ┆xternal process> <formal paramet┆
0x00bca0…00bcc0             65 72 73 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 65 78 74 70 72 6f 63 65 73 73 20 65   ┆ers> *) (* code: endextprocess e┆
0x00bcc0…00bce0             6e 64 6c 65 76 65 6c 20 20 2a 29 0a 62 65 67 69 6e 0a 65 6d 69 74 63 6f 64 65 28 63 65 6e 64 65   ┆ndlevel  *) begin emitcode(cende┆
0x00bce0…00bd00             78 74 70 72 6f 63 65 73 73 29 3b 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 6c 65 76 65 6c   ┆xtprocess); codeword:= cendlevel┆
0x00bd00…00bd20             3b 0a 65 6e 64 3b 20 28 2a 20 36 30 39 3a 20 2a 29 0a 0a 36 31 30 3a 20 20 28 2a 20 3c 72 65 63   ┆; end; (* 609: *)  610:  (* <rec┆
0x00bd20…00bd40             6f 72 64 20 74 79 70 65 3e 20 3a 3a 3d 20 3c 72 65 63 6f 72 64 3e 20 3c 66 69 65 6c 64 20 6c 69   ┆ord type> ::= <record> <field li┆
0x00bd40…00bd60             73 74 3e 20 65 6e 64 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 72 65 63 6f 72 64 20 20   ┆st> end  *) (* code: endrecord  ┆
0x00bd60…00bd80             2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 72 65 63 6f 72 64 3b 0a   ┆*) begin codeword:= cendrecord; ┆
0x00bd80…00bda0             65 6e 64 3b 0a 0a 36 31 31 3a 20 20 28 2a 20 3c 72 65 63 6f 72 64 20 73 65 63 74 69 6f 6e 3e 20   ┆end;  611:  (* <record section> ┆
0x00bda0…00bdc0             3a 3a 3d 20 3c 73 74 61 72 74 20 73 65 63 74 69 6f 6e 3e 20 3c 69 64 65 6e 74 69 66 69 65 72 20   ┆::= <start section> <identifier ┆
0x00bdc0…00bde0             6c 69 73 74 3e 20 3c 74 79 70 65 20 63 6f 6c 6f 6e 3e 20 3c 74 79 70 65 3e 20 20 2a 29 0a 28 2a   ┆list> <type colon> <type>  *) (*┆
0x00bde0…00be00             20 63 6f 64 65 3a 20 65 6e 64 66 69 65 6c 64 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63   ┆ code: endfield  *) codeword:= c┆
0x00be00…00be20 (3, 0, 6)   65 6e 64 66 69 65 6c 64 3b 0a 0a 36 31 32 3a 20 20 28 2a 20 3c 73 65 74 20 74 79 70 65 3e 20 3a   ┆endfield;  612:  (* <set type> :┆
0x00be20…00be40             3a 3d 20 3c 73 65 74 20 6f 66 3e 20 3c 74 79 70 65 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20   ┆:= <set of> <type>  *) (* code: ┆
0x00be40…00be60             65 6e 64 73 65 74 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 73 65 74 3b 0a 0a   ┆endset  *) codeword:= cendset;  ┆
0x00be60…00be80             36 31 33 3a 20 20 28 2a 20 3c 70 6f 6f 6c 20 74 79 70 65 3e 20 3a 3a 3d 20 3c 70 6f 6f 6c 3e 20   ┆613:  (* <pool type> ::= <pool> ┆
0x00be80…00bea0             3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 3c 74 79 70 65 20 73 69 7a 65 3e 20 20 2a 29 0a 28 2a 20   ┆<expression> <type size>  *) (* ┆
0x00bea0…00bec0             63 6f 64 65 3a 20 65 6e 64 70 6f 6f 6c 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e   ┆code: endpool  *) codeword:= cen┆
0x00bec0…00bee0             64 70 6f 6f 6c 3b 0a 0a 36 31 34 3a 20 20 28 2a 20 3c 73 74 72 75 63 74 75 72 65 64 20 74 79 70   ┆dpool;  614:  (* <structured typ┆
0x00bee0…00bf00             65 3e 20 3a 3a 3d 20 3c 70 61 63 6b 65 64 3e 20 3c 75 6e 70 61 63 6b 65 64 20 73 74 72 75 63 74   ┆e> ::= <packed> <unpacked struct┆
0x00bf00…00bf20             75 72 65 64 20 74 79 70 65 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 70 61 63 6b 65 64 20 20 2a   ┆ured type> *) (* code: packed  *┆
0x00bf20…00bf40             29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 70 61 63 6b 65 64 3b 0a 0a 36 31 35 3a 20 20 28 2a 20   ┆) codeword:= cpacked;  615:  (* ┆
0x00bf40…00bf60             3c 61 72 72 61 79 20 74 79 70 65 3e 20 3a 3a 3d 20 3c 61 72 72 61 79 20 73 74 61 72 74 3e 20 3c   ┆<array type> ::= <array start> <┆
0x00bf60…00bf80             74 79 70 65 3e 20 3c 63 6f 6d 70 6f 6e 65 6e 74 20 74 79 70 65 3e 20 20 2a 29 0a 28 2a 20 63 6f   ┆type> <component type>  *) (* co┆
0x00bf80…00bfa0             64 65 3a 20 65 6e 64 61 72 72 61 79 20 20 2a 29 0a 62 65 67 69 6e 0a 66 6f 72 20 73 74 65 70 76   ┆de: endarray  *) begin for stepv┆
0x00bfa0…00bfc0             61 72 3a 3d 20 31 20 74 6f 20 64 69 6d 65 6e 73 69 6f 6e 5f 63 6f 75 6e 74 20 64 6f 0a 65 6d 69   ┆ar:= 1 to dimension_count do emi┆
0x00bfc0…00bfe0             74 63 6f 64 65 28 63 65 6e 64 61 72 72 61 79 29 3b 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e   ┆tcode(cendarray); codeword:= cen┆
0x00bfe0…00c000             64 61 72 72 61 79 3b 0a 65 6e 64 3b 0a 0a 36 31 37 3a 20 20 28 2a 20 3c 74 79 70 65 20 64 65 66   ┆darray; end;  617:  (* <type def┆
0x00c000…00c020 (3, 0, 7)   69 6e 69 74 69 6f 6e 3e 20 3a 3a 3d 20 3c 74 79 70 65 20 6e 61 6d 65 3e 20 3b 20 2a 29 0a 28 2a   ┆inition> ::= <type name> ; *) (*┆
0x00c020…00c040             20 63 6f 64 65 3a 20 6e 65 77 74 79 70 65 20 66 6f 72 77 61 72 64 70 6f 69 6e 74 65 72 20 65 6e   ┆ code: newtype forwardpointer en┆
0x00c040…00c060             64 74 79 70 65 64 65 63 6c 20 2a 29 0a 62 65 67 69 6e 0a 65 6d 69 74 28 63 6e 65 77 74 79 70 65   ┆dtypedecl *) begin emit(cnewtype┆
0x00c060…00c080             2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 66 6f 72 77 61 72 64 70 6f 69 6e 74 65 72 29 3b 0a   ┆, nill, nill, cforwardpointer); ┆
0x00c080…00c0a0             63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 74 79 70 65 64 65 63 6c 3b 0a 65 6e 64 3b 0a 0a 65   ┆codeword:= cendtypedecl; end;  e┆
0x00c0a0…00c0c0             6e 64 3b 20 28 2a 20 63 61 73 65 20 36 30 31 2e 2e 36 31 39 20 2a 29 0a 0a 69 66 20 28 70 72 6f   ┆nd; (* case 601..619 *)  if (pro┆
0x00c0c0…00c0e0             64 3e 3d 36 30 33 29 20 61 6e 64 20 28 70 72 6f 64 3c 36 31 30 29 20 74 68 65 6e 0a 69 66 20 28   ┆d>=603) and (prod<610) then if (┆
0x00c0e0…00c100             6c 61 73 74 62 75 66 66 65 72 65 64 3e 30 29 20 61 6e 64 20 28 61 74 74 73 74 61 63 6b 5b 20 6e   ┆lastbuffered>0) and (attstack[ n┆
0x00c100…00c120             65 77 74 6f 70 2d 31 20 5d 2e 62 75 66 66 65 72 73 74 61 72 74 3d 33 29 20 74 68 65 6e 0a 28 2a   ┆ewtop-1 ].bufferstart=3) then (*┆
0x00c120…00c140             20 69 2e 65 2e 20 69 66 20 61 6e 79 74 68 69 6e 67 20 62 75 66 66 65 72 65 64 20 61 6e 64 20 3c   ┆ i.e. if anything buffered and <┆
0x00c140…00c160             74 79 70 65 3e 20 69 73 20 74 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 69 6e 63 61 72 6e 61 74 69   ┆type> is the outermost incarnati┆
0x00c160…00c180             6f 6e 20 2a 29 0a 65 6d 69 74 5f 74 79 70 65 62 75 66 66 65 72 3b 0a 0a 65 6d 69 74 63 6f 64 65   ┆on *) emit_typebuffer;  emitcode┆
0x00c180…00c1a0             28 63 6f 64 65 77 6f 72 64 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 69 66 20 2e 2e 2e 2e 20 2a 29 0a   ┆(codeword);  end; (* if .... *) ┆
0x00c1a0…00c1c0             0a 69 66 20 28 70 72 6f 64 3e 3d 36 32 30 29 20 61 6e 64 20 28 70 72 6f 64 3c 36 33 30 29 20 74   ┆ if (prod>=620) and (prod<630) t┆
0x00c1c0…00c1e0             68 65 6e 0a 62 65 67 69 6e 0a 63 61 73 65 20 70 72 6f 64 20 6f 66 0a 0a 36 32 30 3a 20 20 28 2a   ┆hen begin case prod of  620:  (*┆
0x00c1e0…00c200             20 3c 75 70 61 72 72 6f 77 3e 20 3a 3a 3d 20 5e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6e 65   ┆ <uparrow> ::= ^  *) (* code: ne┆
0x00c200…00c220 (3, 0, 8)   77 74 79 70 65 20 70 6f 69 6e 74 65 72 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 70 6f   ┆wtype pointer  *) codeword:= cpo┆
0x00c220…00c240             69 6e 74 65 72 3b 0a 0a 36 32 31 3a 20 20 28 2a 20 3c 73 74 61 72 74 73 63 61 6c 61 72 3e 20 3a   ┆inter;  621:  (* <startscalar> :┆
0x00c240…00c260             3a 3d 20 28 20 6e 61 6d 65 20 2c 20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6e 65 77 74 79 70   ┆:= ( name ,   *) (* code: newtyp┆
0x00c260…00c280             65 20 73 63 61 6c 61 72 20 20 2a 29 0a 28 2a 20 20 20 20 20 20 20 64 65 63 6c 61 72 61 74 69 6f   ┆e scalar  *) (*       declaratio┆
0x00c280…00c2a0             6e 28 20 73 63 61 6c 61 72 65 6c 65 6d 20 29 20 20 20 61 6e 64 20 20 2a 29 0a 28 2a 20 20 20 64   ┆n( scalarelem )   and  *) (*   d┆
0x00c2a0…00c2c0             65 63 6c 61 72 65 6c 69 73 74 28 20 6e 61 6d 65 20 29 20 69 73 20 67 65 6e 65 72 61 74 65 64 20   ┆eclarelist( name ) is generated ┆
0x00c2c0…00c2e0             61 66 74 65 72 20 74 68 65 20 63 61 73 65 20 73 74 61 74 65 6d 65 6e 74 20 2a 29 0a 63 6f 64 65   ┆after the case statement *) code┆
0x00c2e0…00c300             77 6f 72 64 3a 3d 20 63 73 63 61 6c 61 72 3b 0a 0a 36 32 32 3a 20 20 28 2a 20 3c 72 65 61 64 20   ┆word:= cscalar;  622:  (* <read ┆
0x00c300…00c320             6f 6e 6c 79 3e 20 3a 3a 3d 20 20 21 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6e 65 77 74 79 70   ┆only> ::=  !  *) (* code: newtyp┆
0x00c320…00c340             65 20 72 65 61 64 6f 6e 6c 79 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 72 65 61 64 6f 6e   ┆e readonly *) codeword:= creadon┆
0x00c340…00c360             6c 79 3b 0a 0a 36 32 33 3a 20 20 28 2a 20 3c 61 72 72 61 79 3e 20 3a 3a 3d 20 61 72 72 61 79 20   ┆ly;  623:  (* <array> ::= array ┆
0x00c360…00c380             28 20 2a 29 0a 20 20 28 2a 20 3c 6e 65 77 20 64 69 6d 65 6e 73 69 6f 6e 3e 20 3a 3a 3d 20 2c 20   ┆( *)   (* <new dimension> ::= , ┆
0x00c380…00c3a0             2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6e 65 77 74 79 70 65 20 61 72 72 61 79 20 20 2a 29 0a 63 6f   ┆*) (* code: newtype array  *) co┆
0x00c3a0…00c3c0             64 65 77 6f 72 64 3a 3d 20 63 61 72 72 61 79 3b 0a 0a 36 32 34 3a 20 20 28 2a 20 3c 72 65 63 6f   ┆deword:= carray;  624:  (* <reco┆
0x00c3c0…00c3e0             72 64 3e 20 3a 3a 3d 20 72 65 63 6f 72 64 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6e 65 77 74   ┆rd> ::= record  *) (* code: newt┆
0x00c3e0…00c400             79 70 65 20 72 65 63 6f 72 64 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 72 65 63 6f 72 64   ┆ype record *) codeword:= crecord┆
0x00c400…00c420 (3, 0, 9)   3b 0a 0a 36 32 35 3a 20 20 28 2a 20 3c 73 65 74 20 6f 66 3e 20 3a 3a 3d 20 73 65 74 20 3c 6f 66   ┆;  625:  (* <set of> ::= set <of┆
0x00c420…00c440             3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6e 65 77 74 79 70 65 20 73 65 74 20 20 2a 29 0a 77   ┆>  *) (* code: newtype set  *) w┆
0x00c440…00c460             69 74 68 20 61 74 74 73 74 61 63 6b 5b 20 6e 65 77 74 6f 70 2d 31 20 5d 20 28 2a 20 61 74 74 73   ┆ith attstack[ newtop-1 ] (* atts┆
0x00c460…00c480             74 61 63 6b 28 20 3d 2f 3a 20 29 20 2a 29 20 64 6f 0a 62 65 67 69 6e 0a 74 79 70 65 62 75 66 66   ┆tack( =/: ) *) do begin typebuff┆
0x00c480…00c4a0             65 72 5b 20 62 75 66 66 65 72 73 74 61 72 74 2d 32 20 5d 3a 3d 20 6f 72 64 28 63 6e 65 77 74 79   ┆er[ bufferstart-2 ]:= ord(cnewty┆
0x00c4a0…00c4c0             70 65 29 3b 0a 74 79 70 65 62 75 66 66 65 72 5b 20 62 75 66 66 65 72 73 74 61 72 74 2d 31 20 5d   ┆pe); typebuffer[ bufferstart-1 ]┆
0x00c4c0…00c4e0             3a 3d 20 6f 72 64 28 63 73 65 74 29 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a 29 0a 0a 36   ┆:= ord(cset); end; (* with *)  6┆
0x00c4e0…00c500             32 36 3a 20 20 28 2a 20 3c 70 6f 6f 6c 3e 20 3a 3a 3d 20 70 6f 6f 6c 20 20 2a 29 0a 28 2a 20 63   ┆26:  (* <pool> ::= pool  *) (* c┆
0x00c500…00c520             6f 64 65 3a 20 6e 65 77 74 79 70 65 20 70 6f 6f 6c 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d   ┆ode: newtype pool  *) codeword:=┆
0x00c520…00c540             20 63 70 6f 6f 6c 3b 0a 0a 36 32 37 3a 20 20 28 2a 20 3c 65 78 74 65 72 6e 61 6c 20 74 79 70 65   ┆ cpool;  627:  (* <external type┆
0x00c540…00c560             3e 20 3a 3a 3d 20 65 78 74 65 72 6e 61 6c 20 20 70 72 6f 63 65 73 73 20 2a 29 0a 28 2a 20 63 6f   ┆> ::= external  process *) (* co┆
0x00c560…00c580             64 65 3a 20 6e 65 77 74 79 70 65 20 65 78 74 70 72 6f 63 65 73 73 20 20 2a 29 0a 63 6f 64 65 77   ┆de: newtype extprocess  *) codew┆
0x00c580…00c5a0             6f 72 64 3a 3d 20 63 65 78 74 70 72 6f 63 65 73 73 3b 0a 0a 36 32 38 3a 20 28 2a 20 3c 70 61 63   ┆ord:= cextprocess;  628: (* <pac┆
0x00c5a0…00c5c0             6b 65 64 3e 20 3a 3a 3d 20 70 61 63 6b 65 64 20 2a 29 0a 28 2a 20 6e 6f 20 63 6f 64 65 20 61 63   ┆ked> ::= packed *) (* no code ac┆
0x00c5c0…00c5e0             74 69 6f 6e 2c 20 73 74 6f 70 20 74 79 70 65 20 62 75 66 66 65 72 69 6e 67 20 2a 29 0a 3b 0a 0a   ┆tion, stop type buffering *) ;  ┆
0x00c5e0…00c600             65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2e 2e 20 2a 29 0a 0a 69 66 20 28 2a 20 3c 73 65 74 20 6f   ┆end; (* case .. *)  if (* <set o┆
0x00c600…00c620 (3, 0, 10)  66 3e 20 3a 3a 3d 20 73 65 74 20 3c 6f 66 3e 20 2a 29 20 70 72 6f 64 3d 36 32 35 20 74 68 65 6e   ┆f> ::= set <of> *) prod=625 then┆
0x00c620…00c640             0a 28 2a 20 6d 6f 76 65 20 62 75 66 66 65 72 20 73 74 61 72 74 20 66 72 6f 6d 20 61 74 74 73 74   ┆ (* move buffer start from attst┆
0x00c640…00c660             61 63 6b 28 3c 6f 66 3e 29 20 74 6f 20 61 74 74 73 74 61 63 6b 3c 73 65 74 20 6f 66 3e 29 20 2a   ┆ack(<of>) to attstack<set of>) *┆
0x00c660…00c680             29 0a 61 74 74 73 74 61 63 6b 5b 20 6e 65 77 74 6f 70 20 5d 2e 62 75 66 66 65 72 73 74 61 72 74   ┆) attstack[ newtop ].bufferstart┆
0x00c680…00c6a0             3a 3d 20 61 74 74 73 74 61 63 6b 5b 20 6f 6c 64 74 6f 70 20 5d 2e 62 75 66 66 65 72 73 74 61 72   ┆:= attstack[ oldtop ].bufferstar┆
0x00c6a0…00c6c0             74 0a 65 6c 73 65 0a 69 66 20 28 6c 61 73 74 62 75 66 66 65 72 65 64 3e 30 29 20 61 6e 64 20 28   ┆t else if (lastbuffered>0) and (┆
0x00c6c0…00c6e0             61 74 74 73 74 61 63 6b 5b 20 6e 65 77 74 6f 70 2d 31 20 5d 2e 62 75 66 66 65 72 73 74 61 72 74   ┆attstack[ newtop-1 ].bufferstart┆
0x00c6e0…00c700             3d 33 29 20 74 68 65 6e 0a 28 2a 20 69 2e 65 2e 20 69 66 20 61 6e 79 74 68 69 6e 67 20 62 75 66   ┆=3) then (* i.e. if anything buf┆
0x00c700…00c720             66 65 72 65 64 20 61 6e 64 20 3c 74 79 70 65 3e 20 69 73 20 6b 6e 6f 77 6e 20 6e 6f 74 20 74 6f   ┆fered and <type> is known not to┆
0x00c720…00c740             20 62 65 20 73 75 62 72 61 6e 67 65 20 20 2a 29 0a 28 2a 20 74 68 65 6e 20 73 74 6f 70 20 62 75   ┆ be subrange  *) (* then stop bu┆
0x00c740…00c760             66 66 65 72 69 6e 67 20 2a 29 0a 65 6d 69 74 5f 74 79 70 65 62 75 66 66 65 72 3b 0a 0a 69 66 20   ┆ffering *) emit_typebuffer;  if ┆
0x00c760…00c780             28 28 2a 20 6e 6f 74 20 3c 70 61 63 6b 65 64 3e 20 3a 3a 3d 20 70 61 63 6b 65 64 20 2a 29 20 70   ┆((* not <packed> ::= packed *) p┆
0x00c780…00c7a0             72 6f 64 3c 3e 36 32 38 29 20 61 6e 64 0a 28 28 2a 20 6e 6f 74 20 3c 73 65 74 20 6f 66 3e 3a 3a   ┆rod<>628) and ((* not <set of>::┆
0x00c7a0…00c7c0             3d 20 73 65 74 20 3c 6f 66 3e 20 2a 29 20 70 72 6f 64 3c 3e 36 32 35 29 20 74 68 65 6e 0a 65 6d   ┆= set <of> *) prod<>625) then em┆
0x00c7c0…00c7e0             69 74 28 63 6e 65 77 74 79 70 65 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 6f 64 65 77 6f 72   ┆it(cnewtype, nill, nill, codewor┆
0x00c7e0…00c800             64 29 3b 0a 0a 69 66 20 28 2a 20 73 63 61 6c 61 72 6c 69 73 74 20 73 74 61 72 74 20 2a 29 20 70   ┆d);  if (* scalarlist start *) p┆
0x00c800…00c820 (3, 0, 11)  72 6f 64 3d 36 32 31 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 6d 69 74 28 63 64 65 63 6c 61 72 61   ┆rod=621 then begin emit(cdeclara┆
0x00c820…00c840             74 69 6f 6e 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 73 63 61 6c 61 72 65 6c 65 6d 20 29 3b   ┆tion, nill, nill, cscalarelem );┆
0x00c840…00c860             0a 6f 6c 64 74 6f 70 3a 3d 20 6f 6c 64 74 6f 70 2d 31 20 3b 20 28 2a 20 6c 65 74 20 6f 6c 64 74   ┆ oldtop:= oldtop-1 ; (* let oldt┆
0x00c860…00c880             6f 70 20 64 65 6e 6f 74 65 20 6e 61 6d 65 20 2a 29 0a 6e 61 6d 65 3a 3d 20 72 65 61 64 6e 61 6d   ┆op denote name *) name:= readnam┆
0x00c880…00c8a0             65 3b 0a 6f 6c 64 74 6f 70 3a 3d 20 6f 6c 64 74 6f 70 2b 31 3b 20 28 2a 20 72 65 73 65 74 20 6f   ┆e; oldtop:= oldtop+1; (* reset o┆
0x00c8a0…00c8c0             6c 64 74 6f 70 20 2a 29 0a 6e 61 6d 65 73 70 69 78 3a 3d 20 73 65 61 72 63 68 6e 61 6d 65 28 6e   ┆ldtop *) namespix:= searchname(n┆
0x00c8c0…00c8e0             61 6d 65 29 3b 0a 65 6d 69 74 64 65 63 6c 61 72 65 28 64 65 63 6c 6c 69 73 74 2c 20 6e 61 6d 65   ┆ame); emitdeclare(decllist, name┆
0x00c8e0…00c900             73 70 69 78 29 3b 0a 65 6e 64 3b 20 28 2a 20 73 74 61 72 74 20 73 63 61 6c 61 72 20 2a 29 0a 0a   ┆spix); end; (* start scalar *)  ┆
0x00c900…00c920             65 6e 64 3b 20 28 2a 20 36 32 30 2e 2e 36 32 39 20 2a 29 0a 0a 69 66 20 28 70 72 6f 64 3e 3d 36   ┆end; (* 620..629 *)  if (prod>=6┆
0x00c920…00c940             33 30 29 20 61 6e 64 20 28 70 72 6f 64 3c 3d 36 33 39 29 20 74 68 65 6e 0a 63 61 73 65 20 70 72   ┆30) and (prod<=639) then case pr┆
0x00c940…00c960             6f 64 20 6f 66 0a 36 33 32 3a 20 20 28 2a 20 3c 73 74 61 72 74 20 73 65 63 74 69 6f 6e 3e 20 3a   ┆od of 632:  (* <start section> :┆
0x00c960…00c980             3a 3d 20 65 6d 70 74 79 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 65 63 6c 61 72 61 74 69 6f   ┆:= empty  *) (* code: declaratio┆
0x00c980…00c9a0             6e 28 20 72 65 63 66 69 65 6c 64 20 29 20 20 2a 29 0a 65 6d 69 74 28 63 64 65 63 6c 61 72 61 74   ┆n( recfield )  *) emit(cdeclarat┆
0x00c9a0…00c9c0             69 6f 6e 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 72 65 63 66 69 65 6c 64 29 3b 0a 0a 36 33   ┆ion, nill, nill, crecfield);  63┆
0x00c9c0…00c9e0             35 3a 20 20 28 2a 20 3c 74 79 70 65 20 73 69 7a 65 3e 20 3a 3a 3d 20 65 6d 70 74 79 20 2a 29 0a   ┆5:  (* <type size> ::= empty *) ┆
0x00c9e0…00ca00             28 2a 20 63 6f 64 65 3a 20 77 69 74 68 6f 75 74 5f 64 61 74 61 20 2a 29 0a 28 2a 20 63 6f 64 65   ┆(* code: without_data *) (* code┆
0x00ca00…00ca20 (3, 0, 12)  20 66 6f 72 20 61 20 70 6f 6f 6c 20 6f 66 20 68 65 61 64 65 72 73 2c 20 69 2e 65 2e 20 77 69 74   ┆ for a pool of headers, i.e. wit┆
0x00ca20…00ca40             68 6f 75 74 20 64 61 74 61 20 70 61 72 74 73 20 2a 29 0a 65 6d 69 74 63 6f 64 65 28 63 77 69 74   ┆hout data parts *) emitcode(cwit┆
0x00ca40…00ca60             68 6f 75 74 5f 64 61 74 61 29 3b 0a 0a 36 33 36 3a 20 20 28 2a 20 3c 63 6f 6d 70 6f 6e 65 6e 74   ┆hout_data);  636:  (* <component┆
0x00ca60…00ca80             20 74 79 70 65 3e 20 3a 3a 3d 20 29 20 3c 6f 66 20 74 79 70 65 3e 20 3c 74 79 70 65 3e 20 2a 29   ┆ type> ::= ) <of type> <type> *)┆
0x00ca80…00caa0             0a 28 2a 20 61 63 74 69 6f 6e 3a 20 69 6e 69 74 69 61 6c 69 7a 65 20 64 69 6d 65 6e 73 69 6f 6e   ┆ (* action: initialize dimension┆
0x00caa0…00cac0             20 63 6f 75 6e 74 20 2a 29 0a 62 65 67 69 6e 0a 64 69 6d 65 6e 73 69 6f 6e 5f 63 6f 75 6e 74 3a   ┆ count *) begin dimension_count:┆
0x00cac0…00cae0             3d 20 30 3b 0a 65 6e 64 3b 0a 0a 36 33 37 3a 20 20 28 2a 20 3c 63 6f 6d 70 6f 6e 65 6e 74 20 74   ┆= 0; end;  637:  (* <component t┆
0x00cae0…00cb00             79 70 65 3e 20 3a 3a 3d 20 3c 6e 65 77 20 64 69 6d 65 6e 73 69 6f 6e 3e 20 3c 74 79 70 65 3e 20   ┆ype> ::= <new dimension> <type> ┆
0x00cb00…00cb20             3c 63 6f 6d 70 6f 6e 65 6e 74 20 74 79 70 65 3e 20 2a 29 0a 28 2a 20 61 63 74 69 6f 6e 3a 20 69   ┆<component type> *) (* action: i┆
0x00cb20…00cb40             6e 63 72 65 61 73 65 20 64 69 6d 65 6e 73 69 6f 6e 20 63 6f 75 6e 74 20 2a 29 0a 64 69 6d 65 6e   ┆ncrease dimension count *) dimen┆
0x00cb40…00cb60             73 69 6f 6e 5f 63 6f 75 6e 74 3a 3d 20 64 69 6d 65 6e 73 69 6f 6e 5f 63 6f 75 6e 74 2b 31 3b 0a   ┆sion_count:= dimension_count+1; ┆
0x00cb60…00cb80             0a 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 20 36 33 30 2e 2e 36 33 39 20 2a 29 0a 0a 0a 69 66   ┆  end; (* case  630..639 *)   if┆
0x00cb80…00cba0             20 70 72 6f 64 3d 36 30 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 3c 74 79 70 65 20 6e 61   ┆ prod=600 then begin (* <type na┆
0x00cba0…00cbc0             6d 65 3e 20 3a 3a 3d 20 6e 61 6d 65 20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 65 63 6c 61   ┆me> ::= name   *) (* code: decla┆
0x00cbc0…00cbe0             72 61 74 69 6f 6e 28 20 74 79 70 65 20 29 20 20 64 65 63 6c 61 72 65 28 20 73 70 69 78 20 29 20   ┆ration( type )  declare( spix ) ┆
0x00cbe0…00cc00             20 20 20 20 2a 29 0a 6e 61 6d 65 3a 3d 20 72 65 61 64 6e 61 6d 65 3b 0a 6e 61 6d 65 73 70 69 78   ┆    *) name:= readname; namespix┆
0x00cc00…00cc20 (3, 0, 13)  3a 3d 20 73 65 61 72 63 68 6e 61 6d 65 28 6e 61 6d 65 29 3b 0a 65 6d 69 74 28 20 63 64 65 63 6c   ┆:= searchname(name); emit( cdecl┆
0x00cc20…00cc40             61 72 61 74 69 6f 6e 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 74 79 70 65 29 3b 0a 65 6d 69   ┆aration, nill, nill, ctype); emi┆
0x00cc40…00cc60             74 64 65 63 6c 61 72 65 28 64 65 63 6c 2c 20 6e 61 6d 65 73 70 69 78 29 3b 0a 65 6e 64 3b 20 20   ┆tdeclare(decl, namespix); end;  ┆
0x00cc60…00cc80             28 2a 20 36 30 30 20 20 2a 29 0a 0a 28 2a 20 69 66 20 62 65 66 6f 72 65 20 3c 74 79 70 65 3e 20   ┆(* 600  *)  (* if before <type> ┆
0x00cc80…00cca0             74 68 65 6e 20 2a 29 0a 69 66 20 28 70 72 6f 64 3d 36 30 32 29 20 6f 72 20 28 70 72 6f 64 3d 36   ┆then *) if (prod=602) or (prod=6┆
0x00cca0…00ccc0             32 30 29 20 6f 72 20 28 70 72 6f 64 3d 36 32 32 29 20 6f 72 20 28 70 72 6f 64 3d 36 32 33 29 20   ┆20) or (prod=622) or (prod=623) ┆
0x00ccc0…00cce0             6f 72 20 28 70 72 6f 64 3d 36 34 30 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 28 2a 20 61 76 6f   ┆or (prod=640) then begin  (* avo┆
0x00cce0…00cd00             69 64 20 64 65 73 74 72 6f 79 69 6e 67 20 74 68 65 20 62 75 66 66 65 72 6d 61 72 6b 20 62 65 63   ┆id destroying the buffermark bec┆
0x00cd00…00cd20             61 75 73 65 20 6f 66 20 6e 65 77 6c 69 6e 65 2c 20 69 2e 65 2e 20 74 68 65 20 6e 65 77 6c 69 6e   ┆ause of newline, i.e. the newlin┆
0x00cd20…00cd40             65 0a 63 6f 64 65 73 20 61 72 65 20 67 65 6e 65 72 61 74 65 64 20 69 6e 20 66 72 6f 6e 74 20 6f   ┆e codes are generated in front o┆
0x00cd40…00cd60             66 20 74 68 65 20 6d 61 72 6b 65 64 20 63 6f 64 65 73 20 69 6e 20 73 74 65 61 64 20 6f 66 20 74   ┆f the marked codes in stead of t┆
0x00cd60…00cd80             68 65 0a 28 72 61 6e 64 6f 6d 29 20 70 6c 61 63 65 73 20 77 68 65 72 65 20 74 68 65 20 6e 65 77   ┆he (random) places where the new┆
0x00cd80…00cda0             6c 69 6e 65 73 20 61 72 65 20 6d 65 74 20 2a 29 0a 65 6d 69 74 28 63 6e 65 77 6c 69 6e 65 2c 20   ┆lines are met *) emit(cnewline, ┆
0x00cda0…00cdc0             6c 69 6e 65 6e 75 6d 62 65 72 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 0a 74 79 70   ┆linenumber, nill, cnocode);  typ┆
0x00cdc0…00cde0             65 62 75 66 66 65 72 66 6c 61 67 3a 3d 20 74 72 75 65 3b 0a 69 66 20 6c 61 73 74 62 75 66 66 65   ┆ebufferflag:= true; if lastbuffe┆
0x00cde0…00ce00             72 65 64 2b 33 3e 74 79 70 65 62 75 66 66 65 72 73 69 7a 65 20 74 68 65 6e 0a 73 74 6f 70 28 20   ┆red+3>typebuffersize then stop( ┆
0x00ce00…00ce20 (3, 0, 14)  31 32 20 29 3b 0a 0a 74 79 70 65 62 75 66 66 65 72 5b 20 6c 61 73 74 62 75 66 66 65 72 65 64 2b   ┆12 );  typebuffer[ lastbuffered+┆
0x00ce20…00ce40             31 20 5d 3a 3d 20 6e 69 6c 6c 3b 0a 74 79 70 65 62 75 66 66 65 72 5b 20 6c 61 73 74 62 75 66 66   ┆1 ]:= nill; typebuffer[ lastbuff┆
0x00ce40…00ce60             65 72 65 64 2b 32 20 5d 3a 3d 20 6e 69 6c 6c 3b 20 28 2a 20 72 65 73 65 72 76 65 20 72 6f 6f 6d   ┆ered+2 ]:= nill; (* reserve room┆
0x00ce60…00ce80             20 66 6f 72 20 61 20 70 6f 73 73 69 62 6c 65 20 6e 65 77 74 79 70 65 20 2e 2e 20 2a 29 0a 6c 61   ┆ for a possible newtype .. *) la┆
0x00ce80…00cea0             73 74 62 75 66 66 65 72 65 64 3a 3d 20 6c 61 73 74 62 75 66 66 65 72 65 64 2b 32 3b 0a 61 74 74   ┆stbuffered:= lastbuffered+2; att┆
0x00cea0…00cec0             73 74 61 63 6b 5b 20 6e 65 77 74 6f 70 20 5d 20 2e 20 62 75 66 66 65 72 73 74 61 72 74 3a 3d 20   ┆stack[ newtop ] . bufferstart:= ┆
0x00cec0…00cee0             6c 61 73 74 62 75 66 66 65 72 65 64 2b 31 3b 0a 65 6e 64 3b 0a 0a 0a 65 6e 64 3b 20 20 20 28 2a   ┆lastbuffered+1; end;   end;   (*┆
0x00cee0…00cf00             20 73 65 63 74 69 6f 6e 20 36 20 20 2a 29 0a 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 76 61 72 69   ┆ section 6  *)    procedure vari┆
0x00cf00…00cf20             61 62 6c 65 64 65 66 69 6e 69 74 69 6f 6e 3b 0a 28 2a 20 73 65 63 74 69 6f 6e 20 37 20 2a 29 0a   ┆abledefinition; (* section 7 *) ┆
0x00cf20…00cf40             0a 76 61 72 0a 6e 61 6d 65 20 3a 20 6e 61 6d 65 68 65 61 64 70 74 72 3b 0a 6e 61 6d 65 73 70 69   ┆ var name : nameheadptr; namespi┆
0x00cf40…00cf60             78 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 63 61 73 65 20 70 72 6f 64 20 6f 66   ┆x : integer;  begin case prod of┆
0x00cf60…00cf80             0a 0a 37 30 30 3a 20 20 28 2a 20 3c 73 74 61 72 74 20 76 61 72 3e 20 3a 3a 3d 20 65 6d 70 74 79   ┆  700:  (* <start var> ::= empty┆
0x00cf80…00cfa0             20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 65 63 6c 61 72 61 74 69 6f 6e 28 20 76 61 72 20 29   ┆  *) (* code: declaration( var )┆
0x00cfa0…00cfc0             20 20 2a 29 0a 65 6d 69 74 28 63 64 65 63 6c 61 72 61 74 69 6f 6e 2c 20 6e 69 6c 6c 2c 20 6e 69   ┆  *) emit(cdeclaration, nill, ni┆
0x00cfc0…00cfe0             6c 6c 2c 20 63 76 61 72 29 3b 0a 0a 37 30 31 2c 20 20 28 2a 20 3c 69 64 65 6e 74 3e 20 3a 3a 3d   ┆ll, cvar);  701,  (* <ident> ::=┆
0x00cfe0…00d000             20 6e 61 6d 65 20 20 2a 29 0a 37 30 34 3a 20 20 28 2a 20 20 20 20 20 20 20 20 20 21 20 20 3f 20   ┆ name  *) 704:  (*         !  ? ┆
0x00d000…00d020 (3, 0, 15)  20 20 20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 65 63 6c 61 72 65 6c 69 73 74 28 20 73 70   ┆     *) (* code: declarelist( sp┆
0x00d020…00d040             69 78 20 29 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 70 72 6f 64 3d 37 30 31 20 74 68 65 6e 0a 62   ┆ix ) *) begin if prod=701 then b┆
0x00d040…00d060             65 67 69 6e 0a 6e 61 6d 65 3a 3d 20 72 65 61 64 6e 61 6d 65 3b 0a 6e 61 6d 65 73 70 69 78 3a 3d   ┆egin name:= readname; namespix:=┆
0x00d060…00d080             20 73 65 61 72 63 68 6e 61 6d 65 28 6e 61 6d 65 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 6e 61 6d 65   ┆ searchname(name); end else name┆
0x00d080…00d0a0             73 70 69 78 3a 3d 20 61 6e 6f 6e 79 6d 6f 75 73 73 70 69 78 3b 0a 65 6d 69 74 64 65 63 6c 61 72   ┆spix:= anonymousspix; emitdeclar┆
0x00d0a0…00d0c0             65 28 64 65 63 6c 6c 69 73 74 2c 20 6e 61 6d 65 73 70 69 78 29 3b 0a 65 6e 64 3b 0a 0a 37 30 32   ┆e(decllist, namespix); end;  702┆
0x00d0c0…00d0e0             3a 20 20 28 2a 20 3c 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3e 20 3a 3a 3d 20 3a 3d 20 3c 65   ┆:  (* <initialization> ::= := <e┆
0x00d0e0…00d100             78 70 72 65 73 73 69 6f 6e 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 69 6e 69 74 20 20 20 2a 29   ┆xpression> *) (* code: init   *)┆
0x00d100…00d120             0a 65 6d 69 74 63 6f 64 65 28 63 69 6e 69 74 29 3b 0a 0a 37 30 33 3a 20 20 28 2a 20 3c 76 61 72   ┆ emitcode(cinit);  703:  (* <var┆
0x00d120…00d140             20 64 65 63 6c 3e 20 3a 3a 3d 20 3c 73 74 61 72 74 20 76 61 72 3e 20 3c 69 64 65 6e 74 69 66 69   ┆ decl> ::= <start var> <identifi┆
0x00d140…00d160             65 72 20 6c 69 73 74 3e 20 3c 74 79 70 65 20 61 6e 64 20 69 6e 69 74 3e 20 2a 29 0a 28 2a 20 63   ┆er list> <type and init> *) (* c┆
0x00d160…00d180             6f 64 65 3a 20 20 65 6e 64 76 61 72 64 65 63 6c 20 20 2a 29 0a 65 6d 69 74 63 6f 64 65 28 63 65   ┆ode:  endvardecl  *) emitcode(ce┆
0x00d180…00d1a0             6e 64 76 61 72 64 65 63 6c 29 3b 0a 0a 37 30 35 3a 20 20 28 2a 20 3c 69 6e 69 74 69 61 6c 69 7a   ┆ndvardecl);  705:  (* <initializ┆
0x00d1a0…00d1c0             61 74 69 6f 6e 3e 20 3a 3a 3d 20 65 6d 70 74 79 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6e 6f   ┆ation> ::= empty  *) (* code: no┆
0x00d1c0…00d1e0             69 6e 69 74 20 20 2a 29 0a 65 6d 69 74 63 6f 64 65 28 63 6e 6f 69 6e 69 74 29 3b 0a 0a 0a 65 6e   ┆init  *) emitcode(cnoinit);   en┆
0x00d1e0…00d200             64 3b 20 28 2a 20 63 61 73 65 20 2e 2e 2e 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 73 65 63 74 69   ┆d; (* case ... *)  end; (* secti┆
0x00d200…00d220 (3, 1, 1)   6f 6e 20 37 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 78 70 72 65 73 73 69 6f 6e 3b 0a 28   ┆on 7 *)  procedure expression; (┆
0x00d220…00d240             2a 20 73 65 63 74 69 6f 6e 20 38 20 2a 29 0a 0a 76 61 72 0a 63 6f 64 65 77 6f 72 64 31 2c 20 63   ┆* section 8 *)  var codeword1, c┆
0x00d240…00d260             6f 64 65 77 6f 72 64 32 20 3a 20 63 6f 64 65 73 3b 0a 76 61 72 5f 6f 72 5f 66 69 65 6c 64 5f 73   ┆odeword2 : codes; var_or_field_s┆
0x00d260…00d280             70 69 78 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6e 61 6d 65 20 3a 20 6e 61 6d 65 68 65 61 64 70 74   ┆pix : integer; name : nameheadpt┆
0x00d280…00d2a0             72 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 6e 6f 74 20 72 65 64 75 63 65 64 5f 69 6e 74 65 72 6d 65   ┆r;  begin if not reduced_interme┆
0x00d2a0…00d2c0             64 69 61 74 65 5f 6c 61 6e 67 75 61 67 65 20 61 6e 64 20 28 70 72 6f 64 3c 3d 38 30 38 29 20 74   ┆diate_language and (prod<=808) t┆
0x00d2c0…00d2e0             68 65 6e 20 0a 63 6f 64 65 77 6f 72 64 32 3a 3d 20 63 65 6e 64 65 78 70 72 65 73 73 69 6f 6e 0a   ┆hen  codeword2:= cendexpression ┆
0x00d2e0…00d300             65 6c 73 65 0a 63 6f 64 65 77 6f 72 64 32 3a 3d 20 63 6e 6f 63 6f 64 65 3b 0a 76 61 72 5f 6f 72   ┆else codeword2:= cnocode; var_or┆
0x00d300…00d320             5f 66 69 65 6c 64 5f 73 70 69 78 3a 3d 20 6e 69 6c 6c 3b 0a 0a 63 61 73 65 20 70 72 6f 64 20 6f   ┆_field_spix:= nill;  case prod o┆
0x00d320…00d340             66 0a 38 30 31 3a 20 20 28 2a 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 3a 3a 3d 20 3c 73 69 6d   ┆f 801:  (* <expression> ::= <sim┆
0x00d340…00d360             70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 65   ┆ple expression> *) (* code: ende┆
0x00d360…00d380             78 70 72 65 73 73 69 6f 6e 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 6e 6f 63 6f 64   ┆xpression  *) codeword1:= cnocod┆
0x00d380…00d3a0             65 3b 0a 0a 38 30 32 3a 20 20 28 2a 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 3a 3a 3d 20 3c 73   ┆e;  802:  (* <expression> ::= <s┆
0x00d3a0…00d3c0             69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 3d 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73   ┆imple expression>=<simple expres┆
0x00d3c0…00d3e0             73 69 6f 6e 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 71 20 65 6e 64 65 78 70 72 65 73 73 69   ┆sion> *) (* code: eq endexpressi┆
0x00d3e0…00d400             6f 6e 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 65 71 3b 0a 0a 38 30 33 3a 20 20 28   ┆on  *) codeword1:= ceq;  803:  (┆
0x00d400…00d420 (3, 1, 2)   2a 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 3a 3a 3d 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65   ┆* <expression> ::= <simple expre┆
0x00d420…00d440             73 73 69 6f 6e 3e 3c 3e 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 20 2a 29 0a 28   ┆ssion><><simple expression> *) (┆
0x00d440…00d460             2a 20 63 6f 64 65 3a 20 6e 65 20 65 6e 64 65 78 70 72 65 73 73 69 6f 6e 20 2a 29 0a 63 6f 64 65   ┆* code: ne endexpression *) code┆
0x00d460…00d480             77 6f 72 64 31 3a 3d 20 63 6e 65 3b 0a 0a 38 30 34 3a 20 20 28 2a 20 3c 65 78 70 72 65 73 73 69   ┆word1:= cne;  804:  (* <expressi┆
0x00d480…00d4a0             6f 6e 3e 20 3a 3a 3d 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 3c 3c 73 69 6d   ┆on> ::= <simple expression><<sim┆
0x00d4a0…00d4c0             70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6c 74 20   ┆ple expression>  *) (* code: lt ┆
0x00d4c0…00d4e0             65 6e 64 65 78 70 72 65 73 73 69 6f 6e 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 6c   ┆endexpression  *) codeword1:= cl┆
0x00d4e0…00d500             74 3b 0a 0a 38 30 35 3a 20 20 28 2a 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 3a 3a 3d 20 3c 73   ┆t;  805:  (* <expression> ::= <s┆
0x00d500…00d520             69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 3c 3d 3c 73 69 6d 70 6c 65 20 65 78 70 72 65   ┆imple expression><=<simple expre┆
0x00d520…00d540             73 73 69 6f 6e 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6c 65 20 20 65 6e 64 65 78 70 72 65   ┆ssion>  *) (* code: le  endexpre┆
0x00d540…00d560             73 73 69 6f 6e 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 6c 65 3b 0a 0a 38 30 36 3a   ┆ssion  *) codeword1:= cle;  806:┆
0x00d560…00d580             20 20 28 2a 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 3a 3a 3d 20 3c 73 69 6d 70 6c 65 20 65 78   ┆  (* <expression> ::= <simple ex┆
0x00d580…00d5a0             70 72 65 73 73 69 6f 6e 3e 3e 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 20 20 2a   ┆pression>><simple expression>  *┆
0x00d5a0…00d5c0             29 0a 28 2a 20 63 6f 64 65 3a 20 67 74 20 65 6e 64 65 78 70 72 65 73 73 69 6f 6e 20 20 2a 29 0a   ┆) (* code: gt endexpression  *) ┆
0x00d5c0…00d5e0             63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 67 74 3b 0a 0a 38 30 37 3a 20 20 28 2a 20 3c 65 78 70 72   ┆codeword1:= cgt;  807:  (* <expr┆
0x00d5e0…00d600             65 73 73 69 6f 6e 3e 20 3a 3a 3d 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 3e   ┆ession> ::= <simple expression>>┆
0x00d600…00d620 (3, 1, 3)   3d 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a   ┆=<simple expression> *) (* code:┆
0x00d620…00d640             20 67 65 20 65 6e 64 65 78 70 72 65 73 73 69 6f 6e 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a   ┆ ge endexpression  *) codeword1:┆
0x00d640…00d660             3d 20 63 67 65 3b 0a 0a 38 30 38 3a 20 20 28 2a 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 3a 3a   ┆= cge;  808:  (* <expression> ::┆
0x00d660…00d680             3d 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 20 69 6e 20 3c 73 69 6d 70 6c 65   ┆= <simple expression> in <simple┆
0x00d680…00d6a0             20 65 78 70 72 65 73 73 69 6f 6e 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 69 6e 20 65 6e 64   ┆ expression>  *) (* code: in end┆
0x00d6a0…00d6c0             65 78 70 72 65 73 73 69 6f 6e 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 69 6e 3b 0a   ┆expression  *) codeword1:= cin; ┆
0x00d6c0…00d6e0             0a 38 31 30 3a 20 20 28 2a 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 20 3a 3a   ┆ 810:  (* <simple expression> ::┆
0x00d6e0…00d700             3d 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 2b 3c 74 65 72 6d 3e 20 20 2a 29   ┆= <simple expression>+<term>  *)┆
0x00d700…00d720             0a 28 2a 20 63 6f 64 65 3a 20 70 6c 75 73 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63   ┆ (* code: plus  *) codeword1:= c┆
0x00d720…00d740             70 6c 75 73 3b 0a 0a 38 31 31 3a 20 20 28 2a 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69   ┆plus;  811:  (* <simple expressi┆
0x00d740…00d760             6f 6e 3e 20 3a 3a 3d 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 2d 3c 74 65 72   ┆on> ::= <simple expression>-<ter┆
0x00d760…00d780             6d 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6d 69 6e 75 73 20 20 2a 29 0a 63 6f 64 65 77 6f   ┆m>  *) (* code: minus  *) codewo┆
0x00d780…00d7a0             72 64 31 3a 3d 20 63 6d 69 6e 75 73 3b 0a 0a 38 31 32 3a 20 20 28 2a 20 3c 73 69 6d 70 6c 65 20   ┆rd1:= cminus;  812:  (* <simple ┆
0x00d7a0…00d7c0             65 78 70 72 65 73 73 69 6f 6e 3e 20 3a 3a 3d 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69   ┆expression> ::= <simple expressi┆
0x00d7c0…00d7e0             6f 6e 3e 20 6f 72 20 3c 74 65 72 6d 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6f 72 20 20 2a   ┆on> or <term>  *) (* code: or  *┆
0x00d7e0…00d800             29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 6f 72 3b 0a 0a 38 31 33 3a 20 20 28 2a 20 3c 73 69   ┆) codeword1:= cor;  813:  (* <si┆
0x00d800…00d820 (3, 1, 4)   6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 20 3a 3a 3d 20 2b 3c 74 65 72 6d 3e 20 20 2a 29   ┆mple expression> ::= +<term>  *)┆
0x00d820…00d840             0a 28 2a 20 63 6f 64 65 3a 20 75 70 6c 75 73 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20   ┆ (* code: uplus  *) codeword1:= ┆
0x00d840…00d860             63 75 70 6c 75 73 3b 0a 0a 38 31 34 3a 20 20 28 2a 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73   ┆cuplus;  814:  (* <simple expres┆
0x00d860…00d880             73 69 6f 6e 3e 20 3a 3a 3d 20 2d 3c 74 65 72 6d 3e 20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20   ┆sion> ::= -<term>   *) (* code: ┆
0x00d880…00d8a0             75 6d 69 6e 75 73 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 75 6d 69 6e 75 73 3b 0a   ┆uminus  *) codeword1:= cuminus; ┆
0x00d8a0…00d8c0             0a 38 31 35 3a 20 20 28 2a 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 20 3a 3a   ┆ 815:  (* <simple expression> ::┆
0x00d8c0…00d8e0             3d 20 3c 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 3e 20 78 6f 72 20 3c 74 65 72 6d 3e   ┆= <simple expression> xor <term>┆
0x00d8e0…00d900             20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 78 6f 72 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20   ┆ *) (* code: xor *) codeword1:= ┆
0x00d900…00d920             63 78 6f 72 3b 0a 0a 38 31 36 3a 20 20 28 2a 20 3c 74 65 72 6d 3e 20 3a 3a 3d 20 3c 74 65 72 6d   ┆cxor;  816:  (* <term> ::= <term┆
0x00d920…00d940             3e 20 2a 20 3c 66 61 63 74 6f 72 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 73 74 61 72 20 20   ┆> * <factor>  *) (* code: star  ┆
0x00d940…00d960             2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 73 74 61 72 3b 0a 0a 38 31 37 3a 20 20 28 2a 20   ┆*) codeword1:= cstar;  817:  (* ┆
0x00d960…00d980             3c 74 65 72 6d 3e 20 3a 3a 3d 20 3c 74 65 72 6d 3e 20 2f 20 3c 66 61 63 74 6f 72 3e 20 20 2a 29   ┆<term> ::= <term> / <factor>  *)┆
0x00d980…00d9a0             0a 28 2a 20 63 6f 64 65 3a 20 73 6c 61 73 68 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20   ┆ (* code: slash  *) codeword1:= ┆
0x00d9a0…00d9c0             63 73 6c 61 73 68 3b 0a 0a 38 31 38 3a 20 20 28 2a 20 3c 74 65 72 6d 3e 20 3a 3a 3d 20 3c 74 65   ┆cslash;  818:  (* <term> ::= <te┆
0x00d9c0…00d9e0             72 6d 3e 20 64 69 76 20 3c 66 61 63 74 6f 72 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 69 76   ┆rm> div <factor> *) (* code: div┆
0x00d9e0…00da00             20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 64 69 76 3b 0a 0a 38 31 39 3a 20 20 28 2a   ┆  *) codeword1:= cdiv;  819:  (*┆
0x00da00…00da20 (3, 1, 5)   20 3c 74 65 72 6d 3e 20 3a 3a 3d 20 3c 74 65 72 6d 3e 20 6d 6f 64 20 3c 66 61 63 74 6f 72 3e 20   ┆ <term> ::= <term> mod <factor> ┆
0x00da20…00da40             2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6d 6f 64 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20   ┆*) (* code: mod  *) codeword1:= ┆
0x00da40…00da60             63 6d 6f 64 3b 0a 0a 38 32 30 3a 20 20 28 2a 20 3c 74 65 72 6d 3e 20 3a 3a 3d 20 3c 74 65 72 6d   ┆cmod;  820:  (* <term> ::= <term┆
0x00da60…00da80             3e 20 61 6e 64 20 3c 66 61 63 74 6f 72 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 61 6e 64 20   ┆> and <factor>  *) (* code: and ┆
0x00da80…00daa0             20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 61 6e 64 3b 0a 0a 38 32 31 3a 20 20 28 2a 20   ┆ *) codeword1:= cand;  821:  (* ┆
0x00daa0…00dac0             3c 74 65 72 6d 3e 20 3a 3a 3d 20 3c 74 65 72 6d 3e 20 73 68 69 66 74 20 3c 66 61 63 74 6f 72 3e   ┆<term> ::= <term> shift <factor>┆
0x00dac0…00dae0             20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 61 6e 64 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a   ┆  *) (* code: and  *) codeword1:┆
0x00dae0…00db00             3d 20 63 73 68 69 66 74 3b 0a 0a 38 32 35 3a 20 20 28 2a 20 3c 66 61 63 74 6f 72 3e 20 3a 3a 3d   ┆= cshift;  825:  (* <factor> ::=┆
0x00db00…00db20             20 3c 73 65 74 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 73 65 74 6c 69 73 74 20 2a   ┆ <set>  *) (* code: endsetlist *┆
0x00db20…00db40             29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 65 6e 64 73 65 74 6c 69 73 74 3b 0a 0a 38 32 36 3a   ┆) codeword1:= cendsetlist;  826:┆
0x00db40…00db60             20 20 28 2a 20 3c 73 74 61 72 74 20 73 65 74 3e 20 3a 3a 3d 20 28 2e 20 20 2a 29 0a 28 2a 20 63   ┆  (* <start set> ::= (.  *) (* c┆
0x00db60…00db80             6f 64 65 3a 20 73 65 74 6c 69 73 74 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 73 65   ┆ode: setlist  *) codeword1:= cse┆
0x00db80…00dba0             74 6c 69 73 74 3b 0a 0a 38 32 37 3a 20 20 28 2a 20 3c 65 6c 65 6d 65 6e 74 3e 20 3a 3a 3d 20 3c   ┆tlist;  827:  (* <element> ::= <┆
0x00dba0…00dbc0             65 78 70 72 65 73 73 69 6f 6e 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 73 5f 65 6c 65 6d 65   ┆expression>  *) (* code: s_eleme┆
0x00dbc0…00dbe0             6e 74 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 73 5f 65 6c 65 6d 65 6e 74 3b 0a 0a   ┆nt  *) codeword1:= cs_element;  ┆
0x00dbe0…00dc00             38 32 38 3a 20 20 28 2a 20 3c 65 6c 65 6d 65 6e 74 3e 20 3a 3a 3d 20 3c 65 78 70 72 65 73 73 69   ┆828:  (* <element> ::= <expressi┆
0x00dc00…00dc20 (3, 1, 6)   6f 6e 3e 20 2e 2e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a   ┆on> .. <expression>  *) (* code:┆
0x00dc20…00dc40             20 6d 5f 65 6c 65 6d 65 6e 74 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 6d 5f 65 6c   ┆ m_element  *) codeword1:= cm_el┆
0x00dc40…00dc60             65 6d 65 6e 74 3b 0a 0a 38 33 30 3a 20 20 28 2a 20 3c 66 61 63 74 6f 72 3e 20 3a 3a 3d 20 3c 76   ┆ement;  830:  (* <factor> ::= <v┆
0x00dc60…00dc80             61 72 69 61 62 6c 65 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 76 61 72 69 61 62 6c   ┆ariable>  *) (* code: endvariabl┆
0x00dc80…00dca0             65 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 65 6e 64 76 61 72 69 61 62 6c 65 3b 0a   ┆e  *) codeword1:= cendvariable; ┆
0x00dca0…00dcc0             0a 38 33 31 3a 20 20 28 2a 20 3c 66 61 63 74 6f 72 3e 20 3a 3a 3d 20 6e 6f 74 20 3c 66 61 63 74   ┆ 831:  (* <factor> ::= not <fact┆
0x00dcc0…00dce0             6f 72 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6e 6f 74 20 20 20 2a 29 0a 63 6f 64 65 77 6f   ┆or>  *) (* code: not   *) codewo┆
0x00dce0…00dd00             72 64 31 3a 3d 20 63 6e 6f 74 3b 0a 0a 38 33 35 3a 20 20 28 2a 20 3c 76 61 72 69 61 62 6c 65 3e   ┆rd1:= cnot;  835:  (* <variable>┆
0x00dd00…00dd20             20 3a 3a 3d 20 6e 61 6d 65 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 69 64 28 20 73 70 69 78 20 29   ┆ ::= name *) (* code: id( spix )┆
0x00dd20…00dd40             20 6d 61 79 20 6c 61 74 65 72 20 6f 6e 20 62 65 20 63 68 61 6e 67 65 64 20 74 6f 20 74 79 70 65   ┆ may later on be changed to type┆
0x00dd40…00dd60             69 64 28 73 70 69 78 29 20 2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 69   ┆id(spix) *) begin codeword1:= ci┆
0x00dd60…00dd80             64 3b 0a 6e 61 6d 65 3a 3d 20 72 65 61 64 6e 61 6d 65 3b 0a 76 61 72 5f 6f 72 5f 66 69 65 6c 64   ┆d; name:= readname; var_or_field┆
0x00dd80…00dda0             5f 73 70 69 78 3a 3d 20 73 65 61 72 63 68 6e 61 6d 65 28 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a   ┆_spix:= searchname(name); end;  ┆
0x00dda0…00ddc0             38 33 36 3a 20 20 28 2a 20 3c 76 61 72 69 61 62 6c 65 3e 20 3a 3a 3d 20 3c 76 61 72 69 61 62 6c   ┆836:  (* <variable> ::= <variabl┆
0x00ddc0…00dde0             65 3e 20 2e 20 6e 61 6d 65 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 66 69 65 6c 64 28 20 73 70   ┆e> . name  *) (* code: field( sp┆
0x00dde0…00de00             69 78 20 29 20 20 2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 66 69 65 6c   ┆ix )  *) begin codeword1:= cfiel┆
0x00de00…00de20 (3, 1, 7)   64 3b 0a 6e 61 6d 65 3a 3d 20 72 65 61 64 6e 61 6d 65 3b 0a 76 61 72 5f 6f 72 5f 66 69 65 6c 64   ┆d; name:= readname; var_or_field┆
0x00de20…00de40             5f 73 70 69 78 3a 3d 20 73 65 61 72 63 68 6e 61 6d 65 28 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a   ┆_spix:= searchname(name); end;  ┆
0x00de40…00de60             38 33 37 3a 20 20 28 2a 20 3c 76 61 72 69 61 62 6c 65 3e 20 3a 3a 3d 20 3c 76 61 72 69 61 62 6c   ┆837:  (* <variable> ::= <variabl┆
0x00de60…00de80             65 3e 20 3c 62 65 67 69 6e 20 61 63 74 75 61 6c 3e 20 3c 61 63 74 75 61 6c 20 70 61 72 61 6d 65   ┆e> <begin actual> <actual parame┆
0x00de80…00dea0             74 65 72 20 6c 69 73 74 3e 20 29 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 61 63 74 75   ┆ter list> )  *) (* code: endactu┆
0x00dea0…00dec0             61 6c 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 65 6e 64 61 63 74 75 61 6c 3b 0a 0a 38   ┆al *) codeword1:= cendactual;  8┆
0x00dec0…00dee0             33 38 3a 20 20 28 2a 20 3c 76 61 72 69 61 62 6c 65 3e 20 3a 3a 3d 20 3c 76 61 72 69 61 62 6c 65   ┆38:  (* <variable> ::= <variable┆
0x00dee0…00df00             3e 20 5e 20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 75 70 61 72 72 6f 77 20 20 2a 29 0a 63 6f   ┆> ^   *) (* code: uparrow  *) co┆
0x00df00…00df20             64 65 77 6f 72 64 31 3a 3d 20 63 75 70 61 72 72 6f 77 3b 0a 0a 38 33 39 3a 20 20 28 2a 20 3c 62   ┆deword1:= cuparrow;  839:  (* <b┆
0x00df20…00df40             65 67 69 6e 20 61 63 74 75 61 6c 3e 20 3a 3a 3d 20 28 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20   ┆egin actual> ::= (  *) (* code: ┆
0x00df40…00df60             62 65 67 69 6e 61 63 74 75 61 6c 20 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 62 65   ┆beginactual   *) codeword1:= cbe┆
0x00df60…00df80             67 69 6e 61 63 74 75 61 6c 3b 0a 0a 38 34 30 2c 20 20 28 2a 20 3c 66 61 63 74 6f 72 3e 20 3a 3a   ┆ginactual;  840,  (* <factor> ::┆
0x00df80…00dfa0             3d 20 74 79 70 65 73 69 7a 65 28 6e 61 6d 65 29 20 20 2a 29 0a 38 34 31 3a 20 20 28 2a 20 20 20   ┆= typesize(name)  *) 841:  (*   ┆
0x00dfa0…00dfc0             20 20 20 20 20 20 20 21 20 20 20 76 61 72 73 69 7a 65 28 6e 61 6d 65 29 20 20 20 2a 29 0a 28 2a   ┆       !   varsize(name)   *) (*┆
0x00dfc0…00dfe0             20 63 6f 64 65 3a 20 74 79 70 65 73 69 7a 65 2f 76 61 72 73 69 7a 65 20 28 73 70 69 78 29 20 20   ┆ code: typesize/varsize (spix)  ┆
0x00dfe0…00e000             2a 29 0a 62 65 67 69 6e 0a 6f 6c 64 74 6f 70 3a 3d 20 6f 6c 64 74 6f 70 2d 31 3b 20 28 2a 20 70   ┆*) begin oldtop:= oldtop-1; (* p┆
0x00e000…00e020 (3, 1, 8)   6f 69 6e 74 20 61 74 20 4e 41 4d 45 20 2a 29 0a 76 61 72 5f 6f 72 5f 66 69 65 6c 64 5f 73 70 69   ┆oint at NAME *) var_or_field_spi┆
0x00e020…00e040             78 3a 3d 20 73 65 61 72 63 68 6e 61 6d 65 28 72 65 61 64 6e 61 6d 65 29 3b 0a 6f 6c 64 74 6f 70   ┆x:= searchname(readname); oldtop┆
0x00e040…00e060             3a 3d 20 6f 6c 64 74 6f 70 2b 31 3b 20 28 2a 20 72 65 65 73 74 61 62 6c 69 73 68 20 2a 29 0a 69   ┆:= oldtop+1; (* reestablish *) i┆
0x00e060…00e080             66 20 70 72 6f 64 3d 38 34 30 20 74 68 65 6e 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 74 79 70   ┆f prod=840 then codeword1:= ctyp┆
0x00e080…00e0a0             65 73 69 7a 65 63 61 6c 6c 0a 65 6c 73 65 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 76 61 72 73   ┆esizecall else codeword1:= cvars┆
0x00e0a0…00e0c0             69 7a 65 63 61 6c 6c 3b 0a 65 6e 64 3b 20 28 2a 20 38 34 30 2c 20 38 34 31 20 2a 29 0a 0a 38 34   ┆izecall; end; (* 840, 841 *)  84┆
0x00e0c0…00e0e0             36 3a 20 28 2a 20 3c 73 74 61 72 74 20 73 74 72 75 63 20 76 61 6c 3e 20 3a 3a 3d 20 28 3a 20 20   ┆6: (* <start struc val> ::= (:  ┆
0x00e0e0…00e100             2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 62 65 67 69 6e 73 74 72 75 63 3b 0a 0a 38 34 37   ┆*) codeword1:= cbeginstruc;  847┆
0x00e100…00e120             3a 20 28 2a 20 3c 73 74 72 75 63 20 76 61 6c 75 65 20 64 65 6e 6f 74 61 74 69 6f 6e 3e 20 3a 3a   ┆: (* <struc value denotation> ::┆
0x00e120…00e140             3d 20 3c 73 74 61 72 74 20 73 74 72 75 63 20 76 61 6c 3e 20 3c 61 63 74 75 61 6c 20 70 61 72 61   ┆= <start struc val> <actual para┆
0x00e140…00e160             6d 65 74 65 72 20 6c 69 73 74 3e 20 3a 29 20 20 2a 29 0a 28 2a 20 20 20 20 20 20 20 20 20 20 20   ┆meter list> :)  *) (*           ┆
0x00e160…00e180             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 3c 73 74 61 72 74 20 73 74 72   ┆                    ! <start str┆
0x00e180…00e1a0             75 63 20 76 61 6c 3e 20 3a 29 20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 73 74 72 75   ┆uc val> :)   *) (* code: endstru┆
0x00e1a0…00e1c0             63 20 2a 29 0a 63 6f 64 65 77 6f 72 64 31 3a 3d 20 63 65 6e 64 73 74 72 75 63 3b 0a 0a 0a 65 6e   ┆c *) codeword1:= cendstruc;   en┆
0x00e1c0…00e1e0             64 3b 20 20 28 2a 20 63 61 73 65 20 2e 2e 2e 20 2a 29 0a 0a 0a 65 6d 69 74 28 20 63 6f 64 65 77   ┆d;  (* case ... *)   emit( codew┆
0x00e1e0…00e200             6f 72 64 31 2c 20 76 61 72 5f 6f 72 5f 66 69 65 6c 64 5f 73 70 69 78 2c 20 6e 69 6c 6c 2c 20 63   ┆ord1, var_or_field_spix, nill, c┆
0x00e200…00e220 (3, 1, 9)   6f 64 65 77 6f 72 64 32 29 3b 0a 0a 65 6e 64 3b 20 20 28 2a 20 73 65 63 74 69 6f 6e 20 38 20 20   ┆odeword2);  end;  (* section 8  ┆
0x00e220…00e240             2a 29 0a 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 73 74 61 74 65 6d 65 6e 74 3b 0a 28 2a 20 73 65   ┆*)    procedure statement; (* se┆
0x00e240…00e260             63 74 69 6f 6e 20 39 20 2a 29 0a 0a 76 61 72 0a 63 6f 64 65 77 6f 72 64 2c 20 63 6f 64 65 77 6f   ┆ction 9 *)  var codeword, codewo┆
0x00e260…00e280             72 64 32 20 3a 20 63 6f 64 65 73 3b 0a 73 74 65 70 2c 20 70 61 72 61 6d 31 20 3a 20 69 6e 74 65   ┆rd2 : codes; step, param1 : inte┆
0x00e280…00e2a0             67 65 72 3b 0a 6e 61 6d 65 20 3a 20 6e 61 6d 65 68 65 61 64 70 74 72 3b 0a 73 74 61 74 5f 73 74   ┆ger; name : nameheadptr; stat_st┆
0x00e2a0…00e2c0             61 63 6b 3a 20 74 5f 73 74 61 74 5f 73 74 61 63 6b 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75   ┆ack: t_stat_stack;  procedure pu┆
0x00e2c0…00e2e0             73 68 5f 72 65 70 65 74 69 74 69 76 65 5f 73 74 61 74 65 6d 65 6e 74 28 73 74 61 74 65 6d 65 6e   ┆sh_repetitive_statement(statemen┆
0x00e2e0…00e300             74 5f 6b 69 6e 64 3a 20 63 6f 64 65 73 29 3b 0a 28 2a 20 70 75 73 68 20 73 74 61 74 65 6d 65 6e   ┆t_kind: codes); (* push statemen┆
0x00e300…00e320             74 20 66 6f 72 20 70 72 6f 70 65 72 20 68 61 6e 64 6c 69 6e 67 20 6f 66 20 45 58 49 54 4c 4f 4f   ┆t for proper handling of EXITLOO┆
0x00e320…00e340             50 2c 20 43 4f 4e 54 49 4e 55 45 4c 4f 4f 50 20 61 6e 64 20 45 58 49 54 20 2a 29 0a 62 65 67 69   ┆P, CONTINUELOOP and EXIT *) begi┆
0x00e340…00e360             6e 0a 69 66 20 73 74 61 74 65 6d 65 6e 74 5f 73 74 61 63 6b 5f 74 6f 70 5e 2e 6e 65 78 74 5f 73   ┆n if statement_stack_top^.next_s┆
0x00e360…00e380             74 61 74 3d 6e 69 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 65 77 28 73 74 61 74 65 6d 65 6e 74   ┆tat=nil then begin new(statement┆
0x00e380…00e3a0             5f 73 74 61 63 6b 5f 74 6f 70 5e 2e 6e 65 78 74 5f 73 74 61 74 29 3b 0a 77 69 74 68 20 73 74 61   ┆_stack_top^.next_stat); with sta┆
0x00e3a0…00e3c0             74 65 6d 65 6e 74 5f 73 74 61 63 6b 5f 74 6f 70 5e 2e 6e 65 78 74 5f 73 74 61 74 5e 20 64 6f 0a   ┆tement_stack_top^.next_stat^ do ┆
0x00e3c0…00e3e0             62 65 67 69 6e 0a 6e 65 78 74 5f 73 74 61 74 3a 3d 20 6e 69 6c 3b 0a 66 6f 72 6d 65 72 5f 73 74   ┆begin next_stat:= nil; former_st┆
0x00e3e0…00e400             61 74 3a 3d 20 73 74 61 74 65 6d 65 6e 74 5f 73 74 61 63 6b 5f 74 6f 70 3b 0a 65 6e 64 3b 0a 65   ┆at:= statement_stack_top; end; e┆
0x00e400…00e420 (3, 1, 10)  6e 64 3b 20 28 2a 20 61 64 64 20 6e 65 77 20 73 74 61 74 65 6d 65 6e 74 20 73 74 61 63 6b 20 6e   ┆nd; (* add new statement stack n┆
0x00e420…00e440             6f 64 65 20 2a 29 0a 73 74 61 74 65 6d 65 6e 74 5f 73 74 61 63 6b 5f 74 6f 70 3a 3d 20 73 74 61   ┆ode *) statement_stack_top:= sta┆
0x00e440…00e460             74 65 6d 65 6e 74 5f 73 74 61 63 6b 5f 74 6f 70 5e 2e 6e 65 78 74 5f 73 74 61 74 3b 0a 77 69 74   ┆tement_stack_top^.next_stat; wit┆
0x00e460…00e480             68 20 73 74 61 74 65 6d 65 6e 74 5f 73 74 61 63 6b 5f 74 6f 70 5e 20 64 6f 0a 73 74 61 74 5f 6b   ┆h statement_stack_top^ do stat_k┆
0x00e480…00e4a0             69 6e 64 3a 3d 20 73 74 61 74 65 6d 65 6e 74 5f 6b 69 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 70 75   ┆ind:= statement_kind; end; (* pu┆
0x00e4a0…00e4c0             73 68 20 72 65 70 65 74 69 74 69 76 65 20 73 74 61 74 65 6d 65 6e 74 20 2a 29 0a 0a 0a 62 65 67   ┆sh repetitive statement *)   beg┆
0x00e4c0…00e4e0             69 6e 20 28 2a 20 73 74 61 74 65 6d 65 6e 74 20 2a 29 0a 63 6f 64 65 77 6f 72 64 32 3a 3d 20 63   ┆in (* statement *) codeword2:= c┆
0x00e4e0…00e500             6e 6f 63 6f 64 65 3b 0a 70 61 72 61 6d 31 3a 3d 20 6e 69 6c 6c 3b 0a 0a 63 61 73 65 20 70 72 6f   ┆nocode; param1:= nill;  case pro┆
0x00e500…00e520             64 20 6f 66 0a 0a 39 30 31 3a 20 20 28 2a 20 3c 63 6f 6d 70 6f 75 6e 64 20 73 74 61 74 65 6d 65   ┆d of  901:  (* <compound stateme┆
0x00e520…00e540             6e 74 3e 20 3a 3a 3d 20 3c 62 65 67 69 6e 3e 20 3c 73 74 61 74 65 6d 65 6e 74 20 6c 69 73 74 3e   ┆nt> ::= <begin> <statement list>┆
0x00e540…00e560             20 65 6e 64 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 20 20 2a 29 0a 69 66 20 72 65 64 75   ┆ end *) (* code: end  *) if redu┆
0x00e560…00e580             63 65 64 5f 69 6e 74 65 72 6d 65 64 69 61 74 65 5f 6c 61 6e 67 75 61 67 65 20 74 68 65 6e 0a 63   ┆ced_intermediate_language then c┆
0x00e580…00e5a0             6f 64 65 77 6f 72 64 3a 3d 20 63 6e 6f 63 6f 64 65 0a 65 6c 73 65 0a 63 6f 64 65 77 6f 72 64 3a   ┆odeword:= cnocode else codeword:┆
0x00e5a0…00e5c0             3d 20 63 65 6e 64 3b 0a 0a 39 30 32 3a 20 20 28 2a 20 3c 62 65 67 69 6e 3e 20 3a 3a 3d 20 62 65   ┆= cend;  902:  (* <begin> ::= be┆
0x00e5c0…00e5e0             67 69 6e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 62 65 67 69 6e 20 20 2a 29 0a 63 6f 64 65 77   ┆gin  *) (* code: begin  *) codew┆
0x00e5e0…00e600             6f 72 64 3a 3d 20 63 62 65 67 69 6e 3b 0a 0a 39 30 33 3a 20 20 28 2a 20 3c 70 72 6f 63 65 64 75   ┆ord:= cbegin;  903:  (* <procedu┆
0x00e600…00e620 (3, 1, 11)  72 65 20 63 61 6c 6c 3e 20 3a 3a 3d 20 3c 76 61 72 69 61 62 6c 65 3e 20 20 2a 29 0a 28 2a 20 63   ┆re call> ::= <variable>  *) (* c┆
0x00e620…00e640             6f 64 65 3a 20 63 61 6c 6c 70 72 6f 63 65 64 75 72 65 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a   ┆ode: callprocedure  *) codeword:┆
0x00e640…00e660             3d 20 63 63 61 6c 6c 70 72 6f 63 65 64 75 72 65 3b 0a 0a 39 30 34 3a 20 20 28 2a 20 3c 61 63 74   ┆= ccallprocedure;  904:  (* <act┆
0x00e660…00e680             75 61 6c 20 70 61 72 61 6d 65 74 65 72 3e 20 3a 3a 3d 20 3c 75 6e 69 74 3e 20 20 2a 29 0a 28 2a   ┆ual parameter> ::= <unit>  *) (*┆
0x00e680…00e6a0             20 63 6f 64 65 3a 20 61 63 74 75 61 6c 70 61 72 61 6d 20 2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65   ┆ code: actualparam *) begin code┆
0x00e6a0…00e6c0             77 6f 72 64 3a 3d 20 63 61 63 74 75 61 6c 70 61 72 61 6d 3b 0a 65 6e 64 3b 0a 0a 39 30 35 3a 20   ┆word:= cactualparam; end;  905: ┆
0x00e6c0…00e6e0             20 28 2a 20 3c 61 63 74 75 61 6c 20 70 61 72 61 6d 65 74 65 72 3e 20 3a 3a 3d 20 3c 65 78 70 72   ┆ (* <actual parameter> ::= <expr┆
0x00e6e0…00e700             65 73 73 69 6f 6e 3e 20 2a 2a 2a 20 3c 75 6e 69 74 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20   ┆ession> *** <unit>  *) (* code: ┆
0x00e700…00e720             64 6f 75 62 6c 65 70 61 72 61 6d 20 20 2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d   ┆doubleparam  *) begin codeword:=┆
0x00e720…00e740             20 63 64 6f 75 62 6c 65 70 61 72 61 6d 3b 0a 65 6e 64 3b 0a 0a 39 30 36 3a 20 20 28 2a 20 3c 61   ┆ cdoubleparam; end;  906:  (* <a┆
0x00e740…00e760             73 73 69 67 6e 6d 65 6e 74 20 73 74 61 74 65 6d 65 6e 74 3e 20 3a 3a 3d 20 3c 76 61 72 69 61 62   ┆ssignment statement> ::= <variab┆
0x00e760…00e780             6c 65 3e 3a 3d 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20   ┆le>:= <expression>  *) (* code: ┆
0x00e780…00e7a0             65 6e 64 61 73 73 69 67 6e 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 61 73 73   ┆endassign  *) codeword:= cendass┆
0x00e7a0…00e7c0             69 67 6e 3b 0a 0a 39 30 37 3a 20 20 28 2a 20 3c 65 78 63 68 61 6e 67 65 20 73 74 61 74 65 6d 65   ┆ign;  907:  (* <exchange stateme┆
0x00e7c0…00e7e0             6e 74 3e 20 3a 3a 3d 20 3c 76 61 72 69 61 62 6c 65 3e 3a 3d 20 3a 20 3c 76 61 72 69 61 62 6c 65   ┆nt> ::= <variable>:= : <variable┆
0x00e7e0…00e800             3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 65 78 63 68 61 6e 67 65 20 20 2a 29 0a 63   ┆>  *) (* code: endexchange  *) c┆
0x00e800…00e820 (3, 1, 12)  6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 65 78 63 68 61 6e 67 65 3b 0a 0a 39 30 39 3a 20 20 28   ┆odeword:= cendexchange;  909:  (┆
0x00e820…00e840             2a 20 3c 63 61 73 65 20 73 74 61 74 65 6d 65 6e 74 3e 20 3a 3a 3d 20 3c 73 65 6c 65 63 74 6f 72   ┆* <case statement> ::= <selector┆
0x00e840…00e860             20 70 61 72 74 3e 20 3c 63 61 73 65 20 6c 69 73 74 3e 20 3c 65 6e 64 20 63 61 73 65 20 70 61 72   ┆ part> <case list> <end case par┆
0x00e860…00e880             74 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 63 61 73 65 20 20 2a 29 0a 63 6f 64 65   ┆t>  *) (* code: endcase  *) code┆
0x00e880…00e8a0             77 6f 72 64 3a 3d 20 63 65 6e 64 63 61 73 65 3b 0a 0a 39 31 30 3a 20 20 28 2a 20 3c 73 65 6c 65   ┆word:= cendcase;  910:  (* <sele┆
0x00e8a0…00e8c0             63 74 6f 72 20 70 61 72 74 3e 20 3a 3a 3d 20 3c 63 61 73 65 3e 20 3c 65 78 70 72 65 73 73 69 6f   ┆ctor part> ::= <case> <expressio┆
0x00e8c0…00e8e0             6e 3e 20 6f 66 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 63 61 73 65 65 78 70 72 20 20 2a 29 0a 63   ┆n> of *) (* code: caseexpr  *) c┆
0x00e8e0…00e900             6f 64 65 77 6f 72 64 3a 3d 20 63 63 61 73 65 65 78 70 72 3b 0a 0a 39 31 31 3a 20 20 28 2a 20 3c   ┆odeword:= ccaseexpr;  911:  (* <┆
0x00e900…00e920             63 61 73 65 3e 20 3a 3a 3d 20 63 61 73 65 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 63 61 73 65   ┆case> ::= case  *) (* code: case┆
0x00e920…00e940             73 74 61 74 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 63 61 73 65 73 74 61 74 3b 0a 0a 39   ┆stat *) codeword:= ccasestat;  9┆
0x00e940…00e960             31 32 3a 20 20 28 2a 20 3c 63 61 73 65 20 6c 69 73 74 20 65 6c 65 6d 65 6e 74 3e 20 3a 3a 3d 20   ┆12:  (* <case list element> ::= ┆
0x00e960…00e980             3c 63 61 73 65 20 6c 61 62 65 6c 20 6c 69 73 74 3e 20 3c 65 6e 64 20 6c 61 62 65 6c 20 6c 69 73   ┆<case label list> <end label lis┆
0x00e980…00e9a0             74 3e 20 3c 73 74 61 74 65 6d 65 6e 74 3e 20 20 2a 29 0a 28 2a 20 3c 65 6e 64 20 63 61 73 65 20   ┆t> <statement>  *) (* <end case ┆
0x00e9a0…00e9c0             70 61 72 74 3e 20 3a 3a 3d 20 3c 6f 74 68 65 72 77 69 73 65 3e 20 3c 73 74 61 74 65 6d 65 6e 74   ┆part> ::= <otherwise> <statement┆
0x00e9c0…00e9e0             3e 20 65 6e 64 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 63 61 73 65 65 6c 65 6d 65 6e 74 20 20 2a   ┆> end *) (* code: caseelement  *┆
0x00e9e0…00ea00             29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 63 61 73 65 65 6c 65 6d 65 6e 74 3b 0a 0a 39 31 33 3a   ┆) codeword:= ccaseelement;  913:┆
0x00ea00…00ea20 (3, 1, 13)  20 20 28 2a 20 3c 6c 61 62 65 6c 20 72 61 6e 67 65 3e 20 3a 3a 3d 20 3c 65 78 70 72 65 73 73 69   ┆  (* <label range> ::= <expressi┆
0x00ea20…00ea40             6f 6e 3e 20 2e 2e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20   ┆on> .. <expression> *) (* code: ┆
0x00ea40…00ea60             63 61 73 65 6c 61 62 65 6c 72 61 6e 67 65 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 63   ┆caselabelrange  *) codeword:= cc┆
0x00ea60…00ea80             61 73 65 6c 61 62 65 6c 72 61 6e 67 65 3b 0a 0a 39 31 34 3a 20 20 28 2a 20 3c 6c 61 62 65 6c 20   ┆aselabelrange;  914:  (* <label ┆
0x00ea80…00eaa0             72 61 6e 67 65 3e 20 3a 3a 3d 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 2a 29 0a 28 2a 20 63 6f   ┆range> ::= <expression> *) (* co┆
0x00eaa0…00eac0             64 65 3a 20 63 61 73 65 6c 61 62 65 6c 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 63 61 73   ┆de: caselabel *) codeword:= ccas┆
0x00eac0…00eae0             65 6c 61 62 65 6c 3b 0a 0a 39 31 35 3a 20 20 28 2a 20 3c 65 6e 64 20 6c 61 62 65 6c 20 6c 69 73   ┆elabel;  915:  (* <end label lis┆
0x00eae0…00eb00             74 3e 20 3a 3a 3d 20 3a 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 63 61 73 65 6c 69 73 74 20 20   ┆t> ::= :  *) (* code: caselist  ┆
0x00eb00…00eb20             2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 63 61 73 65 6c 69 73 74 3b 0a 0a 39 31 36 3a 20 20   ┆*) codeword:= ccaselist;  916:  ┆
0x00eb20…00eb40             28 2a 20 3c 6f 74 68 65 72 77 69 73 65 3e 20 3a 3a 3d 20 6f 74 68 65 72 77 69 73 65 20 2a 29 0a   ┆(* <otherwise> ::= otherwise *) ┆
0x00eb40…00eb60             28 2a 20 63 6f 64 65 3a 20 6f 74 68 65 72 77 69 73 65 20 63 61 73 65 6c 69 73 74 20 2a 29 0a 62   ┆(* code: otherwise caselist *) b┆
0x00eb60…00eb80             65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 6f 74 68 65 72 77 69 73 65 3b 0a 63 6f 64 65   ┆egin codeword:= cotherwise; code┆
0x00eb80…00eba0             77 6f 72 64 32 3a 3d 20 63 63 61 73 65 6c 69 73 74 3b 0a 65 6e 64 3b 0a 0a 39 31 37 2c 20 20 28   ┆word2:= ccaselist; end;  917,  (┆
0x00eba0…00ebc0             2a 20 3c 73 74 61 74 65 6d 65 6e 74 3e 20 3a 3a 3d 20 3c 66 6f 72 20 64 6f 3e 20 3c 73 74 61 72   ┆* <statement> ::= <for do> <star┆
0x00ebc0…00ebe0             74 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 3c 73 74 61 74 65 6d 65 6e 74 3e 20 3c 65 6e 64 20 6c   ┆t labelscope> <statement> <end l┆
0x00ebe0…00ec00             61 62 65 6c 73 63 6f 70 65 3e 20 2a 29 0a 39 33 33 2c 20 20 28 2a 20 20 20 20 20 20 20 20 20 20   ┆abelscope> *) 933,  (*          ┆
0x00ec00…00ec20 (3, 1, 14)  20 20 20 20 21 20 20 3c 77 68 69 6c 65 20 64 6f 3e 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63   ┆    !  <while do> <start labelsc┆
0x00ec20…00ec40             6f 70 65 3e 20 3c 73 74 61 74 65 6d 65 6e 74 3e 20 3c 65 6e 64 20 6c 61 62 65 6c 73 63 6f 70 65   ┆ope> <statement> <end labelscope┆
0x00ec40…00ec60             3e 20 20 2a 29 0a 39 33 36 2c 20 20 28 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 3c   ┆>  *) 936,  (*              !  <┆
0x00ec60…00ec80             6c 6f 63 6b 20 73 74 61 72 74 3e 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 3c   ┆lock start> <start labelscope> <┆
0x00ec80…00eca0             73 74 61 74 65 6d 65 6e 74 3e 20 3c 65 6e 64 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 20 20 2a 29   ┆statement> <end labelscope>   *)┆
0x00eca0…00ecc0             0a 39 34 37 3a 20 20 28 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 3c 63 68 61 6e 6e   ┆ 947:  (*              !  <chann┆
0x00ecc0…00ece0             65 6c 20 64 6f 3e 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 3c 73 74 61 74 65   ┆el do> <start labelscope> <state┆
0x00ece0…00ed00             6d 65 6e 74 3e 20 3c 65 6e 64 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 20 2a 29 0a 28 2a 20 3c 62   ┆ment> <end labelscope>  *) (* <b┆
0x00ed00…00ed20             61 6c 61 6e 63 65 64 20 73 74 61 74 65 6d 65 6e 74 3e 20 3a 3a 3d 20 3c 66 6f 72 20 64 6f 3e 20   ┆alanced statement> ::= <for do> ┆
0x00ed20…00ed40             3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 3c 62 61 6c 61 6e 63 65 64 20 73 74 61   ┆<start labelscope> <balanced sta┆
0x00ed40…00ed60             74 65 6d 65 6e 74 3e 20 3c 65 6e 64 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 20 2a 29 0a 28 2a 20   ┆tement> <end labelscope>  *) (* ┆
0x00ed60…00ed80             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 3c 77 68 69 6c 65 20   ┆                      !  <while ┆
0x00ed80…00eda0             64 6f 3e 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 3c 62 61 6c 61 6e 63 65 64   ┆do> <start labelscope> <balanced┆
0x00eda0…00edc0             20 73 74 61 74 65 6d 65 6e 74 3e 20 3c 65 6e 64 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 2a 29 0a   ┆ statement> <end labelscope> *) ┆
0x00edc0…00ede0             28 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 3c 6c 6f 63   ┆(*                       !  <loc┆
0x00ede0…00ee00             6b 20 73 74 61 72 74 3e 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 3c 62 61 6c   ┆k start> <start labelscope> <bal┆
0x00ee00…00ee20 (3, 1, 15)  61 6e 63 65 64 20 73 74 61 74 65 6d 65 6e 74 3e 20 3c 65 6e 64 20 6c 61 62 65 6c 73 63 6f 70 65   ┆anced statement> <end labelscope┆
0x00ee20…00ee40             3e 20 2a 29 0a 28 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20   ┆> *) (*                       ! ┆
0x00ee40…00ee60             20 3c 63 68 61 6e 6e 65 6c 20 64 6f 3e 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63 6f 70 65 3e   ┆ <channel do> <start labelscope>┆
0x00ee60…00ee80             20 3c 62 61 6c 61 6e 63 65 64 20 73 74 61 74 65 6d 65 6e 74 3e 20 3c 65 6e 64 20 6c 61 62 65 6c   ┆ <balanced statement> <end label┆
0x00ee80…00eea0             73 63 6f 70 65 3e 20 20 2a 29 0a 0a 28 2a 20 63 6f 64 65 3a 20 20 65 6e 64 66 6f 72 2f 65 6e 64   ┆scope>  *)  (* code:  endfor/end┆
0x00eea0…00eec0             77 68 69 6c 65 2f 65 6e 64 6c 6f 63 6b 2f 65 6e 64 63 68 61 6e 6e 65 6c 20 2a 29 0a 0a 62 65 67   ┆while/endlock/endchannel *)  beg┆
0x00eec0…00eee0             69 6e 0a 28 2a 20 70 6f 70 5f 72 65 70 65 74 69 74 69 76 65 5f 73 74 61 74 65 6d 65 6e 74 20 2a   ┆in (* pop_repetitive_statement *┆
0x00eee0…00ef00             29 0a 73 74 61 74 65 6d 65 6e 74 5f 73 74 61 63 6b 5f 74 6f 70 3a 3d 20 73 74 61 74 65 6d 65 6e   ┆) statement_stack_top:= statemen┆
0x00ef00…00ef20             74 5f 73 74 61 63 6b 5f 74 6f 70 5e 2e 66 6f 72 6d 65 72 5f 73 74 61 74 3b 0a 63 61 73 65 20 70   ┆t_stack_top^.former_stat; case p┆
0x00ef20…00ef40             72 6f 64 20 6f 66 0a 39 31 37 3a 20 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 66 6f 72 3b 0a   ┆rod of 917: codeword:= cendfor; ┆
0x00ef40…00ef60             39 33 33 3a 20 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 77 68 69 6c 65 3b 0a 39 33 36 3a 20   ┆933: codeword:= cendwhile; 936: ┆
0x00ef60…00ef80             63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 6c 6f 63 6b 3b 0a 39 34 37 3a 20 63 6f 64 65 77 6f   ┆codeword:= cendlock; 947: codewo┆
0x00ef80…00efa0             72 64 3a 3d 20 63 65 6e 64 63 68 61 6e 6e 65 6c 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a   ┆rd:= cendchannel; end; (* case *┆
0x00efa0…00efc0             29 0a 0a 65 6e 64 3b 20 28 2a 20 39 31 37 2c 20 39 33 33 2c 20 39 33 36 2c 20 39 34 37 20 20 2a   ┆)  end; (* 917, 933, 936, 947  *┆
0x00efc0…00efe0             29 0a 0a 39 31 38 3a 20 20 28 2a 20 3c 66 6f 72 20 64 6f 3e 20 3a 3a 3d 20 3c 66 6f 72 20 74 6f   ┆)  918:  (* <for do> ::= <for to┆
0x00efe0…00f000             3e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 64 6f 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 75 70   ┆> <expression> do *) (* code: up┆
0x00f000…00f020 (4, 0, 1)   20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 75 70 3b 0a 20 0a 39 31 39 3a 20 20 28 2a 20 20   ┆ *) codeword:= cup;   919:  (*  ┆
0x00f020…00f040             20 20 20 20 20 20 20 20 20 21 20 3c 66 6f 72 20 64 6f 77 6e 74 6f 3e 20 3c 65 78 70 72 65 73 73   ┆         ! <for downto> <express┆
0x00f040…00f060             69 6f 6e 3e 20 64 6f 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 6f 77 6e 20 20 20 2a 29 0a 63 6f   ┆ion> do *) (* code: down   *) co┆
0x00f060…00f080             64 65 77 6f 72 64 3a 3d 20 63 64 6f 77 6e 3b 0a 0a 39 32 30 3a 20 20 28 2a 20 3c 66 6f 72 20 61   ┆deword:= cdown;  920:  (* <for a┆
0x00f080…00f0a0             73 73 69 67 6e 3e 20 3a 3a 3d 20 3c 66 6f 72 3e 20 3c 76 61 72 69 61 62 6c 65 3e 3a 3d 20 20 2a   ┆ssign> ::= <for> <variable>:=  *┆
0x00f0a0…00f0c0             29 0a 28 2a 20 63 6f 64 65 3a 20 66 6f 72 76 61 72 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d   ┆) (* code: forvar  *) codeword:=┆
0x00f0c0…00f0e0             20 63 66 6f 72 76 61 72 3b 0a 0a 39 32 31 3a 20 20 28 2a 20 3c 66 6f 72 3e 20 3a 3a 3d 20 66 6f   ┆ cforvar;  921:  (* <for> ::= fo┆
0x00f0e0…00f100             72 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 66 6f 72 73 74 61 74 20 2a 29 0a 62 65 67 69 6e 0a 63   ┆r *) (* code: forstat *) begin c┆
0x00f100…00f120             6f 64 65 77 6f 72 64 3a 3d 20 63 66 6f 72 73 74 61 74 3b 0a 70 75 73 68 5f 72 65 70 65 74 69 74   ┆odeword:= cforstat; push_repetit┆
0x00f120…00f140             69 76 65 5f 73 74 61 74 65 6d 65 6e 74 28 63 6f 64 65 77 6f 72 64 29 3b 0a 65 6e 64 3b 0a 0a 39   ┆ive_statement(codeword); end;  9┆
0x00f140…00f160             32 32 3a 20 20 28 2a 20 3c 67 6f 74 6f 20 73 74 61 74 65 6d 65 6e 74 3e 20 3a 3a 3d 20 3c 67 6f   ┆22:  (* <goto statement> ::= <go┆
0x00f160…00f180             74 6f 3e 20 3c 6c 61 62 20 6e 61 6d 65 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 67 6f   ┆to> <lab name> *) (* code: endgo┆
0x00f180…00f1a0             74 6f 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 67 6f 74 6f 3b 0a 0a 39 32 33   ┆to  *) codeword:= cendgoto;  923┆
0x00f1a0…00f1c0             3a 20 20 28 2a 20 3c 67 6f 74 6f 3e 20 3a 3a 3d 20 67 6f 74 6f 20 2a 29 0a 28 2a 20 63 6f 64 65   ┆:  (* <goto> ::= goto *) (* code┆
0x00f1c0…00f1e0             3a 20 67 6f 74 6f 73 74 61 74 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 67 6f 74 6f 73   ┆: gotostat  *) codeword:= cgotos┆
0x00f1e0…00f200             74 61 74 3b 0a 0a 39 32 34 3a 20 20 28 2a 20 3c 6c 61 62 20 6e 61 6d 65 3e 20 3a 3a 3d 20 6e 61   ┆tat;  924:  (* <lab name> ::= na┆
0x00f200…00f220 (4, 0, 2)   6d 65 20 20 2a 29 0a 28 2a 20 20 20 20 20 20 20 21 20 6b 6f 6e 73 74 20 20 2a 29 0a 28 2a 20 63   ┆me  *) (*       ! konst  *) (* c┆
0x00f220…00f240             6f 64 65 3a 20 69 64 20 28 20 73 70 69 78 20 29 20 20 2a 29 0a 62 65 67 69 6e 0a 6e 61 6d 65 3a   ┆ode: id ( spix )  *) begin name:┆
0x00f240…00f260             3d 20 72 65 61 64 6e 61 6d 65 3b 0a 70 61 72 61 6d 31 3a 3d 20 73 65 61 72 63 68 6e 61 6d 65 28   ┆= readname; param1:= searchname(┆
0x00f260…00f280             6e 61 6d 65 29 3b 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 69 64 3b 0a 65 6e 64 3b 0a 0a 39 32 35   ┆name); codeword:= cid; end;  925┆
0x00f280…00f2a0             3a 20 20 28 2a 20 3c 73 74 61 74 65 6d 65 6e 74 3e 20 3a 3a 3d 20 3c 69 66 20 74 68 65 6e 3e 20   ┆:  (* <statement> ::= <if then> ┆
0x00f2a0…00f2c0             3c 73 74 61 74 65 6d 65 6e 74 3e 20 20 2a 29 0a 28 2a 20 20 20 20 20 21 20 3c 69 66 20 74 68 65   ┆<statement>  *) (*     ! <if the┆
0x00f2c0…00f2e0             6e 20 65 6c 73 65 3e 20 3c 73 74 61 74 65 6d 65 6e 74 3e 20 20 2a 29 0a 28 2a 20 3c 62 61 6c 61   ┆n else> <statement>  *) (* <bala┆
0x00f2e0…00f300             6e 63 65 64 20 73 74 61 74 65 6d 65 6e 74 3e 20 3a 3a 3d 20 3c 69 66 20 74 68 65 6e 20 65 6c 73   ┆nced statement> ::= <if then els┆
0x00f300…00f320             65 3e 20 3c 62 61 6c 61 6e 63 65 64 20 73 74 61 74 65 6d 65 6e 74 3e 20 20 2a 29 0a 28 2a 20 63   ┆e> <balanced statement>  *) (* c┆
0x00f320…00f340             6f 64 65 3a 20 65 6e 64 69 66 20 20 2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20   ┆ode: endif  *) begin codeword:= ┆
0x00f340…00f360             63 65 6e 64 69 66 3b 0a 65 6e 64 3b 0a 0a 39 32 36 3a 20 20 28 2a 20 3c 69 66 20 74 68 65 6e 3e   ┆cendif; end;  926:  (* <if then>┆
0x00f360…00f380             20 3a 3a 3d 20 3c 69 66 20 70 61 72 74 3e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 74 68 65 6e   ┆ ::= <if part> <expression> then┆
0x00f380…00f3a0             20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 69 66 65 78 70 72 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a   ┆ *) (* code: ifexpr *) codeword:┆
0x00f3a0…00f3c0             3d 20 63 69 66 65 78 70 72 3b 0a 0a 39 32 37 3a 20 20 28 2a 20 3c 69 66 20 70 61 72 74 3e 20 3a   ┆= cifexpr;  927:  (* <if part> :┆
0x00f3c0…00f3e0             3a 3d 20 69 66 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 69 66 73 74 61 74 20 20 2a 29 0a 63 6f   ┆:= if  *) (* code: ifstat  *) co┆
0x00f3e0…00f400             64 65 77 6f 72 64 3a 3d 20 63 69 66 73 74 61 74 3b 0a 0a 39 32 38 3a 20 20 28 2a 20 3c 69 66 20   ┆deword:= cifstat;  928:  (* <if ┆
0x00f400…00f420 (4, 0, 3)   74 68 65 6e 20 65 6c 73 65 3e 20 3a 3a 3d 20 3c 69 66 20 74 68 65 6e 3e 20 3c 62 61 6c 61 6e 63   ┆then else> ::= <if then> <balanc┆
0x00f420…00f440             65 64 20 73 74 61 74 65 6d 65 6e 74 3e 20 65 6c 73 65 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20   ┆ed statement> else  *) (* code: ┆
0x00f440…00f460             65 6c 73 65 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6c 73 65 3b 0a 0a 39 32 39 3a 20   ┆else *) codeword:= celse;  929: ┆
0x00f460…00f480             20 28 2a 20 3c 75 6e 74 69 6c 3e 20 3a 3a 3d 20 75 6e 74 69 6c 20 2a 29 0a 28 2a 20 63 6f 64 65   ┆ (* <until> ::= until *) (* code┆
0x00f480…00f4a0             3a 20 75 6e 74 69 6c 20 20 20 2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 75   ┆: until   *) begin codeword:= cu┆
0x00f4a0…00f4c0             6e 74 69 6c 3b 0a 28 2a 20 70 6f 70 5f 72 65 70 65 74 69 74 69 76 65 5f 73 74 61 74 65 6d 65 6e   ┆ntil; (* pop_repetitive_statemen┆
0x00f4c0…00f4e0             74 20 2a 29 0a 73 74 61 74 65 6d 65 6e 74 5f 73 74 61 63 6b 5f 74 6f 70 3a 3d 20 73 74 61 74 65   ┆t *) statement_stack_top:= state┆
0x00f4e0…00f500             6d 65 6e 74 5f 73 74 61 63 6b 5f 74 6f 70 5e 2e 66 6f 72 6d 65 72 5f 73 74 61 74 3b 0a 65 6e 64   ┆ment_stack_top^.former_stat; end┆
0x00f500…00f520             3b 0a 0a 39 33 30 3a 20 20 28 2a 20 3c 72 65 70 65 61 74 20 73 74 61 74 65 6d 65 6e 74 3e 20 3a   ┆;  930:  (* <repeat statement> :┆
0x00f520…00f540             3a 3d 20 3c 72 65 70 65 61 74 3e 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 3c   ┆:= <repeat> <start labelscope> <┆
0x00f540…00f560             73 74 61 74 65 6d 65 6e 74 20 6c 69 73 74 3e 0a 3c 65 6e 64 20 6c 61 62 65 6c 73 63 6f 70 65 3e   ┆statement list> <end labelscope>┆
0x00f560…00f580             20 3c 75 6e 74 69 6c 3e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 2a 29 0a 28 2a 20 63 6f 64 65   ┆ <until> <expression> *) (* code┆
0x00f580…00f5a0             3a 20 65 6e 64 72 65 70 65 61 74 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 72   ┆: endrepeat  *) codeword:= cendr┆
0x00f5a0…00f5c0             65 70 65 61 74 3b 0a 0a 39 33 32 3a 20 20 28 2a 20 3c 72 65 70 65 61 74 3e 20 3a 3a 3d 20 72 65   ┆epeat;  932:  (* <repeat> ::= re┆
0x00f5c0…00f5e0             70 65 61 74 20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 72 65 70 65 61 74 73 74 61 74 20 20 2a   ┆peat   *) (* code: repeatstat  *┆
0x00f5e0…00f600             29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 72 65 70 65 61 74 73 74 61 74 3b 0a   ┆) begin codeword:= crepeatstat; ┆
0x00f600…00f620 (4, 0, 4)   70 75 73 68 5f 72 65 70 65 74 69 74 69 76 65 5f 73 74 61 74 65 6d 65 6e 74 28 63 6f 64 65 77 6f   ┆push_repetitive_statement(codewo┆
0x00f620…00f640             72 64 29 3b 0a 65 6e 64 3b 0a 0a 39 33 34 3a 20 20 28 2a 20 3c 77 68 69 6c 65 20 64 6f 3e 20 3a   ┆rd); end;  934:  (* <while do> :┆
0x00f640…00f660             3a 3d 20 3c 77 68 69 6c 65 3e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 64 6f 20 2a 29 0a 28 2a   ┆:= <while> <expression> do *) (*┆
0x00f660…00f680             20 63 6f 64 65 3a 20 77 68 69 6c 65 65 78 70 72 20 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d   ┆ code: whileexpr   *) codeword:=┆
0x00f680…00f6a0             20 63 77 68 69 6c 65 65 78 70 72 3b 0a 0a 39 33 35 3a 20 20 28 2a 20 3c 77 68 69 6c 65 3e 20 3a   ┆ cwhileexpr;  935:  (* <while> :┆
0x00f6a0…00f6c0             3a 3d 20 77 68 69 6c 65 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 77 68 69 6c 65 73 74 61 74 20 20   ┆:= while *) (* code: whilestat  ┆
0x00f6c0…00f6e0             2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 77 68 69 6c 65 73 74 61 74 3b 0a   ┆*) begin codeword:= cwhilestat; ┆
0x00f6e0…00f700             70 75 73 68 5f 72 65 70 65 74 69 74 69 76 65 5f 73 74 61 74 65 6d 65 6e 74 28 63 6f 64 65 77 6f   ┆push_repetitive_statement(codewo┆
0x00f700…00f720             72 64 29 3b 0a 65 6e 64 3b 0a 0a 39 33 37 3a 20 20 28 2a 20 3c 77 69 74 68 3e 20 3a 3a 3d 20 77   ┆rd); end;  937:  (* <with> ::= w┆
0x00f720…00f740             69 74 68 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 77 69 74 68 73 74 61 74 20 2a 29 0a 63 6f 64   ┆ith  *) (* code: withstat *) cod┆
0x00f740…00f760             65 77 6f 72 64 3a 3d 20 63 77 69 74 68 73 74 61 74 3b 0a 0a 39 33 38 3a 20 20 28 2a 20 3c 77 69   ┆eword:= cwithstat;  938:  (* <wi┆
0x00f760…00f780             74 68 20 63 6f 6d 6d 61 3e 20 3a 3a 3d 20 20 20 2c 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 77   ┆th comma> ::=   ,  *) (* code: w┆
0x00f780…00f7a0             69 74 68 63 6f 6d 6d 61 20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 77 69 74 68 63 6f 6d   ┆ithcomma  *) codeword:= cwithcom┆
0x00f7a0…00f7c0             6d 61 3b 0a 0a 39 33 39 3a 20 20 28 2a 20 3c 77 69 74 68 20 76 61 72 69 61 62 6c 65 3e 20 3a 3a   ┆ma;  939:  (* <with variable> ::┆
0x00f7c0…00f7e0             3d 20 3c 76 61 72 69 61 62 6c 65 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 77 69 74 68 76 61   ┆= <variable>  *) (* code: withva┆
0x00f7e0…00f800             72 20 6e 6f 6c 6f 63 61 6c 64 65 63 6c 20 20 2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64   ┆r nolocaldecl  *) begin codeword┆
0x00f800…00f820 (4, 0, 5)   3a 3d 20 63 77 69 74 68 76 61 72 3b 0a 63 6f 64 65 77 6f 72 64 32 3a 3d 20 63 6e 6f 6c 6f 63 61   ┆:= cwithvar; codeword2:= cnoloca┆
0x00f820…00f840             6c 64 65 63 6c 3b 0a 69 66 20 74 79 70 65 62 75 66 66 65 72 66 6c 61 67 20 74 68 65 6e 0a 65 6d   ┆ldecl; if typebufferflag then em┆
0x00f840…00f860             69 74 5f 74 79 70 65 62 75 66 66 65 72 3b 0a 65 6e 64 3b 0a 0a 39 34 30 3a 20 20 28 2a 20 3c 61   ┆it_typebuffer; end;  940:  (* <a┆
0x00f860…00f880             73 3e 20 3a 3a 3d 20 61 73 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 77 69 74 68 76 61 72 20 20   ┆s> ::= as  *) (* code: withvar  ┆
0x00f880…00f8a0             2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 77 69 74 68 76 61 72 3b 0a 69 66   ┆*) begin codeword:= cwithvar; if┆
0x00f8a0…00f8c0             20 74 79 70 65 62 75 66 66 65 72 66 6c 61 67 20 74 68 65 6e 0a 62 65 67 69 6e 0a 73 61 76 65 64   ┆ typebufferflag then begin saved┆
0x00f8c0…00f8e0             5f 6c 61 73 74 62 75 66 66 65 72 65 64 3a 3d 20 6c 61 73 74 62 75 66 66 65 72 65 64 3b 0a 65 6d   ┆_lastbuffered:= lastbuffered; em┆
0x00f8e0…00f900             69 74 5f 74 79 70 65 62 75 66 66 65 72 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 39 34 30 20   ┆it_typebuffer; end; end; (* 940 ┆
0x00f900…00f920             2a 29 0a 0a 39 34 31 3a 20 20 28 2a 20 3c 6c 6f 63 61 6c 20 6e 61 6d 65 3e 20 3a 3a 3d 20 6e 61   ┆*)  941:  (* <local name> ::= na┆
0x00f920…00f940             6d 65 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 65 63 6c 61 72 61 74 69 6f 6e 28 20 76 61 72 20   ┆me *) (* code: declaration( var ┆
0x00f940…00f960             29 20 64 65 63 6c 61 72 65 28 20 73 70 69 78 20 29 20 2a 29 0a 62 65 67 69 6e 0a 6e 61 6d 65 3a   ┆) declare( spix ) *) begin name:┆
0x00f960…00f980             3d 20 72 65 61 64 6e 61 6d 65 3b 0a 65 6d 69 74 28 20 63 64 65 63 6c 61 72 61 74 69 6f 6e 2c 20   ┆= readname; emit( cdeclaration, ┆
0x00f980…00f9a0             6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 76 61 72 29 3b 0a 65 6d 69 74 64 65 63 6c 61 72 65 28 64   ┆nill, nill, cvar); emitdeclare(d┆
0x00f9a0…00f9c0             65 63 6c 2c 20 73 65 61 72 63 68 6e 61 6d 65 28 6e 61 6d 65 29 29 3b 0a 28 2a 20 74 68 65 20 63   ┆ecl, searchname(name)); (* the c┆
0x00f9c0…00f9e0             6f 64 65 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 68 65 72 65 2c 20 61 6e 64 20 74 68 65 20 67   ┆ode is generated here, and the g┆
0x00f9e0…00fa00             65 6e 65 72 61 6c 20 6d 65 63 68 61 6e 69 73 6d 20 6f 66 0a 74 68 69 73 20 73 65 63 74 69 6f 6e   ┆eneral mechanism of this section┆
0x00fa00…00fa20 (4, 0, 6)   20 69 73 20 6e 6f 74 20 75 73 65 64 20 28 20 63 6f 64 65 77 6f 72 64 3d 6e 6f 63 6f 64 65 20 29   ┆ is not used ( codeword=nocode )┆
0x00fa20…00fa40             20 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 6e 6f 63 6f 64 65 3b 0a 0a 65 6e 64 3b 20 20   ┆  *) codeword:= cnocode;  end;  ┆
0x00fa40…00fa60             28 2a 20 39 34 31 20 2a 29 0a 0a 39 34 32 3a 20 20 28 2a 20 3c 77 69 74 68 20 76 61 72 69 61 62   ┆(* 941 *)  942:  (* <with variab┆
0x00fa60…00fa80             6c 65 3e 20 3a 3a 3d 20 3c 76 61 72 69 61 62 6c 65 3e 20 3c 61 73 3e 20 3c 6c 6f 63 61 6c 20 6e   ┆le> ::= <variable> <as> <local n┆
0x00fa80…00faa0             61 6d 65 3e 20 3c 74 79 70 65 20 63 6f 6c 6f 6e 3e 3c 74 79 70 65 3e 20 2a 29 0a 28 2a 20 63 6f   ┆ame> <type colon><type> *) (* co┆
0x00faa0…00fac0             64 65 3a 20 65 6e 64 6c 6f 63 61 6c 64 65 63 6c 61 72 65 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a   ┆de: endlocaldeclare *) codeword:┆
0x00fac0…00fae0             3d 20 63 65 6e 64 6c 6f 63 61 6c 64 65 63 6c 61 72 65 3b 0a 0a 39 34 33 3a 20 20 28 2a 20 3c 77   ┆= cendlocaldeclare;  943:  (* <w┆
0x00fae0…00fb00             69 74 68 20 76 61 72 69 61 62 6c 65 3e 20 3a 3a 3d 20 3c 76 61 72 69 61 62 6c 65 3e 20 3c 61 73   ┆ith variable> ::= <variable> <as┆
0x00fb00…00fb20             3e 20 3c 6c 6f 63 61 6c 20 6e 61 6d 65 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6e 6f 6c 6f   ┆> <local name>  *) (* code: nolo┆
0x00fb20…00fb40             63 61 6c 74 79 70 65 20 20 2a 29 0a 28 2a 20 6f 72 20 69 66 20 70 61 72 74 20 6f 66 20 6c 6f 63   ┆caltype  *) (* or if part of loc┆
0x00fb40…00fb60             6b 2f 6c 6f 63 6b 6d 65 73 20 73 74 61 74 65 6d 65 6e 74 20 73 69 6d 75 6c 61 74 65 20 61 6e 20   ┆k/lockmes statement simulate an ┆
0x00fb60…00fb80             69 6d 70 6c 69 63 69 74 20 62 75 66 66 65 72 20 74 79 70 65 0a 66 6f 6c 6c 6f 77 65 64 20 62 79   ┆implicit buffer type followed by┆
0x00fb80…00fba0             20 63 6f 64 65 3a 20 65 6e 64 6c 6f 63 61 6c 64 65 63 6c 61 72 65 20 2a 29 0a 69 66 20 73 61 76   ┆ code: endlocaldeclare *) if sav┆
0x00fba0…00fbc0             65 64 5f 6c 61 73 74 62 75 66 66 65 72 65 64 3c 3e 30 20 74 68 65 6e 0a 28 2a 20 6c 6f 63 6b 20   ┆ed_lastbuffered<>0 then (* lock ┆
0x00fbc0…00fbe0             6f 72 20 6c 6f 63 6b 6d 65 73 20 77 69 74 68 6f 75 74 20 72 65 74 79 70 69 6e 67 2c 20 70 72 6f   ┆or lockmes without retyping, pro┆
0x00fbe0…00fc00             64 75 63 65 20 63 6f 64 65 20 61 73 20 69 66 20 74 68 65 20 61 70 72 6f 70 72 69 61 74 65 0a 69   ┆duce code as if the apropriate i┆
0x00fc00…00fc20 (4, 0, 7)   6d 70 6c 69 63 69 74 20 74 79 70 65 20 68 61 64 20 62 65 65 6e 20 75 73 65 64 20 61 73 20 72 65   ┆mplicit type had been used as re┆
0x00fc20…00fc40             74 79 70 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 74   ┆type specification *) begin if t┆
0x00fc40…00fc60             79 70 65 62 75 66 66 65 72 5b 31 5d 3d 6f 72 64 28 63 6c 6f 63 6b 73 74 61 74 29 20 74 68 65 6e   ┆ypebuffer[1]=ord(clockstat) then┆
0x00fc60…00fc80             0a 62 65 67 69 6e 0a 65 6d 69 74 28 63 6e 65 77 74 79 70 65 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c   ┆ begin emit(cnewtype, nill, nill┆
0x00fc80…00fca0             2c 20 63 61 72 72 61 79 29 3b 0a 65 6d 69 74 28 63 6e 65 77 74 79 70 65 2c 20 6e 69 6c 6c 2c 20   ┆, carray); emit(cnewtype, nill, ┆
0x00fca0…00fcc0             6e 69 6c 6c 2c 20 63 73 75 62 72 61 6e 67 65 29 3b 0a 65 6d 69 74 28 63 6c 69 74 65 72 61 6c 2c   ┆nill, csubrange); emit(cliteral,┆
0x00fcc0…00fce0             20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 69 6e 74 65 67 65 72 29 3b 0a 65 6d 69 74 28 63 6e 6f   ┆ nill, nill, cinteger); emit(cno┆
0x00fce0…00fd00             63 6f 64 65 2c 20 31 20 28 2a 20 73 74 72 69 6e 67 6c 65 6e 67 74 68 20 2a 29 2c 20 6f 72 64 28   ┆code, 1 (* stringlength *), ord(┆
0x00fd00…00fd20             27 30 27 29 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28 63 69 64 2c 20 62 75 66 73 69 7a   ┆'0'), cnocode); emit(cid, bufsiz┆
0x00fd20…00fd40             65 5f 73 70 69 78 2c 20 6e 69 6c 6c 2c 20 63 62 65 67 69 6e 61 63 74 75 61 6c 29 3b 0a 66 6f 72   ┆e_spix, nill, cbeginactual); for┆
0x00fd40…00fd60             20 73 74 65 70 3a 3d 20 32 20 74 6f 20 73 61 76 65 64 5f 6c 61 73 74 62 75 66 66 65 72 65 64 20   ┆ step:= 2 to saved_lastbuffered ┆
0x00fd60…00fd80             64 6f 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 74 79 70 65 62 75 66 66 65 72 5b 73 74 65 70   ┆do emit(cnocode, typebuffer[step┆
0x00fd80…00fda0             5d 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28 63 65 6e 64 76 61 72 69   ┆], nill, cnocode); emit(cendvari┆
0x00fda0…00fdc0             61 62 6c 65 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 61 63 74 75 61 6c 70 61 72 61 6d 29 3b   ┆able, nill, nill, cactualparam);┆
0x00fdc0…00fde0             0a 65 6d 69 74 28 63 65 6e 64 61 63 74 75 61 6c 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 65   ┆ emit(cendactual, nill, nill, ce┆
0x00fde0…00fe00             6e 64 76 61 72 69 61 62 6c 65 29 3b 0a 65 6d 69 74 28 63 6c 69 74 65 72 61 6c 2c 20 6e 69 6c 6c   ┆ndvariable); emit(cliteral, nill┆
0x00fe00…00fe20 (4, 0, 8)   2c 20 6e 69 6c 6c 2c 20 63 69 6e 74 65 67 65 72 29 3b 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c   ┆, nill, cinteger); emit(cnocode,┆
0x00fe20…00fe40             20 31 20 28 2a 20 73 74 72 69 6e 67 6c 65 6e 67 74 68 20 2a 29 2c 20 6f 72 64 28 27 32 27 29 2c   ┆ 1 (* stringlength *), ord('2'),┆
0x00fe40…00fe60             20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28 63 73 74 61 72 2c 20 6e 69 6c 6c 2c 20 6e 69 6c   ┆ cnocode); emit(cstar, nill, nil┆
0x00fe60…00fe80             6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28 63 6c 69 74 65 72 61 6c 2c 20 6e 69 6c 6c   ┆l, cnocode); emit(cliteral, nill┆
0x00fe80…00fea0             2c 20 6e 69 6c 6c 2c 20 63 69 6e 74 65 67 65 72 29 3b 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c   ┆, nill, cinteger); emit(cnocode,┆
0x00fea0…00fec0             20 31 20 28 2a 20 73 74 72 69 6e 67 6c 65 6e 67 74 68 20 2a 29 2c 20 6f 72 64 28 27 31 27 29 2c   ┆ 1 (* stringlength *), ord('1'),┆
0x00fec0…00fee0             20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28 63 6d 69 6e 75 73 2c 20 6e 69 6c 6c 2c 20 6e 69   ┆ cnocode); emit(cminus, nill, ni┆
0x00fee0…00ff00             6c 6c 2c 20 63 65 6e 64 73 75 62 72 61 6e 67 65 29 3b 0a 65 6d 69 74 28 63 6e 65 77 74 79 70 65   ┆ll, cendsubrange); emit(cnewtype┆
0x00ff00…00ff20             2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 73 75 62 72 61 6e 67 65 29 3b 0a 65 6d 69 74 28 63   ┆, nill, nill, csubrange); emit(c┆
0x00ff20…00ff40             6c 69 74 65 72 61 6c 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 69 6e 74 65 67 65 72 29 3b 0a   ┆literal, nill, nill, cinteger); ┆
0x00ff40…00ff60             65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 31 20 28 2a 20 73 74 72 69 6e 67 6c 65 6e 67 74 68 20   ┆emit(cnocode, 1 (* stringlength ┆
0x00ff60…00ff80             2a 29 2c 20 6f 72 64 28 27 30 27 29 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28 63 6c 69   ┆*), ord('0'), cnocode); emit(cli┆
0x00ff80…00ffa0             74 65 72 61 6c 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 69 6e 74 65 67 65 72 29 3b 0a 65 6d   ┆teral, nill, nill, cinteger); em┆
0x00ffa0…00ffc0             69 74 28 63 6e 6f 63 6f 64 65 2c 20 33 20 28 2a 20 73 74 72 69 6e 67 6c 65 6e 67 74 68 20 2a 29   ┆it(cnocode, 3 (* stringlength *)┆
0x00ffc0…00ffe0             2c 20 6f 72 64 28 27 32 27 29 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28 63 6e 6f 63 6f   ┆, ord('2'), cnocode); emit(cnoco┆
0x00ffe0…010000             64 65 2c 20 6f 72 64 28 27 35 27 29 2c 20 6f 72 64 28 27 35 27 29 2c 20 63 65 6e 64 73 75 62 72   ┆de, ord('5'), ord('5'), cendsubr┆
0x010000…010020 (4, 0, 9)   61 6e 67 65 29 3b 0a 65 6d 69 74 28 63 65 6e 64 61 72 72 61 79 2c 20 6e 69 6c 6c 2c 20 6e 69 6c   ┆ange); emit(cendarray, nill, nil┆
0x010020…010040             6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6e 64 20 28 2a 20 6c 6f 63 6b 20 2a 29 0a 65 6c 73 65   ┆l, cnocode); end (* lock *) else┆
0x010040…010060             0a 69 66 20 74 79 70 65 62 75 66 66 65 72 5b 31 5d 3d 6f 72 64 28 63 6c 6f 63 6b 6d 65 73 73 74   ┆ if typebuffer[1]=ord(clockmesst┆
0x010060…010080             61 74 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 6d 69 74 28 63 6e 65 77 74 79 70 65 2c 20 6e 69   ┆at) then begin emit(cnewtype, ni┆
0x010080…0100a0             6c 6c 2c 20 6e 69 6c 6c 2c 20 63 61 72 72 61 79 29 3b 0a 65 6d 69 74 28 63 6e 65 77 74 79 70 65   ┆ll, nill, carray); emit(cnewtype┆
0x0100a0…0100c0             2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 73 75 62 72 61 6e 67 65 29 3b 0a 65 6d 69 74 28 63   ┆, nill, nill, csubrange); emit(c┆
0x0100c0…0100e0             69 64 2c 20 66 69 72 73 74 5f 73 70 69 78 2c 20 6e 69 6c 6c 2c 20 63 62 65 67 69 6e 61 63 74 75   ┆id, first_spix, nill, cbeginactu┆
0x0100e0…010100             61 6c 29 3b 0a 66 6f 72 20 73 74 65 70 3a 3d 20 32 20 74 6f 20 73 61 76 65 64 5f 6c 61 73 74 62   ┆al); for step:= 2 to saved_lastb┆
0x010100…010120             75 66 66 65 72 65 64 20 64 6f 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 74 79 70 65 62 75 66   ┆uffered do emit(cnocode, typebuf┆
0x010120…010140             66 65 72 5b 73 74 65 70 5d 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28   ┆fer[step], nill, cnocode); emit(┆
0x010140…010160             63 65 6e 64 76 61 72 69 61 62 6c 65 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 61 63 74 75 61   ┆cendvariable, nill, nill, cactua┆
0x010160…010180             6c 70 61 72 61 6d 29 3b 0a 65 6d 69 74 28 63 65 6e 64 61 63 74 75 61 6c 2c 20 6e 69 6c 6c 2c 20   ┆lparam); emit(cendactual, nill, ┆
0x010180…0101a0             6e 69 6c 6c 2c 20 63 65 6e 64 76 61 72 69 61 62 6c 65 29 3b 0a 65 6d 69 74 28 63 69 64 2c 20 6c   ┆nill, cendvariable); emit(cid, l┆
0x0101a0…0101c0             61 73 74 5f 73 70 69 78 2c 20 6e 69 6c 6c 2c 20 63 62 65 67 69 6e 61 63 74 75 61 6c 29 3b 0a 66   ┆ast_spix, nill, cbeginactual); f┆
0x0101c0…0101e0             6f 72 20 73 74 65 70 3a 3d 20 32 20 74 6f 20 73 61 76 65 64 5f 6c 61 73 74 62 75 66 66 65 72 65   ┆or step:= 2 to saved_lastbuffere┆
0x0101e0…010200             64 20 64 6f 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 74 79 70 65 62 75 66 66 65 72 5b 73 74   ┆d do emit(cnocode, typebuffer[st┆
0x010200…010220 (4, 0, 10)  65 70 5d 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28 63 65 6e 64 76 61   ┆ep], nill, cnocode); emit(cendva┆
0x010220…010240             72 69 61 62 6c 65 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 61 63 74 75 61 6c 70 61 72 61 6d   ┆riable, nill, nill, cactualparam┆
0x010240…010260             29 3b 0a 65 6d 69 74 28 63 65 6e 64 61 63 74 75 61 6c 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20   ┆); emit(cendactual, nill, nill, ┆
0x010260…010280             63 65 6e 64 76 61 72 69 61 62 6c 65 29 3b 0a 65 6d 69 74 28 63 65 6e 64 73 75 62 72 61 6e 67 65   ┆cendvariable); emit(cendsubrange┆
0x010280…0102a0             2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28 63 6e 65   ┆, nill, nill, cnocode); emit(cne┆
0x0102a0…0102c0             77 74 79 70 65 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 73 75 62 72 61 6e 67 65 29 3b 0a 65   ┆wtype, nill, nill, csubrange); e┆
0x0102c0…0102e0             6d 69 74 28 63 6c 69 74 65 72 61 6c 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 69 6e 74 65 67   ┆mit(cliteral, nill, nill, cinteg┆
0x0102e0…010300             65 72 29 3b 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 31 20 28 2a 20 73 74 72 69 6e 67 6c 65   ┆er); emit(cnocode, 1 (* stringle┆
0x010300…010320             6e 67 74 68 20 2a 29 2c 20 6f 72 64 28 27 30 27 29 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69   ┆ngth *), ord('0'), cnocode); emi┆
0x010320…010340             74 28 63 6c 69 74 65 72 61 6c 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 69 6e 74 65 67 65 72   ┆t(cliteral, nill, nill, cinteger┆
0x010340…010360             29 3b 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 33 20 28 2a 20 73 74 72 69 6e 67 6c 65 6e 67   ┆); emit(cnocode, 3 (* stringleng┆
0x010360…010380             74 68 20 2a 29 2c 20 6f 72 64 28 27 32 27 29 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28   ┆th *), ord('2'), cnocode); emit(┆
0x010380…0103a0             63 6e 6f 63 6f 64 65 2c 20 6f 72 64 28 27 35 27 29 2c 20 6f 72 64 28 27 35 27 29 2c 20 63 65 6e   ┆cnocode, ord('5'), ord('5'), cen┆
0x0103a0…0103c0             64 73 75 62 72 61 6e 67 65 29 3b 0a 65 6d 69 74 28 63 65 6e 64 61 72 72 61 79 2c 20 6e 69 6c 6c   ┆dsubrange); emit(cendarray, nill┆
0x0103c0…0103e0             2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6e 64 3b 20 28 2a 20 6c 6f 63 6b 6d 65   ┆, nill, cnocode); end; (* lockme┆
0x0103e0…010400             73 20 2a 29 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 6c 6f 63 61 6c 64 65 63 6c 61 72 65   ┆s *) codeword:= cendlocaldeclare┆
0x010400…010420 (4, 0, 11)  3b 0a 65 6e 64 20 28 2a 20 6c 6f 63 6b 20 6f 72 20 6c 6f 63 6b 6d 65 73 20 77 69 74 68 6f 75 74   ┆; end (* lock or lockmes without┆
0x010420…010440             20 72 65 74 79 70 69 6e 67 20 2a 29 0a 65 6c 73 65 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 6e 6f   ┆ retyping *) else codeword:= cno┆
0x010440…010460             6c 6f 63 61 6c 74 79 70 65 3b 0a 0a 39 34 34 3a 20 20 28 2a 20 3c 73 74 61 74 65 6d 65 6e 74 3e   ┆localtype;  944:  (* <statement>┆
0x010460…010480             20 3a 3a 3d 20 3c 77 69 74 68 20 73 74 61 72 74 3e 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63   ┆ ::= <with start> <start labelsc┆
0x010480…0104a0             6f 70 65 3e 20 3c 73 74 61 74 65 6d 65 6e 74 3e 20 3c 65 6e 64 20 6c 61 62 65 6c 73 63 6f 70 65   ┆ope> <statement> <end labelscope┆
0x0104a0…0104c0             3e 20 20 20 2a 29 0a 28 2a 20 3c 62 61 6c 61 6e 63 65 64 20 73 74 61 74 65 6d 65 6e 74 3e 20 3a   ┆>   *) (* <balanced statement> :┆
0x0104c0…0104e0             3a 3d 20 3c 77 69 74 68 20 73 74 61 72 74 3e 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63 6f 70   ┆:= <with start> <start labelscop┆
0x0104e0…010500             65 3e 20 3c 62 61 6c 61 6e 63 65 64 20 73 74 61 74 65 6d 65 6e 74 3e 20 3c 65 6e 64 20 6c 61 62   ┆e> <balanced statement> <end lab┆
0x010500…010520             65 6c 73 63 6f 70 65 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 20 65 6e 64 77 69 74 68 20 2a 29   ┆elscope> *) (* code:  endwith *)┆
0x010520…010540             0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 77 69 74 68 3b 0a 0a 39 34 38 3a 20 20 28 2a 20   ┆ codeword:= cendwith;  948:  (* ┆
0x010540…010560             3c 63 68 61 6e 6e 65 6c 20 64 6f 3e 20 3a 3a 3d 20 3c 63 68 61 6e 6e 65 6c 3e 20 3c 76 61 72 69   ┆<channel do> ::= <channel> <vari┆
0x010560…010580             61 62 6c 65 3e 20 64 6f 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 63 68 61 6e 76 61 72 20 20 2a 29   ┆able> do *) (* code: chanvar  *)┆
0x010580…0105a0             0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 63 68 61 6e 76 61 72 3b 0a 0a 39 34 39 3a 20 20 28 2a 20   ┆ codeword:= cchanvar;  949:  (* ┆
0x0105a0…0105c0             3c 63 68 61 6e 6e 65 6c 3e 20 3a 3a 3d 20 63 68 61 6e 6e 65 6c 20 20 2a 29 0a 28 2a 20 63 6f 64   ┆<channel> ::= channel  *) (* cod┆
0x0105c0…0105e0             65 3a 20 63 68 61 6e 6e 65 6c 73 74 61 74 20 2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64   ┆e: channelstat *) begin codeword┆
0x0105e0…010600             3a 3d 20 63 63 68 61 6e 6e 65 6c 73 74 61 74 3b 0a 70 75 73 68 5f 72 65 70 65 74 69 74 69 76 65   ┆:= cchannelstat; push_repetitive┆
0x010600…010620 (4, 0, 12)  5f 73 74 61 74 65 6d 65 6e 74 28 63 6f 64 65 77 6f 72 64 29 3b 0a 65 6e 64 3b 0a 20 0a 39 35 30   ┆_statement(codeword); end;   950┆
0x010620…010640             3a 20 20 28 2a 20 3c 77 69 74 68 20 73 74 61 72 74 3e 20 3a 3a 3d 20 3c 77 69 74 68 3e 20 3c 77   ┆:  (* <with start> ::= <with> <w┆
0x010640…010660             69 74 68 20 76 61 72 69 61 62 6c 65 20 6c 69 73 74 3e 20 64 6f 20 20 2a 29 0a 28 2a 20 3c 6c 6f   ┆ith variable list> do  *) (* <lo┆
0x010660…010680             63 6b 20 73 74 61 72 74 3e 20 3a 3a 3d 20 3c 6c 6f 63 6b 3e 20 3c 77 69 74 68 20 76 61 72 69 61   ┆ck start> ::= <lock> <with varia┆
0x010680…0106a0             62 6c 65 3e 20 64 6f 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 6f 20 20 20 2a 29 0a 62 65 67 69   ┆ble> do *) (* code: do   *) begi┆
0x0106a0…0106c0             6e 0a 73 61 76 65 64 5f 6c 61 73 74 62 75 66 66 65 72 65 64 3a 3d 20 30 3b 0a 63 6f 64 65 77 6f   ┆n saved_lastbuffered:= 0; codewo┆
0x0106c0…0106e0             72 64 3a 3d 20 63 64 6f 3b 0a 65 6e 64 3b 0a 0a 39 35 31 2c 20 20 28 2a 20 3c 73 74 61 74 65 6d   ┆rd:= cdo; end;  951,  (* <statem┆
0x0106e0…010700             65 6e 74 3e 20 3a 3a 3d 20 63 6f 6e 74 69 6e 75 65 6c 6f 6f 70 20 20 20 2a 29 0a 39 35 33 3a 20   ┆ent> ::= continueloop   *) 953: ┆
0x010700…010720             20 28 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 20 65 78 69 74 6c 6f 6f 70 20 20 20 20   ┆ (*             !   exitloop    ┆
0x010720…010740             20 20 20 2a 29 0a 20 20 28 2a 20 3c 62 61 6c 61 6e 63 64 65 20 73 74 61 74 65 6d 65 6e 74 3e 20   ┆   *)   (* <balancde statement> ┆
0x010740…010760             3a 3a 3d 20 63 6f 6e 74 69 6e 75 65 6c 6f 6f 70 20 2a 29 0a 20 20 28 2a 20 20 20 20 20 20 20 20   ┆::= continueloop *)   (*        ┆
0x010760…010780             20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 20 65 78 69 74 6c 6f 6f 70 20 20 20 20 20 2a   ┆              !   exitloop     *┆
0x010780…0107a0             29 0a 28 2a 20 63 6f 64 65 3a 20 63 6f 6e 74 69 6e 75 65 2f 65 78 69 74 2d 6c 6f 6f 70 73 74 61   ┆) (* code: continue/exit-loopsta┆
0x0107a0…0107c0             74 2c 20 70 6f 73 73 69 62 6c 79 20 70 72 65 63 65 65 64 65 64 20 62 79 20 65 78 69 74 20 6f 66   ┆t, possibly preceeded by exit of┆
0x0107c0…0107e0             20 6c 6f 63 6b 20 61 6e 64 20 6f 72 20 63 68 61 6e 6e 65 6c 20 2a 29 0a 62 65 67 69 6e 0a 69 66   ┆ lock and or channel *) begin if┆
0x0107e0…010800             20 70 72 6f 64 3d 39 35 31 20 74 68 65 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 63 6f 6e 74 6c   ┆ prod=951 then codeword:= ccontl┆
0x010800…010820 (4, 0, 13)  6f 6f 70 73 74 61 74 0a 65 6c 73 65 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 78 69 74 6c 6f 6f   ┆oopstat else codeword:= cexitloo┆
0x010820…010840             70 73 74 61 74 3b 0a 73 74 61 74 5f 73 74 61 63 6b 3a 3d 20 73 74 61 74 65 6d 65 6e 74 5f 73 74   ┆pstat; stat_stack:= statement_st┆
0x010840…010860             61 63 6b 5f 74 6f 70 3b 0a 77 68 69 6c 65 20 28 73 74 61 74 5f 73 74 61 63 6b 5e 2e 73 74 61 74   ┆ack_top; while (stat_stack^.stat┆
0x010860…010880             5f 6b 69 6e 64 3d 63 6c 6f 63 6b 73 74 61 74 29 20 6f 72 20 28 73 74 61 74 5f 73 74 61 63 6b 5e   ┆_kind=clockstat) or (stat_stack^┆
0x010880…0108a0             2e 73 74 61 74 5f 6b 69 6e 64 3d 63 63 68 61 6e 6e 65 6c 73 74 61 74 29 20 64 6f 0a 62 65 67 69   ┆.stat_kind=cchannelstat) do begi┆
0x0108a0…0108c0             6e 0a 65 6d 69 74 28 63 65 78 69 74 6c 6f 63 6b 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 73 74   ┆n emit(cexitlock, nill, nill, st┆
0x0108c0…0108e0             61 74 5f 73 74 61 63 6b 5e 2e 73 74 61 74 5f 6b 69 6e 64 29 3b 0a 73 74 61 74 5f 73 74 61 63 6b   ┆at_stack^.stat_kind); stat_stack┆
0x0108e0…010900             3a 3d 20 73 74 61 74 5f 73 74 61 63 6b 5e 2e 66 6f 72 6d 65 72 5f 73 74 61 74 3b 0a 65 6e 64 3b   ┆:= stat_stack^.former_stat; end;┆
0x010900…010920             0a 69 66 20 73 74 61 74 5f 73 74 61 63 6b 5e 2e 66 6f 72 6d 65 72 5f 73 74 61 74 3d 6e 69 6c 20   ┆ if stat_stack^.former_stat=nil ┆
0x010920…010940             28 2a 20 62 6f 74 74 6f 6d 20 65 6c 65 6d 65 6e 74 2c 20 69 2e 65 2e 20 6e 6f 74 20 69 6e 73 69   ┆(* bottom element, i.e. not insi┆
0x010940…010960             64 65 20 72 65 70 65 74 69 74 69 76 65 20 73 74 61 74 65 6d 65 6e 74 20 2a 29 20 74 68 65 6e 0a   ┆de repetitive statement *) then ┆
0x010960…010980             6d 61 72 6b 65 72 72 6f 72 28 31 30 39 29 3b 20 28 2a 20 6e 6f 74 20 69 6e 73 69 64 65 20 72 65   ┆markerror(109); (* not inside re┆
0x010980…0109a0             70 65 74 69 74 69 76 65 20 73 74 61 74 65 6d 65 6e 74 20 2a 29 0a 63 6f 64 65 77 6f 72 64 32 3a   ┆petitive statement *) codeword2:┆
0x0109a0…0109c0             3d 20 73 74 61 74 5f 73 74 61 63 6b 5e 2e 73 74 61 74 5f 6b 69 6e 64 3b 0a 65 6e 64 3b 20 28 2a   ┆= stat_stack^.stat_kind; end; (*┆
0x0109c0…0109e0             20 63 6f 6e 74 69 6e 75 65 2d 2f 65 78 69 74 2d 6c 6f 6f 70 73 74 61 74 20 2a 29 0a 0a 39 35 32   ┆ continue-/exit-loopstat *)  952┆
0x0109e0…010a00             3a 20 20 28 2a 20 3c 73 74 61 74 65 6d 65 6e 74 3e 20 3a 3a 3d 20 65 78 69 74 20 2a 29 0a 20 20   ┆:  (* <statement> ::= exit *)   ┆
0x010a00…010a20 (4, 0, 14)  28 2a 20 3c 62 61 6c 61 6e 63 65 64 20 73 74 61 74 65 6d 65 6e 74 3e 20 3a 3a 3d 20 65 78 69 74   ┆(* <balanced statement> ::= exit┆
0x010a20…010a40             20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 78 69 74 73 74 61 74 20 2c 20 70 6f 73 73 69 62 6c 79   ┆ *) (* code: exitstat , possibly┆
0x010a40…010a60             20 70 72 65 63 65 65 64 65 64 20 62 79 20 65 78 69 74 6c 6f 63 6b 2f 65 78 69 74 63 68 61 6e 6e   ┆ preceeded by exitlock/exitchann┆
0x010a60…010a80             65 6c 20 2a 29 0a 62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 78 69 74 73 74 61 74   ┆el *) begin codeword:= cexitstat┆
0x010a80…010aa0             3b 0a 73 74 61 74 5f 73 74 61 63 6b 3a 3d 20 73 74 61 74 65 6d 65 6e 74 5f 73 74 61 63 6b 5f 74   ┆; stat_stack:= statement_stack_t┆
0x010aa0…010ac0             6f 70 3b 0a 77 68 69 6c 65 20 73 74 61 74 5f 73 74 61 63 6b 3c 3e 6e 69 6c 20 64 6f 0a 77 69 74   ┆op; while stat_stack<>nil do wit┆
0x010ac0…010ae0             68 20 73 74 61 74 5f 73 74 61 63 6b 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 28 73 74 61 74 5f   ┆h stat_stack^ do begin if (stat_┆
0x010ae0…010b00             6b 69 6e 64 3d 63 6c 6f 63 6b 73 74 61 74 29 20 6f 72 20 28 73 74 61 74 5f 6b 69 6e 64 3d 63 63   ┆kind=clockstat) or (stat_kind=cc┆
0x010b00…010b20             68 61 6e 6e 65 6c 73 74 61 74 29 20 74 68 65 6e 0a 65 6d 69 74 28 63 65 78 69 74 6c 6f 63 6b 2c   ┆hannelstat) then emit(cexitlock,┆
0x010b20…010b40             20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 73 74 61 74 5f 6b 69 6e 64 29 3b 0a 73 74 61 74 5f 73 74   ┆ nill, nill, stat_kind); stat_st┆
0x010b40…010b60             61 63 6b 3a 3d 20 66 6f 72 6d 65 72 5f 73 74 61 74 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20   ┆ack:= former_stat; end; end; (* ┆
0x010b60…010b80             65 78 69 74 20 2a 29 0a 0a 39 35 35 3a 20 20 28 2a 20 3c 75 6e 69 74 3e 20 3a 3a 3d 20 3f 20 2a   ┆exit *)  955:  (* <unit> ::= ? *┆
0x010b80…010ba0             29 0a 28 2a 20 63 6f 64 65 3a 20 73 6b 69 70 70 61 72 61 6d 20 2a 29 0a 63 6f 64 65 77 6f 72 64   ┆) (* code: skipparam *) codeword┆
0x010ba0…010bc0             3a 3d 20 63 73 6b 69 70 70 61 72 61 6d 3b 0a 0a 39 35 36 3a 20 28 2a 20 3c 6c 6f 6f 70 3e 20 3a   ┆:= cskipparam;  956: (* <loop> :┆
0x010bc0…010be0             3a 3d 20 6c 6f 6f 70 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 6c 6f 6f 70 73 74 61 74 20 2a 29 0a   ┆:= loop *) (* code: loopstat *) ┆
0x010be0…010c00             62 65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 6c 6f 6f 70 73 74 61 74 3b 0a 70 75 73 68   ┆begin codeword:= cloopstat; push┆
0x010c00…010c20 (4, 0, 15)  5f 72 65 70 65 74 69 74 69 76 65 5f 73 74 61 74 65 6d 65 6e 74 28 63 6f 64 65 77 6f 72 64 29 3b   ┆_repetitive_statement(codeword);┆
0x010c20…010c40             0a 65 6e 64 3b 0a 0a 39 35 37 3a 20 28 2a 20 3c 6c 6f 6f 70 20 73 74 61 74 65 6d 65 6e 74 3e 20   ┆ end;  957: (* <loop statement> ┆
0x010c40…010c60             3a 3a 3d 20 3c 6c 6f 6f 70 3e 20 3c 73 74 61 74 65 6d 65 6e 74 20 6c 69 73 74 3e 20 65 6e 64 6c   ┆::= <loop> <statement list> endl┆
0x010c60…010c80             6f 6f 70 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 6c 6f 6f 70 73 74 61 74 20 2a 29 0a 62   ┆oop *) (* code: endloopstat *) b┆
0x010c80…010ca0             65 67 69 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 6e 64 6c 6f 6f 70 73 74 61 74 3b 0a 28 2a   ┆egin codeword:= cendloopstat; (*┆
0x010ca0…010cc0             20 70 6f 70 5f 72 65 70 65 74 69 74 69 76 65 5f 73 74 61 74 65 6d 65 6e 74 20 2a 29 0a 73 74 61   ┆ pop_repetitive_statement *) sta┆
0x010cc0…010ce0             74 65 6d 65 6e 74 5f 73 74 61 63 6b 5f 74 6f 70 3a 3d 20 73 74 61 74 65 6d 65 6e 74 5f 73 74 61   ┆tement_stack_top:= statement_sta┆
0x010ce0…010d00             63 6b 5f 74 6f 70 5e 2e 66 6f 72 6d 65 72 5f 73 74 61 74 3b 0a 65 6e 64 3b 0a 0a 39 36 35 2c 20   ┆ck_top^.former_stat; end;  965, ┆
0x010d00…010d20             20 28 2a 20 3c 6c 6f 63 6b 3e 20 3a 3a 3d 20 6c 6f 63 6b 20 20 20 2a 29 0a 39 36 36 3a 20 20 28   ┆ (* <lock> ::= lock   *) 966:  (┆
0x010d20…010d40             2a 20 20 20 20 20 20 20 20 21 20 20 20 6c 6f 63 6b 6d 65 73 20 2a 29 0a 28 2a 20 63 6f 64 65 3a   ┆*        !   lockmes *) (* code:┆
0x010d40…010d60             20 6c 6f 63 6b 73 74 61 74 2f 6c 6f 63 6b 6d 65 73 73 74 61 74 20 2a 29 0a 62 65 67 69 6e 0a 74   ┆ lockstat/lockmesstat *) begin t┆
0x010d60…010d80             79 70 65 62 75 66 66 65 72 66 6c 61 67 3a 3d 20 74 72 75 65 3b 20 28 2a 20 75 73 65 20 74 68 65   ┆ypebufferflag:= true; (* use the┆
0x010d80…010da0             20 74 79 70 65 62 75 66 66 65 72 20 74 6f 20 73 61 76 65 20 74 68 65 20 63 6f 64 65 20 66 6f 72   ┆ typebuffer to save the code for┆
0x010da0…010dc0             20 74 68 65 20 72 65 66 65 72 65 6e 63 65 0a 76 61 72 69 61 62 6c 65 20 6f 66 20 74 68 65 20 6c   ┆ the reference variable of the l┆
0x010dc0…010de0             6f 63 6b 20 73 74 61 74 65 6d 65 6e 74 2c 20 75 73 65 64 20 66 6f 72 20 73 69 6d 75 6c 61 74 69   ┆ock statement, used for simulati┆
0x010de0…010e00             6f 6e 20 6f 66 20 61 6e 20 69 6d 70 6c 69 63 69 74 20 74 79 70 65 20 69 6e 0a 63 61 73 65 20 6f   ┆on of an implicit type in case o┆
0x010e00…010e20 (4, 1, 1)   66 20 6c 6f 63 6b 2f 6c 6f 63 6b 6d 65 73 20 77 69 74 68 6f 75 74 20 72 65 74 79 70 69 6e 67 20   ┆f lock/lockmes without retyping ┆
0x010e20…010e40             2a 29 0a 69 66 20 70 72 6f 64 3d 39 36 35 20 74 68 65 6e 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63   ┆*) if prod=965 then codeword:= c┆
0x010e40…010e60             6c 6f 63 6b 73 74 61 74 0a 65 6c 73 65 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63 6c 6f 63 6b 6d 65   ┆lockstat else codeword:= clockme┆
0x010e60…010e80             73 73 74 61 74 3b 0a 70 75 73 68 5f 72 65 70 65 74 69 74 69 76 65 5f 73 74 61 74 65 6d 65 6e 74   ┆sstat; push_repetitive_statement┆
0x010e80…010ea0             28 63 6c 6f 63 6b 73 74 61 74 29 3b 20 28 2a 20 70 75 73 68 65 64 20 77 69 74 68 20 73 61 6d 65   ┆(clockstat); (* pushed with same┆
0x010ea0…010ec0             20 6b 69 6e 64 20 2a 29 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 20 28 2a 20 63 61 73 65 20 2e 2e 2e   ┆ kind *) end;  end;  (* case ...┆
0x010ec0…010ee0             2e 20 2a 29 0a 0a 28 2a 20 6e 6f 77 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20   ┆. *)  (* now the parameters for ┆
0x010ee0…010f00             74 68 65 20 65 6d 69 74 20 63 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 73 65 74 20 75 70 20 2a 29   ┆the emit call has been set up *)┆
0x010f00…010f20             0a 65 6d 69 74 28 20 63 6f 64 65 77 6f 72 64 2c 20 70 61 72 61 6d 31 2c 20 6e 69 6c 6c 2c 20 63   ┆ emit( codeword, param1, nill, c┆
0x010f20…010f40             6f 64 65 77 6f 72 64 32 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 73 65 63 74 69 6f 6e 20 39 20 20 2a   ┆odeword2);  end; (* section 9  *┆
0x010f40…010f60             29 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 72 6f 75 74 69 6e 65 64 65 63 6c 28 20 72   ┆)   procedure emitroutinedecl( r┆
0x010f60…010f80             6f 75 74 69 6e 65 5f 6b 69 6e 64 20 3a 20 63 6f 64 65 73 3b 20 6e 61 6d 65 20 3a 20 6e 61 6d 65   ┆outine_kind : codes; name : name┆
0x010f80…010fa0             68 65 61 64 70 74 72 29 3b 0a 28 2a 20 65 6d 69 74 3a 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 28   ┆headptr); (* emit: declaration (┆
0x010fa0…010fc0             20 72 6f 75 74 69 6e 65 5f 6b 69 6e 64 20 29 0a 2e 20 20 20 20 20 20 20 20 6c 69 74 65 72 61 6c   ┆ routine_kind ) .        literal┆
0x010fc0…010fe0             28 20 74 65 78 74 20 6c 65 6e 67 74 68 29 20 27 6e 61 6d 65 27 0a 2e 20 20 20 20 20 20 20 20 64   ┆( text length) 'name' .        d┆
0x010fe0…011000             65 63 6c 61 72 65 28 20 73 70 69 78 20 29 0a 2a 29 0a 62 65 67 69 6e 0a 65 6d 69 74 28 63 64 65   ┆eclare( spix ) *) begin emit(cde┆
0x011000…011020 (4, 1, 2)   63 6c 61 72 61 74 69 6f 6e 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 72 6f 75 74 69 6e 65 5f 6b   ┆claration, nill, nill, routine_k┆
0x011020…011040             69 6e 64 29 3b 0a 6c 69 74 65 72 61 6c 73 28 20 34 30 31 20 28 2a 20 69 2e 65 2e 20 74 65 78 74   ┆ind); literals( 401 (* i.e. text┆
0x011040…011060             20 2a 29 20 20 20 29 3b 0a 65 6d 69 74 64 65 63 6c 61 72 65 28 64 65 63 6c 2c 20 73 65 61 72 63   ┆ *)   ); emitdeclare(decl, searc┆
0x011060…011080             68 6e 61 6d 65 28 20 6e 61 6d 65 20 29 20 29 3b 0a 65 6e 64 3b 20 28 2a 20 65 6d 69 74 72 6f 75   ┆hname( name ) ); end; (* emitrou┆
0x011080…0110a0             74 69 6e 65 64 65 63 6c 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 72 6f 63 65 64 75 72   ┆tinedecl *)   procedure procedur┆
0x0110a0…0110c0             65 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 28 2a 20 73 65 63 74 69 6f 6e 20 31 30 20 2a 29 0a 0a   ┆edeclaration; (* section 10 *)  ┆
0x0110c0…0110e0             28 2a 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 63 6f 76 65 72 73 2d 69 6e 20 61 64 64 69 74 69   ┆(* this section covers-in additi┆
0x0110e0…011100             6f 6e 20 74 6f 20 70 72 6f 63 65 64 75 72 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2d 74 68 65   ┆on to procedure declarations-the┆
0x011100…011120             0a 70 61 72 73 69 6e 67 20 6f 66 20 3c 66 6f 72 6d 61 6c 20 70 61 72 61 6d 65 74 65 72 73 3e 20   ┆ parsing of <formal parameters> ┆
0x011120…011140             61 6e 64 20 3c 62 6c 6f 63 6b 3e 20 61 6e 64 20 3c 64 65 63 6c 61 72 61 74 69 6f 6e 73 3e 20 2a   ┆and <block> and <declarations> *┆
0x011140…011160             29 0a 0a 76 61 72 0a 6e 61 6d 65 20 3a 20 6e 61 6d 65 68 65 61 64 70 74 72 3b 0a 63 6f 64 65 77   ┆)  var name : nameheadptr; codew┆
0x011160…011180             6f 72 64 20 3a 20 63 6f 64 65 73 3b 0a 73 74 65 70 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65   ┆ord : codes; step : integer;  be┆
0x011180…0111a0             67 69 6e 0a 63 61 73 65 20 70 72 6f 64 20 6f 66 0a 31 30 30 31 3a 20 20 28 2a 20 3c 73 70 69 78   ┆gin case prod of 1001:  (* <spix┆
0x0111a0…0111c0             20 6e 61 6d 65 3e 20 3a 3a 3d 20 6e 61 6d 65 20 20 20 2a 29 0a 28 2a 20 61 63 74 69 6f 6e 3a 20   ┆ name> ::= name   *) (* action: ┆
0x0111c0…0111e0             70 69 63 6b 20 75 70 20 6e 61 6d 65 20 61 6e 64 20 72 65 6d 65 6d 62 65 72 20 6e 61 6d 65 20 68   ┆pick up name and remember name h┆
0x0111e0…011200             65 61 64 20 69 6e 20 20 20 61 6c 69 61 73 20 6e 61 6d 65 20 20 20 20 20 2a 29 0a 61 6c 69 61 73   ┆ead in   alias name     *) alias┆
0x011200…011220 (4, 1, 3)   5f 6e 61 6d 65 3a 3d 20 72 65 61 64 6e 61 6d 65 3b 0a 0a 0a 31 30 30 32 3a 20 20 28 2a 20 3c 72   ┆_name:= readname;   1002:  (* <r┆
0x011220…011240             6f 75 74 69 6e 65 20 68 65 61 64 69 6e 67 3e 20 3a 3a 3d 20 3c 70 72 6f 63 65 64 75 72 65 20 68   ┆outine heading> ::= <procedure h┆
0x011240…011260             65 61 64 69 6e 67 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 70 72 6f 63 64 65 63 6c 20   ┆eading> *) (* code: endprocdecl ┆
0x011260…011280             2a 29 0a 62 65 67 69 6e 0a 65 6d 69 74 63 6f 64 65 28 63 65 6e 64 70 72 6f 63 64 65 63 6c 29 3b   ┆*) begin emitcode(cendprocdecl);┆
0x011280…0112a0             0a 65 6e 64 3b 0a 0a 31 30 30 33 3a 20 20 28 2a 20 3c 70 72 6f 63 65 64 75 72 65 20 6e 61 6d 65   ┆ end;  1003:  (* <procedure name┆
0x0112a0…0112c0             3e 20 3a 3a 3d 20 6e 61 6d 65 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 65 63 6c 61 72 61 74   ┆> ::= name  *) (* code: declarat┆
0x0112c0…0112e0             69 6f 6e 28 20 70 72 6f 63 65 64 75 72 65 20 29 20 6c 69 74 65 72 61 6c 28 20 74 65 78 74 20 6c   ┆ion( procedure ) literal( text l┆
0x0112e0…011300             65 6e 67 74 68 29 20 27 6e 61 6d 65 27 20 20 64 65 63 6c 61 72 65 28 20 73 70 69 78 20 29 20 2a   ┆ength) 'name'  declare( spix ) *┆
0x011300…011320             29 0a 62 65 67 69 6e 0a 6e 61 6d 65 3a 3d 20 72 65 61 64 6e 61 6d 65 3b 0a 65 6d 69 74 72 6f 75   ┆) begin name:= readname; emitrou┆
0x011320…011340             74 69 6e 65 64 65 63 6c 28 20 63 70 72 6f 63 65 64 75 72 65 2c 20 6e 61 6d 65 20 29 3b 0a 65 6e   ┆tinedecl( cprocedure, name ); en┆
0x011340…011360             64 3b 0a 0a 31 30 30 34 3a 20 20 28 2a 20 3c 70 72 6f 63 65 64 75 72 65 20 6e 61 6d 65 3e 20 3a   ┆d;  1004:  (* <procedure name> :┆
0x011360…011380             3a 3d 20 3c 73 70 69 78 20 6e 61 6d 65 3e 3d 6e 61 6d 65 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20   ┆:= <spix name>=name *) (* code: ┆
0x011380…0113a0             64 65 63 6c 61 72 61 74 69 6f 6e 20 64 65 63 6c 61 72 65 2c 20 20 20 20 6e 62 3a 20 6e 61 6d 65   ┆declaration declare,    nb: name┆
0x0113a0…0113c0             20 6c 69 74 65 72 61 6c 20 69 73 20 6e 61 6d 65 20 62 75 74 20 73 70 69 78 20 69 73 0a 66 72 6f   ┆ literal is name but spix is fro┆
0x0113c0…0113e0             6d 20 20 73 70 69 78 20 6e 61 6d 65 20 20 21 21 20 20 2a 29 0a 65 6d 69 74 72 6f 75 74 69 6e 65   ┆m  spix name  !!  *) emitroutine┆
0x0113e0…011400             64 65 63 6c 28 20 63 70 72 6f 63 65 64 75 72 65 2c 20 61 6c 69 61 73 5f 6e 61 6d 65 20 29 3b 0a   ┆decl( cprocedure, alias_name ); ┆
0x011400…011420 (4, 1, 4)   0a 31 30 30 36 3a 20 20 28 2a 20 3c 70 61 72 61 6d 65 74 65 72 20 64 65 73 63 72 69 70 74 69 6f   ┆ 1006:  (* <parameter descriptio┆
0x011420…011440             6e 3e 20 3a 3a 3d 20 3c 76 61 72 20 6f 72 20 76 61 6c 75 65 3e 20 3c 70 61 72 61 6d 65 74 65 72   ┆n> ::= <var or value> <parameter┆
0x011440…011460             20 67 72 6f 75 70 3e 0a 20 20 3c 74 79 70 65 20 63 6f 6c 6f 6e 3e 20 3c 74 79 70 65 3e 20 20 2a   ┆ group>   <type colon> <type>  *┆
0x011460…011480             29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 66 6f 72 6d 61 6c 6c 69 73 74 20 2a 29 0a 65 6d 69 74   ┆) (* code: endformallist *) emit┆
0x011480…0114a0             63 6f 64 65 28 63 65 6e 64 66 6f 72 6d 61 6c 6c 69 73 74 29 3b 0a 0a 31 30 30 37 3a 20 20 28 2a   ┆code(cendformallist);  1007:  (*┆
0x0114a0…0114c0             20 3c 66 6f 72 6d 61 6c 20 70 61 72 61 6d 65 74 65 72 73 3e 20 3a 3a 3d 20 3c 69 6e 69 74 20 66   ┆ <formal parameters> ::= <init f┆
0x0114c0…0114e0             6f 72 6d 61 6c 3e 20 2a 29 0a 28 2a 20 20 20 20 20 20 20 20 20 21 20 3c 69 6e 69 74 20 66 6f 72   ┆ormal> *) (*         ! <init for┆
0x0114e0…011500             6d 61 6c 3e 20 28 20 3c 66 6f 72 6d 61 6c 20 6c 69 73 74 3e 20 29 20 20 20 20 2a 29 0a 28 2a 20   ┆mal> ( <formal list> )    *) (* ┆
0x011500…011520             63 6f 64 65 3a 20 65 6e 64 66 6f 72 6d 61 6c 20 20 2a 29 0a 69 66 20 6e 6f 74 20 72 65 64 75 63   ┆code: endformal  *) if not reduc┆
0x011520…011540             65 64 5f 69 6e 74 65 72 6d 65 64 69 61 74 65 5f 6c 61 6e 67 75 61 67 65 20 74 68 65 6e 0a 65 6d   ┆ed_intermediate_language then em┆
0x011540…011560             69 74 63 6f 64 65 28 63 65 6e 64 66 6f 72 6d 61 6c 29 3b 0a 0a 31 30 30 38 3a 20 20 28 2a 20 3c   ┆itcode(cendformal);  1008:  (* <┆
0x011560…011580             70 61 72 61 6d 65 74 65 72 20 67 72 6f 75 70 3e 20 3a 3a 3d 20 6e 61 6d 65 20 20 2a 29 0a 28 2a   ┆parameter group> ::= name  *) (*┆
0x011580…0115a0             20 20 20 20 20 20 20 20 20 21 20 3c 70 61 72 61 6d 65 74 65 72 20 67 72 6f 75 70 3e 20 2c 20 6e   ┆         ! <parameter group> , n┆
0x0115a0…0115c0             61 6d 65 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 65 63 6c 61 72 65 6c 69 73 74 28 20 73 70   ┆ame  *) (* code: declarelist( sp┆
0x0115c0…0115e0             69 78 20 29 20 2a 29 0a 62 65 67 69 6e 0a 6e 61 6d 65 3a 3d 20 72 65 61 64 6e 61 6d 65 3b 0a 65   ┆ix ) *) begin name:= readname; e┆
0x0115e0…011600             6d 69 74 64 65 63 6c 61 72 65 28 64 65 63 6c 6c 69 73 74 2c 20 73 65 61 72 63 68 6e 61 6d 65 28   ┆mitdeclare(decllist, searchname(┆
0x011600…011620 (4, 1, 5)   6e 61 6d 65 29 29 3b 0a 65 6e 64 3b 0a 0a 31 30 30 39 3a 20 20 28 2a 20 3c 64 65 63 6c 61 72 61   ┆name)); end;  1009:  (* <declara┆
0x011620…011640             74 69 6f 6e 73 3e 20 3a 3a 3d 20 3c 62 65 67 69 6e 20 6c 65 76 65 6c 3e 20 3c 64 65 63 6c 73 3e   ┆tions> ::= <begin level> <decls>┆
0x011640…011660             20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 20   ┆   *) (* code: enddeclarations  ┆
0x011660…011680             2a 29 0a 62 65 67 69 6e 0a 69 66 20 63 6f 6e 74 65 78 74 70 61 72 73 69 6e 67 20 74 68 65 6e 20   ┆*) begin if contextparsing then ┆
0x011680…0116a0             4c 6f 63 61 6c 6c 69 6e 65 6e 75 6d 62 65 72 20 3a 3d 20 2d 31 20 65 6c 73 65 20 4c 6f 63 61 6c   ┆Locallinenumber := -1 else Local┆
0x0116a0…0116c0             6c 69 6e 65 4e 75 6d 62 65 72 20 3a 3d 20 30 3b 0a 65 6d 69 74 63 6f 64 65 28 63 65 6e 64 64 65   ┆lineNumber := 0; emitcode(cendde┆
0x0116c0…0116e0             63 6c 61 72 61 74 69 6f 6e 73 29 3b 0a 65 6e 64 3b 0a 0a 31 30 31 30 3a 20 20 28 2a 20 3c 62 65   ┆clarations); end;  1010:  (* <be┆
0x0116e0…011700             67 69 6e 20 6c 65 76 65 6c 3e 20 3a 3a 3d 20 65 6d 70 74 79 20 20 2a 29 0a 28 2a 20 63 6f 64 65   ┆gin level> ::= empty  *) (* code┆
0x011700…011720             3a 20 62 65 67 69 6e 6c 65 76 65 6c 20 2a 29 0a 62 65 67 69 6e 0a 65 6d 69 74 63 6f 64 65 28 63   ┆: beginlevel *) begin emitcode(c┆
0x011720…011740             62 65 67 69 6e 6c 65 76 65 6c 29 3b 0a 65 6e 64 3b 0a 0a 31 30 31 31 3a 20 20 28 2a 20 3c 62 6c   ┆beginlevel); end;  1011:  (* <bl┆
0x011740…011760             6f 63 6b 3e 20 3a 3a 3d 20 3c 64 65 63 6c 61 72 61 74 69 6f 6e 73 3e 20 3c 73 74 61 72 74 20 6c   ┆ock> ::= <declarations> <start l┆
0x011760…011780             61 62 65 6c 73 63 6f 70 65 3e 20 3c 63 6f 6d 70 6f 75 6e 64 20 73 74 61 74 65 6d 65 6e 74 3e 0a   ┆abelscope> <compound statement> ┆
0x011780…0117a0             3c 65 6e 64 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 20 20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a   ┆<end labelscope>     *) (* code:┆
0x0117a0…0117c0             20 65 6e 64 62 6c 6f 63 6b 20 65 6e 64 6c 65 76 65 6c 20 65 6e 64 6c 65 76 65 6c 20 20 2a 29 0a   ┆ endblock endlevel endlevel  *) ┆
0x0117c0…0117e0             28 2a 20 61 63 74 69 6f 6e 3a 20 73 74 6f 70 20 6c 6f 63 61 6c 20 6c 69 6e 65 20 6e 75 6d 62 65   ┆(* action: stop local line numbe┆
0x0117e0…011800             72 69 6e 67 20 20 2a 29 0a 62 65 67 69 6e 0a 65 6d 69 74 62 6f 74 68 28 63 65 6e 64 62 6c 6f 63   ┆ring  *) begin emitboth(cendbloc┆
0x011800…011820 (4, 1, 6)   6b 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 29 3b 0a 65 6d 69 74 28 20 63 65 6e 64 6c 65 76 65 6c 2c   ┆k, nill, nill); emit( cendlevel,┆
0x011820…011840             20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 65 6e 64 6c 65 76 65 6c 29 3b 0a 6c 6f 63 61 6c 6c 69   ┆ nill, nill, cendlevel); localli┆
0x011840…011860             6e 65 6e 75 6d 62 65 72 3a 3d 20 2d 31 3b 20 28 2a 20 73 75 70 70 72 65 73 73 20 70 72 69 6e 74   ┆nenumber:= -1; (* suppress print┆
0x011860…011880             69 6e 67 20 6f 66 20 6c 6f 63 61 6c 20 6c 69 6e 65 20 6e 75 6d 62 65 72 73 20 2a 29 0a 69 66 20   ┆ing of local line numbers *) if ┆
0x011880…0118a0             63 6f 6e 74 65 78 74 70 61 72 73 69 6e 67 20 74 68 65 6e 0a 6d 61 72 6b 65 72 72 6f 72 28 31 31   ┆contextparsing then markerror(11┆
0x0118a0…0118c0             30 20 28 2a 20 52 6f 75 74 69 6e 65 73 20 69 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 6d 75 73   ┆0 (* Routines in environment mus┆
0x0118c0…0118e0             74 20 62 65 20 45 58 54 45 52 4e 41 4c 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 2a 29 29 3b 0a   ┆t be EXTERNAL declarations *)); ┆
0x0118e0…011900             65 6e 64 3b 0a 0a 31 30 32 30 2c 20 20 28 2a 20 3c 62 6c 6f 63 6b 3e 20 3a 3a 3d 20 65 78 74 65   ┆end;  1020,  (* <block> ::= exte┆
0x011900…011920             72 6e 61 6c 20 20 2a 29 0a 31 30 32 31 3a 20 28 2a 20 20 20 20 20 20 21 20 66 6f 72 77 61 72 64   ┆rnal  *) 1021: (*      ! forward┆
0x011920…011940             20 20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 78 74 65 72 6e 61 6c 2f 66 6f 72 77 61 72 64   ┆    *) (* code: external/forward┆
0x011940…011960             20 20 65 6e 64 6c 65 76 65 6c 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 70 72 6f 64 3d 31 30 32 30   ┆  endlevel *) begin if prod=1020┆
0x011960…011980             20 74 68 65 6e 20 63 6f 64 65 77 6f 72 64 3a 3d 20 63 65 78 74 65 72 6e 61 6c 0a 65 6c 73 65 20   ┆ then codeword:= cexternal else ┆
0x011980…0119a0             63 6f 64 65 77 6f 72 64 3a 3d 20 63 66 6f 72 77 61 72 64 3b 0a 65 6d 69 74 63 6f 64 65 28 63 6f   ┆codeword:= cforward; emitcode(co┆
0x0119a0…0119c0             64 65 77 6f 72 64 29 3b 0a 65 6d 69 74 63 6f 64 65 28 63 65 6e 64 6c 65 76 65 6c 29 3b 0a 6c 6f   ┆deword); emitcode(cendlevel); lo┆
0x0119c0…0119e0             63 61 6c 6c 69 6e 65 6e 75 6d 62 65 72 3a 3d 20 2d 31 3b 0a 65 6e 64 3b 0a 0a 31 30 32 32 3a 20   ┆callinenumber:= -1; end;  1022: ┆
0x0119e0…011a00             20 28 2a 20 3c 69 6e 69 74 20 66 6f 72 6d 61 6c 3e 20 3a 3a 3d 20 65 6d 70 74 79 20 20 2a 29 0a   ┆ (* <init formal> ::= empty  *) ┆
0x011a00…011a20 (4, 1, 7)   28 2a 20 63 6f 64 65 3a 20 62 65 67 69 6e 6c 65 76 65 6c 20 20 2a 29 0a 65 6d 69 74 63 6f 64 65   ┆(* code: beginlevel  *) emitcode┆
0x011a20…011a40             28 63 62 65 67 69 6e 6c 65 76 65 6c 29 3b 0a 0a 31 30 32 33 2c 20 20 28 2a 20 3c 76 61 72 20 6f   ┆(cbeginlevel);  1023,  (* <var o┆
0x011a40…011a60             72 20 76 61 6c 75 65 3e 20 3a 3a 3d 20 65 6d 70 74 79 20 20 2a 29 0a 31 30 32 34 3a 20 28 2a 20   ┆r value> ::= empty  *) 1024: (* ┆
0x011a60…011a80             20 20 20 20 20 21 20 76 61 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a   ┆     ! var                     *┆
0x011a80…011aa0             29 0a 28 2a 20 63 6f 64 65 3a 20 64 65 63 6c 61 72 61 74 69 6f 6e 28 20 76 61 6c 75 65 70 2f 76   ┆) (* code: declaration( valuep/v┆
0x011aa0…011ac0             61 72 70 20 29 20 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 70 72 6f 64 3d 31 30 32 33 20 74 68 65   ┆arp )  *) begin if prod=1023 the┆
0x011ac0…011ae0             6e 20 63 6f 64 65 77 6f 72 64 3a 3d 20 63 76 61 6c 75 65 70 0a 65 6c 73 65 20 63 6f 64 65 77 6f   ┆n codeword:= cvaluep else codewo┆
0x011ae0…011b00             72 64 3a 3d 20 63 76 61 72 70 3b 0a 65 6d 69 74 28 20 63 64 65 63 6c 61 72 61 74 69 6f 6e 2c 20   ┆rd:= cvarp; emit( cdeclaration, ┆
0x011b00…011b20             6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 6f 64 65 77 6f 72 64 29 3b 0a 65 6e 64 3b 0a 0a 0a 65 6e   ┆nill, nill, codeword); end;   en┆
0x011b20…011b40             64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 73 65 63 74 69 6f 6e 20 31   ┆d; (* case *)  end; (* section 1┆
0x011b40…011b60             30 20 2a 29 0a 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 66 75 6e 63 74 69 6f 6e 64 65 63 6c 61 72   ┆0 *)    procedure functiondeclar┆
0x011b60…011b80             61 74 69 6f 6e 3b 0a 28 2a 20 73 65 63 74 69 6f 6e 20 31 31 20 20 2a 29 0a 0a 62 65 67 69 6e 0a   ┆ation; (* section 11  *)  begin ┆
0x011b80…011ba0             0a 63 61 73 65 20 70 72 6f 64 20 6f 66 0a 31 31 30 31 3a 20 20 28 2a 20 3c 72 6f 75 74 69 6e 65   ┆ case prod of 1101:  (* <routine┆
0x011ba0…011bc0             20 68 65 61 64 69 6e 67 3e 20 3a 3a 3d 20 3c 66 75 6e 63 74 69 6f 6e 20 68 65 61 64 69 6e 67 3e   ┆ heading> ::= <function heading>┆
0x011bc0…011be0             20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 66 75 6e 63 64 65 63 6c 20 20 2a 29 0a 62 65 67   ┆ *) (* code: endfuncdecl  *) beg┆
0x011be0…011c00             69 6e 0a 65 6d 69 74 63 6f 64 65 28 63 65 6e 64 66 75 6e 63 64 65 63 6c 29 3b 0a 65 6e 64 3b 0a   ┆in emitcode(cendfuncdecl); end; ┆
0x011c00…011c20 (4, 1, 8)   0a 31 31 30 32 3a 20 20 28 2a 20 3c 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 3e 20 3a 3a 3d 20 6e   ┆ 1102:  (* <function name> ::= n┆
0x011c20…011c40             61 6d 65 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 28 20 66 75   ┆ame *) (* code: declaration ( fu┆
0x011c40…011c60             6e 63 74 69 6f 6e 20 29 0a 2e 20 20 20 20 20 20 20 20 6c 69 74 65 72 61 6c 20 28 20 74 65 78 74   ┆nction ) .        literal ( text┆
0x011c60…011c80             20 6c 65 6e 67 74 68 20 29 20 27 6e 61 6d 65 27 0a 2e 20 20 20 20 20 20 20 20 64 65 63 6c 61 72   ┆ length ) 'name' .        declar┆
0x011c80…011ca0             65 20 28 20 73 70 69 78 20 29 0a 2a 29 0a 62 65 67 69 6e 0a 65 6d 69 74 72 6f 75 74 69 6e 65 64   ┆e ( spix ) *) begin emitroutined┆
0x011ca0…011cc0             65 63 6c 28 20 63 66 75 6e 63 74 69 6f 6e 2c 20 72 65 61 64 6e 61 6d 65 20 29 3b 0a 65 6e 64 3b   ┆ecl( cfunction, readname ); end;┆
0x011cc0…011ce0             0a 31 31 30 33 3a 20 20 28 2a 20 3c 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 3e 20 3a 3a 3d 20 3c   ┆ 1103:  (* <function name> ::= <┆
0x011ce0…011d00             73 70 69 78 20 6e 61 6d 65 3e 3d 6e 61 6d 65 20 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 64 65   ┆spix name>=name   *) (* code: de┆
0x011d00…011d20             63 6c 61 72 61 74 69 6f 6e 20 64 65 63 6c 61 72 65 2c 20 20 6e 62 3a 20 74 68 65 20 6c 69 74 65   ┆claration declare,  nb: the lite┆
0x011d20…011d40             72 61 6c 20 69 73 20 20 6e 61 6d 65 20 62 75 74 20 74 68 65 0a 73 70 69 78 20 69 73 20 74 68 61   ┆ral is  name but the spix is tha┆
0x011d40…011d60             74 20 6f 66 20 73 70 69 78 20 6e 61 6d 65 20 20 21 21 20 2a 29 0a 65 6d 69 74 72 6f 75 74 69 6e   ┆t of spix name  !! *) emitroutin┆
0x011d60…011d80             65 64 65 63 6c 28 20 63 66 75 6e 63 74 69 6f 6e 2c 20 61 6c 69 61 73 5f 6e 61 6d 65 20 29 3b 0a   ┆edecl( cfunction, alias_name ); ┆
0x011d80…011da0             0a 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 73 65 63 74   ┆  end; (* case  *)  end; (* sect┆
0x011da0…011dc0             69 6f 6e 20 31 31 20 20 2a 29 0a 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 6c 61 62 65 6c 64 65 63   ┆ion 11  *)    procedure labeldec┆
0x011dc0…011de0             6c 61 72 61 74 69 6f 6e 3b 0a 28 2a 20 73 65 63 74 69 6f 6e 20 31 32 20 2a 29 0a 0a 0a 62 65 67   ┆laration; (* section 12 *)   beg┆
0x011de0…011e00             69 6e 0a 20 63 61 73 65 20 70 72 6f 64 20 6f 66 0a 31 32 30 31 3a 20 20 20 28 2a 20 3c 6c 61 62   ┆in  case prod of 1201:   (* <lab┆
0x011e00…011e20 (4, 1, 9)   65 6c 20 6e 61 6d 65 3e 20 3a 3a 3d 20 6e 61 6d 65 20 20 2a 29 0a 28 2a 20 20 20 20 20 20 20 20   ┆el name> ::= name  *) (*        ┆
0x011e20…011e40             21 20 6b 6f 6e 73 74 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 69 66 20 64 65 63 6c 61 72 61 74 69   ┆! konst *) (* code: if declarati┆
0x011e40…011e60             6f 6e 73 20 74 68 65 6e 20 0a 64 65 63 6c 61 72 61 74 69 6f 6e 28 20 6c 61 62 65 6c 20 29 20 64   ┆ons then  declaration( label ) d┆
0x011e60…011e80             65 63 6c 61 72 65 28 20 73 70 69 78 20 29 0a 65 6c 73 65 0a 6c 61 62 65 6c 64 65 66 28 20 63 75   ┆eclare( spix ) else labeldef( cu┆
0x011e80…011ea0             72 72 65 6e 74 6c 61 62 65 6c 73 63 6f 70 65 20 73 70 69 78 29 2c 0a 6c 61 62 65 6c 64 65 66 28   ┆rrentlabelscope spix), labeldef(┆
0x011ea0…011ec0             20 63 75 72 72 65 6e 74 6c 61 62 65 6c 73 63 6f 70 65 20 73 70 69 78 20 29 20 20 20 20 2a 29 0a   ┆ currentlabelscope spix )    *) ┆
0x011ec0…011ee0             69 66 20 6c 6f 63 61 6c 6c 69 6e 65 6e 75 6d 62 65 72 3d 2d 31 20 74 68 65 6e 20 28 2a 20 69 2e   ┆if locallinenumber=-1 then (* i.┆
0x011ee0…011f00             65 2e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 6f 66 20 61 20 6c 61 62 65 6c 20 2a 29 0a 62 65 67   ┆e. declaration of a label *) beg┆
0x011f00…011f20             69 6e 0a 65 6d 69 74 28 20 63 64 65 63 6c 61 72 61 74 69 6f 6e 2c 20 6e 69 6c 6c 2c 20 6e 69 6c   ┆in emit( cdeclaration, nill, nil┆
0x011f20…011f40             6c 2c 20 63 6c 61 62 65 6c 29 3b 0a 65 6d 69 74 64 65 63 6c 61 72 65 28 64 65 63 6c 2c 73 65 61   ┆l, clabel); emitdeclare(decl,sea┆
0x011f40…011f60             72 63 68 6e 61 6d 65 28 72 65 61 64 6e 61 6d 65 29 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67   ┆rchname(readname)); end else beg┆
0x011f60…011f80             69 6e 0a 65 6d 69 74 62 6f 74 68 28 63 6c 61 62 65 6c 64 65 66 2c 20 63 75 72 72 65 6e 74 6c 61   ┆in emitboth(clabeldef, currentla┆
0x011f80…011fa0             62 65 6c 73 63 6f 70 65 2c 20 73 65 61 72 63 68 6e 61 6d 65 28 72 65 61 64 6e 61 6d 65 29 29 3b   ┆belscope, searchname(readname));┆
0x011fa0…011fc0             0a 65 6e 64 3b 0a 0a 31 32 30 32 3a 20 20 28 2a 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63 6f   ┆ end;  1202:  (* <start labelsco┆
0x011fc0…011fe0             70 65 3e 20 3a 3a 3d 20 65 6d 70 74 79 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 73 74 61 72 74   ┆pe> ::= empty  *) (* code: start┆
0x011fe0…012000             6c 61 62 65 6c 73 63 6f 70 65 28 20 73 63 6f 70 65 20 29 20 20 2a 29 0a 62 65 67 69 6e 0a 61 74   ┆labelscope( scope )  *) begin at┆
0x012000…012020 (4, 1, 10)  74 73 74 61 63 6b 5b 20 6e 65 77 74 6f 70 20 5d 20 2e 20 6f 6c 64 6c 61 62 65 6c 73 63 6f 70 65   ┆tstack[ newtop ] . oldlabelscope┆
0x012020…012040             3a 3d 20 63 75 72 72 65 6e 74 6c 61 62 65 6c 73 63 6f 70 65 3b 0a 6c 61 73 74 6c 61 62 65 6c 73   ┆:= currentlabelscope; lastlabels┆
0x012040…012060             63 6f 70 65 3a 3d 20 6c 61 73 74 6c 61 62 65 6c 73 63 6f 70 65 2b 31 3b 0a 63 75 72 72 65 6e 74   ┆cope:= lastlabelscope+1; current┆
0x012060…012080             6c 61 62 65 6c 73 63 6f 70 65 3a 3d 20 6c 61 73 74 6c 61 62 65 6c 73 63 6f 70 65 3b 0a 65 6d 69   ┆labelscope:= lastlabelscope; emi┆
0x012080…0120a0             74 28 63 73 74 61 72 74 6c 61 62 65 6c 73 63 6f 70 65 2c 20 63 75 72 72 65 6e 74 6c 61 62 65 6c   ┆t(cstartlabelscope, currentlabel┆
0x0120a0…0120c0             73 63 6f 70 65 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a 0a 31 32 30   ┆scope, nill, cnocode); end;  120┆
0x0120c0…0120e0             33 3a 20 20 28 2a 20 3c 65 6e 64 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 3a 3a 3d 20 65 6d 70 74   ┆3:  (* <end labelscope> ::= empt┆
0x0120e0…012100             79 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 6c 61 62 65 6c 73 63 6f 70 65 28 20 73 63   ┆y  *) (* code: endlabelscope( sc┆
0x012100…012120             6f 70 65 20 29 20 20 2a 29 0a 62 65 67 69 6e 0a 65 6d 69 74 28 63 65 6e 64 6c 61 62 65 6c 73 63   ┆ope )  *) begin emit(cendlabelsc┆
0x012120…012140             6f 70 65 2c 20 63 75 72 72 65 6e 74 6c 61 62 65 6c 73 63 6f 70 65 2c 20 6e 69 6c 6c 2c 20 63 6e   ┆ope, currentlabelscope, nill, cn┆
0x012140…012160             6f 63 6f 64 65 29 3b 0a 63 75 72 72 65 6e 74 6c 61 62 65 6c 73 63 6f 70 65 3a 3d 20 61 74 74 73   ┆ocode); currentlabelscope:= atts┆
0x012160…012180             74 61 63 6b 5b 20 6e 65 77 74 6f 70 2d 32 20 5d 20 2e 20 6f 6c 64 6c 61 62 65 6c 73 63 6f 70 65   ┆tack[ newtop-2 ] . oldlabelscope┆
0x012180…0121a0             3b 0a 28 2a 20 69 2e 65 2e 20 67 65 74 20 74 68 65 20 73 63 6f 70 65 20 73 74 6f 72 65 64 20 69   ┆; (* i.e. get the scope stored i┆
0x0121a0…0121c0             6e 20 61 74 74 73 74 61 63 6b 5b 20 3c 73 74 61 72 74 20 6c 61 62 65 6c 73 63 6f 70 65 3e 20 5d   ┆n attstack[ <start labelscope> ]┆
0x0121c0…0121e0             20 20 2a 29 0a 65 6e 64 3b 0a 0a 20 65 6e 64 3b 20 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 65 6e   ┆  *) end;   end;  (* case *)  en┆
0x0121e0…012200             64 3b 20 28 2a 20 73 65 63 74 69 6f 6e 20 31 32 20 2a 29 0a 0a 0c 0a 70 72 6f 63 65 64 75 72 65   ┆d; (* section 12 *)    procedure┆
0x012200…012220 (4, 1, 11)  20 70 72 6f 63 65 73 73 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 28 2a 20 73 65 63 74 69 6f 6e 20   ┆ processdeclaration; (* section ┆
0x012220…012240             31 33 2c 20 70 72 6f 63 65 73 73 20 61 6e 64 20 70 72 65 66 69 78 20 64 65 63 6c 61 72 61 74 69   ┆13, process and prefix declarati┆
0x012240…012260             6f 6e 20 2a 29 0a 0a 76 61 72 0a 6e 61 6d 65 20 3a 20 6e 61 6d 65 68 65 61 64 70 74 72 3b 0a 63   ┆on *)  var name : nameheadptr; c┆
0x012260…012280             6f 64 65 77 6f 72 64 20 3a 20 63 6f 64 65 73 3b 0a 0a 62 65 67 69 6e 0a 63 61 73 65 20 70 72 6f   ┆odeword : codes;  begin case pro┆
0x012280…0122a0             64 20 6f 66 0a 0a 31 33 30 31 3a 20 20 28 2a 20 3c 63 6f 6e 74 65 78 74 20 6e 61 6d 65 3e 20 3a   ┆d of  1301:  (* <context name> :┆
0x0122a0…0122c0             3a 3d 20 6e 61 6d 65 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 63 6f 6e 74 65 78 74 28 20 73 70 69   ┆:= name *) (* code: context( spi┆
0x0122c0…0122e0             78 20 29 20 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 62 65 66 6f 72 65 5f 73 74 61 6e 64 61 72 64   ┆x )  *) begin if before_standard┆
0x0122e0…012300             5f 64 65 66 73 20 74 68 65 6e 0a 70 72 65 64 65 66 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 3b 0a 6e   ┆_defs then predef_environment; n┆
0x012300…012320             61 6d 65 3a 3d 20 72 65 61 64 6e 61 6d 65 3b 0a 65 6d 69 74 28 63 63 6f 6e 74 65 78 74 2c 20 73   ┆ame:= readname; emit(ccontext, s┆
0x012320…012340             65 61 72 63 68 6e 61 6d 65 28 6e 61 6d 65 29 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b   ┆earchname(name), nill, cnocode);┆
0x012340…012360             0a 63 6f 6e 74 65 78 74 70 61 72 73 69 6e 67 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 0a 31 33   ┆ contextparsing:= true; end;  13┆
0x012360…012380             30 33 3a 20 20 28 2a 20 3c 62 6f 64 79 3e 20 3a 3a 3d 20 3c 62 6f 64 79 20 6c 69 73 74 3e 20 20   ┆03:  (* <body> ::= <body list>  ┆
0x012380…0123a0             2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6f 6d 20 20 2a 29 0a 62 65 67 69 6e 0a 65 6d 69 74 63 6f   ┆*) (* code: eom  *) begin emitco┆
0x0123a0…0123c0             64 65 28 63 65 6f 6d 29 3b 0a 6f 6b 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 73 74 6f 70 20 70 61   ┆de(ceom); ok:= false; (* stop pa┆
0x0123c0…0123e0             72 73 69 6e 67 20 2a 29 0a 69 66 20 6e 6f 74 20 70 72 69 6e 74 65 64 20 74 68 65 6e 20 70 72 69   ┆rsing *) if not printed then pri┆
0x0123e0…012400             6e 74 6c 69 6e 65 3b 20 28 2a 20 70 72 69 6e 74 20 74 68 65 20 6c 61 73 74 20 6c 69 6e 65 20 2a   ┆ntline; (* print the last line *┆
0x012400…012420 (4, 1, 12)  29 0a 65 6e 64 3b 0a 0a 31 33 30 34 3a 20 20 28 2a 20 3c 70 72 6f 63 73 65 6d 73 3e 20 3a 3a 3d   ┆) end;  1304:  (* <procsems> ::=┆
0x012420…012440             20 3c 73 65 6d 69 63 6f 6c 6f 6e 73 3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 70 72 6f   ┆ <semicolons> *) (* code: endpro┆
0x012440…012460             63 64 65 63 6c 20 2a 29 0a 62 65 67 69 6e 0a 65 6d 69 74 63 6f 64 65 28 63 65 6e 64 70 72 6f 63   ┆cdecl *) begin emitcode(cendproc┆
0x012460…012480             64 65 63 6c 29 3b 0a 0a 65 6e 64 3b 0a 0a 31 33 30 35 2c 20 20 28 2a 20 3c 70 72 6f 63 65 73 73   ┆decl);  end;  1305,  (* <process┆
0x012480…0124a0             20 6e 61 6d 65 3e 20 3a 3a 3d 20 6e 61 6d 65 20 20 2a 29 0a 31 33 30 36 3a 20 20 28 2a 20 3c 70   ┆ name> ::= name  *) 1306:  (* <p┆
0x0124a0…0124c0             72 65 66 69 78 20 6e 61 6d 65 3e 20 3a 3a 3d 20 6e 61 6d 65 20 20 2a 29 0a 28 2a 20 63 6f 64 65   ┆refix name> ::= name  *) (* code┆
0x0124c0…0124e0             3a 20 64 65 63 6c 61 72 61 74 6f 6e 28 20 70 72 6f 63 65 73 73 2f 70 72 65 66 69 78 20 29 20 64   ┆: declaraton( process/prefix ) d┆
0x0124e0…012500             65 63 6c 61 72 65 28 20 73 70 69 78 20 29 20 2a 29 0a 62 65 67 69 6e 0a 6e 61 6d 65 3a 3d 20 72   ┆eclare( spix ) *) begin name:= r┆
0x012500…012520             65 61 64 6e 61 6d 65 3b 0a 69 66 20 70 72 6f 64 3d 31 33 30 35 20 74 68 65 6e 20 63 6f 64 65 77   ┆eadname; if prod=1305 then codew┆
0x012520…012540             6f 72 64 3a 3d 20 63 70 72 6f 63 65 73 73 0a 65 6c 73 65 0a 63 6f 64 65 77 6f 72 64 3a 3d 20 63   ┆ord:= cprocess else codeword:= c┆
0x012540…012560             70 72 65 66 69 78 3b 0a 65 6d 69 74 72 6f 75 74 69 6e 65 64 65 63 6c 28 20 63 6f 64 65 77 6f 72   ┆prefix; emitroutinedecl( codewor┆
0x012560…012580             64 2c 20 6e 61 6d 65 20 29 3b 0a 65 6e 64 3b 0a 0a 31 33 30 37 3a 20 20 28 2a 20 3c 70 72 65 66   ┆d, name ); end;  1307:  (* <pref┆
0x012580…0125a0             69 78 20 64 65 63 6c 61 72 61 74 69 6f 6e 3e 20 3a 3a 3d 20 3c 70 72 65 66 65 78 20 68 65 61 64   ┆ix declaration> ::= <prefex head┆
0x0125a0…0125c0             69 6e 67 3e 20 3c 73 65 6d 69 63 6f 6c 6f 6e 73 3e 20 0a 3c 62 65 67 69 6e 20 6c 65 76 65 6c 3e   ┆ing> <semicolons>  <begin level>┆
0x0125c0…0125e0             20 3c 72 6f 75 74 69 6e 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 3e 20 2a 29 0a 28 2a 20 63 6f 64   ┆ <routine declaration> *) (* cod┆
0x0125e0…012600             65 3a 20 65 6e 64 6c 65 76 65 6c 20 65 6e 64 70 72 65 66 69 78 20 2a 29 0a 62 65 67 69 6e 0a 65   ┆e: endlevel endprefix *) begin e┆
0x012600…012620 (4, 1, 13)  6d 69 74 28 63 65 6e 64 6c 65 76 65 6c 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 65 6e 64 70   ┆mit(cendlevel, nill, nill, cendp┆
0x012620…012640             72 65 66 69 78 29 3b 0a 65 6e 64 3b 0a 0a 31 33 31 30 3a 20 20 28 2a 20 3c 65 78 74 65 72 6e 61   ┆refix); end;  1310:  (* <externa┆
0x012640…012660             6c 3e 20 3a 3a 3d 20 3c 63 6f 6e 74 65 78 74 20 6e 61 6d 65 3e 20 3c 73 65 6d 69 63 6f 6c 6f 6e   ┆l> ::= <context name> <semicolon┆
0x012660…012680             73 3e 20 3c 64 65 63 6c 61 72 61 74 69 6f 6e 73 3e 20 2e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20   ┆s> <declarations> . *) (* code: ┆
0x012680…0126a0             65 6e 64 63 6f 6e 74 65 78 74 20 20 20 2a 29 0a 28 2a 20 61 63 74 69 6f 6e 3a 20 63 6f 6e 74 65   ┆endcontext   *) (* action: conte┆
0x0126a0…0126c0             78 74 70 61 72 73 69 6e 67 3a 3d 20 66 61 6c 73 65 20 20 2a 29 0a 62 65 67 69 6e 0a 63 6f 6e 74   ┆xtparsing:= false  *) begin cont┆
0x0126c0…0126e0             65 78 74 70 61 72 73 69 6e 67 3a 3d 20 66 61 6c 73 65 3b 0a 69 66 20 6e 6f 74 20 72 65 64 75 63   ┆extparsing:= false; if not reduc┆
0x0126e0…012700             65 64 5f 69 6e 74 65 72 6d 65 64 69 61 74 65 5f 6c 61 6e 67 75 61 67 65 20 74 68 65 6e 0a 65 6d   ┆ed_intermediate_language then em┆
0x012700…012720             69 74 63 6f 64 65 28 63 65 6e 64 63 6f 6e 74 65 78 74 29 3b 0a 65 6e 64 3b 0a 0a 31 33 31 31 3a   ┆itcode(cendcontext); end;  1311:┆
0x012720…012740             20 20 28 2a 20 3c 65 78 74 65 72 6e 61 6c 20 70 61 72 74 3e 20 3a 3a 3d 20 3c 65 78 74 65 72 6e   ┆  (* <external part> ::= <extern┆
0x012740…012760             61 6c 73 3e 20 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 69 6e 63 6c 75 64 65 20 20 20 20   ┆als>  *) (* code: endinclude    ┆
0x012760…012780             20 20 2a 29 0a 62 65 67 69 6e 0a 6d 6f 72 65 5f 73 6f 75 72 63 65 73 5f 61 6c 6c 6f 77 65 64 3a   ┆  *) begin more_sources_allowed:┆
0x012780…0127a0             3d 20 66 61 6c 73 65 3b 0a 65 6d 69 74 63 6f 64 65 28 20 63 65 6e 64 69 6e 63 6c 75 64 65 20 29   ┆= false; emitcode( cendinclude )┆
0x0127a0…0127c0             3b 0a 65 6e 64 3b 0a 0a 31 33 31 32 3a 20 20 28 2a 20 3c 62 6f 64 79 20 65 6c 65 6d 3e 20 3a 3a   ┆; end;  1312:  (* <body elem> ::┆
0x0127c0…0127e0             3d 20 3c 62 65 67 69 6e 20 6c 65 76 65 6c 3e 20 3c 70 72 6f 63 65 73 73 20 64 65 63 6c 61 72 61   ┆= <begin level> <process declara┆
0x0127e0…012800             74 69 6f 6e 3e 20 20 2a 29 0a 20 20 20 20 20 20 20 28 2a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆tion>  *)        (*             ┆
0x012800…012820 (4, 1, 14)  20 20 21 20 3c 62 65 67 69 6e 20 6c 65 76 65 6c 3e 20 3c 70 72 65 66 69 78 20 64 65 63 6c 61 72   ┆  ! <begin level> <prefix declar┆
0x012820…012840             61 74 69 6f 6e 3e 20 2a 29 0a 20 20 20 20 20 20 20 28 2a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ation> *)        (*             ┆
0x012840…012860             20 20 21 20 3c 62 65 67 69 6e 20 6c 65 76 65 6c 3e 20 3c 70 72 6f 63 65 73 73 20 64 65 63 6c 61   ┆  ! <begin level> <process decla┆
0x012860…012880             72 61 74 69 6f 6e 3e 20 3c 73 65 6d 69 63 6f 6c 6f 6e 73 3e 20 2a 29 0a 20 20 20 20 20 20 20 28   ┆ration> <semicolons> *)        (┆
0x012880…0128a0             2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 3c 62 65 67 69 6e 20 6c 65 76 65 6c 3e 20   ┆*               ! <begin level> ┆
0x0128a0…0128c0             3c 70 72 65 66 69 78 20 64 65 63 6c 61 72 61 74 69 6f 6e 3e 20 3c 73 65 6d 69 63 6f 6c 6f 6e 73   ┆<prefix declaration> <semicolons┆
0x0128c0…0128e0             3e 20 2a 29 0a 28 2a 20 63 6f 64 65 3a 20 65 6e 64 6c 65 76 65 6c 20 2a 29 0a 65 6d 69 74 63 6f   ┆> *) (* code: endlevel *) emitco┆
0x0128e0…012900             64 65 28 63 65 6e 64 6c 65 76 65 6c 29 3b 0a 0a 65 6e 64 3b 20 20 28 2a 20 63 61 73 65 20 2a 29   ┆de(cendlevel);  end;  (* case *)┆
0x012900…012920             0a 0a 65 6e 64 3b 20 28 2a 20 73 65 63 74 69 6f 6e 20 31 33 20 2a 29 0a 0a 0c 0a 0a 0a 62 65 67   ┆  end; (* section 13 *)      beg┆
0x012920…012940             69 6e 20 28 2a 20 63 6f 64 65 20 2a 29 0a 69 66 20 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e   ┆in (* code *) if testoutput then┆
0x012940…012960             20 6f 75 74 74 65 73 74 3b 28 2a 2a 2a 73 6e 61 70 73 68 6f 74 2a 2a 2a 29 0a 0a 63 61 73 65 20   ┆ outtest;(***snapshot***)  case ┆
0x012960…012980             70 72 6f 64 20 64 69 76 20 31 30 30 20 6f 66 0a 0a 30 3a 20 20 3b 20 28 2a 20 6e 6f 74 68 69 6e   ┆prod div 100 of  0:  ; (* nothin┆
0x012980…0129a0             67 20 69 73 20 64 6f 6e 65 20 2a 29 0a 0a 31 3a 20 65 72 72 6f 72 73 65 63 74 69 6f 6e 3b 20 28   ┆g is done *)  1: errorsection; (┆
0x0129a0…0129c0             2a 20 20 2a 2a 20 3a 3a 3d 20 65 72 72 6f 72 20 2a 29 0a 0a 32 20 3a 20 3b 20 28 2a 20 6e 6f 74   ┆*  ** ::= error *)  2 : ; (* not┆
0x0129c0…0129e0             20 75 73 65 64 20 2a 29 0a 0a 33 3a 20 65 78 70 6f 72 74 5f 73 65 63 74 69 6f 6e 3b 0a 0a 34 3a   ┆ used *)  3: export_section;  4:┆
0x0129e0…012a00             20 6c 69 74 65 72 61 6c 73 28 20 70 72 6f 64 20 29 3b 20 0a 0a 35 3a 20 63 6f 6e 73 74 61 6e 74   ┆ literals( prod );   5: constant┆
0x012a00…012a20 (4, 1, 15)  64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 36 3a 20 74 79 70 65 64 65 66 69 6e 69 74 69 6f 6e 3b   ┆declaration;  6: typedefinition;┆
0x012a20…012a40             0a 0a 37 3a 20 76 61 72 69 61 62 6c 65 64 65 66 69 6e 69 74 69 6f 6e 3b 0a 0a 38 3a 20 65 78 70   ┆  7: variabledefinition;  8: exp┆
0x012a40…012a60             72 65 73 73 69 6f 6e 3b 0a 0a 39 3a 20 73 74 61 74 65 6d 65 6e 74 3b 0a 0a 31 30 3a 20 70 72 6f   ┆ression;  9: statement;  10: pro┆
0x012a60…012a80             63 65 64 75 72 65 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 31 31 3a 20 66 75 6e 63 74 69 6f 6e   ┆ceduredeclaration;  11: function┆
0x012a80…012aa0             64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 31 32 3a 20 6c 61 62 65 6c 64 65 63 6c 61 72 61 74 69   ┆declaration;  12: labeldeclarati┆
0x012aa0…012ac0             6f 6e 3b 0a 0a 31 33 3a 20 70 72 6f 63 65 73 73 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 65 6e   ┆on;  13: processdeclaration;  en┆
0x012ac0…012ae0             64 3b 20 20 28 2a 20 63 61 73 65 20 2e 2e 2e 20 2a 29 0a 0a 65 6e 64 3b 28 2a 63 6f 64 65 2a 29   ┆d;  (* case ... *)  end;(*code*)┆
0x012ae0…012b00             0a 0a 28 2a 20 62 6f 62 73 20 70 72 6f 63 65 64 75 72 65 73 20 63 6f 6e 74 69 6e 75 61 74 65 64   ┆  (* bobs procedures continuated┆
0x012b00…012b20             2a 29 0a 70 72 6f 63 65 64 75 72 65 20 73 74 6f 70 3b 0a 62 65 67 69 6e 0a 6d 61 72 6b 65 72 72   ┆*) procedure stop; begin markerr┆
0x012b20…012b40             6f 72 28 30 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 77 72 69 74 65 6c 6e 28 6f   ┆or(0); writeln(output);writeln(o┆
0x012b40…012b60             75 74 70 75 74 29 3b 0a 63 61 73 65 20 6e 20 6f 66 0a 31 3a 20 77 72 69 74 65 6c 6e 28 6f 75 74   ┆utput); case n of 1: writeln(out┆
0x012b60…012b80             70 75 74 2c 27 20 2a 2a 2a 20 70 61 72 73 65 20 73 74 61 63 6b 20 6f 76 65 72 66 6c 6f 77 2e 20   ┆put,' *** parse stack overflow. ┆
0x012b80…012ba0             63 6f 6e 73 74 20 27 27 73 74 61 63 6b 6d 61 78 27 27 20 74 6f 6f 20 73 6d 61 6c 6c 27 29 3b 0a   ┆const ''stackmax'' too small'); ┆
0x012ba0…012bc0             32 3a 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 27 20 2a 2a 2a 20 65 6e 64 20 6f 66 20 66   ┆2: writeln(output,' *** end of f┆
0x012bc0…012be0             69 6c 65 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 27 29 3b 0a 33 3a 20 77 72 69 74 65 6c 6e 28 6f   ┆ile encountered '); 3: writeln(o┆
0x012be0…012c00             75 74 70 75 74 2c 27 20 2a 2a 2a 20 72 65 63 6f 76 65 72 79 20 61 62 61 6e 64 6f 6e 65 64 20 27   ┆utput,' *** recovery abandoned '┆
0x012c00…012c20 (5, 0, 1)   29 3b 0a 34 3a 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 27 20 2a 2a 2a 20 72 65 64 75 63   ┆); 4: writeln(output,' *** reduc┆
0x012c20…012c40             74 69 6f 6e 20 62 75 66 66 65 72 20 6f 76 65 72 66 6c 6f 77 2e 20 63 6f 6e 73 74 20 27 27 72 65   ┆tion buffer overflow. const ''re┆
0x012c40…012c60             64 75 6d 61 78 27 27 20 74 6f 6f 20 73 6d 61 6c 6c 27 29 3b 0a 35 3a 20 77 72 69 74 65 6c 6e 28   ┆dumax'' too small'); 5: writeln(┆
0x012c60…012c80             6f 75 74 70 75 74 2c 27 20 2a 2a 2a 20 63 6f 6e 73 74 20 27 27 73 74 72 69 6e 67 6d 61 78 27 27   ┆output,' *** const ''stringmax''┆
0x012c80…012ca0             20 74 6f 6f 20 73 6d 61 6c 6c 20 27 29 3b 0a 36 3a 20 69 66 20 65 72 72 6f 72 63 6f 75 6e 74 3e   ┆ too small '); 6: if errorcount>┆
0x012ca0…012cc0             31 20 74 68 65 6e 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 27 20 2a 2a 2a 20 72 65 63 6f   ┆1 then writeln(output,' *** reco┆
0x012cc0…012ce0             76 65 72 79 20 61 62 61 6e 64 6f 6e 65 64 20 27 29 3b 0a 37 3a 20 77 72 69 74 65 6c 6e 28 6f 75   ┆very abandoned '); 7: writeln(ou┆
0x012ce0…012d00             74 70 75 74 2c 27 20 2a 2a 2a 20 70 72 65 6d 61 74 75 72 65 20 65 6e 64 20 6f 66 20 66 69 6c 65   ┆tput,' *** premature end of file┆
0x012d00…012d20             2c 20 6d 69 73 73 69 6e 67 20 24 45 4e 44 49 46 20 27 29 3b 0a 31 32 3a 20 77 72 69 74 65 6c 6e   ┆, missing $ENDIF '); 12: writeln┆
0x012d20…012d40             28 6f 75 74 70 75 74 2c 20 27 20 2a 2a 2a 20 63 6f 6e 73 74 20 27 27 74 79 70 65 62 75 66 66 65   ┆(output, ' *** const ''typebuffe┆
0x012d40…012d60             72 73 69 7a 65 27 27 20 74 6f 6f 20 73 6d 61 6c 6c 20 27 29 3b 0a 65 6c 73 65 0a 77 72 69 74 65   ┆rsize'' too small '); else write┆
0x012d60…012d80             6c 6e 28 6f 75 74 70 75 74 2c 27 20 2a 2a 2a 20 63 6f 6e 73 74 20 27 27 63 68 62 75 66 6d 61 78   ┆ln(output,' *** const ''chbufmax┆
0x012d80…012da0             27 27 20 74 6f 6f 20 73 6d 61 6c 6c 20 27 29 3b 0a 65 6e 64 3b 0a 6d 79 65 78 69 74 3b 0a 65 6e   ┆'' too small '); end; myexit; en┆
0x012da0…012dc0             64 3b 28 2a 73 74 6f 70 2a 29 0a 0a 01 45 20 31 0a 2c 27 20 2a 2a 2a 20 65 6e 64 20 6f 66 20 66   ┆d;(*stop*)   E 1 ,' *** end of f┆
0x012dc0…012de0             69 6c 65 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 27 29 3b 0a 33 3a 20 77 72 69 74 65 6c 6e 28 6f   ┆ile encountered '); 3: writeln(o┆
0x012de0…012e00             75 74 70 75 74 2c 27 20 2a 2a 2a 20 72 65 63 6f 76 65 72 79 20 61 62 61 6e 64 6f 6e 65 64 20 27   ┆utput,' *** recovery abandoned '┆
0x012e00…012e20 (5, 0, 2)   2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 73 2e 70 31 70 61 72 73 2e 70 61 73 00 00   ┆../sw2103/src/rtp/s.p1pars.pas  ┆
0x012e20…012e40             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x012e60…012e80             00 00 00 00 20 20 20 34 34 34 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       444     255     146      ┆
0x012e80…012ea0             20 20 37 35 30 34 34 20 20 35 32 36 36 37 36 30 36 37 32 20 20 31 31 31 32 36 00 20 00 00 00 00   ┆  75044  5266760672  11126      ┆
0x012ea0…012ec0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x013000…013020 (5, 0, 3)   01 68 31 36 31 33 38 0a 01 73 20 30 31 34 30 39 2f 30 30 30 30 30 2f 30 30 30 30 30 0a 01 64 20   ┆ h16138  s 01409/00000/00000  d ┆
0x013020…013040             44 20 31 2e 31 20 39 32 2f 31 30 2f 31 34 20 31 30 3a 30 30 3a 34 31 20 73 77 32 31 30 33 20 31   ┆D 1.1 92/10/14 10:00:41 sw2103 1┆
0x013040…013060             20 30 0a 01 63 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2c 20 73 6f 75 72 63 65   ┆ 0  c SCCS and UNIX used, source┆
0x013060…013080             20 66 69 6c 65 20 39 32 2e 30 31 2e 32 37 2e 0a 01 65 0a 01 75 0a 01 55 0a 01 74 0a 01 54 0a 01   ┆ file 92.01.27.  e  u  U  t  T  ┆
0x013080…0130a0             49 20 31 0a 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆I 1  (*-------------------------┆
0x0130a0…0130c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0130c0…0130e0             2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39   ┆-------- -- -- (C) Copyrigth 199┆
0x0130e0…013100             32 20 20 44 41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 31 50 41 52 53 2e 50 41 53 0a 2d 2d 0a 2d 2d   ┆2  DANOSI -- -- P1PARS.PAS -- --┆
0x013100…013120             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
                            […0x1…]
0x013140…013160             2d 0a 2d 2d 0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆- -- -- Revisions -- -----------┆
0x013160…013180             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20   ┆--------------------- --        ┆
0x013180…0131a0             39 32 2e 30 31 2e 32 37 20 20 45 42 4b 20 20 20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20   ┆92.01.27  EBK   Used in release ┆
0x0131a0…0131c0             31 2e 31 32 0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53   ┆1.12 --  1.1   92.10.14  HEJ   S┆
0x0131c0…0131e0             43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆CCS and UNIX used. -- ----------┆
0x0131e0…013200             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x013200…013220 (5, 0, 4)   2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43   ┆------------------------- -- SCC┆
0x013220…013240             53 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d   ┆S information -- File   :  %P% -┆
0x013240…013260             2d 09 4d 6f 64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25   ┆- Module :  %M% -- Version:  %I%┆
0x013260…013280             0a 2d 2d 09 44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Date   :  %E%  %U% ---------┆
0x013280…0132a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0132a0…0132c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 70   ┆-------------------------- *)  p┆
0x0132c0…0132e0             72 6f 63 65 64 75 72 65 20 70 61 72 73 65 72 3b 0a 63 6f 6e 73 74 0a 28 2a 42 4f 42 53 2c 20 63   ┆rocedure parser; const (*BOBS, c┆
0x0132e0…013300             6f 6e 73 74 61 6e 74 73 20 67 65 6e 65 72 61 74 65 64 20 62 79 20 74 68 65 20 67 65 6e 65 72 61   ┆onstants generated by the genera┆
0x013300…013320             74 6f 72 20 2a 29 0a 73 79 6d 62 6d 61 78 3d 32 35 30 3b 0a 70 72 6f 64 6d 61 78 3d 33 31 36 3b   ┆tor *) symbmax=250; prodmax=316;┆
0x013320…013340             0a 6c 72 6d 61 78 3d 31 32 36 33 3b 0a 6c 78 6d 61 78 3d 32 32 33 3b 0a 65 72 72 6f 72 76 61 6c   ┆ lrmax=1263; lxmax=223; errorval┆
0x013340…013360             3d 31 38 3b 0a 6e 61 6d 65 76 61 6c 3d 33 35 3b 0a 63 6f 6e 73 74 76 61 6c 3d 32 39 3b 0a 73 74   ┆=18; nameval=35; constval=29; st┆
0x013360…013380             72 69 6e 67 76 61 6c 3d 35 30 3b 0a 73 74 72 69 6e 67 63 68 20 3d 0a 27 27 27 27 3b 0a 63 6f 6d   ┆ringval=50; stringch = ''''; com┆
0x013380…0133a0             62 65 67 69 6e 3d 38 37 3b 0a 63 6f 6d 6c 65 6e 67 74 68 3d 32 3b 0a 20 28 2a 42 4f 42 53 29 20   ┆begin=87; comlength=2;  (*BOBS) ┆
0x0133a0…0133c0             0a 28 2a 2d 65 6e 64 2d 6f 66 2d 67 65 6e 65 72 61 74 65 64 2d 63 6f 6e 73 74 61 6e 74 73 2d 2a   ┆ (*-end-of-generated-constants-*┆
0x0133c0…0133e0             29 0a 72 65 61 6c 6b 6f 6e 73 74 3d 34 35 3b 0a 73 6b 69 70 63 68 3d 27 20 27 3b 0a 0a 28 2a 2d   ┆) realkonst=45; skipch=' ';  (*-┆
0x0133e0…013400             65 6e 64 2d 6f 66 2d 70 61 72 73 65 72 2d 63 6f 6e 73 74 61 6e 74 73 2d 2a 29 0a 0a 74 79 70 65   ┆end-of-parser-constants-*)  type┆
0x013400…013420 (5, 0, 5)   0a 73 79 6d 62 6f 6c 3d 30 2e 2e 73 79 6d 62 6d 61 78 3b 0a 65 72 72 6e 6f 3d 30 2e 2e 70 72 6f   ┆ symbol=0..symbmax; errno=0..pro┆
0x013420…013440             64 6d 61 78 3b 0a 70 72 6f 64 6e 6f 3d 30 2e 2e 70 72 6f 64 6d 61 78 3b 0a 72 73 6c 65 6e 67 74   ┆dmax; prodno=0..prodmax; rslengt┆
0x013440…013460             68 3d 2d 31 2e 2e 73 79 6d 62 6d 61 78 3b 0a 6d 6f 64 65 3d 30 2e 2e 36 3b 0a 6c 72 69 6e 78 3d   ┆h=-1..symbmax; mode=0..6; lrinx=┆
0x013460…013480             30 2e 2e 6c 72 6d 61 78 3b 0a 6c 72 65 6c 6d 3d 70 61 63 6b 65 64 20 72 65 63 6f 72 64 0a 63 68   ┆0..lrmax; lrelm=packed record ch┆
0x013480…0134a0             61 69 6e 3a 20 6c 72 69 6e 78 3b 20 28 2a 6e 65 78 74 20 69 74 65 6d 20 69 6e 20 74 68 69 73 20   ┆ain: lrinx; (*next item in this ┆
0x0134a0…0134c0             73 74 61 74 65 2a 29 0a 6e 65 78 74 3a 20 6c 72 69 6e 78 3b 20 28 2a 6e 65 78 74 20 73 74 61 74   ┆state*) next: lrinx; (*next stat┆
0x0134c0…0134e0             65 2a 29 0a 63 61 73 65 20 6b 69 6e 64 3a 20 6d 6f 64 65 20 6f 66 0a 31 2c 32 2c 34 2c 36 3a 20   ┆e*) case kind: mode of 1,2,4,6: ┆
0x0134e0…013500             28 73 79 6d 62 3a 20 73 79 6d 62 6f 6c 3b 20 65 72 72 3a 20 65 72 72 6e 6f 29 3b 0a 30 2c 33 20   ┆(symb: symbol; err: errno); 0,3 ┆
0x013500…013520             20 20 20 3a 20 28 72 73 3a 20 72 73 6c 65 6e 67 74 68 3b 20 70 72 6f 64 3a 20 70 72 6f 64 6e 6f   ┆   : (rs: rslength; prod: prodno┆
0x013520…013540             29 3b 0a 35 3a 20 20 20 20 20 28 6c 62 3a 20 6c 72 69 6e 78 29 0a 65 6e 64 3b 0a 6c 78 69 6e 78   ┆); 5:     (lb: lrinx) end; lxinx┆
0x013540…013560             3d 30 2e 2e 6c 78 6d 61 78 3b 0a 6c 78 65 6c 6d 3d 70 61 63 6b 65 64 20 72 65 63 6f 72 64 0a 6e   ┆=0..lxmax; lxelm=packed record n┆
0x013560…013580             70 2c 68 70 3a 20 6c 78 69 6e 78 3b 0a 74 76 3a 20 73 79 6d 62 6f 6c 3b 20 63 68 3a 63 68 61 72   ┆p,hp: lxinx; tv: symbol; ch:char┆
0x013580…0135a0             0a 65 6e 64 3b 0a 73 74 61 63 6b 65 6c 6d 3d 70 61 63 6b 65 64 20 72 65 63 6f 72 64 0a 6c 69 6e   ┆ end; stackelm=packed record lin┆
0x0135a0…0135c0             6b 3a 20 73 74 61 63 6b 69 6e 78 3b 0a 74 61 62 6c 65 3a 20 6c 72 69 6e 78 0a 65 6e 64 3b 0a 28   ┆k: stackinx; table: lrinx end; (┆
0x0135c0…0135e0             2a 2d 65 6e 64 2d 6f 66 2d 70 61 72 73 65 72 2d 74 79 70 65 73 2d 2a 29 0a 0a 76 61 72 0a 0a 6c   ┆*-end-of-parser-types-*)  var  l┆
0x0135e0…013600             72 3a 20 61 72 72 61 79 5b 6c 72 69 6e 78 5d 20 6f 66 20 6c 72 65 6c 6d 3b 20 28 2a 20 6c 72 2d   ┆r: array[lrinx] of lrelm; (* lr-┆
0x013600…013620 (5, 0, 6)   70 61 72 73 65 20 74 61 62 6c 65 73 20 2a 29 0a 0a 70 61 72 73 65 73 74 61 63 6b 3a 20 61 72 72   ┆parse tables *)  parsestack: arr┆
0x013620…013640             61 79 5b 73 74 61 63 6b 69 6e 78 5d 20 6f 66 20 73 74 61 63 6b 65 6c 6d 3b 20 28 2a 70 61 72 73   ┆ay[stackinx] of stackelm; (*pars┆
0x013640…013660             65 20 73 74 61 63 6b 2a 29 0a 0a 65 6e 74 72 79 3a 20 61 72 72 61 79 5b 63 68 61 72 5d 20 6f 66   ┆e stack*)  entry: array[char] of┆
0x013660…013680             20 6c 78 65 6c 6d 3b 0a 6c 78 3a 20 61 72 72 61 79 5b 6c 78 69 6e 78 5d 20 6f 66 20 6c 78 65 6c   ┆ lxelm; lx: array[lxinx] of lxel┆
0x013680…0136a0             6d 3b 20 28 2a 6c 65 78 69 63 61 6c 20 74 61 62 6c 65 73 2a 29 0a 6e 61 6d 65 63 68 2c 20 20 20   ┆m; (*lexical tables*) namech,   ┆
0x0136a0…0136c0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 63 68 61 72 73 20 75 73 65 64 20 69 6e   ┆                 (*chars used in┆
0x0136c0…0136e0             20 6e 61 6d 65 73 2a 29 0a 64 69 67 69 74 63 68 3a 73 65 74 20 6f 66 20 63 68 61 72 3b 20 20 20   ┆ names*) digitch:set of char;   ┆
0x0136e0…013700             20 20 20 20 28 2a 63 68 61 72 73 20 75 73 65 64 20 66 6f 72 20 64 69 67 69 74 73 2a 29 0a 6e 65   ┆    (*chars used for digits*) ne┆
0x013700…013720             77 73 79 6d 62 3a 20 73 79 6d 62 6f 6c 3b 20 20 20 20 20 20 20 20 20 20 20 28 2a 63 75 72 72 65   ┆wsymb: symbol;           (*curre┆
0x013720…013740             6e 74 20 74 65 72 6d 69 6e 61 6c 20 73 79 6d 62 6f 6c 2a 29 0a 63 68 3a 20 63 68 61 72 3b 20 20   ┆nt terminal symbol*) ch: char;  ┆
0x013740…013760             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 63 75 72 72 65 6e 74 20 63 68 61 72 2a 29   ┆                (*current char*)┆
0x013760…013780             0a 73 74 72 69 6e 67 65 73 63 61 70 65 3a 20 69 6e 74 65 67 65 72 3b 20 20 20 20 20 28 2a 69 6e   ┆ stringescape: integer;     (*in┆
0x013780…0137a0             74 65 72 6e 61 6c 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 65 73 63 61 70 65   ┆ternal value of the stringescape┆
0x0137a0…0137c0             20 74 65 72 6d 69 6e 61 6c 2a 29 0a 6f 6c 64 62 75 66 69 3a 20 63 68 62 75 66 69 6e 78 3b 20 20   ┆ terminal*) oldbufi: chbufinx;  ┆
0x0137c0…0137e0             20 20 20 20 20 20 20 28 2a 66 69 72 73 74 20 63 68 61 72 20 69 6e 20 63 68 62 75 66 20 6f 66 20   ┆       (*first char in chbuf of ┆
0x0137e0…013800             63 75 72 72 65 6e 74 20 6c 65 78 69 63 61 6c 20 74 6f 6b 65 6e 20 2a 29 0a 6d 6f 72 65 69 6e 70   ┆current lexical token *) moreinp┆
0x013800…013820 (5, 0, 7)   75 74 3a 62 6f 6f 6c 65 61 6e 3b 20 20 20 20 20 20 20 20 20 28 2a 62 65 63 6f 6d 65 73 20 66 61   ┆ut:boolean;         (*becomes fa┆
0x013820…013840             6c 73 65 20 77 68 65 6e 20 69 6e 70 75 74 20 69 73 20 65 78 68 61 75 73 74 65 64 2a 29 0a 63 6f   ┆lse when input is exhausted*) co┆
0x013840…013860             6d 65 6e 64 20 3a 20 20 61 72 72 61 79 5b 31 2e 2e 63 6f 6d 6c 65 6e 67 74 68 5d 20 6f 66 20 63   ┆mend :  array[1..comlength] of c┆
0x013860…013880             68 61 72 20 3b 20 28 2a 73 74 72 69 6e 67 20 77 68 69 63 68 20 65 6e 64 73 20 61 20 63 6f 6d 6d   ┆har ; (*string which ends a comm┆
0x013880…0138a0             65 6e 74 20 2a 29 0a 70 72 6f 64 74 61 62 20 3a 20 61 72 72 61 79 20 5b 70 72 6f 64 6e 6f 5d 20   ┆ent *) prodtab : array [prodno] ┆
0x0138a0…0138c0             6f 66 20 69 6e 74 65 67 65 72 3b 0a 0a 28 2a 2d 65 6e 64 2d 6f 66 2d 70 61 72 73 65 72 2d 76 61   ┆of integer;  (*-end-of-parser-va┆
0x0138c0…0138e0             72 69 61 62 6c 65 73 2d 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 64 75 6d 70 6c 72 3b 0a 76   ┆riables-*)   procedure dumplr; v┆
0x0138e0…013900             61 72 20 69 3a 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 20 77 72 69 74 65 6c 6e 28 6f 75 74 70   ┆ar i:integer; begin writeln(outp┆
0x013900…013920             75 74 2c 20 27 20 20 69 20 27 2c 27 20 63 68 61 69 6e 20 6e 65 78 74 20 6b 69 6e 64 20 73 79 6d   ┆ut, '  i ',' chain next kind sym┆
0x013920…013940             62 20 70 72 6f 64 27 29 3b 0a 66 6f 72 20 69 3a 3d 20 31 20 74 6f 20 6c 72 6d 61 78 20 64 6f 0a   ┆b prod'); for i:= 1 to lrmax do ┆
0x013940…013960             77 69 74 68 20 6c 72 5b 69 5d 20 64 6f 0a 62 65 67 69 6e 20 77 72 69 74 65 28 6f 75 74 70 75 74   ┆with lr[i] do begin write(output┆
0x013960…013980             2c 20 27 20 27 2c 69 3a 33 2c 63 68 61 69 6e 3a 36 2c 6e 65 78 74 3a 35 2c 6b 69 6e 64 3a 35 29   ┆, ' ',i:3,chain:6,next:5,kind:5)┆
0x013980…0139a0             3b 0a 63 61 73 65 20 6b 69 6e 64 20 6f 66 0a 31 2c 32 2c 34 2c 36 3a 20 77 72 69 74 65 6c 6e 28   ┆; case kind of 1,2,4,6: writeln(┆
0x0139a0…0139c0             6f 75 74 70 75 74 2c 20 73 79 6d 62 3a 35 2c 65 72 72 3a 35 29 3b 0a 30 2c 33 20 20 20 20 3a 20   ┆output, symb:5,err:5); 0,3    : ┆
0x0139c0…0139e0             77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 72 73 3a 35 2c 70 72 6f 64 3a 35 29 3b 0a 35 3a   ┆writeln(output, rs:5,prod:5); 5:┆
0x0139e0…013a00             20 20 20 20 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 6c 62 3a 35 29 0a 65 6e 64 0a 65   ┆     writeln(output, lb:5) end e┆
0x013a00…013a20 (5, 0, 8)   6e 64 0a 65 6e 64 3b 0a 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 69 6e 70 75 74   ┆nd end;  (* procedures for input┆
0x013a20…013a40             2f 6f 75 74 70 75 74 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 2a 29 0a 28 2a 24 72 2b 2a 29 0a   ┆/output of characters*) (*$r+*) ┆
0x013a40…013a60             70 72 6f 63 65 64 75 72 65 20 72 65 61 64 6c 69 6e 65 3b 0a 28 2a 24 72 2d 2a 29 0a 74 79 70 65   ┆procedure readline; (*$r-*) type┆
0x013a60…013a80             0a 74 5f 6f 70 65 72 61 74 6f 72 3d 20 28 6e 6f 5f 6f 70 2c 20 6c 74 5f 6f 70 2c 20 6c 65 5f 6f   ┆ t_operator= (no_op, lt_op, le_o┆
0x013a80…013aa0             70 2c 20 67 74 5f 6f 70 2c 20 67 65 5f 6f 70 2c 20 65 71 5f 6f 70 2c 20 64 69 66 5f 6f 70 2c 20   ┆p, gt_op, ge_op, eq_op, dif_op, ┆
0x013aa0…013ac0             6f 72 5f 6f 70 2c 20 78 6f 72 5f 6f 70 29 3b 0a 0a 76 61 72 20 6c 67 74 2c 20 74 65 72 6d 69 6e   ┆or_op, xor_op);  var lgt, termin┆
0x013ac0…013ae0             61 74 6f 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 73 74 6f 70 5f 72 65 61 64 20 3a 20 62 6f 6f 6c   ┆ator : integer; stop_read : bool┆
0x013ae0…013b00             65 61 6e 3b 0a 63 68 20 3a 20 63 68 61 72 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 64 69 72 65 63   ┆ean; ch : char;  procedure direc┆
0x013b00…013b20             74 69 76 65 5f 77 61 72 6e 69 6e 67 28 77 61 72 6e 69 6e 67 5f 74 65 78 74 3a 20 74 5f 64 69 72   ┆tive_warning(warning_text: t_dir┆
0x013b20…013b40             65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 73 29 3b 0a 28 2a 20 6d 61 72 6b 20 70 6f 69 6e 74 20   ┆ective_warnings); (* mark point ┆
0x013b40…013b60             6f 66 20 65 72 72 6f 72 20 69 6e 20 64 69 72 65 63 74 69 76 65 20 6c 69 6e 65 20 61 6e 64 20 74   ┆of error in directive line and t┆
0x013b60…013b80             72 65 61 74 20 74 68 65 20 6c 69 6e 65 20 61 73 20 61 20 63 6f 6d 6d 65 6e 74 20 2a 29 0a 76 61   ┆reat the line as a comment *) va┆
0x013b80…013ba0             72 20 73 74 65 70 3a 20 69 6e 74 65 67 65 72 3b 0a 70 72 67 72 6c 73 74 20 3a 20 62 6f 6f 6c 65   ┆r step: integer; prgrlst : boole┆
0x013ba0…013bc0             61 6e 3b 0a 62 65 67 69 6e 0a 69 66 20 6e 6f 74 20 70 72 69 6e 74 65 64 20 74 68 65 6e 0a 62 65   ┆an; begin if not printed then be┆
0x013bc0…013be0             67 69 6e 0a 70 72 67 72 6c 73 74 3a 3d 20 70 72 6f 67 72 61 6d 6c 69 73 74 3b 0a 70 72 6f 67 72   ┆gin prgrlst:= programlist; progr┆
0x013be0…013c00             61 6d 6c 69 73 74 3a 3d 20 74 72 75 65 3b 20 28 2a 20 66 6f 72 63 65 20 70 72 69 6e 74 69 6e 67   ┆amlist:= true; (* force printing┆
0x013c00…013c20 (5, 0, 9)   20 6f 66 20 65 72 72 6f 6e 65 6f 75 73 20 6c 69 6e 65 20 2a 29 0a 70 72 69 6e 74 6c 69 6e 65 3b   ┆ of erroneous line *) printline;┆
0x013c20…013c40             0a 70 72 6f 67 72 61 6d 6c 69 73 74 3a 3d 20 70 72 67 72 6c 73 74 3b 0a 65 6e 64 3b 0a 66 6f 72   ┆ programlist:= prgrlst; end; for┆
0x013c40…013c60             20 73 74 65 70 3a 3d 20 31 20 74 6f 20 6c 69 6e 65 69 6e 78 2d 31 2b 36 20 64 6f 0a 77 72 69 74   ┆ step:= 1 to lineinx-1+6 do writ┆
0x013c60…013c80             65 28 6f 75 74 70 75 74 2c 20 27 20 27 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20   ┆e(output, ' '); writeln(output, ┆
0x013c80…013ca0             27 5e 27 29 3b 0a 63 61 73 65 20 77 61 72 6e 69 6e 67 5f 74 65 78 74 20 6f 66 0a 65 78 70 72 65   ┆'^'); case warning_text of expre┆
0x013ca0…013cc0             73 73 69 6f 6e 5f 65 78 70 65 63 74 65 64 3a 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20   ┆ssion_expected: writeln(output, ┆
0x013cc0…013ce0             27 2a 2a 2a 20 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70 65 63 74 65 64 27 29 3b 0a 6f 72 5f 6f   ┆'*** expression expected'); or_o┆
0x013ce0…013d00             70 65 72 61 74 6f 72 5f 65 78 70 65 63 74 65 64 3a 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74   ┆perator_expected: writeln(output┆
0x013d00…013d20             2c 20 27 2a 2a 2a 20 28 58 29 4f 52 20 65 78 70 65 63 74 65 64 27 29 3b 0a 61 6e 64 5f 65 78 70   ┆, '*** (X)OR expected'); and_exp┆
0x013d20…013d40             65 63 74 65 64 3a 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20 41 4e 44 20   ┆ected: writeln(output, '*** AND ┆
0x013d40…013d60             65 78 70 65 63 74 65 64 27 29 3b 0a 72 69 67 68 74 5f 70 61 72 5f 65 78 70 65 63 74 65 64 3a 20   ┆expected'); right_par_expected: ┆
0x013d60…013d80             77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20 22 29 22 20 65 78 70 65 63 74 65   ┆writeln(output, '*** ")" expecte┆
0x013d80…013da0             64 20 27 29 3b 0a 65 71 5f 65 78 70 65 63 74 65 64 3a 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75   ┆d '); eq_expected: writeln(outpu┆
0x013da0…013dc0             74 2c 20 27 2a 2a 2a 20 22 3d 22 20 65 78 70 65 63 74 65 64 27 29 3b 0a 75 6e 64 65 66 69 6e 65   ┆t, '*** "=" expected'); undefine┆
0x013dc0…013de0             64 5f 73 77 69 74 63 68 3a 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20 73   ┆d_switch: writeln(output, '*** s┆
0x013de0…013e00             77 69 74 63 68 20 6e 6f 74 20 64 65 66 69 6e 65 64 2c 20 76 61 6c 75 65 20 30 20 61 73 73 75 6d   ┆witch not defined, value 0 assum┆
0x013e00…013e20 (5, 0, 10)  65 64 27 29 3b 0a 75 6e 6b 6e 6f 77 6e 5f 64 69 72 65 63 74 69 76 65 3a 20 77 72 69 74 65 6c 6e   ┆ed'); unknown_directive: writeln┆
0x013e20…013e40             28 6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20 75 6e 6b 6e 6f 77 6e 20 64 69 72 65 63 74 69 76 65 27   ┆(output, '*** unknown directive'┆
0x013e40…013e60             29 3b 0a 66 69 6c 65 5f 64 6f 65 73 5f 6e 6f 74 5f 65 78 69 73 74 3a 20 77 72 69 74 65 6c 6e 28   ┆); file_does_not_exist: writeln(┆
0x013e60…013e80             6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20 49 4e 43 4c 55 44 45 20 66 69 6c 65 20 64 6f 65 73 20 6e   ┆output, '*** INCLUDE file does n┆
0x013e80…013ea0             6f 74 20 65 78 69 73 74 20 27 29 3b 0a 72 61 6e 67 65 5f 65 72 72 6f 72 3a 20 77 72 69 74 65 6c   ┆ot exist '); range_error: writel┆
0x013ea0…013ec0             6e 28 6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20 76 61 6c 75 65 20 6f 75 74 73 69 64 65 20 72 61 6e   ┆n(output, '*** value outside ran┆
0x013ec0…013ee0             67 65 27 29 3b 0a 65 6e 64 69 66 5f 77 69 74 68 6f 75 74 5f 6d 61 74 63 68 69 6e 67 5f 69 66 3a   ┆ge'); endif_without_matching_if:┆
0x013ee0…013f00             20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20 45 4e 44 49 46 20 77 69 74 68   ┆ writeln(output, '*** ENDIF with┆
0x013f00…013f20             6f 75 74 20 6d 61 74 63 68 69 6e 67 20 49 46 27 29 3b 0a 65 6c 73 65 69 66 5f 77 69 74 68 6f 75   ┆out matching IF'); elseif_withou┆
0x013f20…013f40             74 5f 6d 61 74 63 68 69 6e 67 5f 69 66 3a 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27   ┆t_matching_if: writeln(output, '┆
0x013f40…013f60             2a 2a 2a 20 45 4c 53 45 49 46 20 77 69 74 68 6f 75 74 20 6d 61 74 63 68 69 6e 67 20 49 46 27 29   ┆*** ELSEIF without matching IF')┆
0x013f60…013f80             3b 0a 65 6c 73 65 5f 6e 6f 74 5f 61 66 74 65 72 5f 69 66 5f 6f 72 5f 65 6c 73 65 69 66 3a 20 77   ┆; else_not_after_if_or_elseif: w┆
0x013f80…013fa0             72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20 45 4c 53 45 20 77 69 74 68 6f 75 74   ┆riteln(output, '*** ELSE without┆
0x013fa0…013fc0             20 6d 61 74 63 68 69 6e 67 20 49 46 20 6f 72 20 45 4c 53 45 49 46 27 29 3b 0a 65 6c 73 65 0a 77   ┆ matching IF or ELSEIF'); else w┆
0x013fc0…013fe0             72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20 6f 74 68 65 72 20 65 72 72 6f 72 3a   ┆riteln(output, '*** other error:┆
0x013fe0…014000             20 27 2c 20 6f 72 64 28 77 61 72 6e 69 6e 67 5f 74 65 78 74 29 29 3b 0a 65 6e 64 3b 0a 0a 69 66   ┆ ', ord(warning_text)); end;  if┆
0x014000…014020 (5, 0, 11)  20 77 61 72 6e 69 6e 67 5f 74 65 78 74 3c 3e 75 6e 64 65 66 69 6e 65 64 5f 73 77 69 74 63 68 20   ┆ warning_text<>undefined_switch ┆
0x014020…014040             74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20   ┆then begin writeln(output, '*** ┆
0x014040…014060             64 69 72 65 63 74 69 76 65 20 6c 69 6e 65 20 73 6b 69 70 70 65 64 27 29 3b 0a 73 74 6f 70 5f 72   ┆directive line skipped'); stop_r┆
0x014060…014080             65 61 64 20 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 65 78 69 74 20 67 65 74 20 61 6e 64 20 68 61   ┆ead := false; (* exit get and ha┆
0x014080…0140a0             6e 64 6c 65 20 64 69 72 65 63 74 69 76 65 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 64   ┆ndle directive *) end; end; (* d┆
0x0140a0…0140c0             69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆irective_warning *)   procedure ┆
0x0140c0…0140e0             6e 65 78 74 63 68 61 72 3b 0a 28 2a 20 6c 65 74 20 63 68 20 62 65 20 6e 65 78 74 20 73 69 67 6e   ┆nextchar; (* let ch be next sign┆
0x0140e0…014100             69 66 69 63 61 6e 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 64 69 72 65 63 74 69 76 65 20 6c   ┆ificant character of directive l┆
0x014100…014120             69 6e 65 2c 20 69 2e 65 2e 20 73 6b 69 70 0a 64 6f 75 62 6c 65 20 62 6c 61 6e 6b 73 2c 20 6c 65   ┆ine, i.e. skip double blanks, le┆
0x014120…014140             74 74 65 72 73 20 61 72 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 75 70 70 65 72 20 63 61 73   ┆tters are converted to upper cas┆
0x014140…014160             65 2c 20 6c 69 6e 65 69 6e 78 20 64 65 6e 6f 74 65 73 20 74 68 65 0a 70 6f 73 69 74 69 6f 6e 20   ┆e, lineinx denotes the position ┆
0x014160…014180             6f 66 20 63 68 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 69 76 65 20 6c 69 6e 65 2c 20 69 66 20   ┆of ch in the directive line, if ┆
0x014180…0141a0             6c 69 6e 65 69 6e 78 20 72 65 61 63 68 65 73 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 0a 6c   ┆lineinx reaches the end of the l┆
0x0141a0…0141c0             69 6e 65 20 63 68 20 69 73 20 61 73 73 69 67 6e 65 64 20 61 20 62 6c 61 6e 6b 20 63 68 61 72 61   ┆ine ch is assigned a blank chara┆
0x0141c0…0141e0             63 74 65 72 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 6c 69 6e 65 69 6e 78 3c 6c 69 6e 65 6c 65 6e   ┆cter *) begin if lineinx<linelen┆
0x0141e0…014200             67 74 68 20 74 68 65 6e 0a 6c 69 6e 65 69 6e 78 3a 3d 20 6c 69 6e 65 69 6e 78 2b 31 3b 0a 63 68   ┆gth then lineinx:= lineinx+1; ch┆
0x014200…014220 (5, 0, 12)  3a 3d 20 75 70 63 61 73 65 28 6c 69 6e 65 5b 20 6c 69 6e 65 69 6e 78 20 5d 29 3b 0a 69 66 20 63   ┆:= upcase(line[ lineinx ]); if c┆
0x014220…014240             68 3d 27 20 27 20 74 68 65 6e 0a 77 68 69 6c 65 20 28 6c 69 6e 65 69 6e 78 3c 6c 69 6e 65 6c 65   ┆h=' ' then while (lineinx<linele┆
0x014240…014260             6e 67 74 68 29 20 61 6e 64 20 28 6c 69 6e 65 5b 20 6c 69 6e 65 69 6e 78 2b 31 20 5d 3d 27 20 27   ┆ngth) and (line[ lineinx+1 ]=' '┆
0x014260…014280             29 20 64 6f 0a 6c 69 6e 65 69 6e 78 3a 3d 20 6c 69 6e 65 69 6e 78 2b 31 3b 0a 69 66 20 64 69 72   ┆) do lineinx:= lineinx+1; if dir┆
0x014280…0142a0             5f 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c   ┆_testoutput then writeln(output,┆
0x0142a0…0142c0             20 27 6e 65 78 74 63 68 61 72 3a 20 22 27 2c 20 63 68 2c 20 27 22 27 29 3b 0a 65 6e 64 3b 20 28   ┆ 'nextchar: "', ch, '"'); end; (┆
0x0142c0…0142e0             2a 20 6e 65 78 74 63 68 61 72 20 2a 29 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 67 65 74 5f 69 6e 74   ┆* nextchar *)   function get_int┆
0x0142e0…014300             3a 20 69 6e 74 65 67 65 72 3b 0a 28 2a 20 63 68 20 69 73 20 66 69 72 73 74 20 64 69 67 69 74 20   ┆: integer; (* ch is first digit ┆
0x014300…014320             6f 66 20 74 68 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 74 6f 20 70 69 63 6b 75 70 20 66   ┆of the integer value to pickup f┆
0x014320…014340             72 6f 6d 20 74 68 65 20 6c 69 6e 65 20 62 75 66 66 65 72 20 2a 29 0a 76 61 72 0a 72 65 73 75 6c   ┆rom the line buffer *) var resul┆
0x014340…014360             74 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 72 65 73 75 6c 74 3a 3d 20 30 3b 0a 77 68   ┆t: integer; begin result:= 0; wh┆
0x014360…014380             69 6c 65 20 63 68 20 69 6e 20 64 69 67 69 74 63 68 20 64 6f 0a 62 65 67 69 6e 0a 72 65 73 75 6c   ┆ile ch in digitch do begin resul┆
0x014380…0143a0             74 3a 3d 20 72 65 73 75 6c 74 2a 31 30 2b 6f 72 64 28 63 68 29 2d 6f 72 64 28 27 30 27 29 3b 0a   ┆t:= result*10+ord(ch)-ord('0'); ┆
0x0143a0…0143c0             6e 65 78 74 63 68 61 72 3b 0a 65 6e 64 3b 0a 67 65 74 5f 69 6e 74 3a 3d 20 72 65 73 75 6c 74 3b   ┆nextchar; end; get_int:= result;┆
0x0143c0…0143e0             0a 69 66 20 63 68 3d 27 20 27 20 74 68 65 6e 0a 6e 65 78 74 63 68 61 72 3b 0a 69 66 20 64 69 72   ┆ if ch=' ' then nextchar; if dir┆
0x0143e0…014400             5f 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c   ┆_testoutput then writeln(output,┆
0x014400…014420 (5, 0, 13)  20 27 67 65 74 5f 69 6e 74 3d 20 27 2c 20 72 65 73 75 6c 74 29 3b 0a 65 6e 64 3b 20 28 2a 20 67   ┆ 'get_int= ', result); end; (* g┆
0x014420…014440             65 74 20 69 6e 74 20 2a 29 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 67 65 74 5f 73 77 69 74 63 68 28   ┆et int *)   function get_switch(┆
0x014440…014460             77 61 72 6e 5f 69 66 5f 75 6e 64 65 66 3a 20 62 6f 6f 6c 65 61 6e 29 3a 20 70 5f 73 77 69 74 63   ┆warn_if_undef: boolean): p_switc┆
0x014460…014480             68 3b 0a 28 2a 20 70 69 63 6b 75 70 20 61 20 73 77 69 74 63 68 20 6e 61 6d 65 2c 20 73 65 61 72   ┆h; (* pickup a switch name, sear┆
0x014480…0144a0             63 68 20 74 68 72 6f 75 67 68 20 74 68 65 20 6c 69 73 74 20 6f 66 20 6b 6e 6f 77 6e 20 73 77 69   ┆ch through the list of known swi┆
0x0144a0…0144c0             74 63 68 65 73 2c 20 69 66 20 6e 6f 74 0a 66 6f 75 6e 64 20 74 68 65 6e 20 69 6e 73 65 72 74 20   ┆tches, if not found then insert ┆
0x0144c0…0144e0             74 68 65 20 6e 61 6d 65 2c 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 70 6f 69 6e 74 65   ┆the name, the result is a pointe┆
0x0144e0…014500             72 20 74 6f 20 74 68 65 20 73 77 69 74 63 68 20 2a 29 0a 76 61 72 0a 69 6e 78 3a 20 69 6e 74 65   ┆r to the switch *) var inx: inte┆
0x014500…014520             67 65 72 3b 20 28 2a 20 69 6e 64 65 78 20 69 6e 74 6f 20 73 77 5f 6e 61 6d 65 20 2a 29 0a 73 77   ┆ger; (* index into sw_name *) sw┆
0x014520…014540             5f 6e 61 6d 65 3a 20 61 6c 66 61 3b 0a 73 77 5f 63 68 61 69 6e 3a 20 70 5f 73 77 69 74 63 68 3b   ┆_name: alfa; sw_chain: p_switch;┆
0x014540…014560             0a 62 65 67 69 6e 0a 69 6e 78 3a 3d 20 30 3b 0a 61 73 73 69 67 6e 5f 61 6c 66 61 28 73 77 5f 6e   ┆ begin inx:= 0; assign_alfa(sw_n┆
0x014560…014580             61 6d 65 2c 20 27 20 20 20 20 20 20 20 20 20 20 20 20 27 29 3b 0a 77 68 69 6c 65 20 63 68 20 69   ┆ame, '            '); while ch i┆
0x014580…0145a0             6e 20 6e 61 6d 65 63 68 20 64 6f 0a 62 65 67 69 6e 0a 69 6e 78 3a 3d 20 69 6e 78 2b 31 3b 0a 69   ┆n namech do begin inx:= inx+1; i┆
0x0145a0…0145c0             66 20 69 6e 78 3c 3d 61 6c 66 61 6c 65 6e 67 74 68 20 74 68 65 6e 0a 73 77 5f 6e 61 6d 65 5b 20   ┆f inx<=alfalength then sw_name[ ┆
0x0145c0…0145e0             69 6e 78 20 5d 3a 3d 20 63 68 3b 0a 6e 65 78 74 63 68 61 72 3b 0a 65 6e 64 3b 0a 73 77 5f 63 68   ┆inx ]:= ch; nextchar; end; sw_ch┆
0x0145e0…014600             61 69 6e 3a 3d 20 66 69 72 73 74 5f 73 77 69 74 63 68 3b 0a 77 68 69 6c 65 20 28 73 77 5f 63 68   ┆ain:= first_switch; while (sw_ch┆
0x014600…014620 (5, 0, 14)  61 69 6e 3c 3e 6e 69 6c 29 20 61 6e 64 20 28 73 77 5f 63 68 61 69 6e 5e 2e 6e 61 6d 65 3c 3e 73   ┆ain<>nil) and (sw_chain^.name<>s┆
0x014620…014640             77 5f 6e 61 6d 65 29 20 64 6f 0a 73 77 5f 63 68 61 69 6e 3a 3d 20 73 77 5f 63 68 61 69 6e 5e 2e   ┆w_name) do sw_chain:= sw_chain^.┆
0x014640…014660             6e 65 78 74 5f 73 77 69 74 63 68 3b 0a 69 66 20 73 77 5f 63 68 61 69 6e 3d 6e 69 6c 20 74 68 65   ┆next_switch; if sw_chain=nil the┆
0x014660…014680             6e 20 28 2a 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 61 64 64 20 74 6f 20 6c 69 73 74 20 2a 29 0a 62   ┆n (* not found, add to list *) b┆
0x014680…0146a0             65 67 69 6e 0a 69 66 20 77 61 72 6e 5f 69 66 5f 75 6e 64 65 66 20 74 68 65 6e 0a 64 69 72 65 63   ┆egin if warn_if_undef then direc┆
0x0146a0…0146c0             74 69 76 65 5f 77 61 72 6e 69 6e 67 28 75 6e 64 65 66 69 6e 65 64 5f 73 77 69 74 63 68 29 3b 0a   ┆tive_warning(undefined_switch); ┆
0x0146c0…0146e0             6e 65 77 28 73 77 5f 63 68 61 69 6e 29 3b 0a 77 69 74 68 20 73 77 5f 63 68 61 69 6e 5e 20 64 6f   ┆new(sw_chain); with sw_chain^ do┆
0x0146e0…014700             0a 62 65 67 69 6e 0a 6e 65 78 74 5f 73 77 69 74 63 68 3a 3d 20 66 69 72 73 74 5f 73 77 69 74 63   ┆ begin next_switch:= first_switc┆
0x014700…014720             68 3b 20 28 2a 20 69 6e 73 65 72 74 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 6c 69 73 74 20 2a 29   ┆h; (* insert in front of list *)┆
0x014720…014740             0a 6e 61 6d 65 3a 3d 20 73 77 5f 6e 61 6d 65 3b 0a 76 61 6c 3a 3d 20 30 3b 0a 73 77 69 74 63 68   ┆ name:= sw_name; val:= 0; switch┆
0x014740…014760             5f 61 73 73 69 67 6e 65 64 3a 3d 20 73 77 5f 6e 6f 74 5f 64 65 66 69 6e 65 64 3b 0a 65 6e 64 3b   ┆_assigned:= sw_not_defined; end;┆
0x014760…014780             20 28 2a 20 77 69 74 68 20 6e 65 77 20 65 6c 65 6d 65 6e 74 20 2a 29 0a 66 69 72 73 74 5f 73 77   ┆ (* with new element *) first_sw┆
0x014780…0147a0             69 74 63 68 3a 3d 20 73 77 5f 63 68 61 69 6e 3b 0a 65 6e 64 3b 20 28 2a 20 61 64 64 20 74 6f 20   ┆itch:= sw_chain; end; (* add to ┆
0x0147a0…0147c0             6c 69 73 74 20 2a 29 0a 67 65 74 5f 73 77 69 74 63 68 3a 3d 20 73 77 5f 63 68 61 69 6e 3b 0a 69   ┆list *) get_switch:= sw_chain; i┆
0x0147c0…0147e0             66 20 63 68 3d 27 20 27 20 74 68 65 6e 0a 6e 65 78 74 63 68 61 72 3b 0a 69 66 20 64 69 72 5f 74   ┆f ch=' ' then nextchar; if dir_t┆
0x0147e0…014800             65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 0a 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20   ┆estoutput then  writeln(output, ┆
0x014800…014820 (5, 0, 15)  27 67 65 74 20 73 77 69 74 63 68 3a 20 27 2c 20 6f 66 73 28 73 77 5f 63 68 61 69 6e 29 2c 20 27   ┆'get switch: ', ofs(sw_chain), '┆
0x014820…014840             20 6e 61 6d 65 3d 20 27 2c 20 73 77 5f 6e 61 6d 65 29 3b 0a 65 6e 64 3b 20 28 2a 20 67 65 74 20   ┆ name= ', sw_name); end; (* get ┆
0x014840…014860             73 77 69 74 63 68 20 2a 29 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 3a   ┆switch *)   function expression:┆
0x014860…014880             20 62 6f 6f 6c 65 61 6e 3b 20 66 6f 72 77 61 72 64 3b 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 66 61   ┆ boolean; forward;   function fa┆
0x014880…0148a0             63 74 6f 72 3a 20 69 6e 74 65 67 65 72 3b 0a 28 2a 20 66 61 63 74 6f 72 3a 3a 3d 20 75 6e 73 69   ┆ctor: integer; (* factor::= unsi┆
0x0148a0…0148c0             67 6e 65 64 20 63 6f 6e 73 74 61 6e 74 0a 2e 20 20 20 20 20 20 20 20 21 20 20 20 73 77 69 74 63   ┆gned constant .        !   switc┆
0x0148c0…0148e0             68 0a 2e 20 20 20 20 20 20 20 20 21 20 20 20 28 20 65 78 70 72 65 73 73 69 6f 6e 20 29 0a 2e 20   ┆h .        !   ( expression ) . ┆
0x0148e0…014900             20 20 20 20 20 20 20 21 20 20 20 4e 4f 54 20 66 61 63 74 6f 72 0a 2a 29 0a 76 61 72 0a 72 65 73   ┆       !   NOT factor *) var res┆
0x014900…014920             75 6c 74 3a 20 69 6e 74 65 67 65 72 3b 0a 73 77 69 74 63 68 3a 20 70 5f 73 77 69 74 63 68 3b 0a   ┆ult: integer; switch: p_switch; ┆
0x014920…014940             62 65 67 69 6e 0a 69 66 20 63 68 3d 27 28 27 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 65 78 74 63   ┆begin if ch='(' then begin nextc┆
0x014940…014960             68 61 72 3b 20 28 2a 20 62 79 70 61 73 73 20 74 68 65 20 28 20 2a 29 0a 69 66 20 63 68 3d 27 20   ┆har; (* bypass the ( *) if ch=' ┆
0x014960…014980             27 20 74 68 65 6e 0a 6e 65 78 74 63 68 61 72 3b 0a 72 65 73 75 6c 74 3a 3d 20 6f 72 64 28 65 78   ┆' then nextchar; result:= ord(ex┆
0x014980…0149a0             70 72 65 73 73 69 6f 6e 29 3b 0a 69 66 20 63 68 3c 3e 27 29 27 20 74 68 65 6e 0a 64 69 72 65 63   ┆pression); if ch<>')' then direc┆
0x0149a0…0149c0             74 69 76 65 5f 77 61 72 6e 69 6e 67 28 72 69 67 68 74 5f 70 61 72 5f 65 78 70 65 63 74 65 64 29   ┆tive_warning(right_par_expected)┆
0x0149c0…0149e0             0a 65 6c 73 65 0a 6e 65 78 74 63 68 61 72 3b 0a 69 66 20 63 68 3d 27 20 27 20 74 68 65 6e 0a 6e   ┆ else nextchar; if ch=' ' then n┆
0x0149e0…014a00             65 78 74 63 68 61 72 3b 0a 65 6e 64 20 28 2a 20 20 28 20 65 78 70 72 65 73 73 69 6f 6e 20 29 20   ┆extchar; end (*  ( expression ) ┆
0x014a00…014a20 (5, 1, 1)   20 2a 29 0a 65 6c 73 65 0a 69 66 20 63 68 20 69 6e 20 64 69 67 69 74 63 68 20 74 68 65 6e 0a 72   ┆ *) else if ch in digitch then r┆
0x014a20…014a40             65 73 75 6c 74 3a 3d 20 67 65 74 5f 69 6e 74 0a 65 6c 73 65 0a 69 66 20 63 68 20 69 6e 20 6e 61   ┆esult:= get_int else if ch in na┆
0x014a40…014a60             6d 65 63 68 20 74 68 65 6e 0a 62 65 67 69 6e 0a 73 77 69 74 63 68 3a 3d 20 67 65 74 5f 73 77 69   ┆mech then begin switch:= get_swi┆
0x014a60…014a80             74 63 68 28 74 72 75 65 29 3b 20 28 2a 20 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 20   ┆tch(true); (* directive_warning ┆
0x014a80…014aa0             69 66 20 6e 6f 74 20 64 65 66 69 6e 65 64 20 2a 29 0a 69 66 20 73 77 69 74 63 68 5e 2e 6e 61 6d   ┆if not defined *) if switch^.nam┆
0x014aa0…014ac0             65 3d 27 4e 4f 54 20 20 20 20 20 20 20 20 20 27 20 74 68 65 6e 0a 72 65 73 75 6c 74 3a 3d 20 6f   ┆e='NOT         ' then result:= o┆
0x014ac0…014ae0             72 64 28 66 61 63 74 6f 72 3d 30 29 0a 65 6c 73 65 0a 72 65 73 75 6c 74 3a 3d 20 73 77 69 74 63   ┆rd(factor=0) else result:= switc┆
0x014ae0…014b00             68 5e 2e 76 61 6c 3b 0a 65 6e 64 20 28 2a 20 73 77 69 74 63 68 2f 20 4e 4f 54 20 66 61 63 74 6f   ┆h^.val; end (* switch/ NOT facto┆
0x014b00…014b20             72 20 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69   ┆r  *) else begin directive_warni┆
0x014b20…014b40             6e 67 28 65 78 70 72 65 73 73 69 6f 6e 5f 65 78 70 65 63 74 65 64 29 3b 0a 72 65 73 75 6c 74 3a   ┆ng(expression_expected); result:┆
0x014b40…014b60             3d 20 30 3b 0a 65 6e 64 3b 0a 66 61 63 74 6f 72 3a 3d 20 72 65 73 75 6c 74 3b 0a 69 66 20 64 69   ┆= 0; end; factor:= result; if di┆
0x014b60…014b80             72 5f 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74   ┆r_testoutput then writeln(output┆
0x014b80…014ba0             2c 20 27 66 61 63 74 6f 72 3d 20 27 2c 20 72 65 73 75 6c 74 29 3b 0a 65 6e 64 3b 20 28 2a 20 66   ┆, 'factor= ', result); end; (* f┆
0x014ba0…014bc0             61 63 74 6f 72 20 2a 29 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 74 65 72 6d 3a 20 69 6e 74 65 67 65   ┆actor *)   function term: intege┆
0x014bc0…014be0             72 3b 0a 28 2a 20 74 65 72 6d 20 3a 3a 3d 20 66 61 63 74 6f 72 20 28 41 4e 44 20 66 61 63 74 6f   ┆r; (* term ::= factor (AND facto┆
0x014be0…014c00             72 29 2a 20 20 2a 29 0a 76 61 72 0a 72 65 73 75 6c 74 2c 20 6f 70 65 72 61 6e 64 3a 20 69 6e 74   ┆r)*  *) var result, operand: int┆
0x014c00…014c20 (5, 1, 2)   65 67 65 72 3b 0a 73 77 69 74 63 68 3a 20 70 5f 73 77 69 74 63 68 3b 0a 62 65 67 69 6e 0a 72 65   ┆eger; switch: p_switch; begin re┆
0x014c20…014c40             73 75 6c 74 3a 3d 20 66 61 63 74 6f 72 3b 0a 77 68 69 6c 65 20 63 68 3d 27 41 27 20 64 6f 0a 62   ┆sult:= factor; while ch='A' do b┆
0x014c40…014c60             65 67 69 6e 0a 73 77 69 74 63 68 3a 3d 20 67 65 74 5f 73 77 69 74 63 68 28 66 61 6c 73 65 20 28   ┆egin switch:= get_switch(false (┆
0x014c60…014c80             2a 20 64 6f 20 6e 6f 74 20 77 61 72 6e 20 69 66 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 69 74 20 6d   ┆* do not warn if not found, it m┆
0x014c80…014ca0             75 73 74 20 62 65 20 74 68 65 72 65 20 2a 29 29 3b 0a 69 66 20 73 77 69 74 63 68 5e 2e 6e 61 6d   ┆ust be there *)); if switch^.nam┆
0x014ca0…014cc0             65 3c 3e 27 41 4e 44 20 20 20 20 20 20 20 20 20 27 20 74 68 65 6e 0a 64 69 72 65 63 74 69 76 65   ┆e<>'AND         ' then directive┆
0x014cc0…014ce0             5f 77 61 72 6e 69 6e 67 28 61 6e 64 5f 65 78 70 65 63 74 65 64 29 3b 0a 6f 70 65 72 61 6e 64 3a   ┆_warning(and_expected); operand:┆
0x014ce0…014d00             3d 20 66 61 63 74 6f 72 3b 0a 72 65 73 75 6c 74 3a 3d 20 6f 72 64 28 28 72 65 73 75 6c 74 3c 3e   ┆= factor; result:= ord((result<>┆
0x014d00…014d20             30 29 20 61 6e 64 20 28 6f 70 65 72 61 6e 64 3c 3e 30 29 29 3b 0a 65 6e 64 3b 20 28 2a 20 77 68   ┆0) and (operand<>0)); end; (* wh┆
0x014d20…014d40             69 6c 65 20 2a 29 0a 74 65 72 6d 3a 3d 20 72 65 73 75 6c 74 3b 0a 65 6e 64 3b 20 28 2a 20 74 65   ┆ile *) term:= result; end; (* te┆
0x014d40…014d60             72 6d 20 2a 29 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 73 69 6d 70 6c 65 5f 65 78 70 72 65 73 73 69   ┆rm *)   function simple_expressi┆
0x014d60…014d80             6f 6e 3a 20 69 6e 74 65 67 65 72 3b 0a 28 2a 20 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f   ┆on: integer; (* simple expressio┆
0x014d80…014da0             6e 20 3a 3a 3d 20 73 69 67 6e 20 20 74 65 72 6d 20 20 28 6f 72 5f 6f 70 65 72 61 74 6f 72 20 20   ┆n ::= sign  term  (or_operator  ┆
0x014da0…014dc0             74 65 72 6d 29 2a 0a 0a 2e 20 20 73 69 67 6e 20 3a 3a 3d 20 65 6d 70 74 79 0a 2e 20 20 20 20 20   ┆term)*  .  sign ::= empty .     ┆
0x014dc0…014de0             20 20 21 20 20 20 2b 0a 2e 20 20 20 20 20 20 20 21 20 20 20 2d 0a 0a 2e 20 20 6f 72 5f 6f 70 65   ┆  !   + .       !   -  .  or_ope┆
0x014de0…014e00             72 61 74 6f 72 20 3a 3a 3d 20 4f 52 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 20   ┆rator ::= OR .              !   ┆
0x014e00…014e20 (5, 1, 3)   58 4f 52 0a 2a 29 0a 76 61 72 0a 72 65 73 75 6c 74 2c 20 6f 70 65 72 61 6e 64 3a 20 69 6e 74 65   ┆XOR *) var result, operand: inte┆
0x014e20…014e40             67 65 72 3b 0a 6f 70 65 72 61 74 6f 72 3a 20 74 5f 6f 70 65 72 61 74 6f 72 3b 0a 73 77 69 74 63   ┆ger; operator: t_operator; switc┆
0x014e40…014e60             68 3a 20 70 5f 73 77 69 74 63 68 3b 0a 62 65 67 69 6e 0a 69 66 20 63 68 3d 27 2b 27 20 74 68 65   ┆h: p_switch; begin if ch='+' the┆
0x014e60…014e80             6e 0a 62 65 67 69 6e 0a 6e 65 78 74 63 68 61 72 3b 0a 69 66 20 63 68 3d 27 20 27 20 74 68 65 6e   ┆n begin nextchar; if ch=' ' then┆
0x014e80…014ea0             0a 6e 65 78 74 63 68 61 72 3b 0a 72 65 73 75 6c 74 3a 3d 20 74 65 72 6d 3b 0a 65 6e 64 0a 65 6c   ┆ nextchar; result:= term; end el┆
0x014ea0…014ec0             73 65 0a 69 66 20 63 68 3d 27 2d 27 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 65 78 74 63 68 61 72   ┆se if ch='-' then begin nextchar┆
0x014ec0…014ee0             3b 0a 69 66 20 63 68 3d 27 20 27 20 74 68 65 6e 0a 6e 65 78 74 63 68 61 72 3b 0a 72 65 73 75 6c   ┆; if ch=' ' then nextchar; resul┆
0x014ee0…014f00             74 3a 3d 20 2d 74 65 72 6d 3b 0a 65 6e 64 0a 65 6c 73 65 0a 72 65 73 75 6c 74 3a 3d 20 74 65 72   ┆t:= -term; end else result:= ter┆
0x014f00…014f20             6d 3b 0a 0a 77 68 69 6c 65 20 28 63 68 3d 27 58 27 29 20 6f 72 20 28 63 68 3d 27 4f 27 29 20 64   ┆m;  while (ch='X') or (ch='O') d┆
0x014f20…014f40             6f 0a 62 65 67 69 6e 0a 73 77 69 74 63 68 3a 3d 20 67 65 74 5f 73 77 69 74 63 68 28 66 61 6c 73   ┆o begin switch:= get_switch(fals┆
0x014f40…014f60             65 28 2a 20 64 6f 20 6e 6f 74 20 77 61 72 6e 20 69 66 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 69 74   ┆e(* do not warn if not found, it┆
0x014f60…014f80             20 6d 75 73 74 20 62 65 20 74 68 65 72 65 20 2a 29 29 3b 0a 69 66 20 73 77 69 74 63 68 5e 2e 6e   ┆ must be there *)); if switch^.n┆
0x014f80…014fa0             61 6d 65 3d 27 58 4f 52 20 20 20 20 20 20 20 20 20 27 20 74 68 65 6e 0a 6f 70 65 72 61 74 6f 72   ┆ame='XOR         ' then operator┆
0x014fa0…014fc0             3a 3d 20 78 6f 72 5f 6f 70 0a 65 6c 73 65 0a 69 66 20 73 77 69 74 63 68 5e 2e 6e 61 6d 65 3d 27   ┆:= xor_op else if switch^.name='┆
0x014fc0…014fe0             4f 52 20 20 20 20 20 20 20 20 20 20 27 20 74 68 65 6e 0a 6f 70 65 72 61 74 6f 72 3a 3d 20 6f 72   ┆OR          ' then operator:= or┆
0x014fe0…015000             5f 6f 70 0a 65 6c 73 65 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 28 6f 72 5f 6f 70   ┆_op else directive_warning(or_op┆
0x015000…015020 (5, 1, 4)   65 72 61 74 6f 72 5f 65 78 70 65 63 74 65 64 29 3b 0a 6f 70 65 72 61 6e 64 3a 3d 20 74 65 72 6d   ┆erator_expected); operand:= term┆
0x015020…015040             3b 0a 69 66 20 6f 70 65 72 61 74 6f 72 3d 78 6f 72 5f 6f 70 20 74 68 65 6e 0a 72 65 73 75 6c 74   ┆; if operator=xor_op then result┆
0x015040…015060             3a 3d 20 6f 72 64 28 28 72 65 73 75 6c 74 3d 30 29 20 61 6e 64 20 28 6f 70 65 72 61 6e 64 3c 3e   ┆:= ord((result=0) and (operand<>┆
0x015060…015080             30 29 20 6f 72 20 28 72 65 73 75 6c 74 3c 3e 30 29 20 61 6e 64 20 28 6f 70 65 72 61 6e 64 3d 30   ┆0) or (result<>0) and (operand=0┆
0x015080…0150a0             29 29 0a 65 6c 73 65 0a 72 65 73 75 6c 74 3a 3d 20 6f 72 64 28 28 72 65 73 75 6c 74 3c 3e 30 29   ┆)) else result:= ord((result<>0)┆
0x0150a0…0150c0             20 6f 72 20 28 6f 70 65 72 61 6e 64 3c 3e 30 29 29 3b 0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65   ┆ or (operand<>0)); end; (* while┆
0x0150c0…0150e0             20 2a 29 0a 73 69 6d 70 6c 65 5f 65 78 70 72 65 73 73 69 6f 6e 3a 3d 20 72 65 73 75 6c 74 3b 0a   ┆ *) simple_expression:= result; ┆
0x0150e0…015100             65 6e 64 3b 20 28 2a 20 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 20 2a 29 0a 0a 0a 66   ┆end; (* simple expression *)   f┆
0x015100…015120             75 6e 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 28 2a 20   ┆unction expression: boolean; (* ┆
0x015120…015140             65 78 70 72 65 73 73 69 6f 6e 20 3a 3a 3d 20 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f 6e   ┆expression ::= simple expression┆
0x015140…015160             20 28 72 65 6c 5f 6f 70 65 72 61 74 6f 72 20 20 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f   ┆ (rel_operator  simple expressio┆
0x015160…015180             6e 29 2a 0a 2e 0a 2e 20 20 72 65 6c 5f 6f 70 65 72 61 74 6f 72 20 3a 3a 3d 20 3c 0a 2e 20 20 20   ┆n)* . .  rel_operator ::= < .   ┆
0x015180…0151a0             20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 20 3e 3d 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20   ┆            !   >= .            ┆
0x0151a0…0151c0             20 20 20 21 20 20 20 3c 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 20 3c 3d 0a   ┆   !   < .               !   <= ┆
0x0151c0…0151e0             2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 20 3d 0a 2e 20 20 20 20 20 20 20 20 20   ┆.               !   = .         ┆
0x0151e0…015200             20 20 20 20 20 20 21 20 20 20 3c 3e 0a 2a 29 0a 76 61 72 0a 72 65 73 75 6c 74 2c 20 6f 70 65 72   ┆      !   <> *) var result, oper┆
0x015200…015220 (5, 1, 5)   61 6e 64 3a 20 69 6e 74 65 67 65 72 3b 0a 6f 70 65 72 61 74 6f 72 3a 20 74 5f 6f 70 65 72 61 74   ┆and: integer; operator: t_operat┆
0x015220…015240             6f 72 3b 0a 73 77 69 74 63 68 3a 20 74 5f 73 77 69 74 63 68 3b 0a 0a 0a 62 65 67 69 6e 0a 72 65   ┆or; switch: t_switch;   begin re┆
0x015240…015260             73 75 6c 74 3a 3d 20 73 69 6d 70 6c 65 5f 65 78 70 72 65 73 73 69 6f 6e 3b 0a 6f 70 65 72 61 74   ┆sult:= simple_expression; operat┆
0x015260…015280             6f 72 3a 3d 20 6e 6f 5f 6f 70 3b 0a 69 66 20 63 68 3d 27 3c 27 20 74 68 65 6e 0a 62 65 67 69 6e   ┆or:= no_op; if ch='<' then begin┆
0x015280…0152a0             0a 6f 70 65 72 61 74 6f 72 3a 3d 20 6c 74 5f 6f 70 3b 0a 6e 65 78 74 63 68 61 72 3b 0a 69 66 20   ┆ operator:= lt_op; nextchar; if ┆
0x0152a0…0152c0             63 68 3d 27 3d 27 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 70 65 72 61 74 6f 72 3a 3d 20 6c 65 5f   ┆ch='=' then begin operator:= le_┆
0x0152c0…0152e0             6f 70 3b 0a 6e 65 78 74 63 68 61 72 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 63 68 3d 27 3e 27   ┆op; nextchar; end else if ch='>'┆
0x0152e0…015300             20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 70 65 72 61 74 6f 72 3a 3d 20 64 69 66 5f 6f 70 3b 0a 6e   ┆ then begin operator:= dif_op; n┆
0x015300…015320             65 78 74 63 68 61 72 3b 0a 65 6e 64 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 63 68 3d 27 3e 27   ┆extchar; end; end else if ch='>'┆
0x015320…015340             20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 70 65 72 61 74 6f 72 3a 3d 20 67 74 5f 6f 70 3b 0a 6e 65   ┆ then begin operator:= gt_op; ne┆
0x015340…015360             78 74 63 68 61 72 3b 0a 69 66 20 63 68 3d 27 3d 27 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 70 65   ┆xtchar; if ch='=' then begin ope┆
0x015360…015380             72 61 74 6f 72 3a 3d 20 67 65 5f 6f 70 3b 0a 6e 65 78 74 63 68 61 72 3b 0a 65 6e 64 3b 0a 65 6e   ┆rator:= ge_op; nextchar; end; en┆
0x015380…0153a0             64 20 28 2a 3e 2a 29 0a 65 6c 73 65 0a 69 66 20 63 68 3d 27 3d 27 20 74 68 65 6e 0a 62 65 67 69   ┆d (*>*) else if ch='=' then begi┆
0x0153a0…0153c0             6e 0a 6f 70 65 72 61 74 6f 72 3a 3d 20 65 71 5f 6f 70 3b 0a 6e 65 78 74 63 68 61 72 3b 0a 65 6e   ┆n operator:= eq_op; nextchar; en┆
0x0153c0…0153e0             64 3b 20 28 2a 3d 2a 29 0a 0a 69 66 20 63 68 3d 27 20 27 20 74 68 65 6e 0a 6e 65 78 74 63 68 61   ┆d; (*=*)  if ch=' ' then nextcha┆
0x0153e0…015400             72 3b 0a 0a 69 66 20 6f 70 65 72 61 74 6f 72 3c 3e 6e 6f 5f 6f 70 20 74 68 65 6e 0a 62 65 67 69   ┆r;  if operator<>no_op then begi┆
0x015400…015420 (5, 1, 6)   6e 0a 6f 70 65 72 61 6e 64 3a 3d 20 73 69 6d 70 6c 65 5f 65 78 70 72 65 73 73 69 6f 6e 3b 0a 63   ┆n operand:= simple_expression; c┆
0x015420…015440             61 73 65 20 6f 70 65 72 61 74 6f 72 20 6f 66 0a 6c 74 5f 6f 70 3a 20 72 65 73 75 6c 74 3a 3d 20   ┆ase operator of lt_op: result:= ┆
0x015440…015460             6f 72 64 28 72 65 73 75 6c 74 3c 6f 70 65 72 61 6e 64 29 3b 0a 6c 65 5f 6f 70 3a 20 72 65 73 75   ┆ord(result<operand); le_op: resu┆
0x015460…015480             6c 74 3a 3d 20 6f 72 64 28 72 65 73 75 6c 74 3c 3d 6f 70 65 72 61 6e 64 29 3b 0a 67 74 5f 6f 70   ┆lt:= ord(result<=operand); gt_op┆
0x015480…0154a0             3a 20 72 65 73 75 6c 74 3a 3d 20 6f 72 64 28 72 65 73 75 6c 74 3e 6f 70 65 72 61 6e 64 29 3b 0a   ┆: result:= ord(result>operand); ┆
0x0154a0…0154c0             67 65 5f 6f 70 3a 20 72 65 73 75 6c 74 3a 3d 20 6f 72 64 28 72 65 73 75 6c 74 3e 3d 6f 70 65 72   ┆ge_op: result:= ord(result>=oper┆
0x0154c0…0154e0             61 6e 64 29 3b 0a 65 71 5f 6f 70 3a 20 72 65 73 75 6c 74 3a 3d 20 6f 72 64 28 72 65 73 75 6c 74   ┆and); eq_op: result:= ord(result┆
0x0154e0…015500             3d 6f 70 65 72 61 6e 64 29 3b 0a 64 69 66 5f 6f 70 3a 20 72 65 73 75 6c 74 3a 3d 20 6f 72 64 28   ┆=operand); dif_op: result:= ord(┆
0x015500…015520             72 65 73 75 6c 74 3c 3e 6f 70 65 72 61 6e 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a   ┆result<>operand); end; (* case *┆
0x015520…015540             29 0a 65 6e 64 3b 20 28 2a 20 6f 70 65 72 61 74 6f 72 3c 3e 6e 6f 5f 6f 70 20 2a 29 0a 0a 65 78   ┆) end; (* operator<>no_op *)  ex┆
0x015540…015560             70 72 65 73 73 69 6f 6e 3a 3d 20 72 65 73 75 6c 74 3c 3e 30 3b 0a 65 6e 64 3b 20 28 2a 20 65 78   ┆pression:= result<>0; end; (* ex┆
0x015560…015580             70 72 65 73 73 69 6f 6e 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 67 65 74 5f 63 6f 6d 70   ┆pression *)   procedure get_comp┆
0x015580…0155a0             69 6c 65 72 5f 64 69 72 65 63 74 69 76 65 3b 0a 28 2a 20 64 6f 6c 6c 61 72 20 73 69 67 6e 20 6d   ┆iler_directive; (* dollar sign m┆
0x0155a0…0155c0             65 74 20 61 73 20 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 61 20 6c 69 6e 65 2c   ┆et as first character of a line,┆
0x0155c0…0155e0             20 6e 6f 77 20 68 61 6e 64 6c 65 20 74 68 65 20 64 69 72 65 63 74 69 76 65 2c 0a 69 6e 20 63 61   ┆ now handle the directive, in ca┆
0x0155e0…015600             73 65 20 6f 66 20 65 72 72 6f 72 73 20 74 68 65 20 6c 69 6e 65 20 77 69 6c 6c 20 62 65 20 74 72   ┆se of errors the line will be tr┆
0x015600…015620 (5, 1, 7)   65 61 74 65 64 20 61 73 20 61 20 63 6f 6d 6d 65 6e 74 2c 20 61 6e 64 20 61 20 77 61 72 6e 69 6e   ┆eated as a comment, and a warnin┆
0x015620…015640             67 20 69 73 20 67 69 76 65 6e 20 2a 29 0a 63 6f 6e 73 74 0a 28 2a 20 70 6f 73 73 69 62 6c 65 20   ┆g is given *) const (* possible ┆
0x015640…015660             64 69 72 65 63 74 69 76 65 73 20 61 72 65 3a 20 2a 29 0a 64 6c 72 5f 69 6e 63 6c 75 64 65 20 3d   ┆directives are: *) dlr_include =┆
0x015660…015680             20 20 20 20 27 49 4e 43 4c 55 44 45 20 20 20 20 20 27 3b 0a 64 6c 72 5f 69 66 20 3d 20 20 20 20   ┆    'INCLUDE     '; dlr_if =    ┆
0x015680…0156a0             20 20 20 20 20 27 49 46 20 20 20 20 20 20 20 20 20 20 27 3b 0a 64 6c 72 5f 65 6e 64 69 66 20 3d   ┆     'IF          '; dlr_endif =┆
0x0156a0…0156c0             20 20 20 20 20 20 27 45 4e 44 49 46 20 20 20 20 20 20 20 27 3b 0a 64 6c 72 5f 65 6c 73 65 20 3d   ┆      'ENDIF       '; dlr_else =┆
0x0156c0…0156e0             20 20 20 20 20 20 20 27 45 4c 53 45 20 20 20 20 20 20 20 20 27 3b 0a 64 6c 72 5f 65 6c 73 65 69   ┆       'ELSE        '; dlr_elsei┆
0x0156e0…015700             66 20 3d 20 20 20 20 20 27 45 4c 53 45 49 46 20 20 20 20 20 20 27 3b 0a 64 6c 72 5f 65 78 63 65   ┆f =     'ELSEIF      '; dlr_exce┆
0x015700…015720             70 74 69 6f 6e 20 3d 20 20 27 45 58 43 45 50 54 49 4f 4e 20 20 20 27 3b 0a 64 6c 72 5f 63 72 65   ┆ption =  'EXCEPTION   '; dlr_cre┆
0x015720…015740             61 74 65 73 69 7a 65 20 3d 20 27 43 52 45 41 54 45 53 49 5a 45 20 20 27 3b 0a 64 6c 72 5f 63 6f   ┆atesize = 'CREATESIZE  '; dlr_co┆
0x015740…015760             64 65 20 3d 20 20 20 20 20 20 20 27 43 4f 44 45 20 20 20 20 20 20 20 20 27 3b 0a 64 6c 72 5f 6e   ┆de =       'CODE        '; dlr_n┆
0x015760…015780             6f 63 6f 64 65 20 3d 20 20 20 20 20 27 4e 4f 43 4f 44 45 20 20 20 20 20 20 27 3b 0a 64 6c 72 5f   ┆ocode =     'NOCODE      '; dlr_┆
0x015780…0157a0             6c 69 73 74 20 3d 20 20 20 20 20 20 20 27 4c 49 53 54 20 20 20 20 20 20 20 20 27 3b 0a 64 6c 72   ┆list =       'LIST        '; dlr┆
0x0157a0…0157c0             5f 6e 6f 6c 69 73 74 20 3d 20 20 20 20 20 27 4e 4f 4c 49 53 54 20 20 20 20 20 20 27 3b 0a 64 6c   ┆_nolist =     'NOLIST      '; dl┆
0x0157c0…0157e0             72 5f 73 65 74 20 3d 20 20 20 20 20 20 20 20 27 53 45 54 20 20 20 20 20 20 20 20 20 27 3b 0a 64   ┆r_set =        'SET         '; d┆
0x0157e0…015800             6c 72 5f 64 65 66 61 75 6c 74 20 3d 20 20 20 20 27 44 45 46 41 55 4c 54 20 20 20 20 20 27 3b 0a   ┆lr_default =    'DEFAULT     '; ┆
0x015800…015820 (5, 1, 8)   64 6c 72 5f 76 65 72 73 69 6f 6e 20 3d 20 20 20 20 27 56 45 52 53 49 4f 4e 20 20 20 20 20 27 3b   ┆dlr_version =    'VERSION     ';┆
0x015820…015840             0a 64 6c 72 5f 6c 69 6e 65 6e 75 6d 62 65 72 3d 20 20 27 4c 49 4e 45 4e 55 4d 42 45 52 20 20 27   ┆ dlr_linenumber=  'LINENUMBER  '┆
0x015840…015860             3b 0a 64 6c 72 5f 72 6f 75 6e 64 75 70 6c 69 6e 65 3d 20 27 52 4f 55 4e 44 55 50 4c 49 4e 45 20   ┆; dlr_roundupline= 'ROUNDUPLINE ┆
0x015860…015880             27 3b 0a 0a 76 61 72 0a 63 68 31 3a 20 63 68 61 72 3b 20 28 2a 20 68 65 6c 70 20 63 68 61 72 61   ┆';  var ch1: char; (* help chara┆
0x015880…0158a0             63 74 65 72 2c 20 63 75 72 72 65 6e 74 20 63 68 61 72 61 63 74 65 72 20 69 73 20 74 68 65 20 67   ┆cter, current character is the g┆
0x0158a0…0158c0             6c 6f 62 61 6c 20 76 61 72 69 62 6c 65 20 63 68 20 2a 29 0a 69 6e 78 3a 20 69 6e 74 65 67 65 72   ┆lobal varible ch *) inx: integer┆
0x0158c0…0158e0             3b 20 28 2a 20 68 65 6c 70 20 69 6e 64 65 78 20 69 6e 74 6f 20 64 69 72 65 63 74 69 76 65 20 2a   ┆; (* help index into directive *┆
0x0158e0…015900             29 0a 68 65 6c 70 5f 76 61 6c 2c 20 76 65 72 73 69 6f 6e 5f 76 61 6c 31 2c 20 76 65 72 73 69 6f   ┆) help_val, version_val1, versio┆
0x015900…015920             6e 5f 76 61 6c 32 2c 20 76 65 72 73 69 6f 6e 5f 76 61 6c 33 3a 20 69 6e 74 65 67 65 72 3b 0a 73   ┆n_val2, version_val3: integer; s┆
0x015920…015940             77 69 74 63 68 3a 20 70 5f 73 77 69 74 63 68 3b 0a 66 69 6c 65 5f 6e 61 6d 65 2c 20 28 2a 20 66   ┆witch: p_switch; file_name, (* f┆
0x015940…015960             6f 72 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 66 69 6c 65 20 74 6f 20 62 65 20 49 4e 43 4c   ┆or the name of a file to be INCL┆
0x015960…015980             55 44 45 64 20 2a 29 0a 64 69 72 65 63 74 69 76 65 3a 20 61 6c 66 61 3b 0a 0a 62 65 67 69 6e 0a   ┆UDEd *) directive: alfa;  begin ┆
0x015980…0159a0             6e 65 78 74 63 68 61 72 3b 0a 6e 65 78 74 63 68 61 72 3b 20 28 2a 20 73 6b 69 70 20 74 68 65 20   ┆nextchar; nextchar; (* skip the ┆
0x0159a0…0159c0             64 6f 6c 6c 61 72 20 73 69 67 6e 20 2a 29 0a 69 6e 78 3a 3d 20 30 3b 0a 61 73 73 69 67 6e 5f 61   ┆dollar sign *) inx:= 0; assign_a┆
0x0159c0…0159e0             6c 66 61 28 64 69 72 65 63 74 69 76 65 2c 20 27 20 20 20 20 20 20 20 20 20 20 20 20 27 29 3b 0a   ┆lfa(directive, '            '); ┆
0x0159e0…015a00             77 68 69 6c 65 20 63 68 20 69 6e 20 6e 61 6d 65 63 68 20 64 6f 0a 62 65 67 69 6e 0a 69 6e 78 3a   ┆while ch in namech do begin inx:┆
0x015a00…015a20 (5, 1, 9)   3d 20 69 6e 78 2b 31 3b 0a 64 69 72 65 63 74 69 76 65 5b 20 69 6e 78 20 5d 3a 3d 20 63 68 3b 0a   ┆= inx+1; directive[ inx ]:= ch; ┆
0x015a20…015a40             6e 65 78 74 63 68 61 72 3b 0a 65 6e 64 3b 0a 69 66 20 63 68 3d 27 20 27 20 74 68 65 6e 0a 6e 65   ┆nextchar; end; if ch=' ' then ne┆
0x015a40…015a60             78 74 63 68 61 72 3b 20 28 2a 20 63 68 3a 3d 20 6e 65 78 74 20 73 69 67 6e 69 66 69 63 61 6e 74   ┆xtchar; (* ch:= next significant┆
0x015a60…015a80             20 63 68 61 72 61 63 74 65 72 20 2a 29 0a 0a 63 61 73 65 20 64 69 72 65 63 74 69 76 65 5b 20 31   ┆ character *)  case directive[ 1┆
0x015a80…015aa0             20 5d 20 6f 66 0a 27 49 27 3a 20 28 2a 20 49 4e 43 4c 55 44 45 20 6f 72 20 49 46 20 2a 29 0a 62   ┆ ] of 'I': (* INCLUDE or IF *) b┆
0x015aa0…015ac0             65 67 69 6e 0a 69 66 20 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 69 66 20 74 68 65 6e 0a 62 65   ┆egin if directive=dlr_if then be┆
0x015ac0…015ae0             67 69 6e 0a 69 66 20 64 69 72 65 63 74 69 76 65 5f 74 6f 70 5e 2e 6e 65 78 74 5f 64 69 72 3d 6e   ┆gin if directive_top^.next_dir=n┆
0x015ae0…015b00             69 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 65 77 28 64 69 72 65 63 74 69 76 65 5f 74 6f 70 5e   ┆il then begin new(directive_top^┆
0x015b00…015b20             2e 6e 65 78 74 5f 64 69 72 29 3b 0a 77 69 74 68 20 64 69 72 65 63 74 69 76 65 5f 74 6f 70 5e 2e   ┆.next_dir); with directive_top^.┆
0x015b20…015b40             6e 65 78 74 5f 64 69 72 5e 20 64 6f 0a 62 65 67 69 6e 0a 66 6f 72 6d 65 72 5f 64 69 72 3a 3d 20   ┆next_dir^ do begin former_dir:= ┆
0x015b40…015b60             64 69 72 65 63 74 69 76 65 5f 74 6f 70 3b 0a 6e 65 78 74 5f 64 69 72 3a 3d 20 6e 69 6c 3b 0a 65   ┆directive_top; next_dir:= nil; e┆
0x015b60…015b80             6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 61 64 64 20 6e 65 77 20 64 69 72 65 63 74 69 76 65 20 73 74   ┆nd; end; (* add new directive st┆
0x015b80…015ba0             61 63 6b 20 6e 6f 64 65 20 2a 29 0a 64 69 72 65 63 74 69 76 65 5f 74 6f 70 3a 3d 20 64 69 72 65   ┆ack node *) directive_top:= dire┆
0x015ba0…015bc0             63 74 69 76 65 5f 74 6f 70 5e 2e 6e 65 78 74 5f 64 69 72 3b 0a 77 69 74 68 20 64 69 72 65 63 74   ┆ctive_top^.next_dir; with direct┆
0x015bc0…015be0             69 76 65 5f 74 6f 70 5e 64 6f 0a 62 65 67 69 6e 0a 64 69 72 5f 6b 69 6e 64 3a 3d 20 64 5f 69 66   ┆ive_top^do begin dir_kind:= d_if┆
0x015be0…015c00             3b 0a 73 75 72 72 5f 73 6b 69 70 5f 73 74 61 74 65 3a 3d 20 63 6f 6e 64 5f 73 6b 69 70 5f 74 65   ┆; surr_skip_state:= cond_skip_te┆
0x015c00…015c20 (5, 1, 10)  78 74 3b 0a 61 66 74 65 72 5f 65 6c 73 65 3a 3d 20 66 61 6c 73 65 3b 0a 69 66 20 6e 6f 74 20 63   ┆xt; after_else:= false; if not c┆
0x015c20…015c40             6f 6e 64 5f 73 6b 69 70 5f 74 65 78 74 20 74 68 65 6e 0a 63 6f 6e 64 5f 73 6b 69 70 5f 74 65 78   ┆ond_skip_text then cond_skip_tex┆
0x015c40…015c60             74 3a 3d 20 6e 6f 74 20 65 78 70 72 65 73 73 69 6f 6e 3b 0a 61 66 74 65 72 5f 6e 6f 73 6b 69 70   ┆t:= not expression; after_noskip┆
0x015c60…015c80             3a 3d 20 6e 6f 74 20 63 6f 6e 64 5f 73 6b 69 70 5f 74 65 78 74 3b 0a 65 6e 64 3b 20 28 2a 20 77   ┆:= not cond_skip_text; end; (* w┆
0x015c80…015ca0             69 74 68 20 2a 29 0a 65 6e 64 20 28 2a 20 49 46 20 2a 29 0a 65 6c 73 65 0a 69 66 20 64 69 72 65   ┆ith *) end (* IF *) else if dire┆
0x015ca0…015cc0             63 74 69 76 65 3d 64 6c 72 5f 69 6e 63 6c 75 64 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 6e 78   ┆ctive=dlr_include then begin inx┆
0x015cc0…015ce0             3a 3d 20 30 3b 0a 61 73 73 69 67 6e 5f 61 6c 66 61 28 66 69 6c 65 5f 6e 61 6d 65 2c 20 27 20 20   ┆:= 0; assign_alfa(file_name, '  ┆
0x015ce0…015d00             20 20 20 20 20 20 20 20 20 20 27 29 3b 0a 77 68 69 6c 65 20 63 68 20 69 6e 20 6e 61 6d 65 63 68   ┆          '); while ch in namech┆
0x015d00…015d20             20 64 6f 0a 62 65 67 69 6e 0a 69 6e 78 3a 3d 20 69 6e 78 2b 31 3b 0a 69 66 20 69 6e 78 3c 3d 61   ┆ do begin inx:= inx+1; if inx<=a┆
0x015d20…015d40             6c 66 61 6c 65 6e 67 74 68 20 74 68 65 6e 0a 66 69 6c 65 5f 6e 61 6d 65 5b 20 69 6e 78 20 5d 3a   ┆lfalength then file_name[ inx ]:┆
0x015d40…015d60             3d 20 63 68 3b 0a 6e 65 78 74 63 68 61 72 3b 0a 65 6e 64 3b 0a 61 73 73 69 67 6e 28 69 6e 70 75   ┆= ch; nextchar; end; assign(inpu┆
0x015d60…015d80             74 2c 20 63 6f 6e 63 61 74 28 73 6f 75 72 63 65 5f 70 61 74 68 2c 20 66 69 6c 65 5f 6e 61 6d 65   ┆t, concat(source_path, file_name┆
0x015d80…015da0             29 29 3b 0a 73 65 74 74 65 78 74 62 75 66 28 69 6e 70 75 74 2c 20 69 6e 5f 62 75 66 5f 70 74 72   ┆)); settextbuf(input, in_buf_ptr┆
0x015da0…015dc0             5e 29 3b 0a 28 2a 24 49 2d 2a 29 0a 72 65 73 65 74 28 69 6e 70 75 74 29 3b 0a 69 66 20 69 6f 72   ┆^); (*$I-*) reset(input); if ior┆
0x015dc0…015de0             65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 6f 66 69 6c 65 28 63 6f 6e   ┆esult <> 0 then begin nofile(con┆
0x015de0…015e00             63 61 74 28 73 6f 75 72 63 65 5f 70 61 74 68 2c 20 66 69 6c 65 5f 6e 61 6d 65 29 29 3b 0a 65 6e   ┆cat(source_path, file_name)); en┆
0x015e00…015e20 (5, 1, 11)  64 3b 0a 28 2a 24 49 2b 2a 29 0a 69 6e 63 6c 75 64 65 5f 63 6f 75 6e 74 3a 3d 20 69 6e 63 6c 75   ┆d; (*$I+*) include_count:= inclu┆
0x015e20…015e40             64 65 5f 63 6f 75 6e 74 2b 31 3b 0a 69 66 20 6e 6f 74 20 70 72 69 6e 74 65 64 20 74 68 65 6e 20   ┆de_count+1; if not printed then ┆
0x015e40…015e60             70 72 69 6e 74 6c 69 6e 65 3b 0a 70 75 73 68 5f 73 6f 75 72 63 65 28 6c 69 6e 65 6e 75 6d 62 65   ┆printline; push_source(linenumbe┆
0x015e60…015e80             72 2c 20 66 69 6c 65 5f 6e 61 6d 65 29 3b 0a 65 6e 64 20 28 2a 20 49 4e 43 4c 55 44 45 20 2a 29   ┆r, file_name); end (* INCLUDE *)┆
0x015e80…015ea0             0a 65 6c 73 65 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 28 75 6e 6b 6e 6f 77 6e 5f   ┆ else directive_warning(unknown_┆
0x015ea0…015ec0             64 69 72 65 63 74 69 76 65 29 3b 0a 65 6e 64 3b 20 28 2a 20 49 46 20 20 61 6e 64 20 49 4e 43 4c   ┆directive); end; (* IF  and INCL┆
0x015ec0…015ee0             55 44 45 20 2a 29 0a 0a 27 4e 27 2c 20 27 4c 27 2c 20 27 43 27 2c 20 27 52 27 3a 20 28 2a 20 4e   ┆UDE *)  'N', 'L', 'C', 'R': (* N┆
0x015ee0…015f00             4f 43 4f 44 45 2c 20 43 4f 44 45 2c 20 4c 49 4e 45 4e 55 4d 42 45 52 2c 20 52 4f 55 4e 44 55 50   ┆OCODE, CODE, LINENUMBER, ROUNDUP┆
0x015f00…015f20             4c 49 4e 45 2c 20 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20   ┆LINE, *)                     (* ┆
0x015f20…015f40             4c 49 53 54 2c 20 4e 4f 4c 49 53 54 2c 20 43 52 45 41 54 45 53 49 5a 45 20 2a 29 0a 62 65 67 69   ┆LIST, NOLIST, CREATESIZE *) begi┆
0x015f40…015f60             6e 0a 69 66 20 28 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 63 6f 64 65 29 20 6f 72 20 28 64 69   ┆n if (directive=dlr_code) or (di┆
0x015f60…015f80             72 65 63 74 69 76 65 3d 64 6c 72 5f 6e 6f 63 6f 64 65 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69   ┆rective=dlr_nocode) then begin i┆
0x015f80…015fa0             66 20 6e 6f 74 20 63 6f 6e 64 5f 73 6b 69 70 5f 74 65 78 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆f not cond_skip_text then begin ┆
0x015fa0…015fc0             65 6d 69 74 28 63 6f 70 74 69 6f 6e 2c 20 35 2c 20 63 6f 64 65 35 2c 20 63 6e 6f 63 6f 64 65 29   ┆emit(coption, 5, code5, cnocode)┆
0x015fc0…015fe0             3b 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 31 2d 6f 72 64 28 64 69 72 65 63 74 69 76 65 3d   ┆; emit(cnocode, 1-ord(directive=┆
0x015fe0…016000             64 6c 72 5f 63 6f 64 65 29 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28   ┆dlr_code), nill, cnocode); emit(┆
0x016000…016020 (5, 1, 12)  63 6f 70 74 69 6f 6e 2c 20 36 2c 20 63 6f 64 65 36 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69   ┆coption, 6, code6, cnocode); emi┆
0x016020…016040             74 28 63 6e 6f 63 6f 64 65 2c 20 6f 72 64 28 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 63 6f 64   ┆t(cnocode, ord(directive=dlr_cod┆
0x016040…016060             65 29 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 0a 65 6c 73   ┆e), nill, cnocode); end; end els┆
0x016060…016080             65 0a 69 66 20 28 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 6c 69 73 74 29 20 6f 72 20 28 64 69   ┆e if (directive=dlr_list) or (di┆
0x016080…0160a0             72 65 63 74 69 76 65 3d 64 6c 72 5f 6e 6f 6c 69 73 74 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69   ┆rective=dlr_nolist) then begin i┆
0x0160a0…0160c0             66 20 6e 6f 74 20 63 6f 6e 64 5f 73 6b 69 70 5f 74 65 78 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆f not cond_skip_text then begin ┆
0x0160c0…0160e0             70 72 6f 67 72 61 6d 6c 69 73 74 3a 3d 20 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 6c 69 73 74   ┆programlist:= directive=dlr_list┆
0x0160e0…016100             3b 0a 72 65 6d 65 6d 62 65 72 5f 6c 69 73 74 3a 3d 20 70 72 6f 67 72 61 6d 6c 69 73 74 3b 0a 65   ┆; remember_list:= programlist; e┆
0x016100…016120             6e 64 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 63 72   ┆nd; end else if directive=dlr_cr┆
0x016120…016140             65 61 74 65 73 69 7a 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6e 6f 74 20 63 6f 6e 64 5f   ┆eatesize then begin if not cond_┆
0x016140…016160             73 6b 69 70 5f 74 65 78 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 6d 69 74 28 63 6f 70 74 69 6f   ┆skip_text then begin emit(coptio┆
0x016160…016180             6e 2c 20 35 2c 20 31 30 2c 20 63 6e 6f 63 6f 64 65 29 3b 20 28 2a 20 4f 50 54 49 4f 4e 20 74 6f   ┆n, 5, 10, cnocode); (* OPTION to┆
0x016180…0161a0             20 50 41 53 53 35 28 31 30 2c 20 73 69 7a 65 29 20 2a 29 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65   ┆ PASS5(10, size) *) emit(cnocode┆
0x0161a0…0161c0             2c 20 67 65 74 5f 69 6e 74 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a   ┆, get_int, nill, cnocode); end; ┆
0x0161c0…0161e0             65 6e 64 20 28 2a 20 63 72 65 61 74 65 73 69 7a 65 20 2a 29 0a 65 6c 73 65 0a 69 66 20 64 69 72   ┆end (* createsize *) else if dir┆
0x0161e0…016200             65 63 74 69 76 65 20 3d 20 64 6c 72 5f 6c 69 6e 65 6e 75 6d 62 65 72 20 74 68 65 6e 0a 62 65 67   ┆ective = dlr_linenumber then beg┆
0x016200…016220 (5, 1, 13)  69 6e 0a 20 20 68 65 6c 70 5f 76 61 6c 20 3a 3d 20 67 65 74 5f 69 6e 74 3b 0a 20 20 69 66 20 68   ┆in   help_val := get_int;   if h┆
0x016220…016240             65 6c 70 5f 76 61 6c 20 3e 20 6c 69 6e 65 6e 75 6d 62 65 72 20 74 68 65 6e 20 6c 69 6e 65 6e 75   ┆elp_val > linenumber then linenu┆
0x016240…016260             6d 62 65 72 20 3a 3d 20 68 65 6c 70 5f 76 61 6c 3b 0a 65 6e 64 20 65 6c 73 65 0a 69 66 20 64 69   ┆mber := help_val; end else if di┆
0x016260…016280             72 65 63 74 69 76 65 20 3d 20 64 6c 72 5f 72 6f 75 6e 64 75 70 6c 69 6e 65 20 74 68 65 6e 0a 62   ┆rective = dlr_roundupline then b┆
0x016280…0162a0             65 67 69 6e 0a 20 20 6c 69 6e 65 6e 75 6d 62 65 72 20 3a 3d 20 28 28 6c 69 6e 65 6e 75 6d 62 65   ┆egin   linenumber := ((linenumbe┆
0x0162a0…0162c0             72 20 2b 20 39 39 39 29 20 64 69 76 20 31 30 30 30 29 20 2a 20 31 30 30 30 3b 0a 65 6e 64 20 65   ┆r + 999) div 1000) * 1000; end e┆
0x0162c0…0162e0             6c 73 65 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 28 75 6e 6b 6e 6f 77 6e 5f 64 69   ┆lse directive_warning(unknown_di┆
0x0162e0…016300             72 65 63 74 69 76 65 29 3b 0a 65 6e 64 3b 20 28 2a 20 43 4f 44 45 2c 20 4e 4f 43 4f 44 45 2c 20   ┆rective); end; (* CODE, NOCODE, ┆
0x016300…016320             43 52 45 41 54 53 49 5a 45 20 2a 29 0a 0a 27 44 27 2c 20 27 53 27 3a 20 28 2a 20 44 45 46 41 55   ┆CREATSIZE *)  'D', 'S': (* DEFAU┆
0x016320…016340             4c 54 2c 20 53 45 54 2c 20 69 2e 65 2e 20 64 65 66 69 6e 65 20 73 77 69 74 63 68 28 65 73 29 2c   ┆LT, SET, i.e. define switch(es),┆
0x016340…016360             20 69 66 20 44 45 46 41 55 4c 54 20 6f 6e 6c 79 20 69 66 20 75 6e 64 65 66 69 6e 65 64 20 2a 29   ┆ if DEFAULT only if undefined *)┆
0x016360…016380             0a 28 2a 20 73 79 6e 74 61 78 3a 20 24 53 45 54 20 73 77 69 74 63 68 3d 76 61 6c 75 65 20 28 73   ┆ (* syntax: $SET switch=value (s┆
0x016380…0163a0             77 69 74 63 68 3d 76 61 6c 75 65 29 2a 20 20 2a 29 0a 28 2a 20 73 79 6e 74 61 78 3a 20 24 44 45   ┆witch=value)*  *) (* syntax: $DE┆
0x0163a0…0163c0             46 41 55 4c 54 20 73 77 69 74 63 68 3d 76 61 6c 75 65 20 28 73 77 69 74 63 68 3d 76 61 6c 75 65   ┆FAULT switch=value (switch=value┆
0x0163c0…0163e0             29 2a 20 20 2a 29 0a 69 66 20 28 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 73 65 74 29 20 6f 72   ┆)*  *) if (directive=dlr_set) or┆
0x0163e0…016400             20 28 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 64 65 66 61 75 6c 74 29 20 74 68 65 6e 0a 62 65   ┆ (directive=dlr_default) then be┆
0x016400…016420 (5, 1, 14)  67 69 6e 0a 69 66 20 6e 6f 74 20 63 6f 6e 64 5f 73 6b 69 70 5f 74 65 78 74 20 74 68 65 6e 0a 72   ┆gin if not cond_skip_text then r┆
0x016420…016440             65 70 65 61 74 0a 73 77 69 74 63 68 3a 3d 20 67 65 74 5f 73 77 69 74 63 68 28 66 61 6c 73 65 29   ┆epeat switch:= get_switch(false)┆
0x016440…016460             3b 20 28 2a 20 70 6f 73 73 69 62 6c 79 20 61 20 64 65 66 69 6e 69 74 69 6f 6e 20 2a 29 0a 69 66   ┆; (* possibly a definition *) if┆
0x016460…016480             20 63 68 3c 3e 27 3d 27 20 74 68 65 6e 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 28   ┆ ch<>'=' then directive_warning(┆
0x016480…0164a0             65 71 5f 65 78 70 65 63 74 65 64 29 3b 0a 72 65 70 65 61 74 0a 6e 65 78 74 63 68 61 72 3b 0a 75   ┆eq_expected); repeat nextchar; u┆
0x0164a0…0164c0             6e 74 69 6c 20 28 63 68 3c 3e 27 20 27 29 20 6f 72 20 28 6c 69 6e 65 69 6e 78 3d 6c 69 6e 65 6c   ┆ntil (ch<>' ') or (lineinx=linel┆
0x0164c0…0164e0             65 6e 67 74 68 29 3b 0a 68 65 6c 70 5f 76 61 6c 3a 3d 20 73 69 6d 70 6c 65 5f 65 78 70 72 65 73   ┆ength); help_val:= simple_expres┆
0x0164e0…016500             73 69 6f 6e 3b 0a 77 69 74 68 20 73 77 69 74 63 68 5e 20 64 6f 0a 69 66 20 28 28 64 69 72 65 63   ┆sion; with switch^ do if ((direc┆
0x016500…016520             74 69 76 65 3d 64 6c 72 5f 73 65 74 29 20 6f 72 20 28 73 77 69 74 63 68 5f 61 73 73 69 67 6e 65   ┆tive=dlr_set) or (switch_assigne┆
0x016520…016540             64 3d 73 77 5f 6e 6f 74 5f 64 65 66 69 6e 65 64 29 29 0a 61 6e 64 20 28 73 77 69 74 63 68 5f 61   ┆d=sw_not_defined)) and (switch_a┆
0x016540…016560             73 73 69 67 6e 65 64 3c 3e 73 77 5f 6e 6f 74 5f 61 73 73 69 67 6e 61 62 6c 65 29 20 74 68 65 6e   ┆ssigned<>sw_not_assignable) then┆
0x016560…016580             0a 62 65 67 69 6e 0a 76 61 6c 3a 3d 20 68 65 6c 70 5f 76 61 6c 3b 0a 73 77 69 74 63 68 5f 61 73   ┆ begin val:= help_val; switch_as┆
0x016580…0165a0             73 69 67 6e 65 64 3a 3d 20 73 77 5f 61 73 73 69 67 6e 65 64 3b 0a 65 6e 64 3b 0a 75 6e 74 69 6c   ┆signed:= sw_assigned; end; until┆
0x0165a0…0165c0             20 6c 69 6e 65 69 6e 78 3d 6c 69 6e 65 6c 65 6e 67 74 68 3b 0a 65 6e 64 20 28 2a 20 53 45 54 20   ┆ lineinx=linelength; end (* SET ┆
0x0165c0…0165e0             2a 29 0a 65 6c 73 65 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 28 75 6e 6b 6e 6f 77   ┆*) else directive_warning(unknow┆
0x0165e0…016600             6e 5f 64 69 72 65 63 74 69 76 65 29 3b 0a 0a 27 56 27 3a 20 28 2a 20 56 45 52 53 49 4f 4e 20 2a   ┆n_directive);  'V': (* VERSION *┆
0x016600…016620 (5, 1, 15)  29 0a 69 66 20 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 76 65 72 73 69 6f 6e 20 74 68 65 6e 0a   ┆) if directive=dlr_version then ┆
0x016620…016640             62 65 67 69 6e 0a 69 66 20 6e 6f 74 20 63 6f 6e 64 5f 73 6b 69 70 5f 74 65 78 74 0a 20 61 6e 64   ┆begin if not cond_skip_text  and┆
0x016640…016660             20 28 76 65 72 73 69 6f 6e 5f 73 77 69 74 63 68 5e 2e 73 77 69 74 63 68 5f 61 73 73 69 67 6e 65   ┆ (version_switch^.switch_assigne┆
0x016660…016680             64 3c 3e 73 77 5f 6e 6f 74 5f 61 73 73 69 67 6e 61 62 6c 65 29 20 74 68 65 6e 0a 62 65 67 69 6e   ┆d<>sw_not_assignable) then begin┆
0x016680…0166a0             0a 77 68 69 6c 65 20 28 6e 6f 74 20 28 63 68 20 69 6e 20 64 69 67 69 74 63 68 29 29 20 61 6e 64   ┆ while (not (ch in digitch)) and┆
0x0166a0…0166c0             20 28 6c 69 6e 65 69 6e 78 3c 6c 69 6e 65 6c 65 6e 67 74 68 29 20 64 6f 0a 6e 65 78 74 63 68 61   ┆ (lineinx<linelength) do nextcha┆
0x0166c0…0166e0             72 3b 0a 76 65 72 73 69 6f 6e 5f 76 61 6c 31 3a 3d 20 66 61 63 74 6f 72 3b 0a 77 68 69 6c 65 20   ┆r; version_val1:= factor; while ┆
0x0166e0…016700             28 6e 6f 74 28 63 68 20 69 6e 20 64 69 67 69 74 63 68 29 29 20 61 6e 64 20 28 6c 69 6e 65 69 6e   ┆(not(ch in digitch)) and (linein┆
0x016700…016720             78 3c 6c 69 6e 65 6c 65 6e 67 74 68 29 20 64 6f 0a 6e 65 78 74 63 68 61 72 3b 0a 69 66 20 6c 69   ┆x<linelength) do nextchar; if li┆
0x016720…016740             6e 65 69 6e 78 3c 6c 69 6e 65 6c 65 6e 67 74 68 20 74 68 65 6e 0a 62 65 67 69 6e 0a 76 65 72 73   ┆neinx<linelength then begin vers┆
0x016740…016760             69 6f 6e 5f 76 61 6c 32 3a 3d 20 66 61 63 74 6f 72 3b 0a 77 68 69 6c 65 20 28 6e 6f 74 20 28 63   ┆ion_val2:= factor; while (not (c┆
0x016760…016780             68 20 69 6e 20 64 69 67 69 74 63 68 29 29 20 61 6e 64 20 28 6c 69 6e 65 69 6e 78 3c 6c 69 6e 65   ┆h in digitch)) and (lineinx<line┆
0x016780…0167a0             6c 65 6e 67 74 68 29 20 64 6f 0a 6e 65 78 74 63 68 61 72 3b 0a 69 66 20 6c 69 6e 65 69 6e 78 3c   ┆length) do nextchar; if lineinx<┆
0x0167a0…0167c0             6c 69 6e 65 6c 65 6e 67 74 68 20 74 68 65 6e 0a 62 65 67 69 6e 0a 76 65 72 73 69 6f 6e 5f 76 61   ┆linelength then begin version_va┆
0x0167c0…0167e0             6c 33 3a 3d 20 66 61 63 74 6f 72 3b 0a 69 66 20 28 76 65 72 73 69 6f 6e 5f 76 61 6c 32 3e 39 29   ┆l3:= factor; if (version_val2>9)┆
0x0167e0…016800             20 6f 72 20 28 76 65 72 73 69 6f 6e 5f 76 61 6c 33 3e 39 29 20 74 68 65 6e 0a 64 69 72 65 63 74   ┆ or (version_val3>9) then direct┆
0x016800…016820 (6, 0, 1)   69 76 65 5f 77 61 72 6e 69 6e 67 28 72 61 6e 67 65 5f 65 72 72 6f 72 29 0a 65 6c 73 65 0a 76 65   ┆ive_warning(range_error) else ve┆
0x016820…016840             72 73 69 6f 6e 5f 76 61 6c 31 3a 3d 20 28 76 65 72 73 69 6f 6e 5f 76 61 6c 31 2a 31 30 2b 76 65   ┆rsion_val1:= (version_val1*10+ve┆
0x016840…016860             72 73 69 6f 6e 5f 76 61 6c 32 29 2a 31 30 2b 76 65 72 73 69 6f 6e 5f 76 61 6c 33 3b 0a 65 6e 64   ┆rsion_val2)*10+version_val3; end┆
0x016860…016880             0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 28 76 65 72 73 69 6f 6e 5f 76 61 6c 31 3c 32 35 36   ┆ else begin if (version_val1<256┆
0x016880…0168a0             29 20 61 6e 64 20 28 76 65 72 73 69 6f 6e 5f 76 61 6c 32 3c 32 35 36 29 20 74 68 65 6e 0a 76 65   ┆) and (version_val2<256) then ve┆
0x0168a0…0168c0             72 73 69 6f 6e 5f 76 61 6c 31 3a 3d 20 76 65 72 73 69 6f 6e 5f 76 61 6c 31 2a 32 35 36 2b 76 65   ┆rsion_val1:= version_val1*256+ve┆
0x0168c0…0168e0             72 73 69 6f 6e 5f 76 61 6c 32 0a 65 6c 73 65 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e   ┆rsion_val2 else directive_warnin┆
0x0168e0…016900             67 28 72 61 6e 67 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 69 66 20 76 65 72   ┆g(range_error); end; end; if ver┆
0x016900…016920             73 69 6f 6e 5f 76 61 6c 31 3e 36 35 35 33 35 20 74 68 65 6e 0a 64 69 72 65 63 74 69 76 65 5f 77   ┆sion_val1>65535 then directive_w┆
0x016920…016940             61 72 6e 69 6e 67 28 72 61 6e 67 65 5f 65 72 72 6f 72 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 65   ┆arning(range_error) else begin e┆
0x016940…016960             6d 69 74 28 63 6f 70 74 69 6f 6e 2c 20 36 2c 20 31 35 2c 20 63 6e 6f 63 6f 64 65 29 3b 20 28 2a   ┆mit(coption, 6, 15, cnocode); (*┆
0x016960…016980             20 21 21 21 21 20 6d 75 73 74 20 62 65 20 61 73 20 64 65 66 69 6e 65 64 20 62 79 20 70 61 73 73   ┆ !!!! must be as defined by pass┆
0x016980…0169a0             36 20 21 21 21 20 2a 29 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 76 65 72 73 69 6f 6e 5f 76   ┆6 !!! *) emit(cnocode, version_v┆
0x0169a0…0169c0             61 6c 31 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 76 65 72 73 69 6f 6e 5f 73 77 69   ┆al1, nill, cnocode); version_swi┆
0x0169c0…0169e0             74 63 68 5e 2e 76 61 6c 3a 3d 20 76 65 72 73 69 6f 6e 5f 76 61 6c 31 3b 0a 65 6e 64 3b 0a 65 6e   ┆tch^.val:= version_val1; end; en┆
0x0169e0…016a00             64 3b 0a 65 6e 64 0a 65 6c 73 65 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 28 75 6e   ┆d; end else directive_warning(un┆
0x016a00…016a20 (6, 0, 2)   6b 6e 6f 77 6e 5f 64 69 72 65 63 74 69 76 65 29 3b 0a 0a 27 45 27 3a 20 28 2a 20 45 4e 44 49 46   ┆known_directive);  'E': (* ENDIF┆
0x016a20…016a40             2c 20 45 4c 53 45 2c 20 45 4c 53 45 49 46 2c 20 45 58 43 45 50 54 49 4f 4e 20 2a 29 0a 62 65 67   ┆, ELSE, ELSEIF, EXCEPTION *) beg┆
0x016a40…016a60             69 6e 0a 69 66 20 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 65 6e 64 69 66 20 74 68 65 6e 0a 62   ┆in if directive=dlr_endif then b┆
0x016a60…016a80             65 67 69 6e 0a 69 66 20 64 69 72 65 63 74 69 76 65 5f 74 6f 70 5e 2e 64 69 72 5f 6b 69 6e 64 3c   ┆egin if directive_top^.dir_kind<┆
0x016a80…016aa0             3e 64 5f 69 66 20 74 68 65 6e 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 28 65 6e 64   ┆>d_if then directive_warning(end┆
0x016aa0…016ac0             69 66 5f 77 69 74 68 6f 75 74 5f 6d 61 74 63 68 69 6e 67 5f 69 66 29 0a 65 6c 73 65 0a 62 65 67   ┆if_without_matching_if) else beg┆
0x016ac0…016ae0             69 6e 0a 63 6f 6e 64 5f 73 6b 69 70 5f 74 65 78 74 3a 3d 20 64 69 72 65 63 74 69 76 65 5f 74 6f   ┆in cond_skip_text:= directive_to┆
0x016ae0…016b00             70 5e 2e 73 75 72 72 5f 73 6b 69 70 5f 73 74 61 74 65 3b 0a 64 69 72 65 63 74 69 76 65 5f 74 6f   ┆p^.surr_skip_state; directive_to┆
0x016b00…016b20             70 3a 3d 20 64 69 72 65 63 74 69 76 65 5f 74 6f 70 5e 2e 66 6f 72 6d 65 72 5f 64 69 72 3b 0a 65   ┆p:= directive_top^.former_dir; e┆
0x016b20…016b40             6e 64 3b 0a 65 6e 64 20 28 2a 20 45 4e 44 49 46 20 2a 29 0a 65 6c 73 65 0a 69 66 20 64 69 72 65   ┆nd; end (* ENDIF *) else if dire┆
0x016b40…016b60             63 74 69 76 65 3d 64 6c 72 5f 65 6c 73 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 69 74 68 20 64   ┆ctive=dlr_else then begin with d┆
0x016b60…016b80             69 72 65 63 74 69 76 65 5f 74 6f 70 5e 20 64 6f 0a 69 66 20 28 64 69 72 5f 6b 69 6e 64 3d 64 5f   ┆irective_top^ do if (dir_kind=d_┆
0x016b80…016ba0             69 66 29 20 61 6e 64 20 6e 6f 74 20 61 66 74 65 72 5f 65 6c 73 65 20 74 68 65 6e 0a 62 65 67 69   ┆if) and not after_else then begi┆
0x016ba0…016bc0             6e 0a 61 66 74 65 72 5f 65 6c 73 65 3a 3d 20 74 72 75 65 3b 0a 69 66 20 6e 6f 74 20 73 75 72 72   ┆n after_else:= true; if not surr┆
0x016bc0…016be0             5f 73 6b 69 70 5f 73 74 61 74 65 20 74 68 65 6e 20 28 2a 20 6e 6f 73 6b 69 70 20 61 74 20 24 49   ┆_skip_state then (* noskip at $I┆
0x016be0…016c00             46 20 2a 29 0a 63 6f 6e 64 5f 73 6b 69 70 5f 74 65 78 74 3a 3d 20 61 66 74 65 72 5f 6e 6f 73 6b   ┆F *) cond_skip_text:= after_nosk┆
0x016c00…016c20 (6, 0, 3)   69 70 3b 0a 65 6e 64 0a 65 6c 73 65 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 28 65   ┆ip; end else directive_warning(e┆
0x016c20…016c40             6c 73 65 5f 6e 6f 74 5f 61 66 74 65 72 5f 69 66 5f 6f 72 5f 65 6c 73 65 69 66 29 3b 0a 65 6e 64   ┆lse_not_after_if_or_elseif); end┆
0x016c40…016c60             20 28 2a 20 45 4c 53 45 20 2a 29 0a 65 6c 73 65 0a 69 66 20 64 69 72 65 63 74 69 76 65 3d 64 6c   ┆ (* ELSE *) else if directive=dl┆
0x016c60…016c80             72 5f 65 6c 73 65 69 66 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 69 74 68 20 64 69 72 65 63 74 69   ┆r_elseif then begin with directi┆
0x016c80…016ca0             76 65 5f 74 6f 70 5e 20 64 6f 0a 69 66 20 28 64 69 72 5f 6b 69 6e 64 3d 64 5f 69 66 29 20 61 6e   ┆ve_top^ do if (dir_kind=d_if) an┆
0x016ca0…016cc0             64 20 6e 6f 74 20 61 66 74 65 72 5f 65 6c 73 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6e   ┆d not after_else then begin if n┆
0x016cc0…016ce0             6f 74 20 73 75 72 72 5f 73 6b 69 70 5f 73 74 61 74 65 20 74 68 65 6e 20 28 2a 20 6e 6f 73 6b 69   ┆ot surr_skip_state then (* noski┆
0x016ce0…016d00             70 20 61 74 20 24 49 46 20 2a 29 0a 69 66 20 61 66 74 65 72 5f 6e 6f 73 6b 69 70 20 74 68 65 6e   ┆p at $IF *) if after_noskip then┆
0x016d00…016d20             20 28 2a 20 49 46 20 6f 72 20 45 4c 53 45 49 46 20 61 6c 72 65 61 64 79 20 63 68 6f 73 65 6e 2c   ┆ (* IF or ELSEIF already chosen,┆
0x016d20…016d40             20 73 6b 69 70 20 75 6e 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 2a 29 0a 63 6f 6e 64 5f 73 6b 69 70   ┆ skip unconditional *) cond_skip┆
0x016d40…016d60             5f 74 65 78 74 3a 3d 20 74 72 75 65 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 63 6f 6e 64 5f 73 6b 69   ┆_text:= true else begin cond_ski┆
0x016d60…016d80             70 5f 74 65 78 74 3a 3d 20 6e 6f 74 20 65 78 70 72 65 73 73 69 6f 6e 3b 0a 61 66 74 65 72 5f 6e   ┆p_text:= not expression; after_n┆
0x016d80…016da0             6f 73 6b 69 70 3a 3d 20 6e 6f 74 20 63 6f 6e 64 5f 73 6b 69 70 5f 74 65 78 74 3b 0a 65 6e 64 3b   ┆oskip:= not cond_skip_text; end;┆
0x016da0…016dc0             0a 65 6e 64 20 28 2a 20 61 66 74 65 72 20 49 46 20 6f 72 20 45 4c 53 45 49 46 20 2a 29 0a 65 6c   ┆ end (* after IF or ELSEIF *) el┆
0x016dc0…016de0             73 65 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e 69 6e 67 28 65 6c 73 65 69 66 5f 77 69 74 68   ┆se directive_warning(elseif_with┆
0x016de0…016e00             6f 75 74 5f 6d 61 74 63 68 69 6e 67 5f 69 66 29 3b 0a 65 6e 64 20 28 2a 20 45 4c 53 45 49 46 20   ┆out_matching_if); end (* ELSEIF ┆
0x016e00…016e20 (6, 0, 4)   2a 29 0a 65 6c 73 65 0a 69 66 20 64 69 72 65 63 74 69 76 65 3d 64 6c 72 5f 65 78 63 65 70 74 69   ┆*) else if directive=dlr_excepti┆
0x016e20…016e40             6f 6e 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6e 6f 74 20 63 6f 6e 64 5f 73 6b 69 70 5f 74   ┆on then begin if not cond_skip_t┆
0x016e40…016e60             65 78 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 6d 69 74 28 63 6f 70 74 69 6f 6e 2c 20 35 2c 20   ┆ext then begin emit(coption, 5, ┆
0x016e60…016e80             37 2c 20 63 6e 6f 63 6f 64 65 29 3b 20 28 2a 20 4f 50 54 49 4f 4e 20 74 6f 20 50 41 53 53 35 28   ┆7, cnocode); (* OPTION to PASS5(┆
0x016e80…016ea0             20 37 2c 20 73 69 7a 65 29 20 2a 29 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 67 65 74 5f 69   ┆ 7, size) *) emit(cnocode, get_i┆
0x016ea0…016ec0             6e 74 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 20 28 2a 20   ┆nt, nill, cnocode); end; end (* ┆
0x016ec0…016ee0             65 78 63 65 70 74 69 6f 6e 20 2a 29 0a 65 6c 73 65 0a 64 69 72 65 63 74 69 76 65 5f 77 61 72 6e   ┆exception *) else directive_warn┆
0x016ee0…016f00             69 6e 67 28 75 6e 6b 6e 6f 77 6e 5f 64 69 72 65 63 74 69 76 65 29 3b 0a 65 6e 64 3b 20 28 2a 20   ┆ing(unknown_directive); end; (* ┆
0x016f00…016f20             45 4e 44 49 46 2c 20 45 4c 53 45 2c 20 45 4c 53 45 49 46 20 2a 29 0a 65 6c 73 65 0a 64 69 72 65   ┆ENDIF, ELSE, ELSEIF *) else dire┆
0x016f20…016f40             63 74 69 76 65 5f 77 61 72 6e 69 6e 67 28 75 6e 6b 6e 6f 77 6e 5f 64 69 72 65 63 74 69 76 65 29   ┆ctive_warning(unknown_directive)┆
0x016f40…016f60             3b 0a 65 6e 64 20 28 2a 20 63 61 73 65 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 67 65 74 20 63 6f 6d   ┆; end (* case *) end; (* get com┆
0x016f60…016f80             70 69 6c 65 72 20 64 69 72 65 63 74 69 76 65 20 2a 29 0a 0a 0a 62 65 67 69 6e 20 28 2a 20 72 65   ┆piler directive *)   begin (* re┆
0x016f80…016fa0             61 64 6c 69 6e 65 20 2a 29 0a 0a 72 65 70 65 61 74 0a 70 72 69 6e 74 65 64 3a 3d 20 66 61 6c 73   ┆adline *)  repeat printed:= fals┆
0x016fa0…016fc0             65 3b 0a 69 66 20 6c 6f 63 61 6c 6c 69 6e 65 6e 75 6d 62 65 72 3e 3d 30 20 74 68 65 6e 0a 6c 6f   ┆e; if locallinenumber>=0 then lo┆
0x016fc0…016fe0             63 61 6c 6c 69 6e 65 6e 75 6d 62 65 72 3a 3d 20 6c 6f 63 61 6c 6c 69 6e 65 6e 75 6d 62 65 72 2b   ┆callinenumber:= locallinenumber+┆
0x016fe0…017000             31 3b 0a 6c 69 6e 65 6e 75 6d 62 65 72 3a 3d 20 6c 69 6e 65 6e 75 6d 62 65 72 2b 31 3b 0a 0a 28   ┆1; linenumber:= linenumber+1;  (┆
0x017000…017020 (6, 0, 5)   2a 20 61 76 6f 69 64 20 64 65 73 74 72 6f 79 69 6e 67 20 74 68 65 20 62 75 66 66 65 72 20 6d 61   ┆* avoid destroying the buffer ma┆
0x017020…017040             72 6b 20 69 6e 20 63 61 73 65 20 6f 66 20 74 79 70 65 20 62 75 66 66 65 72 69 6e 67 20 2a 29 0a   ┆rk in case of type buffering *) ┆
0x017040…017060             69 66 20 6e 6f 74 20 74 79 70 65 62 75 66 66 65 72 66 6c 61 67 20 74 68 65 6e 0a 65 6d 69 74 28   ┆if not typebufferflag then emit(┆
0x017060…017080             63 6e 65 77 6c 69 6e 65 2c 20 6c 69 6e 65 6e 75 6d 62 65 72 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63   ┆cnewline, linenumber, nill, cnoc┆
0x017080…0170a0             6f 64 65 29 3b 0a 69 66 20 69 6e 70 75 74 66 69 6c 65 20 74 68 65 6e 0a 69 66 20 65 6f 6c 6e 28   ┆ode); if inputfile then if eoln(┆
0x0170a0…0170c0             69 6e 70 75 74 29 20 74 68 65 6e 20 72 65 61 64 6c 6e 28 69 6e 70 75 74 29 3b 0a 6c 67 74 3a 3d   ┆input) then readln(input); lgt:=┆
0x0170c0…0170e0             20 30 3b 20 28 2a 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 69 64 20 63 68 61 72 61 63 74 65 72   ┆ 0; (* number of valid character┆
0x0170e0…017100             73 20 69 6e 20 27 6c 69 6e 65 27 20 2a 29 0a 72 65 70 65 61 74 20 28 2a 20 72 65 61 64 20 75 6e   ┆s in 'line' *) repeat (* read un┆
0x017100…017120             74 69 6c 20 65 6e 64 20 6f 66 20 6c 69 6e 65 2c 20 65 6e 64 20 6f 66 20 66 69 6c 65 2c 20 6f 72   ┆til end of line, end of file, or┆
0x017120…017140             20 6c 69 6e 65 20 66 75 6c 6c 20 2a 29 0a 0a 74 65 72 6d 69 6e 61 74 6f 72 20 3a 3d 20 2d 31 3b   ┆ line full *)  terminator := -1;┆
0x017140…017160             0a 72 65 70 65 61 74 0a 20 20 69 66 20 6e 6f 74 20 69 6e 70 75 74 66 69 6c 65 20 74 68 65 6e 20   ┆ repeat   if not inputfile then ┆
0x017160…017180             74 65 72 6d 69 6e 61 74 6f 72 20 3a 3d 20 30 20 65 6c 73 65 0a 20 20 69 66 20 65 6f 66 28 69 6e   ┆terminator := 0 else   if eof(in┆
0x017180…0171a0             70 75 74 29 20 74 68 65 6e 20 74 65 72 6d 69 6e 61 74 6f 72 20 3a 3d 20 30 20 65 6c 73 65 0a 20   ┆put) then terminator := 0 else  ┆
0x0171a0…0171c0             20 69 66 20 65 6f 6c 6e 28 69 6e 70 75 74 29 20 74 68 65 6e 20 74 65 72 6d 69 6e 61 74 6f 72 20   ┆ if eoln(input) then terminator ┆
0x0171c0…0171e0             3a 3d 20 31 20 65 6c 73 65 0a 20 20 69 66 20 6c 67 74 20 3c 20 6c 69 6e 65 6d 61 78 20 74 68 65   ┆:= 1 else   if lgt < linemax the┆
0x0171e0…017200             6e 0a 20 20 62 65 67 69 6e 0a 20 20 20 20 72 65 61 64 28 69 6e 70 75 74 2c 20 63 68 29 3b 0a 20   ┆n   begin     read(input, ch);  ┆
0x017200…017220 (6, 0, 6)   20 20 20 69 66 20 6f 72 64 28 63 68 29 20 3c 20 33 32 20 74 68 65 6e 0a 20 20 20 20 62 65 67 69   ┆   if ord(ch) < 32 then     begi┆
0x017220…017240             6e 0a 20 20 20 20 20 20 69 66 20 6f 72 64 28 63 68 29 20 3d 20 31 30 20 74 68 65 6e 20 74 65 72   ┆n       if ord(ch) = 10 then ter┆
0x017240…017260             6d 69 6e 61 74 6f 72 20 3a 3d 20 31 3b 0a 20 20 20 20 65 6e 64 20 65 6c 73 65 0a 20 20 20 20 69   ┆minator := 1;     end else     i┆
0x017260…017280             66 20 6f 72 64 28 63 68 29 20 3d 20 31 32 37 20 74 68 65 6e 20 65 6c 73 65 0a 20 20 20 20 62 65   ┆f ord(ch) = 127 then else     be┆
0x017280…0172a0             67 69 6e 0a 20 20 20 20 20 20 6c 67 74 20 3a 3d 20 6c 67 74 20 2b 20 31 3b 0a 20 20 20 20 20 20   ┆gin       lgt := lgt + 1;       ┆
0x0172a0…0172c0             6c 69 6e 65 5b 20 6c 67 74 20 5d 3a 3d 20 63 68 3b 0a 20 20 20 20 65 6e 64 3b 0a 20 20 65 6e 64   ┆line[ lgt ]:= ch;     end;   end┆
0x0172c0…0172e0             20 65 6c 73 65 20 74 65 72 6d 69 6e 61 74 6f 72 20 3a 3d 20 32 3b 0a 75 6e 74 69 6c 20 74 65 72   ┆ else terminator := 2; until ter┆
0x0172e0…017300             6d 69 6e 61 74 6f 72 20 3e 3d 20 30 3b 0a 0a 63 61 73 65 20 74 65 72 6d 69 6e 61 74 6f 72 20 6f   ┆minator >= 0;  case terminator o┆
0x017300…017320             66 0a 31 3a 20 62 65 67 69 6e 0a 6c 67 74 3a 3d 20 6c 67 74 2b 31 3b 0a 6c 69 6e 65 5b 20 6c 67   ┆f 1: begin lgt:= lgt+1; line[ lg┆
0x017320…017340             74 20 5d 3a 3d 20 27 20 27 3b 0a 73 74 6f 70 5f 72 65 61 64 3a 3d 20 74 72 75 65 3b 0a 65 6e 64   ┆t ]:= ' '; stop_read:= true; end┆
0x017340…017360             3b 0a 30 3a 20 62 65 67 69 6e 0a 69 66 20 6c 67 74 3d 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69   ┆; 0: begin if lgt=0 then begin i┆
0x017360…017380             66 20 69 6e 63 6c 75 64 65 5f 63 6f 75 6e 74 3d 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 69 6e   ┆f include_count=0 then begin lin┆
0x017380…0173a0             65 6e 75 6d 62 65 72 3a 3d 20 31 3b 0a 69 66 20 6d 6f 72 65 5f 73 6f 75 72 63 65 73 5f 61 6c 6c   ┆enumber:= 1; if more_sources_all┆
0x0173a0…0173c0             6f 77 65 64 20 74 68 65 6e 0a 72 65 61 64 63 61 6c 6c 3b 20 28 2a 20 6d 6f 72 65 20 73 6f 75 72   ┆owed then readcall; (* more sour┆
0x0173c0…0173e0             63 65 73 20 3f 3f 3f 20 2a 29 0a 69 66 20 69 6e 70 75 74 66 69 6c 65 20 74 68 65 6e 20 69 6e 70   ┆ces ??? *) if inputfile then inp┆
0x0173e0…017400             75 74 66 69 6c 65 20 3a 3d 20 6e 6f 74 20 65 6f 66 28 69 6e 70 75 74 29 3b 0a 69 66 20 6e 6f 74   ┆utfile := not eof(input); if not┆
0x017400…017420 (6, 0, 7)   20 69 6e 70 75 74 66 69 6c 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6d 6f 72 65 69 6e 70 75 74 3a   ┆ inputfile then begin moreinput:┆
0x017420…017440             3d 20 66 61 6c 73 65 3b 0a 6c 69 6e 65 5b 20 31 20 5d 3a 3d 20 27 2e 27 3b 20 28 2a 20 74 65 72   ┆= false; line[ 1 ]:= '.'; (* ter┆
0x017440…017460             6d 69 6e 61 74 69 6f 6e 20 63 68 61 72 61 63 74 65 72 20 2a 29 0a 6c 67 74 3a 3d 20 31 3b 0a 73   ┆mination character *) lgt:= 1; s┆
0x017460…017480             74 6f 70 5f 72 65 61 64 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 0a 65 6c 73 65 0a 73 74 6f 70 5f 72   ┆top_read:= true; end else stop_r┆
0x017480…0174a0             65 61 64 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 20 28 2a 20 69 6e 63 6c 75 64 65 20 63 6f 75 6e   ┆ead:= false; end (* include coun┆
0x0174a0…0174c0             74 20 3d 20 30 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 63 6c 6f 73 65 28 69 6e 70 75 74 29   ┆t = 0 *) else begin close(input)┆
0x0174c0…0174e0             3b 20 28 2a 20 75 6e 73 74 61 63 6b 20 7a 6f 6e 65 20 2a 29 0a 70 6f 70 5f 73 6f 75 72 63 65 28   ┆; (* unstack zone *) pop_source(┆
0x0174e0…017500             74 72 75 65 20 28 2a 20 65 6d 69 74 20 6e 61 6d 65 20 6f 66 20 73 75 72 72 6f 75 6e 64 69 6e 67   ┆true (* emit name of surrounding┆
0x017500…017520             20 73 6f 75 72 63 65 20 66 69 6c 65 20 2a 29 29 3b 0a 69 66 20 65 6f 6c 6e 28 69 6e 70 75 74 29   ┆ source file *)); if eoln(input)┆
0x017520…017540             20 74 68 65 6e 20 72 65 61 64 6c 6e 28 69 6e 70 75 74 29 3b 0a 69 6e 63 6c 75 64 65 5f 63 6f 75   ┆ then readln(input); include_cou┆
0x017540…017560             6e 74 3a 3d 20 69 6e 63 6c 75 64 65 5f 63 6f 75 6e 74 2d 31 3b 0a 73 74 6f 70 5f 72 65 61 64 3a   ┆nt:= include_count-1; stop_read:┆
0x017560…017580             3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 65 6e 64 20 28 2a 20 65 6d 70 74 79 20 6c 69 6e 65 20   ┆= false; end; end (* empty line ┆
0x017580…0175a0             2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 70 72 6f 63 65 73 73 20 6c 69 6e 65 20 2a 29   ┆*) else begin (* process line *)┆
0x0175a0…0175c0             0a 28 2a 20 73 69 6d 75 6c 61 74 65 20 65 6e 64 20 6f 66 20 6c 69 6e 65 20 61 63 74 69 6f 6e 20   ┆ (* simulate end of line action ┆
0x0175c0…0175e0             2a 29 0a 6c 67 74 3a 3d 20 6c 67 74 2b 31 3b 0a 6c 69 6e 65 5b 20 6c 67 74 20 5d 3a 3d 20 27 20   ┆*) lgt:= lgt+1; line[ lgt ]:= ' ┆
0x0175e0…017600             27 3b 0a 73 74 6f 70 5f 72 65 61 64 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65   ┆'; stop_read:= true; end; end; e┆
0x017600…017620 (6, 0, 8)   6c 73 65 0a 73 74 6f 70 5f 72 65 61 64 3a 3d 20 74 72 75 65 3b 20 28 2a 20 6c 69 6e 65 20 66 75   ┆lse stop_read:= true; (* line fu┆
0x017620…017640             6c 6c 20 2a 29 0a 65 6e 64 0a 75 6e 74 69 6c 20 73 74 6f 70 5f 72 65 61 64 3b 0a 6c 69 6e 65 6c   ┆ll *) end until stop_read; linel┆
0x017640…017660             65 6e 67 74 68 3a 3d 20 6c 67 74 3b 0a 6c 67 74 3a 3d 20 31 3b 0a 77 68 69 6c 65 20 28 6c 67 74   ┆ength:= lgt; lgt:= 1; while (lgt┆
0x017660…017680             3c 6c 69 6e 65 6c 65 6e 67 74 68 29 20 61 6e 64 20 28 6c 69 6e 65 5b 20 6c 67 74 20 5d 3d 27 20   ┆<linelength) and (line[ lgt ]=' ┆
0x017680…0176a0             27 29 20 64 6f 0a 6c 67 74 3a 3d 20 6c 67 74 2b 31 3b 0a 6c 69 6e 65 69 6e 78 3a 3d 20 6c 67 74   ┆') do lgt:= lgt+1; lineinx:= lgt┆
0x0176a0…0176c0             2d 31 3b 0a 69 66 20 6c 69 6e 65 5b 20 6c 67 74 20 5d 3d 27 24 27 20 74 68 65 6e 0a 62 65 67 69   ┆-1; if line[ lgt ]='$' then begi┆
0x0176c0…0176e0             6e 0a 67 65 74 5f 63 6f 6d 70 69 6c 65 72 5f 64 69 72 65 63 74 69 76 65 3b 0a 6c 69 6e 65 69 6e   ┆n get_compiler_directive; linein┆
0x0176e0…017700             78 3a 3d 20 6c 69 6e 65 6c 65 6e 67 74 68 3b 20 28 2a 20 73 6b 69 70 20 72 65 6d 61 69 6e 69 6e   ┆x:= linelength; (* skip remainin┆
0x017700…017720             67 20 70 61 72 74 20 6f 66 20 6c 69 6e 65 20 2a 29 0a 65 6e 64 3b 0a 69 66 20 63 6f 6e 64 5f 73   ┆g part of line *) end; if cond_s┆
0x017720…017740             6b 69 70 5f 74 65 78 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 69 6e 65 69 6e 78 3a 3d 20 6c 69   ┆kip_text then begin lineinx:= li┆
0x017740…017760             6e 65 6c 65 6e 67 74 68 3b 20 28 2a 20 73 6b 69 70 20 74 68 65 20 6c 69 6e 65 2c 20 62 75 74 20   ┆nelength; (* skip the line, but ┆
0x017760…017780             6d 61 6b 65 20 73 75 72 65 20 69 74 20 77 69 6c 6c 20 62 65 20 70 72 69 6e 74 65 64 20 20 2a 29   ┆make sure it will be printed  *)┆
0x017780…0177a0             0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 20 20 69 6e 20 63   ┆                       (*   in c┆
0x0177a0…0177c0             61 73 65 20 6f 66 20 6f 70 74 69 6f 6e 20 70 72 6f 67 72 61 6d 6c 69 73 74 20 74 75 72 6e 65 64   ┆ase of option programlist turned┆
0x0177c0…0177e0             20 6f 6e 20 20 20 20 20 20 20 20 2a 29 0a 69 66 20 6e 6f 74 20 6d 6f 72 65 69 6e 70 75 74 20 74   ┆ on        *) if not moreinput t┆
0x0177e0…017800             68 65 6e 20 73 74 6f 70 28 37 29 3b 20 28 2a 20 70 72 65 6d 61 74 75 72 65 20 65 6e 64 20 6f 66   ┆hen stop(7); (* premature end of┆
0x017800…017820 (6, 0, 9)   20 66 69 6c 65 2c 20 6d 69 73 73 69 6e 67 20 24 45 4e 44 49 46 20 20 20 2a 29 0a 65 6e 64 3b 0a   ┆ file, missing $ENDIF   *) end; ┆
0x017820…017840             75 6e 74 69 6c 20 73 74 6f 70 5f 72 65 61 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 72 65 61 64 6c 69   ┆until stop_read;  end; (* readli┆
0x017840…017860             6e 65 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 63 68 61 72 3b 0a 62 65 67 69 6e 0a 77   ┆ne *)  procedure inchar; begin w┆
0x017860…017880             68 69 6c 65 20 6c 69 6e 65 69 6e 78 3d 6c 69 6e 65 6c 65 6e 67 74 68 20 64 6f 0a 62 65 67 69 6e   ┆hile lineinx=linelength do begin┆
0x017880…0178a0             0a 69 66 20 70 72 6f 67 72 61 6d 6c 69 73 74 20 61 6e 64 20 6e 6f 74 20 70 72 69 6e 74 65 64 20   ┆ if programlist and not printed ┆
0x0178a0…0178c0             61 6e 64 20 6d 6f 72 65 69 6e 70 75 74 20 74 68 65 6e 20 70 72 69 6e 74 6c 69 6e 65 3b 0a 69 66   ┆and moreinput then printline; if┆
0x0178c0…0178e0             20 65 72 72 6f 72 69 6e 78 3e 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 6f   ┆ errorinx>0 then begin writeln(o┆
0x0178e0…017900             75 74 70 75 74 29 3b 0a 65 72 72 6f 72 69 6e 78 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 72 65 61 64 6c   ┆utput); errorinx:= 0; end; readl┆
0x017900…017920             69 6e 65 3b 0a 65 6e 64 3b 0a 6c 69 6e 65 69 6e 78 3a 3d 20 6c 69 6e 65 69 6e 78 2b 31 3b 0a 63   ┆ine; end; lineinx:= lineinx+1; c┆
0x017920…017940             68 3a 3d 20 75 70 63 61 73 65 28 6c 69 6e 65 5b 6c 69 6e 65 69 6e 78 5d 29 3b 0a 65 6e 64 3b 20   ┆h:= upcase(line[lineinx]); end; ┆
0x017940…017960             28 2a 69 6e 63 68 61 72 2a 29 0a 28 2a 24 72 2d 2a 29 0a 0a 0a 28 2a 65 6e 64 20 6f 66 20 69 6e   ┆(*inchar*) (*$r-*)   (*end of in┆
0x017960…017980             70 75 74 2f 6f 75 74 70 75 74 20 70 72 6f 63 65 64 75 72 65 73 2a 29 0a 0a 70 72 6f 63 65 64 75   ┆put/output procedures*)  procedu┆
0x017980…0179a0             72 65 20 69 6e 69 74 69 61 6c 69 7a 65 28 76 61 72 20 74 61 62 6c 65 73 20 3a 20 74 65 78 74 29   ┆re initialize(var tables : text)┆
0x0179a0…0179c0             3b 0a 76 61 72 20 63 63 2c 63 68 31 3a 63 68 61 72 3b 0a 61 2c 62 2c 63 2c 64 2c 65 2c 69 3a 69   ┆; var cc,ch1:char; a,b,c,d,e,i:i┆
0x0179c0…0179e0             6e 74 65 67 65 72 3b 0a 66 69 72 73 74 6c 62 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6e 65 77 6c 62   ┆nteger; firstlb : integer; newlb┆
0x0179e0…017a00             20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 6c 69 73 74 5f 66 69 6c 65 5f 6e 61 6d 65   ┆ : boolean; begin list_file_name┆
0x017a00…017a20 (6, 0, 10)  20 3a 3d 20 62 6c 61 6e 6b 3b 0a 6f 6b 3a 3d 20 74 72 75 65 3b 0a 6d 6f 72 65 69 6e 70 75 74 3a   ┆ := blank; ok:= true; moreinput:┆
0x017a20…017a40             3d 20 74 72 75 65 3b 20 6c 69 6e 65 69 6e 78 3a 3d 20 31 3b 20 63 68 62 75 66 69 3a 3d 20 30 3b   ┆= true; lineinx:= 1; chbufi:= 0;┆
0x017a40…017a60             0a 69 6e 64 65 6e 74 69 6f 6e 3a 3d 20 30 3b 0a 6c 69 6e 65 6c 65 6e 67 74 68 3a 3d 20 31 3b 20   ┆ indention:= 0; linelength:= 1; ┆
0x017a60…017a80             70 72 69 6e 74 65 64 3a 3d 20 74 72 75 65 3b 20 65 72 72 6f 72 69 6e 78 3a 3d 20 30 3b 0a 70 61   ┆printed:= true; errorinx:= 0; pa┆
0x017a80…017aa0             72 73 65 73 74 61 63 6b 5b 30 5d 2e 74 61 62 6c 65 3a 3d 20 30 3b 20 61 74 74 73 74 61 63 6b 5b   ┆rsestack[0].table:= 0; attstack[┆
0x017aa0…017ac0             30 5d 2e 63 68 62 75 66 70 3a 3d 20 63 68 62 75 66 69 3b 0a 66 6f 72 20 69 3a 3d 20 30 20 74 6f   ┆0].chbufp:= chbufi; for i:= 0 to┆
0x017ac0…017ae0             20 73 74 61 63 6b 6d 61 78 20 64 6f 0a 61 74 74 73 74 61 63 6b 5b 20 69 20 5d 2e 62 75 66 66 65   ┆ stackmax do attstack[ i ].buffe┆
0x017ae0…017b00             72 73 74 61 72 74 3a 3d 20 31 3b 0a 63 68 3a 3d 20 27 20 27 3b 20 70 61 72 73 65 73 74 61 63 6b   ┆rstart:= 1; ch:= ' '; parsestack┆
0x017b00…017b20             5b 30 5d 2e 6c 69 6e 6b 3a 3d 20 30 3b 0a 64 69 67 69 74 63 68 3a 3d 20 5b 27 30 27 2e 2e 27 39   ┆[0].link:= 0; digitch:= ['0'..'9┆
0x017b20…017b40             27 5d 3b 20 6e 61 6d 65 63 68 3a 3d 20 5b 27 41 27 2e 2e 27 5a 27 2c 27 30 27 2e 2e 27 39 27 2c   ┆']; namech:= ['A'..'Z','0'..'9',┆
0x017b40…017b60             27 5f 27 5d 3b 0a 72 65 61 64 6c 6e 28 74 61 62 6c 65 73 2c 69 29 3b 20 28 2a 20 69 3a 3d 20 6e   ┆'_']; readln(tables,i); (* i:= n┆
0x017b60…017b80             75 6d 62 65 72 20 6f 66 20 63 6f 6e 73 74 61 6e 74 73 20 74 6f 20 73 6b 69 70 20 2a 29 0a 66 6f   ┆umber of constants to skip *) fo┆
0x017b80…017ba0             72 20 69 3a 3d 20 69 20 64 6f 77 6e 74 6f 20 31 20 64 6f 20 72 65 61 64 6c 6e 28 74 61 62 6c 65   ┆r i:= i downto 1 do readln(table┆
0x017ba0…017bc0             73 29 3b 0a 66 6f 72 20 69 3a 3d 20 31 20 74 6f 20 63 6f 6d 6c 65 6e 67 74 68 20 64 6f 20 72 65   ┆s); for i:= 1 to comlength do re┆
0x017bc0…017be0             61 64 28 74 61 62 6c 65 73 2c 63 6f 6d 65 6e 64 5b 69 5d 29 20 3b 0a 72 65 61 64 6c 6e 28 74 61   ┆ad(tables,comend[i]) ; readln(ta┆
0x017be0…017c00             62 6c 65 73 29 20 3b 0a 66 6f 72 20 63 68 31 3a 3d 20 6d 69 6e 63 68 20 74 6f 20 6d 61 78 63 68   ┆bles) ; for ch1:= minch to maxch┆
0x017c00…017c20 (6, 0, 11)  20 64 6f 0a 62 65 67 69 6e 20 72 65 61 64 6c 6e 28 74 61 62 6c 65 73 2c 63 63 2c 63 63 2c 61 2c   ┆ do begin readln(tables,cc,cc,a,┆
0x017c20…017c40             62 2c 63 29 3b 0a 77 69 74 68 20 65 6e 74 72 79 5b 63 63 5d 20 64 6f 0a 62 65 67 69 6e 0a 63 68   ┆b,c); with entry[cc] do begin ch┆
0x017c40…017c60             3a 3d 20 63 63 3b 20 6e 70 3a 3d 20 61 3b 20 68 70 3a 3d 20 62 3b 20 74 76 3a 3d 20 63 0a 65 6e   ┆:= cc; np:= a; hp:= b; tv:= c en┆
0x017c60…017c80             64 0a 65 6e 64 3b 0a 65 6e 74 72 79 5b 27 22 27 5d 3a 3d 20 65 6e 74 72 79 5b 27 27 27 27 5d 3b   ┆d end; entry['"']:= entry[''''];┆
0x017c80…017ca0             0a 66 6f 72 20 69 3a 3d 20 30 20 74 6f 20 6c 78 6d 61 78 20 64 6f 0a 77 69 74 68 20 6c 78 5b 69   ┆ for i:= 0 to lxmax do with lx[i┆
0x017ca0…017cc0             5d 20 64 6f 0a 62 65 67 69 6e 20 72 65 61 64 6c 6e 28 74 61 62 6c 65 73 2c 63 63 2c 63 63 2c 61   ┆] do begin readln(tables,cc,cc,a┆
0x017cc0…017ce0             2c 62 2c 63 29 3b 0a 63 68 3a 3d 20 63 63 3b 20 6e 70 3a 3d 20 61 3b 20 68 70 3a 3d 20 62 3b 20   ┆,b,c); ch:= cc; np:= a; hp:= b; ┆
0x017ce0…017d00             74 76 3a 3d 20 63 0a 65 6e 64 3b 0a 69 66 20 73 74 72 69 6e 67 63 68 3d 27 20 27 20 74 68 65 6e   ┆tv:= c end; if stringch=' ' then┆
0x017d00…017d20             20 28 2a 73 74 72 69 6e 67 20 66 61 63 69 6c 69 74 79 20 69 73 20 6e 6f 74 20 75 73 65 64 20 2a   ┆ (*string facility is not used *┆
0x017d20…017d40             29 20 73 74 72 69 6e 67 65 73 63 61 70 65 3a 3d 20 2d 32 0a 65 6c 73 65 20 73 74 72 69 6e 67 65   ┆) stringescape:= -2 else stringe┆
0x017d40…017d60             73 63 61 70 65 3a 3d 20 65 6e 74 72 79 5b 73 74 72 69 6e 67 63 68 5d 2e 74 76 3b 0a 6e 65 77 6c   ┆scape:= entry[stringch].tv; newl┆
0x017d60…017d80             62 3a 3d 20 74 72 75 65 3b 0a 66 6f 72 20 69 3a 3d 20 30 20 74 6f 20 6c 72 6d 61 78 20 64 6f 0a   ┆b:= true; for i:= 0 to lrmax do ┆
0x017d80…017da0             77 69 74 68 20 6c 72 5b 69 5d 20 64 6f 0a 62 65 67 69 6e 20 72 65 61 64 28 74 61 62 6c 65 73 2c   ┆with lr[i] do begin read(tables,┆
0x017da0…017dc0             61 2c 62 2c 63 2c 64 29 3b 0a 69 66 20 63 3c 3e 35 20 74 68 65 6e 20 72 65 61 64 6c 6e 28 74 61   ┆a,b,c,d); if c<>5 then readln(ta┆
0x017dc0…017de0             62 6c 65 73 2c 65 29 20 65 6c 73 65 20 72 65 61 64 6c 6e 28 74 61 62 6c 65 73 29 20 3b 0a 63 68   ┆bles,e) else readln(tables) ; ch┆
0x017de0…017e00             61 69 6e 3a 3d 20 61 3b 20 6e 65 78 74 3a 3d 20 62 3b 20 6b 69 6e 64 3a 3d 20 63 3b 0a 63 61 73   ┆ain:= a; next:= b; kind:= c; cas┆
0x017e00…017e20 (6, 0, 12)  65 20 63 20 6f 66 0a 31 2c 32 2c 34 2c 36 3a 20 62 65 67 69 6e 20 73 79 6d 62 3a 3d 20 64 3b 20   ┆e c of 1,2,4,6: begin symb:= d; ┆
0x017e20…017e40             65 72 72 3a 3d 20 65 20 65 6e 64 3b 0a 30 2c 33 20 20 20 20 3a 20 62 65 67 69 6e 20 72 73 3a 3d   ┆err:= e end; 0,3    : begin rs:=┆
0x017e40…017e60             20 64 3b 20 70 72 6f 64 3a 3d 20 65 20 20 65 6e 64 3b 0a 35 20 20 20 20 20 20 3a 62 65 67 69 6e   ┆ d; prod:= e  end; 5      :begin┆
0x017e60…017e80             20 6c 62 3a 3d 20 64 3b 0a 69 66 20 6e 65 77 6c 62 20 74 68 65 6e 0a 62 65 67 69 6e 20 66 69 72   ┆ lb:= d; if newlb then begin fir┆
0x017e80…017ea0             73 74 6c 62 3a 3d 20 69 3b 20 6e 65 77 6c 62 3a 3d 20 66 61 6c 73 65 3b 20 65 6e 64 3b 0a 69 66   ┆stlb:= i; newlb:= false; end; if┆
0x017ea0…017ec0             20 61 3d 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 72 5b 66 69 72 73 74 6c 62 5d 2e 63 68 61 69   ┆ a=0 then begin lr[firstlb].chai┆
0x017ec0…017ee0             6e 3a 3d 20 69 3b 0a 6e 65 77 6c 62 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 65 6e 64 0a 65 6e   ┆n:= i; newlb:= true; end; end en┆
0x017ee0…017f00             64 0a 65 6e 64 0a 3b 0a 70 72 6f 64 74 61 62 5b 30 5d 3a 3d 20 30 3b 0a 28 2a 20 72 65 61 64 20   ┆d end ; prodtab[0]:= 0; (* read ┆
0x017f00…017f20             74 68 65 20 70 72 6f 64 75 63 74 69 6f 6e 20 6c 61 62 65 6c 73 20 2a 29 0a 66 6f 72 20 69 3a 3d   ┆the production labels *) for i:=┆
0x017f20…017f40             20 31 20 74 6f 20 70 72 6f 64 6d 61 78 20 64 6f 0a 72 65 61 64 6c 6e 28 74 61 62 6c 65 73 2c 20   ┆ 1 to prodmax do readln(tables, ┆
0x017f40…017f60             61 2c 20 20 70 72 6f 64 74 61 62 5b 61 5d 29 3b 0a 65 6e 64 3b 28 2a 69 6e 69 74 69 61 6c 69 7a   ┆a,  prodtab[a]); end;(*initializ┆
0x017f60…017f80             65 2a 29 0a 0a 28 2a 24 72 2b 2a 29 0a 70 72 6f 63 65 64 75 72 65 20 6c 65 78 69 63 61 6c 3b 0a   ┆e*)  (*$r+*) procedure lexical; ┆
0x017f80…017fa0             28 2a 24 72 2d 2a 29 0a 28 2a 20 72 65 74 75 72 6e 73 20 6e 65 78 74 20 74 65 72 6d 69 6e 61 6c   ┆(*$r-*) (* returns next terminal┆
0x017fa0…017fc0             20 69 6e 20 6e 65 77 73 79 6d 62 2a 29 0a 6c 61 62 65 6c 20 39 39 39 3b 20 28 2a 20 61 66 74 65   ┆ in newsymb*) label 999; (* afte┆
0x017fc0…017fe0             72 20 73 6b 69 70 63 6f 6d 6d 65 6e 74 20 6e 65 77 73 79 6d 62 20 69 73 20 65 6d 70 74 79 20 61   ┆r skipcomment newsymb is empty a┆
0x017fe0…018000             6e 64 20 61 6e 20 65 78 74 72 61 20 74 75 72 6e 20 69 73 0a 6e 65 65 64 65 64 2c 20 74 68 69 73   ┆nd an extra turn is needed, this┆
0x018000…018020 (6, 0, 13)  20 69 73 20 64 6f 6e 65 20 62 79 20 6d 65 61 6e 73 20 6f 66 20 61 20 20 27 67 6f 74 6f 20 73 74   ┆ is done by means of a  'goto st┆
0x018020…018040             61 72 74 27 20 2a 29 0a 0a 76 61 72 0a 6e 65 77 69 3a 20 69 6e 74 65 67 65 72 3b 0a 6f 6c 64 63   ┆art' *)  var newi: integer; oldc┆
0x018040…018060             68 3a 20 63 68 61 72 3b 0a 6c 78 6e 6f 64 65 3a 20 6c 78 65 6c 6d 3b 0a 0a 70 72 6f 63 65 64 75   ┆h: char; lxnode: lxelm;  procedu┆
0x018060…018080             72 65 20 73 6b 69 70 63 6f 6d 6d 65 6e 74 3b 0a 28 2a 20 72 65 61 64 20 6e 65 78 74 20 63 68 61   ┆re skipcomment; (* read next cha┆
0x018080…0180a0             72 20 6f 6e 20 69 6e 70 75 74 20 75 6e 74 69 6c 20 63 6f 6d 65 6e 64 20 69 73 20 72 65 63 6f 67   ┆r on input until comend is recog┆
0x0180a0…0180c0             6e 69 7a 65 64 20 2a 29 0a 76 61 72 0a 73 74 61 72 74 5f 6c 69 6e 65 2c 20 70 61 73 73 6e 72 2c   ┆nized *) var start_line, passnr,┆
0x0180c0…0180e0             20 6f 70 74 6e 72 2c 20 6f 70 74 76 61 6c 75 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 63 6f 6d 6d   ┆ optnr, optvalue : integer; comm┆
0x0180e0…018100             65 6e 74 65 6e 64 20 3a 20 63 68 61 72 3b 0a 62 65 67 69 6e 20 28 2a 20 73 6b 69 70 20 63 6f 6d   ┆entend : char; begin (* skip com┆
0x018100…018120             6d 65 6e 74 20 2a 29 0a 73 74 61 72 74 5f 6c 69 6e 65 3a 3d 20 6c 69 6e 65 6e 75 6d 62 65 72 3b   ┆ment *) start_line:= linenumber;┆
0x018120…018140             20 28 2a 20 72 65 6d 65 6d 62 65 72 20 63 75 72 72 65 6e 74 20 6c 69 6e 65 20 6e 75 6d 62 65 72   ┆ (* remember current line number┆
0x018140…018160             20 69 6e 20 63 61 73 65 20 6f 66 20 75 6e 74 65 72 6d 69 6e 61 74 65 64 20 63 6f 6d 6d 65 6e 74   ┆ in case of unterminated comment┆
0x018160…018180             20 2a 29 0a 69 66 20 63 68 62 75 66 5b 20 63 68 62 75 66 69 20 5d 3d 27 2d 27 20 74 68 65 6e 20   ┆ *) if chbuf[ chbufi ]='-' then ┆
0x018180…0181a0             28 2a 20 20 2d 2d 20 63 6f 6d 6d 65 6e 74 20 2a 29 0a 6c 69 6e 65 69 6e 78 3a 3d 20 6c 69 6e 65   ┆(*  -- comment *) lineinx:= line┆
0x0181a0…0181c0             6c 65 6e 67 74 68 20 28 2a 20 73 6b 69 70 20 74 68 65 20 6c 69 6e 65 20 2a 29 0a 65 6c 73 65 0a   ┆length (* skip the line *) else ┆
0x0181c0…0181e0             62 65 67 69 6e 0a 69 66 20 63 68 62 75 66 5b 20 63 68 62 75 66 69 20 5d 3d 27 28 27 20 74 68 65   ┆begin if chbuf[ chbufi ]='(' the┆
0x0181e0…018200             6e 20 63 6f 6d 6d 65 6e 74 65 6e 64 3a 3d 20 27 29 27 0a 65 6c 73 65 20 63 6f 6d 6d 65 6e 74 65   ┆n commentend:= ')' else commente┆
0x018200…018220 (6, 0, 14)  6e 64 3a 3d 20 27 3e 27 3b 0a 69 66 20 63 68 3d 27 24 27 20 74 68 65 6e 20 28 2a 20 6f 70 74 69   ┆nd:= '>'; if ch='$' then (* opti┆
0x018220…018240             6f 6e 20 2a 29 0a 62 65 67 69 6e 0a 28 2a 20 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20 6f 70 74   ┆on *) begin (* the syntax of opt┆
0x018240…018260             69 6f 6e 20 69 73 3a 20 24 20 70 61 73 73 6e 72 20 6f 70 74 6e 72 20 6f 70 74 76 61 6c 75 65 20   ┆ion is: $ passnr optnr optvalue ┆
0x018260…018280             20 2a 29 0a 77 68 69 6c 65 20 6e 6f 74 20 28 28 20 63 68 3e 3d 27 30 27 29 20 61 6e 64 20 28 63   ┆ *) while not (( ch>='0') and (c┆
0x018280…0182a0             68 3c 3d 27 39 27 29 29 20 64 6f 20 69 6e 63 68 61 72 3b 20 28 2a 20 73 6b 69 70 20 2a 29 0a 70   ┆h<='9')) do inchar; (* skip *) p┆
0x0182a0…0182c0             61 73 73 6e 72 3a 3d 20 6f 72 64 28 63 68 29 2d 6f 72 64 28 27 30 27 29 3b 0a 0a 72 65 70 65 61   ┆assnr:= ord(ch)-ord('0');  repea┆
0x0182c0…0182e0             74 0a 69 6e 63 68 61 72 3b 20 28 2a 20 73 6b 69 70 20 64 65 6c 69 6d 69 74 65 72 20 2a 29 0a 75   ┆t inchar; (* skip delimiter *) u┆
0x0182e0…018300             6e 74 69 6c 20 28 63 68 3e 3d 27 30 27 29 20 61 6e 64 20 28 63 68 3c 3d 27 39 27 29 3b 0a 0a 6f   ┆ntil (ch>='0') and (ch<='9');  o┆
0x018300…018320             70 74 6e 72 3a 3d 20 30 3b 0a 77 68 69 6c 65 20 28 63 68 3e 3d 27 30 27 29 20 61 6e 64 20 28 63   ┆ptnr:= 0; while (ch>='0') and (c┆
0x018320…018340             68 3c 3d 27 39 27 29 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 6f 70 74 6e 72 3c 31 30 30 20 74 68   ┆h<='9') do begin if optnr<100 th┆
0x018340…018360             65 6e 0a 6f 70 74 6e 72 3a 3d 20 6f 70 74 6e 72 20 2a 20 31 30 2b 6f 72 64 28 63 68 29 2d 6f 72   ┆en optnr:= optnr * 10+ord(ch)-or┆
0x018360…018380             64 28 27 30 27 29 3b 0a 69 6e 63 68 61 72 3b 0a 65 6e 64 3b 20 28 2a 6f 70 74 69 6f 6e 20 6e 75   ┆d('0'); inchar; end; (*option nu┆
0x018380…0183a0             6d 62 65 72 20 2a 29 0a 0a 77 68 69 6c 65 20 6e 6f 74 20 28 28 63 68 3e 3d 27 30 27 29 20 61 6e   ┆mber *)  while not ((ch>='0') an┆
0x0183a0…0183c0             64 20 28 63 68 3c 3d 27 39 27 29 29 20 64 6f 0a 69 6e 63 68 61 72 3b 20 28 2a 20 73 6b 69 70 20   ┆d (ch<='9')) do inchar; (* skip ┆
0x0183c0…0183e0             64 65 6c 69 6d 69 74 65 72 20 2a 29 0a 0a 6f 70 74 76 61 6c 75 65 3a 3d 20 30 3b 0a 77 68 69 6c   ┆delimiter *)  optvalue:= 0; whil┆
0x0183e0…018400             65 20 28 63 68 3e 3d 27 30 27 29 20 61 6e 64 20 28 63 68 3c 3d 27 39 27 29 20 61 6e 64 20 28 6f   ┆e (ch>='0') and (ch<='9') and (o┆
0x018400…018420 (6, 0, 15)  70 74 76 61 6c 75 65 3c 31 30 30 30 30 20 29 20 64 6f 0a 62 65 67 69 6e 0a 6f 70 74 76 61 6c 75   ┆ptvalue<10000 ) do begin optvalu┆
0x018420…018440             65 3a 3d 20 6f 70 74 76 61 6c 75 65 20 2a 20 31 30 2b 6f 72 64 28 63 68 29 2d 6f 72 64 28 27 30   ┆e:= optvalue * 10+ord(ch)-ord('0┆
0x018440…018460             27 29 3b 0a 69 6e 63 68 61 72 3b 0a 65 6e 64 3b 0a 69 66 20 70 61 73 73 6e 72 3d 31 20 74 68 65   ┆'); inchar; end; if passnr=1 the┆
0x018460…018480             6e 0a 62 65 67 69 6e 0a 63 61 73 65 20 6f 70 74 6e 72 20 6f 66 0a 31 3a 20 62 65 67 69 6e 0a 20   ┆n begin case optnr of 1: begin  ┆
0x018480…0184a0             70 72 6f 67 72 61 6d 6c 69 73 74 3a 3d 20 6f 70 74 76 61 6c 75 65 3d 31 3b 0a 72 65 6d 65 6d 62   ┆programlist:= optvalue=1; rememb┆
0x0184a0…0184c0             65 72 5f 6c 69 73 74 3a 3d 20 70 72 6f 67 72 61 6d 6c 69 73 74 3b 0a 65 6e 64 3b 0a 32 3a 20 63   ┆er_list:= programlist; end; 2: c┆
0x0184c0…0184e0             61 6c 6c 5f 70 61 73 73 5f 33 3a 3d 20 6f 70 74 76 61 6c 75 65 3d 31 3b 0a 33 3a 20 6e 61 6d 65   ┆all_pass_3:= optvalue=1; 3: name┆
0x0184e0…018500             74 61 62 6c 65 5f 64 75 6d 70 3a 3d 20 6f 70 74 76 61 6c 75 65 3d 31 3b 20 28 2a 20 64 75 6d 70   ┆table_dump:= optvalue=1; (* dump┆
0x018500…018520             20 74 68 65 20 68 61 73 68 20 74 61 62 6c 65 20 6f 6e 20 66 69 6c 65 3a 20 73 70 69 78 74 6f 6e   ┆ the hash table on file: spixton┆
0x018520…018540             61 6d 65 20 2a 29 0a 65 6c 73 65 20 3b 0a 65 6e 64 20 28 2a 20 63 61 73 65 20 2a 29 20 3b 0a 65   ┆ame *) else ; end (* case *) ; e┆
0x018540…018560             6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 28 2a 20 65 6d 69 74 20 74 68 65 20 6f 70 74 69 6f   ┆nd else begin  (* emit the optio┆
0x018560…018580             6e 20 2a 29 0a 65 6d 69 74 28 63 6f 70 74 69 6f 6e 2c 20 70 61 73 73 6e 72 2c 20 6f 70 74 6e 72   ┆n *) emit(coption, passnr, optnr┆
0x018580…0185a0             2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20 6f 70 74 76 61 6c   ┆, cnocode); emit(cnocode, optval┆
0x0185a0…0185c0             75 65 2c 20 6e 69 6c 6c 2c 20 63 6e 6f 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28   ┆ue, nill, cnocode); end;  end; (┆
0x0185c0…0185e0             2a 20 6f 70 74 69 6f 6e 20 2a 29 0a 0a 72 65 70 65 61 74 0a 77 68 69 6c 65 20 28 63 68 3c 3e 27   ┆* option *)  repeat while (ch<>'┆
0x0185e0…018600             2a 27 29 20 61 6e 64 20 6d 6f 72 65 69 6e 70 75 74 20 64 6f 20 69 6e 63 68 61 72 3b 0a 69 6e 63   ┆*') and moreinput do inchar; inc┆
0x018600…018620 (6, 1, 1)   68 61 72 3b 0a 75 6e 74 69 6c 20 28 63 68 3d 63 6f 6d 6d 65 6e 74 65 6e 64 29 20 6f 72 20 6e 6f   ┆har; until (ch=commentend) or no┆
0x018620…018640             74 20 6d 6f 72 65 69 6e 70 75 74 3b 0a 69 66 20 6e 6f 74 20 6d 6f 72 65 69 6e 70 75 74 20 74 68   ┆t moreinput; if not moreinput th┆
0x018640…018660             65 6e 0a 62 65 67 69 6e 0a 6d 61 72 6b 65 72 72 6f 72 28 20 31 30 33 20 29 3b 20 28 2a 20 63 6f   ┆en begin markerror( 103 ); (* co┆
0x018660…018680             6d 6d 65 6e 74 20 64 69 64 20 6e 6f 74 20 74 65 72 6d 69 6e 61 74 65 20 2a 29 0a 77 72 69 74 65   ┆mment did not terminate *) write┆
0x018680…0186a0             28 6f 75 74 70 75 74 2c 27 28 2a 20 63 6f 6d 6d 65 6e 74 20 73 74 61 72 74 65 64 20 69 6e 20 6c   ┆(output,'(* comment started in l┆
0x0186a0…0186c0             69 6e 65 20 27 2c 20 73 74 61 72 74 5f 6c 69 6e 65 3a 31 2c 20 27 20 2a 29 27 29 3b 0a 65 6e 64   ┆ine ', start_line:1, ' *)'); end┆
0x0186c0…0186e0             3b 0a 65 6e 64 3b 20 28 2a 20 6e 6f 74 20 20 2d 2d 20 63 6f 6d 6d 65 6e 74 20 2a 29 0a 69 6e 63   ┆; end; (* not  -- comment *) inc┆
0x0186e0…018700             68 61 72 3b 0a 65 6e 64 3b 20 28 2a 20 73 6b 69 70 20 63 6f 6d 6d 65 6e 74 20 2a 29 0a 0a 0a 28   ┆har; end; (* skip comment *)   (┆
0x018700…018720             2a 24 72 2b 2a 29 0a 70 72 6f 63 65 64 75 72 65 20 70 75 73 68 63 68 3b 0a 28 2a 24 72 2d 2a 29   ┆*$r+*) procedure pushch; (*$r-*)┆
0x018720…018740             0a 62 65 67 69 6e 0a 63 68 62 75 66 5b 63 68 62 75 66 69 5d 3a 3d 20 63 68 3b 0a 69 66 20 63 68   ┆ begin chbuf[chbufi]:= ch; if ch┆
0x018740…018760             62 75 66 69 3c 63 68 62 75 66 6d 61 78 20 74 68 65 6e 20 63 68 62 75 66 69 3a 3d 20 63 68 62 75   ┆bufi<chbufmax then chbufi:= chbu┆
0x018760…018780             66 69 2b 31 0a 65 6c 73 65 20 73 74 6f 70 28 36 29 3b 0a 69 66 20 74 65 73 74 6f 75 74 70 75 74   ┆fi+1 else stop(6); if testoutput┆
0x018780…0187a0             20 74 68 65 6e 20 77 72 69 74 65 28 6f 75 74 70 75 74 2c 63 68 29 3b 20 28 2a 2a 2a 73 6e 61 70   ┆ then write(output,ch); (***snap┆
0x0187a0…0187c0             73 68 6f 74 2a 2a 2a 29 0a 65 6e 64 3b 20 28 2a 70 75 73 68 63 68 2a 29 0a 0a 70 72 6f 63 65 64   ┆shot***) end; (*pushch*)  proced┆
0x0187c0…0187e0             75 72 65 20 72 65 61 64 73 74 72 69 6e 67 3b 0a 76 61 72 20 73 74 72 63 68 3a 63 68 61 72 3b 0a   ┆ure readstring; var strch:char; ┆
0x0187e0…018800             69 6e 73 74 72 69 6e 67 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 73 74 72 63 68 3a   ┆instring : boolean; begin strch:┆
0x018800…018820 (6, 1, 2)   3d 20 6f 6c 64 63 68 3b 0a 63 68 3a 3d 20 6c 69 6e 65 5b 6c 69 6e 65 69 6e 78 5d 3b 20 28 2a 20   ┆= oldch; ch:= line[lineinx]; (* ┆
0x018820…018840             6d 61 79 62 65 20 63 68 20 77 61 73 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 75 70 70 65 72 20   ┆maybe ch was converted to upper ┆
0x018840…018860             63 61 73 65 20 2a 29 0a 69 6e 73 74 72 69 6e 67 3a 3d 20 74 72 75 65 3b 0a 77 68 69 6c 65 0a 28   ┆case *) instring:= true; while (┆
0x018860…018880             20 69 6e 73 74 72 69 6e 67 20 20 20 20 20 20 20 20 20 28 2a 20 70 72 65 63 65 64 69 6e 67 20 63   ┆ instring         (* preceding c┆
0x018880…0188a0             68 61 72 61 63 74 65 72 20 77 61 73 20 6e 6f 74 20 61 20 73 74 72 69 6e 67 20 64 65 6c 69 6d 69   ┆haracter was not a string delimi┆
0x0188a0…0188c0             74 65 72 20 2a 29 0a 6f 72 20 28 20 63 68 3d 73 74 72 63 68 20 29 20 28 2a 20 74 68 69 73 20 63   ┆ter *) or ( ch=strch ) (* this c┆
0x0188c0…0188e0             68 61 72 61 63 74 65 72 20 69 73 20 61 20 64 65 6c 69 6d 20 2a 29 0a 29 20 61 6e 64 20 28 20 6c   ┆haracter is a delim *) ) and ( l┆
0x0188e0…018900             69 6e 65 69 6e 78 3c 3e 6c 69 6e 65 6c 65 6e 67 74 68 20 29 20 28 2a 20 73 74 6f 70 20 61 74 20   ┆ineinx<>linelength ) (* stop at ┆
0x018900…018920             65 6f 6c 6e 20 2a 29 0a 64 6f 0a 62 65 67 69 6e 0a 69 6e 73 74 72 69 6e 67 3a 3d 20 28 63 68 3c   ┆eoln *) do begin instring:= (ch<┆
0x018920…018940             3e 73 74 72 63 68 29 20 6f 72 20 6e 6f 74 20 69 6e 73 74 72 69 6e 67 3b 0a 28 2a 20 66 61 6c 73   ┆>strch) or not instring; (* fals┆
0x018940…018960             65 20 61 74 20 66 69 72 73 74 20 64 65 6c 69 6d 20 61 66 74 65 72 20 63 68 61 72 61 63 74 65 72   ┆e at first delim after character┆
0x018960…018980             2c 20 65 6c 73 65 20 74 72 75 65 20 2a 29 0a 69 66 20 69 6e 73 74 72 69 6e 67 20 74 68 65 6e 20   ┆, else true *) if instring then ┆
0x018980…0189a0             70 75 73 68 63 68 3b 0a 6c 69 6e 65 69 6e 78 3a 3d 20 6c 69 6e 65 69 6e 78 2b 31 3b 0a 63 68 3a   ┆pushch; lineinx:= lineinx+1; ch:┆
0x0189a0…0189c0             3d 20 6c 69 6e 65 5b 6c 69 6e 65 69 6e 78 5d 3b 20 28 2a 20 69 6e 63 68 61 72 20 77 69 74 68 6f   ┆= line[lineinx]; (* inchar witho┆
0x0189c0…0189e0             75 74 20 63 6f 6e 76 65 72 74 69 6e 67 20 74 6f 20 75 70 70 65 72 20 63 61 73 65 20 2a 29 0a 65   ┆ut converting to upper case *) e┆
0x0189e0…018a00             6e 64 3b 0a 69 66 20 69 6e 73 74 72 69 6e 67 20 6f 72 20 28 63 68 3d 73 74 72 63 68 29 20 74 68   ┆nd; if instring or (ch=strch) th┆
0x018a00…018a20 (6, 1, 3)   65 6e 20 6d 61 72 6b 65 72 72 6f 72 28 31 30 31 29 3b 0a 28 2a 20 73 74 72 69 6e 67 20 64 69 64   ┆en markerror(101); (* string did┆
0x018a20…018a40             20 6e 6f 74 20 74 65 72 6d 69 6e 61 74 65 20 77 69 74 68 69 6e 20 6c 69 6e 65 20 2a 29 0a 6e 65   ┆ not terminate within line *) ne┆
0x018a40…018a60             77 73 79 6d 62 3a 3d 20 73 74 72 69 6e 67 76 61 6c 0a 65 6e 64 3b 20 28 2a 72 65 61 64 73 74 72   ┆wsymb:= stringval end; (*readstr┆
0x018a60…018a80             69 6e 67 2a 29 0a 0a 62 65 67 69 6e 20 28 2a 6c 65 78 69 63 61 6c 2a 29 0a 39 39 39 3a 0a 0a 69   ┆ing*)  begin (*lexical*) 999:  i┆
0x018a80…018aa0             66 20 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28   ┆f testoutput then begin writeln(┆
0x018aa0…018ac0             6f 75 74 70 75 74 29 3b 20 77 72 69 74 65 28 6f 75 74 70 75 74 2c 27 20 6c 65 78 69 63 61 6c 3a   ┆output); write(output,' lexical:┆
0x018ac0…018ae0             20 27 29 3b 20 28 2a 2a 2a 73 6e 61 70 73 68 6f 74 2a 2a 2a 29 0a 65 6e 64 3b 0a 0a 77 68 69 6c   ┆ '); (***snapshot***) end;  whil┆
0x018ae0…018b00             65 20 63 68 3d 73 6b 69 70 63 68 20 64 6f 20 69 6e 63 68 61 72 3b 0a 6f 6c 64 62 75 66 69 3a 3d   ┆e ch=skipch do inchar; oldbufi:=┆
0x018b00…018b20             20 63 68 62 75 66 69 3b 0a 69 66 20 6e 6f 74 20 6d 6f 72 65 69 6e 70 75 74 20 74 68 65 6e 0a 62   ┆ chbufi; if not moreinput then b┆
0x018b20…018b40             65 67 69 6e 0a 69 66 20 6e 65 77 73 79 6d 62 3d 30 20 74 68 65 6e 20 28 2a 74 68 69 72 64 2a 29   ┆egin if newsymb=0 then (*third*)┆
0x018b40…018b60             20 73 74 6f 70 28 32 29 0a 65 6c 73 65 0a 69 66 20 6e 65 77 73 79 6d 62 3d 31 20 74 68 65 6e 20   ┆ stop(2) else if newsymb=1 then ┆
0x018b60…018b80             28 2a 73 65 63 6f 6e 64 2a 29 20 6e 65 77 73 79 6d 62 3a 3d 20 30 0a 65 6c 73 65 20 28 2a 66 69   ┆(*second*) newsymb:= 0 else (*fi┆
0x018b80…018ba0             72 73 74 2a 29 20 6e 65 77 73 79 6d 62 3a 3d 20 31 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 63 68   ┆rst*) newsymb:= 1 end else if ch┆
0x018ba0…018bc0             20 69 6e 20 64 69 67 69 74 63 68 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 6b 6f 6e 73 74 2a 29   ┆ in digitch then begin (*konst*)┆
0x018bc0…018be0             0a 72 65 70 65 61 74 0a 70 75 73 68 63 68 3b 20 69 6e 63 68 61 72 3b 0a 75 6e 74 69 6c 20 6e 6f   ┆ repeat pushch; inchar; until no┆
0x018be0…018c00             74 20 28 63 68 20 69 6e 20 64 69 67 69 74 63 68 29 3b 0a 6e 65 77 73 79 6d 62 3a 3d 20 63 6f 6e   ┆t (ch in digitch); newsymb:= con┆
0x018c00…018c20 (6, 1, 4)   73 74 76 61 6c 3b 0a 69 66 20 28 63 68 3d 27 2e 27 29 20 61 6e 64 20 28 6c 69 6e 65 5b 6c 69 6e   ┆stval; if (ch='.') and (line[lin┆
0x018c20…018c40             65 69 6e 78 2b 31 5d 3c 3e 27 2e 27 29 0a 61 6e 64 20 28 6c 69 6e 65 20 5b 20 6c 69 6e 65 69 6e   ┆einx+1]<>'.') and (line [ linein┆
0x018c40…018c60             78 2b 31 20 5d 3c 3e 27 29 27 20 29 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 64 65 63 69 6d 61   ┆x+1 ]<>')' ) then begin (*decima┆
0x018c60…018c80             6c 20 66 72 61 63 74 69 6f 6e 2a 29 0a 70 75 73 68 63 68 3b 20 69 6e 63 68 61 72 3b 0a 69 66 20   ┆l fraction*) pushch; inchar; if ┆
0x018c80…018ca0             63 68 20 69 6e 20 64 69 67 69 74 63 68 20 74 68 65 6e 0a 72 65 70 65 61 74 0a 70 75 73 68 63 68   ┆ch in digitch then repeat pushch┆
0x018ca0…018cc0             3b 20 69 6e 63 68 61 72 3b 0a 75 6e 74 69 6c 20 6e 6f 74 20 28 63 68 20 69 6e 20 64 69 67 69 74   ┆; inchar; until not (ch in digit┆
0x018cc0…018ce0             63 68 29 0a 65 6c 73 65 20 6d 61 72 6b 65 72 72 6f 72 28 31 30 30 29 3b 20 28 2a 20 65 72 72 6f   ┆ch) else markerror(100); (* erro┆
0x018ce0…018d00             72 20 69 6e 20 72 65 61 6c 63 6f 6e 73 74 61 6e 74 3a 20 64 69 67 69 74 20 65 78 70 65 63 74 65   ┆r in realconstant: digit expecte┆
0x018d00…018d20             64 20 2a 29 0a 6e 65 77 73 79 6d 62 3a 3d 20 72 65 61 6c 6b 6f 6e 73 74 3b 0a 65 6e 64 3b 0a 0a   ┆d *) newsymb:= realkonst; end;  ┆
0x018d20…018d40             69 66 20 63 68 3d 27 45 27 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 65 78 70 6f 6e 65 6e 74 2a   ┆if ch='E' then begin (*exponent*┆
0x018d40…018d60             29 0a 70 75 73 68 63 68 3b 20 69 6e 63 68 61 72 3b 0a 69 66 20 63 68 20 69 6e 20 5b 27 2b 27 2c   ┆) pushch; inchar; if ch in ['+',┆
0x018d60…018d80             27 2d 27 5d 20 74 68 65 6e 0a 62 65 67 69 6e 0a 70 75 73 68 63 68 3b 20 69 6e 63 68 61 72 3b 0a   ┆'-'] then begin pushch; inchar; ┆
0x018d80…018da0             65 6e 64 3b 0a 0a 69 66 20 63 68 20 69 6e 20 64 69 67 69 74 63 68 20 74 68 65 6e 0a 72 65 70 65   ┆end;  if ch in digitch then repe┆
0x018da0…018dc0             61 74 0a 70 75 73 68 63 68 3b 20 69 6e 63 68 61 72 3b 0a 75 6e 74 69 6c 20 6e 6f 74 20 28 63 68   ┆at pushch; inchar; until not (ch┆
0x018dc0…018de0             20 69 6e 20 64 69 67 69 74 63 68 29 0a 65 6c 73 65 20 6d 61 72 6b 65 72 72 6f 72 28 31 30 30 29   ┆ in digitch) else markerror(100)┆
0x018de0…018e00             3b 0a 6e 65 77 73 79 6d 62 3a 3d 20 72 65 61 6c 6b 6f 6e 73 74 3b 0a 65 6e 64 3b 0a 65 6e 64 0a   ┆; newsymb:= realkonst; end; end ┆
0x018e00…018e20 (6, 1, 5)   65 6c 73 65 20 28 2a 20 6e 6f 74 20 6b 6f 6e 73 74 20 2a 29 0a 62 65 67 69 6e 20 28 2a 20 73 65   ┆else (* not konst *) begin (* se┆
0x018e20…018e40             61 72 63 68 20 69 6e 20 74 65 72 6d 74 72 65 65 20 2a 29 0a 70 75 73 68 63 68 3b 0a 6c 78 6e 6f   ┆arch in termtree *) pushch; lxno┆
0x018e40…018e60             64 65 3a 3d 20 65 6e 74 72 79 5b 63 68 5d 3b 20 6e 65 77 69 3a 3d 20 6c 78 6e 6f 64 65 2e 68 70   ┆de:= entry[ch]; newi:= lxnode.hp┆
0x018e60…018e80             3b 0a 69 6e 63 68 61 72 3b 0a 69 66 20 6e 65 77 69 3c 3e 30 20 74 68 65 6e 0a 72 65 70 65 61 74   ┆; inchar; if newi<>0 then repeat┆
0x018e80…018ea0             0a 69 66 20 6c 78 5b 6e 65 77 69 5d 2e 63 68 3d 63 68 20 74 68 65 6e 0a 62 65 67 69 6e 20 70 75   ┆ if lx[newi].ch=ch then begin pu┆
0x018ea0…018ec0             73 68 63 68 3b 0a 6c 78 6e 6f 64 65 3a 3d 20 6c 78 5b 6e 65 77 69 5d 3b 0a 6e 65 77 69 3a 3d 20   ┆shch; lxnode:= lx[newi]; newi:= ┆
0x018ec0…018ee0             6c 78 6e 6f 64 65 2e 68 70 3b 0a 69 6e 63 68 61 72 3b 0a 65 6e 64 0a 65 6c 73 65 20 6e 65 77 69   ┆lxnode.hp; inchar; end else newi┆
0x018ee0…018f00             3a 3d 20 6c 78 5b 6e 65 77 69 5d 2e 6e 70 3b 0a 75 6e 74 69 6c 20 6e 65 77 69 3d 30 3b 0a 6f 6c   ┆:= lx[newi].np; until newi=0; ol┆
0x018f00…018f20             64 63 68 3a 3d 20 63 68 62 75 66 5b 63 68 62 75 66 69 2d 31 5d 3b 0a 69 66 20 28 6f 6c 64 63 68   ┆dch:= chbuf[chbufi-1]; if (oldch┆
0x018f20…018f40             20 69 6e 20 6e 61 6d 65 63 68 29 20 61 6e 64 20 28 63 68 20 69 6e 20 6e 61 6d 65 63 68 29 20 74   ┆ in namech) and (ch in namech) t┆
0x018f40…018f60             68 65 6e 0a 62 65 67 69 6e 0a 72 65 70 65 61 74 20 70 75 73 68 63 68 3b 0a 69 6e 63 68 61 72 3b   ┆hen begin repeat pushch; inchar;┆
0x018f60…018f80             0a 75 6e 74 69 6c 20 6e 6f 74 28 63 68 20 69 6e 20 6e 61 6d 65 63 68 29 3b 0a 6e 65 77 73 79 6d   ┆ until not(ch in namech); newsym┆
0x018f80…018fa0             62 3a 3d 20 6e 61 6d 65 76 61 6c 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 6c 78 6e 6f 64 65 2e 74   ┆b:= nameval end else if lxnode.t┆
0x018fa0…018fc0             76 3e 30 20 74 68 65 6e 20 28 2a 76 61 6c 69 64 20 74 65 72 6d 69 6e 61 6c 2a 29 0a 62 65 67 69   ┆v>0 then (*valid terminal*) begi┆
0x018fc0…018fe0             6e 0a 69 66 20 6c 78 6e 6f 64 65 2e 74 76 3d 72 65 61 6c 6b 6f 6e 73 74 20 74 68 65 6e 20 6e 65   ┆n if lxnode.tv=realkonst then ne┆
0x018fe0…019000             77 73 79 6d 62 3a 3d 20 6e 61 6d 65 76 61 6c 20 28 2a 20 74 68 65 20 6e 61 6d 65 20 27 72 65 61   ┆wsymb:= nameval (* the name 'rea┆
0x019000…019020 (6, 1, 6)   6c 6b 6f 6e 73 74 27 20 69 73 20 6e 6f 74 20 61 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 20 2a   ┆lkonst' is not a reserved word *┆
0x019020…019040             29 0a 65 6c 73 65 0a 62 65 67 69 6e 20 6e 65 77 73 79 6d 62 3a 3d 20 6c 78 6e 6f 64 65 2e 74 76   ┆) else begin newsymb:= lxnode.tv┆
0x019040…019060             3b 0a 63 68 62 75 66 69 3a 3d 20 6f 6c 64 62 75 66 69 3b 0a 69 66 20 6e 65 77 73 79 6d 62 3d 73   ┆; chbufi:= oldbufi; if newsymb=s┆
0x019060…019080             74 72 69 6e 67 65 73 63 61 70 65 20 74 68 65 6e 20 72 65 61 64 73 74 72 69 6e 67 0a 65 6c 73 65   ┆tringescape then readstring else┆
0x019080…0190a0             0a 69 66 20 6e 65 77 73 79 6d 62 3d 63 6f 6d 62 65 67 69 6e 20 74 68 65 6e 20 62 65 67 69 6e 20   ┆ if newsymb=combegin then begin ┆
0x0190a0…0190c0             73 6b 69 70 63 6f 6d 6d 65 6e 74 20 3b 0a 67 6f 74 6f 20 39 39 39 3b 20 28 2a 20 65 6e 74 65 72   ┆skipcomment ; goto 999; (* enter┆
0x0190c0…0190e0             20 6c 65 78 69 63 61 6c 20 6f 6e 63 65 20 6d 6f 72 65 20 20 2a 29 0a 20 20 65 6e 64 0a 65 6e 64   ┆ lexical once more  *)   end end┆
0x0190e0…019100             0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 6f 6c 64 63 68 20 69 6e 20 6e 61 6d 65 63 68 20 74 68 65   ┆ end else if oldch in namech the┆
0x019100…019120             6e 20 6e 65 77 73 79 6d 62 3a 3d 20 6e 61 6d 65 76 61 6c 0a 65 6c 73 65 20 6d 61 72 6b 65 72 72   ┆n newsymb:= nameval else markerr┆
0x019120…019140             6f 72 28 30 29 0a 65 6e 64 0a 65 6e 64 3b 20 28 2a 6c 65 78 69 63 61 6c 2a 29 0a 0a 0a 70 72 6f   ┆or(0) end end; (*lexical*)   pro┆
0x019140…019160             63 65 64 75 72 65 20 73 70 65 63 69 61 6c 5f 63 6f 64 65 28 6f 6c 64 74 6f 70 2c 20 6e 65 77 74   ┆cedure special_code(oldtop, newt┆
0x019160…019180             6f 70 20 3a 20 73 74 61 63 6b 69 6e 78 3b 20 70 72 6f 64 20 3a 20 69 6e 74 65 67 65 72 29 3b 0a   ┆op : stackinx; prod : integer); ┆
0x019180…0191a0             0a 28 2a 20 74 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 69 73 20 6f 6e 6c 79 20 75 73 65 64 20   ┆ (* this procedure is only used ┆
0x0191a0…0191c0             66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6f 66 20 6f 70 65 6e 20 72 6f 75 74 69 6e 65 73 20 2a 29   ┆for handling of open routines *)┆
0x0191c0…0191e0             0a 0a 28 2a 20 68 61 6e 64 6c 69 6e 67 20 6f 66 20 6f 70 65 6e 20 72 6f 75 74 69 6e 65 73 20 62   ┆  (* handling of open routines b┆
0x0191e0…019200             79 20 68 61 6e 64 20 28 20 64 6f 20 6e 6f 74 20 75 73 65 20 70 61 72 73 65 20 29 20 2a 29 0a 0a   ┆y hand ( do not use parse ) *)  ┆
0x019200…019220 (6, 1, 7)   28 2a 20 73 79 6e 74 61 78 3a 0a 62 65 67 69 6e 62 6f 64 79 20 20 61 70 70 65 74 69 74 65 20 3a   ┆(* syntax: beginbody  appetite :┆
0x019220…019240             0a 70 61 73 73 35 63 6f 64 65 0a 65 6e 64 62 6f 64 79 0a 0a 63 6f 64 65 3a 0a 2e 20 20 20 20 6c   ┆ pass5code endbody  code: .    l┆
0x019240…019260             69 74 65 72 61 6c 20 20 62 65 67 69 6e 63 6f 64 65 0a 2e 20 20 20 20 63 6f 64 65 6c 69 6e 65 28   ┆iteral  begincode .    codeline(┆
0x019260…019280             20 6c 65 6e 67 74 68 20 29 20 2e 2e 2e 2e 2e 0a 2e 20 20 20 20 20 20 20 2e 0a 2e 20 20 20 20 20   ┆ length ) ..... .       . .     ┆
0x019280…0192a0             20 20 2e 0a 2e 20 20 20 20 20 20 20 2e 0a 2e 20 20 20 20 20 65 6e 64 63 6f 64 65 0a 2e 20 20 20   ┆  . .       . .     endcode .   ┆
0x0192a0…0192c0             20 20 65 6e 64 6c 65 76 65 6c 0a 0a 2a 29 0a 0a 76 61 72 0a 73 74 65 70 76 61 72 20 3a 20 69 6e   ┆  endlevel  *)  var stepvar : in┆
0x0192c0…0192e0             74 65 67 65 72 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 6e 6f 74 5f 65 6e 64 62 6f 64 79 20 3a 20 62   ┆teger;  function not_endbody : b┆
0x0192e0…019300             6f 6f 6c 65 61 6e 3b 0a 28 2a 20 73 65 65 20 69 66 20 74 68 65 20 6e 65 78 74 20 77 6f 72 64 20   ┆oolean; (* see if the next word ┆
0x019300…019320             69 73 20 27 65 6e 64 62 6f 64 79 27 2c 20 6c 69 6e 65 69 78 20 69 73 20 6f 6e 6c 79 20 63 68 61   ┆is 'endbody', lineix is only cha┆
0x019320…019340             6e 67 65 64 0a 69 66 20 73 75 63 63 65 73 20 20 69 2e 65 2e 20 70 61 72 73 69 6e 67 20 6d 61 79   ┆nged if succes  i.e. parsing may┆
0x019340…019360             20 63 6f 6e 74 69 6e 75 65 20 61 73 20 69 66 20 74 68 65 20 72 6f 75 74 69 6e 65 20 62 6f 64 79   ┆ continue as if the routine body┆
0x019360…019380             0a 6f 6e 6c 79 20 63 6f 6e 73 69 73 74 65 64 20 6f 66 20 3a 20 20 20 27 62 65 67 69 6e 62 6f 64   ┆ only consisted of :   'beginbod┆
0x019380…0193a0             79 20 61 70 70 65 74 69 74 65 20 3a 20 27 0a 2a 29 0a 0a 76 61 72 0a 73 74 65 70 2c 20 6f 6c 64   ┆y appetite : ' *)  var step, old┆
0x0193a0…0193c0             69 6e 64 65 78 20 3a 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64 62 6f 64 79 20 3a 20 61 6c 66 61 3b   ┆index : integer; endbody : alfa;┆
0x0193c0…0193e0             0a 66 6f 75 6e 64 20 3a 20 62 6f 6f 6c 65 61 6e 3b 20 28 2a 20 6c 6f 63 61 6c 20 72 65 73 75 6c   ┆ found : boolean; (* local resul┆
0x0193e0…019400             74 20 2a 29 0a 0a 62 65 67 69 6e 0a 66 6f 75 6e 64 3a 3d 20 66 61 6c 73 65 3b 0a 77 68 69 6c 65   ┆t *)  begin found:= false; while┆
0x019400…019420 (6, 1, 8)   20 63 68 3d 73 6b 69 70 63 68 20 64 6f 20 69 6e 63 68 61 72 3b 0a 6f 6c 64 69 6e 64 65 78 3a 3d   ┆ ch=skipch do inchar; oldindex:=┆
0x019420…019440             20 6c 69 6e 65 69 6e 78 3b 20 28 2a 20 72 65 6d 65 6d 62 65 72 20 69 6e 64 65 78 20 6f 66 20 66   ┆ lineinx; (* remember index of f┆
0x019440…019460             69 72 73 74 20 63 68 61 72 61 63 74 65 72 20 2a 29 0a 0a 69 66 20 63 68 3d 27 45 27 20 74 68 65   ┆irst character *)  if ch='E' the┆
0x019460…019480             6e 20 28 2a 20 70 6f 73 73 69 62 6c 79 20 65 6e 64 62 6f 64 79 20 2a 29 0a 62 65 67 69 6e 0a 65   ┆n (* possibly endbody *) begin e┆
0x019480…0194a0             6e 64 62 6f 64 79 3a 3d 20 27 65 6e 64 62 6f 64 79 20 20 20 20 20 27 3b 0a 73 74 65 70 3a 3d 20   ┆ndbody:= 'endbody     '; step:= ┆
0x0194a0…0194c0             31 3b 0a 77 68 69 6c 65 20 28 65 6e 64 62 6f 64 79 20 5b 20 73 74 65 70 20 5d 3d 6c 69 6e 65 20   ┆1; while (endbody [ step ]=line ┆
0x0194c0…0194e0             5b 20 6c 69 6e 65 69 6e 78 20 5d 20 29 20 61 6e 64 0a 28 65 6e 64 62 6f 64 79 20 5b 20 73 74 65   ┆[ lineinx ] ) and (endbody [ ste┆
0x0194e0…019500             70 20 5d 3c 3e 27 20 27 29 20 64 6f 0a 62 65 67 69 6e 0a 73 74 65 70 3a 3d 20 73 74 65 70 2b 31   ┆p ]<>' ') do begin step:= step+1┆
0x019500…019520             3b 20 6c 69 6e 65 69 6e 78 3a 3d 20 6c 69 6e 65 69 6e 78 2b 31 3b 0a 65 6e 64 3b 0a 66 6f 75 6e   ┆; lineinx:= lineinx+1; end; foun┆
0x019520…019540             64 3a 3d 20 28 65 6e 64 62 6f 64 79 20 5b 20 73 74 65 70 20 5d 3d 27 20 27 29 20 61 6e 64 20 6e   ┆d:= (endbody [ step ]=' ') and n┆
0x019540…019560             6f 74 20 28 6c 69 6e 65 20 5b 20 6c 69 6e 65 69 6e 78 20 5d 20 69 6e 20 6e 61 6d 65 63 68 29 3b   ┆ot (line [ lineinx ] in namech);┆
0x019560…019580             0a 0a 69 66 20 6e 6f 74 20 66 6f 75 6e 64 20 74 68 65 6e 0a 6c 69 6e 65 69 6e 78 3a 3d 20 6f 6c   ┆  if not found then lineinx:= ol┆
0x019580…0195a0             64 69 6e 64 65 78 20 28 2a 20 72 65 73 65 74 20 6c 69 6e 65 69 6e 78 20 2a 29 0a 65 6c 73 65 0a   ┆dindex (* reset lineinx *) else ┆
0x0195a0…0195c0             63 68 3a 3d 20 6c 69 6e 65 20 5b 20 6c 69 6e 65 69 6e 78 20 5d 3b 20 28 2a 20 70 72 65 70 61 72   ┆ch:= line [ lineinx ]; (* prepar┆
0x0195c0…0195e0             65 20 72 65 74 75 72 6e 20 74 6f 20 70 61 72 73 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 6d 61   ┆e return to parse *)  end; (* ma┆
0x0195e0…019600             79 62 65 20 65 6e 64 62 6f 64 79 20 2a 29 0a 0a 6e 6f 74 5f 65 6e 64 62 6f 64 79 3a 3d 20 6e 6f   ┆ybe endbody *)  not_endbody:= no┆
0x019600…019620 (6, 1, 9)   74 20 66 6f 75 6e 64 3b 0a 0a 0a 65 6e 64 3b 20 28 2a 20 6e 6f 74 5f 65 6e 64 62 6f 64 79 20 2a   ┆t found;   end; (* not_endbody *┆
0x019620…019640             29 0a 0a 62 65 67 69 6e 20 20 28 2a 20 73 70 65 63 69 61 6c 20 63 6f 64 65 20 2a 29 0a 28 2a 20   ┆)  begin  (* special code *) (* ┆
0x019640…019660             6a 75 73 74 20 72 65 61 64 20 27 62 65 67 69 6e 62 6f 64 79 20 61 70 70 65 74 69 74 65 27 20 2a   ┆just read 'beginbody appetite' *┆
0x019660…019680             29 0a 77 68 69 6c 65 20 63 68 3d 73 6b 69 70 63 68 20 64 6f 20 69 6e 63 68 61 72 3b 0a 69 66 20   ┆) while ch=skipch do inchar; if ┆
0x019680…0196a0             63 68 3d 27 3a 27 20 74 68 65 6e 20 69 6e 63 68 61 72 3b 0a 0a 65 6d 69 74 63 6f 64 65 28 63 62   ┆ch=':' then inchar;  emitcode(cb┆
0x0196a0…0196c0             65 67 69 6e 63 6f 64 65 29 3b 0a 0a 77 68 69 6c 65 20 6e 6f 74 5f 65 6e 64 62 6f 64 79 20 61 6e   ┆egincode);  while not_endbody an┆
0x0196c0…0196e0             64 20 6d 6f 72 65 69 6e 70 75 74 20 64 6f 0a 62 65 67 69 6e 0a 65 6d 69 74 28 63 63 6f 64 65 6c   ┆d moreinput do begin emit(ccodel┆
0x0196e0…019700             69 6e 65 2c 20 6c 69 6e 65 6c 65 6e 67 74 68 2d 6c 69 6e 65 69 6e 78 2c 20 6e 69 6c 6c 2c 20 63   ┆ine, linelength-lineinx, nill, c┆
0x019700…019720             6e 6f 63 6f 64 65 29 3b 0a 66 6f 72 20 73 74 65 70 76 61 72 3a 3d 20 6c 69 6e 65 69 6e 78 20 74   ┆nocode); for stepvar:= lineinx t┆
0x019720…019740             6f 20 6c 69 6e 65 6c 65 6e 67 74 68 2d 31 20 64 6f 0a 65 6d 69 74 28 63 6e 6f 63 6f 64 65 2c 20   ┆o linelength-1 do emit(cnocode, ┆
0x019740…019760             6f 72 64 28 20 6c 69 6e 65 20 5b 20 73 74 65 70 76 61 72 20 5d 20 29 2c 20 6e 69 6c 6c 2c 20 63   ┆ord( line [ stepvar ] ), nill, c┆
0x019760…019780             6e 6f 63 6f 64 65 29 3b 0a 6c 69 6e 65 69 6e 78 3a 3d 20 6c 69 6e 65 6c 65 6e 67 74 68 3b 20 20   ┆nocode); lineinx:= linelength;  ┆
0x019780…0197a0             28 2a 20 6e 6f 77 20 63 75 72 72 65 6e 74 20 6c 69 6e 65 20 69 73 20 70 72 6f 63 65 73 73 65 64   ┆(* now current line is processed┆
0x0197a0…0197c0             20 2a 29 0a 69 6e 63 68 61 72 3b 0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65 20 2a 29 0a 65 6d 69   ┆ *) inchar; end; (* while *) emi┆
0x0197c0…0197e0             74 28 63 65 6e 64 63 6f 64 65 2c 20 6e 69 6c 6c 2c 20 6e 69 6c 6c 2c 20 63 65 6e 64 6c 65 76 65   ┆t(cendcode, nill, nill, cendleve┆
0x0197e0…019800             6c 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 73 70 65 63 69 61 6c 20 63 6f 64 65 20 2a 29 0a 0a 0a 28   ┆l);  end; (* special code *)   (┆
0x019800…019820 (6, 1, 10)  2a 24 72 2b 2a 29 0a 70 72 6f 63 65 64 75 72 65 20 70 61 72 73 65 3b 0a 63 6f 6e 73 74 0a 72 65   ┆*$r+*) procedure parse; const re┆
0x019820…019840             64 75 6d 61 78 3d 20 32 35 3b 20 28 2a 20 72 65 64 75 63 74 69 6f 6e 20 62 75 66 66 65 72 20 73   ┆dumax= 25; (* reduction buffer s┆
0x019840…019860             69 7a 65 20 2a 29 0a 0a 74 79 70 65 0a 72 65 64 75 69 6e 78 3d 20 30 2e 2e 72 65 64 75 6d 61 78   ┆ize *)  type reduinx= 0..redumax┆
0x019860…019880             3b 0a 72 65 64 75 65 6c 65 6d 3d 20 20 72 65 63 6f 72 64 0a 6f 6c 64 74 6f 70 2c 6e 65 77 74 6f   ┆; reduelem=  record oldtop,newto┆
0x019880…0198a0             70 3a 20 73 74 61 63 6b 69 6e 78 3b 0a 70 72 6f 64 3a 20 70 72 6f 64 6e 6f 0a 65 6e 64 3b 0a 76   ┆p: stackinx; prod: prodno end; v┆
0x0198a0…0198c0             61 72 0a 72 65 64 75 62 75 66 3a 20 61 72 72 61 79 5b 72 65 64 75 69 6e 78 5d 20 6f 66 20 72 65   ┆ar redubuf: array[reduinx] of re┆
0x0198c0…0198e0             64 75 65 6c 65 6d 3b 20 28 2a 20 72 65 64 75 63 74 69 6f 6e 20 62 75 66 66 65 72 20 2a 29 0a 72   ┆duelem; (* reduction buffer *) r┆
0x0198e0…019900             65 64 75 74 6f 70 3a 20 72 65 64 75 69 6e 78 3b 0a 73 74 61 63 6b 74 6f 70 2c 70 73 65 75 64 6f   ┆edutop: reduinx; stacktop,pseudo┆
0x019900…019920             74 6f 70 2c 76 61 6c 69 64 74 6f 70 2c 74 6f 70 20 3a 20 73 74 61 63 6b 69 6e 78 3b 0a 73 74 61   ┆top,validtop,top : stackinx; sta┆
0x019920…019940             72 74 69 6e 78 2c 6c 72 69 2c 73 74 61 72 74 3a 20 6c 72 69 6e 78 3b 0a 0a 70 72 6f 63 65 64 75   ┆rtinx,lri,start: lrinx;  procedu┆
0x019940…019960             72 65 20 61 64 76 61 6e 63 65 3b 0a 76 61 72 20 69 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69   ┆re advance; var i: integer; begi┆
0x019960…019980             6e 0a 28 2a 70 65 72 66 6f 72 6d 20 72 65 64 75 63 74 69 6f 6e 73 2a 29 0a 66 6f 72 20 69 3a 3d   ┆n (*perform reductions*) for i:=┆
0x019980…0199a0             20 31 20 74 6f 20 72 65 64 75 74 6f 70 20 64 6f 0a 77 69 74 68 20 72 65 64 75 62 75 66 5b 69 5d   ┆ 1 to redutop do with redubuf[i]┆
0x0199a0…0199c0             20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 70 72 6f 64 74 61 62 5b 70 72 6f 64 5d 3e 30 20 74 68 65   ┆ do begin if prodtab[prod]>0 the┆
0x0199c0…0199e0             6e 20 63 6f 64 65 28 6f 6c 64 74 6f 70 2c 6e 65 77 74 6f 70 2c 70 72 6f 64 74 61 62 5b 70 72 6f   ┆n code(oldtop,newtop,prodtab[pro┆
0x0199e0…019a00             64 5d 29 0a 65 6c 73 65 0a 69 66 20 70 72 6f 64 74 61 62 20 5b 20 70 72 6f 64 20 5d 3c 3e 30 20   ┆d]) else if prodtab [ prod ]<>0 ┆
0x019a00…019a20 (6, 1, 11)  74 68 65 6e 0a 73 70 65 63 69 61 6c 5f 63 6f 64 65 28 6f 6c 64 74 6f 70 2c 20 6e 65 77 74 6f 70   ┆then special_code(oldtop, newtop┆
0x019a20…019a40             2c 20 70 72 6f 64 74 61 62 20 5b 20 70 72 6f 64 20 5d 20 29 3b 0a 61 74 74 73 74 61 63 6b 5b 6e   ┆, prodtab [ prod ] ); attstack[n┆
0x019a40…019a60             65 77 74 6f 70 5d 2e 63 68 62 75 66 70 3a 3d 20 61 74 74 73 74 61 63 6b 5b 6e 65 77 74 6f 70 2d   ┆ewtop].chbufp:= attstack[newtop-┆
0x019a60…019a80             31 5d 2e 63 68 62 75 66 70 0a 65 6e 64 3b 0a 28 2a 75 70 64 61 74 65 20 73 74 61 63 6b 2a 29 0a   ┆1].chbufp end; (*update stack*) ┆
0x019a80…019aa0             66 6f 72 20 69 3a 3d 20 31 20 74 6f 20 73 74 61 63 6b 74 6f 70 2d 76 61 6c 69 64 74 6f 70 20 64   ┆for i:= 1 to stacktop-validtop d┆
0x019aa0…019ac0             6f 0a 70 61 72 73 65 73 74 61 63 6b 5b 76 61 6c 69 64 74 6f 70 2b 69 5d 3a 3d 20 70 61 72 73 65   ┆o parsestack[validtop+i]:= parse┆
0x019ac0…019ae0             73 74 61 63 6b 5b 74 6f 70 2b 69 5d 3b 0a 69 66 20 72 65 64 75 74 6f 70 3e 30 20 74 68 65 6e 20   ┆stack[top+i]; if redutop>0 then ┆
0x019ae0…019b00             28 2a 20 70 6f 73 73 69 62 6c 65 20 70 6f 70 20 6f 66 20 63 68 62 75 66 20 2a 29 0a 69 66 20 6f   ┆(* possible pop of chbuf *) if o┆
0x019b00…019b20             6c 64 62 75 66 69 3d 63 68 62 75 66 69 20 74 68 65 6e 20 28 2a 20 6e 65 77 73 79 6d 62 20 6e 6f   ┆ldbufi=chbufi then (* newsymb no┆
0x019b20…019b40             74 69 6e 20 5b 6e 61 6d 65 2c 6b 6f 6e 73 74 2c 73 74 72 69 6e 67 5d 2a 29 0a 63 68 62 75 66 69   ┆tin [name,konst,string]*) chbufi┆
0x019b40…019b60             3a 3d 20 61 74 74 73 74 61 63 6b 5b 73 74 61 63 6b 74 6f 70 2d 31 5d 2e 63 68 62 75 66 70 0a 65   ┆:= attstack[stacktop-1].chbufp e┆
0x019b60…019b80             6c 73 65 20 28 2a 6e 65 77 73 79 6d 62 20 69 6e 20 5b 6e 61 6d 65 2c 6b 6f 6e 73 74 2c 73 74 72   ┆lse (*newsymb in [name,konst,str┆
0x019b80…019ba0             69 6e 67 5d 2a 29 0a 61 74 74 73 74 61 63 6b 5b 73 74 61 63 6b 74 6f 70 5d 2e 63 68 62 75 66 70   ┆ing]*) attstack[stacktop].chbufp┆
0x019ba0…019bc0             3a 3d 20 6f 6c 64 62 75 66 69 3b 0a 28 2a 73 68 69 66 74 2a 29 0a 69 66 20 73 74 61 63 6b 74 6f   ┆:= oldbufi; (*shift*) if stackto┆
0x019bc0…019be0             70 3d 73 74 61 63 6b 6d 61 78 20 74 68 65 6e 20 73 74 6f 70 28 31 29 3b 0a 73 74 61 63 6b 74 6f   ┆p=stackmax then stop(1); stackto┆
0x019be0…019c00             70 3a 3d 20 73 74 61 63 6b 74 6f 70 2b 31 3b 0a 70 61 72 73 65 73 74 61 63 6b 5b 73 74 61 63 6b   ┆p:= stacktop+1; parsestack[stack┆
0x019c00…019c20 (6, 1, 12)  74 6f 70 5d 2e 74 61 62 6c 65 3a 3d 20 73 74 61 72 74 69 6e 78 3b 0a 61 74 74 73 74 61 63 6b 5b   ┆top].table:= startinx; attstack[┆
0x019c20…019c40             73 74 61 63 6b 74 6f 70 5d 2e 63 68 62 75 66 70 3a 3d 20 63 68 62 75 66 69 3b 0a 28 2a 20 66 72   ┆stacktop].chbufp:= chbufi; (* fr┆
0x019c40…019c60             65 65 7a 65 20 6e 65 77 20 73 74 61 63 6b 20 73 69 74 75 61 74 69 6f 6e 2c 20 72 65 61 64 79 20   ┆eeze new stack situation, ready ┆
0x019c60…019c80             66 6f 72 20 6e 65 77 20 6c 6f 6f 6b 61 68 65 61 64 20 2a 29 0a 74 6f 70 3a 3d 20 73 74 61 63 6b   ┆for new lookahead *) top:= stack┆
0x019c80…019ca0             74 6f 70 3b 20 70 73 65 75 64 6f 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 3b 20 76 61 6c 69 64   ┆top; pseudotop:= stacktop; valid┆
0x019ca0…019cc0             74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 3b 0a 73 74 61 72 74 3a 3d 20 6c 72 69 3b 20 72 65 64   ┆top:= stacktop; start:= lri; red┆
0x019cc0…019ce0             75 74 6f 70 3a 3d 20 30 0a 65 6e 64 3b 20 28 2a 61 64 76 61 6e 63 65 2a 29 0a 0a 70 72 6f 63 65   ┆utop:= 0 end; (*advance*)  proce┆
0x019ce0…019d00             64 75 72 65 20 62 61 63 6b 74 72 61 63 6b 28 20 62 74 6f 70 3a 20 73 74 61 63 6b 69 6e 78 3b 20   ┆dure backtrack( btop: stackinx; ┆
0x019d00…019d20             62 73 74 61 72 74 3a 20 6c 72 69 6e 78 29 3b 0a 62 65 67 69 6e 0a 73 74 61 63 6b 74 6f 70 3a 3d   ┆bstart: lrinx); begin stacktop:=┆
0x019d20…019d40             20 62 74 6f 70 3b 20 76 61 6c 69 64 74 6f 70 3a 3d 20 62 74 6f 70 3b 20 70 73 65 75 64 6f 74 6f   ┆ btop; validtop:= btop; pseudoto┆
0x019d40…019d60             70 3a 3d 20 62 74 6f 70 3b 0a 73 74 61 72 74 69 6e 78 3a 3d 20 62 73 74 61 72 74 3b 20 6c 72 69   ┆p:= btop; startinx:= bstart; lri┆
0x019d60…019d80             3a 3d 20 62 73 74 61 72 74 3b 0a 72 65 64 75 74 6f 70 3a 3d 20 30 0a 65 6e 64 3b 20 28 2a 20 62   ┆:= bstart; redutop:= 0 end; (* b┆
0x019d80…019da0             61 63 6b 74 72 61 63 6b 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 73 65 75 64 6f 73 68 69   ┆acktrack *)  procedure pseudoshi┆
0x019da0…019dc0             66 74 3b 0a 62 65 67 69 6e 0a 69 66 20 70 73 65 75 64 6f 74 6f 70 3d 73 74 61 63 6b 6d 61 78 20   ┆ft; begin if pseudotop=stackmax ┆
0x019dc0…019de0             74 68 65 6e 20 73 74 6f 70 28 31 29 3b 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f   ┆then stop(1); stacktop:= stackto┆
0x019de0…019e00             70 2b 31 3b 0a 70 73 65 75 64 6f 74 6f 70 3a 3d 20 74 6f 70 2b 28 73 74 61 63 6b 74 6f 70 2d 76   ┆p+1; pseudotop:= top+(stacktop-v┆
0x019e00…019e20 (6, 1, 13)  61 6c 69 64 74 6f 70 29 3b 0a 70 61 72 73 65 73 74 61 63 6b 5b 70 73 65 75 64 6f 74 6f 70 5d 2e   ┆alidtop); parsestack[pseudotop].┆
0x019e20…019e40             74 61 62 6c 65 3a 3d 20 73 74 61 72 74 69 6e 78 3b 0a 61 74 74 73 74 61 63 6b 5b 70 73 65 75 64   ┆table:= startinx; attstack[pseud┆
0x019e40…019e60             6f 74 6f 70 5d 2e 63 68 62 75 66 70 3a 3d 20 63 68 62 75 66 69 3b 0a 65 6e 64 3b 20 28 2a 20 70   ┆otop].chbufp:= chbufi; end; (* p┆
0x019e60…019e80             73 65 75 64 6f 73 68 69 66 74 20 2a 29 0a 0a 66 75 6e 63 74 69 6f 6e 20 6c 6f 6f 6b 61 68 65 61   ┆seudoshift *)  function lookahea┆
0x019e80…019ea0             64 28 20 6c 73 79 6d 62 6f 6c 3a 20 73 79 6d 62 6f 6c 29 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6c 61   ┆d( lsymbol: symbol): boolean; la┆
0x019ea0…019ec0             62 65 6c 20 31 31 2c 31 32 3b 0a 76 61 72 20 64 65 63 69 64 65 64 3a 20 62 6f 6f 6c 65 61 6e 3b   ┆bel 11,12; var decided: boolean;┆
0x019ec0…019ee0             0a 6c 69 2c 73 69 2c 6c 6f 63 61 6c 6c 72 69 2c 6c 6f 77 2c 68 69 67 68 2c 6b 2c 6c 6f 63 61 6c   ┆ li,si,locallri,low,high,k,local┆
0x019ee0…019f00             6c 62 3a 20 6c 72 69 6e 78 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 71 75 65 75 65 28 20 72 73 3a   ┆lb: lrinx;  procedure queue( rs:┆
0x019f00…019f20             20 72 73 6c 65 6e 67 74 68 3b 20 70 3a 20 70 72 6f 64 6e 6f 29 3b 0a 62 65 67 69 6e 0a 69 66 20   ┆ rslength; p: prodno); begin if ┆
0x019f20…019f40             72 65 64 75 74 6f 70 3d 72 65 64 75 6d 61 78 20 74 68 65 6e 20 73 74 6f 70 28 34 29 3b 0a 72 65   ┆redutop=redumax then stop(4); re┆
0x019f40…019f60             64 75 74 6f 70 3a 3d 20 72 65 64 75 74 6f 70 2b 31 3b 0a 77 69 74 68 20 72 65 64 75 62 75 66 5b   ┆dutop:= redutop+1; with redubuf[┆
0x019f60…019f80             72 65 64 75 74 6f 70 5d 20 64 6f 0a 62 65 67 69 6e 0a 6f 6c 64 74 6f 70 3a 3d 20 73 74 61 63 6b   ┆redutop] do begin oldtop:= stack┆
0x019f80…019fa0             74 6f 70 3b 20 73 74 61 63 6b 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 2d 72 73 3b 20 6e 65 77   ┆top; stacktop:= stacktop-rs; new┆
0x019fa0…019fc0             74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 3b 0a 69 66 20 73 74 61 63 6b 74 6f 70 3c 3d 76 61 6c   ┆top:= stacktop; if stacktop<=val┆
0x019fc0…019fe0             69 64 74 6f 70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 70 73 65 75 64 6f 74 6f 70 3a 3d 20 73 74 61   ┆idtop then begin pseudotop:= sta┆
0x019fe0…01a000             63 6b 74 6f 70 3b 20 76 61 6c 69 64 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 0a 65 6e 64 20 65   ┆cktop; validtop:= stacktop end e┆
0x01a000…01a020 (6, 1, 14)  6c 73 65 20 70 73 65 75 64 6f 74 6f 70 3a 3d 20 70 73 65 75 64 6f 74 6f 70 2d 72 73 3b 0a 70 72   ┆lse pseudotop:= pseudotop-rs; pr┆
0x01a020…01a040             6f 64 3a 3d 20 70 0a 65 6e 64 0a 65 6e 64 3b 20 28 2a 20 71 75 65 75 65 20 2a 29 0a 0a 62 65 67   ┆od:= p end end; (* queue *)  beg┆
0x01a040…01a060             69 6e 0a 64 65 63 69 64 65 64 3a 3d 20 66 61 6c 73 65 3b 0a 6c 6f 63 61 6c 6c 72 69 3a 3d 20 6c   ┆in decided:= false; locallri:= l┆
0x01a060…01a080             72 69 3b 0a 72 65 70 65 61 74 0a 73 74 61 72 74 69 6e 78 3a 3d 20 6c 6f 63 61 6c 6c 72 69 3b 0a   ┆ri; repeat startinx:= locallri; ┆
0x01a080…01a0a0             63 61 73 65 20 6c 72 5b 6c 6f 63 61 6c 6c 72 69 5d 2e 6b 69 6e 64 20 6f 66 0a 30 3a 20 62 65 67   ┆case lr[locallri].kind of 0: beg┆
0x01a0a0…01a0c0             69 6e 0a 64 65 63 69 64 65 64 3a 3d 20 74 72 75 65 3b 20 6c 6f 6f 6b 61 68 65 61 64 3a 3d 20 74   ┆in decided:= true; lookahead:= t┆
0x01a0c0…01a0e0             72 75 65 3b 20 6f 6b 3a 3d 20 66 61 6c 73 65 0a 65 6e 64 3b 0a 31 3a 20 62 65 67 69 6e 0a 77 68   ┆rue; ok:= false end; 1: begin wh┆
0x01a0e0…01a100             69 6c 65 20 6c 72 5b 6c 6f 63 61 6c 6c 72 69 5d 2e 73 79 6d 62 3c 3e 6c 73 79 6d 62 6f 6c 20 64   ┆ile lr[locallri].symb<>lsymbol d┆
0x01a100…01a120             6f 0a 62 65 67 69 6e 20 6c 69 3a 3d 20 6c 72 5b 6c 6f 63 61 6c 6c 72 69 5d 2e 63 68 61 69 6e 3b   ┆o begin li:= lr[locallri].chain;┆
0x01a120…01a140             0a 69 66 20 6c 69 3d 30 20 74 68 65 6e 20 67 6f 74 6f 20 31 31 3b 20 28 2a 20 65 78 69 74 20 6c   ┆ if li=0 then goto 11; (* exit l┆
0x01a140…01a160             6f 6f 70 20 2a 29 0a 6c 6f 63 61 6c 6c 72 69 3a 3d 20 6c 69 0a 65 6e 64 3b 0a 31 31 3a 20 64 65   ┆oop *) locallri:= li end; 11: de┆
0x01a160…01a180             63 69 64 65 64 3a 3d 20 74 72 75 65 3b 20 6c 6f 6f 6b 61 68 65 61 64 3a 3d 20 6c 72 5b 6c 6f 63   ┆cided:= true; lookahead:= lr[loc┆
0x01a180…01a1a0             61 6c 6c 72 69 5d 2e 73 79 6d 62 3d 6c 73 79 6d 62 6f 6c 0a 65 6e 64 3b 0a 32 2c 34 2c 36 3a 0a   ┆allri].symb=lsymbol end; 2,4,6: ┆
0x01a1a0…01a1c0             62 65 67 69 6e 0a 77 68 69 6c 65 20 6c 72 5b 6c 6f 63 61 6c 6c 72 69 5d 2e 73 79 6d 62 3c 3e 6c   ┆begin while lr[locallri].symb<>l┆
0x01a1c0…01a1e0             73 79 6d 62 6f 6c 20 64 6f 0a 62 65 67 69 6e 20 6c 69 3a 3d 20 6c 72 5b 6c 6f 63 61 6c 6c 72 69   ┆symbol do begin li:= lr[locallri┆
0x01a1e0…01a200             5d 2e 63 68 61 69 6e 3b 0a 69 66 20 6c 69 3d 30 20 74 68 65 6e 20 67 6f 74 6f 20 31 32 3b 20 28   ┆].chain; if li=0 then goto 12; (┆
0x01a200…01a220 (6, 1, 15)  2a 20 65 78 69 74 20 6c 6f 6f 70 20 2a 29 0a 6c 6f 63 61 6c 6c 72 69 3a 3d 20 6c 69 0a 65 6e 64   ┆* exit loop *) locallri:= li end┆
0x01a220…01a240             3b 0a 31 32 3a 20 69 66 20 6c 72 5b 6c 6f 63 61 6c 6c 72 69 5d 2e 6b 69 6e 64 3d 20 32 20 74 68   ┆; 12: if lr[locallri].kind= 2 th┆
0x01a240…01a260             65 6e 0a 62 65 67 69 6e 0a 64 65 63 69 64 65 64 3a 3d 20 74 72 75 65 3b 20 6c 6f 6f 6b 61 68 65   ┆en begin decided:= true; lookahe┆
0x01a260…01a280             61 64 3a 3d 20 74 72 75 65 0a 65 6e 64 0a 65 6c 73 65 20 69 66 20 6c 72 5b 6c 6f 63 61 6c 6c 72   ┆ad:= true end else if lr[locallr┆
0x01a280…01a2a0             69 5d 2e 6b 69 6e 64 3d 20 36 20 74 68 65 6e 0a 62 65 67 69 6e 0a 70 73 65 75 64 6f 73 68 69 66   ┆i].kind= 6 then begin pseudoshif┆
0x01a2a0…01a2c0             74 3b 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 2d 31 3b 20 70 73 65 75 64 6f   ┆t; stacktop:= stacktop-1; pseudo┆
0x01a2c0…01a2e0             74 6f 70 3a 3d 20 70 73 65 75 64 6f 74 6f 70 2d 31 3b 0a 71 75 65 75 65 28 2d 31 2c 6c 72 5b 6c   ┆top:= pseudotop-1; queue(-1,lr[l┆
0x01a2e0…01a300             6f 63 61 6c 6c 72 69 5d 2e 65 72 72 29 0a 65 6e 64 0a 65 6e 64 3b 0a 33 3a 20 62 65 67 69 6e 0a   ┆ocallri].err) end end; 3: begin ┆
0x01a300…01a320             71 75 65 75 65 28 6c 72 5b 6c 6f 63 61 6c 6c 72 69 5d 2e 72 73 2c 6c 72 5b 6c 6f 63 61 6c 6c 72   ┆queue(lr[locallri].rs,lr[locallr┆
0x01a320…01a340             69 5d 2e 70 72 6f 64 29 0a 65 6e 64 3b 0a 35 3a 20 62 65 67 69 6e 0a 73 69 3a 3d 20 70 61 72 73   ┆i].prod) end; 5: begin si:= pars┆
0x01a340…01a360             65 73 74 61 63 6b 5b 70 73 65 75 64 6f 74 6f 70 5d 2e 74 61 62 6c 65 3b 0a 6c 6f 77 3a 3d 20 6c   ┆estack[pseudotop].table; low:= l┆
0x01a360…01a380             6f 63 61 6c 6c 72 69 3b 0a 6c 6f 63 61 6c 6c 72 69 3a 3d 20 6c 72 5b 6c 6f 63 61 6c 6c 72 69 5d   ┆ocallri; locallri:= lr[locallri]┆
0x01a380…01a3a0             2e 63 68 61 69 6e 3b 0a 68 69 67 68 3a 3d 20 6c 6f 63 61 6c 6c 72 69 2d 31 3b 0a 77 68 69 6c 65   ┆.chain; high:= locallri-1; while┆
0x01a3a0…01a3c0             20 6c 6f 77 3c 68 69 67 68 20 64 6f 0a 62 65 67 69 6e 0a 6b 3a 3d 20 28 6c 6f 77 2b 68 69 67 68   ┆ low<high do begin k:= (low+high┆
0x01a3c0…01a3e0             29 20 64 69 76 20 32 3b 0a 6c 6f 63 61 6c 6c 62 3a 3d 20 6c 72 5b 6b 5d 2e 6c 62 3b 0a 69 66 20   ┆) div 2; locallb:= lr[k].lb; if ┆
0x01a3e0…01a400             6c 6f 63 61 6c 6c 62 3e 73 69 20 74 68 65 6e 20 68 69 67 68 3a 3d 20 6b 2d 31 0a 65 6c 73 65 0a   ┆locallb>si then high:= k-1 else ┆
0x01a400…01a420 (7, 0, 1)   69 66 20 6c 6f 63 61 6c 6c 62 3c 73 69 20 74 68 65 6e 20 6c 6f 77 3a 3d 20 6b 2b 31 0a 65 6c 73   ┆if locallb<si then low:= k+1 els┆
0x01a420…01a440             65 0a 62 65 67 69 6e 0a 68 69 67 68 3a 3d 20 6b 3b 0a 6c 6f 77 3a 3d 20 68 69 67 68 3b 0a 65 6e   ┆e begin high:= k; low:= high; en┆
0x01a440…01a460             64 3b 0a 65 6e 64 3b 0a 6b 3a 3d 20 28 6c 6f 77 2b 68 69 67 68 2b 31 29 20 64 69 76 20 32 3b 0a   ┆d; end; k:= (low+high+1) div 2; ┆
0x01a460…01a480             69 66 20 6c 72 5b 6b 5d 2e 6c 62 3d 73 69 20 74 68 65 6e 20 6c 6f 63 61 6c 6c 72 69 3a 3d 20 6b   ┆if lr[k].lb=si then locallri:= k┆
0x01a480…01a4a0             3b 0a 65 6e 64 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 6c 6f 63 61 6c 6c 72 69 3a 3d   ┆; end end; (* case *) locallri:=┆
0x01a4a0…01a4c0             20 6c 72 5b 6c 6f 63 61 6c 6c 72 69 5d 2e 6e 65 78 74 3b 0a 75 6e 74 69 6c 20 64 65 63 69 64 65   ┆ lr[locallri].next; until decide┆
0x01a4c0…01a4e0             64 3b 0a 6c 72 69 3a 3d 20 6c 6f 63 61 6c 6c 72 69 3b 0a 65 6e 64 3b 20 28 2a 20 6c 6f 6f 6b 61   ┆d; lri:= locallri; end; (* looka┆
0x01a4e0…01a500             68 65 61 64 20 2a 29 0a 28 2a 24 72 2d 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 79 6e 74 61   ┆head *) (*$r-*)  procedure synta┆
0x01a500…01a520             78 65 72 72 6f 72 3b 0a 76 61 72 20 73 75 63 63 65 73 73 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 73 2c   ┆xerror; var success: boolean; s,┆
0x01a520…01a540             73 31 3a 20 73 74 61 63 6b 69 6e 78 3b 0a 62 65 67 69 6e 0a 69 66 20 74 65 73 74 6f 75 74 70 75   ┆s1: stackinx; begin if testoutpu┆
0x01a540…01a560             74 20 74 68 65 6e 20 77 72 69 74 65 28 6f 75 74 70 75 74 2c 27 20 3c 2d 2d 2d 73 79 6e 74 61 78   ┆t then write(output,' <---syntax┆
0x01a560…01a580             65 72 72 6f 72 27 29 3b 20 28 2a 2a 2a 73 6e 61 70 73 68 6f 74 2a 2a 2a 29 0a 6d 61 72 6b 65 72   ┆error'); (***snapshot***) marker┆
0x01a580…01a5a0             72 6f 72 28 6c 72 5b 73 74 61 72 74 69 6e 78 5d 2e 65 72 72 29 3b 0a 62 61 63 6b 74 72 61 63 6b   ┆ror(lr[startinx].err); backtrack┆
0x01a5a0…01a5c0             28 74 6f 70 2c 73 74 61 72 74 29 3b 0a 70 73 65 75 64 6f 73 68 69 66 74 3b 0a 73 3a 3d 20 30 3b   ┆(top,start); pseudoshift; s:= 0;┆
0x01a5c0…01a5e0             0a 66 6f 72 20 73 31 3a 3d 20 30 20 74 6f 20 74 6f 70 20 64 6f 0a 62 65 67 69 6e 0a 62 61 63 6b   ┆ for s1:= 0 to top do begin back┆
0x01a5e0…01a600             74 72 61 63 6b 28 20 74 6f 70 2c 20 73 74 61 72 74 20 29 20 3b 20 28 2a 20 38 30 2e 30 33 2e 32   ┆track( top, start ) ; (* 80.03.2┆
0x01a600…01a620 (7, 0, 2)   31 20 2a 29 0a 70 73 65 75 64 6f 73 68 69 66 74 3b 0a 0a 62 61 63 6b 74 72 61 63 6b 28 73 31 2c   ┆1 *) pseudoshift;  backtrack(s1,┆
0x01a620…01a640             70 61 72 73 65 73 74 61 63 6b 5b 73 31 2b 31 5d 2e 74 61 62 6c 65 29 3b 0a 69 66 20 6c 6f 6f 6b   ┆parsestack[s1+1].table); if look┆
0x01a640…01a660             61 68 65 61 64 28 65 72 72 6f 72 76 61 6c 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 70 61 72 73 65   ┆ahead(errorval) then begin parse┆
0x01a660…01a680             73 74 61 63 6b 5b 73 31 5d 2e 6c 69 6e 6b 3a 3d 20 73 3b 20 73 3a 3d 20 73 31 0a 65 6e 64 0a 65   ┆stack[s1].link:= s; s:= s1 end e┆
0x01a680…01a6a0             6e 64 3b 0a 73 75 63 63 65 73 73 3a 3d 20 66 61 6c 73 65 3b 0a 72 65 70 65 61 74 0a 73 31 3a 3d   ┆nd; success:= false; repeat s1:=┆
0x01a6a0…01a6c0             20 73 3b 0a 72 65 70 65 61 74 0a 62 61 63 6b 74 72 61 63 6b 28 20 74 6f 70 2c 20 73 74 61 72 74   ┆ s; repeat backtrack( top, start┆
0x01a6c0…01a6e0             20 29 3b 20 28 2a 20 38 30 2e 30 33 2e 32 31 20 2a 29 0a 70 73 65 75 64 6f 73 68 69 66 74 3b 0a   ┆ ); (* 80.03.21 *) pseudoshift; ┆
0x01a6e0…01a700             0a 62 61 63 6b 74 72 61 63 6b 28 73 31 2c 70 61 72 73 65 73 74 61 63 6b 5b 73 31 2b 31 5d 2e 74   ┆ backtrack(s1,parsestack[s1+1].t┆
0x01a700…01a720             61 62 6c 65 29 3b 0a 69 66 20 6c 6f 6f 6b 61 68 65 61 64 28 65 72 72 6f 72 76 61 6c 29 20 74 68   ┆able); if lookahead(errorval) th┆
0x01a720…01a740             65 6e 0a 62 65 67 69 6e 0a 70 73 65 75 64 6f 73 68 69 66 74 3b 0a 73 75 63 63 65 73 73 3a 3d 20   ┆en begin pseudoshift; success:= ┆
0x01a740…01a760             6c 6f 6f 6b 61 68 65 61 64 28 6e 65 77 73 79 6d 62 29 0a 65 6e 64 3b 0a 73 31 3a 3d 20 70 61 72   ┆lookahead(newsymb) end; s1:= par┆
0x01a760…01a780             73 65 73 74 61 63 6b 5b 73 31 5d 2e 6c 69 6e 6b 3b 0a 75 6e 74 69 6c 20 28 73 31 3d 30 29 20 6f   ┆sestack[s1].link; until (s1=0) o┆
0x01a780…01a7a0             72 20 73 75 63 63 65 73 73 3b 0a 69 66 20 6e 6f 74 20 73 75 63 63 65 73 73 20 74 68 65 6e 0a 62   ┆r success; if not success then b┆
0x01a7a0…01a7c0             65 67 69 6e 0a 28 2a 20 6d 61 72 6b 20 70 72 65 76 69 6f 75 73 20 73 79 6d 62 6f 6c 20 73 6b 69   ┆egin (* mark previous symbol ski┆
0x01a7c0…01a7e0             70 70 65 64 20 2a 29 0a 69 66 20 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 20 77 72 69 74 65   ┆pped *) if testoutput then write┆
0x01a7e0…01a800             28 6f 75 74 70 75 74 2c 27 20 3c 2d 2d 2d 73 6b 69 70 70 65 64 27 29 3b 20 28 2a 2a 2a 73 6e 61   ┆(output,' <---skipped'); (***sna┆
0x01a800…01a820 (7, 0, 3)   70 73 68 6f 74 2a 2a 2a 29 0a 6c 65 78 69 63 61 6c 0a 65 6e 64 3b 0a 75 6e 74 69 6c 20 73 75 63   ┆pshot***) lexical end; until suc┆
0x01a820…01a840             63 65 73 73 20 6f 72 20 28 6e 6f 74 20 6f 6b 29 3b 20 0a 69 66 20 6e 6f 74 20 6f 6b 20 74 68 65   ┆cess or (not ok);  if not ok the┆
0x01a840…01a860             6e 20 73 74 6f 70 28 33 29 0a 65 6e 64 3b 20 28 2a 20 73 79 6e 74 61 78 65 72 72 6f 72 20 2a 29   ┆n stop(3) end; (* syntaxerror *)┆
0x01a860…01a880             0a 0a 0a 62 65 67 69 6e 20 28 2a 20 70 61 72 73 65 20 2a 29 0a 74 6f 70 3a 3d 20 30 3b 20 73 74   ┆   begin (* parse *) top:= 0; st┆
0x01a880…01a8a0             61 72 74 3a 3d 20 31 3b 0a 62 61 63 6b 74 72 61 63 6b 28 74 6f 70 2c 73 74 61 72 74 29 3b 0a 77   ┆art:= 1; backtrack(top,start); w┆
0x01a8a0…01a8c0             68 69 6c 65 20 6f 6b 20 64 6f 0a 62 65 67 69 6e 0a 6c 65 78 69 63 61 6c 3b 0a 69 66 20 6e 6f 74   ┆hile ok do begin lexical; if not┆
0x01a8c0…01a8e0             20 6c 6f 6f 6b 61 68 65 61 64 28 6e 65 77 73 79 6d 62 29 20 74 68 65 6e 20 73 79 6e 74 61 78 65   ┆ lookahead(newsymb) then syntaxe┆
0x01a8e0…01a900             72 72 6f 72 3b 0a 61 64 76 61 6e 63 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 70 61 72 73 65   ┆rror; advance; end; end; (*parse┆
0x01a900…01a920             2a 29 0a 28 2a 24 72 2d 2a 29 0a 0a 62 65 67 69 6e 20 28 2a 20 70 61 72 73 65 72 20 2a 29 0a 61   ┆*) (*$r-*)  begin (* parser *) a┆
0x01a920…01a940             73 73 69 67 6e 28 69 6e 70 75 74 2c 63 6f 6e 63 61 74 28 72 74 70 33 35 5f 70 61 74 68 6e 61 6d   ┆ssign(input,concat(rtp35_pathnam┆
0x01a940…01a960             65 2c 20 69 5f 70 61 73 73 31 5f 74 61 62 6e 61 6d 65 29 29 3b 0a 73 65 74 74 65 78 74 62 75 66   ┆e, i_pass1_tabname)); settextbuf┆
0x01a960…01a980             28 69 6e 70 75 74 2c 20 69 6e 5f 62 75 66 5f 70 74 72 5e 29 3b 0a 28 2a 24 49 2d 2a 29 0a 72 65   ┆(input, in_buf_ptr^); (*$I-*) re┆
0x01a980…01a9a0             73 65 74 28 69 6e 70 75 74 29 3b 0a 69 66 20 69 6f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65   ┆set(input); if ioresult <> 0 the┆
0x01a9a0…01a9c0             6e 0a 62 65 67 69 6e 0a 6e 6f 66 69 6c 65 28 63 6f 6e 63 61 74 28 72 74 70 33 35 5f 70 61 74 68   ┆n begin nofile(concat(rtp35_path┆
0x01a9c0…01a9e0             6e 61 6d 65 2c 20 69 5f 70 61 73 73 31 5f 74 61 62 6e 61 6d 65 29 29 3b 0a 65 6e 64 3b 0a 28 2a   ┆name, i_pass1_tabname)); end; (*┆
0x01a9e0…01aa00             24 49 2b 2a 29 0a 69 6e 69 74 69 61 6c 69 7a 65 28 69 6e 70 75 74 29 3b 0a 63 6c 6f 73 65 28 69   ┆$I+*) initialize(input); close(i┆
0x01aa00…01aa20 (7, 0, 4)   6e 70 75 74 29 3b 0a 70 61 72 73 65 3b 0a 65 6e 64 3b 20 28 2a 70 61 72 73 65 72 2a 29 0a 0a 01   ┆nput); parse; end; (*parser*)   ┆
0x01aa20…01aa40             45 20 31 0a 20 6f 72 20 28 6e 6f 74 20 6f 6b 29 3b 20 0a 69 66 20 6e 6f 74 20 6f 6b 20 74 68 65   ┆E 1  or (not ok);  if not ok the┆
0x01aa40…01aa60             6e 20 73 74 6f 70 28 33 29 0a 65 6e 64 3b 20 28 2a 20 73 79 6e 74 61 78 65 72 72 6f 72 20 2a 29   ┆n stop(3) end; (* syntaxerror *)┆
0x01aa60…01aa80             0a 0a 0a 62 65 67 69 6e 20 28 2a 20 70 61 72 73 65 20 2a 29 0a 74 6f 70 3a 3d 20 30 3b 20 73 74   ┆   begin (* parse *) top:= 0; st┆
0x01aa80…01aaa0             61 72 74 3a 3d 20 31 3b 0a 62 61 63 6b 74 72 61 63 6b 28 74 6f 70 2c 73 74 61 72 74 29 3b 0a 77   ┆art:= 1; backtrack(top,start); w┆
0x01aaa0…01aac0             68 69 6c 65 20 6f 6b 20 64 6f 0a 62 65 67 69 6e 0a 6c 65 78 69 63 61 6c 3b 0a 69 66 20 6e 6f 74   ┆hile ok do begin lexical; if not┆
0x01aac0…01aae0             20 6c 6f 6f 6b 61 68 65 61 64 28 6e 65 77 73 79 6d 62 29 20 74 68 65 6e 20 73 79 6e 74 61 78 65   ┆ lookahead(newsymb) then syntaxe┆
0x01aae0…01ab00             72 72 6f 72 3b 0a 61 64 76 61 6e 63 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 70 61 72 73 65   ┆rror; advance; end; end; (*parse┆
0x01ab00…01ab20             2a 29 0a 28 2a 24 72 2d 2a 29 0a 0a 62 65 67 69 6e 20 28 2a 20 70 61 72 73 65 72 20 2a 29 0a 61   ┆*) (*$r-*)  begin (* parser *) a┆
0x01ab20…01ab40             73 73 69 67 6e 28 69 6e 70 75 74 2c 63 6f 6e 63 61 74 28 72 74 70 33 35 5f 70 61 74 68 6e 61 6d   ┆ssign(input,concat(rtp35_pathnam┆
0x01ab40…01ab60             65 2c 20 69 5f 70 61 73 73 31 5f 74 61 62 6e 61 6d 65 29 29 3b 0a 73 65 74 74 65 78 74 62 75 66   ┆e, i_pass1_tabname)); settextbuf┆
0x01ab60…01ab80             28 69 6e 70 75 74 2c 20 69 6e 5f 62 75 66 5f 70 74 72 5e 29 3b 0a 28 2a 24 49 2d 2a 29 0a 72 65   ┆(input, in_buf_ptr^); (*$I-*) re┆
0x01ab80…01aba0             73 65 74 28 69 6e 70 75 74 29 3b 0a 69 66 20 69 6f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65   ┆set(input); if ioresult <> 0 the┆
0x01aba0…01abc0             6e 0a 62 65 67 69 6e 0a 6e 6f 66 69 6c 65 28 63 6f 6e 63 61 74 28 72 74 70 33 35 5f 70 61 74 68   ┆n begin nofile(concat(rtp35_path┆
0x01abc0…01abe0             6e 61 6d 65 2c 20 69 5f 70 61 73 73 31 5f 74 61 62 6e 61 6d 65 29 29 3b 0a 65 6e 64 3b 0a 28 2a   ┆name, i_pass1_tabname)); end; (*┆
0x01abe0…01ac00             24 49 2b 2a 29 0a 69 6e 69 74 69 61 6c 69 7a 65 28 69 6e 70 75 74 29 3b 0a 63 6c 6f 73 65 28 69   ┆$I+*) initialize(input); close(i┆
0x01ac00…01ac20 (7, 0, 5)   2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 78 70 33 69 6e 69 74 00 00 00 00 00 00 00   ┆../sw2103/src/rtp/xp3init       ┆
0x01ac20…01ac40             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x01ac60…01ac80             00 00 00 00 20 20 20 37 35 35 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       755     255     146      ┆
0x01ac80…01aca0             20 31 30 34 37 35 33 20 20 35 32 36 36 37 36 34 31 36 36 20 20 31 30 33 32 32 00 20 00 00 00 00   ┆ 104753  5266764166  10322      ┆
0x01aca0…01acc0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x01ae00…01ae20 (7, 0, 6)   0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ (*-----------------------------┆
0x01ae20…01ae40             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x01ae40…01ae60             2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39 32 20 20 44   ┆---- -- -- (C) Copyrigth 1992  D┆
0x01ae60…01ae80             41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 33 49 4e 49 54 2e 50 41 53 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d   ┆ANOSI -- -- P3INIT.PAS -- ------┆
0x01ae80…01aea0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x01aea0…01aec0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d   ┆----------------------------- --┆
0x01aec0…01aee0             0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Revisions -- ---------------┆
0x01aee0…01af00             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 36 2e 32 20 20 20 39 32 2e 30   ┆----------------- --  6.2   92.0┆
0x01af00…01af20             34 2e 30 39 20 20 42 42 20 20 20 20 52 65 6c 65 61 73 65 20 61 6e 64 20 64 61 74 65 20 75 70 64   ┆4.09  BB    Release and date upd┆
0x01af20…01af40             61 74 65 64 2c 20 75 73 65 64 20 69 6e 20 72 65 6c 20 31 2e 31 32 0a 2d 2d 20 20 36 2e 32 20 20   ┆ated, used in rel 1.12 --  6.2  ┆
0x01af40…01af60             20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75   ┆ 92.10.14  HEJ   SCCS and UNIX u┆
0x01af60…01af80             73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆sed. -- ------------------------┆
0x01af80…01afa0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x01afa0…01afc0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a   ┆----------- -- SCCS information ┆
0x01afc0…01afe0             2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f 64 75 6c 65 20 3a 20 20 25 4d   ┆-- File   :  %P% -- Module :  %M┆
0x01afe0…01b000             25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09 44 61 74 65 20 20 20 3a 20 20   ┆% -- Version:  %I% -- Date   :  ┆
0x01b000…01b020 (7, 0, 7)   25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆%E%  %U% -----------------------┆
0x01b020…01b040             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x01b040…01b060             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 63 6f 6e 73 74 0a 66 69 6c 72 65 63 5f 6d 61   ┆------------ *)  const filrec_ma┆
0x01b060…01b080             78 20 3d 20 32 35 36 3b 0a 0a 76 65 72 73 69 6f 6e 20 3d 20 27 39 32 2e 30 34 2e 30 39 27 3b 0a   ┆x = 256;  version = '92.04.09'; ┆
0x01b080…01b0a0             76 65 72 73 69 6f 6e 70 61 73 73 33 20 3d 20 36 30 32 3b 20 20 28 2a 20 36 2e 30 32 20 2a 29 0a   ┆versionpass3 = 602;  (* 6.02 *) ┆
0x01b0a0…01b0c0             76 65 72 73 69 6f 6e 70 61 73 73 31 20 3d 20 37 30 30 3b 20 20 28 2a 20 70 61 73 73 31 20 76 65   ┆versionpass1 = 700;  (* pass1 ve┆
0x01b0c0…01b0e0             72 73 69 6f 6e 20 6d 75 73 74 20 62 65 20 37 2e 78 78 20 2a 29 0a 6f 77 6e 5f 70 61 73 73 6e 6f   ┆rsion must be 7.xx *) own_passno┆
0x01b0e0…01b100             20 20 20 3d 20 33 3b 0a 74 61 72 67 65 74 7a 38 30 20 20 20 20 3d 20 30 3b 20 28 2a 20 7a 38 30   ┆   = 3; targetz80    = 0; (* z80┆
0x01b100…01b120             20 61 73 20 74 61 72 67 65 74 20 6d 61 63 68 69 6e 65 20 2a 29 0a 74 61 72 67 65 74 33 35 30 32   ┆ as target machine *) target3502┆
0x01b120…01b140             31 20 20 3d 20 31 3b 20 28 2a 20 64 65 66 61 75 6c 74 20 74 61 72 67 65 74 20 6d 61 63 68 69 6e   ┆1  = 1; (* default target machin┆
0x01b140…01b160             65 2c 20 52 43 33 35 30 32 20 6d 6f 64 65 6c 20 31 20 2a 29 0a 74 61 72 67 65 74 33 35 30 32 32   ┆e, RC3502 model 1 *) target35022┆
0x01b160…01b180             20 20 3d 20 32 3b 20 28 2a 20 52 43 33 35 30 32 20 6d 6f 64 65 6c 20 32 20 2a 29 0a 0a 0a 6d 61   ┆  = 2; (* RC3502 model 2 *)   ma┆
0x01b180…01b1a0             78 5f 6e 65 73 74 65 64 5f 63 61 6c 6c 73 20 3d 20 32 30 3b 20 28 2a 20 6d 61 78 20 69 6e 64 65   ┆x_nested_calls = 20; (* max inde┆
0x01b1a0…01b1c0             78 20 69 6e 20 27 63 61 6c 6c 73 27 20 2a 29 0a 0a 6d 61 78 5f 73 70 69 78 20 3d 20 33 32 37 36   ┆x in 'calls' *)  max_spix = 3276┆
0x01b1c0…01b1e0             37 3b 20 20 20 20 20 20 20 28 2a 20 6d 61 78 20 76 61 6c 75 65 20 6f 66 20 27 73 70 69 78 27 20   ┆7;       (* max value of 'spix' ┆
0x01b1e0…01b200             2a 29 0a 6d 61 78 5f 6c 61 62 65 6c 73 63 6f 70 65 6e 75 6d 62 65 72 20 3d 20 33 32 37 36 37 3b   ┆*) max_labelscopenumber = 32767;┆
0x01b200…01b220 (7, 0, 8)   20 28 2a 20 6d 61 78 20 76 61 6c 75 65 20 6f 66 20 27 6c 61 62 65 6c 73 63 6f 70 65 27 20 2a 29   ┆ (* max value of 'labelscope' *)┆
0x01b220…01b240             0a 0a 70 72 6f 63 65 73 73 5f 62 6c 6f 63 6b 20 3d 20 30 3b 20 20 20 20 20 28 2a 20 62 6c 6f 63   ┆  process_block = 0;     (* bloc┆
0x01b240…01b260             6b 6e 75 6d 62 65 72 20 66 6f 72 20 70 72 6f 63 65 73 73 20 76 61 72 69 61 62 6c 65 73 20 2a 29   ┆knumber for process variables *)┆
0x01b260…01b280             0a 6d 61 78 73 74 72 69 6e 67 20 3d 20 31 32 3b 20 20 20 20 20 20 20 20 28 2a 20 6e 75 6d 62 65   ┆ maxstring = 12;        (* numbe┆
0x01b280…01b2a0             72 20 6f 66 20 63 68 61 72 73 20 70 65 72 20 73 74 72 69 6e 67 20 70 6f 72 74 69 6f 6e 20 2a 29   ┆r of chars per string portion *)┆
0x01b2a0…01b2c0             0a 0a 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 3d 20 74 72 75 65 3b 20 20 20 28 2a 20 64 65 74 65   ┆  compilertest = true;   (* dete┆
0x01b2c0…01b2e0             72 6d 69 6e 65 73 20 61 6d 6f 75 6e 74 20 6f 66 20 27 73 75 70 65 72 66 6c 6f 75 73 27 20 74 65   ┆rmines amount of 'superflous' te┆
0x01b2e0…01b300             73 74 69 6e 67 20 2a 29 0a 0a 74 79 70 65 0a 66 69 6c 72 65 63 20 3d 20 61 72 72 61 79 5b 31 2e   ┆sting *)  type filrec = array[1.┆
0x01b300…01b320             2e 66 69 6c 72 65 63 5f 6d 61 78 5d 20 6f 66 20 69 6e 74 65 67 65 72 3b 0a 0a 6e 61 6d 65 70 74   ┆.filrec_max] of integer;  namept┆
0x01b320…01b340             72 20 3d 20 5e 20 6e 61 6d 65 6e 6f 64 65 3b 0a 74 79 70 65 70 74 72 20 3d 20 5e 20 74 79 70 65   ┆r = ^ namenode; typeptr = ^ type┆
0x01b340…01b360             6e 6f 64 65 3b 0a 6c 61 62 65 6c 70 74 72 20 3d 20 5e 20 6c 61 62 65 6c 6e 6f 64 65 3b 0a 6f 70   ┆node; labelptr = ^ labelnode; op┆
0x01b360…01b380             61 6e 64 70 74 72 20 3d 20 5e 20 6f 70 61 6e 64 6e 6f 64 65 3b 0a 73 74 72 69 6e 67 70 74 72 20   ┆andptr = ^ opandnode; stringptr ┆
0x01b380…01b3a0             3d 20 5e 20 73 74 72 69 6e 67 6e 6f 64 65 3b 0a 73 74 72 5f 69 6e 64 65 78 20 3d 20 31 20 2e 2e   ┆= ^ stringnode; str_index = 1 ..┆
0x01b3a0…01b3c0             20 6d 61 78 73 74 72 69 6e 67 3b 0a 6e 61 6d 65 73 74 61 63 6b 70 74 72 20 3d 20 5e 20 6e 61 6d   ┆ maxstring; namestackptr = ^ nam┆
0x01b3c0…01b3e0             65 73 74 61 63 6b 6e 6f 64 65 3b 0a 70 75 73 68 6e 61 6d 65 5f 70 74 72 3d 20 5e 20 70 75 73 68   ┆estacknode; pushname_ptr= ^ push┆
0x01b3e0…01b400             6e 61 6d 65 5f 6e 6f 64 65 3b 0a 0a 73 70 69 78 72 61 6e 67 65 20 3d 20 30 20 2e 2e 20 6d 61 78   ┆name_node;  spixrange = 0 .. max┆
0x01b400…01b420 (7, 0, 9)   5f 73 70 69 78 3b 0a 6c 61 62 65 6c 72 61 6e 67 65 20 3d 20 30 20 2e 2e 20 6d 61 78 5f 6c 61 62   ┆_spix; labelrange = 0 .. max_lab┆
0x01b420…01b440             65 6c 73 63 6f 70 65 6e 75 6d 62 65 72 3b 0a 63 61 6c 6c 72 61 6e 67 65 20 3d 20 30 20 2e 2e 20   ┆elscopenumber; callrange = 0 .. ┆
0x01b440…01b460             6d 61 78 5f 6e 65 73 74 65 64 5f 63 61 6c 6c 73 3b 0a 0a 28 2a 20 64 65 66 69 6e 65 20 63 6f 64   ┆max_nested_calls;  (* define cod┆
0x01b460…01b480             65 73 20 69 6e 20 70 61 73 73 31 66 69 6c 65 2f 70 61 73 73 31 6c 61 62 65 6c 73 20 2a 29 0a 63   ┆es in pass1file/pass1labels *) c┆
0x01b480…01b4a0             6f 64 65 73 20 3d 0a 28 0a 63 6e 6f 63 6f 64 65 2c 0a 63 65 72 72 6f 72 2c 20 63 65 72 72 6f 72   ┆odes = ( cnocode, cerror, cerror┆
0x01b4a0…01b4c0             74 65 78 74 2c 20 63 65 72 72 6f 72 6e 6f 2c 0a 63 6f 70 74 69 6f 6e 2c 0a 63 6e 65 77 6c 69 6e   ┆text, cerrorno, coption, cnewlin┆
0x01b4c0…01b4e0             65 2c 0a 63 65 6f 6d 2c 0a 0a 63 65 6e 64 73 74 61 6e 64 61 72 64 73 2c 0a 63 73 74 61 6e 64 61   ┆e, ceom,  cendstandards, cstanda┆
0x01b4e0…01b500             72 64 6e 61 6d 65 2c 0a 28 2a 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 27 73 74 61 6e 64 61   ┆rdname, (* parameters to 'standa┆
0x01b500…01b520             72 64 6e 61 6d 65 27 20 2a 29 0a 63 61 6e 6f 6e 79 6d 6f 75 73 2c 20 28 2a 20 66 69 72 73 74 20   ┆rdname' *) canonymous, (* first ┆
0x01b520…01b540             73 74 64 20 6e 61 6d 65 20 2a 29 0a 63 62 6f 6f 6c 65 61 6e 2c 0a 63 63 68 61 72 2c 0a 63 73 68   ┆std name *) cboolean, cchar, csh┆
0x01b540…01b560             61 64 6f 77 2c 0a 63 72 65 66 65 72 65 6e 63 65 2c 0a 63 73 65 6d 61 70 68 6f 72 65 2c 0a 63 73   ┆adow, creference, csemaphore, cs┆
0x01b560…01b580             6f 6e 2c 0a 63 70 72 6f 63 65 73 73 72 65 63 2c 0a 63 65 78 63 65 70 74 69 6f 6e 2c 0a 63 61 62   ┆on, cprocessrec, cexception, cab┆
0x01b580…01b5a0             73 2c 0a 63 73 75 63 63 2c 0a 63 70 72 65 64 2c 0a 63 6e 65 77 2c 0a 63 6e 69 6c 2c 0a 63 6e 69   ┆s, csucc, cpred, cnew, cnil, cni┆
0x01b5a0…01b5c0             6c 72 65 66 2c 0a 63 63 68 72 2c 0a 63 6f 72 64 2c 20 20 20 20 20 20 20 28 2a 20 6c 61 73 74 20   ┆lref, cchr, cord,       (* last ┆
0x01b5c0…01b5e0             73 74 64 20 6e 61 6d 65 20 2a 29 0a 0a 63 69 6e 63 6c 75 64 65 2c 20 63 65 6e 64 69 6e 63 6c 75   ┆std name *)  cinclude, cendinclu┆
0x01b5e0…01b600             64 65 2c 0a 63 63 6f 6e 74 65 78 74 2c 20 63 65 72 72 63 6f 6e 74 65 78 74 2c 20 63 65 6e 64 63   ┆de, ccontext, cerrcontext, cendc┆
0x01b600…01b620 (7, 0, 10)  6f 6e 74 65 78 74 2c 0a 0a 63 65 6e 64 70 72 65 66 69 78 2c 0a 0a 63 62 65 67 69 6e 6c 65 76 65   ┆ontext,  cendprefix,  cbeginleve┆
0x01b620…01b640             6c 2c 20 63 65 6e 64 6c 65 76 65 6c 2c 0a 63 64 65 63 6c 61 72 61 74 69 6f 6e 2c 20 63 64 65 63   ┆l, cendlevel, cdeclaration, cdec┆
0x01b640…01b660             6c 61 72 65 2c 20 63 64 65 63 6c 61 72 65 6c 69 73 74 2c 0a 0a 63 65 78 74 65 72 6e 61 6c 2c 20   ┆lare, cdeclarelist,  cexternal, ┆
0x01b660…01b680             63 66 6f 72 77 61 72 64 2c 0a 0a 63 65 6e 64 66 6f 72 6d 61 6c 6c 69 73 74 2c 20 63 65 6e 64 66   ┆cforward,  cendformallist, cendf┆
0x01b680…01b6a0             6f 72 6d 61 6c 2c 0a 63 65 6e 64 70 72 6f 63 64 65 63 6c 2c 20 63 65 6e 64 66 75 6e 63 64 65 63   ┆ormal, cendprocdecl, cendfuncdec┆
0x01b6a0…01b6c0             6c 2c 20 63 65 6e 64 74 79 70 65 64 65 63 6c 2c 0a 63 65 6e 64 63 6f 6e 73 74 61 6e 74 64 65 63   ┆l, cendtypedecl, cendconstantdec┆
0x01b6c0…01b6e0             6c 2c 0a 0a 63 6e 6f 69 6e 69 74 2c 20 63 69 6e 69 74 2c 20 63 65 6e 64 76 61 72 64 65 63 6c 2c   ┆l,  cnoinit, cinit, cendvardecl,┆
0x01b6e0…01b700             0a 0a 63 65 78 70 6f 72 74 2c 0a 63 65 78 70 6f 72 74 76 61 6c 75 65 2c 20 63 65 78 70 6f 72 74   ┆  cexport, cexportvalue, cexport┆
0x01b700…01b720             73 69 7a 65 2c 20 63 65 78 70 6f 72 74 64 69 73 70 2c 20 63 65 78 70 6f 72 74 6f 66 66 73 65 74   ┆size, cexportdisp, cexportoffset┆
0x01b720…01b740             2c 20 63 65 78 70 6f 72 74 61 64 64 72 2c 0a 0a 63 65 6e 64 64 65 63 6c 61 72 61 74 69 6f 6e 73   ┆, cexportaddr,  cenddeclarations┆
0x01b740…01b760             2c 0a 0a 63 73 74 61 72 74 6c 61 62 65 6c 73 63 6f 70 65 2c 20 63 65 6e 64 6c 61 62 65 6c 73 63   ┆,  cstartlabelscope, cendlabelsc┆
0x01b760…01b780             6f 70 65 2c 0a 0a 63 62 65 67 69 6e 63 6f 64 65 2c 20 63 63 6f 64 65 6c 69 6e 65 2c 20 63 65 6e   ┆ope,  cbegincode, ccodeline, cen┆
0x01b780…01b7a0             64 63 6f 64 65 2c 0a 0a 63 65 6e 64 62 6c 6f 63 6b 2c 0a 0a 63 74 79 70 65 69 64 2c 0a 63 65 6e   ┆dcode,  cendblock,  ctypeid, cen┆
0x01b7a0…01b7c0             64 74 79 70 65 2c 0a 63 77 69 74 68 6f 75 74 5f 64 61 74 61 2c 0a 0a 63 6e 65 77 74 79 70 65 2c   ┆dtype, cwithout_data,  cnewtype,┆
0x01b7c0…01b7e0             0a 63 65 6e 64 73 63 61 6c 61 72 2c 20 63 65 6e 64 73 75 62 72 61 6e 67 65 2c 20 63 65 6e 64 61   ┆ cendscalar, cendsubrange, cenda┆
0x01b7e0…01b800             72 72 61 79 2c 20 63 65 6e 64 66 69 65 6c 64 2c 20 63 65 6e 64 72 65 63 6f 72 64 2c 20 63 65 6e   ┆rray, cendfield, cendrecord, cen┆
0x01b800…01b820 (7, 0, 11)  64 73 65 74 2c 0a 63 65 6e 64 70 6f 6f 6c 2c 20 63 65 6e 64 70 6f 69 6e 74 65 72 2c 20 63 65 6e   ┆dset, cendpool, cendpointer, cen┆
0x01b820…01b840             64 72 65 61 64 6f 6e 6c 79 2c 0a 63 65 6e 64 65 78 74 70 72 6f 63 65 73 73 2c 0a 63 70 61 63 6b   ┆dreadonly, cendextprocess, cpack┆
0x01b840…01b860             65 64 2c 0a 0a 63 62 65 67 69 6e 2c 20 63 65 6e 64 2c 0a 0a 63 6c 61 62 65 6c 64 65 66 2c 0a 0a   ┆ed,  cbegin, cend,  clabeldef,  ┆
0x01b860…01b880             63 63 61 73 65 73 74 61 74 2c 20 63 63 61 73 65 65 78 70 72 2c 20 63 63 61 73 65 6c 61 62 65 6c   ┆ccasestat, ccaseexpr, ccaselabel┆
0x01b880…01b8a0             2c 20 63 63 61 73 65 6c 61 62 65 6c 72 61 6e 67 65 2c 20 63 63 61 73 65 6c 69 73 74 2c 0a 63 63   ┆, ccaselabelrange, ccaselist, cc┆
0x01b8a0…01b8c0             61 73 65 65 6c 65 6d 65 6e 74 2c 20 63 6f 74 68 65 72 77 69 73 65 2c 20 63 65 6e 64 63 61 73 65   ┆aseelement, cotherwise, cendcase┆
0x01b8c0…01b8e0             2c 0a 0a 63 66 6f 72 73 74 61 74 2c 20 63 66 6f 72 76 61 72 2c 20 63 75 70 2c 20 63 64 6f 77 6e   ┆,  cforstat, cforvar, cup, cdown┆
0x01b8e0…01b900             2c 20 63 65 6e 64 66 6f 72 2c 0a 0a 63 69 66 73 74 61 74 2c 20 63 69 66 65 78 70 72 2c 20 63 65   ┆, cendfor,  cifstat, cifexpr, ce┆
0x01b900…01b920             6c 73 65 2c 20 63 65 6e 64 69 66 2c 0a 0a 63 72 65 70 65 61 74 73 74 61 74 2c 20 63 75 6e 74 69   ┆lse, cendif,  crepeatstat, cunti┆
0x01b920…01b940             6c 2c 20 63 65 6e 64 72 65 70 65 61 74 2c 0a 63 6c 6f 6f 70 73 74 61 74 2c 20 63 63 6f 6e 74 6c   ┆l, cendrepeat, cloopstat, ccontl┆
0x01b940…01b960             6f 6f 70 73 74 61 74 2c 20 63 65 78 69 74 6c 6f 6f 70 73 74 61 74 2c 20 63 65 6e 64 6c 6f 6f 70   ┆oopstat, cexitloopstat, cendloop┆
0x01b960…01b980             73 74 61 74 2c 20 63 65 78 69 74 6c 6f 63 6b 2c 0a 0a 63 77 68 69 6c 65 73 74 61 74 2c 20 63 77   ┆stat, cexitlock,  cwhilestat, cw┆
0x01b980…01b9a0             68 69 6c 65 65 78 70 72 2c 20 63 65 6e 64 77 68 69 6c 65 2c 0a 0a 63 6c 6f 63 6b 73 74 61 74 2c   ┆hileexpr, cendwhile,  clockstat,┆
0x01b9a0…01b9c0             20 63 77 69 74 68 73 74 61 74 2c 20 63 77 69 74 68 76 61 72 2c 0a 63 6c 6f 63 6b 6d 65 73 73 74   ┆ cwithstat, cwithvar, clockmesst┆
0x01b9c0…01b9e0             61 74 2c 0a 63 6e 6f 6c 6f 63 61 6c 64 65 63 6c 2c 20 63 65 6e 64 6c 6f 63 61 6c 64 65 63 6c 61   ┆at, cnolocaldecl, cendlocaldecla┆
0x01b9e0…01ba00             72 65 2c 0a 63 6e 6f 6c 6f 63 61 6c 74 79 70 65 2c 0a 63 77 69 74 68 63 6f 6d 6d 61 2c 20 63 64   ┆re, cnolocaltype, cwithcomma, cd┆
0x01ba00…01ba20 (7, 0, 12)  6f 2c 20 63 65 6e 64 77 69 74 68 2c 20 63 65 6e 64 6c 6f 63 6b 2c 0a 0a 63 67 6f 74 6f 73 74 61   ┆o, cendwith, cendlock,  cgotosta┆
0x01ba20…01ba40             74 2c 20 63 65 6e 64 67 6f 74 6f 2c 0a 63 65 78 69 74 73 74 61 74 2c 0a 0a 63 63 68 61 6e 6e 65   ┆t, cendgoto, cexitstat,  cchanne┆
0x01ba40…01ba60             6c 73 74 61 74 2c 20 63 63 68 61 6e 76 61 72 2c 20 63 65 6e 64 63 68 61 6e 6e 65 6c 2c 0a 0a 63   ┆lstat, cchanvar, cendchannel,  c┆
0x01ba60…01ba80             65 6e 64 61 73 73 69 67 6e 2c 20 63 65 6e 64 65 78 63 68 61 6e 67 65 2c 0a 0a 63 63 61 6c 6c 70   ┆endassign, cendexchange,  ccallp┆
0x01ba80…01baa0             72 6f 63 65 64 75 72 65 2c 0a 0a 28 2a 20 65 78 70 72 65 73 73 69 6f 6e 20 63 6f 64 65 73 20 2a   ┆rocedure,  (* expression codes *┆
0x01baa0…01bac0             29 0a 63 65 6e 64 65 78 70 72 65 73 73 69 6f 6e 2c 0a 63 65 71 2c 20 63 6e 65 2c 20 63 6c 74 2c   ┆) cendexpression, ceq, cne, clt,┆
0x01bac0…01bae0             20 63 6c 65 2c 20 63 67 74 2c 20 63 67 65 2c 20 63 69 6e 2c 0a 63 75 70 6c 75 73 2c 20 63 75 6d   ┆ cle, cgt, cge, cin, cuplus, cum┆
0x01bae0…01bb00             69 6e 75 73 2c 20 63 70 6c 75 73 2c 20 63 6d 69 6e 75 73 2c 20 63 6f 72 2c 20 63 78 6f 72 2c 0a   ┆inus, cplus, cminus, cor, cxor, ┆
0x01bb00…01bb20             63 73 74 61 72 2c 20 63 73 6c 61 73 68 2c 20 63 64 69 76 2c 20 63 6d 6f 64 2c 20 63 61 6e 64 2c   ┆cstar, cslash, cdiv, cmod, cand,┆
0x01bb20…01bb40             0a 63 73 68 69 66 74 2c 20 63 6e 6f 74 2c 0a 63 65 6e 64 76 61 72 69 61 62 6c 65 2c 0a 63 74 79   ┆ cshift, cnot, cendvariable, cty┆
0x01bb40…01bb60             70 65 73 69 7a 65 63 61 6c 6c 2c 20 63 76 61 72 73 69 7a 65 63 61 6c 6c 2c 0a 63 69 6e 64 65 78   ┆pesizecall, cvarsizecall, cindex┆
0x01bb60…01bb80             2c 20 28 2a 20 3c 3c 3c 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 70 61 73 73   ┆, (* <<< used internally by pass┆
0x01bb80…01bba0             33 20 2a 29 0a 0a 28 2a 20 6f 70 65 72 61 6e 64 20 63 6f 64 65 73 20 2a 29 0a 63 73 65 74 6c 69   ┆3 *)  (* operand codes *) csetli┆
0x01bba0…01bbc0             73 74 2c 20 63 73 5f 65 6c 65 6d 65 6e 74 2c 20 63 6d 5f 65 6c 65 6d 65 6e 74 2c 20 63 65 6e 64   ┆st, cs_element, cm_element, cend┆
0x01bbc0…01bbe0             73 65 74 6c 69 73 74 2c 0a 63 6c 69 74 65 72 61 6c 2c 0a 63 69 64 2c 0a 63 73 6b 69 70 70 61 72   ┆setlist, cliteral, cid, cskippar┆
0x01bbe0…01bc00             61 6d 2c 0a 63 66 69 65 6c 64 2c 0a 63 75 70 61 72 72 6f 77 2c 0a 63 72 61 6e 67 65 66 69 72 73   ┆am, cfield, cuparrow, crangefirs┆
0x01bc00…01bc20 (7, 0, 13)  74 2c 20 28 2a 20 3c 3c 3c 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 70 61 73   ┆t, (* <<< used internally by pas┆
0x01bc20…01bc40             73 33 20 2a 29 0a 63 72 61 6e 67 65 2c 20 20 20 20 20 20 28 2a 20 3c 3c 3c 20 75 73 65 64 20 69   ┆s3 *) crange,      (* <<< used i┆
0x01bc40…01bc60             6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 70 61 73 73 33 20 2a 29 0a 0a 63 62 65 67 69 6e 61 63 74   ┆nternally by pass3 *)  cbeginact┆
0x01bc60…01bc80             75 61 6c 2c 20 63 61 63 74 75 61 6c 70 61 72 61 6d 2c 20 63 64 6f 75 62 6c 65 70 61 72 61 6d 2c   ┆ual, cactualparam, cdoubleparam,┆
0x01bc80…01bca0             20 63 65 6e 64 61 63 74 75 61 6c 2c 0a 63 62 65 67 69 6e 73 74 72 75 63 2c 20 63 65 6e 64 73 74   ┆ cendactual, cbeginstruc, cendst┆
0x01bca0…01bcc0             72 75 63 2c 0a 0a 28 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 65 77 20 6c 69 6e 65 73   ┆ruc,  (* the following few lines┆
0x01bcc0…01bce0             20 61 72 65 20 61 6c 6c 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 70 61 73 73 33 2d 75 73 65 20   ┆ are all for internal pass3-use ┆
0x01bce0…01bd00             2a 29 0a 63 66 75 6e 63 74 72 61 69 6c 65 72 2c 20 63 66 75 6e 63 74 65 6d 70 2c 20 63 65 72 72   ┆*) cfunctrailer, cfunctemp, cerr┆
0x01bd00…01bd20             6f 72 61 72 67 2c 20 63 61 72 67 75 6d 65 6e 74 2c 0a 63 66 63 61 6c 6c 2c 20 63 65 6e 64 70 72   ┆orarg, cargument, cfcall, cendpr┆
0x01bd20…01bd40             6f 63 2c 0a 63 63 61 6c 6c 70 72 6f 63 65 73 73 2c 20 63 70 72 6f 63 65 73 73 61 72 67 75 6d 65   ┆oc, ccallprocess, cprocessargume┆
0x01bd40…01bd60             6e 74 2c 0a 63 65 6e 64 70 72 6f 63 65 73 73 70 61 72 61 6d 2c 0a 63 73 74 72 75 63 72 65 63 6f   ┆nt, cendprocessparam, cstrucreco┆
0x01bd60…01bd80             72 64 2c 20 63 73 74 72 75 63 61 72 72 61 79 2c 0a 0a 28 2a 20 6e 61 6d 65 6b 69 6e 64 73 20 69   ┆rd, cstrucarray,  (* namekinds i┆
0x01bd80…01bda0             2e 65 2e 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 27 64 65 63 6c 61 72 61 74 69 6f 6e 27   ┆.e. parameters for 'declaration'┆
0x01bda0…01bdc0             20 2a 29 0a 63 70 72 6f 63 65 73 73 2c 20 63 70 72 6f 63 65 64 75 72 65 2c 20 63 66 75 6e 63 74   ┆ *) cprocess, cprocedure, cfunct┆
0x01bdc0…01bde0             69 6f 6e 2c 20 63 74 79 70 65 2c 0a 63 73 63 61 6c 61 72 65 6c 65 6d 2c 20 63 72 65 63 66 69 65   ┆ion, ctype, cscalarelem, crecfie┆
0x01bde0…01be00             6c 64 2c 20 63 63 6f 6e 73 74 61 6e 74 2c 20 63 76 61 72 2c 0a 63 76 61 72 70 2c 20 63 76 61 6c   ┆ld, cconstant, cvar, cvarp, cval┆
0x01be00…01be20 (7, 0, 14)  75 65 70 2c 20 63 66 75 6e 63 76 61 6c 20 28 2a 20 3c 3c 3c 20 75 73 65 64 20 69 6e 74 65 72 6e   ┆uep, cfuncval (* <<< used intern┆
0x01be20…01be40             61 6c 6c 79 20 62 79 20 70 61 73 73 33 20 2a 29 2c 0a 63 6c 61 62 65 6c 2c 0a 63 70 72 65 66 69   ┆ally by pass3 *), clabel, cprefi┆
0x01be40…01be60             78 2c 0a 63 75 6e 64 65 63 6c 61 72 65 64 20 28 2a 20 3c 3c 3c 20 75 73 65 64 20 69 6e 74 65 72   ┆x, cundeclared (* <<< used inter┆
0x01be60…01be80             6e 61 6c 6c 79 20 62 79 20 70 61 73 73 33 20 2a 29 2c 0a 0a 0a 28 2a 20 74 79 70 65 6b 69 6e 64   ┆nally by pass3 *),   (* typekind┆
0x01be80…01bea0             73 20 2a 29 0a 63 61 6c 69 61 73 20 28 2a 20 3c 3c 3c 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c   ┆s *) calias (* <<< used internal┆
0x01bea0…01bec0             6c 79 20 62 79 20 70 61 73 73 33 20 2a 29 2c 0a 28 2a 20 74 79 70 65 6b 69 6e 64 73 20 69 2e 65   ┆ly by pass3 *), (* typekinds i.e┆
0x01bec0…01bee0             2e 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 27 6e 65 77 74 79 70 65 27 20 2a 29 0a 63 65   ┆. parameters for 'newtype' *) ce┆
0x01bee0…01bf00             72 72 6f 72 6b 69 6e 64 20 28 2a 20 3c 3c 3c 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20   ┆rrorkind (* <<< used internally ┆
0x01bf00…01bf20             62 79 20 70 61 73 73 33 20 2a 29 2c 0a 63 73 63 61 6c 61 72 2c 20 63 73 75 62 72 61 6e 67 65 2c   ┆by pass3 *), cscalar, csubrange,┆
0x01bf20…01bf40             20 63 61 72 72 61 79 2c 20 63 72 65 63 6f 72 64 2c 20 63 73 65 74 2c 20 63 70 6f 6f 6c 2c 0a 63   ┆ carray, crecord, cset, cpool, c┆
0x01bf40…01bf60             70 6f 69 6e 74 65 72 2c 20 63 66 6f 72 77 61 72 64 70 6f 69 6e 74 65 72 2c 20 63 72 65 61 64 6f   ┆pointer, cforwardpointer, creado┆
0x01bf60…01bf80             6e 6c 79 2c 0a 63 65 78 74 70 72 6f 63 65 73 73 2c 0a 28 2a 20 73 74 61 6e 64 61 72 64 20 74 79   ┆nly, cextprocess, (* standard ty┆
0x01bf80…01bfa0             70 65 73 20 2a 29 0a 63 69 6e 74 65 67 65 72 2c 20 63 72 65 61 6c 2c 20 63 6e 69 6c 74 79 70 65   ┆pes *) cinteger, creal, cniltype┆
0x01bfa0…01bfc0             2c 0a 63 74 65 78 74 2c 20 28 2a 20 75 73 65 64 20 66 6f 72 20 73 74 72 69 6e 67 2d 6c 69 74 65   ┆, ctext, (* used for string-lite┆
0x01bfc0…01bfe0             72 61 6c 73 20 2a 29 0a 0a 63 6c 61 73 74 63 6f 64 65 20 28 2a 20 75 73 65 64 20 69 6e 74 65 72   ┆rals *)  clastcode (* used inter┆
0x01bfe0…01c000             6e 61 6c 6c 79 20 62 79 20 70 61 73 73 31 2f 70 61 73 73 33 20 2a 29 0a 0a 29 3b 0a 0a 63 6f 64   ┆nally by pass1/pass3 *)  );  cod┆
0x01c000…01c020 (7, 0, 15)  65 69 6e 64 65 78 20 3d 20 30 20 2e 2e 20 32 32 30 3b 20 28 2a 20 67 72 65 61 74 65 72 20 74 68   ┆eindex = 0 .. 220; (* greater th┆
0x01c020…01c040             61 6e 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 64 65 73 20 2a 29 0a 28 2a 20 65 6e 64 20 70 61 73   ┆an number of codes *) (* end pas┆
0x01c040…01c060             73 20 31 20 63 6f 64 65 73 20 2a 29 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆s 1 codes *)                    ┆
0x01c060…01c080             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   ┆                                ┆
0x01c080…01c0a0             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 0c 0a 0a 20 20 20   ┆                                ┆
0x01c0a0…01c0c0             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   ┆                                ┆
                            […0x1…]
0x01c0e0…01c100             20 20 20 20 20 20 20 20 20 0c 0a 0a 0a 0a 73 74 64 6e 61 6d 65 5f 72 61 6e 67 65 20 3d 20 63 61   ┆              stdname_range = ca┆
0x01c100…01c120             6e 6f 6e 79 6d 6f 75 73 20 2e 2e 20 63 6f 72 64 3b 0a 0a 28 2a 20 64 65 66 69 6e 65 20 63 6f 64   ┆nonymous .. cord;  (* define cod┆
0x01c120…01c140             65 73 20 69 6e 20 70 61 73 73 33 66 69 6c 65 20 2a 29 0a 70 61 73 73 33 63 6f 64 65 73 20 3d 0a   ┆es in pass3file *) pass3codes = ┆
0x01c140…01c160             28 0a 78 66 69 72 73 74 63 6f 64 65 2c 0a 78 65 72 72 6f 72 2c 20 78 65 72 72 6f 72 74 65 78 74   ┆( xfirstcode, xerror, xerrortext┆
0x01c160…01c180             2c 20 78 65 72 72 6f 72 6e 6f 2c 0a 78 6f 70 74 69 6f 6e 2c 0a 78 6e 65 77 6c 69 6e 65 2c 0a 78   ┆, xerrorno, xoption, xnewline, x┆
0x01c180…01c1a0             65 6f 6d 2c 0a 0a 78 65 6e 64 70 72 65 6c 75 64 65 2c 0a 0a 78 65 78 74 65 72 6e 61 6c 2c 20 78   ┆eom,  xendprelude,  xexternal, x┆
0x01c1a0…01c1c0             66 6f 72 77 61 72 64 2c 20 78 73 65 63 70 72 6f 63 69 64 2c 20 78 73 65 63 66 75 6e 63 69 64 2c   ┆forward, xsecprocid, xsecfuncid,┆
0x01c1c0…01c1e0             0a 0a 78 70 72 6f 63 65 73 73 69 64 2c 20 78 70 72 6f 63 69 64 2c 20 78 66 75 6e 63 69 64 2c 0a   ┆  xprocessid, xprocid, xfuncid, ┆
0x01c1e0…01c200             78 63 6f 6e 73 74 69 64 2c 0a 0a 78 76 61 72 69 64 2c 20 78 69 6e 69 74 63 6f 6e 73 74 2c 20 78   ┆xconstid,  xvarid, xinitconst, x┆
0x01c200…01c220 (7, 1, 1)   76 61 72 6c 69 73 74 2c 0a 0a 78 6c 61 62 65 6c 69 64 2c 0a 0a 78 75 6e 64 65 63 6c 69 64 2c 0a   ┆varlist,  xlabelid,  xundeclid, ┆
0x01c220…01c240             0a 78 62 6c 6f 63 6b 2c 20 78 65 78 63 65 70 74 69 6f 6e 2c 20 78 69 6e 69 74 62 6c 6f 63 6b 2c   ┆ xblock, xexception, xinitblock,┆
0x01c240…01c260             20 78 65 6e 64 62 6c 6f 63 6b 2c 0a 0a 78 62 65 67 69 6e 63 6f 64 65 2c 20 78 63 6f 64 65 6c 69   ┆ xendblock,  xbegincode, xcodeli┆
0x01c260…01c280             6e 65 2c 20 78 65 6e 64 63 6f 64 65 2c 0a 0a 28 2a 20 73 74 64 20 74 79 70 65 73 20 2a 29 0a 78   ┆ne, xendcode,  (* std types *) x┆
0x01c280…01c2a0             69 6e 74 65 67 65 72 2c 20 78 72 65 61 6c 2c 20 78 6e 69 6c 74 79 70 65 2c 20 78 65 72 72 6f 72   ┆integer, xreal, xniltype, xerror┆
0x01c2a0…01c2c0             74 79 70 65 2c 20 78 73 74 72 69 6e 67 74 79 70 65 2c 0a 78 62 6f 6f 6c 65 61 6e 2c 20 78 73 68   ┆type, xstringtype, xboolean, xsh┆
0x01c2c0…01c2e0             61 64 6f 77 2c 20 78 72 65 66 65 72 65 6e 63 65 2c 20 78 73 65 6d 61 70 68 6f 72 65 2c 0a 78 63   ┆adow, xreference, xsemaphore, xc┆
0x01c2e0…01c300             68 61 72 2c 0a 0a 28 2a 20 73 74 64 20 66 75 6e 63 74 69 6f 6e 73 20 2a 29 0a 78 73 75 63 63 2c   ┆har,  (* std functions *) xsucc,┆
0x01c300…01c320             20 78 70 72 65 64 2c 20 78 6e 65 77 2c 20 78 6e 69 6c 2c 20 78 6e 69 6c 72 65 66 2c 20 78 6f 72   ┆ xpred, xnew, xnil, xnilref, xor┆
0x01c320…01c340             64 2c 20 78 63 68 72 2c 0a 0a 78 74 79 70 65 2c 0a 78 72 65 64 65 66 74 79 70 65 2c 0a 78 73 63   ┆d, xchr,  xtype, xredeftype, xsc┆
0x01c340…01c360             61 6c 61 72 69 64 2c 20 78 73 63 61 6c 61 72 64 65 66 2c 0a 78 67 65 74 65 78 70 72 2c 20 78 73   ┆alarid, xscalardef, xgetexpr, xs┆
0x01c360…01c380             75 62 64 65 66 2c 0a 78 61 72 72 61 79 64 65 66 2c 20 78 70 61 63 6b 65 64 61 72 72 61 79 64 65   ┆ubdef, xarraydef, xpackedarrayde┆
0x01c380…01c3a0             66 2c 0a 78 70 61 63 6b 65 64 72 65 63 6f 72 64 2c 20 78 72 65 63 6f 72 64 2c 20 78 66 69 65 6c   ┆f, xpackedrecord, xrecord, xfiel┆
0x01c3a0…01c3c0             64 69 64 2c 20 78 66 69 65 6c 64 64 65 66 2c 20 78 72 65 63 64 65 66 2c 0a 78 73 65 74 64 65 66   ┆did, xfielddef, xrecdef, xsetdef┆
0x01c3c0…01c3e0             2c 20 78 70 6f 6f 6c 64 65 66 2c 20 78 70 6f 69 6e 74 65 72 64 65 66 2c 20 78 66 6f 72 77 61 72   ┆, xpooldef, xpointerdef, xforwar┆
0x01c3e0…01c400             64 70 6f 69 6e 74 65 72 2c 20 78 66 72 6f 7a 65 6e 64 65 66 2c 0a 78 65 78 74 70 72 6f 63 65 73   ┆dpointer, xfrozendef, xextproces┆
0x01c400…01c420 (7, 1, 2)   73 2c 20 78 65 78 74 70 72 6f 63 64 65 66 2c 0a 78 74 79 70 65 64 65 66 2c 0a 0a 78 65 78 70 6f   ┆s, xextprocdef, xtypedef,  xexpo┆
0x01c420…01c440             72 74 76 61 6c 75 65 2c 20 78 65 78 70 6f 72 74 73 69 7a 65 2c 20 78 65 78 70 6f 72 74 64 69 73   ┆rtvalue, xexportsize, xexportdis┆
0x01c440…01c460             70 6c 2c 20 78 65 78 70 6f 72 74 6f 66 66 73 65 74 2c 20 78 65 78 70 6f 72 74 61 64 64 72 2c 0a   ┆pl, xexportoffset, xexportaddr, ┆
0x01c460…01c480             78 65 6e 64 65 78 70 6f 72 74 2c 0a 0a 78 70 61 72 61 6d 69 64 2c 20 78 76 61 6c 75 65 70 61 72   ┆xendexport,  xparamid, xvaluepar┆
0x01c480…01c4a0             61 6d 2c 20 78 76 61 72 70 61 72 61 6d 2c 0a 0a 78 6e 61 6d 65 2c 0a 0a 78 70 72 65 66 69 78 2c   ┆am, xvarparam,  xname,  xprefix,┆
0x01c4a0…01c4c0             0a 0a 78 6c 61 62 65 6c 2c 0a 0a 78 63 61 73 65 73 74 61 74 2c 20 78 63 61 73 65 2c 20 78 63 61   ┆  xlabel,  xcasestat, xcase, xca┆
0x01c4c0…01c4e0             73 65 6c 61 62 65 6c 2c 20 78 63 61 73 65 72 61 6e 67 65 2c 20 78 6f 74 68 65 72 77 69 73 65 2c   ┆selabel, xcaserange, xotherwise,┆
0x01c4e0…01c500             20 78 65 6e 64 63 61 73 65 2c 0a 78 65 6e 64 63 61 73 65 6c 69 73 74 2c 20 78 65 6e 64 63 61 73   ┆ xendcase, xendcaselist, xendcas┆
0x01c500…01c520             65 73 74 61 74 2c 0a 0a 78 66 6f 72 73 74 61 74 2c 20 78 66 6f 72 2c 20 78 75 70 2c 20 78 64 6f   ┆estat,  xforstat, xfor, xup, xdo┆
0x01c520…01c540             77 6e 2c 20 78 64 6f 2c 20 78 65 6e 64 66 6f 72 2c 0a 0a 78 69 66 73 74 61 74 2c 20 78 69 66 65   ┆wn, xdo, xendfor,  xifstat, xife┆
0x01c540…01c560             78 70 72 2c 20 78 65 6c 73 65 2c 20 78 69 66 2c 0a 0a 78 72 65 70 65 61 74 2c 20 78 75 6e 74 69   ┆xpr, xelse, xif,  xrepeat, xunti┆
0x01c560…01c580             6c 2c 20 78 65 6e 64 72 65 70 65 61 74 2c 0a 0a 78 6c 6f 6f 70 73 74 61 74 2c 20 78 65 6e 64 6c   ┆l, xendrepeat,  xloopstat, xendl┆
0x01c580…01c5a0             6f 6f 70 73 74 61 74 2c 20 78 65 78 69 74 6c 6f 6f 70 73 74 61 74 2c 20 78 63 6f 6e 74 6c 6f 6f   ┆oopstat, xexitloopstat, xcontloo┆
0x01c5a0…01c5c0             70 73 74 61 74 2c 0a 78 65 78 69 74 6c 6f 63 6b 2c 20 0a 0a 78 65 78 69 74 73 74 61 74 2c 0a 0a   ┆pstat, xexitlock,   xexitstat,  ┆
0x01c5c0…01c5e0             78 77 68 69 6c 65 2c 20 78 77 68 69 6c 65 65 78 70 72 2c 20 78 65 6e 64 77 68 69 6c 65 2c 0a 0a   ┆xwhile, xwhileexpr, xendwhile,  ┆
0x01c5e0…01c600             78 77 69 74 68 2c 20 78 77 69 74 68 76 61 72 2c 20 78 65 6e 64 77 69 74 68 2c 20 78 72 65 74 79   ┆xwith, xwithvar, xendwith, xrety┆
0x01c600…01c620 (7, 1, 3)   70 65 2c 20 78 6e 6f 72 65 74 79 70 65 2c 0a 78 6c 6f 63 6b 73 74 61 74 2c 20 78 6c 6f 63 6b 6d   ┆pe, xnoretype, xlockstat, xlockm┆
0x01c620…01c640             65 73 73 74 61 74 2c 20 78 6c 6f 63 6b 76 61 72 2c 20 78 6c 6f 63 6b 2c 20 78 65 6e 64 6c 6f 63   ┆esstat, xlockvar, xlock, xendloc┆
0x01c640…01c660             6b 2c 0a 0a 78 67 6f 74 6f 2c 0a 0a 78 63 68 61 6e 6e 65 6c 2c 20 78 63 68 61 6e 76 61 72 2c 20   ┆k,  xgoto,  xchannel, xchanvar, ┆
0x01c660…01c680             78 65 6e 64 63 68 61 6e 6e 65 6c 2c 0a 0a 78 61 73 73 69 67 6e 73 74 61 74 2c 20 78 62 65 63 6f   ┆xendchannel,  xassignstat, xbeco┆
0x01c680…01c6a0             6d 65 73 2c 20 78 61 73 73 69 67 6e 2c 0a 78 65 78 63 68 61 6e 67 65 73 74 61 74 2c 20 78 65 78   ┆mes, xassign, xexchangestat, xex┆
0x01c6a0…01c6c0             63 68 61 6e 67 65 2c 0a 0a 78 70 72 6f 63 63 61 6c 6c 2c 20 78 65 6e 64 70 72 6f 63 2c 0a 78 66   ┆change,  xproccall, xendproc, xf┆
0x01c6c0…01c6e0             75 6e 63 63 61 6c 6c 2c 20 78 66 63 61 6c 6c 2c 20 78 65 6e 64 66 75 6e 63 63 61 6c 6c 2c 0a 78   ┆unccall, xfcall, xendfunccall, x┆
0x01c6e0…01c700             61 63 74 75 61 6c 2c 20 78 65 6e 64 61 63 74 75 61 6c 2c 0a 0a 78 70 72 6f 63 65 73 73 70 61 72   ┆actual, xendactual,  xprocesspar┆
0x01c700…01c720             61 6d 2c 0a 78 76 61 72 70 6f 69 6e 74 65 72 2c 20 78 74 65 6d 70 6f 69 6e 74 65 72 2c 20 78 61   ┆am, xvarpointer, xtempointer, xa┆
0x01c720…01c740             72 67 6c 69 73 74 73 69 7a 65 2c 0a 0a 28 2a 20 65 78 70 72 65 73 73 69 6f 6e 73 20 2a 29 0a 78   ┆rglistsize,  (* expressions *) x┆
0x01c740…01c760             65 78 70 72 2c 0a 78 67 65 74 76 61 6c 75 65 2c 0a 78 6e 65 2c 20 78 65 71 2c 20 78 6c 65 2c 20   ┆expr, xgetvalue, xne, xeq, xle, ┆
0x01c760…01c780             78 67 65 2c 20 78 6c 74 2c 20 78 67 74 2c 20 78 69 6e 2c 0a 78 6e 65 67 2c 20 78 61 64 64 2c 20   ┆xge, xlt, xgt, xin, xneg, xadd, ┆
0x01c780…01c7a0             78 73 75 62 2c 20 78 6f 72 5f 2c 0a 78 78 6f 72 2c 0a 78 64 69 76 2c 20 78 6d 75 6c 2c 20 78 73   ┆xsub, xor_, xxor, xdiv, xmul, xs┆
0x01c7a0…01c7c0             68 69 66 74 2c 20 78 6d 6f 64 2c 20 78 61 6e 64 2c 0a 78 6e 6f 74 2c 0a 0a 28 2a 20 63 6f 6e 76   ┆hift, xmod, xand, xnot,  (* conv┆
0x01c7c0…01c7e0             65 72 73 69 6f 6e 20 6f 70 65 72 61 74 6f 72 73 20 2a 29 0a 78 72 61 6e 67 65 2c 0a 0a 78 73 65   ┆ersion operators *) xrange,  xse┆
0x01c7e0…01c800             74 2c 20 78 69 6e 63 6c 75 64 65 2c 20 78 73 65 74 65 78 70 72 2c 20 78 69 6e 63 6c 75 64 65 72   ┆t, xinclude, xsetexpr, xincluder┆
0x01c800…01c820 (7, 1, 4)   61 6e 67 65 2c 20 78 65 6e 64 73 65 74 2c 0a 0a 78 6c 69 74 65 72 61 6c 2c 0a 78 74 79 70 65 73   ┆ange, xendset,  xliteral, xtypes┆
0x01c820…01c840             69 7a 65 63 61 6c 6c 2c 0a 78 76 61 72 2c 0a 78 73 74 72 75 63 63 6f 6e 73 74 2c 20 78 74 69 6d   ┆izecall, xvar, xstrucconst, xtim┆
0x01c840…01c860             65 73 2c 20 78 6e 75 6c 6c 2c 20 78 73 74 72 75 63 2c 20 78 65 6e 64 73 74 72 75 63 2c 0a 78 69   ┆es, xnull, xstruc, xendstruc, xi┆
0x01c860…01c880             6e 64 65 78 65 78 70 72 2c 20 78 69 6e 64 65 78 2c 0a 78 61 72 72 6f 77 2c 20 78 66 69 65 6c 64   ┆ndexexpr, xindex, xarrow, xfield┆
0x01c880…01c8a0             2c 0a 0a 78 6c 61 73 74 63 6f 64 65 0a 0a 29 3b 0a 0a 70 61 73 73 33 63 6f 64 65 69 6e 64 65 78   ┆,  xlastcode  );  pass3codeindex┆
0x01c8a0…01c8c0             20 3d 20 30 20 2e 2e 20 32 30 30 3b 20 28 2a 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 73 73 33 63   ┆ = 0 .. 200; (* number of pass3c┆
0x01c8c0…01c8e0             6f 64 65 73 20 2a 29 0a 0a 0a 6c 69 74 65 72 61 6c 6b 69 6e 64 73 20 3d 20 28 6c 69 74 5f 64 75   ┆odes *)   literalkinds = (lit_du┆
0x01c8e0…01c900             6d 6d 79 2c 20 6c 69 74 5f 69 6e 74 65 67 65 72 2c 20 6c 69 74 5f 73 74 72 69 6e 67 5f 6f 72 5f   ┆mmy, lit_integer, lit_string_or_┆
0x01c900…01c920             65 6d 70 74 79 2c 20 6c 69 74 5f 63 68 61 72 29 3b 0a 0a 0c 0a 0a 28 2a 20 65 6e 64 20 70 61 73   ┆empty, lit_char);     (* end pas┆
0x01c920…01c940             73 20 33 20 63 6f 64 65 73 20 2a 29 0a 0a 28 2a 20 69 6e 63 6c 75 64 65 20 70 61 73 73 33 65 72   ┆s 3 codes *)  (* include pass3er┆
0x01c940…01c960             72 6f 72 73 20 66 72 6f 6d 20 73 74 64 66 69 6c 65 20 2a 29 0a 70 61 73 73 33 65 72 72 6f 72 73   ┆rors from stdfile *) pass3errors┆
0x01c960…01c980             20 3d 0a 28 0a 6e 6f 65 72 72 6f 72 2c 0a 75 6e 64 65 63 6c 61 72 65 64 2c 20 20 20 20 20 20 20   ┆ = ( noerror, undeclared,       ┆
0x01c980…01c9a0             20 20 20 20 20 28 2a 20 69 64 65 6e 74 69 66 69 65 72 20 6e 6f 74 20 64 65 63 6c 61 72 65 64 20   ┆     (* identifier not declared ┆
0x01c9a0…01c9c0             2a 29 0a 69 6e 63 6f 6e 73 69 73 74 65 6e 74 5f 75 73 65 2c 20 20 20 20 20 20 28 2a 20 69 64 65   ┆*) inconsistent_use,      (* ide┆
0x01c9c0…01c9e0             6e 74 69 66 69 65 72 20 75 73 65 64 20 62 65 66 6f 72 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20   ┆ntifier used before declaration ┆
0x01c9e0…01ca00             2a 29 0a 64 6f 75 62 6c 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 2c 20 20 20 20 28 2a 20 69 64 65   ┆*) double_declaration,    (* ide┆
0x01ca00…01ca20 (7, 1, 5)   6e 74 69 66 69 65 72 20 61 6c 72 65 61 64 79 20 64 65 63 6c 61 72 65 64 20 61 74 20 74 68 69 73   ┆ntifier already declared at this┆
0x01ca20…01ca40             20 6c 65 76 65 6c 20 2a 29 0a 6c 61 62 65 6c 5f 6e 6f 74 5f 64 65 63 6c 61 72 65 64 2c 20 20 20   ┆ level *) label_not_declared,   ┆
0x01ca40…01ca60             20 28 2a 20 6c 61 62 65 6c 2d 69 64 65 6e 74 69 66 69 65 72 20 6e 6f 74 20 64 65 63 6c 61 72 65   ┆ (* label-identifier not declare┆
0x01ca60…01ca80             64 20 61 74 20 61 6c 6c 20 2a 29 0a 6e 6f 74 5f 6c 61 62 65 6c 5f 6e 61 6d 65 2c 20 20 20 20 20   ┆d at all *) not_label_name,     ┆
0x01ca80…01caa0             20 20 20 28 2a 20 6f 74 68 65 72 20 69 64 65 6e 74 69 66 69 65 72 20 75 73 65 64 20 61 73 20 6c   ┆   (* other identifier used as l┆
0x01caa0…01cac0             61 62 65 6c 2d 6e 61 6d 65 20 2a 29 0a 6d 75 6c 74 69 70 6c 65 5f 64 65 66 69 6e 65 64 5f 6c 61   ┆abel-name *) multiple_defined_la┆
0x01cac0…01cae0             62 65 6c 2c 20 28 2a 20 6c 61 62 65 6c 20 64 65 66 69 6e 65 64 20 73 65 76 65 72 61 6c 20 74 69   ┆bel, (* label defined several ti┆
0x01cae0…01cb00             6d 65 73 20 61 74 20 74 68 69 73 20 6c 65 76 65 6c 20 2a 29 0a 6c 61 62 65 6c 5f 6e 6f 74 5f 6c   ┆mes at this level *) label_not_l┆
0x01cb00…01cb20             6f 63 61 6c 6c 79 5f 64 65 63 6c 61 72 65 64 2c 20 20 28 2a 20 6c 61 62 65 6c 2d 69 64 65 6e 74   ┆ocally_declared,  (* label-ident┆
0x01cb20…01cb40             69 66 69 65 72 20 64 65 63 6c 61 72 65 64 20 61 74 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 6c 65   ┆ifier declared at surrounding le┆
0x01cb40…01cb60             76 65 6c 20 2a 29 0a 65 72 72 6f 6e 65 6f 75 73 5f 6c 61 62 65 6c 2c 20 20 20 20 20 20 20 28 2a   ┆vel *) erroneous_label,       (*┆
0x01cb60…01cb80             20 75 73 65 20 6f 66 20 61 20 6d 75 6c 74 69 70 6c 65 20 64 65 66 69 6e 65 64 20 6c 61 62 65 6c   ┆ use of a multiple defined label┆
0x01cb80…01cba0             20 2a 29 0a 6c 61 62 65 6c 5f 75 73 65 64 5f 66 72 6f 6d 5f 69 6e 6e 65 72 2c 20 28 2a 20 61 20   ┆ *) label_used_from_inner, (* a ┆
0x01cba0…01cbc0             6c 61 62 65 6c 2d 69 64 65 6e 74 20 68 61 73 20 62 65 65 6e 20 75 73 65 64 20 69 6e 20 69 6e 6e   ┆label-ident has been used in inn┆
0x01cbc0…01cbe0             65 72 20 72 6f 75 74 69 6e 65 20 2a 29 0a 6c 61 62 65 6c 5f 75 73 65 64 5f 6f 75 74 73 69 64 65   ┆er routine *) label_used_outside┆
0x01cbe0…01cc00             5f 73 63 6f 70 65 2c 20 20 20 20 28 2a 20 67 6f 74 6f 20 6c 65 61 64 69 6e 67 20 69 6e 74 6f 20   ┆_scope,    (* goto leading into ┆
0x01cc00…01cc20 (7, 1, 6)   63 6f 6e 74 72 6f 6c 2d 73 74 72 75 63 74 75 72 65 20 2a 29 0a 6c 61 62 65 6c 5f 64 65 66 69 6e   ┆control-structure *) label_defin┆
0x01cc20…01cc40             65 64 5f 6f 75 74 73 69 64 65 5f 6c 6f 63 6b 5f 6f 72 5f 63 68 61 6e 6e 65 6c 2c 20 28 2a 20 67   ┆ed_outside_lock_or_channel, (* g┆
0x01cc40…01cc60             6f 74 6f 20 6f 75 74 20 6f 66 20 6c 6f 63 6b 2d 20 6f 72 20 63 68 61 6e 6e 65 6c 20 73 74 61 74   ┆oto out of lock- or channel stat┆
0x01cc60…01cc80             65 6d 65 6e 74 73 20 2a 29 0a 6c 61 62 65 6c 5f 75 6e 64 65 66 69 6e 65 64 2c 20 20 20 20 20 20   ┆ements *) label_undefined,      ┆
0x01cc80…01cca0             20 28 2a 20 6c 61 62 65 6c 20 69 73 20 6e 6f 74 20 64 65 66 69 6e 65 64 20 2a 29 0a 6e 6f 74 5f   ┆ (* label is not defined *) not_┆
0x01cca0…01ccc0             74 79 70 65 6e 61 6d 65 2c 20 20 20 20 20 20 20 20 20 20 28 2a 20 69 64 65 6e 74 69 66 69 65 72   ┆typename,          (* identifier┆
0x01ccc0…01cce0             20 69 73 20 6e 6f 74 20 61 20 74 79 70 65 2d 69 64 65 6e 74 69 66 69 65 72 20 2a 29 0a 61 73 73   ┆ is not a type-identifier *) ass┆
0x01cce0…01cd00             69 67 6e 5f 6d 69 73 73 69 6e 67 2c 20 20 20 20 20 20 20 20 28 2a 20 3a 3d 20 61 73 73 75 6d 65   ┆ign_missing,        (* := assume┆
0x01cd00…01cd20             64 20 62 65 74 77 65 65 6e 20 74 79 70 65 20 61 6e 64 20 28 3a 20 2a 29 0a 74 79 70 65 5f 6e 61   ┆d between type and (: *) type_na┆
0x01cd20…01cd40             6d 65 5f 6d 69 73 73 69 6e 67 2c 20 20 20 20 20 28 2a 20 74 79 70 65 20 6f 66 20 73 74 72 75 63   ┆me_missing,     (* type of struc┆
0x01cd40…01cd60             74 75 72 65 64 20 63 6f 6e 73 74 61 6e 74 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 20 2a 29 0a   ┆tured constant not specified *) ┆
0x01cd60…01cd80             72 65 63 75 72 73 69 76 65 5f 75 73 65 5f 6f 66 5f 74 79 70 65 2c 20 28 2a 20 65 72 72 6f 72 20   ┆recursive_use_of_type, (* error ┆
0x01cd80…01cda0             69 6e 20 72 65 63 6f 72 64 20 6f 72 20 61 72 72 61 79 20 65 74 63 2e 20 2a 29 0a 72 65 63 75 72   ┆in record or array etc. *) recur┆
0x01cda0…01cdc0             73 69 76 65 5f 63 6f 6e 73 74 61 6e 74 5f 75 73 65 2c 28 2a 20 63 6f 6e 73 74 61 6e 74 20 69 73   ┆sive_constant_use,(* constant is┆
0x01cdc0…01cde0             20 75 73 65 64 20 69 6e 20 69 74 73 20 6f 77 6e 20 64 65 66 69 6e 69 74 69 6f 6e 2d 65 78 70 72   ┆ used in its own definition-expr┆
0x01cde0…01ce00             65 73 73 69 6f 6e 20 2a 29 0a 69 6c 6c 65 67 61 6c 5f 70 6f 6f 6c 5f 74 79 70 65 2c 20 20 20 20   ┆ession *) illegal_pool_type,    ┆
0x01ce00…01ce20 (7, 1, 7)   20 28 2a 20 70 6f 6f 6c 20 2e 2e 2e 20 6f 66 20 3c 69 6c 6c 65 67 61 6c 20 74 79 70 65 3e 2c 20   ┆ (* pool ... of <illegal type>, ┆
0x01ce20…01ce40             73 68 69 65 6c 64 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20   ┆shielded components not allowed ┆
0x01ce40…01ce60             2a 29 0a 70 6f 6f 6c 5f 63 61 72 64 69 6e 61 6c 69 74 79 5f 6d 75 73 74 5f 62 65 5f 69 6e 74 65   ┆*) pool_cardinality_must_be_inte┆
0x01ce60…01ce80             67 65 72 2c 20 28 2a 20 69 6c 6c 65 67 61 6c 20 73 69 7a 65 27 69 6e 67 20 6f 66 20 70 6f 6f 6c   ┆ger, (* illegal size'ing of pool┆
0x01ce80…01cea0             20 74 79 70 65 20 2a 29 0a 73 75 62 72 61 6e 67 65 5f 65 6c 65 6d 73 5f 6d 75 73 74 5f 62 65 5f   ┆ type *) subrange_elems_must_be_┆
0x01cea0…01cec0             65 6e 75 6d 65 72 61 74 69 6f 6e 2c 20 28 2a 20 69 6c 6c 65 67 61 6c 20 6c 69 6d 69 74 2d 74 79   ┆enumeration, (* illegal limit-ty┆
0x01cec0…01cee0             70 65 73 20 69 6e 20 73 75 62 72 61 6e 67 65 20 64 65 66 20 2a 29 0a 72 65 64 65 66 69 6e 69 74   ┆pes in subrange def *) redefinit┆
0x01cee0…01cf00             69 6f 6e 5f 6f 66 5f 63 6f 6e 74 65 78 74 5f 6e 61 6d 65 2c 20 28 2a 20 72 65 64 65 66 69 6e 69   ┆ion_of_context_name, (* redefini┆
0x01cf00…01cf20             74 69 6f 6e 20 6f 66 20 6f 62 6a 65 63 74 20 2a 29 0a 74 79 70 65 5f 6d 61 79 5f 6f 6e 6c 79 5f   ┆tion of object *) type_may_only_┆
0x01cf20…01cf40             62 65 5f 75 73 65 64 5f 61 74 5f 70 72 6f 63 65 73 73 5f 6c 65 76 65 6c 2c 20 28 2a 20 73 65 6d   ┆be_used_at_process_level, (* sem┆
0x01cf40…01cf60             61 70 68 6f 72 65 2c 20 65 78 74 65 72 6e 61 6c 20 70 72 6f 63 65 73 73 20 61 6e 64 20 70 6f 6f   ┆aphore, external process and poo┆
0x01cf60…01cf80             6c 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 64 65 63 6c 61 72 65 64 20 61 74 20 70 72 6f 63 65 73   ┆l may only be declared at proces┆
0x01cf80…01cfa0             73 20 6c 65 76 65 6c 20 2a 29 0a 70 72 6f 63 65 73 73 5f 6f 6e 6c 79 5f 61 6c 6c 6f 77 65 64 5f   ┆s level *) process_only_allowed_┆
0x01cfa0…01cfc0             61 74 5f 70 72 6f 63 65 73 73 6c 65 76 65 6c 2c 20 28 2a 20 70 72 6f 63 65 73 73 65 73 20 69 6e   ┆at_processlevel, (* processes in┆
0x01cfc0…01cfe0             73 69 64 65 20 66 75 6e 63 74 69 6f 6e 73 2f 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 62 69 64   ┆side functions/procedures forbid┆
0x01cfe0…01d000             64 65 6e 20 2a 29 0a 69 6c 6c 65 67 61 6c 5f 66 6f 72 6d 61 6c 5f 74 79 70 65 2c 20 20 20 28 2a   ┆den *) illegal_formal_type,   (*┆
0x01d000…01d020 (7, 1, 8)   20 66 6f 72 6d 61 6c 20 74 79 70 65 20 6d 61 79 20 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20   ┆ formal type may not be used in ┆
0x01d020…01d040             74 68 69 73 20 63 6f 6e 74 65 78 74 20 2a 29 0a 69 6c 6c 65 67 61 6c 5f 66 75 6e 63 74 69 6f 6e   ┆this context *) illegal_function┆
0x01d040…01d060             5f 74 79 70 65 2c 20 20 28 2a 20 66 75 6e 63 74 69 6f 6e 74 79 70 65 20 6d 61 79 20 6e 6f 74 20   ┆_type,  (* functiontype may not ┆
0x01d060…01d080             63 6f 6e 74 61 69 6e 20 73 68 69 65 6c 64 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 2a 29 0a 69   ┆contain shielded components *) i┆
0x01d080…01d0a0             6c 6c 65 67 61 6c 5f 73 63 6f 70 65 5f 6f 66 5f 74 79 70 65 5f 63 6f 6d 70 6f 6e 65 6e 74 2c 20   ┆llegal_scope_of_type_component, ┆
0x01d0a0…01d0c0             28 2a 20 6f 6e 6c 79 20 76 61 72 69 61 62 6c 65 73 20 6f 66 20 73 75 72 72 6f 75 6e 64 69 6e 67   ┆(* only variables of surrounding┆
0x01d0c0…01d0e0             20 73 63 6f 70 65 20 61 6c 6c 6f 77 65 64 20 2a 29 0a 70 61 72 61 6d 6c 69 73 74 5f 63 68 61 6e   ┆ scope allowed *) paramlist_chan┆
0x01d0e0…01d100             67 65 64 5f 73 69 6e 63 65 5f 66 6f 72 77 61 72 64 64 65 63 6c 2c 20 28 2a 20 27 6e 65 77 27 20   ┆ged_since_forwarddecl, (* 'new' ┆
0x01d100…01d120             70 61 72 61 6d 6c 69 73 74 20 6d 61 79 20 62 65 20 65 6d 70 74 79 20 6f 72 20 65 78 61 63 74 20   ┆paramlist may be empty or exact ┆
0x01d120…01d140             74 68 65 20 73 61 6d 65 20 2a 29 0a 66 6f 72 77 61 72 64 5f 6e 6f 74 5f 73 6f 6c 76 65 64 2c 20   ┆the same *) forward_not_solved, ┆
0x01d140…01d160             20 20 20 28 2a 20 66 6f 72 77 61 72 64 2d 64 65 63 6c 61 72 65 64 20 74 79 70 65 2f 72 6f 75 74   ┆   (* forward-declared type/rout┆
0x01d160…01d180             69 6e 65 20 6e 6f 74 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 20 72 65 61 6c 20 62 6f 64   ┆ine not followed by the real bod┆
0x01d180…01d1a0             79 20 2a 29 0a 66 75 6e 63 76 61 6c 5f 6e 6f 74 5f 75 73 65 64 2c 20 20 20 20 20 20 28 2a 20 66   ┆y *) funcval_not_used,      (* f┆
0x01d1a0…01d1c0             75 6e 63 74 69 6f 6e 2d 76 61 6c 75 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 64 65 66 69 6e   ┆unction-value has not been defin┆
0x01d1c0…01d1e0             65 64 20 61 74 20 61 6c 6c 20 2a 29 0a 74 79 70 65 5f 68 61 73 5f 70 6f 69 6e 74 65 72 73 2c 20   ┆ed at all *) type_has_pointers, ┆
0x01d1e0…01d200             20 20 20 20 28 2a 20 6c 6f 63 6b 74 79 70 65 20 63 6f 6e 74 61 69 6e 73 20 70 6f 69 6e 74 65 72   ┆    (* locktype contains pointer┆
0x01d200…01d220 (7, 1, 9)   2d 74 79 70 65 73 20 2a 29 0a 74 79 70 65 5f 68 61 73 5f 73 79 73 74 65 6d 74 79 70 65 73 2c 20   ┆-types *) type_has_systemtypes, ┆
0x01d220…01d240             20 28 2a 20 6c 6f 63 6b 2d 2f 77 69 74 68 2d 74 79 70 65 20 63 6f 6e 74 61 69 6e 73 20 73 68 69   ┆ (* lock-/with-type contains shi┆
0x01d240…01d260             65 6c 64 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 28 73 29 20 2a 29 0a 6f 70 61 6e 64 73 5f 69 6e 63   ┆elded component(s) *) opands_inc┆
0x01d260…01d280             6f 6d 70 61 74 69 62 6c 65 2c 20 20 20 28 2a 20 6f 70 65 72 61 6e 64 73 20 6e 6f 74 20 6f 66 20   ┆ompatible,   (* operands not of ┆
0x01d280…01d2a0             73 61 6d 65 20 74 79 70 65 6e 61 6d 65 20 2a 29 0a 66 6f 72 5f 69 6e 63 6f 6d 70 61 74 69 62 6c   ┆same typename *) for_incompatibl┆
0x01d2a0…01d2c0             65 2c 20 20 20 20 20 20 28 2a 20 66 6f 72 2d 76 61 72 69 61 62 6c 65 2f 73 74 61 72 74 76 61 6c   ┆e,      (* for-variable/startval┆
0x01d2c0…01d2e0             75 65 2f 65 6e 64 76 61 6c 75 65 20 6e 6f 74 20 6f 66 20 63 6f 6d 70 61 74 69 62 6c 65 20 74 79   ┆ue/endvalue not of compatible ty┆
0x01d2e0…01d300             70 65 73 20 2a 29 0a 63 61 73 65 5f 69 6e 63 6f 6d 70 61 74 69 62 6c 65 2c 20 20 20 20 20 28 2a   ┆pes *) case_incompatible,     (*┆
0x01d300…01d320             20 63 61 73 65 2d 65 78 70 72 65 73 73 69 6f 6e 2f 63 61 73 65 6c 61 62 65 6c 73 20 6e 6f 74 20   ┆ case-expression/caselabels not ┆
0x01d320…01d340             6f 66 20 63 6f 6d 70 61 74 69 62 6c 65 20 74 79 70 65 73 20 2a 29 0a 69 66 5f 74 79 70 65 2c 20   ┆of compatible types *) if_type, ┆
0x01d340…01d360             20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 69 66 2d 65 78 70 72 65 73 73 69 6f 6e 20 6d   ┆              (* if-expression m┆
0x01d360…01d380             75 73 74 20 62 65 20 62 6f 6f 6c 65 61 6e 20 74 79 70 65 20 2a 29 0a 72 65 70 65 61 74 5f 74 79   ┆ust be boolean type *) repeat_ty┆
0x01d380…01d3a0             70 65 2c 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 75 6e 74 69 6c 2d 65 78 70 72 65 73 73 69 6f   ┆pe,           (* until-expressio┆
0x01d3a0…01d3c0             6e 20 6d 75 73 74 20 62 65 20 62 6f 6f 6c 65 61 6e 20 74 79 70 65 20 2a 29 0a 77 68 69 6c 65 5f   ┆n must be boolean type *) while_┆
0x01d3c0…01d3e0             74 79 70 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 77 68 69 6c 65 2d 65 78 70 72 65 73   ┆type,            (* while-expres┆
0x01d3e0…01d400             73 69 6f 6e 20 6d 75 73 74 20 62 65 20 62 6f 6f 6c 65 61 6e 20 74 79 70 65 20 2a 29 0a 73 68 6f   ┆sion must be boolean type *) sho┆
0x01d400…01d420 (7, 1, 10)  72 74 5f 66 6f 72 6d 5f 6f 66 5f 6d 75 6c 74 69 70 6c 65 5f 6c 6f 63 6b 73 5f 6e 6f 74 5f 61 6c   ┆rt_form_of_multiple_locks_not_al┆
0x01d420…01d440             6c 6f 77 65 64 2c 20 28 2a 20 73 68 6f 72 74 20 66 6f 72 6d 20 6f 66 20 6d 75 6c 74 69 70 6c 65   ┆lowed, (* short form of multiple┆
0x01d440…01d460             20 6c 6f 63 6b 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 2a 29 0a 6c 6f 63 6b 5f 6e 61 6d 65 5f   ┆ locks not allowed *) lock_name_┆
0x01d460…01d480             6d 69 73 73 69 6e 67 2c 20 20 20 20 20 28 2a 20 62 75 66 66 65 72 20 6e 61 6d 65 20 6d 69 73 73   ┆missing,     (* buffer name miss┆
0x01d480…01d4a0             69 6e 67 20 69 6e 20 6c 6f 63 6b 20 73 74 61 74 65 6d 65 6e 74 20 2a 29 0a 62 75 66 66 65 72 5f   ┆ing in lock statement *) buffer_┆
0x01d4a0…01d4c0             74 79 70 65 5f 6d 69 73 73 69 6e 67 2c 20 20 20 28 2a 20 62 75 66 66 65 72 20 74 79 70 65 20 73   ┆type_missing,   (* buffer type s┆
0x01d4c0…01d4e0             70 65 63 69 66 69 63 61 74 69 6f 6e 20 69 73 20 6d 69 73 73 69 6e 67 20 2a 29 0a 6c 6f 63 6b 5f   ┆pecification is missing *) lock_┆
0x01d4e0…01d500             74 79 70 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 6c 6f 63 6b 2d 76 61 72 69 61 62   ┆type,             (* lock-variab┆
0x01d500…01d520             6c 65 20 6d 75 73 74 20 62 65 20 72 65 66 65 72 65 6e 63 65 20 74 79 70 65 20 2a 29 0a 63 68 61   ┆le must be reference type *) cha┆
0x01d520…01d540             6e 6e 65 6c 5f 74 79 70 65 2c 20 20 20 20 20 20 20 20 20 20 28 2a 20 63 68 61 6e 6e 65 6c 2d 76   ┆nnel_type,          (* channel-v┆
0x01d540…01d560             61 72 69 61 62 6c 65 20 6d 75 73 74 20 62 65 20 72 65 66 65 72 65 6e 63 65 20 74 79 70 65 20 2a   ┆ariable must be reference type *┆
0x01d560…01d580             29 0a 6e 6f 74 5f 69 6e 64 65 78 5f 74 79 70 65 2c 20 20 20 20 20 20 20 20 28 2a 20 74 79 70 65   ┆) not_index_type,        (* type┆
0x01d580…01d5a0             20 6f 66 20 6f 70 65 72 61 6e 64 20 6d 75 73 74 20 62 65 20 65 6e 75 6d 65 72 61 74 69 6f 6e 2d   ┆ of operand must be enumeration-┆
0x01d5a0…01d5c0             74 79 70 65 20 2a 29 0a 6e 6f 74 5f 76 61 72 6e 61 6d 65 2c 20 20 20 20 20 20 20 20 20 20 20 28   ┆type *) not_varname,           (┆
0x01d5c0…01d5e0             2a 20 76 61 72 73 69 7a 65 63 61 6c 6c 3a 20 69 64 65 6e 74 69 66 69 65 72 20 69 73 20 6e 6f 74   ┆* varsizecall: identifier is not┆
0x01d5e0…01d600             20 6e 61 6d 65 20 6f 66 20 61 20 76 61 72 69 61 62 6c 65 20 2a 29 0a 6e 6f 74 5f 76 61 72 69 61   ┆ name of a variable *) not_varia┆
0x01d600…01d620 (7, 1, 11)  62 6c 65 2c 20 20 20 20 20 20 20 20 20 20 28 2a 20 6f 70 65 72 61 6e 64 20 63 61 6e 6e 6f 74 20   ┆ble,          (* operand cannot ┆
0x01d620…01d640             62 65 20 75 73 65 64 20 61 73 20 76 61 72 69 61 62 6c 65 20 2a 29 0a 66 69 65 6c 64 5f 6d 75 73   ┆be used as variable *) field_mus┆
0x01d640…01d660             74 5f 66 6f 6c 6c 6f 77 5f 72 65 63 6f 72 64 74 79 70 65 2c 20 28 2a 20 3c 76 61 72 69 61 62 6c   ┆t_follow_recordtype, (* <variabl┆
0x01d660…01d680             65 3e 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 3c 2e 3e 20 69 73 20 6e 6f 74 20 61 20 72 65 63 6f   ┆e> in front of <.> is not a reco┆
0x01d680…01d6a0             72 64 20 2a 29 0a 6e 61 6d 65 5f 6e 6f 74 5f 66 69 65 6c 64 6e 61 6d 65 2c 20 20 20 20 28 2a 20   ┆rd *) name_not_fieldname,    (* ┆
0x01d6a0…01d6c0             3c 6e 61 6d 65 3e 20 61 66 74 65 72 20 3c 2e 3e 20 69 73 20 6e 6f 74 20 61 20 66 69 65 6c 64 6e   ┆<name> after <.> is not a fieldn┆
0x01d6c0…01d6e0             61 6d 65 20 6f 66 20 3c 76 61 72 69 61 62 6c 65 3e 20 2a 29 0a 6d 75 73 74 5f 62 65 5f 70 6f 69   ┆ame of <variable> *) must_be_poi┆
0x01d6e0…01d700             6e 74 65 72 74 79 70 65 5f 62 65 66 6f 72 65 5f 75 70 61 72 72 6f 77 2c 20 28 2a 20 3c 76 61 72   ┆ntertype_before_uparrow, (* <var┆
0x01d700…01d720             69 61 62 6c 65 3e 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 3c 75 70 61 72 72 6f 77 3e 20 69 73 20   ┆iable> in front of <uparrow> is ┆
0x01d720…01d740             6e 6f 74 20 61 20 70 6f 69 6e 74 65 72 20 2a 29 0a 6d 69 78 65 64 5f 74 79 70 65 73 5f 69 6e 5f   ┆not a pointer *) mixed_types_in_┆
0x01d740…01d760             73 65 74 6c 69 73 74 2c 20 28 2a 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 73 65 74 2d 76 61 6c 75   ┆setlist, (* elements in set-valu┆
0x01d760…01d780             65 20 6d 61 79 20 6e 6f 74 20 62 65 20 6f 66 20 6d 69 78 65 64 20 74 79 70 65 73 20 2a 29 0a 72   ┆e may not be of mixed types *) r┆
0x01d780…01d7a0             65 6c 61 74 69 6f 6e 5f 65 72 72 6f 72 2c 20 20 20 20 20 20 20 20 28 2a 20 69 6c 6c 65 67 61 6c   ┆elation_error,        (* illegal┆
0x01d7a0…01d7c0             20 6d 69 78 74 75 72 65 20 6f 66 20 74 79 70 65 73 20 69 6e 20 72 65 6c 61 74 69 6f 6e 20 2a 29   ┆ mixture of types in relation *)┆
0x01d7c0…01d7e0             0a 61 72 69 74 68 6d 65 74 69 63 5f 65 72 72 6f 72 2c 20 20 20 20 20 20 28 2a 20 69 6c 6c 65 67   ┆ arithmetic_error,      (* illeg┆
0x01d7e0…01d800             61 6c 20 6d 69 78 74 75 72 65 20 6f 66 20 74 79 70 65 73 20 69 6e 20 74 65 72 6d 20 6f 72 20 66   ┆al mixture of types in term or f┆
0x01d800…01d820 (7, 1, 12)  61 63 74 6f 72 20 2a 29 0a 6d 6f 6e 61 64 69 63 5f 65 72 72 6f 72 2c 20 20 20 20 20 20 20 20 20   ┆actor *) monadic_error,         ┆
0x01d820…01d840             28 2a 20 69 6c 6c 65 67 61 6c 20 74 79 70 65 20 66 6f 72 20 6d 6f 6e 61 64 69 63 20 6f 70 65 72   ┆(* illegal type for monadic oper┆
0x01d840…01d860             61 74 6f 72 20 2a 29 0a 72 65 61 6c 5f 6e 6f 74 5f 69 6d 70 6c 65 6d 65 6e 74 65 64 2c 20 20 28   ┆ator *) real_not_implemented,  (┆
0x01d860…01d880             2a 20 72 65 61 6c 20 6f 63 63 75 72 69 6e 67 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 2a 29   ┆* real occuring in expression *)┆
0x01d880…01d8a0             0a 72 65 61 6c 5f 64 69 76 69 73 69 6f 6e 5f 6e 6f 74 5f 69 6d 70 6c 65 6d 65 6e 74 65 64 2c 20   ┆ real_division_not_implemented, ┆
0x01d8a0…01d8c0             20 28 2a 20 72 65 61 6c 2d 64 69 76 69 73 69 6f 6e 20 6f 66 20 69 6e 74 65 67 65 72 73 20 6e 6f   ┆ (* real-division of integers no┆
0x01d8c0…01d8e0             74 20 69 6d 70 6c 20 2a 29 0a 69 6c 6c 65 67 61 6c 5f 69 6e 5f 65 78 70 72 2c 20 20 20 20 20 20   ┆t impl *) illegal_in_expr,      ┆
0x01d8e0…01d900             20 28 2a 20 69 6c 6c 65 67 61 6c 20 6f 70 65 72 61 6e 64 20 6b 69 6e 64 20 69 6e 20 65 78 70 72   ┆ (* illegal operand kind in expr┆
0x01d900…01d920             65 73 73 69 6f 6e 20 2a 29 0a 74 6f 6f 5f 66 65 77 5f 70 61 72 61 6d 65 74 65 72 73 2c 20 20 20   ┆ession *) too_few_parameters,   ┆
0x01d920…01d940             20 28 2a 20 74 6f 6f 20 66 65 77 20 61 63 74 75 61 6c 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f   ┆ (* too few actual parameters to┆
0x01d940…01d960             20 72 6f 75 74 69 6e 65 63 61 6c 6c 20 28 6f 72 20 73 74 72 75 63 72 65 63 6f 72 64 20 2a 29 0a   ┆ routinecall (or strucrecord *) ┆
0x01d960…01d980             74 6f 6f 5f 6d 61 6e 79 5f 61 63 74 75 61 6c 5f 70 61 72 61 6d 73 2c 20 28 2a 20 65 72 72 6f 72   ┆too_many_actual_params, (* error┆
0x01d980…01d9a0             20 69 6e 20 72 6f 75 74 69 6e 65 63 61 6c 6c 20 2a 29 0a 74 6f 6f 5f 6d 61 6e 79 5f 76 61 6c 75   ┆ in routinecall *) too_many_valu┆
0x01d9a0…01d9c0             65 73 5f 69 6e 5f 72 65 63 6f 72 64 5f 73 74 72 75 63 74 75 72 65 2c 20 28 2a 20 65 72 72 6f 72   ┆es_in_record_structure, (* error┆
0x01d9c0…01d9e0             20 69 6e 20 73 74 72 75 63 74 75 72 65 64 2d 72 65 63 6f 72 64 20 63 6f 6e 73 74 61 6e 74 20 2a   ┆ in structured-record constant *┆
0x01d9e0…01da00             29 0a 74 79 70 65 5f 6d 75 73 74 5f 62 65 5f 72 65 63 6f 72 64 5f 6f 72 5f 61 72 72 61 79 2c 20   ┆) type_must_be_record_or_array, ┆
0x01da00…01da20 (7, 1, 13)  28 2a 20 74 79 70 65 6e 61 6d 65 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 73 74 72 75 63 74 75 72   ┆(* typename in front of structur┆
0x01da20…01da40             65 64 20 63 6f 6e 73 74 61 6e 74 20 6d 75 73 74 20 62 65 20 72 65 63 6f 72 64 20 6f 72 20 61 72   ┆ed constant must be record or ar┆
0x01da40…01da60             72 61 79 20 2a 29 0a 64 6f 75 62 6c 65 5f 70 61 72 61 6d 5f 6f 6e 6c 79 5f 69 6e 5f 73 74 72 75   ┆ray *) double_param_only_in_stru┆
0x01da60…01da80             63 5f 63 6f 6e 73 74 2c 20 28 2a 20 74 68 65 20 27 2a 2a 2a 27 20 6f 70 65 72 61 74 6f 72 20 6d   ┆c_const, (* the '***' operator m┆
0x01da80…01daa0             75 73 74 20 6f 6e 6c 79 20 6f 63 63 75 72 20 69 6e 20 73 74 72 75 63 74 75 72 65 64 2d 61 72 72   ┆ust only occur in structured-arr┆
0x01daa0…01dac0             61 79 20 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 73 75 62 73 63 72 69 70 74 5f 61 66 74 65 72 5f 6e   ┆ay constant *) subscript_after_n┆
0x01dac0…01dae0             6f 6e 61 72 72 61 79 2c 20 28 2a 20 6e 61 6d 65 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 61 72 67   ┆onarray, (* name in front of arg┆
0x01dae0…01db00             6c 69 73 74 20 69 73 20 6e 6f 74 20 6f 66 20 61 72 72 61 79 2d 74 79 70 65 20 2a 29 0a 69 6e 63   ┆list is not of array-type *) inc┆
0x01db00…01db20             6f 6d 70 61 74 69 62 6c 65 5f 69 6e 64 65 78 2c 20 20 20 20 20 28 2a 20 69 6e 64 65 78 2d 65 78   ┆ompatible_index,     (* index-ex┆
0x01db20…01db40             70 72 65 73 73 69 6f 6e 20 64 6f 65 73 6e 27 74 20 6d 61 74 63 68 20 61 72 72 61 79 2d 64 65 63   ┆pression doesn't match array-dec┆
0x01db40…01db60             6c 61 72 61 74 69 6f 6e 20 2a 29 0a 61 73 73 69 67 6e 5f 69 6e 63 6f 6d 70 61 74 69 62 6c 65 2c   ┆laration *) assign_incompatible,┆
0x01db60…01db80             20 20 20 20 28 2a 20 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 74 79 70 65 73 20 69 6e 20 61 73 73   ┆    (* incompatible types in ass┆
0x01db80…01dba0             69 67 6e 6d 65 6e 74 20 2a 29 0a 65 78 63 68 61 6e 67 65 5f 69 6e 63 6f 6d 70 61 74 69 62 6c 65   ┆ignment *) exchange_incompatible┆
0x01dba0…01dbc0             2c 20 20 28 2a 20 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 74 79 70 65 73 20 69 6e 20 65 78 63 68   ┆,  (* incompatible types in exch┆
0x01dbc0…01dbe0             61 6e 67 65 20 2a 29 0a 6e 6f 74 5f 70 72 6f 63 65 64 75 72 65 5f 63 61 6c 6c 2c 20 20 20 20 20   ┆ange *) not_procedure_call,     ┆
0x01dbe0…01dc00             28 2a 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 20 61 20 70 72 6f 63 65 64   ┆(* the statement is not a proced┆
0x01dc00…01dc20 (7, 1, 14)  75 72 65 2d 63 61 6c 6c 20 2a 29 0a 76 61 72 69 61 62 6c 65 5f 6d 61 79 5f 6e 6f 74 5f 62 65 5f   ┆ure-call *) variable_may_not_be_┆
0x01dc20…01dc40             70 61 63 6b 65 64 2c 20 20 28 2a 20 66 6f 72 2d 76 61 72 69 61 62 6c 65 2c 20 77 69 74 68 2d 76   ┆packed,  (* for-variable, with-v┆
0x01dc40…01dc60             61 72 69 61 62 6c 65 20 6f 72 20 61 63 74 75 61 6c 20 76 61 72 2d 70 61 72 61 6d 20 69 73 20 70   ┆ariable or actual var-param is p┆
0x01dc60…01dc80             61 63 6b 65 64 20 2a 29 0a 6e 6f 74 5f 61 73 73 69 67 6e 61 62 6c 65 2c 20 20 20 20 20 20 20 20   ┆acked *) not_assignable,        ┆
0x01dc80…01dca0             20 20 28 2a 20 6f 70 65 72 61 6e 64 20 6d 61 79 20 6e 6f 74 20 62 65 20 61 73 73 69 67 6e 65 64   ┆  (* operand may not be assigned┆
0x01dca0…01dcc0             20 74 6f 2c 20 74 79 70 65 20 69 73 20 73 68 69 65 6c 64 65 64 20 6f 72 20 66 72 6f 7a 65 6e 20   ┆ to, type is shielded or frozen ┆
0x01dcc0…01dce0             2a 29 0a 6e 6f 74 5f 65 78 63 68 61 6e 67 65 61 62 6c 65 2c 20 20 20 20 20 20 20 20 28 2a 20 6f   ┆*) not_exchangeable,        (* o┆
0x01dce0…01dd00             70 65 72 61 6e 64 20 6d 61 79 20 6e 6f 74 20 62 65 20 65 78 63 68 61 6e 67 65 64 2c 20 74 79 70   ┆perand may not be exchanged, typ┆
0x01dd00…01dd20             65 20 69 73 20 73 65 6d 61 70 68 6f 72 65 2c 20 65 78 74 65 72 6e 61 6c 20 70 72 6f 63 65 73 73   ┆e is semaphore, external process┆
0x01dd20…01dd40             2c 20 70 6f 6f 6c 20 6f 72 20 66 72 6f 7a 65 6e 20 2a 29 0a 65 78 63 68 61 6e 67 65 5f 74 79 70   ┆, pool or frozen *) exchange_typ┆
0x01dd40…01dd60             65 2c 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 74 79 70 65 20 6d 75 73 74 20 62 65 3a 20 72 65   ┆e,           (* type must be: re┆
0x01dd60…01dd80             66 65 72 65 6e 63 65 20 6f 72 20 73 68 61 64 6f 77 20 2a 29 0a 69 6c 6c 65 67 61 6c 5f 76 61 72   ┆ference or shadow *) illegal_var┆
0x01dd80…01dda0             5f 70 61 72 61 6d 5f 73 75 62 73 74 69 74 75 74 69 6f 6e 2c 20 20 20 28 2a 20 66 6f 72 6d 61 6c   ┆_param_substitution,   (* formal┆
0x01dda0…01ddc0             20 61 6e 64 20 61 63 74 75 61 6c 20 74 79 70 65 20 6d 75 73 74 20 6d 61 74 63 68 20 65 78 61 63   ┆ and actual type must match exac┆
0x01ddc0…01dde0             74 6c 79 20 2a 29 0a 69 6c 6c 65 67 61 6c 5f 76 61 6c 75 65 5f 70 61 72 61 6d 5f 73 75 62 73 74   ┆tly *) illegal_value_param_subst┆
0x01dde0…01de00             69 74 75 74 69 6f 6e 2c 20 28 2a 20 61 63 74 75 61 6c 20 61 6e 64 20 66 6f 72 6d 61 6c 20 74 79   ┆itution, (* actual and formal ty┆
0x01de00…01de20 (7, 1, 15)  70 65 73 20 61 72 65 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 20 2a 29 0a 61 63 74 75 61 6c   ┆pes are not compatible *) actual┆
0x01de20…01de40             5f 6d 61 79 5f 6e 6f 74 5f 62 65 5f 66 72 6f 7a 65 6e 2c 20 28 2a 20 66 6f 72 6d 61 6c 20 69 73   ┆_may_not_be_frozen, (* formal is┆
0x01de40…01de60             20 6e 6f 74 20 66 72 6f 7a 65 6e 2c 20 74 68 65 72 65 66 6f 72 65 20 61 63 74 75 61 6c 20 6d 61   ┆ not frozen, therefore actual ma┆
0x01de60…01de80             79 20 6e 6f 74 20 62 65 20 66 72 6f 7a 65 6e 20 2a 29 0a 73 6b 69 70 70 61 72 61 6d 5f 6f 6e 6c   ┆y not be frozen *) skipparam_onl┆
0x01de80…01dea0             79 5f 69 6e 5f 73 74 72 75 63 5f 63 6f 6e 73 74 2c 20 20 28 2a 20 74 68 65 20 27 3f 27 20 6d 61   ┆y_in_struc_const,  (* the '?' ma┆
0x01dea0…01dec0             79 20 6f 6e 6c 79 20 6f 63 63 75 72 20 69 6e 20 73 74 72 75 63 74 75 72 65 64 20 63 6f 6e 73 74   ┆y only occur in structured const┆
0x01dec0…01dee0             61 6e 74 73 20 2a 29 0a 73 74 72 75 63 5f 61 72 72 5f 69 6e 63 6f 6d 70 61 74 69 62 6c 65 2c 20   ┆ants *) struc_arr_incompatible, ┆
0x01dee0…01df00             20 28 2a 20 69 6e 63 6f 6d 70 2e 20 74 79 70 65 73 20 69 6e 20 73 74 72 75 63 74 75 72 65 64 20   ┆ (* incomp. types in structured ┆
0x01df00…01df20             61 72 72 61 79 2d 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 73 74 72 75 63 5f 72 65 63 5f 69 6e 63 6f   ┆array-constant *) struc_rec_inco┆
0x01df20…01df40             6d 70 61 74 69 62 6c 65 2c 20 20 28 2a 20 69 6e 63 6f 6d 70 2e 20 74 79 70 65 73 20 69 6e 20 73   ┆mpatible,  (* incomp. types in s┆
0x01df40…01df60             74 72 75 63 74 75 72 65 64 20 72 65 63 6f 72 64 2d 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 76 61 72   ┆tructured record-constant *) var┆
0x01df60…01df80             5f 69 6e 69 74 5f 69 6e 63 6f 6d 70 61 74 69 62 6c 65 2c 20 20 20 28 2a 20 69 6e 63 6f 6d 70 2e   ┆_init_incompatible,   (* incomp.┆
0x01df80…01dfa0             20 74 79 70 65 73 20 69 6e 20 76 61 72 2d 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 2a 29 0a   ┆ types in var-initialization *) ┆
0x01dfa0…01dfc0             72 65 70 65 74 69 74 69 6f 6e 5f 74 79 70 65 2c 20 20 20 20 20 20 20 20 20 28 2a 20 72 65 70 65   ┆repetition_type,         (* repe┆
0x01dfc0…01dfe0             74 69 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 2a 29 0a 63 6f 6e 73 74 5f   ┆tition must be integer *) const_┆
0x01dfe0…01e000             65 78 70 6f 72 74 5f 6f 6e 6c 79 2c 20 20 20 20 20 20 20 28 2a 20 76 61 6c 75 65 2d 65 78 70 6f   ┆export_only,       (* value-expo┆
0x01e000…01e020 (8, 0, 1)   72 74 20 64 65 6d 61 6e 64 73 20 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 76 61 72 5f 65 78 70 6f 72   ┆rt demands constant *) var_expor┆
0x01e020…01e040             74 5f 6f 6e 6c 79 2c 20 20 20 20 20 20 20 20 20 28 2a 20 6f 66 66 73 65 74 2d 65 78 70 6f 72 74   ┆t_only,         (* offset-export┆
0x01e040…01e060             20 64 65 6d 61 6e 64 73 20 76 61 72 69 61 62 6c 65 20 2a 29 0a 63 6f 6e 73 74 5f 6f 72 5f 76 61   ┆ demands variable *) const_or_va┆
0x01e060…01e080             72 5f 65 78 70 6f 72 74 5f 6f 6e 6c 79 2c 28 2a 20 73 69 7a 65 2d 2c 64 69 73 70 2d 2c 61 64 64   ┆r_export_only,(* size-,disp-,add┆
0x01e080…01e0a0             72 2d 65 78 70 6f 72 74 20 64 65 6d 61 6e 64 73 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 76 61 72   ┆r-export demands constant or var┆
0x01e0a0…01e0c0             69 61 62 6c 65 20 2a 29 0a 64 69 73 70 5f 65 78 70 6f 72 74 5f 6d 75 73 74 5f 68 61 76 65 5f 66   ┆iable *) disp_export_must_have_f┆
0x01e0c0…01e0e0             69 65 6c 64 2c 20 28 2a 20 64 69 73 70 2d 65 78 70 6f 72 74 20 64 65 6d 61 6e 64 73 20 27 66 69   ┆ield, (* disp-export demands 'fi┆
0x01e0e0…01e100             65 6c 64 69 6e 67 27 20 2a 29 0a 6e 6f 74 5f 69 6d 70 6c 65 6d 65 6e 74 65 64 5f 6f 6e 5f 7a 38   ┆elding' *) not_implemented_on_z8┆
0x01e100…01e120             30 2c 20 28 2a 20 78 6f 72 2c 20 69 6e 74 65 67 65 72 2d 61 6e 64 2c 20 61 6e 64 20 69 6e 74 65   ┆0, (* xor, integer-and, and inte┆
0x01e120…01e140             67 65 72 2d 6f 72 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 6f 6e 20 7a 38 30 20 2a 29   ┆ger-or not implemented on z80 *)┆
0x01e140…01e160             0a 66 6f 72 77 61 72 64 5f 70 72 6f 63 65 73 73 5f 6e 6f 74 5f 61 6c 6c 6f 77 65 64 2c 20 28 2a   ┆ forward_process_not_allowed, (*┆
0x01e160…01e180             20 61 20 70 72 6f 63 65 73 73 20 6d 61 79 20 6e 6f 74 20 62 65 20 46 4f 52 57 41 52 44 20 64 65   ┆ a process may not be FORWARD de┆
0x01e180…01e1a0             63 6c 61 72 65 64 20 2a 29 0a 66 6f 72 77 61 72 64 5f 6d 75 73 74 5f 62 65 5f 70 6f 69 6e 74 65   ┆clared *) forward_must_be_pointe┆
0x01e1a0…01e1c0             72 2c 20 28 2a 20 46 4f 52 57 41 52 44 20 73 70 65 63 69 66 69 65 64 20 74 79 70 65 20 6d 75 73   ┆r, (* FORWARD specified type mus┆
0x01e1c0…01e1e0             74 20 62 65 20 70 6f 69 6e 74 65 72 20 2a 29 0a 6c 61 73 74 70 61 73 73 33 65 72 72 6f 72 29 3b   ┆t be pointer *) lastpass3error);┆
0x01e1e0…01e200             0a 0a 28 2a 20 64 65 66 69 6e 65 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 70 72 6f 63 65 64   ┆  (* define parameters to proced┆
0x01e200…01e220 (8, 0, 2)   75 72 65 20 27 73 74 6f 70 27 20 2a 29 0a 73 74 6f 70 63 6f 64 65 73 20 3d 20 28 0a 64 75 6d 6d   ┆ure 'stop' *) stopcodes = ( dumm┆
0x01e220…01e240             79 5f 73 74 6f 70 5f 63 6f 64 65 2c 20 28 2a 20 6e 6f 74 20 75 73 65 64 20 2a 29 0a 74 6f 6f 5f   ┆y_stop_code, (* not used *) too_┆
0x01e240…01e260             6d 61 6e 79 5f 6e 65 73 74 65 64 5f 63 61 6c 6c 73 29 3b 0a 0a 6c 65 76 65 6c 6b 69 6e 64 73 20   ┆many_nested_calls);  levelkinds ┆
0x01e260…01e280             3d 20 28 0a 70 72 6f 63 65 73 73 6c 65 76 65 6c 2c 0a 66 69 72 73 74 77 69 74 68 2c 20 6e 65 78   ┆= ( processlevel, firstwith, nex┆
0x01e280…01e2a0             74 77 69 74 68 2c 0a 66 69 72 73 74 6c 6f 63 6b 2c 20 6e 65 78 74 6c 6f 63 6b 2c 0a 69 72 72 65   ┆twith, firstlock, nextlock, irre┆
0x01e2a0…01e2c0             6c 6c 5f 6c 65 76 65 6c 29 3b 0a 0a 28 2a 20 64 65 66 69 6e 65 20 70 61 73 73 33 20 70 72 6f 67   ┆ll_level);  (* define pass3 prog┆
0x01e2c0…01e2e0             72 61 6d 6d 69 6e 67 20 65 72 72 6f 72 2d 63 6f 64 65 73 20 2a 29 0a 63 6f 6d 70 5f 65 72 72 6f   ┆ramming error-codes *) comp_erro┆
0x01e2e0…01e300             72 63 6f 64 65 73 20 3d 0a 28 75 6e 6b 6e 6f 77 6e 5f 6e 61 6d 65 6b 69 6e 64 2c 0a 75 6e 6b 6e   ┆rcodes = (unknown_namekind, unkn┆
0x01e300…01e320             6f 77 6e 5f 61 72 67 6b 69 6e 64 2c 0a 75 6e 6b 6e 6f 77 6e 5f 6f 70 63 6f 64 65 2c 0a 75 6e 6b   ┆own_argkind, unknown_opcode, unk┆
0x01e320…01e340             6e 6f 77 6e 5f 70 61 72 61 6d 6b 69 6e 64 2c 0a 75 6e 6b 6e 6f 77 6e 5f 72 6f 75 74 69 6e 65 6b   ┆nown_paramkind, unknown_routinek┆
0x01e340…01e360             69 6e 64 2c 0a 75 6e 6b 6e 6f 77 6e 5f 73 70 69 78 2c 0a 75 6e 6b 6e 6f 77 6e 5f 73 74 64 74 79   ┆ind, unknown_spix, unknown_stdty┆
0x01e360…01e380             70 65 5f 6e 61 6d 65 2c 0a 75 6e 6b 6e 6f 77 6e 5f 74 79 70 65 6b 69 6e 64 2c 0a 75 6e 6b 6e 6f   ┆pe_name, unknown_typekind, unkno┆
0x01e380…01e3a0             77 6e 5f 72 65 63 74 79 70 65 2c 0a 69 6e 63 6f 6e 73 69 73 74 5f 61 6c 6c 6f 63 2c 0a 77 72 6f   ┆wn_rectype, inconsist_alloc, wro┆
0x01e3a0…01e3c0             6e 67 5f 76 65 72 73 69 6f 6e 2c 0a 75 6e 73 74 61 63 6b 5f 6e 6f 6e 74 79 70 65 2c 0a 74 6f 6f   ┆ng_version, unstack_nontype, too┆
0x01e3c0…01e3e0             5f 6d 61 6e 79 5f 74 79 70 65 73 29 3b 0a 0a 0a 28 2a 20 6f 70 65 72 61 74 6f 72 20 6d 6f 64 65   ┆_many_types);   (* operator mode┆
0x01e3e0…01e400             73 20 2a 29 0a 6f 70 6d 6f 64 65 73 20 3d 20 28 75 6e 61 72 79 2c 20 62 69 6e 61 72 79 29 3b 0a   ┆s *) opmodes = (unary, binary); ┆
0x01e400…01e420 (8, 0, 3)   0a 28 2a 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 61 20 74 79 70 65 20 2a 29 0a 63 6f 6d 70   ┆ (* components of a type *) comp┆
0x01e420…01e440             6f 6e 65 6e 74 73 20 3d 20 28 74 5f 73 69 6d 70 6c 65 2c 20 74 5f 73 65 6d 61 70 68 6f 72 65 2c   ┆onents = (t_simple, t_semaphore,┆
0x01e440…01e460             20 74 5f 70 6f 6f 6c 2c 20 74 5f 72 65 66 65 72 65 6e 63 65 2c 20 74 5f 73 68 61 64 6f 77 2c 0a   ┆ t_pool, t_reference, t_shadow, ┆
0x01e460…01e480             74 5f 65 78 74 70 72 6f 63 65 73 73 2c 20 74 5f 70 6f 69 6e 74 65 72 2c 20 74 5f 72 65 61 64 6f   ┆t_extprocess, t_pointer, t_reado┆
0x01e480…01e4a0             6e 6c 79 29 3b 0a 0a 63 6f 6e 74 65 6e 74 5f 73 65 74 20 3d 20 73 65 74 20 6f 66 20 63 6f 6d 70   ┆nly);  content_set = set of comp┆
0x01e4a0…01e4c0             6f 6e 65 6e 74 73 3b 0a 0a 6c 61 62 65 6c 5f 73 74 61 74 65 73 20 3d 20 28 6f 75 74 73 69 64 65   ┆onents;  label_states = (outside┆
0x01e4c0…01e4e0             5f 73 63 6f 70 65 2c 20 69 6e 73 69 64 65 5f 73 63 6f 70 65 2c 20 68 69 64 64 65 6e 5f 62 79 5f   ┆_scope, inside_scope, hidden_by_┆
0x01e4e0…01e500             6c 6f 63 6b 5f 6f 72 5f 63 68 61 6e 6e 65 6c 29 3b 0a 0a 0c 0a 6e 61 6d 65 6e 6f 64 65 20 3d 20   ┆lock_or_channel);    namenode = ┆
0x01e500…01e520             70 61 63 6b 65 64 20 72 65 63 6f 72 64 0a 6e 65 78 74 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 20   ┆packed record nextname: nameptr ┆
0x01e520…01e540             20 20 20 20 20 3b 20 28 2a 20 75 73 65 64 20 74 6f 20 63 68 61 69 6e 20 6e 61 6d 65 73 20 6f 66   ┆     ; (* used to chain names of┆
0x01e540…01e560             20 73 61 6d 65 20 6c 65 76 65 6c 20 2a 29 0a 6e 61 6d 65 6b 69 6e 64 3a 20 63 6f 64 65 73 20 20   ┆ same level *) namekind: codes  ┆
0x01e560…01e580             20 20 20 20 20 20 3b 20 28 2a 20 6b 69 6e 64 20 6f 66 20 69 64 65 6e 74 69 66 69 65 72 3a 20 76   ┆      ; (* kind of identifier: v┆
0x01e580…01e5a0             61 72 2c 20 63 6f 6e 73 74 2c 20 66 75 6e 63 74 69 6f 6e 20 65 74 63 20 2a 29 0a 73 70 69 78 20   ┆ar, const, function etc *) spix ┆
0x01e5a0…01e5c0             20 20 20 3a 20 73 70 69 78 72 61 6e 67 65 20 20 20 20 3b 20 28 2a 20 73 70 65 6c 6c 69 6e 67 20   ┆   : spixrange    ; (* spelling ┆
0x01e5c0…01e5e0             69 6e 64 65 78 20 6f 66 20 69 64 65 6e 74 69 66 69 65 72 20 2a 29 0a 74 79 70 65 6e 61 6d 65 3a   ┆index of identifier *) typename:┆
0x01e5e0…01e600             20 6e 61 6d 65 70 74 72 20 20 20 20 20 20 3b 20 28 2a 20 70 6f 69 6e 74 73 20 74 6f 20 74 68 65   ┆ nameptr      ; (* points to the┆
0x01e600…01e620 (8, 0, 4)   20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 74 68 65 20 74 79 70 65 20 28 75 6e 6c 65 73 73 20 6e 61   ┆ namenode of the type (unless na┆
0x01e620…01e640             6d 65 6b 69 6e 64 20 3d 20 27 63 74 79 70 65 27 20 2a 29 0a 74 79 70 20 20 20 20 20 3a 20 74 79   ┆mekind = 'ctype' *) typ     : ty┆
0x01e640…01e660             70 65 70 74 72 20 20 20 20 20 20 3b 20 28 2a 20 6f 6e 6c 79 20 72 65 6c 65 76 61 6e 74 20 69 66   ┆peptr      ; (* only relevant if┆
0x01e660…01e680             20 6e 61 6d 65 6b 69 6e 64 20 3d 20 27 63 74 79 70 65 27 20 2a 29 0a 70 61 72 61 6d 73 20 20 3a   ┆ namekind = 'ctype' *) params  :┆
0x01e680…01e6a0             20 6e 61 6d 65 70 74 72 20 20 20 20 20 20 3b 20 28 2a 20 72 6f 75 74 69 6e 65 20 65 74 63 3a 20   ┆ nameptr      ; (* routine etc: ┆
0x01e6a0…01e6c0             66 69 72 73 74 20 66 6f 72 6d 61 6c 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 20 2a 29 0a 66   ┆first formal parameter name *) f┆
0x01e6c0…01e6e0             6f 72 77 61 72 64 5f 64 65 63 6c 3a 20 62 6f 6f 6c 65 61 6e 20 20 3b 20 28 2a 20 74 72 75 65 2c   ┆orward_decl: boolean  ; (* true,┆
0x01e6e0…01e700             20 77 68 65 6e 20 61 66 74 65 72 20 27 66 6f 72 77 61 72 64 27 20 2a 29 0a 65 78 74 65 72 6e 61   ┆ when after 'forward' *) externa┆
0x01e700…01e720             6c 5f 64 65 63 6c 3a 20 62 6f 6f 6c 65 61 6e 20 3b 20 28 2a 20 74 72 75 65 2c 20 77 68 65 6e 20   ┆l_decl: boolean ; (* true, when ┆
0x01e720…01e740             61 66 74 65 72 20 27 65 78 74 65 72 6e 61 6c 27 20 2a 29 0a 66 75 6e 63 5f 61 73 73 69 67 6e 65   ┆after 'external' *) func_assigne┆
0x01e740…01e760             64 3a 20 62 6f 6f 6c 65 61 6e 3b 20 20 28 2a 20 74 72 75 65 2c 20 77 68 65 6e 20 66 75 6e 63 76   ┆d: boolean;  (* true, when funcv┆
0x01e760…01e780             61 6c 20 69 73 20 75 73 65 64 20 2a 29 0a 75 73 65 64 6c 65 76 65 6c 3a 20 6e 61 6d 65 73 74 61   ┆al is used *) usedlevel: namesta┆
0x01e780…01e7a0             63 6b 70 74 72 20 20 3b 20 28 2a 20 6e 69 6c 6c 65 76 65 6c 2c 20 69 66 20 6e 65 76 65 72 20 75   ┆ckptr  ; (* nillevel, if never u┆
0x01e7a0…01e7c0             73 65 64 2c 20 6f 74 68 65 72 77 69 73 65 20 73 6f 6d 65 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29   ┆sed, otherwise some namelevel *)┆
0x01e7c0…01e7e0             0a 6e 69 78 3a 20 69 6e 74 65 67 65 72 3b 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 6e 61 6d   ┆ nix: integer;            (* nam┆
0x01e7e0…01e800             65 20 69 6e 64 65 78 2c 20 69 2e 65 2e 20 69 64 65 6e 74 69 66 69 63 61 74 69 6f 6e 20 6f 66 20   ┆e index, i.e. identification of ┆
0x01e800…01e820 (8, 0, 5)   74 68 65 20 6e 6f 64 65 20 61 73 20 70 61 73 73 34 20 77 69 6c 6c 20 6b 6e 6f 77 20 2a 29 0a 65   ┆the node as pass4 will know *) e┆
0x01e820…01e840             6e 64 3b 0a 0a 0a 0a 74 79 70 65 6e 6f 64 65 20 3d 20 70 61 63 6b 65 64 20 72 65 63 6f 72 64 0a   ┆nd;    typenode = packed record ┆
0x01e840…01e860             74 79 70 65 6b 69 6e 64 3a 20 63 6f 64 65 73 20 20 20 20 20 20 20 20 3b 20 28 2a 20 6b 69 6e 64   ┆typekind: codes        ; (* kind┆
0x01e860…01e880             20 6f 66 20 74 79 70 65 3a 20 73 75 62 72 61 6e 67 65 2c 20 61 72 72 61 79 20 65 74 63 20 2a 29   ┆ of type: subrange, array etc *)┆
0x01e880…01e8a0             0a 65 6d 69 74 74 65 64 3a 20 20 62 6f 6f 6c 65 61 6e 20 20 20 20 20 20 3b 20 28 2a 20 74 72 75   ┆ emitted:  boolean      ; (* tru┆
0x01e8a0…01e8c0             65 2c 20 77 68 65 6e 20 74 79 70 65 20 68 61 73 20 62 65 65 6e 20 65 6d 69 74 74 65 64 20 2a 29   ┆e, when type has been emitted *)┆
0x01e8c0…01e8e0             0a 70 61 63 6b 66 6c 61 67 3a 20 62 6f 6f 6c 65 61 6e 20 20 20 20 20 20 3b 20 28 2a 20 74 72 75   ┆ packflag: boolean      ; (* tru┆
0x01e8e0…01e900             65 2c 20 69 66 20 74 79 70 65 20 69 73 20 70 61 63 6b 65 64 20 2a 29 0a 63 6f 6e 74 65 6e 74 73   ┆e, if type is packed *) contents┆
0x01e900…01e920             3a 20 63 6f 6e 74 65 6e 74 5f 73 65 74 20 20 3b 20 28 2a 20 64 65 73 63 72 69 62 65 73 20 74 68   ┆: content_set  ; (* describes th┆
0x01e920…01e940             65 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 74 68 65 20 74 79 70 65 20 2a 29 0a 65 6c 65 6d   ┆e components of the type *) elem┆
0x01e940…01e960             65 6e 74 3a 20 6e 61 6d 65 70 74 72 20 20 20 20 20 20 20 3b 20 28 2a 20 64 65 70 65 6e 64 73 20   ┆ent: nameptr       ; (* depends ┆
0x01e960…01e980             6f 6e 20 27 74 79 70 65 6b 69 6e 64 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆on 'typekind':                  ┆
0x01e980…01e9a0             20 20 20 20 20 20 20 20 2d 20 20 20 20 73 63 61 6c 61 72 3a 20 66 69 72 73 74 20 73 63 61 6c 61   ┆        -    scalar: first scala┆
0x01e9a0…01e9c0             72 6e 61 6d 65 0a 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 2d   ┆rname                          -┆
0x01e9c0…01e9e0             20 20 20 20 72 65 63 6f 72 64 3a 20 66 69 72 73 74 20 66 69 65 6c 64 20 6e 61 6d 65 0a 20 20 20   ┆    record: first field name    ┆
0x01e9e0…01ea00             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 20 20 20 61 72 72 61 79   ┆                      -    array┆
0x01ea00…01ea20 (8, 0, 6)   20 3a 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20   ┆ : typename of elements         ┆
0x01ea20…01ea40             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 20 20 20 73 65 74 20 20 20 3a 20 74 79   ┆                 -    set   : ty┆
0x01ea40…01ea60             70 65 6e 61 6d 65 20 6f 66 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆pename of elements              ┆
0x01ea60…01ea80             20 20 20 20 20 20 20 20 20 20 20 20 2d 20 20 20 20 70 6f 6f 6c 20 20 3a 20 74 79 70 65 6e 61 6d   ┆            -    pool  : typenam┆
0x01ea80…01eaa0             65 20 6f 66 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆e of elements                   ┆
0x01eaa0…01eac0             20 20 20 20 20 20 20 2d 20 20 20 20 70 6f 69 6e 74 65 72 3a 20 74 79 70 65 6e 61 6d 65 20 6f 66   ┆       -    pointer: typename of┆
0x01eac0…01eae0             20 65 6c 65 6d 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ element                        ┆
0x01eae0…01eb00             20 20 2d 20 20 20 20 72 65 61 64 6f 6e 6c 79 3a 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 65 6c 65   ┆  -    readonly: typename of ele┆
0x01eb00…01eb20             6d 65 6e 74 0a 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 2d 20   ┆ment                          - ┆
0x01eb20…01eb40             20 20 20 61 6c 69 61 73 20 3a 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 61 6c 69 61 73 20 74 79 70   ┆   alias : typename of alias typ┆
0x01eb40…01eb60             65 0a 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 2a 29 0a 69 6e   ┆e                          *) in┆
0x01eb60…01eb80             64 65 78 3a 20 20 20 20 6e 61 6d 65 70 74 72 20 20 20 20 20 20 3b 20 28 2a 20 64 65 70 65 6e 64   ┆dex:    nameptr      ; (* depend┆
0x01eb80…01eba0             73 20 6f 6e 20 27 74 79 70 65 6b 69 6e 64 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆s on 'typekind':                ┆
0x01eba0…01ebc0             20 20 20 20 20 20 20 20 20 20 2d 20 20 20 20 73 75 62 72 61 6e 67 65 3a 20 74 79 70 65 6e 61 6d   ┆          -    subrange: typenam┆
0x01ebc0…01ebe0             65 20 6f 66 20 6c 69 6d 69 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆e of limits                     ┆
0x01ebe0…01ec00             20 20 20 20 20 2d 20 20 20 20 61 72 72 61 79 20 20 20 3a 20 74 79 70 65 6e 61 6d 65 20 6f 66 20   ┆     -    array   : typename of ┆
0x01ec00…01ec20 (8, 0, 7)   69 6e 64 65 78 0a 2d 20 20 20 20 61 6c 69 61 73 20 20 20 3a 20 28 20 63 6f 72 72 65 73 70 6f 6e   ┆index -    alias   : ( correspon┆
0x01ec20…01ec40             64 69 6e 67 20 74 6f 20 74 68 65 20 61 6c 69 61 73 20 74 79 70 65 20 29 0a 20 20 20 20 20 20 20   ┆ding to the alias type )        ┆
0x01ec40…01ec60             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0a 73 75 62 65 78 70 72 3a 20 20 6f   ┆                  *) subexpr:  o┆
0x01ec60…01ec80             70 61 6e 64 70 74 72 20 20 20 20 20 3b 20 28 2a 20 64 65 70 65 6e 64 73 20 6f 6e 20 27 74 79 70   ┆pandptr     ; (* depends on 'typ┆
0x01ec80…01eca0             65 6b 69 6e 64 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ekind':                         ┆
0x01eca0…01ecc0             20 2d 20 20 20 20 73 75 62 72 61 6e 67 65 3a 20 70 6f 69 6e 74 65 72 20 74 6f 20 27 62 6f 74 68   ┆ -    subrange: pointer to 'both┆
0x01ecc0…01ece0             27 20 65 78 70 72 65 73 73 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆' expressions                   ┆
0x01ece0…01ed00             20 20 20 20 20 20 20 2d 20 20 20 20 70 6f 6f 6c 3a 20 20 20 20 20 70 6f 69 6e 74 65 72 20 74 6f   ┆       -    pool:     pointer to┆
0x01ed00…01ed20             20 63 61 72 64 69 6e 61 6c 69 74 79 2d 65 78 70 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ cardinality-expr               ┆
0x01ed20…01ed40             20 20 20 20 20 20 20 20 20 20 20 2a 29 0a 65 6e 64 3b 0a 0a 0c 0a 6c 61 62 65 6c 6e 6f 64 65 20   ┆           *) end;    labelnode ┆
0x01ed40…01ed60             3d 20 70 61 63 6b 65 64 20 72 65 63 6f 72 64 0a 70 72 65 76 6c 61 62 65 6c 20 3a 20 6c 61 62 65   ┆= packed record prevlabel : labe┆
0x01ed60…01ed80             6c 70 74 72 20 20 20 3b 20 28 2a 20 75 73 65 64 20 74 6f 20 63 68 61 69 6e 20 74 6f 20 6f 74 68   ┆lptr   ; (* used to chain to oth┆
0x01ed80…01eda0             65 72 20 6c 61 62 65 6c 20 64 65 66 27 73 20 2a 29 0a 6c 61 62 65 6c 6e 61 6d 65 20 3a 20 6e 61   ┆er label def's *) labelname : na┆
0x01eda0…01edc0             6d 65 70 74 72 20 20 20 20 3b 20 28 2a 20 70 6f 69 6e 74 73 20 74 6f 20 74 68 65 20 6c 61 62 65   ┆meptr    ; (* points to the labe┆
0x01edc0…01ede0             6c 2d 64 65 63 6c 61 72 61 74 69 6f 6e 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 0a 6c 61 62 65 6c 73   ┆l-declaration namenode *) labels┆
0x01ede0…01ee00             63 6f 70 65 3a 20 6c 61 62 65 6c 72 61 6e 67 65 20 3b 20 28 2a 20 73 63 6f 70 65 20 6e 75 6d 62   ┆cope: labelrange ; (* scope numb┆
0x01ee00…01ee20 (8, 0, 8)   65 72 20 6f 66 20 6c 61 62 65 6c 20 2a 29 0a 68 69 64 64 65 6e 73 63 6f 70 65 3a 20 6c 61 62 65   ┆er of label *) hiddenscope: labe┆
0x01ee20…01ee40             6c 72 61 6e 67 65 3b 20 28 2a 20 73 63 6f 70 65 6e 75 6d 62 65 72 20 6f 66 20 6c 6f 63 6b 2d 6f   ┆lrange; (* scopenumber of lock-o┆
0x01ee40…01ee60             72 2d 63 68 61 6e 6e 65 6c 20 77 68 69 63 68 20 68 69 64 65 73 20 74 68 69 73 20 6c 61 62 65 6c   ┆r-channel which hides this label┆
0x01ee60…01ee80             20 2a 29 0a 6c 61 62 65 6c 73 74 61 74 65 3a 20 6c 61 62 65 6c 5f 73 74 61 74 65 73 3b 20 28 2a   ┆ *) labelstate: label_states; (*┆
0x01ee80…01eea0             20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 27 76 69 73 61 62 69 6c 69 74 79 27 20   ┆ used to determine 'visability' ┆
0x01eea0…01eec0             2a 29 0a 6d 75 6c 74 66 6c 61 67 20 20 3a 20 62 6f 6f 6c 65 61 6e 20 20 20 20 3b 20 28 2a 20 74   ┆*) multflag  : boolean    ; (* t┆
0x01eec0…01eee0             72 75 65 2c 20 69 66 20 6d 75 6c 74 69 70 6c 65 20 64 65 66 69 6e 65 64 20 2a 29 0a 75 73 65 64   ┆rue, if multiple defined *) used┆
0x01eee0…01ef00             5f 66 72 6f 6d 5f 69 6e 6e 65 72 5f 72 6f 75 74 69 6e 65 73 3a 20 62 6f 6f 6c 65 61 6e 3b 20 28   ┆_from_inner_routines: boolean; (┆
0x01ef00…01ef20             2a 20 74 72 75 65 2c 20 69 66 20 75 73 65 64 20 66 72 6f 6d 20 69 6e 6e 65 72 20 72 6f 75 74 69   ┆* true, if used from inner routi┆
0x01ef20…01ef40             6e 65 73 20 2a 29 0a 6c 61 62 65 6c 73 70 69 78 20 3a 20 73 70 69 78 72 61 6e 67 65 20 20 3b 20   ┆nes *) labelspix : spixrange  ; ┆
0x01ef40…01ef60             28 2a 20 73 70 65 6c 6c 69 6e 67 20 69 6e 64 65 78 20 6f 66 20 6c 61 62 65 6c 20 2a 29 0a 65 6e   ┆(* spelling index of label *) en┆
0x01ef60…01ef80             64 3b 0a 0a 0a 0a 6f 70 61 6e 64 6e 6f 64 65 20 3d 20 70 61 63 6b 65 64 20 72 65 63 6f 72 64 0a   ┆d;    opandnode = packed record ┆
0x01ef80…01efa0             6f 70 5f 70 61 63 6b 66 6c 61 67 3a 20 62 6f 6f 6c 65 61 6e 20 20 20 3b 20 28 2a 20 74 72 75 65   ┆op_packflag: boolean   ; (* true┆
0x01efa0…01efc0             2c 20 69 66 20 74 68 65 20 6f 70 61 6e 64 20 69 73 20 70 61 63 6b 65 64 20 2a 29 0a 6f 70 63 6f   ┆, if the opand is packed *) opco┆
0x01efc0…01efe0             64 65 20 20 20 20 20 3a 20 63 6f 64 65 73 20 20 20 20 20 3b 20 28 2a 20 6b 69 6e 64 20 6f 66 20   ┆de     : codes     ; (* kind of ┆
0x01efe0…01f000             6f 70 65 72 61 6e 64 2f 6f 70 65 72 61 74 6f 72 20 2a 29 0a 6f 70 5f 6c 69 6e 65 6e 6f 20 20 3a   ┆operand/operator *) op_lineno  :┆
0x01f000…01f020 (8, 0, 9)   20 69 6e 74 65 67 65 72 20 20 20 3b 20 28 2a 20 6c 69 6e 65 20 6e 75 6d 62 65 72 20 2a 29 0a 6c   ┆ integer   ; (* line number *) l┆
0x01f020…01f040             65 66 74 20 20 20 20 20 20 20 3a 20 6f 70 61 6e 64 70 74 72 20 20 3b 20 28 2a 20 6c 65 66 74 20   ┆eft       : opandptr  ; (* left ┆
0x01f040…01f060             73 75 62 74 72 65 65 20 2a 29 0a 72 69 67 74 68 20 20 20 20 20 20 3a 20 6f 70 61 6e 64 70 74 72   ┆subtree *) rigth      : opandptr┆
0x01f060…01f080             20 20 3b 20 28 2a 20 72 69 67 74 68 20 73 75 62 74 72 65 65 20 2a 29 0a 6e 65 78 74 20 20 20 20   ┆  ; (* rigth subtree *) next    ┆
0x01f080…01f0a0             20 20 20 3a 20 6f 70 61 6e 64 70 74 72 20 20 3b 20 28 2a 20 6f 70 61 6e 64 20 74 6f 20 74 68 65   ┆   : opandptr  ; (* opand to the┆
0x01f0a0…01f0c0             20 6c 65 66 74 20 6f 66 20 72 65 64 75 63 65 64 20 74 72 65 65 20 2a 29 0a 6f 70 5f 6e 61 6d 65   ┆ left of reduced tree *) op_name┆
0x01f0c0…01f0e0             20 20 20 20 3a 20 6e 61 6d 65 70 74 72 20 20 20 3b 20 28 2a 20 6e 61 6d 65 20 6f 66 20 6f 70 65   ┆    : nameptr   ; (* name of ope┆
0x01f0e0…01f100             72 61 6e 64 2c 20 69 66 20 27 69 64 27 20 2a 29 0a 6f 70 5f 76 61 6c 75 65 20 20 20 3a 20 73 74   ┆rand, if 'id' *) op_value   : st┆
0x01f100…01f120             72 69 6e 67 70 74 72 20 3b 20 28 2a 20 72 65 6c 65 76 61 6e 74 2c 20 69 66 20 27 6c 69 74 65 72   ┆ringptr ; (* relevant, if 'liter┆
0x01f120…01f140             61 6c 27 20 2a 29 0a 6f 70 5f 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 20 20 20 3b 20   ┆al' *) op_typename: nameptr   ; ┆
0x01f140…01f160             28 2a 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 72 65 64 75 63 65 64 20 74 72 65 65 20 2a 29 0a 65   ┆(* typename of reduced tree *) e┆
0x01f160…01f180             6e 64 3b 0a 0a 0a 0a 0a 6e 61 6d 65 73 74 61 63 6b 6e 6f 64 65 20 3d 20 72 65 63 6f 72 64 0a 66   ┆nd;     namestacknode = record f┆
0x01f180…01f1a0             6f 72 6d 65 72 5f 6c 65 76 65 6c 2c 20 20 28 2a 20 70 75 73 68 64 6f 77 6e 20 73 74 61 63 6b 20   ┆ormer_level,  (* pushdown stack ┆
0x01f1a0…01f1c0             6f 66 20 6c 65 76 65 6c 20 68 65 61 64 73 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 73   ┆of level heads is implemented as┆
0x01f1c0…01f1e0             20 61 20 64 6f 75 62 6c 65 20 2a 29 0a 6e 65 78 74 5f 6c 65 76 65 6c 3a 20 6e 61 6d 65 73 74 61   ┆ a double *) next_level: namesta┆
0x01f1e0…01f200             63 6b 70 74 72 3b 20 28 2a 20 63 68 61 69 6e 65 64 20 6c 69 73 74 20 6f 66 20 6e 61 6d 65 73 74   ┆ckptr; (* chained list of namest┆
0x01f200…01f220 (8, 0, 10)  61 63 6b 6e 6f 64 65 73 20 2a 29 0a 6c 65 76 65 6c 5f 6e 75 6d 62 65 72 3a 20 69 6e 74 65 67 65   ┆acknodes *) level_number: intege┆
0x01f220…01f240             72 3b 0a 66 69 72 73 74 6e 61 6d 65 20 3a 20 6e 61 6d 65 70 74 72 20 20 20 20 3b 20 28 2a 20 70   ┆r; firstname : nameptr    ; (* p┆
0x01f240…01f260             6f 69 6e 74 73 20 74 6f 20 66 69 72 73 74 20 6e 61 6d 65 20 6f 66 20 61 20 6c 65 76 65 6c 20 2a   ┆oints to first name of a level *┆
0x01f260…01f280             29 0a 6c 61 73 74 6e 61 6d 65 20 20 3a 20 6e 61 6d 65 70 74 72 20 20 20 20 3b 20 28 2a 20 70 6f   ┆) lastname  : nameptr    ; (* po┆
0x01f280…01f2a0             69 6e 74 73 20 74 6f 20 6c 61 73 74 20 20 6e 61 6d 65 20 6f 66 20 61 20 6c 65 76 65 6c 20 2a 29   ┆ints to last  name of a level *)┆
0x01f2a0…01f2c0             0a 6e 61 6d 65 6c 69 73 74 6b 69 6e 64 3a 20 6c 65 76 65 6c 6b 69 6e 64 73 3b 20 28 2a 20 64 65   ┆ namelistkind: levelkinds; (* de┆
0x01f2c0…01f2e0             66 69 6e 65 73 20 6b 69 6e 64 20 6f 66 20 6c 69 73 74 20 2a 29 0a 77 69 74 68 6e 61 6d 65 20 20   ┆fines kind of list *) withname  ┆
0x01f2e0…01f300             3a 20 6e 61 6d 65 70 74 72 20 20 20 20 3b 20 28 2a 20 68 6f 6c 64 73 20 74 68 65 20 6e 61 6d 65   ┆: nameptr    ; (* holds the name┆
0x01f300…01f320             20 6f 66 20 74 68 65 20 70 73 65 75 64 6f 20 76 61 72 20 2a 29 0a 65 6e 64 3b 0a 0a 70 75 73 68   ┆ of the pseudo var *) end;  push┆
0x01f320…01f340             6e 61 6d 65 5f 6e 6f 64 65 3d 20 72 65 63 6f 72 64 0a 70 75 73 68 5f 63 68 61 69 6e 2c 20 0a 70   ┆name_node= record push_chain,  p┆
0x01f340…01f360             6f 70 5f 63 68 61 69 6e 3a 20 70 75 73 68 6e 61 6d 65 5f 70 74 72 3b 0a 70 75 73 68 65 64 5f 6e   ┆op_chain: pushname_ptr; pushed_n┆
0x01f360…01f380             61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 65 6e 64 3b 0a 0a 0a 73 74 72 69 6e 67 6e 6f 64 65 20   ┆ame: nameptr; end;   stringnode ┆
0x01f380…01f3a0             3d 20 70 61 63 6b 65 64 20 72 65 63 6f 72 64 0a 6e 65 78 74 73 74 72 20 20 3a 20 73 74 72 69 6e   ┆= packed record nextstr  : strin┆
0x01f3a0…01f3c0             67 70 74 72 20 20 20 3b 20 28 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 6e 65 78 74 20 73 74 72 69   ┆gptr   ; (* pointer to next stri┆
0x01f3c0…01f3e0             6e 67 20 70 6f 72 74 69 6f 6e 20 2a 29 0a 73 74 72 69 6e 67 6c 67 74 3a 20 69 6e 74 65 67 65 72   ┆ng portion *) stringlgt: integer┆
0x01f3e0…01f400             20 20 20 20 20 3b 20 28 2a 20 6c 65 6e 67 74 68 20 6f 66 20 72 65 6d 61 69 6e 69 6e 67 20 70 61   ┆     ; (* length of remaining pa┆
0x01f400…01f420 (8, 0, 11)  72 74 20 2a 29 0a 73 74 72 3a 20 70 61 63 6b 65 64 20 61 72 72 61 79 20 5b 20 73 74 72 5f 69 6e   ┆rt *) str: packed array [ str_in┆
0x01f420…01f440             64 65 78 20 5d 20 6f 66 20 63 68 61 72 3b 20 28 2a 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 70   ┆dex ] of char; (* contains the p┆
0x01f440…01f460             6f 72 74 69 6f 6e 20 2a 29 0a 65 6e 64 3b 0a 0a 0a 0a 63 61 6c 6c 6e 6f 64 65 20 3d 20 70 61 63   ┆ortion *) end;    callnode = pac┆
0x01f460…01f480             6b 65 64 20 72 65 63 6f 72 64 0a 28 2a 20 74 68 65 20 72 65 63 6f 72 64 20 68 6f 6c 64 73 20 73   ┆ked record (* the record holds s┆
0x01f480…01f4a0             74 61 63 6b 65 64 20 76 61 6c 75 65 73 20 6f 66 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65   ┆tacked values of global variable┆
0x01f4a0…01f4c0             73 20 2a 29 0a 63 61 6c 6c 6b 69 6e 64 20 20 20 20 20 20 3a 20 63 6f 64 65 73 3b 20 20 20 20 20   ┆s *) callkind      : codes;     ┆
0x01f4c0…01f4e0             20 28 2a 20 68 6f 6c 64 73 3a 20 27 61 63 74 6b 69 6e 64 27 20 2a 29 0a 63 61 6c 6c 66 6f 72 6d   ┆ (* holds: 'actkind' *) callform┆
0x01f4e0…01f500             61 6c 20 20 20 20 3a 20 6e 61 6d 65 70 74 72 3b 20 20 20 20 28 2a 20 68 6f 6c 64 73 3a 20 27 63   ┆al    : nameptr;    (* holds: 'c┆
0x01f500…01f520             75 72 66 6f 72 6d 61 6c 27 20 2a 29 0a 63 61 6c 6c 6f 77 6e 65 72 20 20 20 20 20 3a 20 6e 61 6d   ┆urformal' *) callowner     : nam┆
0x01f520…01f540             65 70 74 72 3b 20 20 20 20 28 2a 20 68 6f 6c 64 73 3a 20 27 61 72 67 6c 69 73 74 5f 6f 77 6e 65   ┆eptr;    (* holds: 'arglist_owne┆
0x01f540…01f560             72 27 20 2a 29 0a 63 61 6c 6c 5f 61 66 74 65 72 66 75 6e 63 3a 20 62 6f 6f 6c 65 61 6e 3b 20 20   ┆r' *) call_afterfunc: boolean;  ┆
0x01f560…01f580             20 20 28 2a 20 68 6f 6c 64 73 3a 20 27 61 66 74 65 72 5f 66 75 6e 63 63 61 6c 6c 27 20 2a 29 0a   ┆  (* holds: 'after_funccall' *) ┆
0x01f580…01f5a0             63 61 6c 6c 5f 66 75 6e 63 74 65 6d 70 20 3a 20 6e 61 6d 65 70 74 72 3b 20 20 20 20 20 28 2a 20   ┆call_functemp : nameptr;     (* ┆
0x01f5a0…01f5c0             68 6f 6c 64 73 3a 20 27 66 75 6e 63 74 65 6d 70 76 61 72 27 20 2a 29 0a 63 61 6c 6c 5f 63 6f 75   ┆holds: 'functempvar' *) call_cou┆
0x01f5c0…01f5e0             6e 74 70 72 6f 63 65 73 73 3a 20 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 68 6f 6c 64 73 3a 20 27   ┆ntprocess: integer;  (* holds: '┆
0x01f5e0…01f600             63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 27 20 2a 29 0a 65 6e 64 3b 0a 0a 76 61 72   ┆count_processparam' *) end;  var┆
0x01f600…01f620 (8, 0, 12)  0a 69 6e 63 6f 64 65 5f 66 69 6c 70 74 72 20 3a 20 5e 20 66 69 6c 72 65 63 3b 0a 69 6e 63 6f 64   ┆ incode_filptr : ^ filrec; incod┆
0x01f620…01f640             65 5f 66 69 6c 65 69 78 20 3a 20 69 6e 74 65 67 65 72 3b 0a 69 6e 73 79 6d 62 5f 66 69 6c 70 74   ┆e_fileix : integer; insymb_filpt┆
0x01f640…01f660             72 20 3a 20 5e 20 66 69 6c 72 65 63 3b 0a 69 6e 73 79 6d 62 5f 66 69 6c 65 69 78 20 3a 20 69 6e   ┆r : ^ filrec; insymb_fileix : in┆
0x01f660…01f680             74 65 67 65 72 3b 0a 6f 75 74 63 6f 64 65 5f 66 69 6c 70 74 72 3a 20 5e 20 66 69 6c 72 65 63 3b   ┆teger; outcode_filptr: ^ filrec;┆
0x01f680…01f6a0             0a 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69 78 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 63 75 72 5f 6c   ┆ outcode_fileix: integer;  cur_l┆
0x01f6a0…01f6c0             69 6e 65 6e 6f 3a 20 69 6e 74 65 67 65 72 3b 20 20 20 28 2a 20 63 75 72 72 65 6e 74 20 6c 69 6e   ┆ineno: integer;   (* current lin┆
0x01f6c0…01f6e0             65 20 6e 75 6d 62 65 72 20 66 72 6f 6d 20 70 61 73 73 31 66 69 6c 65 20 2a 29 0a 6c 69 6e 65 6e   ┆e number from pass1file *) linen┆
0x01f6e0…01f700             6f 20 20 20 20 3a 20 69 6e 74 65 67 65 72 3b 20 20 20 28 2a 20 6c 61 73 74 20 72 65 61 64 20 6c   ┆o    : integer;   (* last read l┆
0x01f700…01f720             69 6e 65 6e 6f 20 66 72 6f 6d 20 70 61 73 73 31 20 2a 29 0a 63 75 72 5f 6f 70 61 6e 64 6e 6f 3a   ┆ineno from pass1 *) cur_opandno:┆
0x01f720…01f740             20 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 6e 75 6d 62 65 72 20 6f 66 20 6f 70 65 72 61 6e 64 73   ┆ integer;  (* number of operands┆
0x01f740…01f760             20 6f 6e 20 63 75 72 72 65 6e 74 20 6c 69 6e 65 20 2a 29 0a 65 6d 69 74 5f 6c 69 6e 65 6e 6f 3a   ┆ on current line *) emit_lineno:┆
0x01f760…01f780             69 6e 74 65 67 65 72 3b 20 20 20 28 2a 20 63 75 72 72 65 6e 74 20 65 6d 69 74 74 65 64 20 6c 69   ┆integer;   (* current emitted li┆
0x01f780…01f7a0             6e 65 6e 6f 20 69 6e 20 70 61 73 73 33 66 69 6c 65 20 2a 29 0a 63 75 72 5f 70 72 69 6e 74 6e 61   ┆neno in pass3file *) cur_printna┆
0x01f7a0…01f7c0             6d 65 2c 20 20 20 20 20 20 20 20 20 28 2a 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 74 68 65 20 66   ┆me,         (* position in the f┆
0x01f7c0…01f7e0             69 6c 65 20 6f 66 20 6e 61 6d 65 73 2c 20 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ile of names, *)                ┆
0x01f7e0…01f800             20 20 20 20 20 20 20 20 28 2a 20 75 73 65 64 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f 6e 20 77   ┆        (* used in conjunction w┆
0x01f800…01f820 (8, 0, 13)  69 74 68 20 65 72 72 6f 72 20 72 65 70 6f 72 74 73 20 2a 29 0a 65 72 72 6f 72 73 70 69 78 2c 20   ┆ith error reports *) errorspix, ┆
0x01f820…01f840             20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 69 66 20 3c 3e 2d 31 20 74 68 65 6e 20 73 70 69 78   ┆            (* if <>-1 then spix┆
0x01f840…01f860             20 6f 66 20 6e 61 6d 65 20 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ of name *)                     ┆
0x01f860…01f880             20 20 20 28 2a 20 69 6e 76 6f 6c 76 65 64 20 69 6e 20 65 72 72 6f 72 20 72 65 70 6f 72 74 20 2a   ┆   (* involved in error report *┆
0x01f880…01f8a0             29 0a 6d 61 78 6c 61 62 65 6c 73 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 6c 61 62 65   ┆) maxlabels,             (* labe┆
0x01f8a0…01f8c0             6c 20 63 6f 6d 70 6c 65 78 69 74 79 20 63 6f 75 6e 74 65 72 20 2a 29 0a 6d 61 78 73 74 72 69 6e   ┆l complexity counter *) maxstrin┆
0x01f8c0…01f8e0             67 73 2c 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 73 74 72 69 6e 67 20 6e 6f 64 65 20 63 6f   ┆gs,            (* string node co┆
0x01f8e0…01f900             6d 70 6c 65 78 69 74 79 20 63 6f 75 6e 74 65 72 20 2a 29 0a 6d 61 78 6f 70 61 6e 64 73 2c 20 20   ┆mplexity counter *) maxopands,  ┆
0x01f900…01f920             20 20 20 20 20 20 20 20 20 20 20 28 2a 20 65 78 70 72 65 73 73 69 6f 6e 20 63 6f 6d 70 6c 65 78   ┆           (* expression complex┆
0x01f920…01f940             69 74 79 20 63 6f 75 6e 74 65 72 20 2a 29 0a 6d 61 78 74 79 70 65 73 2c 20 20 20 20 20 20 20 20   ┆ity counter *) maxtypes,        ┆
0x01f940…01f960             20 20 20 20 20 20 28 2a 20 74 79 70 65 20 6e 6f 64 65 20 63 6f 6d 70 6c 65 78 69 74 79 20 63 6f   ┆      (* type node complexity co┆
0x01f960…01f980             75 6e 74 65 72 20 2a 29 0a 6d 61 78 6e 61 6d 65 73 74 61 63 6b 6c 65 76 65 6c 73 2c 20 20 20 20   ┆unter *) maxnamestacklevels,    ┆
0x01f980…01f9a0             28 2a 20 6e 61 6d 65 20 6c 65 76 65 6c 20 63 6f 6d 70 6c 65 78 69 74 79 20 63 6f 75 6e 74 65 72   ┆(* name level complexity counter┆
0x01f9a0…01f9c0             20 2a 29 0a 6d 61 78 70 75 73 68 6e 61 6d 65 73 2c 20 20 20 20 20 20 20 20 20 20 28 2a 20 70 75   ┆ *) maxpushnames,          (* pu┆
0x01f9c0…01f9e0             73 68 6e 61 6d 65 20 73 74 61 63 6b 20 64 65 70 74 68 20 2a 29 0a 6d 61 78 6e 69 78 3a 20 20 20   ┆shname stack depth *) maxnix:   ┆
0x01f9e0…01fa00             20 20 69 6e 74 65 67 65 72 3b 20 20 20 28 2a 20 68 69 67 68 65 73 74 20 6e 69 78 20 69 73 20 74   ┆  integer;   (* highest nix is t┆
0x01fa00…01fa20 (8, 0, 14)  6f 6c 64 20 70 61 73 73 34 20 66 6f 72 20 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆old pass4 for *)                ┆
0x01fa20…01fa40             20 20 20 20 20 20 20 20 28 2a 20 64 69 6d 65 6e 73 69 6f 6e 69 6e 67 20 6f 66 20 6e 61 6d 65 73   ┆        (* dimensioning of names┆
0x01fa40…01fa60             74 72 75 63 74 75 72 65 20 2a 29 0a 6e 69 6c 6e 61 6d 65 2c 20 20 20 20 20 20 20 20 20 20 20 20   ┆tructure *) nilname,            ┆
0x01fa60…01fa80             20 20 20 28 2a 20 64 75 6d 6d 79 20 73 74 6f 70 20 6d 61 72 6b 20 2a 29 0a 63 75 72 6e 61 6d 65   ┆   (* dummy stop mark *) curname┆
0x01fa80…01faa0             3a 20 20 20 20 6e 61 6d 65 70 74 72 3b 20 20 20 28 2a 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 20   ┆:    nameptr;   (* current name ┆
0x01faa0…01fac0             6e 6f 64 65 20 2a 29 0a 63 75 72 5f 72 6f 75 74 69 6e 65 3a 6e 61 6d 65 70 74 72 3b 20 20 20 28   ┆node *) cur_routine:nameptr;   (┆
0x01fac0…01fae0             2a 20 63 75 72 72 65 6e 74 20 72 6f 75 74 69 6e 65 20 2a 29 0a 63 75 72 5f 74 79 70 65 6e 61 6d   ┆* current routine *) cur_typenam┆
0x01fae0…01fb00             65 3a 20 6e 61 6d 65 70 74 72 3b 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 63 75 72 72 65   ┆e: nameptr; (* namenode of curre┆
0x01fb00…01fb20             6e 74 20 74 79 70 65 20 2a 29 0a 6e 69 6c 74 79 70 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆nt type *) niltype,             ┆
0x01fb20…01fb40             20 20 28 2a 20 64 75 6d 6d 79 20 69 6e 64 65 78 20 69 6e 20 27 74 79 70 65 73 27 20 2a 29 0a 63   ┆  (* dummy index in 'types' *) c┆
0x01fb40…01fb60             75 72 5f 74 79 70 65 6e 6f 64 65 3a 20 74 79 70 65 70 74 72 3b 20 28 2a 20 63 6f 72 72 65 73 70   ┆ur_typenode: typeptr; (* corresp┆
0x01fb60…01fb80             6f 6e 64 69 6e 67 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 63 75 72 5f 62 6c 6f 63 6b 6e 6f 3a 20   ┆onding typenode *) cur_blockno: ┆
0x01fb80…01fba0             69 6e 74 65 67 65 72 3b 20 20 28 2a 20 6c 65 78 69 63 6f 67 72 61 70 68 69 63 61 6c 20 6c 65 76   ┆integer;  (* lexicographical lev┆
0x01fba0…01fbc0             65 6c 20 2a 29 0a 63 75 72 5f 63 6f 6e 74 65 78 74 5f 6e 6f 20 3a 20 69 6e 74 65 67 65 72 3b 20   ┆el *) cur_context_no : integer; ┆
0x01fbc0…01fbe0             20 28 2a 20 2d 31 20 69 6e 20 70 72 6f 63 65 73 73 2c 20 6f 74 68 65 72 77 69 73 65 20 74 68 65   ┆ (* -1 in process, otherwise the┆
0x01fbe0…01fc00             20 63 6f 6e 74 65 78 74 20 6e 75 6d 62 65 72 2c 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ context number,*)              ┆
0x01fc00…01fc20 (8, 0, 15)  20 20 20 20 20 20 20 20 20 20 28 2a 20 75 73 65 64 20 69 6e 20 65 72 72 6f 72 20 72 65 70 6f 72   ┆          (* used in error repor┆
0x01fc20…01fc40             74 69 6e 67 20 2a 29 0a 63 75 72 5f 6c 61 62 65 6c 73 63 6f 70 65 3a 20 6c 61 62 65 6c 72 61 6e   ┆ting *) cur_labelscope: labelran┆
0x01fc40…01fc60             67 65 3b 20 28 2a 20 75 70 64 61 74 65 64 20 62 79 3a 20 62 65 67 69 6e 2f 65 6e 64 20 6c 61 62   ┆ge; (* updated by: begin/end lab┆
0x01fc60…01fc80             65 6c 20 73 63 6f 70 65 20 2a 29 0a 77 69 74 68 76 61 72 5f 73 70 69 78 3a 20 69 6e 74 65 67 65   ┆el scope *) withvar_spix: intege┆
0x01fc80…01fca0             72 3b 20 28 2a 20 73 70 69 78 20 6f 66 20 77 69 74 68 76 61 72 20 2a 29 0a 77 69 74 68 5f 6e 61   ┆r; (* spix of withvar *) with_na┆
0x01fca0…01fcc0             6d 65 6b 69 6e 64 2c 20 20 20 20 20 20 20 20 20 28 2a 20 75 70 64 61 74 65 64 20 62 79 20 66 69   ┆mekind,         (* updated by fi┆
0x01fcc0…01fce0             6e 64 20 77 69 74 68 20 6e 61 6d 65 6b 69 6e 64 20 28 20 6f 6e 20 77 69 74 68 76 61 72 20 29 20   ┆nd with namekind ( on withvar ) ┆
0x01fce0…01fd00             2a 29 0a 63 75 72 5f 6e 61 6d 65 6b 69 6e 64 3a 20 63 6f 64 65 73 3b 20 20 20 28 2a 20 75 70 64   ┆*) cur_namekind: codes;   (* upd┆
0x01fd00…01fd20             61 74 65 64 20 62 79 20 27 64 65 63 6c 61 72 61 74 69 6f 6e 27 20 61 6e 64 20 27 6e 65 77 74 79   ┆ated by 'declaration' and 'newty┆
0x01fd20…01fd40             70 65 27 20 2a 29 0a 72 65 63 74 79 70 65 3a 20 63 6f 64 65 73 3b 20 20 20 20 20 20 20 20 28 2a   ┆pe' *) rectype: codes;        (*┆
0x01fd40…01fd60             20 72 65 63 6f 72 64 20 74 79 70 65 20 6f 66 20 63 75 72 72 65 6e 74 20 69 6e 70 75 74 2d 72 65   ┆ record type of current input-re┆
0x01fd60…01fd80             63 6f 72 64 20 2a 29 0a 6c 65 76 65 6c 6b 69 6e 64 3a 20 6c 65 76 65 6c 6b 69 6e 64 73 3b 20 28   ┆cord *) levelkind: levelkinds; (┆
0x01fd80…01fda0             2a 20 6b 69 6e 64 20 6f 66 20 28 66 75 74 75 72 65 29 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a   ┆* kind of (future) namelevel *) ┆
0x01fda0…01fdc0             63 75 72 5f 64 79 6e 5f 76 61 72 5f 6c 65 76 65 6c 2c 20 20 20 20 20 28 2a 20 68 69 67 68 65 73   ┆cur_dyn_var_level,     (* highes┆
0x01fdc0…01fde0             74 20 6c 65 76 65 6c 20 61 6c 6c 6f 77 65 64 20 66 6f 72 20 75 73 65 20 6f 66 20 76 61 72 69 61   ┆t level allowed for use of varia┆
0x01fde0…01fe00             62 6c 65 73 20 2a 29 0a 6c 6f 77 65 73 74 6c 65 76 65 6c 2c 20 20 20 20 20 20 20 20 20 20 20 28   ┆bles *) lowestlevel,           (┆
0x01fe00…01fe20 (8, 1, 1)   2a 20 6f 75 74 65 72 6d 6f 73 74 20 6c 65 76 65 6c 20 61 74 20 61 6c 6c 20 2a 29 0a 6c 61 73 74   ┆* outermost level at all *) last┆
0x01fe20…01fe40             67 6c 6f 62 61 6c 6c 65 76 65 6c 3a 20 6e 61 6d 65 73 74 61 63 6b 70 74 72 3b 20 28 2a 20 69 64   ┆globallevel: namestackptr; (* id┆
0x01fe40…01fe60             65 6e 74 69 66 69 65 73 20 6c 61 73 74 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 6c 65 76 65 6c 20   ┆entifies last environment level ┆
0x01fe60…01fe80             2a 29 0a 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c 3a 20 6e 61 6d 65 73 74 61 63 6b 70   ┆*) processparamlevel: namestackp┆
0x01fe80…01fea0             74 72 3b 20 28 2a 20 75 73 65 64 20 77 68 65 6e 20 73 65 61 72 63 68 69 6e 67 20 69 64 65 6e 74   ┆tr; (* used when searching ident┆
0x01fea0…01fec0             69 66 69 65 72 73 20 2a 29 0a 63 75 72 70 75 73 68 6e 61 6d 65 3a 20 70 75 73 68 6e 61 6d 65 5f   ┆ifiers *) curpushname: pushname_┆
0x01fec0…01fee0             70 74 72 3b 20 28 2a 20 63 75 72 72 65 6e 74 20 74 6f 70 20 65 6c 65 6d 65 6e 74 20 6f 66 20 70   ┆ptr; (* current top element of p┆
0x01fee0…01ff00             75 73 68 6e 61 6d 65 20 73 74 61 63 6b 20 2a 29 0a 63 61 6c 6c 69 6e 64 65 78 20 20 20 20 3a 20   ┆ushname stack *) callindex    : ┆
0x01ff00…01ff20             63 61 6c 6c 72 61 6e 67 65 3b 20 28 2a 20 69 6e 64 65 78 20 69 6e 20 63 61 6c 6c 73 20 2a 29 0a   ┆callrange; (* index in calls *) ┆
0x01ff20…01ff40             0a 28 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 76 61 72 69 61 62 6c 65 73 20 61 72 65 20   ┆ (* the following variables are ┆
0x01ff40…01ff60             72 65 73 75 6c 74 73 20 66 72 6f 6d 20 27 73 65 61 72 63 68 73 70 69 78 27 20 65 74 63 20 2a 29   ┆results from 'searchspix' etc *)┆
0x01ff60…01ff80             0a 72 65 74 72 69 65 76 65 64 5f 6c 65 76 65 6c 3a 20 6e 61 6d 65 73 74 61 63 6b 70 74 72 3b 20   ┆ retrieved_level: namestackptr; ┆
0x01ff80…01ffa0             28 2a 20 75 6e 64 65 66 2c 20 69 66 20 6e 61 6d 65 20 77 61 73 27 6e 74 20 66 6f 75 6e 64 20 2a   ┆(* undef, if name was'nt found *┆
0x01ffa0…01ffc0             29 0a 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65 20 3a 20 6e 61 6d 65 70 74 72 3b 20 20 20 20 28   ┆) retrieved_name : nameptr;    (┆
0x01ffc0…01ffe0             2a 20 6e 69 6c 6e 61 6d 65 2c 20 69 66 20 6e 61 6d 65 20 77 61 73 27 6e 74 20 66 6f 75 6e 64 20   ┆* nilname, if name was'nt found ┆
0x01ffe0…020000             2a 29 0a 0a 28 2a 20 76 61 72 69 61 62 6c 65 73 20 75 73 65 64 20 77 68 65 6e 20 70 72 6f 63 65   ┆*)  (* variables used when proce┆
0x020000…020020 (8, 1, 2)   73 73 69 6e 67 20 61 63 74 75 61 6c 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 73 20 2a 29 0a   ┆ssing actual parameter lists *) ┆
0x020020…020040             63 75 72 66 6f 72 6d 61 6c 20 20 20 20 20 3a 20 6e 61 6d 65 70 74 72 3b 20 28 2a 20 70 6f 69 6e   ┆curformal     : nameptr; (* poin┆
0x020040…020060             74 73 20 69 6e 74 6f 20 66 6f 72 6d 61 6c 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29   ┆ts into formal parameter list *)┆
0x020060…020080             0a 61 72 67 6b 69 6e 64 20 20 20 20 20 20 20 3a 20 63 6f 64 65 73 3b 20 20 20 28 2a 20 73 65 70   ┆ argkind       : codes;   (* sep┆
0x020080…0200a0             61 72 61 74 65 73 20 69 6e 74 6f 3a 20 61 72 67 75 6d 65 6e 74 2c 20 69 6e 64 65 78 2c 20 73 74   ┆arates into: argument, index, st┆
0x0200a0…0200c0             72 75 63 20 65 74 63 20 2a 29 0a 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 3a 20 6e 61 6d 65 70 74   ┆ruc etc *) arglist_owner: namept┆
0x0200c0…0200e0             72 3b 20 28 2a 20 70 6f 69 6e 74 73 20 74 6f 20 74 68 65 20 72 6f 75 74 69 6e 65 6e 61 6d 65 20   ┆r; (* points to the routinename ┆
0x0200e0…020100             6f 72 20 61 72 72 61 79 74 79 70 65 6e 61 6d 65 20 6f 72 20 74 79 70 65 6e 61 6d 65 20 2a 29 0a   ┆or arraytypename or typename *) ┆
0x020100…020120             66 75 6e 63 74 65 6d 70 76 61 72 20 20 20 3a 20 6e 61 6d 65 70 74 72 3b 20 28 2a 20 70 6f 69 6e   ┆functempvar   : nameptr; (* poin┆
0x020120…020140             74 73 20 74 6f 20 74 65 6d 70 6f 72 61 72 79 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 0a 63 6f 75 6e   ┆ts to temporary namenode *) coun┆
0x020140…020160             74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 20 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 6e 75 6d   ┆t_processparam: integer;  (* num┆
0x020160…020180             62 65 72 20 6f 66 20 70 72 6f 63 65 73 73 2d 27 63 61 6c 6c 73 27 20 69 6e 20 61 72 67 6c 69 73   ┆ber of process-'calls' in arglis┆
0x020180…0201a0             74 20 2a 29 0a 70 72 65 73 65 72 76 65 5f 6f 70 74 69 6f 6e 2c 20 20 20 20 20 20 20 28 2a 20 64   ┆t *) preserve_option,       (* d┆
0x0201a0…0201c0             65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 65 6d 70 6f 72 61 72 79 20 70 61 73 73 31 66 69 6c 65   ┆etermines if temporary pass1file┆
0x0201c0…0201e0             73 20 61 72 65 20 70 72 65 73 65 72 76 65 64 20 6f 72 20 6e 6f 74 20 2a 29 0a 73 75 72 76 65 79   ┆s are preserved or not *) survey┆
0x0201e0…020200             5f 69 6e 66 6f 2c 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 64 65 74 65 72 6d 69 6e 65 73 20 70   ┆_info,           (* determines p┆
0x020200…020220 (8, 1, 3)   72 69 6e 74 69 6e 67 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20 61 62 6f 75 74 20 64 79 6e 61   ┆rinting of statistics about dyna┆
0x020220…020240             6d 69 63 20 73 74 72 75 63 74 75 72 65 73 20 2a 29 0a 0a 74 65 73 74 69 6e 70 75 74 3a 20 62 6f   ┆mic structures *)  testinput: bo┆
0x020240…020260             6f 6c 65 61 6e 3b 20 20 20 20 28 2a 20 64 65 74 65 72 6d 69 6e 65 73 20 70 72 69 6e 74 69 6e 67   ┆olean;    (* determines printing┆
0x020260…020280             20 6f 66 20 69 6e 70 75 74 2d 72 65 63 6f 72 64 73 20 2a 29 0a 74 65 73 74 6f 75 74 70 75 74 3a   ┆ of input-records *) testoutput:┆
0x020280…0202a0             20 62 6f 6f 6c 65 61 6e 3b 20 20 20 28 2a 20 64 65 74 65 72 6d 69 6e 65 73 20 70 72 69 6e 74 69   ┆ boolean;   (* determines printi┆
0x0202a0…0202c0             6e 67 20 6f 66 20 6f 75 74 70 75 74 2d 72 65 63 6f 72 64 73 20 2a 29 0a 74 65 73 74 69 6e 67 3a   ┆ng of output-records *) testing:┆
0x0202c0…0202e0             20 20 20 62 6f 6f 6c 65 61 6e 3b 20 20 20 20 28 2a 20 3d 20 28 74 65 73 74 69 6e 70 75 74 20 6f   ┆   boolean;    (* = (testinput o┆
0x0202e0…020300             72 20 74 65 73 74 6f 75 74 70 75 74 29 20 2a 29 0a 0a 66 72 65 65 6e 61 6d 65 73 3a 20 6e 61 6d   ┆r testoutput) *)  freenames: nam┆
0x020300…020320             65 70 74 72 3b 20 20 20 20 28 2a 20 6c 69 73 74 20 6f 66 20 66 72 65 65 20 6e 61 6d 65 20 6e 6f   ┆eptr;    (* list of free name no┆
0x020320…020340             64 65 20 2a 29 0a 66 72 65 65 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 20 28 2a 20   ┆de *) freetypename: nameptr; (* ┆
0x020340…020360             6c 69 73 74 20 6f 66 20 66 72 65 65 20 74 79 70 65 20 6e 6f 64 65 73 2c 20 6c 69 6e 6b 65 64 20   ┆list of free type nodes, linked ┆
0x020360…020380             76 69 61 20 6e 61 6d 65 6e 6f 64 65 73 20 2a 29 0a 6e 69 6c 73 74 72 69 6e 67 2c 20 20 20 20 20   ┆via namenodes *) nilstring,     ┆
0x020380…0203a0             20 20 20 20 20 20 20 20 28 2a 20 64 75 6d 6d 79 20 69 6e 64 65 78 20 69 6e 20 27 73 74 72 69 6e   ┆        (* dummy index in 'strin┆
0x0203a0…0203c0             67 73 27 20 2a 29 0a 66 72 65 65 73 74 72 69 6e 67 73 3a 20 73 74 72 69 6e 67 70 74 72 3b 20 28   ┆gs' *) freestrings: stringptr; (┆
0x0203c0…0203e0             2a 20 6c 69 73 74 20 6f 66 20 66 72 65 65 20 73 74 72 69 6e 67 20 6e 6f 64 65 73 20 2a 29 0a 6e   ┆* list of free string nodes *) n┆
0x0203e0…020400             69 6c 6c 61 62 65 6c 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 64 75 6d 6d 79 20 69   ┆illabel,              (* dummy i┆
0x020400…020420 (8, 1, 4)   6e 64 65 78 20 69 6e 20 27 6c 61 62 65 6c 73 27 20 2a 29 0a 66 72 65 65 6c 61 62 65 6c 73 3a 20   ┆ndex in 'labels' *) freelabels: ┆
0x020420…020440             6c 61 62 65 6c 70 74 72 3b 20 20 28 2a 20 6c 69 73 74 20 6f 66 20 66 72 65 65 20 6c 61 62 65 6c   ┆labelptr;  (* list of free label┆
0x020440…020460             20 6e 6f 64 65 73 20 2a 29 0a 66 72 65 65 6f 70 61 6e 64 73 3a 20 6f 70 61 6e 64 70 74 72 3b 20   ┆ nodes *) freeopands: opandptr; ┆
0x020460…020480             20 28 2a 20 6c 69 73 74 20 6f 66 20 66 72 65 65 20 6f 70 61 6e 64 20 6e 6f 64 65 73 20 2a 29 0a   ┆ (* list of free opand nodes *) ┆
0x020480…0204a0             0a 6c 69 73 74 66 69 72 73 74 3a 20 6e 61 6d 65 70 74 72 3b 20 20 20 20 28 2a 20 66 69 72 73 74   ┆ listfirst: nameptr;    (* first┆
0x0204a0…0204c0             20 6e 61 6d 65 20 69 6e 20 63 75 72 72 65 6e 74 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 6c 69 73   ┆ name in current declaration lis┆
0x0204c0…0204e0             74 20 2a 29 0a 6c 69 73 74 6c 61 73 74 3a 20 20 6e 61 6d 65 70 74 72 3b 20 20 20 20 28 2a 20 6c   ┆t *) listlast:  nameptr;    (* l┆
0x0204e0…020500             61 73 74 20 20 6e 61 6d 65 20 69 6e 20 63 75 72 72 65 6e 74 20 64 65 63 6c 61 72 61 74 69 6f 6e   ┆ast  name in current declaration┆
0x020500…020520             20 6c 69 73 74 20 2a 29 0a 6c 69 73 74 74 6f 70 3a 20 20 20 6e 61 6d 65 70 74 72 3b 20 20 20 20   ┆ list *) listtop:   nameptr;    ┆
0x020520…020540             28 2a 20 75 73 65 64 20 77 68 65 6e 20 73 63 61 6e 6e 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e   ┆(* used when scanning the curren┆
0x020540…020560             74 20 64 65 63 6c 20 6c 69 73 74 20 2a 29 0a 6c 61 73 74 6c 61 62 65 6c 3a 20 6c 61 62 65 6c 70   ┆t decl list *) lastlabel: labelp┆
0x020560…020580             74 72 3b 20 20 20 28 2a 20 6c 61 73 74 20 6e 61 6d 65 20 69 6e 20 6c 69 73 74 20 6f 66 20 64 65   ┆tr;   (* last name in list of de┆
0x020580…0205a0             66 69 6e 65 64 20 6c 61 62 65 6c 73 20 2a 29 0a 0a 65 6e 64 70 61 73 73 31 3a 20 20 62 6f 6f 6c   ┆fined labels *)  endpass1:  bool┆
0x0205a0…0205c0             65 61 6e 3b 20 20 20 20 28 2a 20 66 61 6c 73 65 2c 20 75 6e 74 69 6c 20 27 65 6f 6d 27 2d 72 65   ┆ean;    (* false, until 'eom'-re┆
0x0205c0…0205e0             63 6f 72 64 20 68 61 73 20 62 65 65 6e 20 72 65 61 64 20 2a 29 0a 63 61 6c 6c 5f 70 61 73 73 34   ┆cord has been read *) call_pass4┆
0x0205e0…020600             3a 20 62 6f 6f 6c 65 61 6e 3b 20 20 20 20 28 2a 20 74 72 75 65 2c 20 75 6e 74 69 6c 20 66 69 72   ┆: boolean;    (* true, until fir┆
0x020600…020620 (8, 1, 5)   73 74 20 65 72 72 6f 72 20 69 6e 20 70 61 73 73 33 20 2a 29 0a 74 61 72 67 65 74 5f 6d 61 63 68   ┆st error in pass3 *) target_mach┆
0x020620…020640             69 6e 65 20 3a 20 74 61 72 67 65 74 7a 38 30 20 2e 2e 20 74 61 72 67 65 74 33 35 30 32 32 3b 0a   ┆ine : targetz80 .. target35022; ┆
0x020640…020660             61 66 74 65 72 5f 66 75 6e 63 63 61 6c 6c 3a 20 62 6f 6f 6c 65 61 6e 3b 20 20 28 2a 20 66 6c 61   ┆after_funccall: boolean;  (* fla┆
0x020660…020680             67 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 27 65 6e 64 66 75 6e 63 63 61 6c 6c 27 20 2a 29 0a   ┆g to determine 'endfunccall' *) ┆
0x020680…0206a0             69 6e 73 65 72 74 5f 69 6e 5f 66 72 6f 6e 74 3a 20 62 6f 6f 6c 65 61 6e 3b 20 28 2a 20 74 72 75   ┆insert_in_front: boolean; (* tru┆
0x0206a0…0206c0             65 3a 20 6e 61 6d 65 73 20 61 72 65 20 69 6e 73 65 72 74 65 64 20 69 6e 20 66 72 6f 6e 74 20 65   ┆e: names are inserted in front e┆
0x0206c0…0206e0             6c 73 65 20 69 6e 20 72 65 61 72 20 2a 29 0a 62 65 66 6f 72 65 5f 61 73 73 69 67 6e 3a 20 62 6f   ┆lse in rear *) before_assign: bo┆
0x0206e0…020700             6f 6c 65 61 6e 3b 20 28 2a 20 74 72 75 65 3a 20 69 64 65 6e 74 69 66 69 65 72 20 63 61 6e 6e 6f   ┆olean; (* true: identifier canno┆
0x020700…020720             74 20 62 65 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 70 72 6f 63 65 73 73 20 2a 29 0a 61 66 74 65   ┆t be function or process *) afte┆
0x020720…020740             72 64 65 63 6c 3a 20 62 6f 6f 6c 65 61 6e 3b 20 20 20 20 28 2a 20 66 6c 61 67 20 74 6f 20 64 65   ┆rdecl: boolean;    (* flag to de┆
0x020740…020760             74 65 72 6d 69 6e 65 20 3c 65 6e 64 2d 64 65 63 6c 3e 20 69 6e 20 61 20 72 6f 75 74 69 6e 65 20   ┆termine <end-decl> in a routine ┆
0x020760…020780             2a 29 0a 65 78 70 65 63 74 69 6e 67 5f 62 6c 6f 63 6b 3a 20 62 6f 6f 6c 65 61 6e 3b 20 28 2a 20   ┆*) expecting_block: boolean; (* ┆
0x020780…0207a0             66 6c 61 67 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 3c 66 69 72 73 74 20 64 65 63 6c 3e 20 69   ┆flag to determine <first decl> i┆
0x0207a0…0207c0             6e 20 61 20 72 6f 75 74 69 6e 65 20 2a 29 0a 76 61 72 5f 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f   ┆n a routine *) var_initializatio┆
0x0207c0…0207e0             6e 3a 20 62 6f 6f 6c 65 61 6e 3b 20 20 28 2a 20 74 72 75 65 2c 20 69 66 20 69 6e 69 74 69 61 6c   ┆n: boolean;  (* true, if initial┆
0x0207e0…020800             69 7a 61 74 69 6f 6e 20 69 6e 20 76 61 72 2d 64 65 63 6c 20 2a 29 0a 65 78 70 72 5f 72 65 6c 65   ┆ization in var-decl *) expr_rele┆
0x020800…020820 (8, 1, 6)   61 73 65 3a 20 62 6f 6f 6c 65 61 6e 3b 20 28 2a 20 74 72 75 65 2c 20 69 66 20 65 78 70 72 65 73   ┆ase: boolean; (* true, if expres┆
0x020820…020840             73 69 6f 6e 20 6d 75 73 74 20 62 65 20 72 65 6c 65 61 73 65 64 20 61 66 74 65 72 20 65 6d 69 74   ┆sion must be released after emit┆
0x020840…020860             20 2a 29 0a 63 6f 6e 73 74 5f 64 65 63 6c 3a 20 62 6f 6f 6c 65 61 6e 3b 20 20 20 28 2a 20 74 72   ┆ *) const_decl: boolean;   (* tr┆
0x020860…020880             75 65 2c 20 77 68 65 6e 20 65 6d 69 74 74 69 6e 67 20 65 78 70 72 20 69 6e 20 63 6f 6e 73 74 20   ┆ue, when emitting expr in const ┆
0x020880…0208a0             64 65 63 6c 61 72 61 74 69 6f 6e 20 2a 29 0a 72 65 74 61 69 6e 5f 74 6f 70 3a 20 62 6f 6f 6c 65   ┆declaration *) retain_top: boole┆
0x0208a0…0208c0             61 6e 3b 20 20 20 28 2a 20 74 72 75 65 2c 20 69 66 20 73 74 61 63 6b 74 6f 70 20 6d 75 73 74 20   ┆an;   (* true, if stacktop must ┆
0x0208c0…0208e0             62 65 20 72 65 75 73 65 64 20 2a 29 0a 73 74 61 72 74 5f 6f 66 5f 70 72 6f 74 65 63 74 65 64 3a   ┆be reused *) start_of_protected:┆
0x0208e0…020900             20 62 6f 6f 6c 65 61 6e 3b 20 20 28 2a 20 74 72 75 65 20 77 68 65 6e 20 73 74 61 72 74 69 6e 67   ┆ boolean;  (* true when starting┆
0x020900…020920             20 63 68 61 6e 6e 65 6c 20 6f 72 20 6c 6f 63 6b 20 73 74 61 74 65 6d 65 6e 74 73 20 2a 29 0a 65   ┆ channel or lock statements *) e┆
0x020920…020940             78 70 72 5f 6c 65 76 65 6c 3a 20 69 6e 74 65 67 65 72 3b 20 20 20 28 2a 20 63 6f 6e 74 72 6f 6c   ┆xpr_level: integer;   (* control┆
0x020940…020960             73 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 77 68 6f 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 20   ┆s beginning of whole expression ┆
0x020960…020980             2a 29 0a 0a 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 3a 20 74 79 70 65 70 74 72 3b 20 28 2a 20   ┆*)  dummy_typenode: typeptr; (* ┆
0x020980…0209a0             73 74 64 20 74 79 70 65 20 65 6e 74 72 79 20 2a 29 0a 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65   ┆std type entry *) error_typename┆
0x0209a0…0209c0             3a 20 6e 61 6d 65 70 74 72 3b 20 28 2a 20 73 74 64 20 6e 61 6d 65 20 65 6e 74 72 79 20 2a 29 0a   ┆: nameptr; (* std name entry *) ┆
0x0209c0…0209e0             65 72 72 6f 72 5f 74 79 70 65 6e 6f 64 65 3a 20 74 79 70 65 70 74 72 3b 20 28 2a 20 73 74 64 20   ┆error_typenode: typeptr; (* std ┆
0x0209e0…020a00             74 79 70 65 20 65 6e 74 72 79 20 2a 29 0a 0a 65 6e 76 69 72 5f 73 70 69 78 3a 20 73 70 69 78 72   ┆type entry *)  envir_spix: spixr┆
0x020a00…020a20 (8, 1, 7)   61 6e 67 65 3b 20 28 2a 20 77 6f 72 6b 69 6e 67 20 6c 6f 63 61 74 69 6f 6e 20 3f 20 2a 29 0a 6e   ┆ange; (* working location ? *) n┆
0x020a20…020a40             65 77 73 70 69 78 20 20 20 20 3a 20 73 70 69 78 72 61 6e 67 65 3b 20 28 2a 20 68 6f 6c 64 73 20   ┆ewspix    : spixrange; (* holds ┆
0x020a40…020a60             73 70 69 78 20 6f 66 20 66 69 65 6c 64 6e 61 6d 65 20 2a 29 0a 0a 6d 61 78 73 74 64 73 70 69 78   ┆spix of fieldname *)  maxstdspix┆
0x020a60…020a80             3a 20 69 6e 74 65 67 65 72 3b 20 20 20 28 2a 20 68 6f 6c 64 73 20 6d 61 78 20 73 70 69 78 20 77   ┆: integer;   (* holds max spix w┆
0x020a80…020aa0             69 74 68 20 73 70 65 63 69 61 6c 20 69 6e 74 65 72 72 65 73 74 20 2a 29 0a 61 6e 6f 6e 79 6d 6f   ┆ith special interrest *) anonymo┆
0x020aa0…020ac0             75 73 5f 73 70 69 78 3a 20 73 70 69 78 72 61 6e 67 65 3b 20 28 2a 20 69 6e 69 74 69 61 6c 69 7a   ┆us_spix: spixrange; (* initializ┆
0x020ac0…020ae0             65 64 20 64 75 72 69 6e 67 20 73 74 61 72 74 75 70 20 2a 29 0a 65 78 63 65 70 74 69 6f 6e 5f 73   ┆ed during startup *) exception_s┆
0x020ae0…020b00             70 69 78 3a 20 73 70 69 78 72 61 6e 67 65 3b 20 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 64   ┆pix: spixrange; (* initialized d┆
0x020b00…020b20             75 72 72 69 6e 67 20 73 74 61 72 74 75 70 20 2a 29 0a 0a 62 6f 6f 6c 65 61 6e 5f 74 79 70 65 6e   ┆urring startup *)  boolean_typen┆
0x020b20…020b40             61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 69 6e 74 65 67 65 72 5f 74 79 70 65 6e 61 6d 65 3a 20   ┆ame: nameptr; integer_typename: ┆
0x020b40…020b60             6e 61 6d 65 70 74 72 3b 0a 63 68 61 72 5f 74 79 70 65 6e 61 6d 65 20 20 20 3a 20 6e 61 6d 65 70   ┆nameptr; char_typename   : namep┆
0x020b60…020b80             74 72 3b 0a 73 68 61 64 6f 77 5f 74 79 70 65 6e 61 6d 65 20 20 20 3a 20 6e 61 6d 65 70 74 72 3b   ┆tr; shadow_typename   : nameptr;┆
0x020b80…020ba0             0a 72 65 66 65 72 65 6e 63 65 5f 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 74 65   ┆ reference_typename: nameptr; te┆
0x020ba0…020bc0             78 74 5f 74 79 70 65 6e 61 6d 65 20 20 20 20 20 3a 20 6e 61 6d 65 70 74 72 3b 20 28 2a 20 69 6e   ┆xt_typename     : nameptr; (* in┆
0x020bc0…020be0             74 65 72 6e 61 6c 6c 79 20 75 73 65 64 20 66 6f 72 20 74 65 78 74 2d 6c 69 74 65 72 61 6c 73 20   ┆ternally used for text-literals ┆
0x020be0…020c00             2a 29 0a 70 72 6f 63 65 73 73 72 65 63 5f 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b   ┆*) processrec_typename: nameptr;┆
0x020c00…020c20 (8, 1, 8)   0a 73 6f 6e 5f 74 79 70 65 6e 61 6d 65 20 20 20 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 6e 69 6c 5f   ┆ son_typename    : nameptr; nil_┆
0x020c20…020c40             74 79 70 65 6e 61 6d 65 20 20 20 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 0a 65 78 63 65 70 74 69 6f   ┆typename    : nameptr;  exceptio┆
0x020c40…020c60             6e 5f 70 72 6f 63 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 61 62 73 5f 70 72 6f 63 6e 61 6d   ┆n_procname: nameptr; abs_procnam┆
0x020c60…020c80             65 20 20 20 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 73 75 63 63 5f 70 72 6f 63 6e 61 6d 65 20 20 20   ┆e    : nameptr; succ_procname   ┆
0x020c80…020ca0             3a 20 6e 61 6d 65 70 74 72 3b 0a 70 72 65 64 5f 70 72 6f 63 6e 61 6d 65 20 20 20 3a 20 6e 61 6d   ┆: nameptr; pred_procname   : nam┆
0x020ca0…020cc0             65 70 74 72 3b 0a 6e 69 6c 5f 70 72 6f 63 6e 61 6d 65 20 20 20 20 3a 20 6e 61 6d 65 70 74 72 3b   ┆eptr; nil_procname    : nameptr;┆
0x020cc0…020ce0             0a 6e 69 6c 72 65 66 5f 70 72 6f 63 6e 61 6d 65 20 3a 20 6e 61 6d 65 70 74 72 3b 20 28 2a 20 6e   ┆ nilref_procname : nameptr; (* n┆
0x020ce0…020d00             69 6c 28 72 65 66 65 72 65 6e 63 65 29 20 69 73 20 68 61 6e 64 6c 65 64 20 61 73 20 61 20 73 70   ┆il(reference) is handled as a sp┆
0x020d00…020d20             65 63 69 61 6c 20 6e 69 6c 20 2a 29 0a 6f 72 64 5f 70 72 6f 63 6e 61 6d 65 20 20 20 20 3a 20 6e   ┆ecial nil *) ord_procname    : n┆
0x020d20…020d40             61 6d 65 70 74 72 3b 0a 0a 66 6f 72 5f 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 20   ┆ameptr;  for_typename: nameptr; ┆
0x020d40…020d60             20 28 2a 20 68 6f 6c 64 73 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 63 75 72 72 65 6e 74 20 66 6f   ┆ (* holds typename of current fo┆
0x020d60…020d80             72 2d 76 61 72 69 61 62 6c 65 20 2a 29 0a 66 6f 72 5f 62 61 73 65 74 79 70 65 6e 61 6d 65 3a 20   ┆r-variable *) for_basetypename: ┆
0x020d80…020da0             6e 61 6d 65 70 74 72 3b 20 28 2a 20 68 6f 6c 64 73 20 73 69 6d 70 6c 69 66 69 65 64 20 74 79 70   ┆nameptr; (* holds simplified typ┆
0x020da0…020dc0             65 6e 61 6d 65 20 6f 66 20 66 6f 72 2d 76 61 72 69 61 62 6c 65 20 2a 29 0a 63 61 73 65 5f 74 79   ┆ename of for-variable *) case_ty┆
0x020dc0…020de0             70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 20 28 2a 20 68 6f 6c 64 73 20 74 79 70 65 6e 61   ┆pename: nameptr; (* holds typena┆
0x020de0…020e00             6d 65 20 6f 66 20 63 75 72 72 65 6e 74 20 63 61 73 65 2d 65 78 70 72 65 73 73 69 6f 6e 20 2a 29   ┆me of current case-expression *)┆
0x020e00…020e20 (8, 1, 9)   0a 77 69 74 68 5f 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 20 28 2a 20 77 6f 72 6b   ┆ with_typename: nameptr; (* work┆
0x020e20…020e40             2d 6c 6f 63 61 74 69 6f 6e 3a 20 68 6f 6c 64 73 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 77 69 74   ┆-location: holds typename of wit┆
0x020e40…020e60             68 2d 76 61 72 69 61 62 6c 65 20 2a 29 0a 0a 69 6e 64 65 78 6e 61 6d 65 3a 20 6e 61 6d 65 70 74   ┆h-variable *)  indexname: namept┆
0x020e60…020e80             72 3b 20 20 20 20 20 28 2a 20 77 6f 72 6b 69 6e 67 20 6c 6f 63 61 74 69 6f 6e 20 2a 29 0a 65 6c   ┆r;     (* working location *) el┆
0x020e80…020ea0             65 6d 6e 61 6d 65 3a 20 20 6e 61 6d 65 70 74 72 3b 20 20 20 20 20 28 2a 20 77 6f 72 6b 69 6e 67   ┆emname:  nameptr;     (* working┆
0x020ea0…020ec0             20 6c 6f 63 61 74 69 6f 6e 20 2a 29 0a 0a 70 61 72 61 6d 6b 69 6e 64 3a 20 63 6f 64 65 73 3b 20   ┆ location *)  paramkind: codes; ┆
0x020ec0…020ee0             20 20 20 20 20 20 28 2a 20 75 73 65 64 20 77 68 65 6e 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 6d   ┆      (* used when checking form┆
0x020ee0…020f00             61 6c 20 70 61 72 61 6d 65 74 65 72 73 20 2a 29 0a 6e 6f 74 5f 61 6c 6c 6f 77 65 64 3a 20 63 6f   ┆al parameters *) not_allowed: co┆
0x020f00…020f20             6e 74 65 6e 74 5f 73 65 74 3b 20 28 2a 20 68 6f 6c 64 73 20 74 68 65 20 69 6c 6c 65 67 61 6c 20   ┆ntent_set; (* holds the illegal ┆
0x020f20…020f40             70 61 72 61 6d 65 74 65 72 20 63 6f 6e 74 65 6e 74 73 20 2a 29 0a 0a 6f 70 61 6e 64 5f 70 72 6f   ┆parameter contents *)  opand_pro┆
0x020f40…020f60             63 6e 61 6d 65 3a 20 6f 70 61 6e 64 70 74 72 3b 20 28 2a 20 68 6f 6c 64 73 20 27 6c 69 74 65 72   ┆cname: opandptr; (* holds 'liter┆
0x020f60…020f80             61 6c 27 2d 6f 70 65 72 61 6e 64 2c 20 77 69 74 68 20 72 6f 75 74 69 6e 65 20 6e 61 6d 65 20 2a   ┆al'-operand, with routine name *┆
0x020f80…020fa0             29 0a 0a 66 6f 72 5f 65 78 70 72 3a 20 6f 70 61 6e 64 70 74 72 3b 20 20 20 20 20 28 2a 20 68 6f   ┆)  for_expr: opandptr;     (* ho┆
0x020fa0…020fc0             6c 64 73 20 74 68 65 20 65 6e 64 2d 76 61 6c 75 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 66 20   ┆lds the end-value expression of ┆
0x020fc0…020fe0             61 20 66 6f 72 2d 73 74 61 74 65 6d 65 6e 74 20 2a 29 0a 0a 6e 69 6c 6f 70 61 6e 64 2c 20 20 20   ┆a for-statement *)  nilopand,   ┆
0x020fe0…021000             20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 73 74 6f 70 20 6d 61 72 6b 20 6f 66 20 6f 70 61 6e   ┆            (* stop mark of opan┆
0x021000…021020 (8, 1, 10)  64 73 20 2a 29 0a 73 74 61 63 6b 74 6f 70 3a 20 6f 70 61 6e 64 70 74 72 3b 20 20 20 20 20 28 2a   ┆ds *) stacktop: opandptr;     (*┆
0x021020…021040             20 70 6f 69 6e 74 73 20 74 6f 20 63 75 72 72 65 6e 74 20 74 6f 70 20 6f 66 20 6f 70 61 6e 64 73   ┆ points to current top of opands┆
0x021040…021060             20 2a 29 0a 6e 65 78 74 74 6f 70 3a 20 20 6f 70 61 6e 64 70 74 72 3b 20 20 20 20 20 28 2a 20 70   ┆ *) nexttop:  opandptr;     (* p┆
0x021060…021080             6f 69 6e 74 73 20 74 6f 20 27 6e 65 78 74 27 20 6f 66 20 63 75 72 72 65 6e 74 20 74 6f 70 2d 6f   ┆oints to 'next' of current top-o┆
0x021080…0210a0             70 61 6e 64 20 2a 29 0a 0a 28 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 76 61 72 69 61 62   ┆pand *)  (* the following variab┆
0x0210a0…0210c0             6c 65 73 20 61 72 65 20 75 73 65 64 20 77 68 65 6e 20 72 65 73 6f 6c 76 69 6e 67 20 6f 70 61 6e   ┆les are used when resolving opan┆
0x0210c0…0210e0             64 2d 74 79 70 65 73 20 2a 29 0a 6c 65 66 74 74 79 70 65 6e 61 6d 65 3a 20 20 6e 61 6d 65 70 74   ┆d-types *) lefttypename:  namept┆
0x0210e0…021100             72 3b 0a 6c 65 66 74 62 61 73 65 6b 69 6e 64 3a 20 20 63 6f 64 65 73 3b 0a 6c 65 66 74 65 6c 65   ┆r; leftbasekind:  codes; leftele┆
0x021100…021120             6d 65 6e 74 3a 20 20 20 6e 61 6d 65 70 74 72 3b 0a 72 69 67 74 68 74 79 70 65 6e 61 6d 65 3a 20   ┆ment:   nameptr; rigthtypename: ┆
0x021120…021140             6e 61 6d 65 70 74 72 3b 0a 72 69 67 74 68 62 61 73 65 6b 69 6e 64 3a 20 63 6f 64 65 73 3b 0a 72   ┆nameptr; rigthbasekind: codes; r┆
0x021140…021160             69 67 74 68 65 6c 65 6d 65 6e 74 3a 20 20 6e 61 6d 65 70 74 72 3b 0a 65 78 70 72 74 79 70 65 6e   ┆igthelement:  nameptr; exprtypen┆
0x021160…021180             61 6d 65 3a 20 20 6e 61 6d 65 70 74 72 3b 0a 65 78 70 72 62 61 73 65 6b 69 6e 64 3a 20 20 63 6f   ┆ame:  nameptr; exprbasekind:  co┆
0x021180…0211a0             64 65 73 3b 0a 65 78 70 72 65 6c 65 6d 65 6e 74 3a 20 20 20 6e 61 6d 65 70 74 72 3b 0a 0a 65 72   ┆des; exprelement:   nameptr;  er┆
0x0211a0…0211c0             72 6f 72 63 6f 64 65 3a 20 70 61 73 73 33 65 72 72 6f 72 73 3b 20 28 2a 20 77 6f 72 6b 69 6e 67   ┆rorcode: pass3errors; (* working┆
0x0211c0…0211e0             20 6c 6f 63 61 74 69 6f 6e 20 2a 29 0a 0a 6e 6f 5f 6f 66 5f 77 61 72 6e 69 6e 67 73 2c 0a 6e 6f   ┆ location *)  no_of_warnings, no┆
0x0211e0…021200             5f 6f 66 5f 65 72 72 6f 72 73 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 6e 69 6c 5f 6e 61 6d 65 73 74   ┆_of_errors: integer;  nil_namest┆
0x021200…021220 (8, 1, 11)  61 63 6b 5f 70 74 72 2c 20 28 2a 20 62 6f 74 74 6f 6d 20 65 6c 65 6d 65 6e 74 20 6f 66 20 6e 61   ┆ack_ptr, (* bottom element of na┆
0x021220…021240             6d 65 20 6c 65 76 65 6c 20 73 74 61 63 6b 20 2a 29 0a 6e 61 6d 65 6c 65 76 65 6c 3a 20 6e 61 6d   ┆me level stack *) namelevel: nam┆
0x021240…021260             65 73 74 61 63 6b 70 74 72 3b 20 28 2a 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 20 6c 65 76 65 6c   ┆estackptr; (* current name level┆
0x021260…021280             20 2a 29 0a 0a 63 61 6c 6c 73 3a 20 61 72 72 61 79 20 5b 20 63 61 6c 6c 72 61 6e 67 65 20 5d 20   ┆ *)  calls: array [ callrange ] ┆
0x021280…0212a0             6f 66 20 63 61 6c 6c 6e 6f 64 65 3b 0a 0a 63 6f 6e 76 74 61 62 6c 65 3a 20 61 72 72 61 79 20 5b   ┆of callnode;  convtable: array [┆
0x0212a0…0212c0             20 63 6f 64 65 69 6e 64 65 78 20 5d 20 6f 66 20 63 6f 64 65 73 3b 0a 0a 73 74 64 73 70 69 78 5f   ┆ codeindex ] of codes;  stdspix_┆
0x0212c0…0212e0             74 61 62 6c 65 3a 20 61 72 72 61 79 20 5b 20 73 74 64 6e 61 6d 65 5f 72 61 6e 67 65 20 5d 20 6f   ┆table: array [ stdname_range ] o┆
0x0212e0…021300             66 20 69 6e 74 65 67 65 72 3b 0a 0a 65 72 72 6f 72 5f 62 69 74 6d 61 70 3a 20 70 61 63 6b 65 64   ┆f integer;  error_bitmap: packed┆
0x021300…021320             20 61 72 72 61 79 20 5b 20 6e 6f 65 72 72 6f 72 20 2e 2e 20 6c 61 73 74 70 61 73 73 33 65 72 72   ┆ array [ noerror .. lastpass3err┆
0x021320…021340             6f 72 20 5d 20 6f 66 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 70 61 73 73 31 66 69 6c 65 3a 20 66 69 6c   ┆or ] of boolean;  pass1file: fil┆
0x021340…021360             65 20 6f 66 20 66 69 6c 72 65 63 3b 0a 70 61 73 73 31 6c 61 62 65 6c 73 3a 20 66 69 6c 65 20 6f   ┆e of filrec; pass1labels: file o┆
0x021360…021380             66 20 66 69 6c 72 65 63 3b 0a 70 61 73 73 33 66 69 6c 65 3a 20 66 69 6c 65 20 6f 66 20 66 69 6c   ┆f filrec; pass3file: file of fil┆
0x021380…0213a0             72 65 63 3b 0a 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 6d 79 65 78 69 74 3b 20 66 6f 72 77 61 72   ┆rec;    procedure myexit; forwar┆
0x0213a0…0213c0             64 3b 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 75 73 65 64 20 66 6f 72 20 74 65 73 74 6f 75   ┆d; (* procedures used for testou┆
0x0213c0…0213e0             74 70 75 74 20 70 75 72 70 6f 73 65 73 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 6e 74   ┆tput purposes *)  procedure cont┆
0x0213e0…021400             69 6e 75 65 5f 6c 69 6e 65 3b 0a 62 65 67 69 6e 0a 28 2a 20 75 73 65 64 20 66 6f 72 20 61 6c 6c   ┆inue_line; begin (* used for all┆
0x021400…021420 (8, 1, 12)  69 67 6e 69 6e 67 20 74 65 73 74 6f 75 74 70 75 74 20 6f 6e 20 63 6f 6e 73 65 71 75 74 69 76 65   ┆igning testoutput on consequtive┆
0x021420…021440             20 6c 69 6e 65 73 20 2a 29 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 77 72 69 74 65   ┆ lines *) writeln(output); write┆
0x021440…021460             20 28 6f 75 74 70 75 74 2c 20 27 20 20 20 27 29 3b 0a 65 6e 64 3b 0a 0a 0c 0a 28 2a 20 70 72 6f   ┆ (output, '   '); end;    (* pro┆
0x021460…021480             63 65 64 75 72 65 73 20 66 6f 72 20 72 65 61 64 69 6e 67 20 70 61 73 73 31 2d 63 6f 64 65 20 66   ┆cedures for reading pass1-code f┆
0x021480…0214a0             69 6c 65 20 2a 29 0a 0a 66 75 6e 63 74 69 6f 6e 20 70 61 73 73 69 6e 20 3a 20 69 6e 74 65 67 65   ┆ile *)  function passin : intege┆
0x0214a0…0214c0             72 3b 0a 28 2a 20 64 65 6c 69 76 65 72 73 20 74 68 65 20 6e 65 78 74 20 70 61 73 73 31 2d 63 6f   ┆r; (* delivers the next pass1-co┆
0x0214c0…0214e0             64 65 20 61 73 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 2a 29 0a 62 65 67 69 6e 0a 20 20 69   ┆de as integer value *) begin   i┆
0x0214e0…021500             6e 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d 20 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 20 2b 20   ┆ncode_fileix := incode_fileix + ┆
0x021500…021520             31 3b 0a 20 20 69 66 20 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 20 3e 20 66 69 6c 72 65 63 5f 6d   ┆1;   if incode_fileix > filrec_m┆
0x021520…021540             61 78 20 74 68 65 6e 0a 20 20 62 65 67 69 6e 0a 20 20 20 20 72 65 61 64 28 70 61 73 73 31 66 69   ┆ax then   begin     read(pass1fi┆
0x021540…021560             6c 65 2c 20 69 6e 63 6f 64 65 5f 66 69 6c 70 74 72 5e 29 3b 0a 20 20 20 20 69 6e 63 6f 64 65 5f   ┆le, incode_filptr^);     incode_┆
0x021560…021580             66 69 6c 65 69 78 20 3a 3d 20 31 3b 0a 20 20 65 6e 64 3b 0a 20 20 70 61 73 73 69 6e 3a 3d 20 69   ┆fileix := 1;   end;   passin:= i┆
0x021580…0215a0             6e 63 6f 64 65 5f 66 69 6c 70 74 72 5e 5b 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 5d 3b 0a 69 66   ┆ncode_filptr^[incode_fileix]; if┆
0x0215a0…0215c0             20 74 65 73 74 69 6e 70 75 74 20 74 68 65 6e 0a 77 72 69 74 65 20 28 6f 75 74 70 75 74 2c 20 27   ┆ testinput then write (output, '┆
0x0215c0…0215e0             20 27 2c 20 69 6e 63 6f 64 65 5f 66 69 6c 70 74 72 5e 5b 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78   ┆ ', incode_filptr^[incode_fileix┆
0x0215e0…021600             5d 3a 31 2c 20 27 2a 27 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 70 61 73 73   ┆]:1, '*'); end;    function pass┆
0x021600…021620 (8, 1, 13)  77 6f 72 64 20 3a 20 63 6f 64 65 73 3b 0a 28 2a 20 64 65 6c 69 76 65 72 73 20 74 68 65 20 6e 65   ┆word : codes; (* delivers the ne┆
0x021620…021640             78 74 20 70 61 73 73 31 2d 63 6f 64 65 20 61 73 20 63 6f 64 65 20 76 61 6c 75 65 20 2a 29 0a 62   ┆xt pass1-code as code value *) b┆
0x021640…021660             65 67 69 6e 0a 70 61 73 73 77 6f 72 64 3a 3d 20 63 6f 6e 76 74 61 62 6c 65 20 5b 20 70 61 73 73   ┆egin password:= convtable [ pass┆
0x021660…021680             69 6e 20 5d 3b 0a 65 6e 64 3b 0a 0a 0c 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20   ┆in ]; end;    (* procedures for ┆
0x021680…0216a0             72 65 61 64 69 6e 67 20 74 68 65 20 70 61 73 73 31 2d 6c 61 62 65 6c 20 66 69 6c 65 20 2a 29 0a   ┆reading the pass1-label file *) ┆
0x0216a0…0216c0             0a 66 75 6e 63 74 69 6f 6e 20 6c 61 62 65 6c 69 6e 20 3a 20 69 6e 74 65 67 65 72 3b 0a 28 2a 20   ┆ function labelin : integer; (* ┆
0x0216c0…0216e0             64 65 6c 69 76 65 72 73 20 74 68 65 20 6e 65 78 74 20 70 61 73 73 31 2d 6c 61 62 65 6c 2d 76 61   ┆delivers the next pass1-label-va┆
0x0216e0…021700             6c 75 65 20 61 73 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 2a 29 0a 62 65 67 69 6e 0a 20 20   ┆lue as integer value *) begin   ┆
0x021700…021720             69 6e 73 79 6d 62 5f 66 69 6c 65 69 78 20 3a 3d 20 69 6e 73 79 6d 62 5f 66 69 6c 65 69 78 20 2b   ┆insymb_fileix := insymb_fileix +┆
0x021720…021740             20 31 3b 0a 20 20 69 66 20 69 6e 73 79 6d 62 5f 66 69 6c 65 69 78 20 3e 20 66 69 6c 72 65 63 5f   ┆ 1;   if insymb_fileix > filrec_┆
0x021740…021760             6d 61 78 20 74 68 65 6e 0a 20 20 62 65 67 69 6e 0a 20 20 20 20 72 65 61 64 28 70 61 73 73 31 6c   ┆max then   begin     read(pass1l┆
0x021760…021780             61 62 65 6c 73 2c 20 69 6e 73 79 6d 62 5f 66 69 6c 70 74 72 5e 29 3b 0a 20 20 20 20 69 6e 73 79   ┆abels, insymb_filptr^);     insy┆
0x021780…0217a0             6d 62 5f 66 69 6c 65 69 78 20 3a 3d 20 31 3b 0a 20 20 65 6e 64 3b 0a 20 20 6c 61 62 65 6c 69 6e   ┆mb_fileix := 1;   end;   labelin┆
0x0217a0…0217c0             3a 3d 20 69 6e 73 79 6d 62 5f 66 69 6c 70 74 72 5e 5b 69 6e 73 79 6d 62 5f 66 69 6c 65 69 78 5d   ┆:= insymb_filptr^[insymb_fileix]┆
0x0217c0…0217e0             3b 0a 69 66 20 74 65 73 74 69 6e 70 75 74 20 74 68 65 6e 0a 77 72 69 74 65 20 28 6f 75 74 70 75   ┆; if testinput then write (outpu┆
0x0217e0…021800             74 2c 20 27 20 27 2c 20 69 6e 73 79 6d 62 5f 66 69 6c 70 74 72 5e 5b 69 6e 73 79 6d 62 5f 66 69   ┆t, ' ', insymb_filptr^[insymb_fi┆
0x021800…021820 (8, 1, 14)  6c 65 69 78 5d 3a 31 2c 20 27 2b 27 29 3b 0a 65 6e 64 3b 0a 0a 0c 0a 28 2a 20 70 72 6f 63 65 64   ┆leix]:1, '+'); end;    (* proced┆
0x021820…021840             75 72 65 73 20 66 6f 72 20 77 72 69 74 69 6e 67 20 74 68 65 20 70 61 73 73 33 66 69 6c 65 20 2a   ┆ures for writing the pass3file *┆
0x021840…021860             29 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 69 6e 28 63 3a 69 6e 74 65 67 65 72 29 3b 0a   ┆)  procedure emitin(c:integer); ┆
0x021860…021880             62 65 67 69 6e 0a 20 20 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d 20 6f 75 74 63 6f 64   ┆begin   outcode_fileix := outcod┆
0x021880…0218a0             65 5f 66 69 6c 65 69 78 20 2b 20 31 3b 0a 20 20 69 66 20 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69   ┆e_fileix + 1;   if outcode_filei┆
0x0218a0…0218c0             78 20 3e 20 66 69 6c 72 65 63 5f 6d 61 78 20 74 68 65 6e 0a 20 20 62 65 67 69 6e 0a 20 20 20 20   ┆x > filrec_max then   begin     ┆
0x0218c0…0218e0             77 72 69 74 65 28 70 61 73 73 33 66 69 6c 65 2c 20 6f 75 74 63 6f 64 65 5f 66 69 6c 70 74 72 5e   ┆write(pass3file, outcode_filptr^┆
0x0218e0…021900             29 3b 0a 20 20 20 20 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d 20 31 3b 0a 20 20 65 6e   ┆);     outcode_fileix := 1;   en┆
0x021900…021920             64 3b 0a 20 20 6f 75 74 63 6f 64 65 5f 66 69 6c 70 74 72 5e 5b 6f 75 74 63 6f 64 65 5f 66 69 6c   ┆d;   outcode_filptr^[outcode_fil┆
0x021920…021940             65 69 78 5d 20 3a 3d 20 63 3b 0a 69 66 20 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 0a 77 72   ┆eix] := c; if testoutput then wr┆
0x021940…021960             69 74 65 20 28 6f 75 74 70 75 74 2c 20 27 20 27 2c 20 63 3a 31 2c 20 27 3c 27 29 3b 0a 65 6e 64   ┆ite (output, ' ', c:1, '<'); end┆
0x021960…021980             3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 20 28 63 6f 64 65 3a 20 70 61 73 73 33 63 6f   ┆;  procedure emit (code: pass3co┆
0x021980…0219a0             64 65 73 29 3b 0a 28 2a 20 6f 75 74 70 75 74 73 20 74 68 65 20 63 6f 64 65 77 6f 72 64 20 61 73   ┆des); (* outputs the codeword as┆
0x0219a0…0219c0             20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 2a 29 0a 76 61 72 20 69 3a 20 69 6e 74 65 67 65 72   ┆ integer value *) var i: integer┆
0x0219c0…0219e0             3b 0a 62 65 67 69 6e 0a 69 3a 3d 20 6f 72 64 20 28 63 6f 64 65 29 3b 0a 65 6d 69 74 69 6e 28 69   ┆; begin i:= ord (code); emitin(i┆
0x0219e0…021a00             29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 69 64 20 28 78 63 6f   ┆); end;    procedure emitid (xco┆
0x021a00…021a20 (8, 1, 15)  64 65 3a 20 70 61 73 73 33 63 6f 64 65 73 3b 20 78 6e 69 78 3a 20 6e 61 6d 65 70 74 72 29 3b 0a   ┆de: pass3codes; xnix: nameptr); ┆
0x021a20…021a40             62 65 67 69 6e 0a 65 6d 69 74 20 28 78 63 6f 64 65 29 3b 0a 65 6d 69 74 69 6e 20 28 78 6e 69 78   ┆begin emit (xcode); emitin (xnix┆
0x021a40…021a60             5e 2e 6e 69 78 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 72 6d 69 6e   ┆^.nix); end;    procedure termin┆
0x021a60…021a80             61 74 65 3b 0a 76 61 72 0a 65 72 72 3a 20 70 61 73 73 33 65 72 72 6f 72 73 3b 0a 66 69 6e 69 73   ┆ate; var err: pass3errors; finis┆
0x021a80…021aa0             68 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6e 75 6d 62 65 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 63   ┆h : boolean; number : integer; c┆
0x021aa0…021ac0             68 2c 63 68 31 20 3a 20 63 68 61 72 3b 0a 68 65 61 70 66 72 65 65 3a 20 6c 6f 6e 67 69 6e 74 3b   ┆h,ch1 : char; heapfree: longint;┆
0x021ac0…021ae0             0a 62 65 67 69 6e 0a 28 2a 20 74 65 72 6d 69 6e 61 74 65 20 75 73 65 20 6f 66 20 66 69 6c 65 73   ┆ begin (* terminate use of files┆
0x021ae0…021b00             20 2a 29 0a 0a 65 6d 69 74 20 28 78 65 6f 6d 29 3b 0a 77 72 69 74 65 28 70 61 73 73 33 66 69 6c   ┆ *)  emit (xeom); write(pass3fil┆
0x021b00…021b20             65 2c 20 6f 75 74 63 6f 64 65 5f 66 69 6c 70 74 72 5e 29 3b 0a 63 6c 6f 73 65 20 28 70 61 73 73   ┆e, outcode_filptr^); close (pass┆
0x021b20…021b40             33 66 69 6c 65 29 3b 0a 61 73 73 69 67 6e 28 70 61 73 73 33 66 69 6c 65 2c 20 63 6f 6e 63 61 74   ┆3file); assign(pass3file, concat┆
0x021b40…021b60             28 70 61 74 68 32 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 33 5f 6e 69 78 6e 61 6d 65 29 29 3b 0a   ┆(path2_name, o_pass3_nixname)); ┆
0x021b60…021b80             72 65 77 72 69 74 65 28 70 61 73 73 33 66 69 6c 65 29 3b 0a 6f 75 74 63 6f 64 65 5f 66 69 6c 65   ┆rewrite(pass3file); outcode_file┆
0x021b80…021ba0             69 78 20 3a 3d 20 30 3b 0a 65 6d 69 74 69 6e 28 6d 61 78 6e 69 78 29 3b 0a 77 72 69 74 65 28 70   ┆ix := 0; emitin(maxnix); write(p┆
0x021ba0…021bc0             61 73 73 33 66 69 6c 65 2c 20 6f 75 74 63 6f 64 65 5f 66 69 6c 70 74 72 5e 29 3b 0a 63 6c 6f 73   ┆ass3file, outcode_filptr^); clos┆
0x021bc0…021be0             65 28 70 61 73 73 33 66 69 6c 65 29 3b 0a 0a 63 6c 6f 73 65 20 28 70 61 73 73 31 66 69 6c 65 29   ┆e(pass3file);  close (pass1file)┆
0x021be0…021c00             3b 0a 63 6c 6f 73 65 20 28 70 61 73 73 31 6c 61 62 65 6c 73 29 3b 0a 69 66 20 63 75 72 5f 70 72   ┆; close (pass1labels); if cur_pr┆
0x021c00…021c20 (9, 0, 1)   69 6e 74 6e 61 6d 65 3c 3e 2d 31 20 74 68 65 6e 20 28 2a 20 69 6e 70 75 74 20 75 73 65 64 20 66   ┆intname<>-1 then (* input used f┆
0x021c20…021c40             6f 72 20 70 72 69 6e 74 69 6e 67 20 6f 66 20 6e 61 6d 65 73 20 2a 29 0a 63 6c 6f 73 65 28 69 6e   ┆or printing of names *) close(in┆
0x021c40…021c60             70 75 74 29 3b 0a 0a 69 66 20 6e 6f 74 20 70 72 65 73 65 72 76 65 5f 6f 70 74 69 6f 6e 20 74 68   ┆put);  if not preserve_option th┆
0x021c60…021c80             65 6e 0a 62 65 67 69 6e 0a 61 73 73 69 67 6e 28 70 61 73 73 31 66 69 6c 65 2c 20 63 6f 6e 63 61   ┆en begin assign(pass1file, conca┆
0x021c80…021ca0             74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 6f 5f 70 61 73 73 31 5f 63 6f 64 65 6e 61 6d 65 29 29 3b   ┆t(path1_name,o_pass1_codename));┆
0x021ca0…021cc0             0a 65 72 61 73 65 28 70 61 73 73 31 66 69 6c 65 29 3b 0a 61 73 73 69 67 6e 28 70 61 73 73 31 66   ┆ erase(pass1file); assign(pass1f┆
0x021cc0…021ce0             69 6c 65 2c 20 63 6f 6e 63 61 74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 6f 5f 70 61 73 73 31 5f 73   ┆ile, concat(path1_name,o_pass1_s┆
0x021ce0…021d00             79 6d 62 6e 61 6d 65 29 29 3b 0a 65 72 61 73 65 28 70 61 73 73 31 66 69 6c 65 29 3b 0a 61 73 73   ┆ymbname)); erase(pass1file); ass┆
0x021d00…021d20             69 67 6e 28 70 61 73 73 31 66 69 6c 65 2c 20 63 6f 6e 63 61 74 28 70 61 74 68 31 5f 6e 61 6d 65   ┆ign(pass1file, concat(path1_name┆
0x021d20…021d40             2c 6f 5f 70 61 73 73 31 5f 73 70 69 78 6e 61 6d 65 29 29 3b 0a 65 72 61 73 65 28 70 61 73 73 31   ┆,o_pass1_spixname)); erase(pass1┆
0x021d40…021d60             66 69 6c 65 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 73 75 72 76 65 79 5f 69 6e 66 6f 20 74 68 65 6e   ┆file); end;  if survey_info then┆
0x021d60…021d80             0a 62 65 67 69 6e 0a 28 2a 20 73 75 72 76 65 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   ┆ begin (* survey information abo┆
0x021d80…021da0             75 74 20 64 79 6e 61 6d 69 63 20 73 74 72 75 63 74 75 72 65 73 2c 20 69 2e 65 2e 20 61 62 6f 75   ┆ut dynamic structures, i.e. abou┆
0x021da0…021dc0             74 20 74 68 65 20 63 6f 6d 70 6c 65 78 69 74 79 20 6f 66 0a 74 68 65 20 63 6f 6d 70 69 6c 65 64   ┆t the complexity of the compiled┆
0x021dc0…021de0             20 70 72 6f 67 72 61 6d 20 2a 29 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 77 72 69   ┆ program *) writeln(output); wri┆
0x021de0…021e00             74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75 72 76 65 79   ┆teln(output, 'Information survey┆
0x021e00…021e20 (9, 0, 2)   20 66 72 6f 6d 20 52 45 41 4c 2d 54 49 4d 45 20 50 41 53 43 41 4c 2c 20 70 61 73 73 33 2c 20 76   ┆ from REAL-TIME PASCAL, pass3, v┆
0x021e20…021e40             65 72 73 69 6f 6e 20 27 2c 20 76 65 72 73 69 6f 6e 29 3b 0a 0a 77 72 69 74 65 6c 6e 28 6f 75 74   ┆ersion ', version);  writeln(out┆
0x021e40…021e60             70 75 74 2c 20 27 4d 61 78 20 6e 75 6d 62 65 72 20 6f 66 20 61 63 74 69 76 65 20 6e 61 6d 65 73   ┆put, 'Max number of active names┆
0x021e60…021e80             3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 20 6d 61 78 6e 69 78 29 3b 0a 77   ┆:                  ', maxnix); w┆
0x021e80…021ea0             72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 44 65 65 70 65 73 74 20 6e 65 73 74 69 6e 67 3a   ┆riteln(output, 'Deepest nesting:┆
0x021ea0…021ec0             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 27 2c 20   ┆                             ', ┆
0x021ec0…021ee0             6d 61 78 6e 61 6d 65 73 74 61 63 6b 6c 65 76 65 6c 73 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74   ┆maxnamestacklevels); writeln(out┆
0x021ee0…021f00             70 75 74 2c 20 27 44 65 65 70 65 73 74 20 73 74 61 63 6b 20 6f 66 20 6e 61 6d 65 73 3a 20 20 20   ┆put, 'Deepest stack of names:   ┆
0x021f00…021f20             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 20 6d 61 78 70 75 73 68 6e 61 6d   ┆                   ', maxpushnam┆
0x021f20…021f40             65 73 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 4d 61 78 20 6e 75 6d 62 65 72   ┆es); writeln(output, 'Max number┆
0x021f40…021f60             20 6f 66 20 61 63 74 69 76 65 20 74 79 70 65 73 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ of active types:               ┆
0x021f60…021f80             20 20 20 27 2c 20 6d 61 78 74 79 70 65 73 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c   ┆   ', maxtypes); writeln(output,┆
0x021f80…021fa0             20 27 4d 61 78 20 6e 75 6d 62 65 72 20 6f 66 20 61 63 74 69 76 65 20 73 74 72 69 6e 67 73 3a 20   ┆ 'Max number of active strings: ┆
0x021fa0…021fc0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 20 6d 61 78 73 74 72 69 6e 67 73 29 3b 0a 77   ┆               ', maxstrings); w┆
0x021fc0…021fe0             72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 4d 61 78 20 6e 75 6d 62 65 72 20 6f 66 20 61 63   ┆riteln(output, 'Max number of ac┆
0x021fe0…022000             74 69 76 65 20 6f 70 65 72 61 6e 64 73 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 20   ┆tive operands:               ', ┆
0x022000…022020 (9, 0, 3)   6d 61 78 6f 70 61 6e 64 73 29 3b 0a 68 65 61 70 66 72 65 65 20 3a 3d 20 6d 65 6d 61 76 61 69 6c   ┆maxopands); heapfree := memavail┆
0x022020…022040             3b 0a 72 65 6c 65 61 73 65 28 68 65 61 70 6f 72 67 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70   ┆; release(heaporg); writeln(outp┆
0x022040…022060             75 74 2c 20 27 48 65 65 70 20 73 70 61 63 65 20 75 73 65 64 20 69 6e 20 62 79 74 65 73 3a 20 20   ┆ut, 'Heep space used in bytes:  ┆
0x022060…022080             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20   ┆                  ',            ┆
0x022080…0220a0             20 20 20 20 20 6d 65 6d 61 76 61 69 6c 20 2d 20 68 65 61 70 66 72 65 65 29 3b 0a 77 72 69 74 65   ┆     memavail - heapfree); write┆
0x0220a0…0220c0             6c 6e 28 6f 75 74 70 75 74 29 3b 0a 65 6e 64 3b 20 28 2a 20 73 75 72 76 65 79 20 69 6e 66 6f 72   ┆ln(output); end; (* survey infor┆
0x0220c0…0220e0             6d 61 74 69 6f 6e 20 2a 29 0a 0a 0a 28 2a 20 69 66 20 61 6e 79 20 65 72 72 6f 72 6d 65 73 73 61   ┆mation *)   (* if any errormessa┆
0x0220e0…022100             67 65 73 20 74 68 65 6e 20 70 72 69 6e 74 20 74 68 65 20 64 65 73 63 72 69 70 74 69 6f 6e 73 20   ┆ges then print the descriptions ┆
0x022100…022120             2a 29 0a 69 66 20 28 6e 6f 5f 6f 66 5f 65 72 72 6f 72 73 20 3e 20 30 29 20 6f 72 20 28 6e 6f 5f   ┆*) if (no_of_errors > 0) or (no_┆
0x022120…022140             6f 66 5f 77 61 72 6e 69 6e 67 73 20 3e 20 30 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 61   ┆of_warnings > 0) then begin (* a┆
0x022140…022160             74 20 6c 65 61 73 74 20 6f 6e 65 20 65 72 72 6f 72 2c 20 74 68 65 72 65 66 6f 72 65 20 70 72 65   ┆t least one error, therefore pre┆
0x022160…022180             70 61 72 65 20 74 68 65 20 65 72 72 6f 72 6c 69 73 74 20 2a 29 0a 77 72 69 74 65 6c 6e 20 28 6f   ┆pare the errorlist *) writeln (o┆
0x022180…0221a0             75 74 70 75 74 2c 20 27 52 45 41 4c 2d 54 49 4d 45 20 50 41 53 43 41 4c 2c 20 70 61 73 73 33 2c   ┆utput, 'REAL-TIME PASCAL, pass3,┆
0x0221a0…0221c0             20 76 65 72 73 69 6f 6e 20 27 2c 20 76 65 72 73 69 6f 6e 29 3b 0a 77 72 69 74 65 6c 6e 20 28 6f   ┆ version ', version); writeln (o┆
0x0221c0…0221e0             75 74 70 75 74 2c 20 27 65 72 72 6f 72 20 20 20 64 65 73 63 72 69 70 74 69 6f 6e 27 29 3b 0a 77   ┆utput, 'error   description'); w┆
0x0221e0…022200             72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 63 61 73 65 20 74 61 72 67 65 74 5f 6d 61 63 68   ┆riteln(output); case target_mach┆
0x022200…022220 (9, 0, 4)   69 6e 65 20 6f 66 0a 74 61 72 67 65 74 7a 38 30 2c 74 61 72 67 65 74 33 35 30 32 31 3a 20 61 73   ┆ine of targetz80,target35021: as┆
0x022220…022240             73 69 67 6e 28 69 6e 70 75 74 2c 63 6f 6e 63 61 74 28 72 74 70 33 35 5f 70 61 74 68 6e 61 6d 65   ┆sign(input,concat(rtp35_pathname┆
0x022240…022260             2c 20 69 5f 70 61 73 73 78 5f 65 72 72 31 6e 61 6d 65 29 29 3b 0a 74 61 72 67 65 74 33 35 30 32   ┆, i_passx_err1name)); target3502┆
0x022260…022280             32 3a 20 20 20 20 20 20 20 20 20 20 20 61 73 73 69 67 6e 28 69 6e 70 75 74 2c 63 6f 6e 63 61 74   ┆2:           assign(input,concat┆
0x022280…0222a0             28 72 74 70 33 35 5f 70 61 74 68 6e 61 6d 65 2c 20 69 5f 70 61 73 73 78 5f 65 72 72 32 6e 61 6d   ┆(rtp35_pathname, i_passx_err2nam┆
0x0222a0…0222c0             65 29 29 3b 0a 65 6e 64 3b 0a 28 2a 24 49 2d 2a 29 0a 72 65 73 65 74 28 69 6e 70 75 74 29 3b 0a   ┆e)); end; (*$I-*) reset(input); ┆
0x0222c0…0222e0             69 66 20 69 6f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 74   ┆if ioresult <> 0 then begin if t┆
0x0222e0…022300             61 72 67 65 74 5f 6d 61 63 68 69 6e 65 20 3d 20 74 61 72 67 65 74 33 35 30 32 32 20 74 68 65 6e   ┆arget_machine = target35022 then┆
0x022300…022320             0a 62 65 67 69 6e 0a 6e 6f 66 69 6c 65 28 63 6f 6e 63 61 74 28 72 74 70 33 35 5f 70 61 74 68 6e   ┆ begin nofile(concat(rtp35_pathn┆
0x022320…022340             61 6d 65 2c 20 69 5f 70 61 73 73 78 5f 65 72 72 32 6e 61 6d 65 29 29 3b 0a 65 6e 64 20 65 6c 73   ┆ame, i_passx_err2name)); end els┆
0x022340…022360             65 0a 6e 6f 66 69 6c 65 28 63 6f 6e 63 61 74 28 72 74 70 33 35 5f 70 61 74 68 6e 61 6d 65 2c 20   ┆e nofile(concat(rtp35_pathname, ┆
0x022360…022380             69 5f 70 61 73 73 78 5f 65 72 72 31 6e 61 6d 65 29 29 3b 0a 65 6e 64 3b 0a 28 2a 24 49 2b 2a 29   ┆i_passx_err1name)); end; (*$I+*)┆
0x022380…0223a0             0a 28 2a 20 66 69 6e 64 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 65 72 72 6f 72 2d 74 61 62 6c   ┆ (* find the start of error-tabl┆
0x0223a0…0223c0             65 20 2a 29 0a 72 65 70 65 61 74 0a 72 65 61 64 6c 6e 28 69 6e 70 75 74 2c 20 6e 75 6d 62 65 72   ┆e *) repeat readln(input, number┆
0x0223c0…0223e0             29 3b 0a 75 6e 74 69 6c 20 6e 75 6d 62 65 72 20 3d 20 33 33 33 33 3b 0a 72 65 70 65 61 74 0a 72   ┆); until number = 3333; repeat r┆
0x0223e0…022400             65 61 64 6c 6e 20 28 69 6e 70 75 74 2c 20 63 68 29 3b 0a 75 6e 74 69 6c 20 63 68 20 3d 20 27 28   ┆eadln (input, ch); until ch = '(┆
0x022400…022420 (9, 0, 5)   27 3b 0a 0a 66 6f 72 20 65 72 72 3a 3d 20 6e 6f 65 72 72 6f 72 20 74 6f 20 6c 61 73 74 70 61 73   ┆';  for err:= noerror to lastpas┆
0x022420…022440             73 33 65 72 72 6f 72 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 65 72 72 6f 72 5f 62 69 74 6d 61 70   ┆s3error do begin if error_bitmap┆
0x022440…022460             20 5b 20 65 72 72 20 5d 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 20 28 6f 72 64 20 28   ┆ [ err ] then begin write (ord (┆
0x022460…022480             65 72 72 29 20 3a 20 34 2c 20 27 20 3d 20 20 27 29 3b 0a 77 68 69 6c 65 20 6e 6f 74 20 65 6f 6c   ┆err) : 4, ' =  '); while not eol┆
0x022480…0224a0             6e 20 28 69 6e 70 75 74 29 20 64 6f 0a 62 65 67 69 6e 0a 72 65 70 65 61 74 0a 72 65 61 64 28 69   ┆n (input) do begin repeat read(i┆
0x0224a0…0224c0             6e 70 75 74 2c 63 68 29 3b 0a 75 6e 74 69 6c 20 63 68 20 3d 20 27 2a 27 3b 0a 72 65 61 64 28 69   ┆nput,ch); until ch = '*'; read(i┆
0x0224c0…0224e0             6e 70 75 74 2c 63 68 29 3b 0a 66 69 6e 69 73 68 3a 3d 20 66 61 6c 73 65 3b 0a 77 68 69 6c 65 20   ┆nput,ch); finish:= false; while ┆
0x0224e0…022500             6e 6f 74 20 66 69 6e 69 73 68 20 64 6f 0a 62 65 67 69 6e 0a 72 65 61 64 28 69 6e 70 75 74 2c 63   ┆not finish do begin read(input,c┆
0x022500…022520             68 31 29 3b 0a 66 69 6e 69 73 68 3a 3d 20 28 63 68 20 3d 20 27 2a 27 29 20 61 6e 64 20 28 63 68   ┆h1); finish:= (ch = '*') and (ch┆
0x022520…022540             31 20 3d 20 27 29 27 29 3b 0a 69 66 20 6e 6f 74 20 66 69 6e 69 73 68 20 74 68 65 6e 20 77 72 69   ┆1 = ')'); if not finish then wri┆
0x022540…022560             74 65 28 6f 75 74 70 75 74 2c 63 68 29 3b 0a 63 68 3a 3d 20 63 68 31 3b 0a 65 6e 64 3b 0a 65 6e   ┆te(output,ch); ch:= ch1; end; en┆
0x022560…022580             64 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 65 6e 64 3b 0a 72 65 61 64 6c 6e 20   ┆d; writeln(output); end; readln ┆
0x022580…0225a0             28 69 6e 70 75 74 29 3b 0a 65 6e 64 3b 20 28 2a 20 73 63 61 6e 20 77 68 65 6e 20 65 72 72 6f 72   ┆(input); end; (* scan when error┆
0x0225a0…0225c0             73 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 69 66 20 61 6e 79 20 65 72 72 6f 72 73 20 2a 29 0a 0a 65   ┆s *) end; (* if any errors *)  e┆
0x0225c0…0225e0             6e 64 3b 0a 0a 0c 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 65 72 72 6f 72 2d 68   ┆nd;    (* procedures for error-h┆
0x0225e0…022600             61 6e 64 6c 69 6e 67 20 65 74 63 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 72 69 6e 74 6e   ┆andling etc *)  procedure printn┆
0x022600…022620 (9, 0, 6)   61 6d 65 28 78 73 70 69 78 3a 20 69 6e 74 65 67 65 72 29 3b 0a 28 2a 20 66 69 6e 64 20 74 68 65   ┆ame(xspix: integer); (* find the┆
0x022620…022640             20 6e 61 6d 65 20 77 68 69 63 68 20 63 6f 6e 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 78 73 70 69   ┆ name which conrresponds to xspi┆
0x022640…022660             78 20 61 6e 64 20 70 72 69 6e 74 20 69 74 0a 69 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f 6e 20 77 69   ┆x and print it in conjunction wi┆
0x022660…022680             74 68 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 2a 29 0a 76 61 72 0a 63 68 3a 20   ┆th the error message *) var ch: ┆
0x022680…0226a0             63 68 61 72 3b 0a 62 65 67 69 6e 0a 69 66 20 63 75 72 5f 70 72 69 6e 74 6e 61 6d 65 3d 2d 31 20   ┆char; begin if cur_printname=-1 ┆
0x0226a0…0226c0             74 68 65 6e 20 28 2a 20 66 69 72 73 74 20 63 61 6c 6c 20 6f 72 20 73 70 69 78 74 6f 6e 61 6d 65   ┆then (* first call or spixtoname┆
0x0226c0…0226e0             20 6d 69 73 73 69 6e 67 20 2a 29 0a 62 65 67 69 6e 0a 61 73 73 69 67 6e 28 69 6e 70 75 74 2c 20   ┆ missing *) begin assign(input, ┆
0x0226e0…022700             63 6f 6e 63 61 74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 31 5f 73 70 69 78 6e   ┆concat(path1_name, o_pass1_spixn┆
0x022700…022720             61 6d 65 29 29 3b 0a 65 6e 64 3b 0a 69 66 20 28 63 75 72 5f 70 72 69 6e 74 6e 61 6d 65 3e 3d 78   ┆ame)); end; if (cur_printname>=x┆
0x022720…022740             73 70 69 78 29 20 6f 72 20 28 63 75 72 5f 70 72 69 6e 74 6e 61 6d 65 3d 2d 31 29 20 74 68 65 6e   ┆spix) or (cur_printname=-1) then┆
0x022740…022760             0a 62 65 67 69 6e 0a 28 2a 24 49 2d 2a 29 0a 72 65 73 65 74 28 69 6e 70 75 74 29 3b 0a 69 66 20   ┆ begin (*$I-*) reset(input); if ┆
0x022760…022780             69 6f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 6f 66 69 6c 65 28   ┆ioresult <> 0 then begin nofile(┆
0x022780…0227a0             63 6f 6e 63 61 74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 31 5f 73 70 69 78 6e   ┆concat(path1_name, o_pass1_spixn┆
0x0227a0…0227c0             61 6d 65 29 29 3b 0a 65 6e 64 3b 0a 28 2a 24 49 2b 2a 29 0a 72 65 61 64 28 69 6e 70 75 74 2c 20   ┆ame)); end; (*$I+*) read(input, ┆
0x0227c0…0227e0             63 75 72 5f 70 72 69 6e 74 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 77 68 69 6c 65 20 6e 6f 74 20 65   ┆cur_printname); end; while not e┆
0x0227e0…022800             6f 66 28 69 6e 70 75 74 29 20 61 6e 64 20 28 63 75 72 5f 70 72 69 6e 74 6e 61 6d 65 3c 78 73 70   ┆of(input) and (cur_printname<xsp┆
0x022800…022820 (9, 0, 7)   69 78 29 20 64 6f 0a 62 65 67 69 6e 0a 72 65 61 64 6c 6e 28 69 6e 70 75 74 29 3b 0a 72 65 61 64   ┆ix) do begin readln(input); read┆
0x022820…022840             28 69 6e 70 75 74 2c 20 63 75 72 5f 70 72 69 6e 74 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 69 66 20   ┆(input, cur_printname); end; if ┆
0x022840…022860             63 75 72 5f 70 72 69 6e 74 6e 61 6d 65 3d 78 73 70 69 78 20 74 68 65 6e 20 28 2a 20 6e 61 6d 65   ┆cur_printname=xspix then (* name┆
0x022860…022880             20 66 6f 75 6e 64 20 2a 29 0a 62 65 67 69 6e 0a 77 72 69 74 65 28 6f 75 74 70 75 74 2c 20 27 3a   ┆ found *) begin write(output, ':┆
0x022880…0228a0             20 27 27 27 29 3b 0a 77 68 69 6c 65 20 6e 6f 74 20 65 6f 6c 6e 28 69 6e 70 75 74 29 20 64 6f 0a   ┆ '''); while not eoln(input) do ┆
0x0228a0…0228c0             62 65 67 69 6e 0a 72 65 61 64 28 69 6e 70 75 74 2c 20 63 68 29 3b 0a 69 66 20 28 63 68 3e 3d 27   ┆begin read(input, ch); if (ch>='┆
0x0228c0…0228e0             41 27 29 20 61 6e 64 20 28 63 68 3c 3d 27 5d 27 29 20 74 68 65 6e 0a 63 68 3a 3d 20 63 68 72 28   ┆A') and (ch<=']') then ch:= chr(┆
0x0228e0…022900             6f 72 64 28 63 68 29 2d 6f 72 64 28 27 41 27 29 2b 6f 72 64 28 27 61 27 29 29 3b 0a 69 66 20 63   ┆ord(ch)-ord('A')+ord('a')); if c┆
0x022900…022920             68 3c 3e 27 20 27 20 74 68 65 6e 0a 77 72 69 74 65 28 6f 75 74 70 75 74 2c 20 63 68 29 3b 0a 65   ┆h<>' ' then write(output, ch); e┆
0x022920…022940             6e 64 3b 0a 77 72 69 74 65 28 6f 75 74 70 75 74 2c 20 27 27 27 27 29 3b 0a 65 6e 64 3b 20 28 2a   ┆nd; write(output, ''''); end; (*┆
0x022940…022960             20 6e 61 6d 65 20 66 6f 75 6e 64 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 70 72 69 6e 74 6e 61 6d 65   ┆ name found *) end; (* printname┆
0x022960…022980             20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 77 61 72 6e 20 28 65 72 72 6f 72 3a 20 70 61 73 73   ┆ *)  procedure warn (error: pass┆
0x022980…0229a0             33 65 72 72 6f 72 73 3b 20 65 72 72 3a 20 62 6f 6f 6c 65 61 6e 29 3b 0a 28 2a 20 6d 61 72 6b 20   ┆3errors; err: boolean); (* mark ┆
0x0229a0…0229c0             65 72 72 6f 72 73 20 61 6e 64 20 77 61 72 6e 69 6e 67 73 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20   ┆errors and warnings *) begin if ┆
0x0229c0…0229e0             28 6e 6f 5f 6f 66 5f 65 72 72 6f 72 73 20 3d 20 30 29 20 6f 72 20 74 65 73 74 69 6e 67 20 74 68   ┆(no_of_errors = 0) or testing th┆
0x0229e0…022a00             65 6e 20 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 77 72 69 74 65 20 28 6f 75 74 70 75   ┆en writeln(output); write (outpu┆
0x022a00…022a20 (9, 0, 8)   74 2c 20 27 2a 2a 2a 20 70 61 73 73 20 27 2c 20 6f 77 6e 5f 70 61 73 73 6e 6f 3a 31 2c 0a 27 20   ┆t, '*** pass ', own_passno:1, ' ┆
0x022a20…022a40             6c 69 6e 65 20 27 2c 20 63 75 72 5f 6c 69 6e 65 6e 6f 3a 34 2c 20 27 2e 27 2c 20 63 75 72 5f 6f   ┆line ', cur_lineno:4, '.', cur_o┆
0x022a40…022a60             70 61 6e 64 6e 6f 3a 31 29 3b 0a 69 66 20 65 72 72 20 74 68 65 6e 0a 77 72 69 74 65 28 6f 75 74   ┆pandno:1); if err then write(out┆
0x022a60…022a80             70 75 74 2c 20 27 2c 20 65 72 72 6f 72 20 27 2c 20 6f 72 64 20 28 65 72 72 6f 72 29 3a 32 29 0a   ┆put, ', error ', ord (error):2) ┆
0x022a80…022aa0             65 6c 73 65 0a 77 72 69 74 65 28 6f 75 74 70 75 74 2c 20 27 2c 20 77 61 72 6e 69 6e 67 20 27 2c   ┆else write(output, ', warning ',┆
0x022aa0…022ac0             20 6f 72 64 20 28 65 72 72 6f 72 29 3a 32 29 3b 0a 0a 69 66 20 63 75 72 5f 63 6f 6e 74 65 78 74   ┆ ord (error):2);  if cur_context┆
0x022ac0…022ae0             5f 6e 6f 20 3c 3e 20 2d 31 20 74 68 65 6e 0a 77 72 69 74 65 28 27 2c 20 69 6e 20 65 6e 76 69 72   ┆_no <> -1 then write(', in envir┆
0x022ae0…022b00             6f 6e 6d 65 6e 74 3a 20 27 2c 20 63 75 72 5f 63 6f 6e 74 65 78 74 5f 6e 6f 20 3a 20 32 29 3b 0a   ┆onment: ', cur_context_no : 2); ┆
0x022b00…022b20             69 66 20 28 65 72 72 6f 72 73 70 69 78 3c 3e 2d 31 29 20 61 6e 64 20 28 65 72 72 6f 72 73 70 69   ┆if (errorspix<>-1) and (errorspi┆
0x022b20…022b40             78 3c 3e 61 6e 6f 6e 79 6d 6f 75 73 5f 73 70 69 78 29 20 74 68 65 6e 0a 70 72 69 6e 74 6e 61 6d   ┆x<>anonymous_spix) then printnam┆
0x022b40…022b60             65 28 65 72 72 6f 72 73 70 69 78 29 3b 0a 65 72 72 6f 72 73 70 69 78 3a 3d 20 2d 31 3b 20 28 2a   ┆e(errorspix); errorspix:= -1; (*┆
0x022b60…022b80             20 72 65 73 65 74 20 65 72 72 6f 72 20 73 70 69 78 20 2a 29 0a 77 72 69 74 65 6c 6e 28 6f 75 74   ┆ reset error spix *) writeln(out┆
0x022b80…022ba0             70 75 74 29 3b 0a 65 72 72 6f 72 5f 62 69 74 6d 61 70 20 5b 20 65 72 72 6f 72 20 5d 3a 3d 20 74   ┆put); error_bitmap [ error ]:= t┆
0x022ba0…022bc0             72 75 65 3b 0a 65 6e 64 3b 20 28 2a 20 77 61 72 6e 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆rue; end; (* warn *)  procedure ┆
0x022bc0…022be0             77 61 72 6e 69 6e 67 28 65 72 72 6f 72 20 3a 20 70 61 73 73 33 65 72 72 6f 72 73 29 3b 0a 62 65   ┆warning(error : pass3errors); be┆
0x022be0…022c00             67 69 6e 0a 6e 6f 5f 6f 66 5f 77 61 72 6e 69 6e 67 73 20 3a 3d 20 6e 6f 5f 6f 66 5f 77 61 72 6e   ┆gin no_of_warnings := no_of_warn┆
0x022c00…022c20 (9, 0, 9)   69 6e 67 73 20 2b 20 31 3b 0a 77 61 72 6e 28 65 72 72 6f 72 2c 20 66 61 6c 73 65 29 3b 20 28 2a   ┆ings + 1; warn(error, false); (*┆
0x022c20…022c40             20 6f 6e 6c 79 20 61 20 77 61 72 6e 69 6e 67 20 2a 29 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64   ┆ only a warning *) end;   proced┆
0x022c40…022c60             75 72 65 20 65 72 72 6f 72 20 28 65 72 72 3a 20 70 61 73 73 33 65 72 72 6f 72 73 29 3b 0a 62 65   ┆ure error (err: pass3errors); be┆
0x022c60…022c80             67 69 6e 0a 63 61 6c 6c 5f 70 61 73 73 34 3a 3d 20 66 61 6c 73 65 3b 20 20 28 2a 20 61 76 6f 69   ┆gin call_pass4:= false;  (* avoi┆
0x022c80…022ca0             64 20 63 61 6c 6c 69 6e 67 20 70 61 73 73 34 20 61 75 74 6f 6d 61 74 69 63 6c 79 20 2a 29 0a 65   ┆d calling pass4 automaticly *) e┆
0x022ca0…022cc0             6d 69 74 20 28 78 65 72 72 6f 72 29 3b 0a 65 6d 69 74 69 6e 20 28 6f 77 6e 5f 70 61 73 73 6e 6f   ┆mit (xerror); emitin (own_passno┆
0x022cc0…022ce0             29 3b 0a 65 6d 69 74 69 6e 20 28 6f 72 64 20 28 65 72 72 29 29 3b 0a 65 6d 69 74 20 28 78 65 72   ┆); emitin (ord (err)); emit (xer┆
0x022ce0…022d00             72 6f 72 6e 6f 29 3b 0a 65 6d 69 74 69 6e 20 28 63 75 72 5f 6f 70 61 6e 64 6e 6f 29 3b 0a 77 61   ┆rorno); emitin (cur_opandno); wa┆
0x022d00…022d20             72 6e 20 28 65 72 72 2c 20 74 72 75 65 29 3b 0a 6e 6f 5f 6f 66 5f 65 72 72 6f 72 73 20 3a 3d 20   ┆rn (err, true); no_of_errors := ┆
0x022d20…022d40             6e 6f 5f 6f 66 5f 65 72 72 6f 72 73 20 2b 20 31 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64   ┆no_of_errors + 1; end;    proced┆
0x022d40…022d60             75 72 65 20 73 75 70 70 72 65 73 73 5f 65 72 72 6f 72 20 28 6b 69 6e 64 3a 20 63 6f 64 65 73 3b   ┆ure suppress_error (kind: codes;┆
0x022d60…022d80             20 65 72 72 3a 20 70 61 73 73 33 65 72 72 6f 72 73 29 3b 0a 28 2a 20 74 68 65 20 65 72 72 6f 72   ┆ err: pass3errors); (* the error┆
0x022d80…022da0             2d 6d 65 73 73 61 67 65 20 77 69 6c 6c 20 62 65 20 73 75 70 70 72 65 73 73 65 64 2c 20 69 66 20   ┆-message will be suppressed, if ┆
0x022da0…022dc0             61 6c 72 65 61 64 79 20 61 66 74 65 72 20 65 72 72 6f 72 20 2a 29 0a 28 2a 20 74 68 65 20 74 79   ┆already after error *) (* the ty┆
0x022dc0…022de0             70 65 6e 61 6d 65 20 6f 66 20 73 74 61 63 6b 74 6f 70 20 77 69 6c 6c 20 62 65 20 73 65 74 20 74   ┆pename of stacktop will be set t┆
0x022de0…022e00             6f 20 65 72 72 6f 72 2d 74 79 70 65 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 6b 69 6e 64 20 3c 3e   ┆o error-type *) begin if kind <>┆
0x022e00…022e20 (9, 0, 10)  20 63 65 72 72 6f 72 6b 69 6e 64 20 74 68 65 6e 20 65 72 72 6f 72 20 28 65 72 72 29 3b 0a 65 72   ┆ cerrorkind then error (err); er┆
0x022e20…022e40             72 6f 72 73 70 69 78 20 3a 3d 20 2d 31 3b 20 28 2a 20 72 65 73 65 74 20 65 72 72 6f 72 20 73 70   ┆rorspix := -1; (* reset error sp┆
0x022e40…022e60             69 78 20 2a 29 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 6f 70 5f 74 79 70   ┆ix *) with  stacktop ^ do op_typ┆
0x022e60…022e80             65 6e 61 6d 65 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a   ┆ename:= error_typename; end;    ┆
0x022e80…022ea0             70 72 6f 63 65 64 75 72 65 20 62 72 65 61 6b 3b 0a 28 2a 20 75 73 65 64 20 77 68 65 6e 20 61 20   ┆procedure break; (* used when a ┆
0x022ea0…022ec0             63 61 6c 6c 2d 74 72 61 63 65 20 69 73 20 77 61 6e 74 65 64 20 2a 29 0a 62 65 67 69 6e 0a 74 65   ┆call-trace is wanted *) begin te┆
0x022ec0…022ee0             72 6d 69 6e 61 74 65 3b 20 28 2a 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65 20 66 69 6c 65 73 20   ┆rminate; (* terminate the files ┆
0x022ee0…022f00             65 74 63 20 2a 29 0a 77 72 69 74 65 6c 6e 3b 0a 77 72 69 74 65 6c 6e 20 28 27 2a 2a 2a 2a 2a 20   ┆etc *) writeln; writeln ('***** ┆
0x022f00…022f20             69 6e 74 65 6e 74 69 6f 6e 61 6c 6c 79 20 65 72 72 6f 72 2e 2e 2e 27 29 3b 0a 72 74 70 68 61 6c   ┆intentionally error...'); rtphal┆
0x022f20…022f40             74 28 74 72 75 65 20 28 2a 20 74 65 72 6d 69 6e 61 74 65 20 70 72 6f 67 72 61 6d 20 77 69 74 68   ┆t(true (* terminate program with┆
0x022f40…022f60             20 74 72 61 63 65 20 6f 66 20 61 63 74 69 76 65 20 72 6f 75 74 69 6e 65 73 20 61 6e 64 20 6f 6b   ┆ trace of active routines and ok┆
0x022f60…022f80             2e 6e 6f 20 2a 29 29 3b 0a 28 2a 20 74 68 65 20 70 72 6f 67 72 61 6d 20 69 73 20 74 65 72 6d 69   ┆.no *)); (* the program is termi┆
0x022f80…022fa0             6e 61 74 65 64 20 2a 29 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 74 6f 70 20   ┆nated *) end;    procedure stop ┆
0x022fa0…022fc0             28 63 61 75 73 65 3a 20 73 74 6f 70 63 6f 64 65 73 29 3b 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c   ┆(cause: stopcodes); begin writel┆
0x022fc0…022fe0             6e 20 28 6f 75 74 70 75 74 29 3b 0a 77 72 69 74 65 6c 6e 20 28 27 2a 2a 2a 20 65 72 72 6f 72 20   ┆n (output); writeln ('*** error ┆
0x022fe0…023000             66 6f 75 6e 64 20 69 6e 20 70 61 73 73 33 2c 20 61 74 20 73 6f 75 72 63 65 6c 69 6e 65 3a 20 27   ┆found in pass3, at sourceline: '┆
0x023000…023020 (9, 0, 11)  2c 20 63 75 72 5f 6c 69 6e 65 6e 6f 3a 31 29 3b 0a 0a 63 61 73 65 20 63 61 75 73 65 20 6f 66 0a   ┆, cur_lineno:1);  case cause of ┆
0x023020…023040             74 6f 6f 5f 6d 61 6e 79 5f 6e 65 73 74 65 64 5f 63 61 6c 6c 73 3a 0a 77 72 69 74 65 6c 6e 20 28   ┆too_many_nested_calls: writeln (┆
0x023040…023060             27 6d 61 78 5f 6e 65 73 74 65 64 5f 63 61 6c 6c 73 20 65 78 63 65 65 64 65 64 27 2c 20 6d 61 78   ┆'max_nested_calls exceeded', max┆
0x023060…023080             5f 6e 65 73 74 65 64 5f 63 61 6c 6c 73 29 3b 0a 65 6c 73 65 20 77 72 69 74 65 6c 6e 20 28 27 3f   ┆_nested_calls); else writeln ('?┆
0x023080…0230a0             3f 3f 20 73 74 6f 70 2d 63 61 75 73 65 20 3d 20 27 2c 20 6f 72 64 20 28 63 61 75 73 65 29 3a 31   ┆?? stop-cause = ', ord (cause):1┆
0x0230a0…0230c0             29 3b 0a 65 6e 64 3b 0a 0a 63 61 6c 6c 5f 70 61 73 73 34 3a 3d 20 66 61 6c 73 65 3b 20 20 28 2a   ┆); end;  call_pass4:= false;  (*┆
0x0230c0…0230e0             20 73 75 70 70 72 65 73 73 20 61 75 74 6f 6d 61 74 69 63 20 63 61 6c 6c 20 6f 66 20 6e 65 78 74   ┆ suppress automatic call of next┆
0x0230e0…023100             20 70 61 73 73 20 2a 29 0a 0a 6d 79 65 78 69 74 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65   ┆ pass *)  myexit;  end;    proce┆
0x023100…023120             64 75 72 65 20 63 6f 6d 70 5f 65 72 72 6f 72 20 28 63 61 75 73 65 3a 20 63 6f 6d 70 5f 65 72 72   ┆dure comp_error (cause: comp_err┆
0x023120…023140             6f 72 63 6f 64 65 73 29 3b 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 3b 0a 77 72 69 74 65 6c 6e   ┆orcodes); begin writeln; writeln┆
0x023140…023160             20 28 27 2a 2a 2a 20 70 72 6f 67 72 61 6d 20 69 6e 63 6f 6e 73 69 73 74 65 6e 63 79 20 69 6e 20   ┆ ('*** program inconsistency in ┆
0x023160…023180             70 61 73 73 33 2c 20 61 74 20 73 6f 75 72 63 65 6c 69 6e 65 20 27 2c 20 63 75 72 5f 6c 69 6e 65   ┆pass3, at sourceline ', cur_line┆
0x023180…0231a0             6e 6f 3a 31 29 3b 0a 77 72 69 74 65 20 20 20 28 27 20 20 20 20 63 61 75 73 65 20 69 73 3a 20 27   ┆no:1); write   ('    cause is: '┆
0x0231a0…0231c0             29 3b 0a 63 61 73 65 20 63 61 75 73 65 20 6f 66 0a 75 6e 6b 6e 6f 77 6e 5f 6e 61 6d 65 6b 69 6e   ┆); case cause of unknown_namekin┆
0x0231c0…0231e0             64 3a 20 77 72 69 74 65 20 28 27 75 6e 6b 6e 6f 77 6e 2d 6e 61 6d 65 6b 69 6e 64 27 29 3b 0a 75   ┆d: write ('unknown-namekind'); u┆
0x0231e0…023200             6e 6b 6e 6f 77 6e 5f 61 72 67 6b 69 6e 64 3a 20 77 72 69 74 65 20 28 27 75 6e 6b 6e 6f 77 6e 2d   ┆nknown_argkind: write ('unknown-┆
0x023200…023220 (9, 0, 12)  61 72 67 6b 69 6e 64 27 29 3b 0a 75 6e 6b 6e 6f 77 6e 5f 6f 70 63 6f 64 65 3a 20 77 72 69 74 65   ┆argkind'); unknown_opcode: write┆
0x023220…023240             20 28 27 75 6e 6b 6e 6f 77 6e 2d 6f 70 63 6f 64 65 27 29 3b 0a 75 6e 6b 6e 6f 77 6e 5f 70 61 72   ┆ ('unknown-opcode'); unknown_par┆
0x023240…023260             61 6d 6b 69 6e 64 3a 20 77 72 69 74 65 20 28 27 75 6e 6b 6e 6f 77 6e 2d 70 61 72 61 6d 6b 69 6e   ┆amkind: write ('unknown-paramkin┆
0x023260…023280             64 27 29 3b 0a 75 6e 6b 6e 6f 77 6e 5f 72 6f 75 74 69 6e 65 6b 69 6e 64 3a 20 77 72 69 74 65 20   ┆d'); unknown_routinekind: write ┆
0x023280…0232a0             28 27 75 6e 6b 6e 6f 77 6e 2d 72 6f 75 74 69 6e 65 6b 69 6e 64 27 29 3b 0a 75 6e 6b 6e 6f 77 6e   ┆('unknown-routinekind'); unknown┆
0x0232a0…0232c0             5f 73 70 69 78 3a 20 77 72 69 74 65 20 28 27 75 6e 6b 6e 6f 77 6e 2d 73 70 69 78 27 29 3b 0a 75   ┆_spix: write ('unknown-spix'); u┆
0x0232c0…0232e0             6e 6b 6e 6f 77 6e 5f 73 74 64 74 79 70 65 5f 6e 61 6d 65 3a 20 77 72 69 74 65 20 28 27 75 6e 6b   ┆nknown_stdtype_name: write ('unk┆
0x0232e0…023300             6e 6f 77 6e 2d 73 74 64 74 79 70 65 2d 6e 61 6d 65 27 29 3b 0a 75 6e 6b 6e 6f 77 6e 5f 74 79 70   ┆nown-stdtype-name'); unknown_typ┆
0x023300…023320             65 6b 69 6e 64 3a 20 77 72 69 74 65 20 28 27 75 6e 6b 6e 6f 77 6e 2d 74 79 70 65 6b 69 6e 64 27   ┆ekind: write ('unknown-typekind'┆
0x023320…023340             29 3b 0a 75 6e 6b 6e 6f 77 6e 5f 72 65 63 74 79 70 65 3a 20 77 72 69 74 65 20 28 27 75 6e 6b 6e   ┆); unknown_rectype: write ('unkn┆
0x023340…023360             6f 77 6e 2d 72 65 63 74 79 70 65 27 29 3b 0a 69 6e 63 6f 6e 73 69 73 74 5f 61 6c 6c 6f 63 3a 20   ┆own-rectype'); inconsist_alloc: ┆
0x023360…023380             77 72 69 74 65 20 28 27 69 6e 63 6f 6e 73 69 73 74 65 6e 74 2d 61 6c 6c 6f 63 27 29 3b 0a 77 72   ┆write ('inconsistent-alloc'); wr┆
0x023380…0233a0             6f 6e 67 5f 76 65 72 73 69 6f 6e 3a 20 77 72 69 74 65 20 28 27 77 72 6f 6e 67 20 70 61 73 73 31   ┆ong_version: write ('wrong pass1┆
0x0233a0…0233c0             2f 70 61 73 73 33 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 27 29 3b 0a 75 6e 73 74 61 63 6b 5f 6e 6f   ┆/pass3 combination'); unstack_no┆
0x0233c0…0233e0             6e 74 79 70 65 3a 20 77 72 69 74 65 20 28 27 75 6e 73 74 61 63 6b 2d 6e 6f 6e 74 79 70 65 27 29   ┆ntype: write ('unstack-nontype')┆
0x0233e0…023400             3b 0a 74 6f 6f 5f 6d 61 6e 79 5f 74 79 70 65 73 3a 20 77 72 69 74 65 28 27 69 6e 63 6f 6e 73 69   ┆; too_many_types: write('inconsi┆
0x023400…023420 (9, 0, 13)  73 74 65 6e 74 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 79 70 65 20 6e 6f 64 65 27 29 3b   ┆stent allocation of type node');┆
0x023420…023440             0a 65 6c 73 65 20 77 72 69 74 65 20 28 27 3f 3f 3f 20 3d 20 27 2c 20 6f 72 64 28 63 61 75 73 65   ┆ else write ('??? = ', ord(cause┆
0x023440…023460             29 3a 31 20 29 3b 0a 65 6e 64 3b 0a 0a 62 72 65 61 6b 3b 20 28 2a 20 74 65 72 6d 69 6e 61 74 65   ┆):1 ); end;  break; (* terminate┆
0x023460…023480             20 70 72 6f 67 72 61 6d 2c 20 77 69 74 68 20 63 61 6c 6c 2d 74 72 61 63 65 20 2a 29 0a 0a 65 6e   ┆ program, with call-trace *)  en┆
0x023480…0234a0             64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 63 6f 6d 70 5f 65 72 72 6f 72 20 2a 29 0a 0a 0a   ┆d; (* procedure comp_error *)   ┆
0x0234a0…0234c0             0a 70 72 6f 63 65 64 75 72 65 20 72 65 61 64 6f 70 74 69 6f 6e 3b 0a 28 2a 20 72 65 61 64 73 3a   ┆ procedure readoption; (* reads:┆
0x0234c0…0234e0             20 70 61 73 73 6e 6f 2c 20 6f 70 74 69 6f 6e 20 6e 75 6d 62 65 72 2c 20 6f 70 74 69 6f 6e 20 76   ┆ passno, option number, option v┆
0x0234e0…023500             61 6c 75 65 20 2a 29 0a 28 2a 20 69 66 20 70 61 73 73 6e 6f 20 69 73 20 6e 6f 74 20 63 75 72 72   ┆alue *) (* if passno is not curr┆
0x023500…023520             65 6e 74 20 70 61 73 73 20 74 68 65 6e 20 65 6d 69 74 20 74 68 65 20 6f 70 74 69 6f 6e 20 2a 29   ┆ent pass then emit the option *)┆
0x023520…023540             0a 0a 76 61 72 20 70 61 73 73 6e 6f 2c 20 6f 70 74 6e 6f 2c 20 6f 70 74 76 61 6c 75 65 3a 20 69   ┆  var passno, optno, optvalue: i┆
0x023540…023560             6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 70 61 73 73 6e 6f 20 20 3a 3d 20 70 61 73 73 69   ┆nteger;  begin  passno  := passi┆
0x023560…023580             6e 3b 0a 6f 70 74 6e 6f 20 20 20 3a 3d 20 70 61 73 73 69 6e 3b 0a 6f 70 74 76 61 6c 75 65 3a 3d   ┆n; optno   := passin; optvalue:=┆
0x023580…0235a0             20 70 61 73 73 69 6e 3b 0a 0a 69 66 20 70 61 73 73 6e 6f 20 3c 3e 20 6f 77 6e 5f 70 61 73 73 6e   ┆ passin;  if passno <> own_passn┆
0x0235a0…0235c0             6f 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 70 61 73 73 6e 6f 20 3d 20 30 20 74 68 65 6e 20   ┆o then begin if passno = 0 then ┆
0x0235c0…0235e0             28 2a 20 76 65 72 73 69 6f 6e 2d 69 64 65 6e 74 69 66 69 63 61 74 69 6f 6e 20 2a 29 0a 69 66 20   ┆(* version-identification *) if ┆
0x0235e0…023600             6f 70 74 6e 6f 20 3d 20 31 20 28 2a 20 70 61 73 73 20 31 20 2a 29 20 74 68 65 6e 0a 69 66 20 28   ┆optno = 1 (* pass 1 *) then if (┆
0x023600…023620 (9, 0, 14)  6f 70 74 76 61 6c 75 65 20 64 69 76 20 31 30 30 20 3c 3e 20 76 65 72 73 69 6f 6e 70 61 73 73 31   ┆optvalue div 100 <> versionpass1┆
0x023620…023640             20 64 69 76 20 31 30 30 29 20 6f 72 0a 28 6f 70 74 76 61 6c 75 65 20 6d 6f 64 20 31 30 30 20 3c   ┆ div 100) or (optvalue mod 100 <┆
0x023640…023660             20 76 65 72 73 69 6f 6e 70 61 73 73 31 20 6d 6f 64 20 31 30 30 29 20 74 68 65 6e 0a 63 6f 6d 70   ┆ versionpass1 mod 100) then comp┆
0x023660…023680             5f 65 72 72 6f 72 20 28 77 72 6f 6e 67 5f 76 65 72 73 69 6f 6e 29 3b 0a 65 6d 69 74 20 20 20 28   ┆_error (wrong_version); emit   (┆
0x023680…0236a0             78 6f 70 74 69 6f 6e 29 3b 0a 65 6d 69 74 69 6e 20 28 70 61 73 73 6e 6f 29 3b 0a 65 6d 69 74 69   ┆xoption); emitin (passno); emiti┆
0x0236a0…0236c0             6e 20 28 6f 70 74 6e 6f 29 3b 0a 65 6d 69 74 69 6e 20 28 6f 70 74 76 61 6c 75 65 29 3b 0a 65 6e   ┆n (optno); emitin (optvalue); en┆
0x0236c0…0236e0             64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 63 61 73 65 20 6f 70 74 6e 6f 20 6f 66 0a 31 3a 20 74 65   ┆d else begin case optno of 1: te┆
0x0236e0…023700             73 74 69 6e 70 75 74 20 20 3a 3d 20 6f 70 74 76 61 6c 75 65 20 3d 20 31 3b 0a 32 3a 20 74 65 73   ┆stinput  := optvalue = 1; 2: tes┆
0x023700…023720             74 6f 75 74 70 75 74 20 3a 3d 20 6f 70 74 76 61 6c 75 65 20 3d 20 31 3b 0a 33 3a 20 63 61 6c 6c   ┆toutput := optvalue = 1; 3: call┆
0x023720…023740             5f 70 61 73 73 34 20 3a 3d 20 6f 70 74 76 61 6c 75 65 20 3d 20 31 3b 0a 34 3a 20 74 61 72 67 65   ┆_pass4 := optvalue = 1; 4: targe┆
0x023740…023760             74 5f 6d 61 63 68 69 6e 65 3a 3d 20 6f 70 74 76 61 6c 75 65 3b 0a 35 3a 20 73 75 72 76 65 79 5f   ┆t_machine:= optvalue; 5: survey_┆
0x023760…023780             69 6e 66 6f 3a 3d 20 6f 70 74 76 61 6c 75 65 3d 31 3b 0a 36 3a 20 70 72 65 73 65 72 76 65 5f 6f   ┆info:= optvalue=1; 6: preserve_o┆
0x023780…0237a0             70 74 69 6f 6e 3a 3d 20 6f 70 74 76 61 6c 75 65 3d 31 3b 0a 65 6c 73 65 3b 0a 65 6e 64 3b 0a 65   ┆ption:= optvalue=1; else; end; e┆
0x0237a0…0237c0             6e 64 3b 0a 74 65 73 74 69 6e 67 3a 3d 20 74 65 73 74 69 6e 70 75 74 20 6f 72 20 74 65 73 74 6f   ┆nd; testing:= testinput or testo┆
0x0237c0…0237e0             75 74 70 75 74 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 72 65 61 64 6f 70   ┆utput;  end; (* procedure readop┆
0x0237e0…023800             74 69 6f 6e 20 2a 29 0a 0a 0c 0a 2a 20 70 61 73 73 20 31 20 2a 29 20 74 68 65 6e 0a 69 66 20 28   ┆tion *)    * pass 1 *) then if (┆
0x023800…023820 (9, 0, 15)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 78 70 33 70 72 6f 63 00 00 00 00 00 00 00   ┆../sw2103/src/rtp/xp3proc       ┆
0x023820…023840             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x023860…023880             00 00 00 00 20 20 20 37 35 35 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       755     255     146      ┆
0x023880…0238a0             20 31 33 30 36 36 34 20 20 35 32 36 36 37 36 37 33 30 33 20 20 31 30 33 31 36 00 20 00 00 00 00   ┆ 130664  5266767303  10316      ┆
0x0238a0…0238c0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x023a00…023a20 (9, 1, 1)   0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ (*-----------------------------┆
0x023a20…023a40             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x023a40…023a60             2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39 32 20 20 44   ┆---- -- -- (C) Copyrigth 1992  D┆
0x023a60…023a80             41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ANOSI -- -----------------------┆
0x023a80…023aa0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x023aa0…023ac0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09   ┆------------ -- -- Revisions -- ┆
0x023ac0…023ae0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x023ae0…023b00             0a 2d 2d 20 20 20 20 20 20 20 20 39 32 2e 30 31 2e 32 32 20 20 45 42 4b 20 20 20 55 73 65 64 20   ┆ --        92.01.22  EBK   Used ┆
0x023b00…023b20             69 6e 20 72 65 6c 65 61 73 65 20 31 2e 31 32 0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e   ┆in release 1.12 --  1.1   92.10.┆
0x023b20…023b40             31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d   ┆14  HEJ   SCCS and UNIX used. --┆
0x023b40…023b60             0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -------------------------------┆
0x023b60…023b80             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x023b80…023ba0             2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65   ┆---- -- SCCS information -- File┆
0x023ba0…023bc0             20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f 64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65   ┆   :  %P% -- Module :  %M% -- Ve┆
0x023bc0…023be0             72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09 44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55   ┆rsion:  %I% -- Date   :  %E%  %U┆
0x023be0…023c00             25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆% ------------------------------┆
0x023c00…023c20 (9, 1, 2)   2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x023c20…023c40             2d 2d 2d 2d 2d 0a 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 66 6f 72 6d 61 6c 20 28   ┆----- *)  procedure emitformal (┆
0x023c40…023c60             70 6c 69 73 74 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 28 20 70   ┆plist: nameptr); (* output:  ( p┆
0x023c60…023c80             61 72 61 6d 69 64 28 6e 69 78 29 20 3c 74 79 70 65 3e 20 63 70 61 72 61 6d 2f 76 70 61 72 61 6d   ┆aramid(nix) <type> cparam/vparam┆
0x023c80…023ca0             20 29 2a 20 20 2a 29 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 5f 6f 6e 65 5f 66 6f 72 6d 61   ┆ )*  *) procedure emit_one_forma┆
0x023ca0…023cc0             6c 20 28 78 70 61 72 61 6d 6b 69 6e 64 3a 20 70 61 73 73 33 63 6f 64 65 73 29 3b 0a 62 65 67 69   ┆l (xparamkind: pass3codes); begi┆
0x023cc0…023ce0             6e 0a 69 66 20 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 20 63 6f 6e 74 69 6e 75 65 5f 6c 69   ┆n if testoutput then continue_li┆
0x023ce0…023d00             6e 65 3b 0a 65 6d 69 74 69 64 20 28 78 70 61 72 61 6d 69 64 2c 20 70 6c 69 73 74 29 3b 0a 65 6d   ┆ne; emitid (xparamid, plist); em┆
0x023d00…023d20             69 74 74 79 70 65 20 28 20 20 70 6c 69 73 74 20 5e 20 2e 20 74 79 70 65 6e 61 6d 65 20 29 3b 0a   ┆ittype (  plist ^ . typename ); ┆
0x023d20…023d40             65 6d 69 74 20 28 78 70 61 72 61 6d 6b 69 6e 64 29 3b 0a 65 6e 64 3b 0a 62 65 67 69 6e 0a 0a 77   ┆emit (xparamkind); end; begin  w┆
0x023d40…023d60             68 69 6c 65 20 70 6c 69 73 74 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 20 70   ┆hile plist <> nilname do with  p┆
0x023d60…023d80             6c 69 73 74 20 5e 20 64 6f 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 63 75 72 72 65 6e 74   ┆list ^ do (* namenode of current┆
0x023d80…023da0             20 70 61 72 61 6d 65 74 65 72 20 2a 29 0a 62 65 67 69 6e 0a 63 61 73 65 20 6e 61 6d 65 6b 69 6e   ┆ parameter *) begin case namekin┆
0x023da0…023dc0             64 20 6f 66 0a 63 66 75 6e 63 76 61 6c 3a 20 65 6d 69 74 5f 6f 6e 65 5f 66 6f 72 6d 61 6c 20 28   ┆d of cfuncval: emit_one_formal (┆
0x023dc0…023de0             78 76 61 72 70 61 72 61 6d 29 3b 20 20 20 20 20 28 2a 20 66 75 6e 63 74 69 6f 6e 20 76 61 6c 75   ┆xvarparam);     (* function valu┆
0x023de0…023e00             65 20 2a 29 0a 63 76 61 6c 75 65 70 3a 20 20 65 6d 69 74 5f 6f 6e 65 5f 66 6f 72 6d 61 6c 20 28   ┆e *) cvaluep:  emit_one_formal (┆
0x023e00…023e20 (9, 1, 3)   78 76 61 6c 75 65 70 61 72 61 6d 29 3b 20 20 20 20 20 20 28 2a 20 76 61 6c 75 65 20 70 61 72 61   ┆xvalueparam);      (* value para┆
0x023e20…023e40             6d 65 74 65 72 20 2a 29 0a 63 76 61 72 70 3a 20 20 20 20 65 6d 69 74 5f 6f 6e 65 5f 66 6f 72 6d   ┆meter *) cvarp:    emit_one_form┆
0x023e40…023e60             61 6c 20 28 78 76 61 72 70 61 72 61 6d 29 3b 20 20 20 20 20 20 20 20 28 2a 20 76 61 72 20 70 61   ┆al (xvarparam);        (* var pa┆
0x023e60…023e80             72 61 6d 65 74 65 72 20 2a 29 0a 63 74 79 70 65 2c 20 20 20 20 20 20 20 20 28 2a 20 69 6d 70 6c   ┆rameter *) ctype,        (* impl┆
0x023e80…023ea0             69 63 69 74 20 74 79 70 65 20 64 65 63 6c 73 20 2a 29 0a 63 75 6e 64 65 63 6c 61 72 65 64 2c 20   ┆icit type decls *) cundeclared, ┆
0x023ea0…023ec0             20 28 2a 20 75 6e 64 65 63 6c 61 72 65 64 20 74 79 70 65 6e 61 6d 65 73 20 2a 29 0a 63 73 63 61   ┆ (* undeclared typenames *) csca┆
0x023ec0…023ee0             6c 61 72 65 6c 65 6d 3a 20 20 28 2a 20 73 63 61 6c 61 72 2d 65 6c 65 6d 73 20 6f 66 20 69 6d 70   ┆larelem:  (* scalar-elems of imp┆
0x023ee0…023f00             6c 69 63 69 74 20 74 79 70 65 64 65 63 6c 73 20 2a 29 0a 3b 20 28 2a 20 6e 6f 20 61 63 74 69 6f   ┆licit typedecls *) ; (* no actio┆
0x023f00…023f20             6e 20 2a 29 0a 65 6c 73 65 0a 63 6f 6d 70 5f 65 72 72 6f 72 28 75 6e 6b 6e 6f 77 6e 5f 70 61 72   ┆n *) else comp_error(unknown_par┆
0x023f20…023f40             61 6d 6b 69 6e 64 29 3b 0a 65 6e 64 3b 0a 0a 70 6c 69 73 74 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b   ┆amkind); end;  plist:= nextname;┆
0x023f40…023f60             20 20 28 2a 20 66 6f 6c 6c 6f 77 20 63 68 61 69 6e 20 2a 29 0a 65 6e 64 3b 20 20 28 2a 20 77 68   ┆  (* follow chain *) end;  (* wh┆
0x023f60…023f80             69 6c 65 2f 77 69 74 68 20 70 6c 69 73 74 20 2a 29 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65   ┆ile/with plist *)  end;    proce┆
0x023f80…023fa0             64 75 72 65 20 65 6d 69 74 72 6f 75 74 69 6e 65 68 65 61 64 20 28 78 6e 61 6d 65 3a 20 6e 61 6d   ┆dure emitroutinehead (xname: nam┆
0x023fa0…023fc0             65 70 74 72 29 3b 0a 28 2a 20 27 78 6e 61 6d 65 27 20 69 73 20 74 68 65 20 6e 61 6d 65 6e 6f 64   ┆eptr); (* 'xname' is the namenod┆
0x023fc0…023fe0             65 20 6f 66 20 74 68 65 20 72 6f 75 74 69 6e 65 20 2a 29 0a 0a 28 2a 20 69 66 20 74 68 69 73 20   ┆e of the routine *)  (* if this ┆
0x023fe0…024000             69 73 20 73 65 63 6f 6e 64 20 65 6d 69 74 20 6f 66 20 72 6f 75 74 69 6e 65 68 65 61 64 2c 20 69   ┆is second emit of routinehead, i┆
0x024000…024020 (9, 1, 4)   2e 65 2e 20 65 61 72 6c 69 65 72 20 77 61 73 20 27 66 6f 72 77 61 72 64 27 20 2a 29 0a 28 2a 20   ┆.e. earlier was 'forward' *) (* ┆
0x024020…024040             20 20 20 74 68 65 6e 20 65 6d 69 74 20 73 68 6f 72 74 20 64 65 73 63 72 69 70 74 69 6f 6e 2c 0a   ┆   then emit short description, ┆
0x024040…024060             28 2a 20 20 20 20 6f 74 68 65 72 77 69 73 65 20 65 6d 69 74 20 74 68 65 20 63 6f 6d 70 6c 65 74   ┆(*    otherwise emit the complet┆
0x024060…024080             65 20 72 6f 75 74 69 6e 65 20 68 65 61 64 20 2a 29 0a 0a 62 65 67 69 6e 0a 0a 77 69 74 68 20 20   ┆e routine head *)  begin  with  ┆
0x024080…0240a0             78 6e 61 6d 65 20 5e 20 64 6f 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 72 6f 75 74 69 6e   ┆xname ^ do (* namenode of routin┆
0x0240a0…0240c0             65 20 2a 29 0a 69 66 20 66 6f 72 77 61 72 64 5f 64 65 63 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆e *) if forward_decl then begin ┆
0x0240c0…0240e0             63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 6f 66 0a 63 70 72 6f 63 65 73 73 2c 0a 63 70 72 6f 63   ┆case namekind of cprocess, cproc┆
0x0240e0…024100             65 64 75 72 65 3a 20 65 6d 69 74 69 64 20 28 78 73 65 63 70 72 6f 63 69 64 2c 20 78 6e 61 6d 65   ┆edure: emitid (xsecprocid, xname┆
0x024100…024120             29 3b 0a 63 66 75 6e 63 74 69 6f 6e 3a 20 20 65 6d 69 74 69 64 20 28 78 73 65 63 66 75 6e 63 69   ┆); cfunction:  emitid (xsecfunci┆
0x024120…024140             64 2c 20 78 6e 61 6d 65 29 3b 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20   ┆d, xname); else if compilertest ┆
0x024140…024160             74 68 65 6e 20 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f 6e 61 6d 65 6b 69 6e   ┆then comp_error (unknown_namekin┆
0x024160…024180             64 29 3b 0a 65 6e 64 3b 0a 65 6d 69 74 5f 65 78 74 6e 61 6d 65 20 28 6f 70 61 6e 64 5f 70 72 6f   ┆d); end; emit_extname (opand_pro┆
0x024180…0241a0             63 6e 61 6d 65 29 3b 20 20 28 2a 20 65 6d 69 74 20 74 68 65 20 6e 61 6d 65 20 6f 6e 63 65 20 61   ┆cname);  (* emit the name once a┆
0x0241a0…0241c0             67 61 69 6e 2e 2e 2e 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 63 61 73 65 20   ┆gain... *) end else begin  case ┆
0x0241c0…0241e0             6e 61 6d 65 6b 69 6e 64 20 6f 66 0a 63 70 72 6f 63 65 73 73 3a 20 20 20 65 6d 69 74 69 64 20 28   ┆namekind of cprocess:   emitid (┆
0x0241e0…024200             78 70 72 6f 63 65 73 73 69 64 2c 20 78 6e 61 6d 65 29 3b 0a 63 70 72 6f 63 65 64 75 72 65 3a 20   ┆xprocessid, xname); cprocedure: ┆
0x024200…024220 (9, 1, 5)   65 6d 69 74 69 64 20 28 78 70 72 6f 63 69 64 2c 20 78 6e 61 6d 65 29 3b 0a 63 66 75 6e 63 74 69   ┆emitid (xprocid, xname); cfuncti┆
0x024220…024240             6f 6e 3a 20 20 65 6d 69 74 69 64 20 28 78 66 75 6e 63 69 64 2c 20 78 6e 61 6d 65 29 3b 0a 65 6c   ┆on:  emitid (xfuncid, xname); el┆
0x024240…024260             73 65 0a 63 6f 6d 70 5f 65 72 72 6f 72 28 75 6e 6b 6e 6f 77 6e 5f 72 6f 75 74 69 6e 65 6b 69 6e   ┆se comp_error(unknown_routinekin┆
0x024260…024280             64 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 70 72 6f 63 65 73 73   ┆d); end;  if namekind = cprocess┆
0x024280…0242a0             20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 65 6d 69 74 20 74 68 65 20 73 6f 6e 20 76 61 72 20   ┆ then begin (* emit the son var ┆
0x0242a0…0242c0             6e 69 78 20 2a 29 0a 65 6d 69 74 69 6e 20 28 6e 65 78 74 6e 61 6d 65 5e 2e 6e 69 78 29 3b 20 28   ┆nix *) emitin (nextname^.nix); (┆
0x0242c0…0242e0             2a 20 27 73 6f 6e 76 61 72 27 20 69 73 20 6e 65 78 74 20 74 6f 20 27 70 72 6f 63 65 73 73 6e 61   ┆* 'sonvar' is next to 'processna┆
0x0242e0…024300             6d 65 27 20 2a 29 0a 65 6d 69 74 69 6e 20 28 73 6f 6e 5f 74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78   ┆me' *) emitin (son_typename^.nix┆
0x024300…024320             29 3b 20 20 28 2a 20 74 79 70 65 2d 6e 69 78 20 6f 66 20 27 73 6f 6e 76 61 72 69 61 62 6c 65 27   ┆);  (* type-nix of 'sonvariable'┆
0x024320…024340             20 2a 29 0a 65 6e 64 3b 0a 0a 28 2a 20 65 6d 69 74 20 65 78 74 65 72 6e 61 6c 20 6e 61 6d 65 20   ┆ *) end;  (* emit external name ┆
0x024340…024360             6f 66 20 74 68 65 20 72 6f 75 74 69 6e 65 20 2a 29 0a 65 6d 69 74 5f 65 78 74 6e 61 6d 65 20 28   ┆of the routine *) emit_extname (┆
0x024360…024380             6f 70 61 6e 64 5f 70 72 6f 63 6e 61 6d 65 29 3b 0a 0a 28 2a 20 65 6d 69 74 20 66 6f 72 6d 61 6c   ┆opand_procname);  (* emit formal┆
0x024380…0243a0             6c 69 73 74 20 2a 29 0a 65 6d 69 74 66 6f 72 6d 61 6c 20 28 70 61 72 61 6d 73 29 3b 0a 0a 65 6e   ┆list *) emitformal (params);  en┆
0x0243a0…0243c0             64 3b 20 28 2a 20 69 66 20 66 69 72 73 74 20 65 6d 69 73 73 69 6f 6e 20 6f 66 20 74 68 69 73 20   ┆d; (* if first emission of this ┆
0x0243c0…0243e0             72 6f 75 74 69 6e 65 20 68 65 61 64 20 2a 29 0a 0a 28 2a 20 73 65 74 20 66 6c 61 67 20 74 6f 20   ┆routine head *)  (* set flag to ┆
0x0243e0…024400             6c 6f 6f 6b 20 66 6f 72 20 66 69 72 73 74 20 6c 6f 63 61 6c 20 64 65 63 6c 61 72 61 74 69 6f 6e   ┆look for first local declaration┆
0x024400…024420 (9, 1, 6)   20 2a 29 0a 65 78 70 65 63 74 69 6e 67 5f 62 6c 6f 63 6b 3a 3d 20 74 72 75 65 3b 0a 0a 65 6e 64   ┆ *) expecting_block:= true;  end┆
0x024420…024440             3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 72 6f 75 74 69 6e 65 68 65 61 64 20 2a   ┆; (* procedure emitroutinehead *┆
0x024440…024460             29 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 74 65 73 74 70 72 6f 63 65 73 73 70 61 72 61 6d 20 28   ┆)    function testprocessparam (┆
0x024460…024480             78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 20 64 61 6e 67 65 72 6f 75 73 3a 20 62   ┆xtypename: nameptr; dangerous: b┆
0x024480…0244a0             6f 6f 6c 65 61 6e 29 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 28 2a 20 72 65 74 75 72 6e 73 20 74 72   ┆oolean) : boolean; (* returns tr┆
0x0244a0…0244c0             75 65 2c 20 69 66 20 74 68 65 20 74 79 70 65 20 63 6f 6e 74 61 69 6e 73 20 28 6f 72 20 6d 61 79   ┆ue, if the type contains (or may┆
0x0244c0…0244e0             20 72 65 61 63 68 20 76 69 61 20 70 6f 69 6e 74 65 72 73 29 20 2a 29 0a 28 2a 20 20 20 73 68 61   ┆ reach via pointers) *) (*   sha┆
0x0244e0…024500             64 6f 77 2c 20 72 65 66 65 72 65 6e 63 65 20 6f 72 20 70 6f 6f 6c 20 20 20 20 20 20 20 20 20 20   ┆dow, reference or pool          ┆
0x024500…024520             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 2a 29 0a 28 2a 20   ┆                          *) (* ┆
0x024520…024540             6f 72 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   ┆or                              ┆
0x024540…024560             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 2a   ┆                               *┆
0x024560…024580             29 0a 28 2a 20 20 20 61 20 70 6f 69 6e 74 65 72 2c 20 77 68 69 63 68 20 69 74 20 6e 6f 74 20 70   ┆) (*   a pointer, which it not p┆
0x024580…0245a0             72 6f 74 65 63 74 65 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆rotected                        ┆
0x0245a0…0245c0             20 20 20 20 2a 29 0a 63 6f 6e 73 74 0a 73 74 61 72 74 5f 74 79 70 65 5f 72 61 6e 67 65 3d 20 30   ┆    *) const start_type_range= 0┆
0x0245c0…0245e0             3b 0a 74 6f 70 5f 74 79 70 65 5f 72 61 6e 67 65 20 20 3d 20 35 30 3b 0a 0a 74 79 70 65 0a 74 79   ┆; top_type_range  = 50;  type ty┆
0x0245e0…024600             70 65 5f 72 61 6e 67 65 3d 20 73 74 61 72 74 5f 74 79 70 65 5f 72 61 6e 67 65 2e 2e 74 6f 70 5f   ┆pe_range= start_type_range..top_┆
0x024600…024620 (9, 1, 7)   74 79 70 65 5f 72 61 6e 67 65 3b 0a 76 61 72 0a 6e 6f 5f 6f 66 5f 70 6f 69 6e 74 65 72 73 20 3a   ┆type_range; var no_of_pointers :┆
0x024620…024640             20 74 79 70 65 5f 72 61 6e 67 65 3b 20 20 28 2a 20 63 6f 75 6e 74 73 20 6e 75 6d 62 65 72 20 6f   ┆ type_range;  (* counts number o┆
0x024640…024660             66 20 74 65 73 74 65 64 20 70 6f 69 6e 74 65 72 2d 74 79 70 65 73 20 2a 29 0a 63 68 65 63 6b 65   ┆f tested pointer-types *) checke┆
0x024660…024680             64 5f 70 6f 69 6e 74 65 72 73 20 3a 20 61 72 72 61 79 20 5b 20 74 79 70 65 5f 72 61 6e 67 65 20   ┆d_pointers : array [ type_range ┆
0x024680…0246a0             5d 20 6f 66 20 6e 61 6d 65 70 74 72 3b 20 20 28 2a 20 63 6f 6e 74 61 69 6e 73 20 74 79 70 65 6e   ┆] of nameptr;  (* contains typen┆
0x0246a0…0246c0             61 6d 65 73 20 2a 29 0a 70 61 72 61 6d 5f 65 72 72 6f 72 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a   ┆ames *) param_error : boolean;  ┆
0x0246c0…0246e0             70 72 6f 63 65 64 75 72 65 20 74 65 73 74 20 28 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70   ┆procedure test (xtypename: namep┆
0x0246e0…024700             74 72 3b 20 64 61 6e 67 65 72 6f 75 73 3a 20 62 6f 6f 6c 65 61 6e 29 3b 0a 76 61 72 0a 66 69 65   ┆tr; dangerous: boolean); var fie┆
0x024700…024720             6c 64 3a 20 6e 61 6d 65 70 74 72 3b 0a 70 74 72 5f 69 6e 64 65 78 3a 20 74 79 70 65 5f 72 61 6e   ┆ld: nameptr; ptr_index: type_ran┆
0x024720…024740             67 65 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 6e 6f 74 20 70 61 72 61 6d 5f 65 72 72 6f 72 20 74 68   ┆ge;  begin if not param_error th┆
0x024740…024760             65 6e 0a 77 69 74 68 20 20 78 74 79 70 65 6e 61 6d 65 20 5e 20 64 6f 20 20 28 2a 20 6e 61 6d 65   ┆en with  xtypename ^ do  (* name┆
0x024760…024780             6e 6f 64 65 20 6f 66 20 74 68 65 20 74 79 70 65 20 74 6f 20 62 65 20 74 65 73 74 65 64 20 2a 29   ┆node of the type to be tested *)┆
0x024780…0247a0             0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 20 20 20 20 20 20 28 2a 20 63 6f 72 72 65 73 70 6f   ┆ with  typ ^ do      (* correspo┆
0x0247a0…0247c0             6e 64 69 6e 67 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 69 66 20 5b 20 74 5f 73 68 61 64 6f 77 2c   ┆nding typenode *) if [ t_shadow,┆
0x0247c0…0247e0             20 74 5f 72 65 66 65 72 65 6e 63 65 2c 20 74 5f 70 6f 6f 6c 2c 20 74 5f 65 78 74 70 72 6f 63 65   ┆ t_reference, t_pool, t_extproce┆
0x0247e0…024800             73 73 20 5d 20 2a 20 63 6f 6e 74 65 6e 74 73 20 28 2a 20 6f 66 20 74 79 70 65 6e 6f 64 65 20 2a   ┆ss ] * contents (* of typenode *┆
0x024800…024820 (9, 1, 8)   29 20 3c 3e 20 5b 5d 20 74 68 65 6e 0a 70 61 72 61 6d 5f 65 72 72 6f 72 3a 3d 20 74 72 75 65 0a   ┆) <> [] then param_error:= true ┆
0x024820…024840             65 6c 73 65 0a 69 66 20 74 5f 70 6f 69 6e 74 65 72 20 69 6e 20 63 6f 6e 74 65 6e 74 73 20 28 2a   ┆else if t_pointer in contents (*┆
0x024840…024860             20 6f 66 20 74 79 70 65 6e 6f 64 65 20 2a 29 20 74 68 65 6e 0a 63 61 73 65 20 74 79 70 65 6b 69   ┆ of typenode *) then case typeki┆
0x024860…024880             6e 64 20 28 2a 20 6f 66 20 74 79 70 65 6e 6f 64 65 20 2a 29 20 6f 66 0a 63 61 6c 69 61 73 2c 0a   ┆nd (* of typenode *) of calias, ┆
0x024880…0248a0             63 61 72 72 61 79 3a 0a 74 65 73 74 20 28 65 6c 65 6d 65 6e 74 2c 20 64 61 6e 67 65 72 6f 75 73   ┆carray: test (element, dangerous┆
0x0248a0…0248c0             29 3b 0a 63 72 65 63 6f 72 64 3a 0a 62 65 67 69 6e 0a 66 69 65 6c 64 3a 3d 20 65 6c 65 6d 65 6e   ┆); crecord: begin field:= elemen┆
0x0248c0…0248e0             74 3b 0a 77 68 69 6c 65 20 66 69 65 6c 64 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77 69 74   ┆t; while field <> nilname do wit┆
0x0248e0…024900             68 20 20 66 69 65 6c 64 20 5e 20 64 6f 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 66 69   ┆h  field ^ do  (* namenode of fi┆
0x024900…024920             65 6c 64 20 2a 29 0a 62 65 67 69 6e 0a 74 65 73 74 20 28 74 79 70 65 6e 61 6d 65 2c 20 64 61 6e   ┆eld *) begin test (typename, dan┆
0x024920…024940             67 65 72 6f 75 73 29 3b 0a 66 69 65 6c 64 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 0a 65 6e 64 3b 0a   ┆gerous); field:= nextname; end; ┆
0x024940…024960             65 6e 64 3b 0a 63 72 65 61 64 6f 6e 6c 79 3a 0a 74 65 73 74 20 28 65 6c 65 6d 65 6e 74 2c 20 66   ┆end; creadonly: test (element, f┆
0x024960…024980             61 6c 73 65 29 3b 0a 63 70 6f 69 6e 74 65 72 3a 0a 69 66 20 64 61 6e 67 65 72 6f 75 73 20 74 68   ┆alse); cpointer: if dangerous th┆
0x024980…0249a0             65 6e 0a 70 61 72 61 6d 5f 65 72 72 6f 72 3a 3d 20 74 72 75 65 0a 65 6c 73 65 0a 28 2a 20 74 65   ┆en param_error:= true else (* te┆
0x0249a0…0249c0             73 74 20 74 68 61 74 20 74 68 65 20 6f 75 74 70 6f 69 6e 74 65 64 20 74 79 70 65 20 68 61 73 27   ┆st that the outpointed type has'┆
0x0249c0…0249e0             6e 74 20 62 65 65 6e 20 74 65 73 74 65 64 20 61 6c 72 65 61 64 79 20 2a 29 0a 28 2a 20 69 2e 65   ┆nt been tested already *) (* i.e┆
0x0249e0…024a00             2e 20 27 72 65 63 75 72 73 69 76 65 27 20 70 6f 69 6e 74 65 72 20 2a 29 0a 66 6f 72 20 70 74 72   ┆. 'recursive' pointer *) for ptr┆
0x024a00…024a20 (9, 1, 9)   5f 69 6e 64 65 78 3a 3d 20 73 74 61 72 74 5f 74 79 70 65 5f 72 61 6e 67 65 20 74 6f 20 6e 6f 5f   ┆_index:= start_type_range to no_┆
0x024a20…024a40             6f 66 5f 70 6f 69 6e 74 65 72 73 20 64 6f 0a 69 66 20 70 74 72 5f 69 6e 64 65 78 20 3d 20 6e 6f   ┆of_pointers do if ptr_index = no┆
0x024a40…024a60             5f 6f 66 5f 70 6f 69 6e 74 65 72 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a 63 68 65 63 6b 65 64 5f   ┆_of_pointers then begin checked_┆
0x024a60…024a80             70 6f 69 6e 74 65 72 73 20 5b 20 6e 6f 5f 6f 66 5f 70 6f 69 6e 74 65 72 73 20 5d 3a 3d 20 65 6c   ┆pointers [ no_of_pointers ]:= el┆
0x024a80…024aa0             65 6d 65 6e 74 3b 0a 6e 6f 5f 6f 66 5f 70 6f 69 6e 74 65 72 73 3a 3d 20 6e 6f 5f 6f 66 5f 70 6f   ┆ement; no_of_pointers:= no_of_po┆
0x024aa0…024ac0             69 6e 74 65 72 73 20 2b 20 31 3b 0a 74 65 73 74 20 28 65 6c 65 6d 65 6e 74 2c 20 74 72 75 65 29   ┆inters + 1; test (element, true)┆
0x024ac0…024ae0             3b 20 20 28 2a 20 66 72 6f 6d 20 6e 6f 77 20 6f 6e 3a 20 72 65 61 6c 6c 79 20 64 61 6e 67 65 72   ┆;  (* from now on: really danger┆
0x024ae0…024b00             6f 75 73 20 2e 2e 2e 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 63 68 65 63 6b 65 64 5f 70   ┆ous ... *) end else if checked_p┆
0x024b00…024b20             6f 69 6e 74 65 72 73 20 5b 20 70 74 72 5f 69 6e 64 65 78 20 5d 20 3d 20 65 6c 65 6d 65 6e 74 20   ┆ointers [ ptr_index ] = element ┆
0x024b20…024b40             74 68 65 6e 0a 70 74 72 5f 69 6e 64 65 78 3a 3d 20 6e 6f 5f 6f 66 5f 70 6f 69 6e 74 65 72 73 3b   ┆then ptr_index:= no_of_pointers;┆
0x024b40…024b60             20 20 28 2a 20 66 6f 72 63 65 20 66 61 73 74 20 65 78 69 74 20 6f 66 20 6c 6f 6f 70 20 2a 29 0a   ┆  (* force fast exit of loop *) ┆
0x024b60…024b80             0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 20 63 6f 6d 70 5f   ┆ else if compilertest then comp_┆
0x024b80…024ba0             65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f 74 79 70 65 6b 69 6e 64 29 3b 0a 65 6e 64 3b 20 28   ┆error (unknown_typekind); end; (┆
0x024ba0…024bc0             2a 20 63 61 73 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 73   ┆* case *)  end; (* procedure tes┆
0x024bc0…024be0             74 20 2a 29 0a 0a 62 65 67 69 6e 20 28 2a 20 62 6f 64 79 20 6f 66 20 74 65 73 74 70 72 6f 63 65   ┆t *)  begin (* body of testproce┆
0x024be0…024c00             73 73 70 61 72 61 6d 20 2a 29 0a 6e 6f 5f 6f 66 5f 70 6f 69 6e 74 65 72 73 3a 3d 20 73 74 61 72   ┆ssparam *) no_of_pointers:= star┆
0x024c00…024c20 (9, 1, 10)  74 5f 74 79 70 65 5f 72 61 6e 67 65 3b 0a 70 61 72 61 6d 5f 65 72 72 6f 72 3a 3d 20 66 61 6c 73   ┆t_type_range; param_error:= fals┆
0x024c20…024c40             65 3b 0a 74 65 73 74 20 28 78 74 79 70 65 6e 61 6d 65 2c 20 64 61 6e 67 65 72 6f 75 73 29 3b 0a   ┆e; test (xtypename, dangerous); ┆
0x024c40…024c60             74 65 73 74 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 70 61 72 61 6d 5f 65 72 72 6f 72 3b 0a   ┆testprocessparam:= param_error; ┆
0x024c60…024c80             65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 70 72 6f 63 65 73 73 70 61 72   ┆end; (* procedure testprocesspar┆
0x024c80…024ca0             61 6d 20 2a 29 0a 0a 0c 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 68 61 6e 64 6c   ┆am *)    (* procedures for handl┆
0x024ca0…024cc0             69 6e 67 20 6f 66 20 6c 61 62 65 6c 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2f 64 65 66 69 6e 69   ┆ing of label declarations/defini┆
0x024cc0…024ce0             74 69 6f 6e 73 2f 75 73 65 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 73 65 75 64 6f 64 65   ┆tions/use *)  procedure pseudode┆
0x024ce0…024d00             66 69 6e 65 20 28 78 73 63 6f 70 65 6e 6f 3a 20 6c 61 62 65 6c 72 61 6e 67 65 3b 20 78 73 70 69   ┆fine (xscopeno: labelrange; xspi┆
0x024d00…024d20             78 3a 20 73 70 69 78 72 61 6e 67 65 29 3b 0a 28 2a 20 74 68 65 20 6c 61 62 65 6c 2d 64 65 66 69   ┆x: spixrange); (* the label-defi┆
0x024d20…024d40             6e 69 74 69 6f 6e 20 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e 20 74 68 65 20 6c 6f 63 61 6c 20   ┆nition is inserted in the local ┆
0x024d40…024d60             6c 61 62 65 6c 2d 6c 69 73 74 20 2a 29 0a 0a 76 61 72 0a 63 75 72 6c 61 62 65 6c 3a 20 6c 61 62   ┆label-list *)  var curlabel: lab┆
0x024d60…024d80             65 6c 70 74 72 3b 0a 6d 75 6c 74 64 65 66 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 62 65 67 69 6e   ┆elptr; multdef : boolean;  begin┆
0x024d80…024da0             0a 0a 28 2a 20 74 65 73 74 20 66 6f 72 20 6d 75 6c 74 69 70 6c 65 20 64 65 66 69 6e 69 74 69 6f   ┆  (* test for multiple definitio┆
0x024da0…024dc0             6e 20 2a 29 0a 0a 63 75 72 6c 61 62 65 6c 3a 3d 20 6c 61 73 74 6c 61 62 65 6c 3b 0a 6d 75 6c 74   ┆n *)  curlabel:= lastlabel; mult┆
0x024dc0…024de0             64 65 66 20 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 73 75 70 70 6f 73 65 20 6f 6b 20 2a 29 0a 0a   ┆def := false; (* suppose ok *)  ┆
0x024de0…024e00             77 68 69 6c 65 20 63 75 72 6c 61 62 65 6c 20 3c 3e 20 6e 69 6c 6c 61 62 65 6c 20 64 6f 0a 77 69   ┆while curlabel <> nillabel do wi┆
0x024e00…024e20 (9, 1, 11)  74 68 20 20 63 75 72 6c 61 62 65 6c 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 6c 61 62 65 6c   ┆th  curlabel ^ do begin if label┆
0x024e20…024e40             73 70 69 78 20 3d 20 78 73 70 69 78 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6d 75 6c 74 64 65 66 20   ┆spix = xspix then begin multdef ┆
0x024e40…024e60             3a 3d 20 74 72 75 65 3b 0a 6d 75 6c 74 66 6c 61 67 3a 3d 20 74 72 75 65 3b 20 28 2a 20 6d 61 72   ┆:= true; multflag:= true; (* mar┆
0x024e60…024e80             6b 20 74 68 65 20 6c 61 62 65 6c 6e 6f 64 65 20 61 73 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 20   ┆k the labelnode as inconsistent ┆
0x024e80…024ea0             2a 29 0a 65 6e 64 3b 0a 63 75 72 6c 61 62 65 6c 3a 3d 20 70 72 65 76 6c 61 62 65 6c 3b 20 20 28   ┆*) end; curlabel:= prevlabel;  (┆
0x024ea0…024ec0             2a 20 66 6f 6c 6c 6f 77 20 63 68 61 69 6e 20 62 61 63 6b 77 61 72 64 73 20 2a 29 0a 65 6e 64 3b   ┆* follow chain backwards *) end;┆
0x024ec0…024ee0             0a 0a 28 2a 20 61 6c 6c 6f 63 61 74 65 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 20 6e   ┆  (* allocate and initialize a n┆
0x024ee0…024f00             65 77 20 6c 61 62 65 6c 6e 6f 64 65 20 2a 29 0a 0a 63 75 72 6c 61 62 65 6c 3a 3d 20 61 6c 6c 6f   ┆ew labelnode *)  curlabel:= allo┆
0x024f00…024f20             63 5f 6c 61 62 65 6c 3b 0a 77 69 74 68 20 20 63 75 72 6c 61 62 65 6c 20 5e 20 64 6f 0a 62 65 67   ┆c_label; with  curlabel ^ do beg┆
0x024f20…024f40             69 6e 0a 6c 61 62 65 6c 73 70 69 78 20 3a 3d 20 78 73 70 69 78 3b 0a 6c 61 62 65 6c 73 63 6f 70   ┆in labelspix := xspix; labelscop┆
0x024f40…024f60             65 3a 3d 20 78 73 63 6f 70 65 6e 6f 3b 0a 6c 61 62 65 6c 73 74 61 74 65 3a 3d 20 6f 75 74 73 69   ┆e:= xscopeno; labelstate:= outsi┆
0x024f60…024f80             64 65 5f 73 63 6f 70 65 3b 0a 6d 75 6c 74 66 6c 61 67 20 20 3a 3d 20 6d 75 6c 74 64 65 66 3b 20   ┆de_scope; multflag  := multdef; ┆
0x024f80…024fa0             28 2a 20 6d 61 72 6b 20 69 74 20 61 73 20 28 69 6e 29 63 6f 6e 73 69 73 74 65 6e 74 20 2a 29 0a   ┆(* mark it as (in)consistent *) ┆
0x024fa0…024fc0             75 73 65 64 5f 66 72 6f 6d 5f 69 6e 6e 65 72 5f 72 6f 75 74 69 6e 65 73 3a 3d 20 66 61 6c 73 65   ┆used_from_inner_routines:= false┆
0x024fc0…024fe0             3b 0a 0a 70 72 65 76 6c 61 62 65 6c 20 3a 3d 20 6c 61 73 74 6c 61 62 65 6c 3b 20 20 28 2a 20 69   ┆;  prevlabel := lastlabel;  (* i┆
0x024fe0…025000             6e 73 65 72 74 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 6f 74 68 65 72 20 6c 61 62 65 6c 20 64 65   ┆nsert in front of other label de┆
0x025000…025020 (9, 1, 12)  66 73 20 2a 29 0a 6c 61 73 74 6c 61 62 65 6c 20 3a 3d 20 63 75 72 6c 61 62 65 6c 3b 0a 0a 28 2a   ┆fs *) lastlabel := curlabel;  (*┆
0x025020…025040             20 74 65 73 74 20 66 6f 72 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 6f 6e 20 63 75 72 72 65 6e 74   ┆ test for declaration on current┆
0x025040…025060             20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 73 65 61 72 63 68 73 70 69 78 20 28 78 73 70 69 78 2c   ┆ namelevel *) searchspix (xspix,┆
0x025060…025080             20 6e 61 6d 65 6c 65 76 65 6c 2c 20 6e 61 6d 65 6c 65 76 65 6c 29 3b 0a 6c 61 62 65 6c 6e 61 6d   ┆ namelevel, namelevel); labelnam┆
0x025080…0250a0             65 3a 3d 20 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65 3b 20 20 28 2a 20 3d 20 6e 69 6c 6e 61 6d   ┆e:= retrieved_name;  (* = nilnam┆
0x0250a0…0250c0             65 2c 20 69 66 20 75 6e 64 65 63 6c 61 72 65 64 20 2a 29 0a 77 69 74 68 20 20 6c 61 62 65 6c 6e   ┆e, if undeclared *) with  labeln┆
0x0250c0…0250e0             61 6d 65 20 5e 20 64 6f 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 6c 61 62 65 6c 20 74   ┆ame ^ do if namekind <> clabel t┆
0x0250e0…025100             68 65 6e 0a 6c 61 62 65 6c 6e 61 6d 65 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 0a 28 2a 20 74 65 73   ┆hen labelname:= nilname;  (* tes┆
0x025100…025120             74 20 66 6f 72 20 75 73 65 20 66 72 6f 6d 20 69 6e 6e 65 72 20 72 6f 75 74 69 6e 65 73 20 2a 29   ┆t for use from inner routines *)┆
0x025120…025140             0a 28 2a 20 20 20 69 66 20 73 6f 2c 20 69 74 20 62 65 74 74 65 72 20 62 65 20 64 65 66 69 6e 65   ┆ (*   if so, it better be define┆
0x025140…025160             64 20 61 74 20 6f 75 74 65 72 6d 6f 73 74 20 6c 61 62 65 6c 73 63 6f 70 65 20 2a 29 0a 69 66 20   ┆d at outermost labelscope *) if ┆
0x025160…025180             6c 61 62 65 6c 6e 61 6d 65 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 74 68 65 6e 0a 77 69 74 68 20 20   ┆labelname <> nilname then with  ┆
0x025180…0251a0             6c 61 62 65 6c 6e 61 6d 65 20 5e 20 64 6f 0a 69 66 20 75 73 65 64 6c 65 76 65 6c 20 3c 3e 20 6e   ┆labelname ^ do if usedlevel <> n┆
0x0251a0…0251c0             69 6c 5f 6e 61 6d 65 73 74 61 63 6b 5f 70 74 72 20 74 68 65 6e 0a 28 2a 20 69 74 20 68 61 73 20   ┆il_namestack_ptr then (* it has ┆
0x0251c0…0251e0             62 65 65 6e 20 75 73 65 64 20 2a 29 0a 75 73 65 64 5f 66 72 6f 6d 5f 69 6e 6e 65 72 5f 72 6f 75   ┆been used *) used_from_inner_rou┆
0x0251e0…025200             74 69 6e 65 73 3a 3d 20 74 72 75 65 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 63 75 72 6c   ┆tines:= true;  end; (* with curl┆
0x025200…025220 (9, 1, 13)  61 62 65 6c 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 70 73 65 75 64   ┆abel *)  end; (* procedure pseud┆
0x025220…025240             6f 64 65 66 69 6e 65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 69 74 6c 61 62 65   ┆odefine *)    procedure initlabe┆
0x025240…025260             6c 73 3b 0a 28 2a 20 63 61 6c 6c 65 64 20 61 74 20 65 6e 64 64 65 63 6c 61 72 61 74 69 6f 6e 2c   ┆ls; (* called at enddeclaration,┆
0x025260…025280             20 61 74 20 27 62 65 67 69 6e 27 20 2a 29 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 74 68   ┆ at 'begin' *) (* initializes th┆
0x025280…0252a0             65 20 6c 61 62 65 6c 6e 6f 64 65 73 20 66 72 6f 6d 20 27 70 61 73 73 33 6c 61 62 65 6c 73 27 20   ┆e labelnodes from 'pass3labels' ┆
0x0252a0…0252c0             2a 29 0a 0a 76 61 72 20 6c 61 62 3a 20 6c 61 62 65 6c 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 28   ┆*)  var lab: labelptr;  begin  (┆
0x0252c0…0252e0             2a 20 73 65 74 20 61 6c 6c 20 6c 61 62 65 6c 6e 6f 64 65 73 20 69 6e 20 66 72 65 65 2d 6c 69 73   ┆* set all labelnodes in free-lis┆
0x0252e0…025300             74 20 2a 29 0a 6c 61 62 3a 3d 20 66 72 65 65 6c 61 62 65 6c 73 3b 0a 77 68 69 6c 65 20 6c 61 62   ┆t *) lab:= freelabels; while lab┆
0x025300…025320             3c 3e 6e 69 6c 6c 61 62 65 6c 20 64 6f 0a 77 69 74 68 20 20 6c 61 62 20 5e 20 64 6f 0a 62 65 67   ┆<>nillabel do with  lab ^ do beg┆
0x025320…025340             69 6e 0a 70 72 65 76 6c 61 62 65 6c 3a 3d 20 66 72 65 65 6c 61 62 65 6c 73 3b 0a 66 72 65 65 6c   ┆in prevlabel:= freelabels; freel┆
0x025340…025360             61 62 65 6c 73 3a 3d 20 6c 61 62 3b 0a 65 6e 64 3b 0a 6c 61 73 74 6c 61 62 65 6c 3a 3d 20 6e 69   ┆abels:= lab; end; lastlabel:= ni┆
0x025360…025380             6c 6c 61 62 65 6c 3b 20 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 6c 69 73 74 20 6f 66 20 64 65   ┆llabel; (* initialize list of de┆
0x025380…0253a0             66 69 6e 65 64 20 6c 61 62 65 6c 73 20 2a 29 0a 0a 77 68 69 6c 65 20 63 6f 6e 76 74 61 62 6c 65   ┆fined labels *)  while convtable┆
0x0253a0…0253c0             20 5b 20 6c 61 62 65 6c 69 6e 20 28 2a 20 3d 20 72 65 63 74 79 70 65 20 69 6e 20 6c 61 62 65 6c   ┆ [ labelin (* = rectype in label┆
0x0253c0…0253e0             66 69 6c 65 20 2a 29 20 5d 20 3d 20 63 6c 61 62 65 6c 64 65 66 20 64 6f 0a 70 73 65 75 64 6f 64   ┆file *) ] = clabeldef do pseudod┆
0x0253e0…025400             65 66 69 6e 65 20 28 6c 61 62 65 6c 69 6e 20 28 2a 20 3d 20 73 63 6f 70 65 6e 6f 20 2a 29 2c 20   ┆efine (labelin (* = scopeno *), ┆
0x025400…025420 (9, 1, 14)  6c 61 62 65 6c 69 6e 20 28 2a 20 3d 20 73 70 69 78 20 2a 29 20 29 3b 0a 0a 65 6e 64 3b 20 28 2a   ┆labelin (* = spix *) );  end; (*┆
0x025420…025440             20 70 72 6f 63 65 64 75 72 65 20 69 6e 69 74 6c 61 62 65 6c 73 20 2a 29 0a 0a 0a 0a 70 72 6f 63   ┆ procedure initlabels *)    proc┆
0x025440…025460             65 64 75 72 65 20 64 65 66 69 6e 65 6c 61 62 65 6c 20 28 78 73 63 6f 70 65 6e 6f 3a 20 6c 61 62   ┆edure definelabel (xscopeno: lab┆
0x025460…025480             65 6c 72 61 6e 67 65 3b 20 78 73 70 69 78 3a 20 73 70 69 78 72 61 6e 67 65 29 3b 0a 28 2a 20 73   ┆elrange; xspix: spixrange); (* s┆
0x025480…0254a0             65 61 72 63 68 65 73 20 74 68 65 20 6c 6f 63 61 6c 20 6c 61 62 65 6c 73 20 74 6f 20 72 65 74 72   ┆earches the local labels to retr┆
0x0254a0…0254c0             69 65 76 65 20 74 68 65 20 77 61 6e 74 65 64 20 6c 61 62 65 6c 20 2a 29 0a 0a 76 61 72 0a 63 75   ┆ieve the wanted label *)  var cu┆
0x0254c0…0254e0             72 6c 61 62 65 6c 3a 20 6c 61 62 65 6c 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 63 68 65   ┆rlabel: labelptr;  begin  (* che┆
0x0254e0…025500             63 6b 20 74 68 65 20 6c 69 73 74 20 6f 66 20 64 65 66 69 6e 65 64 20 6c 61 62 65 6c 73 20 74 6f   ┆ck the list of defined labels to┆
0x025500…025520             20 70 72 6f 64 75 63 65 20 65 72 72 6f 72 73 20 2a 29 0a 0a 63 75 72 6c 61 62 65 6c 3a 3d 20 6c   ┆ produce errors *)  curlabel:= l┆
0x025520…025540             61 73 74 6c 61 62 65 6c 3b 0a 77 68 69 6c 65 20 63 75 72 6c 61 62 65 6c 20 3c 3e 20 6e 69 6c 6c   ┆astlabel; while curlabel <> nill┆
0x025540…025560             61 62 65 6c 20 64 6f 0a 77 69 74 68 20 20 63 75 72 6c 61 62 65 6c 20 5e 20 64 6f 0a 69 66 20 6c   ┆abel do with  curlabel ^ do if l┆
0x025560…025580             61 62 65 6c 73 70 69 78 20 3d 20 78 73 70 69 78 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 72 6f   ┆abelspix = xspix then begin erro┆
0x025580…0255a0             72 73 70 69 78 3a 3d 20 6c 61 62 65 6c 73 70 69 78 3b 20 28 2a 20 70 72 65 70 61 72 65 20 65 72   ┆rspix:= labelspix; (* prepare er┆
0x0255a0…0255c0             72 6f 72 20 6d 65 73 73 61 67 65 20 2a 29 0a 69 66 20 6d 75 6c 74 66 6c 61 67 20 74 68 65 6e 0a   ┆ror message *) if multflag then ┆
0x0255c0…0255e0             65 72 72 6f 72 20 28 6d 75 6c 74 69 70 6c 65 5f 64 65 66 69 6e 65 64 5f 6c 61 62 65 6c 29 3b 0a   ┆error (multiple_defined_label); ┆
0x0255e0…025600             69 66 20 6c 61 62 65 6c 6e 61 6d 65 20 3d 20 6e 69 6c 6e 61 6d 65 20 74 68 65 6e 0a 65 72 72 6f   ┆if labelname = nilname then erro┆
0x025600…025620 (9, 1, 15)  72 20 28 6c 61 62 65 6c 5f 6e 6f 74 5f 64 65 63 6c 61 72 65 64 29 3b 0a 69 66 20 75 73 65 64 5f   ┆r (label_not_declared); if used_┆
0x025620…025640             66 72 6f 6d 5f 69 6e 6e 65 72 5f 72 6f 75 74 69 6e 65 73 20 74 68 65 6e 0a 65 72 72 6f 72 20 28   ┆from_inner_routines then error (┆
0x025640…025660             6c 61 62 65 6c 5f 75 73 65 64 5f 66 72 6f 6d 5f 69 6e 6e 65 72 29 3b 0a 28 2a 20 6e 62 6e 62 6e   ┆label_used_from_inner); (* nbnbn┆
0x025660…025680             62 20 68 76 65 6d 20 63 68 65 63 6b 65 72 20 65 72 6b 6c 20 70 61 61 20 79 64 65 72 73 74 65 20   ┆b hvem checker erkl paa yderste ┆
0x025680…0256a0             73 63 6f 70 65 20 3f 20 2a 29 0a 65 72 72 6f 72 73 70 69 78 3a 3d 20 2d 31 3b 20 28 2a 20 72 65   ┆scope ? *) errorspix:= -1; (* re┆
0x0256a0…0256c0             73 65 74 20 65 72 72 6f 72 73 70 69 78 20 2a 29 0a 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 6c 61   ┆set errorspix *)  (* output:  la┆
0x0256c0…0256e0             62 65 6c 28 6c 61 62 65 6c 6e 69 78 29 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 6c 61 62 65 6c 2c   ┆bel(labelnix) *) emitid (xlabel,┆
0x0256e0…025700             20 6c 61 62 65 6c 6e 61 6d 65 29 3b 0a 0a 63 75 72 6c 61 62 65 6c 3a 3d 20 6e 69 6c 6c 61 62 65   ┆ labelname);  curlabel:= nillabe┆
0x025700…025720             6c 3b 0a 65 6e 64 0a 65 6c 73 65 0a 63 75 72 6c 61 62 65 6c 3a 3d 20 70 72 65 76 6c 61 62 65 6c   ┆l; end else curlabel:= prevlabel┆
0x025720…025740             3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 65 74 5f 6c 61 62 65 6c 5f 73   ┆;  end;    procedure set_label_s┆
0x025740…025760             74 61 74 65 20 28 73 65 74 73 63 6f 70 65 3a 20 62 6f 6f 6c 65 61 6e 29 3b 0a 28 2a 20 75 73 65   ┆tate (setscope: boolean); (* use┆
0x025760…025780             64 20 62 79 3a 20 62 65 67 69 6e 2f 65 6e 64 2d 6c 61 62 65 6c 2d 73 63 6f 70 65 20 2a 29 0a 28   ┆d by: begin/end-label-scope *) (┆
0x025780…0257a0             2a 20 74 68 65 20 6c 61 62 65 6c 73 74 61 74 65 73 2c 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20   ┆* the labelstates, belonging to ┆
0x0257a0…0257c0             63 75 72 72 65 6e 74 20 6c 61 62 65 6c 73 63 6f 70 65 20 61 72 65 20 73 65 74 20 2a 29 0a 28 2a   ┆current labelscope are set *) (*┆
0x0257c0…0257e0             20 20 20 74 6f 20 69 6e 73 69 64 65 2f 6f 75 74 73 69 64 65 20 6c 61 62 65 6c 20 73 63 6f 70 65   ┆   to inside/outside label scope┆
0x0257e0…025800             20 2a 29 0a 76 61 72 0a 63 75 72 6c 61 62 65 6c 3a 20 6c 61 62 65 6c 70 74 72 3b 0a 0a 62 65 67   ┆ *) var curlabel: labelptr;  beg┆
0x025800…025820 (10, 0, 1)  69 6e 0a 0a 63 75 72 6c 61 62 65 6c 3a 3d 20 6c 61 73 74 6c 61 62 65 6c 3b 0a 77 68 69 6c 65 20   ┆in  curlabel:= lastlabel; while ┆
0x025820…025840             63 75 72 6c 61 62 65 6c 20 3c 3e 20 6e 69 6c 6c 61 62 65 6c 20 64 6f 0a 77 69 74 68 20 20 63 75   ┆curlabel <> nillabel do with  cu┆
0x025840…025860             72 6c 61 62 65 6c 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 0a 28 2a 20 66 69 72 73 74 3a 20 72 65 6f   ┆rlabel ^ do begin  (* first: reo┆
0x025860…025880             70 65 6e 20 61 6e 79 20 6c 61 62 65 6c 73 2c 20 68 69 64 64 65 6e 20 62 79 20 74 68 69 73 20 6c   ┆pen any labels, hidden by this l┆
0x025880…0258a0             61 62 65 6c 73 63 6f 70 65 20 2a 29 0a 69 66 20 6c 61 62 65 6c 73 74 61 74 65 20 3d 20 68 69 64   ┆abelscope *) if labelstate = hid┆
0x0258a0…0258c0             64 65 6e 5f 62 79 5f 6c 6f 63 6b 5f 6f 72 5f 63 68 61 6e 6e 65 6c 20 74 68 65 6e 0a 69 66 20 68   ┆den_by_lock_or_channel then if h┆
0x0258c0…0258e0             69 64 64 65 6e 73 63 6f 70 65 20 3d 20 63 75 72 5f 6c 61 62 65 6c 73 63 6f 70 65 20 74 68 65 6e   ┆iddenscope = cur_labelscope then┆
0x0258e0…025900             0a 6c 61 62 65 6c 73 74 61 74 65 3a 3d 20 69 6e 73 69 64 65 5f 73 63 6f 70 65 3b 20 20 28 2a 20   ┆ labelstate:= inside_scope;  (* ┆
0x025900…025920             69 74 20 6d 75 73 74 20 62 65 3a 20 63 6c 65 61 72 2d 73 63 6f 70 65 20 2a 29 0a 0a 28 2a 20 73   ┆it must be: clear-scope *)  (* s┆
0x025920…025940             65 63 6f 6e 64 3a 20 68 69 64 65 20 61 6c 6c 20 6f 70 65 6e 20 6c 61 62 65 6c 73 2c 20 69 66 20   ┆econd: hide all open labels, if ┆
0x025940…025960             73 74 61 72 74 20 6f 66 20 6c 6f 63 6b 20 6f 72 20 63 68 61 6e 6e 65 6c 20 73 74 61 74 65 6d 65   ┆start of lock or channel stateme┆
0x025960…025980             6e 74 73 20 2a 29 0a 69 66 20 73 74 61 72 74 5f 6f 66 5f 70 72 6f 74 65 63 74 65 64 20 74 68 65   ┆nts *) if start_of_protected the┆
0x025980…0259a0             6e 0a 28 2a 20 66 69 72 73 74 20 73 65 74 73 63 6f 70 65 20 69 6e 20 6c 6f 63 6b 2d 63 68 61 6e   ┆n (* first setscope in lock-chan┆
0x0259a0…0259c0             6e 65 6c 20 2a 29 0a 69 66 20 6c 61 62 65 6c 73 74 61 74 65 20 3d 20 69 6e 73 69 64 65 5f 73 63   ┆nel *) if labelstate = inside_sc┆
0x0259c0…0259e0             6f 70 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 61 62 65 6c 73 74 61 74 65 20 3a 3d 20 68 69 64   ┆ope then begin labelstate := hid┆
0x0259e0…025a00             64 65 6e 5f 62 79 5f 6c 6f 63 6b 5f 6f 72 5f 63 68 61 6e 6e 65 6c 3b 0a 68 69 64 64 65 6e 73 63   ┆den_by_lock_or_channel; hiddensc┆
0x025a00…025a20 (10, 0, 2)  6f 70 65 3a 3d 20 63 75 72 5f 6c 61 62 65 6c 73 63 6f 70 65 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 74   ┆ope:= cur_labelscope; end;  (* t┆
0x025a20…025a40             68 69 72 64 3a 20 6f 70 65 6e 20 6f 72 20 63 6c 6f 73 65 20 6c 61 62 65 6c 2c 20 77 68 65 6e 20   ┆hird: open or close label, when ┆
0x025a40…025a60             62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 69 73 20 6c 61 62 65 6c 73 63 6f 70 65 20 2a 29 0a   ┆belonging to this labelscope *) ┆
0x025a60…025a80             69 66 20 6c 61 62 65 6c 73 63 6f 70 65 20 3d 20 63 75 72 5f 6c 61 62 65 6c 73 63 6f 70 65 20 74   ┆if labelscope = cur_labelscope t┆
0x025a80…025aa0             68 65 6e 0a 69 66 20 73 65 74 73 63 6f 70 65 20 74 68 65 6e 0a 6c 61 62 65 6c 73 74 61 74 65 3a   ┆hen if setscope then labelstate:┆
0x025aa0…025ac0             3d 20 69 6e 73 69 64 65 5f 73 63 6f 70 65 0a 65 6c 73 65 0a 6c 61 62 65 6c 73 74 61 74 65 3a 3d   ┆= inside_scope else labelstate:=┆
0x025ac0…025ae0             20 6f 75 74 73 69 64 65 5f 73 63 6f 70 65 3b 0a 63 75 72 6c 61 62 65 6c 3a 3d 20 70 72 65 76 6c   ┆ outside_scope; curlabel:= prevl┆
0x025ae0…025b00             61 62 65 6c 3b 0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65 2f 77 69 74 68 20 63 75 72 6c 61 62 65   ┆abel; end; (* while/with curlabe┆
0x025b00…025b20             6c 20 2a 29 0a 0a 73 74 61 72 74 5f 6f 66 5f 70 72 6f 74 65 63 74 65 64 3a 3d 20 66 61 6c 73 65   ┆l *)  start_of_protected:= false┆
0x025b20…025b40             3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 73 65 74 5f 6c 61 62 65 6c 5f 73   ┆;  end; (* procedure set_label_s┆
0x025b40…025b60             74 61 74 65 20 2a 29 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 63 68 65 63 6b 5f 6c 61 62 65 6c 20   ┆tate *)    function check_label ┆
0x025b60…025b80             28 6c 61 62 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 20 3a 20 70 61 73 73 33 65 72 72 6f 72 73   ┆(labname: nameptr) : pass3errors┆
0x025b80…025ba0             3b 0a 28 2a 20 75 73 65 64 20 77 68 65 6e 20 72 65 66 65 72 72 69 6e 67 20 74 6f 20 61 20 6c 61   ┆; (* used when referring to a la┆
0x025ba0…025bc0             62 65 6c 6e 61 6d 65 20 2a 29 0a 0a 76 61 72 0a 63 75 72 6c 61 62 65 6c 3a 20 6c 61 62 65 6c 70   ┆belname *)  var curlabel: labelp┆
0x025bc0…025be0             74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 77 69 74 68 20 20 6c 61 62 6e 61 6d 65 20 5e 20 64 6f 0a 62   ┆tr;  begin  with  labname ^ do b┆
0x025be0…025c00             65 67 69 6e 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 6c 61 62 65 6c 20 74 68 65 6e 0a   ┆egin if namekind <> clabel then ┆
0x025c00…025c20 (10, 0, 3)  63 68 65 63 6b 5f 6c 61 62 65 6c 3a 3d 20 6e 6f 74 5f 6c 61 62 65 6c 5f 6e 61 6d 65 0a 65 6c 73   ┆check_label:= not_label_name els┆
0x025c20…025c40             65 0a 62 65 67 69 6e 0a 28 2a 20 63 68 65 63 6b 20 6c 6f 63 61 6c 6c 79 20 64 65 63 6c 61 72 65   ┆e begin (* check locally declare┆
0x025c40…025c60             64 20 6c 61 62 65 6c 20 2a 29 0a 0a 63 68 65 63 6b 5f 6c 61 62 65 6c 3a 3d 20 6c 61 62 65 6c 5f   ┆d label *)  check_label:= label_┆
0x025c60…025c80             75 6e 64 65 66 69 6e 65 64 3b 20 28 2a 20 73 75 70 70 6f 73 65 20 6e 6f 74 20 6c 6f 63 61 6c 6c   ┆undefined; (* suppose not locall┆
0x025c80…025ca0             79 20 64 65 63 6c 61 72 65 64 20 2a 29 0a 0a 63 75 72 6c 61 62 65 6c 3a 3d 20 6c 61 73 74 6c 61   ┆y declared *)  curlabel:= lastla┆
0x025ca0…025cc0             62 65 6c 3b 0a 77 68 69 6c 65 20 63 75 72 6c 61 62 65 6c 20 3c 3e 20 6e 69 6c 6c 61 62 65 6c 20   ┆bel; while curlabel <> nillabel ┆
0x025cc0…025ce0             64 6f 0a 77 69 74 68 20 20 63 75 72 6c 61 62 65 6c 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20   ┆do with  curlabel ^ do begin if ┆
0x025ce0…025d00             6c 61 62 65 6c 73 70 69 78 20 3d 20 73 70 69 78 20 28 2a 20 6f 66 20 6c 61 62 65 6c 6e 61 6d 65   ┆labelspix = spix (* of labelname┆
0x025d00…025d20             20 2a 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 69 74 20 77 61 73 20 6c 6f 63 61 6c 6c 79   ┆ *) then begin (* it was locally┆
0x025d20…025d40             20 64 65 63 6c 61 72 65 64 2c 20 6e 6f 77 20 63 68 65 63 6b 20 74 68 65 20 6c 61 62 65 6c 73 63   ┆ declared, now check the labelsc┆
0x025d40…025d60             6f 70 65 20 2a 29 0a 63 61 73 65 20 6c 61 62 65 6c 73 74 61 74 65 20 6f 66 0a 69 6e 73 69 64 65   ┆ope *) case labelstate of inside┆
0x025d60…025d80             5f 73 63 6f 70 65 3a 20 63 68 65 63 6b 5f 6c 61 62 65 6c 3a 3d 20 6e 6f 65 72 72 6f 72 3b 0a 6f   ┆_scope: check_label:= noerror; o┆
0x025d80…025da0             75 74 73 69 64 65 5f 73 63 6f 70 65 3a 0a 63 68 65 63 6b 5f 6c 61 62 65 6c 3a 3d 20 6c 61 62 65   ┆utside_scope: check_label:= labe┆
0x025da0…025dc0             6c 5f 75 73 65 64 5f 6f 75 74 73 69 64 65 5f 73 63 6f 70 65 3b 0a 28 2a 20 69 2e 65 2e 20 67 6f   ┆l_used_outside_scope; (* i.e. go┆
0x025dc0…025de0             74 6f 20 6c 65 61 64 69 6e 67 20 69 6e 74 6f 20 63 6f 6e 74 72 6f 6c 20 73 74 72 75 63 74 75 72   ┆to leading into control structur┆
0x025de0…025e00             65 20 2a 29 0a 68 69 64 64 65 6e 5f 62 79 5f 6c 6f 63 6b 5f 6f 72 5f 63 68 61 6e 6e 65 6c 3a 0a   ┆e *) hidden_by_lock_or_channel: ┆
0x025e00…025e20 (10, 0, 4)  63 68 65 63 6b 5f 6c 61 62 65 6c 3a 3d 20 6c 61 62 65 6c 5f 64 65 66 69 6e 65 64 5f 6f 75 74 73   ┆check_label:= label_defined_outs┆
0x025e20…025e40             69 64 65 5f 6c 6f 63 6b 5f 6f 72 5f 63 68 61 6e 6e 65 6c 3b 0a 28 2a 20 69 2e 65 2e 20 67 6f 74   ┆ide_lock_or_channel; (* i.e. got┆
0x025e40…025e60             6f 20 6f 75 74 20 6f 66 20 6c 6f 63 6b 20 6f 72 20 63 68 61 6e 6e 65 6c 20 73 74 61 74 65 6d 65   ┆o out of lock or channel stateme┆
0x025e60…025e80             6e 74 20 2a 29 0a 65 6c 73 65 3b 0a 65 6e 64 3b 0a 69 66 20 6d 75 6c 74 66 6c 61 67 20 74 68 65   ┆nt *) else; end; if multflag the┆
0x025e80…025ea0             6e 0a 63 68 65 63 6b 5f 6c 61 62 65 6c 3a 3d 20 65 72 72 6f 6e 65 6f 75 73 5f 6c 61 62 65 6c 3b   ┆n check_label:= erroneous_label;┆
0x025ea0…025ec0             0a 69 66 20 6c 61 62 65 6c 6e 61 6d 65 20 3d 20 6e 69 6c 6e 61 6d 65 20 74 68 65 6e 0a 63 68 65   ┆ if labelname = nilname then che┆
0x025ec0…025ee0             63 6b 5f 6c 61 62 65 6c 3a 3d 20 6c 61 62 65 6c 5f 6e 6f 74 5f 6c 6f 63 61 6c 6c 79 5f 64 65 63   ┆ck_label:= label_not_locally_dec┆
0x025ee0…025f00             6c 61 72 65 64 3b 0a 65 6e 64 3b 0a 0a 63 75 72 6c 61 62 65 6c 3a 3d 20 70 72 65 76 6c 61 62 65   ┆lared; end;  curlabel:= prevlabe┆
0x025f00…025f20             6c 3b 0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65 2f 77 69 74 68 20 63 75 72 6c 61 62 65 6c 20 2a   ┆l; end; (* while/with curlabel *┆
0x025f20…025f40             29 0a 0a 28 2a 20 6e 6f 74 65 3a 20 2a 29 0a 28 2a 20 20 20 69 66 20 6c 61 62 65 6c 20 69 73 20   ┆)  (* note: *) (*   if label is ┆
0x025f40…025f60             67 6c 6f 62 61 6c 20 74 6f 20 63 75 72 72 65 6e 74 20 62 6c 6f 63 6b 2c 20 69 74 20 77 69 6c 6c   ┆global to current block, it will┆
0x025f60…025f80             20 62 65 20 2a 29 0a 28 2a 20 20 20 63 68 65 63 6b 65 64 20 6c 61 74 65 72 2c 20 74 68 61 74 20   ┆ be *) (*   checked later, that ┆
0x025f80…025fa0             74 68 65 20 6c 61 62 65 6c 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 2a 29 0a 28   ┆the label is defined in the *) (┆
0x025fa0…025fc0             2a 20 20 20 6f 75 74 65 72 6d 6f 73 74 20 6c 61 62 65 6c 73 63 6f 70 65 20 6f 66 20 74 68 61 74   ┆*   outermost labelscope of that┆
0x025fc0…025fe0             20 62 6c 6f 63 6b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20   ┆ block              *)  end; (* ┆
0x025fe0…026000             69 66 20 6e 61 6d 65 6b 69 6e 64 20 3d 20 6c 61 62 65 6c 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20   ┆if namekind = label *)  end; (* ┆
0x026000…026020 (10, 0, 5)  77 69 74 68 20 6c 61 62 6e 61 6d 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75   ┆with labname *)  end; (* procedu┆
0x026020…026040             72 65 20 63 68 65 63 6b 6c 61 62 65 6c 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65   ┆re checklabel *)    procedure te┆
0x026040…026060             73 74 76 61 6c 75 65 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 74 65   ┆stvalue (opand: opandptr); (* te┆
0x026060…026080             73 74 73 20 74 68 61 74 20 74 68 65 20 6f 70 61 6e 64 20 70 6f 73 73 65 73 65 73 20 61 20 76 61   ┆sts that the opand posseses a va┆
0x026080…0260a0             6c 75 65 20 2a 29 0a 0a 6c 61 62 65 6c 20 39 38 3b 0a 0a 62 65 67 69 6e 0a 0a 77 69 74 68 20 20   ┆lue *)  label 98;  begin  with  ┆
0x0260a0…0260c0             6f 70 61 6e 64 20 5e 20 64 6f 0a 63 61 73 65 20 6f 70 63 6f 64 65 20 6f 66 0a 63 69 64 3a 0a 77   ┆opand ^ do case opcode of cid: w┆
0x0260c0…0260e0             69 74 68 20 20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66   ┆ith  op_name ^ do (* namenode of┆
0x0260e0…026100             20 69 64 65 6e 74 69 66 69 65 72 20 2a 29 0a 0a 28 2a 20 63 65 72 74 61 69 6e 20 6f 66 20 74 68   ┆ identifier *)  (* certain of th┆
0x026100…026120             65 20 6e 61 6d 65 6b 69 6e 64 73 20 61 72 65 20 69 6c 6c 65 67 61 6c 20 69 6e 20 65 78 70 72 65   ┆e namekinds are illegal in expre┆
0x026120…026140             73 73 69 6f 6e 73 20 2a 29 0a 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 6f 66 0a 63 6c 61 62 65   ┆ssions *) case namekind of clabe┆
0x026140…026160             6c 2c 0a 63 70 72 6f 63 65 73 73 2c 0a 63 70 72 6f 63 65 64 75 72 65 2c 0a 63 74 79 70 65 2c 0a   ┆l, cprocess, cprocedure, ctype, ┆
0x026160…026180             63 70 72 65 66 69 78 3a 0a 67 6f 74 6f 20 39 38 3b 20 28 2a 20 65 72 72 6f 72 20 2a 29 0a 0a 63   ┆cprefix: goto 98; (* error *)  c┆
0x026180…0261a0             75 6e 64 65 63 6c 61 72 65 64 2c 20 20 28 2a 20 64 6f 6e 27 74 20 63 61 75 73 65 20 65 72 72 6f   ┆undeclared,  (* don't cause erro┆
0x0261a0…0261c0             72 2d 63 61 73 63 61 64 65 73 20 2a 29 0a 63 76 61 72 2c 0a 63 76 61 72 70 2c 0a 63 76 61 6c 75   ┆r-cascades *) cvar, cvarp, cvalu┆
0x0261c0…0261e0             65 70 2c 0a 63 66 75 6e 63 76 61 6c 2c 0a 63 73 63 61 6c 61 72 65 6c 65 6d 2c 0a 63 63 6f 6e 73   ┆ep, cfuncval, cscalarelem, ccons┆
0x0261e0…026200             74 61 6e 74 3a 20 3b 20 28 2a 20 6f 6b 20 2a 29 0a 0a 63 66 75 6e 63 74 69 6f 6e 3a 0a 6d 61 6b   ┆tant: ; (* ok *)  cfunction: mak┆
0x026200…026220 (10, 0, 6)  65 5f 63 61 6c 6c 20 28 6f 70 61 6e 64 29 3b 20 28 2a 20 61 73 73 75 6d 65 20 74 68 61 74 20 74   ┆e_call (opand); (* assume that t┆
0x026220…026240             68 65 20 70 61 72 61 6d 6c 69 73 74 20 77 61 73 20 65 6d 70 74 79 20 2a 29 0a 0a 65 6c 73 65 3b   ┆he paramlist was empty *)  else;┆
0x026240…026260             0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 63 69 6e 64 65 78 2c 0a 63 66 69 65 6c 64   ┆ end; (* case *)  cindex, cfield┆
0x026260…026280             2c 0a 63 65 6e 64 73 74 72 75 63 2c 0a 63 75 70 61 72 72 6f 77 2c 0a 63 6c 69 74 65 72 61 6c 2c   ┆, cendstruc, cuparrow, cliteral,┆
0x026280…0262a0             0a 63 74 79 70 65 73 69 7a 65 63 61 6c 6c 2c 20 0a 63 66 63 61 6c 6c 2c 20 20 20 20 20 20 28 2a   ┆ ctypesizecall,  cfcall,      (*┆
0x0262a0…0262c0             20 77 68 65 6e 20 66 69 65 6c 64 69 6e 67 20 6f 72 20 69 6e 64 65 78 69 6e 67 20 6f 6e 20 66 75   ┆ when fielding or indexing on fu┆
0x0262c0…0262e0             6e 63 74 69 6f 6e 20 76 61 6c 75 65 20 2a 29 0a 63 65 6e 64 76 61 72 69 61 62 6c 65 2c 20 20 20   ┆nction value *) cendvariable,   ┆
0x0262e0…026300             28 2a 20 61 66 74 65 72 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20 61 6e 64 20 61 6e 79 20 66   ┆(* after function call and any f┆
0x026300…026320             69 65 6c 64 69 6e 67 20 6f 72 20 69 6e 64 65 78 69 6e 67 20 2a 29 0a 63 66 75 6e 63 74 65 6d 70   ┆ielding or indexing *) cfunctemp┆
0x026320…026340             2c 20 20 28 2a 20 75 73 65 64 20 77 68 65 6e 20 64 65 73 63 72 69 62 69 6e 67 20 27 70 72 6f 63   ┆,  (* used when describing 'proc┆
0x026340…026360             65 73 73 63 61 6c 6c 27 20 61 73 20 61 63 74 75 61 6c 20 70 61 72 61 6d 20 2a 29 0a 63 65 6e 64   ┆esscall' as actual param *) cend┆
0x026360…026380             73 65 74 6c 69 73 74 2c 0a 63 64 6f 75 62 6c 65 70 61 72 61 6d 2c 0a 63 65 72 72 6f 72 61 72 67   ┆setlist, cdoubleparam, cerrorarg┆
0x026380…0263a0             2c 0a 63 70 6c 75 73 2c 20 63 6d 69 6e 75 73 2c 20 63 73 74 61 72 2c 20 63 73 68 69 66 74 2c 20   ┆, cplus, cminus, cstar, cshift, ┆
0x0263a0…0263c0             63 73 6c 61 73 68 2c 20 63 64 69 76 2c 20 63 6d 6f 64 2c 0a 63 65 71 2c 20 63 6e 65 2c 20 63 6c   ┆cslash, cdiv, cmod, ceq, cne, cl┆
0x0263c0…0263e0             74 2c 20 63 6c 65 2c 20 63 67 74 2c 20 63 67 65 2c 20 63 69 6e 2c 20 63 6f 72 2c 20 63 78 6f 72   ┆t, cle, cgt, cge, cin, cor, cxor┆
0x0263e0…026400             2c 20 63 61 6e 64 2c 20 63 6e 6f 74 2c 0a 63 75 6d 69 6e 75 73 2c 20 63 75 70 6c 75 73 3a 20 3b   ┆, cand, cnot, cuminus, cuplus: ;┆
0x026400…026420 (10, 0, 7)  20 28 2a 20 6f 6b 20 2a 29 0a 0a 65 6c 73 65 0a 39 38 3a 20 20 28 2a 20 65 72 72 6f 72 20 2a 29   ┆ (* ok *)  else 98:  (* error *)┆
0x026420…026440             0a 62 65 67 69 6e 0a 65 72 72 6f 72 20 28 69 6c 6c 65 67 61 6c 5f 69 6e 5f 65 78 70 72 29 3b 0a   ┆ begin error (illegal_in_expr); ┆
0x026440…026460             6f 70 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 3b 20 20 20   ┆op_typename:= error_typename;   ┆
0x026460…026480             28 2a 20 74 72 79 20 74 6f 20 70 72 65 76 65 6e 74 20 65 72 72 6f 72 2d 63 61 73 63 61 64 65 73   ┆(* try to prevent error-cascades┆
0x026480…0264a0             20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 6f 70 63 6f 64 65 20 2a 29 0a   ┆ *) end; end; (* case opcode *) ┆
0x0264a0…0264c0             0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 76 61 6c 75 65 20 2a 29 0a   ┆ end; (* procedure testvalue *) ┆
0x0264c0…0264e0             0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 76 61 72 69 61 62 6c 65 20 28 6f 70 61 6e 64   ┆   procedure testvariable (opand┆
0x0264e0…026500             3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 74 65 73 74 73 20 74 68 61 74 20 74 68 65 20 6f   ┆: opandptr); (* tests that the o┆
0x026500…026520             70 61 6e 64 20 6d 61 79 20 62 65 20 75 73 65 64 20 61 73 20 3c 76 61 72 69 61 62 6c 65 3e 20 2a   ┆pand may be used as <variable> *┆
0x026520…026540             29 0a 0a 6c 61 62 65 6c 20 39 39 3b 20 28 2a 20 6f 70 61 6e 64 20 6f 6b 20 2a 29 0a 0a 62 65 67   ┆)  label 99; (* opand ok *)  beg┆
0x026540…026560             69 6e 0a 0a 77 69 74 68 20 20 6f 70 61 6e 64 20 5e 20 64 6f 0a 0a 63 61 73 65 20 6f 70 63 6f 64   ┆in  with  opand ^ do  case opcod┆
0x026560…026580             65 20 6f 66 0a 0a 63 69 6e 64 65 78 2c 0a 63 66 69 65 6c 64 2c 0a 63 75 70 61 72 72 6f 77 3a 0a   ┆e of  cindex, cfield, cuparrow: ┆
0x026580…0265a0             62 65 67 69 6e 0a 69 66 20 6f 70 63 6f 64 65 20 3d 20 63 69 6e 64 65 78 20 74 68 65 6e 0a 74 65   ┆begin if opcode = cindex then te┆
0x0265a0…0265c0             73 74 76 61 72 69 61 62 6c 65 28 20 6c 65 66 74 20 29 0a 65 6c 73 65 20 74 65 73 74 76 61 72 69   ┆stvariable( left ) else testvari┆
0x0265c0…0265e0             61 62 6c 65 28 20 72 69 67 74 68 20 29 3b 0a 67 6f 74 6f 20 39 39 3b 20 28 2a 20 6f 6b 20 2a 29   ┆able( rigth ); goto 99; (* ok *)┆
0x0265e0…026600             0a 65 6e 64 3b 0a 0a 63 69 64 3a 0a 77 69 74 68 20 20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 20 20   ┆ end;  cid: with  op_name ^ do  ┆
0x026600…026620 (10, 0, 8)  28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 76 61 72 69 61 62 6c 65 20 2a 29 0a 63 61 73 65 20   ┆(* namenode of variable *) case ┆
0x026620…026640             6e 61 6d 65 6b 69 6e 64 20 28 2a 20 6f 66 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 20 6f 66 0a 63 66   ┆namekind (* of namenode *) of cf┆
0x026640…026660             75 6e 63 74 69 6f 6e 3a 0a 6d 61 6b 65 5f 63 61 6c 6c 20 28 6f 70 61 6e 64 29 3b 20 28 2a 20 74   ┆unction: make_call (opand); (* t┆
0x026660…026680             65 72 6d 69 6e 61 74 65 20 61 6e 20 65 72 72 6f 6e 65 6f 75 73 20 70 61 72 61 6d 65 74 65 72 2d   ┆erminate an erroneous parameter-┆
0x026680…0266a0             6c 65 73 73 20 66 75 6e 63 74 69 6f 6e 20 2a 29 0a 63 75 6e 64 65 63 6c 61 72 65 64 2c 20 20 28   ┆less function *) cundeclared,  (┆
0x0266a0…0266c0             2a 20 64 6f 6e 27 74 20 63 61 75 73 65 20 65 72 72 6f 72 2d 63 61 73 63 61 64 65 73 20 2a 29 0a   ┆* don't cause error-cascades *) ┆
0x0266c0…0266e0             63 76 61 72 2c 0a 63 76 61 72 70 2c 20 63 76 61 6c 75 65 70 2c 20 63 66 75 6e 63 76 61 6c 3a 0a   ┆cvar, cvarp, cvaluep, cfuncval: ┆
0x0266e0…026700             67 6f 74 6f 20 39 39 3b 20 28 2a 20 6f 6b 20 2a 29 0a 65 6c 73 65 20 65 72 72 6f 72 73 70 69 78   ┆goto 99; (* ok *) else errorspix┆
0x026700…026720             3a 3d 20 73 70 69 78 20 28 2a 20 6f 66 20 6e 61 6d 65 20 2a 29 28 2a 20 63 6f 6e 74 69 6e 75 65   ┆:= spix (* of name *)(* continue┆
0x026720…026740             20 2a 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 2a 29 0a 0a 65   ┆ *); end; (* case namekind *)  e┆
0x026740…026760             6c 73 65 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 6f 70 63 6f 64 65 20 2a 29 0a 0a 65 72 72   ┆lse; end; (* case opcode *)  err┆
0x026760…026780             6f 72 20 28 6e 6f 74 5f 76 61 72 69 61 62 6c 65 29 3b 0a 39 39 3a 20 3b 20 28 2a 20 6f 6b 20 2a   ┆or (not_variable); 99: ; (* ok *┆
0x026780…0267a0             29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 76 61 72 69 61 62 6c   ┆)  end; (* procedure testvariabl┆
0x0267a0…0267c0             65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 72 65 61 64 6f 6e 6c 79 76 61   ┆e *)    procedure testreadonlyva┆
0x0267c0…0267e0             72 70 61 72 61 6d 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 74 65 73 74   ┆rparam(opand: opandptr); (* test┆
0x0267e0…026800             73 20 74 68 61 74 20 74 68 65 20 6f 70 61 6e 64 20 6d 61 79 20 62 65 20 75 73 65 64 20 61 73 20   ┆s that the opand may be used as ┆
0x026800…026820 (10, 0, 9)  3c 76 61 72 69 61 62 6c 65 3e 2c 20 70 6f 73 73 69 62 6c 79 20 63 6f 6e 73 74 61 6e 74 20 2a 29   ┆<variable>, possibly constant *)┆
0x026820…026840             0a 6c 61 62 65 6c 20 39 38 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 6f 70 61 6e 64 20 5e 20 64   ┆ label 98; begin with  opand ^ d┆
0x026840…026860             6f 0a 63 61 73 65 20 6f 70 63 6f 64 65 20 6f 66 0a 63 69 64 3a 0a 77 69 74 68 20 20 6f 70 5f 6e   ┆o case opcode of cid: with  op_n┆
0x026860…026880             61 6d 65 20 5e 20 64 6f 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 69 64 65 6e 74 69 66 69   ┆ame ^ do (* namenode of identifi┆
0x026880…0268a0             65 72 20 2a 29 0a 28 2a 20 63 65 72 74 61 69 6e 20 6f 66 20 74 68 65 20 6e 61 6d 65 6b 69 6e 64   ┆er *) (* certain of the namekind┆
0x0268a0…0268c0             73 20 61 72 65 20 69 6c 6c 65 67 61 6c 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20 2a 29 0a   ┆s are illegal in expressions *) ┆
0x0268c0…0268e0             63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 6f 66 0a 63 6c 61 62 65 6c 2c 0a 63 70 72 6f 63 65 73   ┆case namekind of clabel, cproces┆
0x0268e0…026900             73 2c 0a 63 70 72 6f 63 65 64 75 72 65 2c 0a 63 66 75 6e 63 74 69 6f 6e 2c 0a 63 66 75 6e 63 76   ┆s, cprocedure, cfunction, cfuncv┆
0x026900…026920             61 6c 2c 0a 63 74 79 70 65 2c 0a 63 70 72 65 66 69 78 3a 0a 62 65 67 69 6e 0a 65 72 72 6f 72 73   ┆al, ctype, cprefix: begin errors┆
0x026920…026940             70 69 78 3a 3d 20 73 70 69 78 3b 20 28 2a 20 6f 66 20 6f 70 5f 6e 61 6d 65 20 2a 29 0a 67 6f 74   ┆pix:= spix; (* of op_name *) got┆
0x026940…026960             6f 20 39 38 3b 20 28 2a 20 65 72 72 6f 72 20 2a 29 0a 65 6e 64 3b 0a 0a 63 75 6e 64 65 63 6c 61   ┆o 98; (* error *) end;  cundecla┆
0x026960…026980             72 65 64 2c 20 20 28 2a 20 64 6f 6e 27 74 20 63 61 75 73 65 20 65 72 72 6f 72 2d 63 61 73 63 61   ┆red,  (* don't cause error-casca┆
0x026980…0269a0             64 65 73 20 2a 29 0a 63 76 61 72 2c 0a 63 76 61 72 70 2c 0a 63 76 61 6c 75 65 70 2c 0a 63 73 63   ┆des *) cvar, cvarp, cvaluep, csc┆
0x0269a0…0269c0             61 6c 61 72 65 6c 65 6d 2c 0a 63 63 6f 6e 73 74 61 6e 74 3a 20 3b 20 28 2a 20 6f 6b 20 2a 29 0a   ┆alarelem, cconstant: ; (* ok *) ┆
0x0269c0…0269e0             0a 0a 65 6c 73 65 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 63 69 6e 64 65 78 2c   ┆  else; end; (* case *)  cindex,┆
0x0269e0…026a00             0a 63 66 69 65 6c 64 2c 0a 63 75 70 61 72 72 6f 77 3a 0a 69 66 20 6f 70 63 6f 64 65 3d 63 69 6e   ┆ cfield, cuparrow: if opcode=cin┆
0x026a00…026a20 (10, 0, 10) 64 65 78 20 74 68 65 6e 0a 74 65 73 74 72 65 61 64 6f 6e 6c 79 76 61 72 70 61 72 61 6d 28 6c 65   ┆dex then testreadonlyvarparam(le┆
0x026a20…026a40             66 74 29 20 0a 65 6c 73 65 0a 74 65 73 74 72 65 61 64 6f 6e 6c 79 76 61 72 70 61 72 61 6d 28 72   ┆ft)  else testreadonlyvarparam(r┆
0x026a40…026a60             69 67 74 68 29 3b 0a 0a 63 65 6e 64 73 74 72 75 63 2c 0a 63 6c 69 74 65 72 61 6c 2c 0a 63 74 79   ┆igth);  cendstruc, cliteral, cty┆
0x026a60…026a80             70 65 73 69 7a 65 63 61 6c 6c 2c 20 0a 63 66 75 6e 63 74 65 6d 70 2c 20 20 28 2a 20 75 73 65 64   ┆pesizecall,  cfunctemp,  (* used┆
0x026a80…026aa0             20 77 68 65 6e 20 64 65 73 63 72 69 62 69 6e 67 20 27 70 72 6f 63 65 73 73 63 61 6c 6c 27 20 61   ┆ when describing 'processcall' a┆
0x026aa0…026ac0             73 20 61 63 74 75 61 6c 20 70 61 72 61 6d 20 2a 29 0a 63 65 6e 64 73 65 74 6c 69 73 74 2c 0a 63   ┆s actual param *) cendsetlist, c┆
0x026ac0…026ae0             65 72 72 6f 72 61 72 67 3a 20 3b 20 28 2a 20 6f 6b 20 2a 29 0a 0a 65 6c 73 65 0a 39 38 3a 20 20   ┆errorarg: ; (* ok *)  else 98:  ┆
0x026ae0…026b00             28 2a 20 65 72 72 6f 72 20 2a 29 0a 62 65 67 69 6e 0a 65 72 72 6f 72 20 28 6e 6f 74 5f 76 61 72   ┆(* error *) begin error (not_var┆
0x026b00…026b20             69 61 62 6c 65 29 3b 0a 6f 70 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65   ┆iable); op_typename:= error_type┆
0x026b20…026b40             6e 61 6d 65 3b 20 20 20 28 2a 20 74 72 79 20 74 6f 20 70 72 65 76 65 6e 74 20 65 72 72 6f 72 2d   ┆name;   (* try to prevent error-┆
0x026b40…026b60             63 61 73 63 61 64 65 73 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 6f 70   ┆cascades *) end; end; (* case op┆
0x026b60…026b80             63 6f 64 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 72   ┆code *)  end; (* procedure testr┆
0x026b80…026ba0             65 61 64 6f 6e 6c 79 76 61 72 70 61 72 61 6d 20 2a 29 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 74 65   ┆eadonlyvarparam *)   function te┆
0x026ba0…026bc0             73 74 66 72 6f 7a 65 6e 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3a 20 62 6f 6f 6c   ┆stfrozen (opand: opandptr): bool┆
0x026bc0…026be0             65 61 6e 3b 0a 76 61 72 20 61 6c 6c 5f 74 65 73 74 65 64 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a   ┆ean; var all_tested : boolean;  ┆
0x026be0…026c00             62 65 67 69 6e 0a 74 65 73 74 66 72 6f 7a 65 6e 3a 3d 20 66 61 6c 73 65 3b 0a 61 6c 6c 5f 74 65   ┆begin testfrozen:= false; all_te┆
0x026c00…026c20 (10, 0, 11) 73 74 65 64 3a 3d 20 66 61 6c 73 65 3b 0a 0a 72 65 70 65 61 74 0a 77 69 74 68 20 20 6f 70 61 6e   ┆sted:= false;  repeat with  opan┆
0x026c20…026c40             64 20 5e 20 64 6f 0a 77 69 74 68 20 20 6f 70 5f 74 79 70 65 6e 61 6d 65 20 5e 20 64 6f 20 20 28   ┆d ^ do with  op_typename ^ do  (┆
0x026c40…026c60             2a 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 6f 70 65 72 61 6e 64 20 2a 29 0a 77 69 74 68 20 20 74   ┆* typename of operand *) with  t┆
0x026c60…026c80             79 70 20 5e 20 64 6f 20 20 20 20 20 20 20 20 28 2a 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20   ┆yp ^ do        (* corresponding ┆
0x026c80…026ca0             74 79 70 65 6e 6f 64 65 20 2a 29 0a 69 66 20 74 79 70 65 6b 69 6e 64 20 3d 20 63 72 65 61 64 6f   ┆typenode *) if typekind = creado┆
0x026ca0…026cc0             6e 6c 79 20 74 68 65 6e 0a 62 65 67 69 6e 0a 74 65 73 74 66 72 6f 7a 65 6e 3a 3d 20 74 72 75 65   ┆nly then begin testfrozen:= true┆
0x026cc0…026ce0             3b 0a 61 6c 6c 5f 74 65 73 74 65 64 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 0a 65 6c 73 65 0a 28 2a   ┆; all_tested:= true; end else (*┆
0x026ce0…026d00             20 66 6f 6c 6c 6f 77 20 74 79 70 65 6e 6f 64 65 73 20 62 61 63 6b 77 61 72 64 73 20 66 6f 72 20   ┆ follow typenodes backwards for ┆
0x026d00…026d20             72 65 63 6f 72 64 73 20 61 6e 64 20 61 72 72 61 79 73 20 2a 29 0a 28 2a 20 74 6f 20 73 65 61 72   ┆records and arrays *) (* to sear┆
0x026d20…026d40             63 68 20 66 6f 72 20 27 72 65 61 64 6f 6e 6c 79 27 20 74 79 70 65 73 20 2a 29 0a 63 61 73 65 20   ┆ch for 'readonly' types *) case ┆
0x026d40…026d60             6f 70 63 6f 64 65 20 28 2a 20 6f 66 20 6f 70 61 6e 64 20 2a 29 20 6f 66 0a 63 69 6e 64 65 78 20   ┆opcode (* of opand *) of cindex ┆
0x026d60…026d80             3a 20 6f 70 61 6e 64 3a 3d 20 6c 65 66 74 3b 20 20 28 2a 20 66 6f 6c 6c 6f 77 20 74 68 65 20 61   ┆: opand:= left;  (* follow the a┆
0x026d80…026da0             72 72 61 79 2d 6f 70 65 72 61 6e 64 20 2a 29 0a 63 66 69 65 6c 64 20 3a 20 6f 70 61 6e 64 3a 3d   ┆rray-operand *) cfield : opand:=┆
0x026da0…026dc0             20 72 69 67 74 68 3b 20 28 2a 20 66 6f 6c 6c 6f 77 20 74 68 65 20 72 65 63 6f 72 64 2d 6f 70 65   ┆ rigth; (* follow the record-ope┆
0x026dc0…026de0             72 61 6e 64 20 2a 29 0a 65 6c 73 65 0a 61 6c 6c 5f 74 65 73 74 65 64 3a 3d 20 74 72 75 65 3b 0a   ┆rand *) else all_tested:= true; ┆
0x026de0…026e00             65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 75 6e 74 69 6c 20 61 6c 6c 5f 74 65 73 74 65   ┆end; (* case *)  until all_teste┆
0x026e00…026e20 (10, 0, 12) 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 66 75 6e 63 74 69 6f 6e 20 74 65 73 74 66 72 6f 7a 65 6e 20   ┆d;  end; (* function testfrozen ┆
0x026e20…026e40             2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 61 73 73 69 67 6e 61 62 6c 65 20 28   ┆*)    procedure testassignable (┆
0x026e40…026e60             6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 67 65 6e 65 72 61 74 65 73 20 61   ┆opand: opandptr); (* generates a┆
0x026e60…026e80             6e 20 65 72 72 6f 72 2c 20 69 66 20 6f 70 65 72 61 6e 64 20 63 61 6e 6e 6f 74 20 62 65 20 61 73   ┆n error, if operand cannot be as┆
0x026e80…026ea0             73 69 67 6e 65 64 20 2a 29 0a 62 65 67 69 6e 0a 74 65 73 74 76 61 72 69 61 62 6c 65 20 28 6f 70   ┆signed *) begin testvariable (op┆
0x026ea0…026ec0             61 6e 64 29 3b 20 20 28 2a 20 69 74 20 68 61 73 20 74 6f 20 62 65 20 61 20 76 61 72 69 61 62 6c   ┆and);  (* it has to be a variabl┆
0x026ec0…026ee0             65 20 2a 29 0a 77 69 74 68 20 20 6f 70 61 6e 64 20 5e 20 64 6f 0a 77 69 74 68 20 20 6f 70 5f 74   ┆e *) with  opand ^ do with  op_t┆
0x026ee0…026f00             79 70 65 6e 61 6d 65 20 5e 20 64 6f 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 6f 70 65   ┆ypename ^ do  (* namenode of ope┆
0x026f00…026f20             72 61 6e 64 2d 74 79 70 65 20 2a 29 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 20 20 20 20 20   ┆rand-type *) with  typ ^ do     ┆
0x026f20…026f40             20 20 20 28 2a 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a   ┆   (* corresponding typenode *) ┆
0x026f40…026f60             69 66 20 28 63 6f 6e 74 65 6e 74 73 20 28 2a 20 6f 66 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 2a   ┆if (contents (* of typenode *) *┆
0x026f60…026f80             20 5b 20 74 5f 73 65 6d 61 70 68 6f 72 65 2c 20 74 5f 70 6f 6f 6c 2c 20 74 5f 72 65 66 65 72 65   ┆ [ t_semaphore, t_pool, t_refere┆
0x026f80…026fa0             6e 63 65 2c 20 74 5f 73 68 61 64 6f 77 2c 20 74 5f 65 78 74 70 72 6f 63 65 73 73 2c 20 74 5f 72   ┆nce, t_shadow, t_extprocess, t_r┆
0x026fa0…026fc0             65 61 64 6f 6e 6c 79 20 5d 20 3c 3e 20 5b 5d 29 0a 6f 72 20 74 65 73 74 66 72 6f 7a 65 6e 20 28   ┆eadonly ] <> []) or testfrozen (┆
0x026fc0…026fe0             6f 70 61 6e 64 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6f 70 63 6f 64 65 3c 3e 63 69 6e   ┆opand) then begin if opcode<>cin┆
0x026fe0…027000             64 65 78 20 74 68 65 6e 20 28 2a 20 69 66 20 69 6e 64 65 78 20 74 68 65 6e 20 6f 70 5f 6e 61 6d   ┆dex then (* if index then op_nam┆
0x027000…027020 (10, 0, 13) 65 20 68 6f 6c 64 73 20 61 72 72 61 79 20 74 79 70 65 20 2a 29 0a 65 72 72 6f 72 73 70 69 78 3a   ┆e holds array type *) errorspix:┆
0x027020…027040             3d 20 6f 70 5f 6e 61 6d 65 5e 2e 73 70 69 78 3b 0a 65 72 72 6f 72 20 28 6e 6f 74 5f 61 73 73 69   ┆= op_name^.spix; error (not_assi┆
0x027040…027060             67 6e 61 62 6c 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20   ┆gnable); end; end; (* procedure ┆
0x027060…027080             74 65 73 74 61 73 73 69 67 6e 61 62 6c 65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74   ┆testassignable *)    procedure t┆
0x027080…0270a0             65 73 74 65 78 63 68 61 6e 67 61 62 6c 65 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29   ┆estexchangable (opand: opandptr)┆
0x0270a0…0270c0             3b 0a 28 2a 20 67 65 6e 65 72 61 74 65 73 20 61 6e 20 65 72 72 6f 72 2c 20 69 66 20 6f 70 65 72   ┆; (* generates an error, if oper┆
0x0270c0…0270e0             61 6e 64 20 63 61 6e 6e 6f 74 20 62 65 20 65 78 63 68 61 6e 67 65 64 20 2a 29 0a 62 65 67 69 6e   ┆and cannot be exchanged *) begin┆
0x0270e0…027100             0a 74 65 73 74 76 61 72 69 61 62 6c 65 20 28 6f 70 61 6e 64 29 3b 20 20 28 2a 20 69 74 20 68 61   ┆ testvariable (opand);  (* it ha┆
0x027100…027120             73 20 74 6f 20 62 65 20 61 20 76 61 72 69 61 62 6c 65 20 2a 29 0a 77 69 74 68 20 20 6f 70 61 6e   ┆s to be a variable *) with  opan┆
0x027120…027140             64 20 5e 20 64 6f 0a 77 69 74 68 20 20 6f 70 5f 74 79 70 65 6e 61 6d 65 20 5e 20 64 6f 20 20 28   ┆d ^ do with  op_typename ^ do  (┆
0x027140…027160             2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 6f 70 65 72 61 6e 64 2d 74 79 70 65 20 2a 29 0a 77 69   ┆* namenode of operand-type *) wi┆
0x027160…027180             74 68 20 20 74 79 70 20 5e 20 64 6f 20 20 20 20 20 20 20 20 28 2a 20 63 6f 72 72 65 73 70 6f 6e   ┆th  typ ^ do        (* correspon┆
0x027180…0271a0             64 69 6e 67 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 69 66 20 63 6f 6e 74 65 6e 74 73 20 28 2a 20   ┆ding typenode *) if contents (* ┆
0x0271a0…0271c0             6f 66 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 2a 20 5b 20 74 5f 73 65 6d 61 70 68 6f 72 65 2c 20   ┆of typenode *) * [ t_semaphore, ┆
0x0271c0…0271e0             74 5f 70 6f 6f 6c 2c 20 74 5f 65 78 74 70 72 6f 63 65 73 73 2c 20 74 5f 72 65 61 64 6f 6e 6c 79   ┆t_pool, t_extprocess, t_readonly┆
0x0271e0…027200             20 5d 20 3c 3e 20 5b 5d 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 6e 6f 74 5f 65 78 63 68 61 6e 67   ┆ ] <> [] then error (not_exchang┆
0x027200…027220 (10, 0, 14) 65 61 62 6c 65 29 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 65 78   ┆eable); end; (* procedure testex┆
0x027220…027240             63 68 61 6e 67 61 62 6c 65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 75 6e   ┆changable *)    procedure testun┆
0x027240…027260             70 61 63 6b 65 64 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 67 65 6e   ┆packed (opand: opandptr); (* gen┆
0x027260…027280             65 72 61 74 65 73 20 61 6e 20 65 72 72 6f 72 2c 20 69 66 20 74 68 65 20 6f 70 65 72 61 6e 64 20   ┆erates an error, if the operand ┆
0x027280…0272a0             69 73 20 70 61 63 6b 65 64 20 2a 29 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 6f 70 61 6e 64 20 5e   ┆is packed *) begin with  opand ^┆
0x0272a0…0272c0             20 64 6f 0a 69 66 20 6f 70 5f 70 61 63 6b 66 6c 61 67 20 74 68 65 6e 0a 77 69 74 68 20 6f 70 5f   ┆ do if op_packflag then with op_┆
0x0272c0…0272e0             74 79 70 65 6e 61 6d 65 5e 2e 74 79 70 5e 20 64 6f 0a 69 66 20 28 74 79 70 65 6b 69 6e 64 3c 3e   ┆typename^.typ^ do if (typekind<>┆
0x0272e0…027300             63 61 72 72 61 79 29 20 61 6e 64 20 28 74 79 70 65 6b 69 6e 64 3c 3e 63 72 65 63 6f 72 64 29 20   ┆carray) and (typekind<>crecord) ┆
0x027300…027320             74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 69 72 72 65 67 75 6c 61 72 20 65 6c 65 6d 65 6e 74 20   ┆then begin (* irregular element ┆
0x027320…027340             2a 29 0a 69 66 20 6f 70 63 6f 64 65 3c 3e 63 69 6e 64 65 78 20 74 68 65 6e 20 28 2a 20 69 66 20   ┆*) if opcode<>cindex then (* if ┆
0x027340…027360             69 6e 64 65 78 20 74 68 65 6e 20 6f 70 5f 6e 61 6d 65 20 68 6f 6c 64 73 20 61 72 72 61 79 20 74   ┆index then op_name holds array t┆
0x027360…027380             79 70 65 20 6e 61 6d 65 20 2a 29 0a 65 72 72 6f 72 73 70 69 78 3a 3d 20 6f 70 5f 6e 61 6d 65 5e   ┆ype name *) errorspix:= op_name^┆
0x027380…0273a0             2e 73 70 69 78 3b 0a 65 72 72 6f 72 20 28 76 61 72 69 61 62 6c 65 5f 6d 61 79 5f 6e 6f 74 5f 62   ┆.spix; error (variable_may_not_b┆
0x0273a0…0273c0             65 5f 70 61 63 6b 65 64 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72   ┆e_packed); end; end; (* procedur┆
0x0273c0…0273e0             65 20 74 65 73 74 75 6e 70 61 63 6b 65 64 20 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆e testunpacked *)               ┆
0x0273e0…027400             20 20 20 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 77 69 74 68 5f 6e 61 6d 65 6b 69 6e   ┆     procedure find_with_namekin┆
0x027400…027420 (10, 0, 15) 64 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 66 69 6e 64 20 27 69 64 27   ┆d(opand: opandptr); (* find 'id'┆
0x027420…027440             20 6f 66 20 6f 70 61 6e 64 20 61 6e 64 20 6c 65 74 20 77 69 74 68 5f 6e 61 6d 65 6b 69 6e 64 20   ┆ of opand and let with_namekind ┆
0x027440…027460             62 65 20 27 63 6f 6e 73 74 61 6e 74 27 20 6f 72 20 27 76 61 72 27 20 64 65 70 65 6e 64 69 6e 67   ┆be 'constant' or 'var' depending┆
0x027460…027480             0a 6f 6e 20 74 68 65 20 6e 61 6d 6b 69 6e 64 20 6f 66 20 27 69 64 27 2c 20 61 6e 64 20 77 69 74   ┆ on the namkind of 'id', and wit┆
0x027480…0274a0             68 76 61 72 5f 73 70 69 78 20 69 73 20 61 73 73 69 67 6e 65 64 20 74 68 65 20 73 70 69 78 20 6f   ┆hvar_spix is assigned the spix o┆
0x0274a0…0274c0             66 20 69 64 2c 0a 75 73 65 64 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 57   ┆f id, used in conjunction with W┆
0x0274c0…0274e0             49 54 48 20 73 74 61 74 65 6d 65 6e 74 73 20 2a 29 0a 6c 61 62 65 6c 20 31 32 33 34 3b 20 28 2a   ┆ITH statements *) label 1234; (*┆
0x0274e0…027500             20 65 78 69 74 20 70 6f 69 6e 74 20 6f 66 20 70 72 6f 63 65 64 75 72 65 20 2a 29 0a 62 65 67 69   ┆ exit point of procedure *) begi┆
0x027500…027520             6e 0a 77 68 69 6c 65 20 6f 70 61 6e 64 5e 2e 6f 70 63 6f 64 65 3c 3e 63 69 64 20 64 6f 0a 77 69   ┆n while opand^.opcode<>cid do wi┆
0x027520…027540             74 68 20 6f 70 61 6e 64 5e 20 64 6f 0a 63 61 73 65 20 6f 70 63 6f 64 65 20 6f 66 0a 63 69 6e 64   ┆th opand^ do case opcode of cind┆
0x027540…027560             65 78 3a 20 6f 70 61 6e 64 3a 3d 20 6c 65 66 74 3b 0a 63 66 69 65 6c 64 2c 20 63 75 70 61 72 72   ┆ex: opand:= left; cfield, cuparr┆
0x027560…027580             6f 77 3a 20 6f 70 61 6e 64 3a 3d 20 72 69 67 74 68 3b 0a 65 6c 73 65 20 20 28 2a 20 65 78 69 74   ┆ow: opand:= rigth; else  (* exit┆
0x027580…0275a0             20 77 68 69 6c 65 2c 20 73 65 74 20 6b 69 6e 64 20 74 6f 20 76 61 72 20 2a 29 0a 62 65 67 69 6e   ┆ while, set kind to var *) begin┆
0x0275a0…0275c0             20 28 2a 20 61 66 74 65 72 20 65 72 72 6f 72 20 2a 29 0a 77 69 74 68 5f 6e 61 6d 65 6b 69 6e 64   ┆ (* after error *) with_namekind┆
0x0275c0…0275e0             3a 3d 20 63 76 61 72 3b 0a 77 69 74 68 76 61 72 5f 73 70 69 78 3a 3d 20 61 6e 6f 6e 79 6d 6f 75   ┆:= cvar; withvar_spix:= anonymou┆
0x0275e0…027600             73 5f 73 70 69 78 3b 0a 67 6f 74 6f 20 31 32 33 34 3b 20 28 2a 20 65 78 69 74 20 2a 29 0a 65 6e   ┆s_spix; goto 1234; (* exit *) en┆
0x027600…027620 (10, 1, 1)  64 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6f 70 61 6e 64 5e 2e 6f 70 5f 6e 61 6d 65 5e 2e 6e 61 6d 65   ┆d; end;  if opand^.op_name^.name┆
0x027620…027640             6b 69 6e 64 3d 63 63 6f 6e 73 74 61 6e 74 20 74 68 65 6e 0a 77 69 74 68 5f 6e 61 6d 65 6b 69 6e   ┆kind=cconstant then with_namekin┆
0x027640…027660             64 3a 3d 20 63 63 6f 6e 73 74 61 6e 74 0a 65 6c 73 65 0a 77 69 74 68 5f 6e 61 6d 65 6b 69 6e 64   ┆d:= cconstant else with_namekind┆
0x027660…027680             3a 3d 20 63 76 61 72 3b 0a 77 69 74 68 76 61 72 5f 73 70 69 78 3a 3d 20 6f 70 61 6e 64 5e 2e 6f   ┆:= cvar; withvar_spix:= opand^.o┆
0x027680…0276a0             70 5f 6e 61 6d 65 5e 2e 73 70 69 78 3b 0a 31 32 33 34 3a 20 28 2a 20 65 78 69 74 20 70 6f 69 6e   ┆p_name^.spix; 1234: (* exit poin┆
0x0276a0…0276c0             74 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 67 65 74 20 77 69 74 68 2d 6e 61 6d 65 6b 69 6e 64 20 2a   ┆t *) end; (* get with-namekind *┆
0x0276c0…0276e0             29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 73 6f 6c 76 65 5f 6e 61 6d 65 64 5f 74 79 70 65   ┆)   procedure resolve_named_type┆
0x0276e0…027700             20 28 0a 78 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 76 61 72 20 78 74 79 70   ┆ ( xxtypename: nameptr; var xtyp┆
0x027700…027720             65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 76 61 72 20 78 65 6c 65 6d 65 6e 74 3a 20 6e 61   ┆ename: nameptr; var xelement: na┆
0x027720…027740             6d 65 70 74 72 3b 0a 76 61 72 20 78 74 79 70 65 6b 69 6e 64 3a 20 63 6f 64 65 73 29 3b 20 20 28   ┆meptr; var xtypekind: codes);  (┆
0x027740…027760             2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 2a 29 20 20 66 6f 72 77 61 72 64 3b 20 20 28   ┆* ************** *)  forward;  (┆
0x027760…027780             2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 73 6f   ┆* ********* *)    procedure reso┆
0x027780…0277a0             6c 76 65 74 79 70 65 20 28 0a 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 76 61 72 20 78   ┆lvetype ( opand: opandptr; var x┆
0x0277a0…0277c0             74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 76 61 72 20 78 65 6c 65 6d 65 6e 74 3a   ┆typename: nameptr; var xelement:┆
0x0277c0…0277e0             20 6e 61 6d 65 70 74 72 3b 0a 76 61 72 20 78 74 79 70 65 6b 69 6e 64 3a 20 63 6f 64 65 73 29 3b   ┆ nameptr; var xtypekind: codes);┆
0x0277e0…027800             0a 6c 61 62 65 6c 20 31 30 3b 0a 0a 76 61 72 20 6c 6f 63 61 6c 5f 74 79 70 65 6e 61 6d 65 3a 20   ┆ label 10;  var local_typename: ┆
0x027800…027820 (10, 1, 2)  6e 61 6d 65 70 74 72 3b 0a 6c 6f 63 61 6c 5f 65 6c 65 6d 65 6e 74 3a 20 6e 61 6d 65 70 74 72 3b   ┆nameptr; local_element: nameptr;┆
0x027820…027840             0a 6c 6f 63 61 6c 5f 6b 69 6e 64 3a 20 63 6f 64 65 73 3b 0a 0a 62 65 67 69 6e 0a 0a 74 65 73 74   ┆ local_kind: codes;  begin  test┆
0x027840…027860             76 61 6c 75 65 20 28 6f 70 61 6e 64 29 3b 20 20 28 2a 20 74 68 65 20 6f 70 65 72 61 6e 64 20 6d   ┆value (opand);  (* the operand m┆
0x027860…027880             75 73 74 20 70 6f 73 73 65 73 20 61 20 76 61 6c 75 65 20 2a 29 0a 0a 6c 6f 63 61 6c 5f 74 79 70   ┆ust posses a value *)  local_typ┆
0x027880…0278a0             65 6e 61 6d 65 3a 3d 20 20 6f 70 61 6e 64 20 5e 20 2e 20 6f 70 5f 74 79 70 65 6e 61 6d 65 3b 0a   ┆ename:=  opand ^ . op_typename; ┆
0x0278a0…0278c0             0a 31 30 3a 20 28 2a 20 61 66 74 65 72 20 73 74 72 69 70 70 69 6e 67 20 6f 66 20 73 75 70 65 72   ┆ 10: (* after stripping of super┆
0x0278c0…0278e0             66 6c 6f 75 73 20 74 79 70 65 20 69 6e 66 20 2a 29 0a 0a 77 69 74 68 20 20 6c 6f 63 61 6c 5f 74   ┆flous type inf *)  with  local_t┆
0x0278e0…027900             79 70 65 6e 61 6d 65 20 5e 20 64 6f 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 0a 0a 62 65 67   ┆ypename ^ do with  typ ^ do  beg┆
0x027900…027920             69 6e 0a 0a 69 66 20 74 79 70 65 6b 69 6e 64 20 3d 20 63 73 75 62 72 61 6e 67 65 20 74 68 65 6e   ┆in  if typekind = csubrange then┆
0x027920…027940             0a 62 65 67 69 6e 0a 6c 6f 63 61 6c 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 69 6e 64 65 78 3b 0a 67   ┆ begin local_typename:= index; g┆
0x027940…027960             6f 74 6f 20 31 30 3b 0a 65 6e 64 3b 0a 69 66 20 74 79 70 65 6b 69 6e 64 20 3d 20 63 72 65 61 64   ┆oto 10; end; if typekind = cread┆
0x027960…027980             6f 6e 6c 79 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 6f 63 61 6c 5f 74 79 70 65 6e 61 6d 65 3a 3d   ┆only then begin local_typename:=┆
0x027980…0279a0             20 65 6c 65 6d 65 6e 74 3b 0a 67 6f 74 6f 20 31 30 3b 0a 65 6e 64 3b 0a 0a 78 74 79 70 65 6e 61   ┆ element; goto 10; end;  xtypena┆
0x0279a0…0279c0             6d 65 3a 3d 20 6c 6f 63 61 6c 5f 74 79 70 65 6e 61 6d 65 3b 0a 78 74 79 70 65 6b 69 6e 64 3a 3d   ┆me:= local_typename; xtypekind:=┆
0x0279c0…0279e0             20 74 79 70 65 6b 69 6e 64 3b 0a 78 65 6c 65 6d 65 6e 74 20 3a 3d 20 65 6c 65 6d 65 6e 74 3b 0a   ┆ typekind; xelement := element; ┆
0x0279e0…027a00             0a 69 66 20 78 74 79 70 65 6b 69 6e 64 20 3d 20 63 73 65 74 20 74 68 65 6e 0a 28 2a 20 72 65 73   ┆ if xtypekind = cset then (* res┆
0x027a00…027a20 (10, 1, 3)  6f 6c 76 65 20 65 6c 65 6d 65 6e 74 2d 74 79 70 65 20 2a 29 0a 72 65 73 6f 6c 76 65 5f 6e 61 6d   ┆olve element-type *) resolve_nam┆
0x027a20…027a40             65 64 5f 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 2c 20 78 65 6c 65 6d 65 6e 74 2c 20 6c 6f 63 61   ┆ed_type (element, xelement, loca┆
0x027a40…027a60             6c 5f 65 6c 65 6d 65 6e 74 2c 20 6c 6f 63 61 6c 5f 6b 69 6e 64 29 3b 0a 69 66 20 78 74 79 70 65   ┆l_element, local_kind); if xtype┆
0x027a60…027a80             6b 69 6e 64 20 3d 20 63 61 6c 69 61 73 20 74 68 65 6e 0a 72 65 73 6f 6c 76 65 5f 6e 61 6d 65 64   ┆kind = calias then resolve_named┆
0x027a80…027aa0             5f 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 2c 20 6c 6f 63 61 6c 5f 74 79 70 65 6e 61 6d 65 2c 20   ┆_type (element, local_typename, ┆
0x027aa0…027ac0             78 65 6c 65 6d 65 6e 74 2c 20 78 74 79 70 65 6b 69 6e 64 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77   ┆xelement, xtypekind);  end; (* w┆
0x027ac0…027ae0             69 74 68 20 6e 61 6d 65 73 2c 74 79 70 65 73 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63   ┆ith names,types *)  end; (* proc┆
0x027ae0…027b00             65 64 75 72 65 20 72 65 73 6f 6c 76 65 74 79 70 65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72   ┆edure resolvetype *)    procedur┆
0x027b00…027b20             65 20 72 65 73 6f 6c 76 65 5f 6e 61 6d 65 64 5f 74 79 70 65 20 28 0a 78 78 74 79 70 65 6e 61 6d   ┆e resolve_named_type ( xxtypenam┆
0x027b20…027b40             65 3a 20 6e 61 6d 65 70 74 72 3b 20 28 2a 20 74 79 70 65 6e 61 6d 65 20 74 6f 20 62 65 20 72 65   ┆e: nameptr; (* typename to be re┆
0x027b40…027b60             73 6f 6c 76 65 64 20 2a 29 0a 76 61 72 20 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72   ┆solved *) var xtypename: nameptr┆
0x027b60…027b80             3b 0a 76 61 72 20 78 65 6c 65 6d 65 6e 74 3a 20 6e 61 6d 65 70 74 72 3b 0a 76 61 72 20 78 74 79   ┆; var xelement: nameptr; var xty┆
0x027b80…027ba0             70 65 6b 69 6e 64 3a 20 63 6f 64 65 73 29 3b 0a 62 65 67 69 6e 0a 28 2a 20 73 65 70 65 72 61 74   ┆pekind: codes); begin (* seperat┆
0x027ba0…027bc0             65 73 20 74 68 65 20 74 79 70 65 20 69 6e 74 6f 20 69 74 73 20 63 6f 6d 70 6f 6e 65 6e 74 73 2c   ┆es the type into its components,┆
0x027bc0…027be0             20 73 74 72 69 70 70 69 6e 67 20 73 75 62 72 61 6e 67 65 20 65 74 63 2e 20 2a 29 0a 20 6e 69 6c   ┆ stripping subrange etc. *)  nil┆
0x027be0…027c00             6f 70 61 6e 64 20 5e 20 2e 20 6f 70 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 78 78 74 79 70 65 6e 61   ┆opand ^ . op_typename:= xxtypena┆
0x027c00…027c20 (10, 1, 4)  6d 65 3b 20 28 2a 20 75 73 65 20 61 73 20 77 6f 72 6b 69 6e 67 20 63 65 6c 6c 20 2a 29 0a 72 65   ┆me; (* use as working cell *) re┆
0x027c20…027c40             73 6f 6c 76 65 74 79 70 65 20 28 6e 69 6c 6f 70 61 6e 64 2c 20 78 74 79 70 65 6e 61 6d 65 2c 20   ┆solvetype (nilopand, xtypename, ┆
0x027c40…027c60             78 65 6c 65 6d 65 6e 74 2c 20 78 74 79 70 65 6b 69 6e 64 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 66 75   ┆xelement, xtypekind); end;    fu┆
0x027c60…027c80             6e 63 74 69 6f 6e 20 75 6e 73 74 72 69 70 66 72 6f 7a 65 6e 20 28 78 74 79 70 65 6e 61 6d 65 3a   ┆nction unstripfrozen (xtypename:┆
0x027c80…027ca0             20 6e 61 6d 65 70 74 72 29 3a 20 6e 61 6d 65 70 74 72 3b 0a 6c 61 62 65 6c 20 31 30 3b 0a 0a 62   ┆ nameptr): nameptr; label 10;  b┆
0x027ca0…027cc0             65 67 69 6e 0a 0a 31 30 3a 20 77 69 74 68 20 20 78 74 79 70 65 6e 61 6d 65 20 5e 20 64 6f 20 20   ┆egin  10: with  xtypename ^ do  ┆
0x027cc0…027ce0             20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 74 79 70 65 20 2a 29 0a 77 69 74 68 20 20 74 79   ┆ (* namenode of type *) with  ty┆
0x027ce0…027d00             70 20 5e 20 64 6f 20 20 20 20 20 20 20 28 2a 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 79   ┆p ^ do       (* corresponding ty┆
0x027d00…027d20             70 65 6e 6f 64 65 20 2a 29 0a 69 66 20 74 79 70 65 6b 69 6e 64 20 3d 20 63 72 65 61 64 6f 6e 6c   ┆penode *) if typekind = creadonl┆
0x027d20…027d40             79 20 74 68 65 6e 0a 62 65 67 69 6e 0a 78 74 79 70 65 6e 61 6d 65 3a 3d 20 65 6c 65 6d 65 6e 74   ┆y then begin xtypename:= element┆
0x027d40…027d60             3b 20 20 28 2a 20 66 6f 6c 6c 6f 77 20 74 79 70 65 6e 61 6d 65 2d 63 68 61 69 6e 20 2a 29 0a 67   ┆;  (* follow typename-chain *) g┆
0x027d60…027d80             6f 74 6f 20 31 30 3b 20 20 28 2a 20 72 65 70 65 61 74 20 73 65 61 72 63 68 20 66 6f 72 20 73 65   ┆oto 10;  (* repeat search for se┆
0x027d80…027da0             76 65 72 61 6c 20 27 66 72 6f 7a 65 6e 27 20 69 6e 20 72 6f 77 20 2a 29 0a 65 6e 64 3b 0a 0a 75   ┆veral 'frozen' in row *) end;  u┆
0x027da0…027dc0             6e 73 74 72 69 70 66 72 6f 7a 65 6e 3a 3d 20 78 74 79 70 65 6e 61 6d 65 3b 20 20 20 28 2a 20 64   ┆nstripfrozen:= xtypename;   (* d┆
0x027dc0…027de0             65 6c 69 76 65 72 20 75 6e 73 74 72 69 70 27 65 64 20 74 79 70 65 6e 61 6d 65 20 2a 29 0a 0a 65   ┆eliver unstrip'ed typename *)  e┆
0x027de0…027e00             6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 71 75 61 6c 74 79 70 65 73 20 28 6c 65 66   ┆nd;    procedure equaltypes (lef┆
0x027e00…027e20 (10, 1, 5)  74 6f 70 2c 20 72 69 67 74 68 6f 70 3a 20 6f 70 61 6e 64 70 74 72 3b 20 77 61 6e 74 65 64 5f 74   ┆top, rigthop: opandptr; wanted_t┆
0x027e20…027e40             79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 20 65 72 72 6f 72 63 6f 64 65 3a 20 70 61 73   ┆ypename: nameptr; errorcode: pas┆
0x027e40…027e60             73 33 65 72 72 6f 72 73 29 3b 0a 0a 62 65 67 69 6e 0a 72 65 73 6f 6c 76 65 74 79 70 65 20 28 6c   ┆s3errors);  begin resolvetype (l┆
0x027e60…027e80             65 66 74 6f 70 2c 20 6c 65 66 74 74 79 70 65 6e 61 6d 65 2c 20 6c 65 66 74 65 6c 65 6d 65 6e 74   ┆eftop, lefttypename, leftelement┆
0x027e80…027ea0             2c 20 6c 65 66 74 62 61 73 65 6b 69 6e 64 29 3b 0a 72 65 73 6f 6c 76 65 74 79 70 65 20 28 72 69   ┆, leftbasekind); resolvetype (ri┆
0x027ea0…027ec0             67 74 68 6f 70 2c 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 2c 20 72 69 67 74 68 65 6c 65 6d 65   ┆gthop, rigthtypename, rigtheleme┆
0x027ec0…027ee0             6e 74 2c 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 3b 0a 0a 69 66 20 28 6c 65 66 74 74 79 70   ┆nt, rigthbasekind);  if (lefttyp┆
0x027ee0…027f00             65 6e 61 6d 65 20 3c 3e 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 29 20 6f 72 0a 28 6c 65 66 74   ┆ename <> rigthtypename) or (left┆
0x027f00…027f20             74 79 70 65 6e 61 6d 65 20 3c 3e 20 77 61 6e 74 65 64 5f 74 79 70 65 6e 61 6d 65 29 20 74 68 65   ┆typename <> wanted_typename) the┆
0x027f20…027f40             6e 0a 65 72 72 6f 72 20 28 65 72 72 6f 72 63 6f 64 65 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72   ┆n error (errorcode);  end;    pr┆
0x027f40…027f60             6f 63 65 64 75 72 65 20 61 73 73 75 72 65 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 3b   ┆ocedure assure (opand: opandptr;┆
0x027f60…027f80             20 77 61 6e 74 65 64 5f 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 20 65 72 72 6f 72   ┆ wanted_typename: nameptr; error┆
0x027f80…027fa0             63 6f 64 65 3a 20 70 61 73 73 33 65 72 72 6f 72 73 29 3b 0a 0a 28 2a 20 6d 6f 64 69 66 69 65 73   ┆code: pass3errors);  (* modifies┆
0x027fa0…027fc0             20 27 6f 70 74 79 70 65 6e 61 6d 65 27 20 69 66 20 61 6e 79 20 65 72 72 6f 72 20 69 73 20 70 72   ┆ 'optypename' if any error is pr┆
0x027fc0…027fe0             6f 64 75 63 65 64 20 2a 29 0a 0a 62 65 67 69 6e 0a 72 65 73 6f 6c 76 65 74 79 70 65 20 28 6f 70   ┆oduced *)  begin resolvetype (op┆
0x027fe0…028000             61 6e 64 2c 20 65 78 70 72 74 79 70 65 6e 61 6d 65 2c 20 65 78 70 72 65 6c 65 6d 65 6e 74 2c 20   ┆and, exprtypename, exprelement, ┆
0x028000…028020 (10, 1, 6)  65 78 70 72 62 61 73 65 6b 69 6e 64 29 3b 0a 69 66 20 65 78 70 72 74 79 70 65 6e 61 6d 65 20 3c   ┆exprbasekind); if exprtypename <┆
0x028020…028040             3e 20 77 61 6e 74 65 64 5f 74 79 70 65 6e 61 6d 65 20 74 68 65 6e 0a 69 66 20 65 78 70 72 62 61   ┆> wanted_typename then if exprba┆
0x028040…028060             73 65 6b 69 6e 64 20 3c 3e 20 63 65 72 72 6f 72 6b 69 6e 64 20 74 68 65 6e 20 20 28 2a 20 73 75   ┆sekind <> cerrorkind then  (* su┆
0x028060…028080             70 70 72 65 73 73 20 65 72 72 6f 72 2d 63 61 73 63 61 64 65 73 20 2a 29 0a 62 65 67 69 6e 0a 65   ┆ppress error-cascades *) begin e┆
0x028080…0280a0             72 72 6f 72 20 28 65 72 72 6f 72 63 6f 64 65 29 3b 0a 77 69 74 68 20 20 6f 70 61 6e 64 20 5e 20   ┆rror (errorcode); with  opand ^ ┆
0x0280a0…0280c0             64 6f 0a 6f 70 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 3b   ┆do op_typename:= error_typename;┆
0x0280c0…0280e0             0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 69 6e 64 65   ┆ end; end;    procedure testinde┆
0x0280e0…028100             78 20 28 76 61 72 20 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 28 2a 20 74   ┆x (var xtypename: nameptr); (* t┆
0x028100…028120             65 73 74 73 20 74 68 61 74 20 74 68 65 20 74 79 70 65 6b 69 6e 64 20 69 73 20 65 6e 75 6d 65 72   ┆ests that the typekind is enumer┆
0x028120…028140             61 74 69 6f 6e 20 6b 69 6e 64 20 2a 29 0a 0a 62 65 67 69 6e 0a 72 65 73 6f 6c 76 65 5f 6e 61 6d   ┆ation kind *)  begin resolve_nam┆
0x028140…028160             65 64 5f 74 79 70 65 20 28 78 74 79 70 65 6e 61 6d 65 2c 20 65 78 70 72 74 79 70 65 6e 61 6d 65   ┆ed_type (xtypename, exprtypename┆
0x028160…028180             2c 20 65 78 70 72 65 6c 65 6d 65 6e 74 2c 20 65 78 70 72 62 61 73 65 6b 69 6e 64 29 3b 0a 63 61   ┆, exprelement, exprbasekind); ca┆
0x028180…0281a0             73 65 20 65 78 70 72 62 61 73 65 6b 69 6e 64 20 6f 66 0a 0a 63 65 72 72 6f 72 6b 69 6e 64 2c 20   ┆se exprbasekind of  cerrorkind, ┆
0x0281a0…0281c0             20 28 2a 20 64 6f 6e 27 74 20 63 61 75 73 65 20 65 72 72 6f 72 2d 63 61 73 63 61 64 65 73 20 2a   ┆ (* don't cause error-cascades *┆
0x0281c0…0281e0             29 0a 63 69 6e 74 65 67 65 72 2c 0a 63 73 63 61 6c 61 72 3a 20 3b 20 28 2a 20 6f 6b 20 2a 29 0a   ┆) cinteger, cscalar: ; (* ok *) ┆
0x0281e0…028200             0a 65 6c 73 65 0a 62 65 67 69 6e 0a 65 72 72 6f 72 20 28 6e 6f 74 5f 69 6e 64 65 78 5f 74 79 70   ┆ else begin error (not_index_typ┆
0x028200…028220 (10, 1, 7)  65 29 3b 0a 78 74 79 70 65 6e 61 6d 65 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 3b 0a   ┆e); xtypename:= error_typename; ┆
0x028220…028240             65 6e 64 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 73   ┆end; end;  end; (* procedure tes┆
0x028240…028260             74 69 6e 64 65 78 20 2a 29 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 74 65 73 74 65 6e 75 6d 65 72   ┆tindex *)    function testenumer┆
0x028260…028280             61 74 69 6f 6e 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3a 20 6e 61 6d 65 70 74 72   ┆ation (opand: opandptr): nameptr┆
0x028280…0282a0             3b 0a 28 2a 20 77 6f 72 6b 73 20 61 73 20 27 74 65 73 74 69 6e 64 65 78 27 2c 20 62 75 74 20 77   ┆; (* works as 'testindex', but w┆
0x0282a0…0282c0             6f 72 6b 73 20 6f 6e 20 61 6e 20 6f 70 61 6e 64 20 2a 29 0a 76 61 72 20 6c 6f 63 61 6c 5f 74 79   ┆orks on an opand *) var local_ty┆
0x0282c0…0282e0             70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 74 65 73 74 76 61 6c 75   ┆pename: nameptr;  begin testvalu┆
0x0282e0…028300             65 20 28 6f 70 61 6e 64 29 3b 0a 77 69 74 68 20 20 6f 70 61 6e 64 20 5e 20 64 6f 0a 62 65 67 69   ┆e (opand); with  opand ^ do begi┆
0x028300…028320             6e 0a 6c 6f 63 61 6c 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 6f 70 5f 74 79 70 65 6e 61 6d 65 3b 0a   ┆n local_typename:= op_typename; ┆
0x028320…028340             74 65 73 74 69 6e 64 65 78 20 28 6c 6f 63 61 6c 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 6f 70 5f 74   ┆testindex (local_typename); op_t┆
0x028340…028360             79 70 65 6e 61 6d 65 3a 3d 20 6c 6f 63 61 6c 5f 74 79 70 65 6e 61 6d 65 3b 0a 74 65 73 74 65 6e   ┆ypename:= local_typename; testen┆
0x028360…028380             75 6d 65 72 61 74 69 6f 6e 3a 3d 20 6f 70 5f 74 79 70 65 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 65   ┆umeration:= op_typename; end;  e┆
0x028380…0283a0             6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 65 6e 75 6d 65 72 61 74 69 6f 6e   ┆nd; (* procedure testenumeration┆
0x0283a0…0283c0             20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 65 74 5f 70 72 6f 63 65 64 75 72 65 3b 0a   ┆ *)    procedure set_procedure; ┆
0x0283c0…0283e0             28 2a 20 68 61 6e 64 6c 65 73 20 73 65 74 2d 76 61 6c 75 65 73 20 2a 29 0a 0a 62 65 67 69 6e 0a   ┆(* handles set-values *)  begin ┆
0x0283e0…028400             0a 63 61 73 65 20 72 65 63 74 79 70 65 20 6f 66 0a 0a 63 73 65 74 6c 69 73 74 3a 0a 28 2a 20 70   ┆ case rectype of  csetlist: (* p┆
0x028400…028420 (10, 1, 8)  72 65 70 61 72 65 20 73 2d 65 6c 65 6d 65 6e 74 20 6f 72 20 6d 2d 65 6c 65 6d 65 6e 74 20 74 6f   ┆repare s-element or m-element to┆
0x028420…028440             20 62 65 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 73 20 2a 29 0a 6e 65 77 6f 70 61 6e 64   ┆ be binary operators *) newopand┆
0x028440…028460             20 28 63 73 65 74 6c 69 73 74 2c 20 6e 69 6c 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 63 73 5f 65   ┆ (csetlist, nil_typename);  cs_e┆
0x028460…028480             6c 65 6d 65 6e 74 2c 0a 63 6d 5f 65 6c 65 6d 65 6e 74 3a 0a 62 65 67 69 6e 0a 72 69 67 74 68 74   ┆lement, cm_element: begin rigtht┆
0x028480…0284a0             79 70 65 6e 61 6d 65 3a 3d 20 74 65 73 74 65 6e 75 6d 65 72 61 74 69 6f 6e 20 28 73 74 61 63 6b   ┆ypename:= testenumeration (stack┆
0x0284a0…0284c0             74 6f 70 29 3b 0a 69 66 20 72 65 63 74 79 70 65 20 3d 20 63 6d 5f 65 6c 65 6d 65 6e 74 20 74 68   ┆top); if rectype = cm_element th┆
0x0284c0…0284e0             65 6e 0a 62 65 67 69 6e 0a 6c 65 66 74 74 79 70 65 6e 61 6d 65 3a 3d 20 74 65 73 74 65 6e 75 6d   ┆en begin lefttypename:= testenum┆
0x0284e0…028500             65 72 61 74 69 6f 6e 20 28 6e 65 78 74 74 6f 70 29 3b 0a 69 66 20 6c 65 66 74 74 79 70 65 6e 61   ┆eration (nexttop); if lefttypena┆
0x028500…028520             6d 65 20 3c 3e 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 20 74 68 65 6e 0a 65 72 72 6f 72 20 28   ┆me <> rigthtypename then error (┆
0x028520…028540             6d 69 78 65 64 5f 74 79 70 65 73 5f 69 6e 5f 73 65 74 6c 69 73 74 29 3b 0a 6f 70 65 72 20 28 62   ┆mixed_types_in_setlist); oper (b┆
0x028540…028560             69 6e 61 72 79 2c 20 72 65 63 74 79 70 65 2c 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 29 3b 0a   ┆inary, rectype, rigthtypename); ┆
0x028560…028580             72 65 63 74 79 70 65 3a 3d 20 63 6e 6f 63 6f 64 65 3b 20 20 28 2a 20 6c 65 74 20 72 65 63 74 79   ┆rectype:= cnocode;  (* let recty┆
0x028580…0285a0             70 65 20 64 65 73 63 72 69 62 65 20 73 69 6d 70 6c 65 20 62 69 6e 64 69 6e 67 20 2a 29 0a 65 6e   ┆pe describe simple binding *) en┆
0x0285a0…0285c0             64 3b 0a 0a 28 2a 20 63 6f 6d 70 61 72 65 20 65 6c 65 6d 65 6e 74 2d 74 79 70 65 20 77 69 74 68   ┆d;  (* compare element-type with┆
0x0285c0…0285e0             20 70 72 65 76 69 6f 75 73 20 74 79 70 65 20 69 6e 20 73 65 74 6c 69 73 74 20 2a 29 0a 77 69 74   ┆ previous type in setlist *) wit┆
0x0285e0…028600             68 20 20 6e 65 78 74 74 6f 70 20 5e 20 64 6f 20 20 28 2a 20 70 72 65 76 69 6f 75 73 20 73 65 74   ┆h  nexttop ^ do  (* previous set┆
0x028600…028620 (10, 1, 9)  6c 69 73 74 2d 65 6c 65 6d 65 6e 74 20 6f 72 20 64 75 6d 6d 79 2d 65 6c 65 6d 65 6e 74 20 2a 29   ┆list-element or dummy-element *)┆
0x028620…028640             0a 69 66 20 6f 70 5f 74 79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 6e 65 78 74 74 6f 70 20 2a 29   ┆ if op_typename (* of nexttop *)┆
0x028640…028660             20 3c 3e 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 20 74 68 65 6e 0a 69 66 20 6f 70 5f 74 79 70   ┆ <> rigthtypename then if op_typ┆
0x028660…028680             65 6e 61 6d 65 20 3c 3e 20 6e 69 6c 5f 74 79 70 65 6e 61 6d 65 20 74 68 65 6e 20 20 28 2a 20 73   ┆ename <> nil_typename then  (* s┆
0x028680…0286a0             75 70 70 72 65 73 73 20 65 72 72 6f 72 20 66 6f 72 20 76 65 72 79 20 66 69 72 73 74 20 65 6c 65   ┆uppress error for very first ele┆
0x0286a0…0286c0             6d 65 6e 74 20 2a 29 0a 65 72 72 6f 72 20 28 6d 69 78 65 64 5f 74 79 70 65 73 5f 69 6e 5f 73 65   ┆ment *) error (mixed_types_in_se┆
0x0286c0…0286e0             74 6c 69 73 74 29 3b 0a 0a 6f 70 65 72 20 28 62 69 6e 61 72 79 2c 20 72 65 63 74 79 70 65 2c 20   ┆tlist);  oper (binary, rectype, ┆
0x0286e0…028700             72 69 67 74 68 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 63 65 6e 64 73 65 74 6c   ┆rigthtypename);  end;   cendsetl┆
0x028700…028720             69 73 74 3a 0a 62 65 67 69 6e 0a 28 2a 20 63 6f 6e 73 74 72 75 63 74 20 61 20 74 79 70 65 6e 6f   ┆ist: begin (* construct a typeno┆
0x028720…028740             64 65 3a 20 73 65 74 20 6f 66 20 3c 74 79 70 65 6e 61 6d 65 3e 20 2a 29 0a 65 78 70 72 74 79 70   ┆de: set of <typename> *) exprtyp┆
0x028740…028760             65 6e 61 6d 65 3a 3d 20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3b 0a 77 69 74 68 20 20 65 78   ┆ename:= alloc_namenode; with  ex┆
0x028760…028780             70 72 74 79 70 65 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 61 6d 65 6b 69 6e 64 3a 3d   ┆prtypename ^ do begin namekind:=┆
0x028780…0287a0             20 63 74 79 70 65 3b 0a 74 79 70 65 6e 61 6d 65 3a 3d 20 6e 69 6c 5f 74 79 70 65 6e 61 6d 65 3b   ┆ ctype; typename:= nil_typename;┆
0x0287a0…0287c0             0a 74 79 70 20 20 20 20 20 3a 3d 20 61 6c 6c 6f 63 5f 74 79 70 65 6e 6f 64 65 3b 0a 77 69 74 68   ┆ typ     := alloc_typenode; with┆
0x0287c0…0287e0             20 20 74 79 70 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 0a 74 79 70 65 6b 69 6e 64 3a 3d 20 63 73 65   ┆  typ ^ do begin  typekind:= cse┆
0x0287e0…028800             74 3b 0a 65 6c 65 6d 65 6e 74 20 3a 3d 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 2e 20 6f 70 5f 74   ┆t; element :=  stacktop ^ . op_t┆
0x028800…028820 (10, 1, 10) 79 70 65 6e 61 6d 65 3b 0a 28 2a 20 63 6f 6e 74 65 6e 74 73 3a 3d 20 5b 20 74 5f 73 69 6d 70 6c   ┆ypename; (* contents:= [ t_simpl┆
0x028820…028840             65 20 5d 3b 20 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 65 78 70 72 74   ┆e ];  *) end; end; (* with exprt┆
0x028840…028860             79 70 65 6e 61 6d 65 20 2a 29 0a 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 65 6e 64 73 65 74   ┆ypename *)  oper (unary, cendset┆
0x028860…028880             6c 69 73 74 2c 20 65 78 70 72 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 65 6e 64 3b 0a 0a 65 6c 73 65   ┆list, exprtypename);  end;  else┆
0x028880…0288a0             0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72   ┆ if compilertest then comp_error┆
0x0288a0…0288c0             20 28 75 6e 6b 6e 6f 77 6e 5f 72 65 63 74 79 70 65 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65   ┆ (unknown_rectype); end; (* case┆
0x0288c0…0288e0             20 72 65 63 74 79 70 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 73   ┆ rectype *)  end; (* procedure s┆
0x0288e0…028900             65 74 2d 70 72 6f 63 65 64 75 72 65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 78 70   ┆et-procedure *)    procedure exp┆
0x028900…028920             6f 72 74 5f 70 72 6f 63 65 64 75 72 65 3b 0a 0a 76 61 72 0a 65 72 72 6f 72 74 78 74 3a 20 70 61   ┆ort_procedure;  var errortxt: pa┆
0x028920…028940             73 73 33 65 72 72 6f 72 73 3b 0a 6f 70 61 6e 64 3a 20 20 20 20 6f 70 61 6e 64 70 74 72 3b 0a 65   ┆ss3errors; opand:    opandptr; e┆
0x028940…028960             78 70 6b 69 6e 64 3a 20 20 28 75 6e 64 65 66 6b 69 6e 64 2c 20 63 6f 6e 73 74 6b 69 6e 64 2c 20   ┆xpkind:  (undefkind, constkind, ┆
0x028960…028980             76 61 72 6b 69 6e 64 29 3b 0a 0a 62 65 67 69 6e 0a 0a 63 61 73 65 20 72 65 63 74 79 70 65 20 6f   ┆varkind);  begin  case rectype o┆
0x028980…0289a0             66 0a 0a 63 65 78 70 6f 72 74 3a 0a 62 65 67 69 6e 0a 28 2a 20 73 61 76 65 20 74 68 65 20 65 78   ┆f  cexport: begin (* save the ex┆
0x0289a0…0289c0             74 65 72 6e 61 6c 20 6e 61 6d 65 2c 20 74 6f 20 62 65 20 65 6d 69 74 74 65 64 20 6c 61 74 65 72   ┆ternal name, to be emitted later┆
0x0289c0…0289e0             20 2a 29 0a 6f 70 61 6e 64 5f 70 72 6f 63 6e 61 6d 65 3a 3d 20 74 61 6b 65 5f 73 74 61 63 6b 74   ┆ *) opand_procname:= take_stackt┆
0x0289e0…028a00             6f 70 3b 0a 69 66 20 65 78 70 65 63 74 69 6e 67 5f 62 6c 6f 63 6b 20 74 68 65 6e 0a 62 65 67 69   ┆op; if expecting_block then begi┆
0x028a00…028a20 (10, 1, 11) 6e 5f 62 6c 6f 63 6b 3b 0a 63 75 72 5f 64 79 6e 5f 76 61 72 5f 6c 65 76 65 6c 3a 3d 6e 69 6c 5f   ┆n_block; cur_dyn_var_level:=nil_┆
0x028a20…028a40             6e 61 6d 65 73 74 61 63 6b 5f 70 74 72 3b 28 2a 61 76 6f 69 64 20 74 65 73 74 20 66 6f 72 20 64   ┆namestack_ptr;(*avoid test for d┆
0x028a40…028a60             79 6e 61 6d 69 63 20 72 65 73 74 72 69 63 74 69 6f 6e 73 2a 29 0a 65 6e 64 3b 0a 0a 63 65 78 70   ┆ynamic restrictions*) end;  cexp┆
0x028a60…028a80             6f 72 74 76 61 6c 75 65 2c 0a 63 65 78 70 6f 72 74 73 69 7a 65 2c 0a 63 65 78 70 6f 72 74 64 69   ┆ortvalue, cexportsize, cexportdi┆
0x028a80…028aa0             73 70 2c 0a 63 65 78 70 6f 72 74 6f 66 66 73 65 74 2c 0a 63 65 78 70 6f 72 74 61 64 64 72 3a 0a   ┆sp, cexportoffset, cexportaddr: ┆
0x028aa0…028ac0             62 65 67 69 6e 0a 28 2a 20 6f 70 61 6e 64 5f 70 72 6f 63 6e 61 6d 65 20 68 6f 6c 64 73 20 65 78   ┆begin (* opand_procname holds ex┆
0x028ac0…028ae0             74 65 72 6e 61 6c 20 6e 61 6d 65 20 2a 29 0a 28 2a 20 73 74 61 63 6b 74 6f 70 20 68 6f 6c 64 73   ┆ternal name *) (* stacktop holds┆
0x028ae0…028b00             20 76 61 72 69 61 62 6c 65 20 74 6f 20 62 65 20 65 78 70 6f 72 74 65 64 20 2a 0a 0a 28 2a 20 65   ┆ variable to be exported *  (* e┆
0x028b00…028b20             78 70 6f 72 74 76 61 6c 75 65 3a 20 6f 6e 6c 79 20 63 6f 6e 73 74 20 2a 29 0a 28 2a 20 65 78 70   ┆xportvalue: only const *) (* exp┆
0x028b20…028b40             6f 72 74 73 69 7a 65 20 3a 20 63 6f 6e 73 74 20 6f 72 20 76 61 72 20 2a 29 0a 28 2a 20 65 78 70   ┆ortsize : const or var *) (* exp┆
0x028b40…028b60             6f 72 74 64 69 73 70 20 3a 20 66 69 65 6c 64 20 28 6f 66 20 63 6f 6e 73 74 20 6f 72 20 76 61 72   ┆ortdisp : field (of const or var┆
0x028b60…028b80             29 20 2a 29 0a 28 2a 20 65 78 70 6f 72 74 6f 66 66 73 65 74 3a 20 6f 6e 6c 79 20 76 61 72 20 2a   ┆) *) (* exportoffset: only var *┆
0x028b80…028ba0             29 0a 28 2a 20 65 78 70 6f 72 74 61 64 64 72 20 3a 20 63 6f 6e 73 74 20 6f 72 20 76 61 72 20 2a   ┆) (* exportaddr : const or var *┆
0x028ba0…028bc0             29 0a 0a 72 65 73 6f 6c 76 65 74 79 70 65 20 28 73 74 61 63 6b 74 6f 70 2c 20 65 78 70 72 74 79   ┆)  resolvetype (stacktop, exprty┆
0x028bc0…028be0             70 65 6e 61 6d 65 2c 20 65 78 70 72 65 6c 65 6d 65 6e 74 2c 20 65 78 70 72 62 61 73 65 6b 69 6e   ┆pename, exprelement, exprbasekin┆
0x028be0…028c00             64 29 3b 0a 0a 69 66 20 65 78 70 72 62 61 73 65 6b 69 6e 64 20 3c 3e 20 63 65 72 72 6f 72 6b 69   ┆d);  if exprbasekind <> cerrorki┆
0x028c00…028c20 (10, 1, 12) 6e 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 66 69 6e 64 20 74 68 65 20 69 64 65 6e 74 69   ┆nd then begin (* find the identi┆
0x028c20…028c40             66 69 65 72 2c 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 61 6e 79 20 70 6f 73 73 69 62 6c 65 20 66   ┆fier, in front of any possible f┆
0x028c40…028c60             69 65 6c 64 73 20 2a 29 0a 6f 70 61 6e 64 3a 3d 20 73 74 61 63 6b 74 6f 70 3b 0a 77 68 69 6c 65   ┆ields *) opand:= stacktop; while┆
0x028c60…028c80             20 20 6f 70 61 6e 64 20 5e 20 2e 20 6f 70 63 6f 64 65 20 3d 20 63 66 69 65 6c 64 20 64 6f 0a 6f   ┆  opand ^ . opcode = cfield do o┆
0x028c80…028ca0             70 61 6e 64 3a 3d 20 20 6f 70 61 6e 64 20 5e 20 2e 20 72 69 67 74 68 3b 0a 0a 65 72 72 6f 72 74   ┆pand:=  opand ^ . rigth;  errort┆
0x028ca0…028cc0             78 74 3a 3d 20 6e 6f 65 72 72 6f 72 3b 20 28 2a 20 73 75 70 70 6f 73 65 20 6e 6f 20 65 72 72 6f   ┆xt:= noerror; (* suppose no erro┆
0x028cc0…028ce0             72 73 2e 2e 2e 20 2a 29 0a 0a 28 2a 20 64 65 63 69 64 65 20 6b 69 6e 64 20 6f 66 20 69 64 65 6e   ┆rs... *)  (* decide kind of iden┆
0x028ce0…028d00             74 69 66 69 65 72 20 2a 29 0a 77 69 74 68 20 20 6f 70 61 6e 64 20 5e 20 64 6f 20 20 28 2a 20 6f   ┆tifier *) with  opand ^ do  (* o┆
0x028d00…028d20             70 63 6f 64 65 20 3d 20 27 63 69 64 27 20 2e 2e 2e 20 2a 29 0a 77 69 74 68 20 20 6f 70 5f 6e 61   ┆pcode = 'cid' ... *) with  op_na┆
0x028d20…028d40             6d 65 20 5e 20 64 6f 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 69 64 65 6e 74 69 66 69 65   ┆me ^ do (* namenode of identifie┆
0x028d40…028d60             72 20 2a 29 0a 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 28 2a 20 6f 66 20 69 64 65 6e 74 69 66   ┆r *) case namekind (* of identif┆
0x028d60…028d80             69 65 72 20 2a 29 20 6f 66 0a 63 76 61 72 2c 0a 63 76 61 72 70 2c 0a 63 76 61 6c 75 65 70 2c 0a   ┆ier *) of cvar, cvarp, cvaluep, ┆
0x028d80…028da0             63 66 75 6e 63 76 61 6c 3a 20 65 78 70 6b 69 6e 64 3a 3d 20 76 61 72 6b 69 6e 64 3b 0a 63 63 6f   ┆cfuncval: expkind:= varkind; cco┆
0x028da0…028dc0             6e 73 74 61 6e 74 3a 20 65 78 70 6b 69 6e 64 3a 3d 20 63 6f 6e 73 74 6b 69 6e 64 3b 0a 65 6c 73   ┆nstant: expkind:= constkind; els┆
0x028dc0…028de0             65 20 65 78 70 6b 69 6e 64 3a 3d 20 75 6e 64 65 66 6b 69 6e 64 3b 0a 65 6e 64 3b 0a 0a 63 61 73   ┆e expkind:= undefkind; end;  cas┆
0x028de0…028e00             65 20 72 65 63 74 79 70 65 20 6f 66 0a 63 65 78 70 6f 72 74 76 61 6c 75 65 3a 0a 69 66 20 65 78   ┆e rectype of cexportvalue: if ex┆
0x028e00…028e20 (10, 1, 13) 70 6b 69 6e 64 20 3c 3e 20 63 6f 6e 73 74 6b 69 6e 64 20 74 68 65 6e 0a 65 72 72 6f 72 74 78 74   ┆pkind <> constkind then errortxt┆
0x028e20…028e40             3a 3d 20 63 6f 6e 73 74 5f 65 78 70 6f 72 74 5f 6f 6e 6c 79 3b 0a 63 65 78 70 6f 72 74 73 69 7a   ┆:= const_export_only; cexportsiz┆
0x028e40…028e60             65 2c 0a 63 65 78 70 6f 72 74 64 69 73 70 2c 0a 63 65 78 70 6f 72 74 61 64 64 72 3a 0a 69 66 20   ┆e, cexportdisp, cexportaddr: if ┆
0x028e60…028e80             28 65 78 70 6b 69 6e 64 20 3c 3e 20 63 6f 6e 73 74 6b 69 6e 64 29 20 61 6e 64 20 28 65 78 70 6b   ┆(expkind <> constkind) and (expk┆
0x028e80…028ea0             69 6e 64 20 3c 3e 20 76 61 72 6b 69 6e 64 29 20 74 68 65 6e 0a 65 72 72 6f 72 74 78 74 3a 3d 20   ┆ind <> varkind) then errortxt:= ┆
0x028ea0…028ec0             63 6f 6e 73 74 5f 6f 72 5f 76 61 72 5f 65 78 70 6f 72 74 5f 6f 6e 6c 79 0a 65 6c 73 65 0a 69 66   ┆const_or_var_export_only else if┆
0x028ec0…028ee0             20 72 65 63 74 79 70 65 20 3d 20 63 65 78 70 6f 72 74 64 69 73 70 20 74 68 65 6e 0a 69 66 20 6f   ┆ rectype = cexportdisp then if o┆
0x028ee0…028f00             70 61 6e 64 20 3d 20 73 74 61 63 6b 74 6f 70 20 28 2a 20 69 2e 65 2e 20 6e 6f 20 66 69 65 6c 64   ┆pand = stacktop (* i.e. no field┆
0x028f00…028f20             2d 6f 70 65 72 61 74 6f 72 73 20 2a 29 20 74 68 65 6e 0a 65 72 72 6f 72 74 78 74 3a 3d 20 64 69   ┆-operators *) then errortxt:= di┆
0x028f20…028f40             73 70 5f 65 78 70 6f 72 74 5f 6d 75 73 74 5f 68 61 76 65 5f 66 69 65 6c 64 3b 0a 63 65 78 70 6f   ┆sp_export_must_have_field; cexpo┆
0x028f40…028f60             72 74 6f 66 66 73 65 74 3a 0a 69 66 20 65 78 70 6b 69 6e 64 20 3c 3e 20 76 61 72 6b 69 6e 64 20   ┆rtoffset: if expkind <> varkind ┆
0x028f60…028f80             74 68 65 6e 0a 65 72 72 6f 72 74 78 74 3a 3d 20 76 61 72 5f 65 78 70 6f 72 74 5f 6f 6e 6c 79 3b   ┆then errortxt:= var_export_only;┆
0x028f80…028fa0             0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 69 66 20 65 72 72 6f 72 74 78 74 20 3c 3e   ┆ end; (* case *)  if errortxt <>┆
0x028fa0…028fc0             20 6e 6f 65 72 72 6f 72 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 65 72 72 6f 72 74 78 74 29 3b 0a   ┆ noerror then error (errortxt); ┆
0x028fc0…028fe0             0a 65 6e 64 3b 20 28 2a 20 69 66 20 6e 6f 20 65 72 72 6f 72 2d 6f 70 65 72 61 6e 64 20 2a 29 0a   ┆ end; (* if no error-operand *) ┆
0x028fe0…029000             0a 63 61 73 65 20 72 65 63 74 79 70 65 20 6f 66 0a 63 65 78 70 6f 72 74 76 61 6c 75 65 20 3a 20   ┆ case rectype of cexportvalue : ┆
0x029000…029020 (10, 1, 14) 65 6d 69 74 20 28 78 65 78 70 6f 72 74 76 61 6c 75 65 29 3b 0a 63 65 78 70 6f 72 74 73 69 7a 65   ┆emit (xexportvalue); cexportsize┆
0x029020…029040             20 20 3a 20 65 6d 69 74 20 28 78 65 78 70 6f 72 74 73 69 7a 65 29 3b 0a 63 65 78 70 6f 72 74 64   ┆  : emit (xexportsize); cexportd┆
0x029040…029060             69 73 70 20 20 3a 20 65 6d 69 74 20 28 78 65 78 70 6f 72 74 64 69 73 70 6c 29 3b 0a 63 65 78 70   ┆isp  : emit (xexportdispl); cexp┆
0x029060…029080             6f 72 74 6f 66 66 73 65 74 3a 20 65 6d 69 74 20 28 78 65 78 70 6f 72 74 6f 66 66 73 65 74 29 3b   ┆ortoffset: emit (xexportoffset);┆
0x029080…0290a0             0a 63 65 78 70 6f 72 74 61 64 64 72 20 20 3a 20 65 6d 69 74 20 28 78 65 78 70 6f 72 74 61 64 64   ┆ cexportaddr  : emit (xexportadd┆
0x0290a0…0290c0             72 29 3b 0a 65 6e 64 3b 0a 0a 65 6d 69 74 5f 65 78 74 6e 61 6d 65 20 28 6f 70 61 6e 64 5f 70 72   ┆r); end;  emit_extname (opand_pr┆
0x0290c0…0290e0             6f 63 6e 61 6d 65 29 3b 0a 65 6d 69 74 5f 61 6e 64 5f 72 65 6c 65 61 73 65 20 28 73 74 61 63 6b   ┆ocname); emit_and_release (stack┆
0x0290e0…029100             74 6f 70 29 3b 0a 65 6d 69 74 20 28 78 65 6e 64 65 78 70 6f 72 74 29 3b 0a 0a 63 75 72 5f 64 79   ┆top); emit (xendexport);  cur_dy┆
0x029100…029120             6e 5f 76 61 72 5f 6c 65 76 65 6c 3a 3d 20 6e 61 6d 65 6c 65 76 65 6c 3b 0a 0a 65 6e 64 3b 0a 65   ┆n_var_level:= namelevel;  end; e┆
0x029120…029140             6c 73 65 20 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 20 63 6f 6d 70 5f 65 72   ┆lse if compilertest then comp_er┆
0x029140…029160             72 6f 72 28 75 6e 6b 6e 6f 77 6e 5f 72 65 63 74 79 70 65 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61   ┆ror(unknown_rectype); end; (* ca┆
0x029160…029180             73 65 20 72 65 63 74 79 70 65 2e 2e 2e 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64   ┆se rectype... *)  end; (* proced┆
0x029180…0291a0             75 72 65 20 65 78 70 6f 72 74 2d 70 72 6f 63 65 64 75 72 65 20 2a 29 0a 0a 0a 0a 66 75 6e 63 74   ┆ure export-procedure *)    funct┆
0x0291a0…0291c0             69 6f 6e 20 61 6c 6c 6f 77 5f 74 65 78 74 5f 6c 69 74 65 72 61 6c 73 3a 20 62 6f 6f 6c 65 61 6e   ┆ion allow_text_literals: boolean┆
0x0291c0…0291e0             3b 0a 28 2a 20 69 6d 70 6c 69 63 69 74 20 70 61 72 61 6d 65 74 65 72 73 3a 20 6c 65 66 74 2e 2e   ┆; (* implicit parameters: left..┆
0x0291e0…029200             2e 20 61 6e 64 20 72 69 67 74 68 2e 2e 2e 20 2a 29 0a 28 2a 20 72 65 74 75 72 6e 73 20 74 72 75   ┆. and rigth... *) (* returns tru┆
0x029200…029220 (10, 1, 15) 65 2c 20 69 66 20 6f 6e 65 20 69 73 20 74 65 78 74 6c 69 74 65 72 61 6c 20 61 6e 64 20 74 68 65   ┆e, if one is textliteral and the┆
0x029220…029240             20 6f 74 68 65 72 20 69 73 20 28 20 74 65 78 74 20 6f 72 20 61 72 72 61 79 20 6f 66 20 63 68 61   ┆ other is ( text or array of cha┆
0x029240…029260             72 20 2a 29 0a 62 65 67 69 6e 0a 0a 61 6c 6c 6f 77 5f 74 65 78 74 5f 6c 69 74 65 72 61 6c 73 3a   ┆r *) begin  allow_text_literals:┆
0x029260…029280             3d 20 28 0a 28 28 6c 65 66 74 62 61 73 65 6b 69 6e 64 20 20 3d 20 63 74 65 78 74 29 20 61 6e 64   ┆= ( ((leftbasekind  = ctext) and┆
0x029280…0292a0             20 28 72 69 67 74 68 62 61 73 65 6b 69 6e 64 20 3d 20 63 74 65 78 74 29 29 20 6f 72 0a 28 28 6c   ┆ (rigthbasekind = ctext)) or ((l┆
0x0292a0…0292c0             65 66 74 62 61 73 65 6b 69 6e 64 20 20 3d 20 63 74 65 78 74 29 20 61 6e 64 20 28 72 69 67 74 68   ┆eftbasekind  = ctext) and (rigth┆
0x0292c0…0292e0             62 61 73 65 6b 69 6e 64 20 3d 20 63 61 72 72 61 79 29 20 61 6e 64 20 28 72 69 67 74 68 65 6c 65   ┆basekind = carray) and (rigthele┆
0x0292e0…029300             6d 65 6e 74 20 3d 20 63 68 61 72 5f 74 79 70 65 6e 61 6d 65 29 29 20 6f 72 0a 28 28 72 69 67 74   ┆ment = char_typename)) or ((rigt┆
0x029300…029320             68 62 61 73 65 6b 69 6e 64 20 3d 20 63 74 65 78 74 29 20 61 6e 64 20 28 6c 65 66 74 62 61 73 65   ┆hbasekind = ctext) and (leftbase┆
0x029320…029340             6b 69 6e 64 20 20 3d 20 63 61 72 72 61 79 29 20 61 6e 64 20 28 6c 65 66 74 65 6c 65 6d 65 6e 74   ┆kind  = carray) and (leftelement┆
0x029340…029360             20 20 3d 20 63 68 61 72 5f 74 79 70 65 6e 61 6d 65 29 29 0a 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a   ┆  = char_typename)) );  end;    ┆
0x029360…029380             70 72 6f 63 65 64 75 72 65 20 72 65 6c 61 74 69 6f 6e 20 28 72 65 6c 3a 20 63 6f 64 65 73 29 3b   ┆procedure relation (rel: codes);┆
0x029380…0293a0             0a 28 2a 20 63 72 65 61 74 65 73 20 61 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 69 6f 6e 20 6e   ┆ (* creates a binary operation n┆
0x0293a0…0293c0             6f 64 65 2c 20 77 6f 72 6b 69 6e 67 20 6f 6e 20 74 6f 70 20 61 6e 64 20 6e 65 78 74 74 6f 70 20   ┆ode, working on top and nexttop ┆
0x0293c0…0293e0             2a 29 0a 28 2a 20 69 6e 20 63 61 73 65 20 6f 66 20 65 72 72 6f 72 73 2c 20 74 68 65 20 72 65 73   ┆*) (* in case of errors, the res┆
0x0293e0…029400             75 6c 74 69 6e 67 20 74 79 70 65 20 65 74 63 20 77 69 6c 6c 20 62 65 20 73 65 74 20 74 6f 20 65   ┆ulting type etc will be set to e┆
0x029400…029420 (11, 0, 1)  72 72 6f 72 2d 76 61 6c 75 65 73 20 2a 29 0a 0a 76 61 72 20 72 65 6c 5f 65 72 72 6f 72 3a 20 70   ┆rror-values *)  var rel_error: p┆
0x029420…029440             61 73 73 33 65 72 72 6f 72 73 3b 0a 62 65 67 69 6e 0a 0a 72 65 73 6f 6c 76 65 74 79 70 65 20 28   ┆ass3errors; begin  resolvetype (┆
0x029440…029460             6e 65 78 74 74 6f 70 2c 20 6c 65 66 74 74 79 70 65 6e 61 6d 65 2c 20 6c 65 66 74 65 6c 65 6d 65   ┆nexttop, lefttypename, lefteleme┆
0x029460…029480             6e 74 2c 20 6c 65 66 74 62 61 73 65 6b 69 6e 64 29 3b 0a 72 65 73 6f 6c 76 65 74 79 70 65 20 28   ┆nt, leftbasekind); resolvetype (┆
0x029480…0294a0             73 74 61 63 6b 74 6f 70 2c 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 2c 20 72 69 67 74 68 65 6c   ┆stacktop, rigthtypename, rigthel┆
0x0294a0…0294c0             65 6d 65 6e 74 2c 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 3b 0a 0a 72 65 6c 5f 65 72 72 6f   ┆ement, rigthbasekind);  rel_erro┆
0x0294c0…0294e0             72 3a 3d 20 6e 6f 65 72 72 6f 72 3b 0a 0a 69 66 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 20 3d   ┆r:= noerror;  if rigthbasekind =┆
0x0294e0…029500             20 63 65 72 72 6f 72 6b 69 6e 64 20 74 68 65 6e 0a 6c 65 66 74 62 61 73 65 6b 69 6e 64 3a 3d 20   ┆ cerrorkind then leftbasekind:= ┆
0x029500…029520             72 69 67 74 68 62 61 73 65 6b 69 6e 64 3b 20 20 28 2a 20 73 75 70 70 72 65 73 73 20 65 72 72 6f   ┆rigthbasekind;  (* suppress erro┆
0x029520…029540             72 2d 63 61 73 63 61 64 65 73 20 2a 29 0a 0a 63 61 73 65 20 6c 65 66 74 62 61 73 65 6b 69 6e 64   ┆r-cascades *)  case leftbasekind┆
0x029540…029560             20 6f 66 0a 0a 63 73 63 61 6c 61 72 3a 0a 28 2a 20 62 6f 74 68 20 6d 75 73 74 20 62 65 20 73 63   ┆ of  cscalar: (* both must be sc┆
0x029560…029580             61 6c 61 72 73 2c 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 73 61 6d 65 20 73 63 61   ┆alars, belonging to the same sca┆
0x029580…0295a0             6c 61 72 2d 74 79 70 65 20 2a 29 0a 69 66 20 28 6c 65 66 74 62 61 73 65 6b 69 6e 64 20 3c 3e 20   ┆lar-type *) if (leftbasekind <> ┆
0x0295a0…0295c0             72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 20 6f 72 0a 28 6c 65 66 74 65 6c 65 6d 65 6e 74 20 3c   ┆rigthbasekind) or (leftelement <┆
0x0295c0…0295e0             3e 20 72 69 67 74 68 65 6c 65 6d 65 6e 74 29 20 74 68 65 6e 0a 72 65 6c 5f 65 72 72 6f 72 3a 3d   ┆> rigthelement) then rel_error:=┆
0x0295e0…029600             20 72 65 6c 61 74 69 6f 6e 5f 65 72 72 6f 72 3b 0a 0a 63 61 72 72 61 79 2c 0a 63 74 65 78 74 2c   ┆ relation_error;  carray, ctext,┆
0x029600…029620 (11, 0, 2)  0a 63 72 65 63 6f 72 64 3a 0a 28 2a 20 62 6f 74 68 20 6d 75 73 74 20 62 65 6c 6f 6e 67 20 74 6f   ┆ crecord: (* both must belong to┆
0x029620…029640             20 74 68 65 20 73 61 6d 65 20 74 79 70 65 2c 20 61 6e 64 20 6f 6e 6c 79 20 27 3d 27 20 6f 72 20   ┆ the same type, and only '=' or ┆
0x029640…029660             27 3c 3e 27 20 2a 29 0a 69 66 20 28 28 6c 65 66 74 74 79 70 65 6e 61 6d 65 20 3c 3e 20 72 69 67   ┆'<>' *) if ((lefttypename <> rig┆
0x029660…029680             74 68 74 79 70 65 6e 61 6d 65 29 20 61 6e 64 20 28 6e 6f 74 20 61 6c 6c 6f 77 5f 74 65 78 74 5f   ┆thtypename) and (not allow_text_┆
0x029680…0296a0             6c 69 74 65 72 61 6c 73 29 29 20 6f 72 20 0a 28 28 72 65 6c 20 3c 3e 20 63 65 71 29 20 61 6e 64   ┆literals)) or  ((rel <> ceq) and┆
0x0296a0…0296c0             20 28 72 65 6c 20 3c 3e 20 63 6e 65 29 29 20 74 68 65 6e 0a 72 65 6c 5f 65 72 72 6f 72 3a 3d 20   ┆ (rel <> cne)) then rel_error:= ┆
0x0296c0…0296e0             72 65 6c 61 74 69 6f 6e 5f 65 72 72 6f 72 0a 65 6c 73 65 0a 28 2a 20 74 65 73 74 20 74 68 61 74   ┆relation_error else (* test that┆
0x0296e0…029700             20 74 68 65 20 72 65 63 6f 72 64 20 64 6f 65 73 6e 27 74 20 63 6f 6e 74 61 69 6e 20 73 79 73 74   ┆ the record doesn't contain syst┆
0x029700…029720             65 6d 20 74 79 70 65 73 20 2a 29 0a 77 69 74 68 20 20 6c 65 66 74 74 79 70 65 6e 61 6d 65 20 5e   ┆em types *) with  lefttypename ^┆
0x029720…029740             20 64 6f 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 20 20 28 2a 20 74 79 70 65 6e 6f 64 65 20   ┆ do with  typ ^ do  (* typenode ┆
0x029740…029760             6f 66 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 6e 64 73 20 2a 29 0a 69 66 20 63 6f 6e   ┆of one of the operands *) if con┆
0x029760…029780             74 65 6e 74 73 20 2a 20 5b 20 74 5f 73 65 6d 61 70 68 6f 72 65 2c 20 74 5f 70 6f 6f 6c 2c 20 74   ┆tents * [ t_semaphore, t_pool, t┆
0x029780…0297a0             5f 65 78 74 70 72 6f 63 65 73 73 2c 20 74 5f 72 65 66 65 72 65 6e 63 65 2c 20 74 5f 73 68 61 64   ┆_extprocess, t_reference, t_shad┆
0x0297a0…0297c0             6f 77 20 5d 20 3c 3e 20 5b 5d 20 74 68 65 6e 0a 72 65 6c 5f 65 72 72 6f 72 3a 3d 20 72 65 6c 61   ┆ow ] <> [] then rel_error:= rela┆
0x0297c0…0297e0             74 69 6f 6e 5f 65 72 72 6f 72 3b 0a 0a 63 70 6f 69 6e 74 65 72 3a 0a 28 2a 20 62 6f 74 68 20 6d   ┆tion_error;  cpointer: (* both m┆
0x0297e0…029800             75 73 74 20 62 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 61 6d 65 20 74 79 70 65 2c 20 61 6e   ┆ust be pointers to same type, an┆
0x029800…029820 (11, 0, 3)  64 20 6f 6e 6c 79 20 27 3d 27 20 6f 72 20 27 3c 3e 27 20 2a 29 0a 28 2a 20 6e 6f 74 65 3a 20 65   ┆d only '=' or '<>' *) (* note: e┆
0x029820…029840             73 70 65 63 69 61 6c 6c 79 20 75 73 65 64 20 62 79 20 74 68 65 20 6d 6f 6e 69 74 6f 72 2d 70 72   ┆specially used by the monitor-pr┆
0x029840…029860             6f 63 65 73 73 2e 2e 2e 20 2a 29 0a 69 66 20 28 6c 65 66 74 62 61 73 65 6b 69 6e 64 20 3c 3e 20   ┆ocess... *) if (leftbasekind <> ┆
0x029860…029880             72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 20 6f 72 0a 28 6c 65 66 74 65 6c 65 6d 65 6e 74 20 3c   ┆rigthbasekind) or (leftelement <┆
0x029880…0298a0             3e 20 72 69 67 74 68 65 6c 65 6d 65 6e 74 29 20 6f 72 0a 28 28 72 65 6c 20 3c 3e 20 63 65 71 29   ┆> rigthelement) or ((rel <> ceq)┆
0x0298a0…0298c0             20 61 6e 64 20 28 72 65 6c 20 3c 3e 20 63 6e 65 29 29 20 74 68 65 6e 0a 72 65 6c 5f 65 72 72 6f   ┆ and (rel <> cne)) then rel_erro┆
0x0298c0…0298e0             72 3a 3d 20 72 65 6c 61 74 69 6f 6e 5f 65 72 72 6f 72 3b 0a 0a 63 73 65 74 3a 0a 28 2a 20 62 6f   ┆r:= relation_error;  cset: (* bo┆
0x0298e0…029900             74 68 20 6d 75 73 74 20 62 65 20 73 65 74 73 2c 20 77 69 74 68 20 73 61 6d 65 20 65 6c 65 6d 65   ┆th must be sets, with same eleme┆
0x029900…029920             6e 74 74 79 70 65 73 20 28 6f 72 20 65 6d 70 74 79 29 20 2a 29 0a 69 66 20 28 6c 65 66 74 62 61   ┆nttypes (or empty) *) if (leftba┆
0x029920…029940             73 65 6b 69 6e 64 20 3c 3e 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 20 28 2a 20 62 6f 74 68   ┆sekind <> rigthbasekind) (* both┆
0x029940…029960             20 27 73 65 74 27 20 2a 29 20 6f 72 0a 28 28 6c 65 66 74 65 6c 65 6d 65 6e 74 20 3c 3e 20 72 69   ┆ 'set' *) or ((leftelement <> ri┆
0x029960…029980             67 74 68 65 6c 65 6d 65 6e 74 29 20 28 2a 20 77 69 74 68 20 73 61 6d 65 20 65 6c 65 6d 65 6e 74   ┆gthelement) (* with same element┆
0x029980…0299a0             2d 74 79 70 65 20 2a 29 20 61 6e 64 0a 28 6c 65 66 74 65 6c 65 6d 65 6e 74 20 3c 3e 20 6e 69 6c   ┆-type *) and (leftelement <> nil┆
0x0299a0…0299c0             5f 74 79 70 65 6e 61 6d 65 29 20 28 2a 20 61 6c 6c 6f 77 20 65 6d 70 74 79 20 73 65 74 73 20 2a   ┆_typename) (* allow empty sets *┆
0x0299c0…0299e0             29 20 61 6e 64 0a 28 72 69 67 74 68 65 6c 65 6d 65 6e 74 20 3c 3e 20 6e 69 6c 5f 74 79 70 65 6e   ┆) and (rigthelement <> nil_typen┆
0x0299e0…029a00             61 6d 65 29 29 20 6f 72 0a 28 72 65 6c 20 3d 20 63 6c 74 29 20 6f 72 20 28 72 65 6c 20 3d 20 63   ┆ame)) or (rel = clt) or (rel = c┆
0x029a00…029a20 (11, 0, 4)  67 74 29 20 74 68 65 6e 0a 72 65 6c 5f 65 72 72 6f 72 3a 3d 20 72 65 6c 61 74 69 6f 6e 5f 65 72   ┆gt) then rel_error:= relation_er┆
0x029a20…029a40             72 6f 72 3b 0a 0a 63 65 72 72 6f 72 6b 69 6e 64 3a 20 3b 20 28 2a 20 61 6e 79 74 68 69 6e 67 20   ┆ror;  cerrorkind: ; (* anything ┆
0x029a40…029a60             61 6c 6c 6f 77 65 64 20 2a 29 0a 0a 63 69 6e 74 65 67 65 72 2c 0a 63 72 65 61 6c 3a 0a 28 2a 20   ┆allowed *)  cinteger, creal: (* ┆
0x029a60…029a80             73 69 6d 70 6c 65 20 76 65 72 73 69 6f 6e 3a 20 64 65 6d 61 6e 64 20 73 61 6d 65 20 74 79 70 65   ┆simple version: demand same type┆
0x029a80…029aa0             20 2a 29 0a 69 66 20 6c 65 66 74 62 61 73 65 6b 69 6e 64 20 3c 3e 20 72 69 67 74 68 62 61 73 65   ┆ *) if leftbasekind <> rigthbase┆
0x029aa0…029ac0             6b 69 6e 64 20 74 68 65 6e 0a 72 65 6c 5f 65 72 72 6f 72 3a 3d 20 72 65 6c 61 74 69 6f 6e 5f 65   ┆kind then rel_error:= relation_e┆
0x029ac0…029ae0             72 72 6f 72 3b 0a 0a 65 6c 73 65 0a 72 65 6c 5f 65 72 72 6f 72 3a 3d 20 72 65 6c 61 74 69 6f 6e   ┆rror;  else rel_error:= relation┆
0x029ae0…029b00             5f 65 72 72 6f 72 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 70 65 72 66 6f 72 6d 20 74 68 65 20 62 69 6e   ┆_error; end;  (* perform the bin┆
0x029b00…029b20             61 72 79 20 6f 70 65 72 61 74 69 6f 6e 20 2a 29 0a 69 66 20 72 65 6c 5f 65 72 72 6f 72 20 3c 3e   ┆ary operation *) if rel_error <>┆
0x029b20…029b40             20 6e 6f 65 72 72 6f 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 70 65 72 20 28 62 69 6e 61 72 79   ┆ noerror then begin oper (binary┆
0x029b40…029b60             2c 20 72 65 6c 2c 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 65 72 72 6f 72 20 28 72   ┆, rel, error_typename); error (r┆
0x029b60…029b80             65 6c 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 6f 70 65 72 20 28 62 69 6e 61 72 79   ┆el_error); end else oper (binary┆
0x029b80…029ba0             2c 20 72 65 6c 2c 20 62 6f 6f 6c 65 61 6e 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 65 6e 64 3b 20   ┆, rel, boolean_typename);  end; ┆
0x029ba0…029bc0             28 2a 20 70 72 6f 63 65 64 75 72 65 20 72 65 6c 61 74 69 6f 6e 20 2a 29 0a 0a 0a 0a 70 72 6f 63   ┆(* procedure relation *)    proc┆
0x029bc0…029be0             65 64 75 72 65 20 61 72 69 74 68 6f 70 20 28 6f 70 65 72 61 74 6f 72 3a 20 63 6f 64 65 73 29 3b   ┆edure arithop (operator: codes);┆
0x029be0…029c00             0a 28 2a 20 63 72 65 61 74 65 73 20 61 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 69 6f 6e 20 6e   ┆ (* creates a binary operation n┆
0x029c00…029c20 (11, 0, 5)  6f 64 65 2c 20 77 6f 72 6b 69 6e 67 20 6f 6e 20 73 74 61 63 6b 74 6f 70 20 61 6e 64 20 6e 65 78   ┆ode, working on stacktop and nex┆
0x029c20…029c40             74 74 6f 70 20 2a 29 0a 28 2a 20 69 6e 20 63 61 73 65 20 6f 66 20 65 72 72 6f 72 73 2c 20 74 68   ┆ttop *) (* in case of errors, th┆
0x029c40…029c60             65 20 72 65 73 75 6c 74 69 6e 67 20 74 79 70 65 20 65 74 63 20 77 69 6c 6c 20 62 65 20 73 65 74   ┆e resulting type etc will be set┆
0x029c60…029c80             20 74 6f 20 65 72 72 6f 72 2d 76 61 6c 75 65 73 20 2a 29 0a 0a 76 61 72 20 61 72 69 74 68 5f 65   ┆ to error-values *)  var arith_e┆
0x029c80…029ca0             72 72 6f 72 3a 20 70 61 73 73 33 65 72 72 6f 72 73 3b 0a 0a 62 65 67 69 6e 0a 0a 72 65 73 6f 6c   ┆rror: pass3errors;  begin  resol┆
0x029ca0…029cc0             76 65 74 79 70 65 20 28 6e 65 78 74 74 6f 70 2c 20 6c 65 66 74 74 79 70 65 6e 61 6d 65 2c 20 6c   ┆vetype (nexttop, lefttypename, l┆
0x029cc0…029ce0             65 66 74 65 6c 65 6d 65 6e 74 2c 20 6c 65 66 74 62 61 73 65 6b 69 6e 64 29 3b 0a 72 65 73 6f 6c   ┆eftelement, leftbasekind); resol┆
0x029ce0…029d00             76 65 74 79 70 65 20 28 73 74 61 63 6b 74 6f 70 2c 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 2c   ┆vetype (stacktop, rigthtypename,┆
0x029d00…029d20             20 72 69 67 74 68 65 6c 65 6d 65 6e 74 2c 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 3b 0a 0a   ┆ rigthelement, rigthbasekind);  ┆
0x029d20…029d40             61 72 69 74 68 5f 65 72 72 6f 72 3a 3d 20 6e 6f 65 72 72 6f 72 3b 0a 0a 69 66 20 72 69 67 74 68   ┆arith_error:= noerror;  if rigth┆
0x029d40…029d60             62 61 73 65 6b 69 6e 64 20 3d 20 63 65 72 72 6f 72 6b 69 6e 64 20 74 68 65 6e 0a 62 65 67 69 6e   ┆basekind = cerrorkind then begin┆
0x029d60…029d80             0a 6c 65 66 74 74 79 70 65 6e 61 6d 65 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 3b 0a   ┆ lefttypename:= error_typename; ┆
0x029d80…029da0             6c 65 66 74 62 61 73 65 6b 69 6e 64 3a 3d 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 3b 0a 65 6e   ┆leftbasekind:= rigthbasekind; en┆
0x029da0…029dc0             64 3b 0a 0a 69 66 20 6c 65 66 74 62 61 73 65 6b 69 6e 64 20 3c 3e 20 72 69 67 74 68 62 61 73 65   ┆d;  if leftbasekind <> rigthbase┆
0x029dc0…029de0             6b 69 6e 64 20 74 68 65 6e 0a 61 72 69 74 68 5f 65 72 72 6f 72 3a 3d 20 61 72 69 74 68 6d 65 74   ┆kind then arith_error:= arithmet┆
0x029de0…029e00             69 63 5f 65 72 72 6f 72 0a 65 6c 73 65 0a 63 61 73 65 20 6c 65 66 74 62 61 73 65 6b 69 6e 64 20   ┆ic_error else case leftbasekind ┆
0x029e00…029e20 (11, 0, 6)  6f 66 0a 63 69 6e 74 65 67 65 72 3a 20 62 65 67 69 6e 0a 69 66 20 28 74 61 72 67 65 74 5f 6d 61   ┆of cinteger: begin if (target_ma┆
0x029e20…029e40             63 68 69 6e 65 20 3d 20 74 61 72 67 65 74 7a 38 30 29 20 61 6e 64 0a 28 28 6f 70 65 72 61 74 6f   ┆chine = targetz80) and ((operato┆
0x029e40…029e60             72 20 3d 20 63 6f 72 29 20 6f 72 20 28 6f 70 65 72 61 74 6f 72 20 3d 20 63 61 6e 64 29 29 20 74   ┆r = cor) or (operator = cand)) t┆
0x029e60…029e80             68 65 6e 20 0a 61 72 69 74 68 5f 65 72 72 6f 72 3a 3d 20 6e 6f 74 5f 69 6d 70 6c 65 6d 65 6e 74   ┆hen  arith_error:= not_implement┆
0x029e80…029ea0             65 64 5f 6f 6e 5f 7a 38 30 3b 0a 0a 69 66 20 6f 70 65 72 61 74 6f 72 20 3d 20 63 73 6c 61 73 68   ┆ed_on_z80;  if operator = cslash┆
0x029ea0…029ec0             20 74 68 65 6e 0a 61 72 69 74 68 5f 65 72 72 6f 72 3a 3d 20 72 65 61 6c 5f 64 69 76 69 73 69 6f   ┆ then arith_error:= real_divisio┆
0x029ec0…029ee0             6e 5f 6e 6f 74 5f 69 6d 70 6c 65 6d 65 6e 74 65 64 3b 0a 6c 65 66 74 74 79 70 65 6e 61 6d 65 3a   ┆n_not_implemented; lefttypename:┆
0x029ee0…029f00             3d 20 69 6e 74 65 67 65 72 5f 74 79 70 65 6e 61 6d 65 3b 20 20 28 2a 20 6c 65 74 20 72 65 73 75   ┆= integer_typename;  (* let resu┆
0x029f00…029f20             6c 74 20 62 65 20 62 61 73 65 20 74 79 70 65 20 2a 29 0a 65 6e 64 3b 0a 63 72 65 61 6c 3a 0a 61   ┆lt be base type *) end; creal: a┆
0x029f20…029f40             72 69 74 68 5f 65 72 72 6f 72 3a 3d 20 72 65 61 6c 5f 6e 6f 74 5f 69 6d 70 6c 65 6d 65 6e 74 65   ┆rith_error:= real_not_implemente┆
0x029f40…029f60             64 3b 0a 63 73 65 74 3a 0a 69 66 20 28 28 6c 65 66 74 65 6c 65 6d 65 6e 74 20 3c 3e 20 72 69 67   ┆d; cset: if ((leftelement <> rig┆
0x029f60…029f80             74 68 65 6c 65 6d 65 6e 74 29 20 28 2a 20 73 65 74 73 20 77 69 74 68 20 73 61 6d 65 20 65 6c 65   ┆thelement) (* sets with same ele┆
0x029f80…029fa0             6d 65 6e 74 74 79 70 65 73 20 2a 29 20 61 6e 64 0a 28 6c 65 66 74 65 6c 65 6d 65 6e 74 20 3c 3e   ┆menttypes *) and (leftelement <>┆
0x029fa0…029fc0             20 6e 69 6c 5f 74 79 70 65 6e 61 6d 65 29 20 28 2a 20 61 6c 6c 6f 77 20 65 6d 70 74 79 20 73 65   ┆ nil_typename) (* allow empty se┆
0x029fc0…029fe0             74 73 20 2a 29 20 61 6e 64 0a 28 72 69 67 74 68 65 6c 65 6d 65 6e 74 20 3c 3e 20 6e 69 6c 5f 74   ┆ts *) and (rigthelement <> nil_t┆
0x029fe0…02a000             79 70 65 6e 61 6d 65 29 29 20 6f 72 0a 28 6f 70 65 72 61 74 6f 72 20 3d 20 63 61 6e 64 29 20 6f   ┆ypename)) or (operator = cand) o┆
0x02a000…02a020 (11, 0, 7)  72 20 28 6f 70 65 72 61 74 6f 72 20 3d 20 63 6f 72 29 20 6f 72 20 28 6f 70 65 72 61 74 6f 72 20   ┆r (operator = cor) or (operator ┆
0x02a020…02a040             3d 20 63 78 6f 72 29 20 6f 72 0a 28 6f 70 65 72 61 74 6f 72 20 3d 20 63 73 6c 61 73 68 29 20 74   ┆= cxor) or (operator = cslash) t┆
0x02a040…02a060             68 65 6e 0a 61 72 69 74 68 5f 65 72 72 6f 72 3a 3d 20 61 72 69 74 68 6d 65 74 69 63 5f 65 72 72   ┆hen arith_error:= arithmetic_err┆
0x02a060…02a080             6f 72 0a 65 6c 73 65 0a 69 66 20 6c 65 66 74 65 6c 65 6d 65 6e 74 20 3d 20 6e 69 6c 5f 74 79 70   ┆or else if leftelement = nil_typ┆
0x02a080…02a0a0             65 6e 61 6d 65 20 74 68 65 6e 20 20 20 28 2a 20 69 66 20 6c 65 66 74 2d 6f 70 65 72 61 6e 64 20   ┆ename then   (* if left-operand ┆
0x02a0a0…02a0c0             69 73 20 65 6d 70 74 79 20 73 65 74 20 74 68 65 6e 20 2a 29 0a 6c 65 66 74 74 79 70 65 6e 61 6d   ┆is empty set then *) lefttypenam┆
0x02a0c0…02a0e0             65 3a 3d 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 3b 20 20 20 20 20 28 2a 20 20 20 75 73 65 20   ┆e:= rigthtypename;     (*   use ┆
0x02a0e0…02a100             74 79 70 65 6e 61 6d 65 20 66 72 6f 6d 20 72 69 67 74 68 2d 6f 70 65 72 61 6e 64 20 2a 29 0a 0a   ┆typename from rigth-operand *)  ┆
0x02a100…02a120             63 65 72 72 6f 72 6b 69 6e 64 3a 20 3b 20 28 2a 20 61 6c 6c 6f 77 20 61 6e 79 74 68 69 6e 67 20   ┆cerrorkind: ; (* allow anything ┆
0x02a120…02a140             2a 29 0a 0a 63 73 63 61 6c 61 72 3a 20 69 66 20 28 6c 65 66 74 74 79 70 65 6e 61 6d 65 20 3c 3e   ┆*)  cscalar: if (lefttypename <>┆
0x02a140…02a160             20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 29 20 6f 72 20 28 6c 65 66 74 74 79 70 65 6e 61 6d 65   ┆ rigthtypename) or (lefttypename┆
0x02a160…02a180             20 3c 3e 20 62 6f 6f 6c 65 61 6e 5f 74 79 70 65 6e 61 6d 65 29 0a 6f 72 20 28 20 28 6f 70 65 72   ┆ <> boolean_typename) or ( (oper┆
0x02a180…02a1a0             61 74 6f 72 20 3c 3e 20 63 61 6e 64 29 20 61 6e 64 20 28 6f 70 65 72 61 74 6f 72 20 3c 3e 20 63   ┆ator <> cand) and (operator <> c┆
0x02a1a0…02a1c0             6f 72 29 20 61 6e 64 20 28 6f 70 65 72 61 74 6f 72 20 3c 3e 20 63 78 6f 72 29 20 29 20 74 68 65   ┆or) and (operator <> cxor) ) the┆
0x02a1c0…02a1e0             6e 0a 61 72 69 74 68 5f 65 72 72 6f 72 3a 3d 20 61 72 69 74 68 6d 65 74 69 63 5f 65 72 72 6f 72   ┆n arith_error:= arithmetic_error┆
0x02a1e0…02a200             3b 0a 0a 65 6c 73 65 0a 61 72 69 74 68 5f 65 72 72 6f 72 3a 3d 20 61 72 69 74 68 6d 65 74 69 63   ┆;  else arith_error:= arithmetic┆
0x02a200…02a220 (11, 0, 8)  5f 65 72 72 6f 72 3b 0a 65 6e 64 3b 0a 0a 69 66 20 61 72 69 74 68 5f 65 72 72 6f 72 20 3c 3e 20   ┆_error; end;  if arith_error <> ┆
0x02a220…02a240             6e 6f 65 72 72 6f 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 70 65 72 20 28 62 69 6e 61 72 79 2c   ┆noerror then begin oper (binary,┆
0x02a240…02a260             20 6f 70 65 72 61 74 6f 72 2c 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 65 72 72 6f   ┆ operator, error_typename); erro┆
0x02a260…02a280             72 20 28 61 72 69 74 68 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 6f 70 65 72 20 28   ┆r (arith_error); end else oper (┆
0x02a280…02a2a0             62 69 6e 61 72 79 2c 20 6f 70 65 72 61 74 6f 72 2c 20 6c 65 66 74 74 79 70 65 6e 61 6d 65 29 3b   ┆binary, operator, lefttypename);┆
0x02a2a0…02a2c0             0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 61 72 69 74 68 6f 70 20 2a 29 0a 0a   ┆  end; (* procedure arithop *)  ┆
0x02a2c0…02a2e0             0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 5f 76 61 6c 75 65 5f 63 6f 6d 70 61 74 69 62 6c   ┆  procedure test_value_compatibl┆
0x02a2e0…02a300             65 20 28 65 72 72 6f 72 63 6f 64 65 3a 20 70 61 73 73 33 65 72 72 6f 72 73 29 3b 0a 28 2a 20 69   ┆e (errorcode: pass3errors); (* i┆
0x02a300…02a320             6d 70 6c 69 63 69 74 20 70 61 72 61 6d 73 3a 20 6c 65 66 74 2e 2e 2e 20 61 6e 64 20 72 69 67 74   ┆mplicit params: left... and rigt┆
0x02a320…02a340             68 2e 2e 2e 20 2a 29 0a 0a 62 65 67 69 6e 0a 0a 69 66 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64   ┆h... *)  begin  if rigthbasekind┆
0x02a340…02a360             20 3d 20 63 65 72 72 6f 72 6b 69 6e 64 20 74 68 65 6e 0a 6c 65 66 74 62 61 73 65 6b 69 6e 64 3a   ┆ = cerrorkind then leftbasekind:┆
0x02a360…02a380             3d 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 3b 0a 0a 63 61 73 65 20 6c 65 66 74 62 61 73 65 6b   ┆= rigthbasekind;  case leftbasek┆
0x02a380…02a3a0             69 6e 64 20 6f 66 0a 0a 63 61 72 72 61 79 3a 0a 28 2a 20 61 6c 6c 6f 77 20 72 69 67 74 68 20 74   ┆ind of  carray: (* allow rigth t┆
0x02a3a0…02a3c0             6f 20 62 65 20 74 65 78 74 20 6c 69 74 65 72 61 6c 2c 20 77 68 65 6e 20 6c 65 66 74 20 69 73 20   ┆o be text literal, when left is ┆
0x02a3c0…02a3e0             61 72 72 61 79 20 6f 66 20 63 68 61 72 20 2a 29 0a 69 66 20 6e 6f 74 20 61 6c 6c 6f 77 5f 74 65   ┆array of char *) if not allow_te┆
0x02a3e0…02a400             78 74 5f 6c 69 74 65 72 61 6c 73 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 65 72 72 6f 72 63 6f 64   ┆xt_literals then error (errorcod┆
0x02a400…02a420 (11, 0, 9)  65 29 3b 0a 0a 63 70 6f 69 6e 74 65 72 3a 0a 28 2a 20 62 6f 74 68 20 6d 75 73 74 20 62 65 20 70   ┆e);  cpointer: (* both must be p┆
0x02a420…02a440             6f 69 6e 74 65 72 73 20 74 6f 20 73 61 6d 65 20 74 79 70 65 20 28 20 6f 72 20 74 6f 20 27 6e 69   ┆ointers to same type ( or to 'ni┆
0x02a440…02a460             6c 74 79 70 65 27 20 29 20 2a 29 0a 69 66 20 28 6c 65 66 74 62 61 73 65 6b 69 6e 64 20 3c 3e 20   ┆ltype' ) *) if (leftbasekind <> ┆
0x02a460…02a480             72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 20 6f 72 0a 28 28 6c 65 66 74 65 6c 65 6d 65 6e 74 20   ┆rigthbasekind) or ((leftelement ┆
0x02a480…02a4a0             3c 3e 20 72 69 67 74 68 65 6c 65 6d 65 6e 74 29 20 28 2a 20 74 6f 20 73 61 6d 65 20 74 79 70 65   ┆<> rigthelement) (* to same type┆
0x02a4a0…02a4c0             20 2a 29 20 61 6e 64 0a 28 6c 65 66 74 65 6c 65 6d 65 6e 74 20 3c 3e 20 6e 69 6c 5f 74 79 70 65   ┆ *) and (leftelement <> nil_type┆
0x02a4c0…02a4e0             6e 61 6d 65 29 20 28 2a 20 61 6c 6c 6f 77 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6e 69 6c 74 79   ┆name) (* allow pointers to nilty┆
0x02a4e0…02a500             70 65 20 2a 29 20 61 6e 64 0a 28 72 69 67 74 68 65 6c 65 6d 65 6e 74 20 3c 3e 20 6e 69 6c 5f 74   ┆pe *) and (rigthelement <> nil_t┆
0x02a500…02a520             79 70 65 6e 61 6d 65 29 29 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 65 72 72 6f 72 63 6f 64 65 29   ┆ypename)) then error (errorcode)┆
0x02a520…02a540             3b 0a 0a 63 73 65 74 3a 0a 28 2a 20 62 6f 74 68 20 6d 75 73 74 20 62 65 20 73 65 74 73 2c 20 77   ┆;  cset: (* both must be sets, w┆
0x02a540…02a560             69 74 68 20 73 61 6d 65 20 63 6f 6d 70 6f 6e 65 6e 74 74 79 70 65 73 20 28 6f 72 20 65 6d 70 74   ┆ith same componenttypes (or empt┆
0x02a560…02a580             79 29 20 2a 29 0a 69 66 20 28 6c 65 66 74 62 61 73 65 6b 69 6e 64 20 3c 3e 20 72 69 67 74 68 62   ┆y) *) if (leftbasekind <> rigthb┆
0x02a580…02a5a0             61 73 65 6b 69 6e 64 29 20 20 28 2a 20 62 6f 74 68 20 73 65 74 73 20 2a 29 20 6f 72 0a 28 28 6c   ┆asekind)  (* both sets *) or ((l┆
0x02a5a0…02a5c0             65 66 74 65 6c 65 6d 65 6e 74 20 3c 3e 20 72 69 67 74 68 65 6c 65 6d 65 6e 74 29 20 28 2a 20 77   ┆eftelement <> rigthelement) (* w┆
0x02a5c0…02a5e0             69 74 68 20 73 61 6d 65 20 65 6c 65 6d 65 6e 74 2d 74 79 70 65 20 2a 29 20 61 6e 64 0a 28 72 69   ┆ith same element-type *) and (ri┆
0x02a5e0…02a600             67 74 68 65 6c 65 6d 65 6e 74 20 3c 3e 20 6e 69 6c 5f 74 79 70 65 6e 61 6d 65 29 29 20 28 2a 20   ┆gthelement <> nil_typename)) (* ┆
0x02a600…02a620 (11, 0, 10) 61 6c 6c 6f 77 20 72 69 67 74 68 20 74 6f 20 62 65 20 65 6d 70 74 79 20 73 65 74 20 2a 29 20 74   ┆allow rigth to be empty set *) t┆
0x02a620…02a640             68 65 6e 0a 65 72 72 6f 72 20 28 65 72 72 6f 72 63 6f 64 65 29 3b 0a 0a 63 65 72 72 6f 72 6b 69   ┆hen error (errorcode);  cerrorki┆
0x02a640…02a660             6e 64 3a 20 3b 20 28 2a 20 61 6e 79 74 68 69 6e 67 20 61 6c 6c 6f 77 65 64 20 2a 29 0a 0a 65 6c   ┆nd: ; (* anything allowed *)  el┆
0x02a660…02a680             73 65 0a 65 72 72 6f 72 20 28 65 72 72 6f 72 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b   ┆se error (errorcode); end;  end;┆
0x02a680…02a6a0             20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 5f 76 61 6c 75 65 5f 63 6f 6d 70 61 74 69   ┆ (* procedure test_value_compati┆
0x02a6a0…02a6c0             62 6c 65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 5f 76 61 72 5f 63 6f 6d   ┆ble *)    procedure test_var_com┆
0x02a6c0…02a6e0             70 61 74 69 62 6c 65 20 28 65 72 72 6f 72 63 6f 64 65 3a 20 70 61 73 73 33 65 72 72 6f 72 73 29   ┆patible (errorcode: pass3errors)┆
0x02a6e0…02a700             3b 0a 28 2a 20 69 6d 70 6c 69 63 69 74 20 70 61 72 61 6d 73 3a 20 6c 65 66 74 2e 2e 2e 20 61 6e   ┆; (* implicit params: left... an┆
0x02a700…02a720             64 20 72 69 67 74 68 2e 2e 2e 20 2a 29 0a 0a 62 65 67 69 6e 0a 0a 69 66 20 72 69 67 74 68 62 61   ┆d rigth... *)  begin  if rigthba┆
0x02a720…02a740             73 65 6b 69 6e 64 20 3d 20 63 65 72 72 6f 72 6b 69 6e 64 20 74 68 65 6e 0a 6c 65 66 74 62 61 73   ┆sekind = cerrorkind then leftbas┆
0x02a740…02a760             65 6b 69 6e 64 3a 3d 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 3b 0a 0a 63 61 73 65 20 6c 65 66   ┆ekind:= rigthbasekind;  case lef┆
0x02a760…02a780             74 62 61 73 65 6b 69 6e 64 20 6f 66 0a 0a 63 70 6f 69 6e 74 65 72 3a 0a 28 2a 20 62 6f 74 68 20   ┆tbasekind of  cpointer: (* both ┆
0x02a780…02a7a0             6d 75 73 74 20 62 65 20 70 6f 69 6e 74 65 72 73 2c 20 74 6f 20 73 61 6d 65 20 74 79 70 65 20 28   ┆must be pointers, to same type (┆
0x02a7a0…02a7c0             6f 72 20 74 6f 20 27 6e 69 6c 74 79 70 65 27 29 20 2a 29 0a 69 66 20 28 6c 65 66 74 62 61 73 65   ┆or to 'niltype') *) if (leftbase┆
0x02a7c0…02a7e0             6b 69 6e 64 20 3c 3e 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 20 6f 72 0a 28 28 6c 65 66 74   ┆kind <> rigthbasekind) or ((left┆
0x02a7e0…02a800             65 6c 65 6d 65 6e 74 20 3c 3e 20 72 69 67 74 68 65 6c 65 6d 65 6e 74 29 20 28 2a 20 70 6f 69 6e   ┆element <> rigthelement) (* poin┆
0x02a800…02a820 (11, 0, 11) 74 65 72 20 74 6f 20 73 61 6d 65 20 74 79 70 65 20 2a 29 20 61 6e 64 0a 28 6c 65 66 74 65 6c 65   ┆ter to same type *) and (leftele┆
0x02a820…02a840             6d 65 6e 74 20 3c 3e 20 6e 69 6c 5f 74 79 70 65 6e 61 6d 65 29 20 28 2a 20 61 6c 6c 6f 77 20 70   ┆ment <> nil_typename) (* allow p┆
0x02a840…02a860             6f 69 6e 74 65 72 73 20 74 6f 20 6e 69 6c 74 79 70 65 20 2a 29 20 61 6e 64 0a 28 72 69 67 74 68   ┆ointers to niltype *) and (rigth┆
0x02a860…02a880             65 6c 65 6d 65 6e 74 20 3c 3e 20 6e 69 6c 5f 74 79 70 65 6e 61 6d 65 29 29 20 74 68 65 6e 0a 28   ┆element <> nil_typename)) then (┆
0x02a880…02a8a0             2a 20 73 75 70 70 72 65 73 73 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 66 6f 72 20 74 68 65   ┆* suppress error message for the┆
0x02a8a0…02a8c0             20 27 6e 69 6c 27 2d 66 75 6e 63 74 69 6f 6e 2c 20 77 69 74 68 20 61 63 74 75 61 6c 20 73 68 61   ┆ 'nil'-function, with actual sha┆
0x02a8c0…02a8e0             64 6f 77 20 2e 2e 2e 20 2a 29 0a 69 66 20 28 6c 65 66 74 65 6c 65 6d 65 6e 74 20 3c 3e 20 6e 69   ┆dow ... *) if (leftelement <> ni┆
0x02a8e0…02a900             6c 5f 74 79 70 65 6e 61 6d 65 29 20 6f 72 20 28 72 69 67 74 68 74 79 70 65 6e 61 6d 65 20 3c 3e   ┆l_typename) or (rigthtypename <>┆
0x02a900…02a920             20 73 68 61 64 6f 77 5f 74 79 70 65 6e 61 6d 65 29 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 65 72   ┆ shadow_typename) then error (er┆
0x02a920…02a940             72 6f 72 63 6f 64 65 29 3b 0a 0a 63 70 6f 6f 6c 3a 0a 28 2a 20 62 6f 74 68 20 6d 75 73 74 20 62   ┆rorcode);  cpool: (* both must b┆
0x02a940…02a960             65 20 70 6f 6f 6c 2c 20 62 75 74 20 64 6f 6e 27 74 20 63 61 72 65 20 61 62 6f 75 74 20 27 6f 66   ┆e pool, but don't care about 'of┆
0x02a960…02a980             2d 74 79 70 65 27 20 2a 29 0a 69 66 20 6c 65 66 74 62 61 73 65 6b 69 6e 64 20 3c 3e 20 72 69 67   ┆-type' *) if leftbasekind <> rig┆
0x02a980…02a9a0             74 68 62 61 73 65 6b 69 6e 64 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 65 72 72 6f 72 63 6f 64 65   ┆thbasekind then error (errorcode┆
0x02a9a0…02a9c0             29 3b 0a 0a 63 65 72 72 6f 72 6b 69 6e 64 3a 20 3b 20 28 2a 20 61 6e 79 74 68 69 6e 67 20 61 6c   ┆);  cerrorkind: ; (* anything al┆
0x02a9c0…02a9e0             6c 6f 77 65 64 20 2a 29 0a 0a 65 6c 73 65 0a 65 72 72 6f 72 20 28 65 72 72 6f 72 63 6f 64 65 29   ┆lowed *)  else error (errorcode)┆
0x02a9e0…02aa00             3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 5f 76   ┆; end;  end; (* procedure test_v┆
0x02aa00…02aa20 (11, 0, 12) 61 72 5f 63 6f 6d 70 61 74 69 62 6c 65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65   ┆ar_compatible *)    procedure te┆
0x02aa20…02aa40             73 74 69 6e 69 74 69 61 6c 69 7a 65 20 28 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72   ┆stinitialize (xtypename: nameptr┆
0x02aa40…02aa60             3b 20 65 72 72 6f 72 63 6f 64 65 3a 20 70 61 73 73 33 65 72 72 6f 72 73 29 3b 0a 28 2a 20 74 65   ┆; errorcode: pass3errors); (* te┆
0x02aa60…02aa80             73 74 73 20 74 68 61 74 20 73 74 61 63 6b 74 6f 70 20 6d 61 79 20 62 65 20 27 61 73 73 69 67 6e   ┆sts that stacktop may be 'assign┆
0x02aa80…02aaa0             65 64 27 20 74 6f 20 61 20 2a 29 0a 28 2a 20 20 76 61 72 69 61 62 6c 65 20 6f 66 20 74 68 65 20   ┆ed' to a *) (*  variable of the ┆
0x02aaa0…02aac0             67 69 76 65 6e 20 74 79 70 65 20 2a 29 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 73 70 65 63 69 61 6c   ┆given type *)  begin  (* special┆
0x02aac0…02aae0             20 74 65 73 74 20 66 6f 72 20 27 73 6b 69 70 70 61 72 61 6d 27 20 2a 29 0a 77 69 74 68 20 20 73   ┆ test for 'skipparam' *) with  s┆
0x02aae0…02ab00             74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 69 66 20 6f 70 63 6f 64 65 20 3c 3e 20 63 73 6b 69 70 70   ┆tacktop ^ do if opcode <> cskipp┆
0x02ab00…02ab20             61 72 61 6d 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 74 68 65 20 74 79 70 65 2d 63 6f 6d 70 61   ┆aram then begin (*the type-compa┆
0x02ab20…02ab40             72 69 73 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 69 6e 20 63 61 73 65 20 6f 66 20 27 73 6b 69   ┆rison is omitted in case of 'ski┆
0x02ab40…02ab60             70 70 61 72 61 6d 27 20 2a 29 0a 0a 72 65 73 6f 6c 76 65 5f 6e 61 6d 65 64 5f 74 79 70 65 20 28   ┆pparam' *)  resolve_named_type (┆
0x02ab60…02ab80             78 74 79 70 65 6e 61 6d 65 2c 20 6c 65 66 74 74 79 70 65 6e 61 6d 65 2c 20 6c 65 66 74 65 6c 65   ┆xtypename, lefttypename, leftele┆
0x02ab80…02aba0             6d 65 6e 74 2c 20 6c 65 66 74 62 61 73 65 6b 69 6e 64 29 3b 0a 72 65 73 6f 6c 76 65 74 79 70 65   ┆ment, leftbasekind); resolvetype┆
0x02aba0…02abc0             20 28 73 74 61 63 6b 74 6f 70 2c 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 2c 20 72 69 67 74 68   ┆ (stacktop, rigthtypename, rigth┆
0x02abc0…02abe0             65 6c 65 6d 65 6e 74 2c 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 3b 0a 0a 69 66 20 6c 65 66   ┆element, rigthbasekind);  if lef┆
0x02abe0…02ac00             74 74 79 70 65 6e 61 6d 65 20 3c 3e 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 20 74 68 65 6e 0a   ┆ttypename <> rigthtypename then ┆
0x02ac00…02ac20 (11, 0, 13) 74 65 73 74 5f 76 61 6c 75 65 5f 63 6f 6d 70 61 74 69 62 6c 65 20 28 65 72 72 6f 72 63 6f 64 65   ┆test_value_compatible (errorcode┆
0x02ac20…02ac40             29 3b 0a 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 73 74   ┆);  end;  end;    procedure test┆
0x02ac40…02ac60             72 61 6e 67 65 20 28 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 28 2a 20 69   ┆range (xtypename: nameptr); (* i┆
0x02ac60…02ac80             6e 73 65 72 74 73 20 61 20 27 72 61 6e 67 65 2d 74 65 73 74 27 2c 20 69 6e 20 63 61 73 65 20 74   ┆nserts a 'range-test', in case t┆
0x02ac80…02aca0             68 65 20 74 79 70 65 20 69 73 20 61 20 73 75 62 72 61 6e 67 65 20 2a 29 0a 0a 76 61 72 20 6c 6f   ┆he type is a subrange *)  var lo┆
0x02aca0…02acc0             63 61 6c 5f 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 6c   ┆cal_typename: nameptr;  begin  l┆
0x02acc0…02ace0             6f 63 61 6c 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 75 6e 73 74 72 69 70 66 72 6f 7a 65 6e 20 28 78   ┆ocal_typename:= unstripfrozen (x┆
0x02ace0…02ad00             74 79 70 65 6e 61 6d 65 29 3b 0a 77 69 74 68 20 20 6c 6f 63 61 6c 5f 74 79 70 65 6e 61 6d 65 20   ┆typename); with  local_typename ┆
0x02ad00…02ad20             5e 20 64 6f 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 73 69 6d 70 6c 69 66 69 65 64 20   ┆^ do  (* namenode of simplified ┆
0x02ad20…02ad40             74 79 70 65 20 2a 29 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 20 20 20 20 20 20 20 20 20 20   ┆type *) with  typ ^ do          ┆
0x02ad40…02ad60             20 28 2a 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 69 66   ┆ (* corresponding typenode *) if┆
0x02ad60…02ad80             20 74 79 70 65 6b 69 6e 64 20 3d 20 63 73 75 62 72 61 6e 67 65 20 74 68 65 6e 0a 6f 70 65 72 20   ┆ typekind = csubrange then oper ┆
0x02ad80…02ada0             28 75 6e 61 72 79 2c 20 63 72 61 6e 67 65 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 65 6e 64   ┆(unary, crange, xtypename);  end┆
0x02ada0…02adc0             3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 62 65 67 69 6e 61 63 74 75 61 6c 3b 0a 28 2a 20 63   ┆;    procedure beginactual; (* c┆
0x02adc0…02ade0             61 6c 6c 65 64 20 6f 6e 20 74 68 65 20 6c 65 66 74 20 70 61 72 61 6e 74 68 65 73 69 73 20 69 6e   ┆alled on the left paranthesis in┆
0x02ade0…02ae00             20 61 20 70 61 72 61 6d 65 74 65 72 2d 6c 69 73 74 20 2a 29 0a 0a 6c 61 62 65 6c 20 31 2c 20 32   ┆ a parameter-list *)  label 1, 2┆
0x02ae00…02ae20 (11, 0, 14) 3b 0a 0a 62 65 67 69 6e 0a 0a 31 3a 20 28 2a 20 72 65 70 65 61 74 20 61 66 74 65 72 20 70 61 72   ┆;  begin  1: (* repeat after par┆
0x02ae20…02ae40             61 6d 65 74 65 72 2d 6c 65 73 73 20 66 75 6e 63 74 69 6f 6e 2d 63 61 6c 6c 20 2a 29 0a 70 75 73   ┆ameter-less function-call *) pus┆
0x02ae40…02ae60             68 63 61 6c 6c 3b 20 28 2a 20 62 65 63 61 75 73 65 20 6f 66 20 6e 65 73 74 65 64 20 63 61 6c 6c   ┆hcall; (* because of nested call┆
0x02ae60…02ae80             73 20 2a 29 0a 0a 28 2a 20 64 65 63 69 64 65 20 74 68 65 20 6b 69 6e 64 20 6f 66 20 61 72 67 75   ┆s *)  (* decide the kind of argu┆
0x02ae80…02aea0             6d 65 6e 74 2d 6c 69 73 74 3a 20 69 6e 64 65 78 2c 20 70 61 72 61 6d 65 74 65 72 2c 20 73 74 72   ┆ment-list: index, parameter, str┆
0x02aea0…02aec0             75 63 63 6f 6e 73 74 20 2a 29 0a 28 2a 20 73 74 61 63 6b 74 6f 70 20 64 65 73 63 72 69 62 65 73   ┆ucconst *) (* stacktop describes┆
0x02aec0…02aee0             20 74 68 65 20 27 6f 77 6e 65 72 27 20 2a 29 0a 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20   ┆ the 'owner' *)  with  stacktop ┆
0x02aee0…02af00             5e 20 64 6f 0a 63 61 73 65 20 6f 70 63 6f 64 65 20 6f 66 0a 63 74 79 70 65 69 64 2c 20 28 2a 20   ┆^ do case opcode of ctypeid, (* ┆
0x02af00…02af20             69 6d 70 6c 69 63 69 74 20 74 79 70 65 20 6e 61 6d 65 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 73   ┆implicit type name in front of s┆
0x02af20…02af40             74 72 75 63 74 75 72 65 64 20 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 63 69 64 3a 0a 77 69 74 68 20   ┆tructured constant *) cid: with ┆
0x02af40…02af60             20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 27 6f   ┆ op_name ^ do  (* namenode of 'o┆
0x02af60…02af80             77 6e 65 72 27 20 2a 29 0a 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 28 2a 20 6f 66 20 6f 77 6e   ┆wner' *) case namekind (* of own┆
0x02af80…02afa0             65 72 20 2a 29 20 6f 66 0a 63 70 72 6f 63 65 73 73 2c 0a 63 70 72 6f 63 65 64 75 72 65 2c 0a 63   ┆er *) of cprocess, cprocedure, c┆
0x02afa0…02afc0             66 75 6e 63 74 69 6f 6e 3a 0a 62 65 67 69 6e 0a 70 72 65 70 61 72 65 5f 63 61 6c 6c 20 28 73 74   ┆function: begin prepare_call (st┆
0x02afc0…02afe0             61 63 6b 74 6f 70 29 3b 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 66 75 6e 63 74 69 6f 6e   ┆acktop); if namekind = cfunction┆
0x02afe0…02b000             20 74 68 65 6e 0a 69 66 20 65 6d 70 74 79 5f 70 61 72 61 6d 6c 69 73 74 20 28 70 61 72 61 6d 73   ┆ then if empty_paramlist (params┆
0x02b000…02b020 (11, 0, 15) 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 64 69 64   ┆) then begin (* the function did┆
0x02b020…02b040             27 6e 74 20 68 61 76 65 20 61 6e 79 20 66 6f 72 6d 61 6c 20 70 61 72 61 6d 65 74 65 72 73 20 2a   ┆'nt have any formal parameters *┆
0x02b040…02b060             29 0a 28 2a 20 74 68 65 72 65 66 6f 72 20 74 68 65 20 61 72 67 6c 69 73 74 20 6d 75 73 74 20 62   ┆) (* therefor the arglist must b┆
0x02b060…02b080             65 20 61 6e 20 69 6e 64 65 78 2d 6c 69 73 74 20 20 20 20 20 2a 29 0a 74 65 72 6d 69 6e 61 74 65   ┆e an index-list     *) terminate┆
0x02b080…02b0a0             5f 63 61 6c 6c 20 28 73 74 61 63 6b 74 6f 70 29 3b 20 20 28 2a 20 6d 61 6b 65 20 74 68 65 20 66   ┆_call (stacktop);  (* make the f┆
0x02b0a0…02b0c0             75 6e 63 74 69 6f 6e 2d 63 61 6c 6c 20 2a 29 0a 67 6f 74 6f 20 31 3b 20 20 20 20 20 20 20 20 20   ┆unction-call *) goto 1;         ┆
0x02b0c0…02b0e0             20 20 20 20 20 20 20 20 20 20 20 28 2a 20 73 74 61 72 74 20 61 6c 6c 20 6f 76 65 72 20 61 67 61   ┆           (* start all over aga┆
0x02b0e0…02b100             69 6e 20 2a 29 0a 28 2a 20 6e 6f 74 65 3a 20 74 68 69 73 20 74 69 6d 65 20 74 68 65 20 61 72 67   ┆in *) (* note: this time the arg┆
0x02b100…02b120             6c 69 73 74 20 77 69 6c 6c 20 62 65 20 74 61 6b 65 6e 20 61 73 20 61 6e 20 69 6e 64 65 78 2d 6c   ┆list will be taken as an index-l┆
0x02b120…02b140             69 73 74 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 63 74 79 70 65 3a 0a 62 65 67 69 6e 0a 28 2a   ┆ist *) end; end; ctype: begin (*┆
0x02b140…02b160             20 74 68 65 20 6c 69 73 74 20 69 73 20 61 20 73 74 72 75 63 2d 63 6f 6e 73 74 61 6e 74 20 2a 29   ┆ the list is a struc-constant *)┆
0x02b160…02b180             0a 6f 70 63 6f 64 65 3a 3d 20 63 74 79 70 65 69 64 3b 20 28 2a 20 6d 61 72 6b 20 61 66 74 65 72   ┆ opcode:= ctypeid; (* mark after┆
0x02b180…02b1a0             20 6f 75 74 65 72 6d 6f 73 74 20 73 74 72 75 63 20 63 6f 6e 73 74 20 62 65 67 69 6e 20 2a 29 0a   ┆ outermost struc const begin *) ┆
0x02b1a0…02b1c0             61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 3a 3d 20 6f 70 5f 6e 61 6d 65 3b 20 20 28 2a 20 72 65 6d   ┆arglist_owner:= op_name;  (* rem┆
0x02b1c0…02b1e0             65 6d 62 65 72 20 74 68 65 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 74 68 65 20 74 79 70 65 20 2a   ┆ember the namenode of the type *┆
0x02b1e0…02b200             29 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 20 20 20 20 20 20 20 20 28 2a 20 74 79 70 65 6e   ┆) with  typ ^ do        (* typen┆
0x02b200…02b220 (11, 1, 1)  6f 64 65 20 6f 66 20 74 68 65 20 74 79 70 65 20 2a 29 0a 63 61 73 65 20 74 79 70 65 6b 69 6e 64   ┆ode of the type *) case typekind┆
0x02b220…02b240             20 6f 66 0a 63 61 72 72 61 79 3a 0a 62 65 67 69 6e 0a 61 72 67 6b 69 6e 64 20 20 20 3a 3d 20 63   ┆ of carray: begin argkind   := c┆
0x02b240…02b260             73 74 72 75 63 61 72 72 61 79 3b 0a 63 75 72 66 6f 72 6d 61 6c 20 3a 3d 20 65 6c 65 6d 65 6e 74   ┆strucarray; curformal := element┆
0x02b260…02b280             3b 20 20 20 20 20 28 2a 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 61 72 72 61 79 20 65 6c 65 6d 65   ┆;     (* typename of array eleme┆
0x02b280…02b2a0             6e 74 73 20 2a 29 0a 65 6e 64 3b 0a 63 72 65 63 6f 72 64 3a 0a 62 65 67 69 6e 0a 61 72 67 6b 69   ┆nts *) end; crecord: begin argki┆
0x02b2a0…02b2c0             6e 64 20 20 20 3a 3d 20 63 73 74 72 75 63 72 65 63 6f 72 64 3b 0a 63 75 72 66 6f 72 6d 61 6c 20   ┆nd   := cstrucrecord; curformal ┆
0x02b2c0…02b2e0             3a 3d 20 65 6c 65 6d 65 6e 74 3b 20 20 20 20 20 28 2a 20 66 69 72 73 74 20 6f 66 20 66 69 65 6c   ┆:= element;     (* first of fiel┆
0x02b2e0…02b300             64 2d 6e 61 6d 65 20 6c 69 73 74 20 2a 29 0a 65 6e 64 3b 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28   ┆d-name list *) end; else begin (┆
0x02b300…02b320             2a 20 6f 6e 6c 79 20 61 72 72 61 79 2d 74 79 70 65 73 20 61 6e 64 20 72 65 63 6f 72 64 2d 74 79   ┆* only array-types and record-ty┆
0x02b320…02b340             70 65 73 20 6d 61 79 20 62 65 20 73 74 72 75 63 2d 63 6f 6e 73 74 73 20 2a 29 0a 61 72 67 6b 69   ┆pes may be struc-consts *) argki┆
0x02b340…02b360             6e 64 3a 3d 20 63 65 72 72 6f 72 61 72 67 3b 0a 65 72 72 6f 72 20 28 74 79 70 65 5f 6d 75 73 74   ┆nd:= cerrorarg; error (type_must┆
0x02b360…02b380             5f 62 65 5f 72 65 63 6f 72 64 5f 6f 72 5f 61 72 72 61 79 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20   ┆_be_record_or_array); end; end; ┆
0x02b380…02b3a0             28 2a 20 63 61 73 65 20 74 79 70 65 6b 69 6e 64 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65   ┆(* case typekind *) end; (* case┆
0x02b3a0…02b3c0             20 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 74 79 70 65 20 2a 29 0a 0a 0a 65 6c 73 65 0a 0a 62 65 67   ┆ namekind = ctype *)   else  beg┆
0x02b3c0…02b3e0             69 6e 0a 32 3a 0a 28 2a 20 73 65 65 20 69 66 20 65 78 74 65 72 6e 61 6c 20 70 72 6f 63 65 73 73   ┆in 2: (* see if external process┆
0x02b3e0…02b400             20 2a 29 0a 69 66 20 6f 70 5f 74 79 70 65 6e 61 6d 65 5e 2e 6e 61 6d 65 6b 69 6e 64 3d 63 65 78   ┆ *) if op_typename^.namekind=cex┆
0x02b400…02b420 (11, 1, 2)  74 70 72 6f 63 65 73 73 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 70 72 65 70 61 72 65 20 61   ┆tprocess then begin (* prepare a┆
0x02b420…02b440             63 74 75 61 6c 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29 0a 61 72 67 6b 69 6e 64 3a   ┆ctual parameter list *) argkind:┆
0x02b440…02b460             3d 20 63 61 72 67 75 6d 65 6e 74 3b 0a 63 75 72 66 6f 72 6d 61 6c 3a 3d 20 6f 70 5f 74 79 70 65   ┆= cargument; curformal:= op_type┆
0x02b460…02b480             6e 61 6d 65 5e 2e 70 61 72 61 6d 73 3b 0a 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 3a 3d 20 6f 70   ┆name^.params; arglist_owner:= op┆
0x02b480…02b4a0             5f 74 79 70 65 6e 61 6d 65 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 20 20 20 28 2a 20   ┆_typename; end else begin    (* ┆
0x02b4a0…02b4c0             74 68 65 20 61 72 67 75 6d 65 6e 74 6c 69 73 74 20 6d 75 73 74 20 62 65 20 61 6e 20 69 6e 64 65   ┆the argumentlist must be an inde┆
0x02b4c0…02b4e0             78 2d 6c 69 73 74 20 2a 29 0a 61 72 67 6b 69 6e 64 20 20 20 3a 3d 20 63 69 6e 64 65 78 3b 0a 63   ┆x-list *) argkind   := cindex; c┆
0x02b4e0…02b500             75 72 66 6f 72 6d 61 6c 20 3a 3d 20 6f 70 5f 74 79 70 65 6e 61 6d 65 3b 20 20 28 2a 20 74 79 70   ┆urformal := op_typename;  (* typ┆
0x02b500…02b520             65 6e 61 6d 65 20 6f 75 67 74 68 20 74 6f 20 62 65 20 6e 61 6d 65 20 6f 66 20 61 72 72 61 79 2d   ┆ename ougth to be name of array-┆
0x02b520…02b540             74 79 70 65 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 6e   ┆type *) end; end; end; (* case n┆
0x02b540…02b560             61 6d 65 6b 69 6e 64 20 2a 29 0a 0a 65 6c 73 65 20 67 6f 74 6f 20 32 3b 20 28 2a 20 61 73 73 75   ┆amekind *)  else goto 2; (* assu┆
0x02b560…02b580             6d 65 20 69 6e 64 65 78 20 69 6e 20 61 6c 6c 20 6f 74 68 65 72 20 63 61 73 65 73 20 2a 29 0a 65   ┆me index in all other cases *) e┆
0x02b580…02b5a0             6e 64 3b 20 28 2a 20 63 61 73 65 20 6f 70 63 6f 64 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70   ┆nd; (* case opcode *)  end; (* p┆
0x02b5a0…02b5c0             72 6f 63 65 64 75 72 65 20 62 65 67 69 6e 61 63 74 75 61 6c 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65   ┆rocedure beginactual *)    proce┆
0x02b5c0…02b5e0             64 75 72 65 20 61 63 74 5f 70 61 72 61 6d 3b 0a 28 2a 20 63 61 6c 6c 65 64 20 6f 6e 3a 20 63 64   ┆dure act_param; (* called on: cd┆
0x02b5e0…02b600             6f 75 62 6c 65 70 61 72 61 6d 2d 63 61 63 74 75 61 6c 70 61 72 61 6d 20 2a 29 0a 0a 6c 61 62 65   ┆oubleparam-cactualparam *)  labe┆
0x02b600…02b620 (11, 1, 3)  6c 20 35 2c 20 31 30 3b 0a 0a 76 61 72 20 73 6f 6e 76 61 72 5f 6e 61 6d 65 3a 20 6e 61 6d 65 70   ┆l 5, 10;  var sonvar_name: namep┆
0x02b620…02b640             74 72 3b 0a 6c 6f 63 5f 74 65 6d 70 76 61 72 3a 20 6e 61 6d 65 70 74 72 3b 0a 0a 62 65 67 69 6e   ┆tr; loc_tempvar: nameptr;  begin┆
0x02b640…02b660             0a 0a 28 2a 20 66 69 72 73 74 20 62 69 6e 64 20 61 6e 79 20 70 6f 73 73 69 62 6c 65 20 64 6f 75   ┆  (* first bind any possible dou┆
0x02b660…02b680             62 6c 65 70 61 72 61 6d 20 74 6f 20 61 20 73 69 6e 67 6c 65 20 6f 6e 65 20 2a 29 0a 69 66 20 72   ┆bleparam to a single one *) if r┆
0x02b680…02b6a0             65 63 74 79 70 65 20 3d 20 63 64 6f 75 62 6c 65 70 61 72 61 6d 20 74 68 65 6e 0a 62 65 67 69 6e   ┆ectype = cdoubleparam then begin┆
0x02b6a0…02b6c0             0a 28 2a 20 6e 65 78 74 74 6f 70 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 65 78 70 72   ┆ (* nexttop must be integer expr┆
0x02b6c0…02b6e0             65 73 73 69 6f 6e 20 2a 29 0a 61 73 73 75 72 65 20 28 6e 65 78 74 74 6f 70 2c 20 69 6e 74 65 67   ┆ession *) assure (nexttop, integ┆
0x02b6e0…02b700             65 72 5f 74 79 70 65 6e 61 6d 65 2c 20 72 65 70 65 74 69 74 69 6f 6e 5f 74 79 70 65 29 3b 0a 74   ┆er_typename, repetition_type); t┆
0x02b700…02b720             65 73 74 76 61 6c 75 65 20 28 73 74 61 63 6b 74 6f 70 29 3b 0a 77 69 74 68 20 20 73 74 61 63 6b   ┆estvalue (stacktop); with  stack┆
0x02b720…02b740             74 6f 70 20 5e 20 64 6f 0a 6f 70 65 72 20 28 62 69 6e 61 72 79 2c 20 63 64 6f 75 62 6c 65 70 61   ┆top ^ do oper (binary, cdoublepa┆
0x02b740…02b760             72 61 6d 2c 20 6f 70 5f 74 79 70 65 6e 61 6d 65 20 28 2a 20 70 72 6f 70 61 67 61 74 65 20 74 79   ┆ram, op_typename (* propagate ty┆
0x02b760…02b780             70 65 6e 61 6d 65 2e 2e 2e 20 2a 29 20 29 3b 0a 65 6e 64 3b 0a 0a 0a 28 2a 20 61 72 67 6b 69 6e   ┆pename... *) ); end;   (* argkin┆
0x02b780…02b7a0             64 20 6e 6f 77 20 64 65 73 63 72 69 62 65 73 20 68 6f 77 20 74 6f 20 69 6e 74 65 72 70 72 65 74   ┆d now describes how to interpret┆
0x02b7a0…02b7c0             65 20 74 68 65 20 61 63 74 75 61 6c 61 72 67 20 2a 29 0a 0a 63 61 73 65 20 61 72 67 6b 69 6e 64   ┆e the actualarg *)  case argkind┆
0x02b7c0…02b7e0             20 6f 66 0a 63 65 72 72 6f 72 61 72 67 2c 0a 63 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 28 2a 20   ┆ of cerrorarg, cindex: begin (* ┆
0x02b7e0…02b800             63 75 72 66 6f 72 6d 61 6c 20 69 73 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 28 73 75 70 70 6f 73   ┆curformal is typename of (suppos┆
0x02b800…02b820 (11, 1, 4)  65 64 29 20 61 72 72 61 79 20 2a 29 0a 28 2a 20 74 65 73 74 20 74 68 61 74 20 69 74 73 20 74 79   ┆ed) array *) (* test that its ty┆
0x02b820…02b840             70 65 6b 69 6e 64 20 69 73 20 27 63 61 72 72 61 79 27 20 20 20 20 20 20 20 20 2a 29 0a 0a 28 2a   ┆pekind is 'carray'        *)  (*┆
0x02b840…02b860             20 64 6f 75 62 6c 65 70 61 72 61 6d 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 2a 29 0a 69   ┆ doubleparam is not allowed *) i┆
0x02b860…02b880             66 20 72 65 63 74 79 70 65 20 3c 3e 20 63 61 63 74 75 61 6c 70 61 72 61 6d 20 74 68 65 6e 0a 65   ┆f rectype <> cactualparam then e┆
0x02b880…02b8a0             72 72 6f 72 20 28 64 6f 75 62 6c 65 5f 70 61 72 61 6d 5f 6f 6e 6c 79 5f 69 6e 5f 73 74 72 75 63   ┆rror (double_param_only_in_struc┆
0x02b8a0…02b8c0             5f 63 6f 6e 73 74 29 3b 0a 0a 63 75 72 66 6f 72 6d 61 6c 3a 3d 20 75 6e 73 74 72 69 70 66 72 6f   ┆_const);  curformal:= unstripfro┆
0x02b8c0…02b8e0             7a 65 6e 20 28 63 75 72 66 6f 72 6d 61 6c 29 3b 20 20 28 2a 20 69 6e 20 63 61 73 65 20 74 68 65   ┆zen (curformal);  (* in case the┆
0x02b8e0…02b900             20 61 72 72 61 79 20 69 74 73 65 6c 66 20 77 61 73 20 66 72 6f 7a 65 6e 20 2a 29 0a 0a 77 69 74   ┆ array itself was frozen *)  wit┆
0x02b900…02b920             68 20 20 63 75 72 66 6f 72 6d 61 6c 20 5e 20 64 6f 20 20 20 20 20 28 2a 20 6e 61 6d 65 6e 6f 64   ┆h  curformal ^ do     (* namenod┆
0x02b920…02b940             65 20 6f 66 20 74 79 70 65 20 2a 29 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 20 20 20 20 20   ┆e of type *) with  typ ^ do     ┆
0x02b940…02b960             20 20 20 20 28 2a 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 79 70 65 6e 6f 64 65 20 2a 29   ┆    (* corresponding typenode *)┆
0x02b960…02b980             0a 62 65 67 69 6e 0a 69 66 20 61 72 67 6b 69 6e 64 20 3c 3e 20 63 65 72 72 6f 72 61 72 67 20 74   ┆ begin if argkind <> cerrorarg t┆
0x02b980…02b9a0             68 65 6e 20 20 20 28 2a 20 73 75 70 70 72 65 73 73 20 65 72 72 6f 72 2d 63 61 73 63 61 64 65 20   ┆hen   (* suppress error-cascade ┆
0x02b9a0…02b9c0             2a 29 0a 63 61 73 65 20 74 79 70 65 6b 69 6e 64 20 28 2a 20 6f 66 20 74 79 70 65 6e 6f 64 65 20   ┆*) case typekind (* of typenode ┆
0x02b9c0…02b9e0             2a 29 20 6f 66 0a 0a 63 65 72 72 6f 72 6b 69 6e 64 3a 20 3b 20 28 2a 20 6e 6f 74 68 69 6e 67 2c   ┆*) of  cerrorkind: ; (* nothing,┆
0x02b9e0…02ba00             20 62 75 74 20 73 75 70 70 72 65 73 73 20 65 72 72 6f 72 2d 63 61 73 63 61 64 65 20 2a 29 0a 0a   ┆ but suppress error-cascade *)  ┆
0x02ba00…02ba20 (11, 1, 5)  63 61 72 72 61 79 3a 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64   ┆carray: begin with  stacktop ^ d┆
0x02ba20…02ba40             6f 0a 69 66 20 6f 70 63 6f 64 65 20 3d 20 63 73 6b 69 70 70 61 72 61 6d 20 74 68 65 6e 0a 65 72   ┆o if opcode = cskipparam then er┆
0x02ba40…02ba60             72 6f 72 20 28 73 6b 69 70 70 61 72 61 6d 5f 6f 6e 6c 79 5f 69 6e 5f 73 74 72 75 63 5f 63 6f 6e   ┆ror (skipparam_only_in_struc_con┆
0x02ba60…02ba80             73 74 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28 2a 20 67 65 74 20 62 61 73 65 6b 69 6e 64 20 6f   ┆st) else begin (* get basekind o┆
0x02ba80…02baa0             66 20 69 6e 64 65 78 74 79 70 65 20 6f 66 20 74 68 65 20 61 72 72 61 79 20 2a 29 0a 72 65 73 6f   ┆f indextype of the array *) reso┆
0x02baa0…02bac0             6c 76 65 5f 6e 61 6d 65 64 5f 74 79 70 65 20 28 69 6e 64 65 78 2c 20 6c 65 66 74 74 79 70 65 6e   ┆lve_named_type (index, lefttypen┆
0x02bac0…02bae0             61 6d 65 2c 20 6c 65 66 74 65 6c 65 6d 65 6e 74 2c 20 6c 65 66 74 62 61 73 65 6b 69 6e 64 29 3b   ┆ame, leftelement, leftbasekind);┆
0x02bae0…02bb00             0a 28 2a 20 67 65 74 20 62 61 73 65 6b 69 6e 64 20 6f 66 20 61 63 74 75 61 6c 20 69 6e 64 65 78   ┆ (* get basekind of actual index┆
0x02bb00…02bb20             20 65 78 70 72 65 73 73 69 6f 6e 20 2a 29 0a 72 65 73 6f 6c 76 65 74 79 70 65 20 28 73 74 61 63   ┆ expression *) resolvetype (stac┆
0x02bb20…02bb40             6b 74 6f 70 2c 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 2c 20 72 69 67 74 68 65 6c 65 6d 65 6e   ┆ktop, rigthtypename, rigthelemen┆
0x02bb40…02bb60             74 2c 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 3b 0a 0a 69 66 20 6c 65 66 74 74 79 70 65 6e   ┆t, rigthbasekind);  if lefttypen┆
0x02bb60…02bb80             61 6d 65 20 3c 3e 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 20 74 68 65 6e 0a 65 72 72 6f 72 20   ┆ame <> rigthtypename then error ┆
0x02bb80…02bba0             28 69 6e 63 6f 6d 70 61 74 69 62 6c 65 5f 69 6e 64 65 78 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a   ┆(incompatible_index); end; end; ┆
0x02bba0…02bbc0             65 6c 73 65 0a 62 65 67 69 6e 0a 65 72 72 6f 72 20 28 73 75 62 73 63 72 69 70 74 5f 61 66 74 65   ┆else begin error (subscript_afte┆
0x02bbc0…02bbe0             72 5f 6e 6f 6e 61 72 72 61 79 29 3b 0a 61 72 67 6b 69 6e 64 3a 3d 20 63 65 72 72 6f 72 61 72 67   ┆r_nonarray); argkind:= cerrorarg┆
0x02bbe0…02bc00             3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 62 69 6e 64 20 74 68 65 20 69 6e 64 65 78 2d 65   ┆; end; end;  (* bind the index-e┆
0x02bc00…02bc20 (11, 1, 6)  78 70 72 65 73 73 69 6f 6e 20 74 6f 20 74 68 65 20 6f 77 6e 65 72 20 2a 29 0a 6f 70 65 72 20 28   ┆xpression to the owner *) oper (┆
0x02bc20…02bc40             62 69 6e 61 72 79 2c 20 61 72 67 6b 69 6e 64 2c 20 65 6c 65 6d 65 6e 74 20 28 2a 20 74 79 70 65   ┆binary, argkind, element (* type┆
0x02bc40…02bc60             6e 61 6d 65 20 6f 66 20 61 72 72 61 79 2d 65 6c 65 6d 65 6e 74 20 2a 29 29 3b 0a 77 69 74 68 20   ┆name of array-element *)); with ┆
0x02bc60…02bc80             20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 6f 70 5f 6e 61 6d 65 3a 3d 20 63   ┆ stacktop ^ do begin op_name:= c┆
0x02bc80…02bca0             75 72 66 6f 72 6d 61 6c 3b 20 20 28 2a 20 74 79 70 65 2d 6e 61 6d 65 20 6f 66 20 61 72 72 61 79   ┆urformal;  (* type-name of array┆
0x02bca0…02bcc0             20 2a 29 0a 6f 70 5f 70 61 63 6b 66 6c 61 67 3a 3d 20 70 61 63 6b 66 6c 61 67 20 28 2a 20 66 72   ┆ *) op_packflag:= packflag (* fr┆
0x02bcc0…02bce0             6f 6d 20 74 79 70 65 6e 6f 64 65 20 6f 66 20 74 68 65 20 61 72 72 61 79 20 2a 29 3b 0a 65 6e 64   ┆om typenode of the array *); end┆
0x02bce0…02bd00             3b 0a 0a 28 2a 20 6c 65 74 20 63 75 72 66 6f 72 6d 61 6c 20 62 65 20 74 79 70 65 6e 61 6d 65 20   ┆;  (* let curformal be typename ┆
0x02bd00…02bd20             6f 66 20 61 72 72 61 79 2d 65 6c 65 6d 65 6e 74 20 2a 29 0a 63 75 72 66 6f 72 6d 61 6c 3a 3d 20   ┆of array-element *) curformal:= ┆
0x02bd20…02bd40             65 6c 65 6d 65 6e 74 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 63 75 72 66 6f 72 6d 61 6c   ┆element;  end; (* with curformal┆
0x02bd40…02bd60             20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 61 72 67 6b 69 6e 64 20 3d 20 69 6e 64 65 78 20 2a 29 0a   ┆ *)  end; (* argkind = index *) ┆
0x02bd60…02bd80             0a 63 61 72 67 75 6d 65 6e 74 3a 0a 62 65 67 69 6e 0a 28 2a 20 63 75 72 66 6f 72 6d 61 6c 20 69   ┆ cargument: begin (* curformal i┆
0x02bd80…02bda0             73 20 6e 61 6d 65 20 69 6e 20 66 6f 72 6d 61 6c 20 70 61 72 61 6d 20 6c 69 73 74 20 2a 29 0a 77   ┆s name in formal param list *) w┆
0x02bda0…02bdc0             68 69 6c 65 20 63 75 72 66 6f 72 6d 61 6c 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 28 2a 20   ┆hile curformal <> nilname do (* ┆
0x02bdc0…02bde0             73 6b 69 70 20 69 6d 70 6c 69 63 69 74 20 74 79 70 65 73 20 61 6e 64 20 66 75 6e 63 74 69 6f 6e   ┆skip implicit types and function┆
0x02bde0…02be00             2d 72 65 74 75 72 6e 2d 76 61 6c 75 65 20 2a 29 0a 77 69 74 68 20 20 63 75 72 66 6f 72 6d 61 6c   ┆-return-value *) with  curformal┆
0x02be00…02be20 (11, 1, 7)  20 5e 20 64 6f 0a 62 65 67 69 6e 0a 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 28 2a 20 6f 66 20   ┆ ^ do begin case namekind (* of ┆
0x02be20…02be40             66 6f 72 6d 61 6c 20 6e 61 6d 65 20 2a 29 20 6f 66 0a 63 73 63 61 6c 61 72 65 6c 65 6d 2c 0a 63   ┆formal name *) of cscalarelem, c┆
0x02be40…02be60             74 79 70 65 2c 0a 63 75 6e 64 65 63 6c 61 72 65 64 2c 20 20 28 2a 20 75 6e 64 65 63 6c 61 72 65   ┆type, cundeclared,  (* undeclare┆
0x02be60…02be80             64 20 74 79 70 65 6e 61 6d 65 20 2a 29 0a 63 66 75 6e 63 76 61 6c 3a 20 3b 20 28 2a 20 73 6b 69   ┆d typename *) cfuncval: ; (* ski┆
0x02be80…02bea0             70 20 2a 29 0a 0a 63 76 61 72 70 3a 0a 62 65 67 69 6e 0a 28 2a 20 63 68 65 63 6b 20 76 61 72 20   ┆p *)  cvarp: begin (* check var ┆
0x02bea0…02bec0             70 61 72 61 6d 65 74 65 72 20 2a 29 0a 0a 28 2a 20 66 69 72 73 74 20 74 65 73 74 20 69 66 20 74   ┆parameter *)  (* first test if t┆
0x02bec0…02bee0             68 65 20 61 63 74 75 61 6c 20 69 73 20 61 20 70 72 6f 63 65 73 73 2d 6e 61 6d 65 20 2a 29 0a 77   ┆he actual is a process-name *) w┆
0x02bee0…02bf00             69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 6f 70 63 6f   ┆ith  stacktop ^ do begin if opco┆
0x02bf00…02bf20             64 65 20 3d 20 63 73 6b 69 70 70 61 72 61 6d 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 72 6f 72   ┆de = cskipparam then begin error┆
0x02bf20…02bf40             20 28 73 6b 69 70 70 61 72 61 6d 5f 6f 6e 6c 79 5f 69 6e 5f 73 74 72 75 63 5f 63 6f 6e 73 74 29   ┆ (skipparam_only_in_struc_const)┆
0x02bf40…02bf60             3b 0a 67 6f 74 6f 20 35 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 6f 70 63 6f 64 65 20 3d 20 63   ┆; goto 5; end else if opcode = c┆
0x02bf60…02bf80             69 64 20 74 68 65 6e 0a 77 69 74 68 20 20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 20 20 28 2a 20 6e   ┆id then with  op_name ^ do  (* n┆
0x02bf80…02bfa0             61 6d 65 6e 6f 64 65 20 6f 66 20 69 64 65 6e 74 69 66 69 65 72 20 2a 29 0a 69 66 20 6e 61 6d 65   ┆amenode of identifier *) if name┆
0x02bfa0…02bfc0             6b 69 6e 64 20 3d 20 63 70 72 6f 63 65 73 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 69 74   ┆kind = cprocess then begin (* it┆
0x02bfc0…02bfe0             20 77 61 73 20 72 65 61 6c 6c 79 20 61 20 70 72 6f 63 65 73 73 2d 6e 61 6d 65 20 2a 29 0a 28 2a   ┆ was really a process-name *) (*┆
0x02bfe0…02c000             20 65 78 63 68 61 6e 67 65 20 74 68 65 20 69 64 65 6e 74 69 66 69 65 72 20 77 69 74 68 20 74 68   ┆ exchange the identifier with th┆
0x02c000…02c020 (11, 1, 8)  65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 73 6f 6e 2d 76 61 72 69 61 62 6c 65 20 2a 29 0a   ┆e corresponding son-variable *) ┆
0x02c020…02c040             6f 70 5f 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d 65 20 28 2a 20 6f 66 20 70 72 6f 63 65 73 73   ┆op_name:= nextname (* of process┆
0x02c040…02c060             6e 61 6d 65 20 2a 29 3b 0a 77 69 74 68 20 20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 20 20 28 2a 20   ┆name *); with  op_name ^ do  (* ┆
0x02c060…02c080             6e 61 6d 65 6e 6f 64 65 20 6f 66 20 73 6f 6e 2d 76 61 72 20 2a 29 0a 6f 70 5f 74 79 70 65 6e 61   ┆namenode of son-var *) op_typena┆
0x02c080…02c0a0             6d 65 3a 3d 20 74 79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 73 6f 6e 76 61 72 20 2a 29 0a 65 6e   ┆me:= typename (* of sonvar *) en┆
0x02c0a0…02c0c0             64 3b 0a 0a 69 66 20 6f 70 5f 74 79 70 65 6e 61 6d 65 5e 2e 6e 61 6d 65 6b 69 6e 64 3d 63 65 78   ┆d;  if op_typename^.namekind=cex┆
0x02c0c0…02c0e0             74 70 72 6f 63 65 73 73 20 74 68 65 6e 0a 6f 70 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 73 6f 6e 5f   ┆tprocess then op_typename:= son_┆
0x02c0e0…02c100             74 79 70 65 6e 61 6d 65 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 73 74 61 63 6b 74 6f 70 20   ┆typename; end; (* with stacktop ┆
0x02c100…02c120             2a 29 0a 0a 69 66 20 74 79 70 65 6e 61 6d 65 5e 2e 74 79 70 5e 2e 74 79 70 65 6b 69 6e 64 3d 63   ┆*)  if typename^.typ^.typekind=c┆
0x02c120…02c140             72 65 61 64 6f 6e 6c 79 20 74 68 65 6e 20 28 2a 20 66 72 6f 7a 65 6e 20 56 41 52 20 70 61 72 61   ┆readonly then (* frozen VAR para┆
0x02c140…02c160             6d 65 74 65 72 2c 20 61 6c 6c 6f 77 20 63 6f 6e 73 74 20 2a 29 0a 74 65 73 74 72 65 61 64 6f 6e   ┆meter, allow const *) testreadon┆
0x02c160…02c180             6c 79 76 61 72 70 61 72 61 6d 28 73 74 61 63 6b 74 6f 70 29 0a 65 6c 73 65 0a 28 2a 20 61 63 74   ┆lyvarparam(stacktop) else (* act┆
0x02c180…02c1a0             75 61 6c 20 6d 75 73 74 20 62 65 20 75 6e 70 61 63 6b 65 64 20 76 61 72 69 61 62 6c 65 20 2a 29   ┆ual must be unpacked variable *)┆
0x02c1a0…02c1c0             0a 74 65 73 74 76 61 72 69 61 62 6c 65 20 28 73 74 61 63 6b 74 6f 70 29 3b 0a 74 65 73 74 75 6e   ┆ testvariable (stacktop); testun┆
0x02c1c0…02c1e0             70 61 63 6b 65 64 20 28 73 74 61 63 6b 74 6f 70 29 3b 0a 0a 28 2a 20 74 68 65 20 66 6f 72 6d 61   ┆packed (stacktop);  (* the forma┆
0x02c1e0…02c200             6c 74 79 70 65 20 61 6e 64 20 74 68 65 20 61 63 74 75 61 6c 74 79 70 65 20 6d 75 73 74 20 6d 61   ┆ltype and the actualtype must ma┆
0x02c200…02c220 (11, 1, 9)  74 63 68 20 65 78 61 63 74 6c 79 2c 20 65 78 63 65 70 74 20 66 6f 72 20 27 66 72 6f 7a 65 6e 27   ┆tch exactly, except for 'frozen'┆
0x02c220…02c240             20 2a 29 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 28 2a 20 6e 6f 77 3a 20   ┆ *) with  stacktop ^ do (* now: ┆
0x02c240…02c260             74 79 70 65 6e 61 6d 65 20 20 20 20 3d 20 66 6f 72 6d 61 6c 20 74 79 70 65 6e 61 6d 65 20 2a 29   ┆typename    = formal typename *)┆
0x02c260…02c280             0a 28 2a 20 20 20 20 20 20 6f 70 2d 74 79 70 65 6e 61 6d 65 20 3d 20 61 63 74 75 61 6c 20 74 79   ┆ (*      op-typename = actual ty┆
0x02c280…02c2a0             70 65 6e 61 6d 65 20 2a 29 0a 69 66 20 74 79 70 65 6e 61 6d 65 20 3c 3e 20 6f 70 5f 74 79 70 65   ┆pename *) if typename <> op_type┆
0x02c2a0…02c2c0             6e 61 6d 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 74 72 79 20 74 6f 20 72 65 6d 6f 76 65   ┆name then begin (* try to remove┆
0x02c2c0…02c2e0             20 72 65 61 64 6f 6e 6c 79 2d 6d 61 72 6b 73 20 66 72 6f 6d 20 66 6f 72 6d 61 6c 20 61 6e 64 20   ┆ readonly-marks from formal and ┆
0x02c2e0…02c300             61 63 74 75 61 6c 20 74 79 70 65 73 20 2a 29 0a 69 66 20 75 6e 73 74 72 69 70 66 72 6f 7a 65 6e   ┆actual types *) if unstripfrozen┆
0x02c300…02c320             20 28 74 79 70 65 6e 61 6d 65 29 20 3c 3e 20 75 6e 73 74 72 69 70 66 72 6f 7a 65 6e 20 28 6f 70   ┆ (typename) <> unstripfrozen (op┆
0x02c320…02c340             5f 74 79 70 65 6e 61 6d 65 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 72 65 73 6f 6c 76 65 5f 6e 61   ┆_typename) then begin resolve_na┆
0x02c340…02c360             6d 65 64 5f 74 79 70 65 20 28 74 79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 63 75 72 66 6f 72 6d   ┆med_type (typename (* of curform┆
0x02c360…02c380             61 6c 20 2a 29 2c 20 6c 65 66 74 74 79 70 65 6e 61 6d 65 2c 20 6c 65 66 74 65 6c 65 6d 65 6e 74   ┆al *), lefttypename, leftelement┆
0x02c380…02c3a0             2c 20 6c 65 66 74 62 61 73 65 6b 69 6e 64 29 3b 0a 72 65 73 6f 6c 76 65 74 79 70 65 20 28 73 74   ┆, leftbasekind); resolvetype (st┆
0x02c3a0…02c3c0             61 63 6b 74 6f 70 2c 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 2c 20 72 69 67 74 68 65 6c 65 6d   ┆acktop, rigthtypename, rigthelem┆
0x02c3c0…02c3e0             65 6e 74 2c 20 72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 3b 0a 69 66 20 61 6c 6c 6f 77 5f 74 65   ┆ent, rigthbasekind); if allow_te┆
0x02c3e0…02c400             78 74 5f 6c 69 74 65 72 61 6c 73 20 74 68 65 6e 0a 74 65 73 74 5f 76 61 6c 75 65 5f 63 6f 6d 70   ┆xt_literals then test_value_comp┆
0x02c400…02c420 (11, 1, 10) 61 74 69 62 6c 65 28 69 6c 6c 65 67 61 6c 5f 76 61 72 5f 70 61 72 61 6d 5f 73 75 62 73 74 69 74   ┆atible(illegal_var_param_substit┆
0x02c420…02c440             75 74 69 6f 6e 29 0a 65 6c 73 65 0a 74 65 73 74 5f 76 61 72 5f 63 6f 6d 70 61 74 69 62 6c 65 20   ┆ution) else test_var_compatible ┆
0x02c440…02c460             28 69 6c 6c 65 67 61 6c 5f 76 61 72 5f 70 61 72 61 6d 5f 73 75 62 73 74 69 74 75 74 69 6f 6e 29   ┆(illegal_var_param_substitution)┆
0x02c460…02c480             3b 0a 65 6e 64 0a 65 6c 73 65 0a 28 2a 20 69 74 20 68 65 6c 70 65 64 2e 2e 2e 20 62 75 74 20 69   ┆; end else (* it helped... but i┆
0x02c480…02c4a0             6e 20 74 68 69 73 20 63 61 73 65 20 66 6f 72 6d 61 6c 20 6d 75 73 74 20 62 65 20 72 65 61 64 6f   ┆n this case formal must be reado┆
0x02c4a0…02c4c0             6e 6c 79 20 2a 29 0a 69 66 20 74 79 70 65 6e 61 6d 65 20 3d 20 75 6e 73 74 72 69 70 66 72 6f 7a   ┆nly *) if typename = unstripfroz┆
0x02c4c0…02c4e0             65 6e 20 28 74 79 70 65 6e 61 6d 65 29 20 74 68 65 6e 0a 28 2a 20 66 6f 72 6d 61 6c 20 77 61 73   ┆en (typename) then (* formal was┆
0x02c4e0…02c500             27 6e 74 20 66 72 6f 7a 65 6e 2c 20 62 75 74 20 61 63 74 75 61 6c 20 77 61 73 20 2a 29 0a 65 72   ┆'nt frozen, but actual was *) er┆
0x02c500…02c520             72 6f 72 20 28 20 61 63 74 75 61 6c 5f 6d 61 79 5f 6e 6f 74 5f 62 65 5f 66 72 6f 7a 65 6e 29 3b   ┆ror ( actual_may_not_be_frozen);┆
0x02c520…02c540             0a 65 6e 64 3b 20 28 2a 20 69 66 20 6e 6f 74 20 64 69 72 65 63 74 20 6d 61 74 63 68 20 2a 29 0a   ┆ end; (* if not direct match *) ┆
0x02c540…02c560             0a 69 66 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 20 3d 20 6e 69 6c 5f 70 72 6f 63 6e 61 6d 65   ┆ if arglist_owner = nil_procname┆
0x02c560…02c580             20 74 68 65 6e 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 69 66 20 20 6f 70   ┆ then with  stacktop ^ do if  op┆
0x02c580…02c5a0             5f 74 79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 61 63 74 75 61 6c 20 70 61 72 61 6d 65 74 65 72   ┆_typename (* of actual parameter┆
0x02c5a0…02c5c0             20 2a 29 20 3d 20 72 65 66 65 72 65 6e 63 65 5f 74 79 70 65 6e 61 6d 65 20 74 68 65 6e 0a 62 65   ┆ *) = reference_typename then be┆
0x02c5c0…02c5e0             67 69 6e 20 28 2a 20 63 68 61 6e 67 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 74 68   ┆gin (* change the function to th┆
0x02c5e0…02c600             65 20 73 70 65 63 69 61 6c 20 6e 69 6c 28 72 65 66 65 72 65 6e 63 65 29 20 2a 29 0a 77 69 74 68   ┆e special nil(reference) *) with┆
0x02c600…02c620 (11, 1, 11) 20 20 6e 65 78 74 74 6f 70 20 5e 20 64 6f 20 20 28 2a 20 61 72 67 6b 69 6e 64 20 6e 6f 64 65 20   ┆  nexttop ^ do  (* argkind node ┆
0x02c620…02c640             2a 29 0a 77 69 74 68 20 20 6c 65 66 74 20 28 2a 20 6f 66 20 61 72 67 6b 69 6e 64 20 2a 29 20 5e   ┆*) with  left (* of argkind *) ^┆
0x02c640…02c660             20 64 6f 20 28 2a 20 66 75 6e 63 74 72 61 69 6c 65 72 20 6e 6f 64 65 20 2a 29 0a 77 69 74 68 20   ┆ do (* functrailer node *) with ┆
0x02c660…02c680             20 72 69 67 74 68 20 28 2a 20 6f 66 20 66 75 6e 63 74 72 61 69 6c 65 72 20 2a 29 20 5e 20 64 6f   ┆ rigth (* of functrailer *) ^ do┆
0x02c680…02c6a0             20 28 2a 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 20 6e 6f 64 65 20 2a 29 0a 20 6f 70 5f 6e 61   ┆ (* function name node *)  op_na┆
0x02c6a0…02c6c0             6d 65 3a 3d 20 6e 69 6c 72 65 66 5f 70 72 6f 63 6e 61 6d 65 20 3b 20 28 2a 20 6e 69 6c 28 72 65   ┆me:= nilref_procname ; (* nil(re┆
0x02c6c0…02c6e0             66 65 72 65 6e 63 65 29 20 6d 61 79 20 62 65 20 68 61 6e 64 6c 65 64 20 69 6e 20 61 20 73 70 65   ┆ference) may be handled in a spe┆
0x02c6e0…02c700             63 69 61 6c 20 77 61 79 20 69 6e 20 61 20 6c 61 74 65 72 20 70 61 73 73 20 2a 29 0a 65 6e 64 3b   ┆cial way in a later pass *) end;┆
0x02c700…02c720             0a 0a 67 6f 74 6f 20 35 3b 0a 65 6e 64 3b 0a 0a 63 76 61 6c 75 65 70 3a 0a 62 65 67 69 6e 0a 28   ┆  goto 5; end;  cvaluep: begin (┆
0x02c720…02c740             2a 20 63 68 65 63 6b 20 76 61 6c 75 65 20 70 61 72 61 6d 65 74 65 72 20 2a 29 0a 0a 28 2a 20 66   ┆* check value parameter *)  (* f┆
0x02c740…02c760             69 72 73 74 20 74 65 73 74 20 69 66 20 74 68 65 20 61 63 74 75 61 6c 20 69 73 20 61 20 70 72 6f   ┆irst test if the actual is a pro┆
0x02c760…02c780             63 65 73 73 2d 63 61 6c 6c 20 2a 29 0a 6d 61 6b 65 5f 63 61 6c 6c 20 28 73 74 61 63 6b 74 6f 70   ┆cess-call *) make_call (stacktop┆
0x02c780…02c7a0             29 3b 20 20 28 2a 20 69 66 20 70 61 72 61 6d 65 74 65 72 2d 6c 65 73 73 20 6e 6f 72 6d 61 6c 20   ┆);  (* if parameter-less normal ┆
0x02c7a0…02c7c0             70 72 6f 63 65 73 73 20 2a 29 0a 69 66 20 73 74 61 63 6b 74 6f 70 5e 2e 6f 70 5f 74 79 70 65 6e   ┆process *) if stacktop^.op_typen┆
0x02c7c0…02c7e0             61 6d 65 5e 2e 6e 61 6d 65 6b 69 6e 64 3d 63 65 78 74 70 72 6f 63 65 73 73 20 74 68 65 6e 20 28   ┆ame^.namekind=cextprocess then (┆
0x02c7e0…02c800             2a 20 70 61 72 61 6d 65 74 65 72 20 6c 65 73 73 20 65 78 74 65 72 6e 61 6c 20 70 72 6f 63 65 73   ┆* parameter less external proces┆
0x02c800…02c820 (11, 1, 12) 73 20 74 79 70 65 64 20 6f 62 6a 65 63 74 20 2a 29 0a 6f 70 65 72 28 75 6e 61 72 79 2c 20 63 63   ┆s typed object *) oper(unary, cc┆
0x02c820…02c840             61 6c 6c 70 72 6f 63 65 73 73 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 6e 6f 20 74 79 70 65 20 2a   ┆allprocess, nilname (* no type *┆
0x02c840…02c860             29 29 3b 0a 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 69 66 20 6f 70 63 6f   ┆));  with  stacktop ^ do if opco┆
0x02c860…02c880             64 65 20 3d 20 63 73 6b 69 70 70 61 72 61 6d 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 72 6f 72   ┆de = cskipparam then begin error┆
0x02c880…02c8a0             20 28 73 6b 69 70 70 61 72 61 6d 5f 6f 6e 6c 79 5f 69 6e 5f 73 74 72 75 63 5f 63 6f 6e 73 74 29   ┆ (skipparam_only_in_struc_const)┆
0x02c8a0…02c8c0             3b 0a 67 6f 74 6f 20 35 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 6f 70 63 6f 64 65 20 3d 20 63   ┆; goto 5; end else if opcode = c┆
0x02c8c0…02c8e0             63 61 6c 6c 70 72 6f 63 65 73 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 63 6f 75 6e 74 5f 70 72   ┆callprocess then begin  count_pr┆
0x02c8e0…02c900             6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 20   ┆ocessparam:= count_processparam ┆
0x02c900…02c920             2b 20 31 3b 0a 0a 28 2a 20 69 6e 73 65 72 74 20 65 78 74 72 61 20 6f 70 61 6e 64 73 20 74 6f 20   ┆+ 1;  (* insert extra opands to ┆
0x02c920…02c940             64 65 73 63 72 69 62 65 20 74 68 65 20 70 72 6f 63 65 73 73 2d 27 63 61 6c 6c 27 20 61 73 20 6e   ┆describe the process-'call' as n┆
0x02c940…02c960             6f 72 6d 61 6c 20 61 72 67 75 6d 65 6e 74 20 2a 29 0a 73 6f 6e 76 61 72 5f 6e 61 6d 65 3a 3d 20   ┆ormal argument *) sonvar_name:= ┆
0x02c960…02c980             6f 70 5f 6e 61 6d 65 3b 20 20 28 2a 20 67 65 74 20 74 68 65 20 6e 61 6d 65 20 66 72 6f 6d 20 74   ┆op_name;  (* get the name from t┆
0x02c980…02c9a0             68 65 20 27 63 61 6c 6c 70 72 6f 63 65 73 73 27 2d 6e 6f 64 65 20 2a 29 0a 0a 28 2a 20 67 65 74   ┆he 'callprocess'-node *)  (* get┆
0x02c9a0…02c9c0             20 61 20 74 65 6d 70 6f 72 61 72 79 20 6e 61 6d 65 6e 6f 64 65 20 66 6f 72 20 64 65 73 63 72 69   ┆ a temporary namenode for descri┆
0x02c9c0…02c9e0             62 69 6e 67 20 74 68 65 20 27 70 72 6f 63 65 73 73 72 65 63 27 20 2a 29 0a 6c 6f 63 5f 74 65 6d   ┆bing the 'processrec' *) loc_tem┆
0x02c9e0…02ca00             70 76 61 72 3a 3d 20 66 75 6e 63 74 65 6d 70 76 61 72 3b 20 20 28 2a 20 73 61 76 65 20 74 68 65   ┆pvar:= functempvar;  (* save the┆
0x02ca00…02ca20 (11, 1, 13) 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 20 2a 29 0a 66 75 6e 63 74 65 6d 70 76 61 72 3a   ┆ global variable *) functempvar:┆
0x02ca20…02ca40             3d 20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3b 0a 66 75 6e 63 74 65 6d 70 76 61 72 5e 2e 6e   ┆= alloc_namenode; functempvar^.n┆
0x02ca40…02ca60             61 6d 65 6b 69 6e 64 3a 3d 20 63 76 61 72 3b 20 28 2a 20 6e 6f 74 20 75 73 65 64 2c 20 62 75 74   ┆amekind:= cvar; (* not used, but┆
0x02ca60…02ca80             20 6d 75 73 74 20 6e 6f 74 20 62 65 20 65 78 74 70 72 6f 63 65 73 73 20 2a 29 0a 69 6e 73 65 72   ┆ must not be extprocess *) inser┆
0x02ca80…02caa0             74 5f 66 75 6e 63 74 79 70 65 20 28 70 72 6f 63 65 73 73 72 65 63 5f 74 79 70 65 6e 61 6d 65 29   ┆t_functype (processrec_typename)┆
0x02caa0…02cac0             3b 0a 0a 28 2a 20 62 69 6e 64 20 74 68 65 20 70 72 6f 63 65 73 73 63 61 6c 6c 20 74 6f 20 74 68   ┆;  (* bind the processcall to th┆
0x02cac0…02cae0             65 20 6e 6f 72 6d 61 6c 20 70 61 72 61 6d 6c 69 73 74 20 2a 29 0a 6f 70 65 72 20 28 62 69 6e 61   ┆e normal paramlist *) oper (bina┆
0x02cae0…02cb00             72 79 2c 20 63 70 72 6f 63 65 73 73 61 72 67 75 6d 65 6e 74 2c 20 66 75 6e 63 74 65 6d 70 76 61   ┆ry, cprocessargument, functempva┆
0x02cb00…02cb20             72 20 28 2a 20 3d 20 74 65 6d 70 20 76 61 72 69 61 62 6c 65 20 2a 29 20 29 3b 0a 77 69 74 68 20   ┆r (* = temp variable *) ); with ┆
0x02cb20…02cb40             20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 6f 70 5f 6e 61 6d 65 3a 3d 20 73 6f 6e 76 61 72 5f   ┆ stacktop ^ do op_name:= sonvar_┆
0x02cb40…02cb60             6e 61 6d 65 3b 0a 0a 28 2a 20 63 72 65 61 74 65 20 61 6e 20 6f 70 65 72 61 6e 64 2c 20 77 69 74   ┆name;  (* create an operand, wit┆
0x02cb60…02cb80             68 20 27 70 72 6f 63 65 73 73 72 65 63 27 20 74 79 70 65 20 2a 29 0a 6e 65 77 6f 70 61 6e 64 20   ┆h 'processrec' type *) newopand ┆
0x02cb80…02cba0             28 63 66 75 6e 63 74 65 6d 70 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 69 72 72 65 6c 6c 20 74 79   ┆(cfunctemp, nilname (* irrell ty┆
0x02cba0…02cbc0             70 65 6e 61 6d 65 20 2a 29 29 3b 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a   ┆pename *)); with  stacktop ^ do ┆
0x02cbc0…02cbe0             6f 70 5f 6e 61 6d 65 3a 3d 20 66 75 6e 63 74 65 6d 70 76 61 72 3b 0a 0a 28 2a 20 6e 6f 77 3a 20   ┆op_name:= functempvar;  (* now: ┆
0x02cbe0…02cc00             73 74 61 63 6b 74 6f 70 20 69 73 20 61 20 66 75 6e 63 74 65 6d 70 2d 76 61 72 2c 20 6f 66 20 70   ┆stacktop is a functemp-var, of p┆
0x02cc00…02cc20 (11, 1, 14) 72 6f 63 65 73 73 72 65 63 20 74 79 70 65 20 2a 29 0a 66 75 6e 63 74 65 6d 70 76 61 72 3a 3d 20   ┆rocessrec type *) functempvar:= ┆
0x02cc20…02cc40             6c 6f 63 5f 74 65 6d 70 76 61 72 3b 20 20 28 2a 20 72 65 73 74 6f 72 65 20 74 68 65 20 67 6c 6f   ┆loc_tempvar;  (* restore the glo┆
0x02cc40…02cc60             62 61 6c 20 76 61 72 69 61 62 6c 65 20 2a 29 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 20 63 75 72 66   ┆bal variable *) end;  with  curf┆
0x02cc60…02cc80             6f 72 6d 61 6c 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 0a 69 66 20 74 79 70 65 6e 61 6d 65 20 28 2a   ┆ormal ^ do begin  if typename (*┆
0x02cc80…02cca0             20 6f 66 20 63 75 72 66 6f 72 6d 61 6c 20 2a 29 20 3d 20 6e 69 6c 5f 74 79 70 65 6e 61 6d 65 20   ┆ of curformal *) = nil_typename ┆
0x02cca0…02ccc0             74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 74 65 73 74 20 63 65 72 74 61 69 6e 20 73 70 65 63 69   ┆then begin (* test certain speci┆
0x02ccc0…02cce0             61 6c 20 73 74 64 2d 66 75 6e 63 74 69 6f 6e 73 20 2a 29 0a 0a 69 66 20 28 61 72 67 6c 69 73 74   ┆al std-functions *)  if (arglist┆
0x02cce0…02cd00             5f 6f 77 6e 65 72 20 3d 20 73 75 63 63 5f 70 72 6f 63 6e 61 6d 65 29 0a 6f 72 20 28 61 72 67 6c   ┆_owner = succ_procname) or (argl┆
0x02cd00…02cd20             69 73 74 5f 6f 77 6e 65 72 20 3d 20 70 72 65 64 5f 70 72 6f 63 6e 61 6d 65 29 20 74 68 65 6e 0a   ┆ist_owner = pred_procname) then ┆
0x02cd20…02cd40             62 65 67 69 6e 0a 28 2a 20 61 63 74 75 61 6c 20 65 78 70 72 65 73 73 69 6f 6e 20 68 61 73 20 74   ┆begin (* actual expression has t┆
0x02cd40…02cd60             6f 20 62 65 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 2a 29 0a 72 69 67 74 68 74 79 70 65 6e 61 6d   ┆o be enumeration *) rigthtypenam┆
0x02cd60…02cd80             65 3a 3d 20 74 65 73 74 65 6e 75 6d 65 72 61 74 69 6f 6e 20 28 73 74 61 63 6b 74 6f 70 29 3b 0a   ┆e:= testenumeration (stacktop); ┆
0x02cd80…02cda0             69 6e 73 65 72 74 5f 66 75 6e 63 74 79 70 65 20 28 72 69 67 74 68 74 79 70 65 6e 61 6d 65 29 3b   ┆insert_functype (rigthtypename);┆
0x02cda0…02cdc0             0a 67 6f 74 6f 20 35 3b 0a 65 6e 64 3b 0a 0a 69 66 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 20   ┆ goto 5; end;  if arglist_owner ┆
0x02cdc0…02cde0             3d 20 6f 72 64 5f 70 72 6f 63 6e 61 6d 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 61 63 74   ┆= ord_procname then begin (* act┆
0x02cde0…02ce00             75 61 6c 20 65 78 70 72 65 73 73 69 6f 6e 20 68 61 73 20 74 6f 20 62 65 20 65 6e 75 6d 65 72 61   ┆ual expression has to be enumera┆
0x02ce00…02ce20 (11, 1, 15) 74 69 6f 6e 20 2a 29 0a 72 69 67 74 68 74 79 70 65 6e 61 6d 65 3a 3d 20 74 65 73 74 65 6e 75 6d   ┆tion *) rigthtypename:= testenum┆
0x02ce20…02ce40             65 72 61 74 69 6f 6e 20 28 73 74 61 63 6b 74 6f 70 29 3b 0a 67 6f 74 6f 20 35 3b 0a 65 6e 64 3b   ┆eration (stacktop); goto 5; end;┆
0x02ce40…02ce60             0a 0a 69 66 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 20 3d 20 61 62 73 5f 70 72 6f 63 6e 61 6d   ┆  if arglist_owner = abs_procnam┆
0x02ce60…02ce80             65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 61 63 74 75 61 6c 20 65 78 70 72 65 73 73 69 6f   ┆e then begin (* actual expressio┆
0x02ce80…02cea0             6e 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 28 6f 72 20 73 75 62 72 61 6e 67 65 20 68   ┆n must be integer (or subrange h┆
0x02cea0…02cec0             65 72 65 6f 66 29 20 2a 29 0a 28 2a 20 6e 6f 74 65 3a 20 69 6e 20 66 75 74 75 72 65 20 61 6c 73   ┆ereof) *) (* note: in future als┆
0x02cec0…02cee0             6f 20 72 65 61 6c 2e 2e 2e 20 2a 29 0a 61 73 73 75 72 65 20 28 73 74 61 63 6b 74 6f 70 2c 20 69   ┆o real... *) assure (stacktop, i┆
0x02cee0…02cf00             6e 74 65 67 65 72 5f 74 79 70 65 6e 61 6d 65 2c 20 69 6c 6c 65 67 61 6c 5f 76 61 6c 75 65 5f 70   ┆nteger_typename, illegal_value_p┆
0x02cf00…02cf20             61 72 61 6d 5f 73 75 62 73 74 69 74 75 74 69 6f 6e 29 3b 0a 69 6e 73 65 72 74 5f 66 75 6e 63 74   ┆aram_substitution); insert_funct┆
0x02cf20…02cf40             79 70 65 20 28 69 6e 74 65 67 65 72 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 67 6f 74 6f 20 35 3b 0a   ┆ype (integer_typename); goto 5; ┆
0x02cf40…02cf60             65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 73 70 65 63 69 61 6c 20 66 75 6e 63 74 69 6f 6e 73 20   ┆end;  end; (* special functions ┆
0x02cf60…02cf80             2a 29 0a 0a 72 65 73 6f 6c 76 65 5f 6e 61 6d 65 64 5f 74 79 70 65 20 28 74 79 70 65 6e 61 6d 65   ┆*)  resolve_named_type (typename┆
0x02cf80…02cfa0             2c 20 6c 65 66 74 74 79 70 65 6e 61 6d 65 2c 20 6c 65 66 74 65 6c 65 6d 65 6e 74 2c 20 6c 65 66   ┆, lefttypename, leftelement, lef┆
0x02cfa0…02cfc0             74 62 61 73 65 6b 69 6e 64 29 3b 0a 72 65 73 6f 6c 76 65 74 79 70 65 20 28 73 74 61 63 6b 74 6f   ┆tbasekind); resolvetype (stackto┆
0x02cfc0…02cfe0             70 2c 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 2c 20 72 69 67 74 68 65 6c 65 6d 65 6e 74 2c 20   ┆p, rigthtypename, rigthelement, ┆
0x02cfe0…02d000             72 69 67 74 68 62 61 73 65 6b 69 6e 64 29 3b 0a 0a 69 66 20 6c 65 66 74 74 79 70 65 6e 61 6d 65   ┆rigthbasekind);  if lefttypename┆
0x02d000…02d020 (12, 0, 1)  20 3c 3e 20 72 69 67 74 68 74 79 70 65 6e 61 6d 65 20 74 68 65 6e 0a 74 65 73 74 5f 76 61 6c 75   ┆ <> rigthtypename then test_valu┆
0x02d020…02d040             65 5f 63 6f 6d 70 61 74 69 62 6c 65 20 28 69 6c 6c 65 67 61 6c 5f 76 61 6c 75 65 5f 70 61 72 61   ┆e_compatible (illegal_value_para┆
0x02d040…02d060             6d 5f 73 75 62 73 74 69 74 75 74 69 6f 6e 29 3b 0a 28 2a 20 6e 6f 74 65 3a 20 69 6d 70 6c 69 63   ┆m_substitution); (* note: implic┆
0x02d060…02d080             69 74 20 70 61 72 61 6d 73 3a 20 6c 65 66 74 2e 2e 2e 20 61 6e 64 20 72 69 67 74 68 2e 2e 2e 20   ┆it params: left... and rigth... ┆
0x02d080…02d0a0             2a 29 0a 0a 69 66 20 74 79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 63 75 72 66 6f 72 6d 61 6c 20   ┆*)  if typename (* of curformal ┆
0x02d0a0…02d0c0             2a 29 20 3c 3e 20 73 74 61 63 6b 74 6f 70 5e 2e 6f 70 5f 74 79 70 65 6e 61 6d 65 20 74 68 65 6e   ┆*) <> stacktop^.op_typename then┆
0x02d0c0…02d0e0             0a 69 66 20 74 79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 63 75 72 66 6f 72 6d 61 6c 20 2a 29 20   ┆ if typename (* of curformal *) ┆
0x02d0e0…02d100             3c 3e 20 73 74 61 63 6b 74 6f 70 5e 2e 6f 70 5f 74 79 70 65 6e 61 6d 65 20 74 68 65 6e 0a 74 65   ┆<> stacktop^.op_typename then te┆
0x02d100…02d120             73 74 72 61 6e 67 65 20 28 74 79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 63 75 72 66 6f 72 6d 61   ┆strange (typename (* of curforma┆
0x02d120…02d140             6c 20 2a 29 20 29 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 63 75 72 66 6f 72 6d 61 6c 20 2a   ┆l *) ); end; (* with curformal *┆
0x02d140…02d160             29 0a 0a 67 6f 74 6f 20 35 3b 0a 65 6e 64 3b 0a 0a 65 6c 73 65 0a 0a 69 66 20 63 6f 6d 70 69 6c   ┆)  goto 5; end;  else  if compil┆
0x02d160…02d180             65 72 74 65 73 74 20 74 68 65 6e 20 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f   ┆ertest then comp_error (unknown_┆
0x02d180…02d1a0             6e 61 6d 65 6b 69 6e 64 29 3b 0a 65 6e 64 3b 0a 0a 0a 63 75 72 66 6f 72 6d 61 6c 3a 3d 20 6e 65   ┆namekind); end;   curformal:= ne┆
0x02d1a0…02d1c0             78 74 6e 61 6d 65 3b 20 20 28 2a 20 66 6f 6c 6c 6f 77 20 63 68 61 69 6e 20 2a 29 0a 0a 65 6e 64   ┆xtname;  (* follow chain *)  end┆
0x02d1c0…02d1e0             3b 20 28 2a 20 77 69 74 68 20 63 75 72 66 6f 72 6d 61 6c 20 2a 29 0a 0a 28 2a 20 74 68 65 20 66   ┆; (* with curformal *)  (* the f┆
0x02d1e0…02d200             6f 72 6d 61 6c 20 70 61 72 61 6d 6c 69 73 74 20 77 61 73 20 65 78 68 61 75 73 74 65 64 20 2a 29   ┆ormal paramlist was exhausted *)┆
0x02d200…02d220 (12, 0, 2)  0a 65 72 72 6f 72 73 70 69 78 3a 3d 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 5e 2e 73 70 69 78   ┆ errorspix:= arglist_owner^.spix┆
0x02d220…02d240             3b 0a 65 72 72 6f 72 20 28 74 6f 6f 5f 6d 61 6e 79 5f 61 63 74 75 61 6c 5f 70 61 72 61 6d 73 29   ┆; error (too_many_actual_params)┆
0x02d240…02d260             3b 0a 0a 35 3a 20 3b 0a 0a 28 2a 20 6e 6f 74 65 3a 20 73 65 65 20 61 6c 73 6f 20 27 70 72 65 70   ┆;  5: ;  (* note: see also 'prep┆
0x02d260…02d280             61 72 65 5f 63 61 6c 6c 27 20 2a 29 0a 0a 28 2a 20 62 69 6e 64 20 74 68 65 20 61 63 74 75 61 6c   ┆are_call' *)  (* bind the actual┆
0x02d280…02d2a0             20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 6f 77 6e 65 72 20 2a 29 0a 6f 70 65 72 20   ┆ parameter to the owner *) oper ┆
0x02d2a0…02d2c0             28 62 69 6e 61 72 79 2c 20 61 72 67 6b 69 6e 64 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 69 72 72   ┆(binary, argkind, nilname (* irr┆
0x02d2c0…02d2e0             65 6c 6c 20 74 79 70 65 6e 61 6d 65 20 2a 29 20 29 3b 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f   ┆ell typename *) ); with  stackto┆
0x02d2e0…02d300             70 20 5e 20 64 6f 0a 6f 70 5f 6e 61 6d 65 3a 3d 20 63 75 72 66 6f 72 6d 61 6c 3b 20 20 20 28 2a   ┆p ^ do op_name:= curformal;   (*┆
0x02d300…02d320             20 6c 65 74 20 6f 70 6e 61 6d 65 20 70 6f 69 6e 74 20 61 74 20 63 75 72 72 65 6e 74 20 66 6f 72   ┆ let opname point at current for┆
0x02d320…02d340             6d 61 6c 20 6e 61 6d 65 20 2a 29 0a 0a 28 2a 20 6c 65 74 20 63 75 72 66 6f 72 6d 61 6c 20 62 65   ┆mal name *)  (* let curformal be┆
0x02d340…02d360             20 74 68 65 20 6e 65 78 74 20 69 6e 20 66 6f 72 6d 61 6c 2d 6c 69 73 74 20 2a 29 0a 77 69 74 68   ┆ the next in formal-list *) with┆
0x02d360…02d380             20 20 63 75 72 66 6f 72 6d 61 6c 20 5e 20 64 6f 0a 63 75 72 66 6f 72 6d 61 6c 3a 3d 20 6e 65 78   ┆  curformal ^ do curformal:= nex┆
0x02d380…02d3a0             74 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 20 20 28 2a 20 61 72 67 6b 69 6e 64 20 3d 20 63 61 72 67 75   ┆tname;  end;  (* argkind = cargu┆
0x02d3a0…02d3c0             6d 65 6e 74 20 2a 29 0a 0a 0a 63 73 74 72 75 63 61 72 72 61 79 3a 0a 62 65 67 69 6e 0a 28 2a 20   ┆ment *)   cstrucarray: begin (* ┆
0x02d3c0…02d3e0             63 75 72 66 6f 72 6d 61 6c 20 69 73 20 65 6c 65 6d 65 6e 74 20 74 79 70 65 6e 61 6d 65 20 2a 29   ┆curformal is element typename *)┆
0x02d3e0…02d400             0a 28 2a 20 63 68 65 63 6b 20 74 72 61 6e 73 66 65 72 20 74 6f 20 61 72 72 61 79 2d 65 6c 65 6d   ┆ (* check transfer to array-elem┆
0x02d400…02d420 (12, 0, 3)  65 6e 74 20 2a 29 0a 74 65 73 74 69 6e 69 74 69 61 6c 69 7a 65 20 28 63 75 72 66 6f 72 6d 61 6c   ┆ent *) testinitialize (curformal┆
0x02d420…02d440             2c 20 73 74 72 75 63 5f 61 72 72 5f 69 6e 63 6f 6d 70 61 74 69 62 6c 65 29 3b 0a 6f 70 65 72 20   ┆, struc_arr_incompatible); oper ┆
0x02d440…02d460             28 62 69 6e 61 72 79 2c 20 61 72 67 6b 69 6e 64 2c 20 63 75 72 66 6f 72 6d 61 6c 20 28 2a 20 3d   ┆(binary, argkind, curformal (* =┆
0x02d460…02d480             20 65 6c 65 6d 65 6e 74 20 74 79 70 65 6e 61 6d 65 20 2a 29 20 29 3b 0a 65 6e 64 3b 0a 0a 63 73   ┆ element typename *) ); end;  cs┆
0x02d480…02d4a0             74 72 75 63 72 65 63 6f 72 64 3a 0a 62 65 67 69 6e 0a 28 2a 20 63 75 72 66 6f 72 6d 61 6c 20 69   ┆trucrecord: begin (* curformal i┆
0x02d4a0…02d4c0             73 20 6e 61 6d 65 20 69 6e 20 66 69 65 6c 64 20 6c 69 73 74 20 2a 29 0a 0a 28 2a 20 64 6f 75 62   ┆s name in field list *)  (* doub┆
0x02d4c0…02d4e0             6c 65 70 61 72 61 6d 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 2a 29 0a 69 66 20 72 65 63   ┆leparam is not allowed *) if rec┆
0x02d4e0…02d500             74 79 70 65 20 3c 3e 20 63 61 63 74 75 61 6c 70 61 72 61 6d 20 74 68 65 6e 0a 65 72 72 6f 72 20   ┆type <> cactualparam then error ┆
0x02d500…02d520             28 64 6f 75 62 6c 65 5f 70 61 72 61 6d 5f 6f 6e 6c 79 5f 69 6e 5f 73 74 72 75 63 5f 63 6f 6e 73   ┆(double_param_only_in_struc_cons┆
0x02d520…02d540             74 29 3b 0a 0a 77 68 69 6c 65 20 63 75 72 66 6f 72 6d 61 6c 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20   ┆t);  while curformal <> nilname ┆
0x02d540…02d560             64 6f 0a 28 2a 20 73 6b 69 70 20 69 6d 70 6c 69 63 69 74 20 74 79 70 65 73 20 69 6e 20 66 69 65   ┆do (* skip implicit types in fie┆
0x02d560…02d580             6c 64 20 6c 69 73 74 20 2a 29 0a 77 69 74 68 20 20 63 75 72 66 6f 72 6d 61 6c 20 5e 20 64 6f 0a   ┆ld list *) with  curformal ^ do ┆
0x02d580…02d5a0             62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 72 65 63 66 69 65 6c 64 20 74 68   ┆begin if namekind = crecfield th┆
0x02d5a0…02d5c0             65 6e 0a 62 65 67 69 6e 0a 28 2a 20 63 68 65 63 6b 20 74 72 61 6e 73 66 65 72 20 74 6f 20 66 69   ┆en begin (* check transfer to fi┆
0x02d5c0…02d5e0             65 6c 64 20 2a 29 0a 74 65 73 74 69 6e 69 74 69 61 6c 69 7a 65 20 28 74 79 70 65 6e 61 6d 65 2c   ┆eld *) testinitialize (typename,┆
0x02d5e0…02d600             20 73 74 72 75 63 5f 72 65 63 5f 69 6e 63 6f 6d 70 61 74 69 62 6c 65 29 3b 0a 67 6f 74 6f 20 31   ┆ struc_rec_incompatible); goto 1┆
0x02d600…02d620 (12, 0, 4)  30 3b 0a 65 6e 64 3b 0a 63 75 72 66 6f 72 6d 61 6c 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 0a 65 6e   ┆0; end; curformal:= nextname; en┆
0x02d620…02d640             64 3b 20 28 2a 20 77 69 74 68 20 63 75 72 66 6f 72 6d 61 6c 20 2a 29 0a 0a 65 72 72 6f 72 73 70   ┆d; (* with curformal *)  errorsp┆
0x02d640…02d660             69 78 3a 3d 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 5e 2e 73 70 69 78 3b 0a 65 72 72 6f 72 20   ┆ix:= arglist_owner^.spix; error ┆
0x02d660…02d680             28 74 6f 6f 5f 6d 61 6e 79 5f 76 61 6c 75 65 73 5f 69 6e 5f 72 65 63 6f 72 64 5f 73 74 72 75 63   ┆(too_many_values_in_record_struc┆
0x02d680…02d6a0             74 75 72 65 29 3b 0a 0a 31 30 3a 20 3b 0a 0a 28 2a 20 62 69 6e 64 20 74 68 65 20 76 61 6c 75 65   ┆ture);  10: ;  (* bind the value┆
0x02d6a0…02d6c0             20 74 6f 20 74 68 65 20 6f 77 6e 65 72 20 2a 29 0a 77 69 74 68 20 20 63 75 72 66 6f 72 6d 61 6c   ┆ to the owner *) with  curformal┆
0x02d6c0…02d6e0             20 5e 20 64 6f 20 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 66 69 65 6c 64 20 6e 61 6d   ┆ ^ do   (* namenode of field nam┆
0x02d6e0…02d700             65 20 2a 29 0a 62 65 67 69 6e 0a 6f 70 65 72 20 28 62 69 6e 61 72 79 2c 20 61 72 67 6b 69 6e 64   ┆e *) begin oper (binary, argkind┆
0x02d700…02d720             2c 20 63 75 72 66 6f 72 6d 61 6c 20 28 2a 20 69 2e 65 2e 20 66 69 65 6c 64 6e 61 6d 65 20 69 74   ┆, curformal (* i.e. fieldname it┆
0x02d720…02d740             73 65 6c 66 20 2a 29 20 29 3b 0a 63 75 72 66 6f 72 6d 61 6c 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b   ┆self *) ); curformal:= nextname;┆
0x02d740…02d760             0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65   ┆ end;  end;   else if compilerte┆
0x02d760…02d780             73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f 61 72 67 6b   ┆st then comp_error (unknown_argk┆
0x02d780…02d7a0             69 6e 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 61 72 67 6b 69 6e 64 20 2a 29 0a 0a 65   ┆ind); end; (* case argkind *)  e┆
0x02d7a0…02d7c0             6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 61 63 74 70 61 72 61 6d 20 2a 29 0a 0a 0a 0a   ┆nd; (* procedure actparam *)    ┆
0x02d7c0…02d7e0             0c 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 69 74 69 61 6c 69 7a 65 3b 0a 0a 76 61 72 20 73 74 72   ┆  procedure initialize;  var str┆
0x02d7e0…02d800             70 74 72 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 65 72 72 3a 20 70 61 73 73 33 65 72 72 6f 72 73   ┆ptr: stringptr; err: pass3errors┆
0x02d800…02d820 (12, 0, 5)  3b 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 66 69 6c 65 73 20 2a 29   ┆;  begin  (* initialize files *)┆
0x02d820…02d840             0a 6e 65 77 28 69 6e 63 6f 64 65 5f 66 69 6c 70 74 72 29 3b 0a 69 6e 63 6f 64 65 5f 66 69 6c 65   ┆ new(incode_filptr); incode_file┆
0x02d840…02d860             69 78 20 3a 3d 20 66 69 6c 72 65 63 5f 6d 61 78 3b 0a 61 73 73 69 67 6e 28 70 61 73 73 31 66 69   ┆ix := filrec_max; assign(pass1fi┆
0x02d860…02d880             6c 65 2c 20 63 6f 6e 63 61 74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 31 5f 63   ┆le, concat(path1_name, o_pass1_c┆
0x02d880…02d8a0             6f 64 65 6e 61 6d 65 29 29 3b 0a 28 2a 24 49 2d 2a 29 0a 72 65 73 65 74 28 70 61 73 73 31 66 69   ┆odename)); (*$I-*) reset(pass1fi┆
0x02d8a0…02d8c0             6c 65 29 3b 0a 69 66 20 69 6f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e   ┆le); if ioresult <> 0 then begin┆
0x02d8c0…02d8e0             0a 6e 6f 66 69 6c 65 28 63 6f 6e 63 61 74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73   ┆ nofile(concat(path1_name, o_pas┆
0x02d8e0…02d900             73 31 5f 63 6f 64 65 6e 61 6d 65 29 29 3b 0a 65 6e 64 3b 0a 28 2a 24 49 2b 2a 29 0a 6e 65 77 28   ┆s1_codename)); end; (*$I+*) new(┆
0x02d900…02d920             69 6e 73 79 6d 62 5f 66 69 6c 70 74 72 29 3b 0a 69 6e 73 79 6d 62 5f 66 69 6c 65 69 78 20 3a 3d   ┆insymb_filptr); insymb_fileix :=┆
0x02d920…02d940             20 66 69 6c 72 65 63 5f 6d 61 78 3b 0a 61 73 73 69 67 6e 28 70 61 73 73 31 6c 61 62 65 6c 73 2c   ┆ filrec_max; assign(pass1labels,┆
0x02d940…02d960             20 63 6f 6e 63 61 74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 6f 5f 70 61 73 73 31 5f 73 79 6d 62 6e   ┆ concat(path1_name,o_pass1_symbn┆
0x02d960…02d980             61 6d 65 29 29 3b 0a 28 2a 24 49 2d 2a 29 0a 72 65 73 65 74 28 70 61 73 73 31 6c 61 62 65 6c 73   ┆ame)); (*$I-*) reset(pass1labels┆
0x02d980…02d9a0             29 3b 0a 69 66 20 69 6f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e   ┆); if ioresult <> 0 then begin n┆
0x02d9a0…02d9c0             6f 66 69 6c 65 28 63 6f 6e 63 61 74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 31   ┆ofile(concat(path1_name, o_pass1┆
0x02d9c0…02d9e0             5f 73 79 6d 62 6e 61 6d 65 29 29 3b 0a 65 6e 64 3b 0a 28 2a 24 49 2b 2a 29 0a 6e 65 77 28 6f 75   ┆_symbname)); end; (*$I+*) new(ou┆
0x02d9e0…02da00             74 63 6f 64 65 5f 66 69 6c 70 74 72 29 3b 0a 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d   ┆tcode_filptr); outcode_fileix :=┆
0x02da00…02da20 (12, 0, 6)  20 30 3b 0a 61 73 73 69 67 6e 28 70 61 73 73 33 66 69 6c 65 2c 63 6f 6e 63 61 74 28 70 61 74 68   ┆ 0; assign(pass3file,concat(path┆
0x02da20…02da40             32 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 33 5f 63 6f 64 65 6e 61 6d 65 29 29 3b 0a 72 65 77 72   ┆2_name, o_pass3_codename)); rewr┆
0x02da40…02da60             69 74 65 20 28 70 61 73 73 33 66 69 6c 65 29 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20   ┆ite (pass3file);  (* initialize ┆
0x02da60…02da80             63 6f 6e 76 65 72 73 69 6f 6e 20 74 61 62 6c 65 20 2a 29 0a 66 6f 72 20 72 65 63 74 79 70 65 3a   ┆conversion table *) for rectype:┆
0x02da80…02daa0             3d 20 63 6e 6f 63 6f 64 65 20 74 6f 20 63 6c 61 73 74 63 6f 64 65 20 64 6f 0a 63 6f 6e 76 74 61   ┆= cnocode to clastcode do convta┆
0x02daa0…02dac0             62 6c 65 20 5b 20 6f 72 64 28 72 65 63 74 79 70 65 29 20 5d 3a 3d 20 72 65 63 74 79 70 65 3b 0a   ┆ble [ ord(rectype) ]:= rectype; ┆
0x02dac0…02dae0             0a 28 2a 20 63 6c 65 61 72 20 65 72 72 6f 72 2d 62 69 74 6d 61 70 20 2a 29 0a 66 6f 72 20 65 72   ┆ (* clear error-bitmap *) for er┆
0x02dae0…02db00             72 3a 3d 20 6e 6f 65 72 72 6f 72 20 74 6f 20 6c 61 73 74 70 61 73 73 33 65 72 72 6f 72 20 64 6f   ┆r:= noerror to lastpass3error do┆
0x02db00…02db20             0a 65 72 72 6f 72 5f 62 69 74 6d 61 70 20 5b 20 65 72 72 20 5d 3a 3d 20 66 61 6c 73 65 3b 0a 65   ┆ error_bitmap [ err ]:= false; e┆
0x02db20…02db40             72 72 6f 72 73 70 69 78 3a 3d 20 2d 31 3b 20 28 2a 20 6e 6f 20 73 70 69 78 20 61 73 73 6f 63 69   ┆rrorspix:= -1; (* no spix associ┆
0x02db40…02db60             61 74 65 64 20 77 69 74 68 20 61 20 70 6f 73 73 69 62 6c 65 20 65 72 72 6f 72 20 2a 29 0a 63 75   ┆ated with a possible error *) cu┆
0x02db60…02db80             72 5f 70 72 69 6e 74 6e 61 6d 65 3a 3d 20 2d 31 3b 20 28 2a 20 6e 6f 20 6e 61 6d 65 73 20 70 72   ┆r_printname:= -1; (* no names pr┆
0x02db80…02dba0             69 6e 74 65 64 20 79 65 74 20 2a 29 0a 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 73 74 64   ┆inted yet *)   (* initialize std┆
0x02dba0…02dbc0             73 70 69 78 20 74 61 62 6c 65 20 2a 29 0a 28 2a 20 61 6c 6c 20 65 6e 74 72 69 65 73 20 61 72 65   ┆spix table *) (* all entries are┆
0x02dbc0…02dbe0             20 73 65 74 20 74 6f 3a 20 27 6d 61 78 2d 73 70 69 78 27 2e 2e 2e 20 74 68 69 73 20 77 69 6c 6c   ┆ set to: 'max-spix'... this will┆
0x02dbe0…02dc00             20 65 6e 73 75 72 65 20 2a 29 0a 28 2a 20 20 20 74 68 61 74 20 70 61 73 73 31 20 61 63 74 75 61   ┆ ensure *) (*   that pass1 actua┆
0x02dc00…02dc20 (12, 0, 7)  6c 6c 79 20 73 65 6e 64 73 20 6f 75 74 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 66 6f 72   ┆lly sends out initialization for┆
0x02dc20…02dc40             20 74 68 65 73 65 20 2a 29 0a 66 6f 72 20 72 65 63 74 79 70 65 3a 3d 20 63 61 6e 6f 6e 79 6d 6f   ┆ these *) for rectype:= canonymo┆
0x02dc40…02dc60             75 73 20 74 6f 20 63 6f 72 64 20 64 6f 0a 73 74 64 73 70 69 78 20 28 6d 61 78 5f 73 70 69 78 2c   ┆us to cord do stdspix (max_spix,┆
0x02dc60…02dc80             20 72 65 63 74 79 70 65 29 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 65 73 74 20 66   ┆ rectype);  (* initialize test f┆
0x02dc80…02dca0             61 63 69 6c 69 74 69 65 73 20 2a 29 0a 73 75 72 76 65 79 5f 69 6e 66 6f 3a 3d 20 66 61 6c 73 65   ┆acilities *) survey_info:= false┆
0x02dca0…02dcc0             3b 0a 70 72 65 73 65 72 76 65 5f 6f 70 74 69 6f 6e 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 64 65   ┆; preserve_option:= false; (* de┆
0x02dcc0…02dce0             66 61 75 6c 74 3a 20 70 72 65 73 65 72 76 65 2e 6e 6f 2c 20 69 2e 65 2e 20 72 65 6d 6f 76 65 20   ┆fault: preserve.no, i.e. remove ┆
0x02dce0…02dd00             74 65 6d 70 6f 72 61 72 79 20 65 6e 74 72 69 65 73 20 2a 29 0a 74 65 73 74 69 6e 70 75 74 20 20   ┆temporary entries *) testinput  ┆
0x02dd00…02dd20             20 20 3a 3d 20 66 61 6c 73 65 3b 0a 74 65 73 74 6f 75 74 70 75 74 20 20 20 3a 3d 20 66 61 6c 73   ┆  := false; testoutput   := fals┆
0x02dd20…02dd40             65 3b 0a 74 65 73 74 69 6e 67 20 20 20 20 20 20 3a 3d 20 74 65 73 74 69 6e 70 75 74 20 6f 72 20   ┆e; testing      := testinput or ┆
0x02dd40…02dd60             74 65 73 74 6f 75 74 70 75 74 3b 0a 0a 63 61 6c 6c 5f 70 61 73 73 34 20 20 20 3a 3d 20 74 72 75   ┆testoutput;  call_pass4   := tru┆
0x02dd60…02dd80             65 3b 20 20 20 28 2a 20 64 65 66 61 75 6c 74 20 3d 20 63 6f 6e 74 69 6e 75 65 20 77 69 74 68 20   ┆e;   (* default = continue with ┆
0x02dd80…02dda0             70 61 73 73 34 20 2a 29 0a 74 61 72 67 65 74 5f 6d 61 63 68 69 6e 65 3a 3d 20 74 61 72 67 65 74   ┆pass4 *) target_machine:= target┆
0x02dda0…02ddc0             33 35 30 32 31 3b 20 28 2a 20 64 65 66 61 75 6c 74 20 3d 20 52 43 33 35 30 32 20 72 65 76 69 73   ┆35021; (* default = RC3502 revis┆
0x02ddc0…02dde0             69 6f 6e 20 35 20 2a 29 0a 0a 69 66 20 74 65 73 74 69 6e 67 20 74 68 65 6e 20 0a 62 65 67 69 6e   ┆ion 5 *)  if testing then  begin┆
0x02dde0…02de00             0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 70 75 74 29 3b 0a 77 72 69 74 65 20 28 6f 75 74 70 75 74   ┆ writeln (output); write (output┆
0x02de00…02de20 (12, 0, 8)  2c 20 27 52 45 41 4c 2d 54 49 4d 45 20 50 41 53 43 41 4c 2c 20 70 61 73 73 33 2c 20 76 65 72 73   ┆, 'REAL-TIME PASCAL, pass3, vers┆
0x02de20…02de40             69 6f 6e 20 27 2c 20 76 65 72 73 69 6f 6e 29 3b 0a 65 6e 64 3b 0a 0a 63 75 72 5f 6c 69 6e 65 6e   ┆ion ', version); end;  cur_linen┆
0x02de40…02de60             6f 20 20 20 3a 3d 20 30 3b 0a 6e 6f 5f 6f 66 5f 77 61 72 6e 69 6e 67 73 3a 3d 20 30 3b 0a 6e 6f   ┆o   := 0; no_of_warnings:= 0; no┆
0x02de60…02de80             5f 6f 66 5f 65 72 72 6f 72 73 3a 3d 20 30 3b 0a 63 75 72 5f 6f 70 61 6e 64 6e 6f 3a 3d 20 30 3b   ┆_of_errors:= 0; cur_opandno:= 0;┆
0x02de80…02dea0             0a 65 6d 69 74 5f 6c 69 6e 65 6e 6f 20 20 3a 3d 20 30 3b 0a 63 75 72 5f 62 6c 6f 63 6b 6e 6f 3a   ┆ emit_lineno  := 0; cur_blockno:┆
0x02dea0…02dec0             3d 20 70 72 6f 63 65 73 73 5f 62 6c 6f 63 6b 3b 0a 63 75 72 5f 63 6f 6e 74 65 78 74 5f 6e 6f 3a   ┆= process_block; cur_context_no:┆
0x02dec0…02dee0             3d 20 2d 31 3b 0a 0a 28 2a 20 61 6e 6e 6f 75 6e 63 65 20 6f 77 6e 20 76 65 72 73 69 6f 6e 20 74   ┆= -1;  (* announce own version t┆
0x02dee0…02df00             6f 20 6e 65 78 74 20 70 61 73 73 20 2a 29 0a 65 6d 69 74 20 28 78 6f 70 74 69 6f 6e 29 3b 0a 65   ┆o next pass *) emit (xoption); e┆
0x02df00…02df20             6d 69 74 69 6e 20 28 30 29 3b 0a 65 6d 69 74 69 6e 20 28 6f 77 6e 5f 70 61 73 73 6e 6f 29 3b 0a   ┆mitin (0); emitin (own_passno); ┆
0x02df20…02df40             65 6d 69 74 69 6e 20 28 76 65 72 73 69 6f 6e 70 61 73 73 33 29 3b 0a 0a 28 2a 20 69 6e 69 74 69   ┆emitin (versionpass3);  (* initi┆
0x02df40…02df60             61 6c 69 7a 65 20 6c 69 73 74 20 73 74 72 75 63 74 75 72 65 73 20 2a 29 0a 0a 28 2a 20 69 6e 69   ┆alize list structures *)  (* ini┆
0x02df60…02df80             74 69 61 6c 69 7a 65 20 66 72 65 65 6c 69 73 74 20 6f 66 20 27 6e 61 6d 65 73 27 20 2a 29 0a 69   ┆tialize freelist of 'names' *) i┆
0x02df80…02dfa0             6e 73 65 72 74 5f 69 6e 5f 66 72 6f 6e 74 3a 3d 20 66 61 6c 73 65 3b 20 20 28 2a 20 64 65 66 61   ┆nsert_in_front:= false;  (* defa┆
0x02dfa0…02dfc0             75 6c 74 20 69 73 3a 20 69 6e 73 65 72 74 20 61 6c 6c 20 6e 61 6d 65 73 20 69 6e 20 72 65 61 72   ┆ult is: insert all names in rear┆
0x02dfc0…02dfe0             20 2a 29 0a 6d 61 78 6e 69 78 3a 3d 20 30 3b 0a 6e 65 77 28 6e 69 6c 6e 61 6d 65 29 3b 0a 77 69   ┆ *) maxnix:= 0; new(nilname); wi┆
0x02dfe0…02e000             74 68 20 6e 69 6c 6e 61 6d 65 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74 6e 61 6d 65 3a 3d 20   ┆th nilname^ do begin nextname:= ┆
0x02e000…02e020 (12, 0, 9)  6e 69 6c 3b 0a 6e 69 78 3a 3d 20 6d 61 78 6e 69 78 3b 0a 65 6e 64 3b 0a 66 72 65 65 6e 61 6d 65   ┆nil; nix:= maxnix; end; freename┆
0x02e020…02e040             73 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 66 72 65 65   ┆s:= nilname;  (* initialize free┆
0x02e040…02e060             6c 69 73 74 20 6f 66 20 6f 70 61 6e 64 73 20 2a 29 0a 6d 61 78 6f 70 61 6e 64 73 3a 3d 20 30 3b   ┆list of opands *) maxopands:= 0;┆
0x02e060…02e080             0a 6e 65 77 28 6e 69 6c 6f 70 61 6e 64 29 3b 0a 77 69 74 68 20 6e 69 6c 6f 70 61 6e 64 5e 20 64   ┆ new(nilopand); with nilopand^ d┆
0x02e080…02e0a0             6f 0a 62 65 67 69 6e 0a 6e 65 78 74 3a 3d 20 6e 69 6c 3b 0a 6f 70 63 6f 64 65 3a 3d 20 63 65 72   ┆o begin next:= nil; opcode:= cer┆
0x02e0a0…02e0c0             72 6f 72 61 72 67 3b 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 62 65 63 61 75 73 65 20 69   ┆rorarg; (* initialized because i┆
0x02e0c0…02e0e0             74 20 69 73 20 75 73 65 64 20 61 73 20 27 77 6f 72 6b 69 6e 67 20 6c 6f 63 61 74 69 6f 6e 27 20   ┆t is used as 'working location' ┆
0x02e0e0…02e100             62 79 20 27 74 65 73 74 69 6e 64 65 78 27 20 2a 29 0a 65 6e 64 3b 0a 66 72 65 65 6f 70 61 6e 64   ┆by 'testindex' *) end; freeopand┆
0x02e100…02e120             73 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 27 74 79   ┆s:= nilopand;  (* initialize 'ty┆
0x02e120…02e140             70 65 73 27 20 2a 29 0a 66 72 65 65 74 79 70 65 6e 61 6d 65 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a   ┆pes' *) freetypename:= nilname; ┆
0x02e140…02e160             6d 61 78 74 79 70 65 73 3a 3d 20 30 3b 0a 6e 65 77 28 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65   ┆maxtypes:= 0; new(dummy_typenode┆
0x02e160…02e180             29 3b 0a 77 69 74 68 20 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 20 5e 20 64 6f 20 0a 62 65 67   ┆); with dummy_typenode ^ do  beg┆
0x02e180…02e1a0             69 6e 0a 65 6c 65 6d 65 6e 74 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 69 6e 64 65 78 3a 3d 20 6e 69   ┆in element:= nilname; index:= ni┆
0x02e1a0…02e1c0             6c 6e 61 6d 65 3b 0a 73 75 62 65 78 70 72 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 74 79 70 65 6b   ┆lname; subexpr:= nilopand; typek┆
0x02e1c0…02e1e0             69 6e 64 3a 3d 20 63 6e 6f 63 6f 64 65 3b 0a 63 6f 6e 74 65 6e 74 73 3a 3d 20 5b 74 5f 73 69 6d   ┆ind:= cnocode; contents:= [t_sim┆
0x02e1e0…02e200             70 6c 65 5d 3b 0a 70 61 63 6b 66 6c 61 67 3a 3d 20 66 61 6c 73 65 3b 0a 65 6d 69 74 74 65 64 3a   ┆ple]; packflag:= false; emitted:┆
0x02e200…02e220 (12, 0, 10) 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 6e 65 77 28 6e 69 6c 74 79 70 65 29 3b 0a 6e 69 6c 74   ┆= false; end; new(niltype); nilt┆
0x02e220…02e240             79 70 65 5e 3a 3d 20 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 5e 3b 0a 0a 0a 28 2a 20 69 6e 69   ┆ype^:= dummy_typenode^;   (* ini┆
0x02e240…02e260             74 69 61 6c 69 7a 65 20 27 73 74 72 69 6e 67 73 27 20 2a 29 0a 6d 61 78 73 74 72 69 6e 67 73 3a   ┆tialize 'strings' *) maxstrings:┆
0x02e260…02e280             3d 20 30 3b 0a 6e 65 77 28 6e 69 6c 73 74 72 69 6e 67 29 3b 0a 77 69 74 68 20 6e 69 6c 73 74 72   ┆= 0; new(nilstring); with nilstr┆
0x02e280…02e2a0             69 6e 67 5e 20 64 6f 0a 6e 65 78 74 73 74 72 3a 3d 20 6e 69 6c 3b 0a 66 72 65 65 73 74 72 69 6e   ┆ing^ do nextstr:= nil; freestrin┆
0x02e2a0…02e2c0             67 73 3a 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 66   ┆gs:= nilstring;  (* initialize f┆
0x02e2c0…02e2e0             72 65 65 6c 69 73 74 20 6f 66 20 6c 61 62 65 6c 20 6e 6f 64 65 73 20 2a 29 0a 6d 61 78 6c 61 62   ┆reelist of label nodes *) maxlab┆
0x02e2e0…02e300             65 6c 73 3a 3d 20 30 3b 0a 6e 65 77 28 6e 69 6c 6c 61 62 65 6c 29 3b 0a 77 69 74 68 20 6e 69 6c   ┆els:= 0; new(nillabel); with nil┆
0x02e300…02e320             6c 61 62 65 6c 5e 20 64 6f 0a 70 72 65 76 6c 61 62 65 6c 3a 3d 20 6e 69 6c 3b 0a 66 72 65 65 6c   ┆label^ do prevlabel:= nil; freel┆
0x02e320…02e340             61 62 65 6c 73 3a 3d 20 6e 69 6c 6c 61 62 65 6c 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65   ┆abels:= nillabel;  (* initialize┆
0x02e340…02e360             20 76 61 72 69 61 62 6c 65 73 20 63 6f 6e 63 65 72 6e 69 6e 67 20 6f 70 61 6e 64 73 20 2a 29 0a   ┆ variables concerning opands *) ┆
0x02e360…02e380             73 74 61 63 6b 74 6f 70 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 6e 65 78 74 74 6f 70 20 3a 3d 20   ┆stacktop:= nilopand; nexttop := ┆
0x02e380…02e3a0             6e 69 6c 6f 70 61 6e 64 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 70 75 73 68 6e 61 6d   ┆nilopand;  (* initialize pushnam┆
0x02e3a0…02e3c0             65 20 73 74 61 63 6b 20 2a 29 0a 6d 61 78 70 75 73 68 6e 61 6d 65 73 3a 3d 20 30 3b 0a 6e 65 77   ┆e stack *) maxpushnames:= 0; new┆
0x02e3c0…02e3e0             28 63 75 72 70 75 73 68 6e 61 6d 65 29 3b 0a 77 69 74 68 20 63 75 72 70 75 73 68 6e 61 6d 65 5e   ┆(curpushname); with curpushname^┆
0x02e3e0…02e400             20 64 6f 0a 62 65 67 69 6e 0a 70 75 73 68 5f 63 68 61 69 6e 3a 3d 20 6e 69 6c 3b 0a 70 6f 70 5f   ┆ do begin push_chain:= nil; pop_┆
0x02e400…02e420 (12, 0, 11) 63 68 61 69 6e 3a 3d 20 6e 69 6c 3b 0a 65 6e 64 3b 20 28 2a 20 65 6d 70 74 79 20 70 75 73 68 6e   ┆chain:= nil; end; (* empty pushn┆
0x02e420…02e440             61 6d 65 20 73 74 61 63 6b 20 2a 29 0a 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 6e 61 6d   ┆ame stack *)   (* initialize nam┆
0x02e440…02e460             65 73 74 61 63 6b 20 65 74 63 20 2a 29 0a 6d 61 78 6e 61 6d 65 73 74 61 63 6b 6c 65 76 65 6c 73   ┆estack etc *) maxnamestacklevels┆
0x02e460…02e480             3a 3d 20 30 3b 0a 6e 65 77 28 6e 69 6c 5f 6e 61 6d 65 73 74 61 63 6b 5f 70 74 72 29 3b 0a 77 69   ┆:= 0; new(nil_namestack_ptr); wi┆
0x02e480…02e4a0             74 68 20 6e 69 6c 5f 6e 61 6d 65 73 74 61 63 6b 5f 70 74 72 5e 20 64 6f 0a 62 65 67 69 6e 0a 66   ┆th nil_namestack_ptr^ do begin f┆
0x02e4a0…02e4c0             6f 72 6d 65 72 5f 6c 65 76 65 6c 3a 3d 20 6e 69 6c 5f 6e 61 6d 65 73 74 61 63 6b 5f 70 74 72 3b   ┆ormer_level:= nil_namestack_ptr;┆
0x02e4c0…02e4e0             0a 6e 65 78 74 5f 6c 65 76 65 6c 3a 3d 20 6e 69 6c 3b 0a 6c 65 76 65 6c 5f 6e 75 6d 62 65 72 3a   ┆ next_level:= nil; level_number:┆
0x02e4e0…02e500             3d 20 6d 61 78 6e 61 6d 65 73 74 61 63 6b 6c 65 76 65 6c 73 3b 0a 65 6e 64 3b 0a 6e 61 6d 65 6c   ┆= maxnamestacklevels; end; namel┆
0x02e500…02e520             65 76 65 6c 3a 3d 20 6e 69 6c 5f 6e 61 6d 65 73 74 61 63 6b 5f 70 74 72 3b 20 28 2a 20 63 75 72   ┆evel:= nil_namestack_ptr; (* cur┆
0x02e520…02e540             72 65 6e 74 20 6c 65 76 65 6c 20 2a 29 0a 6c 65 76 65 6c 6b 69 6e 64 3a 3d 20 70 72 6f 63 65 73   ┆rent level *) levelkind:= proces┆
0x02e540…02e560             73 6c 65 76 65 6c 3b 0a 6c 61 73 74 67 6c 6f 62 61 6c 6c 65 76 65 6c 3a 3d 20 6e 61 6d 65 6c 65   ┆slevel; lastgloballevel:= namele┆
0x02e560…02e580             76 65 6c 3b 0a 6e 65 77 6e 61 6d 65 6c 65 76 65 6c 3b 0a 6c 6f 77 65 73 74 6c 65 76 65 6c 3a 3d   ┆vel; newnamelevel; lowestlevel:=┆
0x02e580…02e5a0             20 6e 61 6d 65 6c 65 76 65 6c 3b 20 28 2a 20 76 65 72 79 20 66 69 72 73 74 20 6c 65 76 65 6c 20   ┆ namelevel; (* very first level ┆
0x02e5a0…02e5c0             2a 29 0a 65 78 70 65 63 74 69 6e 67 5f 62 6c 6f 63 6b 3a 3d 20 66 61 6c 73 65 3b 0a 61 66 74 65   ┆*) expecting_block:= false; afte┆
0x02e5c0…02e5e0             72 5f 66 75 6e 63 63 61 6c 6c 3a 3d 20 66 61 6c 73 65 3b 0a 65 78 70 72 5f 72 65 6c 65 61 73 65   ┆r_funccall:= false; expr_release┆
0x02e5e0…02e600             3a 3d 20 66 61 6c 73 65 3b 0a 63 6f 6e 73 74 5f 64 65 63 6c 3a 3d 20 66 61 6c 73 65 3b 0a 72 65   ┆:= false; const_decl:= false; re┆
0x02e600…02e620 (12, 0, 12) 74 61 69 6e 5f 74 6f 70 3a 3d 20 66 61 6c 73 65 3b 0a 65 78 70 72 5f 6c 65 76 65 6c 3a 3d 20 30   ┆tain_top:= false; expr_level:= 0┆
0x02e620…02e640             3b 20 20 28 2a 20 69 2e 65 2e 20 66 69 72 73 74 20 27 65 6d 69 74 65 78 70 72 27 20 69 73 20 62   ┆;  (* i.e. first 'emitexpr' is b┆
0x02e640…02e660             65 67 69 6e 6e 69 6e 67 20 6f 66 20 65 78 70 72 65 73 73 69 6f 6e 20 2a 29 0a 73 74 61 72 74 5f   ┆eginning of expression *) start_┆
0x02e660…02e680             6f 66 5f 70 72 6f 74 65 63 74 65 64 3a 3d 20 66 61 6c 73 65 3b 0a 0a 28 2a 20 69 6e 69 74 69 61   ┆of_protected:= false;  (* initia┆
0x02e680…02e6a0             6c 69 7a 65 20 73 74 61 63 6b 20 66 6f 72 20 68 6f 6c 64 69 6e 67 20 61 72 67 75 6d 65 6e 74 73   ┆lize stack for holding arguments┆
0x02e6a0…02e6c0             20 2a 29 0a 63 61 6c 6c 69 6e 64 65 78 20 20 20 3a 3d 20 30 3b 0a 61 72 67 6b 69 6e 64 20 20 20   ┆ *) callindex   := 0; argkind   ┆
0x02e6c0…02e6e0             20 20 3a 3d 20 63 6e 6f 63 6f 64 65 3b 0a 63 75 72 66 6f 72 6d 61 6c 20 20 20 3a 3d 20 6e 69 6c   ┆  := cnocode; curformal   := nil┆
0x02e6e0…02e700             6e 61 6d 65 3b 0a 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 66   ┆name; arglist_owner:= nilname; f┆
0x02e700…02e720             75 6e 63 74 65 6d 70 76 61 72 20 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 63 6f 75 6e 74 5f 70 72 6f   ┆unctempvar := nilname; count_pro┆
0x02e720…02e740             63 65 73 73 70 61 72 61 6d 3a 3d 20 30 3b 0a 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 69   ┆cessparam:= 0;   (* initialize i┆
0x02e740…02e760             6d 70 6f 72 74 61 6e 74 20 73 70 69 78 27 65 73 20 2a 29 0a 0a 28 2a 20 74 68 65 20 66 6f 6c 6c   ┆mportant spix'es *)  (* the foll┆
0x02e760…02e780             6f 77 69 6e 67 20 63 6f 6e 73 74 72 75 63 74 69 6f 6e 20 6d 61 74 63 68 65 73 20 74 68 65 20 6d   ┆owing construction matches the m┆
0x02e780…02e7a0             61 69 6e 2d 6c 6f 6f 70 20 2a 29 0a 65 6e 64 70 61 73 73 31 3a 3d 20 66 61 6c 73 65 3b 0a 0a 72   ┆ain-loop *) endpass1:= false;  r┆
0x02e7a0…02e7c0             65 70 65 61 74 0a 0a 69 66 20 74 65 73 74 69 6e 67 20 74 68 65 6e 20 77 72 69 74 65 6c 6e 28 6f   ┆epeat  if testing then writeln(o┆
0x02e7c0…02e7e0             75 74 70 75 74 29 3b 0a 0a 72 65 63 74 79 70 65 3a 3d 20 70 61 73 73 77 6f 72 64 3b 0a 0a 63 61   ┆utput);  rectype:= password;  ca┆
0x02e7e0…02e800             73 65 20 72 65 63 74 79 70 65 20 6f 66 0a 0a 63 6e 65 77 6c 69 6e 65 3a 0a 63 75 72 5f 6c 69 6e   ┆se rectype of  cnewline: cur_lin┆
0x02e800…02e820 (12, 0, 13) 65 6e 6f 3a 3d 20 70 61 73 73 69 6e 3b 0a 0a 63 6f 70 74 69 6f 6e 3a 0a 72 65 61 64 6f 70 74 69   ┆eno:= passin;  coption: readopti┆
0x02e820…02e840             6f 6e 3b 0a 0a 63 73 74 61 6e 64 61 72 64 6e 61 6d 65 3a 0a 73 74 61 6e 64 61 72 64 6e 61 6d 65   ┆on;  cstandardname: standardname┆
0x02e840…02e860             3b 0a 0a 63 65 6e 64 73 74 61 6e 64 61 72 64 73 3a 0a 65 6e 64 70 61 73 73 31 3a 3d 20 74 72 75   ┆;  cendstandards: endpass1:= tru┆
0x02e860…02e880             65 3b 0a 0a 65 6c 73 65 20 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f 72 65 63   ┆e;  else comp_error (unknown_rec┆
0x02e880…02e8a0             74 79 70 65 29 3b 0a 65 6e 64 3b 0a 0a 75 6e 74 69 6c 20 65 6e 64 70 61 73 73 31 3b 0a 65 6e 76   ┆type); end;  until endpass1; env┆
0x02e8a0…02e8c0             69 72 5f 73 70 69 78 3a 3d 20 61 6e 6f 6e 79 6d 6f 75 73 5f 73 70 69 78 3b 20 28 2a 20 75 73 65   ┆ir_spix:= anonymous_spix; (* use┆
0x02e8c0…02e8e0             64 20 61 73 20 66 6c 61 67 20 74 6f 20 6f 6d 69 74 20 27 74 79 70 65 64 65 66 27 20 66 6f 72 20   ┆d as flag to omit 'typedef' for ┆
0x02e8e0…02e900             69 6e 74 65 67 65 72 20 65 74 63 20 2a 29 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 7a 65 20 69 6d 70   ┆integer etc *)  (* initialze imp┆
0x02e900…02e920             6f 72 74 61 6e 74 20 6e 61 6d 65 2f 74 79 70 65 20 6e 6f 64 65 73 20 2a 29 0a 0a 65 72 72 6f 72   ┆ortant name/type nodes *)  error┆
0x02e920…02e940             5f 74 79 70 65 6e 61 6d 65 3a 3d 20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3b 0a 65 72 72 6f   ┆_typename:= alloc_namenode; erro┆
0x02e940…02e960             72 5f 74 79 70 65 6e 6f 64 65 3a 3d 20 61 6c 6c 6f 63 5f 74 79 70 65 6e 6f 64 65 3b 0a 0a 77 69   ┆r_typenode:= alloc_typenode;  wi┆
0x02e960…02e980             74 68 20 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 73 70   ┆th  error_typename ^ do begin sp┆
0x02e980…02e9a0             69 78 20 20 20 20 20 20 20 20 20 3a 3d 20 61 6e 6f 6e 79 6d 6f 75 73 5f 73 70 69 78 3b 0a 6e 61   ┆ix         := anonymous_spix; na┆
0x02e9a0…02e9c0             6d 65 6b 69 6e 64 20 20 20 20 20 3a 3d 20 63 65 72 72 6f 72 6b 69 6e 64 3b 0a 74 79 70 65 6e 61   ┆mekind     := cerrorkind; typena┆
0x02e9c0…02e9e0             6d 65 20 20 20 20 20 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 3b 0a 74 79 70 20 20 20   ┆me     := error_typename; typ   ┆
0x02e9e0…02ea00             20 20 20 20 20 20 20 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65 6e 6f 64 65 3b 0a 65 6e 64 3b 0a 0a   ┆       := error_typenode; end;  ┆
0x02ea00…02ea20 (12, 0, 14) 77 69 74 68 20 20 65 72 72 6f 72 5f 74 79 70 65 6e 6f 64 65 20 5e 20 64 6f 0a 74 79 70 65 6b 69   ┆with  error_typenode ^ do typeki┆
0x02ea20…02ea40             6e 64 20 20 20 3a 3d 20 63 65 72 72 6f 72 6b 69 6e 64 3b 0a 0a 77 69 74 68 20 20 64 75 6d 6d 79   ┆nd   := cerrorkind;  with  dummy┆
0x02ea40…02ea60             5f 74 79 70 65 6e 6f 64 65 20 5e 20 64 6f 0a 74 79 70 65 6b 69 6e 64 20 20 20 3a 3d 20 63 6e 6f   ┆_typenode ^ do typekind   := cno┆
0x02ea60…02ea80             63 6f 64 65 3b 0a 0a 74 65 78 74 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 61 6c 6c 6f 63 5f 6e 61 6d   ┆code;  text_typename:= alloc_nam┆
0x02ea80…02eaa0             65 6e 6f 64 65 3b 0a 77 69 74 68 20 20 74 65 78 74 5f 74 79 70 65 6e 61 6d 65 20 5e 20 64 6f 0a   ┆enode; with  text_typename ^ do ┆
0x02eaa0…02eac0             62 65 67 69 6e 0a 73 70 69 78 20 20 20 20 3a 3d 20 61 6e 6f 6e 79 6d 6f 75 73 5f 73 70 69 78 3b   ┆begin spix    := anonymous_spix;┆
0x02eac0…02eae0             0a 6e 61 6d 65 6b 69 6e 64 3a 3d 20 63 74 79 70 65 3b 0a 74 79 70 20 20 20 20 20 3a 3d 20 61 6c   ┆ namekind:= ctype; typ     := al┆
0x02eae0…02eb00             6c 6f 63 5f 74 79 70 65 6e 6f 64 65 3b 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 0a 74 79 70   ┆loc_typenode; with  typ ^ do typ┆
0x02eb00…02eb20             65 6b 69 6e 64 3a 3d 20 63 74 65 78 74 3b 0a 65 6e 64 3b 0a 0a 20 6e 69 6c 6e 61 6d 65 20 5e 3a   ┆ekind:= ctext; end;   nilname ^:┆
0x02eb20…02eb40             3d 20 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 20 5e 3b 0a 0a 73 65 74 5f 65 72 72 6f 72 5f   ┆=  error_typename ^;  set_error_┆
0x02eb40…02eb60             74 79 70 65 3b 0a 65 6d 69 74 74 79 70 65 20 28 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 29 3b   ┆type; emittype (error_typename);┆
0x02eb60…02eb80             0a 65 6d 69 74 74 79 70 65 20 28 74 65 78 74 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 70 72 65 70 61   ┆ emittype (text_typename); prepa┆
0x02eb80…02eba0             72 65 5f 65 78 70 72 65 73 73 69 6f 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72   ┆re_expression;  end; (* procedur┆
0x02eba0…02ebc0             65 20 69 6e 69 74 69 61 6c 69 7a 65 20 2a 29 0a 0a 0c 0a 0a 6b 69 6e 64 3b 0a 74 79 70 65 6e 61   ┆e initialize *)     kind; typena┆
0x02ebc0…02ebe0             6d 65 20 20 20 20 20 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65 6e 61 6d 65 3b 0a 74 79 70 20 20 20   ┆me     := error_typename; typ   ┆
0x02ebe0…02ec00             20 20 20 20 20 20 20 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65 6e 6f 64 65 3b 0a 65 6e 64 3b 0a 0a   ┆       := error_typenode; end;  ┆
0x02ec00…02ec20 (12, 0, 15) 2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 78 70 33 65 78 70 72 00 00 00 00 00 00 00   ┆../sw2103/src/rtp/xp3expr       ┆
0x02ec20…02ec40             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x02ec60…02ec80             00 00 00 00 20 20 20 37 35 35 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       755     255     146      ┆
0x02ec80…02eca0             20 31 32 30 32 35 33 20 20 35 32 36 36 37 36 37 31 34 33 20 20 31 30 33 32 34 00 20 00 00 00 00   ┆ 120253  5266767143  10324      ┆
0x02eca0…02ecc0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x02ee00…02ee20 (12, 1, 1)  0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ (*-----------------------------┆
0x02ee20…02ee40             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x02ee40…02ee60             2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39 32 20 20 44   ┆---- -- -- (C) Copyrigth 1992  D┆
0x02ee60…02ee80             41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 33 45 58 50 52 2e 50 41 53 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d   ┆ANOSI -- -- P3EXPR.PAS -- ------┆
0x02ee80…02eea0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x02eea0…02eec0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d   ┆----------------------------- --┆
0x02eec0…02eee0             0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Revisions -- ---------------┆
0x02eee0…02ef00             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20 39 31 2e 30   ┆----------------- --        91.0┆
0x02ef00…02ef20             31 2e 32 32 20 20 45 42 4b 20 20 20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20 31 2e 31 32   ┆1.22  EBK   Used in release 1.12┆
0x02ef20…02ef40             0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20   ┆ --  1.1   92.10.14  HEJ   SCCS ┆
0x02ef40…02ef60             61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆and UNIX used. -- --------------┆
0x02ef60…02ef80             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x02ef80…02efa0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e   ┆--------------------- -- SCCS in┆
0x02efa0…02efc0             66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f   ┆formation -- File   :  %P% -- Mo┆
0x02efc0…02efe0             64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09   ┆dule :  %M% -- Version:  %I% -- ┆
0x02efe0…02f000             44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆Date   :  %E%  %U% -------------┆
0x02f000…02f020 (12, 1, 2)  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x02f020…02f040             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 0a 66 75 6e 63   ┆---------------------- *)   func┆
0x02f040…02f060             74 69 6f 6e 20 61 6c 6c 6f 63 5f 73 74 72 69 6e 67 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 28 2a   ┆tion alloc_string: stringptr; (*┆
0x02f060…02f080             20 64 65 6c 69 76 65 72 20 61 20 73 74 72 69 6e 67 6e 6f 64 65 20 2a 29 0a 0a 76 61 72 20 73 74   ┆ deliver a stringnode *)  var st┆
0x02f080…02f0a0             72 72 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 73 74 72 72 3a 3d 20 66 72   ┆rr: stringptr;  begin  strr:= fr┆
0x02f0a0…02f0c0             65 65 73 74 72 69 6e 67 73 3b 0a 69 66 20 73 74 72 72 20 3d 20 6e 69 6c 73 74 72 69 6e 67 20 74   ┆eestrings; if strr = nilstring t┆
0x02f0c0…02f0e0             68 65 6e 0a 62 65 67 69 6e 0a 6e 65 77 28 73 74 72 72 29 3b 0a 6d 61 78 73 74 72 69 6e 67 73 3a   ┆hen begin new(strr); maxstrings:┆
0x02f0e0…02f100             3d 20 6d 61 78 73 74 72 69 6e 67 73 2b 31 3b 0a 73 74 72 72 5e 2e 6e 65 78 74 73 74 72 3a 3d 20   ┆= maxstrings+1; strr^.nextstr:= ┆
0x02f100…02f120             6e 69 6c 73 74 72 69 6e 67 3b 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 20 73 74 72 72 20 5e 20 64 6f   ┆nilstring; end;  with  strr ^ do┆
0x02f120…02f140             0a 62 65 67 69 6e 0a 61 6c 6c 6f 63 5f 73 74 72 69 6e 67 3a 3d 20 73 74 72 72 3b 0a 66 72 65 65   ┆ begin alloc_string:= strr; free┆
0x02f140…02f160             73 74 72 69 6e 67 73 20 3a 3d 20 6e 65 78 74 73 74 72 3b 0a 6e 65 78 74 73 74 72 20 20 20 20 20   ┆strings := nextstr; nextstr     ┆
0x02f160…02f180             3a 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63   ┆:= nilstring; end;  end;    proc┆
0x02f180…02f1a0             65 64 75 72 65 20 72 65 6c 65 61 73 65 5f 73 74 72 69 6e 67 20 28 78 73 74 72 69 6e 67 3a 20 73   ┆edure release_string (xstring: s┆
0x02f1a0…02f1c0             74 72 69 6e 67 70 74 72 29 3b 0a 28 2a 20 72 65 6c 65 61 73 65 73 20 61 20 77 68 6f 6c 65 20 6c   ┆tringptr); (* releases a whole l┆
0x02f1c0…02f1e0             69 73 74 2c 20 63 6f 6e 73 74 69 74 75 74 69 6e 67 20 61 20 6c 69 74 65 72 61 6c 20 2a 29 0a 0a   ┆ist, constituting a literal *)  ┆
0x02f1e0…02f200             76 61 72 20 73 74 72 72 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 73 74 72   ┆var strr: stringptr;  begin  str┆
0x02f200…02f220 (12, 1, 3)  72 3a 3d 20 78 73 74 72 69 6e 67 3b 0a 0a 28 2a 20 73 63 61 6e 20 74 68 65 20 6c 69 73 74 20 74   ┆r:= xstring;  (* scan the list t┆
0x02f220…02f240             6f 20 66 69 6e 64 20 74 68 65 20 74 65 72 6d 69 6e 61 74 69 6f 6e 20 2a 29 0a 72 65 70 65 61 74   ┆o find the termination *) repeat┆
0x02f240…02f260             0a 77 69 74 68 20 20 73 74 72 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 73 74 72 72 3a 3d 20 6e 65   ┆ with  strr ^ do begin strr:= ne┆
0x02f260…02f280             78 74 73 74 72 3b 0a 69 66 20 73 74 72 72 20 3d 20 6e 69 6c 73 74 72 69 6e 67 20 74 68 65 6e 0a   ┆xtstr; if strr = nilstring then ┆
0x02f280…02f2a0             6e 65 78 74 73 74 72 3a 3d 20 66 72 65 65 73 74 72 69 6e 67 73 3b 20 28 2a 20 69 6e 73 65 72 74   ┆nextstr:= freestrings; (* insert┆
0x02f2a0…02f2c0             20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 66 72 65 65 20 6e 6f 64 65 73 20 2a 29 0a 65 6e 64 3b 0a   ┆ in front of free nodes *) end; ┆
0x02f2c0…02f2e0             75 6e 74 69 6c 20 73 74 72 72 20 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 0a 66 72 65 65 73 74 72   ┆until strr = nilstring;  freestr┆
0x02f2e0…02f300             69 6e 67 73 3a 3d 20 78 73 74 72 69 6e 67 3b 20 20 28 2a 20 66 69 72 73 74 20 66 72 65 65 20 69   ┆ings:= xstring;  (* first free i┆
0x02f300…02f320             6e 20 74 68 65 20 6c 69 73 74 20 2a 29 0a 0a 65 6e 64 3b 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20   ┆n the list *)  end;    function ┆
0x02f320…02f340             61 6c 6c 6f 63 5f 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 28 2a 20 64 65 6c 69 76 65   ┆alloc_opand: opandptr; (* delive┆
0x02f340…02f360             72 73 20 61 6e 20 6f 70 61 6e 64 20 6e 6f 64 65 2c 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 77 69   ┆rs an opand node, initialized wi┆
0x02f360…02f380             74 68 20 63 75 72 5f 6c 69 6e 65 6e 6f 20 2a 29 0a 0a 76 61 72 20 6f 70 61 6e 64 3a 20 6f 70 61   ┆th cur_lineno *)  var opand: opa┆
0x02f380…02f3a0             6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 6f 70 61 6e 64 3a 3d 20 66 72 65 65 6f 70 61 6e 64   ┆ndptr;  begin  opand:= freeopand┆
0x02f3a0…02f3c0             73 3b 0a 69 66 20 6f 70 61 6e 64 20 3d 20 6e 69 6c 6f 70 61 6e 64 20 74 68 65 6e 0a 62 65 67 69   ┆s; if opand = nilopand then begi┆
0x02f3c0…02f3e0             6e 0a 6e 65 77 28 6f 70 61 6e 64 29 3b 0a 6d 61 78 6f 70 61 6e 64 73 3a 3d 20 6d 61 78 6f 70 61   ┆n new(opand); maxopands:= maxopa┆
0x02f3e0…02f400             6e 64 73 2b 31 3b 0a 77 69 74 68 20 6f 70 61 6e 64 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74   ┆nds+1; with opand^ do begin next┆
0x02f400…02f420 (12, 1, 4)  3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 6f 70 63 6f 64 65 3a 3d 20 63 65 72 72 6f 72 61 72 67 3b   ┆:= nilopand; opcode:= cerrorarg;┆
0x02f420…02f440             0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20 75 73   ┆ (* initialized because it is us┆
0x02f440…02f460             65 64 20 61 73 20 27 77 6f 72 6b 69 6e 67 20 6c 6f 63 61 74 69 6f 6e 27 20 62 79 20 27 74 65 73   ┆ed as 'working location' by 'tes┆
0x02f460…02f480             74 69 6e 64 65 78 27 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 20 6f 70 61 6e   ┆tindex' *) end; end;  with  opan┆
0x02f480…02f4a0             64 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 61 6c 6c 6f 63 5f 6f 70 61 6e 64 3a 3d 20 6f 70 61 6e 64   ┆d ^ do begin alloc_opand:= opand┆
0x02f4a0…02f4c0             3b 0a 66 72 65 65 6f 70 61 6e 64 73 20 3a 3d 20 6e 65 78 74 3b 0a 6e 65 78 74 20 20 20 20 20 20   ┆; freeopands := next; next      ┆
0x02f4c0…02f4e0             20 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 6f 70 5f 6c 69 6e 65 6e 6f 20 20 3a 3d 20 63 75 72 5f   ┆ := nilopand; op_lineno  := cur_┆
0x02f4e0…02f500             6c 69 6e 65 6e 6f 3b 0a 6f 70 5f 6e 61 6d 65 20 20 20 20 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 6f   ┆lineno; op_name    := nilname; o┆
0x02f500…02f520             70 5f 76 61 6c 75 65 20 20 20 3a 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 6f 70 5f 70 61 63 6b 66   ┆p_value   := nilstring; op_packf┆
0x02f520…02f540             6c 61 67 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65   ┆lag:= false; end;  end;    proce┆
0x02f540…02f560             64 75 72 65 20 72 65 6c 65 61 73 65 5f 65 78 70 72 20 28 65 78 70 72 3a 20 6f 70 61 6e 64 70 74   ┆dure release_expr (expr: opandpt┆
0x02f560…02f580             72 29 3b 0a 28 2a 20 77 6f 72 6b 73 20 61 73 20 27 65 6d 69 74 65 78 70 72 27 2c 20 62 75 74 20   ┆r); (* works as 'emitexpr', but ┆
0x02f580…02f5a0             64 6f 65 73 20 6f 6e 6c 79 20 74 68 65 20 72 65 6c 65 61 73 69 6e 67 20 2a 29 0a 0a 62 65 67 69   ┆does only the releasing *)  begi┆
0x02f5a0…02f5c0             6e 0a 0a 77 68 69 6c 65 20 65 78 70 72 20 3c 3e 20 6e 69 6c 6f 70 61 6e 64 20 64 6f 0a 77 69 74   ┆n  while expr <> nilopand do wit┆
0x02f5c0…02f5e0             68 20 20 65 78 70 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 6c 65 66 74 20 3c 3e 20 6e 69   ┆h  expr ^ do begin if left <> ni┆
0x02f5e0…02f600             6c 6f 70 61 6e 64 20 74 68 65 6e 0a 72 65 6c 65 61 73 65 5f 65 78 70 72 20 28 6c 65 66 74 29 3b   ┆lopand then release_expr (left);┆
0x02f600…02f620 (12, 1, 5)  0a 69 66 20 6f 70 5f 76 61 6c 75 65 20 3c 3e 20 6e 69 6c 73 74 72 69 6e 67 20 74 68 65 6e 0a 72   ┆ if op_value <> nilstring then r┆
0x02f620…02f640             65 6c 65 61 73 65 5f 73 74 72 69 6e 67 20 28 6f 70 5f 76 61 6c 75 65 29 3b 0a 6e 65 78 74 3a 3d   ┆elease_string (op_value); next:=┆
0x02f640…02f660             20 66 72 65 65 6f 70 61 6e 64 73 3b 0a 66 72 65 65 6f 70 61 6e 64 73 3a 3d 20 65 78 70 72 3b 0a   ┆ freeopands; freeopands:= expr; ┆
0x02f660…02f680             65 78 70 72 3a 3d 20 72 69 67 74 68 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63   ┆expr:= rigth; end;  end; (* proc┆
0x02f680…02f6a0             65 64 75 72 65 20 72 65 6c 65 61 73 65 2d 65 78 70 72 20 2a 29 0a 0a 0a 0a 66 75 6e 63 74 69 6f   ┆edure release-expr *)    functio┆
0x02f6a0…02f6c0             6e 20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 28 2a 20 64 65   ┆n alloc_namenode: nameptr; (* de┆
0x02f6c0…02f6e0             6c 69 76 65 72 73 20 61 20 6e 61 6d 65 6e 6f 64 65 2c 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 61   ┆livers a namenode, initialized a┆
0x02f6e0…02f700             73 20 64 75 6d 6d 79 20 2a 29 0a 0a 76 61 72 20 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 62   ┆s dummy *)  var name: nameptr; b┆
0x02f700…02f720             65 67 69 6e 0a 6e 61 6d 65 3a 3d 20 66 72 65 65 6e 61 6d 65 73 3b 0a 69 66 20 6e 61 6d 65 20 3d   ┆egin name:= freenames; if name =┆
0x02f720…02f740             20 6e 69 6c 6e 61 6d 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 65 77 28 6e 61 6d 65 29 3b 0a 77   ┆ nilname then begin new(name); w┆
0x02f740…02f760             69 74 68 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74 6e 61 6d 65 3a 3d 20 6e   ┆ith name ^ do begin nextname:= n┆
0x02f760…02f780             69 6c 6e 61 6d 65 3b 0a 6d 61 78 6e 69 78 3a 3d 20 6d 61 78 6e 69 78 2b 31 3b 0a 6e 69 78 3a 3d   ┆ilname; maxnix:= maxnix+1; nix:=┆
0x02f780…02f7a0             20 6d 61 78 6e 69 78 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a   ┆ maxnix; end; end;  (* initializ┆
0x02f7a0…02f7c0             65 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 61 6c 6c 6f 63   ┆e *) with  name ^ do begin alloc┆
0x02f7c0…02f7e0             5f 6e 61 6d 65 6e 6f 64 65 3a 3d 20 6e 61 6d 65 3b 0a 66 72 65 65 6e 61 6d 65 73 3a 3d 20 6e 65   ┆_namenode:= name; freenames:= ne┆
0x02f7e0…02f800             78 74 6e 61 6d 65 3b 20 28 2a 20 75 6e 6c 69 6e 6b 20 66 72 6f 6d 20 66 72 65 65 2d 63 68 61 69   ┆xtname; (* unlink from free-chai┆
0x02f800…02f820 (12, 1, 6)  6e 20 2a 29 0a 6e 65 78 74 6e 61 6d 65 20 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 0a 66 6f 72 77 61   ┆n *) nextname := nilname;  forwa┆
0x02f820…02f840             72 64 5f 64 65 63 6c 20 3a 3d 20 66 61 6c 73 65 3b 0a 65 78 74 65 72 6e 61 6c 5f 64 65 63 6c 3a   ┆rd_decl := false; external_decl:┆
0x02f840…02f860             3d 20 66 61 6c 73 65 3b 0a 66 75 6e 63 5f 61 73 73 69 67 6e 65 64 3a 3d 20 66 61 6c 73 65 3b 0a   ┆= false; func_assigned:= false; ┆
0x02f860…02f880             75 73 65 64 6c 65 76 65 6c 3a 3d 20 6e 69 6c 5f 6e 61 6d 65 73 74 61 63 6b 5f 70 74 72 3b 20 28   ┆usedlevel:= nil_namestack_ptr; (┆
0x02f880…02f8a0             2a 20 69 2e 65 2e 20 6e 6f 74 20 75 73 65 64 20 2a 29 0a 70 61 72 61 6d 73 3a 3d 20 6e 69 6c 6e   ┆* i.e. not used *) params:= niln┆
0x02f8a0…02f8c0             61 6d 65 3b 0a 74 79 70 3a 3d 20 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 3b 0a 65 6e 64 3b 0a   ┆ame; typ:= dummy_typenode; end; ┆
0x02f8c0…02f8e0             0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 6c 65 61 73 65 5f 74 79 70 65 6e   ┆ end;    procedure release_typen┆
0x02f8e0…02f900             6f 64 65 20 28 78 74 79 70 65 3a 20 74 79 70 65 70 74 72 29 3b 20 66 6f 72 77 61 72 64 3b 0a 0a   ┆ode (xtype: typeptr); forward;  ┆
0x02f900…02f920             70 72 6f 63 65 64 75 72 65 20 72 65 6c 65 61 73 65 6e 61 6d 65 73 20 28 78 6e 61 6d 65 6c 69 73   ┆procedure releasenames (xnamelis┆
0x02f920…02f940             74 20 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 28 2a 20 72 65 6c 65 61 73 65 73 20 61 6c 6c 20 6e 61   ┆t : nameptr); (* releases all na┆
0x02f940…02f960             6d 65 6e 6f 64 65 73 20 69 6e 20 74 68 65 20 6c 69 73 74 20 2a 29 0a 28 2a 20 69 66 20 61 20 6e   ┆menodes in the list *) (* if a n┆
0x02f960…02f980             61 6d 65 6e 6f 64 65 20 69 73 20 61 20 74 79 70 65 6e 61 6d 65 2c 20 74 68 65 20 63 6f 72 72 65   ┆amenode is a typename, the corre┆
0x02f980…02f9a0             73 70 6f 6e 64 69 6e 67 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 28 2a 20 20 20 77 69 6c 6c 20 62   ┆sponding typenode *) (*   will b┆
0x02f9a0…02f9c0             65 20 72 65 6c 65 61 73 65 64 20 74 6f 6f 20 2a 29 0a 0a 76 61 72 20 6e 61 6d 65 3a 20 6e 61 6d   ┆e released too *)  var name: nam┆
0x02f9c0…02f9e0             65 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 77 68 69 6c 65 20 78 6e 61 6d 65 6c 69 73 74 20 3c 3e   ┆eptr;  begin  while xnamelist <>┆
0x02f9e0…02fa00             20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 20 78 6e 61 6d 65 6c 69 73 74 20 5e 20 64 6f   ┆ nilname do with  xnamelist ^ do┆
0x02fa00…02fa20 (12, 1, 7)  0a 62 65 67 69 6e 0a 69 66 20 70 61 72 61 6d 73 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 74 68 65 6e   ┆ begin if params <> nilname then┆
0x02fa20…02fa40             0a 72 65 6c 65 61 73 65 6e 61 6d 65 73 20 28 70 61 72 61 6d 73 29 3b 20 28 2a 20 72 65 6c 65 61   ┆ releasenames (params); (* relea┆
0x02fa40…02fa60             73 65 20 70 61 72 61 6d 6c 69 73 74 73 20 6f 66 20 69 6e 6e 65 72 20 72 6f 75 74 69 6e 65 73 20   ┆se paramlists of inner routines ┆
0x02fa60…02fa80             2a 29 0a 69 66 20 74 79 70 20 3c 3e 20 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 20 74 68 65 6e   ┆*) if typ <> dummy_typenode then┆
0x02fa80…02faa0             0a 69 66 20 28 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 75 6e 64 65 63 6c 61 72 65 64 29 20 61 6e   ┆ if (namekind <> cundeclared) an┆
0x02faa0…02fac0             64 20 28 6e 61 6d 65 6b 69 6e 64 3c 3e 63 65 78 74 70 72 6f 63 65 73 73 20 28 2a 20 64 6f 20 6e   ┆d (namekind<>cextprocess (* do n┆
0x02fac0…02fae0             6f 74 20 72 65 6c 65 61 73 65 20 73 6f 6e 20 74 79 70 65 20 2a 29 29 20 74 68 65 6e 0a 72 65 6c   ┆ot release son type *)) then rel┆
0x02fae0…02fb00             65 61 73 65 5f 74 79 70 65 6e 6f 64 65 20 28 74 79 70 29 3b 20 28 2a 20 72 65 6c 65 61 73 65 20   ┆ease_typenode (typ); (* release ┆
0x02fb00…02fb20             74 79 70 65 6e 6f 64 65 20 6f 66 20 6c 6f 63 61 6c 20 74 79 70 65 20 2a 29 0a 0a 28 2a 20 69 6e   ┆typenode of local type *)  (* in┆
0x02fb20…02fb40             73 65 72 74 20 69 6e 20 66 72 65 65 2d 63 68 61 69 6e 20 2a 29 0a 6e 61 6d 65 3a 3d 20 6e 65 78   ┆sert in free-chain *) name:= nex┆
0x02fb40…02fb60             74 6e 61 6d 65 3b 0a 6e 65 78 74 6e 61 6d 65 3a 3d 20 66 72 65 65 6e 61 6d 65 73 3b 0a 66 72 65   ┆tname; nextname:= freenames; fre┆
0x02fb60…02fb80             65 6e 61 6d 65 73 3a 3d 20 78 6e 61 6d 65 6c 69 73 74 3b 0a 0a 78 6e 61 6d 65 6c 69 73 74 3a 3d   ┆enames:= xnamelist;  xnamelist:=┆
0x02fb80…02fba0             20 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 78 6e 61 6d 65 6c 69 73 74 20 2a   ┆ name;  end; (* with xnamelist *┆
0x02fba0…02fbc0             29 0a 0a 65 6e 64 3b 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 63 5f 74 79 70 65 6e 6f   ┆)  end;    function alloc_typeno┆
0x02fbc0…02fbe0             64 65 20 3a 20 74 79 70 65 70 74 72 3b 0a 28 2a 20 64 65 6c 69 76 65 72 73 20 61 20 74 79 70 65   ┆de : typeptr; (* delivers a type┆
0x02fbe0…02fc00             6e 6f 64 65 2c 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 61 73 20 64 75 6d 6d 79 20 2a 29 0a 0a 76   ┆node, initialized as dummy *)  v┆
0x02fc00…02fc20 (12, 1, 8)  61 72 20 6e 61 6d 65 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 6c 6f 63 61 6c 5f 74 79 70 65 3a 20 74   ┆ar name : nameptr; local_type: t┆
0x02fc20…02fc40             79 70 65 70 74 72 3b 0a 62 65 67 69 6e 0a 0a 6e 61 6d 65 3a 3d 20 66 72 65 65 74 79 70 65 6e 61   ┆ypeptr; begin  name:= freetypena┆
0x02fc40…02fc60             6d 65 3b 0a 69 66 20 6e 61 6d 65 20 3d 20 6e 69 6c 6e 61 6d 65 20 74 68 65 6e 0a 62 65 67 69 6e   ┆me; if name = nilname then begin┆
0x02fc60…02fc80             0a 6e 65 77 28 6c 6f 63 61 6c 5f 74 79 70 65 29 3b 0a 6d 61 78 74 79 70 65 73 3a 3d 20 6d 61 78   ┆ new(local_type); maxtypes:= max┆
0x02fc80…02fca0             74 79 70 65 73 2b 31 3b 0a 77 69 74 68 20 6c 6f 63 61 6c 5f 74 79 70 65 5e 20 64 6f 0a 62 65 67   ┆types+1; with local_type^ do beg┆
0x02fca0…02fcc0             69 6e 0a 74 79 70 65 6b 69 6e 64 3a 3d 20 63 6e 6f 63 6f 64 65 3b 0a 73 75 62 65 78 70 72 3a 3d   ┆in typekind:= cnocode; subexpr:=┆
0x02fcc0…02fce0             20 6e 69 6c 6f 70 61 6e 64 3b 0a 65 6e 64 3b 0a 72 65 6c 65 61 73 65 5f 74 79 70 65 6e 6f 64 65   ┆ nilopand; end; release_typenode┆
0x02fce0…02fd00             28 6c 6f 63 61 6c 5f 74 79 70 65 29 3b 0a 6e 61 6d 65 3a 3d 20 66 72 65 65 74 79 70 65 6e 61 6d   ┆(local_type); name:= freetypenam┆
0x02fd00…02fd20             65 3b 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 69 66 20 6e 61 6d 65 3d   ┆e; if compilertest then if name=┆
0x02fd20…02fd40             6e 69 6c 6e 61 6d 65 20 74 68 65 6e 20 0a 63 6f 6d 70 5f 65 72 72 6f 72 28 74 6f 6f 5f 6d 61 6e   ┆nilname then  comp_error(too_man┆
0x02fd40…02fd60             79 5f 74 79 70 65 73 29 3b 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a   ┆y_types); end;  with  name ^ do ┆
0x02fd60…02fd80             77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 0a 0a 62 65 67 69 6e 0a 61 6c 6c 6f 63 5f 74 79 70 65   ┆with  typ ^ do  begin alloc_type┆
0x02fd80…02fda0             6e 6f 64 65 3a 3d 20 74 79 70 3b 0a 66 72 65 65 74 79 70 65 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e   ┆node:= typ; freetypename:= nextn┆
0x02fda0…02fdc0             61 6d 65 3b 0a 6e 65 78 74 6e 61 6d 65 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 74 79 70 3a 3d 20 64   ┆ame; nextname:= nilname; typ:= d┆
0x02fdc0…02fde0             75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 3b 0a 72 65 6c 65 61 73 65 6e 61 6d 65 73 20 28 6e 61 6d   ┆ummy_typenode; releasenames (nam┆
0x02fde0…02fe00             65 29 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 65   ┆e);  (* initialize typenode *) e┆
0x02fe00…02fe20 (12, 1, 9)  6c 65 6d 65 6e 74 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 69 6e 64 65 78 20 20 3a 3d 20 6e 69 6c 6e   ┆lement:= nilname; index  := niln┆
0x02fe20…02fe40             61 6d 65 3b 0a 73 75 62 65 78 70 72 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 74 79 70 65 6b 69 6e   ┆ame; subexpr:= nilopand; typekin┆
0x02fe40…02fe60             64 3a 3d 20 63 6e 6f 63 6f 64 65 3b 0a 63 6f 6e 74 65 6e 74 73 3a 3d 20 5b 20 74 5f 73 69 6d 70   ┆d:= cnocode; contents:= [ t_simp┆
0x02fe60…02fe80             6c 65 20 5d 3b 20 20 28 2a 20 64 65 66 61 75 6c 74 20 2a 29 0a 70 61 63 6b 66 6c 61 67 3a 3d 20   ┆le ];  (* default *) packflag:= ┆
0x02fe80…02fea0             66 61 6c 73 65 3b 0a 65 6d 69 74 74 65 64 3a 3d 20 66 61 6c 73 65 3b 0a 0a 65 6e 64 3b 20 28 2a   ┆false; emitted:= false;  end; (*┆
0x02fea0…02fec0             20 77 69 74 68 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65   ┆ with typenode *)  end;    proce┆
0x02fec0…02fee0             64 75 72 65 20 72 65 6c 65 61 73 65 5f 74 79 70 65 6e 6f 64 65 20 28 78 74 79 70 65 3a 20 74 79   ┆dure release_typenode (xtype: ty┆
0x02fee0…02ff00             70 65 70 74 72 29 3b 0a 0a 76 61 72 20 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 0a 62 65 67   ┆peptr);  var name: nameptr;  beg┆
0x02ff00…02ff20             69 6e 0a 77 69 74 68 20 20 78 74 79 70 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 74 79 70   ┆in with  xtype ^ do begin if typ┆
0x02ff20…02ff40             65 6b 69 6e 64 20 3d 20 63 72 65 63 6f 72 64 20 74 68 65 6e 0a 72 65 6c 65 61 73 65 6e 61 6d 65   ┆ekind = crecord then releasename┆
0x02ff40…02ff60             73 20 28 65 6c 65 6d 65 6e 74 29 3b 20 28 2a 20 72 65 6c 65 61 73 65 20 66 69 65 6c 64 2d 6c 69   ┆s (element); (* release field-li┆
0x02ff60…02ff80             73 74 20 6f 66 20 72 65 63 6f 72 64 20 2a 29 0a 69 66 20 73 75 62 65 78 70 72 20 3c 3e 20 6e 69   ┆st of record *) if subexpr <> ni┆
0x02ff80…02ffa0             6c 6f 70 61 6e 64 20 74 68 65 6e 0a 72 65 6c 65 61 73 65 5f 65 78 70 72 20 28 73 75 62 65 78 70   ┆lopand then release_expr (subexp┆
0x02ffa0…02ffc0             72 29 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 78 74 79 70 65 20 2a 29 0a 6e 61 6d 65 3a 3d   ┆r); end; (* with xtype *) name:=┆
0x02ffc0…02ffe0             20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3b 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f   ┆ alloc_namenode; with  name ^ do┆
0x02ffe0…030000             0a 62 65 67 69 6e 0a 6e 61 6d 65 6b 69 6e 64 3a 3d 20 63 74 79 70 65 3b 0a 74 79 70 3a 3d 20 78   ┆ begin namekind:= ctype; typ:= x┆
0x030000…030020 (12, 1, 10) 74 79 70 65 3b 0a 6e 65 78 74 6e 61 6d 65 3a 3d 20 66 72 65 65 74 79 70 65 6e 61 6d 65 3b 0a 66   ┆type; nextname:= freetypename; f┆
0x030020…030040             72 65 65 74 79 70 65 6e 61 6d 65 3a 3d 20 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a   ┆reetypename:= name; end;  end;  ┆
0x030040…030060             0a 0a 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 63 5f 6c 61 62 65 6c 3a 20 6c 61 62 65 6c 70 74 72   ┆  function alloc_label: labelptr┆
0x030060…030080             3b 0a 28 2a 20 64 65 6c 69 76 65 72 73 20 61 20 6c 61 62 65 6c 6e 6f 64 65 20 2a 29 0a 0a 76 61   ┆; (* delivers a labelnode *)  va┆
0x030080…0300a0             72 20 6c 61 62 3a 20 6c 61 62 65 6c 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 6c 61 62 3a 3d 20 66   ┆r lab: labelptr;  begin  lab:= f┆
0x0300a0…0300c0             72 65 65 6c 61 62 65 6c 73 3b 0a 69 66 20 6c 61 62 20 3d 20 6e 69 6c 6c 61 62 65 6c 20 74 68 65   ┆reelabels; if lab = nillabel the┆
0x0300c0…0300e0             6e 0a 62 65 67 69 6e 0a 6e 65 77 28 6c 61 62 29 3b 0a 6d 61 78 6c 61 62 65 6c 73 3a 3d 20 6d 61   ┆n begin new(lab); maxlabels:= ma┆
0x0300e0…030100             78 6c 61 62 65 6c 73 2b 31 3b 0a 6c 61 62 5e 2e 70 72 65 76 6c 61 62 65 6c 3a 3d 20 6e 69 6c 6c   ┆xlabels+1; lab^.prevlabel:= nill┆
0x030100…030120             61 62 65 6c 3b 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 20 6c 61 62 20 5e 20 64 6f 0a 62 65 67 69 6e   ┆abel; end;  with  lab ^ do begin┆
0x030120…030140             0a 61 6c 6c 6f 63 5f 6c 61 62 65 6c 3a 3d 20 6c 61 62 3b 0a 66 72 65 65 6c 61 62 65 6c 73 20 3a   ┆ alloc_label:= lab; freelabels :┆
0x030140…030160             3d 20 70 72 65 76 6c 61 62 65 6c 3b 0a 70 72 65 76 6c 61 62 65 6c 20 20 3a 3d 20 6e 69 6c 6c 61   ┆= prevlabel; prevlabel  := nilla┆
0x030160…030180             62 65 6c 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0c 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 72 65   ┆bel; end;  end;      function re┆
0x030180…0301a0             61 64 73 74 72 69 6e 67 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 28 2a 20 72 65 61 64 73 3a 20 6c   ┆adstring: stringptr; (* reads: l┆
0x0301a0…0301c0             65 6e 67 74 68 2c 20 63 68 61 72 20 5b 20 31 20 2e 2e 20 6c 65 6e 67 74 68 20 5d 20 66 72 6f 6d   ┆ength, char [ 1 .. length ] from┆
0x0301c0…0301e0             20 70 61 73 73 31 66 69 6c 65 20 2a 29 0a 28 2a 20 20 61 6e 64 20 70 61 63 6b 73 20 69 6e 74 6f   ┆ pass1file *) (*  and packs into┆
0x0301e0…030200             20 73 74 72 69 6e 67 6e 6f 64 65 73 20 2a 29 0a 0a 76 61 72 0a 6c 65 6e 67 74 68 3a 20 69 6e 74   ┆ stringnodes *)  var length: int┆
0x030200…030220 (12, 1, 11) 65 67 65 72 3b 0a 63 75 72 73 74 72 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 69 2c 20 70 6f 72 74   ┆eger; curstr: stringptr; i, port┆
0x030220…030240             69 6f 6e 3a 20 73 74 72 5f 69 6e 64 65 78 3b 0a 0a 62 65 67 69 6e 0a 0a 6c 65 6e 67 74 68 3a 3d   ┆ion: str_index;  begin  length:=┆
0x030240…030260             20 70 61 73 73 69 6e 3b 20 28 2a 20 67 65 74 20 6c 65 6e 67 74 68 20 6f 66 20 73 74 72 69 6e 67   ┆ passin; (* get length of string┆
0x030260…030280             20 2a 29 0a 0a 63 75 72 73 74 72 3a 3d 20 61 6c 6c 6f 63 5f 73 74 72 69 6e 67 3b 0a 72 65 61 64   ┆ *)  curstr:= alloc_string; read┆
0x030280…0302a0             73 74 72 69 6e 67 3a 3d 20 63 75 72 73 74 72 3b 20 28 2a 20 72 65 73 75 6c 74 20 69 73 20 28 66   ┆string:= curstr; (* result is (f┆
0x0302a0…0302c0             69 72 73 74 29 20 73 74 72 69 6e 67 6e 6f 64 65 20 2a 29 0a 63 75 72 73 74 72 5e 2e 73 74 72 69   ┆irst) stringnode *) curstr^.stri┆
0x0302c0…0302e0             6e 67 6c 67 74 20 3a 3d 20 6c 65 6e 67 74 68 3b 0a 0a 70 6f 72 74 69 6f 6e 3a 3d 20 6d 61 78 73   ┆nglgt := length;  portion:= maxs┆
0x0302e0…030300             74 72 69 6e 67 3b 0a 0a 63 75 72 73 74 72 5e 2e 73 74 72 69 6e 67 6c 67 74 20 3a 3d 20 6c 65 6e   ┆tring;  curstr^.stringlgt := len┆
0x030300…030320             67 74 68 3b 0a 0a 77 68 69 6c 65 20 6c 65 6e 67 74 68 20 3e 20 30 20 64 6f 0a 77 69 74 68 20 20   ┆gth;  while length > 0 do with  ┆
0x030320…030340             63 75 72 73 74 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 0a 28 2a 20 72 65 61 64 20 61 20 70 6f 72   ┆curstr ^ do begin  (* read a por┆
0x030340…030360             74 69 6f 6e 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 20 2a 29 0a 73 74 72 69 6e 67 6c 67 74 3a   ┆tion of the string *) stringlgt:┆
0x030360…030380             3d 20 6c 65 6e 67 74 68 3b 0a 69 66 20 6c 65 6e 67 74 68 20 3c 20 70 6f 72 74 69 6f 6e 20 74 68   ┆= length; if length < portion th┆
0x030380…0303a0             65 6e 20 70 6f 72 74 69 6f 6e 3a 3d 20 6c 65 6e 67 74 68 3b 0a 6c 65 6e 67 74 68 3a 3d 20 6c 65   ┆en portion:= length; length:= le┆
0x0303a0…0303c0             6e 67 74 68 20 2d 20 70 6f 72 74 69 6f 6e 3b 0a 66 6f 72 20 69 3a 3d 20 31 20 74 6f 20 70 6f 72   ┆ngth - portion; for i:= 1 to por┆
0x0303c0…0303e0             74 69 6f 6e 20 64 6f 0a 73 74 72 20 5b 20 69 20 5d 3a 3d 20 63 68 72 20 28 70 61 73 73 69 6e 29   ┆tion do str [ i ]:= chr (passin)┆
0x0303e0…030400             3b 0a 0a 69 66 20 6c 65 6e 67 74 68 20 3e 20 30 20 74 68 65 6e 0a 6e 65 78 74 73 74 72 3a 3d 20   ┆;  if length > 0 then nextstr:= ┆
0x030400…030420 (12, 1, 12) 61 6c 6c 6f 63 5f 73 74 72 69 6e 67 3b 0a 0a 63 75 72 73 74 72 3a 3d 20 6e 65 78 74 73 74 72 3b   ┆alloc_string;  curstr:= nextstr;┆
0x030420…030440             0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 63 75 72 73 74 72 20 2a 29 0a 0a 65 6e 64 3b 20 28   ┆  end; (* with curstr *)  end; (┆
0x030440…030460             2a 20 70 72 6f 63 65 64 75 72 65 20 72 65 61 64 73 74 72 69 6e 67 20 2a 29 0a 0a 0a 0a 70 72 6f   ┆* procedure readstring *)    pro┆
0x030460…030480             63 65 64 75 72 65 20 65 6d 69 74 73 74 72 69 6e 67 20 28 73 74 72 72 3a 20 73 74 72 69 6e 67 70   ┆cedure emitstring (strr: stringp┆
0x030480…0304a0             74 72 29 3b 0a 0a 76 61 72 0a 6c 65 6e 67 74 68 3a 20 69 6e 74 65 67 65 72 3b 0a 63 75 72 73 74   ┆tr);  var length: integer; curst┆
0x0304a0…0304c0             72 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 69 2c 20 70 6f 72 74 69 6f 6e 3a 20 73 74 72 5f 69 6e   ┆r: stringptr; i, portion: str_in┆
0x0304c0…0304e0             64 65 78 3b 0a 0a 62 65 67 69 6e 0a 0a 63 75 72 73 74 72 3a 3d 20 73 74 72 72 3b 0a 70 6f 72 74   ┆dex;  begin  curstr:= strr; port┆
0x0304e0…030500             69 6f 6e 3a 3d 20 6d 61 78 73 74 72 69 6e 67 3b 0a 0a 77 69 74 68 20 20 63 75 72 73 74 72 20 5e   ┆ion:= maxstring;  with  curstr ^┆
0x030500…030520             20 64 6f 0a 6c 65 6e 67 74 68 3a 3d 20 73 74 72 69 6e 67 6c 67 74 3b 0a 0a 65 6d 69 74 69 6e 20   ┆ do length:= stringlgt;  emitin ┆
0x030520…030540             28 6c 65 6e 67 74 68 29 3b 0a 0a 69 66 20 6c 65 6e 67 74 68 20 3e 20 30 20 74 68 65 6e 0a 72 65   ┆(length);  if length > 0 then re┆
0x030540…030560             70 65 61 74 0a 77 69 74 68 20 20 63 75 72 73 74 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20   ┆peat with  curstr ^ do begin if ┆
0x030560…030580             70 6f 72 74 69 6f 6e 20 3e 20 73 74 72 69 6e 67 6c 67 74 20 74 68 65 6e 20 70 6f 72 74 69 6f 6e   ┆portion > stringlgt then portion┆
0x030580…0305a0             3a 3d 20 73 74 72 69 6e 67 6c 67 74 3b 0a 0a 66 6f 72 20 69 3a 3d 20 31 20 74 6f 20 70 6f 72 74   ┆:= stringlgt;  for i:= 1 to port┆
0x0305a0…0305c0             69 6f 6e 20 64 6f 0a 65 6d 69 74 69 6e 20 28 20 6f 72 64 20 28 20 73 74 72 20 5b 20 69 20 5d 20   ┆ion do emitin ( ord ( str [ i ] ┆
0x0305c0…0305e0             29 20 29 3b 0a 0a 63 75 72 73 74 72 3a 3d 20 6e 65 78 74 73 74 72 3b 0a 65 6e 64 3b 20 28 2a 20   ┆) );  curstr:= nextstr; end; (* ┆
0x0305e0…030600             77 69 74 68 20 63 75 72 73 74 72 20 2a 29 0a 0a 75 6e 74 69 6c 20 63 75 72 73 74 72 20 3d 20 6e   ┆with curstr *)  until curstr = n┆
0x030600…030620 (12, 1, 13) 69 6c 73 74 72 69 6e 67 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 65 6d 69   ┆ilstring;  end; (* procedure emi┆
0x030620…030640             74 73 74 72 69 6e 67 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 5f 65 78 74   ┆tstring *)    procedure emit_ext┆
0x030640…030660             6e 61 6d 65 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 0a 62 65 67 69 6e 0a 0a   ┆name (opand: opandptr);  begin  ┆
0x030660…030680             65 6d 69 74 20 28 78 6e 61 6d 65 29 3b 0a 77 69 74 68 20 20 6f 70 61 6e 64 20 5e 20 64 6f 0a 65   ┆emit (xname); with  opand ^ do e┆
0x030680…0306a0             6d 69 74 73 74 72 69 6e 67 20 28 6f 70 5f 76 61 6c 75 65 29 3b 0a 72 65 6c 65 61 73 65 5f 65 78   ┆mitstring (op_value); release_ex┆
0x0306a0…0306c0             70 72 20 28 6f 70 61 6e 64 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 73   ┆pr (opand);  end;    procedure s┆
0x0306c0…0306e0             74 64 73 70 69 78 20 28 78 73 70 69 78 3a 20 69 6e 74 65 67 65 72 3b 20 78 73 74 64 6e 61 6d 65   ┆tdspix (xspix: integer; xstdname┆
0x0306e0…030700             3a 20 73 74 64 6e 61 6d 65 5f 72 61 6e 67 65 29 3b 0a 0a 28 2a 20 69 6e 73 65 72 74 73 20 74 68   ┆: stdname_range);  (* inserts th┆
0x030700…030720             65 20 76 61 6c 75 65 20 27 78 73 70 69 78 27 20 69 6e 20 73 74 64 73 70 69 78 2d 74 61 62 6c 65   ┆e value 'xspix' in stdspix-table┆
0x030720…030740             20 2a 29 0a 28 2a 20 2e 2e 2e 20 74 68 65 20 76 61 6c 75 65 20 2d 31 20 69 73 20 3c 64 75 6d 6d   ┆ *) (* ... the value -1 is <dumm┆
0x030740…030760             79 2d 76 61 6c 75 65 3e 20 2a 29 0a 0a 76 61 72 20 69 3a 20 73 74 64 6e 61 6d 65 5f 72 61 6e 67   ┆y-value> *)  var i: stdname_rang┆
0x030760…030780             65 3b 0a 0a 62 65 67 69 6e 0a 0a 73 74 64 73 70 69 78 5f 74 61 62 6c 65 20 5b 20 78 73 74 64 6e   ┆e;  begin  stdspix_table [ xstdn┆
0x030780…0307a0             61 6d 65 20 5d 3a 3d 20 78 73 70 69 78 3b 0a 0a 6d 61 78 73 74 64 73 70 69 78 3a 3d 20 2d 31 3b   ┆ame ]:= xspix;  maxstdspix:= -1;┆
0x0307a0…0307c0             20 28 2a 20 61 73 73 75 6d 65 20 61 6c 6c 20 65 6e 74 72 69 65 73 20 61 72 65 20 64 75 6d 6d 79   ┆ (* assume all entries are dummy┆
0x0307c0…0307e0             20 2a 29 0a 28 2a 20 6d 61 78 73 74 64 73 70 69 78 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 64   ┆ *) (* maxstdspix is used when d┆
0x0307e0…030800             65 74 65 72 6d 69 6e 69 6e 67 20 61 20 73 70 69 78 20 74 6f 20 62 65 20 27 73 70 65 63 69 61 6c   ┆etermining a spix to be 'special┆
0x030800…030820 (12, 1, 14) 27 20 2a 29 0a 0a 66 6f 72 20 69 3a 3d 20 63 61 6e 6f 6e 79 6d 6f 75 73 20 74 6f 20 63 6f 72 64   ┆' *)  for i:= canonymous to cord┆
0x030820…030840             20 64 6f 0a 69 66 20 6d 61 78 73 74 64 73 70 69 78 20 3c 20 73 74 64 73 70 69 78 5f 74 61 62 6c   ┆ do if maxstdspix < stdspix_tabl┆
0x030840…030860             65 20 5b 20 69 20 5d 20 74 68 65 6e 0a 6d 61 78 73 74 64 73 70 69 78 3a 3d 20 73 74 64 73 70 69   ┆e [ i ] then maxstdspix:= stdspi┆
0x030860…030880             78 5f 74 61 62 6c 65 20 5b 20 69 20 5d 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72   ┆x_table [ i ];  end;    procedur┆
0x030880…0308a0             65 20 73 74 61 6e 64 61 72 64 6e 61 6d 65 3b 0a 28 2a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 69   ┆e standardname; (* called from i┆
0x0308a0…0308c0             6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 61 6e 64 20 6d 61 69 6e 6c 6f 6f 70 20 2a 29 0a 28 2a   ┆nitialization and mainloop *) (*┆
0x0308c0…0308e0             20 20 20 69 74 20 77 69 6c 6c 20 72 65 61 64 3a 20 28 73 70 69 78 2c 73 74 64 6e 61 6d 65 29 20   ┆   it will read: (spix,stdname) ┆
0x0308e0…030900             2c 20 61 6e 64 20 69 6e 73 65 72 74 20 69 6e 20 74 61 62 65 6c 20 2a 29 0a 0a 62 65 67 69 6e 0a   ┆, and insert in tabel *)  begin ┆
0x030900…030920             73 74 64 73 70 69 78 20 28 70 61 73 73 69 6e 20 28 2a 20 3d 20 73 70 69 78 20 2a 29 2c 20 70 61   ┆stdspix (passin (* = spix *), pa┆
0x030920…030940             73 73 77 6f 72 64 20 28 2a 20 3d 20 73 74 64 6e 61 6d 65 20 2a 29 20 29 3b 0a 0a 61 6e 6f 6e 79   ┆ssword (* = stdname *) );  anony┆
0x030940…030960             6d 6f 75 73 5f 73 70 69 78 3a 3d 20 73 74 64 73 70 69 78 5f 74 61 62 6c 65 20 5b 20 63 61 6e 6f   ┆mous_spix:= stdspix_table [ cano┆
0x030960…030980             6e 79 6d 6f 75 73 20 5d 3b 0a 65 78 63 65 70 74 69 6f 6e 5f 73 70 69 78 3a 3d 20 73 74 64 73 70   ┆nymous ]; exception_spix:= stdsp┆
0x030980…0309a0             69 78 5f 74 61 62 6c 65 20 5b 20 63 65 78 63 65 70 74 69 6f 6e 20 5d 3b 0a 65 6e 64 3b 0a 0a 0a   ┆ix_table [ cexception ]; end;   ┆
0x0309a0…0309c0             0a 70 72 6f 63 65 64 75 72 65 20 73 70 65 63 69 61 6c 73 70 69 78 20 28 78 6e 61 6d 65 3a 20 6e   ┆ procedure specialspix (xname: n┆
0x0309c0…0309e0             61 6d 65 70 74 72 29 3b 0a 28 2a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 6d 61 69 6e 6c 6f 6f 70   ┆ameptr); (* called from mainloop┆
0x0309e0…030a00             2c 20 77 68 65 6e 20 61 20 27 73 70 65 63 69 61 6c 27 2d 73 70 69 78 20 68 61 73 20 62 65 65 6e   ┆, when a 'special'-spix has been┆
0x030a00…030a20 (12, 1, 15) 20 64 65 66 69 6e 65 64 20 2a 29 0a 28 2a 20 20 20 74 68 65 20 61 63 74 69 6f 6e 20 64 65 70 65   ┆ defined *) (*   the action depe┆
0x030a20…030a40             6e 64 73 20 6f 6e 20 74 68 65 20 73 70 69 78 20 2a 29 0a 0a 6c 61 62 65 6c 20 39 39 3b 0a 76 61   ┆nds on the spix *)  label 99; va┆
0x030a40…030a60             72 20 69 3a 20 73 74 64 6e 61 6d 65 5f 72 61 6e 67 65 3b 0a 0a 62 65 67 69 6e 0a 0a 77 69 74 68   ┆r i: stdname_range;  begin  with┆
0x030a60…030a80             20 20 78 6e 61 6d 65 20 5e 20 64 6f 20 20 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 73   ┆  xname ^ do    (* namenode of s┆
0x030a80…030aa0             70 65 63 69 61 6c 20 69 6e 74 65 72 65 73 74 20 2a 29 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64   ┆pecial interest *) with  typ ^ d┆
0x030aa0…030ac0             6f 20 20 20 20 28 2a 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 79 70 65 6e 6f   ┆o    (* the corresponding typeno┆
0x030ac0…030ae0             64 65 20 28 69 6e 20 63 61 73 65 20 6f 66 20 74 79 70 65 2e 2e 2e 29 20 2a 29 0a 66 6f 72 20 69   ┆de (in case of type...) *) for i┆
0x030ae0…030b00             3a 3d 20 63 61 6e 6f 6e 79 6d 6f 75 73 20 74 6f 20 63 6f 72 64 20 64 6f 0a 28 2a 20 73 63 61 6e   ┆:= canonymous to cord do (* scan┆
0x030b00…030b20             20 74 68 65 20 73 74 64 73 70 69 78 2d 74 61 62 6c 65 20 74 6f 20 66 69 6e 64 20 74 68 65 20 72   ┆ the stdspix-table to find the r┆
0x030b20…030b40             69 67 74 68 20 73 70 69 78 20 2a 29 0a 69 66 20 73 74 64 73 70 69 78 5f 74 61 62 6c 65 20 5b 20   ┆igth spix *) if stdspix_table [ ┆
0x030b40…030b60             69 20 5d 20 3d 20 73 70 69 78 20 28 2a 20 6f 66 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 20 74 68 65   ┆i ] = spix (* of namenode *) the┆
0x030b60…030b80             6e 0a 62 65 67 69 6e 0a 0a 28 2a 20 72 65 6d 6f 76 65 20 69 74 20 66 72 6f 6d 20 74 61 62 6c 65   ┆n begin  (* remove it from table┆
0x030b80…030ba0             20 28 2e 2e 2e 20 6f 70 74 69 6d 61 6c 69 7a 61 74 69 6f 6e 20 2e 2e 2e 29 20 2a 29 0a 73 74 64   ┆ (... optimalization ...) *) std┆
0x030ba0…030bc0             73 70 69 78 20 28 2d 31 2c 20 69 29 3b 0a 0a 63 61 73 65 20 69 20 6f 66 0a 0a 63 61 6e 6f 6e 79   ┆spix (-1, i);  case i of  canony┆
0x030bc0…030be0             6d 6f 75 73 3a 20 3b 20 28 2a 20 65 6d 70 74 79 20 2a 29 0a 0a 63 62 6f 6f 6c 65 61 6e 3a 0a 62   ┆mous: ; (* empty *)  cboolean: b┆
0x030be0…030c00             65 67 69 6e 0a 62 6f 6f 6c 65 61 6e 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 78 6e 61 6d 65 3b 0a 65   ┆egin boolean_typename:= xname; e┆
0x030c00…030c20 (13, 0, 1)  6d 69 74 69 64 20 28 78 62 6f 6f 6c 65 61 6e 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63   ┆mitid (xboolean, xname); end;  c┆
0x030c20…030c40             63 68 61 72 3a 0a 62 65 67 69 6e 0a 63 68 61 72 5f 74 79 70 65 6e 61 6d 65 20 20 20 3a 3d 20 78   ┆char: begin char_typename   := x┆
0x030c40…030c60             6e 61 6d 65 3b 0a 65 6d 69 74 69 64 20 28 78 63 68 61 72 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64   ┆name; emitid (xchar, xname); end┆
0x030c60…030c80             3b 0a 0a 63 73 68 61 64 6f 77 3a 0a 62 65 67 69 6e 0a 73 68 61 64 6f 77 5f 74 79 70 65 6e 61 6d   ┆;  cshadow: begin shadow_typenam┆
0x030c80…030ca0             65 3a 3d 20 78 6e 61 6d 65 3b 0a 63 6f 6e 74 65 6e 74 73 20 20 20 20 20 20 20 20 3a 3d 20 5b 20   ┆e:= xname; contents        := [ ┆
0x030ca0…030cc0             74 5f 73 68 61 64 6f 77 20 5d 3b 20 20 28 2a 20 66 6f 72 63 65 20 74 68 69 73 20 73 70 65 63 69   ┆t_shadow ];  (* force this speci┆
0x030cc0…030ce0             61 6c 20 63 6f 6e 74 65 6e 74 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 73 68 61 64 6f 77 2c 20 78   ┆al content *) emitid (xshadow, x┆
0x030ce0…030d00             6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 72 65 66 65 72 65 6e 63 65 3a 0a 62 65 67 69 6e 0a 72   ┆name); end;  creference: begin r┆
0x030d00…030d20             65 66 65 72 65 6e 63 65 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 78 6e 61 6d 65 3b 0a 63 6f 6e 74 65   ┆eference_typename:= xname; conte┆
0x030d20…030d40             6e 74 73 20 20 20 20 20 20 20 20 3a 3d 20 5b 20 74 5f 72 65 66 65 72 65 6e 63 65 20 5d 3b 20 20   ┆nts        := [ t_reference ];  ┆
0x030d40…030d60             28 2a 20 66 6f 72 63 65 20 74 68 69 73 20 73 70 65 63 69 61 6c 20 63 6f 6e 74 65 6e 74 20 2a 29   ┆(* force this special content *)┆
0x030d60…030d80             0a 65 6d 69 74 69 64 20 28 78 72 65 66 65 72 65 6e 63 65 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64   ┆ emitid (xreference, xname); end┆
0x030d80…030da0             3b 0a 0a 63 73 65 6d 61 70 68 6f 72 65 3a 0a 62 65 67 69 6e 0a 63 6f 6e 74 65 6e 74 73 20 20 20   ┆;  csemaphore: begin contents   ┆
0x030da0…030dc0             20 20 20 20 20 3a 3d 20 5b 20 74 5f 73 65 6d 61 70 68 6f 72 65 20 5d 3b 20 20 28 2a 20 66 6f 72   ┆     := [ t_semaphore ];  (* for┆
0x030dc0…030de0             63 65 20 74 68 69 73 20 73 70 65 63 69 61 6c 20 63 6f 6e 74 65 6e 74 20 2a 29 0a 65 6d 69 74 69   ┆ce this special content *) emiti┆
0x030de0…030e00             64 20 28 78 73 65 6d 61 70 68 6f 72 65 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 73 6f   ┆d (xsemaphore, xname); end;  cso┆
0x030e00…030e20 (13, 0, 2)  6e 3a 0a 62 65 67 69 6e 0a 63 6f 6e 74 65 6e 74 73 3a 3d 20 5b 20 74 5f 65 78 74 70 72 6f 63 65   ┆n: begin contents:= [ t_extproce┆
0x030e20…030e40             73 73 20 5d 3b 0a 73 6f 6e 5f 74 79 70 65 6e 61 6d 65 20 20 20 20 3a 3d 20 78 6e 61 6d 65 3b 0a   ┆ss ]; son_typename    := xname; ┆
0x030e40…030e60             65 6e 64 3b 0a 0a 63 70 72 6f 63 65 73 73 72 65 63 3a 0a 70 72 6f 63 65 73 73 72 65 63 5f 74 79   ┆end;  cprocessrec: processrec_ty┆
0x030e60…030e80             70 65 6e 61 6d 65 3a 3d 20 78 6e 61 6d 65 3b 0a 0a 63 65 78 63 65 70 74 69 6f 6e 3a 0a 65 78 63   ┆pename:= xname;  cexception: exc┆
0x030e80…030ea0             65 70 74 69 6f 6e 5f 70 72 6f 63 6e 61 6d 65 3a 3d 20 78 6e 61 6d 65 3b 0a 0a 63 61 62 73 3a 0a   ┆eption_procname:= xname;  cabs: ┆
0x030ea0…030ec0             61 62 73 5f 70 72 6f 63 6e 61 6d 65 20 20 20 20 3a 3d 20 78 6e 61 6d 65 3b 0a 0a 63 73 75 63 63   ┆abs_procname    := xname;  csucc┆
0x030ec0…030ee0             3a 0a 62 65 67 69 6e 0a 73 75 63 63 5f 70 72 6f 63 6e 61 6d 65 20 20 20 3a 3d 20 78 6e 61 6d 65   ┆: begin succ_procname   := xname┆
0x030ee0…030f00             3b 0a 65 6d 69 74 69 64 20 28 78 73 75 63 63 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63   ┆; emitid (xsucc, xname); end;  c┆
0x030f00…030f20             70 72 65 64 3a 0a 62 65 67 69 6e 0a 70 72 65 64 5f 70 72 6f 63 6e 61 6d 65 20 20 20 3a 3d 20 78   ┆pred: begin pred_procname   := x┆
0x030f20…030f40             6e 61 6d 65 3b 0a 65 6d 69 74 69 64 20 28 78 70 72 65 64 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64   ┆name; emitid (xpred, xname); end┆
0x030f40…030f60             3b 0a 0a 63 6e 65 77 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 69 64 28 78 6e 65 77 2c 20 78 6e 61 6d   ┆;  cnew: begin emitid(xnew, xnam┆
0x030f60…030f80             65 29 3b 0a 65 6e 64 3b 0a 0a 63 6e 69 6c 3a 0a 62 65 67 69 6e 0a 6e 69 6c 5f 70 72 6f 63 6e 61   ┆e); end;  cnil: begin nil_procna┆
0x030f80…030fa0             6d 65 20 20 20 20 3a 3d 20 78 6e 61 6d 65 3b 0a 65 6d 69 74 69 64 20 28 78 6e 69 6c 2c 20 78 6e   ┆me    := xname; emitid (xnil, xn┆
0x030fa0…030fc0             61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 6e 69 6c 72 65 66 3a 0a 62 65 67 69 6e 0a 6e 69 6c 72 65   ┆ame); end;  cnilref: begin nilre┆
0x030fc0…030fe0             66 5f 70 72 6f 63 6e 61 6d 65 20 3a 3d 20 78 6e 61 6d 65 3b 0a 65 6d 69 74 69 64 28 78 6e 69 6c   ┆f_procname := xname; emitid(xnil┆
0x030fe0…031000             72 65 66 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 63 68 72 3a 0a 65 6d 69 74 69 64 20   ┆ref, xname); end;  cchr: emitid ┆
0x031000…031020 (13, 0, 3)  28 78 63 68 72 2c 20 78 6e 61 6d 65 29 3b 0a 0a 63 6f 72 64 3a 0a 62 65 67 69 6e 0a 6f 72 64 5f   ┆(xchr, xname);  cord: begin ord_┆
0x031020…031040             70 72 6f 63 6e 61 6d 65 20 20 20 20 3a 3d 20 78 6e 61 6d 65 3b 0a 65 6d 69 74 69 64 20 28 78 6f   ┆procname    := xname; emitid (xo┆
0x031040…031060             72 64 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 69 6c   ┆rd, xname); end;  else if compil┆
0x031060…031080             65 72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f   ┆ertest then comp_error (unknown_┆
0x031080…0310a0             73 74 64 74 79 70 65 5f 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 67 6f 74 6f 20 39 39 3b 20 28 2a   ┆stdtype_name); end;  goto 99; (*┆
0x0310a0…0310c0             20 67 6f 74 6f 20 66 6f 75 6e 64 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 66 6f 72 20 69 20 69 6e   ┆ goto found *)  end; (* for i in┆
0x0310c0…0310e0             20 73 74 64 73 70 69 78 5f 72 61 6e 67 65 20 2a 29 0a 0a 28 2a 20 69 6e 20 63 61 73 65 20 74 68   ┆ stdspix_range *)  (* in case th┆
0x0310e0…031100             65 20 6c 6f 6f 70 20 74 65 72 6d 69 6e 61 74 65 73 3a 20 73 65 76 65 72 65 20 65 72 72 6f 72 20   ┆e loop terminates: severe error ┆
0x031100…031120             2a 29 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72   ┆*) if compilertest then comp_err┆
0x031120…031140             6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f 73 70 69 78 29 3b 0a 0a 39 39 3a 20 3b 20 28 2a 20 66 6f 75   ┆or (unknown_spix);  99: ; (* fou┆
0x031140…031160             6e 64 3a 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 73 70 65 63 69 61   ┆nd: *)  end; (* procedure specia┆
0x031160…031180             6c 73 70 69 78 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 65 74 5f 65 72 72 6f 72 5f   ┆lspix *)    procedure set_error_┆
0x031180…0311a0             74 79 70 65 3b 0a 28 2a 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 79 70 65 20 77 61 73   ┆type; (* if the current type was┆
0x0311a0…0311c0             20 61 6e 20 69 6d 70 6c 69 63 69 74 20 74 79 70 65 20 64 65 66 69 6e 69 74 69 6f 6e 2c 20 20 20   ┆ an implicit type definition,   ┆
0x0311c0…0311e0             20 2a 29 0a 28 2a 20 20 20 69 74 20 77 69 6c 6c 20 62 65 20 72 65 6c 65 61 73 65 64 20 61 74 20   ┆ *) (*   it will be released at ┆
0x0311e0…031200             62 6c 6f 63 6b 2d 65 6e 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a   ┆block-end                      *┆
0x031200…031220 (13, 0, 4)  29 0a 0a 62 65 67 69 6e 0a 63 75 72 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 65 72 72 6f 72 5f 74 79   ┆)  begin cur_typename:= error_ty┆
0x031220…031240             70 65 6e 61 6d 65 3b 0a 63 75 72 5f 74 79 70 65 6e 6f 64 65 3a 3d 20 65 72 72 6f 72 5f 74 79 70   ┆pename; cur_typenode:= error_typ┆
0x031240…031260             65 6e 6f 64 65 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 69   ┆enode; end;  (* procedures for i┆
0x031260…031280             6e 73 65 72 74 69 6e 67 2f 72 65 74 72 69 65 76 69 6e 67 20 6e 61 6d 65 73 20 2a 29 0a 0a 0a 0a   ┆nserting/retrieving names *)    ┆
0x031280…0312a0             70 72 6f 63 65 64 75 72 65 20 73 65 61 72 63 68 73 70 69 78 20 28 78 73 70 69 78 3a 20 73 70 69   ┆procedure searchspix (xspix: spi┆
0x0312a0…0312c0             78 72 61 6e 67 65 3b 20 66 69 72 73 74 6c 65 76 65 6c 2c 20 6c 61 73 74 6c 65 76 65 6c 3a 20 6e   ┆xrange; firstlevel, lastlevel: n┆
0x0312c0…0312e0             61 6d 65 73 74 61 63 6b 70 74 72 29 3b 0a 28 2a 20 73 65 61 72 63 68 65 73 20 61 6d 6f 6e 67 20   ┆amestackptr); (* searches among ┆
0x0312e0…031300             61 6c 6c 20 6e 61 6d 65 73 20 69 6e 20 74 68 65 20 6c 65 76 65 6c 73 20 74 6f 20 66 69 6e 64 20   ┆all names in the levels to find ┆
0x031300…031320             27 78 73 70 69 78 27 20 2a 29 0a 0a 28 2a 20 74 68 65 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62   ┆'xspix' *)  (* the global variab┆
0x031320…031340             6c 65 73 20 27 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65 27 2f 27 72 65 74 72 69 65 76 65 64 5f   ┆les 'retrieved_name'/'retrieved_┆
0x031340…031360             6c 65 76 65 6c 27 20 2a 29 0a 28 2a 20 20 20 64 65 73 63 72 69 62 65 20 74 68 65 20 72 65 73 75   ┆level' *) (*   describe the resu┆
0x031360…031380             6c 74 20 6f 66 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 3a 20 2a 29 0a 0a 28 2a 20 78 73 70 69   ┆lt of the procedure: *)  (* xspi┆
0x031380…0313a0             78 20 6e 6f 74 20 66 6f 75 6e 64 3a 20 27 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65 27 20 3d 20   ┆x not found: 'retrieved_name' = ┆
0x0313a0…0313c0             6e 69 6c 6e 61 6d 65 20 28 2d 6c 65 76 65 6c 20 75 6e 64 65 66 29 20 2a 29 0a 28 2a 20 78 73 70   ┆nilname (-level undef) *) (* xsp┆
0x0313c0…0313e0             69 78 20 66 6f 75 6e 64 3a 20 20 20 20 20 27 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65 2f 6c 65   ┆ix found:     'retrieved_name/le┆
0x0313e0…031400             76 65 6c 27 20 69 64 65 6e 74 69 66 69 65 73 20 74 68 65 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 0a   ┆vel' identifies the namenode *) ┆
0x031400…031420 (13, 0, 5)  0a 6c 61 62 65 6c 20 39 39 3b 0a 76 61 72 0a 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 6c 65   ┆ label 99; var name: nameptr; le┆
0x031420…031440             76 65 6c 3a 20 6e 61 6d 65 73 74 61 63 6b 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 6c 61 73   ┆vel: namestackptr;  begin if las┆
0x031440…031460             74 6c 65 76 65 6c 3c 3e 6e 69 6c 5f 6e 61 6d 65 73 74 61 63 6b 5f 70 74 72 20 74 68 65 6e 0a 62   ┆tlevel<>nil_namestack_ptr then b┆
0x031460…031480             65 67 69 6e 0a 6c 65 76 65 6c 3a 3d 20 6c 61 73 74 6c 65 76 65 6c 3b 0a 72 65 70 65 61 74 0a 77   ┆egin level:= lastlevel; repeat w┆
0x031480…0314a0             69 74 68 20 20 6c 65 76 65 6c 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 61 6d 65 3a 3d 20 66 69 72 73   ┆ith  level^ do begin name:= firs┆
0x0314a0…0314c0             74 6e 61 6d 65 3b 0a 77 68 69 6c 65 20 6e 61 6d 65 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a   ┆tname; while name <> nilname do ┆
0x0314c0…0314e0             77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 73 70 69 78 20 28 2a   ┆with  name ^ do begin if spix (*┆
0x0314e0…031500             20 6f 66 20 6e 61 6d 65 20 2a 29 20 3d 20 78 73 70 69 78 20 74 68 65 6e 0a 67 6f 74 6f 20 39 39   ┆ of name *) = xspix then goto 99┆
0x031500…031520             3b 20 28 2a 20 66 6f 75 6e 64 20 2a 29 0a 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 20 28   ┆; (* found *) name:= nextname; (┆
0x031520…031540             2a 20 66 6f 6c 6c 6f 77 20 63 68 61 69 6e 20 2a 29 0a 65 6e 64 3b 0a 6c 65 76 65 6c 3a 3d 20 66   ┆* follow chain *) end; level:= f┆
0x031540…031560             6f 72 6d 65 72 5f 6c 65 76 65 6c 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 6c 65 76 65 6c 5e   ┆ormer_level; end; (* with level^┆
0x031560…031580             20 64 6f 20 2a 29 0a 75 6e 74 69 6c 20 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c 3d 66   ┆ do *) until level^.next_level=f┆
0x031580…0315a0             69 72 73 74 6c 65 76 65 6c 3b 0a 65 6e 64 3b 20 28 2a 20 69 66 20 6c 61 73 74 6c 65 76 65 6c 3c   ┆irstlevel; end; (* if lastlevel<┆
0x0315a0…0315c0             3e 73 74 61 63 6b 20 62 6f 74 74 6f 6d 20 2a 29 0a 6e 61 6d 65 3a 3d 20 6e 69 6c 6e 61 6d 65 3b   ┆>stack bottom *) name:= nilname;┆
0x0315c0…0315e0             20 28 2a 20 6e 61 6d 65 20 6e 6f 74 20 66 6f 75 6e 64 20 2a 29 0a 0a 39 39 3a 3b 20 28 2a 20 66   ┆ (* name not found *)  99:; (* f┆
0x0315e0…031600             6f 75 6e 64 20 2a 29 0a 72 65 74 72 69 65 76 65 64 5f 6c 65 76 65 6c 3a 3d 20 6c 65 76 65 6c 3b   ┆ound *) retrieved_level:= level;┆
0x031600…031620 (13, 0, 6)  20 28 2a 20 75 6e 64 65 66 2c 20 69 66 20 6e 6f 74 20 66 6f 75 6e 64 20 2a 29 0a 72 65 74 72 69   ┆ (* undef, if not found *) retri┆
0x031620…031640             65 76 65 64 5f 6e 61 6d 65 20 3a 3d 20 6e 61 6d 65 3b 20 20 28 2a 20 6e 69 6c 6e 61 6d 65 2c 20   ┆eved_name := name;  (* nilname, ┆
0x031640…031660             69 66 20 6e 6f 74 20 66 6f 75 6e 64 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75   ┆if not found *)  end; (* procedu┆
0x031660…031680             72 65 20 73 65 61 72 63 68 73 70 69 78 20 2a 29 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 66 69 6e   ┆re searchspix *)    function fin┆
0x031680…0316a0             64 6e 61 6d 65 20 28 78 73 70 69 78 3a 20 73 70 69 78 72 61 6e 67 65 29 20 3a 20 6e 61 6d 65 70   ┆dname (xspix: spixrange) : namep┆
0x0316a0…0316c0             74 72 3b 0a 28 2a 20 64 65 6c 69 76 65 72 73 20 74 68 65 20 6e 61 6d 65 6e 6f 64 65 20 77 69 74   ┆tr; (* delivers the namenode wit┆
0x0316c0…0316e0             68 20 74 68 65 20 73 65 61 72 63 68 65 64 20 73 70 69 78 20 2a 29 0a 28 2a 20 69 66 20 74 68 65   ┆h the searched spix *) (* if the┆
0x0316e0…031700             20 73 70 69 78 20 77 61 73 27 6e 74 20 66 6f 75 6e 64 2c 20 74 68 65 20 72 65 73 75 6c 74 20 69   ┆ spix was'nt found, the result i┆
0x031700…031720             73 20 27 6e 69 6c 6e 61 6d 65 27 20 2a 29 0a 0a 62 65 67 69 6e 0a 73 65 61 72 63 68 73 70 69 78   ┆s 'nilname' *)  begin searchspix┆
0x031720…031740             20 28 78 73 70 69 78 2c 20 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c 2c 20 6e 61 6d 65   ┆ (xspix, processparamlevel, name┆
0x031740…031760             6c 65 76 65 6c 29 3b 0a 69 66 20 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65 20 3d 20 6e 69 6c 6e   ┆level); if retrieved_name = niln┆
0x031760…031780             61 6d 65 20 74 68 65 6e 0a 73 65 61 72 63 68 73 70 69 78 20 28 78 73 70 69 78 2c 20 6c 6f 77 65   ┆ame then searchspix (xspix, lowe┆
0x031780…0317a0             73 74 6c 65 76 65 6c 2c 20 6c 61 73 74 67 6c 6f 62 61 6c 6c 65 76 65 6c 29 3b 0a 66 69 6e 64 6e   ┆stlevel, lastgloballevel); findn┆
0x0317a0…0317c0             61 6d 65 3a 3d 20 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 66 75   ┆ame:= retrieved_name; end;    fu┆
0x0317c0…0317e0             6e 63 74 69 6f 6e 20 6e 65 77 6e 61 6d 65 20 28 78 73 70 69 78 3a 20 73 70 69 78 72 61 6e 67 65   ┆nction newname (xspix: spixrange┆
0x0317e0…031800             29 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 28 2a 20 61 20 6e 65 77 20 6e 61 6d 65 6e 6f 64 65 20 69   ┆) : nameptr; (* a new namenode i┆
0x031800…031820 (13, 0, 7)  73 20 69 6e 73 65 72 74 65 64 20 61 74 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 6c 65 76 65 6c 20   ┆s inserted at current namelevel ┆
0x031820…031840             2a 29 0a 28 2a 20 74 68 65 20 6e 61 6d 65 6e 6f 64 65 20 69 73 20 69 6e 69 74 69 61 6c 69 7a 65   ┆*) (* the namenode is initialize┆
0x031840…031860             64 20 61 73 20 64 75 6d 6d 79 20 2a 29 0a 0a 6c 61 62 65 6c 20 39 39 3b 0a 76 61 72 20 6e 61 6d   ┆d as dummy *)  label 99; var nam┆
0x031860…031880             65 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 69 66 20 78 73 70 69 78 20 3c 3e   ┆e : nameptr;  begin  if xspix <>┆
0x031880…0318a0             20 61 6e 6f 6e 79 6d 6f 75 73 5f 73 70 69 78 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 65 78   ┆ anonymous_spix then begin (* ex┆
0x0318a0…0318c0             70 6c 69 63 69 74 20 73 70 69 78 27 65 73 20 6d 61 79 20 6e 6f 74 20 65 78 69 73 74 20 61 6c 72   ┆plicit spix'es may not exist alr┆
0x0318c0…0318e0             65 61 64 79 20 61 74 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 28 2a 20   ┆eady at current namelevel *) (* ┆
0x0318e0…031900             20 20 2e 2e 2e 20 65 78 63 65 70 74 20 66 6f 72 77 61 72 64 20 64 65 63 6c 61 72 65 64 20 72 6f   ┆  ... except forward declared ro┆
0x031900…031920             75 74 69 6e 65 2d 6e 61 6d 65 73 20 2e 2e 2e 20 2a 29 0a 0a 6e 61 6d 65 3a 3d 20 66 69 6e 64 6e   ┆utine-names ... *)  name:= findn┆
0x031920…031940             61 6d 65 20 28 78 73 70 69 78 29 3b 0a 69 66 20 6e 61 6d 65 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20   ┆ame (xspix); if name <> nilname ┆
0x031940…031960             74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 74 68 65 20 6e 61 6d 65 20 61 6c 72 65 61 64 79 20 65   ┆then begin (* the name already e┆
0x031960…031980             78 69 73 74 65 64 20 61 74 20 73 6f 6d 65 20 6c 65 76 65 6c 20 2a 29 0a 28 2a 20 63 68 65 63 6b   ┆xisted at some level *) (* check┆
0x031980…0319a0             20 74 68 65 20 63 6f 6e 73 69 73 74 65 6e 63 79 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e   ┆ the consistency *) with  name ^┆
0x0319a0…0319c0             20 64 6f 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 6a 75 73 74 20 66 6f 75 6e 64 20 6e   ┆ do  (* namenode of just found n┆
0x0319c0…0319e0             61 6d 65 20 2a 29 0a 69 66 20 72 65 74 72 69 65 76 65 64 5f 6c 65 76 65 6c 20 3d 20 6e 61 6d 65   ┆ame *) if retrieved_level = name┆
0x0319e0…031a00             6c 65 76 65 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 64 6f 75 62 6c 65 2d 64 65 63 6c 61   ┆level then begin (* double-decla┆
0x031a00…031a20 (13, 0, 8)  72 61 74 69 6f 6e 20 69 73 20 73 75 70 70 72 65 73 73 65 64 2c 20 69 6e 20 63 61 73 65 20 74 68   ┆ration is suppressed, in case th┆
0x031a20…031a40             65 20 70 72 65 76 69 6f 75 73 20 64 65 63 6c 20 77 61 73 20 66 6f 72 77 61 72 64 20 2a 29 0a 69   ┆e previous decl was forward *) i┆
0x031a40…031a60             66 20 66 6f 72 77 61 72 64 5f 64 65 63 6c 20 74 68 65 6e 0a 28 2a 20 69 74 20 77 61 73 20 72 65   ┆f forward_decl then (* it was re┆
0x031a60…031a80             61 6c 6c 79 20 66 6f 72 77 61 72 64 20 64 65 63 6c 61 72 65 64 20 2a 29 0a 28 2a 20 6e 6f 77 20   ┆ally forward declared *) (* now ┆
0x031a80…031aa0             74 65 73 74 20 74 68 61 74 20 69 74 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 74 68 65 20 6e   ┆test that it is similar to the n┆
0x031aa0…031ac0             65 77 20 6f 6e 65 20 2a 29 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 75 72 5f 6e 61 6d 65   ┆ew one *) if namekind = cur_name┆
0x031ac0…031ae0             6b 69 6e 64 20 74 68 65 6e 0a 67 6f 74 6f 20 39 39 3b 20 28 2a 20 73 6b 69 70 20 69 6e 69 74 69   ┆kind then goto 99; (* skip initi┆
0x031ae0…031b00             61 6c 69 7a 61 74 69 6f 6e 20 65 74 63 20 2a 29 0a 0a 28 2a 20 6f 74 68 65 72 77 69 73 65 20 69   ┆alization etc *)  (* otherwise i┆
0x031b00…031b20             74 20 77 69 6c 6c 20 62 65 20 66 6c 61 67 67 65 64 20 61 73 20 65 72 72 6f 72 20 2a 29 0a 65 72   ┆t will be flagged as error *) er┆
0x031b20…031b40             72 6f 72 73 70 69 78 3a 3d 20 78 73 70 69 78 3b 0a 65 72 72 6f 72 20 28 64 6f 75 62 6c 65 5f 64   ┆rorspix:= xspix; error (double_d┆
0x031b40…031b60             65 63 6c 61 72 61 74 69 6f 6e 29 3b 0a 78 73 70 69 78 3a 3d 20 61 6e 6f 6e 79 6d 6f 75 73 5f 73   ┆eclaration); xspix:= anonymous_s┆
0x031b60…031b80             70 69 78 3b 20 28 2a 20 69 2e 65 2e 20 74 68 69 73 20 6e 61 6d 65 20 63 61 6e 20 6e 65 76 65 72   ┆pix; (* i.e. this name can never┆
0x031b80…031ba0             20 62 65 20 72 65 74 72 69 65 76 65 64 20 2a 29 0a 0a 65 6e 64 20 28 2a 20 69 66 20 61 6c 72 65   ┆ be retrieved *)  end (* if alre┆
0x031ba0…031bc0             61 64 79 20 6f 6e 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28   ┆ady on namelevel *) else begin (┆
0x031bc0…031be0             2a 20 74 65 73 74 20 74 68 61 74 20 74 68 69 73 20 28 67 6c 6f 62 61 6c 29 20 6e 61 6d 65 20 68   ┆* test that this (global) name h┆
0x031be0…031c00             61 73 27 6e 74 20 62 65 65 6e 20 75 73 65 64 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 6e 20 74 68   ┆as'nt been used previously on th┆
0x031c00…031c20 (13, 0, 9)  69 73 20 6c 65 76 65 6c 20 2a 29 0a 69 66 20 75 73 65 64 6c 65 76 65 6c 20 28 2a 20 6f 66 20 6e   ┆is level *) if usedlevel (* of n┆
0x031c20…031c40             61 6d 65 20 2a 29 20 3d 20 6e 61 6d 65 6c 65 76 65 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72   ┆ame *) = namelevel then begin er┆
0x031c40…031c60             72 6f 72 73 70 69 78 3a 3d 20 78 73 70 69 78 3b 0a 65 72 72 6f 72 20 28 69 6e 63 6f 6e 73 69 73   ┆rorspix:= xspix; error (inconsis┆
0x031c60…031c80             74 65 6e 74 5f 75 73 65 29 3b 0a 65 6e 64 20 65 6c 73 65 0a 69 66 20 28 63 75 72 5f 63 6f 6e 74   ┆tent_use); end else if (cur_cont┆
0x031c80…031ca0             65 78 74 5f 6e 6f 20 3c 3e 20 2d 31 29 20 28 2a 20 69 6e 20 63 6f 6e 74 65 78 74 20 2a 29 20 61   ┆ext_no <> -1) (* in context *) a┆
0x031ca0…031cc0             6e 64 0a 28 63 75 72 5f 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 72 65 63 66 69 65 6c 64 29 20 61   ┆nd (cur_namekind <> crecfield) a┆
0x031cc0…031ce0             6e 64 20 28 63 75 72 5f 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 76 61 72 70 29 0a 61 6e 64 20 28   ┆nd (cur_namekind <> cvarp) and (┆
0x031ce0…031d00             63 75 72 5f 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 76 61 6c 75 65 70 29 20 74 68 65 6e 0a 62 65   ┆cur_namekind <> cvaluep) then be┆
0x031d00…031d20             67 69 6e 0a 28 2a 20 72 65 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 6e 61 6d 65 20 66 72 6f 6d   ┆gin (* redefinition of name from┆
0x031d20…031d40             20 73 75 72 72 6f 75 6e 64 69 6e 67 20 63 6f 6e 74 65 78 74 20 2a 29 0a 65 72 72 6f 72 73 70 69   ┆ surrounding context *) errorspi┆
0x031d40…031d60             78 20 3a 3d 20 78 73 70 69 78 3b 0a 77 61 72 6e 69 6e 67 28 72 65 64 65 66 69 6e 69 74 69 6f 6e   ┆x := xspix; warning(redefinition┆
0x031d60…031d80             5f 6f 66 5f 63 6f 6e 74 65 78 74 5f 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64   ┆_of_context_name); end; end; end┆
0x031d80…031da0             3b 20 28 2a 20 69 66 20 65 78 69 73 74 69 6e 67 20 6e 61 6d 65 20 2a 29 0a 0a 65 6e 64 3b 20 28   ┆; (* if existing name *)  end; (┆
0x031da0…031dc0             2a 20 69 66 20 65 78 70 6c 69 63 69 74 20 73 70 69 78 20 2a 29 0a 0a 28 2a 20 61 6c 6c 6f 63 61   ┆* if explicit spix *)  (* alloca┆
0x031dc0…031de0             74 65 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 20 6e 65 77 20 6e 61 6d 65 6e 6f 64 65   ┆te and initialize a new namenode┆
0x031de0…031e00             20 2a 29 0a 0a 6e 61 6d 65 3a 3d 20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3b 0a 0a 77 69 74   ┆ *)  name:= alloc_namenode;  wit┆
0x031e00…031e20 (13, 0, 10) 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 73 70 69 78 20 20 20 20 3a 3d 20 78 73   ┆h  name ^ do begin spix    := xs┆
0x031e20…031e40             70 69 78 3b 0a 6e 61 6d 65 6b 69 6e 64 3a 3d 20 63 75 72 5f 6e 61 6d 65 6b 69 6e 64 3b 0a 74 79   ┆pix; namekind:= cur_namekind; ty┆
0x031e40…031e60             70 65 6e 61 6d 65 3a 3d 20 6e 69 6c 5f 74 79 70 65 6e 61 6d 65 3b 0a 0a 28 2a 20 69 6e 73 65 72   ┆pename:= nil_typename;  (* inser┆
0x031e60…031e80             74 20 69 6e 20 6c 69 73 74 20 6f 66 20 6e 61 6d 65 73 20 6f 66 20 73 61 6d 65 20 6c 65 76 65 6c   ┆t in list of names of same level┆
0x031e80…031ea0             20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 6c 65 76 65 6c 5e 20 64 6f 0a 69 66 20 69 6e 73 65 72   ┆ *) with  namelevel^ do if inser┆
0x031ea0…031ec0             74 5f 69 6e 5f 66 72 6f 6e 74 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 6e 6c 79 20 66 75   ┆t_in_front then begin (* only fu┆
0x031ec0…031ee0             6e 63 74 69 6f 6e 2d 72 65 74 75 72 6e 2d 76 61 6c 75 65 20 61 72 65 20 69 6e 73 65 72 74 65 64   ┆nction-return-value are inserted┆
0x031ee0…031f00             20 69 6e 20 66 72 6f 6e 74 20 2e 2e 2e 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f   ┆ in front ... *) with  name ^ do┆
0x031f00…031f20             0a 6e 65 78 74 6e 61 6d 65 3a 3d 20 66 69 72 73 74 6e 61 6d 65 3b 20 28 2a 20 69 6e 73 65 72 74   ┆ nextname:= firstname; (* insert┆
0x031f20…031f40             20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 65 78 69 73 74 69 6e 67 20 6c 69 73 74 20 2a 29 0a 69 66   ┆ in front of existing list *) if┆
0x031f40…031f60             20 66 69 72 73 74 6e 61 6d 65 20 3d 20 6e 69 6c 6e 61 6d 65 20 74 68 65 6e 0a 6c 61 73 74 6e 61   ┆ firstname = nilname then lastna┆
0x031f60…031f80             6d 65 3a 3d 20 6e 61 6d 65 3b 0a 66 69 72 73 74 6e 61 6d 65 3a 3d 20 6e 61 6d 65 3b 0a 65 6e 64   ┆me:= name; firstname:= name; end┆
0x031f80…031fa0             0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 66 69 72 73 74 6e 61 6d 65 20 3d 20 6e 69 6c 6e 61   ┆ else begin if firstname = nilna┆
0x031fa0…031fc0             6d 65 20 74 68 65 6e 0a 66 69 72 73 74 6e 61 6d 65 3a 3d 20 6e 61 6d 65 0a 65 6c 73 65 0a 77 69   ┆me then firstname:= name else wi┆
0x031fc0…031fe0             74 68 20 20 6c 61 73 74 6e 61 6d 65 20 5e 20 64 6f 0a 6e 65 78 74 6e 61 6d 65 3a 3d 20 6e 61 6d   ┆th  lastname ^ do nextname:= nam┆
0x031fe0…032000             65 3b 20 28 2a 20 69 6e 73 65 72 74 20 69 6e 20 72 65 61 72 20 6f 66 20 65 78 69 73 74 69 6e 67   ┆e; (* insert in rear of existing┆
0x032000…032020 (13, 0, 11) 20 6c 69 73 74 20 2a 29 0a 6c 61 73 74 6e 61 6d 65 3a 3d 20 6e 61 6d 65 3b 0a 65 6e 64 3b 20 28   ┆ list *) lastname:= name; end; (┆
0x032020…032040             2a 20 77 69 74 68 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74   ┆* with namelevel *)  end; (* wit┆
0x032040…032060             68 20 6e 61 6d 65 20 2a 29 0a 0a 39 39 3a 3b 20 28 2a 20 61 66 74 65 72 20 69 6e 69 74 20 6f 66   ┆h name *)  99:; (* after init of┆
0x032060…032080             20 6e 61 6d 65 6e 6f 64 65 20 2a 29 0a 6e 65 77 6e 61 6d 65 3a 3d 20 6e 61 6d 65 3b 0a 0a 65 6e   ┆ namenode *) newname:= name;  en┆
0x032080…0320a0             64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 6e 65 77 6e 61 6d 65 20 2a 29 0a 0a 0a 0a 66 75   ┆d; (* procedure newname *)    fu┆
0x0320a0…0320c0             6e 63 74 69 6f 6e 20 6e 65 77 5f 75 6e 64 65 63 6c 20 28 78 73 70 69 78 3a 20 73 70 69 78 72 61   ┆nction new_undecl (xspix: spixra┆
0x0320c0…0320e0             6e 67 65 29 3a 20 6e 61 6d 65 70 74 72 3b 0a 28 2a 20 74 68 65 20 72 6f 75 74 69 6e 65 20 63 72   ┆nge): nameptr; (* the routine cr┆
0x0320e0…032100             65 61 74 65 73 20 61 20 6e 65 77 20 6e 61 6d 65 6e 6f 64 65 20 77 69 74 68 20 74 68 65 20 73 70   ┆eates a new namenode with the sp┆
0x032100…032120             69 78 20 67 69 76 65 6e 20 2a 29 0a 28 2a 20 61 6e 64 20 6d 61 72 6b 73 20 69 74 20 61 73 20 75   ┆ix given *) (* and marks it as u┆
0x032120…032140             6e 64 65 63 6c 61 72 65 64 20 2a 29 0a 0a 76 61 72 20 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b   ┆ndeclared *)  var name: nameptr;┆
0x032140…032160             0a 0a 62 65 67 69 6e 0a 0a 6e 61 6d 65 3a 3d 20 6e 65 77 6e 61 6d 65 20 28 78 73 70 69 78 29 3b   ┆  begin  name:= newname (xspix);┆
0x032160…032180             0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 61 6d 65 6b 69 6e 64 3a   ┆ with  name ^ do begin namekind:┆
0x032180…0321a0             3d 20 63 75 6e 64 65 63 6c 61 72 65 64 3b 0a 74 79 70 65 6e 61 6d 65 3a 3d 20 65 72 72 6f 72 5f   ┆= cundeclared; typename:= error_┆
0x0321a0…0321c0             74 79 70 65 6e 61 6d 65 3b 0a 74 79 70 20 20 20 20 20 3a 3d 20 65 72 72 6f 72 5f 74 79 70 65 6e   ┆typename; typ     := error_typen┆
0x0321c0…0321e0             6f 64 65 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 6e 62 6e 62 6e 62 3a 20 6d 61 6b 65 20 61 20 27 70 73   ┆ode; end;  (* nbnbnb: make a 'ps┆
0x0321e0…032200             65 75 64 6f 27 2d 64 65 63 6c 61 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 61 6d 65 20 2a 29   ┆eudo'-declaration of the name *)┆
0x032200…032220 (13, 0, 12) 0a 65 6d 69 74 69 64 20 28 78 75 6e 64 65 63 6c 69 64 2c 20 6e 61 6d 65 29 3b 0a 0a 6e 65 77 5f   ┆ emitid (xundeclid, name);  new_┆
0x032220…032240             75 6e 64 65 63 6c 3a 3d 20 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72   ┆undecl:= name;  end; (* procedur┆
0x032240…032260             65 20 6e 65 77 2d 75 6e 64 65 63 6c 20 2a 29 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 75 73 65 6e   ┆e new-undecl *)    function usen┆
0x032260…032280             61 6d 65 20 28 78 73 70 69 78 3a 20 73 70 69 78 72 61 6e 67 65 29 20 3a 20 6e 61 6d 65 70 74 72   ┆ame (xspix: spixrange) : nameptr┆
0x032280…0322a0             3b 0a 28 2a 20 74 68 65 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c 20 73 65 61 72 63 68 20 66 6f 72   ┆; (* the routine will search for┆
0x0322a0…0322c0             20 74 68 65 20 67 69 76 65 6e 20 73 70 69 78 2c 20 61 6e 64 20 6d 61 72 6b 20 74 68 65 20 6e 61   ┆ the given spix, and mark the na┆
0x0322c0…0322e0             6d 65 6e 6f 64 65 20 2a 29 0a 28 2a 20 20 20 61 73 20 62 65 69 6e 67 20 75 73 65 64 20 6f 6e 20   ┆menode *) (*   as being used on ┆
0x0322e0…032300             63 75 72 72 65 6e 74 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 0a 28 2a 20 69 66 20 74 68 65 20   ┆current namelevel *)  (* if the ┆
0x032300…032320             6e 61 6d 65 20 64 6f 65 73 6e 27 74 20 65 78 69 73 74 2c 20 61 20 6e 65 77 20 6e 61 6d 65 6e 6f   ┆name doesn't exist, a new nameno┆
0x032320…032340             64 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 20 2a 29 0a 0a 76 61 72 20 6e 61 6d 65 3a   ┆de will be created *)  var name:┆
0x032340…032360             20 6e 61 6d 65 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 63 75 72 5f 6f 70 61 6e 64 6e 6f 3a 3d 20   ┆ nameptr;  begin  cur_opandno:= ┆
0x032360…032380             63 75 72 5f 6f 70 61 6e 64 6e 6f 20 2b 20 31 3b 0a 0a 6e 61 6d 65 3a 3d 20 66 69 6e 64 6e 61 6d   ┆cur_opandno + 1;  name:= findnam┆
0x032380…0323a0             65 20 28 78 73 70 69 78 29 3b 0a 0a 69 66 20 6e 61 6d 65 20 3d 20 6e 69 6c 6e 61 6d 65 20 74 68   ┆e (xspix);  if name = nilname th┆
0x0323a0…0323c0             65 6e 0a 62 65 67 69 6e 0a 28 2a 20 74 68 65 20 6e 61 6d 65 20 64 69 64 27 6e 74 20 65 78 69 73   ┆en begin (* the name did'nt exis┆
0x0323c0…0323e0             74 2c 20 63 72 65 61 74 65 20 65 20 6e 65 77 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 0a 65 72 72 6f   ┆t, create e new namenode *) erro┆
0x0323e0…032400             72 73 70 69 78 3a 3d 20 78 73 70 69 78 3b 20 28 2a 20 70 72 69 6e 74 20 75 6e 64 65 63 6c 61 72   ┆rspix:= xspix; (* print undeclar┆
0x032400…032420 (13, 0, 13) 65 64 20 6e 61 6d 65 20 2a 29 0a 65 72 72 6f 72 20 28 75 6e 64 65 63 6c 61 72 65 64 29 3b 0a 6e   ┆ed name *) error (undeclared); n┆
0x032420…032440             61 6d 65 3a 3d 20 6e 65 77 5f 75 6e 64 65 63 6c 20 28 78 73 70 69 78 29 3b 0a 0a 65 6e 64 3b 20   ┆ame:= new_undecl (xspix);  end; ┆
0x032440…032460             28 2a 20 69 66 20 75 6e 64 65 63 6c 61 72 65 64 20 2a 29 0a 0a 28 2a 20 74 65 73 74 20 66 6f 72   ┆(* if undeclared *)  (* test for┆
0x032460…032480             20 72 65 63 75 72 73 69 76 65 20 75 73 65 20 6f 66 20 63 6f 6e 73 74 61 6e 74 73 2c 20 69 2e 65   ┆ recursive use of constants, i.e┆
0x032480…0324a0             2e 20 75 73 69 6e 67 20 62 65 66 6f 72 65 20 64 65 66 69 6e 69 6e 67 20 2a 29 0a 77 69 74 68 20   ┆. using before defining *) with ┆
0x0324a0…0324c0             20 6e 61 6d 65 20 5e 20 64 6f 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 63 6f 6e 73 74 61   ┆ name ^ do if namekind = cconsta┆
0x0324c0…0324e0             6e 74 20 74 68 65 6e 0a 69 66 20 75 73 65 64 6c 65 76 65 6c 20 3d 20 6e 69 6c 5f 6e 61 6d 65 73   ┆nt then if usedlevel = nil_names┆
0x0324e0…032500             74 61 63 6b 5f 70 74 72 20 28 2a 20 69 2e 65 2e 20 6a 75 73 74 20 61 66 74 65 72 20 64 65 63 6c   ┆tack_ptr (* i.e. just after decl┆
0x032500…032520             61 72 61 74 69 6f 6e 20 2a 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 72 6f 72 73 70 69 78 3a   ┆aration *) then begin errorspix:┆
0x032520…032540             3d 20 73 70 69 78 3b 20 28 2a 20 6f 66 20 6e 61 6d 65 20 2a 29 0a 65 72 72 6f 72 20 28 72 65 63   ┆= spix; (* of name *) error (rec┆
0x032540…032560             75 72 73 69 76 65 5f 63 6f 6e 73 74 61 6e 74 5f 75 73 65 29 3b 0a 6e 61 6d 65 3a 3d 20 6e 65 77   ┆ursive_constant_use); name:= new┆
0x032560…032580             5f 75 6e 64 65 63 6c 20 28 78 73 70 69 78 29 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 6d 61 72 6b 20 74   ┆_undecl (xspix); end;  (* mark t┆
0x032580…0325a0             68 65 20 6e 61 6d 65 20 61 73 20 62 65 69 6e 67 20 75 73 65 64 20 6f 6e 20 63 75 72 72 65 6e 74   ┆he name as being used on current┆
0x0325a0…0325c0             20 6c 65 76 65 6c 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 75 73 65 64 6c 65   ┆ level *) with  name ^ do usedle┆
0x0325c0…0325e0             76 65 6c 3a 3d 20 6e 61 6d 65 6c 65 76 65 6c 3b 0a 0a 75 73 65 6e 61 6d 65 3a 3d 20 6e 61 6d 65   ┆vel:= namelevel;  usename:= name┆
0x0325e0…032600             3b 20 28 2a 20 64 65 6c 69 76 65 72 20 74 68 65 20 75 73 65 64 20 6e 61 6d 65 20 6e 6f 64 65 20   ┆; (* deliver the used name node ┆
0x032600…032620 (13, 0, 14) 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 75 73 65 6e 61 6d 65 20 2a 29   ┆*)  end; (* procedure usename *)┆
0x032620…032640             0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 6c 65 76 65 6c 5f 75 73 65 20 28 66 69 72   ┆    procedure end_level_use (fir┆
0x032640…032660             73 74 6c 65 76 65 6c 2c 20 6c 61 73 74 6c 65 76 65 6c 3a 20 6e 61 6d 65 73 74 61 63 6b 70 74 72   ┆stlevel, lastlevel: namestackptr┆
0x032660…032680             29 3b 0a 28 2a 20 61 6c 6c 20 6e 61 6d 65 73 20 69 6e 20 74 68 65 20 6f 75 74 70 6f 69 6e 74 65   ┆); (* all names in the outpointe┆
0x032680…0326a0             64 20 6e 61 6d 65 6c 65 76 65 6c 73 20 61 72 65 20 74 65 73 74 65 64 20 66 6f 72 20 75 73 65 20   ┆d namelevels are tested for use ┆
0x0326a0…0326c0             2a 29 0a 28 2a 20 6f 6e 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 0a 28   ┆*) (* on current namelevel *)  (┆
0x0326c0…0326e0             2a 20 69 66 20 61 20 6e 61 6d 65 20 77 61 73 20 75 73 65 64 20 6f 6e 20 63 75 72 72 65 6e 74 20   ┆* if a name was used on current ┆
0x0326e0…032700             6e 61 6d 65 6c 65 76 65 6c 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 66 6c 61 67 67 65 64 20 2a 29   ┆namelevel, it will be flagged *)┆
0x032700…032720             0a 28 2a 20 20 20 61 73 20 69 66 20 69 74 20 68 61 64 20 62 65 65 6e 20 75 73 65 64 20 6f 6e 20   ┆ (*   as if it had been used on ┆
0x032720…032740             70 72 65 63 65 64 69 6e 67 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 0a 76 61 72 0a 6e 61 6d 65   ┆preceding namelevel *)  var name┆
0x032740…032760             3a 20 6e 61 6d 65 70 74 72 3b 0a 6c 65 76 65 6c 3a 20 6e 61 6d 65 73 74 61 63 6b 70 74 72 3b 0a   ┆: nameptr; level: namestackptr; ┆
0x032760…032780             0a 62 65 67 69 6e 0a 69 66 20 6c 61 73 74 6c 65 76 65 6c 3c 3e 6e 69 6c 5f 6e 61 6d 65 73 74 61   ┆ begin if lastlevel<>nil_namesta┆
0x032780…0327a0             63 6b 5f 70 74 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 65 76 65 6c 3a 3d 20 6c 61 73 74 6c 65   ┆ck_ptr then begin level:= lastle┆
0x0327a0…0327c0             76 65 6c 3b 0a 72 65 70 65 61 74 0a 77 69 74 68 20 20 6c 65 76 65 6c 5e 20 64 6f 0a 62 65 67 69   ┆vel; repeat with  level^ do begi┆
0x0327c0…0327e0             6e 0a 6e 61 6d 65 3a 3d 20 66 69 72 73 74 6e 61 6d 65 3b 0a 77 68 69 6c 65 20 6e 61 6d 65 20 3c   ┆n name:= firstname; while name <┆
0x0327e0…032800             3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67   ┆> nilname do with  name ^ do beg┆
0x032800…032820 (13, 0, 15) 69 6e 0a 69 66 20 75 73 65 64 6c 65 76 65 6c 20 3d 20 6e 61 6d 65 6c 65 76 65 6c 20 74 68 65 6e   ┆in if usedlevel = namelevel then┆
0x032820…032840             0a 69 66 20 6e 61 6d 65 6c 65 76 65 6c 20 3d 20 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65   ┆ if namelevel = processparamleve┆
0x032840…032860             6c 20 74 68 65 6e 0a 75 73 65 64 6c 65 76 65 6c 3a 3d 20 6c 61 73 74 67 6c 6f 62 61 6c 6c 65 76   ┆l then usedlevel:= lastgloballev┆
0x032860…032880             65 6c 0a 65 6c 73 65 0a 75 73 65 64 6c 65 76 65 6c 3a 3d 20 75 73 65 64 6c 65 76 65 6c 5e 2e 66   ┆el else usedlevel:= usedlevel^.f┆
0x032880…0328a0             6f 72 6d 65 72 5f 6c 65 76 65 6c 3b 0a 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 20 20 28   ┆ormer_level; name:= nextname;  (┆
0x0328a0…0328c0             2a 20 66 6f 6c 6c 6f 77 20 63 68 61 69 6e 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 6e   ┆* follow chain *) end; (* with n┆
0x0328c0…0328e0             61 6d 65 20 5e 20 2a 29 0a 6c 65 76 65 6c 3a 3d 20 66 6f 72 6d 65 72 5f 6c 65 76 65 6c 3b 0a 65   ┆ame ^ *) level:= former_level; e┆
0x0328e0…032900             6e 64 3b 20 28 2a 20 77 69 74 68 20 6c 65 76 65 6c 20 5e 20 64 6f 20 2a 29 0a 75 6e 74 69 6c 20   ┆nd; (* with level ^ do *) until ┆
0x032900…032920             6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c 3d 66 69 72 73 74 6c 65 76 65 6c 3b 0a 65 6e   ┆level^.next_level=firstlevel; en┆
0x032920…032940             64 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 6c 65 76 65 6c 5f 75   ┆d; end; (* procedure end_level_u┆
0x032940…032960             73 65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 67 6c 6f 62 61 6c 5f 75 73   ┆se *)    procedure end_global_us┆
0x032960…032980             65 3b 0a 28 2a 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 74 65 72 6d 69 6e 61 74 69 6e 67 20 61 20   ┆e; (* called when terminating a ┆
0x032980…0329a0             6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 28 2a 20 69 66 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62   ┆namelevel *) (* if global variab┆
0x0329a0…0329c0             6c 65 73 20 68 61 76 65 20 62 65 65 6e 20 75 73 65 64 20 61 74 20 74 68 69 73 20 6e 61 6d 65 6c   ┆les have been used at this namel┆
0x0329c0…0329e0             65 76 65 6c 20 2a 29 0a 28 2a 20 20 20 74 68 65 69 72 20 75 73 65 6c 65 76 65 6c 20 77 69 6c 6c   ┆evel *) (*   their uselevel will┆
0x0329e0…032a00             20 62 65 20 64 65 63 72 65 61 73 65 64 20 61 73 20 69 73 20 74 68 65 79 20 77 65 72 65 20 75 73   ┆ be decreased as is they were us┆
0x032a00…032a20 (13, 1, 1)  65 64 20 61 74 20 2a 29 0a 28 2a 20 20 20 70 72 65 63 65 64 69 6e 67 20 6e 61 6d 65 6c 65 76 65   ┆ed at *) (*   preceding nameleve┆
0x032a20…032a40             6c 20 2a 29 0a 0a 62 65 67 69 6e 0a 65 6e 64 5f 6c 65 76 65 6c 5f 75 73 65 20 28 70 72 6f 63 65   ┆l *)  begin end_level_use (proce┆
0x032a40…032a60             73 73 70 61 72 61 6d 6c 65 76 65 6c 2c 20 6e 61 6d 65 6c 65 76 65 6c 5e 2e 66 6f 72 6d 65 72 5f   ┆ssparamlevel, namelevel^.former_┆
0x032a60…032a80             6c 65 76 65 6c 29 3b 0a 65 6e 64 5f 6c 65 76 65 6c 5f 75 73 65 20 28 6c 6f 77 65 73 74 6c 65 76   ┆level); end_level_use (lowestlev┆
0x032a80…032aa0             65 6c 2c 20 6c 61 73 74 67 6c 6f 62 61 6c 6c 65 76 65 6c 29 3b 0a 65 6e 64 3b 0a 0a 0c 0a 28 2a   ┆el, lastgloballevel); end;    (*┆
0x032aa0…032ac0             20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 70 75 73 68 2f 70 6f   ┆ procedures for handling push/po┆
0x032ac0…032ae0             70 20 6f 66 20 6e 61 6d 65 73 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 73 68 6e 61 6d   ┆p of names *)  procedure pushnam┆
0x032ae0…032b00             65 20 28 78 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 62 65 67 69 6e 0a 69 66 20 63 75 72   ┆e (xname: nameptr); begin if cur┆
0x032b00…032b20             70 75 73 68 6e 61 6d 65 5e 2e 70 75 73 68 5f 63 68 61 69 6e 3d 6e 69 6c 20 74 68 65 6e 20 28 2a   ┆pushname^.push_chain=nil then (*┆
0x032b20…032b40             20 65 6e 64 20 6f 66 20 6c 69 73 74 2c 20 61 64 64 20 6f 6e 65 20 6d 6f 72 65 20 2a 29 0a 62 65   ┆ end of list, add one more *) be┆
0x032b40…032b60             67 69 6e 0a 6d 61 78 70 75 73 68 6e 61 6d 65 73 3a 3d 20 6d 61 78 70 75 73 68 6e 61 6d 65 73 2b   ┆gin maxpushnames:= maxpushnames+┆
0x032b60…032b80             31 3b 0a 6e 65 77 28 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 75 73 68 5f 63 68 61 69 6e 29 3b   ┆1; new(curpushname^.push_chain);┆
0x032b80…032ba0             0a 77 69 74 68 20 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 75 73 68 5f 63 68 61 69 6e 5e 20 64   ┆ with curpushname^.push_chain^ d┆
0x032ba0…032bc0             6f 0a 62 65 67 69 6e 0a 70 6f 70 5f 63 68 61 69 6e 3a 3d 20 63 75 72 70 75 73 68 6e 61 6d 65 3b   ┆o begin pop_chain:= curpushname;┆
0x032bc0…032be0             0a 70 75 73 68 5f 63 68 61 69 6e 3a 3d 20 6e 69 6c 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20   ┆ push_chain:= nil; end; (* with ┆
0x032be0…032c00             2a 29 0a 65 6e 64 3b 20 28 2a 20 61 64 64 20 6e 65 77 20 65 6c 65 6d 65 6e 74 20 74 6f 20 6c 69   ┆*) end; (* add new element to li┆
0x032c00…032c20 (13, 1, 2)  73 74 20 2a 29 0a 63 75 72 70 75 73 68 6e 61 6d 65 3a 3d 20 63 75 72 70 75 73 68 6e 61 6d 65 5e   ┆st *) curpushname:= curpushname^┆
0x032c20…032c40             2e 70 75 73 68 5f 63 68 61 69 6e 3b 0a 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 75 73 68 65 64   ┆.push_chain; curpushname^.pushed┆
0x032c40…032c60             5f 6e 61 6d 65 3a 3d 20 78 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20   ┆_name:= xname; end;    function ┆
0x032c60…032c80             70 6f 70 6e 61 6d 65 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 62 65 67 69 6e 0a 70 6f 70 6e 61 6d 65   ┆popname : nameptr; begin popname┆
0x032c80…032ca0             3a 3d 20 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 75 73 68 65 64 5f 6e 61 6d 65 3b 0a 63 75 72   ┆:= curpushname^.pushed_name; cur┆
0x032ca0…032cc0             70 75 73 68 6e 61 6d 65 3a 3d 20 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 6f 70 5f 63 68 61 69   ┆pushname:= curpushname^.pop_chai┆
0x032cc0…032ce0             6e 3b 0a 65 6e 64 3b 0a 0a 0a 0a 28 2a 20 70 75 73 68 6c 69 73 74 2f 70 6f 70 6c 69 73 74 20 61   ┆n; end;    (* pushlist/poplist a┆
0x032ce0…032d00             72 65 20 75 73 65 64 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6f 66 20 6e 65 73 74 65 64 20 6e   ┆re used for handling of nested n┆
0x032d00…032d20             61 6d 65 6c 69 73 74 73 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 73 68 6c 69 73 74 3b   ┆amelists *)  procedure pushlist;┆
0x032d20…032d40             0a 62 65 67 69 6e 0a 70 75 73 68 6e 61 6d 65 20 28 6c 69 73 74 66 69 72 73 74 29 3b 0a 70 75 73   ┆ begin pushname (listfirst); pus┆
0x032d40…032d60             68 6e 61 6d 65 20 28 6c 69 73 74 6c 61 73 74 29 3b 0a 6c 69 73 74 66 69 72 73 74 3a 3d 20 6e 69   ┆hname (listlast); listfirst:= ni┆
0x032d60…032d80             6c 6e 61 6d 65 3b 0a 6c 69 73 74 6c 61 73 74 20 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 65 6e 64 3b   ┆lname; listlast := nilname; end;┆
0x032d80…032da0             0a 0a 70 72 6f 63 65 64 75 72 65 20 70 6f 70 6c 69 73 74 3b 0a 62 65 67 69 6e 0a 6c 69 73 74 6c   ┆  procedure poplist; begin listl┆
0x032da0…032dc0             61 73 74 20 3a 3d 20 70 6f 70 6e 61 6d 65 3b 0a 6c 69 73 74 66 69 72 73 74 3a 3d 20 70 6f 70 6e   ┆ast := popname; listfirst:= popn┆
0x032dc0…032de0             61 6d 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 28 2a 20 70 75 73 68 74 79 70 65 2f 70 6f 70 74 79 70 65   ┆ame; end;    (* pushtype/poptype┆
0x032de0…032e00             20 61 72 65 20 75 73 65 64 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6f 66 20 6e 65 73 74 65 64   ┆ are used for handling of nested┆
0x032e00…032e20 (13, 1, 3)  20 74 79 70 65 73 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 73 68 74 79 70 65 3b 0a 62   ┆ types *)  procedure pushtype; b┆
0x032e20…032e40             65 67 69 6e 0a 70 75 73 68 6e 61 6d 65 20 28 63 75 72 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e   ┆egin pushname (cur_typename); en┆
0x032e40…032e60             64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 6f 70 74 79 70 65 3b 0a 62 65 67 69 6e 0a 63 75 72   ┆d;  procedure poptype; begin cur┆
0x032e60…032e80             5f 74 79 70 65 6e 61 6d 65 3a 3d 20 70 6f 70 6e 61 6d 65 3b 0a 77 69 74 68 20 20 63 75 72 5f 74   ┆_typename:= popname; with  cur_t┆
0x032e80…032ea0             79 70 65 6e 61 6d 65 20 5e 20 64 6f 0a 63 75 72 5f 74 79 70 65 6e 6f 64 65 3a 3d 20 74 79 70 3b   ┆ypename ^ do cur_typenode:= typ;┆
0x032ea0…032ec0             0a 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 69 66 20 63 75 72 5f 74 79   ┆  if compilertest then if cur_ty┆
0x032ec0…032ee0             70 65 6e 6f 64 65 20 3d 20 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 20 74 68 65 6e 0a 62 65 67   ┆penode = dummy_typenode then beg┆
0x032ee0…032f00             69 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 73 74 61 63 6b 5f 6e 6f 6e 74 79 70 65 29 3b   ┆in comp_error (unstack_nontype);┆
0x032f00…032f20             0a 73 65 74 5f 65 72 72 6f 72 5f 74 79 70 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 0a 28 2a   ┆ set_error_type; end; end;    (*┆
0x032f20…032f40             20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6f 66 20 6e 65 73 74   ┆ procedures for handling of nest┆
0x032f40…032f60             65 64 20 70 72 6f 63 65 64 75 72 65 20 63 61 6c 6c 73 20 28 6f 72 20 69 6e 64 65 78 69 6e 67 20   ┆ed procedure calls (or indexing ┆
0x032f60…032f80             65 74 63 29 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 73 68 63 61 6c 6c 3b 0a 62 65 67   ┆etc) *)  procedure pushcall; beg┆
0x032f80…032fa0             69 6e 0a 69 66 20 63 61 6c 6c 69 6e 64 65 78 20 3d 20 6d 61 78 5f 6e 65 73 74 65 64 5f 63 61 6c   ┆in if callindex = max_nested_cal┆
0x032fa0…032fc0             6c 73 20 74 68 65 6e 0a 73 74 6f 70 20 28 74 6f 6f 5f 6d 61 6e 79 5f 6e 65 73 74 65 64 5f 63 61   ┆ls then stop (too_many_nested_ca┆
0x032fc0…032fe0             6c 6c 73 29 3b 0a 0a 77 69 74 68 20 63 61 6c 6c 73 20 5b 20 63 61 6c 6c 69 6e 64 65 78 20 5d 20   ┆lls);  with calls [ callindex ] ┆
0x032fe0…033000             64 6f 0a 62 65 67 69 6e 0a 63 61 6c 6c 6b 69 6e 64 20 20 20 20 20 3a 3d 20 61 72 67 6b 69 6e 64   ┆do begin callkind     := argkind┆
0x033000…033020 (13, 1, 4)  3b 0a 63 61 6c 6c 66 6f 72 6d 61 6c 20 20 20 3a 3d 20 63 75 72 66 6f 72 6d 61 6c 3b 0a 63 61 6c   ┆; callformal   := curformal; cal┆
0x033020…033040             6c 6f 77 6e 65 72 20 20 20 20 3a 3d 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 3b 0a 63 61 6c 6c   ┆lowner    := arglist_owner; call┆
0x033040…033060             5f 61 66 74 65 72 66 75 6e 63 3a 3d 20 61 66 74 65 72 5f 66 75 6e 63 63 61 6c 6c 3b 0a 63 61 6c   ┆_afterfunc:= after_funccall; cal┆
0x033060…033080             6c 5f 66 75 6e 63 74 65 6d 70 3a 3d 20 66 75 6e 63 74 65 6d 70 76 61 72 3b 0a 63 61 6c 6c 5f 63   ┆l_functemp:= functempvar; call_c┆
0x033080…0330a0             6f 75 6e 74 70 72 6f 63 65 73 73 3a 3d 20 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d   ┆ountprocess:= count_processparam┆
0x0330a0…0330c0             3b 0a 65 6e 64 3b 0a 0a 61 66 74 65 72 5f 66 75 6e 63 63 61 6c 6c 3a 3d 20 66 61 6c 73 65 3b 20   ┆; end;  after_funccall:= false; ┆
0x0330c0…0330e0             28 2a 20 61 73 73 75 6d 65 20 6e 6f 74 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20 2a 29 0a 0a   ┆(* assume not function call *)  ┆
0x0330e0…033100             63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 30 3b 0a 0a 63 61 6c 6c 69 6e 64   ┆count_processparam:= 0;  callind┆
0x033100…033120             65 78 3a 3d 20 63 61 6c 6c 69 6e 64 65 78 20 2b 20 31 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f   ┆ex:= callindex + 1;  end; (* pro┆
0x033120…033140             63 65 64 75 72 65 20 70 75 73 68 63 61 6c 6c 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆cedure pushcall *)    procedure ┆
0x033140…033160             70 6f 70 63 61 6c 6c 3b 0a 28 2a 20 77 6f 72 6b 73 20 6f 70 70 6f 73 69 74 65 20 6f 66 20 70 75   ┆popcall; (* works opposite of pu┆
0x033160…033180             73 68 63 61 6c 6c 20 2a 29 0a 0a 62 65 67 69 6e 0a 0a 63 61 6c 6c 69 6e 64 65 78 3a 3d 20 63 61   ┆shcall *)  begin  callindex:= ca┆
0x033180…0331a0             6c 6c 69 6e 64 65 78 20 2d 20 31 3b 0a 0a 77 69 74 68 20 63 61 6c 6c 73 20 5b 20 63 61 6c 6c 69   ┆llindex - 1;  with calls [ calli┆
0x0331a0…0331c0             6e 64 65 78 20 5d 20 64 6f 0a 62 65 67 69 6e 0a 61 72 67 6b 69 6e 64 20 20 20 20 20 20 3a 3d 20   ┆ndex ] do begin argkind      := ┆
0x0331c0…0331e0             63 61 6c 6c 6b 69 6e 64 3b 0a 63 75 72 66 6f 72 6d 61 6c 20 20 20 20 3a 3d 20 63 61 6c 6c 66 6f   ┆callkind; curformal    := callfo┆
0x0331e0…033200             72 6d 61 6c 3b 0a 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 3a 3d 20 63 61 6c 6c 6f 77 6e 65 72 3b   ┆rmal; arglist_owner:= callowner;┆
0x033200…033220 (13, 1, 5)  0a 61 66 74 65 72 5f 66 75 6e 63 63 61 6c 6c 3a 3d 20 63 61 6c 6c 5f 61 66 74 65 72 66 75 6e 63   ┆ after_funccall:= call_afterfunc┆
0x033220…033240             3b 0a 66 75 6e 63 74 65 6d 70 76 61 72 20 20 3a 3d 20 63 61 6c 6c 5f 66 75 6e 63 74 65 6d 70 3b   ┆; functempvar  := call_functemp;┆
0x033240…033260             0a 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 63 61 6c 6c 5f 63 6f 75 6e 74   ┆ count_processparam:= call_count┆
0x033260…033280             70 72 6f 63 65 73 73 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65   ┆process; end;  end; (* procedure┆
0x033280…0332a0             20 70 6f 70 63 61 6c 6c 20 2a 29 0a 0a 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20   ┆ popcall *)   (* procedures for ┆
0x0332a0…0332c0             63 72 65 61 74 69 6e 67 20 6e 65 77 20 6f 70 61 6e 64 2d 6e 6f 64 65 73 2c 20 77 68 65 74 68 65   ┆creating new opand-nodes, whethe┆
0x0332c0…0332e0             72 20 6f 70 65 72 61 74 6f 72 73 20 6f 72 20 6f 70 65 72 61 6e 64 73 20 2a 29 0a 0a 70 72 6f 63   ┆r operators or operands *)  proc┆
0x0332e0…033300             65 64 75 72 65 20 6f 70 65 72 20 28 6d 6f 64 65 3a 20 6f 70 6d 6f 64 65 73 3b 20 78 6f 70 63 6f   ┆edure oper (mode: opmodes; xopco┆
0x033300…033320             64 65 3a 20 63 6f 64 65 73 3b 20 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a   ┆de: codes; xtypename: nameptr); ┆
0x033320…033340             28 2a 20 69 6e 73 65 72 74 73 20 61 6e 20 6f 70 61 6e 64 6e 6f 64 65 20 61 73 20 75 6e 61 72 79   ┆(* inserts an opandnode as unary┆
0x033340…033360             20 6f 72 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 0a 76 61 72 0a 6f 6c 64 74   ┆ or binary operator *)  var oldt┆
0x033360…033380             6f 70 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 6d 6f 76 65 20 73 74   ┆op: opandptr;  begin  (* move st┆
0x033380…0333a0             61 63 6b 74 6f 70 20 74 6f 20 61 6e 6f 74 68 65 72 20 6f 70 61 6e 64 2c 20 61 6e 64 20 75 73 65   ┆acktop to another opand, and use┆
0x0333a0…0333c0             20 74 68 65 20 73 74 61 63 6b 74 6f 70 20 66 6f 72 20 74 68 65 20 6e 65 77 20 6f 6e 65 20 2a 29   ┆ the stacktop for the new one *)┆
0x0333c0…0333e0             0a 28 2a 20 74 68 69 73 20 6d 61 6b 65 73 20 69 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 27 69   ┆ (* this makes it possible to 'i┆
0x0333e0…033400             6e 73 65 72 74 27 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 74 68 65 20 6f 70 61 6e   ┆nsert' in the middle of the opan┆
0x033400…033420 (13, 1, 6)  64 2d 74 72 65 65 20 20 20 2a 29 0a 6f 6c 64 74 6f 70 3a 3d 20 61 6c 6c 6f 63 5f 6f 70 61 6e 64   ┆d-tree   *) oldtop:= alloc_opand┆
0x033420…033440             3b 0a 20 6f 6c 64 74 6f 70 20 5e 3a 3d 20 20 73 74 61 63 6b 74 6f 70 20 5e 3b 0a 0a 77 69 74 68   ┆;  oldtop ^:=  stacktop ^;  with┆
0x033440…033460             20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 20 20 28 2a 20 6e 65 77 20 6f 70 61 6e 64 20 6e 6f   ┆  stacktop ^ do  (* new opand no┆
0x033460…033480             64 65 20 2a 29 0a 62 65 67 69 6e 0a 0a 6f 70 63 6f 64 65 3a 3d 20 78 6f 70 63 6f 64 65 3b 0a 0a   ┆de *) begin  opcode:= xopcode;  ┆
0x033480…0334a0             69 66 20 6d 6f 64 65 20 3d 20 75 6e 61 72 79 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 65 66 74 20   ┆if mode = unary then begin left ┆
0x0334a0…0334c0             20 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 72 69 67 74 68 20 3a 3d 20 6f 6c 64 74 6f 70 3b 0a 6e   ┆ := nilopand; rigth := oldtop; n┆
0x0334c0…0334e0             65 78 74 20 20 3a 3d 20 6e 65 78 74 74 6f 70 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20   ┆ext  := nexttop; end else begin ┆
0x0334e0…033500             28 2a 20 62 69 6e 61 72 79 2a 29 0a 6c 65 66 74 20 20 3a 3d 20 6e 65 78 74 74 6f 70 3b 0a 72 69   ┆(* binary*) left  := nexttop; ri┆
0x033500…033520             67 74 68 20 3a 3d 20 6f 6c 64 74 6f 70 3b 0a 6e 65 78 74 20 20 3a 3d 20 20 6c 65 66 74 20 5e 20   ┆gth := oldtop; next  :=  left ^ ┆
0x033520…033540             2e 20 6e 65 78 74 3b 0a 0a 6e 65 78 74 74 6f 70 3a 3d 20 6e 65 78 74 3b 0a 0a 65 6e 64 3b 0a 0a   ┆. next;  nexttop:= next;  end;  ┆
0x033540…033560             6f 70 5f 6c 69 6e 65 6e 6f 20 20 3a 3d 20 30 3b 20 20 28 2a 20 64 75 6d 6d 79 20 2a 29 0a 6f 70   ┆op_lineno  := 0;  (* dummy *) op┆
0x033560…033580             5f 6e 61 6d 65 20 20 20 20 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 6f 70 5f 76 61 6c 75 65 20 20 20   ┆_name    := nilname; op_value   ┆
0x033580…0335a0             3a 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 6f 70 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 78 74 79 70   ┆:= nilstring; op_typename:= xtyp┆
0x0335a0…0335c0             65 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 28 6e 65 77 29 20 73 74 61 63 6b   ┆ename;  end; (* with (new) stack┆
0x0335c0…0335e0             74 6f 70 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 6f 70 65 72 20 2a   ┆top *)  end; (* procedure oper *┆
0x0335e0…033600             29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6e 65 77 6f 70 61 6e 64 20 28 78 63 6f 64 65 3a 20   ┆)    procedure newopand (xcode: ┆
0x033600…033620 (13, 1, 7)  63 6f 64 65 73 3b 20 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 28 2a 20 69   ┆codes; xtypename: nameptr); (* i┆
0x033620…033640             6e 73 65 72 74 20 61 6e 20 6f 70 65 72 61 6e 64 20 61 74 20 73 74 61 63 6b 74 6f 70 20 2a 29 0a   ┆nsert an operand at stacktop *) ┆
0x033640…033660             0a 76 61 72 0a 6f 6c 64 74 6f 70 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 69   ┆ var oldtop: opandptr;  begin  i┆
0x033660…033680             66 20 72 65 74 61 69 6e 5f 74 6f 70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 69 66 20 69 6e   ┆f retain_top then begin (* if in┆
0x033680…0336a0             73 65 72 74 69 6f 6e 20 69 6e 20 6d 69 64 64 6c 65 20 6f 66 20 6c 69 73 74 20 74 68 65 6e 20 64   ┆sertion in middle of list then d┆
0x0336a0…0336c0             6f 6e 27 74 20 27 6d 6f 76 65 27 20 73 74 61 63 6b 74 6f 70 20 2a 29 0a 6f 6c 64 74 6f 70 3a 3d   ┆on't 'move' stacktop *) oldtop:=┆
0x0336c0…0336e0             20 61 6c 6c 6f 63 5f 6f 70 61 6e 64 3b 0a 20 6f 6c 64 74 6f 70 20 5e 3a 3d 20 20 73 74 61 63 6b   ┆ alloc_opand;  oldtop ^:=  stack┆
0x0336e0…033700             74 6f 70 20 5e 3b 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 62 65 67 69 6e   ┆top ^; with  stacktop ^ do begin┆
0x033700…033720             0a 6f 70 5f 6c 69 6e 65 6e 6f 3a 3d 20 30 3b 0a 6f 70 5f 6e 61 6d 65 20 20 3a 3d 20 6e 69 6c 6e   ┆ op_lineno:= 0; op_name  := niln┆
0x033720…033740             61 6d 65 3b 0a 6f 70 5f 76 61 6c 75 65 20 3a 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 65 6e 64 3b   ┆ame; op_value := nilstring; end;┆
0x033740…033760             0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 6f 6c 64 74 6f 70 3a 3d 20 73 74 61 63 6b 74   ┆ end else begin  oldtop:= stackt┆
0x033760…033780             6f 70 3b 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 61 6c 6c 6f 63 5f 6f 70 61 6e 64 3b 0a 0a 65 6e 64   ┆op; stacktop:= alloc_opand;  end┆
0x033780…0337a0             3b 0a 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 20 20 28 2a 20 6e 65 77 20 6f   ┆;  with  stacktop ^ do  (* new o┆
0x0337a0…0337c0             70 61 6e 64 20 6e 6f 64 65 20 2a 29 0a 62 65 67 69 6e 0a 0a 6f 70 63 6f 64 65 20 20 20 20 20 3a   ┆pand node *) begin  opcode     :┆
0x0337c0…0337e0             3d 20 78 63 6f 64 65 3b 0a 6c 65 66 74 20 20 20 20 20 20 20 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b   ┆= xcode; left       := nilopand;┆
0x0337e0…033800             0a 72 69 67 74 68 20 20 20 20 20 20 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 6e 65 78 74 20 20 20   ┆ rigth      := nilopand; next   ┆
0x033800…033820 (13, 1, 8)  20 20 20 20 3a 3d 20 6f 6c 64 74 6f 70 3b 0a 6f 70 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 78 74 79   ┆    := oldtop; op_typename:= xty┆
0x033820…033840             70 65 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 0a 0a 6e 65 78 74 74 6f 70 3a 3d 20 6f 6c 64 74 6f 70 3b   ┆pename;  end;  nexttop:= oldtop;┆
0x033840…033860             0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 6e 65 77 6f 70 61 6e 64 20 2a 29 0a   ┆  end; (* procedure newopand *) ┆
0x033860…033880             0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 74 61 6b 65 5f 73 74 61 63 6b 74 6f 70 20 3a 20 6f 70 61 6e   ┆   function take_stacktop : opan┆
0x033880…0338a0             64 70 74 72 3b 0a 28 2a 20 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 74 6f 70 2d 65 78 70 72 65   ┆dptr; (* used when the top-expre┆
0x0338a0…0338c0             73 73 69 6f 6e 20 69 73 20 74 6f 20 62 65 20 73 61 76 65 64 20 61 20 77 68 69 6c 65 20 2a 29 0a   ┆ssion is to be saved a while *) ┆
0x0338c0…0338e0             62 65 67 69 6e 0a 74 61 6b 65 5f 73 74 61 63 6b 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 3b 0a   ┆begin take_stacktop:= stacktop; ┆
0x0338e0…033900             73 74 61 63 6b 74 6f 70 20 20 20 20 20 3a 3d 20 6e 65 78 74 74 6f 70 3b 0a 6e 65 78 74 74 6f 70   ┆stacktop     := nexttop; nexttop┆
0x033900…033920             20 20 20 20 20 20 3a 3d 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 2e 20 6e 65 78 74 3b 0a 65 6e 64   ┆      :=  stacktop ^ . next; end┆
0x033920…033940             3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 73 65 72 74 5f 66 75 6e 63 74 79 70 65 20 28   ┆;    procedure insert_functype (┆
0x033940…033960             78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20   ┆xtypename: nameptr); begin with ┆
0x033960…033980             20 66 75 6e 63 74 65 6d 70 76 61 72 20 5e 20 64 6f 0a 74 79 70 65 6e 61 6d 65 3a 3d 20 78 74 79   ┆ functempvar ^ do typename:= xty┆
0x033980…0339a0             70 65 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 72 65 70 61 72   ┆pename; end;    procedure prepar┆
0x0339a0…0339c0             65 5f 63 61 6c 6c 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 75 73 65   ┆e_call (opand: opandptr); (* use┆
0x0339c0…0339e0             64 20 74 6f 20 70 72 65 70 61 72 65 20 61 20 72 6f 75 74 69 6e 65 2d 63 61 6c 6c 20 2a 29 0a 28   ┆d to prepare a routine-call *) (┆
0x0339e0…033a00             2a 20 6e 62 3a 20 27 70 75 73 68 63 61 6c 6c 27 20 6d 75 73 74 20 68 61 76 65 20 62 65 65 6e 20   ┆* nb: 'pushcall' must have been ┆
0x033a00…033a20 (13, 1, 9)  63 61 6c 6c 65 64 20 70 72 65 76 69 6f 75 73 6c 79 20 2a 29 0a 0a 76 61 72 0a 73 61 76 65 64 5f   ┆called previously *)  var saved_┆
0x033a20…033a40             73 74 61 63 6b 74 6f 70 20 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 73 61 76 65 64 5f 6e 65 78 74 74   ┆stacktop : opandptr; saved_nextt┆
0x033a40…033a60             6f 70 20 20 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 77 69 74 68 20 20 6f 70   ┆op  : opandptr;  begin  with  op┆
0x033a60…033a80             61 6e 64 20 5e 20 64 6f 20 20 20 28 2a 20 6f 70 61 6e 64 20 63 6f 6e 74 61 69 6e 73 20 69 64 2c   ┆and ^ do   (* opand contains id,┆
0x033a80…033aa0             20 68 6f 6c 64 69 6e 67 20 72 6f 75 74 69 6e 65 20 2a 29 0a 77 69 74 68 20 20 6f 70 5f 6e 61 6d   ┆ holding routine *) with  op_nam┆
0x033aa0…033ac0             65 20 5e 20 64 6f 20 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 72 6f 75 74 69 6e 65 20   ┆e ^ do   (* namenode of routine ┆
0x033ac0…033ae0             2a 29 0a 0a 62 65 67 69 6e 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 67 6c 6f 62 61 6c 20 76   ┆*)  begin (* initialize global v┆
0x033ae0…033b00             61 72 69 61 62 6c 65 73 2c 20 64 65 73 63 72 69 62 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 74   ┆ariables, describing arguments t┆
0x033b00…033b20             6f 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 2a 29 0a 0a 61 72 67 6b 69 6e 64 20 20 20 20 3a 3d   ┆o this routine *)  argkind    :=┆
0x033b20…033b40             20 63 61 72 67 75 6d 65 6e 74 3b 0a 63 75 72 66 6f 72 6d 61 6c 20 20 3a 3d 20 70 61 72 61 6d 73   ┆ cargument; curformal  := params┆
0x033b40…033b60             3b 20 20 20 20 20 28 2a 20 66 69 72 73 74 20 6f 66 20 66 6f 72 6d 61 6c 20 6c 69 73 74 20 2a 29   ┆;     (* first of formal list *)┆
0x033b60…033b80             0a 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 3a 3d 20 6f 70 5f 6e 61 6d 65 3b 20 20 20 20 28 2a 20   ┆ arglist_owner:= op_name;    (* ┆
0x033b80…033ba0             73 65 74 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 61 73 20 6f 77 6e 65 72 20 6f 66 20 66 6f 72   ┆set this routine as owner of for┆
0x033ba0…033bc0             6d 61 6c 20 6c 69 73 74 20 2a 29 0a 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 28 2a 20 6f 66 20 72   ┆mal list *)  if namekind (* of r┆
0x033bc0…033be0             6f 75 74 69 6e 65 20 2a 29 20 3d 20 63 66 75 6e 63 74 69 6f 6e 20 74 68 65 6e 0a 62 65 67 69 6e   ┆outine *) = cfunction then begin┆
0x033be0…033c00             0a 28 2a 20 73 61 76 65 20 73 74 61 63 6b 74 6f 70 20 65 74 63 20 61 6e 64 20 72 65 73 74 6f 72   ┆ (* save stacktop etc and restor┆
0x033c00…033c20 (13, 1, 10) 65 20 6c 61 74 65 72 20 2a 29 0a 28 2a 20 73 69 6d 75 6c 61 74 65 20 74 68 61 74 20 27 6f 70 61   ┆e later *) (* simulate that 'opa┆
0x033c20…033c40             6e 64 27 20 69 73 20 73 74 61 63 6b 74 6f 70 20 2a 29 0a 73 61 76 65 64 5f 73 74 61 63 6b 74 6f   ┆nd' is stacktop *) saved_stackto┆
0x033c40…033c60             70 3a 3d 20 73 74 61 63 6b 74 6f 70 3b 0a 73 61 76 65 64 5f 6e 65 78 74 74 6f 70 20 3a 3d 20 6e   ┆p:= stacktop; saved_nexttop := n┆
0x033c60…033c80             65 78 74 74 6f 70 3b 0a 73 74 61 63 6b 74 6f 70 20 20 20 20 20 20 3a 3d 20 6f 70 61 6e 64 3b 0a   ┆exttop; stacktop      := opand; ┆
0x033c80…033ca0             6e 65 78 74 74 6f 70 20 20 20 20 20 20 20 3a 3d 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 2e 20 6e   ┆nexttop       :=  stacktop ^ . n┆
0x033ca0…033cc0             65 78 74 3b 0a 0a 72 65 74 61 69 6e 5f 74 6f 70 3a 3d 20 74 72 75 65 3b 0a 0a 28 2a 20 72 65 73   ┆ext;  retain_top:= true;  (* res┆
0x033cc0…033ce0             65 72 76 65 20 74 65 6d 70 20 6e 61 6d 65 2c 20 66 6f 72 20 69 64 65 6e 74 69 66 79 69 6e 67 20   ┆erve temp name, for identifying ┆
0x033ce0…033d00             74 65 6d 70 2d 72 65 74 75 72 6e 2d 76 61 6c 75 65 20 2a 29 0a 66 75 6e 63 74 65 6d 70 76 61 72   ┆temp-return-value *) functempvar┆
0x033d00…033d20             3a 3d 20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3b 0a 69 6e 73 65 72 74 5f 66 75 6e 63 74 79   ┆:= alloc_namenode; insert_functy┆
0x033d20…033d40             70 65 20 28 74 79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 2a 29 20 29   ┆pe (typename (* of function *) )┆
0x033d40…033d60             3b 0a 0a 28 2a 20 69 6e 73 65 72 74 20 6f 70 61 6e 64 2c 20 70 6f 69 6e 74 69 6e 67 20 61 74 20   ┆;  (* insert opand, pointing at ┆
0x033d60…033d80             74 68 69 73 20 74 65 6d 70 2d 6e 61 6d 65 20 2a 29 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63   ┆this temp-name *) oper (unary, c┆
0x033d80…033da0             66 75 6e 63 74 72 61 69 6c 65 72 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 69 72 72 65 6c 6c 20 74   ┆functrailer, nilname (* irrell t┆
0x033da0…033dc0             79 70 65 6e 61 6d 65 20 2a 29 20 29 3b 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64   ┆ypename *) ); with  stacktop ^ d┆
0x033dc0…033de0             6f 0a 6f 70 5f 6e 61 6d 65 3a 3d 20 66 75 6e 63 74 65 6d 70 76 61 72 3b 0a 0a 28 2a 20 69 6e 73   ┆o op_name:= functempvar;  (* ins┆
0x033de0…033e00             65 72 74 20 6f 70 65 72 61 6e 64 2c 20 74 6f 20 62 65 20 75 73 65 64 20 61 73 20 61 63 74 75 61   ┆ert operand, to be used as actua┆
0x033e00…033e20 (13, 1, 11) 6c 20 61 72 67 75 6d 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65 74 75 72 6e 2d 76 61 6c 75 65 20   ┆l argument for the return-value ┆
0x033e20…033e40             2a 29 0a 6e 65 77 6f 70 61 6e 64 20 28 63 66 75 6e 63 74 65 6d 70 2c 20 6e 69 6c 6e 61 6d 65 20   ┆*) newopand (cfunctemp, nilname ┆
0x033e40…033e60             28 2a 20 69 72 72 65 6c 6c 20 74 79 70 65 6e 61 6d 65 20 2a 29 20 29 3b 0a 77 69 74 68 20 20 73   ┆(* irrell typename *) ); with  s┆
0x033e60…033e80             74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 6f 70 5f 6e 61 6d 65 3a 3d 20 66 75 6e 63 74 65 6d 70 76   ┆tacktop ^ do op_name:= functempv┆
0x033e80…033ea0             61 72 3b 0a 0a 28 2a 20 62 69 6e 64 20 74 68 69 73 20 61 63 74 75 61 6c 2d 61 72 67 75 6d 65 6e   ┆ar;  (* bind this actual-argumen┆
0x033ea0…033ec0             74 20 6f 6e 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 2a 29 0a 28 2a 20 2e 2e 2e 20 73 65   ┆t onto the function *) (* ... se┆
0x033ec0…033ee0             65 20 61 6c 73 6f 20 27 61 63 74 70 61 72 61 6d 27 20 2e 2e 2e 20 2a 29 0a 6f 70 65 72 20 28 62   ┆e also 'actparam' ... *) oper (b┆
0x033ee0…033f00             69 6e 61 72 79 2c 20 61 72 67 6b 69 6e 64 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 69 72 72 65 6c   ┆inary, argkind, nilname (* irrel┆
0x033f00…033f20             6c 20 74 79 70 65 6e 61 6d 65 20 2a 29 20 29 3b 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20   ┆l typename *) ); with  stacktop ┆
0x033f20…033f40             5e 20 64 6f 0a 6f 70 5f 6e 61 6d 65 3a 3d 20 63 75 72 66 6f 72 6d 61 6c 3b 20 20 28 2a 20 6c 65   ┆^ do op_name:= curformal;  (* le┆
0x033f40…033f60             74 20 6f 70 6e 61 6d 65 20 70 6f 69 6e 74 20 61 74 20 66 69 72 73 74 20 66 6f 72 6d 61 6c 20 6e   ┆t opname point at first formal n┆
0x033f60…033f80             61 6d 65 2c 20 69 2e 65 2e 20 27 66 75 6e 63 76 61 6c 27 20 2a 29 0a 0a 69 66 20 63 6f 6d 70 69   ┆ame, i.e. 'funcval' *)  if compi┆
0x033f80…033fa0             6c 65 72 74 65 73 74 20 74 68 65 6e 0a 69 66 20 28 73 74 61 63 6b 74 6f 70 20 3c 3e 20 6f 70 61   ┆lertest then if (stacktop <> opa┆
0x033fa0…033fc0             6e 64 29 20 6f 72 20 28 6e 65 78 74 74 6f 70 20 3c 3e 20 20 6f 70 61 6e 64 20 5e 20 2e 20 6e 65   ┆nd) or (nexttop <>  opand ^ . ne┆
0x033fc0…033fe0             78 74 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 28 73 65 67 28 73 74 61 63 6b 74 6f   ┆xt) then begin write(seg(stackto┆
0x033fe0…034000             70 29 2c 20 6f 66 73 28 73 74 61 63 6b 74 6f 70 29 2c 0a 20 20 20 20 20 20 73 65 67 28 6f 70 61   ┆p), ofs(stacktop),       seg(opa┆
0x034000…034020 (13, 1, 12) 6e 64 29 2c 20 20 20 20 6f 66 73 28 6f 70 61 6e 64 29 2c 0a 20 20 20 20 20 20 73 65 67 28 6e 65   ┆nd),    ofs(opand),       seg(ne┆
0x034020…034040             78 74 74 6f 70 29 2c 20 20 6f 66 73 28 6e 65 78 74 74 6f 70 29 2c 0a 20 20 20 20 20 20 73 65 67   ┆xttop),  ofs(nexttop),       seg┆
0x034040…034060             28 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 2c 6f 66 73 28 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 29 3b   ┆(opand^.next),ofs(opand^.next));┆
0x034060…034080             0a 62 72 65 61 6b 3b 0a 65 6e 64 3b 0a 0a 72 65 74 61 69 6e 5f 74 6f 70 3a 3d 20 66 61 6c 73 65   ┆ break; end;  retain_top:= false┆
0x034080…0340a0             3b 0a 0a 73 74 61 63 6b 74 6f 70 20 20 20 20 20 20 3a 3d 20 73 61 76 65 64 5f 73 74 61 63 6b 74   ┆;  stacktop      := saved_stackt┆
0x0340a0…0340c0             6f 70 3b 0a 6e 65 78 74 74 6f 70 20 20 20 20 20 20 20 3a 3d 20 73 61 76 65 64 5f 6e 65 78 74 74   ┆op; nexttop       := saved_nextt┆
0x0340c0…0340e0             6f 70 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 6e 61 6d 65 6e 6f 64 65 20   ┆op; end;  end; (* with namenode ┆
0x0340e0…034100             6f 66 20 72 6f 75 74 69 6e 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65   ┆of routine *)  end; (* procedure┆
0x034100…034120             20 70 72 65 70 61 72 65 2d 63 61 6c 6c 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65   ┆ prepare-call *)    procedure te┆
0x034120…034140             72 6d 69 6e 61 74 65 5f 63 61 6c 6c 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a   ┆rminate_call (opand: opandptr); ┆
0x034140…034160             28 2a 20 75 73 65 64 20 62 79 20 27 65 6e 64 61 63 74 75 61 6c 27 20 74 6f 20 74 65 73 74 20 74   ┆(* used by 'endactual' to test t┆
0x034160…034180             6f 74 61 6c 20 6d 61 74 63 68 20 6f 66 20 66 6f 72 6d 61 6c 20 6c 69 73 74 73 20 65 74 63 20 2a   ┆otal match of formal lists etc *┆
0x034180…0341a0             29 0a 0a 6c 61 62 65 6c 20 31 30 3b 0a 0a 76 61 72 0a 73 61 76 65 64 5f 73 74 61 63 6b 74 6f 70   ┆)  label 10;  var saved_stacktop┆
0x0341a0…0341c0             20 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 73 61 76 65 64 5f 6e 65 78 74 74 6f 70 20 20 3a 20 6f 70   ┆ : opandptr; saved_nexttop  : op┆
0x0341c0…0341e0             61 6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 73 61 76 65 20 73 74 61 63 6b 74 6f 70   ┆andptr;  begin  (* save stacktop┆
0x0341e0…034200             20 65 74 63 20 61 6e 64 20 72 65 73 74 6f 72 65 20 6c 61 74 65 72 20 2a 29 0a 28 2a 20 73 69 6d   ┆ etc and restore later *) (* sim┆
0x034200…034220 (13, 1, 13) 75 6c 61 74 65 20 74 68 61 74 20 27 6f 70 61 6e 64 27 20 69 73 20 73 74 61 63 6b 74 6f 70 20 20   ┆ulate that 'opand' is stacktop  ┆
0x034220…034240             20 2a 29 0a 73 61 76 65 64 5f 73 74 61 63 6b 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 3b 0a 73   ┆ *) saved_stacktop:= stacktop; s┆
0x034240…034260             61 76 65 64 5f 6e 65 78 74 74 6f 70 20 3a 3d 20 6e 65 78 74 74 6f 70 3b 0a 73 74 61 63 6b 74 6f   ┆aved_nexttop := nexttop; stackto┆
0x034260…034280             70 20 20 20 20 20 20 3a 3d 20 6f 70 61 6e 64 3b 0a 6e 65 78 74 74 6f 70 20 20 20 20 20 20 20 3a   ┆p      := opand; nexttop       :┆
0x034280…0342a0             3d 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 2e 20 6e 65 78 74 3b 0a 0a 63 61 73 65 20 61 72 67 6b   ┆=  stacktop ^ . next;  case argk┆
0x0342a0…0342c0             69 6e 64 20 6f 66 0a 0a 63 73 74 72 75 63 72 65 63 6f 72 64 2c 0a 63 61 72 67 75 6d 65 6e 74 3a   ┆ind of  cstrucrecord, cargument:┆
0x0342c0…0342e0             0a 62 65 67 69 6e 0a 28 2a 20 74 65 73 74 20 74 68 61 74 20 61 6c 6c 20 72 65 63 66 69 65 6c 64   ┆ begin (* test that all recfield┆
0x0342e0…034300             73 20 28 72 65 73 70 65 63 74 69 76 65 6c 79 20 61 6c 6c 20 66 6f 72 6d 61 6c 73 29 20 68 61 76   ┆s (respectively all formals) hav┆
0x034300…034320             65 20 62 65 65 6e 20 6d 61 74 63 68 65 64 20 2a 29 0a 77 68 69 6c 65 20 63 75 72 66 6f 72 6d 61   ┆e been matched *) while curforma┆
0x034320…034340             6c 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 20 63 75 72 66 6f 72 6d 61 6c 20   ┆l <> nilname do with  curformal ┆
0x034340…034360             5e 20 64 6f 0a 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 28 2a 20 6f 66 20 63 75 72 66 6f 72 6d   ┆^ do case namekind (* of curform┆
0x034360…034380             61 6c 20 2a 29 20 6f 66 0a 63 72 65 63 66 69 65 6c 64 2c 0a 63 76 61 72 70 2c 0a 63 76 61 6c 75   ┆al *) of crecfield, cvarp, cvalu┆
0x034380…0343a0             65 70 3a 0a 62 65 67 69 6e 0a 65 72 72 6f 72 73 70 69 78 3a 3d 20 61 72 67 6c 69 73 74 5f 6f 77   ┆ep: begin errorspix:= arglist_ow┆
0x0343a0…0343c0             6e 65 72 5e 2e 73 70 69 78 3b 0a 65 72 72 6f 72 20 28 74 6f 6f 5f 66 65 77 5f 70 61 72 61 6d 65   ┆ner^.spix; error (too_few_parame┆
0x0343c0…0343e0             74 65 72 73 29 3b 0a 67 6f 74 6f 20 31 30 3b 0a 65 6e 64 3b 0a 63 66 75 6e 63 76 61 6c 2c 0a 63   ┆ters); goto 10; end; cfuncval, c┆
0x0343e0…034400             75 6e 64 65 63 6c 61 72 65 64 2c 20 20 28 2a 20 75 6e 64 65 63 6c 61 72 65 64 20 74 79 70 65 6e   ┆undeclared,  (* undeclared typen┆
0x034400…034420 (13, 1, 14) 61 6d 65 20 2a 29 0a 63 73 63 61 6c 61 72 65 6c 65 6d 2c 0a 63 74 79 70 65 3a 0a 63 75 72 66 6f   ┆ame *) cscalarelem, ctype: curfo┆
0x034420…034440             72 6d 61 6c 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 20 20 28 2a 20 69 2e 65 2e 20 73 6b 69 70 20 69   ┆rmal:= nextname;  (* i.e. skip i┆
0x034440…034460             6e 20 66 6f 72 6d 61 6c 2d 6c 69 73 74 20 2a 29 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 69 6c 65   ┆n formal-list *) else if compile┆
0x034460…034480             72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f 6e   ┆rtest then comp_error (unknown_n┆
0x034480…0344a0             61 6d 65 6b 69 6e 64 29 3b 0a 65 6e 64 3b 0a 0a 31 30 3a 3b 0a 65 6e 64 3b 20 28 2a 20 61 72 67   ┆amekind); end;  10:; end; (* arg┆
0x0344a0…0344c0             6b 69 6e 64 20 3d 20 73 74 72 75 63 72 65 63 6f 72 64 20 6f 72 20 61 72 67 75 6d 65 6e 74 20 2a   ┆kind = strucrecord or argument *┆
0x0344c0…0344e0             29 0a 0a 65 6c 73 65 3b 20 28 2a 20 6e 6f 20 63 68 65 63 6b 20 2a 29 0a 65 6e 64 3b 20 28 2a 20   ┆)  else; (* no check *) end; (* ┆
0x0344e0…034500             63 61 73 65 20 61 72 67 6b 69 6e 64 20 2a 29 0a 0a 28 2a 20 69 6e 73 65 72 74 20 6f 70 61 6e 64   ┆case argkind *)  (* insert opand┆
0x034500…034520             73 2c 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 65 20 70 72 6f 70 65 72 20 65 6e 64 2d 6c 69 73   ┆s, describing the proper end-lis┆
0x034520…034540             74 20 2a 29 0a 63 61 73 65 20 61 72 67 6b 69 6e 64 20 6f 66 0a 0a 63 69 6e 64 65 78 3a 20 3b 20   ┆t *) case argkind of  cindex: ; ┆
0x034540…034560             28 2a 20 6e 6f 74 68 69 6e 67 20 2a 29 0a 0a 63 73 74 72 75 63 61 72 72 61 79 2c 0a 63 73 74 72   ┆(* nothing *)  cstrucarray, cstr┆
0x034560…034580             75 63 72 65 63 6f 72 64 3a 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 65 6e 64 73 74 72 75 63   ┆ucrecord: oper (unary, cendstruc┆
0x034580…0345a0             2c 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 29 3b 0a 0a 63 61 72 67 75 6d 65 6e 74 3a 0a 77 69   ┆, arglist_owner);  cargument: wi┆
0x0345a0…0345c0             74 68 20 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 20 5e 20 64 6f 0a 63 61 73 65 20 6e 61 6d 65   ┆th  arglist_owner ^ do case name┆
0x0345c0…0345e0             6b 69 6e 64 20 6f 66 0a 63 65 78 74 70 72 6f 63 65 73 73 3a 0a 6f 70 65 72 28 75 6e 61 72 79 2c   ┆kind of cextprocess: oper(unary,┆
0x0345e0…034600             20 63 63 61 6c 6c 70 72 6f 63 65 73 73 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 6e 6f 20 74 79 70   ┆ ccallprocess, nilname (* no typ┆
0x034600…034620 (13, 1, 15) 65 20 2a 29 29 3b 0a 63 70 72 6f 63 65 73 73 3a 0a 62 65 67 69 6e 0a 6f 70 65 72 20 28 75 6e 61   ┆e *)); cprocess: begin oper (una┆
0x034620…034640             72 79 2c 20 63 63 61 6c 6c 70 72 6f 63 65 73 73 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 6e 6f 20   ┆ry, ccallprocess, nilname (* no ┆
0x034640…034660             74 79 70 65 20 2a 29 20 29 3b 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 6f   ┆type *) ); with  stacktop ^ do o┆
0x034660…034680             70 5f 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d 65 20 28 2a 20 6f 66 20 70 72 6f 63 65 73 73 20   ┆p_name:= nextname (* of process ┆
0x034680…0346a0             2a 29 3b 20 20 28 2a 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20 73 6f 6e 76 61 72 2d 6e 61 6d 65   ┆*);  (* remember the sonvar-name┆
0x0346a0…0346c0             2c 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65 20 2a 29 0a 65 6e 64 3b 0a 63 70 72 6f 63 65 64 75   ┆, for later use *) end; cprocedu┆
0x0346c0…0346e0             72 65 2c 0a 63 66 75 6e 63 74 69 6f 6e 3a 0a 62 65 67 69 6e 0a 28 2a 20 66 69 72 73 74 20 69 6e   ┆re, cfunction: begin (* first in┆
0x0346e0…034700             73 65 72 74 20 6f 70 65 72 61 74 6f 72 73 20 66 6f 72 20 6c 61 74 65 72 20 63 6f 75 6e 74 69 6e   ┆sert operators for later countin┆
0x034700…034720             67 20 69 6e 20 6f 70 61 6e 64 2d 73 74 61 63 6b 20 2a 29 0a 77 68 69 6c 65 20 63 6f 75 6e 74 5f   ┆g in opand-stack *) while count_┆
0x034720…034740             70 72 6f 63 65 73 73 70 61 72 61 6d 20 3e 20 30 20 64 6f 0a 62 65 67 69 6e 0a 63 6f 75 6e 74 5f   ┆processparam > 0 do begin count_┆
0x034740…034760             70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61   ┆processparam:= count_processpara┆
0x034760…034780             6d 20 2d 20 31 3b 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 65 6e 64 70 72 6f 63 65 73 73 70   ┆m - 1; oper (unary, cendprocessp┆
0x034780…0347a0             61 72 61 6d 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 69 72 72 65 6c 6c 20 74 79 70 65 6e 61 6d 65   ┆aram, nilname (* irrell typename┆
0x0347a0…0347c0             20 2a 29 20 29 3b 0a 65 6e 64 3b 0a 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 28 2a 20 6f 66 20   ┆ *) ); end; case namekind (* of ┆
0x0347c0…0347e0             61 72 67 6c 69 73 74 2d 6f 77 6e 65 72 20 2a 29 20 6f 66 0a 63 70 72 6f 63 65 64 75 72 65 3a 0a   ┆arglist-owner *) of cprocedure: ┆
0x0347e0…034800             6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 65 6e 64 70 72 6f 63 2c 20 6e 69 6c 6e 61 6d 65 20 28   ┆oper (unary, cendproc, nilname (┆
0x034800…034820 (14, 0, 1)  2a 20 69 72 72 65 6c 6c 20 74 79 70 65 6e 61 6d 65 20 2a 29 20 29 3b 0a 63 66 75 6e 63 74 69 6f   ┆* irrell typename *) ); cfunctio┆
0x034820…034840             6e 3a 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 66 75 6e 63 74 65 6d 70 76 61 72 20 5e 20 64 6f 20   ┆n: begin with  functempvar ^ do ┆
0x034840…034860             20 28 2a 20 6e 61 6d 65 6e 6f 64 65 2c 20 63 6f 6e 74 61 69 6e 69 6e 67 20 66 75 6e 63 74 69 6f   ┆ (* namenode, containing functio┆
0x034860…034880             6e 2d 74 79 70 65 20 2a 29 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 66 63 61 6c 6c 2c 20 74   ┆n-type *) oper (unary, cfcall, t┆
0x034880…0348a0             79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 66 75 6e 63 74 69 6f 6e 2d 74 79 70 65 20 2a 29 20 29   ┆ypename (* of function-type *) )┆
0x0348a0…0348c0             3b 0a 77 69 74 68 20 63 61 6c 6c 73 20 5b 20 63 61 6c 6c 69 6e 64 65 78 20 2d 20 31 20 5d 20 64   ┆; with calls [ callindex - 1 ] d┆
0x0348c0…0348e0             6f 20 20 28 2a 20 69 2e 65 2e 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 76 61 6c 75 65 20 74   ┆o  (* i.e. determine the value t┆
0x0348e0…034900             6f 20 62 65 20 75 6e 73 74 61 63 6b 65 64 20 2a 29 0a 63 61 6c 6c 5f 61 66 74 65 72 66 75 6e 63   ┆o be unstacked *) call_afterfunc┆
0x034900…034920             3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 28 2a 20 6e 6f 74 20 70 6f 73 73 69 62   ┆:= true; end; else (* not possib┆
0x034920…034940             6c 65 20 2a 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 70 72 6f 63 65 64 75 72 65 20 6f 72   ┆le *); end; (* case procedure or┆
0x034940…034960             20 66 75 6e 63 74 69 6f 6e 20 2a 29 0a 65 6e 64 3b 0a 65 6c 73 65 3b 0a 65 6e 64 3b 20 28 2a 20   ┆ function *) end; else; end; (* ┆
0x034960…034980             63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 2a 29 0a 0a 63 65 72 72 6f 72 61 72 67 3a 20 3b 20 28   ┆case namekind *)  cerrorarg: ; (┆
0x034980…0349a0             2a 20 64 6f 6e 27 74 20 63 61 72 65 20 61 6e 79 77 61 79 20 2a 29 0a 0a 0a 65 6c 73 65 0a 69 66   ┆* don't care anyway *)   else if┆
0x0349a0…0349c0             20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75   ┆ compilertest then comp_error (u┆
0x0349c0…0349e0             6e 6b 6e 6f 77 6e 5f 61 72 67 6b 69 6e 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 61 72   ┆nknown_argkind); end; (* case ar┆
0x0349e0…034a00             67 6b 69 6e 64 20 2a 29 0a 0a 28 2a 20 75 6e 73 74 61 63 6b 20 6e 65 73 74 65 64 20 63 61 6c 6c   ┆gkind *)  (* unstack nested call┆
0x034a00…034a20 (14, 0, 2)  20 2a 29 0a 70 6f 70 63 61 6c 6c 3b 0a 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68   ┆ *) popcall;  if compilertest th┆
0x034a20…034a40             65 6e 0a 69 66 20 28 6f 70 61 6e 64 20 3c 3e 20 73 74 61 63 6b 74 6f 70 29 20 6f 72 20 28 6e 65   ┆en if (opand <> stacktop) or (ne┆
0x034a40…034a60             78 74 74 6f 70 20 3c 3e 20 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 20 74 68 65 6e 0a 62 65 67 69 6e   ┆xttop <> opand^.next) then begin┆
0x034a60…034a80             0a 77 72 69 74 65 28 73 65 67 28 73 74 61 63 6b 74 6f 70 29 2c 20 6f 66 73 28 73 74 61 63 6b 74   ┆ write(seg(stacktop), ofs(stackt┆
0x034a80…034aa0             6f 70 29 2c 0a 20 20 20 20 20 20 73 65 67 28 6f 70 61 6e 64 29 2c 20 20 20 20 6f 66 73 28 6f 70   ┆op),       seg(opand),    ofs(op┆
0x034aa0…034ac0             61 6e 64 29 2c 0a 20 20 20 20 20 20 73 65 67 28 6e 65 78 74 74 6f 70 29 2c 20 20 6f 66 73 28 6e   ┆and),       seg(nexttop),  ofs(n┆
0x034ac0…034ae0             65 78 74 74 6f 70 29 2c 0a 20 20 20 20 20 20 73 65 67 28 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 2c   ┆exttop),       seg(opand^.next),┆
0x034ae0…034b00             6f 66 73 28 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 29 3b 0a 62 72 65 61 6b 3b 0a 65 6e 64 3b 0a 28   ┆ofs(opand^.next)); break; end; (┆
0x034b00…034b20             2a 20 72 65 73 74 6f 72 65 20 74 68 65 72 65 61 6c 20 73 74 61 63 6b 74 6f 70 20 61 6e 64 20 6e   ┆* restore thereal stacktop and n┆
0x034b20…034b40             65 78 74 74 6f 70 20 2a 29 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 73 61 76 65 64 5f 73 74 61 63 6b   ┆exttop *) stacktop:= saved_stack┆
0x034b40…034b60             74 6f 70 3b 0a 6e 65 78 74 74 6f 70 20 3a 3d 20 73 61 76 65 64 5f 6e 65 78 74 74 6f 70 3b 0a 0a   ┆top; nexttop := saved_nexttop;  ┆
0x034b60…034b80             65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 72 6d 69 6e 61 74 65 2d 63 61 6c 6c   ┆end; (* procedure terminate-call┆
0x034b80…034ba0             20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 72 6d 69 6e 61 74 65 5f 66 75 6e 63 63   ┆ *)    procedure terminate_funcc┆
0x034ba0…034bc0             61 6c 6c 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 65 6e 73 75 72 65   ┆all (opand: opandptr); (* ensure┆
0x034bc0…034be0             73 20 74 68 61 74 20 74 68 65 20 27 65 6e 64 66 75 6e 63 63 61 6c 6c 27 20 69 73 20 65 6d 69 74   ┆s that the 'endfunccall' is emit┆
0x034be0…034c00             74 65 64 20 28 61 73 20 6c 61 74 65 20 61 73 20 70 6f 73 73 69 62 6c 65 29 20 61 66 74 65 72 20   ┆ted (as late as possible) after ┆
0x034c00…034c20 (14, 0, 3)  61 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20 2a 29 0a 0a 76 61 72 0a 73 61 76 65 64 5f 73 74   ┆a function call *)  var saved_st┆
0x034c20…034c40             61 63 6b 74 6f 70 20 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 73 61 76 65 64 5f 6e 65 78 74 74 6f 70   ┆acktop : opandptr; saved_nexttop┆
0x034c40…034c60             20 20 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 61 66 74 65 72 5f 66 75   ┆  : opandptr;  begin if after_fu┆
0x034c60…034c80             6e 63 63 61 6c 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 73 61 76 65 20 73 74 61 63 6b 74   ┆nccall then begin (* save stackt┆
0x034c80…034ca0             6f 70 20 65 74 63 20 61 6e 64 20 72 65 73 74 6f 72 65 20 6c 61 74 65 72 20 2a 29 0a 28 2a 20 73   ┆op etc and restore later *) (* s┆
0x034ca0…034cc0             69 6d 75 6c 61 74 65 20 74 68 61 74 20 27 6f 70 61 6e 64 27 20 69 73 20 73 74 61 63 6b 74 6f 70   ┆imulate that 'opand' is stacktop┆
0x034cc0…034ce0             20 20 20 2a 29 0a 73 61 76 65 64 5f 73 74 61 63 6b 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 3b   ┆   *) saved_stacktop:= stacktop;┆
0x034ce0…034d00             0a 73 61 76 65 64 5f 6e 65 78 74 74 6f 70 20 3a 3d 20 6e 65 78 74 74 6f 70 3b 0a 73 74 61 63 6b   ┆ saved_nexttop := nexttop; stack┆
0x034d00…034d20             74 6f 70 20 20 20 20 20 20 3a 3d 20 6f 70 61 6e 64 3b 0a 6e 65 78 74 74 6f 70 20 20 20 20 20 20   ┆top      := opand; nexttop      ┆
0x034d20…034d40             20 3a 3d 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 2e 20 6e 65 78 74 3b 0a 77 69 74 68 20 20 73 74   ┆ :=  stacktop ^ . next; with  st┆
0x034d40…034d60             61 63 6b 74 6f 70 20 5e 20 64 6f 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 65 6e 64 76 61 72   ┆acktop ^ do oper (unary, cendvar┆
0x034d60…034d80             69 61 62 6c 65 2c 20 6f 70 5f 74 79 70 65 6e 61 6d 65 20 28 2a 20 63 6f 6e 74 69 6e 75 65 20 77   ┆iable, op_typename (* continue w┆
0x034d80…034da0             69 74 68 20 6f 70 2d 74 79 70 65 20 2a 29 20 29 3b 0a 28 2a 20 75 6e 73 74 61 63 6b 20 66 72 6f   ┆ith op-type *) ); (* unstack fro┆
0x034da0…034dc0             6d 20 63 61 6c 6c 2d 73 74 61 63 6b 20 2a 29 0a 61 66 74 65 72 5f 66 75 6e 63 63 61 6c 6c 3a 3d   ┆m call-stack *) after_funccall:=┆
0x034dc0…034de0             20 66 61 6c 73 65 3b 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 69 66 20   ┆ false; if compilertest then if ┆
0x034de0…034e00             28 6f 70 61 6e 64 20 3c 3e 20 73 74 61 63 6b 74 6f 70 29 20 6f 72 20 28 6e 65 78 74 74 6f 70 20   ┆(opand <> stacktop) or (nexttop ┆
0x034e00…034e20 (14, 0, 4)  3c 3e 20 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65   ┆<> opand^.next) then begin write┆
0x034e20…034e40             28 73 65 67 28 73 74 61 63 6b 74 6f 70 29 2c 20 6f 66 73 28 73 74 61 63 6b 74 6f 70 29 2c 0a 20   ┆(seg(stacktop), ofs(stacktop),  ┆
0x034e40…034e60             20 20 20 20 73 65 67 28 6f 70 61 6e 64 29 2c 20 20 20 20 20 6f 66 73 28 6f 70 61 6e 64 29 2c 0a   ┆    seg(opand),     ofs(opand), ┆
0x034e60…034e80             20 20 20 20 20 73 65 67 28 6e 65 78 74 74 6f 70 29 2c 20 20 20 6f 66 73 28 6e 65 78 74 74 6f 70   ┆     seg(nexttop),   ofs(nexttop┆
0x034e80…034ea0             29 2c 0a 20 20 20 20 20 73 65 67 28 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 2c 6f 66 73 28 6f 70 61   ┆),      seg(opand^.next),ofs(opa┆
0x034ea0…034ec0             6e 64 5e 2e 6e 65 78 74 29 29 3b 0a 62 72 65 61 6b 3b 0a 65 6e 64 3b 0a 28 2a 20 72 65 73 74 6f   ┆nd^.next)); break; end; (* resto┆
0x034ec0…034ee0             72 65 20 74 68 65 20 72 65 61 6c 20 73 74 61 63 6b 74 6f 70 20 61 6e 64 20 6e 65 78 74 74 6f 70   ┆re the real stacktop and nexttop┆
0x034ee0…034f00             20 2a 29 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 73 61 76 65 64 5f 73 74 61 63 6b 74 6f 70 3b 0a 6e   ┆ *) stacktop:= saved_stacktop; n┆
0x034f00…034f20             65 78 74 74 6f 70 20 3a 3d 20 73 61 76 65 64 5f 6e 65 78 74 74 6f 70 3b 0a 65 6e 64 3b 0a 0a 65   ┆exttop := saved_nexttop; end;  e┆
0x034f20…034f40             6e 64 3b 20 28 2a 20 74 65 72 6d 69 6e 61 74 65 20 66 75 6e 63 20 63 61 6c 6c 20 2a 29 0a 0a 0a   ┆nd; (* terminate func call *)   ┆
0x034f40…034f60             0a 70 72 6f 63 65 64 75 72 65 20 6d 61 6b 65 5f 63 61 6c 6c 20 28 6f 70 61 6e 64 3a 20 6f 70 61   ┆ procedure make_call (opand: opa┆
0x034f60…034f80             6e 64 70 74 72 29 3b 0a 28 2a 20 69 66 20 74 68 65 20 6f 70 65 72 61 6e 64 20 69 73 20 61 20 72   ┆ndptr); (* if the operand is a r┆
0x034f80…034fa0             6f 75 74 69 6e 65 2d 69 64 65 6e 74 2c 20 61 20 28 70 61 72 61 6d 65 74 65 72 2d 6c 65 73 73 29   ┆outine-ident, a (parameter-less)┆
0x034fa0…034fc0             20 63 61 6c 6c 20 77 69 6c 6c 20 62 65 20 6d 61 64 65 20 2a 29 0a 0a 62 65 67 69 6e 0a 77 69 74   ┆ call will be made *)  begin wit┆
0x034fc0…034fe0             68 20 20 6f 70 61 6e 64 20 5e 20 64 6f 0a 69 66 20 6f 70 63 6f 64 65 20 3d 20 63 69 64 20 74 68   ┆h  opand ^ do if opcode = cid th┆
0x034fe0…035000             65 6e 0a 77 69 74 68 20 20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 0a 63 61 73 65 20 6e 61 6d 65 6b   ┆en with  op_name ^ do case namek┆
0x035000…035020 (14, 0, 5)  69 6e 64 20 6f 66 0a 63 70 72 6f 63 65 73 73 2c 0a 63 70 72 6f 63 65 64 75 72 65 2c 0a 63 66 75   ┆ind of cprocess, cprocedure, cfu┆
0x035020…035040             6e 63 74 69 6f 6e 3a 0a 62 65 67 69 6e 0a 70 75 73 68 63 61 6c 6c 3b 0a 70 72 65 70 61 72 65 5f   ┆nction: begin pushcall; prepare_┆
0x035040…035060             63 61 6c 6c 20 28 6f 70 61 6e 64 29 3b 0a 74 65 72 6d 69 6e 61 74 65 5f 63 61 6c 6c 20 28 6f 70   ┆call (opand); terminate_call (op┆
0x035060…035080             61 6e 64 29 3b 0a 74 65 72 6d 69 6e 61 74 65 5f 66 75 6e 63 63 61 6c 6c 20 28 6f 70 61 6e 64 29   ┆and); terminate_funccall (opand)┆
0x035080…0350a0             3b 0a 65 6e 64 3b 0a 65 6c 73 65 3b 20 28 2a 20 6f 74 68 65 72 20 6e 61 6d 65 6b 69 6e 64 73 20   ┆; end; else; (* other namekinds ┆
0x0350a0…0350c0             61 72 65 20 6e 6f 74 20 72 6f 75 74 69 6e 65 2d 63 61 6c 6c 73 20 2a 29 0a 65 6e 64 3b 0a 65 6e   ┆are not routine-calls *) end; en┆
0x0350c0…0350e0             64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 6d 61 6b 65 2d 63 61 6c 6c 20 2a 29 0a 0a 0c 0a   ┆d; (* procedure make-call *)    ┆
0x0350e0…035100             28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6c 65 76 65 6c   ┆(* procedures for handling level┆
0x035100…035120             2d 63 68 61 6e 67 65 20 65 74 63 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 6e 65 77 6e 61 6d   ┆-change etc *)  procedure newnam┆
0x035120…035140             65 6c 65 76 65 6c 3b 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 61 20 6e 65 77 20 6e 61 6d   ┆elevel; (* initializes a new nam┆
0x035140…035160             65 6c 65 76 65 6c 2c 20 77 69 74 68 20 61 6e 20 65 6d 70 74 79 20 6e 61 6d 65 6c 69 73 74 20 2a   ┆elevel, with an empty namelist *┆
0x035160…035180             29 0a 62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 6c 65 76 65 6c 20 28 2a 20 63 75 72 72 65 6e 74 20   ┆) begin if namelevel (* current ┆
0x035180…0351a0             6c 65 76 65 6c 20 2a 29 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c 3d 6e 69 6c 20 74 68 65 6e 0a 62 65   ┆level *)^.next_level=nil then be┆
0x0351a0…0351c0             67 69 6e 0a 6e 65 77 28 6e 61 6d 65 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c 29 3b 0a   ┆gin new(namelevel^.next_level); ┆
0x0351c0…0351e0             6d 61 78 6e 61 6d 65 73 74 61 63 6b 6c 65 76 65 6c 73 3a 3d 20 6d 61 78 6e 61 6d 65 73 74 61 63   ┆maxnamestacklevels:= maxnamestac┆
0x0351e0…035200             6b 6c 65 76 65 6c 73 2b 31 3b 0a 77 69 74 68 20 6e 61 6d 65 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f   ┆klevels+1; with namelevel^.next_┆
0x035200…035220 (14, 0, 6)  6c 65 76 65 6c 5e 20 64 6f 0a 62 65 67 69 6e 0a 6c 65 76 65 6c 5f 6e 75 6d 62 65 72 3a 3d 20 6d   ┆level^ do begin level_number:= m┆
0x035220…035240             61 78 6e 61 6d 65 73 74 61 63 6b 6c 65 76 65 6c 73 3b 0a 6e 65 78 74 5f 6c 65 76 65 6c 3a 3d 20   ┆axnamestacklevels; next_level:= ┆
0x035240…035260             6e 69 6c 3b 0a 66 6f 72 6d 65 72 5f 6c 65 76 65 6c 3a 3d 20 6e 61 6d 65 6c 65 76 65 6c 3b 0a 65   ┆nil; former_level:= namelevel; e┆
0x035260…035280             6e 64 3b 20 28 2a 20 77 69 74 68 20 2e 2e 2e 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 65 78 74 65 6e   ┆nd; (* with ... *) end; (* exten┆
0x035280…0352a0             64 20 74 68 65 20 73 74 61 63 6b 20 2a 29 0a 6e 61 6d 65 6c 65 76 65 6c 3a 3d 20 6e 61 6d 65 6c   ┆d the stack *) namelevel:= namel┆
0x0352a0…0352c0             65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c 3b 0a 77 69 74 68 20 20 6e 61 6d 65 6c 65 76 65   ┆evel^.next_level; with  nameleve┆
0x0352c0…0352e0             6c 5e 20 64 6f 0a 62 65 67 69 6e 0a 66 69 72 73 74 6e 61 6d 65 3a 3d 20 6e 69 6c 6e 61 6d 65 3b   ┆l^ do begin firstname:= nilname;┆
0x0352e0…035300             0a 6e 61 6d 65 6c 69 73 74 6b 69 6e 64 3a 3d 20 6c 65 76 65 6c 6b 69 6e 64 3b 0a 77 69 74 68 6e   ┆ namelistkind:= levelkind; withn┆
0x035300…035320             61 6d 65 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 20 20 28 2a 20 61 73 73 75 6d 65 20 6e 6f 72 6d 61 6c   ┆ame:= nilname;  (* assume normal┆
0x035320…035340             20 6c 65 76 65 6c 20 2a 29 0a 69 66 20 6e 61 6d 65 6c 69 73 74 6b 69 6e 64 20 3d 20 70 72 6f 63   ┆ level *) if namelistkind = proc┆
0x035340…035360             65 73 73 6c 65 76 65 6c 20 74 68 65 6e 0a 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c 3a   ┆esslevel then processparamlevel:┆
0x035360…035380             3d 20 6e 61 6d 65 6c 65 76 65 6c 3b 0a 65 6e 64 3b 0a 6c 65 76 65 6c 6b 69 6e 64 3a 3d 20 69 72   ┆= namelevel; end; levelkind:= ir┆
0x035380…0353a0             72 65 6c 6c 5f 6c 65 76 65 6c 3b 20 20 28 2a 20 70 72 65 70 61 72 65 20 66 6f 72 20 6e 65 78 74   ┆rell_level;  (* prepare for next┆
0x0353a0…0353c0             20 6c 65 76 65 6c 20 74 6f 20 62 65 20 6e 6f 72 6d 61 6c 20 2a 29 0a 0a 65 6e 64 3b 0a 0a 0a 70   ┆ level to be normal *)  end;   p┆
0x0353c0…0353e0             72 6f 63 65 64 75 72 65 20 69 6e 73 65 72 74 5f 6e 61 6d 65 6c 69 73 74 20 28 66 69 72 73 74 3a   ┆rocedure insert_namelist (first:┆
0x0353e0…035400             20 6e 61 6d 65 70 74 72 29 3b 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 63 75 72 72 65 6e   ┆ nameptr); (* initializes curren┆
0x035400…035420 (14, 0, 7)  74 20 6e 61 6d 65 6c 65 76 65 6c 20 77 69 74 68 20 74 68 65 20 6e 61 6d 65 6c 69 73 74 20 67 69   ┆t namelevel with the namelist gi┆
0x035420…035440             76 65 6e 20 2a 29 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 6e 61 6d 65 6c 65 76 65 6c 5e 20 64 6f   ┆ven *) begin with  namelevel^ do┆
0x035440…035460             0a 62 65 67 69 6e 0a 66 69 72 73 74 6e 61 6d 65 3a 3d 20 66 69 72 73 74 3b 0a 6c 61 73 74 6e 61   ┆ begin firstname:= first; lastna┆
0x035460…035480             6d 65 3a 3d 20 66 69 72 73 74 3b 0a 77 68 69 6c 65 20 20 6c 61 73 74 6e 61 6d 65 20 5e 20 2e 20   ┆me:= first; while  lastname ^ . ┆
0x035480…0354a0             6e 65 78 74 6e 61 6d 65 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 6c 61 73 74 6e 61 6d 65 3a   ┆nextname <> nilname do lastname:┆
0x0354a0…0354c0             3d 20 20 6c 61 73 74 6e 61 6d 65 20 5e 20 2e 20 6e 65 78 74 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 65   ┆=  lastname ^ . nextname; end; e┆
0x0354c0…0354e0             6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 6e 61 6d 65 6c 65 76 65 6c 3b 0a 62 65   ┆nd;   procedure endnamelevel; be┆
0x0354e0…035500             67 69 6e 0a 28 2a 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 27 70 72 6f 63 65 73 73 70 61 72 61   ┆gin (* the variable 'processpara┆
0x035500…035520             6d 6c 65 76 65 6c 27 20 6d 75 73 74 20 62 65 20 72 65 69 6e 69 74 69 61 6c 69 7a 65 64 2c 20 77   ┆mlevel' must be reinitialized, w┆
0x035520…035540             68 65 6e 20 2a 29 0a 28 2a 20 20 20 6c 65 61 76 69 6e 67 20 61 20 70 72 6f 63 65 73 73 2e 20 2a   ┆hen *) (*   leaving a process. *┆
0x035540…035560             29 0a 69 66 20 6e 61 6d 65 6c 65 76 65 6c 20 3d 20 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76   ┆) if namelevel = processparamlev┆
0x035560…035580             65 6c 20 74 68 65 6e 0a 72 65 70 65 61 74 0a 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c   ┆el then repeat processparamlevel┆
0x035580…0355a0             3a 3d 20 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c 5e 2e 66 6f 72 6d 65 72 5f 6c 65 76   ┆:= processparamlevel^.former_lev┆
0x0355a0…0355c0             65 6c 3b 0a 75 6e 74 69 6c 0a 28 20 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c 5e 20 2e   ┆el; until ( processparamlevel^ .┆
0x0355c0…0355e0             20 6e 61 6d 65 6c 69 73 74 6b 69 6e 64 20 3d 20 70 72 6f 63 65 73 73 6c 65 76 65 6c 29 0a 6f 72   ┆ namelistkind = processlevel) or┆
0x0355e0…035600             0a 28 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c 20 3d 20 6c 61 73 74 67 6c 6f 62 61 6c   ┆ (processparamlevel = lastglobal┆
0x035600…035620 (14, 0, 8)  6c 65 76 65 6c 5e 2e 66 6f 72 6d 65 72 5f 6c 65 76 65 6c 29 3b 0a 65 6e 64 5f 67 6c 6f 62 61 6c   ┆level^.former_level); end_global┆
0x035620…035640             5f 75 73 65 3b 0a 6e 61 6d 65 6c 65 76 65 6c 3a 3d 20 6e 61 6d 65 6c 65 76 65 6c 5e 2e 66 6f 72   ┆_use; namelevel:= namelevel^.for┆
0x035640…035660             6d 65 72 5f 6c 65 76 65 6c 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 5f   ┆mer_level; end;  procedure test_┆
0x035660…035680             72 65 63 75 72 73 69 76 65 5f 74 79 70 65 3b 0a 28 2a 20 77 69 6c 6c 20 74 65 73 74 20 74 68 61   ┆recursive_type; (* will test tha┆
0x035680…0356a0             74 20 27 63 75 72 5f 74 79 70 65 6e 61 6d 65 27 20 69 73 20 61 20 64 65 66 69 6e 65 64 20 74 79   ┆t 'cur_typename' is a defined ty┆
0x0356a0…0356c0             70 65 20 2a 29 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 63 75 72 5f 74 79 70 65 6e 61 6d 65 20 5e   ┆pe *) begin with  cur_typename ^┆
0x0356c0…0356e0             20 64 6f 0a 69 66 20 28 73 70 69 78 20 28 2a 20 6f 66 20 74 79 70 65 6e 61 6d 65 20 2a 29 3c 3e   ┆ do if (spix (* of typename *)<>┆
0x0356e0…035700             61 6e 6f 6e 79 6d 6f 75 73 5f 73 70 69 78 29 20 61 6e 64 20 6e 6f 74 20 66 6f 72 77 61 72 64 5f   ┆anonymous_spix) and not forward_┆
0x035700…035720             64 65 63 6c 20 74 68 65 6e 0a 28 2a 20 72 65 63 75 72 73 69 6f 6e 20 6f 6e 6c 79 20 70 6f 73 73   ┆decl then (* recursion only poss┆
0x035720…035740             69 62 6c 65 20 77 69 74 68 20 6e 61 6d 65 64 20 74 79 70 65 73 20 2a 29 0a 28 2a 20 61 6e 64 20   ┆ible with named types *) (* and ┆
0x035740…035760             66 6f 72 77 61 72 64 20 70 6f 69 6e 74 65 72 73 20 61 72 65 20 61 6c 6c 6f 77 65 64 20 74 6f 20   ┆forward pointers are allowed to ┆
0x035760…035780             62 65 20 72 65 63 75 72 73 69 76 65 20 2a 29 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 0a 69   ┆be recursive *) with  typ ^ do i┆
0x035780…0357a0             66 20 6e 6f 74 20 65 6d 69 74 74 65 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 72 6f 72 73 70   ┆f not emitted then begin errorsp┆
0x0357a0…0357c0             69 78 3a 3d 20 73 70 69 78 3b 20 28 2a 20 6f 66 20 74 79 70 65 6e 61 6d 65 20 2a 29 0a 65 72 72   ┆ix:= spix; (* of typename *) err┆
0x0357c0…0357e0             6f 72 20 28 72 65 63 75 72 73 69 76 65 5f 75 73 65 5f 6f 66 5f 74 79 70 65 29 3b 0a 73 65 74 5f   ┆or (recursive_use_of_type); set_┆
0x0357e0…035800             65 72 72 6f 72 5f 74 79 70 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0c 0a 0a 0a 66 75 6e 63 74   ┆error_type; end; end;      funct┆
0x035800…035820 (14, 0, 9)  69 6f 6e 20 65 6d 70 74 79 5f 70 61 72 61 6d 6c 69 73 74 20 28 70 61 72 61 6d 6c 69 73 74 3a 20   ┆ion empty_paramlist (paramlist: ┆
0x035820…035840             6e 61 6d 65 70 74 72 29 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 28 2a 20 72 65 74 75 72 6e 73 20 66 61   ┆nameptr): boolean; (* returns fa┆
0x035840…035860             6c 73 65 2c 20 69 66 20 74 68 65 20 70 61 72 61 6d 6c 69 73 74 20 63 6f 6e 74 61 69 6e 73 20 27   ┆lse, if the paramlist contains '┆
0x035860…035880             76 61 72 70 61 72 61 6d 27 20 6f 72 20 27 76 61 6c 75 65 70 61 72 61 6d 27 20 2a 29 0a 0a 6c 61   ┆varparam' or 'valueparam' *)  la┆
0x035880…0358a0             62 65 6c 20 39 39 3b 0a 0a 62 65 67 69 6e 0a 77 68 69 6c 65 20 70 61 72 61 6d 6c 69 73 74 20 3c   ┆bel 99;  begin while paramlist <┆
0x0358a0…0358c0             3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 20 70 61 72 61 6d 6c 69 73 74 20 5e 20 64   ┆> nilname do with  paramlist ^ d┆
0x0358c0…0358e0             6f 0a 69 66 20 28 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 76 61 72 70 29 20 6f 72 20 28 6e 61 6d 65   ┆o if (namekind = cvarp) or (name┆
0x0358e0…035900             6b 69 6e 64 20 3d 20 63 76 61 6c 75 65 70 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 6d 70 74 79   ┆kind = cvaluep) then begin empty┆
0x035900…035920             5f 70 61 72 61 6d 6c 69 73 74 3a 3d 20 66 61 6c 73 65 3b 0a 67 6f 74 6f 20 39 39 3b 0a 65 6e 64   ┆_paramlist:= false; goto 99; end┆
0x035920…035940             0a 65 6c 73 65 0a 70 61 72 61 6d 6c 69 73 74 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 20 20 28 2a 20   ┆ else paramlist:= nextname;  (* ┆
0x035940…035960             66 6f 6c 6c 6f 77 20 63 68 61 69 6e 20 2a 29 0a 0a 28 2a 20 74 68 65 20 6c 69 73 74 20 64 69 64   ┆follow chain *)  (* the list did┆
0x035960…035980             27 6e 74 20 63 6f 6e 74 61 69 6e 20 76 61 72 2d 20 6f 72 20 76 61 6c 75 65 70 61 72 61 6d 20 2a   ┆'nt contain var- or valueparam *┆
0x035980…0359a0             29 0a 65 6d 70 74 79 5f 70 61 72 61 6d 6c 69 73 74 3a 3d 20 74 72 75 65 3b 0a 39 39 3a 20 3b 0a   ┆) empty_paramlist:= true; 99: ; ┆
0x0359a0…0359c0             0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 65 6d 70 74 79 2d 70 61 72 61 6d 6c 69   ┆ end; (* procedure empty-paramli┆
0x0359c0…0359e0             73 74 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 6d 70 61 72 65 5f 70 61 72 61 6d 6c 69   ┆st *)  procedure compare_paramli┆
0x0359e0…035a00             73 74 73 3b 0a 28 2a 20 63 6f 6d 70 61 72 65 73 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 70 61   ┆sts; (* compares the previous pa┆
0x035a00…035a20 (14, 0, 10) 72 61 6d 6c 69 73 74 20 6f 66 20 27 63 75 72 5f 72 6f 75 74 69 6e 65 27 20 2a 29 0a 28 2a 20 20   ┆ramlist of 'cur_routine' *) (*  ┆
0x035a20…035a40             20 77 69 74 68 20 70 61 72 61 6d 2d 6c 69 73 74 20 69 6e 20 63 75 72 72 65 6e 74 20 6e 61 6d 65   ┆ with param-list in current name┆
0x035a40…035a60             6c 65 76 65 6c 20 2a 29 0a 0a 28 2a 20 74 68 65 20 6e 65 77 20 70 61 72 61 6d 6c 69 73 74 20 6d   ┆level *)  (* the new paramlist m┆
0x035a60…035a80             61 79 20 62 65 20 65 6d 70 74 79 20 6f 72 20 65 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20   ┆ay be empty or exactly the same ┆
0x035a80…035aa0             2a 29 0a 0a 28 2a 20 74 68 65 20 6e 65 77 20 70 61 72 61 6d 6c 69 73 74 20 69 73 20 72 65 6c 65   ┆*)  (* the new paramlist is rele┆
0x035aa0…035ac0             61 73 65 64 20 61 6e 64 20 72 65 70 6c 61 63 65 64 20 62 79 20 74 68 65 20 6f 72 69 67 69 6e 61   ┆ased and replaced by the origina┆
0x035ac0…035ae0             6c 20 6c 69 73 74 20 2a 29 0a 0a 76 61 72 0a 6e 65 77 70 61 72 61 6d 2c 20 6f 6c 64 70 61 72 61   ┆l list *)  var newparam, oldpara┆
0x035ae0…035b00             6d 3a 20 6e 61 6d 65 70 74 72 3b 0a 65 72 72 6f 72 66 6c 61 67 3a 20 62 6f 6f 6c 65 61 6e 3b 0a   ┆m: nameptr; errorflag: boolean; ┆
0x035b00…035b20             0a 62 65 67 69 6e 0a 65 72 72 6f 72 66 6c 61 67 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 73 75 70   ┆ begin errorflag:= false; (* sup┆
0x035b20…035b40             70 6f 73 65 20 6e 6f 20 65 72 72 6f 72 73 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 6c 65 76 65   ┆pose no errors *) with  nameleve┆
0x035b40…035b60             6c 5e 20 64 6f 0a 77 69 74 68 20 20 63 75 72 5f 72 6f 75 74 69 6e 65 20 5e 20 64 6f 0a 62 65 67   ┆l^ do with  cur_routine ^ do beg┆
0x035b60…035b80             69 6e 0a 0a 6e 65 77 70 61 72 61 6d 3a 3d 20 66 69 72 73 74 6e 61 6d 65 3b 20 28 2a 20 66 69 72   ┆in  newparam:= firstname; (* fir┆
0x035b80…035ba0             73 74 20 6f 66 20 6e 65 77 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29 0a 0a 69 66 20   ┆st of new parameter list *)  if ┆
0x035ba0…035bc0             6e 6f 74 20 65 6d 70 74 79 5f 70 61 72 61 6d 6c 69 73 74 20 28 6e 65 77 70 61 72 61 6d 29 20 74   ┆not empty_paramlist (newparam) t┆
0x035bc0…035be0             68 65 6e 0a 62 65 67 69 6e 0a 6f 6c 64 70 61 72 61 6d 3a 3d 20 70 61 72 61 6d 73 3b 20 28 2a 20   ┆hen begin oldparam:= params; (* ┆
0x035be0…035c00             66 69 72 73 74 20 6f 66 20 6f 6c 64 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 28 6f 66 20   ┆first of old parameter list (of ┆
0x035c00…035c20 (14, 0, 11) 63 75 72 5f 72 6f 75 74 69 6e 65 29 20 2a 29 0a 0a 28 2a 20 63 6f 6d 70 61 72 65 20 74 68 65 20   ┆cur_routine) *)  (* compare the ┆
0x035c20…035c40             74 77 6f 20 6c 69 73 74 73 20 2a 29 0a 28 2a 20 74 68 65 79 20 62 6f 74 68 20 74 65 72 6d 69 6e   ┆two lists *) (* they both termin┆
0x035c40…035c60             61 74 65 20 77 69 74 68 20 6e 69 6c 6e 61 6d 65 20 2a 29 0a 0a 77 68 69 6c 65 20 6f 6c 64 70 61   ┆ate with nilname *)  while oldpa┆
0x035c60…035c80             72 61 6d 20 3c 3e 20 6e 65 77 70 61 72 61 6d 20 64 6f 0a 77 69 74 68 20 20 6f 6c 64 70 61 72 61   ┆ram <> newparam do with  oldpara┆
0x035c80…035ca0             6d 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 0a 69 66 0a 28 2a 20 74 68 65 79 20 6d 75 73 74 20 68 61   ┆m ^ do begin  if (* they must ha┆
0x035ca0…035cc0             76 65 20 69 64 65 6e 74 69 63 61 6c 20 6e 61 6d 65 73 20 2a 29 0a 28 73 70 69 78 20 20 20 20 20   ┆ve identical names *) (spix     ┆
0x035cc0…035ce0             3c 3e 20 20 6e 65 77 70 61 72 61 6d 20 5e 20 2e 20 73 70 69 78 29 0a 6f 72 0a 28 2a 20 62 6f 74   ┆<>  newparam ^ . spix) or (* bot┆
0x035ce0…035d00             68 20 6d 75 73 74 20 62 65 20 27 63 76 61 72 70 27 20 6f 72 20 27 63 76 61 6c 75 65 70 27 20 2a   ┆h must be 'cvarp' or 'cvaluep' *┆
0x035d00…035d20             29 0a 28 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 20 6e 65 77 70 61 72 61 6d 20 5e 20 2e 20 6e 61 6d   ┆) (namekind <>  newparam ^ . nam┆
0x035d20…035d40             65 6b 69 6e 64 29 0a 6f 72 0a 28 2a 20 74 68 65 79 20 6d 75 73 74 20 68 61 76 65 20 73 61 6d 65   ┆ekind) or (* they must have same┆
0x035d40…035d60             20 74 79 70 65 20 2a 29 0a 28 74 79 70 65 6e 61 6d 65 3c 3e 6e 65 77 70 61 72 61 6d 5e 2e 74 79   ┆ type *) (typename<>newparam^.ty┆
0x035d60…035d80             70 65 6e 61 6d 65 29 20 61 6e 64 0a 28 28 74 79 70 65 6e 61 6d 65 5e 2e 74 79 70 5e 2e 74 79 70   ┆pename) and ((typename^.typ^.typ┆
0x035d80…035da0             65 6b 69 6e 64 3c 3e 63 72 65 61 64 6f 6e 6c 79 29 20 6f 72 0a 28 6e 65 77 70 61 72 61 6d 5e 2e   ┆ekind<>creadonly) or (newparam^.┆
0x035da0…035dc0             74 79 70 65 6e 61 6d 65 5e 2e 74 79 70 5e 2e 74 79 70 65 6b 69 6e 64 3c 3e 63 72 65 61 64 6f 6e   ┆typename^.typ^.typekind<>creadon┆
0x035dc0…035de0             6c 79 29 20 6f 72 0a 28 74 79 70 65 6e 61 6d 65 5e 2e 74 79 70 5e 2e 65 6c 65 6d 65 6e 74 3c 3e   ┆ly) or (typename^.typ^.element<>┆
0x035de0…035e00             6e 65 77 70 61 72 61 6d 5e 2e 74 79 70 65 6e 61 6d 65 5e 2e 74 79 70 5e 2e 65 6c 65 6d 65 6e 74   ┆newparam^.typename^.typ^.element┆
0x035e00…035e20 (14, 0, 12) 29 29 20 0a 74 68 65 6e 0a 65 72 72 6f 72 66 6c 61 67 3a 3d 20 74 72 75 65 3b 0a 0a 6f 6c 64 70   ┆))  then errorflag:= true;  oldp┆
0x035e20…035e40             61 72 61 6d 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 0a 6e 65 77 70 61 72 61 6d 3a 3d 20 20 6e 65 77   ┆aram:= nextname; newparam:=  new┆
0x035e40…035e60             70 61 72 61 6d 20 5e 20 2e 20 6e 65 78 74 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74   ┆param ^ . nextname;  end; (* wit┆
0x035e60…035e80             68 2f 77 68 69 6c 65 20 6d 6f 72 65 20 70 61 72 61 6d 73 20 2a 29 0a 0a 69 66 20 65 72 72 6f 72   ┆h/while more params *)  if error┆
0x035e80…035ea0             66 6c 61 67 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 70 61 72 61 6d 6c 69 73 74 5f 63 68 61 6e 67   ┆flag then error (paramlist_chang┆
0x035ea0…035ec0             65 64 5f 73 69 6e 63 65 5f 66 6f 72 77 61 72 64 64 65 63 6c 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20   ┆ed_since_forwarddecl);  end; (* ┆
0x035ec0…035ee0             69 66 20 6e 65 77 20 70 61 72 61 6d 6c 69 73 74 20 6e 6f 74 20 65 6d 70 74 79 20 2a 29 0a 0a 28   ┆if new paramlist not empty *)  (┆
0x035ee0…035f00             2a 20 72 65 6c 65 61 73 65 20 74 68 65 20 6e 65 77 20 70 61 72 61 6d 6c 69 73 74 20 61 6e 64 20   ┆* release the new paramlist and ┆
0x035f00…035f20             72 65 70 6c 61 63 65 20 69 74 20 62 79 20 74 68 65 20 6f 6c 64 20 6f 6e 65 20 2a 29 0a 0a 72 65   ┆replace it by the old one *)  re┆
0x035f20…035f40             6c 65 61 73 65 6e 61 6d 65 73 20 28 66 69 72 73 74 6e 61 6d 65 20 28 2a 20 6f 66 20 6e 61 6d 65   ┆leasenames (firstname (* of name┆
0x035f40…035f60             6c 65 76 65 6c 20 2a 29 20 29 3b 0a 69 6e 73 65 72 74 5f 6e 61 6d 65 6c 69 73 74 20 28 70 61 72   ┆level *) ); insert_namelist (par┆
0x035f60…035f80             61 6d 73 20 28 2a 20 6f 66 20 63 75 72 2d 72 6f 75 74 69 6e 65 20 2a 29 20 29 3b 0a 0a 65 6e 64   ┆ams (* of cur-routine *) );  end┆
0x035f80…035fa0             3b 20 28 2a 20 77 69 74 68 20 63 75 72 5f 72 6f 75 74 69 6e 65 20 2a 29 0a 0a 65 6e 64 3b 20 28   ┆; (* with cur_routine *)  end; (┆
0x035fa0…035fc0             2a 20 70 72 6f 63 65 64 75 72 65 20 63 6f 6d 70 61 72 65 5f 70 61 72 61 6d 6c 69 73 74 73 20 2a   ┆* procedure compare_paramlists *┆
0x035fc0…035fe0             29 0a 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 62 65 67 69 6e 5f 62 6c 6f 63 6b 3b 0a 28 2a 20 63   ┆)    procedure begin_block; (* c┆
0x035fe0…036000             61 6c 6c 65 64 20 62 65 66 6f 72 65 20 66 69 72 73 74 20 6c 6f 63 61 6c 20 64 65 63 6c 61 72 61   ┆alled before first local declara┆
0x036000…036020 (14, 0, 13) 74 69 6f 6e 20 69 6e 20 61 20 72 6f 75 74 69 6e 65 20 2a 29 0a 62 65 67 69 6e 0a 65 78 70 65 63   ┆tion in a routine *) begin expec┆
0x036020…036040             74 69 6e 67 5f 62 6c 6f 63 6b 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 69 6e 64 69 63 61 74 65 20   ┆ting_block:= false; (* indicate ┆
0x036040…036060             74 68 61 74 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 20 68 61 73 20 62 65 65 6e 20 63 61 6c 6c   ┆that the procedure has been call┆
0x036060…036080             65 64 20 2a 29 0a 0a 77 69 74 68 20 20 63 75 72 5f 72 6f 75 74 69 6e 65 20 5e 20 64 6f 0a 62 65   ┆ed *)  with  cur_routine ^ do be┆
0x036080…0360a0             67 69 6e 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 70 72 6f 63 65 73 73 20 74 68 65 6e   ┆gin if namekind <> cprocess then┆
0x0360a0…0360c0             0a 63 75 72 5f 62 6c 6f 63 6b 6e 6f 3a 3d 20 63 75 72 5f 62 6c 6f 63 6b 6e 6f 20 2b 20 31 3b 0a   ┆ cur_blockno:= cur_blockno + 1; ┆
0x0360c0…0360e0             66 6f 72 77 61 72 64 5f 64 65 63 6c 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 62 65 63 61 75 73 65   ┆forward_decl:= false; (* because┆
0x0360e0…036100             20 68 65 72 65 20 63 6f 6d 65 73 20 74 68 65 20 62 6f 64 79 20 2a 29 0a 65 6e 64 3b 0a 0a 65 6d   ┆ here comes the body *) end;  em┆
0x036100…036120             69 74 20 28 78 62 6c 6f 63 6b 29 3b 0a 65 6d 69 74 69 6e 20 28 63 75 72 5f 62 6c 6f 63 6b 6e 6f   ┆it (xblock); emitin (cur_blockno┆
0x036120…036140             29 3b 0a 0a 65 6e 64 3b 0a 0a 0c 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 65 6d   ┆);  end;    (* procedures for em┆
0x036140…036160             69 74 74 69 6e 67 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 6e 64 20 74 79 70 65 73 20 2a 29 0a   ┆itting identifiers and types *) ┆
0x036160…036180             0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 65 78 70 72 20 28 65 78 70 72 3a 20 6f 70 61   ┆   procedure emitexpr (expr: opa┆
0x036180…0361a0             6e 64 70 74 72 29 3b 0a 28 2a 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 6d 69   ┆ndptr); (* the expression is emi┆
0x0361a0…0361c0             74 74 65 64 2c 20 61 6e 64 20 6d 61 79 62 65 20 72 65 6c 65 61 73 65 64 20 28 64 65 70 65 6e 64   ┆tted, and maybe released (depend┆
0x0361c0…0361e0             69 6e 67 20 6f 6e 20 27 65 78 70 72 2d 72 65 6c 65 61 73 65 27 29 20 2a 29 0a 0a 70 72 6f 63 65   ┆ing on 'expr-release') *)  proce┆
0x0361e0…036200             64 75 72 65 20 65 6d 69 74 62 6f 74 68 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 65 78 70 72 20   ┆dure emitboth; begin with  expr ┆
0x036200…036220 (14, 0, 14) 5e 20 64 6f 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 6c 65 66 74 29 3b 0a 65 6d 69 74   ┆^ do begin emitexpr (left); emit┆
0x036220…036240             65 78 70 72 20 28 72 69 67 74 68 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75   ┆expr (rigth); end; end;  procedu┆
0x036240…036260             72 65 20 65 6d 69 74 5f 61 72 69 74 68 20 28 6f 75 74 63 6f 64 65 3a 20 70 61 73 73 33 63 6f 64   ┆re emit_arith (outcode: pass3cod┆
0x036260…036280             65 73 29 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 65 78 70 72 20 5e 20 64 6f 0a 62 65 67 69 6e   ┆es); begin with  expr ^ do begin┆
0x036280…0362a0             0a 69 66 20 6c 65 66 74 20 3c 3e 20 6e 69 6c 6f 70 61 6e 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆ if left <> nilopand then begin ┆
0x0362a0…0362c0             65 6d 69 74 65 78 70 72 20 28 6c 65 66 74 29 3b 0a 65 6d 69 74 20 28 78 67 65 74 76 61 6c 75 65   ┆emitexpr (left); emit (xgetvalue┆
0x0362c0…0362e0             29 3b 0a 65 6e 64 3b 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 0a 65 6d 69 74 20 28   ┆); end; emitexpr (rigth); emit (┆
0x0362e0…036300             6f 75 74 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 62 65 67 69 6e 0a 0a 69 66 20 65   ┆outcode); end; end;  begin  if e┆
0x036300…036320             78 70 72 20 3c 3e 20 6e 69 6c 6f 70 61 6e 64 20 74 68 65 6e 0a 77 69 74 68 20 20 65 78 70 72 20   ┆xpr <> nilopand then with  expr ┆
0x036320…036340             5e 20 64 6f 0a 62 65 67 69 6e 0a 0a 28 2a 20 6e 6f 74 65 3a 20 6f 6e 6c 79 20 27 6e 65 77 6f 70   ┆^ do begin  (* note: only 'newop┆
0x036340…036360             61 6e 64 27 20 69 6e 73 65 72 74 73 20 70 72 6f 70 65 72 20 6c 69 6e 65 6e 6f 20 69 6e 20 6f 70   ┆and' inserts proper lineno in op┆
0x036360…036380             61 6e 64 73 20 2a 29 0a 69 66 20 6f 70 5f 6c 69 6e 65 6e 6f 20 3c 3e 20 30 20 74 68 65 6e 0a 69   ┆ands *) if op_lineno <> 0 then i┆
0x036380…0363a0             66 20 6f 70 5f 6c 69 6e 65 6e 6f 20 3c 3e 20 65 6d 69 74 5f 6c 69 6e 65 6e 6f 20 74 68 65 6e 0a   ┆f op_lineno <> emit_lineno then ┆
0x0363a0…0363c0             62 65 67 69 6e 0a 65 6d 69 74 20 28 78 6e 65 77 6c 69 6e 65 29 3b 0a 65 6d 69 74 69 6e 20 28 6f   ┆begin emit (xnewline); emitin (o┆
0x0363c0…0363e0             70 5f 6c 69 6e 65 6e 6f 29 3b 0a 65 6d 69 74 5f 6c 69 6e 65 6e 6f 3a 3d 20 6f 70 5f 6c 69 6e 65   ┆p_lineno); emit_lineno:= op_line┆
0x0363e0…036400             6e 6f 3b 0a 65 6e 64 3b 0a 0a 0a 65 78 70 72 5f 6c 65 76 65 6c 3a 3d 20 65 78 70 72 5f 6c 65 76   ┆no; end;   expr_level:= expr_lev┆
0x036400…036420 (14, 0, 15) 65 6c 20 2b 20 31 3b 0a 69 66 20 65 78 70 72 5f 6c 65 76 65 6c 20 3d 20 31 20 74 68 65 6e 0a 62   ┆el + 1; if expr_level = 1 then b┆
0x036420…036440             65 67 69 6e 0a 65 6d 69 74 20 28 78 65 78 70 72 29 3b 20 20 20 20 20 20 28 2a 20 74 68 69 73 20   ┆egin emit (xexpr);      (* this ┆
0x036440…036460             69 73 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 61 20 77 68 6f 6c 65 20 65 78 70 72 65 73 73 69   ┆is the start of a whole expressi┆
0x036460…036480             6f 6e 20 2a 29 0a 69 66 20 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 20 63 6f 6e 74 69 6e 75   ┆on *) if testoutput then continu┆
0x036480…0364a0             65 5f 6c 69 6e 65 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6f 70 63 6f 64 65 20 3d 20 63 6e 6f 63 6f 64   ┆e_line; end;  if opcode = cnocod┆
0x0364a0…0364c0             65 20 74 68 65 6e 0a 65 6d 69 74 62 6f 74 68 0a 65 6c 73 65 0a 63 61 73 65 20 6f 70 63 6f 64 65   ┆e then emitboth else case opcode┆
0x0364c0…0364e0             20 28 2a 20 6f 66 20 6f 70 61 6e 64 20 2a 29 20 6f 66 0a 0a 63 74 79 70 65 69 64 2c 20 28 2a 20   ┆ (* of opand *) of  ctypeid, (* ┆
0x0364e0…036500             69 6d 70 6c 69 63 69 74 20 74 79 70 65 20 6e 61 6d 65 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 73   ┆implicit type name in front of s┆
0x036500…036520             74 72 75 63 74 75 72 65 64 20 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 63 69 64 3a 0a 62 65 67 69 6e   ┆tructured constant *) cid: begin┆
0x036520…036540             0a 28 2a 20 69 64 65 6e 74 69 66 69 65 72 3a 20 61 63 74 69 6f 6e 20 64 65 70 65 6e 64 73 20 6f   ┆ (* identifier: action depends o┆
0x036540…036560             6e 20 6e 61 6d 65 6b 69 6e 64 20 2a 29 0a 0a 69 66 20 28 6f 70 63 6f 64 65 3d 63 74 79 70 65 69   ┆n namekind *)  if (opcode=ctypei┆
0x036560…036580             64 29 20 61 6e 64 20 28 6f 70 5f 6e 61 6d 65 5e 2e 6e 61 6d 65 6b 69 6e 64 3c 3e 63 74 79 70 65   ┆d) and (op_name^.namekind<>ctype┆
0x036580…0365a0             29 20 61 6e 64 20 28 6f 70 5f 6e 61 6d 65 5e 2e 6e 61 6d 65 6b 69 6e 64 3c 3e 63 75 6e 64 65 63   ┆) and (op_name^.namekind<>cundec┆
0x0365a0…0365c0             6c 61 72 65 64 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 74 79 70 65 5f 6e 61 6d 65 5f 6d 69 73 73   ┆lared) then error(type_name_miss┆
0x0365c0…0365e0             69 6e 67 29 3b 0a 0a 77 69 74 68 20 20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 20 20 28 2a 20 6e 61   ┆ing);  with  op_name ^ do  (* na┆
0x0365e0…036600             6d 65 6e 6f 64 65 20 6f 66 20 69 64 65 6e 74 69 66 69 65 72 20 2a 29 0a 0a 63 61 73 65 20 6e 61   ┆menode of identifier *)  case na┆
0x036600…036620 (14, 1, 1)  6d 65 6b 69 6e 64 20 28 2a 20 6f 66 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 20 6f 66 0a 0a 63 75 6e   ┆mekind (* of namenode *) of  cun┆
0x036620…036640             64 65 63 6c 61 72 65 64 2c 0a 63 73 63 61 6c 61 72 65 6c 65 6d 2c 0a 63 63 6f 6e 73 74 61 6e 74   ┆declared, cscalarelem, cconstant┆
0x036640…036660             2c 0a 63 76 61 72 2c 0a 63 76 61 72 70 2c 0a 63 76 61 6c 75 65 70 2c 0a 63 66 75 6e 63 76 61 6c   ┆, cvar, cvarp, cvaluep, cfuncval┆
0x036660…036680             3a 0a 62 65 67 69 6e 0a 65 6d 69 74 69 64 20 28 78 76 61 72 2c 20 6f 70 5f 6e 61 6d 65 29 3b 0a   ┆: begin emitid (xvar, op_name); ┆
0x036680…0366a0             65 6d 69 74 69 6e 20 28 74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78 29 3b 0a 65 6e 64 3b 0a 0a 63 70   ┆emitin (typename^.nix); end;  cp┆
0x0366a0…0366c0             72 6f 63 65 73 73 3a 20 0a 62 65 67 69 6e 0a 65 6d 69 74 69 64 28 78 76 61 72 2c 20 6e 65 78 74   ┆rocess:  begin emitid(xvar, next┆
0x0366c0…0366e0             6e 61 6d 65 29 3b 20 28 2a 20 73 6f 6e 20 76 61 72 20 2a 29 0a 65 6d 69 74 69 6e 28 6e 65 78 74   ┆name); (* son var *) emitin(next┆
0x0366e0…036700             6e 61 6d 65 5e 2e 74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78 29 3b 0a 65 6d 69 74 28 78 74 65 6d 70   ┆name^.typename^.nix); emit(xtemp┆
0x036700…036720             6f 69 6e 74 65 72 29 3b 0a 65 6e 64 3b 0a 28 2a 20 73 74 61 72 74 20 6f 66 20 70 72 6f 63 65 73   ┆ointer); end; (* start of proces┆
0x036720…036740             73 20 70 61 72 61 6d 20 73 65 71 75 65 6e 63 65 20 2a 29 0a 0a 63 70 72 6f 63 65 64 75 72 65 3a   ┆s param sequence *)  cprocedure:┆
0x036740…036760             0a 62 65 67 69 6e 0a 28 2a 20 73 74 61 72 74 20 6f 66 20 70 72 6f 63 65 64 75 72 65 20 63 61 6c   ┆ begin (* start of procedure cal┆
0x036760…036780             6c 2d 73 65 71 75 65 6e 63 65 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 70 72 6f 63 63 61 6c 6c 2c   ┆l-sequence *) emitid (xproccall,┆
0x036780…0367a0             20 6f 70 5f 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 66 75 6e 63 74 69 6f 6e 3a 0a 62 65 67 69   ┆ op_name); end;  cfunction: begi┆
0x0367a0…0367c0             6e 0a 28 2a 20 73 74 61 72 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20 73 65 71 75   ┆n (* start of function call sequ┆
0x0367c0…0367e0             65 6e 63 65 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 66 75 6e 63 63 61 6c 6c 2c 20 6f 70 5f 6e 61   ┆ence *) emitid (xfunccall, op_na┆
0x0367e0…036800             6d 65 29 3b 0a 28 2a 20 74 68 65 20 74 65 6d 70 2d 72 65 74 75 72 6e 2d 76 61 6c 75 65 20 61 6e   ┆me); (* the temp-return-value an┆
0x036800…036820 (14, 1, 2)  64 20 74 68 65 20 74 79 70 65 20 61 72 65 20 65 6d 69 74 74 65 64 20 62 79 20 27 66 75 6e 63 74   ┆d the type are emitted by 'funct┆
0x036820…036840             72 61 69 6c 65 72 27 20 2a 29 0a 65 6e 64 3b 0a 0a 63 65 72 72 6f 72 6b 69 6e 64 3a 20 3b 20 28   ┆railer' *) end;  cerrorkind: ; (┆
0x036840…036860             2a 20 6e 6f 74 68 69 6e 67 20 2a 29 0a 0a 63 74 79 70 65 3a 0a 62 65 67 69 6e 0a 28 2a 20 73 74   ┆* nothing *)  ctype: begin (* st┆
0x036860…036880             61 72 74 20 6f 66 20 73 74 72 75 63 74 75 72 65 64 20 63 6f 6e 73 74 61 6e 74 20 73 65 71 75 65   ┆art of structured constant seque┆
0x036880…0368a0             6e 63 65 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 73 74 72 75 63 63 6f 6e 73 74 2c 20 6f 70 5f 6e   ┆nce *) emitid (xstrucconst, op_n┆
0x0368a0…0368c0             61 6d 65 20 28 2a 20 6e 61 6d 65 20 6f 66 20 74 79 70 65 20 69 74 73 65 6c 66 20 2a 29 29 3b 0a   ┆ame (* name of type itself *)); ┆
0x0368c0…0368e0             65 6e 64 3b 0a 0a 65 6c 73 65 0a 69 66 20 74 72 75 65 20 74 68 65 6e 20 77 72 69 74 65 20 28 6f   ┆end;  else if true then write (o┆
0x0368e0…036900             75 74 70 75 74 2c 20 27 2a 2a 2a 20 69 64 3a 20 6e 61 6d 65 6b 69 6e 64 20 3d 20 27 2c 20 6f 72   ┆utput, '*** id: namekind = ', or┆
0x036900…036920             64 28 6e 61 6d 65 6b 69 6e 64 29 3a 31 29 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74   ┆d(namekind):1) else if compilert┆
0x036920…036940             65 73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f 6e 61 6d   ┆est then comp_error (unknown_nam┆
0x036940…036960             65 6b 69 6e 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 2a 29   ┆ekind); end; (* case namekind *)┆
0x036960…036980             0a 0a 65 6e 64 3b 20 28 2a 20 6f 70 63 6f 64 65 20 3d 20 27 69 64 27 20 2a 29 0a 0a 63 6c 69 74   ┆  end; (* opcode = 'id' *)  clit┆
0x036980…0369a0             65 72 61 6c 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 20 28 78 6c 69 74 65 72 61 6c 29 3b 0a 77 69 74   ┆eral: begin emit (xliteral); wit┆
0x0369a0…0369c0             68 20 20 6f 70 5f 74 79 70 65 6e 61 6d 65 20 5e 20 64 6f 20 20 20 20 28 2a 20 6e 61 6d 65 6e 6f   ┆h  op_typename ^ do    (* nameno┆
0x0369c0…0369e0             64 65 20 6f 66 20 6f 70 61 6e 64 2d 74 79 70 65 20 2a 29 0a 77 69 74 68 20 20 74 79 70 20 5e 20   ┆de of opand-type *) with  typ ^ ┆
0x0369e0…036a00             64 6f 20 20 20 20 20 20 20 20 20 20 28 2a 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 79 70   ┆do          (* corresponding typ┆
0x036a00…036a20 (14, 1, 3)  65 6e 6f 64 65 20 2a 29 0a 69 66 20 74 79 70 65 6b 69 6e 64 20 28 2a 20 6f 66 20 6f 70 61 6e 64   ┆enode *) if typekind (* of opand┆
0x036a20…036a40             2d 74 79 70 65 6e 6f 64 65 20 2a 29 20 3d 20 63 69 6e 74 65 67 65 72 20 74 68 65 6e 0a 65 6d 69   ┆-typenode *) = cinteger then emi┆
0x036a40…036a60             74 69 6e 20 28 20 6f 72 64 28 6c 69 74 5f 69 6e 74 65 67 65 72 29 20 29 0a 65 6c 73 65 0a 77 69   ┆tin ( ord(lit_integer) ) else wi┆
0x036a60…036a80             74 68 20 20 6f 70 5f 76 61 6c 75 65 20 5e 20 64 6f 0a 69 66 20 73 74 72 69 6e 67 6c 67 74 20 3d   ┆th  op_value ^ do if stringlgt =┆
0x036a80…036aa0             20 31 20 74 68 65 6e 0a 65 6d 69 74 69 6e 20 28 20 6f 72 64 28 6c 69 74 5f 63 68 61 72 29 20 29   ┆ 1 then emitin ( ord(lit_char) )┆
0x036aa0…036ac0             0a 65 6c 73 65 0a 65 6d 69 74 69 6e 20 28 20 6f 72 64 28 6c 69 74 5f 73 74 72 69 6e 67 5f 6f 72   ┆ else emitin ( ord(lit_string_or┆
0x036ac0…036ae0             5f 65 6d 70 74 79 29 20 29 3b 0a 65 6d 69 74 73 74 72 69 6e 67 20 28 6f 70 5f 76 61 6c 75 65 29   ┆_empty) ); emitstring (op_value)┆
0x036ae0…036b00             3b 0a 65 6e 64 3b 0a 0a 0a 63 74 79 70 65 73 69 7a 65 63 61 6c 6c 3a 0a 62 65 67 69 6e 0a 65 6d   ┆; end;   ctypesizecall: begin em┆
0x036b00…036b20             69 74 28 78 74 79 70 65 73 69 7a 65 63 61 6c 6c 29 3b 0a 65 6d 69 74 69 6e 28 6f 70 5f 6e 61 6d   ┆it(xtypesizecall); emitin(op_nam┆
0x036b20…036b40             65 5e 2e 6e 69 78 29 3b 0a 65 6e 64 3b 20 28 2a 20 74 79 70 65 73 69 7a 65 63 61 6c 6c 20 2a 29   ┆e^.nix); end; (* typesizecall *)┆
0x036b40…036b60             0a 0a 63 73 6b 69 70 70 61 72 61 6d 3a 0a 65 6d 69 74 20 28 78 6e 75 6c 6c 29 3b 0a 0a 0a 63 66   ┆  cskipparam: emit (xnull);   cf┆
0x036b60…036b80             75 6e 63 74 72 61 69 6c 65 72 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74   ┆unctrailer: begin emitexpr (rigt┆
0x036b80…036ba0             68 29 3b 20 20 28 2a 20 65 6d 69 74 20 66 75 6e 63 63 61 6c 6c 20 65 74 63 20 2a 29 0a 65 6d 69   ┆h);  (* emit funccall etc *) emi┆
0x036ba0…036bc0             74 69 6e 20 28 6f 70 5f 6e 61 6d 65 5e 2e 6e 69 78 29 3b 20 20 28 2a 20 6e 61 6d 65 20 6f 66 20   ┆tin (op_name^.nix);  (* name of ┆
0x036bc0…036be0             74 65 6d 70 2d 72 65 74 75 72 6e 2d 76 61 6c 75 65 20 2a 29 0a 77 69 74 68 20 20 6f 70 5f 6e 61   ┆temp-return-value *) with  op_na┆
0x036be0…036c00             6d 65 20 5e 20 64 6f 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 66 75 6e 63 74 65 6d 70   ┆me ^ do  (* namenode of functemp┆
0x036c00…036c20 (14, 1, 4)  20 76 61 72 20 2a 29 0a 65 6d 69 74 69 6e 20 28 74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78 20 29 3b   ┆ var *) emitin (typename^.nix );┆
0x036c20…036c40             20 20 28 2a 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 2a 29 0a 65 6e 64   ┆  (* typename of function *) end┆
0x036c40…036c60             3b 0a 0a 0a 63 66 75 6e 63 74 65 6d 70 3a 0a 62 65 67 69 6e 0a 28 2a 20 74 68 69 73 20 69 73 20   ┆;   cfunctemp: begin (* this is ┆
0x036c60…036c80             61 6c 6d 6f 73 74 20 61 6e 20 27 69 64 27 2c 20 62 75 74 20 74 68 65 20 6e 61 6d 65 6e 6f 64 65   ┆almost an 'id', but the namenode┆
0x036c80…036ca0             20 64 6f 65 73 6e 27 74 20 63 6f 6e 74 61 69 6e 20 74 79 70 65 6e 61 6d 65 20 2a 29 0a 28 2a 20   ┆ doesn't contain typename *) (* ┆
0x036ca0…036cc0             75 73 65 64 20 66 6f 72 20 61 63 74 75 61 6c 20 61 72 67 6d 65 6e 74 2c 20 74 6f 20 6d 61 74 63   ┆used for actual argment, to matc┆
0x036cc0…036ce0             68 20 27 66 75 6e 63 76 61 6c 27 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 76 61 72 2c 20 6f 70 5f   ┆h 'funcval' *) emitid (xvar, op_┆
0x036ce0…036d00             6e 61 6d 65 29 3b 0a 77 69 74 68 20 20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 20 20 28 2a 20 6e 61   ┆name); with  op_name ^ do  (* na┆
0x036d00…036d20             6d 65 6e 6f 64 65 20 6f 66 20 66 75 6e 63 74 65 6d 70 20 76 61 72 20 2a 29 0a 65 6d 69 74 69 6e   ┆menode of functemp var *) emitin┆
0x036d20…036d40             20 28 74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78 20 20 29 3b 0a 69 66 20 65 78 70 72 5f 72 65 6c 65   ┆ (typename^.nix  ); if expr_rele┆
0x036d40…036d60             61 73 65 20 74 68 65 6e 0a 72 65 6c 65 61 73 65 6e 61 6d 65 73 20 28 6f 70 5f 6e 61 6d 65 29 3b   ┆ase then releasenames (op_name);┆
0x036d60…036d80             20 28 2a 20 62 65 63 61 75 73 65 20 69 74 20 77 61 73 20 61 20 74 65 6d 70 6f 72 61 72 79 20 2a   ┆ (* because it was a temporary *┆
0x036d80…036da0             29 0a 65 6e 64 3b 0a 0a 0a 63 66 63 61 6c 6c 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20   ┆) end;   cfcall: begin emitexpr ┆
0x036da0…036dc0             28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 69 74 20 69 73 20 61 6e 20 75 6e 61 72   ┆(rigth);  (* note: it is an unar┆
0x036dc0…036de0             79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 20 28 78 66 63 61 6c 6c 29 3b 0a 65 6d 69   ┆y operator *) emit (xfcall); emi┆
0x036de0…036e00             74 69 6e 20 28 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 29 3b 20 63 6f 75 6e 74 5f   ┆tin (count_processparam); count_┆
0x036e00…036e20 (14, 1, 5)  70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 30 3b 0a 28 2a 20 6e 6f 74 65 3a 20 74 68 65 20 27   ┆processparam:= 0; (* note: the '┆
0x036e20…036e40             65 6e 64 66 75 6e 63 63 61 6c 6c 27 20 69 73 20 65 6d 69 74 74 65 64 20 61 66 74 65 72 20 61 6e   ┆endfunccall' is emitted after an┆
0x036e40…036e60             79 20 69 6e 64 65 78 69 6e 67 2c 75 70 61 72 72 6f 77 20 65 74 63 20 2a 29 0a 65 6e 64 3b 0a 0a   ┆y indexing,uparrow etc *) end;  ┆
0x036e60…036e80             0a 63 65 6e 64 70 72 6f 63 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68   ┆ cendproc: begin emitexpr (rigth┆
0x036e80…036ea0             29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 69 74 20 69 73 20 61 6e 20 75 6e 61 72 79 20 6f 70 65 72   ┆);  (* note: it is an unary oper┆
0x036ea0…036ec0             61 74 6f 72 20 2a 29 0a 65 6d 69 74 20 28 78 65 6e 64 70 72 6f 63 29 3b 0a 65 6d 69 74 69 6e 20   ┆ator *) emit (xendproc); emitin ┆
0x036ec0…036ee0             28 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 29 3b 20 63 6f 75 6e 74 5f 70 72 6f 63   ┆(count_processparam); count_proc┆
0x036ee0…036f00             65 73 73 70 61 72 61 6d 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 0a 63 63 61 6c 6c 70 72 6f 63 65 73   ┆essparam:= 0; end;   ccallproces┆
0x036f00…036f20             73 3a 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 69   ┆s: emitexpr (rigth);  (* note: i┆
0x036f20…036f40             74 20 69 73 20 61 6e 20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 0a 0a 63 65 6e 64   ┆t is an unary operator *)   cend┆
0x036f40…036f60             70 72 6f 63 65 73 73 70 61 72 61 6d 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 72 69   ┆processparam: begin emitexpr (ri┆
0x036f60…036f80             67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 69 74 20 69 73 20 61 6e 20 75 6e 61 72 79 20 6f   ┆gth);  (* note: it is an unary o┆
0x036f80…036fa0             70 65 72 61 74 6f 72 20 2a 29 0a 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20   ┆perator *) count_processparam:= ┆
0x036fa0…036fc0             63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 20 2b 20 31 3b 0a 65 6e 64 3b 0a 0a 0a 28   ┆count_processparam + 1; end;   (┆
0x036fc0…036fe0             2a 20 65 6d 69 73 73 69 6f 6e 20 6f 66 20 73 65 74 5f 76 61 6c 75 65 73 20 2a 29 0a 63 73 65 74   ┆* emission of set_values *) cset┆
0x036fe0…037000             6c 69 73 74 3a 0a 65 6d 69 74 20 28 78 73 65 74 29 3b 0a 63 73 5f 65 6c 65 6d 65 6e 74 3a 0a 62   ┆list: emit (xset); cs_element: b┆
0x037000…037020 (14, 1, 6)  65 67 69 6e 0a 65 6d 69 74 62 6f 74 68 3b 0a 65 6d 69 74 20 28 78 69 6e 63 6c 75 64 65 29 3b 0a   ┆egin emitboth; emit (xinclude); ┆
0x037020…037040             65 6e 64 3b 0a 63 6d 5f 65 6c 65 6d 65 6e 74 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20   ┆end; cm_element: begin emitexpr ┆
0x037040…037060             28 6c 65 66 74 29 3b 0a 65 6d 69 74 20 28 78 73 65 74 65 78 70 72 29 3b 0a 65 6d 69 74 65 78 70   ┆(left); emit (xsetexpr); emitexp┆
0x037060…037080             72 20 28 72 69 67 74 68 29 3b 0a 65 6d 69 74 20 28 78 69 6e 63 6c 75 64 65 72 61 6e 67 65 29 3b   ┆r (rigth); emit (xincluderange);┆
0x037080…0370a0             0a 65 6e 64 3b 0a 63 65 6e 64 73 65 74 6c 69 73 74 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70   ┆ end; cendsetlist: begin emitexp┆
0x0370a0…0370c0             72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 75 6e 61 72 79 20 6f 70 65 72 61   ┆r (rigth);  (* note: unary opera┆
0x0370c0…0370e0             74 6f 72 20 2a 29 0a 28 2a 20 6e 6f 74 65 3a 20 70 61 73 73 34 20 77 69 6c 6c 20 67 65 6e 65 72   ┆tor *) (* note: pass4 will gener┆
0x0370e0…037100             61 74 65 20 69 74 73 20 6f 77 6e 20 74 79 70 65 20 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 75 73   ┆ate its own type description, us┆
0x037100…037120             69 6e 67 20 74 68 69 73 20 74 79 70 65 2d 6e 69 78 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 65 6e   ┆ing this type-nix *) emitid (xen┆
0x037120…037140             64 73 65 74 2c 20 6f 70 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 69 66 20 65 78 70 72 5f 72 65 6c 65   ┆dset, op_typename); if expr_rele┆
0x037140…037160             61 73 65 20 74 68 65 6e 0a 69 66 20 6e 6f 74 20 63 6f 6e 73 74 5f 64 65 63 6c 20 74 68 65 6e 20   ┆ase then if not const_decl then ┆
0x037160…037180             20 28 2a 20 64 6f 6e 74 27 74 20 72 65 6c 65 61 73 65 2c 20 77 68 65 6e 20 63 6f 6e 73 74 2d 64   ┆ (* dont't release, when const-d┆
0x037180…0371a0             65 63 6c 61 72 61 74 69 6f 6e 20 2a 29 0a 72 65 6c 65 61 73 65 6e 61 6d 65 73 20 28 6f 70 5f 74   ┆eclaration *) releasenames (op_t┆
0x0371a0…0371c0             79 70 65 6e 61 6d 65 29 3b 20 28 2a 20 62 65 63 61 75 73 65 20 69 74 20 77 61 73 20 61 20 74 65   ┆ypename); (* because it was a te┆
0x0371c0…0371e0             6d 70 6f 72 61 72 79 20 2a 29 0a 65 6e 64 3b 0a 0a 0a 63 66 69 65 6c 64 3a 0a 62 65 67 69 6e 0a   ┆mporary *) end;   cfield: begin ┆
0x0371e0…037200             65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 62 3a 20 66 69 65 6c 64 20   ┆emitexpr (rigth);  (* nb: field ┆
0x037200…037220 (14, 1, 7)  69 73 20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 20 28 78 66 69 65 6c   ┆is unary operator *) emit (xfiel┆
0x037220…037240             64 29 3b 0a 65 6d 69 74 69 6e 20 28 6f 70 5f 6e 61 6d 65 5e 2e 6e 69 78 20 29 3b 20 20 20 20 20   ┆d); emitin (op_name^.nix );     ┆
0x037240…037260             28 2a 20 66 69 65 6c 64 20 6e 61 6d 65 20 2a 29 0a 65 6d 69 74 69 6e 20 28 6f 70 5f 74 79 70 65   ┆(* field name *) emitin (op_type┆
0x037260…037280             6e 61 6d 65 5e 2e 6e 69 78 29 3b 20 28 2a 20 66 69 65 6c 64 20 74 79 70 65 20 6e 61 6d 65 20 2a   ┆name^.nix); (* field type name *┆
0x037280…0372a0             29 0a 65 6e 64 3b 0a 0a 0a 63 75 70 61 72 72 6f 77 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70   ┆) end;   cuparrow: begin emitexp┆
0x0372a0…0372c0             72 20 28 72 69 67 74 68 29 3b 20 28 2a 20 6e 62 3a 20 75 70 61 72 72 6f 77 20 69 73 20 75 6e 61   ┆r (rigth); (* nb: uparrow is una┆
0x0372c0…0372e0             72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 61 72 72 6f 77 2c 20 6f   ┆ry operator *) emitid (xarrow, o┆
0x0372e0…037300             70 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 72 61 6e 67 65 3a 0a 62 65 67 69 6e   ┆p_typename); end;  crange: begin┆
0x037300…037320             0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 75 6e 61   ┆ emitexpr (rigth);  (* note: una┆
0x037320…037340             72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 72 61 6e 67 65 2c 20 6f   ┆ry operator *) emitid (xrange, o┆
0x037340…037360             70 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 63 65 72 72 6f 72 61 72 67 2c 20 28   ┆p_typename); end;   cerrorarg, (┆
0x037360…037380             2a 20 6d 69 64 6c 65 72 74 69 64 69 67 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆* midlertidig ******************┆
0x037380…0373a0             2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 2a 29 0a 63 69 6e 64 65 78 3a 0a   ┆******************** *) cindex: ┆
0x0373a0…0373c0             62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 6c 65 66 74 29 3b 20 28 2a 20 61 72 72 61 79 20   ┆begin emitexpr (left); (* array ┆
0x0373c0…0373e0             6e 61 6d 65 20 65 74 63 20 2a 29 0a 65 6d 69 74 20 28 78 69 6e 64 65 78 65 78 70 72 29 3b 0a 65   ┆name etc *) emit (xindexexpr); e┆
0x0373e0…037400             6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 28 2a 20 69 6e 64 65 78 20 65 78 70 72 65 73   ┆mitexpr (rigth); (* index expres┆
0x037400…037420 (14, 1, 8)  73 69 6f 6e 20 2a 29 0a 65 6d 69 74 20 28 78 69 6e 64 65 78 29 3b 0a 65 6d 69 74 69 6e 20 28 6f   ┆sion *) emit (xindex); emitin (o┆
0x037420…037440             70 5f 6e 61 6d 65 5e 2e 6e 69 78 29 3b 20 20 20 20 20 28 2a 20 61 72 72 61 79 20 74 79 70 65 20   ┆p_name^.nix);     (* array type ┆
0x037440…037460             6e 61 6d 65 20 2a 29 0a 65 6d 69 74 69 6e 20 28 6f 70 5f 74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78   ┆name *) emitin (op_typename^.nix┆
0x037460…037480             29 3b 20 28 2a 20 65 6c 65 6d 65 6e 74 20 74 79 70 65 20 6e 61 6d 65 20 2a 29 0a 65 6e 64 3b 0a   ┆); (* element type name *) end; ┆
0x037480…0374a0             0a 0a 63 70 72 6f 63 65 73 73 61 72 67 75 6d 65 6e 74 3a 0a 62 65 67 69 6e 0a 28 2a 20 70 61 72   ┆  cprocessargument: begin (* par┆
0x0374a0…0374c0             61 6d 65 74 65 72 2c 20 64 65 73 63 72 69 62 69 6e 67 20 61 20 70 72 6f 63 65 73 73 2d 27 63 61   ┆ameter, describing a process-'ca┆
0x0374c0…0374e0             6c 6c 27 20 2a 29 0a 28 2a 20 65 6d 69 74 20 74 68 65 20 61 72 67 75 6d 65 6e 74 2d 65 78 70 72   ┆ll' *) (* emit the argument-expr┆
0x0374e0…037500             65 73 73 69 6f 6e 20 61 74 20 6f 6e 63 65 20 28 69 2e 65 2e 20 74 68 65 20 70 72 6f 63 65 73 73   ┆ession at once (i.e. the process┆
0x037500…037520             2d 70 61 72 61 6d 73 29 20 2a 29 0a 28 2a 20 61 6e 64 20 74 68 65 6e 20 6c 61 74 65 72 20 73 69   ┆-params) *) (* and then later si┆
0x037520…037540             6d 75 6c 61 74 65 20 61 20 6e 6f 72 6d 61 6c 20 61 72 67 75 6d 65 6e 74 20 2a 29 0a 65 6d 69 74   ┆mulate a normal argument *) emit┆
0x037540…037560             20 28 78 70 72 6f 63 65 73 73 70 61 72 61 6d 29 3b 0a 65 6d 69 74 20 28 78 76 61 72 70 6f 69 6e   ┆ (xprocessparam); emit (xvarpoin┆
0x037560…037580             74 65 72 29 3b 0a 65 6d 69 74 69 6e 20 28 6f 70 5f 74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78 29 3b   ┆ter); emitin (op_typename^.nix);┆
0x037580…0375a0             20 20 28 2a 20 74 65 6d 70 20 76 61 72 2c 20 66 6f 72 20 61 64 64 72 65 73 73 69 6e 67 20 74 68   ┆  (* temp var, for addressing th┆
0x0375a0…0375c0             65 20 27 70 72 6f 63 65 73 73 72 65 63 27 20 2a 29 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74   ┆e 'processrec' *) emitexpr (rigt┆
0x0375c0…0375e0             68 29 3b 20 20 28 2a 20 65 6d 69 74 20 74 68 65 20 70 72 6f 63 65 73 73 2d 70 61 72 61 6d 73 20   ┆h);  (* emit the process-params ┆
0x0375e0…037600             2a 29 0a 0a 65 6d 69 74 20 28 78 61 72 67 6c 69 73 74 73 69 7a 65 29 3b 0a 65 6d 69 74 65 78 70   ┆*)  emit (xarglistsize); emitexp┆
0x037600…037620 (14, 1, 9)  72 20 28 6c 65 66 74 29 3b 20 20 28 2a 20 70 72 65 76 69 6f 75 73 20 72 6f 75 74 69 6e 65 2d 69   ┆r (left);  (* previous routine-i┆
0x037620…037640             64 65 6e 74 20 61 6e 64 20 61 72 67 75 6d 65 6e 74 73 20 2a 29 0a 65 6e 64 3b 0a 0a 0a 63 61 72   ┆dent and arguments *) end;   car┆
0x037640…037660             67 75 6d 65 6e 74 3a 0a 62 65 67 69 6e 0a 28 2a 20 61 72 67 75 6d 65 6e 74 2d 6c 69 73 74 20 6f   ┆gument: begin (* argument-list o┆
0x037660…037680             66 20 72 6f 75 74 69 6e 65 20 63 61 6c 6c 20 2a 29 0a 65 6d 69 74 65 78 70 72 20 28 6c 65 66 74   ┆f routine call *) emitexpr (left┆
0x037680…0376a0             29 3b 20 20 28 2a 20 70 72 65 76 69 6f 75 73 20 72 6f 75 74 69 6e 65 2d 69 64 65 6e 74 20 61 6e   ┆);  (* previous routine-ident an┆
0x0376a0…0376c0             64 20 61 72 67 75 6d 65 6e 74 73 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 61 63 74 75 61 6c 2c 20   ┆d arguments *) emitid (xactual, ┆
0x0376c0…0376e0             6f 70 5f 6e 61 6d 65 29 3b 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 28 2a 20 61   ┆op_name); emitexpr (rigth); (* a┆
0x0376e0…037700             72 67 75 6d 65 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 20 2a 29 0a 65 6d 69 74 20 28 78 65 6e 64   ┆rgument expression *) emit (xend┆
0x037700…037720             61 63 74 75 61 6c 29 3b 0a 65 6e 64 3b 0a 0a 0a 63 64 6f 75 62 6c 65 70 61 72 61 6d 3a 0a 62 65   ┆actual); end;   cdoubleparam: be┆
0x037720…037740             67 69 6e 0a 28 2a 20 75 73 65 64 20 66 6f 72 20 72 65 70 65 74 69 74 69 6f 6e 20 69 6e 20 73 74   ┆gin (* used for repetition in st┆
0x037740…037760             72 75 63 74 75 72 65 64 20 61 72 72 61 79 2d 76 61 6c 75 65 73 20 2a 29 0a 65 6d 69 74 65 78 70   ┆ructured array-values *) emitexp┆
0x037760…037780             72 20 28 6c 65 66 74 29 3b 20 20 28 2a 20 65 6d 69 74 20 72 65 70 65 61 74 2d 76 61 6c 75 65 20   ┆r (left);  (* emit repeat-value ┆
0x037780…0377a0             2a 29 0a 65 6d 69 74 20 28 78 74 69 6d 65 73 29 3b 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74   ┆*) emit (xtimes); emitexpr (rigt┆
0x0377a0…0377c0             68 29 3b 20 28 2a 20 65 6d 69 74 20 74 68 65 20 73 74 72 75 63 2d 76 61 6c 75 65 20 2a 29 0a 65   ┆h); (* emit the struc-value *) e┆
0x0377c0…0377e0             6e 64 3b 0a 0a 0a 63 65 6e 64 76 61 72 69 61 62 6c 65 3a 0a 62 65 67 69 6e 20 28 2a 20 6d 61 64   ┆nd;   cendvariable: begin (* mad┆
0x0377e0…037800             65 20 62 79 20 27 63 65 6e 64 76 61 72 69 61 62 6c 65 27 2c 20 69 66 20 61 66 74 65 72 20 66 75   ┆e by 'cendvariable', if after fu┆
0x037800…037820 (14, 1, 10) 6e 63 74 69 6f 6e 20 63 61 6c 6c 20 2a 29 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b   ┆nction call *) emitexpr (rigth);┆
0x037820…037840             20 20 28 2a 20 6e 6f 74 65 3a 20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69   ┆  (* note: unary operator *) emi┆
0x037840…037860             74 20 28 78 65 6e 64 66 75 6e 63 63 61 6c 6c 29 3b 0a 65 6e 64 3b 0a 0a 0a 63 73 74 72 75 63 61   ┆t (xendfunccall); end;   cstruca┆
0x037860…037880             72 72 61 79 2c 0a 63 73 74 72 75 63 72 65 63 6f 72 64 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 62 6f   ┆rray, cstrucrecord: begin emitbo┆
0x037880…0378a0             74 68 3b 20 20 28 2a 20 65 6d 69 74 20 70 72 65 76 69 6f 75 73 20 73 74 72 75 63 2d 65 6c 65 6d   ┆th;  (* emit previous struc-elem┆
0x0378a0…0378c0             65 6e 74 73 20 61 6e 64 20 76 61 6c 75 65 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 29 0a 65 6d 69 74   ┆ents and value component *) emit┆
0x0378c0…0378e0             69 64 20 28 78 73 74 72 75 63 2c 20 6f 70 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a   ┆id (xstruc, op_typename); end;  ┆
0x0378e0…037900             0a 63 65 6e 64 73 74 72 75 63 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74   ┆ cendstruc: begin emitexpr (rigt┆
0x037900…037920             68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 69 74 20 69 73 20 61 6e 20 75 6e 61 72 79 20 6f 70 65   ┆h);  (* note: it is an unary ope┆
0x037920…037940             72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 20 28 78 65 6e 64 73 74 72 75 63 29 3b 0a 65 6e 64 3b 0a   ┆rator *) emit (xendstruc); end; ┆
0x037940…037960             0a 63 65 6e 64 61 73 73 69 67 6e 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 20 28 78 61 73 73 69 67 6e   ┆ cendassign: begin emit (xassign┆
0x037960…037980             73 74 61 74 29 3b 0a 65 6d 69 74 65 78 70 72 20 28 6c 65 66 74 29 3b 20 20 20 28 2a 20 76 61 72   ┆stat); emitexpr (left);   (* var┆
0x037980…0379a0             69 61 62 6c 65 20 2a 29 0a 65 6d 69 74 20 28 78 62 65 63 6f 6d 65 73 29 3b 0a 65 6d 69 74 65 78   ┆iable *) emit (xbecomes); emitex┆
0x0379a0…0379c0             70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 65 78 70 72 65 73 73 69 6f 6e 20 2a 29 0a 65 6d   ┆pr (rigth);  (* expression *) em┆
0x0379c0…0379e0             69 74 20 28 78 61 73 73 69 67 6e 29 3b 0a 65 6e 64 3b 0a 0a 63 65 6e 64 65 78 63 68 61 6e 67 65   ┆it (xassign); end;  cendexchange┆
0x0379e0…037a00             3a 0a 62 65 67 69 6e 0a 65 6d 69 74 20 28 78 65 78 63 68 61 6e 67 65 73 74 61 74 29 3b 0a 65 6d   ┆: begin emit (xexchangestat); em┆
0x037a00…037a20 (14, 1, 11) 69 74 65 78 70 72 20 28 6c 65 66 74 29 3b 20 20 20 28 2a 20 6c 65 66 74 68 61 6e 64 20 76 61 72   ┆itexpr (left);   (* lefthand var┆
0x037a20…037a40             69 61 62 6c 65 20 2a 29 0a 65 6d 69 74 20 28 78 62 65 63 6f 6d 65 73 29 3b 0a 65 6d 69 74 65 78   ┆iable *) emit (xbecomes); emitex┆
0x037a40…037a60             70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 72 69 67 74 68 68 61 6e 64 20 76 61 72 69 61 62   ┆pr (rigth);  (* rigthhand variab┆
0x037a60…037a80             6c 65 20 2a 29 0a 65 6d 69 74 20 28 78 65 78 63 68 61 6e 67 65 29 3b 0a 65 6e 64 3b 0a 0a 63 72   ┆le *) emit (xexchange); end;  cr┆
0x037a80…037aa0             61 6e 67 65 66 69 72 73 74 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 6c 65 66 74 29   ┆angefirst: begin emitexpr (left)┆
0x037aa0…037ac0             3b 20 20 28 2a 20 66 69 72 73 74 20 72 61 6e 67 65 20 2a 29 0a 65 6d 69 74 20 28 78 67 65 74 65   ┆;  (* first range *) emit (xgete┆
0x037ac0…037ae0             78 70 72 29 3b 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 28 2a 20 6c 61 73 74 20   ┆xpr); emitexpr (rigth); (* last ┆
0x037ae0…037b00             72 61 6e 67 65 20 2a 29 0a 65 6e 64 3b 0a 0a 63 70 6c 75 73 3a 20 20 20 65 6d 69 74 5f 61 72 69   ┆range *) end;  cplus:   emit_ari┆
0x037b00…037b20             74 68 20 28 78 61 64 64 29 3b 0a 63 6d 69 6e 75 73 3a 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28   ┆th (xadd); cminus:  emit_arith (┆
0x037b20…037b40             78 73 75 62 29 3b 0a 63 73 74 61 72 3a 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 6d 75 6c   ┆xsub); cstar:   emit_arith (xmul┆
0x037b40…037b60             29 3b 0a 63 73 6c 61 73 68 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a   ┆); cslash,                    (*┆
0x037b60…037b80             20 75 6e 74 69 6c 20 66 75 72 74 68 65 72 20 73 61 6d 65 20 61 73 20 64 69 76 2e 2e 2e 20 2a 29   ┆ until further same as div... *)┆
0x037b80…037ba0             0a 63 64 69 76 3a 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 64 69 76 29 3b 0a 63 6d 6f   ┆ cdiv:    emit_arith (xdiv); cmo┆
0x037ba0…037bc0             64 3a 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 6d 6f 64 29 3b 0a 63 73 68 69 66 74 3a   ┆d:    emit_arith (xmod); cshift:┆
0x037bc0…037be0             20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 73 68 69 66 74 29 3b 0a 63 65 71 3a 20 20 20 20 20   ┆  emit_arith (xshift); ceq:     ┆
0x037be0…037c00             65 6d 69 74 5f 61 72 69 74 68 20 28 78 65 71 29 3b 0a 63 6e 65 3a 20 20 20 20 20 65 6d 69 74 5f   ┆emit_arith (xeq); cne:     emit_┆
0x037c00…037c20 (14, 1, 12) 61 72 69 74 68 20 28 78 6e 65 29 3b 0a 63 6c 74 3a 20 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68   ┆arith (xne); clt:     emit_arith┆
0x037c20…037c40             20 28 78 6c 74 29 3b 0a 63 6c 65 3a 20 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 6c 65   ┆ (xlt); cle:     emit_arith (xle┆
0x037c40…037c60             29 3b 0a 63 67 74 3a 20 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 67 74 29 3b 0a 63 67   ┆); cgt:     emit_arith (xgt); cg┆
0x037c60…037c80             65 3a 20 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 67 65 29 3b 0a 63 69 6e 3a 20 20 20   ┆e:     emit_arith (xge); cin:   ┆
0x037c80…037ca0             20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 69 6e 29 3b 0a 63 6f 72 3a 20 20 20 20 20 65 6d 69   ┆  emit_arith (xin); cor:     emi┆
0x037ca0…037cc0             74 5f 61 72 69 74 68 20 28 78 6f 72 5f 29 3b 0a 63 78 6f 72 3a 20 20 20 20 62 65 67 69 6e 0a 69   ┆t_arith (xor_); cxor:    begin i┆
0x037cc0…037ce0             66 20 74 61 72 67 65 74 5f 6d 61 63 68 69 6e 65 20 3d 20 74 61 72 67 65 74 7a 38 30 20 74 68 65   ┆f target_machine = targetz80 the┆
0x037ce0…037d00             6e 20 65 72 72 6f 72 28 20 6e 6f 74 5f 69 6d 70 6c 65 6d 65 6e 74 65 64 5f 6f 6e 5f 7a 38 30 20   ┆n error( not_implemented_on_z80 ┆
0x037d00…037d20             29 3b 0a 65 6d 69 74 5f 61 72 69 74 68 20 28 78 78 6f 72 29 3b 0a 65 6e 64 3b 0a 63 61 6e 64 3a   ┆); emit_arith (xxor); end; cand:┆
0x037d20…037d40             20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 61 6e 64 29 3b 0a 63 6e 6f 74 3a 20 20 20 20   ┆    emit_arith (xand); cnot:    ┆
0x037d40…037d60             65 6d 69 74 5f 61 72 69 74 68 20 28 78 6e 6f 74 29 3b 0a 63 75 6d 69 6e 75 73 3a 20 65 6d 69 74   ┆emit_arith (xnot); cuminus: emit┆
0x037d60…037d80             5f 61 72 69 74 68 20 28 78 6e 65 67 29 3b 0a 63 75 70 6c 75 73 3a 20 20 65 6d 69 74 65 78 70 72   ┆_arith (xneg); cuplus:  emitexpr┆
0x037d80…037da0             20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 62 6c 69 6e 64 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a   ┆ (rigth);  (* blind operator *) ┆
0x037da0…037dc0             0a 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70   ┆  else if compilertest then comp┆
0x037dc0…037de0             5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f 6f 70 63 6f 64 65 29 3b 0a 65 6e 64 3b 20 28 2a   ┆_error (unknown_opcode); end; (*┆
0x037de0…037e00             20 63 61 73 65 20 6f 70 63 6f 64 65 20 6f 66 20 6f 70 61 6e 64 20 2a 29 0a 0a 69 66 20 6f 70 5f   ┆ case opcode of opand *)  if op_┆
0x037e00…037e20 (14, 1, 13) 74 79 70 65 6e 61 6d 65 5e 2e 6e 61 6d 65 6b 69 6e 64 3d 63 65 78 74 70 72 6f 63 65 73 73 20 74   ┆typename^.namekind=cextprocess t┆
0x037e20…037e40             68 65 6e 0a 65 6d 69 74 28 78 74 65 6d 70 6f 69 6e 74 65 72 29 3b 0a 0a 69 66 20 74 65 73 74 6f   ┆hen emit(xtempointer);  if testo┆
0x037e40…037e60             75 74 70 75 74 20 74 68 65 6e 20 63 6f 6e 74 69 6e 75 65 5f 6c 69 6e 65 3b 0a 0a 69 66 20 65 78   ┆utput then continue_line;  if ex┆
0x037e60…037e80             70 72 5f 72 65 6c 65 61 73 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6f 70 5f 76 61 6c 75   ┆pr_release then begin if op_valu┆
0x037e80…037ea0             65 20 3c 3e 20 6e 69 6c 73 74 72 69 6e 67 20 74 68 65 6e 0a 72 65 6c 65 61 73 65 5f 73 74 72 69   ┆e <> nilstring then release_stri┆
0x037ea0…037ec0             6e 67 20 28 6f 70 5f 76 61 6c 75 65 29 3b 0a 69 66 20 65 78 70 72 20 3d 20 73 74 61 63 6b 74 6f   ┆ng (op_value); if expr = stackto┆
0x037ec0…037ee0             70 20 74 68 65 6e 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 6e 65 78 74 3b 0a 6e 65 78 74 3a 3d 20 66   ┆p then stacktop:= next; next:= f┆
0x037ee0…037f00             72 65 65 6f 70 61 6e 64 73 3b 0a 66 72 65 65 6f 70 61 6e 64 73 3a 3d 20 65 78 70 72 3b 0a 65 6e   ┆reeopands; freeopands:= expr; en┆
0x037f00…037f20             64 3b 0a 0a 65 78 70 72 5f 6c 65 76 65 6c 3a 3d 20 65 78 70 72 5f 6c 65 76 65 6c 20 2d 20 31 3b   ┆d;  expr_level:= expr_level - 1;┆
0x037f20…037f40             0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 65 78 70 72 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20   ┆  end; (* with expr *)  end; (* ┆
0x037f40…037f60             70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 65 78 70 72 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75   ┆procedure emitexpr *)    procedu┆
0x037f60…037f80             72 65 20 65 6d 69 74 5f 61 6e 64 5f 72 65 6c 65 61 73 65 20 28 65 78 70 72 3a 20 6f 70 61 6e 64   ┆re emit_and_release (expr: opand┆
0x037f80…037fa0             70 74 72 29 3b 0a 28 2a 20 65 6d 69 74 73 20 2d 20 61 6e 64 20 72 65 6c 65 61 73 65 73 20 2d 20   ┆ptr); (* emits - and releases - ┆
0x037fa0…037fc0             74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 2a 29 0a 62 65 67 69 6e 0a 65 78 70 72 5f 72 65 6c   ┆the expression *) begin expr_rel┆
0x037fc0…037fe0             65 61 73 65 3a 3d 20 74 72 75 65 3b 0a 65 6d 69 74 65 78 70 72 20 28 65 78 70 72 29 3b 0a 65 78   ┆ease:= true; emitexpr (expr); ex┆
0x037fe0…038000             70 72 5f 72 65 6c 65 61 73 65 3a 3d 20 66 61 6c 73 65 3b 0a 0a 28 2a 20 69 6e 20 63 61 73 65 20   ┆pr_release:= false;  (* in case ┆
0x038000…038020 (14, 1, 14) 73 74 61 63 6b 74 6f 70 20 68 61 73 20 62 65 65 6e 20 75 70 64 61 74 65 64 2c 20 6e 6f 77 20 75   ┆stacktop has been updated, now u┆
0x038020…038040             70 64 61 74 65 20 6e 65 78 74 74 6f 70 20 2a 29 0a 69 66 20 73 74 61 63 6b 74 6f 70 3d 6e 69 6c   ┆pdate nexttop *) if stacktop=nil┆
0x038040…038060             20 74 68 65 6e 0a 62 65 67 69 6e 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b   ┆ then begin stacktop:= nilopand;┆
0x038060…038080             0a 6e 65 78 74 74 6f 70 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 65 6e 64 0a 65 6c 73 65 0a 6e 65   ┆ nexttop:= nilopand; end else ne┆
0x038080…0380a0             78 74 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 20 5e 20 2e 20 6e 65 78 74 3b 0a 0a 65 6e 64 3b   ┆xttop:= stacktop ^ . next;  end;┆
0x0380a0…0380c0             0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 72 65 70 61 72 65 5f 73 74 61 74 65 6d 65 6e 74 3b   ┆    procedure prepare_statement;┆
0x0380c0…0380e0             0a 28 2a 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 20 77 69 6c 6c 20 65 6d 69 74 20 61 6c 6c 20   ┆ (* the procedure will emit all ┆
0x0380e0…038100             70 65 6e 64 69 6e 67 20 65 78 70 72 65 73 73 69 6f 6e 73 20 20 2a 29 0a 28 2a 20 2e 2e 2e 2e 20   ┆pending expressions  *) (* .... ┆
0x038100…038120             62 75 74 20 6d 61 79 62 65 20 69 74 20 73 68 6f 75 6c 64 20 72 61 74 68 65 72 20 74 65 73 74 20   ┆but maybe it should rather test ┆
0x038120…038140             66 6f 72 20 70 65 6e 64 69 6e 67 20 65 78 70 72 65 73 73 69 6f 6e 73 20 3f 20 2a 29 0a 28 2a 2a   ┆for pending expressions ? *) (**┆
0x038140…038160             29 0a 28 2a 20 66 75 72 74 68 65 72 6d 6f 72 65 20 69 74 20 77 69 6c 6c 20 73 65 74 20 61 20 66   ┆) (* furthermore it will set a f┆
0x038160…038180             6c 61 67 2c 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 68 6f 77 20 2a 29 0a 28 2a   ┆lag, used to determine how *) (*┆
0x038180…0381a0             20 20 20 61 20 66 75 6e 63 74 69 6f 6e 2d 69 64 65 6e 74 69 66 69 65 72 20 73 68 6f 75 6c 64 20   ┆   a function-identifier should ┆
0x0381a0…0381c0             62 65 20 69 6e 74 65 72 70 72 65 74 65 64 20 20 20 20 20 20 20 20 20 2a 29 0a 0a 62 65 67 69 6e   ┆be interpreted         *)  begin┆
0x0381c0…0381e0             0a 77 68 69 6c 65 20 73 74 61 63 6b 74 6f 70 20 3c 3e 20 6e 69 6c 6f 70 61 6e 64 20 64 6f 0a 65   ┆ while stacktop <> nilopand do e┆
0x0381e0…038200             6d 69 74 5f 61 6e 64 5f 72 65 6c 65 61 73 65 20 28 73 74 61 63 6b 74 6f 70 29 3b 0a 62 65 66 6f   ┆mit_and_release (stacktop); befo┆
0x038200…038220 (14, 1, 15) 72 65 5f 61 73 73 69 67 6e 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64   ┆re_assign:= true; end;    proced┆
0x038220…038240             75 72 65 20 70 72 65 70 61 72 65 5f 65 78 70 72 65 73 73 69 6f 6e 3b 0a 28 2a 20 77 6f 72 6b 73   ┆ure prepare_expression; (* works┆
0x038240…038260             20 69 6e 20 63 6f 6f 72 70 6f 72 61 74 69 6f 6e 20 77 69 74 68 20 70 72 65 70 61 72 65 2d 73 74   ┆ in coorporation with prepare-st┆
0x038260…038280             61 74 65 6d 65 6e 74 20 2a 29 0a 0a 62 65 67 69 6e 0a 62 65 66 6f 72 65 5f 61 73 73 69 67 6e 3a   ┆atement *)  begin before_assign:┆
0x038280…0382a0             3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 74   ┆= false; end;    procedure emitt┆
0x0382a0…0382c0             79 70 65 20 28 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 6c 61 62 65 6c 20   ┆ype (xtypename: nameptr); label ┆
0x0382c0…0382e0             31 30 3b 20 28 2a 20 6c 6f 6f 70 20 69 6e 20 63 73 63 61 6c 61 72 20 2a 29 0a 76 61 72 20 6e 61   ┆10; (* loop in cscalar *) var na┆
0x0382e0…038300             6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 62 65 67 69 6e 0a 0a 77 69 74 68 20 20 78 74 79 70 65 6e   ┆me: nameptr; begin  with  xtypen┆
0x038300…038320             61 6d 65 20 5e 20 64 6f 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 0a 62 65 67 69 6e 20 0a 0a   ┆ame ^ do with  typ ^ do begin   ┆
0x038320…038340             69 66 20 65 6d 69 74 74 65 64 20 74 68 65 6e 0a 65 6d 69 74 69 64 20 28 78 74 79 70 65 2c 20 78   ┆if emitted then emitid (xtype, x┆
0x038340…038360             74 79 70 65 6e 61 6d 65 29 0a 65 6c 73 65 0a 69 66 20 66 6f 72 77 61 72 64 5f 64 65 63 6c 20 74   ┆typename) else if forward_decl t┆
0x038360…038380             68 65 6e 20 28 2a 20 66 6f 72 77 61 72 64 20 70 6f 69 6e 74 65 72 20 64 65 63 6c 61 72 61 74 69   ┆hen (* forward pointer declarati┆
0x038380…0383a0             6f 6e 20 2a 29 0a 65 6d 69 74 69 64 28 78 66 6f 72 77 61 72 64 70 6f 69 6e 74 65 72 2c 20 78 74   ┆on *) emitid(xforwardpointer, xt┆
0x0383a0…0383c0             79 70 65 6e 61 6d 65 29 0a 28 2a 20 65 6d 69 74 74 65 64 20 69 73 20 6e 6f 74 20 73 65 74 20 74   ┆ypename) (* emitted is not set t┆
0x0383c0…0383e0             6f 20 74 72 75 65 20 62 65 63 61 75 73 65 20 74 68 65 20 72 65 61 6c 20 64 65 66 69 6e 69 74 69   ┆o true because the real definiti┆
0x0383e0…038400             6f 6e 20 6d 75 73 74 20 62 65 0a 65 6d 69 74 74 65 64 20 69 6e 20 74 6f 74 61 6c 20 77 68 65 6e   ┆on must be emitted in total when┆
0x038400…038420 (15, 0, 1)  20 64 65 66 69 6e 65 64 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28 2a 20 74 68 69 73 20 69   ┆ defined *) else begin (* this i┆
0x038420…038440             73 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 74 68 65 20 74 79 70 65 6e 61 6d 65 20 69 73   ┆s the first time the typename is┆
0x038440…038460             20 65 6d 69 74 74 65 64 20 2a 29 0a 28 2a 20 20 20 65 6d 69 74 20 74 68 65 20 77 68 6f 6c 65 20   ┆ emitted *) (*   emit the whole ┆
0x038460…038480             64 65 66 69 6e 69 74 69 6f 6e 20 2a 29 0a 65 6d 69 74 74 65 64 3a 3d 20 74 72 75 65 3b 0a 0a 63   ┆definition *) emitted:= true;  c┆
0x038480…0384a0             61 73 65 20 74 79 70 65 6b 69 6e 64 20 6f 66 0a 0a 63 61 6c 69 61 73 3a 0a 62 65 67 69 6e 0a 28   ┆ase typekind of  calias: begin (┆
0x0384a0…0384c0             2a 20 6f 75 74 70 75 74 3a 20 20 3c 74 79 70 65 3e 20 20 72 65 64 65 66 74 79 70 65 28 6e 69 78   ┆* output:  <type>  redeftype(nix┆
0x0384c0…0384e0             29 20 2a 29 0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 65 6d 69 74 69 64 20   ┆) *) emittype (element); emitid ┆
0x0384e0…038500             28 78 72 65 64 65 66 74 79 70 65 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a   ┆(xredeftype, xtypename); end;   ┆
0x038500…038520             0a 63 73 63 61 6c 61 72 3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 28 20 73 63   ┆ cscalar: begin (* output:  ( sc┆
0x038520…038540             61 6c 61 72 69 64 28 6e 69 78 29 20 29 2a 20 20 73 63 61 6c 61 72 64 65 66 28 6e 69 78 29 20 20   ┆alarid(nix) )*  scalardef(nix)  ┆
0x038540…038560             20 2a 29 0a 6e 61 6d 65 3a 3d 20 65 6c 65 6d 65 6e 74 3b 20 28 2a 20 66 69 72 73 74 20 73 63 61   ┆ *) name:= element; (* first sca┆
0x038560…038580             6c 61 72 20 6e 61 6d 65 20 6f 66 20 73 63 61 6c 61 72 74 79 70 65 20 2a 29 0a 0a 31 30 3a 20 28   ┆lar name of scalartype *)  10: (┆
0x038580…0385a0             2a 20 6c 6f 6f 70 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 69 66 20 6e 61 6d   ┆* loop *) with  name ^ do if nam┆
0x0385a0…0385c0             65 6b 69 6e 64 20 3d 20 63 73 63 61 6c 61 72 65 6c 65 6d 20 74 68 65 6e 0a 28 2a 20 74 68 65 20   ┆ekind = cscalarelem then (* the ┆
0x0385c0…0385e0             73 63 61 6c 61 72 20 6e 61 6d 65 73 20 61 72 65 20 69 6e 20 74 68 65 20 63 6f 6d 6d 6f 6e 20 6e   ┆scalar names are in the common n┆
0x0385e0…038600             61 6d 65 6c 69 73 74 20 2a 29 0a 69 66 20 74 79 70 65 6e 61 6d 65 20 3d 20 78 74 79 70 65 6e 61   ┆amelist *) if typename = xtypena┆
0x038600…038620 (15, 0, 2)  6d 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 6d 69 74 69 64 20 28 78 73 63 61 6c 61 72 69 64 2c   ┆me then begin emitid (xscalarid,┆
0x038620…038640             20 6e 61 6d 65 29 3b 0a 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 20 20 28 2a 20 66 6f 6c   ┆ name); name:= nextname;  (* fol┆
0x038640…038660             6c 6f 77 20 63 68 61 69 6e 20 2a 29 0a 69 66 20 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 20   ┆low chain *) if testoutput then ┆
0x038660…038680             63 6f 6e 74 69 6e 75 65 5f 6c 69 6e 65 3b 0a 67 6f 74 6f 20 31 30 3b 20 20 28 2a 20 67 6f 74 6f   ┆continue_line; goto 10;  (* goto┆
0x038680…0386a0             20 6c 6f 6f 70 20 2a 29 0a 65 6e 64 3b 0a 0a 65 6d 69 74 69 64 20 28 78 73 63 61 6c 61 72 64 65   ┆ loop *) end;  emitid (xscalarde┆
0x0386a0…0386c0             66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 73 75 62 72 61 6e 67 65   ┆f, xtypename); end;    csubrange┆
0x0386c0…0386e0             3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 3c 65 78 70 72 3e 20 3c 65 78 70 72   ┆: begin (* output:  <expr> <expr┆
0x0386e0…038700             3e 20 73 75 62 64 65 66 28 74 79 70 65 6e 69 78 2c 20 65 6c 65 6d 65 6e 74 6e 69 78 29 20 2a 29   ┆> subdef(typenix, elementnix) *)┆
0x038700…038720             0a 65 6d 69 74 5f 61 6e 64 5f 72 65 6c 65 61 73 65 20 28 73 75 62 65 78 70 72 29 3b 20 20 28 2a   ┆ emit_and_release (subexpr);  (*┆
0x038720…038740             20 65 6d 69 74 20 62 6f 74 68 20 65 78 70 72 65 73 73 69 6f 6e 73 20 2a 29 0a 73 75 62 65 78 70   ┆ emit both expressions *) subexp┆
0x038740…038760             72 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 65 6d 69 74 69 64 20 28 78 73 75 62 64 65 66 2c 20 78   ┆r:= nilopand; emitid (xsubdef, x┆
0x038760…038780             74 79 70 65 6e 61 6d 65 29 3b 0a 65 6d 69 74 69 6e 20 28 69 6e 64 65 78 5e 2e 6e 69 78 29 3b 20   ┆typename); emitin (index^.nix); ┆
0x038780…0387a0             20 28 2a 20 6e 69 78 20 6f 66 20 65 6c 65 6d 65 6e 74 20 74 79 70 65 20 2a 29 0a 65 6e 64 3b 0a   ┆ (* nix of element type *) end; ┆
0x0387a0…0387c0             0a 0a 0a 63 70 6f 69 6e 74 65 72 3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 3c   ┆   cpointer: begin (* output:  <┆
0x0387c0…0387e0             74 79 70 65 3e 20 20 70 6f 69 6e 74 65 72 64 65 66 28 6e 69 78 29 20 20 2a 29 0a 65 6d 69 74 74   ┆type>  pointerdef(nix)  *) emitt┆
0x0387e0…038800             79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 65 6d 69 74 69 64 20 28 78 70 6f 69 6e 74 65 72 64   ┆ype (element); emitid (xpointerd┆
0x038800…038820 (15, 0, 3)  65 66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 72 65 61 64 6f 6e 6c   ┆ef, xtypename); end;    creadonl┆
0x038820…038840             79 3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 3c 74 79 70 65 3e 20 20 66 72 6f   ┆y: begin (* output:  <type>  fro┆
0x038840…038860             7a 65 6e 64 65 66 28 6e 69 78 29 20 20 2a 29 0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e   ┆zendef(nix)  *) emittype (elemen┆
0x038860…038880             74 29 3b 0a 65 6d 69 74 69 64 20 28 78 66 72 6f 7a 65 6e 64 65 66 2c 20 78 74 79 70 65 6e 61 6d   ┆t); emitid (xfrozendef, xtypenam┆
0x038880…0388a0             65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 61 72 72 61 79 3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74   ┆e); end;    carray: begin (* out┆
0x0388a0…0388c0             70 75 74 3a 20 20 3c 69 6e 64 65 78 74 79 70 65 3e 20 3c 65 6c 65 6d 65 6e 74 74 79 70 65 3e 20   ┆put:  <indextype> <elementtype> ┆
0x0388c0…0388e0             28 70 61 63 6b 65 64 29 20 61 72 72 61 79 64 65 66 28 6e 69 78 29 20 20 2a 29 0a 65 6d 69 74 74   ┆(packed) arraydef(nix)  *) emitt┆
0x0388e0…038900             79 70 65 20 28 69 6e 64 65 78 29 3b 0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b   ┆ype (index); emittype (element);┆
0x038900…038920             0a 69 66 20 70 61 63 6b 66 6c 61 67 20 28 2a 20 6f 66 20 61 72 72 61 79 20 74 79 70 65 20 2a 29   ┆ if packflag (* of array type *)┆
0x038920…038940             20 74 68 65 6e 0a 65 6d 69 74 69 64 20 28 78 70 61 63 6b 65 64 61 72 72 61 79 64 65 66 2c 20 78   ┆ then emitid (xpackedarraydef, x┆
0x038940…038960             74 79 70 65 6e 61 6d 65 29 0a 65 6c 73 65 0a 65 6d 69 74 69 64 20 28 78 61 72 72 61 79 64 65 66   ┆typename) else emitid (xarraydef┆
0x038960…038980             2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 72 65 63 6f 72 64 3a 0a 62   ┆, xtypename); end;    crecord: b┆
0x038980…0389a0             65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆egin (* output:                 ┆
0x0389a0…0389c0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0a 28 2a 20 20 20 70 61 63 6b 65 64   ┆                  *) (*   packed┆
0x0389c0…0389e0             72 65 63 6f 72 64 2f 72 65 63 6f 72 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆record/record                   ┆
0x0389e0…038a00             20 20 2a 29 0a 28 2a 20 20 20 20 20 28 20 66 69 65 6c 64 69 64 28 6e 69 78 29 20 20 3c 74 79 70   ┆  *) (*     ( fieldid(nix)  <typ┆
0x038a00…038a20 (15, 0, 4)  65 3e 20 20 66 69 65 6c 64 64 65 66 20 29 2a 20 20 20 2a 29 0a 28 2a 20 20 20 72 65 63 64 65 66   ┆e>  fielddef )*   *) (*   recdef┆
0x038a20…038a40             28 6e 69 78 29 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   ┆(nix)                           ┆
0x038a40…038a60             20 20 2a 29 0a 69 66 20 70 61 63 6b 66 6c 61 67 20 28 2a 20 6f 66 20 72 65 63 6f 72 64 20 74 79   ┆  *) if packflag (* of record ty┆
0x038a60…038a80             70 65 20 2a 29 20 74 68 65 6e 0a 65 6d 69 74 20 28 78 70 61 63 6b 65 64 72 65 63 6f 72 64 29 0a   ┆pe *) then emit (xpackedrecord) ┆
0x038a80…038aa0             65 6c 73 65 0a 65 6d 69 74 20 28 78 72 65 63 6f 72 64 29 3b 0a 0a 6e 61 6d 65 3a 3d 20 65 6c 65   ┆else emit (xrecord);  name:= ele┆
0x038aa0…038ac0             6d 65 6e 74 3b 20 20 28 2a 20 66 69 72 73 74 20 6e 61 6d 65 20 69 6e 20 66 69 65 6c 64 20 6c 69   ┆ment;  (* first name in field li┆
0x038ac0…038ae0             73 74 20 2a 29 0a 77 68 69 6c 65 20 6e 61 6d 65 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77   ┆st *) while name <> nilname do w┆
0x038ae0…038b00             69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 6b 69 6e 64   ┆ith  name ^ do begin if namekind┆
0x038b00…038b20             20 28 2a 20 6f 66 20 66 69 65 6c 64 6e 61 6d 65 2f 6c 6f 63 61 6c 20 74 79 70 65 64 65 66 20 2a   ┆ (* of fieldname/local typedef *┆
0x038b20…038b40             29 20 3d 20 63 72 65 63 66 69 65 6c 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 74 65 73 74   ┆) = crecfield then begin if test┆
0x038b40…038b60             6f 75 74 70 75 74 20 74 68 65 6e 20 63 6f 6e 74 69 6e 75 65 5f 6c 69 6e 65 3b 0a 65 6d 69 74 69   ┆output then continue_line; emiti┆
0x038b60…038b80             64 20 28 78 66 69 65 6c 64 69 64 2c 20 6e 61 6d 65 29 3b 0a 65 6d 69 74 74 79 70 65 20 28 74 79   ┆d (xfieldid, name); emittype (ty┆
0x038b80…038ba0             70 65 6e 61 6d 65 29 3b 0a 65 6d 69 74 20 28 78 66 69 65 6c 64 64 65 66 29 3b 0a 65 6e 64 3b 0a   ┆pename); emit (xfielddef); end; ┆
0x038ba0…038bc0             6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 20 20 28 2a 20 66 6f 6c 6c 6f 77 20 63 68 61 69   ┆name:= nextname;  (* follow chai┆
0x038bc0…038be0             6e 20 2a 29 0a 65 6e 64 3b 0a 0a 65 6d 69 74 69 64 20 28 78 72 65 63 64 65 66 2c 20 78 74 79 70   ┆n *) end;  emitid (xrecdef, xtyp┆
0x038be0…038c00             65 6e 61 6d 65 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 63 73 65 74 3a 0a 62 65 67 69 6e 0a 28 2a 20   ┆ename);  end;    cset: begin (* ┆
0x038c00…038c20 (15, 0, 5)  6f 75 74 70 75 74 3a 20 20 3c 74 79 70 65 3e 20 20 73 65 74 64 65 66 28 6e 69 78 29 20 20 2a 29   ┆output:  <type>  setdef(nix)  *)┆
0x038c20…038c40             0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 65 6d 69 74 69 64 20 28 78 73 65   ┆ emittype (element); emitid (xse┆
0x038c40…038c60             74 64 65 66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 70 6f 6f 6c 3a   ┆tdef, xtypename); end;    cpool:┆
0x038c60…038c80             0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 3c 65 78 70 72 3e 20 3c 74 79 70 65 3e   ┆ begin (* output:  <expr> <type>┆
0x038c80…038ca0             20 70 6f 6f 6c 64 65 66 28 6e 69 78 29 20 20 2a 29 0a 65 6d 69 74 5f 61 6e 64 5f 72 65 6c 65 61   ┆ pooldef(nix)  *) emit_and_relea┆
0x038ca0…038cc0             73 65 20 28 73 75 62 65 78 70 72 29 3b 0a 73 75 62 65 78 70 72 3a 3d 20 6e 69 6c 6f 70 61 6e 64   ┆se (subexpr); subexpr:= nilopand┆
0x038cc0…038ce0             3b 0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 65 6d 69 74 69 64 20 28 78 70   ┆; emittype (element); emitid (xp┆
0x038ce0…038d00             6f 6f 6c 64 65 66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 69 6e 74   ┆ooldef, xtypename); end;    cint┆
0x038d00…038d20             65 67 65 72 3a 0a 65 6d 69 74 69 64 20 28 78 69 6e 74 65 67 65 72 2c 20 78 74 79 70 65 6e 61 6d   ┆eger: emitid (xinteger, xtypenam┆
0x038d20…038d40             65 29 3b 0a 0a 0a 0a 63 72 65 61 6c 3a 0a 65 6d 69 74 69 64 20 28 78 72 65 61 6c 2c 20 78 74 79   ┆e);    creal: emitid (xreal, xty┆
0x038d40…038d60             70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 63 6e 69 6c 74 79 70 65 3a 0a 65 6d 69 74 69 64 20 28 78 6e   ┆pename);    cniltype: emitid (xn┆
0x038d60…038d80             69 6c 74 79 70 65 2c 78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 63 65 72 72 6f 72 6b 69 6e 64   ┆iltype,xtypename);    cerrorkind┆
0x038d80…038da0             3a 0a 65 6d 69 74 69 64 20 28 78 65 72 72 6f 72 74 79 70 65 2c 20 78 74 79 70 65 6e 61 6d 65 29   ┆: emitid (xerrortype, xtypename)┆
0x038da0…038dc0             3b 0a 0a 0a 0a 63 74 65 78 74 3a 0a 65 6d 69 74 69 64 20 28 78 73 74 72 69 6e 67 74 79 70 65 2c   ┆;    ctext: emitid (xstringtype,┆
0x038dc0…038de0             20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 65 6c 73 65 0a 69 66 20 74 72 75 65 20 74 68 65   ┆ xtypename);    else if true the┆
0x038de0…038e00             6e 20 77 72 69 74 65 28 27 20 75 6e 6b 6e 6f 77 6e 20 74 79 70 65 6b 69 6e 64 20 3d 20 27 2c 20   ┆n write(' unknown typekind = ', ┆
0x038e00…038e20 (15, 0, 6)  6f 72 64 20 28 74 79 70 65 6b 69 6e 64 29 29 20 65 6c 73 65 0a 63 6f 6d 70 5f 65 72 72 6f 72 28   ┆ord (typekind)) else comp_error(┆
0x038e20…038e40             75 6e 6b 6e 6f 77 6e 5f 74 79 70 65 6b 69 6e 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20   ┆unknown_typekind); end; (* case ┆
0x038e40…038e60             74 79 70 65 6b 69 6e 64 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 69 66 20 6e 6f 74 20 65 6d 69 74   ┆typekind *)  end; (* if not emit┆
0x038e60…038e80             74 65 64 20 79 65 74 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 74 79 70 2f 74 79 70   ┆ted yet *)  end; (* with typ/typ┆
0x038e80…038ea0             65 6e 61 6d 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74   ┆ename *)  end; (* procedure emit┆
0x038ea0…038ec0             74 79 70 65 20 2a 29 0a 0a 0c 0a 29 3b 0a 73 75 62 65 78 70 72 3a 3d 20 6e 69 6c 6f 70 61 6e 64   ┆type *)    ); subexpr:= nilopand┆
0x038ec0…038ee0             3b 0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 65 6d 69 74 69 64 20 28 78 70   ┆; emittype (element); emitid (xp┆
0x038ee0…038f00             6f 6f 6c 64 65 66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 69 6e 74   ┆ooldef, xtypename); end;    cint┆
0x038f00…038f20             65 67 65 72 3a 0a 65 6d 69 74 69 64 20 28 78 69 6e 74 65 67 65 72 2c 20 78 74 79 70 65 6e 61 6d   ┆eger: emitid (xinteger, xtypenam┆
0x038f20…038f40             65 29 3b 0a 0a 0a 0a 63 72 65 61 6c 3a 0a 65 6d 69 74 69 64 20 28 78 72 65 61 6c 2c 20 78 74 79   ┆e);    creal: emitid (xreal, xty┆
0x038f40…038f60             70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 63 6e 69 6c 74 79 70 65 3a 0a 65 6d 69 74 69 64 20 28 78 6e   ┆pename);    cniltype: emitid (xn┆
0x038f60…038f80             69 6c 74 79 70 65 2c 78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 63 65 72 72 6f 72 6b 69 6e 64   ┆iltype,xtypename);    cerrorkind┆
0x038f80…038fa0             3a 0a 65 6d 69 74 69 64 20 28 78 65 72 72 6f 72 74 79 70 65 2c 20 78 74 79 70 65 6e 61 6d 65 29   ┆: emitid (xerrortype, xtypename)┆
0x038fa0…038fc0             3b 0a 0a 0a 0a 63 74 65 78 74 3a 0a 65 6d 69 74 69 64 20 28 78 73 74 72 69 6e 67 74 79 70 65 2c   ┆;    ctext: emitid (xstringtype,┆
0x038fc0…038fe0             20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 65 6c 73 65 0a 69 66 20 74 72 75 65 20 74 68 65   ┆ xtypename);    else if true the┆
0x038fe0…039000             6e 20 77 72 69 74 65 28 27 20 75 6e 6b 6e 6f 77 6e 20 74 79 70 65 6b 69 6e 64 20 3d 20 27 2c 20   ┆n write(' unknown typekind = ', ┆
0x039000…039020 (15, 0, 7)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 78 70 34 69 6e 69 74 00 00 00 00 00 00 00   ┆../sw2103/src/rtp/xp4init       ┆
0x039020…039040             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x039060…039080             00 00 00 00 20 20 20 37 35 35 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       755     255     146      ┆
0x039080…0390a0             20 31 34 36 32 37 37 20 20 35 32 36 36 37 36 34 36 33 33 20 20 31 30 33 33 31 00 20 00 00 00 00   ┆ 146277  5266764633  10331      ┆
0x0390a0…0390c0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x039200…039220 (15, 0, 8)  0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ (*-----------------------------┆
0x039220…039240             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x039240…039260             2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39 32 20 20 44   ┆---- -- -- (C) Copyrigth 1992  D┆
0x039260…039280             41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 34 49 4e 49 54 2e 50 41 53 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d   ┆ANOSI -- -- P4INIT.PAS -- ------┆
0x039280…0392a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0392a0…0392c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d   ┆----------------------------- --┆
0x0392c0…0392e0             0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Revisions -- ---------------┆
0x0392e0…039300             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 36 2e 30 20 20 20 39 32 2e 30   ┆----------------- --  6.0   92.0┆
0x039300…039320             34 2e 30 39 20 20 45 42 4b 20 20 20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20 31 2e 31 32   ┆4.09  EBK   Used in release 1.12┆
0x039320…039340             0a 2d 2d 20 20 36 2e 30 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20   ┆ --  6.0   92.10.14  HEJ   SCCS ┆
0x039340…039360             61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆and UNIX used. -- --------------┆
0x039360…039380             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x039380…0393a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e   ┆--------------------- -- SCCS in┆
0x0393a0…0393c0             66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f   ┆formation -- File   :  %P% -- Mo┆
0x0393c0…0393e0             64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09   ┆dule :  %M% -- Version:  %I% -- ┆
0x0393e0…039400             44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆Date   :  %E%  %U% -------------┆
0x039400…039420 (15, 0, 9)  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x039420…039440             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 63 6f 6e 73 74   ┆---------------------- *)  const┆
0x039440…039460             0a 66 69 6c 72 65 63 5f 6d 61 78 20 3d 20 32 35 36 3b 0a 0a 76 65 72 73 69 6f 6e 70 61 73 73 34   ┆ filrec_max = 256;  versionpass4┆
0x039460…039480             3d 20 36 30 30 3b 0a 76 65 72 73 69 6f 6e 3d 20 27 52 45 41 4c 2d 54 49 4d 45 20 50 41 53 43 41   ┆= 600; version= 'REAL-TIME PASCA┆
0x039480…0394a0             4c 2c 20 70 61 73 73 34 2c 20 76 65 72 73 69 6f 6e 20 39 32 2e 30 34 2e 30 39 27 3b 0a 76 65 72   ┆L, pass4, version 92.04.09'; ver┆
0x0394a0…0394c0             73 69 6f 6e 70 61 73 73 33 20 3d 20 36 3b 20 20 20 20 28 2a 20 70 61 73 73 20 33 20 76 65 72 73   ┆sionpass3 = 6;    (* pass 3 vers┆
0x0394c0…0394e0             69 6f 6e 20 6d 75 73 74 20 62 65 20 36 2e 78 78 20 2a 29 0a 76 65 72 73 69 6f 6e 7a 38 30 20 20   ┆ion must be 6.xx *) versionz80  ┆
0x0394e0…039500             20 20 3d 20 66 61 6c 73 65 3b 20 28 2a 20 6e 6f 74 20 7a 38 30 20 2a 29 0a 6c 61 6d 62 64 61 76   ┆  = false; (* not z80 *) lambdav┆
0x039500…039520             65 72 73 69 6f 6e 20 3d 20 66 61 6c 73 65 3b 20 28 2a 20 6e 6f 74 20 6c 61 6d 62 64 61 20 2a 29   ┆ersion = false; (* not lambda *)┆
0x039520…039540             0a 28 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 75 73 74 20 62 65   ┆ (*                      must be┆
0x039540…039560             3a 20 72 63 33 35 30 32 2e 32 20 2a 29 0a 28 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆: rc3502.2 *) (*                ┆
0x039560…039580             20 20 20 62 6f 74 68 20 66 61 6c 73 65 20 3a 20 72 63 33 35 30 32 63 20 20 76 65 72 73 69 6f 6e   ┆   both false : rc3502c  version┆
0x039580…0395a0             20 2a 29 0a 0a 28 2a 73 74 64 20 76 61 72 69 61 62 6c 65 20 6c 65 6e 67 74 68 2c 20 61 6e 64 20   ┆ *)  (*std variable length, and ┆
0x0395a0…0395c0             6d 61 78 20 76 61 6c 75 65 73 20 2a 29 0a 0a 77 6f 72 64 5f 6c 65 6e 67 74 68 3d 32 3b 20 20 20   ┆max values *)  word_length=2;   ┆
0x0395c0…0395e0             20 20 20 20 62 79 74 65 5f 6c 65 6e 67 74 68 3d 31 3b 0a 63 68 61 72 5f 6c 65 6e 67 74 68 3d 31   ┆    byte_length=1; char_length=1┆
0x0395e0…039600             3b 0a 73 65 74 5f 63 6f 6e 73 74 5f 6c 65 6e 67 74 68 20 3d 20 36 34 3b 20 20 20 28 2a 20 77 6f   ┆; set_const_length = 64;   (* wo┆
0x039600…039620 (15, 0, 10) 72 64 73 20 2a 29 0a 28 2a 0a 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 2c 0a 61 63 74 69 76 61   ┆rds *) (* pointer_length, activa┆
0x039620…039640             74 69 6f 6e 5f 72 65 63 6f 72 64 5f 6c 65 6e 67 74 68 20 61 72 65 20 76 61 72 69 61 62 6c 65 73   ┆tion_record_length are variables┆
0x039640…039660             0a 2a 29 0a 0a 61 72 72 61 79 5f 74 65 6d 70 6c 61 74 65 5f 73 69 7a 65 20 3d 20 38 3b 0a 73 75   ┆ *)  array_template_size = 8; su┆
0x039660…039680             62 5f 74 65 6d 70 6c 61 74 65 5f 73 69 7a 65 20 20 20 3d 20 36 3b 0a 66 69 65 6c 64 5f 74 65 6d   ┆b_template_size   = 6; field_tem┆
0x039680…0396a0             70 6c 61 74 65 5f 73 69 7a 65 20 3d 20 32 3b 0a 72 65 63 6f 72 64 5f 74 65 6d 70 6c 61 74 65 5f   ┆plate_size = 2; record_template_┆
0x0396a0…0396c0             73 69 7a 65 20 3d 20 32 3b 0a 6c 6f 63 6b 6d 65 73 5f 74 65 6d 70 6c 5f 73 69 7a 65 3d 20 36 3b   ┆size = 2; lockmes_templ_size= 6;┆
0x0396c0…0396e0             20 28 2a 20 33 20 77 6f 72 64 73 20 66 6f 72 3a 20 66 69 72 73 74 2c 20 6c 61 73 74 2b 31 2c 20   ┆ (* 3 words for: first, last+1, ┆
0x0396e0…039700             63 6f 6d 70 75 74 65 64 20 74 6f 70 20 2a 29 0a 0a 62 69 74 73 5f 70 72 5f 62 79 74 65 3d 38 3b   ┆computed top *)  bits_pr_byte=8;┆
0x039700…039720             0a 62 69 74 73 5f 70 72 5f 77 6f 72 64 3d 31 36 3b 0a 6d 69 6e 5f 66 69 65 6c 64 73 5f 70 72 5f   ┆ bits_pr_word=16; min_fields_pr_┆
0x039720…039740             77 6f 72 64 20 3d 20 33 3b 0a 0a 6d 61 78 5f 62 79 74 65 5f 76 61 6c 75 65 20 3d 20 32 35 35 3b   ┆word = 3;  max_byte_value = 255;┆
0x039740…039760             0a 6d 6f 64 75 6c 65 5f 73 69 7a 65 20 3d 20 36 35 35 33 36 3b 20 20 28 2a 20 32 2a 2a 31 36 20   ┆ module_size = 65536;  (* 2**16 ┆
0x039760…039780             2a 29 0a 74 6f 70 5f 61 64 64 72 65 73 73 20 3d 20 36 35 35 33 35 3b 20 20 20 20 20 28 2a 20 6d   ┆*) top_address = 65535;     (* m┆
0x039780…0397a0             6f 64 75 6c 65 20 73 69 7a 65 20 2d 31 20 2a 29 0a 6d 61 78 5f 69 6e 74 20 3d 20 33 32 37 36 37   ┆odule size -1 *) max_int = 32767┆
0x0397a0…0397c0             3b 0a 6d 69 6e 5f 69 6e 74 20 3d 20 2d 33 32 37 36 38 3b 0a 0a 28 2a 20 6d 69 73 63 65 6c 6c 61   ┆; min_int = -32768;  (* miscella┆
0x0397c0…0397e0             6e 65 6f 75 73 20 2a 29 0a 0a 73 68 69 66 74 38 20 3d 20 32 35 36 3b 0a 73 68 69 66 74 31 36 20   ┆neous *)  shift8 = 256; shift16 ┆
0x0397e0…039800             3d 20 36 35 35 33 36 3b 0a 62 69 74 5f 30 5f 38 20 3d 20 2d 20 73 68 69 66 74 31 36 3b 20 28 2a   ┆= 65536; bit_0_8 = - shift16; (*┆
0x039800…039820 (15, 0, 11) 20 62 69 74 20 30 20 2d 20 38 20 69 6e 20 72 63 38 30 30 30 20 77 6f 72 64 20 2a 29 0a 73 70 73   ┆ bit 0 - 8 in rc8000 word *) sps┆
0x039820…039840             70 20 3d 20 38 32 32 34 3b 20 20 28 2a 20 73 74 72 69 6e 67 20 77 69 74 68 20 32 20 73 70 61 63   ┆p = 8224;  (* string with 2 spac┆
0x039840…039860             65 73 20 2a 29 0a 70 72 69 6e 74 5f 6c 69 6d 69 74 20 3d 20 31 35 3b 0a 0a 6d 61 78 5f 63 6f 6e   ┆es *) print_limit = 15;  max_con┆
0x039860…039880             73 74 5f 61 72 65 61 20 3d 20 31 30 30 30 3b 20 28 2a 20 73 69 7a 65 20 69 6e 20 77 6f 72 64 73   ┆st_area = 1000; (* size in words┆
0x039880…0398a0             20 6f 66 20 6f 6e 65 20 63 6f 6e 73 74 61 6e 74 20 62 75 66 66 65 72 20 2a 29 0a 70 61 63 6b 20   ┆ of one constant buffer *) pack ┆
0x0398a0…0398c0             3d 20 74 72 75 65 3b 0a 6e 6f 6e 5f 70 61 63 6b 20 3d 20 66 61 6c 73 65 3b 0a 74 68 69 73 5f 70   ┆= true; non_pack = false; this_p┆
0x0398c0…0398e0             61 73 73 20 3d 20 34 3b 0a 28 2a 20 63 6f 6e 73 74 61 6e 74 73 20 69 6e 20 70 61 73 73 20 34 20   ┆ass = 4; (* constants in pass 4 ┆
0x0398e0…039900             63 6f 64 65 20 2a 29 0a 0a 28 2a 20 76 61 6c 75 65 20 6f 66 20 74 79 70 65 5f 76 20 69 6e 20 70   ┆code *)  (* value of type_v in p┆
0x039900…039920             61 73 73 20 34 20 63 6f 64 65 20 20 2a 29 0a 0a 62 79 74 65 5f 74 79 70 20 3d 20 31 3b 20 20 20   ┆ass 4 code  *)  byte_typ = 1;   ┆
0x039920…039940             66 69 65 6c 64 5f 74 79 70 20 3d 20 35 3b 0a 77 6f 72 64 5f 74 79 70 20 3d 20 32 3b 20 20 20 61   ┆field_typ = 5; word_typ = 2;   a┆
0x039940…039960             64 64 72 5f 74 79 70 20 20 3d 20 36 3b 0a 70 6f 69 6e 74 5f 74 79 70 3d 20 33 3b 20 20 20 73 65   ┆ddr_typ  = 6; point_typ= 3;   se┆
0x039960…039980             74 5f 74 79 70 20 20 3d 20 37 3b 0a 64 6f 75 62 6c 65 5f 74 79 70 20 3d 20 34 3b 20 20 64 79 6e   ┆t_typ  = 7; double_typ = 4;  dyn┆
0x039980…0399a0             5f 74 79 70 20 20 3d 20 38 3b 0a 0a 28 2a 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65 5f 6f 20   ┆_typ  = 8;  (* values of type_o ┆
0x0399a0…0399c0             69 6e 20 70 61 73 73 20 34 20 63 6f 64 65 20 20 2a 29 0a 0a 62 6f 6f 6c 5f 74 79 70 20 3d 20 31   ┆in pass 4 code  *)  bool_typ = 1┆
0x0399c0…0399e0             3b 20 20 20 20 20 20 69 6e 74 5f 74 79 70 20 3d 20 32 3b 20 20 20 20 20 72 65 61 6c 5f 74 79 70   ┆;      int_typ = 2;     real_typ┆
0x0399e0…039a00             20 3d 20 33 3b 20 20 20 20 20 73 65 74 6f 66 5f 74 79 70 20 3d 20 34 3b 0a 70 6f 69 6e 74 65 72   ┆ = 3;     setof_typ = 4; pointer┆
0x039a00…039a20 (15, 0, 12) 5f 74 79 70 20 3d 20 35 3b 20 20 20 73 65 6d 5f 74 79 70 20 3d 20 36 3b 20 20 20 20 20 72 65 66   ┆_typ = 5;   sem_typ = 6;     ref┆
0x039a20…039a40             5f 74 79 70 20 3d 20 37 3b 20 20 20 20 20 20 73 68 61 64 6f 77 5f 74 79 70 20 3d 20 38 3b 0a 73   ┆_typ = 7;      shadow_typ = 8; s┆
0x039a40…039a60             63 61 6c 61 72 5f 74 79 70 20 3d 20 39 3b 0a 0a 28 2a 20 63 6f 6d 70 61 72 65 20 66 75 6e 63 74   ┆calar_typ = 9;  (* compare funct┆
0x039a60…039a80             69 6f 6e 20 6e 75 6d 62 65 72 20 69 6e 20 70 61 73 73 20 34 20 63 6f 64 65 20 20 20 2a 29 0a 0a   ┆ion number in pass 4 code   *)  ┆
0x039a80…039aa0             20 7a 65 71 20 3d 20 32 3b 20 7a 6e 65 20 3d 20 33 3b 20 7a 6c 74 20 3d 20 34 3b 20 0a 20 7a 67   ┆ zeq = 2; zne = 3; zlt = 4;   zg┆
0x039aa0…039ac0             74 20 3d 20 35 3b 20 7a 6c 65 20 3d 20 36 3b 20 7a 67 65 20 3d 20 37 3b 0a 20 7a 65 71 5f 73 65   ┆t = 5; zle = 6; zge = 7;  zeq_se┆
0x039ac0…039ae0             74 20 3d 20 38 3b 20 7a 6e 65 5f 73 65 74 20 3d 20 39 3b 20 7a 6c 65 5f 73 65 74 20 3d 20 31 30   ┆t = 8; zne_set = 9; zle_set = 10┆
0x039ae0…039b00             3b 0a 20 7a 67 65 5f 73 65 74 20 3d 20 31 31 3b 20 7a 69 6e 20 3d 20 31 32 3b 20 7a 65 71 5f 73   ┆;  zge_set = 11; zin = 12; zeq_s┆
0x039b00…039b20             74 72 75 63 20 3d 20 31 33 3b 0a 20 7a 6e 65 5f 73 74 72 75 63 20 3d 20 31 34 3b 0a 0a 28 2a 20   ┆truc = 13;  zne_struc = 14;  (* ┆
0x039b20…039b40             73 74 64 20 66 75 6e 63 74 69 6f 6e 20 6e 75 6d 62 65 72 20 69 6e 20 70 61 73 73 20 34 20 63 6f   ┆std function number in pass 4 co┆
0x039b40…039b60             64 65 20 20 20 20 20 20 20 2a 29 0a 0a 20 7a 6f 72 64 3d 20 31 3b 20 7a 73 75 63 63 3d 20 32 3b   ┆de       *)   zord= 1; zsucc= 2;┆
0x039b60…039b80             20 7a 70 72 65 64 3d 20 33 3b 20 7a 63 68 72 3d 20 34 3b 20 7a 6e 69 6c 3d 20 35 3b 20 7a 6e 69   ┆ zpred= 3; zchr= 4; znil= 5; zni┆
0x039b80…039ba0             6c 72 65 66 20 28 2a 20 6f 6e 6c 79 20 75 73 65 64 20 69 6e 20 72 65 76 20 63 20 2a 29 3d 20 36   ┆lref (* only used in rev c *)= 6┆
0x039ba0…039bc0             3b 0a 20 7a 6e 65 77 20 3d 20 37 3b 0a 0a 28 2a 20 6d 6f 64 65 20 66 6f 72 20 66 6f 72 20 73 74   ┆;  znew = 7;  (* mode for for st┆
0x039bc0…039be0             61 74 65 6d 65 6e 74 20 20 20 2a 29 0a 0a 20 7a 75 70 20 3d 20 31 3b 20 7a 64 6f 77 6e 20 3d 20   ┆atement   *)   zup = 1; zdown = ┆
0x039be0…039c00             32 3b 0a 0a 28 2a 20 65 78 70 6f 72 74 20 6e 61 6d 65 20 74 79 70 65 20 20 20 20 20 20 20 20 20   ┆2;  (* export name type         ┆
0x039c00…039c20 (15, 0, 13) 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0a 0a 6f 66 66 73 65 74 5f 74 79 70 65   ┆                 *)  offset_type┆
0x039c20…039c40             20 3d 20 31 3b 20 20 20 20 76 61 6c 75 65 5f 74 79 70 65 20 3d 20 32 3b 0a 0a 28 2a 20 65 6e 64   ┆ = 1;    value_type = 2;  (* end┆
0x039c40…039c60             20 70 61 73 73 20 34 20 63 6f 64 65 20 63 6f 6e 73 74 61 6e 74 73 20 2a 29 0a 0a 0a 0a 0a 0a 28   ┆ pass 4 code constants *)      (┆
0x039c60…039c80             2a 20 6c 69 74 65 72 61 6c 20 74 79 70 65 20 2a 29 0a 0a 6e 75 6d 5f 63 6f 6e 73 74 20 3d 20 31   ┆* literal type *)  num_const = 1┆
0x039c80…039ca0             3b 20 20 20 73 74 72 69 6e 67 5f 63 6f 6e 73 74 20 3d 20 32 3b 20 20 20 63 68 61 72 5f 63 6f 6e   ┆;   string_const = 2;   char_con┆
0x039ca0…039cc0             73 74 20 3d 20 33 3b 0a 0a 0a 0a 74 79 70 65 0a 66 69 6c 72 65 63 20 3d 20 61 72 72 61 79 5b 31   ┆st = 3;    type filrec = array[1┆
0x039cc0…039ce0             2e 2e 66 69 6c 72 65 63 5f 6d 61 78 5d 20 6f 66 20 69 6e 74 65 67 65 72 3b 0a 0a 70 61 73 73 33   ┆..filrec_max] of integer;  pass3┆
0x039ce0…039d00             63 6f 64 65 73 20 3d 0a 28 0a 78 66 69 72 73 74 63 6f 64 65 2c 0a 78 65 72 72 6f 72 2c 20 78 65   ┆codes = ( xfirstcode, xerror, xe┆
0x039d00…039d20             72 72 6f 72 74 65 78 74 2c 20 78 65 72 72 6f 72 6e 6f 2c 0a 78 6f 70 74 69 6f 6e 2c 0a 78 6e 65   ┆rrortext, xerrorno, xoption, xne┆
0x039d20…039d40             77 6c 69 6e 65 2c 0a 78 65 6f 6d 2c 0a 0a 78 65 6e 64 70 72 65 6c 75 64 65 2c 0a 0a 78 65 78 74   ┆wline, xeom,  xendprelude,  xext┆
0x039d40…039d60             65 72 6e 61 6c 2c 20 78 66 6f 72 77 61 72 64 2c 20 78 73 65 63 70 72 6f 63 69 64 2c 20 78 73 65   ┆ernal, xforward, xsecprocid, xse┆
0x039d60…039d80             63 66 75 6e 63 69 64 2c 0a 0a 78 70 72 6f 63 65 73 73 69 64 2c 20 78 70 72 6f 63 69 64 2c 20 78   ┆cfuncid,  xprocessid, xprocid, x┆
0x039d80…039da0             66 75 6e 63 69 64 2c 0a 78 63 6f 6e 73 74 69 64 2c 0a 0a 78 76 61 72 69 64 2c 20 78 69 6e 69 74   ┆funcid, xconstid,  xvarid, xinit┆
0x039da0…039dc0             63 6f 6e 73 74 2c 20 78 76 61 72 6c 69 73 74 2c 0a 0a 78 6c 61 62 65 6c 69 64 2c 0a 0a 78 75 6e   ┆const, xvarlist,  xlabelid,  xun┆
0x039dc0…039de0             64 65 63 6c 69 64 2c 0a 0a 78 62 6c 6f 63 6b 2c 20 78 65 78 63 65 70 74 69 6f 6e 2c 20 78 69 6e   ┆declid,  xblock, xexception, xin┆
0x039de0…039e00             69 74 62 6c 6f 63 6b 2c 20 78 65 6e 64 62 6c 6f 63 6b 2c 0a 0a 78 62 65 67 69 6e 63 6f 64 65 2c   ┆itblock, xendblock,  xbegincode,┆
0x039e00…039e20 (15, 0, 14) 20 78 63 6f 64 65 6c 69 6e 65 2c 20 78 65 6e 64 63 6f 64 65 2c 0a 0a 28 2a 20 73 74 64 20 74 79   ┆ xcodeline, xendcode,  (* std ty┆
0x039e20…039e40             70 65 73 20 2a 29 0a 78 69 6e 74 65 67 65 72 2c 20 78 72 65 61 6c 2c 20 78 6e 69 6c 74 79 70 65   ┆pes *) xinteger, xreal, xniltype┆
0x039e40…039e60             2c 20 78 65 72 72 6f 72 74 79 70 65 2c 20 78 73 74 72 69 6e 67 74 79 70 65 2c 0a 78 62 6f 6f 6c   ┆, xerrortype, xstringtype, xbool┆
0x039e60…039e80             65 61 6e 2c 20 78 73 68 61 64 6f 77 2c 20 78 72 65 66 65 72 65 6e 63 65 2c 20 78 73 65 6d 61 70   ┆ean, xshadow, xreference, xsemap┆
0x039e80…039ea0             68 6f 72 65 2c 0a 78 63 68 61 72 2c 0a 0a 28 2a 20 73 74 64 20 66 75 6e 63 74 69 6f 6e 73 20 2a   ┆hore, xchar,  (* std functions *┆
0x039ea0…039ec0             29 0a 78 73 75 63 63 2c 20 78 70 72 65 64 2c 20 78 6e 65 77 2c 20 78 6e 69 6c 2c 20 78 6e 69 6c   ┆) xsucc, xpred, xnew, xnil, xnil┆
0x039ec0…039ee0             72 65 66 2c 20 78 6f 72 64 2c 20 78 63 68 72 2c 0a 0a 78 74 79 70 65 2c 0a 78 72 65 64 65 66 74   ┆ref, xord, xchr,  xtype, xredeft┆
0x039ee0…039f00             79 70 65 2c 0a 78 73 63 61 6c 61 72 69 64 2c 20 78 73 63 61 6c 61 72 64 65 66 2c 0a 78 67 65 74   ┆ype, xscalarid, xscalardef, xget┆
0x039f00…039f20             65 78 70 72 2c 20 78 73 75 62 64 65 66 2c 0a 78 61 72 72 61 79 64 65 66 2c 20 78 70 61 63 6b 65   ┆expr, xsubdef, xarraydef, xpacke┆
0x039f20…039f40             64 61 72 72 61 79 64 65 66 2c 0a 78 70 61 63 6b 65 64 72 65 63 6f 72 64 2c 20 78 72 65 63 6f 72   ┆darraydef, xpackedrecord, xrecor┆
0x039f40…039f60             64 2c 20 78 66 69 65 6c 64 69 64 2c 20 78 66 69 65 6c 64 64 65 66 2c 20 78 72 65 63 64 65 66 2c   ┆d, xfieldid, xfielddef, xrecdef,┆
0x039f60…039f80             0a 78 73 65 74 64 65 66 2c 20 78 70 6f 6f 6c 64 65 66 2c 20 78 70 6f 69 6e 74 65 72 64 65 66 2c   ┆ xsetdef, xpooldef, xpointerdef,┆
0x039f80…039fa0             20 78 66 6f 72 77 61 72 64 70 6f 69 6e 74 65 72 2c 20 78 66 72 6f 7a 65 6e 64 65 66 2c 0a 78 65   ┆ xforwardpointer, xfrozendef, xe┆
0x039fa0…039fc0             78 74 70 72 6f 63 65 73 73 2c 20 78 65 78 74 70 72 6f 63 64 65 66 2c 0a 78 74 79 70 65 64 65 66   ┆xtprocess, xextprocdef, xtypedef┆
0x039fc0…039fe0             2c 0a 0a 78 65 78 70 6f 72 74 76 61 6c 75 65 2c 20 78 65 78 70 6f 72 74 73 69 7a 65 2c 20 78 65   ┆,  xexportvalue, xexportsize, xe┆
0x039fe0…03a000             78 70 6f 72 74 64 69 73 70 6c 2c 20 78 65 78 70 6f 72 74 6f 66 66 73 65 74 2c 20 78 65 78 70 6f   ┆xportdispl, xexportoffset, xexpo┆
0x03a000…03a020 (15, 0, 15) 72 74 61 64 64 72 2c 0a 78 65 6e 64 65 78 70 6f 72 74 2c 0a 0a 78 70 61 72 61 6d 69 64 2c 20 78   ┆rtaddr, xendexport,  xparamid, x┆
0x03a020…03a040             76 61 6c 75 65 70 61 72 61 6d 2c 20 78 76 61 72 70 61 72 61 6d 2c 0a 0a 78 6e 61 6d 65 2c 0a 0a   ┆valueparam, xvarparam,  xname,  ┆
0x03a040…03a060             78 70 72 65 66 69 78 2c 0a 0a 78 6c 61 62 65 6c 2c 0a 0a 78 63 61 73 65 73 74 61 74 2c 20 78 63   ┆xprefix,  xlabel,  xcasestat, xc┆
0x03a060…03a080             61 73 65 2c 20 78 63 61 73 65 6c 61 62 65 6c 2c 20 78 63 61 73 65 72 61 6e 67 65 2c 20 78 6f 74   ┆ase, xcaselabel, xcaserange, xot┆
0x03a080…03a0a0             68 65 72 77 69 73 65 2c 20 78 65 6e 64 63 61 73 65 2c 0a 78 65 6e 64 63 61 73 65 6c 69 73 74 2c   ┆herwise, xendcase, xendcaselist,┆
0x03a0a0…03a0c0             20 78 65 6e 64 63 61 73 65 73 74 61 74 2c 0a 0a 78 66 6f 72 73 74 61 74 2c 20 78 66 6f 72 2c 20   ┆ xendcasestat,  xforstat, xfor, ┆
0x03a0c0…03a0e0             78 75 70 2c 20 78 64 6f 77 6e 2c 20 78 64 6f 2c 20 78 65 6e 64 66 6f 72 2c 0a 0a 78 69 66 73 74   ┆xup, xdown, xdo, xendfor,  xifst┆
0x03a0e0…03a100             61 74 2c 20 78 69 66 65 78 70 72 2c 20 78 65 6c 73 65 2c 20 78 69 66 2c 0a 0a 78 72 65 70 65 61   ┆at, xifexpr, xelse, xif,  xrepea┆
0x03a100…03a120             74 2c 20 78 75 6e 74 69 6c 2c 20 78 65 6e 64 72 65 70 65 61 74 2c 0a 0a 78 6c 6f 6f 70 73 74 61   ┆t, xuntil, xendrepeat,  xloopsta┆
0x03a120…03a140             74 2c 20 78 65 6e 64 6c 6f 6f 70 73 74 61 74 2c 20 78 65 78 69 74 6c 6f 6f 70 73 74 61 74 2c 20   ┆t, xendloopstat, xexitloopstat, ┆
0x03a140…03a160             78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 2c 0a 78 65 78 69 74 6c 6f 63 6b 2c 20 0a 0a 78 65 78 69   ┆xcontloopstat, xexitlock,   xexi┆
0x03a160…03a180             74 73 74 61 74 2c 0a 0a 78 77 68 69 6c 65 2c 20 78 77 68 69 6c 65 65 78 70 72 2c 20 78 65 6e 64   ┆tstat,  xwhile, xwhileexpr, xend┆
0x03a180…03a1a0             77 68 69 6c 65 2c 0a 0a 78 77 69 74 68 2c 20 78 77 69 74 68 76 61 72 2c 20 78 65 6e 64 77 69 74   ┆while,  xwith, xwithvar, xendwit┆
0x03a1a0…03a1c0             68 2c 20 78 72 65 74 79 70 65 2c 20 78 6e 6f 72 65 74 79 70 65 2c 0a 78 6c 6f 63 6b 73 74 61 74   ┆h, xretype, xnoretype, xlockstat┆
0x03a1c0…03a1e0             2c 20 78 6c 6f 63 6b 6d 65 73 73 74 61 74 2c 20 78 6c 6f 63 6b 76 61 72 2c 20 78 6c 6f 63 6b 2c   ┆, xlockmesstat, xlockvar, xlock,┆
0x03a1e0…03a200             20 78 65 6e 64 6c 6f 63 6b 2c 0a 0a 78 67 6f 74 6f 2c 0a 0a 78 63 68 61 6e 6e 65 6c 2c 20 78 63   ┆ xendlock,  xgoto,  xchannel, xc┆
0x03a200…03a220 (15, 1, 1)  68 61 6e 76 61 72 2c 20 78 65 6e 64 63 68 61 6e 6e 65 6c 2c 0a 0a 78 61 73 73 69 67 6e 73 74 61   ┆hanvar, xendchannel,  xassignsta┆
0x03a220…03a240             74 2c 20 78 62 65 63 6f 6d 65 73 2c 20 78 61 73 73 69 67 6e 2c 0a 78 65 78 63 68 61 6e 67 65 73   ┆t, xbecomes, xassign, xexchanges┆
0x03a240…03a260             74 61 74 2c 20 78 65 78 63 68 61 6e 67 65 2c 0a 0a 78 70 72 6f 63 63 61 6c 6c 2c 20 78 65 6e 64   ┆tat, xexchange,  xproccall, xend┆
0x03a260…03a280             70 72 6f 63 2c 0a 78 66 75 6e 63 63 61 6c 6c 2c 20 78 66 63 61 6c 6c 2c 20 78 65 6e 64 66 75 6e   ┆proc, xfunccall, xfcall, xendfun┆
0x03a280…03a2a0             63 63 61 6c 6c 2c 0a 78 61 63 74 75 61 6c 2c 20 78 65 6e 64 61 63 74 75 61 6c 2c 0a 0a 78 70 72   ┆ccall, xactual, xendactual,  xpr┆
0x03a2a0…03a2c0             6f 63 65 73 73 70 61 72 61 6d 2c 0a 78 76 61 72 70 6f 69 6e 74 65 72 2c 20 78 74 65 6d 70 6f 69   ┆ocessparam, xvarpointer, xtempoi┆
0x03a2c0…03a2e0             6e 74 65 72 2c 20 78 61 72 67 6c 69 73 74 73 69 7a 65 2c 0a 0a 28 2a 20 65 78 70 72 65 73 73 69   ┆nter, xarglistsize,  (* expressi┆
0x03a2e0…03a300             6f 6e 73 20 2a 29 0a 78 65 78 70 72 2c 0a 78 67 65 74 76 61 6c 75 65 2c 0a 78 6e 65 2c 20 78 65   ┆ons *) xexpr, xgetvalue, xne, xe┆
0x03a300…03a320             71 2c 20 78 6c 65 2c 20 78 67 65 2c 20 78 6c 74 2c 20 78 67 74 2c 20 78 69 6e 2c 0a 78 6e 65 67   ┆q, xle, xge, xlt, xgt, xin, xneg┆
0x03a320…03a340             2c 20 78 61 64 64 2c 20 78 73 75 62 2c 20 78 6f 72 5f 2c 0a 78 78 6f 72 2c 0a 78 64 69 76 2c 20   ┆, xadd, xsub, xor_, xxor, xdiv, ┆
0x03a340…03a360             78 6d 75 6c 2c 20 78 73 68 69 66 74 2c 20 78 6d 6f 64 2c 20 78 61 6e 64 2c 0a 78 6e 6f 74 2c 0a   ┆xmul, xshift, xmod, xand, xnot, ┆
0x03a360…03a380             0a 28 2a 20 63 6f 6e 76 65 72 73 69 6f 6e 20 6f 70 65 72 61 74 6f 72 73 20 2a 29 0a 78 72 61 6e   ┆ (* conversion operators *) xran┆
0x03a380…03a3a0             67 65 2c 0a 0a 78 73 65 74 2c 20 78 69 6e 63 6c 75 64 65 2c 20 78 73 65 74 65 78 70 72 2c 20 78   ┆ge,  xset, xinclude, xsetexpr, x┆
0x03a3a0…03a3c0             69 6e 63 6c 75 64 65 72 61 6e 67 65 2c 20 78 65 6e 64 73 65 74 2c 0a 0a 78 6c 69 74 65 72 61 6c   ┆includerange, xendset,  xliteral┆
0x03a3c0…03a3e0             2c 0a 78 74 79 70 65 73 69 7a 65 63 61 6c 6c 2c 0a 78 76 61 72 2c 0a 78 73 74 72 75 63 63 6f 6e   ┆, xtypesizecall, xvar, xstruccon┆
0x03a3e0…03a400             73 74 2c 20 78 74 69 6d 65 73 2c 20 78 6e 75 6c 6c 2c 20 78 73 74 72 75 63 2c 20 78 65 6e 64 73   ┆st, xtimes, xnull, xstruc, xends┆
0x03a400…03a420 (15, 1, 2)  74 72 75 63 2c 0a 78 69 6e 64 65 78 65 78 70 72 2c 20 78 69 6e 64 65 78 2c 0a 78 61 72 72 6f 77   ┆truc, xindexexpr, xindex, xarrow┆
0x03a420…03a440             2c 20 78 66 69 65 6c 64 2c 0a 0a 78 6c 61 73 74 63 6f 64 65 0a 0a 29 3b 0a 0a 70 61 73 73 33 63   ┆, xfield,  xlastcode  );  pass3c┆
0x03a440…03a460             6f 64 65 69 6e 64 65 78 20 3d 20 30 20 2e 2e 20 32 30 30 3b 20 28 2a 20 6e 75 6d 62 65 72 20 6f   ┆odeindex = 0 .. 200; (* number o┆
0x03a460…03a480             66 20 70 61 73 73 33 63 6f 64 65 73 20 2a 29 0a 0a 0a 6c 69 74 65 72 61 6c 6b 69 6e 64 73 20 3d   ┆f pass3codes *)   literalkinds =┆
0x03a480…03a4a0             20 28 6c 69 74 5f 64 75 6d 6d 79 2c 20 6c 69 74 5f 69 6e 74 65 67 65 72 2c 20 6c 69 74 5f 73 74   ┆ (lit_dummy, lit_integer, lit_st┆
0x03a4a0…03a4c0             72 69 6e 67 5f 6f 72 5f 65 6d 70 74 79 2c 20 6c 69 74 5f 63 68 61 72 29 3b 0a 0a 0c 0a 0a 28 2a   ┆ring_or_empty, lit_char);     (*┆
0x03a4c0…03a4e0             20 65 6e 64 20 70 61 73 73 20 33 20 63 6f 64 65 73 20 2a 29 0a 20 0a 0a 0a 6f 75 74 5f 63 6f 64   ┆ end pass 3 codes *)     out_cod┆
0x03a4e0…03a500             65 20 3d 20 0a 28 2a 20 70 61 73 73 34 63 6f 64 65 73 3d 20 2a 29 0a 28 20 7a 66 69 72 73 74 63   ┆e =  (* pass4codes= *) ( zfirstc┆
0x03a500…03a520             6f 64 65 2c 0a 0a 20 7a 6d 6f 64 75 6c 65 2c 20 7a 65 6f 6d 2c 0a 20 7a 6f 70 74 69 6f 6e 2c 20   ┆ode,   zmodule, zeom,  zoption, ┆
0x03a520…03a540             7a 6e 65 77 6c 69 6e 65 2c 0a 0a 20 7a 70 72 6f 63 65 73 73 2c 20 7a 65 78 74 70 72 6f 63 65 73   ┆znewline,   zprocess, zextproces┆
0x03a540…03a560             73 2c 0a 20 7a 62 6c 6f 63 6b 2c 20 7a 6c 65 6e 67 74 68 2c 20 7a 65 6e 64 62 6c 6f 63 6b 2c 0a   ┆s,  zblock, zlength, zendblock, ┆
0x03a560…03a580             0a 20 7a 62 65 67 69 6e 63 6f 64 65 2c 20 7a 63 6f 64 65 6c 69 6e 65 2c 20 7a 65 6e 64 63 6f 64   ┆  zbegincode, zcodeline, zendcod┆
0x03a580…03a5a0             65 2c 0a 0a 20 7a 73 75 62 64 65 66 2c 0a 20 7a 61 72 72 61 79 31 74 65 6d 70 6c 61 74 65 2c 20   ┆e,   zsubdef,  zarray1template, ┆
0x03a5a0…03a5c0             7a 61 72 72 61 79 32 74 65 6d 70 6c 61 74 65 2c 20 7a 61 72 72 61 79 33 74 65 6d 70 6c 61 74 65   ┆zarray2template, zarray3template┆
0x03a5c0…03a5e0             2c 0a 20 7a 72 65 63 6f 72 64 74 65 6d 70 6c 61 74 65 2c 20 7a 66 69 65 6c 64 73 69 7a 65 2c 20   ┆,  zrecordtemplate, zfieldsize, ┆
0x03a5e0…03a600             7a 64 79 6e 66 69 65 6c 64 73 69 7a 65 2c 20 7a 69 6e 63 66 69 65 6c 64 2c 0a 20 7a 65 6e 64 74   ┆zdynfieldsize, zincfield,  zendt┆
0x03a600…03a620 (15, 1, 3)  65 6d 70 6c 61 74 65 2c 0a 20 7a 65 6e 64 64 65 63 6c 2c 0a 0a 20 7a 61 6c 6c 6f 63 64 79 6e 76   ┆emplate,  zenddecl,   zallocdynv┆
0x03a620…03a640             61 72 2c 0a 0a 20 7a 69 6e 69 74 69 61 6c 69 7a 65 2c 20 7a 73 74 72 75 63 69 6e 69 74 2c 20 7a   ┆ar,   zinitialize, zstrucinit, z┆
0x03a640…03a660             73 69 6d 70 6c 65 69 6e 69 74 2c 20 7a 73 65 74 69 6e 69 74 2c 0a 20 7a 65 78 63 65 70 74 69 6f   ┆simpleinit, zsetinit,  zexceptio┆
0x03a660…03a680             6e 2c 20 7a 65 78 74 65 78 63 65 70 74 69 6f 6e 2c 0a 20 7a 73 79 73 69 6e 69 74 2c 20 7a 73 79   ┆n, zextexception,  zsysinit, zsy┆
0x03a680…03a6a0             73 64 79 6e 69 6e 69 74 2c 0a 20 7a 73 79 73 6e 65 77 69 6e 69 74 2c 0a 20 7a 66 69 65 6c 64 69   ┆sdyninit,  zsysnewinit,  zfieldi┆
0x03a6a0…03a6c0             6e 69 74 2c 20 7a 64 79 6e 66 69 65 6c 64 69 6e 69 74 2c 0a 20 7a 65 6e 64 69 6e 69 74 66 69 65   ┆nit, zdynfieldinit,  zendinitfie┆
0x03a6c0…03a6e0             6c 64 73 2c 0a 20 7a 61 72 72 61 79 69 6e 69 74 2c 20 7a 61 72 72 61 79 64 79 6e 69 6e 69 74 2c   ┆lds,  zarrayinit, zarraydyninit,┆
0x03a6e0…03a700             0a 20 7a 70 6f 6f 6c 69 6e 69 74 2c 0a 20 7a 76 61 72 69 6e 69 74 2c 0a 20 7a 65 78 70 6f 72 74   ┆  zpoolinit,  zvarinit,  zexport┆
0x03a700…03a720             2c 0a 0a 20 7a 70 72 6f 63 2c 20 7a 65 78 74 70 72 6f 63 2c 0a 20 7a 66 75 6e 63 2c 20 7a 65 78   ┆,   zproc, zextproc,  zfunc, zex┆
0x03a720…03a740             74 66 75 6e 63 2c 0a 20 7a 70 61 72 61 6d 74 79 70 65 2c 0a 0a 20 7a 64 65 66 6c 69 78 2c 0a 0a   ┆tfunc,  zparamtype,   zdeflix,  ┆
0x03a740…03a760             20 7a 70 72 6f 63 63 61 6c 6c 2c 20 7a 65 6e 64 70 63 61 6c 6c 2c 0a 20 7a 65 78 74 70 72 6f 63   ┆ zproccall, zendpcall,  zextproc┆
0x03a760…03a780             63 61 6c 6c 2c 20 7a 73 74 64 70 72 6f 63 63 61 6c 6c 2c 0a 20 7a 70 72 6f 63 65 73 73 70 61 72   ┆call, zstdproccall,  zprocesspar┆
0x03a780…03a7a0             61 6d 2c 20 7a 65 6e 64 70 72 6f 63 65 73 73 70 61 72 61 6d 2c 0a 20 7a 73 74 64 66 75 6e 63 63   ┆am, zendprocessparam,  zstdfuncc┆
0x03a7a0…03a7c0             61 6c 6c 2c 20 7a 66 63 61 6c 6c 2c 20 7a 65 6e 64 66 75 6e 63 63 61 6c 6c 2c 0a 20 7a 66 75 6e   ┆all, zfcall, zendfunccall,  zfun┆
0x03a7c0…03a7e0             63 63 61 6c 6c 2c 20 7a 65 78 74 66 75 6e 63 63 61 6c 6c 2c 0a 20 7a 65 6e 64 6e 65 77 63 61 6c   ┆ccall, zextfunccall,  zendnewcal┆
0x03a7e0…03a800             6c 2c 0a 0a 20 7a 76 61 72 70 6f 69 6e 74 65 72 2c 20 7a 74 65 6d 70 6f 69 6e 74 65 72 2c 20 7a   ┆l,   zvarpointer, ztempointer, z┆
0x03a800…03a820 (15, 1, 4)  61 72 67 6c 69 73 74 73 69 7a 65 2c 0a 0a 20 7a 76 61 72 70 61 72 61 6d 2c 20 7a 76 61 6c 75 65   ┆arglistsize,   zvarparam, zvalue┆
0x03a820…03a840             70 61 72 61 6d 2c 20 7a 72 65 74 75 72 6e 70 61 72 61 6d 2c 0a 0a 20 7a 61 73 73 69 67 6e 73 74   ┆param, zreturnparam,   zassignst┆
0x03a840…03a860             61 74 2c 20 7a 6c 65 66 74 2c 20 7a 61 73 73 69 67 6e 2c 0a 0a 20 7a 63 61 73 65 73 74 61 74 2c   ┆at, zleft, zassign,   zcasestat,┆
0x03a860…03a880             20 7a 63 61 73 65 2c 20 7a 65 6e 64 63 61 73 65 6c 69 73 74 2c 20 7a 65 6e 64 63 61 73 65 73 74   ┆ zcase, zendcaselist, zendcasest┆
0x03a880…03a8a0             61 74 2c 20 7a 65 6e 64 63 61 73 65 2c 0a 20 7a 63 61 73 65 72 61 6e 67 65 2c 20 7a 63 61 73 65   ┆at, zendcase,  zcaserange, zcase┆
0x03a8a0…03a8c0             6c 61 62 65 6c 2c 20 7a 6f 74 68 65 72 77 69 73 65 2c 0a 0a 20 7a 66 6f 72 73 74 61 74 2c 20 7a   ┆label, zotherwise,   zforstat, z┆
0x03a8c0…03a8e0             6c 65 66 74 66 6f 72 2c 20 7a 66 6f 72 73 74 6f 72 65 2c 20 7a 64 6f 2c 20 7a 65 6e 64 66 6f 72   ┆leftfor, zforstore, zdo, zendfor┆
0x03a8e0…03a900             2c 0a 0a 20 7a 67 6f 74 6f 2c 0a 0a 20 7a 69 66 73 74 61 74 2c 20 7a 69 66 65 78 70 72 2c 20 7a   ┆,   zgoto,   zifstat, zifexpr, z┆
0x03a900…03a920             65 6c 73 65 2c 20 7a 69 66 2c 0a 0a 20 7a 72 65 70 65 61 74 2c 20 7a 75 6e 74 69 6c 2c 20 7a 65   ┆else, zif,   zrepeat, zuntil, ze┆
0x03a920…03a940             6e 64 72 65 70 65 61 74 2c 0a 0a 20 7a 6c 6f 6f 70 73 74 61 74 2c 20 7a 65 6e 64 6c 6f 6f 70 73   ┆ndrepeat,   zloopstat, zendloops┆
0x03a940…03a960             74 61 74 2c 20 7a 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 2c 20 7a 65 78 69 74 6c 6f 6f 70 73 74 61   ┆tat, zcontloopstat, zexitloopsta┆
0x03a960…03a980             74 2c 0a 20 7a 65 78 69 74 73 74 61 74 2c 0a 0a 20 7a 77 68 69 6c 65 2c 20 7a 77 68 69 6c 65 65   ┆t,  zexitstat,   zwhile, zwhilee┆
0x03a980…03a9a0             78 70 72 2c 20 7a 65 6e 64 77 68 69 6c 65 2c 0a 0a 20 7a 77 69 74 68 73 74 61 74 2c 20 7a 77 69   ┆xpr, zendwhile,   zwithstat, zwi┆
0x03a9a0…03a9c0             74 68 76 61 72 2c 20 7a 77 69 74 68 64 79 6e 76 61 72 2c 20 7a 65 6e 64 77 69 74 68 2c 20 7a 6e   ┆thvar, zwithdynvar, zendwith, zn┆
0x03a9c0…03a9e0             6f 72 65 74 79 70 65 2c 20 7a 72 65 74 79 70 65 2c 20 7a 64 79 6e 72 65 74 79 70 65 2c 0a 0a 20   ┆oretype, zretype, zdynretype,   ┆
0x03a9e0…03aa00             7a 6c 6f 63 6b 73 74 61 74 2c 20 7a 6c 6f 63 6b 76 61 72 2c 20 7a 6c 6f 63 6b 64 79 6e 76 61 72   ┆zlockstat, zlockvar, zlockdynvar┆
0x03aa00…03aa20 (15, 1, 5)  2c 20 7a 65 6e 64 6c 6f 63 6b 2c 0a 0a 20 7a 6c 6f 63 6b 6d 65 73 73 74 61 74 2c 20 7a 65 78 69   ┆, zendlock,   zlockmesstat, zexi┆
0x03aa20…03aa40             74 6c 6f 63 6b 2c 0a 0a 20 7a 63 68 61 6e 6e 65 6c 2c 20 7a 63 68 61 6e 76 61 72 2c 20 7a 65 6e   ┆tlock,   zchannel, zchanvar, zen┆
0x03aa40…03aa60             64 63 68 61 6e 6e 65 6c 2c 0a 0a 20 7a 65 78 63 68 73 74 61 74 2c 20 7a 65 78 63 68 61 6e 67 65   ┆dchannel,   zexchstat, zexchange┆
0x03aa60…03aa80             2c 0a 0a 20 7a 6e 6f 74 2c 20 7a 6e 65 67 2c 20 7a 63 6f 6d 70 61 72 65 2c 20 7a 63 6f 6d 70 73   ┆,   znot, zneg, zcompare, zcomps┆
0x03aa80…03aaa0             74 72 75 63 2c 20 7a 63 6f 6d 70 64 79 6e 73 74 72 75 63 2c 20 7a 64 69 76 2c 0a 20 7a 6d 75 6c   ┆truc, zcompdynstruc, zdiv,  zmul┆
0x03aaa0…03aac0             2c 20 7a 73 68 69 66 74 2c 20 7a 72 6f 74 61 74 65 2c 20 7a 6d 6f 64 2c 20 7a 6f 72 5f 2c 20 7a   ┆, zshift, zrotate, zmod, zor_, z┆
0x03aac0…03aae0             78 6f 72 2c 0a 20 7a 61 64 64 2c 20 7a 73 75 62 2c 20 7a 61 6e 64 2c 20 7a 72 61 6e 67 65 74 65   ┆xor,  zadd, zsub, zand, zrangete┆
0x03aae0…03ab00             73 74 2c 0a 20 7a 64 79 6e 72 61 6e 67 65 74 65 73 74 2c 0a 0a 20 7a 63 6f 6e 73 74 2c 20 7a 6c   ┆st,  zdynrangetest,   zconst, zl┆
0x03ab00…03ab20             63 6f 6e 73 74 2c 20 7a 73 65 74 63 6f 6e 73 74 2c 0a 20 7a 73 65 74 2c 20 7a 69 6e 63 6c 75 64   ┆const, zsetconst,  zset, zinclud┆
0x03ab20…03ab40             65 2c 20 7a 73 65 74 65 78 70 72 2c 20 7a 69 6e 63 6c 75 64 65 69 6e 74 2c 20 7a 65 6e 64 73 65   ┆e, zsetexpr, zincludeint, zendse┆
0x03ab40…03ab60             74 2c 0a 0a 20 7a 69 6e 69 74 63 6f 6e 73 74 2c 0a 0a 20 7a 69 6e 64 76 61 72 2c 0a 0a 20 7a 61   ┆t,   zinitconst,   zindvar,   za┆
0x03ab60…03ab80             64 64 72 2c 20 7a 63 61 64 64 72 2c 20 7a 69 6e 64 61 64 64 72 2c 20 0a 20 7a 70 61 63 6b 65 64   ┆ddr, zcaddr, zindaddr,   zpacked┆
0x03ab80…03aba0             61 72 72 2c 0a 0a 20 7a 66 69 65 6c 64 2c 20 7a 64 79 6e 66 69 65 6c 64 2c 0a 0a 20 7a 69 6e 64   ┆arr,   zfield, zdynfield,   zind┆
0x03aba0…03abc0             65 78 65 78 70 72 2c 20 7a 63 69 6e 64 65 78 2c 20 7a 69 6e 64 65 78 2c 0a 0a 20 7a 65 72 72 6f   ┆exexpr, zcindex, zindex,   zerro┆
0x03abc0…03abe0             72 2c 20 7a 65 72 72 6f 72 6e 6f 2c 20 7a 65 72 72 6f 72 74 65 78 74 2c 0a 20 7a 72 61 6e 67 65   ┆r, zerrorno, zerrortext,  zrange┆
0x03abe0…03ac00             6d 61 78 2c 20 7a 68 69 6e 64 65 78 2c 0a 20 7a 6c 61 73 74 63 6f 64 65 0a 0a 29 3b 0a 0a 70 61   ┆max, zhindex,  zlastcode  );  pa┆
0x03ac00…03ac20 (15, 1, 6)  73 73 34 63 6f 64 65 69 6e 64 65 78 20 3d 20 30 2e 2e 31 36 30 3b 20 20 28 2a 20 6e 75 6d 62 65   ┆ss4codeindex = 0..160;  (* numbe┆
0x03ac20…03ac40             72 20 6f 66 20 70 61 73 73 34 63 6f 64 65 73 20 2a 29 0a 0a 0c 0a 0a 28 2a 20 65 6e 64 20 70 61   ┆r of pass4codes *)     (* end pa┆
0x03ac40…03ac60             73 73 20 34 20 63 6f 64 65 73 20 2a 29 0a 0a 0a 0a 0a 0a 0a 63 6f 6e 74 65 78 74 5f 6b 69 6e 64   ┆ss 4 codes *)       context_kind┆
0x03ac60…03ac80             20 3d 20 28 20 6e 6f 74 5f 75 73 65 64 2c 0a 69 6e 74 5f 74 79 70 65 2c 20 20 20 20 20 20 20 63   ┆ = ( not_used, int_type,       c┆
0x03ac80…03aca0             68 61 72 5f 74 79 70 65 2c 20 20 20 20 20 20 62 6f 6f 6c 5f 74 79 70 65 2c 20 20 20 20 20 20 73   ┆har_type,      bool_type,      s┆
0x03aca0…03acc0             65 6d 5f 74 79 70 65 2c 0a 73 68 61 64 6f 77 5f 74 79 70 65 2c 20 20 20 20 72 65 66 5f 74 79 70   ┆em_type, shadow_type,    ref_typ┆
0x03acc0…03ace0             65 2c 20 20 20 20 20 20 20 73 63 61 6c 61 72 5f 74 79 70 65 2c 20 20 20 20 73 65 74 5f 74 79 70   ┆e,       scalar_type,    set_typ┆
0x03ace0…03ad00             65 2c 0a 70 6f 6f 6c 5f 74 79 70 65 2c 20 20 20 20 20 20 61 72 72 61 79 5f 74 79 70 65 2c 20 20   ┆e, pool_type,      array_type,  ┆
0x03ad00…03ad20             20 20 20 73 79 73 5f 61 72 72 61 79 5f 74 79 70 65 2c 20 70 6f 69 6e 74 65 72 5f 74 79 70 65 2c   ┆   sys_array_type, pointer_type,┆
0x03ad20…03ad40             0a 72 65 63 6f 72 64 5f 74 79 70 65 2c 20 20 20 20 73 79 73 5f 72 65 63 6f 72 64 5f 74 79 70 65   ┆ record_type,    sys_record_type┆
0x03ad40…03ad60             2c 6c 61 62 65 6c 5f 74 79 70 65 2c 20 20 20 20 20 72 6f 75 74 69 6e 65 5f 74 79 70 65 2c 0a 70   ┆,label_type,     routine_type, p┆
0x03ad60…03ad80             72 6f 63 65 73 73 5f 74 79 70 65 2c 20 20 20 64 79 6e 5f 73 75 62 72 61 6e 67 65 2c 20 20 20 75   ┆rocess_type,   dyn_subrange,   u┆
0x03ad80…03ada0             6e 64 65 66 5f 74 79 70 65 2c 0a 66 69 65 6c 64 2c 20 20 20 20 20 20 20 20 20 20 64 79 6e 5f 66   ┆ndef_type, field,          dyn_f┆
0x03ada0…03adc0             69 65 6c 64 2c 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 2c 20 20 20 20 20 20 20 64 79 6e 5f 76   ┆ield,      variable,       dyn_v┆
0x03adc0…03ade0             61 72 69 61 62 6c 65 2c 0a 76 61 72 5f 70 61 72 61 6d 2c 20 20 20 20 20 20 76 61 6c 75 65 5f 70   ┆ariable, var_param,      value_p┆
0x03ade0…03ae00             61 72 61 6d 2c 20 20 20 20 72 65 74 75 72 6e 5f 70 61 72 61 6d 2c 0a 73 63 6f 6e 73 74 2c 20 20   ┆aram,    return_param, sconst,  ┆
0x03ae00…03ae20 (15, 1, 7)  20 20 20 20 20 20 20 6c 63 6f 6e 73 74 2c 20 20 20 20 20 20 20 20 20 73 65 74 5f 63 6f 6e 73 74   ┆       lconst,         set_const┆
0x03ae20…03ae40             2c 0a 77 69 74 68 5f 76 61 72 2c 20 20 20 20 20 20 20 6c 6f 63 6b 5f 76 61 72 2c 20 20 20 20 20   ┆, with_var,       lock_var,     ┆
0x03ae40…03ae60             20 20 66 75 6e 63 5f 72 65 73 75 6c 74 2c 0a 65 78 70 72 2c 20 20 20 20 20 20 20 20 20 20 20 73   ┆  func_result, expr,           s┆
0x03ae60…03ae80             74 72 75 63 5f 63 20 2c 0a 20 20 20 20 20 20 61 6c 6c 69 67 6e 5f 72 65 63 5f 74 79 70 65 2c 20   ┆truc_c ,       allign_rec_type, ┆
0x03ae80…03aea0             61 6c 6c 69 67 6e 5f 61 72 72 5f 74 79 70 65 29 3b 0a 0a 65 72 72 6f 72 5f 74 79 70 65 73 20 3d   ┆allign_arr_type);  error_types =┆
0x03aea0…03aec0             20 28 6f 76 65 72 66 6c 6f 77 2c 20 72 61 6e 67 65 5f 64 65 66 5f 65 72 72 6f 72 2c 20 73 65 74   ┆ (overflow, range_def_error, set┆
0x03aec0…03aee0             5f 64 65 66 5f 65 72 72 6f 72 2c 0a 70 6f 6f 6c 5f 64 65 66 5f 65 72 72 6f 72 2c 20 74 79 70 65   ┆_def_error, pool_def_error, type┆
0x03aee0…03af00             5f 65 72 72 6f 72 2c 0a 61 64 64 72 5f 65 72 72 6f 72 2c 20 76 61 72 5f 65 72 72 6f 72 2c 20 72   ┆_error, addr_error, var_error, r┆
0x03af00…03af20             61 6e 67 65 5f 65 72 72 6f 72 2c 0a 6c 69 74 65 72 61 6c 5f 65 72 72 6f 72 2c 20 73 65 74 5f 65   ┆ange_error, literal_error, set_e┆
0x03af20…03af40             72 72 6f 72 2c 20 63 6f 6e 73 74 5f 65 72 72 6f 72 2c 0a 66 6f 72 5f 65 72 72 6f 72 2c 20 69 6e   ┆rror, const_error, for_error, in┆
0x03af40…03af60             70 75 74 5f 65 72 72 6f 72 2c 20 73 63 61 6c 61 72 5f 65 72 72 6f 72 2c 0a 6e 61 6d 65 5f 6f 76   ┆put_error, scalar_error, name_ov┆
0x03af60…03af80             65 72 66 6c 6f 77 2c 20 63 6f 6e 73 74 5f 61 72 65 61 5f 6f 76 65 72 66 6c 6f 77 2c 0a 62 69 74   ┆erflow, const_area_overflow, bit┆
0x03af80…03afa0             5f 63 6f 75 6e 74 5f 65 72 72 6f 72 2c 20 70 72 65 6c 75 64 65 5f 65 72 72 6f 72 2c 20 61 64 64   ┆_count_error, prelude_error, add┆
0x03afa0…03afc0             72 65 73 73 5f 6f 76 65 72 66 6c 6f 77 2c 0a 77 69 74 68 5f 73 69 7a 65 5f 65 72 72 6f 72 2c 20   ┆ress_overflow, with_size_error, ┆
0x03afc0…03afe0             72 65 63 6f 72 64 5f 73 69 7a 65 5f 65 72 72 6f 72 2c 20 61 72 72 61 79 5f 73 69 7a 65 5f 65 72   ┆record_size_error, array_size_er┆
0x03afe0…03b000             72 6f 72 2c 0a 66 69 65 6c 64 5f 65 78 70 6f 72 74 5f 65 72 72 6f 72 2c 20 65 78 70 6f 72 74 76   ┆ror, field_export_error, exportv┆
0x03b000…03b020 (15, 1, 8)  61 6c 75 65 5f 65 72 72 6f 72 2c 20 65 78 70 6f 72 74 61 64 64 72 5f 65 72 72 6f 72 2c 0a 73 74   ┆alue_error, exportaddr_error, st┆
0x03b020…03b040             61 63 6b 5f 65 72 72 6f 72 2c 20 76 65 72 73 69 6f 6e 5f 65 72 72 6f 72 2c 20 6e 6f 74 5f 69 6d   ┆ack_error, version_error, not_im┆
0x03b040…03b060             70 6c 65 6d 65 6e 74 65 64 2c 0a 6e 6f 74 5f 69 6d 70 6c 5f 6c 6f 6f 70 2c 20 6e 6f 74 5f 69 6d   ┆plemented, not_impl_loop, not_im┆
0x03b060…03b080             70 6c 5f 6c 6f 63 6b 6d 65 73 2c 20 6e 6f 74 5f 69 6d 70 6c 5f 63 6f 6e 74 5f 65 78 69 74 5f 6c   ┆pl_lockmes, not_impl_cont_exit_l┆
0x03b080…03b0a0             6f 6f 70 2c 0a 6e 6f 74 5f 69 6d 70 6c 5f 65 78 69 74 2c 20 65 6d 70 74 79 5f 65 6c 65 6d 65 6e   ┆oop, not_impl_exit, empty_elemen┆
0x03b0a0…03b0c0             74 5f 63 68 61 6e 67 65 2c 0a 65 72 72 6f 72 5f 64 79 6e 2c 20 65 72 72 6f 72 5f 64 79 6e 5f 69   ┆t_change, error_dyn, error_dyn_i┆
0x03b0c0…03b0e0             6e 69 74 2c 20 65 72 72 6f 72 5f 64 79 6e 5f 76 61 72 2c 20 65 72 72 6f 72 5f 63 68 61 6e 6e 65   ┆nit, error_dyn_var, error_channe┆
0x03b0e0…03b100             6c 29 3b 0a 0a 6c 6f 63 61 74 69 6f 6e 5f 69 6e 64 65 78 20 3d 20 69 6e 74 65 67 65 72 3b 0a 0a   ┆l);  location_index = integer;  ┆
0x03b100…03b120             61 64 64 72 5f 73 74 61 74 65 20 3d 20 28 64 69 72 65 63 74 2c 20 69 6e 64 69 72 65 63 74 2c 20   ┆addr_state = (direct, indirect, ┆
0x03b120…03b140             61 64 64 72 2c 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 70 5f 63 6f 6d 70 20 29 3b 0a 0a 62 6c 6f   ┆addr, expression, p_comp );  blo┆
0x03b140…03b160             63 6b 5f 6d 6f 64 65 20 3d 20 28 70 72 6f 63 65 73 73 5f 6d 6f 64 65 2c 20 70 72 6f 63 5f 6d 6f   ┆ck_mode = (process_mode, proc_mo┆
0x03b160…03b180             64 65 2c 20 66 75 6e 63 5f 6d 6f 64 65 2c 20 72 65 63 6f 72 64 5f 6d 6f 64 65 29 3b 0a 65 78 70   ┆de, func_mode, record_mode); exp┆
0x03b180…03b1a0             6f 72 74 5f 6b 69 6e 64 5f 74 79 70 65 20 3d 20 28 65 78 70 6f 72 74 76 61 6c 75 65 2c 20 65 78   ┆ort_kind_type = (exportvalue, ex┆
0x03b1a0…03b1c0             70 6f 72 74 73 69 7a 65 2c 20 65 78 70 6f 72 74 64 69 73 70 6c 2c 0a 65 78 70 6f 72 74 6f 66 66   ┆portsize, exportdispl, exportoff┆
0x03b1c0…03b1e0             73 65 74 2c 20 65 78 70 6f 72 74 61 64 64 72 20 29 3b 0a 0a 0a 6e 61 6d 65 5f 72 65 63 20 3d 20   ┆set, exportaddr );   name_rec = ┆
0x03b1e0…03b200             72 65 63 6f 72 64 0a 63 6f 6e 74 65 78 74 3a 20 63 6f 6e 74 65 78 74 5f 6b 69 6e 64 3b 0a 73 69   ┆record context: context_kind; si┆
0x03b200…03b220 (15, 1, 9)  7a 65 3a 20 20 20 20 69 6e 74 65 67 65 72 3b 0a 6d 69 6e 3a 20 20 20 20 20 69 6e 74 65 67 65 72   ┆ze:    integer; min:     integer┆
0x03b220…03b240             3b 0a 6d 61 78 3a 20 20 20 20 20 69 6e 74 65 67 65 72 3b 0a 6e 69 76 3a 20 20 20 20 20 69 6e 74   ┆; max:     integer; niv:     int┆
0x03b240…03b260             65 67 65 72 3b 0a 6f 66 66 73 65 74 3a 20 20 69 6e 74 65 67 65 72 3b 0a 6c 69 78 3a 20 20 20 20   ┆eger; offset:  integer; lix:    ┆
0x03b260…03b280             20 6c 6f 63 61 74 69 6f 6e 5f 69 6e 64 65 78 3b 0a 6e 65 78 74 5f 63 6f 6d 70 3a 20 20 69 6e 74   ┆ location_index; next_comp:  int┆
0x03b280…03b2a0             65 67 65 72 3b 0a 63 6f 6d 70 5f 74 79 70 65 3a 20 20 69 6e 74 65 67 65 72 3b 0a 70 61 63 6b 65   ┆eger; comp_type:  integer; packe┆
0x03b2a0…03b2c0             64 5f 63 6f 6d 70 3a 62 6f 6f 6c 65 61 6e 3b 0a 64 79 6e 61 6d 69 63 20 3a 20 62 6f 6f 6c 65 61   ┆d_comp:boolean; dynamic : boolea┆
0x03b2c0…03b2e0             6e 3b 0a 65 6e 64 3b 0a 0a 6f 70 65 72 61 6e 64 5f 70 74 72 3d 20 5e 20 6f 70 65 72 61 6e 64 5f   ┆n; end;  operand_ptr= ^ operand_┆
0x03b2e0…03b300             72 65 63 3b 0a 6f 70 65 72 61 6e 64 5f 72 65 63 20 3d 20 72 65 63 6f 72 64 0a 6e 65 78 74 5f 6f   ┆rec; operand_rec = record next_o┆
0x03b300…03b320             70 65 72 61 6e 64 2c 0a 66 6f 72 6d 65 72 5f 6f 70 65 72 61 6e 64 3a 20 6f 70 65 72 61 6e 64 5f   ┆perand, former_operand: operand_┆
0x03b320…03b340             70 74 72 3b 0a 74 79 70 65 5f 6e 69 78 3a 20 69 6e 74 65 67 65 72 3b 0a 76 61 72 5f 6e 69 78 3a   ┆ptr; type_nix: integer; var_nix:┆
0x03b340…03b360             20 20 69 6e 74 65 67 65 72 3b 0a 6b 69 6e 64 3a 20 20 20 20 20 63 6f 6e 74 65 78 74 5f 6b 69 6e   ┆  integer; kind:     context_kin┆
0x03b360…03b380             64 3b 0a 6e 69 76 3a 20 20 20 20 20 20 69 6e 74 65 67 65 72 3b 0a 6f 66 66 73 65 74 3a 20 20 20   ┆d; niv:      integer; offset:   ┆
0x03b380…03b3a0             69 6e 74 65 67 65 72 3b 0a 73 69 7a 65 3a 20 20 20 20 20 69 6e 74 65 67 65 72 3b 0a 63 6f 6e 74   ┆integer; size:     integer; cont┆
0x03b3a0…03b3c0             65 78 74 3a 20 20 63 6f 6e 74 65 78 74 5f 6b 69 6e 64 3b 0a 6c 69 78 3a 20 20 20 20 20 20 69 6e   ┆ext:  context_kind; lix:      in┆
0x03b3c0…03b3e0             74 65 67 65 72 3b 0a 66 69 72 73 74 3a 20 20 20 20 69 6e 74 65 67 65 72 3b 0a 63 6f 6d 70 5f 73   ┆teger; first:    integer; comp_s┆
0x03b3e0…03b400             69 7a 65 3a 69 6e 74 65 67 65 72 3b 0a 66 69 65 6c 64 5f 70 61 63 6b 65 64 20 20 3a 20 62 6f 6f   ┆ize:integer; field_packed  : boo┆
0x03b400…03b420 (15, 1, 10) 6c 65 61 6e 3b 0a 61 72 72 61 79 5f 70 61 63 6b 65 64 20 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 64   ┆lean; array_packed  : boolean; d┆
0x03b420…03b440             79 6e 61 6d 69 63 3a 20 20 62 6f 6f 6c 65 61 6e 3b 0a 73 74 61 74 65 3a 20 20 20 20 61 64 64 72   ┆ynamic:  boolean; state:    addr┆
0x03b440…03b460             5f 73 74 61 74 65 3b 0a 74 65 6d 70 5f 73 69 7a 65 3a 20 69 6e 74 65 67 65 72 3b 0a 66 75 6e 63   ┆_state; temp_size: integer; func┆
0x03b460…03b480             5f 76 61 6c 75 65 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 65 6e 64 3b 0a 0a 69 6e 69 74 5f 6d 6f 64 65   ┆_value: boolean; end;  init_mode┆
0x03b480…03b4a0             73 20 3d 20 28 72 65 63 6f 72 64 5f 69 6e 69 74 2c 20 61 72 72 61 79 5f 69 6e 69 74 2c 20 70 61   ┆s = (record_init, array_init, pa┆
0x03b4a0…03b4c0             63 6b 65 64 5f 61 72 72 61 79 2c 20 65 72 72 6f 72 5f 69 6e 69 74 20 29 3b 0a 0a 73 74 72 75 63   ┆cked_array, error_init );  struc┆
0x03b4c0…03b4e0             5f 70 74 72 3d 20 5e 20 73 74 72 75 63 5f 6c 65 76 65 6c 3b 0a 73 74 72 75 63 5f 6c 65 76 65 6c   ┆_ptr= ^ struc_level; struc_level┆
0x03b4e0…03b500             20 3d 20 72 65 63 6f 72 64 0a 6e 65 78 74 5f 73 74 72 75 63 2c 0a 66 6f 72 6d 65 72 5f 73 74 72   ┆ = record next_struc, former_str┆
0x03b500…03b520             75 63 3a 20 73 74 72 75 63 5f 70 74 72 3b 0a 74 69 6d 65 73 3a 20 69 6e 74 65 67 65 72 3b 0a 63   ┆uc: struc_ptr; times: integer; c┆
0x03b520…03b540             75 72 72 65 6e 74 5f 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 3b 0a 74 6f 70 5f 69 6e 64 65 78   ┆urrent_index: integer; top_index┆
0x03b540…03b560             3a 20 69 6e 74 65 67 65 72 3b 0a 66 69 72 73 74 3a 20 69 6e 74 65 67 65 72 3b 0a 64 69 73 70 6c   ┆: integer; first: integer; displ┆
0x03b560…03b580             3a 20 69 6e 74 65 67 65 72 3b 0a 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 3a 20 69 6e 74 65 67 65   ┆: integer; bits_pr_field: intege┆
0x03b580…03b5a0             72 3b 0a 65 6c 65 6d 5f 70 72 5f 77 6f 72 64 3a 20 69 6e 74 65 67 65 72 3b 0a 64 6f 70 65 5f 6c   ┆r; elem_pr_word: integer; dope_l┆
0x03b5a0…03b5c0             69 78 3a 20 20 20 20 69 6e 74 65 67 65 72 3b 0a 73 61 76 65 64 5f 6e 69 78 3a 20 69 6e 74 65 67   ┆ix:    integer; saved_nix: integ┆
0x03b5c0…03b5e0             65 72 3b 0a 73 61 76 65 64 5f 6c 69 78 3a 20 69 6e 74 65 67 65 72 3b 0a 73 61 76 65 64 5f 73 69   ┆er; saved_lix: integer; saved_si┆
0x03b5e0…03b600             7a 65 3a 20 69 6e 74 65 67 65 72 3b 0a 73 61 76 65 64 5f 73 74 61 74 5f 70 61 72 74 3a 20 62 6f   ┆ze: integer; saved_stat_part: bo┆
0x03b600…03b620 (15, 1, 11) 6f 6c 65 61 6e 3b 0a 69 6e 69 74 5f 6d 6f 64 65 3a 20 69 6e 69 74 5f 6d 6f 64 65 73 3b 0a 65 6e   ┆olean; init_mode: init_modes; en┆
0x03b620…03b640             64 3b 0a 0a 64 69 73 70 6c 61 79 5f 70 74 72 3d 20 5e 20 64 69 73 70 6c 61 79 5f 72 65 63 3b 0a   ┆d;  display_ptr= ^ display_rec; ┆
0x03b640…03b660             64 69 73 70 6c 61 79 5f 72 65 63 20 3d 20 72 65 63 6f 72 64 0a 66 6f 72 6d 65 72 5f 6c 65 76 65   ┆display_rec = record former_leve┆
0x03b660…03b680             6c 2c 0a 6e 65 78 74 5f 6c 65 76 65 6c 3a 20 20 20 20 20 64 69 73 70 6c 61 79 5f 70 74 72 3b 0a   ┆l, next_level:     display_ptr; ┆
0x03b680…03b6a0             73 61 76 65 64 5f 6d 6f 64 65 3a 20 20 20 20 20 62 6c 6f 63 6b 5f 6d 6f 64 65 3b 0a 73 61 76 65   ┆saved_mode:     block_mode; save┆
0x03b6a0…03b6c0             64 5f 6f 66 66 73 65 74 3a 20 20 20 69 6e 74 65 67 65 72 3b 0a 73 61 76 65 64 5f 6e 69 76 3a 20   ┆d_offset:   integer; saved_niv: ┆
0x03b6c0…03b6e0             20 20 20 20 20 69 6e 74 65 67 65 72 3b 0a 73 61 76 65 64 5f 70 61 72 74 3a 20 20 20 20 20 62 6f   ┆     integer; saved_part:     bo┆
0x03b6e0…03b700             6f 6c 65 61 6e 3b 0a 73 61 76 65 64 5f 70 61 63 6b 3a 20 20 20 20 20 62 6f 6f 6c 65 61 6e 3b 0a   ┆olean; saved_pack:     boolean; ┆
0x03b700…03b720             73 61 76 65 64 5f 62 69 74 3a 20 20 20 20 20 20 69 6e 74 65 67 65 72 3b 0a 73 61 76 65 64 5f 63   ┆saved_bit:      integer; saved_c┆
0x03b720…03b740             68 61 69 6e 3a 20 20 20 20 69 6e 74 65 67 65 72 3b 0a 73 61 76 65 64 5f 76 5f 6c 65 6e 67 74 68   ┆hain:    integer; saved_v_length┆
0x03b740…03b760             3a 20 69 6e 74 65 67 65 72 3b 0a 73 61 76 65 64 5f 69 64 63 6f 75 6e 74 3a 20 20 69 6e 74 65 67   ┆: integer; saved_idcount:  integ┆
0x03b760…03b780             65 72 3b 0a 73 61 76 65 64 5f 6c 69 78 3a 20 20 20 20 20 20 69 6e 74 65 67 65 72 3b 0a 73 61 76   ┆er; saved_lix:      integer; sav┆
0x03b780…03b7a0             65 64 5f 61 6c 6c 69 67 6e 3a 20 20 20 62 6f 6f 6c 65 61 6e 3b 0a 73 61 76 65 64 5f 69 6e 69 74   ┆ed_allign:   boolean; saved_init┆
0x03b7a0…03b7c0             3a 20 20 20 20 20 62 6f 6f 6c 65 61 6e 3b 0a 73 61 76 65 64 5f 64 79 6e 3a 20 20 20 20 20 20 62   ┆:     boolean; saved_dyn:      b┆
0x03b7c0…03b7e0             6f 6f 6c 65 61 6e 3b 0a 73 61 76 65 64 5f 63 5f 69 6e 64 65 78 3a 20 20 69 6e 74 65 67 65 72 3b   ┆oolean; saved_c_index:  integer;┆
0x03b7e0…03b800             0a 73 61 76 65 64 5f 6e 61 6d 65 5f 6b 65 79 20 3a 20 69 6e 74 65 67 65 72 3b 0a 73 61 76 65 64   ┆ saved_name_key : integer; saved┆
0x03b800…03b820 (15, 1, 12) 5f 70 72 65 66 69 78 20 20 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 70 61 72 61 6d 65 74 65 72 5f 6c   ┆_prefix   : boolean; parameter_l┆
0x03b820…03b840             65 6e 67 74 68 3a 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64 3b 0a 0a 63 6f 6e 73 74 5f 61 72 65 61   ┆ength: integer; end;  const_area┆
0x03b840…03b860             5f 70 74 72 3d 20 5e 20 63 6f 6e 73 74 5f 61 72 65 61 3b 0a 63 6f 6e 73 74 5f 61 72 65 61 3d 20   ┆_ptr= ^ const_area; const_area= ┆
0x03b860…03b880             72 65 63 6f 72 64 0a 6e 65 78 74 5f 63 6f 6e 73 74 3a 20 63 6f 6e 73 74 5f 61 72 65 61 5f 70 74   ┆record next_const: const_area_pt┆
0x03b880…03b8a0             72 3b 0a 66 69 72 73 74 5f 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 3b 0a 63 6f 6e 73 74 5f 62   ┆r; first_index: integer; const_b┆
0x03b8a0…03b8c0             75 66 66 65 72 3a 20 61 72 72 61 79 20 5b 20 30 2e 2e 6d 61 78 5f 63 6f 6e 73 74 5f 61 72 65 61   ┆uffer: array [ 0..max_const_area┆
0x03b8c0…03b8e0             20 5d 20 6f 66 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64 3b 0a 0a 73 74 61 63 6b 5f 70 74 72 3d 20   ┆ ] of integer; end;  stack_ptr= ┆
0x03b8e0…03b900             5e 73 74 61 63 6b 5f 65 6c 65 6d 3b 0a 73 74 61 63 6b 5f 65 6c 65 6d 3d 72 65 63 6f 72 64 0a 66   ┆^stack_elem; stack_elem=record f┆
0x03b900…03b920             6f 72 6d 65 72 5f 65 6c 65 6d 3a 20 73 74 61 63 6b 5f 70 74 72 3b 0a 73 74 61 63 6b 65 64 5f 76   ┆ormer_elem: stack_ptr; stacked_v┆
0x03b920…03b940             61 6c 3a 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64 3b 0a 0a 75 6e 69 76 65 72 73 61 6c 5f 70 74 72   ┆al: integer; end;  universal_ptr┆
0x03b940…03b960             3d 20 5e 20 69 6e 74 65 67 65 72 3b 20 28 2a 20 75 73 65 64 20 66 6f 72 20 61 6c 6c 6f 63 61 74   ┆= ^ integer; (* used for allocat┆
0x03b960…03b980             69 6f 6e 20 6f 66 20 64 79 6e 61 6d 69 63 20 68 65 61 70 20 70 6f 72 74 69 6f 6e 73 20 2a 29 0a   ┆ion of dynamic heap portions *) ┆
0x03b980…03b9a0             0a 76 61 72 0a 73 6f 75 72 63 65 5f 6c 69 6e 65 3a 20 69 6e 74 65 67 65 72 3b 0a 69 6e 63 6f 64   ┆ var source_line: integer; incod┆
0x03b9a0…03b9c0             65 5f 66 69 6c 70 74 72 20 3a 20 5e 66 69 6c 72 65 63 3b 0a 69 6e 63 6f 64 65 5f 66 69 6c 65 69   ┆e_filptr : ^filrec; incode_filei┆
0x03b9c0…03b9e0             78 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6f 75 74 63 6f 64 65 5f 66 69 6c 70 74 72 3a 20 5e 66 69   ┆x : integer; outcode_filptr: ^fi┆
0x03b9e0…03ba00             6c 72 65 63 3b 0a 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69 78 3a 20 69 6e 74 65 67 65 72 3b 0a 70   ┆lrec; outcode_fileix: integer; p┆
0x03ba00…03ba20 (15, 1, 13) 61 73 73 33 66 69 6c 65 2c 20 70 61 73 73 34 66 69 6c 65 3a 20 66 69 6c 65 20 6f 66 20 66 69 6c   ┆ass3file, pass4file: file of fil┆
0x03ba20…03ba40             72 65 63 3b 0a 69 2c 0a 6d 61 78 5f 6e 61 6d 65 5f 6b 65 79 2c 20 28 2a 20 6f 75 74 70 75 74 20   ┆rec; i, max_name_key, (* output ┆
0x03ba40…03ba60             69 6e 20 74 68 65 20 65 6e 74 72 79 20 74 61 69 6c 20 6f 66 20 70 61 73 73 34 63 6f 64 65 20 2a   ┆in the entry tail of pass4code *┆
0x03ba60…03ba80             29 0a 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 3b 20 28 2a 20 72 65   ┆) max_name_index: integer; (* re┆
0x03ba80…03baa0             61 64 20 66 72 6f 6d 20 74 68 65 20 65 6e 74 72 79 20 74 61 69 6c 20 6f 66 20 70 61 73 73 33 63   ┆ad from the entry tail of pass3c┆
0x03baa0…03bac0             6f 64 65 20 2a 29 0a 63 6f 64 65 5f 66 69 6c 65 5f 6e 61 6d 65 3a 20 61 6c 66 61 3b 0a 70 72 6f   ┆ode *) code_file_name: alfa; pro┆
0x03bac0…03bae0             67 72 61 6d 5f 6f 6b 2c 20 74 65 73 74 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 63 6f 6e 73 74 0a 6d   ┆gram_ok, test: boolean;  const m┆
0x03bae0…03bb00             61 78 5f 6e 61 6d 65 73 20 3d 20 36 35 35 32 31 20 64 69 76 20 73 69 7a 65 6f 66 28 6e 61 6d 65   ┆ax_names = 65521 div sizeof(name┆
0x03bb00…03bb20             5f 72 65 63 29 3b 0a 6d 61 78 5f 6d 65 6d 6f 72 69 65 73 20 3d 20 34 3b 0a 0a 74 79 70 65 0a 6e   ┆_rec); max_memories = 4;  type n┆
0x03bb20…03bb40             61 6d 65 74 61 62 5f 74 79 70 65 3d 20 61 72 72 61 79 20 5b 30 2e 2e 6d 61 78 5f 6e 61 6d 65 73   ┆ametab_type= array [0..max_names┆
0x03bb40…03bb60             2d 31 5d 20 6f 66 20 6e 61 6d 65 5f 72 65 63 3b 0a 6e 61 6d 65 5f 72 65 63 5f 70 74 72 20 3d 20   ┆-1] of name_rec; name_rec_ptr = ┆
0x03bb60…03bb80             5e 6e 61 6d 65 5f 72 65 63 3b 0a 76 61 72 0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a   ┆^name_rec; var needed_namesize :┆
0x03bb80…03bba0             20 6c 6f 6e 67 69 6e 74 3b 0a 6e 61 6d 65 74 61 62 5f 70 74 72 3a 20 61 72 72 61 79 5b 30 2e 2e   ┆ longint; nametab_ptr: array[0..┆
0x03bba0…03bbc0             6d 61 78 5f 6d 65 6d 6f 72 69 65 73 2d 31 5d 20 6f 66 20 5e 20 6e 61 6d 65 74 61 62 5f 74 79 70   ┆max_memories-1] of ^ nametab_typ┆
0x03bbc0…03bbe0             65 3b 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 74 61 62 6c 65 28 69 78 3a 20 69 6e 74 65   ┆e;   function nametable(ix: inte┆
0x03bbe0…03bc00             67 65 72 29 3a 20 6e 61 6d 65 5f 72 65 63 5f 70 74 72 3b 0a 76 61 72 20 74 61 62 5f 69 78 20 3a   ┆ger): name_rec_ptr; var tab_ix :┆
0x03bc00…03bc20 (15, 1, 14) 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 74 61 62 5f 69 78 20 3a 3d 20 69 78 20 64 69 76   ┆ integer; begin tab_ix := ix div┆
0x03bc20…03bc40             20 6d 61 78 5f 6e 61 6d 65 73 3b 0a 6e 61 6d 65 74 61 62 6c 65 20 3a 3d 20 40 20 6e 61 6d 65 74   ┆ max_names; nametable := @ namet┆
0x03bc40…03bc60             61 62 5f 70 74 72 5b 74 61 62 5f 69 78 5d 5e 5b 69 78 20 2d 20 6d 61 78 5f 6e 61 6d 65 73 2a 74   ┆ab_ptr[tab_ix]^[ix - max_names*t┆
0x03bc60…03bc80             61 62 5f 69 78 5d 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 61 6c 6c 6f 63 5f 6e 61   ┆ab_ix]; end;  procedure alloc_na┆
0x03bc80…03bca0             6d 65 74 61 62 5f 61 6e 64 5f 63 61 6c 6c 5f 70 61 73 73 34 3b 0a 70 72 6f 63 65 64 75 72 65 20   ┆metab_and_call_pass4; procedure ┆
0x03bca0…03bcc0             70 61 73 73 34 3b 0a 0a 76 61 72 0a 0a 63 6f 6e 76 65 72 74 5f 69 6e 5f 63 6f 64 65 3a 20 61 72   ┆pass4;  var  convert_in_code: ar┆
0x03bcc0…03bce0             72 61 79 20 5b 70 61 73 73 33 63 6f 64 65 69 6e 64 65 78 5d 20 6f 66 20 70 61 73 73 33 63 6f 64   ┆ray [pass3codeindex] of pass3cod┆
0x03bce0…03bd00             65 73 3b 0a 0a 0a 6e 69 78 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 0a 66 69 72 73 74 5f 6f 66 5f 65   ┆es;   nix: integer;   first_of_e┆
0x03bd00…03bd20             78 70 72 2c 0a 6f 73 2c 20 6f 74 2c 20 65 6d 70 74 79 5f 73 74 61 63 6b 3a 20 6f 70 65 72 61 6e   ┆xpr, os, ot, empty_stack: operan┆
0x03bd20…03bd40             64 5f 70 74 72 3b 0a 0a 73 74 72 75 63 5f 62 6f 74 74 6f 6d 2c 0a 73 73 3a 20 73 74 72 75 63 5f   ┆d_ptr;  struc_bottom, ss: struc_┆
0x03bd40…03bd60             70 74 72 3b 0a 0a 73 74 61 63 6b 5f 74 6f 70 2c 20 28 2a 20 74 6f 70 20 65 6c 65 6d 65 6e 74 20   ┆ptr;  stack_top, (* top element ┆
0x03bd60…03bd80             6f 66 20 73 74 61 63 6b 65 64 20 65 6c 65 6d 65 6e 74 73 20 2a 29 0a 66 72 65 65 5f 73 74 61 63   ┆of stacked elements *) free_stac┆
0x03bd80…03bda0             6b 3a 20 73 74 61 63 6b 5f 70 74 72 3b 20 28 2a 20 73 74 61 63 6b 20 6f 66 20 70 6f 70 65 64 20   ┆k: stack_ptr; (* stack of poped ┆
0x03bda0…03bdc0             65 6c 65 6d 65 6e 74 73 2c 20 69 2e 65 2e 20 70 6f 70 65 64 20 65 6c 65 6d 65 6e 74 73 20 61 72   ┆elements, i.e. poped elements ar┆
0x03bdc0…03bde0             65 0a 61 63 63 65 73 73 69 62 6c 65 20 69 6e 20 72 65 76 65 72 73 65 20 6f 72 64 65 72 20 74 68   ┆e accessible in reverse order th┆
0x03bde0…03be00             72 6f 75 67 68 20 74 68 65 20 66 6f 72 6d 65 72 2d 63 68 61 69 6e 20 6f 66 20 66 72 65 65 5f 73   ┆rough the former-chain of free_s┆
0x03be00…03be20 (15, 1, 15) 74 61 63 6b 20 2a 29 0a 0a 28 2a 20 74 68 65 20 63 6f 6e 73 74 20 61 72 65 61 20 69 73 20 61 20   ┆tack *)  (* the const area is a ┆
0x03be20…03be40             63 68 61 69 6e 20 6f 66 20 63 6f 6e 73 74 61 6e 74 20 62 75 66 66 65 72 73 20 65 6c 65 6d 65 6e   ┆chain of constant buffers elemen┆
0x03be40…03be60             74 73 20 61 72 65 20 72 65 74 72 69 65 76 65 64 20 61 6e 64 0a 75 70 64 61 74 65 64 20 62 79 20   ┆ts are retrieved and updated by ┆
0x03be60…03be80             72 6f 75 74 69 6e 65 73 20 27 72 65 74 72 69 65 76 65 5f 63 27 20 61 6e 64 20 27 75 70 64 61 74   ┆routines 'retrieve_c' and 'updat┆
0x03be80…03bea0             65 5f 63 27 20 2a 29 0a 73 74 61 72 74 5f 63 6f 6e 73 74 5f 61 72 65 61 2c 20 28 2a 20 66 69 72   ┆e_c' *) start_const_area, (* fir┆
0x03bea0…03bec0             73 74 20 63 6f 6e 73 74 61 6e 74 20 62 75 66 66 65 72 20 2a 29 0a 63 75 72 72 65 6e 74 5f 63 6f   ┆st constant buffer *) current_co┆
0x03bec0…03bee0             6e 73 74 5f 61 72 65 61 3a 20 63 6f 6e 73 74 5f 61 72 65 61 5f 70 74 72 3b 20 28 2a 20 6c 61 73   ┆nst_area: const_area_ptr; (* las┆
0x03bee0…03bf00             74 20 61 63 63 65 73 73 65 64 20 63 6f 6e 73 74 20 62 75 66 66 65 72 20 2a 29 0a 66 69 72 73 74   ┆t accessed const buffer *) first┆
0x03bf00…03bf20             5f 63 5f 69 6e 64 65 78 2c 20 74 6f 70 5f 63 5f 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 3b 20   ┆_c_index, top_c_index: integer; ┆
0x03bf20…03bf40             28 2a 20 63 6f 6e 73 74 20 61 72 65 61 20 69 6e 64 69 63 65 73 20 2a 29 0a 0a 62 6f 74 74 6f 6d   ┆(* const area indices *)  bottom┆
0x03bf40…03bf60             5f 6c 65 76 65 6c 2c 20 20 28 2a 20 62 6f 74 74 6f 6d 20 6f 66 20 64 69 73 70 6c 61 79 20 73 74   ┆_level,  (* bottom of display st┆
0x03bf60…03bf80             61 63 6b 20 2a 29 0a 74 68 69 73 5f 6c 65 76 65 6c 3a 20 64 69 73 70 6c 61 79 5f 70 74 72 3b 20   ┆ack *) this_level: display_ptr; ┆
0x03bf80…03bfa0             28 2a 20 63 75 72 72 65 6e 74 20 6c 65 76 65 6c 20 2a 29 0a 0a 64 69 72 65 63 74 5f 72 65 74 75   ┆(* current level *)  direct_retu┆
0x03bfa0…03bfc0             72 6e 2c 20 61 72 72 61 79 5f 74 79 70 65 73 2c 20 69 6e 64 65 78 5f 74 79 70 65 73 2c 20 69 6e   ┆rn, array_types, index_types, in┆
0x03bfc0…03bfe0             64 69 72 65 63 74 73 2c 20 69 6e 69 74 5f 74 79 70 65 73 2c 0a 61 6c 6c 69 67 6e 5f 74 79 70 65   ┆directs, init_types, allign_type┆
0x03bfe0…03c000             73 2c 61 64 6a 75 73 74 5f 74 79 70 65 73 2c 76 61 72 5f 74 79 70 65 73 2c 20 73 69 6d 70 6c 65   ┆s,adjust_types,var_types, simple┆
0x03c000…03c020 (16, 0, 1)  5f 74 79 70 65 73 3a 20 73 65 74 20 6f 66 20 63 6f 6e 74 65 78 74 5f 6b 69 6e 64 3b 0a 0a 6e 65   ┆_types: set of context_kind;  ne┆
0x03c020…03c040             77 5f 63 61 6c 6c 2c 20 28 2a 20 74 72 75 65 20 62 65 74 77 65 65 6e 20 70 72 6f 63 63 61 6c 6c   ┆w_call, (* true between proccall┆
0x03c040…03c060             28 6e 65 77 29 20 61 6e 64 20 65 6e 64 70 72 6f 63 2c 20 66 6c 61 67 20 65 78 74 72 61 20 70 61   ┆(new) and endproc, flag extra pa┆
0x03c060…03c080             72 61 6d 65 74 65 72 20 61 6e 64 20 73 70 65 63 69 61 6c 20 65 6e 64 63 61 6c 6c 20 61 63 74 69   ┆rameter and special endcall acti┆
0x03c080…03c0a0             6f 6e 20 2a 29 0a 64 6f 6e 65 2c 20 61 6c 6c 69 67 6e 5f 66 69 65 6c 64 73 2c 69 6e 69 74 5f 66   ┆on *) done, allign_fields,init_f┆
0x03c0a0…03c0c0             69 65 6c 64 73 2c 20 64 79 6e 5f 66 69 65 6c 64 73 2c 20 70 61 63 6b 5f 72 65 63 6f 72 64 2c 20   ┆ields, dyn_fields, pack_record, ┆
0x03c0c0…03c0e0             70 72 65 6c 75 64 65 2c 0a 69 6e 64 65 78 5f 63 68 65 63 6b 2c 20 70 72 65 66 69 78 65 64 5f 6e   ┆prelude, index_check, prefixed_n┆
0x03c0e0…03c100             61 6d 65 2c 20 74 65 6d 70 5f 77 69 74 68 76 61 72 5f 6e 6f 74 5f 75 73 65 64 2c 20 6c 69 6e 65   ┆ame, temp_withvar_not_used, line┆
0x03c100…03c120             5f 6e 75 6d 62 65 72 2c 0a 6c 6f 63 6b 5f 6d 65 73 5f 73 74 61 74 2c 0a 70 72 65 73 65 72 76 65   ┆_number, lock_mes_stat, preserve┆
0x03c120…03c140             5f 6f 70 74 69 6f 6e 2c 0a 70 72 65 66 69 78 65 64 2c 20 73 74 61 74 5f 70 61 72 74 2c 20 76 61   ┆_option, prefixed, stat_part, va┆
0x03c140…03c160             72 69 61 62 6c 65 5f 69 6e 69 74 2c 20 65 78 70 6f 72 74 2c 20 74 65 73 74 5f 73 75 72 76 65 79   ┆riable_init, export, test_survey┆
0x03c160…03c180             2c 20 70 61 72 61 6d 5f 6c 69 73 74 20 3a 20 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 6d 6f 64 65 3a 20   ┆, param_list :  boolean;  mode: ┆
0x03c180…03c1a0             62 6c 6f 63 6b 5f 6d 6f 64 65 3b 0a 0a 65 78 74 5f 6e 61 6d 65 2c 0a 70 72 65 66 69 78 5f 6e 61   ┆block_mode;  ext_name, prefix_na┆
0x03c1a0…03c1c0             6d 65 3a 20 61 6c 66 61 3b 0a 0a 65 78 70 6f 72 74 5f 6b 69 6e 64 3a 20 65 78 70 6f 72 74 5f 6b   ┆me: alfa;  export_kind: export_k┆
0x03c1c0…03c1e0             69 6e 64 5f 74 79 70 65 3b 0a 74 79 70 65 5f 70 6f 69 6e 74 65 72 2c 20 28 2a 20 74 61 72 67 65   ┆ind_type; type_pointer, (* targe┆
0x03c1e0…03c200             74 20 6d 61 63 68 69 6e 65 20 64 65 70 65 6e 64 65 6e 74 20 63 6f 6e 73 74 61 6e 74 20 21 21 21   ┆t machine dependent constant !!!┆
0x03c200…03c220 (16, 0, 2)  20 2a 29 0a 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 2c 20 28 2a 20 74 61 72 67 65 74 20 6d 61   ┆ *) pointer_length, (* target ma┆
0x03c220…03c240             63 68 69 6e 65 20 64 65 70 65 6e 64 65 6e 74 20 63 6f 6e 73 74 61 6e 74 20 21 21 21 20 2a 29 0a   ┆chine dependent constant !!! *) ┆
0x03c240…03c260             61 63 74 69 76 61 74 69 6f 6e 5f 72 65 63 6f 72 64 5f 6c 65 6e 67 74 68 2c 0a 66 69 65 6c 64 5f   ┆activation_record_length, field_┆
0x03c260…03c280             75 6e 69 74 65 2c 0a 74 6f 70 5f 6e 69 78 2c 0a 74 6f 70 5f 73 74 61 63 6b 2c 0a 74 6f 70 5f 6f   ┆unite, top_nix, top_stack, top_o┆
0x03c280…03c2a0             70 73 2c 0a 74 6f 70 5f 73 73 2c 0a 74 6f 70 5f 6c 69 78 2c 0a 70 72 6f 63 65 73 73 5f 6f 66 66   ┆ps, top_ss, top_lix, process_off┆
0x03c2a0…03c2c0             73 65 74 2c 0a 63 75 72 72 65 6e 74 5f 62 69 74 2c 0a 63 75 72 72 65 6e 74 5f 6c 69 78 2c 0a 63   ┆set, current_bit, current_lix, c┆
0x03c2c0…03c2e0             75 72 72 65 6e 74 5f 6e 69 76 2c 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 2c 0a 72 65 63 6f   ┆urrent_niv, current_offset, reco┆
0x03c2e0…03c300             72 64 5f 6f 66 66 73 65 74 2c 0a 70 72 6f 63 65 73 73 5f 6e 69 76 2c 20 28 2a 75 73 65 64 20 74   ┆rd_offset, process_niv, (*used t┆
0x03c300…03c320             6f 20 6e 6f 74 65 20 6f 75 74 65 72 6d 6f 73 74 20 70 72 6f 63 65 73 73 20 6c 65 76 65 6c 20 6f   ┆o note outermost process level o┆
0x03c320…03c340             72 20 70 72 65 66 69 78 2e 20 49 74 20 74 61 6b 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆r prefix. It takes              ┆
0x03c340…03c360             20 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 76 61 6c 75 65 73 3a 20 2d 31 3a 65 6e 76 69 72   ┆  the following values: -1:envir┆
0x03c360…03c380             6f 6e 6d 65 6e 74 2c 20 30 3a 6f 75 74 65 72 6d 6f 73 74 20 70 72 6f 63 65 73 73 0a 20 20 20 20   ┆onment, 0:outermost process     ┆
0x03c380…03c3a0             20 20 20 20 20 20 20 20 20 20 20 6f 72 20 70 72 65 66 69 78 2c 20 3e 30 3a 20 69 6e 6e 65 72 20   ┆           or prefix, >0: inner ┆
0x03c3a0…03c3c0             70 72 6f 63 65 73 73 2a 29 0a 6e 61 6d 65 5f 6b 65 79 2c 0a 66 69 65 6c 64 5f 6f 66 66 73 65 74   ┆process*) name_key, field_offset┆
0x03c3c0…03c3e0             2c 0a 76 61 72 5f 6c 65 6e 67 74 68 2c 0a 69 64 63 6f 75 6e 74 2c 0a 73 63 61 6c 61 72 5f 63 6f   ┆, var_length, idcount, scalar_co┆
0x03c3e0…03c400             75 6e 74 2c 0a 70 61 72 61 6d 5f 6e 75 6d 62 65 72 2c 0a 68 65 61 64 5f 6c 69 6e 65 2c 0a 70 72   ┆unt, param_number, head_line, pr┆
0x03c400…03c420 (16, 0, 3)  6f 63 65 73 73 5f 70 61 72 61 6d 5f 6c 65 6e 67 74 68 2c 0a 70 72 69 6e 74 65 64 2c 0a 69 2c 6e   ┆ocess_param_length, printed, i,n┆
0x03c420…03c440             6f 2c 0a 6e 69 6c 5f 6e 69 78 2c 20 28 2a 20 6e 61 6d 65 20 74 61 62 6c 65 20 69 6e 64 65 78 20   ┆o, nil_nix, (* name table index ┆
0x03c440…03c460             6f 66 20 65 78 74 65 72 6e 61 6c 20 72 6f 75 74 69 6e 65 20 6e 69 6c 2c 20 6f 6e 6c 79 20 75 73   ┆of external routine nil, only us┆
0x03c460…03c480             65 64 20 62 79 20 7a 38 30 20 76 65 72 73 69 6f 6e 20 2a 29 0a 6e 69 6c 74 79 70 65 5f 6e 69 78   ┆ed by z80 version *) niltype_nix┆
0x03c480…03c4a0             2c 0a 75 6e 64 65 66 5f 6e 69 78 2c 0a 6d 61 78 5f 73 65 74 5f 63 6f 6e 73 74 5f 76 61 6c 75 65   ┆, undef_nix, max_set_const_value┆
0x03c4a0…03c4c0             2c 0a 73 65 6d 61 70 68 6f 72 5f 6c 65 6e 67 74 68 2c 0a 63 68 61 69 6e 20 20 20 20 20 20 20 20   ┆, semaphor_length, chain        ┆
0x03c4c0…03c4e0             20 20 20 20 20 20 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 74 6f 70 5f 63 20 20 20 20 20 20 20 20   ┆        : integer; top_c        ┆
0x03c4e0…03c500             20 20 20 20 20 20 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆        : integer;    procedure ┆
0x03c500…03c520             65 72 72 6f 72 28 74 79 3a 20 65 72 72 6f 72 5f 74 79 70 65 73 29 3b 20 20 66 6f 72 77 61 72 64   ┆error(ty: error_types);  forward┆
0x03c520…03c540             3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6c 6f 61 64 5f 65 78 70 72 3b 20 20 66 6f 72 77 61 72 64   ┆;  procedure load_expr;  forward┆
0x03c540…03c560             3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 72 69 6e 74 28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65   ┆;   procedure print(op: out_code┆
0x03c560…03c580             29 3b 0a 62 65 67 69 6e 0a 69 66 20 70 72 69 6e 74 65 64 3e 3d 70 72 69 6e 74 5f 6c 69 6d 69 74   ┆); begin if printed>=print_limit┆
0x03c580…03c5a0             20 74 68 65 6e 20 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 3b 20 20 70 72 69 6e 74 65 64 3a 3d 30   ┆ then begin writeln;  printed:=0┆
0x03c5a0…03c5c0             3b 0a 65 6e 64 3b 0a 77 72 69 74 65 28 27 20 20 20 2a 27 2c 6f 72 64 28 6f 70 29 3a 33 29 3b 0a   ┆; end; write('   *',ord(op):3); ┆
0x03c5c0…03c5e0             70 72 69 6e 74 65 64 3a 3d 70 72 69 6e 74 65 64 2b 31 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64   ┆printed:=printed+1; end;  proced┆
0x03c5e0…03c600             75 72 65 20 70 72 69 6e 74 5f 61 72 67 28 61 72 67 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67   ┆ure print_arg(arg: integer); beg┆
0x03c600…03c620 (16, 0, 4)  69 6e 0a 69 66 20 70 72 69 6e 74 65 64 3e 3d 70 72 69 6e 74 5f 6c 69 6d 69 74 20 74 68 65 6e 20   ┆in if printed>=print_limit then ┆
0x03c620…03c640             62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 3b 20 20 70 72 69 6e 74 65 64 3a 3d 30 3b 0a 65 6e 64 3b   ┆begin writeln;  printed:=0; end;┆
0x03c640…03c660             0a 77 72 69 74 65 28 61 72 67 3a 37 29 3b 0a 70 72 69 6e 74 65 64 3a 3d 70 72 69 6e 74 65 64 2b   ┆ write(arg:7); printed:=printed+┆
0x03c660…03c680             31 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 61 73 73 69 6e 28 76 61 72 20 6e 75   ┆1; end;  procedure passin(var nu┆
0x03c680…03c6a0             6d 62 65 72 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69 6e 0a 20 20 69 6e 63 6f 64 65 5f 66   ┆mber: integer); begin   incode_f┆
0x03c6a0…03c6c0             69 6c 65 69 78 20 3a 3d 20 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 20 2b 20 31 3b 0a 20 20 69 66   ┆ileix := incode_fileix + 1;   if┆
0x03c6c0…03c6e0             20 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 20 3e 20 66 69 6c 72 65 63 5f 6d 61 78 20 74 68 65 6e   ┆ incode_fileix > filrec_max then┆
0x03c6e0…03c700             0a 20 20 62 65 67 69 6e 0a 20 20 20 20 72 65 61 64 28 70 61 73 73 33 66 69 6c 65 2c 20 69 6e 63   ┆   begin     read(pass3file, inc┆
0x03c700…03c720             6f 64 65 5f 66 69 6c 70 74 72 5e 29 3b 0a 20 20 20 20 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 20   ┆ode_filptr^);     incode_fileix ┆
0x03c720…03c740             3a 3d 20 31 3b 0a 20 20 65 6e 64 3b 0a 20 20 6e 75 6d 62 65 72 20 3a 3d 20 69 6e 63 6f 64 65 5f   ┆:= 1;   end;   number := incode_┆
0x03c740…03c760             66 69 6c 70 74 72 5e 5b 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 5d 3b 0a 65 6e 64 3b 0a 0a 70 72   ┆filptr^[incode_fileix]; end;  pr┆
0x03c760…03c780             6f 63 65 64 75 72 65 20 6f 75 74 63 6f 64 65 28 63 3a 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69   ┆ocedure outcode(c:integer); begi┆
0x03c780…03c7a0             6e 0a 20 20 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d 20 6f 75 74 63 6f 64 65 5f 66 69   ┆n   outcode_fileix := outcode_fi┆
0x03c7a0…03c7c0             6c 65 69 78 20 2b 20 31 3b 0a 20 20 69 66 20 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3e 20   ┆leix + 1;   if outcode_fileix > ┆
0x03c7c0…03c7e0             66 69 6c 72 65 63 5f 6d 61 78 20 74 68 65 6e 0a 20 20 62 65 67 69 6e 0a 20 20 20 20 77 72 69 74   ┆filrec_max then   begin     writ┆
0x03c7e0…03c800             65 28 70 61 73 73 34 66 69 6c 65 2c 20 6f 75 74 63 6f 64 65 5f 66 69 6c 70 74 72 5e 29 3b 0a 20   ┆e(pass4file, outcode_filptr^);  ┆
0x03c800…03c820 (16, 0, 5)  20 20 20 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d 20 31 3b 0a 20 20 65 6e 64 3b 0a 20   ┆   outcode_fileix := 1;   end;  ┆
0x03c820…03c840             20 6f 75 74 63 6f 64 65 5f 66 69 6c 70 74 72 5e 5b 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69 78 5d   ┆ outcode_filptr^[outcode_fileix]┆
0x03c840…03c860             20 3a 3d 20 63 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 73 74 5f 6c 69 6e 65   ┆ := c; end;  procedure test_line┆
0x03c860…03c880             6e 75 6d 62 65 72 3b 0a 76 61 72 20 6e 65 77 6c 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e   ┆number; var newl: integer; begin┆
0x03c880…03c8a0             0a 69 66 20 6c 69 6e 65 5f 6e 75 6d 62 65 72 20 74 68 65 6e 20 62 65 67 69 6e 0a 6e 65 77 6c 20   ┆ if line_number then begin newl ┆
0x03c8a0…03c8c0             3a 3d 20 6f 72 64 28 7a 6e 65 77 6c 69 6e 65 29 3b 0a 6f 75 74 63 6f 64 65 28 6e 65 77 6c 29 3b   ┆:= ord(znewline); outcode(newl);┆
0x03c8c0…03c8e0             0a 6f 75 74 63 6f 64 65 28 73 6f 75 72 63 65 5f 6c 69 6e 65 29 3b 0a 6c 69 6e 65 5f 6e 75 6d 62   ┆ outcode(source_line); line_numb┆
0x03c8e0…03c900             65 72 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆er:=false; end; end;  procedure ┆
0x03c900…03c920             70 75 74 30 28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65 29 3b 0a 76 61 72 20 61 72 67 3a 20 69 6e 74   ┆put0(op: out_code); var arg: int┆
0x03c920…03c940             65 67 65 72 3b 0a 62 65 67 69 6e 0a 74 65 73 74 5f 6c 69 6e 65 6e 75 6d 62 65 72 3b 0a 61 72 67   ┆eger; begin test_linenumber; arg┆
0x03c940…03c960             20 3a 3d 20 6f 72 64 28 6f 70 29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 29 3b 0a 69 66 20 74 65   ┆ := ord(op); outcode(arg); if te┆
0x03c960…03c980             73 74 20 74 68 65 6e 20 70 72 69 6e 74 28 6f 70 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75   ┆st then print(op); end;  procedu┆
0x03c980…03c9a0             72 65 20 70 75 74 31 28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65 3b 20 61 72 67 31 3a 20 69 6e 74 65   ┆re put1(op: out_code; arg1: inte┆
0x03c9a0…03c9c0             67 65 72 29 3b 0a 76 61 72 20 61 72 67 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 74 65   ┆ger); var arg: integer; begin te┆
0x03c9c0…03c9e0             73 74 5f 6c 69 6e 65 6e 75 6d 62 65 72 3b 0a 61 72 67 20 3a 3d 20 6f 72 64 28 6f 70 29 3b 0a 6f   ┆st_linenumber; arg := ord(op); o┆
0x03c9e0…03ca00             75 74 63 6f 64 65 28 61 72 67 29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 31 29 3b 0a 69 66 20 74   ┆utcode(arg); outcode(arg1); if t┆
0x03ca00…03ca20 (16, 0, 6)  65 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 72 69 6e 74 28 6f 70 29 3b 20 20 70 72 69 6e 74   ┆est then begin print(op);  print┆
0x03ca20…03ca40             5f 61 72 67 28 61 72 67 31 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65   ┆_arg(arg1); end; end;  procedure┆
0x03ca40…03ca60             20 70 75 74 32 28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65 3b 20 61 72 67 31 2c 61 72 67 32 3a 20 69   ┆ put2(op: out_code; arg1,arg2: i┆
0x03ca60…03ca80             6e 74 65 67 65 72 29 3b 0a 76 61 72 20 61 72 67 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e   ┆nteger); var arg: integer; begin┆
0x03ca80…03caa0             0a 74 65 73 74 5f 6c 69 6e 65 6e 75 6d 62 65 72 3b 0a 61 72 67 20 3a 3d 20 6f 72 64 28 6f 70 29   ┆ test_linenumber; arg := ord(op)┆
0x03caa0…03cac0             3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 31 29 3b 0a 6f   ┆; outcode(arg); outcode(arg1); o┆
0x03cac0…03cae0             75 74 63 6f 64 65 28 61 72 67 32 29 3b 0a 69 66 20 74 65 73 74 20 74 68 65 6e 20 62 65 67 69 6e   ┆utcode(arg2); if test then begin┆
0x03cae0…03cb00             0a 70 72 69 6e 74 28 6f 70 29 3b 20 20 70 72 69 6e 74 5f 61 72 67 28 61 72 67 31 29 3b 20 20 70   ┆ print(op);  print_arg(arg1);  p┆
0x03cb00…03cb20             72 69 6e 74 5f 61 72 67 28 61 72 67 32 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65   ┆rint_arg(arg2); end; end;  proce┆
0x03cb20…03cb40             64 75 72 65 20 70 75 74 33 28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65 3b 20 61 72 67 31 2c 61 72 67   ┆dure put3(op: out_code; arg1,arg┆
0x03cb40…03cb60             32 2c 61 72 67 33 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 20 61 72 67 3a 20 69 6e 74 65 67   ┆2,arg3: integer); var arg: integ┆
0x03cb60…03cb80             65 72 3b 0a 62 65 67 69 6e 0a 74 65 73 74 5f 6c 69 6e 65 6e 75 6d 62 65 72 3b 0a 61 72 67 20 3a   ┆er; begin test_linenumber; arg :┆
0x03cb80…03cba0             3d 20 6f 72 64 28 6f 70 29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 29 3b 0a 6f 75 74 63 6f 64 65   ┆= ord(op); outcode(arg); outcode┆
0x03cba0…03cbc0             28 61 72 67 31 29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 32 29 3b 0a 6f 75 74 63 6f 64 65 28 61   ┆(arg1); outcode(arg2); outcode(a┆
0x03cbc0…03cbe0             72 67 33 29 3b 0a 69 66 20 74 65 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 72 69 6e 74 28 6f   ┆rg3); if test then begin print(o┆
0x03cbe0…03cc00             70 29 3b 20 20 70 72 69 6e 74 5f 61 72 67 28 61 72 67 31 29 3b 20 20 20 70 72 69 6e 74 5f 61 72   ┆p);  print_arg(arg1);   print_ar┆
0x03cc00…03cc20 (16, 0, 7)  67 28 61 72 67 32 29 3b 0a 70 72 69 6e 74 5f 61 72 67 28 61 72 67 33 29 3b 0a 65 6e 64 3b 0a 65   ┆g(arg2); print_arg(arg3); end; e┆
0x03cc20…03cc40             6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 74 34 28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65   ┆nd;  procedure put4(op: out_code┆
0x03cc40…03cc60             3b 20 61 72 67 31 2c 61 72 67 32 2c 61 72 67 33 2c 61 72 67 34 3a 20 69 6e 74 65 67 65 72 29 3b   ┆; arg1,arg2,arg3,arg4: integer);┆
0x03cc60…03cc80             0a 76 61 72 20 61 72 67 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 74 65 73 74 5f 6c 69   ┆ var arg: integer; begin test_li┆
0x03cc80…03cca0             6e 65 6e 75 6d 62 65 72 3b 0a 61 72 67 20 3a 3d 20 6f 72 64 28 6f 70 29 3b 0a 6f 75 74 63 6f 64   ┆nenumber; arg := ord(op); outcod┆
0x03cca0…03ccc0             65 28 61 72 67 29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 31 29 3b 0a 6f 75 74 63 6f 64 65 28 61   ┆e(arg); outcode(arg1); outcode(a┆
0x03ccc0…03cce0             72 67 32 29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 33 29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67   ┆rg2); outcode(arg3); outcode(arg┆
0x03cce0…03cd00             34 29 3b 0a 69 66 20 74 65 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 72 69 6e 74 28 6f 70 29   ┆4); if test then begin print(op)┆
0x03cd00…03cd20             3b 20 20 20 70 72 69 6e 74 5f 61 72 67 28 61 72 67 31 29 3b 20 20 20 70 72 69 6e 74 5f 61 72 67   ┆;   print_arg(arg1);   print_arg┆
0x03cd20…03cd40             28 61 72 67 32 29 3b 0a 70 72 69 6e 74 5f 61 72 67 28 61 72 67 33 29 3b 20 20 20 70 72 69 6e 74   ┆(arg2); print_arg(arg3);   print┆
0x03cd40…03cd60             5f 61 72 67 28 61 72 67 34 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65   ┆_arg(arg4); end; end;  procedure┆
0x03cd60…03cd80             20 70 75 74 5f 61 72 67 31 28 61 72 67 31 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69 6e 0a   ┆ put_arg1(arg1: integer); begin ┆
0x03cd80…03cda0             6f 75 74 63 6f 64 65 28 61 72 67 31 29 3b 0a 69 66 20 74 65 73 74 20 74 68 65 6e 20 70 72 69 6e   ┆outcode(arg1); if test then prin┆
0x03cda0…03cdc0             74 5f 61 72 67 28 61 72 67 31 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 74   ┆t_arg(arg1); end;  procedure put┆
0x03cdc0…03cde0             5f 61 72 67 32 28 61 72 67 31 2c 61 72 67 32 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69 6e   ┆_arg2(arg1,arg2: integer); begin┆
0x03cde0…03ce00             0a 6f 75 74 63 6f 64 65 28 61 72 67 31 29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 32 29 3b 0a 69   ┆ outcode(arg1); outcode(arg2); i┆
0x03ce00…03ce20 (16, 0, 8)  66 20 74 65 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 72 69 6e 74 5f 61 72 67 28 61 72 67 31   ┆f test then begin print_arg(arg1┆
0x03ce20…03ce40             29 3b 20 20 20 70 72 69 6e 74 5f 61 72 67 28 61 72 67 32 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a   ┆);   print_arg(arg2); end; end; ┆
0x03ce40…03ce60             0a 70 72 6f 63 65 64 75 72 65 20 70 75 74 5f 61 72 67 33 28 61 72 67 31 2c 61 72 67 32 2c 61 72   ┆ procedure put_arg3(arg1,arg2,ar┆
0x03ce60…03ce80             67 33 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69 6e 0a 6f 75 74 63 6f 64 65 28 61 72 67 31   ┆g3: integer); begin outcode(arg1┆
0x03ce80…03cea0             29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 32 29 3b 0a 6f 75 74 63 6f 64 65 28 61 72 67 33 29 3b   ┆); outcode(arg2); outcode(arg3);┆
0x03cea0…03cec0             0a 69 66 20 74 65 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 72 69 6e 74 5f 61 72 67 28 61 72   ┆ if test then begin print_arg(ar┆
0x03cec0…03cee0             67 31 29 3b 20 70 72 69 6e 74 5f 61 72 67 28 61 72 67 32 29 3b 20 70 72 69 6e 74 5f 61 72 67 28   ┆g1); print_arg(arg2); print_arg(┆
0x03cee0…03cf00             61 72 67 33 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 70 79   ┆arg3); end; end;  procedure copy┆
0x03cf00…03cf20             28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65 3b 20 6e 6f 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72   ┆(op: out_code; no: integer); var┆
0x03cf20…03cf40             20 61 72 67 2c 20 69 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 75 74 30 28 6f 70 29   ┆ arg, i: integer; begin put0(op)┆
0x03cf40…03cf60             3b 0a 66 6f 72 20 69 3a 3d 31 20 74 6f 20 6e 6f 20 64 6f 20 62 65 67 69 6e 0a 70 61 73 73 69 6e   ┆; for i:=1 to no do begin passin┆
0x03cf60…03cf80             28 61 72 67 29 3b 20 20 20 70 75 74 5f 61 72 67 31 28 61 72 67 29 3b 0a 65 6e 64 3b 0a 65 6e 64   ┆(arg);   put_arg1(arg); end; end┆
0x03cf80…03cfa0             3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6e 65 77 5f 6c 69 6e 65 3b 0a 62 65 67 69 6e 0a 70 61 73   ┆;  procedure new_line; begin pas┆
0x03cfa0…03cfc0             73 69 6e 28 73 6f 75 72 63 65 5f 6c 69 6e 65 29 3b 0a 6c 69 6e 65 5f 6e 75 6d 62 65 72 3a 3d 74   ┆sin(source_line); line_number:=t┆
0x03cfc0…03cfe0             72 75 65 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 6e 61 6d 65 28 6e 61   ┆rue; end;  procedure out_name(na┆
0x03cfe0…03d000             6d 65 3a 20 61 6c 66 61 29 3b 0a 76 61 72 20 69 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e   ┆me: alfa); var i: integer; begin┆
0x03d000…03d020 (16, 0, 9)  0a 66 6f 72 20 69 3a 3d 31 20 74 6f 20 61 6c 66 61 6c 65 6e 67 74 68 20 64 6f 20 70 75 74 5f 61   ┆ for i:=1 to alfalength do put_a┆
0x03d020…03d040             72 67 31 28 20 6f 72 64 28 6e 61 6d 65 5b 69 5d 20 29 20 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f   ┆rg1( ord(name[i] ) ); end;   pro┆
0x03d040…03d060             63 65 64 75 72 65 20 66 69 6e 64 5f 63 6f 6e 73 74 5f 70 74 72 28 69 6e 64 65 78 3a 20 69 6e 74   ┆cedure find_const_ptr(index: int┆
0x03d060…03d080             65 67 65 72 29 3b 0a 76 61 72 0a 63 75 72 5f 70 74 72 3a 20 63 6f 6e 73 74 5f 61 72 65 61 5f 70   ┆eger); var cur_ptr: const_area_p┆
0x03d080…03d0a0             74 72 3b 0a 62 65 67 69 6e 0a 28 2a 20 66 69 6e 64 20 63 6f 6e 73 74 20 62 75 66 66 65 72 20 63   ┆tr; begin (* find const buffer c┆
0x03d0a0…03d0c0             6f 6e 74 61 69 6e 69 6e 67 20 27 69 6e 64 65 78 27 20 61 6e 64 20 6c 65 74 20 27 63 75 72 72 65   ┆ontaining 'index' and let 'curre┆
0x03d0c0…03d0e0             6e 74 5f 63 6f 6e 73 74 5f 61 72 65 61 27 20 62 65 20 74 68 61 74 0a 62 75 66 66 65 72 20 2a 29   ┆nt_const_area' be that buffer *)┆
0x03d0e0…03d100             0a 63 75 72 5f 70 74 72 3a 3d 20 63 75 72 72 65 6e 74 5f 63 6f 6e 73 74 5f 61 72 65 61 3b 0a 69   ┆ cur_ptr:= current_const_area; i┆
0x03d100…03d120             66 20 28 69 6e 64 65 78 3c 63 75 72 5f 70 74 72 5e 2e 66 69 72 73 74 5f 69 6e 64 65 78 29 20 6f   ┆f (index<cur_ptr^.first_index) o┆
0x03d120…03d140             72 0a 28 69 6e 64 65 78 3e 3d 63 75 72 5f 70 74 72 5e 2e 66 69 72 73 74 5f 69 6e 64 65 78 2b 6d   ┆r (index>=cur_ptr^.first_index+m┆
0x03d140…03d160             61 78 5f 63 6f 6e 73 74 5f 61 72 65 61 29 20 74 68 65 6e 0a 28 2a 20 6f 75 74 73 69 64 65 20 63   ┆ax_const_area) then (* outside c┆
0x03d160…03d180             75 72 72 65 6e 74 20 63 6f 6e 73 74 20 61 72 65 61 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 69 6e   ┆urrent const area *) begin if in┆
0x03d180…03d1a0             64 65 78 3c 63 75 72 5f 70 74 72 5e 2e 66 69 72 73 74 5f 69 6e 64 65 78 20 74 68 65 6e 0a 63 75   ┆dex<cur_ptr^.first_index then cu┆
0x03d1a0…03d1c0             72 5f 70 74 72 3a 3d 20 73 74 61 72 74 5f 63 6f 6e 73 74 5f 61 72 65 61 3b 20 28 2a 20 74 72 61   ┆r_ptr:= start_const_area; (* tra┆
0x03d1c0…03d1e0             76 65 72 73 65 20 66 72 6f 6d 20 73 74 61 72 74 20 6f 66 20 63 68 61 69 6e 20 2a 29 0a 28 2a 20   ┆verse from start of chain *) (* ┆
0x03d1e0…03d200             65 6c 73 65 20 70 72 6f 63 65 65 64 20 69 6e 20 74 68 65 20 63 68 61 69 6e 20 66 72 6f 6d 20 63   ┆else proceed in the chain from c┆
0x03d200…03d220 (16, 0, 10) 75 72 72 65 6e 74 20 63 6f 6e 73 74 20 61 72 65 61 20 2a 29 0a 77 68 69 6c 65 20 69 6e 64 65 78   ┆urrent const area *) while index┆
0x03d220…03d240             3e 3d 63 75 72 5f 70 74 72 5e 2e 66 69 72 73 74 5f 69 6e 64 65 78 2b 6d 61 78 5f 63 6f 6e 73 74   ┆>=cur_ptr^.first_index+max_const┆
0x03d240…03d260             5f 61 72 65 61 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 63 75 72 5f 70 74 72 5e 2e 6e 65 78 74 5f   ┆_area do begin if cur_ptr^.next_┆
0x03d260…03d280             63 6f 6e 73 74 3d 6e 69 6c 20 74 68 65 6e 20 28 2a 20 65 6e 64 20 6f 66 20 63 68 61 69 6e 2c 20   ┆const=nil then (* end of chain, ┆
0x03d280…03d2a0             65 78 74 65 6e 64 20 2a 29 0a 62 65 67 69 6e 0a 6e 65 77 28 63 75 72 5f 70 74 72 5e 2e 6e 65 78   ┆extend *) begin new(cur_ptr^.nex┆
0x03d2a0…03d2c0             74 5f 63 6f 6e 73 74 29 3b 0a 77 69 74 68 20 63 75 72 5f 70 74 72 5e 2e 6e 65 78 74 5f 63 6f 6e   ┆t_const); with cur_ptr^.next_con┆
0x03d2c0…03d2e0             73 74 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74 5f 63 6f 6e 73 74 3a 3d 20 6e 69 6c 3b 0a 66   ┆st^ do begin next_const:= nil; f┆
0x03d2e0…03d300             69 72 73 74 5f 69 6e 64 65 78 3a 3d 20 63 75 72 5f 70 74 72 5e 2e 66 69 72 73 74 5f 69 6e 64 65   ┆irst_index:= cur_ptr^.first_inde┆
0x03d300…03d320             78 2b 6d 61 78 5f 63 6f 6e 73 74 5f 61 72 65 61 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a   ┆x+max_const_area; end; (* with *┆
0x03d320…03d340             29 0a 65 6e 64 3b 20 28 2a 20 61 6c 6c 6f 63 61 74 65 20 6e 65 77 20 65 6c 65 6d 65 6e 74 20 2a   ┆) end; (* allocate new element *┆
0x03d340…03d360             29 0a 63 75 72 5f 70 74 72 3a 3d 20 63 75 72 5f 70 74 72 5e 2e 6e 65 78 74 5f 63 6f 6e 73 74 3b   ┆) cur_ptr:= cur_ptr^.next_const;┆
0x03d360…03d380             0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65 20 69 6e 64 65 78 3e 20 2e 2e 2e 2e 20 2a 29 0a 63 75   ┆ end; (* while index> .... *) cu┆
0x03d380…03d3a0             72 72 65 6e 74 5f 63 6f 6e 73 74 5f 61 72 65 61 3a 3d 20 63 75 72 5f 70 74 72 3b 0a 65 6e 64 3b   ┆rrent_const_area:= cur_ptr; end;┆
0x03d3a0…03d3c0             20 28 2a 20 66 69 6e 64 20 61 63 74 75 61 6c 20 72 65 71 75 65 73 74 65 64 20 63 6f 6e 73 74 20   ┆ (* find actual requested const ┆
0x03d3c0…03d3e0             62 75 66 66 65 72 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64   ┆buffer *) end; (* procedure find┆
0x03d3e0…03d400             5f 63 6f 6e 73 74 5f 70 74 72 20 2a 29 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 72 65 74 72 69 65 76   ┆_const_ptr *)   function retriev┆
0x03d400…03d420 (16, 0, 11) 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 29 3a 20 69 6e 74 65 67 65 72   ┆e_const(index: integer): integer┆
0x03d420…03d440             3b 0a 62 65 67 69 6e 0a 66 69 6e 64 5f 63 6f 6e 73 74 5f 70 74 72 28 69 6e 64 65 78 29 3b 0a 77   ┆; begin find_const_ptr(index); w┆
0x03d440…03d460             69 74 68 20 63 75 72 72 65 6e 74 5f 63 6f 6e 73 74 5f 61 72 65 61 20 5e 20 64 6f 0a 72 65 74 72   ┆ith current_const_area ^ do retr┆
0x03d460…03d480             69 65 76 65 5f 63 6f 6e 73 74 3a 3d 20 63 6f 6e 73 74 5f 62 75 66 66 65 72 5b 69 6e 64 65 78 2d   ┆ieve_const:= const_buffer[index-┆
0x03d480…03d4a0             66 69 72 73 74 5f 69 6e 64 65 78 5d 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 75 70   ┆first_index]; end;  procedure up┆
0x03d4a0…03d4c0             64 61 74 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 3b 20 63 6f 6e 73 74   ┆date_const(index: integer; const┆
0x03d4c0…03d4e0             5f 76 61 6c 75 65 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69 6e 0a 66 69 6e 64 5f 63 6f 6e   ┆_value: integer); begin find_con┆
0x03d4e0…03d500             73 74 5f 70 74 72 28 69 6e 64 65 78 29 3b 0a 77 69 74 68 20 63 75 72 72 65 6e 74 5f 63 6f 6e 73   ┆st_ptr(index); with current_cons┆
0x03d500…03d520             74 5f 61 72 65 61 20 5e 20 64 6f 0a 63 6f 6e 73 74 5f 62 75 66 66 65 72 5b 69 6e 64 65 78 2d 66   ┆t_area ^ do const_buffer[index-f┆
0x03d520…03d540             69 72 73 74 5f 69 6e 64 65 78 5d 3a 3d 20 63 6f 6e 73 74 5f 76 61 6c 75 65 3b 0a 65 6e 64 3b 0a   ┆irst_index]:= const_value; end; ┆
0x03d540…03d560             0a 70 72 6f 63 65 64 75 72 65 20 77 72 69 74 65 5f 63 6f 6e 73 74 5f 61 72 65 61 28 66 69 72 73   ┆ procedure write_const_area(firs┆
0x03d560…03d580             74 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 20 69 3a 20 69 6e 74 65 67 65 72 3b 0a 20 20 20   ┆t: integer); var i: integer;    ┆
0x03d580…03d5a0             20 76 61 6c 2c 20 6f 63 68 20 3a 20 69 6e 74 65 67 65 72 3b 0a 20 20 20 20 63 68 31 2c 63 68 32   ┆ val, och : integer;     ch1,ch2┆
0x03d5a0…03d5c0             3a 20 63 68 61 72 3b 0a 62 65 67 69 6e 0a 69 66 20 66 69 72 73 74 20 3c 20 74 6f 70 5f 63 5f 69   ┆: char; begin if first < top_c_i┆
0x03d5c0…03d5e0             6e 64 65 78 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 3b 20 20 20 77 72 69 74 65   ┆ndex then begin writeln;   write┆
0x03d5e0…03d600             28 27 63 6f 6e 73 74 20 61 72 65 61 20 27 2c 20 66 69 72 73 74 2c 20 27 20 27 2c 20 74 6f 70 5f   ┆('const area ', first, ' ', top_┆
0x03d600…03d620 (16, 0, 12) 63 5f 69 6e 64 65 78 29 3b 0a 66 6f 72 20 69 3a 3d 66 69 72 73 74 20 74 6f 20 74 6f 70 5f 63 5f   ┆c_index); for i:=first to top_c_┆
0x03d620…03d640             69 6e 64 65 78 2d 31 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 28 69 2d 66 69 72 73 74 29 20 6d 6f   ┆index-1 do begin if (i-first) mo┆
0x03d640…03d660             64 20 36 20 3d 20 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 3b 0a 77 72 69 74   ┆d 6 = 0 then begin writeln; writ┆
0x03d660…03d680             65 28 69 3a 35 2c 27 2e 20 20 27 29 3b 0a 65 6e 64 3b 0a 76 61 6c 20 3a 3d 20 72 65 74 72 69 65   ┆e(i:5,'.  '); end; val := retrie┆
0x03d680…03d6a0             76 65 5f 63 6f 6e 73 74 28 69 29 3b 0a 6f 63 68 20 3a 3d 20 76 61 6c 20 73 68 72 20 38 3b 0a 63   ┆ve_const(i); och := val shr 8; c┆
0x03d6a0…03d6c0             68 31 20 3a 3d 20 27 20 27 3b 0a 69 66 20 28 6f 63 68 20 3e 3d 20 33 32 29 20 61 6e 64 20 28 6f   ┆h1 := ' '; if (och >= 32) and (o┆
0x03d6c0…03d6e0             63 68 20 3c 20 31 32 38 29 20 74 68 65 6e 20 63 68 31 20 3a 3d 20 63 68 72 28 6f 63 68 29 3b 0a   ┆ch < 128) then ch1 := chr(och); ┆
0x03d6e0…03d700             6f 63 68 20 3a 3d 20 76 61 6c 20 61 6e 64 20 32 35 35 3b 0a 63 68 32 20 3a 3d 20 27 20 27 3b 0a   ┆och := val and 255; ch2 := ' '; ┆
0x03d700…03d720             69 66 20 28 6f 63 68 20 3e 3d 20 33 32 29 20 61 6e 64 20 28 6f 63 68 20 3c 20 31 32 38 29 20 74   ┆if (och >= 32) and (och < 128) t┆
0x03d720…03d740             68 65 6e 20 63 68 32 20 3a 3d 20 63 68 72 28 6f 63 68 29 3b 0a 77 72 69 74 65 28 76 61 6c 3a 38   ┆hen ch2 := chr(och); write(val:8┆
0x03d740…03d760             2c 27 28 27 2c 63 68 31 2c 63 68 32 2c 27 29 27 29 3b 0a 65 6e 64 3b 0a 77 72 69 74 65 6c 6e 3b   ┆,'(',ch1,ch2,')'); end; writeln;┆
0x03d760…03d780             0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 63 6f 6e 73 74 61   ┆ end; end;  procedure out_consta┆
0x03d780…03d7a0             6e 74 5f 61 72 65 61 3b 0a 76 61 72 20 66 69 72 73 74 2c 69 6c 20 3a 20 69 6e 74 65 67 65 72 3b   ┆nt_area; var first,il : integer;┆
0x03d7a0…03d7c0             0a 20 20 20 20 70 2c 20 69 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66 20 74 6f 70   ┆     p, i: integer; begin if top┆
0x03d7c0…03d7e0             5f 63 5f 69 6e 64 65 78 20 3e 20 74 6f 70 5f 63 20 74 68 65 6e 20 74 6f 70 5f 63 3a 3d 74 6f 70   ┆_c_index > top_c then top_c:=top┆
0x03d7e0…03d800             5f 63 5f 69 6e 64 65 78 3b 0a 66 69 72 73 74 3a 3d 66 69 72 73 74 5f 63 5f 69 6e 64 65 78 3b 0a   ┆_c_index; first:=first_c_index; ┆
0x03d800…03d820 (16, 0, 13) 77 68 69 6c 65 20 66 69 72 73 74 3c 74 6f 70 5f 63 5f 69 6e 64 65 78 20 64 6f 20 62 65 67 69 6e   ┆while first<top_c_index do begin┆
0x03d820…03d840             0a 69 66 20 72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 66 69 72 73 74 2b 31 29 3e 30 20 74 68   ┆ if retrieve_const(first+1)>0 th┆
0x03d840…03d860             65 6e 20 62 65 67 69 6e 0a 70 75 74 31 28 7a 64 65 66 6c 69 78 2c 72 65 74 72 69 65 76 65 5f 63   ┆en begin put1(zdeflix,retrieve_c┆
0x03d860…03d880             6f 6e 73 74 28 66 69 72 73 74 2b 31 29 29 3b 0a 70 3a 3d 72 65 74 72 69 65 76 65 5f 63 6f 6e 73   ┆onst(first+1)); p:=retrieve_cons┆
0x03d880…03d8a0             74 28 66 69 72 73 74 29 3b 0a 69 66 20 72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 66 69 72 73   ┆t(first); if retrieve_const(firs┆
0x03d8a0…03d8c0             74 2b 32 29 3e 70 20 74 68 65 6e 20 70 3a 3d 72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 66 69   ┆t+2)>p then p:=retrieve_const(fi┆
0x03d8c0…03d8e0             72 73 74 2b 32 29 3b 0a 70 75 74 31 28 7a 69 6e 69 74 63 6f 6e 73 74 2c 70 2d 33 29 3b 0a 66 6f   ┆rst+2); put1(zinitconst,p-3); fo┆
0x03d8e0…03d900             72 20 69 6c 3a 3d 66 69 72 73 74 2b 33 20 74 6f 20 66 69 72 73 74 20 2b 20 72 65 74 72 69 65 76   ┆r il:=first+3 to first + retriev┆
0x03d900…03d920             65 5f 63 6f 6e 73 74 28 66 69 72 73 74 29 20 2d 31 20 64 6f 0a 70 75 74 5f 61 72 67 31 28 72 65   ┆e_const(first) -1 do put_arg1(re┆
0x03d920…03d940             74 72 69 65 76 65 5f 63 6f 6e 73 74 28 69 6c 29 29 3b 0a 69 66 20 72 65 74 72 69 65 76 65 5f 63   ┆trieve_const(il)); if retrieve_c┆
0x03d940…03d960             6f 6e 73 74 28 66 69 72 73 74 2b 32 29 20 3e 20 72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 66   ┆onst(first+2) > retrieve_const(f┆
0x03d960…03d980             69 72 73 74 29 20 74 68 65 6e 0a 66 6f 72 20 69 3a 3d 31 20 74 6f 20 72 65 74 72 69 65 76 65 5f   ┆irst) then for i:=1 to retrieve_┆
0x03d980…03d9a0             63 6f 6e 73 74 28 66 69 72 73 74 2b 32 29 20 2d 20 72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28   ┆const(first+2) - retrieve_const(┆
0x03d9a0…03d9c0             66 69 72 73 74 29 20 64 6f 20 70 75 74 5f 61 72 67 31 28 73 70 73 70 29 3b 0a 75 70 64 61 74 65   ┆first) do put_arg1(spsp); update┆
0x03d9c0…03d9e0             5f 63 6f 6e 73 74 28 66 69 72 73 74 2b 31 2c 20 2d 72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28   ┆_const(first+1, -retrieve_const(┆
0x03d9e0…03da00             66 69 72 73 74 2b 31 29 29 3b 0a 65 6e 64 3b 0a 66 69 72 73 74 3a 3d 66 69 72 73 74 2b 72 65 74   ┆first+1)); end; first:=first+ret┆
0x03da00…03da20 (16, 0, 14) 72 69 65 76 65 5f 63 6f 6e 73 74 28 66 69 72 73 74 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a   ┆rieve_const(first); end; end;   ┆
0x03da20…03da40             70 72 6f 63 65 64 75 72 65 20 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 63 6f 75 6e   ┆procedure pop_to_free_stack(coun┆
0x03da40…03da60             74 3a 20 69 6e 74 65 67 65 72 29 3b 20 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72   ┆t: integer); forward;   procedur┆
0x03da60…03da80             65 20 6f 75 74 5f 66 6f 72 6d 61 6c 5f 6c 69 73 74 3b 0a 76 61 72 20 74 79 70 65 5f 70 2c 6e 6f   ┆e out_formal_list; var type_p,no┆
0x03da80…03daa0             2c 70 61 72 61 6d 5f 73 69 7a 65 3a 20 69 6e 74 65 67 65 72 3b 0a 68 65 6c 70 5f 70 74 72 3a 20   ┆,param_size: integer; help_ptr: ┆
0x03daa0…03dac0             73 74 61 63 6b 5f 70 74 72 3b 0a 62 65 67 69 6e 0a 28 2a 20 72 65 76 65 72 73 65 20 74 68 65 20   ┆stack_ptr; begin (* reverse the ┆
0x03dac0…03dae0             73 74 61 63 6b 65 64 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 6f 6e 20 66 72 65 65 5f 73   ┆stacked parameter list on free_s┆
0x03dae0…03db00             74 61 63 6b 20 2a 29 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 70 61 72 61 6d 5f   ┆tack *) pop_to_free_stack(param_┆
0x03db00…03db20             6e 75 6d 62 65 72 29 3b 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 66 72 65 65 5f 73 74 61 63 6b 3b 0a   ┆number); help_ptr:= free_stack; ┆
0x03db20…03db40             66 6f 72 20 6e 6f 3a 3d 70 61 72 61 6d 5f 6e 75 6d 62 65 72 20 64 6f 77 6e 74 6f 20 31 20 64 6f   ┆for no:=param_number downto 1 do┆
0x03db40…03db60             0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65   ┆ with nametable(help_ptr^.stacke┆
0x03db60…03db80             64 5f 76 61 6c 29 5e 20 64 6f 20 62 65 67 69 6e 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28   ┆d_val)^ do begin with nametable(┆
0x03db80…03dba0             63 6f 6d 70 5f 74 79 70 65 29 5e 20 64 6f 20 62 65 67 69 6e 0a 70 61 72 61 6d 5f 73 69 7a 65 3a   ┆comp_type)^ do begin param_size:┆
0x03dba0…03dbc0             3d 73 69 7a 65 3b 0a 63 61 73 65 20 63 6f 6e 74 65 78 74 20 6f 66 0a 70 6f 69 6e 74 65 72 5f 74   ┆=size; case context of pointer_t┆
0x03dbc0…03dbe0             79 70 65 3a 20 20 74 79 70 65 5f 70 3a 3d 31 3b 0a 73 65 6d 5f 74 79 70 65 3a 20 20 20 20 20 20   ┆ype:  type_p:=1; sem_type:      ┆
0x03dbe0…03dc00             74 79 70 65 5f 70 3a 3d 32 3b 0a 72 65 66 5f 74 79 70 65 3a 20 20 20 20 20 20 74 79 70 65 5f 70   ┆type_p:=2; ref_type:      type_p┆
0x03dc00…03dc20 (16, 0, 15) 3a 3d 33 3b 0a 73 68 61 64 6f 77 5f 74 79 70 65 3a 20 20 20 74 79 70 65 5f 70 3a 3d 34 3b 0a 70   ┆:=3; shadow_type:   type_p:=4; p┆
0x03dc20…03dc40             6f 6f 6c 5f 74 79 70 65 3a 20 20 20 20 20 74 79 70 65 5f 70 3a 3d 35 3b 0a 61 6c 6c 69 67 6e 5f   ┆ool_type:     type_p:=5; allign_┆
0x03dc40…03dc60             72 65 63 5f 74 79 70 65 2c 73 79 73 5f 72 65 63 6f 72 64 5f 74 79 70 65 3a 20 20 74 79 70 65 5f   ┆rec_type,sys_record_type:  type_┆
0x03dc60…03dc80             70 3a 3d 36 3b 0a 61 6c 6c 69 67 6e 5f 61 72 72 5f 74 79 70 65 2c 73 79 73 5f 61 72 72 61 79 5f   ┆p:=6; allign_arr_type,sys_array_┆
0x03dc80…03dca0             74 79 70 65 3a 20 20 20 74 79 70 65 5f 70 3a 3d 37 3b 0a 65 6c 73 65 20 20 20 20 20 20 20 20 20   ┆type:   type_p:=7; else         ┆
0x03dca0…03dcc0             20 20 74 79 70 65 5f 70 3a 3d 38 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 69 66 20 63 6f 6e 74 65 78   ┆  type_p:=8; end; end; if contex┆
0x03dcc0…03dce0             74 3d 76 61 6c 75 65 5f 70 61 72 61 6d 20 74 68 65 6e 0a 74 79 70 65 5f 70 20 3a 3d 20 74 79 70   ┆t=value_param then type_p := typ┆
0x03dce0…03dd00             65 5f 70 20 2a 20 34 20 2b 20 32 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 74 61   ┆e_p * 4 + 2 else begin if nameta┆
0x03dd00…03dd20             62 6c 65 28 63 6f 6d 70 5f 74 79 70 65 29 5e 2e 64 79 6e 61 6d 69 63 20 74 68 65 6e 20 65 72 72   ┆ble(comp_type)^.dynamic then err┆
0x03dd20…03dd40             6f 72 28 65 72 72 6f 72 5f 64 79 6e 29 3b 0a 74 79 70 65 5f 70 20 3a 3d 20 74 79 70 65 5f 70 20   ┆or(error_dyn); type_p := type_p ┆
0x03dd40…03dd60             2a 20 34 20 2b 20 31 3b 0a 69 66 20 63 6f 6e 74 65 78 74 20 3d 20 72 65 74 75 72 6e 5f 70 61 72   ┆* 4 + 1; if context = return_par┆
0x03dd60…03dd80             61 6d 20 74 68 65 6e 0a 74 79 70 65 5f 70 20 3a 3d 20 74 79 70 65 5f 70 20 2b 20 32 3b 0a 65 6e   ┆am then type_p := type_p + 2; en┆
0x03dd80…03dda0             64 3b 0a 70 75 74 32 28 7a 70 61 72 61 6d 74 79 70 65 2c 74 79 70 65 5f 70 2c 70 61 72 61 6d 5f   ┆d; put2(zparamtype,type_p,param_┆
0x03dda0…03ddc0             73 69 7a 65 29 3b 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d   ┆size); help_ptr:= help_ptr^.form┆
0x03ddc0…03dde0             65 72 5f 65 6c 65 6d 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 72   ┆er_elem; end; end;  procedure pr┆
0x03dde0…03de00             69 6e 74 68 65 61 64 3b 0a 62 65 67 69 6e 0a 69 66 20 74 65 73 74 20 74 68 65 6e 20 77 72 69 74   ┆inthead; begin if test then writ┆
0x03de00…03de20 (16, 1, 1)  65 6c 6e 3b 0a 77 72 69 74 65 28 27 2a 2a 2a 20 70 61 73 73 20 34 20 6c 69 6e 65 20 27 2c 73 6f   ┆eln; write('*** pass 4 line ',so┆
0x03de20…03de40             75 72 63 65 5f 6c 69 6e 65 3a 34 2c 27 2c 20 20 27 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64   ┆urce_line:4,',  '); end;  proced┆
0x03de40…03de60             75 72 65 20 65 6f 6d 3b 20 66 6f 72 77 61 72 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 6d   ┆ure eom; forward;  procedure com┆
0x03de60…03de80             70 69 6c 65 72 5f 65 72 72 6f 72 28 65 3a 20 65 72 72 6f 72 5f 74 79 70 65 73 29 3b 0a 62 65 67   ┆piler_error(e: error_types); beg┆
0x03de80…03dea0             69 6e 0a 70 72 69 6e 74 68 65 61 64 3b 0a 77 72 69 74 65 28 27 63 6f 6d 70 69 6c 65 72 20 65 72   ┆in printhead; write('compiler er┆
0x03dea0…03dec0             72 6f 72 20 3a 20 27 29 3b 0a 63 61 73 65 20 65 20 6f 66 0a 61 64 64 72 5f 65 72 72 6f 72 3a 20   ┆ror : '); case e of addr_error: ┆
0x03dec0…03dee0             20 20 77 72 69 74 65 6c 6e 28 27 61 64 64 72 65 73 73 69 6e 67 27 29 3b 0a 62 69 74 5f 63 6f 75   ┆  writeln('addressing'); bit_cou┆
0x03dee0…03df00             6e 74 5f 65 72 72 6f 72 3a 20 77 72 69 74 65 6c 6e 28 27 62 69 74 20 63 6f 75 6e 74 27 29 3b 0a   ┆nt_error: writeln('bit count'); ┆
0x03df00…03df20             66 6f 72 5f 65 72 72 6f 72 3a 20 20 20 20 77 72 69 74 65 6c 6e 28 27 66 6f 72 20 65 72 72 6f 72   ┆for_error:    writeln('for error┆
0x03df20…03df40             27 29 3b 0a 73 63 61 6c 61 72 5f 65 72 72 6f 72 3a 20 77 72 69 74 65 6c 6e 28 27 73 63 61 6c 61   ┆'); scalar_error: writeln('scala┆
0x03df40…03df60             72 20 65 72 72 6f 72 27 29 3b 0a 69 6e 70 75 74 5f 65 72 72 6f 72 3a 20 20 77 72 69 74 65 6c 6e   ┆r error'); input_error:  writeln┆
0x03df60…03df80             28 27 77 72 6f 6e 67 20 69 6e 70 75 74 27 29 3b 0a 65 6c 73 65 20 20 20 20 20 20 20 20 20 20 77   ┆('wrong input'); else          w┆
0x03df80…03dfa0             72 69 74 65 6c 6e 28 27 2c 20 65 72 72 6f 72 20 63 6f 64 65 20 3d 20 27 2c 6f 72 64 28 65 29 3a   ┆riteln(', error code = ',ord(e):┆
0x03dfa0…03dfc0             31 29 3b 0a 65 6e 64 3b 0a 65 6f 6d 3b 20 72 74 70 68 61 6c 74 28 74 72 75 65 20 28 2a 20 74 65   ┆1); end; eom; rtphalt(true (* te┆
0x03dfc0…03dfe0             72 6d 69 6e 61 74 65 20 70 72 6f 67 72 61 6d 20 77 69 74 68 20 74 72 61 63 65 20 61 6e 64 20 6f   ┆rminate program with trace and o┆
0x03dfe0…03e000             6b 2e 6e 6f 20 2a 29 29 3b 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 61 73 73 34   ┆k.no *));; end;  procedure pass4┆
0x03e000…03e020 (16, 1, 2)  65 72 72 6f 72 28 65 3a 20 65 72 72 6f 72 5f 74 79 70 65 73 29 3b 0a 62 65 67 69 6e 0a 70 72 69   ┆error(e: error_types); begin pri┆
0x03e020…03e040             6e 74 68 65 61 64 3b 0a 63 61 73 65 20 65 20 6f 66 0a 6f 76 65 72 66 6c 6f 77 3a 20 20 20 20 20   ┆nthead; case e of overflow:     ┆
0x03e040…03e060             20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 6f 76 65 72 66 6c 6f 77 27 29 3b 0a 65   ┆          writeln('overflow'); e┆
0x03e060…03e080             72 72 6f 72 5f 64 79 6e 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27   ┆rror_dyn:              writeln('┆
0x03e080…03e0a0             64 79 6e 61 6d 69 63 20 74 79 70 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 27 29 3b 0a 65 72 72 6f   ┆dynamic type not allowed'); erro┆
0x03e0a0…03e0c0             72 5f 64 79 6e 5f 69 6e 69 74 3a 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 69 6e 69   ┆r_dyn_init:         writeln('ini┆
0x03e0c0…03e0e0             74 69 61 6c 69 7a 65 20 64 79 6e 61 6d 69 63 20 74 79 70 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64   ┆tialize dynamic type not allowed┆
0x03e0e0…03e100             27 29 3b 0a 65 72 72 6f 72 5f 64 79 6e 5f 76 61 72 3a 20 20 20 20 20 20 20 20 20 20 77 72 69 74   ┆'); error_dyn_var:          writ┆
0x03e100…03e120             65 6c 6e 28 27 64 79 6e 61 6d 69 63 20 76 61 72 69 61 62 6c 65 20 6e 6f 74 20 61 6c 6c 6f 77 65   ┆eln('dynamic variable not allowe┆
0x03e120…03e140             64 27 29 3b 0a 65 6d 70 74 79 5f 65 6c 65 6d 65 6e 74 5f 63 68 61 6e 67 65 3a 20 20 20 77 72 69   ┆d'); empty_element_change:   wri┆
0x03e140…03e160             74 65 6c 6e 28 27 61 63 63 65 73 73 20 74 6f 20 7a 65 72 6f 20 73 69 7a 65 64 20 6f 62 6a 65 63   ┆teln('access to zero sized objec┆
0x03e160…03e180             74 27 29 3b 0a 6e 6f 74 5f 69 6d 70 6c 65 6d 65 6e 74 65 64 3a 20 20 20 20 20 20 20 20 77 72 69   ┆t'); not_implemented:        wri┆
0x03e180…03e1a0             74 65 6c 6e 28 27 64 79 6e 61 6d 69 63 20 74 79 70 65 73 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e   ┆teln('dynamic types not implemen┆
0x03e1a0…03e1c0             74 65 64 27 29 3b 0a 6e 6f 74 5f 69 6d 70 6c 5f 6c 6f 6f 70 3a 20 20 20 20 20 20 20 20 20 20 77   ┆ted'); not_impl_loop:          w┆
0x03e1c0…03e1e0             72 69 74 65 6c 6e 28 27 6c 6f 6f 70 20 73 74 61 74 65 6d 65 6e 74 20 6e 6f 74 20 69 6d 70 6c 65   ┆riteln('loop statement not imple┆
0x03e1e0…03e200             6d 65 6e 74 65 64 27 29 3b 0a 6e 6f 74 5f 69 6d 70 6c 5f 6c 6f 63 6b 6d 65 73 3a 20 20 20 20 20   ┆mented'); not_impl_lockmes:     ┆
0x03e200…03e220 (16, 1, 3)  20 20 77 72 69 74 65 6c 6e 28 27 6c 6f 63 6b 6d 65 73 20 73 74 61 74 65 6d 65 6e 74 20 6e 6f 74   ┆  writeln('lockmes statement not┆
0x03e220…03e240             20 69 6d 70 6c 65 6d 65 6e 74 65 64 27 29 3b 0a 6e 6f 74 5f 69 6d 70 6c 5f 63 6f 6e 74 5f 65 78   ┆ implemented'); not_impl_cont_ex┆
0x03e240…03e260             69 74 5f 6c 6f 6f 70 3a 77 72 69 74 65 6c 6e 28 27 63 6f 6e 74 69 6e 75 65 6c 6f 6f 70 2f 65 78   ┆it_loop:writeln('continueloop/ex┆
0x03e260…03e280             69 74 6c 6f 6f 70 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 27 29 3b 0a 6e 6f 74 5f 69 6d   ┆itloop not implemented'); not_im┆
0x03e280…03e2a0             70 6c 5f 65 78 69 74 3a 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 65 78 69 74 20   ┆pl_exit:          writeln('exit ┆
0x03e2a0…03e2c0             73 74 61 74 65 6d 65 6e 74 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 27 29 3b 0a 65 72 72   ┆statement not implemented'); err┆
0x03e2c0…03e2e0             6f 72 5f 63 68 61 6e 6e 65 6c 3a 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 63 68   ┆or_channel:          writeln('ch┆
0x03e2e0…03e300             61 6e 6e 65 6c 20 73 74 61 74 65 6d 65 6e 74 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   ┆annel statement not implemented ┆
0x03e300…03e320             69 6e 20 7a 38 30 27 29 3b 0a 72 61 6e 67 65 5f 64 65 66 5f 65 72 72 6f 72 3a 20 20 20 20 20 20   ┆in z80'); range_def_error:      ┆
0x03e320…03e340             20 20 77 72 69 74 65 6c 6e 28 27 73 75 62 72 61 6e 67 65 20 64 65 66 2e 27 29 3b 0a 73 65 74 5f   ┆  writeln('subrange def.'); set_┆
0x03e340…03e360             64 65 66 5f 65 72 72 6f 72 3a 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 73 65 74   ┆def_error:          writeln('set┆
0x03e360…03e380             20 64 65 66 2e 27 29 3b 0a 70 6f 6f 6c 5f 64 65 66 5f 65 72 72 6f 72 3a 20 20 20 20 20 20 20 20   ┆ def.'); pool_def_error:        ┆
0x03e380…03e3a0             20 77 72 69 74 65 6c 6e 28 27 70 6f 6f 6c 20 64 65 66 2e 27 29 3b 0a 74 79 70 65 5f 65 72 72 6f   ┆ writeln('pool def.'); type_erro┆
0x03e3a0…03e3c0             72 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 63 6f 6e 73 74 61 6e 74   ┆r:             writeln('constant┆
0x03e3c0…03e3e0             20 76 61 6c 75 65 27 29 3b 0a 76 61 72 5f 65 72 72 6f 72 3a 20 20 20 20 20 20 20 20 20 20 20 20   ┆ value'); var_error:            ┆
0x03e3e0…03e400             20 20 77 72 69 74 65 6c 6e 28 27 6e 6f 74 20 63 6f 6e 73 74 61 6e 74 27 29 3b 0a 72 61 6e 67 65   ┆  writeln('not constant'); range┆
0x03e400…03e420 (16, 1, 4)  5f 65 72 72 6f 72 3a 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 63 61 73 65   ┆_error:            writeln('case┆
0x03e420…03e440             20 6c 61 62 65 6c 20 72 61 6e 67 65 27 29 3b 0a 70 72 65 6c 75 64 65 5f 65 72 72 6f 72 3a 20 20   ┆ label range'); prelude_error:  ┆
0x03e440…03e460             20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 6e 6f 20 69 6e 69 74 2e 20 6f 72 20 70 72 6f   ┆        writeln('no init. or pro┆
0x03e460…03e480             63 65 73 73 20 69 6e 20 65 6e 76 69 72 6f 6d 65 6e 74 27 29 3b 0a 6c 69 74 65 72 61 6c 5f 65 72   ┆cess in enviroment'); literal_er┆
0x03e480…03e4a0             72 6f 72 3a 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 63 6f 6e 73 74 61 6e 74 27   ┆ror:          writeln('constant'┆
0x03e4a0…03e4c0             29 3b 0a 73 65 74 5f 65 72 72 6f 72 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65   ┆); set_error:              write┆
0x03e4c0…03e4e0             6c 6e 28 27 73 65 74 20 63 6f 6e 73 74 61 6e 74 27 29 3b 0a 63 6f 6e 73 74 5f 65 72 72 6f 72 3a   ┆ln('set constant'); const_error:┆
0x03e4e0…03e500             20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 74 69 6d 65 73 27 29 3b 0a 61 64   ┆            writeln('times'); ad┆
0x03e500…03e520             64 72 65 73 73 5f 6f 76 65 72 66 6c 6f 77 3a 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 73   ┆dress_overflow:       writeln('s┆
0x03e520…03e540             74 61 63 6b 27 29 3b 0a 77 69 74 68 5f 73 69 7a 65 5f 65 72 72 6f 72 3a 20 20 20 20 20 20 20 20   ┆tack'); with_size_error:        ┆
0x03e540…03e560             77 72 69 74 65 6c 6e 28 27 57 49 54 48 2d 41 53 3a 20 73 69 7a 65 20 6f 66 20 6e 65 77 20 74 79   ┆writeln('WITH-AS: size of new ty┆
0x03e560…03e580             70 65 20 65 78 63 65 65 64 73 20 74 68 61 74 20 6f 66 20 6f 6c 64 27 29 3b 0a 72 65 63 6f 72 64   ┆pe exceeds that of old'); record┆
0x03e580…03e5a0             5f 73 69 7a 65 5f 65 72 72 6f 72 3a 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 72 65 63 6f 72   ┆_size_error:      writeln('recor┆
0x03e5a0…03e5c0             64 20 73 69 7a 65 27 29 3b 0a 61 72 72 61 79 5f 73 69 7a 65 5f 65 72 72 6f 72 3a 20 20 20 20 20   ┆d size'); array_size_error:     ┆
0x03e5c0…03e5e0             20 20 77 72 69 74 65 6c 6e 28 27 61 72 72 61 79 20 73 69 7a 65 27 29 3b 0a 65 78 70 6f 72 74 76   ┆  writeln('array size'); exportv┆
0x03e5e0…03e600             61 6c 75 65 5f 65 72 72 6f 72 3a 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 65 78 70 6f   ┆alue_error:        writeln('expo┆
0x03e600…03e620 (16, 1, 5)  72 74 20 76 61 6c 75 65 20 65 72 72 6f 72 27 29 3b 0a 66 69 65 6c 64 5f 65 78 70 6f 72 74 5f 65   ┆rt value error'); field_export_e┆
0x03e620…03e640             72 72 6f 72 3a 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 70 61 63 6b 65 64 20 66 69 65 6c   ┆rror:       writeln('packed fiel┆
0x03e640…03e660             64 20 65 78 70 6f 72 74 27 29 3b 0a 65 78 70 6f 72 74 61 64 64 72 5f 65 72 72 6f 72 3a 20 20 20   ┆d export'); exportaddr_error:   ┆
0x03e660…03e680             20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 65 78 70 6f 72 74 20 6f 66 66 73 65 74 20 65 72 72   ┆      writeln('export offset err┆
0x03e680…03e6a0             6f 72 27 29 3b 0a 65 6c 73 65 20 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 28 65 29 3b 0a 65 6e   ┆or'); else compiler_error(e); en┆
0x03e6a0…03e6c0             64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6f 6d 3b 0a 62 65 67 69 6e 0a 70 75   ┆d; end;  procedure eom; begin pu┆
0x03e6c0…03e6e0             74 30 28 7a 65 6f 6d 29 3b 0a 77 72 69 74 65 28 70 61 73 73 34 66 69 6c 65 2c 20 6f 75 74 63 6f   ┆t0(zeom); write(pass4file, outco┆
0x03e6e0…03e700             64 65 5f 66 69 6c 70 74 72 5e 29 3b 0a 63 6c 6f 73 65 28 70 61 73 73 34 66 69 6c 65 29 3b 0a 63   ┆de_filptr^); close(pass4file); c┆
0x03e700…03e720             6c 6f 73 65 28 70 61 73 73 33 66 69 6c 65 29 3b 0a 69 66 20 6e 6f 74 20 70 72 65 73 65 72 76 65   ┆lose(pass3file); if not preserve┆
0x03e720…03e740             5f 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 61 73 65 28 70 61 73 73 33 66 69   ┆_option then begin erase(pass3fi┆
0x03e740…03e760             6c 65 29 3b 0a 61 73 73 69 67 6e 28 70 61 73 73 33 66 69 6c 65 2c 20 63 6f 6e 63 61 74 28 70 61   ┆le); assign(pass3file, concat(pa┆
0x03e760…03e780             74 68 32 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 33 5f 6e 69 78 6e 61 6d 65 29 29 3b 0a 65 72 61   ┆th2_name, o_pass3_nixname)); era┆
0x03e780…03e7a0             73 65 28 70 61 73 73 33 66 69 6c 65 29 3b 0a 65 6e 64 3b 0a 0a 64 6f 6e 65 3a 3d 20 74 72 75 65   ┆se(pass3file); end;  done:= true┆
0x03e7a0…03e7c0             3b 0a 0a 28 2a 20 74 65 6c 6c 20 6d 61 78 20 6e 61 6d 65 20 6b 65 79 20 74 6f 20 70 61 73 73 35   ┆;  (* tell max name key to pass5┆
0x03e7c0…03e7e0             20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 65 6e 74 72 79 20 74 61 69 6c 20 6f 66 20 70 61   ┆ as part of the entry tail of pa┆
0x03e7e0…03e800             73 73 34 63 6f 64 65 20 2a 29 0a 69 66 20 6e 61 6d 65 5f 6b 65 79 3e 6d 61 78 5f 6e 61 6d 65 5f   ┆ss4code *) if name_key>max_name_┆
0x03e800…03e820 (16, 1, 6)  6b 65 79 20 74 68 65 6e 0a 6d 61 78 5f 6e 61 6d 65 5f 6b 65 79 3a 3d 20 6e 61 6d 65 5f 6b 65 79   ┆key then max_name_key:= name_key┆
0x03e820…03e840             3b 0a 61 73 73 69 67 6e 28 70 61 73 73 34 66 69 6c 65 2c 20 63 6f 6e 63 61 74 28 70 61 74 68 31   ┆; assign(pass4file, concat(path1┆
0x03e840…03e860             5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 34 5f 6e 69 78 6e 61 6d 65 29 29 3b 0a 72 65 77 72 69 74   ┆_name, o_pass4_nixname)); rewrit┆
0x03e860…03e880             65 28 70 61 73 73 34 66 69 6c 65 29 3b 0a 6f 75 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d 20   ┆e(pass4file); outcode_fileix := ┆
0x03e880…03e8a0             30 3b 0a 6f 75 74 63 6f 64 65 28 6d 61 78 5f 6e 61 6d 65 5f 6b 65 79 29 3b 0a 77 72 69 74 65 28   ┆0; outcode(max_name_key); write(┆
0x03e8a0…03e8c0             70 61 73 73 34 66 69 6c 65 2c 20 6f 75 74 63 6f 64 65 5f 66 69 6c 70 74 72 5e 29 3b 0a 63 6c 6f   ┆pass4file, outcode_filptr^); clo┆
0x03e8c0…03e8e0             73 65 28 70 61 73 73 34 66 69 6c 65 29 3b 0a 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆se(pass4file);  end;  procedure ┆
0x03e8e0…03e900             65 72 72 6f 72 28 74 79 3a 20 65 72 72 6f 72 5f 74 79 70 65 73 29 3b 0a 62 65 67 69 6e 0a 70 75   ┆error(ty: error_types); begin pu┆
0x03e900…03e920             74 32 28 7a 65 72 72 6f 72 2c 74 68 69 73 5f 70 61 73 73 2c 6f 72 64 28 74 79 29 29 3b 0a 70 72   ┆t2(zerror,this_pass,ord(ty)); pr┆
0x03e920…03e940             6f 67 72 61 6d 5f 6f 6b 3a 3d 66 61 6c 73 65 3b 0a 70 61 73 73 34 65 72 72 6f 72 28 74 79 29 3b   ┆ogram_ok:=false; pass4error(ty);┆
0x03e940…03e960             0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 61 62 6f 72 74 28 74 79 3a 20 65 72 72 6f 72   ┆ end;  procedure abort(ty: error┆
0x03e960…03e980             5f 74 79 70 65 73 29 3b 0a 62 65 67 69 6e 0a 70 72 69 6e 74 68 65 61 64 3b 0a 77 72 69 74 65 28   ┆_types); begin printhead; write(┆
0x03e980…03e9a0             27 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 74 65 72 6d 69 6e 61 74 65 64 20 62 79 20 27 29 3b 0a 63   ┆'compilation terminated by '); c┆
0x03e9a0…03e9c0             61 73 65 20 74 79 20 6f 66 0a 6e 61 6d 65 5f 6f 76 65 72 66 6c 6f 77 3a 20 20 20 20 77 72 69 74   ┆ase ty of name_overflow:    writ┆
0x03e9c0…03e9e0             65 6c 6e 28 27 6e 61 6d 65 20 74 61 62 6c 65 20 6f 76 65 72 66 6c 6f 77 27 29 3b 0a 73 74 61 63   ┆eln('name table overflow'); stac┆
0x03e9e0…03ea00             6b 5f 65 72 72 6f 72 3a 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 73 74 61 63 6b 20 65 72 72   ┆k_error:      writeln('stack err┆
0x03ea00…03ea20 (16, 1, 7)  6f 72 27 29 3b 0a 76 65 72 73 69 6f 6e 5f 65 72 72 6f 72 3a 20 20 20 20 77 72 69 74 65 6c 6e 28   ┆or'); version_error:    writeln(┆
0x03ea20…03ea40             27 77 72 6f 6e 67 20 70 61 73 73 20 34 27 29 3b 0a 65 6c 73 65 20 63 6f 6d 70 69 6c 65 72 5f 65   ┆'wrong pass 4'); else compiler_e┆
0x03ea40…03ea60             72 72 6f 72 28 74 79 29 3b 0a 65 6e 64 3b 0a 65 6f 6d 3b 20 72 74 70 68 61 6c 74 28 74 72 75 65   ┆rror(ty); end; eom; rtphalt(true┆
0x03ea60…03ea80             20 28 2a 20 74 65 72 6d 69 6e 61 74 65 20 70 72 6f 67 72 61 6d 20 77 69 74 68 20 74 72 61 63 65   ┆ (* terminate program with trace┆
0x03ea80…03eaa0             20 61 6e 64 20 6f 6b 2e 6e 6f 20 2a 29 29 3b 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65   ┆ and ok.no *));; end;  procedure┆
0x03eaa0…03eac0             20 77 72 69 74 65 5f 6e 61 6d 65 74 61 62 6c 65 28 74 6f 70 3a 20 69 6e 74 65 67 65 72 29 3b 0a   ┆ write_nametable(top: integer); ┆
0x03eac0…03eae0             76 61 72 20 63 68 31 2c 63 68 32 3a 20 63 68 61 72 3b 0a 76 61 72 20 69 3a 20 69 6e 74 65 67 65   ┆var ch1,ch2: char; var i: intege┆
0x03eae0…03eb00             72 3b 0a 62 65 67 69 6e 0a 69 66 20 74 6f 70 3e 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 20 74   ┆r; begin if top>max_name_index t┆
0x03eb00…03eb20             68 65 6e 0a 74 6f 70 3a 3d 20 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 3b 0a 77 72 69 74 65 6c   ┆hen top:= max_name_index; writel┆
0x03eb20…03eb40             6e 3b 0a 77 72 69 74 65 6c 6e 28 27 20 20 20 20 20 20 20 6e 69 78 20 20 20 63 20 20 20 20 73 20   ┆n; writeln('       nix   c    s ┆
0x03eb40…03eb60             20 20 20 20 6d 69 6e 20 20 20 20 20 6d 61 78 20 20 20 20 20 6e 69 76 27 2c 0a 27 20 20 6f 66 66   ┆    min     max     niv', '  off┆
0x03eb60…03eb80             73 65 74 20 20 20 20 20 6c 69 78 20 20 20 20 6e 2d 63 20 20 20 20 63 2d 74 20 20 20 20 70 61 63   ┆set     lix    n-c    c-t    pac┆
0x03eb80…03eba0             6b 20 20 20 20 20 64 79 6e 27 29 3b 0a 66 6f 72 20 69 3a 3d 20 74 6f 70 20 74 6f 20 6d 61 78 5f   ┆k     dyn'); for i:= top to max_┆
0x03eba0…03ebc0             6e 61 6d 65 5f 69 6e 64 65 78 20 64 6f 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 69 29 5e   ┆name_index do with nametable(i)^┆
0x03ebc0…03ebe0             20 64 6f 0a 69 66 20 63 6f 6e 74 65 78 74 3c 3e 6e 6f 74 5f 75 73 65 64 20 74 68 65 6e 20 62 65   ┆ do if context<>not_used then be┆
0x03ebe0…03ec00             67 69 6e 0a 77 72 69 74 65 6c 6e 28 27 6e 61 6d 65 27 2c 69 3a 36 2c 6f 72 64 28 63 6f 6e 74 65   ┆gin writeln('name',i:6,ord(conte┆
0x03ec00…03ec20 (16, 1, 8)  78 74 29 3a 34 2c 73 69 7a 65 3a 35 2c 0a 6d 69 6e 2c 6d 61 78 2c 6e 69 76 2c 6f 66 66 73 65 74   ┆xt):4,size:5, min,max,niv,offset┆
0x03ec20…03ec40             2c 6c 69 78 2c 6e 65 78 74 5f 63 6f 6d 70 3a 37 2c 63 6f 6d 70 5f 74 79 70 65 3a 37 2c 0a 70 61   ┆,lix,next_comp:7,comp_type:7, pa┆
0x03ec40…03ec60             63 6b 65 64 5f 63 6f 6d 70 3a 38 2c 20 64 79 6e 61 6d 69 63 3a 38 29 3b 0a 65 6e 64 3b 0a 65 6e   ┆cked_comp:8, dynamic:8); end; en┆
0x03ec60…03ec80             64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 77 72 69 74 65 5f 6f 70 65 72 61 6e 64 5f 73 74 61 63   ┆d;  procedure write_operand_stac┆
0x03ec80…03eca0             6b 3b 0a 76 61 72 0a 6f 70 65 72 3a 20 6f 70 65 72 61 6e 64 5f 70 74 72 3b 0a 62 65 67 69 6e 0a   ┆k; var oper: operand_ptr; begin ┆
0x03eca0…03ecc0             77 72 69 74 65 6c 6e 3b 0a 77 72 69 74 65 6c 6e 28 27 65 78 70 72 20 3d 20 27 2c 73 65 67 28 66   ┆writeln; writeln('expr = ',seg(f┆
0x03ecc0…03ece0             69 72 73 74 5f 6f 66 5f 65 78 70 72 29 2c 20 6f 66 73 28 66 69 72 73 74 5f 6f 66 5f 65 78 70 72   ┆irst_of_expr), ofs(first_of_expr┆
0x03ece0…03ed00             29 29 3b 0a 77 72 69 74 65 6c 6e 28 27 6f 74 20 20 20 3d 20 27 2c 73 65 67 28 6f 74 29 2c 20 6f   ┆)); writeln('ot   = ',seg(ot), o┆
0x03ed00…03ed20             66 73 28 6f 74 29 29 3b 0a 77 72 69 74 65 6c 6e 28 27 6f 73 20 20 20 3d 20 27 2c 73 65 67 28 6f   ┆fs(ot)); writeln('os   = ',seg(o┆
0x03ed20…03ed40             73 29 2c 20 6f 66 73 28 6f 73 29 29 3b 0a 69 66 20 6f 74 3d 65 6d 70 74 79 5f 73 74 61 63 6b 20   ┆s), ofs(os)); if ot=empty_stack ┆
0x03ed40…03ed60             74 68 65 6e 20 77 72 69 74 65 6c 6e 28 27 6f 70 65 72 61 6e 64 20 73 74 61 63 6b 20 65 6d 70 74   ┆then writeln('operand stack empt┆
0x03ed60…03ed80             79 27 29 0a 65 6c 73 65 20 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 27 20 20 20 20 20 20 20 20   ┆y') else begin writeln('        ┆
0x03ed80…03eda0             20 20 20 20 20 20 20 20 20 20 20 20 20 6b 20 20 20 20 20 6e 69 76 20 20 6f 66 66 73 65 74 20 20   ┆             k     niv  offset  ┆
0x03eda0…03edc0             20 20 73 69 7a 65 20 20 20 20 20 63 6f 6e 27 2c 0a 27 20 20 20 20 20 6c 69 78 20 20 66 69 72 73   ┆  size     con', '     lix  firs┆
0x03edc0…03ede0             74 20 66 5f 73 69 7a 65 70 61 63 6b 5f 66 20 70 61 63 6b 5f 61 20 20 20 20 73 74 61 74 65 20 20   ┆t f_sizepack_f pack_a    state  ┆
0x03ede0…03ee00             20 20 74 65 6d 70 27 29 3b 0a 6f 70 65 72 3a 3d 20 6f 74 3b 0a 77 68 69 6c 65 20 6f 70 65 72 3c   ┆  temp'); oper:= ot; while oper<┆
0x03ee00…03ee20 (16, 1, 9)  3e 65 6d 70 74 79 5f 73 74 61 63 6b 20 64 6f 0a 77 69 74 68 20 6f 70 65 72 5e 20 64 6f 0a 62 65   ┆>empty_stack do with oper^ do be┆
0x03ee20…03ee40             67 69 6e 0a 77 72 69 74 65 6c 6e 28 27 6f 70 65 72 61 6e 64 20 73 74 61 63 6b 20 20 20 20 20 27   ┆gin writeln('operand stack     '┆
0x03ee40…03ee60             2c 6f 72 64 28 6b 69 6e 64 29 3a 34 2c 6e 69 76 2c 6f 66 66 73 65 74 2c 73 69 7a 65 2c 0a 6f 72   ┆,ord(kind):4,niv,offset,size, or┆
0x03ee60…03ee80             64 28 63 6f 6e 74 65 78 74 29 2c 6c 69 78 2c 66 69 72 73 74 3a 37 2c 63 6f 6d 70 5f 73 69 7a 65   ┆d(context),lix,first:7,comp_size┆
0x03ee80…03eea0             3a 37 2c 0a 66 69 65 6c 64 5f 70 61 63 6b 65 64 3a 37 2c 61 72 72 61 79 5f 70 61 63 6b 65 64 3a   ┆:7, field_packed:7,array_packed:┆
0x03eea0…03eec0             37 2c 6f 72 64 28 73 74 61 74 65 29 3a 38 2c 74 65 6d 70 5f 73 69 7a 65 29 3b 0a 6f 70 65 72 3a   ┆7,ord(state):8,temp_size); oper:┆
0x03eec0…03eee0             3d 20 66 6f 72 6d 65 72 5f 6f 70 65 72 61 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 6f   ┆= former_operand; end; (* with o┆
0x03eee0…03ef00             70 65 72 5e 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 77 72 69   ┆per^ *) end; end;  procedure wri┆
0x03ef00…03ef20             74 65 5f 6e 61 6d 65 5f 73 74 61 63 6b 3b 0a 76 61 72 20 63 68 31 2c 63 68 32 3a 20 63 68 61 72   ┆te_name_stack; var ch1,ch2: char┆
0x03ef20…03ef40             3b 20 20 70 3a 20 69 6e 74 65 67 65 72 3b 0a 68 65 6c 70 5f 70 74 72 3a 20 73 74 61 63 6b 5f 70   ┆;  p: integer; help_ptr: stack_p┆
0x03ef40…03ef60             74 72 3b 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 3b 0a 69 66 20 73 74 61 63 6b 5f 74 6f 70 3d   ┆tr; begin writeln; if stack_top=┆
0x03ef60…03ef80             6e 69 6c 20 74 68 65 6e 20 77 72 69 74 65 6c 6e 28 27 6e 61 6d 65 20 73 74 61 63 6b 20 65 6d 70   ┆nil then writeln('name stack emp┆
0x03ef80…03efa0             74 79 27 29 20 65 6c 73 65 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 27 6e 61 6d 65 20 73 74   ┆ty') else begin writeln('name st┆
0x03efa0…03efc0             61 63 6b 27 29 3b 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 73 74 61 63 6b 5f 74 6f 70 3b 0a 77 68 69   ┆ack'); help_ptr:= stack_top; whi┆
0x03efc0…03efe0             6c 65 20 68 65 6c 70 5f 70 74 72 3c 3e 6e 69 6c 20 64 6f 20 62 65 67 69 6e 0a 77 72 69 74 65 6c   ┆le help_ptr<>nil do begin writel┆
0x03efe0…03f000             6e 28 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 3a 20 34 29 3b 0a 68 65 6c   ┆n(help_ptr^.stacked_val: 4); hel┆
0x03f000…03f020 (16, 1, 10) 70 5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b 0a 65   ┆p_ptr:= help_ptr^.former_elem; e┆
0x03f020…03f040             6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 65 74 5f 6f 70   ┆nd; end; end;   procedure set_op┆
0x03f040…03f060             74 69 6f 6e 3b 0a 76 61 72 20 70 2c 61 2c 62 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a   ┆tion; var p,a,b: integer; begin ┆
0x03f060…03f080             70 61 73 73 69 6e 28 70 29 3b 20 20 70 61 73 73 69 6e 28 61 29 3b 20 20 70 61 73 73 69 6e 28 62   ┆passin(p);  passin(a);  passin(b┆
0x03f080…03f0a0             29 3b 0a 69 66 20 70 3d 74 68 69 73 5f 70 61 73 73 20 74 68 65 6e 0a 63 61 73 65 20 61 20 6f 66   ┆); if p=this_pass then case a of┆
0x03f0a0…03f0c0             0a 31 3a 20 77 72 69 74 65 5f 6e 61 6d 65 74 61 62 6c 65 28 62 29 3b 0a 32 3a 20 77 72 69 74 65   ┆ 1: write_nametable(b); 2: write┆
0x03f0c0…03f0e0             5f 6f 70 65 72 61 6e 64 5f 73 74 61 63 6b 3b 0a 33 3a 20 77 72 69 74 65 5f 6e 61 6d 65 5f 73 74   ┆_operand_stack; 3: write_name_st┆
0x03f0e0…03f100             61 63 6b 3b 0a 34 3a 20 74 65 73 74 3a 3d 62 3d 31 3b 0a 35 3a 20 70 72 6f 67 72 61 6d 5f 6f 6b   ┆ack; 4: test:=b=1; 5: program_ok┆
0x03f100…03f120             3a 3d 70 72 6f 67 72 61 6d 5f 6f 6b 20 61 6e 64 20 28 62 3d 31 29 3b 0a 36 3a 20 77 72 69 74 65   ┆:=program_ok and (b=1); 6: write┆
0x03f120…03f140             5f 63 6f 6e 73 74 5f 61 72 65 61 28 31 29 3b 0a 37 3a 20 70 72 65 73 65 72 76 65 5f 6f 70 74 69   ┆_const_area(1); 7: preserve_opti┆
0x03f140…03f160             6f 6e 3a 3d 20 62 3d 31 3b 0a 39 3a 20 62 65 67 69 6e 20 28 2a 20 69 6e 64 65 78 20 63 68 65 63   ┆on:= b=1; 9: begin (* index chec┆
0x03f160…03f180             6b 20 6f 6e 2c 6f 66 66 20 2a 29 0a 69 6e 64 65 78 5f 63 68 65 63 6b 3a 3d 62 3d 31 3b 0a 70 75   ┆k on,off *) index_check:=b=1; pu┆
0x03f180…03f1a0             74 33 28 7a 6f 70 74 69 6f 6e 2c 35 2c 61 2c 62 29 3b 0a 65 6e 64 3b 0a 31 30 3a 20 74 65 73 74   ┆t3(zoption,5,a,b); end; 10: test┆
0x03f1a0…03f1c0             5f 73 75 72 76 65 79 3a 3d 62 3d 31 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20   ┆_survey:=b=1; end else begin if ┆
0x03f1c0…03f1e0             28 70 3d 30 29 20 61 6e 64 20 28 61 3d 33 29 20 74 68 65 6e 0a 69 66 20 62 20 64 69 76 20 31 30   ┆(p=0) and (a=3) then if b div 10┆
0x03f1e0…03f200             30 20 3c 3e 20 76 65 72 73 69 6f 6e 70 61 73 73 33 20 74 68 65 6e 20 61 62 6f 72 74 28 76 65 72   ┆0 <> versionpass3 then abort(ver┆
0x03f200…03f220 (16, 1, 11) 73 69 6f 6e 5f 65 72 72 6f 72 29 3b 0a 70 75 74 33 28 7a 6f 70 74 69 6f 6e 2c 70 2c 61 2c 62 29   ┆sion_error); put3(zoption,p,a,b)┆
0x03f220…03f240             3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 69 74 69 61 6c 69 7a   ┆; end; end;  procedure initializ┆
0x03f240…03f260             65 3b 0a 76 61 72 20 63 6f 64 65 3a 20 70 61 73 73 33 63 6f 64 65 73 3b 20 70 3a 20 77 6f 72 64   ┆e; var code: pass3codes; p: word┆
0x03f260…03f280             3b 20 20 65 6d 70 74 79 5f 6e 61 6d 65 3a 20 6e 61 6d 65 5f 72 65 63 3b 0a 65 6d 70 74 79 5f 6f   ┆;  empty_name: name_rec; empty_o┆
0x03f280…03f2a0             70 73 3a 20 6f 70 65 72 61 6e 64 5f 72 65 63 3b 0a 69 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67   ┆ps: operand_rec; i: integer; beg┆
0x03f2a0…03f2c0             69 6e 0a 66 6f 72 20 63 6f 64 65 3a 3d 78 66 69 72 73 74 63 6f 64 65 20 74 6f 20 78 6c 61 73 74   ┆in for code:=xfirstcode to xlast┆
0x03f2c0…03f2e0             63 6f 64 65 20 64 6f 0a 63 6f 6e 76 65 72 74 5f 69 6e 5f 63 6f 64 65 5b 6f 72 64 28 63 6f 64 65   ┆code do convert_in_code[ord(code┆
0x03f2e0…03f300             29 5d 3a 3d 63 6f 64 65 3b 0a 0a 28 2a 20 61 6c 6c 20 6e 61 6d 65 74 61 62 6c 65 20 65 6e 74 72   ┆)]:=code;  (* all nametable entr┆
0x03f300…03f320             69 65 73 20 65 6d 70 74 79 20 2a 29 0a 77 69 74 68 20 65 6d 70 74 79 5f 6e 61 6d 65 20 64 6f 20   ┆ies empty *) with empty_name do ┆
0x03f320…03f340             62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 6e 6f 74 5f 75 73 65 64 3b 0a 73 69 7a 65 3a 3d 30   ┆begin context:=not_used; size:=0┆
0x03f340…03f360             3b 20 20 20 6d 69 6e 3a 3d 30 3b 20 20 20 6d 61 78 3a 3d 30 3b 0a 6e 69 76 3a 3d 30 3b 20 20 20   ┆;   min:=0;   max:=0; niv:=0;   ┆
0x03f360…03f380             20 6f 66 66 73 65 74 3a 3d 30 3b 6c 69 78 3a 3d 30 3b 0a 6e 65 78 74 5f 63 6f 6d 70 3a 3d 30 3b   ┆ offset:=0;lix:=0; next_comp:=0;┆
0x03f380…03f3a0             0a 63 6f 6d 70 5f 74 79 70 65 3a 3d 30 3b 0a 70 61 63 6b 65 64 5f 63 6f 6d 70 3a 3d 66 61 6c 73   ┆ comp_type:=0; packed_comp:=fals┆
0x03f3a0…03f3c0             65 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 66 6f 72 20 69 3a 3d 30   ┆e; dynamic:=false; end; for i:=0┆
0x03f3c0…03f3e0             20 74 6f 20 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 20 64 6f 20 20 6e 61 6d 65 74 61 62 6c 65   ┆ to max_name_index do  nametable┆
0x03f3e0…03f400             28 69 29 5e 3a 3d 65 6d 70 74 79 5f 6e 61 6d 65 3b 0a 0a 28 2a 20 69 6e 69 74 20 6f 70 65 72 61   ┆(i)^:=empty_name;  (* init opera┆
0x03f400…03f420 (16, 1, 12) 6e 64 20 73 74 61 63 6b 20 62 6f 74 74 6f 6d 20 74 6f 20 65 6d 70 74 79 20 2a 29 0a 6e 65 77 28   ┆nd stack bottom to empty *) new(┆
0x03f420…03f440             65 6d 70 74 79 5f 73 74 61 63 6b 29 3b 0a 77 69 74 68 20 65 6d 70 74 79 5f 73 74 61 63 6b 5e 20   ┆empty_stack); with empty_stack^ ┆
0x03f440…03f460             64 6f 20 62 65 67 69 6e 0a 6e 65 78 74 5f 6f 70 65 72 61 6e 64 3a 3d 20 6e 69 6c 3b 20 28 2a 20   ┆do begin next_operand:= nil; (* ┆
0x03f460…03f480             6c 61 73 74 20 65 6c 65 6d 65 6e 74 20 69 6e 20 73 74 61 63 6b 20 2a 29 0a 66 6f 72 6d 65 72 5f   ┆last element in stack *) former_┆
0x03f480…03f4a0             6f 70 65 72 61 6e 64 3a 3d 20 65 6d 70 74 79 5f 73 74 61 63 6b 3b 0a 6b 69 6e 64 3a 3d 6e 6f 74   ┆operand:= empty_stack; kind:=not┆
0x03f4a0…03f4c0             5f 75 73 65 64 3b 20 20 20 6e 69 76 3a 3d 30 3b 20 20 20 6f 66 66 73 65 74 3a 3d 30 3b 20 20 20   ┆_used;   niv:=0;   offset:=0;   ┆
0x03f4c0…03f4e0             73 69 7a 65 3a 3d 30 3b 0a 63 6f 6e 74 65 78 74 3a 3d 6e 6f 74 5f 75 73 65 64 3b 6c 69 78 3a 3d   ┆size:=0; context:=not_used;lix:=┆
0x03f4e0…03f500             30 3b 20 20 20 66 69 72 73 74 3a 3d 30 3b 0a 66 69 65 6c 64 5f 70 61 63 6b 65 64 3a 3d 66 61 6c   ┆0;   first:=0; field_packed:=fal┆
0x03f500…03f520             73 65 3b 0a 61 72 72 61 79 5f 70 61 63 6b 65 64 3a 3d 66 61 6c 73 65 3b 0a 63 6f 6d 70 5f 73 69   ┆se; array_packed:=false; comp_si┆
0x03f520…03f540             7a 65 3a 3d 30 3b 0a 73 74 61 74 65 3a 3d 64 69 72 65 63 74 3b 20 20 20 20 74 65 6d 70 5f 73 69   ┆ze:=0; state:=direct;    temp_si┆
0x03f540…03f560             7a 65 3a 3d 30 3b 0a 66 75 6e 63 5f 76 61 6c 75 65 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 0a   ┆ze:=0; func_value:=false; end;  ┆
0x03f560…03f580             28 2a 24 49 2d 2a 29 0a 72 65 73 65 74 28 70 61 73 73 33 66 69 6c 65 29 3b 0a 69 66 20 69 6f 72   ┆(*$I-*) reset(pass3file); if ior┆
0x03f580…03f5a0             65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 6f 66 69 6c 65 28 63 6f 6e   ┆esult <> 0 then begin nofile(con┆
0x03f5a0…03f5c0             63 61 74 28 70 61 74 68 32 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 33 5f 63 6f 64 65 6e 61 6d 65   ┆cat(path2_name, o_pass3_codename┆
0x03f5c0…03f5e0             29 29 3b 0a 65 6e 64 3b 0a 28 2a 24 49 2b 2a 29 0a 72 65 77 72 69 74 65 28 70 61 73 73 34 66 69   ┆)); end; (*$I+*) rewrite(pass4fi┆
0x03f5e0…03f600             6c 65 29 3b 0a 73 6f 75 72 63 65 5f 6c 69 6e 65 3a 3d 30 3b 0a 6c 69 6e 65 5f 6e 75 6d 62 65 72   ┆le); source_line:=0; line_number┆
0x03f600…03f620 (16, 1, 13) 3a 3d 66 61 6c 73 65 3b 0a 74 6f 70 5f 6e 69 78 3a 3d 30 3b 20 20 20 74 6f 70 5f 73 74 61 63 6b   ┆:=false; top_nix:=0;   top_stack┆
0x03f620…03f640             3a 3d 30 3b 20 20 20 74 6f 70 5f 6f 70 73 3a 3d 30 3b 20 20 20 74 6f 70 5f 73 73 3a 3d 30 3b 0a   ┆:=0;   top_ops:=0;   top_ss:=0; ┆
0x03f640…03f660             74 6f 70 5f 63 3a 3d 30 3b 20 20 20 20 20 74 6f 70 5f 6c 69 78 3a 3d 30 3b 0a 70 72 65 73 65 72   ┆top_c:=0;     top_lix:=0; preser┆
0x03f660…03f680             76 65 5f 6f 70 74 69 6f 6e 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 70 72 65 73 65 72 76 65 2e 6e   ┆ve_option:= false; (* preserve.n┆
0x03f680…03f6a0             6f 2c 20 69 2e 65 2e 20 72 65 6d 6f 76 65 20 70 61 73 73 33 63 6f 64 65 20 61 66 74 65 72 20 75   ┆o, i.e. remove pass3code after u┆
0x03f6a0…03f6c0             73 65 20 2a 29 0a 74 65 73 74 5f 73 75 72 76 65 79 3a 3d 66 61 6c 73 65 3b 0a 69 6e 64 65 78 5f   ┆se *) test_survey:=false; index_┆
0x03f6c0…03f6e0             63 68 65 63 6b 3a 3d 74 72 75 65 3b 20 20 28 2a 20 64 65 66 61 75 6c 74 20 69 6e 64 65 78 2e 79   ┆check:=true;  (* default index.y┆
0x03f6e0…03f700             65 73 20 2a 29 0a 6e 65 77 5f 63 61 6c 6c 3a 3d 20 66 61 6c 73 65 3b 0a 0a 73 74 61 63 6b 5f 74   ┆es *) new_call:= false;  stack_t┆
0x03f700…03f720             6f 70 3a 3d 20 6e 69 6c 3b 20 28 2a 20 65 6d 70 74 79 20 73 74 61 63 6b 20 2a 29 0a 66 72 65 65   ┆op:= nil; (* empty stack *) free┆
0x03f720…03f740             5f 73 74 61 63 6b 3a 3d 20 6e 69 6c 3b 20 28 2a 20 65 6d 70 74 79 20 66 72 65 65 20 6c 69 73 74   ┆_stack:= nil; (* empty free list┆
0x03f740…03f760             20 2a 29 0a 0a 6e 65 77 28 73 74 72 75 63 5f 62 6f 74 74 6f 6d 29 3b 0a 77 69 74 68 20 73 74 72   ┆ *)  new(struc_bottom); with str┆
0x03f760…03f780             75 63 5f 62 6f 74 74 6f 6d 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74 5f 73 74 72 75 63 3a 3d   ┆uc_bottom^ do begin next_struc:=┆
0x03f780…03f7a0             20 6e 69 6c 3b 0a 66 6f 72 6d 65 72 5f 73 74 72 75 63 3a 3d 20 73 74 72 75 63 5f 62 6f 74 74 6f   ┆ nil; former_struc:= struc_botto┆
0x03f7a0…03f7c0             6d 3b 0a 65 6e 64 3b 0a 73 73 3a 3d 20 73 74 72 75 63 5f 62 6f 74 74 6f 6d 3b 0a 0a 6f 73 3a 3d   ┆m; end; ss:= struc_bottom;  os:=┆
0x03f7c0…03f7e0             65 6d 70 74 79 5f 73 74 61 63 6b 3b 0a 6f 74 3a 3d 65 6d 70 74 79 5f 73 74 61 63 6b 3b 0a 0a 28   ┆empty_stack; ot:=empty_stack;  (┆
0x03f7e0…03f800             2a 20 61 6c 6c 6f 63 61 74 65 20 73 74 61 72 74 20 6f 66 20 63 6f 6e 73 74 61 6e 74 20 61 72 65   ┆* allocate start of constant are┆
0x03f800…03f820 (16, 1, 14) 61 20 2a 29 0a 6e 65 77 28 73 74 61 72 74 5f 63 6f 6e 73 74 5f 61 72 65 61 29 3b 0a 77 69 74 68   ┆a *) new(start_const_area); with┆
0x03f820…03f840             20 73 74 61 72 74 5f 63 6f 6e 73 74 5f 61 72 65 61 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74   ┆ start_const_area^ do begin next┆
0x03f840…03f860             5f 63 6f 6e 73 74 3a 3d 20 6e 69 6c 3b 20 28 2a 20 65 6e 64 20 6f 66 20 63 6f 6e 73 74 20 62 75   ┆_const:= nil; (* end of const bu┆
0x03f860…03f880             66 66 65 72 20 63 68 61 69 6e 20 2a 29 0a 66 69 72 73 74 5f 69 6e 64 65 78 3a 3d 20 31 3b 0a 65   ┆ffer chain *) first_index:= 1; e┆
0x03f880…03f8a0             6e 64 3b 0a 63 75 72 72 65 6e 74 5f 63 6f 6e 73 74 5f 61 72 65 61 3a 3d 20 73 74 61 72 74 5f 63   ┆nd; current_const_area:= start_c┆
0x03f8a0…03f8c0             6f 6e 73 74 5f 61 72 65 61 3b 0a 74 6f 70 5f 63 5f 69 6e 64 65 78 3a 3d 31 3b 0a 66 69 72 73 74   ┆onst_area; top_c_index:=1; first┆
0x03f8c0…03f8e0             5f 63 5f 69 6e 64 65 78 3a 3d 31 3b 0a 0a 64 6f 6e 65 3a 3d 66 61 6c 73 65 3b 0a 70 72 6f 67 72   ┆_c_index:=1;  done:=false; progr┆
0x03f8e0…03f900             61 6d 5f 6f 6b 3a 3d 74 72 75 65 3b 0a 70 72 65 66 69 78 65 64 3a 3d 66 61 6c 73 65 3b 0a 70 72   ┆am_ok:=true; prefixed:=false; pr┆
0x03f900…03f920             65 66 69 78 65 64 5f 6e 61 6d 65 3a 3d 66 61 6c 73 65 3b 0a 70 72 65 6c 75 64 65 3a 3d 74 72 75   ┆efixed_name:=false; prelude:=tru┆
0x03f920…03f940             65 3b 0a 76 61 72 69 61 62 6c 65 5f 69 6e 69 74 3a 3d 66 61 6c 73 65 3b 0a 74 65 6d 70 5f 77 69   ┆e; variable_init:=false; temp_wi┆
0x03f940…03f960             74 68 76 61 72 5f 6e 6f 74 5f 75 73 65 64 3a 3d 66 61 6c 73 65 3b 0a 73 74 61 74 5f 70 61 72 74   ┆thvar_not_used:=false; stat_part┆
0x03f960…03f980             3a 3d 66 61 6c 73 65 3b 0a 65 78 70 6f 72 74 3a 3d 66 61 6c 73 65 3b 0a 70 61 72 61 6d 5f 6c 69   ┆:=false; export:=false; param_li┆
0x03f980…03f9a0             73 74 3a 3d 74 72 75 65 3b 0a 6d 6f 64 65 3a 3d 70 72 6f 63 65 73 73 5f 6d 6f 64 65 3b 0a 0a 6e   ┆st:=true; mode:=process_mode;  n┆
0x03f9a0…03f9c0             65 77 28 62 6f 74 74 6f 6d 5f 6c 65 76 65 6c 29 3b 20 28 2a 20 62 6f 74 74 6f 6d 20 65 6c 65 6d   ┆ew(bottom_level); (* bottom elem┆
0x03f9c0…03f9e0             65 6e 74 20 6f 66 20 64 69 73 70 6c 61 79 20 73 74 61 63 6b 20 2a 29 0a 77 69 74 68 20 62 6f 74   ┆ent of display stack *) with bot┆
0x03f9e0…03fa00             74 6f 6d 5f 6c 65 76 65 6c 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74 5f 6c 65 76 65 6c 3a 3d   ┆tom_level^ do begin next_level:=┆
0x03fa00…03fa20 (16, 1, 15) 20 6e 69 6c 3b 20 28 2a 20 6c 61 73 74 20 61 6c 6c 6f 63 61 74 65 64 20 65 6c 65 6d 65 6e 74 20   ┆ nil; (* last allocated element ┆
0x03fa20…03fa40             6f 66 20 64 69 73 70 6c 61 79 20 73 74 61 63 6b 20 2a 29 0a 66 6f 72 6d 65 72 5f 6c 65 76 65 6c   ┆of display stack *) former_level┆
0x03fa40…03fa60             3a 3d 20 62 6f 74 74 6f 6d 5f 6c 65 76 65 6c 3b 0a 65 6e 64 3b 0a 74 68 69 73 5f 6c 65 76 65 6c   ┆:= bottom_level; end; this_level┆
0x03fa60…03fa80             3a 3d 20 62 6f 74 74 6f 6d 5f 6c 65 76 65 6c 3b 0a 0a 70 72 69 6e 74 65 64 3a 3d 30 3b 20 20 69   ┆:= bottom_level;  printed:=0;  i┆
0x03fa80…03faa0             64 63 6f 75 6e 74 3a 3d 30 3b 20 20 70 61 72 61 6d 5f 6e 75 6d 62 65 72 3a 3d 30 3b 0a 73 63 61   ┆dcount:=0;  param_number:=0; sca┆
0x03faa0…03fac0             6c 61 72 5f 63 6f 75 6e 74 3a 3d 30 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76   ┆lar_count:=0; if (* **z80** *) v┆
0x03fac0…03fae0             65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 74 79 70 65 5f 70 6f 69 6e 74 65   ┆ersionz80 then begin type_pointe┆
0x03fae0…03fb00             72 3a 3d 77 6f 72 64 5f 74 79 70 3b 0a 61 63 74 69 76 61 74 69 6f 6e 5f 72 65 63 6f 72 64 5f 6c   ┆r:=word_typ; activation_record_l┆
0x03fb00…03fb20             65 6e 67 74 68 3a 3d 31 32 3b 0a 70 72 6f 63 65 73 73 5f 6f 66 66 73 65 74 3a 3d 36 3b 0a 63 75   ┆ength:=12; process_offset:=6; cu┆
0x03fb20…03fb40             72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d 30 3b 0a 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 3a   ┆rrent_offset:=0; pointer_length:┆
0x03fb40…03fb60             3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 66 69 65 6c 64 5f 75 6e 69 74 65 3a 3d 77 6f 72 64 5f   ┆=word_length; field_unite:=word_┆
0x03fb60…03fb80             6c 65 6e 67 74 68 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 6c 61 6d 62 64 61 76 65 72 73 69 6f   ┆length; end else if lambdaversio┆
0x03fb80…03fba0             6e 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 2a 2a 6c 61 6d 62 64 61 2a 2a 20 2a 29 0a 74 79   ┆n then begin (* **lambda** *) ty┆
0x03fba0…03fbc0             70 65 5f 70 6f 69 6e 74 65 72 3a 3d 64 6f 75 62 6c 65 5f 74 79 70 3b 0a 61 63 74 69 76 61 74 69   ┆pe_pointer:=double_typ; activati┆
0x03fbc0…03fbe0             6f 6e 5f 72 65 63 6f 72 64 5f 6c 65 6e 67 74 68 3a 3d 31 36 3b 0a 70 72 6f 63 65 73 73 5f 6f 66   ┆on_record_length:=16; process_of┆
0x03fbe0…03fc00             66 73 65 74 3a 3d 30 3b 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d 2d 31 3b 0a 70 6f 69   ┆fset:=0; current_offset:=-1; poi┆
0x03fc00…03fc20 (17, 0, 1)  6e 74 65 72 5f 6c 65 6e 67 74 68 3a 3d 32 2a 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 66 69 65 6c   ┆nter_length:=2*word_length; fiel┆
0x03fc20…03fc40             64 5f 75 6e 69 74 65 3a 3d 62 79 74 65 5f 6c 65 6e 67 74 68 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62   ┆d_unite:=byte_length; end else b┆
0x03fc40…03fc60             65 67 69 6e 20 28 2a 20 2a 2a 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 74 79 70 65 5f 70 6f 69 6e   ┆egin (* **rc3502c** *) type_poin┆
0x03fc60…03fc80             74 65 72 20 3a 3d 20 70 6f 69 6e 74 5f 74 79 70 3b 0a 61 63 74 69 76 61 74 69 6f 6e 5f 72 65 63   ┆ter := point_typ; activation_rec┆
0x03fc80…03fca0             6f 72 64 5f 6c 65 6e 67 74 68 20 3a 3d 20 38 3b 0a 70 72 6f 63 65 73 73 5f 6f 66 66 73 65 74 20   ┆ord_length := 8; process_offset ┆
0x03fca0…03fcc0             3a 3d 20 30 3b 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3a 3d 20 30 3b 0a 70 6f 69 6e 74   ┆:= 0; current_offset := 0; point┆
0x03fcc0…03fce0             65 72 5f 6c 65 6e 67 74 68 20 3a 3d 20 33 20 2a 20 62 79 74 65 5f 6c 65 6e 67 74 68 3b 0a 66 69   ┆er_length := 3 * byte_length; fi┆
0x03fce0…03fd00             65 6c 64 5f 75 6e 69 74 65 20 3a 3d 20 62 79 74 65 5f 6c 65 6e 67 74 68 3b 0a 65 6e 64 3b 0a 70   ┆eld_unite := byte_length; end; p┆
0x03fd00…03fd20             72 6f 63 65 73 73 5f 70 61 72 61 6d 5f 6c 65 6e 67 74 68 3a 3d 32 2a 70 6f 69 6e 74 65 72 5f 6c   ┆rocess_param_length:=2*pointer_l┆
0x03fd20…03fd40             65 6e 67 74 68 20 2b 20 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 70 61 63 6b 5f 72 65 63 6f 72 64   ┆ength + word_length; pack_record┆
0x03fd40…03fd60             3a 3d 6e 6f 6e 5f 70 61 63 6b 3b 0a 61 6c 6c 69 67 6e 5f 66 69 65 6c 64 73 3a 3d 66 61 6c 73 65   ┆:=non_pack; allign_fields:=false┆
0x03fd60…03fd80             3b 0a 64 79 6e 5f 66 69 65 6c 64 73 3a 3d 66 61 6c 73 65 3b 0a 69 6e 69 74 5f 66 69 65 6c 64 73   ┆; dyn_fields:=false; init_fields┆
0x03fd80…03fda0             3a 3d 66 61 6c 73 65 3b 0a 63 75 72 72 65 6e 74 5f 62 69 74 3a 3d 30 3b 0a 63 75 72 72 65 6e 74   ┆:=false; current_bit:=0; current┆
0x03fda0…03fdc0             5f 6c 69 78 3a 3d 31 3b 0a 63 75 72 72 65 6e 74 5f 6e 69 76 3a 3d 30 3b 0a 70 72 6f 63 65 73 73   ┆_lix:=1; current_niv:=0; process┆
0x03fdc0…03fde0             5f 6e 69 76 3a 3d 2d 31 3b 20 28 2a 65 6e 76 69 72 6f 6e 6d 65 6e 74 2a 29 0a 6e 61 6d 65 5f 6b   ┆_niv:=-1; (*environment*) name_k┆
0x03fde0…03fe00             65 79 3a 3d 31 3b 0a 66 69 65 6c 64 5f 6f 66 66 73 65 74 3a 3d 30 3b 0a 66 69 72 73 74 5f 6f 66   ┆ey:=1; field_offset:=0; first_of┆
0x03fe00…03fe20 (17, 0, 2)  5f 65 78 70 72 3a 3d 6f 74 3b 0a 6d 61 78 5f 73 65 74 5f 63 6f 6e 73 74 5f 76 61 6c 75 65 3a 3d   ┆_expr:=ot; max_set_const_value:=┆
0x03fe20…03fe40             73 65 74 5f 63 6f 6e 73 74 5f 6c 65 6e 67 74 68 2a 62 69 74 73 5f 70 72 5f 77 6f 72 64 20 2d 20   ┆set_const_length*bits_pr_word - ┆
0x03fe40…03fe60             31 3b 0a 76 61 72 5f 74 79 70 65 73 3a 3d 5b 76 61 72 69 61 62 6c 65 2c 20 76 61 72 5f 70 61 72   ┆1; var_types:=[variable, var_par┆
0x03fe60…03fe80             61 6d 2c 20 76 61 6c 75 65 5f 70 61 72 61 6d 20 5d 3b 0a 64 69 72 65 63 74 5f 72 65 74 75 72 6e   ┆am, value_param ]; direct_return┆
0x03fe80…03fea0             3a 3d 5b 69 6e 74 5f 74 79 70 65 2c 20 63 68 61 72 5f 74 79 70 65 2c 20 62 6f 6f 6c 5f 74 79 70   ┆:=[int_type, char_type, bool_typ┆
0x03fea0…03fec0             65 2c 20 73 63 61 6c 61 72 5f 74 79 70 65 2c 0a 64 79 6e 5f 73 75 62 72 61 6e 67 65 2c 20 70 6f   ┆e, scalar_type, dyn_subrange, po┆
0x03fec0…03fee0             69 6e 74 65 72 5f 74 79 70 65 5d 3b 0a 61 72 72 61 79 5f 74 79 70 65 73 3a 3d 5b 61 72 72 61 79   ┆inter_type]; array_types:=[array┆
0x03fee0…03ff00             5f 74 79 70 65 2c 73 79 73 5f 61 72 72 61 79 5f 74 79 70 65 2c 61 6c 6c 69 67 6e 5f 61 72 72 5f   ┆_type,sys_array_type,allign_arr_┆
0x03ff00…03ff20             74 79 70 65 5d 3b 0a 69 6e 64 65 78 5f 74 79 70 65 73 3a 3d 5b 69 6e 74 5f 74 79 70 65 2c 63 68   ┆type]; index_types:=[int_type,ch┆
0x03ff20…03ff40             61 72 5f 74 79 70 65 2c 62 6f 6f 6c 5f 74 79 70 65 2c 73 63 61 6c 61 72 5f 74 79 70 65 5d 3b 0a   ┆ar_type,bool_type,scalar_type]; ┆
0x03ff40…03ff60             73 69 6d 70 6c 65 5f 74 79 70 65 73 3a 3d 5b 20 69 6e 74 5f 74 79 70 65 2c 20 63 68 61 72 5f 74   ┆simple_types:=[ int_type, char_t┆
0x03ff60…03ff80             79 70 65 2c 20 62 6f 6f 6c 5f 74 79 70 65 2c 20 73 63 61 6c 61 72 5f 74 79 70 65 2c 20 64 79 6e   ┆ype, bool_type, scalar_type, dyn┆
0x03ff80…03ffa0             5f 73 75 62 72 61 6e 67 65 20 5d 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65   ┆_subrange ]; if (* **z80** *) ve┆
0x03ffa0…03ffc0             72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 6e 69 74 5f 74 79 70 65 73 20 3a   ┆rsionz80 then begin init_types :┆
0x03ffc0…03ffe0             3d 20 5b 70 6f 6f 6c 5f 74 79 70 65 2c 61 6c 6c 69 67 6e 5f 61 72 72 5f 74 79 70 65 2c 61 6c 6c   ┆= [pool_type,allign_arr_type,all┆
0x03ffe0…040000             69 67 6e 5f 72 65 63 5f 74 79 70 65 5d 3b 0a 61 6c 6c 69 67 6e 5f 74 79 70 65 73 20 3a 3d 20 69   ┆ign_rec_type]; allign_types := i┆
0x040000…040020 (17, 0, 3)  6e 69 74 5f 74 79 70 65 73 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 28 2a 20 2a 2a 72 63 33 35   ┆nit_types; end else if (* **rc35┆
0x040020…040040             30 32 2a 2a 20 2a 29 20 6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 20 74 68 65 6e 0a 62 65 67 69 6e   ┆02** *) lambdaversion then begin┆
0x040040…040060             0a 69 6e 69 74 5f 74 79 70 65 73 20 3a 3d 20 5b 73 68 61 64 6f 77 5f 74 79 70 65 2c 72 65 66 5f   ┆ init_types := [shadow_type,ref_┆
0x040060…040080             74 79 70 65 2c 70 6f 6f 6c 5f 74 79 70 65 2c 73 65 6d 5f 74 79 70 65 2c 70 6f 69 6e 74 65 72 5f   ┆type,pool_type,sem_type,pointer_┆
0x040080…0400a0             74 79 70 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 69 67 6e 5f 61 72 72 5f   ┆type,                allign_arr_┆
0x0400a0…0400c0             74 79 70 65 2c 61 6c 6c 69 67 6e 5f 72 65 63 5f 74 79 70 65 5d 3b 0a 61 6c 6c 69 67 6e 5f 74 79   ┆type,allign_rec_type]; allign_ty┆
0x0400c0…0400e0             70 65 73 20 3a 3d 20 69 6e 69 74 5f 74 79 70 65 73 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69   ┆pes := init_types; end else begi┆
0x0400e0…040100             6e 20 28 2a 20 2a 2a 72 63 33 35 30 32 2f 32 2a 2a 20 2a 29 0a 69 6e 69 74 5f 74 79 70 65 73 20   ┆n (* **rc3502/2** *) init_types ┆
0x040100…040120             3a 3d 20 5b 73 68 61 64 6f 77 5f 74 79 70 65 2c 72 65 66 5f 74 79 70 65 2c 70 6f 6f 6c 5f 74 79   ┆:= [shadow_type,ref_type,pool_ty┆
0x040120…040140             70 65 2c 70 72 6f 63 65 73 73 5f 74 79 70 65 2c 20 73 65 6d 5f 74 79 70 65 2c 70 6f 69 6e 74 65   ┆pe,process_type, sem_type,pointe┆
0x040140…040160             72 5f 74 79 70 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 69 67 6e 5f 61 72   ┆r_type,                allign_ar┆
0x040160…040180             72 5f 74 79 70 65 2c 61 6c 6c 69 67 6e 5f 72 65 63 5f 74 79 70 65 2c 73 79 73 5f 61 72 72 61 79   ┆r_type,allign_rec_type,sys_array┆
0x040180…0401a0             5f 74 79 70 65 2c 73 79 73 5f 72 65 63 6f 72 64 5f 74 79 70 65 5d 3b 0a 61 6c 6c 69 67 6e 5f 74   ┆_type,sys_record_type]; allign_t┆
0x0401a0…0401c0             79 70 65 73 20 3a 3d 5b 72 65 66 5f 74 79 70 65 2c 70 6f 6f 6c 5f 74 79 70 65 2c 73 65 6d 5f 74   ┆ypes :=[ref_type,pool_type,sem_t┆
0x0401c0…0401e0             79 70 65 2c 61 6c 6c 69 67 6e 5f 61 72 72 5f 74 79 70 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20   ┆ype,allign_arr_type,            ┆
0x0401e0…040200             20 20 20 20 20 61 6c 6c 69 67 6e 5f 72 65 63 5f 74 79 70 65 5d 3b 0a 65 6e 64 3b 0a 61 64 6a 75   ┆     allign_rec_type]; end; adju┆
0x040200…040220 (17, 0, 4)  73 74 5f 74 79 70 65 73 3a 3d 20 5b 69 6e 74 5f 74 79 70 65 2c 63 68 61 72 5f 74 79 70 65 2c 62   ┆st_types:= [int_type,char_type,b┆
0x040220…040240             6f 6f 6c 5f 74 79 70 65 2c 73 63 61 6c 61 72 5f 74 79 70 65 2c 70 6f 69 6e 74 65 72 5f 74 79 70   ┆ool_type,scalar_type,pointer_typ┆
0x040240…040260             65 2c 0a 76 61 72 5f 70 61 72 61 6d 5d 3b 0a 69 6e 64 69 72 65 63 74 73 3a 3d 5b 76 61 72 5f 70   ┆e, var_param]; indirects:=[var_p┆
0x040260…040280             61 72 61 6d 2c 77 69 74 68 5f 76 61 72 2c 6c 6f 63 6b 5f 76 61 72 2c 64 79 6e 5f 76 61 72 69 61   ┆aram,with_var,lock_var,dyn_varia┆
0x040280…0402a0             62 6c 65 5d 3b 0a 70 75 74 33 28 7a 6f 70 74 69 6f 6e 2c 20 30 2c 20 74 68 69 73 5f 70 61 73 73   ┆ble]; put3(zoption, 0, this_pass┆
0x0402a0…0402c0             2c 20 76 65 72 73 69 6f 6e 70 61 73 73 34 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65   ┆, versionpass4); end;  procedure┆
0x0402c0…0402e0             20 70 75 73 68 3b 0a 62 65 67 69 6e 0a 6f 73 3a 3d 6f 74 3b 0a 69 66 20 6f 74 5e 2e 6e 65 78 74   ┆ push; begin os:=ot; if ot^.next┆
0x0402e0…040300             5f 6f 70 65 72 61 6e 64 3d 6e 69 6c 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 61 6c 6c 6f 63   ┆_operand=nil then begin (* alloc┆
0x040300…040320             61 74 65 20 6e 65 77 20 65 6c 65 6d 65 6e 74 20 2a 29 0a 6e 65 77 28 6f 74 5e 2e 6e 65 78 74 5f   ┆ate new element *) new(ot^.next_┆
0x040320…040340             6f 70 65 72 61 6e 64 29 3b 0a 74 6f 70 5f 6f 70 73 3a 3d 20 74 6f 70 5f 6f 70 73 2b 31 3b 0a 77   ┆operand); top_ops:= top_ops+1; w┆
0x040340…040360             69 74 68 20 6f 74 5e 2e 6e 65 78 74 5f 6f 70 65 72 61 6e 64 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e   ┆ith ot^.next_operand^ do begin n┆
0x040360…040380             65 78 74 5f 6f 70 65 72 61 6e 64 3a 3d 20 6e 69 6c 3b 0a 66 6f 72 6d 65 72 5f 6f 70 65 72 61 6e   ┆ext_operand:= nil; former_operan┆
0x040380…0403a0             64 3a 3d 20 6f 74 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a 29 0a 65 6e 64 3b 20 28 2a 20   ┆d:= ot; end; (* with *) end; (* ┆
0x0403a0…0403c0             61 6c 6c 6f 63 61 74 65 20 2a 29 0a 6f 74 3a 3d 20 6f 74 5e 2e 6e 65 78 74 5f 6f 70 65 72 61 6e   ┆allocate *) ot:= ot^.next_operan┆
0x0403c0…0403e0             64 3b 0a 6f 74 5e 2e 74 65 6d 70 5f 73 69 7a 65 3a 3d 73 6f 75 72 63 65 5f 6c 69 6e 65 3b 20 20   ┆d; ot^.temp_size:=source_line;  ┆
0x0403e0…040400             28 2a 20 74 65 73 74 20 2a 29 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 6f 70 3b 0a   ┆(* test *) end;  procedure pop; ┆
0x040400…040420 (17, 0, 5)  62 65 67 69 6e 0a 6f 74 3a 3d 6f 73 3b 0a 6f 73 3a 3d 6f 73 5e 2e 66 6f 72 6d 65 72 5f 6f 70 65   ┆begin ot:=os; os:=os^.former_ope┆
0x040420…040440             72 61 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 73 68 5f 6e 61 6d 65 28   ┆rand; end;  procedure push_name(┆
0x040440…040460             76 61 72 20 6e 69 78 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 20 0a 74 6f 70 3a 20 73 74 61   ┆var nix: integer); var  top: sta┆
0x040460…040480             63 6b 5f 70 74 72 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 6e 69 78 29 3b 0a 69 66 20 6e 69   ┆ck_ptr; begin passin(nix); if ni┆
0x040480…0404a0             78 3e 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 20 74 68 65 6e 20 61 62 6f 72 74 28 6e 61 6d 65   ┆x>max_name_index then abort(name┆
0x0404a0…0404c0             5f 6f 76 65 72 66 6c 6f 77 29 3b 0a 69 66 20 66 72 65 65 5f 73 74 61 63 6b 3d 6e 69 6c 20 74 68   ┆_overflow); if free_stack=nil th┆
0x0404c0…0404e0             65 6e 0a 62 65 67 69 6e 0a 6e 65 77 28 66 72 65 65 5f 73 74 61 63 6b 29 3b 0a 74 6f 70 5f 73 74   ┆en begin new(free_stack); top_st┆
0x0404e0…040500             61 63 6b 3a 3d 20 74 6f 70 5f 73 74 61 63 6b 2b 31 3b 0a 66 72 65 65 5f 73 74 61 63 6b 5e 2e 66   ┆ack:= top_stack+1; free_stack^.f┆
0x040500…040520             6f 72 6d 65 72 5f 65 6c 65 6d 3a 3d 20 6e 69 6c 3b 0a 65 6e 64 3b 0a 74 6f 70 3a 3d 20 66 72 65   ┆ormer_elem:= nil; end; top:= fre┆
0x040520…040540             65 5f 73 74 61 63 6b 3b 0a 66 72 65 65 5f 73 74 61 63 6b 3a 3d 20 66 72 65 65 5f 73 74 61 63 6b   ┆e_stack; free_stack:= free_stack┆
0x040540…040560             5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b 0a 77 69 74 68 20 74 6f 70 5e 20 64 6f 0a 62 65 67 69   ┆^.former_elem; with top^ do begi┆
0x040560…040580             6e 0a 66 6f 72 6d 65 72 5f 65 6c 65 6d 3a 3d 20 73 74 61 63 6b 5f 74 6f 70 3b 0a 73 74 61 63 6b   ┆n former_elem:= stack_top; stack┆
0x040580…0405a0             65 64 5f 76 61 6c 3a 3d 20 6e 69 78 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a 29 0a 73 74   ┆ed_val:= nix; end; (* with *) st┆
0x0405a0…0405c0             61 63 6b 5f 74 6f 70 3a 3d 20 74 6f 70 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70   ┆ack_top:= top; end;  procedure p┆
0x0405c0…0405e0             75 73 68 5f 6f 6c 64 28 6e 69 78 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 0a 74 6f 70 3a 20   ┆ush_old(nix: integer); var top: ┆
0x0405e0…040600             73 74 61 63 6b 5f 70 74 72 3b 0a 62 65 67 69 6e 0a 69 66 20 66 72 65 65 5f 73 74 61 63 6b 3d 6e   ┆stack_ptr; begin if free_stack=n┆
0x040600…040620 (17, 0, 6)  69 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 65 77 28 66 72 65 65 5f 73 74 61 63 6b 29 3b 0a 74   ┆il then begin new(free_stack); t┆
0x040620…040640             6f 70 5f 73 74 61 63 6b 3a 3d 20 74 6f 70 5f 73 74 61 63 6b 2b 31 3b 0a 66 72 65 65 5f 73 74 61   ┆op_stack:= top_stack+1; free_sta┆
0x040640…040660             63 6b 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3a 3d 20 6e 69 6c 3b 0a 65 6e 64 3b 0a 74 6f 70 3a   ┆ck^.former_elem:= nil; end; top:┆
0x040660…040680             3d 20 66 72 65 65 5f 73 74 61 63 6b 3b 0a 66 72 65 65 5f 73 74 61 63 6b 3a 3d 20 66 72 65 65 5f   ┆= free_stack; free_stack:= free_┆
0x040680…0406a0             73 74 61 63 6b 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b 0a 77 69 74 68 20 74 6f 70 5e 20 64 6f   ┆stack^.former_elem; with top^ do┆
0x0406a0…0406c0             0a 62 65 67 69 6e 0a 66 6f 72 6d 65 72 5f 65 6c 65 6d 3a 3d 20 73 74 61 63 6b 5f 74 6f 70 3b 0a   ┆ begin former_elem:= stack_top; ┆
0x0406c0…0406e0             73 74 61 63 6b 65 64 5f 76 61 6c 3a 3d 20 6e 69 78 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20   ┆stacked_val:= nix; end; (* with ┆
0x0406e0…040700             2a 29 0a 73 74 61 63 6b 5f 74 6f 70 3a 3d 20 74 6f 70 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64   ┆*) stack_top:= top; end;  proced┆
0x040700…040720             75 72 65 20 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 63 6f 75 6e 74 3a 20 69 6e 74   ┆ure pop_to_free_stack(count: int┆
0x040720…040740             65 67 65 72 29 3b 0a 28 2a 20 70 6f 70 20 63 6f 75 6e 74 20 65 6c 65 6d 65 6e 74 73 20 66 72 6f   ┆eger); (* pop count elements fro┆
0x040740…040760             6d 20 73 74 61 63 6b 20 74 68 65 20 74 6f 70 20 6f 66 20 77 68 69 63 68 20 69 73 20 73 74 61 63   ┆m stack the top of which is stac┆
0x040760…040780             6b 5f 74 6f 70 20 61 6e 64 0a 70 75 73 68 20 74 68 65 20 65 6c 65 6d 65 6e 74 73 20 6f 6e 74 6f   ┆k_top and push the elements onto┆
0x040780…0407a0             20 74 68 65 20 73 74 61 63 6b 20 64 65 6e 6f 74 65 64 20 62 79 20 66 72 65 65 5f 73 74 61 63 6b   ┆ the stack denoted by free_stack┆
0x0407a0…0407c0             20 2a 29 0a 76 61 72 0a 68 65 6c 70 5f 70 74 72 3a 20 73 74 61 63 6b 5f 70 74 72 3b 0a 62 65 67   ┆ *) var help_ptr: stack_ptr; beg┆
0x0407c0…0407e0             69 6e 0a 66 6f 72 20 63 6f 75 6e 74 3a 3d 20 63 6f 75 6e 74 20 64 6f 77 6e 74 6f 20 31 20 64 6f   ┆in for count:= count downto 1 do┆
0x0407e0…040800             0a 62 65 67 69 6e 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 73 74 61 63 6b 5f 74 6f 70 3b 0a 73 74 61   ┆ begin help_ptr:= stack_top; sta┆
0x040800…040820 (17, 0, 7)  63 6b 5f 74 6f 70 3a 3d 20 73 74 61 63 6b 5f 74 6f 70 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b   ┆ck_top:= stack_top^.former_elem;┆
0x040820…040840             0a 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3a 3d 20 66 72 65 65 5f 73 74   ┆ help_ptr^.former_elem:= free_st┆
0x040840…040860             61 63 6b 3b 0a 66 72 65 65 5f 73 74 61 63 6b 3a 3d 20 68 65 6c 70 5f 70 74 72 3b 0a 65 6e 64 3b   ┆ack; free_stack:= help_ptr; end;┆
0x040860…040880             0a 65 6e 64 3b 20 28 2a 20 70 6f 70 20 74 6f 20 66 72 65 65 20 73 74 61 63 6b 20 2a 29 0a 0a 70   ┆ end; (* pop to free stack *)  p┆
0x040880…0408a0             72 6f 63 65 64 75 72 65 20 6e 65 77 5f 6e 61 6d 65 3b 0a 62 65 67 69 6e 0a 70 75 73 68 5f 6e 61   ┆rocedure new_name; begin push_na┆
0x0408a0…0408c0             6d 65 28 6e 69 78 29 3b 0a 69 64 63 6f 75 6e 74 3a 3d 69 64 63 6f 75 6e 74 2b 31 3b 0a 65 6e 64   ┆me(nix); idcount:=idcount+1; end┆
0x0408c0…0408e0             3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6e 65 77 5f 73 63 61 6c 61 72 3b 0a 62 65 67 69 6e 0a 70   ┆;  procedure new_scalar; begin p┆
0x0408e0…040900             75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 73 63 61 6c 61 72 5f 63 6f 75 6e 74 3a 3d 73 63 61   ┆ush_name(nix); scalar_count:=sca┆
0x040900…040920             6c 61 72 5f 63 6f 75 6e 74 2b 31 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 77 6f 72   ┆lar_count+1; end;  procedure wor┆
0x040920…040940             64 5f 61 6c 6c 69 67 6e 3b 20 66 6f 72 77 61 72 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75   ┆d_allign; forward;  procedure pu┆
0x040940…040960             73 68 5f 6c 65 76 65 6c 28 6d 3a 20 62 6c 6f 63 6b 5f 6d 6f 64 65 29 3b 0a 62 65 67 69 6e 0a 69   ┆sh_level(m: block_mode); begin i┆
0x040960…040980             66 20 74 68 69 73 5f 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c 3d 6e 69 6c 20 74 68 65   ┆f this_level^.next_level=nil the┆
0x040980…0409a0             6e 0a 62 65 67 69 6e 0a 6e 65 77 28 74 68 69 73 5f 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76   ┆n begin new(this_level^.next_lev┆
0x0409a0…0409c0             65 6c 29 3b 0a 77 69 74 68 20 74 68 69 73 5f 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c   ┆el); with this_level^.next_level┆
0x0409c0…0409e0             5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74 5f 6c 65 76 65 6c 3a 3d 20 6e 69 6c 3b 20 28 2a 20   ┆^ do begin next_level:= nil; (* ┆
0x0409e0…040a00             74 6f 70 20 6f 66 20 6c 65 76 65 6c 20 73 74 61 63 6b 20 2a 29 0a 66 6f 72 6d 65 72 5f 6c 65 76   ┆top of level stack *) former_lev┆
0x040a00…040a20 (17, 0, 8)  65 6c 3a 3d 20 74 68 69 73 5f 6c 65 76 65 6c 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 61 6c   ┆el:= this_level; end; end; (* al┆
0x040a20…040a40             6c 6f 63 61 74 65 20 6e 65 77 20 64 69 73 70 6c 61 79 20 6c 65 76 65 6c 20 2a 29 0a 74 68 69 73   ┆locate new display level *) this┆
0x040a40…040a60             5f 6c 65 76 65 6c 3a 3d 20 74 68 69 73 5f 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c 3b   ┆_level:= this_level^.next_level;┆
0x040a60…040a80             0a 77 69 74 68 20 74 68 69 73 5f 6c 65 76 65 6c 5e 20 64 6f 20 62 65 67 69 6e 0a 73 61 76 65 64   ┆ with this_level^ do begin saved┆
0x040a80…040aa0             5f 6d 6f 64 65 3a 3d 6d 6f 64 65 3b 20 20 20 6d 6f 64 65 3a 3d 6d 3b 0a 73 61 76 65 64 5f 6e 69   ┆_mode:=mode;   mode:=m; saved_ni┆
0x040aa0…040ac0             76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b 0a 73 61 76 65 64 5f 70 61 72 74 3a 3d 73 74 61 74   ┆v:=current_niv; saved_part:=stat┆
0x040ac0…040ae0             5f 70 61 72 74 3b 20 20 20 73 74 61 74 5f 70 61 72 74 3a 3d 66 61 6c 73 65 3b 0a 69 66 20 6d 6f   ┆_part;   stat_part:=false; if mo┆
0x040ae0…040b00             64 65 3d 72 65 63 6f 72 64 5f 6d 6f 64 65 20 74 68 65 6e 20 62 65 67 69 6e 0a 73 61 76 65 64 5f   ┆de=record_mode then begin saved_┆
0x040b00…040b20             6f 66 66 73 65 74 3a 3d 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 3b 20 20 20 20 20 20 20 72 65 63   ┆offset:=record_offset;       rec┆
0x040b20…040b40             6f 72 64 5f 6f 66 66 73 65 74 3a 3d 30 3b 0a 73 61 76 65 64 5f 70 61 63 6b 3a 3d 70 61 63 6b 5f   ┆ord_offset:=0; saved_pack:=pack_┆
0x040b40…040b60             72 65 63 6f 72 64 3b 20 20 20 20 20 20 70 61 63 6b 5f 72 65 63 6f 72 64 3a 3d 66 61 6c 73 65 3b   ┆record;      pack_record:=false;┆
0x040b60…040b80             0a 73 61 76 65 64 5f 62 69 74 3a 3d 63 75 72 72 65 6e 74 5f 62 69 74 3b 20 20 20 20 20 20 20 63   ┆ saved_bit:=current_bit;       c┆
0x040b80…040ba0             75 72 72 65 6e 74 5f 62 69 74 3a 3d 30 3b 0a 73 61 76 65 64 5f 63 68 61 69 6e 3a 3d 63 68 61 69   ┆urrent_bit:=0; saved_chain:=chai┆
0x040ba0…040bc0             6e 3b 20 20 20 20 20 20 20 20 20 20 20 63 68 61 69 6e 3a 3d 30 3b 0a 73 61 76 65 64 5f 69 64 63   ┆n;           chain:=0; saved_idc┆
0x040bc0…040be0             6f 75 6e 74 3a 3d 69 64 63 6f 75 6e 74 3b 20 20 20 20 20 20 20 69 64 63 6f 75 6e 74 3a 3d 30 3b   ┆ount:=idcount;       idcount:=0;┆
0x040be0…040c00             0a 73 61 76 65 64 5f 61 6c 6c 69 67 6e 20 3a 3d 20 61 6c 6c 69 67 6e 5f 66 69 65 6c 64 73 3b 20   ┆ saved_allign := allign_fields; ┆
0x040c00…040c20 (17, 0, 9)  20 20 61 6c 6c 69 67 6e 5f 66 69 65 6c 64 73 20 3a 3d 20 66 61 6c 73 65 3b 0a 73 61 76 65 64 5f   ┆  allign_fields := false; saved_┆
0x040c20…040c40             69 6e 69 74 3a 3d 69 6e 69 74 5f 66 69 65 6c 64 73 3b 20 20 20 20 20 20 69 6e 69 74 5f 66 69 65   ┆init:=init_fields;      init_fie┆
0x040c40…040c60             6c 64 73 3a 3d 66 61 6c 73 65 3b 0a 73 61 76 65 64 5f 64 79 6e 3a 3d 64 79 6e 5f 66 69 65 6c 64   ┆lds:=false; saved_dyn:=dyn_field┆
0x040c60…040c80             73 3b 20 20 20 20 20 20 20 20 64 79 6e 5f 66 69 65 6c 64 73 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64   ┆s;        dyn_fields:=false; end┆
0x040c80…040ca0             0a 65 6c 73 65 0a 62 65 67 69 6e 0a 73 61 76 65 64 5f 6f 66 66 73 65 74 3a 3d 63 75 72 72 65 6e   ┆ else begin saved_offset:=curren┆
0x040ca0…040cc0             74 5f 6f 66 66 73 65 74 3b 0a 73 61 76 65 64 5f 70 72 65 66 69 78 20 3a 3d 20 70 72 65 66 69 78   ┆t_offset; saved_prefix := prefix┆
0x040cc0…040ce0             65 64 3b 0a 69 66 20 28 6d 6f 64 65 20 3d 20 70 72 6f 63 65 73 73 5f 6d 6f 64 65 29 20 6f 72 20   ┆ed; if (mode = process_mode) or ┆
0x040ce0…040d00             73 61 76 65 64 5f 70 72 65 66 69 78 20 74 68 65 6e 0a 62 65 67 69 6e 0a 70 72 6f 63 65 73 73 5f   ┆saved_prefix then begin process_┆
0x040d00…040d20             6e 69 76 20 3a 3d 20 70 72 6f 63 65 73 73 5f 6e 69 76 20 2b 20 31 3b 0a 28 2a 20 69 66 20 6f 75   ┆niv := process_niv + 1; (* if ou┆
0x040d20…040d40             74 65 72 6d 6f 73 74 20 70 72 6f 63 65 73 73 20 6f 72 20 70 72 65 66 69 78 20 74 68 65 6e 20 73   ┆termost process or prefix then s┆
0x040d40…040d60             61 76 65 20 74 68 65 20 6e 61 6d 65 6b 65 79 2a 29 0a 69 66 20 70 72 6f 63 65 73 73 5f 6e 69 76   ┆ave the namekey*) if process_niv┆
0x040d60…040d80             20 3d 20 30 20 74 68 65 6e 20 73 61 76 65 64 5f 6e 61 6d 65 5f 6b 65 79 20 3a 3d 20 6e 61 6d 65   ┆ = 0 then saved_name_key := name┆
0x040d80…040da0             5f 6b 65 79 3b 0a 65 6e 64 3b 0a 69 66 20 6d 6f 64 65 3d 70 72 6f 63 65 73 73 5f 6d 6f 64 65 20   ┆_key; end; if mode=process_mode ┆
0x040da0…040dc0             74 68 65 6e 20 62 65 67 69 6e 0a 63 75 72 72 65 6e 74 5f 6e 69 76 3a 3d 30 3b 0a 69 66 20 28 2a   ┆then begin current_niv:=0; if (*┆
0x040dc0…040de0             20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 63 75 72 72   ┆ **z80** *) versionz80 then curr┆
0x040de0…040e00             65 6e 74 5f 6f 66 66 73 65 74 3a 3d 20 2d 70 72 6f 63 65 73 73 5f 6f 66 66 73 65 74 0a 65 6c 73   ┆ent_offset:= -process_offset els┆
0x040e00…040e20 (17, 0, 10) 65 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 63 75   ┆e (* **lambda or rc3502c** *) cu┆
0x040e20…040e40             72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d 70 72 6f 63 65 73 73 5f 6f 66 66 73 65 74 3b 0a 65 6e   ┆rrent_offset:=process_offset; en┆
0x040e40…040e60             64 20 65 6c 73 65 20 62 65 67 69 6e 0a 63 75 72 72 65 6e 74 5f 6e 69 76 3a 3d 63 75 72 72 65 6e   ┆d else begin current_niv:=curren┆
0x040e60…040e80             74 5f 6e 69 76 2b 31 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f   ┆t_niv+1; if (* **z80** *) versio┆
0x040e80…040ea0             6e 7a 38 30 20 74 68 65 6e 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d 20 2d 61 63 74 69   ┆nz80 then current_offset:= -acti┆
0x040ea0…040ec0             76 61 74 69 6f 6e 5f 72 65 63 6f 72 64 5f 6c 65 6e 67 74 68 0a 65 6c 73 65 0a 69 66 20 6c 61 6d   ┆vation_record_length else if lam┆
0x040ec0…040ee0             62 64 61 76 65 72 73 69 6f 6e 20 74 68 65 6e 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d   ┆bdaversion then current_offset:=┆
0x040ee0…040f00             61 63 74 69 76 61 74 69 6f 6e 5f 72 65 63 6f 72 64 5f 6c 65 6e 67 74 68 2d 31 0a 65 6c 73 65 20   ┆activation_record_length-1 else ┆
0x040f00…040f20             28 2a 72 63 33 35 30 32 63 2a 29 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3a 3d 20 61 63   ┆(*rc3502c*) current_offset := ac┆
0x040f20…040f40             74 69 76 61 74 69 6f 6e 5f 72 65 63 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 65 6e 64 3b 0a 73 61 76   ┆tivation_record_length; end; sav┆
0x040f40…040f60             65 64 5f 76 5f 6c 65 6e 67 74 68 3a 3d 76 61 72 5f 6c 65 6e 67 74 68 3b 20 20 20 76 61 72 5f 6c   ┆ed_v_length:=var_length;   var_l┆
0x040f60…040f80             65 6e 67 74 68 3a 3d 30 3b 0a 73 61 76 65 64 5f 63 5f 69 6e 64 65 78 3a 3d 66 69 72 73 74 5f 63   ┆ength:=0; saved_c_index:=first_c┆
0x040f80…040fa0             5f 69 6e 64 65 78 3b 0a 66 69 72 73 74 5f 63 5f 69 6e 64 65 78 3a 3d 74 6f 70 5f 63 5f 69 6e 64   ┆_index; first_c_index:=top_c_ind┆
0x040fa0…040fc0             65 78 3b 0a 73 61 76 65 64 5f 6c 69 78 3a 3d 63 75 72 72 65 6e 74 5f 6c 69 78 3b 0a 65 6e 64 3b   ┆ex; saved_lix:=current_lix; end;┆
0x040fc0…040fe0             0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 6f 70 5f 6c 65 76 65 6c 3b   ┆ end; end;  procedure pop_level;┆
0x040fe0…041000             0a 62 65 67 69 6e 0a 77 69 74 68 20 74 68 69 73 5f 6c 65 76 65 6c 5e 20 64 6f 20 62 65 67 69 6e   ┆ begin with this_level^ do begin┆
0x041000…041020 (17, 0, 11) 0a 69 66 20 6d 6f 64 65 3d 72 65 63 6f 72 64 5f 6d 6f 64 65 20 74 68 65 6e 20 62 65 67 69 6e 0a   ┆ if mode=record_mode then begin ┆
0x041020…041040             70 61 63 6b 5f 72 65 63 6f 72 64 3a 3d 73 61 76 65 64 5f 70 61 63 6b 3b 0a 63 75 72 72 65 6e 74   ┆pack_record:=saved_pack; current┆
0x041040…041060             5f 62 69 74 3a 3d 73 61 76 65 64 5f 62 69 74 3b 0a 63 68 61 69 6e 3a 3d 73 61 76 65 64 5f 63 68   ┆_bit:=saved_bit; chain:=saved_ch┆
0x041060…041080             61 69 6e 3b 0a 69 64 63 6f 75 6e 74 3a 3d 73 61 76 65 64 5f 69 64 63 6f 75 6e 74 3b 0a 61 6c 6c   ┆ain; idcount:=saved_idcount; all┆
0x041080…0410a0             69 67 6e 5f 66 69 65 6c 64 73 20 3a 3d 20 73 61 76 65 64 5f 61 6c 6c 69 67 6e 3b 0a 69 6e 69 74   ┆ign_fields := saved_allign; init┆
0x0410a0…0410c0             5f 66 69 65 6c 64 73 3a 3d 73 61 76 65 64 5f 69 6e 69 74 3b 0a 72 65 63 6f 72 64 5f 6f 66 66 73   ┆_fields:=saved_init; record_offs┆
0x0410c0…0410e0             65 74 3a 3d 73 61 76 65 64 5f 6f 66 66 73 65 74 3b 0a 64 79 6e 5f 66 69 65 6c 64 73 3a 3d 73 61   ┆et:=saved_offset; dyn_fields:=sa┆
0x0410e0…041100             76 65 64 5f 64 79 6e 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 63 75 72 72 65 6e 74 5f   ┆ved_dyn; end else begin current_┆
0x041100…041120             6f 66 66 73 65 74 3a 3d 73 61 76 65 64 5f 6f 66 66 73 65 74 3b 0a 74 6f 70 5f 63 5f 69 6e 64 65   ┆offset:=saved_offset; top_c_inde┆
0x041120…041140             78 3a 3d 66 69 72 73 74 5f 63 5f 69 6e 64 65 78 3b 0a 66 69 72 73 74 5f 63 5f 69 6e 64 65 78 3a   ┆x:=first_c_index; first_c_index:┆
0x041140…041160             3d 73 61 76 65 64 5f 63 5f 69 6e 64 65 78 3b 0a 76 61 72 5f 6c 65 6e 67 74 68 3a 3d 73 61 76 65   ┆=saved_c_index; var_length:=save┆
0x041160…041180             64 5f 76 5f 6c 65 6e 67 74 68 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72   ┆d_v_length; if (* **z80** *) ver┆
0x041180…0411a0             73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 63 75 72 72 65 6e 74 5f 6c 69 78 3a 3d 73 61 76 65 64 5f   ┆sionz80 then current_lix:=saved_┆
0x0411a0…0411c0             6c 69 78 3b 0a 69 66 20 28 6d 6f 64 65 20 3d 20 70 72 6f 63 65 73 73 5f 6d 6f 64 65 29 20 6f 72   ┆lix; if (mode = process_mode) or┆
0x0411c0…0411e0             20 73 61 76 65 64 5f 70 72 65 66 69 78 20 74 68 65 6e 0a 62 65 67 69 6e 0a 70 72 6f 63 65 73 73   ┆ saved_prefix then begin process┆
0x0411e0…041200             5f 6e 69 76 20 3a 3d 20 70 72 6f 63 65 73 73 5f 6e 69 76 20 2d 31 3b 0a 28 2a 69 66 20 6f 75 74   ┆_niv := process_niv -1; (*if out┆
0x041200…041220 (17, 0, 12) 65 72 6d 6f 73 74 20 70 72 6f 63 65 73 73 20 6f 72 20 70 72 65 66 69 78 20 69 73 20 70 6f 70 70   ┆ermost process or prefix is popp┆
0x041220…041240             65 64 20 74 68 65 6e 20 72 65 73 74 6f 72 65 20 6e 61 6d 65 6b 65 79 2a 29 0a 69 66 20 70 72 6f   ┆ed then restore namekey*) if pro┆
0x041240…041260             63 65 73 73 5f 6e 69 76 3d 2d 31 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 5f 6b   ┆cess_niv=-1 then begin if name_k┆
0x041260…041280             65 79 3e 6d 61 78 5f 6e 61 6d 65 5f 6b 65 79 20 74 68 65 6e 0a 6d 61 78 5f 6e 61 6d 65 5f 6b 65   ┆ey>max_name_key then max_name_ke┆
0x041280…0412a0             79 3a 3d 20 6e 61 6d 65 5f 6b 65 79 3b 0a 6e 61 6d 65 5f 6b 65 79 3a 3d 20 73 61 76 65 64 5f 6e   ┆y:= name_key; name_key:= saved_n┆
0x0412a0…0412c0             61 6d 65 5f 6b 65 79 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 6d 6f 64 65 3a 3d 73 61   ┆ame_key; end; end; end; mode:=sa┆
0x0412c0…0412e0             76 65 64 5f 6d 6f 64 65 3b 0a 63 75 72 72 65 6e 74 5f 6e 69 76 3a 3d 73 61 76 65 64 5f 6e 69 76   ┆ved_mode; current_niv:=saved_niv┆
0x0412e0…041300             3b 0a 73 74 61 74 5f 70 61 72 74 3a 3d 73 61 76 65 64 5f 70 61 72 74 3b 0a 65 6e 64 3b 0a 74 68   ┆; stat_part:=saved_part; end; th┆
0x041300…041320             69 73 5f 6c 65 76 65 6c 3a 3d 74 68 69 73 5f 6c 65 76 65 6c 5e 2e 66 6f 72 6d 65 72 5f 6c 65 76   ┆is_level:=this_level^.former_lev┆
0x041320…041340             65 6c 3b 0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 69 6e 74 5f 61 64 64 28 61 2c 62 3a 20   ┆el; end;  function int_add(a,b: ┆
0x041340…041360             69 6e 74 65 67 65 72 29 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 28 2a 24 52 2d 2a 29   ┆integer): integer; begin (*$R-*)┆
0x041360…041380             0a 69 6e 74 5f 61 64 64 3a 3d 61 2b 62 3b 0a 28 2a 24 52 2b 2a 29 0a 65 6e 64 3b 0a 0a 66 75 6e   ┆ int_add:=a+b; (*$R+*) end;  fun┆
0x041380…0413a0             63 74 69 6f 6e 20 69 6e 74 5f 6d 75 6c 28 61 2c 62 3a 20 69 6e 74 65 67 65 72 29 3a 20 69 6e 74   ┆ction int_mul(a,b: integer): int┆
0x0413a0…0413c0             65 67 65 72 3b 0a 62 65 67 69 6e 0a 28 2a 24 52 2d 2a 29 0a 69 6e 74 5f 6d 75 6c 20 3a 3d 20 61   ┆eger; begin (*$R-*) int_mul := a┆
0x0413c0…0413e0             2a 62 3b 0a 28 2a 24 52 2b 2a 29 0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 69 6e 74 5f 64   ┆*b; (*$R+*) end;  function int_d┆
0x0413e0…041400             69 76 28 61 2c 62 3a 20 69 6e 74 65 67 65 72 29 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e   ┆iv(a,b: integer): integer; begin┆
0x041400…041420 (17, 0, 13) 0a 69 66 20 62 20 3d 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 20 20 69 6e 74 5f 64 69 76 20 3a   ┆ if b = 0 then begin   int_div :┆
0x041420…041440             3d 20 61 3b 0a 20 20 65 72 72 6f 72 28 74 79 70 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 20 65 6c   ┆= a;   error(type_error); end el┆
0x041440…041460             73 65 0a 20 20 69 6e 74 5f 64 69 76 20 3a 3d 20 61 20 64 69 76 20 62 3b 0a 65 6e 64 3b 0a 0a 66   ┆se   int_div := a div b; end;  f┆
0x041460…041480             75 6e 63 74 69 6f 6e 20 69 6e 74 5f 6d 6f 64 28 61 2c 62 3a 20 69 6e 74 65 67 65 72 29 3a 20 69   ┆unction int_mod(a,b: integer): i┆
0x041480…0414a0             6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66 20 62 20 3d 20 30 20 74 68 65 6e 0a 62 65 67 69   ┆nteger; begin if b = 0 then begi┆
0x0414a0…0414c0             6e 0a 20 20 69 6e 74 5f 6d 6f 64 20 3a 3d 20 61 3b 0a 20 20 65 72 72 6f 72 28 74 79 70 65 5f 65   ┆n   int_mod := a;   error(type_e┆
0x0414c0…0414e0             72 72 6f 72 29 3b 0a 65 6e 64 20 65 6c 73 65 0a 20 20 69 6e 74 5f 6d 6f 64 20 3a 3d 20 61 20 6d   ┆rror); end else   int_mod := a m┆
0x0414e0…041500             6f 64 20 62 3b 0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 69 6e 74 5f 6c 6f 67 69 63 61 6c   ┆od b; end;  function int_logical┆
0x041500…041520             28 20 6b 69 6e 64 20 3a 20 6f 75 74 5f 63 6f 64 65 3b 20 61 2c 62 20 3a 20 69 6e 74 65 67 65 72   ┆( kind : out_code; a,b : integer┆
0x041520…041540             29 20 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 63 61 73 65 20 6b 69 6e 64 20 6f 66 0a   ┆) : integer; begin case kind of ┆
0x041540…041560             7a 61 6e 64 3a 20 69 6e 74 5f 6c 6f 67 69 63 61 6c 20 3a 3d 20 61 20 61 6e 64 20 62 3b 0a 7a 6f   ┆zand: int_logical := a and b; zo┆
0x041560…041580             72 5f 3a 20 69 6e 74 5f 6c 6f 67 69 63 61 6c 20 3a 3d 20 61 20 6f 72 20 62 3b 0a 7a 78 6f 72 3a   ┆r_: int_logical := a or b; zxor:┆
0x041580…0415a0             20 69 6e 74 5f 6c 6f 67 69 63 61 6c 20 3a 3d 20 61 20 78 6f 72 20 62 3b 0a 65 6e 64 3b 0a 65 6e   ┆ int_logical := a xor b; end; en┆
0x0415a0…0415c0             64 3b 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 69 6e 74 5f 73 68 69 66 74 28 61 2c 20 62 3a 20 69 6e   ┆d;   function int_shift(a, b: in┆
0x0415c0…0415e0             74 65 67 65 72 29 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66 20 62 20 3e 3d 20 30   ┆teger): integer; begin if b >= 0┆
0x0415e0…041600             20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 6e 74 5f 73 68 69 66 74 3a 3d 20 61 20 73 68 6c 20 62 3b   ┆ then begin int_shift:= a shl b;┆
0x041600…041620 (17, 0, 14) 0a 65 6e 64 20 65 6c 73 65 20 69 6e 74 5f 73 68 69 66 74 20 3a 3d 20 61 20 73 68 72 20 28 2d 62   ┆ end else int_shift := a shr (-b┆
0x041620…041640             29 3b 0a 65 6e 64 3b 20 28 2a 20 69 6e 74 20 73 68 69 66 74 20 2a 29 0a 0a 0a 66 75 6e 63 74 69   ┆); end; (* int shift *)   functi┆
0x041640…041660             6f 6e 20 61 6c 6c 6f 63 5f 76 61 72 28 73 69 7a 65 3a 20 69 6e 74 65 67 65 72 29 3a 20 69 6e 74   ┆on alloc_var(size: integer): int┆
0x041660…041680             65 67 65 72 3b 0a 62 65 67 69 6e 0a 28 2a 24 52 2d 2a 29 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a   ┆eger; begin (*$R-*) if (* **z80*┆
0x041680…0416a0             2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 28 2a 20 63 75   ┆* *) versionz80 then begin (* cu┆
0x0416a0…0416c0             72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3c 3d 20 30 20 2a 29 0a 69 66 20 74 6f 70 5f 61 64 64 72   ┆rrent_offset <= 0 *) if top_addr┆
0x0416c0…0416e0             65 73 73 20 2b 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3e 3d 20 73 69 7a 65 20 74 68 65   ┆ess + current_offset >= size the┆
0x0416e0…041700             6e 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73   ┆n current_offset := current_offs┆
0x041700…041720             65 74 20 2d 20 73 69 7a 65 0a 65 6c 73 65 20 65 72 72 6f 72 28 61 64 64 72 65 73 73 5f 6f 76 65   ┆et - size else error(address_ove┆
0x041720…041740             72 66 6c 6f 77 29 3b 0a 61 6c 6c 6f 63 5f 76 61 72 3a 3d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65   ┆rflow); alloc_var:=current_offse┆
0x041740…041760             74 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72   ┆t; end else begin (* **lambda or┆
0x041760…041780             20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 61 6c 6c 6f 63 5f 76 61 72 3a 3d 63 75 72 72 65 6e 74   ┆ rc3502c** *) alloc_var:=current┆
0x041780…0417a0             5f 6f 66 66 73 65 74 3b 0a 28 2a 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3e 3d 20 2d 31   ┆_offset; (* current_offset >= -1┆
0x0417a0…0417c0             20 2a 29 0a 69 66 20 74 6f 70 5f 61 64 64 72 65 73 73 20 2d 20 63 75 72 72 65 6e 74 5f 6f 66 66   ┆ *) if top_address - current_off┆
0x0417c0…0417e0             73 65 74 20 3e 3d 20 73 69 7a 65 20 74 68 65 6e 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20   ┆set >= size then current_offset ┆
0x0417e0…041800             3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 2b 20 73 69 7a 65 0a 65 6c 73 65 20 65 72   ┆:= current_offset + size else er┆
0x041800…041820 (17, 0, 15) 72 6f 72 28 61 64 64 72 65 73 73 5f 6f 76 65 72 66 6c 6f 77 29 3b 0a 65 6e 64 3b 0a 28 2a 24 52   ┆ror(address_overflow); end; (*$R┆
0x041820…041840             2b 2a 29 0a 65 6e 64 3b 20 28 2a 61 6c 6c 6f 63 20 76 61 72 2a 29 0a 0a 66 75 6e 63 74 69 6f 6e   ┆+*) end; (*alloc var*)  function┆
0x041840…041860             20 61 64 64 72 65 73 73 5f 61 64 64 28 61 2c 62 3a 20 69 6e 74 65 67 65 72 29 3a 20 69 6e 74 65   ┆ address_add(a,b: integer): inte┆
0x041860…041880             67 65 72 3b 0a 62 65 67 69 6e 0a 28 2a 24 52 2d 2a 29 0a 69 66 20 74 6f 70 5f 61 64 64 72 65 73   ┆ger; begin (*$R-*) if top_addres┆
0x041880…0418a0             73 20 2d 20 61 20 3e 3d 20 62 20 74 68 65 6e 20 61 64 64 72 65 73 73 5f 61 64 64 3a 3d 61 2b 62   ┆s - a >= b then address_add:=a+b┆
0x0418a0…0418c0             0a 65 6c 73 65 0a 62 65 67 69 6e 0a 65 72 72 6f 72 28 61 64 64 72 65 73 73 5f 6f 76 65 72 66 6c   ┆ else begin error(address_overfl┆
0x0418c0…0418e0             6f 77 29 3b 0a 61 64 64 72 65 73 73 5f 61 64 64 3a 3d 61 3b 0a 65 6e 64 3b 0a 28 2a 24 52 2b 2a   ┆ow); address_add:=a; end; (*$R+*┆
0x0418e0…041900             29 0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 66 69 65 6c 64 5f 61 64 64 28 61 2c 62 3a 20   ┆) end;  function field_add(a,b: ┆
0x041900…041920             69 6e 74 65 67 65 72 29 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 28 2a 24 52 2d 2a 29   ┆integer): integer; begin (*$R-*)┆
0x041920…041940             0a 69 66 20 6d 6f 64 75 6c 65 5f 73 69 7a 65 20 2d 20 61 20 3e 3d 20 62 20 74 68 65 6e 20 66 69   ┆ if module_size - a >= b then fi┆
0x041940…041960             65 6c 64 5f 61 64 64 3a 3d 61 2b 62 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 65 72 72 6f 72 28 72 65   ┆eld_add:=a+b else begin error(re┆
0x041960…041980             63 6f 72 64 5f 73 69 7a 65 5f 65 72 72 6f 72 29 3b 0a 66 69 65 6c 64 5f 61 64 64 3a 3d 61 3b 0a   ┆cord_size_error); field_add:=a; ┆
0x041980…0419a0             65 6e 64 3b 0a 28 2a 24 52 2b 2a 29 0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 74 61 6b 65   ┆end; (*$R+*) end;  function take┆
0x0419a0…0419c0             5f 65 78 70 72 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 74 5e 20 64   ┆_expr: integer; begin with ot^ d┆
0x0419c0…0419e0             6f 20 62 65 67 69 6e 0a 69 66 20 63 6f 6e 74 65 78 74 3c 3e 73 63 6f 6e 73 74 20 74 68 65 6e 20   ┆o begin if context<>sconst then ┆
0x0419e0…041a00             62 65 67 69 6e 0a 65 72 72 6f 72 28 76 61 72 5f 65 72 72 6f 72 29 3b 20 20 20 74 61 6b 65 5f 65   ┆begin error(var_error);   take_e┆
0x041a00…041a20 (17, 1, 1)  78 70 72 3a 3d 30 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 74 61 6b 65 5f 65 78 70 72   ┆xpr:=0; end else begin take_expr┆
0x041a20…041a40             3a 3d 6f 66 66 73 65 74 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 70 6f 70 3b 0a 65 6e 64 3b 0a 0a 66   ┆:=offset; end; end; pop; end;  f┆
0x041a40…041a60             75 6e 63 74 69 6f 6e 20 62 69 74 73 28 76 3a 20 69 6e 74 65 67 65 72 29 3a 20 69 6e 74 65 67 65   ┆unction bits(v: integer): intege┆
0x041a60…041a80             72 3b 0a 76 61 72 20 6e 6f 2c 70 6f 77 65 72 3a 20 77 6f 72 64 3b 0a 62 65 67 69 6e 0a 69 66 20   ┆r; var no,power: word; begin if ┆
0x041a80…041aa0             76 3c 30 20 74 68 65 6e 20 6e 6f 3a 3d 62 69 74 73 5f 70 72 5f 77 6f 72 64 20 65 6c 73 65 0a 69   ┆v<0 then no:=bits_pr_word else i┆
0x041aa0…041ac0             66 20 76 3c 32 20 74 68 65 6e 20 6e 6f 3a 3d 31 20 65 6c 73 65 0a 62 65 67 69 6e 0a 70 6f 77 65   ┆f v<2 then no:=1 else begin powe┆
0x041ac0…041ae0             72 3a 3d 34 3b 20 20 6e 6f 3a 3d 32 3b 0a 77 68 69 6c 65 20 76 3e 70 6f 77 65 72 2d 31 20 64 6f   ┆r:=4;  no:=2; while v>power-1 do┆
0x041ae0…041b00             20 62 65 67 69 6e 0a 70 6f 77 65 72 3a 3d 70 6f 77 65 72 20 73 68 6c 20 31 3b 0a 6e 6f 3a 3d 6e   ┆ begin power:=power shl 1; no:=n┆
0x041b00…041b20             6f 2b 31 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 69 66 20 6e 6f 3e 62 69 74 73 5f 70 72 5f 77 6f 72   ┆o+1; end; end; if no>bits_pr_wor┆
0x041b20…041b40             64 20 74 68 65 6e 20 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 28 62 69 74 5f 63 6f 75 6e 74 5f   ┆d then compiler_error(bit_count_┆
0x041b40…041b60             65 72 72 6f 72 29 3b 0a 62 69 74 73 3a 3d 6e 6f 3b 0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f 6e   ┆error); bits:=no; end;  function┆
0x041b60…041b80             20 76 61 72 5f 73 69 7a 65 28 6d 69 6e 2c 6d 61 78 3a 20 69 6e 74 65 67 65 72 29 3a 20 69 6e 74   ┆ var_size(min,max: integer): int┆
0x041b80…041ba0             65 67 65 72 3b 0a 62 65 67 69 6e 0a 28 2a 24 52 2d 2a 29 0a 69 66 20 6d 69 6e 3e 6d 61 78 20 74   ┆eger; begin (*$R-*) if min>max t┆
0x041ba0…041bc0             68 65 6e 20 28 2a 20 65 6d 70 74 79 20 73 75 62 72 61 6e 67 65 20 2a 29 0a 76 61 72 5f 73 69 7a   ┆hen (* empty subrange *) var_siz┆
0x041bc0…041be0             65 3a 3d 20 30 0a 65 6c 73 65 0a 69 66 20 28 6d 69 6e 3c 30 29 20 6f 72 20 28 62 69 74 73 28 6d   ┆e:= 0 else if (min<0) or (bits(m┆
0x041be0…041c00             61 78 29 20 3e 20 62 69 74 73 5f 70 72 5f 62 79 74 65 29 20 74 68 65 6e 0a 76 61 72 5f 73 69 7a   ┆ax) > bits_pr_byte) then var_siz┆
0x041c00…041c20 (17, 1, 2)  65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 20 65 6c 73 65 0a 76 61 72 5f 73 69 7a 65 3a 3d 62 79   ┆e:=word_length else var_size:=by┆
0x041c20…041c40             74 65 5f 6c 65 6e 67 74 68 3b 0a 28 2a 24 52 2b 2a 29 0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f   ┆te_length; (*$R+*) end;  functio┆
0x041c40…041c60             6e 20 63 68 65 63 6b 5f 74 79 70 65 28 74 79 3a 20 69 6e 74 65 67 65 72 3b 20 61 2c 62 3a 20 69   ┆n check_type(ty: integer; a,b: i┆
0x041c60…041c80             6e 74 65 67 65 72 29 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 76 61 72 20 62 6f 3a 20 62 6f 6f 6c 65 61   ┆nteger): boolean; var bo: boolea┆
0x041c80…041ca0             6e 3b 0a 62 65 67 69 6e 0a 62 6f 3a 3d 61 3c 3d 62 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c   ┆n; begin bo:=a<=b; with nametabl┆
0x041ca0…041cc0             65 28 74 79 29 5e 20 64 6f 0a 69 66 20 28 61 3c 6d 69 6e 29 20 6f 72 20 28 62 3e 6d 61 78 29 20   ┆e(ty)^ do if (a<min) or (b>max) ┆
0x041cc0…041ce0             74 68 65 6e 20 62 6f 3a 3d 66 61 6c 73 65 3b 0a 63 68 65 63 6b 5f 74 79 70 65 3a 3d 62 6f 3b 0a   ┆then bo:=false; check_type:=bo; ┆
0x041ce0…041d00             65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 77 6f 72 64 5f 61 6c 6c 69 67 6e 3b 0a 62 65 67   ┆end;  procedure word_allign; beg┆
0x041d00…041d20             69 6e 0a 69 66 20 28 6e 6f 74 20 6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 29 20 61 6e 64 20 28 6e   ┆in if (not lambdaversion) and (n┆
0x041d20…041d40             6f 74 20 76 65 72 73 69 6f 6e 7a 38 30 29 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 2a 2a 72   ┆ot versionz80) then begin (* **r┆
0x041d40…041d60             63 33 35 30 32 63 2a 2a 20 2a 29 0a 69 66 20 6f 64 64 28 63 75 72 72 65 6e 74 5f 6f 66 66 73 65   ┆c3502c** *) if odd(current_offse┆
0x041d60…041d80             74 29 20 74 68 65 6e 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3a 3d 20 61 64 64 72 65 73   ┆t) then current_offset := addres┆
0x041d80…041da0             73 5f 61 64 64 28 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 2c 31 29 3b 0a 65 6e 64 0a 65 6c 73   ┆s_add(current_offset,1); end els┆
0x041da0…041dc0             65 0a 62 65 67 69 6e 0a 69 66 20 6e 6f 74 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 28   ┆e begin if not versionz80 then (┆
0x041dc0…041de0             2a 20 2a 2a 6c 61 6d 62 64 61 2a 2a 20 2a 29 0a 69 66 20 6e 6f 74 20 6f 64 64 28 63 75 72 72 65   ┆* **lambda** *) if not odd(curre┆
0x041de0…041e00             6e 74 5f 6f 66 66 73 65 74 29 20 74 68 65 6e 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d   ┆nt_offset) then current_offset:=┆
0x041e00…041e20 (17, 1, 3)  61 64 64 72 65 73 73 5f 61 64 64 28 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 2c 31 29 3b 0a 65   ┆address_add(current_offset,1); e┆
0x041e20…041e40             6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 65 6c 64 5f 61 6c 6c 69 67 6e   ┆nd; end;  procedure field_allign┆
0x041e40…041e60             3b 0a 62 65 67 69 6e 0a 69 66 20 6e 6f 74 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 28   ┆; begin if not versionz80 then (┆
0x041e60…041e80             2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 69 66 20 6f 64   ┆* **lambda or rc3502c** *) if od┆
0x041e80…041ea0             64 28 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 29 20 74 68 65 6e 0a 72 65 63 6f 72 64 5f 6f 66 66   ┆d(record_offset) then record_off┆
0x041ea0…041ec0             73 65 74 3a 3d 66 69 65 6c 64 5f 61 64 64 28 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 2c 31 29 3b   ┆set:=field_add(record_offset,1);┆
0x041ec0…041ee0             0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 74 79 70 65 5f 6f 28 63 3a 20 63 6f 6e 74 65 78   ┆ end;  function type_o(c: contex┆
0x041ee0…041f00             74 5f 6b 69 6e 64 29 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 63 61 73 65 20 63 20 6f   ┆t_kind): integer; begin case c o┆
0x041f00…041f20             66 0a 70 6f 69 6e 74 65 72 5f 74 79 70 65 3a 20 20 20 74 79 70 65 5f 6f 3a 3d 70 6f 69 6e 74 65   ┆f pointer_type:   type_o:=pointe┆
0x041f20…041f40             72 5f 74 79 70 3b 0a 73 65 6d 5f 74 79 70 65 3a 20 20 20 20 20 20 20 74 79 70 65 5f 6f 3a 3d 73   ┆r_typ; sem_type:       type_o:=s┆
0x041f40…041f60             65 6d 5f 74 79 70 3b 0a 72 65 66 5f 74 79 70 65 3a 20 20 20 20 20 20 20 74 79 70 65 5f 6f 3a 3d   ┆em_typ; ref_type:       type_o:=┆
0x041f60…041f80             72 65 66 5f 74 79 70 3b 0a 73 68 61 64 6f 77 5f 74 79 70 65 3a 20 20 20 20 74 79 70 65 5f 6f 3a   ┆ref_typ; shadow_type:    type_o:┆
0x041f80…041fa0             3d 73 68 61 64 6f 77 5f 74 79 70 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72   ┆=shadow_typ; end; end;  procedur┆
0x041fa0…041fc0             65 20 61 6c 6c 6f 63 5f 63 6f 6e 73 74 61 6e 74 28 76 61 72 20 6c 69 78 3a 20 6c 6f 63 61 74 69   ┆e alloc_constant(var lix: locati┆
0x041fc0…041fe0             6f 6e 5f 69 6e 64 65 78 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆on_index;                       ┆
0x041fe0…042000             20 20 20 76 61 72 20 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 3b 20 62 79 74 65 73 3a 20 69 6e   ┆   var index: integer; bytes: in┆
0x042000…042020 (17, 1, 4)  74 65 67 65 72 29 3b 0a 76 61 72 20 77 6f 72 64 73 3a 20 69 6e 74 65 67 65 72 3b 20 69 3a 20 69   ┆teger); var words: integer; i: i┆
0x042020…042040             6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 77 6f 72 64 73 3a 3d 62 79 74 65 73 20 73 68 72 20 31   ┆nteger; begin words:=bytes shr 1┆
0x042040…042060             3b 0a 28 2a 24 52 2d 2a 29 0a 69 66 20 6f 64 64 28 62 79 74 65 73 29 20 74 68 65 6e 20 77 6f 72   ┆; (*$R-*) if odd(bytes) then wor┆
0x042060…042080             64 73 20 3a 3d 20 77 6f 72 64 73 20 2b 20 31 3b 0a 69 6e 64 65 78 3a 3d 74 6f 70 5f 63 5f 69 6e   ┆ds := words + 1; index:=top_c_in┆
0x042080…0420a0             64 65 78 20 2b 20 33 3b 0a 69 66 20 69 6e 64 65 78 20 3c 20 30 20 74 68 65 6e 20 61 62 6f 72 74   ┆dex + 3; if index < 0 then abort┆
0x0420a0…0420c0             28 63 6f 6e 73 74 5f 61 72 65 61 5f 6f 76 65 72 66 6c 6f 77 29 3b 0a 74 6f 70 5f 63 5f 69 6e 64   ┆(const_area_overflow); top_c_ind┆
0x0420c0…0420e0             65 78 3a 3d 69 6e 64 65 78 2b 77 6f 72 64 73 3b 0a 69 66 20 74 6f 70 5f 63 5f 69 6e 64 65 78 20   ┆ex:=index+words; if top_c_index ┆
0x0420e0…042100             3c 20 30 20 74 68 65 6e 20 61 62 6f 72 74 28 63 6f 6e 73 74 5f 61 72 65 61 5f 6f 76 65 72 66 6c   ┆< 0 then abort(const_area_overfl┆
0x042100…042120             6f 77 29 3b 0a 28 2a 24 52 2b 2a 29 0a 69 66 20 74 6f 70 5f 63 20 3c 20 74 6f 70 5f 63 5f 69 6e   ┆ow); (*$R+*) if top_c < top_c_in┆
0x042120…042140             64 65 78 20 74 68 65 6e 20 74 6f 70 5f 63 3a 3d 74 6f 70 5f 63 5f 69 6e 64 65 78 3b 0a 6c 69 78   ┆dex then top_c:=top_c_index; lix┆
0x042140…042160             3a 3d 2d 63 75 72 72 65 6e 74 5f 6c 69 78 3b 0a 63 75 72 72 65 6e 74 5f 6c 69 78 3a 3d 63 75 72   ┆:=-current_lix; current_lix:=cur┆
0x042160…042180             72 65 6e 74 5f 6c 69 78 2b 31 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 2d 33   ┆rent_lix+1; update_const(index-3┆
0x042180…0421a0             2c 20 77 6f 72 64 73 20 2b 20 33 29 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78   ┆, words + 3); update_const(index┆
0x0421a0…0421c0             2d 32 2c 20 6c 69 78 29 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 2d 31 2c 20   ┆-2, lix); update_const(index-1, ┆
0x0421c0…0421e0             77 6f 72 64 73 2b 33 29 3b 0a 66 6f 72 20 69 3a 3d 69 6e 64 65 78 20 74 6f 20 74 6f 70 5f 63 5f   ┆words+3); for i:=index to top_c_┆
0x0421e0…042200             69 6e 64 65 78 2d 31 20 64 6f 20 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 2c 20 30 29 3b 0a 65   ┆index-1 do update_const(i, 0); e┆
0x042200…042220 (17, 1, 5)  6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 75 74 5f 63 6f 6e 73 74 61 6e 74 28 63 5f 69 6e   ┆nd;  procedure cut_constant(c_in┆
0x042220…042240             64 65 78 3a 20 69 6e 74 65 67 65 72 3b 20 6e 65 77 5f 77 6f 72 64 73 3a 20 69 6e 74 65 67 65 72   ┆dex: integer; new_words: integer┆
0x042240…042260             29 3b 0a 76 61 72 20 66 69 72 73 74 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 66 69 72   ┆); var first: integer; begin fir┆
0x042260…042280             73 74 3a 3d 63 5f 69 6e 64 65 78 20 2d 20 33 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 66 69   ┆st:=c_index - 3; update_const(fi┆
0x042280…0422a0             72 73 74 2c 20 6e 65 77 5f 77 6f 72 64 73 2b 33 29 3b 0a 74 6f 70 5f 63 5f 69 6e 64 65 78 3a 3d   ┆rst, new_words+3); top_c_index:=┆
0x0422a0…0422c0             66 69 72 73 74 2b 6e 65 77 5f 77 6f 72 64 73 2b 33 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28   ┆first+new_words+3; update_const(┆
0x0422c0…0422e0             66 69 72 73 74 2b 32 2c 20 72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 66 69 72 73 74 29 29 3b   ┆first+2, retrieve_const(first));┆
0x0422e0…042300             0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 61 64 6a 75 73 74 5f 73 74 72 69 6e 67 28 70   ┆ end;  procedure adjust_string(p┆
0x042300…042320             2c 71 3a 20 6f 70 65 72 61 6e 64 5f 70 74 72 29 3b 0a 76 61 72 20 77 6f 72 64 73 3a 69 6e 74 65   ┆,q: operand_ptr); var words:inte┆
0x042320…042340             67 65 72 3b 20 69 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66 20 71 5e 2e 64 79 6e   ┆ger; i: integer; begin if q^.dyn┆
0x042340…042360             61 6d 69 63 20 74 68 65 6e 20 65 72 72 6f 72 28 65 72 72 6f 72 5f 64 79 6e 5f 76 61 72 29 0a 65   ┆amic then error(error_dyn_var) e┆
0x042360…042380             6c 73 65 0a 62 65 67 69 6e 0a 70 5e 2e 73 69 7a 65 3a 3d 71 5e 2e 73 69 7a 65 3b 0a 77 6f 72 64   ┆lse begin p^.size:=q^.size; word┆
0x042380…0423a0             73 3a 3d 28 71 5e 2e 73 69 7a 65 20 2b 20 31 29 20 64 69 76 20 32 2b 33 3b 0a 69 3a 3d 70 5e 2e   ┆s:=(q^.size + 1) div 2+3; i:=p^.┆
0x0423a0…0423c0             6f 66 66 73 65 74 3b 0a 69 66 20 77 6f 72 64 73 20 3e 20 72 65 74 72 69 65 76 65 5f 63 6f 6e 73   ┆offset; if words > retrieve_cons┆
0x0423c0…0423e0             74 28 69 2d 31 29 20 74 68 65 6e 20 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 2d 31 2c 20 77 6f   ┆t(i-1) then update_const(i-1, wo┆
0x0423e0…042400             72 64 73 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 6d 6f 76   ┆rds); end; end;  procedure remov┆
0x042400…042420 (17, 1, 6)  65 5f 63 6f 6e 73 74 61 6e 74 28 63 5f 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61   ┆e_constant(c_index: integer); va┆
0x042420…042440             72 20 66 69 72 73 74 2c 20 71 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 66 69 72 73 74   ┆r first, q: integer; begin first┆
0x042440…042460             3a 3d 63 5f 69 6e 64 65 78 2d 33 3b 20 20 71 3a 3d 66 69 72 73 74 3b 0a 69 66 20 71 2b 72 65 74   ┆:=c_index-3;  q:=first; if q+ret┆
0x042460…042480             72 69 65 76 65 5f 63 6f 6e 73 74 28 66 69 72 73 74 29 20 3d 20 74 6f 70 5f 63 5f 69 6e 64 65 78   ┆rieve_const(first) = top_c_index┆
0x042480…0424a0             20 74 68 65 6e 0a 74 6f 70 5f 63 5f 69 6e 64 65 78 3a 3d 66 69 72 73 74 3b 0a 65 6e 64 3b 0a 0a   ┆ then top_c_index:=first; end;  ┆
0x0424a0…0424c0             70 72 6f 63 65 64 75 72 65 20 72 65 6c 65 61 73 65 5f 74 65 6d 70 28 73 3a 20 69 6e 74 65 67 65   ┆procedure release_temp(s: intege┆
0x0424c0…0424e0             72 29 3b 0a 62 65 67 69 6e 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69   ┆r); begin if (* **z80** *) versi┆
0x0424e0…042500             6f 6e 7a 38 30 20 74 68 65 6e 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d 63 75 72 72 65   ┆onz80 then current_offset:=curre┆
0x042500…042520             6e 74 5f 6f 66 66 73 65 74 20 2b 20 73 0a 65 6c 73 65 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f   ┆nt_offset + s else (* **lambda o┆
0x042520…042540             72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3a 3d 63   ┆r rc3502c** *) current_offset:=c┆
0x042540…042560             75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 2d 20 73 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75   ┆urrent_offset - s; end;  procedu┆
0x042560…042580             72 65 20 63 6f 6e 73 74 61 6e 74 5f 75 73 65 64 28 71 3a 20 6f 70 65 72 61 6e 64 5f 70 74 72 29   ┆re constant_used(q: operand_ptr)┆
0x042580…0425a0             3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 71 5e 20 64 6f 20 62 65 67 69 6e 0a 6e 69 76 3a 3d 20 61   ┆; begin with q^ do begin niv:= a┆
0x0425a0…0425c0             62 73 28 6e 69 76 29 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 6f 66 66 73 65 74 2d 32 2c 20   ┆bs(niv); update_const(offset-2, ┆
0x0425c0…0425e0             6e 69 76 29 3b 0a 69 66 20 76 61 72 5f 6e 69 78 20 3e 3d 20 30 20 74 68 65 6e 0a 6e 61 6d 65 74   ┆niv); if var_nix >= 0 then namet┆
0x0425e0…042600             61 62 6c 65 28 76 61 72 5f 6e 69 78 29 5e 2e 6e 69 76 3a 3d 6e 69 76 3b 0a 65 6e 64 3b 0a 65 6e   ┆able(var_nix)^.niv:=niv; end; en┆
0x042600…042620 (17, 1, 7)  64 3b 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 63 5f 74 65 6d 70 28 73 69 7a 65 3a 20   ┆d;    function alloc_temp(size: ┆
0x042620…042640             69 6e 74 65 67 65 72 29 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 61 6c 6c 6f 63 5f 74   ┆integer): integer; begin alloc_t┆
0x042640…042660             65 6d 70 3a 3d 61 6c 6c 6f 63 5f 76 61 72 28 73 69 7a 65 29 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38   ┆emp:=alloc_var(size); if (* **z8┆
0x042660…042680             30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20   ┆0** *) versionz80 then begin if ┆
0x042680…0426a0             2d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3e 20 76 61 72 5f 6c 65 6e 67 74 68 20 74 68 65   ┆-current_offset > var_length the┆
0x0426a0…0426c0             6e 0a 76 61 72 5f 6c 65 6e 67 74 68 3a 3d 20 2d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3b 0a   ┆n var_length:= -current_offset; ┆
0x0426c0…0426e0             65 6e 64 0a 65 6c 73 65 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a   ┆end else (* **lambda or rc3502c*┆
0x0426e0…042700             2a 20 2a 29 0a 69 66 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3e 76 61 72 5f 6c 65 6e 67 74   ┆* *) if current_offset>var_lengt┆
0x042700…042720             68 20 74 68 65 6e 0a 76 61 72 5f 6c 65 6e 67 74 68 3a 3d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65   ┆h then var_length:=current_offse┆
0x042720…042740             74 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 61 6c 6c 6f 63 5f 64 6f 70 65 28 6c 69   ┆t; end;  procedure alloc_dope(li┆
0x042740…042760             78 2c 20 6c 6f 77 65 72 2c 20 75 70 70 65 72 2c 20 65 6c 65 6d 3a 20 69 6e 74 65 67 65 72 29 3b   ┆x, lower, upper, elem: integer);┆
0x042760…042780             0a 76 61 72 20 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 6e 64 65 78   ┆ var index: integer; begin index┆
0x042780…0427a0             3a 3d 74 6f 70 5f 63 5f 69 6e 64 65 78 3b 0a 28 2a 24 52 2d 2a 29 0a 74 6f 70 5f 63 5f 69 6e 64   ┆:=top_c_index; (*$R-*) top_c_ind┆
0x0427a0…0427c0             65 78 3a 3d 74 6f 70 5f 63 5f 69 6e 64 65 78 20 2b 20 36 3b 0a 69 66 20 74 6f 70 5f 63 5f 69 6e   ┆ex:=top_c_index + 6; if top_c_in┆
0x0427c0…0427e0             64 65 78 20 3c 20 30 20 74 68 65 6e 20 61 62 6f 72 74 28 63 6f 6e 73 74 5f 61 72 65 61 5f 6f 76   ┆dex < 0 then abort(const_area_ov┆
0x0427e0…042800             65 72 66 6c 6f 77 29 3b 0a 28 2a 24 52 2b 2a 29 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 6e   ┆erflow); (*$R+*) update_const(in┆
0x042800…042820 (17, 1, 8)  64 65 78 2c 20 36 29 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 2b 31 2c 20 6c   ┆dex, 6); update_const(index+1, l┆
0x042820…042840             69 78 29 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 2b 32 2c 20 36 29 3b 0a 75   ┆ix); update_const(index+2, 6); u┆
0x042840…042860             70 64 61 74 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 2b 33 2c 20 6c 6f 77 65 72 29 3b 0a 75 70 64   ┆pdate_const(index+3, lower); upd┆
0x042860…042880             61 74 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 2b 34 2c 20 75 70 70 65 72 29 3b 0a 75 70 64 61 74   ┆ate_const(index+4, upper); updat┆
0x042880…0428a0             65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 2b 35 2c 20 65 6c 65 6d 29 3b 0a 65 6e 64 3b 0a 0a 70 72   ┆e_const(index+5, elem); end;  pr┆
0x0428a0…0428c0             6f 63 65 64 75 72 65 20 61 6c 6c 6f 63 5f 72 61 6e 67 65 5f 64 65 73 63 72 28 6c 69 78 2c 20 6c   ┆ocedure alloc_range_descr(lix, l┆
0x0428c0…0428e0             6f 77 65 72 2c 20 75 70 70 65 72 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 20 69 6e 64 65 78   ┆ower, upper: integer); var index┆
0x0428e0…042900             3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 6e 64 65 78 3a 3d 74 6f 70 5f 63 5f 69 6e   ┆: integer; begin index:=top_c_in┆
0x042900…042920             64 65 78 3b 0a 28 2a 24 52 2d 2a 29 0a 74 6f 70 5f 63 5f 69 6e 64 65 78 3a 3d 74 6f 70 5f 63 5f   ┆dex; (*$R-*) top_c_index:=top_c_┆
0x042920…042940             69 6e 64 65 78 2b 35 3b 0a 69 66 20 74 6f 70 5f 63 5f 69 6e 64 65 78 20 3c 20 30 20 74 68 65 6e   ┆index+5; if top_c_index < 0 then┆
0x042940…042960             20 61 62 6f 72 74 28 63 6f 6e 73 74 5f 61 72 65 61 5f 6f 76 65 72 66 6c 6f 77 29 3b 0a 28 2a 24   ┆ abort(const_area_overflow); (*$┆
0x042960…042980             52 2b 2a 29 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 2c 20 35 29 3b 0a 75 70 64   ┆R+*) update_const(index, 5); upd┆
0x042980…0429a0             61 74 65 5f 63 6f 6e 73 74 28 69 6e 64 65 78 2b 31 2c 20 6c 69 78 29 3b 0a 75 70 64 61 74 65 5f   ┆ate_const(index+1, lix); update_┆
0x0429a0…0429c0             63 6f 6e 73 74 28 69 6e 64 65 78 2b 32 2c 20 35 29 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28   ┆const(index+2, 5); update_const(┆
0x0429c0…0429e0             69 6e 64 65 78 2b 33 2c 20 6c 6f 77 65 72 29 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 6e   ┆index+3, lower); update_const(in┆
0x0429e0…042a00             64 65 78 2b 34 2c 20 75 70 70 65 72 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 73   ┆dex+4, upper); end;  procedure s┆
0x042a00…042a20 (17, 1, 9)  74 64 5f 6e 61 6d 65 28 74 79 3a 20 70 61 73 73 33 63 6f 64 65 73 29 3b 0a 62 65 67 69 6e 0a 70   ┆td_name(ty: pass3codes); begin p┆
0x042a20…042a40             75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69   ┆ush_name(nix); with nametable(ni┆
0x042a40…042a60             78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73 65 3b 0a 63 61 73   ┆x)^ do begin dynamic:=false; cas┆
0x042a60…042a80             65 20 74 79 20 6f 66 0a 78 69 6e 74 65 67 65 72 3a 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a   ┆e ty of xinteger: begin context:┆
0x042a80…042aa0             3d 69 6e 74 5f 74 79 70 65 3b 0a 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 6d 61   ┆=int_type; size:=word_length; ma┆
0x042aa0…042ac0             78 3a 3d 6d 61 78 5f 69 6e 74 3b 20 20 20 6d 69 6e 3a 3d 6d 69 6e 5f 69 6e 74 3b 0a 6c 69 78 3a   ┆x:=max_int;   min:=min_int; lix:┆
0x042ac0…042ae0             3d 2d 63 75 72 72 65 6e 74 5f 6c 69 78 3b 0a 63 75 72 72 65 6e 74 5f 6c 69 78 3a 3d 63 75 72 72   ┆=-current_lix; current_lix:=curr┆
0x042ae0…042b00             65 6e 74 5f 6c 69 78 2b 31 3b 0a 65 6e 64 3b 0a 78 63 68 61 72 3a 20 62 65 67 69 6e 20 70 6f 70   ┆ent_lix+1; end; xchar: begin pop┆
0x042b00…042b20             5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20 63 6f 6e 74 65 78 74 3a 3d 63 68 61 72   ┆_to_free_stack(1); context:=char┆
0x042b20…042b40             5f 74 79 70 65 3b 20 65 6e 64 3b 0a 78 72 65 61 6c 3a 20 3b 28 2a 20 6e 6f 74 20 69 6e 70 6c 65   ┆_type; end; xreal: ;(* not inple┆
0x042b40…042b60             6d 65 6e 74 65 64 20 2a 29 0a 78 62 6f 6f 6c 65 61 6e 3a 20 62 65 67 69 6e 20 70 6f 70 5f 74 6f   ┆mented *) xboolean: begin pop_to┆
0x042b60…042b80             5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20 63 6f 6e 74 65 78 74 3a 3d 62 6f 6f 6c 5f 74 79   ┆_free_stack(1); context:=bool_ty┆
0x042b80…042ba0             70 65 3b 20 65 6e 64 3b 0a 78 73 74 72 69 6e 67 74 79 70 65 3a 20 62 65 67 69 6e 0a 70 6f 70 5f   ┆pe; end; xstringtype: begin pop_┆
0x042ba0…042bc0             74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 63 6f 6e 74 65 78 74 3a 3d 61 72 72 61 79   ┆to_free_stack(1); context:=array┆
0x042bc0…042be0             5f 74 79 70 65 3b 0a 6c 69 78 3a 3d 30 3b 20 20 73 69 7a 65 3a 3d 30 3b 0a 70 61 63 6b 65 64 5f   ┆_type; lix:=0;  size:=0; packed_┆
0x042be0…042c00             63 6f 6d 70 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 78 73 65 6d 61 70 68 6f 72 65 3a 20 20 62   ┆comp:=false; end; xsemaphore:  b┆
0x042c00…042c20 (17, 1, 10) 65 67 69 6e 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 63 6f 6e 74 65   ┆egin pop_to_free_stack(1); conte┆
0x042c20…042c40             78 74 3a 3d 73 65 6d 5f 74 79 70 65 3b 0a 73 65 6d 61 70 68 6f 72 5f 6c 65 6e 67 74 68 3a 3d 73   ┆xt:=sem_type; semaphor_length:=s┆
0x042c40…042c60             69 7a 65 3b 0a 65 6e 64 3b 0a 78 73 68 61 64 6f 77 3a 20 62 65 67 69 6e 20 70 6f 70 5f 74 6f 5f   ┆ize; end; xshadow: begin pop_to_┆
0x042c60…042c80             66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20 63 6f 6e 74 65 78 74 3a 3d 73 68 61 64 6f 77 5f 74   ┆free_stack(1); context:=shadow_t┆
0x042c80…042ca0             79 70 65 3b 20 65 6e 64 3b 0a 78 72 65 66 65 72 65 6e 63 65 3a 20 62 65 67 69 6e 0a 70 6f 70 5f   ┆ype; end; xreference: begin pop_┆
0x042ca0…042cc0             74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 63 6f 6e 74 65 78 74 3a 3d 72 65 66 5f 74   ┆to_free_stack(1); context:=ref_t┆
0x042cc0…042ce0             79 70 65 3b 0a 69 66 20 28 2a 20 2a 2a 72 63 33 35 30 32 63 2a 2a 20 2a 29 20 28 6e 6f 74 20 6c   ┆ype; if (* **rc3502c** *) (not l┆
0x042ce0…042d00             61 6d 62 64 61 76 65 72 73 69 6f 6e 29 20 61 6e 64 20 28 6e 6f 74 20 76 65 72 73 69 6f 6e 7a 38   ┆ambdaversion) and (not versionz8┆
0x042d00…042d20             30 29 20 74 68 65 6e 0a 73 69 7a 65 20 3a 3d 20 62 79 74 65 5f 6c 65 6e 67 74 68 20 2b 20 32 20   ┆0) then size := byte_length + 2 ┆
0x042d20…042d40             2a 20 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 0a 65 6c 73 65 0a 69 66 20 28 2a 20 2a 2a 6c 61   ┆* pointer_length else if (* **la┆
0x042d40…042d60             6d 62 64 61 2a 2a 20 2a 29 20 6e 6f 74 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 73 69   ┆mbda** *) not versionz80 then si┆
0x042d60…042d80             7a 65 3a 3d 32 2a 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 3b 0a 65 6e 64 3b 0a 78 6e 69 6c 74   ┆ze:=2*pointer_length; end; xnilt┆
0x042d80…042da0             79 70 65 3a 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 69 6e 74 5f 74 79 70 65 3b 0a 6e 69   ┆ype: begin context:=int_type; ni┆
0x042da0…042dc0             6c 74 79 70 65 5f 6e 69 78 3a 3d 6e 69 78 3b 0a 73 69 7a 65 3a 3d 32 3b 0a 65 6e 64 3b 0a 78 65   ┆ltype_nix:=nix; size:=2; end; xe┆
0x042dc0…042de0             72 72 6f 72 74 79 70 65 3a 20 62 65 67 69 6e 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63   ┆rrortype: begin pop_to_free_stac┆
0x042de0…042e00             6b 28 31 29 3b 0a 75 6e 64 65 66 5f 6e 69 78 3a 3d 6e 69 78 3b 0a 63 6f 6e 74 65 78 74 3a 3d 75   ┆k(1); undef_nix:=nix; context:=u┆
0x042e00…042e20 (17, 1, 11) 6e 64 65 66 5f 74 79 70 65 3b 0a 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 65 6e   ┆ndef_type; size:=word_length; en┆
0x042e20…042e40             64 3b 0a 78 75 6e 64 65 63 6c 69 64 3a 20 62 65 67 69 6e 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f   ┆d; xundeclid: begin pop_to_free_┆
0x042e40…042e60             73 74 61 63 6b 28 31 29 3b 0a 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 3a 3d 6e 61 6d 65 74   ┆stack(1); nametable(nix)^:=namet┆
0x042e60…042e80             61 62 6c 65 28 75 6e 64 65 66 5f 6e 69 78 29 5e 3b 0a 65 6e 64 3b 0a 78 63 68 72 3a 20 62 65 67   ┆able(undef_nix)^; end; xchr: beg┆
0x042e80…042ea0             69 6e 20 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20 6e 69 76 3a 3d 2d 7a   ┆in pop_to_free_stack(1); niv:=-z┆
0x042ea0…042ec0             63 68 72 2d 31 3b 20 65 6e 64 3b 0a 78 6f 72 64 3a 20 62 65 67 69 6e 20 70 6f 70 5f 74 6f 5f 66   ┆chr-1; end; xord: begin pop_to_f┆
0x042ec0…042ee0             72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20 6e 69 76 3a 3d 2d 7a 6f 72 64 2d 31 3b 20 65 6e 64 3b   ┆ree_stack(1); niv:=-zord-1; end;┆
0x042ee0…042f00             0a 78 70 72 65 64 3a 20 62 65 67 69 6e 20 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28   ┆ xpred: begin pop_to_free_stack(┆
0x042f00…042f20             31 29 3b 20 6e 69 76 3a 3d 2d 7a 70 72 65 64 2d 31 3b 20 65 6e 64 3b 0a 78 73 75 63 63 3a 20 62   ┆1); niv:=-zpred-1; end; xsucc: b┆
0x042f20…042f40             65 67 69 6e 20 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20 6e 69 76 3a 3d   ┆egin pop_to_free_stack(1); niv:=┆
0x042f40…042f60             2d 7a 73 75 63 63 2d 31 3b 20 65 6e 64 3b 0a 78 6e 69 6c 3a 20 62 65 67 69 6e 20 70 6f 70 5f 74   ┆-zsucc-1; end; xnil: begin pop_t┆
0x042f60…042f80             6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20 6e 69 76 3a 3d 2d 7a 6e 69 6c 2d 31 3b 20 65   ┆o_free_stack(1); niv:=-znil-1; e┆
0x042f80…042fa0             6e 64 3b 0a 78 6e 69 6c 72 65 66 3a 20 62 65 67 69 6e 20 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73   ┆nd; xnilref: begin pop_to_free_s┆
0x042fa0…042fc0             74 61 63 6b 28 31 29 3b 20 6e 69 76 3a 3d 2d 7a 6e 69 6c 72 65 66 2d 31 3b 20 65 6e 64 3b 0a 78   ┆tack(1); niv:=-znilref-1; end; x┆
0x042fc0…042fe0             6e 65 77 3a 20 62 65 67 69 6e 20 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b   ┆new: begin pop_to_free_stack(1);┆
0x042fe0…043000             20 6e 69 76 3a 3d 2d 7a 6e 65 77 2d 31 3b 20 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e   ┆ niv:=-znew-1; end; end; end; en┆
0x043000…043020 (17, 1, 12) 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 63 61 6c 61 72 5f 64 65 66 3b 0a 76 61 72 20 73 61   ┆d;  procedure scalar_def; var sa┆
0x043020…043040             76 65 64 5f 73 69 7a 65 2c 20 69 3a 20 69 6e 74 65 67 65 72 3b 0a 68 65 6c 70 5f 70 74 72 3a 20   ┆ved_size, i: integer; help_ptr: ┆
0x043040…043060             73 74 61 63 6b 5f 70 74 72 3b 0a 62 65 67 69 6e 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b   ┆stack_ptr; begin push_name(nix);┆
0x043060…043080             0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 63   ┆ with nametable(nix)^ do begin c┆
0x043080…0430a0             6f 6e 74 65 78 74 3a 3d 73 63 61 6c 61 72 5f 74 79 70 65 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61   ┆ontext:=scalar_type; dynamic:=fa┆
0x0430a0…0430c0             6c 73 65 3b 0a 6d 69 6e 3a 3d 30 3b 20 20 6d 61 78 3a 3d 73 63 61 6c 61 72 5f 63 6f 75 6e 74 2d   ┆lse; min:=0;  max:=scalar_count-┆
0x0430c0…0430e0             31 3b 0a 69 66 20 6d 61 78 3c 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 63 6f 6d 70 69 6c 65 72 5f   ┆1; if max<0 then begin compiler_┆
0x0430e0…043100             65 72 72 6f 72 28 73 63 61 6c 61 72 5f 65 72 72 6f 72 29 3b 0a 6d 61 78 3a 3d 30 3b 0a 65 6e 64   ┆error(scalar_error); max:=0; end┆
0x043100…043120             3b 0a 73 69 7a 65 3a 3d 76 61 72 5f 73 69 7a 65 28 6d 69 6e 2c 6d 61 78 29 3b 0a 73 61 76 65 64   ┆; size:=var_size(min,max); saved┆
0x043120…043140             5f 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 65 6e 64 3b 0a 28 2a 20 72 65 76 65 72 73 65 20 74 68 65   ┆_size:=size; end; (* reverse the┆
0x043140…043160             20 73 63 61 6c 61 72 20 6c 69 73 74 20 61 6e 64 20 75 70 64 61 74 65 20 74 68 65 20 6e 61 6d 65   ┆ scalar list and update the name┆
0x043160…043180             73 20 69 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 6f 72 64 65 72 20 2a 29 0a 70 6f 70 5f 74 6f   ┆s in declaration order *) pop_to┆
0x043180…0431a0             5f 66 72 65 65 5f 73 74 61 63 6b 28 73 63 61 6c 61 72 5f 63 6f 75 6e 74 2b 31 29 3b 0a 68 65 6c   ┆_free_stack(scalar_count+1); hel┆
0x0431a0…0431c0             70 5f 70 74 72 3a 3d 20 66 72 65 65 5f 73 74 61 63 6b 3b 0a 66 6f 72 20 69 3a 3d 73 63 61 6c 61   ┆p_ptr:= free_stack; for i:=scala┆
0x0431c0…0431e0             72 5f 63 6f 75 6e 74 20 64 6f 77 6e 74 6f 20 31 20 64 6f 0a 77 69 74 68 20 6e 61 6d 65 74 61 62   ┆r_count downto 1 do with nametab┆
0x0431e0…043200             6c 65 28 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 29 5e 20 64 6f 20 62 65   ┆le(help_ptr^.stacked_val)^ do be┆
0x043200…043220 (17, 1, 13) 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 73 63 6f 6e 73 74 3b 0a 73 69 7a 65 3a 3d 73 61 76 65 64   ┆gin context:=sconst; size:=saved┆
0x043220…043240             5f 73 69 7a 65 3b 0a 6f 66 66 73 65 74 3a 3d 73 63 61 6c 61 72 5f 63 6f 75 6e 74 2d 69 3b 0a 68   ┆_size; offset:=scalar_count-i; h┆
0x043240…043260             65 6c 70 5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b   ┆elp_ptr:= help_ptr^.former_elem;┆
0x043260…043280             0a 65 6e 64 3b 0a 73 63 61 6c 61 72 5f 63 6f 75 6e 74 3a 3d 30 3b 0a 70 75 73 68 5f 6f 6c 64 28   ┆ end; scalar_count:=0; push_old(┆
0x043280…0432a0             6e 69 78 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 75 62 5f 64 65 66 3b 0a 76   ┆nix); end;  procedure sub_def; v┆
0x0432a0…0432c0             61 72 20 74 79 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 75 73 68 5f 6e 61 6d 65 28   ┆ar ty: integer; begin push_name(┆
0x0432c0…0432e0             6e 69 78 29 3b 20 20 20 70 61 73 73 69 6e 28 74 79 29 3b 0a 69 66 20 28 6f 74 5e 2e 63 6f 6e 74   ┆nix);   passin(ty); if (ot^.cont┆
0x0432e0…043300             65 78 74 20 3d 20 73 63 6f 6e 73 74 29 20 61 6e 64 20 28 6f 73 5e 2e 63 6f 6e 74 65 78 74 20 3d   ┆ext = sconst) and (os^.context =┆
0x043300…043320             20 73 63 6f 6e 73 74 29 20 74 68 65 6e 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78   ┆ sconst) then with nametable(nix┆
0x043320…043340             29 5e 20 64 6f 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 6e 61 6d 65 74 61 62 6c 65 28 74   ┆)^ do begin context:=nametable(t┆
0x043340…043360             79 29 5e 2e 63 6f 6e 74 65 78 74 3b 0a 6d 61 78 3a 3d 74 61 6b 65 5f 65 78 70 72 3b 20 20 20 6d   ┆y)^.context; max:=take_expr;   m┆
0x043360…043380             69 6e 3a 3d 74 61 6b 65 5f 65 78 70 72 3b 0a 69 66 20 6e 6f 74 20 63 68 65 63 6b 5f 74 79 70 65   ┆in:=take_expr; if not check_type┆
0x043380…0433a0             28 74 79 2c 6d 69 6e 2c 6d 61 78 29 20 74 68 65 6e 0a 69 66 20 76 61 72 5f 73 69 7a 65 28 6d 69   ┆(ty,min,max) then if var_size(mi┆
0x0433a0…0433c0             6e 2c 20 6d 61 78 29 3c 3e 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 72 6f 72 28 72 61 6e 67   ┆n, max)<>0 then begin error(rang┆
0x0433c0…0433e0             65 5f 64 65 66 5f 65 72 72 6f 72 29 3b 0a 6d 69 6e 3a 3d 30 3b 20 20 6d 61 78 3a 3d 31 3b 0a 65   ┆e_def_error); min:=0;  max:=1; e┆
0x0433e0…043400             6e 64 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73 65 3b 0a 73 69 7a 65 3a 3d 76 61 72 5f 73 69   ┆nd; dynamic:=false; size:=var_si┆
0x043400…043420 (17, 1, 14) 7a 65 28 6d 69 6e 2c 6d 61 78 29 3b 0a 6c 69 78 3a 3d 2d 63 75 72 72 65 6e 74 5f 6c 69 78 3b 20   ┆ze(min,max); lix:=-current_lix; ┆
0x043420…043440             20 28 2a 20 6e 6f 20 72 61 6e 67 65 20 64 65 73 63 72 20 61 6c 6c 6f 63 61 74 65 64 20 2a 29 0a   ┆ (* no range descr allocated *) ┆
0x043440…043460             63 75 72 72 65 6e 74 5f 6c 69 78 3a 3d 63 75 72 72 65 6e 74 5f 6c 69 78 2b 31 3b 0a 65 6e 64 0a   ┆current_lix:=current_lix+1; end ┆
0x043460…043480             65 6c 73 65 0a 62 65 67 69 6e 20 20 28 2a 20 64 79 6e 61 6d 69 63 20 2a 29 0a 6c 6f 61 64 5f 65   ┆else begin  (* dynamic *) load_e┆
0x043480…0434a0             78 70 72 3b 20 20 70 6f 70 3b 20 20 70 6f 70 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28   ┆xpr;  pop;  pop; with nametable(┆
0x0434a0…0434c0             6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 64 79 6e 5f 73 75 62 72   ┆nix)^ do begin context:=dyn_subr┆
0x0434c0…0434e0             61 6e 67 65 3b 0a 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 6d 69 6e 3a 3d 6d 69   ┆ange; size:=word_length; min:=mi┆
0x0434e0…043500             6e 5f 69 6e 74 3b 20 20 20 6d 61 78 3a 3d 6d 61 78 5f 69 6e 74 3b 0a 6e 69 76 3a 3d 63 75 72 72   ┆n_int;   max:=max_int; niv:=curr┆
0x043500…043520             65 6e 74 5f 6e 69 76 3b 0a 77 6f 72 64 5f 61 6c 6c 69 67 6e 3b 0a 6f 66 66 73 65 74 3a 3d 61 6c   ┆ent_niv; word_allign; offset:=al┆
0x043520…043540             6c 6f 63 5f 76 61 72 28 73 75 62 5f 74 65 6d 70 6c 61 74 65 5f 73 69 7a 65 29 3b 0a 64 79 6e 61   ┆loc_var(sub_template_size); dyna┆
0x043540…043560             6d 69 63 3a 3d 74 72 75 65 3b 0a 70 75 74 31 28 7a 73 75 62 64 65 66 2c 20 6f 66 66 73 65 74 29   ┆mic:=true; put1(zsubdef, offset)┆
0x043560…043580             3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68   ┆; if (* **z80** *) versionz80 th┆
0x043580…0435a0             65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 6e 6f 74 5f 69 6d 70 6c 65 6d 65 6e 74 65 64 29 3b   ┆en begin error(not_implemented);┆
0x0435a0…0435c0             0a 6d 69 6e 3a 3d 30 3b 20 20 6d 61 78 3a 3d 31 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73 65   ┆ min:=0;  max:=1; dynamic:=false┆
0x0435c0…0435e0             3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 77 69 74 68 2a 29 0a 65 6e 64 3b 20 28 2a 64 79 6e 61   ┆; end; end; (*with*) end; (*dyna┆
0x0435e0…043600             6d 69 63 2a 29 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 6f 69 6e 74 65 72 5f 64 65   ┆mic*) end;  procedure pointer_de┆
0x043600…043620 (17, 1, 15) 66 3b 0a 76 61 72 20 63 6f 6d 70 6f 6e 65 6e 74 5f 74 79 70 65 3a 20 69 6e 74 65 67 65 72 3b 0a   ┆f; var component_type: integer; ┆
0x043620…043640             62 65 67 69 6e 0a 63 6f 6d 70 6f 6e 65 6e 74 5f 74 79 70 65 3a 3d 20 73 74 61 63 6b 5f 74 6f 70   ┆begin component_type:= stack_top┆
0x043640…043660             5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 3b 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b   ┆^.stacked_val; pop_to_free_stack┆
0x043660…043680             28 31 29 3b 20 28 2a 70 6f 70 20 63 6f 6d 70 6f 6e 65 6e 74 20 74 79 70 65 2a 29 0a 70 75 73 68   ┆(1); (*pop component type*) push┆
0x043680…0436a0             5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e   ┆_name(nix); with nametable(nix)^┆
0x0436a0…0436c0             20 64 6f 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 70 6f 69 6e 74 65 72 5f 74 79 70 65 3b   ┆ do begin context:=pointer_type;┆
0x0436c0…0436e0             0a 73 69 7a 65 3a 3d 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 3b 0a 63 6f 6d 70 5f 74 79 70 65   ┆ size:=pointer_length; comp_type┆
0x0436e0…043700             3a 3d 20 63 6f 6d 70 6f 6e 65 6e 74 5f 74 79 70 65 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73   ┆:= component_type; dynamic:=fals┆
0x043700…043720             65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 6f 72 77 61 72 64 5f   ┆e; end; end;  procedure forward_┆
0x043720…043740             70 6f 69 6e 74 65 72 5f 64 65 66 3b 0a 62 65 67 69 6e 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78   ┆pointer_def; begin push_name(nix┆
0x043740…043760             29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e   ┆); with nametable(nix)^ do begin┆
0x043760…043780             0a 63 6f 6e 74 65 78 74 3a 3d 70 6f 69 6e 74 65 72 5f 74 79 70 65 3b 0a 73 69 7a 65 3a 3d 70 6f   ┆ context:=pointer_type; size:=po┆
0x043780…0437a0             69 6e 74 65 72 5f 6c 65 6e 67 74 68 3b 0a 63 6f 6d 70 5f 74 79 70 65 3a 3d 20 6e 69 6c 74 79 70   ┆inter_length; comp_type:= niltyp┆
0x0437a0…0437c0             65 5f 6e 69 78 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b   ┆e_nix; dynamic:=false; end; end;┆
0x0437c0…0437e0             0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 64 65 66 5f 74 79 70 65 3b 0a 62 65 67 69 6e 0a 69 3a   ┆  procedure redef_type; begin i:┆
0x0437e0…043800             3d 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 3b 20 70 6f 70 5f 74 6f 5f   ┆=stack_top^.stacked_val; pop_to_┆
0x043800…043820 (18, 0, 1)  66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 6e   ┆free_stack(1); push_name(nix); n┆
0x043820…043840             61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 3a 3d 6e 61 6d 65 74 61 62 6c 65 28 69 29 5e 3b 0a 77   ┆ametable(nix)^:=nametable(i)^; w┆
0x043840…043860             69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 0a 69 66 20 63 6f 6e 74 65 78   ┆ith nametable(nix)^ do if contex┆
0x043860…043880             74 20 69 6e 20 69 6e 64 65 78 5f 74 79 70 65 73 20 74 68 65 6e 20 62 65 67 69 6e 0a 6c 69 78 3a   ┆t in index_types then begin lix:┆
0x043880…0438a0             3d 2d 63 75 72 72 65 6e 74 5f 6c 69 78 3b 0a 63 75 72 72 65 6e 74 5f 6c 69 78 3a 3d 63 75 72 72   ┆=-current_lix; current_lix:=curr┆
0x0438a0…0438c0             65 6e 74 5f 6c 69 78 2b 31 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 73   ┆ent_lix+1 end; end;  procedure s┆
0x0438c0…0438e0             74 61 74 69 63 5f 61 72 72 61 79 5f 64 65 66 28 70 61 63 6b 5f 61 72 72 61 79 3a 20 62 6f 6f 6c   ┆tatic_array_def(pack_array: bool┆
0x0438e0…043900             65 61 6e 29 3b 0a 76 61 72 20 73 70 61 6e 20 3a 20 6c 6f 6e 67 69 6e 74 3b 0a 20 20 20 20 6c 6f   ┆ean); var span : longint;     lo┆
0x043900…043920             77 65 72 2c 75 70 70 65 72 2c 61 72 72 61 79 5f 73 69 7a 65 2c 62 69 74 5f 73 70 61 6e 2c 0a 20   ┆wer,upper,array_size,bit_span,  ┆
0x043920…043940             20 20 20 63 6f 6d 70 5f 6e 69 78 2c 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 2c 65 6c 65 6d 5f   ┆   comp_nix,fields_pr_word,elem_┆
0x043940…043960             73 69 7a 65 3a 20 69 6e 74 65 67 65 72 3b 0a 20 20 20 20 70 61 63 6b 2c 20 69 6e 69 74 5f 74 79   ┆size: integer;     pack, init_ty┆
0x043960…043980             70 65 2c 61 6c 6c 69 67 6e 5f 74 79 70 65 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 70   ┆pe,allign_type: boolean; begin p┆
0x043980…0439a0             61 63 6b 3a 3d 70 61 63 6b 5f 61 72 72 61 79 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28   ┆ack:=pack_array; with nametable(┆
0x0439a0…0439c0             73 74 61 63 6b 5f 74 6f 70 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 5e 2e 73 74 61 63 6b 65 64 5f   ┆stack_top^.former_elem^.stacked_┆
0x0439c0…0439e0             76 61 6c 29 5e 20 64 6f 20 62 65 67 69 6e 0a 6c 6f 77 65 72 3a 3d 6d 69 6e 3b 20 20 75 70 70 65   ┆val)^ do begin lower:=min;  uppe┆
0x0439e0…043a00             72 3a 3d 6d 61 78 3b 0a 28 2a 24 52 2d 2a 29 0a 73 70 61 6e 3a 3d 75 70 70 65 72 3b 0a 73 70 61   ┆r:=max; (*$R-*) span:=upper; spa┆
0x043a00…043a20 (18, 0, 2)  6e 20 3a 3d 20 73 70 61 6e 2d 6c 6f 77 65 72 2b 31 3b 0a 28 2a 24 52 2b 2a 29 0a 65 6e 64 3b 0a   ┆n := span-lower+1; (*$R+*) end; ┆
0x043a20…043a40             63 6f 6d 70 5f 6e 69 78 3a 3d 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c   ┆comp_nix:=stack_top^.stacked_val┆
0x043a40…043a60             3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 63 6f 6d 70 5f 6e 69 78 29 5e 20 64 6f 20 62   ┆; with nametable(comp_nix)^ do b┆
0x043a60…043a80             65 67 69 6e 0a 61 6c 6c 69 67 6e 5f 74 79 70 65 20 3a 3d 20 63 6f 6e 74 65 78 74 20 69 6e 20 61   ┆egin allign_type := context in a┆
0x043a80…043aa0             6c 6c 69 67 6e 5f 74 79 70 65 73 3b 0a 69 6e 69 74 5f 74 79 70 65 3a 3d 63 6f 6e 74 65 78 74 20   ┆llign_types; init_type:=context ┆
0x043aa0…043ac0             69 6e 20 69 6e 69 74 5f 74 79 70 65 73 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20   ┆in init_types; if (* **z80** *) ┆
0x043ac0…043ae0             76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 65 6c 65 6d 5f 73 69 7a 65 3a 3d 73 69 7a 65 0a   ┆versionz80 then elem_size:=size ┆
0x043ae0…043b00             65 6c 73 65 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29   ┆else (* **lambda or rc3502c** *)┆
0x043b00…043b20             0a 69 66 20 6f 64 64 28 73 69 7a 65 29 20 61 6e 64 20 61 6c 6c 69 67 6e 5f 74 79 70 65 20 74 68   ┆ if odd(size) and allign_type th┆
0x043b20…043b40             65 6e 0a 65 6c 65 6d 5f 73 69 7a 65 3a 3d 73 69 7a 65 2b 31 20 65 6c 73 65 20 65 6c 65 6d 5f 73   ┆en elem_size:=size+1 else elem_s┆
0x043b40…043b60             69 7a 65 3a 3d 73 69 7a 65 3b 0a 69 66 20 70 61 63 6b 20 74 68 65 6e 20 70 61 63 6b 3a 3d 63 6f   ┆ize:=size; if pack then pack:=co┆
0x043b60…043b80             6e 74 65 78 74 20 69 6e 20 69 6e 64 65 78 5f 74 79 70 65 73 3b 0a 69 66 20 70 61 63 6b 20 74 68   ┆ntext in index_types; if pack th┆
0x043b80…043ba0             65 6e 20 62 65 67 69 6e 0a 62 69 74 5f 73 70 61 6e 3a 3d 62 69 74 73 28 6d 61 78 29 3b 0a 66 69   ┆en begin bit_span:=bits(max); fi┆
0x043ba0…043bc0             65 6c 64 73 5f 70 72 5f 77 6f 72 64 3a 3d 62 69 74 73 5f 70 72 5f 77 6f 72 64 20 64 69 76 20 62   ┆elds_pr_word:=bits_pr_word div b┆
0x043bc0…043be0             69 74 5f 73 70 61 6e 3b 0a 69 66 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 3e 3d 6d 69 6e 5f   ┆it_span; if fields_pr_word>=min_┆
0x043be0…043c00             66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 20 74 68 65 6e 20 62 65 67 69 6e 0a 61 72 72 61 79 5f   ┆fields_pr_word then begin array_┆
0x043c00…043c20 (18, 0, 3)  73 69 7a 65 3a 3d 28 73 70 61 6e 20 64 69 76 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 29 2a   ┆size:=(span div fields_pr_word)*┆
0x043c20…043c40             32 20 2b 0a 28 28 73 70 61 6e 20 6d 6f 64 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 29 2a 62   ┆2 + ((span mod fields_pr_word)*b┆
0x043c40…043c60             69 74 5f 73 70 61 6e 2b 37 29 20 64 69 76 20 62 69 74 73 5f 70 72 5f 62 79 74 65 3b 0a 69 66 20   ┆it_span+7) div bits_pr_byte; if ┆
0x043c60…043c80             28 2a 20 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 69   ┆(*  **z80** *) versionz80 then i┆
0x043c80…043ca0             66 20 6f 64 64 28 61 72 72 61 79 5f 73 69 7a 65 29 20 74 68 65 6e 20 61 72 72 61 79 5f 73 69 7a   ┆f odd(array_size) then array_siz┆
0x043ca0…043cc0             65 3a 3d 61 72 72 61 79 5f 73 69 7a 65 20 2b 20 31 3b 0a 65 6c 65 6d 5f 73 69 7a 65 3a 3d 66 69   ┆e:=array_size + 1; elem_size:=fi┆
0x043cc0…043ce0             65 6c 64 73 5f 70 72 5f 77 6f 72 64 2a 73 68 69 66 74 38 2b 62 69 74 5f 73 70 61 6e 3b 0a 65 6e   ┆elds_pr_word*shift8+bit_span; en┆
0x043ce0…043d00             64 0a 65 6c 73 65 20 70 61 63 6b 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 69 66 20 6e 6f 74 20   ┆d else pack:=false; end; if not ┆
0x043d00…043d20             70 61 63 6b 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 24 52 2d 2a 29 0a 69 66 20 73 70 61 6e 20   ┆pack then begin (*$R-*) if span ┆
0x043d20…043d40             3d 20 30 20 74 68 65 6e 20 61 72 72 61 79 5f 73 69 7a 65 20 3a 3d 20 30 20 65 6c 73 65 0a 69 66   ┆= 0 then array_size := 0 else if┆
0x043d40…043d60             20 65 6c 65 6d 5f 73 69 7a 65 3c 3d 6d 6f 64 75 6c 65 5f 73 69 7a 65 20 64 69 76 20 73 70 61 6e   ┆ elem_size<=module_size div span┆
0x043d60…043d80             20 74 68 65 6e 20 61 72 72 61 79 5f 73 69 7a 65 3a 3d 65 6c 65 6d 5f 73 69 7a 65 2a 73 70 61 6e   ┆ then array_size:=elem_size*span┆
0x043d80…043da0             0a 28 2a 24 52 2b 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 65 72 72 6f 72 28 61 72 72 61 79 5f   ┆ (*$R+*) else begin error(array_┆
0x043da0…043dc0             73 69 7a 65 5f 65 72 72 6f 72 29 3b 0a 61 72 72 61 79 5f 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 65   ┆size_error); array_size:=size; e┆
0x043dc0…043de0             6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28   ┆nd; end; end; pop_to_free_stack(┆
0x043de0…043e00             32 29 3b 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62   ┆2); push_name(nix); with nametab┆
0x043e00…043e20 (18, 0, 4)  6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 61 6c 6c 69 67 6e 5f 74 79 70 65   ┆le(nix)^ do begin if allign_type┆
0x043e20…043e40             20 74 68 65 6e 0a 28 2a 20 7a 38 30 3a 20 63 6f 6d 70 6f 6e 65 6e 74 20 63 6f 6e 74 61 69 6e 73   ┆ then (* z80: component contains┆
0x043e40…043e60             20 61 20 76 61 72 69 61 62 6c 65 20 6f 66 20 70 6f 6f 6c 5f 74 79 70 65 20 66 6f 72 20 61 6c 6c   ┆ a variable of pool_type for all┆
0x043e60…043e80             69 67 6d 65 6e 74 20 61 6e 64 20 69 6e 69 74 2a 29 0a 28 2a 20 72 63 33 35 30 32 3a 20 63 6f 6d   ┆igment and init*) (* rc3502: com┆
0x043e80…043ea0             70 6f 6e 65 6e 74 20 63 6f 6e 74 61 69 6e 73 20 61 20 73 79 73 74 65 6d 76 61 72 69 61 62 6c 65   ┆ponent contains a systemvariable┆
0x043ea0…043ec0             20 66 6f 72 20 61 6c 6c 69 67 6e 6d 65 6e 74 20 61 6e 64 20 69 6e 69 74 2a 29 0a 28 2a 20 72 63   ┆ for allignment and init*) (* rc┆
0x043ec0…043ee0             33 35 30 32 2f 32 3a 20 63 6f 6d 70 6f 6e 65 6e 74 20 63 6f 6e 74 61 69 6e 73 20 61 20 73 79 73   ┆3502/2: component contains a sys┆
0x043ee0…043f00             74 65 6d 76 61 72 69 61 62 6c 65 20 66 6f 72 20 61 6c 6c 69 67 6e 6d 65 6e 74 20 61 6e 64 20 69   ┆temvariable for allignment and i┆
0x043f00…043f20             6e 69 74 20 2d 0a 20 20 20 6e 6f 74 20 61 20 70 6f 69 6e 74 65 72 76 61 72 69 61 62 6c 65 2a 29   ┆nit -    not a pointervariable*)┆
0x043f20…043f40             0a 63 6f 6e 74 65 78 74 20 3a 3d 20 61 6c 6c 69 67 6e 5f 61 72 72 5f 74 79 70 65 0a 65 6c 73 65   ┆ context := allign_arr_type else┆
0x043f40…043f60             0a 69 66 20 69 6e 69 74 5f 74 79 70 65 20 74 68 65 6e 0a 28 2a 20 72 63 33 35 30 32 2f 32 3a 20   ┆ if init_type then (* rc3502/2: ┆
0x043f60…043f80             63 6f 6d 70 6f 6e 65 6e 74 20 63 6f 6e 74 61 69 6e 73 20 61 20 70 6f 69 6e 74 65 72 76 61 72 69   ┆component contains a pointervari┆
0x043f80…043fa0             61 62 6c 65 20 66 6f 72 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 2a 29 0a 28 2a 20 6e 6f 74   ┆able for initialization*) (* not┆
0x043fa0…043fc0             65 20 74 68 61 74 20 7a 38 30 20 61 6e 64 20 72 63 33 35 30 32 20 6e 65 76 65 72 20 67 65 74 73   ┆e that z80 and rc3502 never gets┆
0x043fc0…043fe0             20 74 6f 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 73 69 6e 63 65 20 61 6c 6c 69 67 6e 5f 74 79 70   ┆ to this point, since allign_typ┆
0x043fe0…044000             65 0a 20 20 20 61 6e 64 20 69 6e 69 74 5f 74 79 70 65 20 61 6c 77 61 79 73 20 61 72 65 20 74 72   ┆e    and init_type always are tr┆
0x044000…044020 (18, 0, 5)  75 65 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 20 66 6f 72 20 74 68 65 73 65 20 6d 61   ┆ue at the same time for these ma┆
0x044020…044040             63 68 69 6e 65 73 20 2a 29 0a 63 6f 6e 74 65 78 74 20 3a 3d 20 73 79 73 5f 61 72 72 61 79 5f 74   ┆chines *) context := sys_array_t┆
0x044040…044060             79 70 65 0a 65 6c 73 65 0a 28 2a 63 6f 6d 70 6f 6e 65 6e 74 20 63 6f 6e 74 61 69 6e 73 20 6e 6f   ┆ype else (*component contains no┆
0x044060…044080             20 73 79 73 74 65 6d 20 76 61 72 69 61 62 6c 65 73 2a 29 0a 63 6f 6e 74 65 78 74 20 3a 3d 20 61   ┆ system variables*) context := a┆
0x044080…0440a0             72 72 61 79 5f 74 79 70 65 3b 0a 20 20 20 73 69 7a 65 3a 3d 61 72 72 61 79 5f 73 69 7a 65 3b 0a   ┆rray_type;    size:=array_size; ┆
0x0440a0…0440c0             6d 69 6e 3a 3d 6c 6f 77 65 72 3b 20 20 6d 61 78 3a 3d 75 70 70 65 72 3b 20 20 6e 69 76 3a 3d 65   ┆min:=lower;  max:=upper;  niv:=e┆
0x0440c0…0440e0             6c 65 6d 5f 73 69 7a 65 3b 0a 6c 69 78 3a 3d 2d 63 75 72 72 65 6e 74 5f 6c 69 78 3b 20 20 20 28   ┆lem_size; lix:=-current_lix;   (┆
0x0440e0…044100             2a 20 6e 6f 20 64 6f 70 65 20 76 65 63 74 6f 72 20 61 6c 6c 6f 63 61 74 65 64 20 2a 29 0a 63 75   ┆* no dope vector allocated *) cu┆
0x044100…044120             72 72 65 6e 74 5f 6c 69 78 3a 3d 63 75 72 72 65 6e 74 5f 6c 69 78 2b 31 3b 0a 6e 65 78 74 5f 63   ┆rrent_lix:=current_lix+1; next_c┆
0x044120…044140             6f 6d 70 3a 3d 63 6f 6d 70 5f 6e 69 78 3b 0a 70 61 63 6b 65 64 5f 63 6f 6d 70 3a 3d 70 61 63 6b   ┆omp:=comp_nix; packed_comp:=pack┆
0x044140…044160             3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f   ┆; dynamic:=false; end; end;  pro┆
0x044160…044180             63 65 64 75 72 65 20 61 72 72 61 79 5f 64 65 66 28 70 61 63 6b 5f 61 72 72 61 79 3a 20 62 6f 6f   ┆cedure array_def(pack_array: boo┆
0x044180…0441a0             6c 65 61 6e 29 3b 0a 76 61 72 20 69 6e 64 65 78 5f 6e 69 78 2c 20 63 6f 6d 70 5f 6e 69 78 2c 20   ┆lean); var index_nix, comp_nix, ┆
0x0441a0…0441c0             64 79 6e 5f 63 61 73 65 2c 20 62 69 74 5f 73 70 61 6e 2c 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f   ┆dyn_case, bit_span, fields_pr_wo┆
0x0441c0…0441e0             72 64 2c 0a 63 6f 6d 70 5f 6e 69 76 2c 20 63 6f 6d 70 5f 6f 66 66 73 65 74 2c 0a 6c 6f 77 65 72   ┆rd, comp_niv, comp_offset, lower┆
0x0441e0…044200             2c 20 75 70 70 65 72 2c 20 69 6e 64 65 78 5f 6e 69 76 2c 20 69 6e 64 65 78 5f 6f 66 66 73 65 74   ┆, upper, index_niv, index_offset┆
0x044200…044220 (18, 0, 6)  2c 0a 61 6c 6c 69 67 6e 2c 20 65 6c 65 6d 5f 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 70   ┆, allign, elem_size : integer; p┆
0x044220…044240             61 63 6b 2c 20 69 6e 69 74 5f 74 79 70 65 2c 61 6c 6c 69 67 6e 5f 74 79 70 65 3a 20 62 6f 6f 6c   ┆ack, init_type,allign_type: bool┆
0x044240…044260             65 61 6e 3b 0a 62 65 67 69 6e 0a 69 6e 64 65 78 5f 6e 69 78 3a 3d 73 74 61 63 6b 5f 74 6f 70 5e   ┆ean; begin index_nix:=stack_top^┆
0x044260…044280             2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 3b 0a 63 6f 6d 70 5f   ┆.former_elem^.stacked_val; comp_┆
0x044280…0442a0             6e 69 78 3a 3d 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 3b 0a 69 66 20   ┆nix:=stack_top^.stacked_val; if ┆
0x0442a0…0442c0             6e 61 6d 65 74 61 62 6c 65 28 69 6e 64 65 78 5f 6e 69 78 29 5e 2e 64 79 6e 61 6d 69 63 20 74 68   ┆nametable(index_nix)^.dynamic th┆
0x0442c0…0442e0             65 6e 0a 64 79 6e 5f 63 61 73 65 3a 3d 32 20 65 6c 73 65 20 64 79 6e 5f 63 61 73 65 3a 3d 31 3b   ┆en dyn_case:=2 else dyn_case:=1;┆
0x0442e0…044300             0a 69 66 20 6e 61 6d 65 74 61 62 6c 65 28 63 6f 6d 70 5f 6e 69 78 29 5e 2e 64 79 6e 61 6d 69 63   ┆ if nametable(comp_nix)^.dynamic┆
0x044300…044320             20 74 68 65 6e 0a 64 79 6e 5f 63 61 73 65 3a 3d 64 79 6e 5f 63 61 73 65 2b 32 3b 0a 69 66 20 6e   ┆ then dyn_case:=dyn_case+2; if n┆
0x044320…044340             61 6d 65 74 61 62 6c 65 28 63 6f 6d 70 5f 6e 69 78 29 5e 2e 63 6f 6e 74 65 78 74 20 3d 20 64 79   ┆ametable(comp_nix)^.context = dy┆
0x044340…044360             6e 5f 73 75 62 72 61 6e 67 65 20 74 68 65 6e 0a 64 79 6e 5f 63 61 73 65 3a 3d 64 79 6e 5f 63 61   ┆n_subrange then dyn_case:=dyn_ca┆
0x044360…044380             73 65 2d 32 3b 0a 28 2a 0a 69 6e 64 65 78 20 74 79 70 65 20 20 20 63 6f 6d 70 20 74 79 70 65 20   ┆se-2; (* index type   comp type ┆
0x044380…0443a0             20 3a 20 20 64 79 6e 5f 63 61 73 65 0a 73 74 61 74 69 63 20 20 20 20 20 20 20 73 74 61 74 69 63   ┆ :  dyn_case static       static┆
0x0443a0…0443c0             20 20 20 20 20 20 20 20 20 20 31 0a 64 79 6e 61 6d 69 63 20 20 20 20 20 20 73 74 61 74 69 63 20   ┆          1 dynamic      static ┆
0x0443c0…0443e0             20 20 20 20 20 20 20 20 20 32 0a 73 74 61 74 69 63 20 20 20 20 20 20 20 64 79 6e 61 6d 69 63 20   ┆         2 static       dynamic ┆
0x0443e0…044400             20 20 20 20 20 20 20 20 33 0a 64 79 6e 61 6d 69 63 20 20 20 20 20 20 64 79 6e 61 6d 69 63 20 20   ┆        3 dynamic      dynamic  ┆
0x044400…044420 (18, 0, 7)  20 20 20 20 20 20 20 34 0a 2a 29 0a 69 66 20 64 79 6e 5f 63 61 73 65 20 3d 20 31 20 74 68 65 6e   ┆       4 *) if dyn_case = 1 then┆
0x044420…044440             0a 73 74 61 74 69 63 5f 61 72 72 61 79 5f 64 65 66 28 70 61 63 6b 5f 61 72 72 61 79 29 0a 65 6c   ┆ static_array_def(pack_array) el┆
0x044440…044460             73 65 0a 62 65 67 69 6e 0a 70 61 63 6b 3a 3d 66 61 6c 73 65 3b 20 20 20 20 66 69 65 6c 64 73 5f   ┆se begin pack:=false;    fields_┆
0x044460…044480             70 72 5f 77 6f 72 64 3a 3d 31 3b 20 20 20 62 69 74 5f 73 70 61 6e 3a 3d 30 3b 0a 77 69 74 68 20   ┆pr_word:=1;   bit_span:=0; with ┆
0x044480…0444a0             6e 61 6d 65 74 61 62 6c 65 28 69 6e 64 65 78 5f 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 6c   ┆nametable(index_nix)^ do begin l┆
0x0444a0…0444c0             6f 77 65 72 3a 3d 6d 69 6e 3b 20 20 75 70 70 65 72 3a 3d 6d 61 78 3b 0a 69 6e 64 65 78 5f 6e 69   ┆ower:=min;  upper:=max; index_ni┆
0x0444c0…0444e0             76 3a 3d 6e 69 76 3b 20 20 20 69 6e 64 65 78 5f 6f 66 66 73 65 74 3a 3d 6f 66 66 73 65 74 3b 0a   ┆v:=niv;   index_offset:=offset; ┆
0x0444e0…044500             65 6e 64 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 63 6f 6d 70 5f 6e 69 78 29 5e 20 64   ┆end; with nametable(comp_nix)^ d┆
0x044500…044520             6f 20 62 65 67 69 6e 0a 61 6c 6c 69 67 6e 5f 74 79 70 65 20 3a 3d 20 63 6f 6e 74 65 78 74 20 69   ┆o begin allign_type := context i┆
0x044520…044540             6e 20 61 6c 6c 69 67 6e 5f 74 79 70 65 73 3b 0a 69 6e 69 74 5f 74 79 70 65 3a 3d 63 6f 6e 74 65   ┆n allign_types; init_type:=conte┆
0x044540…044560             78 74 20 69 6e 20 69 6e 69 74 5f 74 79 70 65 73 3b 0a 69 66 20 61 6c 6c 69 67 6e 5f 74 79 70 65   ┆xt in init_types; if allign_type┆
0x044560…044580             20 74 68 65 6e 20 61 6c 6c 69 67 6e 3a 3d 31 20 65 6c 73 65 20 61 6c 6c 69 67 6e 3a 3d 30 3b 0a   ┆ then allign:=1 else allign:=0; ┆
0x044580…0445a0             69 66 20 64 79 6e 5f 63 61 73 65 20 3d 20 32 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 28 2a   ┆if dyn_case = 2 then begin if (*┆
0x0445a0…0445c0             20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 65 6c 65 6d   ┆ **z80** *) versionz80 then elem┆
0x0445c0…0445e0             5f 73 69 7a 65 3a 3d 73 69 7a 65 0a 65 6c 73 65 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20   ┆_size:=size else (* **lambda or ┆
0x0445e0…044600             72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 69 66 20 6f 64 64 28 73 69 7a 65 29 20 61 6e 64 20 61 6c   ┆rc3502c** *) if odd(size) and al┆
0x044600…044620 (18, 0, 8)  6c 69 67 6e 5f 74 79 70 65 20 74 68 65 6e 0a 65 6c 65 6d 5f 73 69 7a 65 3a 3d 73 69 7a 65 2b 31   ┆lign_type then elem_size:=size+1┆
0x044620…044640             20 65 6c 73 65 20 65 6c 65 6d 5f 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 69 66 20 70 61 63 6b 5f 61   ┆ else elem_size:=size; if pack_a┆
0x044640…044660             72 72 61 79 20 74 68 65 6e 20 70 61 63 6b 3a 3d 63 6f 6e 74 65 78 74 20 69 6e 20 69 6e 64 65 78   ┆rray then pack:=context in index┆
0x044660…044680             5f 74 79 70 65 73 3b 0a 69 66 20 70 61 63 6b 20 74 68 65 6e 20 62 65 67 69 6e 0a 62 69 74 5f 73   ┆_types; if pack then begin bit_s┆
0x044680…0446a0             70 61 6e 3a 3d 62 69 74 73 28 6d 61 78 29 3b 0a 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 3a 3d   ┆pan:=bits(max); fields_pr_word:=┆
0x0446a0…0446c0             62 69 74 73 5f 70 72 5f 77 6f 72 64 20 64 69 76 20 62 69 74 5f 73 70 61 6e 3b 0a 69 66 20 66 69   ┆bits_pr_word div bit_span; if fi┆
0x0446c0…0446e0             65 6c 64 73 5f 70 72 5f 77 6f 72 64 20 3c 20 6d 69 6e 5f 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72   ┆elds_pr_word < min_fields_pr_wor┆
0x0446e0…044700             64 20 74 68 65 6e 20 62 65 67 69 6e 0a 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 3a 3d 31 3b 0a   ┆d then begin fields_pr_word:=1; ┆
0x044700…044720             70 61 63 6b 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 69 66 20 70 61 63 6b   ┆pack:=false; end; end; (*if pack┆
0x044720…044740             2a 29 0a 65 6e 64 3b 20 28 2a 64 79 6e 5f 63 61 73 65 3d 32 2a 29 0a 63 6f 6d 70 5f 6e 69 76 3a   ┆*) end; (*dyn_case=2*) comp_niv:┆
0x044740…044760             3d 6e 69 76 3b 20 20 63 6f 6d 70 5f 6f 66 66 73 65 74 3a 3d 6f 66 66 73 65 74 3b 0a 65 6e 64 3b   ┆=niv;  comp_offset:=offset; end;┆
0x044760…044780             20 28 2a 77 69 74 68 2a 29 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 32 29 3b 20   ┆ (*with*) pop_to_free_stack(2); ┆
0x044780…0447a0             20 28 2a 70 6f 70 20 70 6f 70 20 6e 61 6d 65 73 74 61 63 6b 2a 29 0a 70 75 73 68 5f 6e 61 6d 65   ┆ (*pop pop namestack*) push_name┆
0x0447a0…0447c0             28 6e 69 78 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62   ┆(nix); with nametable(nix)^ do b┆
0x0447c0…0447e0             65 67 69 6e 0a 69 66 20 61 6c 6c 69 67 6e 5f 74 79 70 65 20 74 68 65 6e 0a 28 2a 7a 38 30 3a 63   ┆egin if allign_type then (*z80:c┆
0x0447e0…044800             6f 6d 70 6f 6e 65 6e 74 20 63 6f 6e 74 61 69 6e 73 20 70 6f 6f 6c 76 61 72 69 61 62 6c 65 20 66   ┆omponent contains poolvariable f┆
0x044800…044820 (18, 0, 9)  6f 72 20 61 6c 6c 69 67 6d 65 6e 74 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 2a   ┆or alligment and initialization*┆
0x044820…044840             29 0a 28 2a 72 63 33 35 30 32 3a 63 6f 6d 70 6f 6e 65 6e 74 20 63 6f 6e 74 61 69 6e 73 20 73 79   ┆) (*rc3502:component contains sy┆
0x044840…044860             73 74 65 6d 76 61 72 69 61 62 6c 65 20 66 6f 72 20 61 6c 6c 69 67 6e 6d 65 6e 74 20 61 6e 64 20   ┆stemvariable for allignment and ┆
0x044860…044880             69 6e 69 74 2a 29 0a 28 2a 72 63 33 35 30 32 2f 32 3a 63 6f 6d 70 6f 6e 65 6e 74 20 63 6f 6e 74   ┆init*) (*rc3502/2:component cont┆
0x044880…0448a0             61 69 6e 73 20 73 79 73 74 65 6d 76 61 72 69 61 62 6c 65 28 6e 6f 74 20 61 20 70 6f 69 6e 74 65   ┆ains systemvariable(not a pointe┆
0x0448a0…0448c0             72 29 20 66 6f 72 20 61 6c 6c 69 67 6e 6d 65 6e 74 0a 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a   ┆r) for allignment  and initializ┆
0x0448c0…0448e0             61 74 69 6f 6e 2a 29 0a 63 6f 6e 74 65 78 74 20 3a 3d 20 61 6c 6c 69 67 6e 5f 61 72 72 5f 74 79   ┆ation*) context := allign_arr_ty┆
0x0448e0…044900             70 65 0a 65 6c 73 65 0a 69 66 20 69 6e 69 74 5f 74 79 70 65 20 74 68 65 6e 0a 28 2a 72 63 33 35   ┆pe else if init_type then (*rc35┆
0x044900…044920             30 32 2f 32 3a 20 63 6f 6d 70 6f 6e 65 6e 74 20 63 6f 6e 74 61 69 6e 73 20 61 20 70 6f 69 6e 74   ┆02/2: component contains a point┆
0x044920…044940             65 72 76 61 72 69 61 62 6c 65 20 66 6f 72 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 2a 29 0a   ┆ervariable for initialization*) ┆
0x044940…044960             28 2a 6e 6f 74 65 20 74 68 61 74 20 7a 38 30 20 61 6e 64 20 72 63 33 35 30 32 20 64 6f 65 73 20   ┆(*note that z80 and rc3502 does ┆
0x044960…044980             6e 6f 74 20 67 65 74 20 74 6f 20 74 68 69 73 20 70 6f 69 6e 74 20 73 69 6e 63 65 20 61 6c 6c 69   ┆not get to this point since alli┆
0x044980…0449a0             67 6e 5f 74 79 70 65 0a 20 61 6e 64 20 69 6e 69 74 5f 74 79 70 65 20 61 72 65 20 74 72 75 65 20   ┆gn_type  and init_type are true ┆
0x0449a0…0449c0             61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2a 29 0a 63 6f 6e 74 65 78 74 20 3a 3d 20 73 79   ┆at the same time*) context := sy┆
0x0449c0…0449e0             73 5f 61 72 72 61 79 5f 74 79 70 65 0a 65 6c 73 65 0a 28 2a 63 6f 6d 70 6f 6e 65 6e 74 20 64 6f   ┆s_array_type else (*component do┆
0x0449e0…044a00             65 73 20 6e 6f 74 20 63 6f 6e 74 61 69 6e 20 61 6e 79 20 73 79 73 74 65 6d 76 61 72 69 61 62 6c   ┆es not contain any systemvariabl┆
0x044a00…044a20 (18, 0, 10) 65 2a 29 0a 63 6f 6e 74 65 78 74 20 3a 3d 20 61 72 72 61 79 5f 74 79 70 65 3b 0a 6e 69 76 3a 3d   ┆e*) context := array_type; niv:=┆
0x044a20…044a40             63 75 72 72 65 6e 74 5f 6e 69 76 3b 0a 77 6f 72 64 5f 61 6c 6c 69 67 6e 3b 0a 6f 66 66 73 65 74   ┆current_niv; word_allign; offset┆
0x044a40…044a60             3a 3d 61 6c 6c 6f 63 5f 76 61 72 28 61 72 72 61 79 5f 74 65 6d 70 6c 61 74 65 5f 73 69 7a 65 29   ┆:=alloc_var(array_template_size)┆
0x044a60…044a80             3b 0a 6e 65 78 74 5f 63 6f 6d 70 3a 3d 63 6f 6d 70 5f 6e 69 78 3b 0a 70 61 63 6b 65 64 5f 63 6f   ┆; next_comp:=comp_nix; packed_co┆
0x044a80…044aa0             6d 70 3a 3d 70 61 63 6b 3b 0a 64 79 6e 61 6d 69 63 3a 3d 74 72 75 65 3b 0a 73 69 7a 65 3a 3d 30   ┆mp:=pack; dynamic:=true; size:=0┆
0x044aa0…044ac0             3b 20 20 20 6d 69 6e 3a 3d 30 3b 20 20 20 6d 61 78 3a 3d 30 3b 20 20 20 6c 69 78 3a 3d 30 3b 0a   ┆;   min:=0;   max:=0;   lix:=0; ┆
0x044ac0…044ae0             63 61 73 65 20 64 79 6e 5f 63 61 73 65 20 6f 66 0a 32 3a 20 62 65 67 69 6e 0a 70 75 74 34 28 7a   ┆case dyn_case of 2: begin put4(z┆
0x044ae0…044b00             61 72 72 61 79 31 74 65 6d 70 6c 61 74 65 2c 20 6f 66 66 73 65 74 2c 0a 69 6e 64 65 78 5f 6e 69   ┆array1template, offset, index_ni┆
0x044b00…044b20             76 2c 20 69 6e 64 65 78 5f 6f 66 66 73 65 74 2c 20 65 6c 65 6d 5f 73 69 7a 65 29 3b 0a 70 75 74   ┆v, index_offset, elem_size); put┆
0x044b20…044b40             5f 61 72 67 32 28 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 2c 20 62 69 74 5f 73 70 61 6e 29 3b   ┆_arg2(fields_pr_word, bit_span);┆
0x044b40…044b60             0a 65 6e 64 3b 0a 33 3a 20 62 65 67 69 6e 0a 70 75 74 33 28 7a 61 72 72 61 79 32 74 65 6d 70 6c   ┆ end; 3: begin put3(zarray2templ┆
0x044b60…044b80             61 74 65 2c 20 6f 66 66 73 65 74 2c 0a 63 6f 6d 70 5f 6e 69 76 2c 20 63 6f 6d 70 5f 6f 66 66 73   ┆ate, offset, comp_niv, comp_offs┆
0x044b80…044ba0             65 74 29 3b 0a 70 75 74 5f 61 72 67 33 28 6c 6f 77 65 72 2c 20 75 70 70 65 72 2c 20 61 6c 6c 69   ┆et); put_arg3(lower, upper, alli┆
0x044ba0…044bc0             67 6e 29 3b 0a 65 6e 64 3b 0a 34 3a 20 62 65 67 69 6e 0a 70 75 74 33 28 7a 61 72 72 61 79 33 74   ┆gn); end; 4: begin put3(zarray3t┆
0x044bc0…044be0             65 6d 70 6c 61 74 65 2c 20 6f 66 66 73 65 74 2c 0a 63 6f 6d 70 5f 6e 69 76 2c 20 63 6f 6d 70 5f   ┆emplate, offset, comp_niv, comp_┆
0x044be0…044c00             6f 66 66 73 65 74 29 3b 0a 70 75 74 5f 61 72 67 33 28 69 6e 64 65 78 5f 6e 69 76 2c 20 69 6e 64   ┆offset); put_arg3(index_niv, ind┆
0x044c00…044c20 (18, 0, 11) 65 78 5f 6f 66 66 73 65 74 2c 20 61 6c 6c 69 67 6e 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a   ┆ex_offset, allign); end; end; (*┆
0x044c20…044c40             63 61 73 65 2a 29 0a 65 6e 64 3b 20 28 2a 77 69 74 68 2a 29 0a 65 6e 64 3b 20 28 2a 69 66 2a 29   ┆case*) end; (*with*) end; (*if*)┆
0x044c40…044c60             0a 65 6e 64 3b 20 28 2a 61 72 72 61 79 20 64 65 66 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 66   ┆ end; (*array def*)  procedure f┆
0x044c60…044c80             69 65 6c 64 5f 6c 69 73 74 3b 0a 76 61 72 20 66 69 65 6c 64 5f 74 79 70 65 5f 6e 69 78 2c 20 66   ┆ield_list; var field_type_nix, f┆
0x044c80…044ca0             69 65 6c 64 5f 73 69 7a 65 2c 20 66 69 65 6c 64 5f 6e 69 78 2c 20 6d 61 78 5f 62 69 74 73 2c 0a   ┆ield_size, field_nix, max_bits, ┆
0x044ca0…044cc0             63 6f 6d 70 5f 6e 69 76 2c 20 63 6f 6d 70 5f 6f 66 66 73 65 74 2c 20 61 6c 6c 69 67 6e 2c 20 69   ┆comp_niv, comp_offset, allign, i┆
0x044cc0…044ce0             3a 20 69 6e 74 65 67 65 72 3b 0a 20 20 20 20 61 6c 6c 69 67 6e 5f 74 79 70 65 2c 20 70 61 63 6b   ┆: integer;     allign_type, pack┆
0x044ce0…044d00             5f 66 69 65 6c 64 2c 20 69 6e 69 74 2c 64 79 6e 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 68 65 6c 70 5f   ┆_field, init,dyn: boolean; help_┆
0x044d00…044d20             70 74 72 3a 20 73 74 61 63 6b 5f 70 74 72 3b 0a 62 65 67 69 6e 0a 70 61 63 6b 5f 66 69 65 6c 64   ┆ptr: stack_ptr; begin pack_field┆
0x044d20…044d40             3a 3d 66 61 6c 73 65 3b 0a 66 69 65 6c 64 5f 74 79 70 65 5f 6e 69 78 3a 3d 73 74 61 63 6b 5f 74   ┆:=false; field_type_nix:=stack_t┆
0x044d40…044d60             6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28   ┆op^.stacked_val; with nametable(┆
0x044d60…044d80             66 69 65 6c 64 5f 74 79 70 65 5f 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 66 69 65 6c 64 5f   ┆field_type_nix)^ do begin field_┆
0x044d80…044da0             73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 69 66 20 70 61 63 6b 5f 72 65 63 6f 72 64 20 61 6e 64 20 28   ┆size:=size; if pack_record and (┆
0x044da0…044dc0             63 6f 6e 74 65 78 74 20 69 6e 20 69 6e 64 65 78 5f 74 79 70 65 73 29 20 74 68 65 6e 20 62 65 67   ┆context in index_types) then beg┆
0x044dc0…044de0             69 6e 0a 69 66 20 6d 69 6e 3e 3d 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 6d 61 78 5f 62 69 74 73   ┆in if min>=0 then begin max_bits┆
0x044de0…044e00             3a 3d 62 69 74 73 28 6d 61 78 29 3b 0a 69 66 20 6d 61 78 5f 62 69 74 73 3c 62 69 74 73 5f 70 72   ┆:=bits(max); if max_bits<bits_pr┆
0x044e00…044e20 (18, 0, 12) 5f 77 6f 72 64 20 74 68 65 6e 0a 70 61 63 6b 5f 66 69 65 6c 64 3a 3d 74 72 75 65 3b 0a 65 6e 64   ┆_word then pack_field:=true; end┆
0x044e20…044e40             3b 0a 65 6e 64 3b 0a 69 6e 69 74 3a 3d 63 6f 6e 74 65 78 74 20 69 6e 20 69 6e 69 74 5f 74 79 70   ┆; end; init:=context in init_typ┆
0x044e40…044e60             65 73 3b 0a 61 6c 6c 69 67 6e 5f 74 79 70 65 20 3a 3d 20 63 6f 6e 74 65 78 74 20 69 6e 20 61 6c   ┆es; allign_type := context in al┆
0x044e60…044e80             6c 69 67 6e 5f 74 79 70 65 73 3b 0a 63 6f 6d 70 5f 6e 69 76 3a 3d 6e 69 76 3b 20 20 20 63 6f 6d   ┆lign_types; comp_niv:=niv;   com┆
0x044e80…044ea0             70 5f 6f 66 66 73 65 74 3a 3d 6f 66 66 73 65 74 3b 0a 64 79 6e 3a 3d 64 79 6e 61 6d 69 63 3b 0a   ┆p_offset:=offset; dyn:=dynamic; ┆
0x044ea0…044ec0             69 66 20 63 6f 6e 74 65 78 74 20 3d 20 64 79 6e 5f 73 75 62 72 61 6e 67 65 20 74 68 65 6e 20 64   ┆if context = dyn_subrange then d┆
0x044ec0…044ee0             79 6e 3a 3d 66 61 6c 73 65 3b 0a 69 66 20 61 6c 6c 69 67 6e 5f 74 79 70 65 20 74 68 65 6e 20 61   ┆yn:=false; if allign_type then a┆
0x044ee0…044f00             6c 6c 69 67 6e 3a 3d 31 20 65 6c 73 65 20 61 6c 6c 69 67 6e 3a 3d 30 3b 0a 65 6e 64 3b 0a 69 66   ┆llign:=1 else allign:=0; end; if┆
0x044f00…044f20             20 70 61 63 6b 5f 72 65 63 6f 72 64 20 61 6e 64 20 6e 6f 74 20 70 61 63 6b 5f 66 69 65 6c 64 20   ┆ pack_record and not pack_field ┆
0x044f20…044f40             74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 63 75 72 72 65 6e 74 5f 62 69 74 3e 30 20 74 68 65 6e   ┆then begin if current_bit>0 then┆
0x044f40…044f60             20 62 65 67 69 6e 0a 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 3a 3d 66 69 65 6c 64 5f 61 64 64 28   ┆ begin record_offset:=field_add(┆
0x044f60…044f80             72 65 63 6f 72 64 5f 6f 66 66 73 65 74 2c 66 69 65 6c 64 5f 75 6e 69 74 65 29 3b 0a 69 66 20 64   ┆record_offset,field_unite); if d┆
0x044f80…044fa0             79 6e 5f 66 69 65 6c 64 73 20 74 68 65 6e 20 70 75 74 30 28 7a 69 6e 63 66 69 65 6c 64 29 3b 0a   ┆yn_fields then put0(zincfield); ┆
0x044fa0…044fc0             65 6e 64 3b 0a 63 75 72 72 65 6e 74 5f 62 69 74 3a 3d 30 3b 0a 65 6e 64 3b 0a 61 6c 6c 69 67 6e   ┆end; current_bit:=0; end; allign┆
0x044fc0…044fe0             5f 66 69 65 6c 64 73 20 3a 3d 20 61 6c 6c 69 67 6e 5f 66 69 65 6c 64 73 20 6f 72 20 61 6c 6c 69   ┆_fields := allign_fields or alli┆
0x044fe0…045000             67 6e 5f 74 79 70 65 3b 0a 69 6e 69 74 5f 66 69 65 6c 64 73 3a 3d 69 6e 69 74 5f 66 69 65 6c 64   ┆gn_type; init_fields:=init_field┆
0x045000…045020 (18, 0, 13) 73 20 6f 72 20 69 6e 69 74 3b 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 69 64 63   ┆s or init; pop_to_free_stack(idc┆
0x045020…045040             6f 75 6e 74 2b 31 29 3b 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 66 72 65 65 5f 73 74 61 63 6b 3b 0a   ┆ount+1); help_ptr:= free_stack; ┆
0x045040…045060             66 6f 72 20 69 3a 3d 69 64 63 6f 75 6e 74 20 64 6f 77 6e 74 6f 20 31 20 64 6f 20 62 65 67 69 6e   ┆for i:=idcount downto 1 do begin┆
0x045060…045080             0a 66 69 65 6c 64 5f 6e 69 78 3a 3d 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61   ┆ field_nix:=help_ptr^.stacked_va┆
0x045080…0450a0             6c 3b 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65 72 5f 65   ┆l; help_ptr:= help_ptr^.former_e┆
0x0450a0…0450c0             6c 65 6d 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 66 69 65 6c 64 5f 6e 69 78 29 5e 20   ┆lem; with nametable(field_nix)^ ┆
0x0450c0…0450e0             64 6f 20 62 65 67 69 6e 0a 69 66 20 70 61 63 6b 5f 66 69 65 6c 64 20 74 68 65 6e 20 62 65 67 69   ┆do begin if pack_field then begi┆
0x0450e0…045100             6e 0a 69 66 20 63 75 72 72 65 6e 74 5f 62 69 74 2b 6d 61 78 5f 62 69 74 73 3e 62 69 74 73 5f 70   ┆n if current_bit+max_bits>bits_p┆
0x045100…045120             72 5f 77 6f 72 64 20 74 68 65 6e 20 62 65 67 69 6e 0a 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 3a   ┆r_word then begin record_offset:┆
0x045120…045140             3d 66 69 65 6c 64 5f 61 64 64 28 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 2c 66 69 65 6c 64 5f 75   ┆=field_add(record_offset,field_u┆
0x045140…045160             6e 69 74 65 29 3b 0a 69 66 20 64 79 6e 5f 66 69 65 6c 64 73 20 74 68 65 6e 20 70 75 74 30 28 7a   ┆nite); if dyn_fields then put0(z┆
0x045160…045180             69 6e 63 66 69 65 6c 64 29 3b 0a 63 75 72 72 65 6e 74 5f 62 69 74 3a 3d 30 3b 0a 65 6e 64 3b 0a   ┆incfield); current_bit:=0; end; ┆
0x045180…0451a0             73 69 7a 65 3a 3d 6d 61 78 5f 62 69 74 73 3b 0a 6d 61 78 3a 3d 6d 61 78 5f 62 69 74 73 3b 0a 6d   ┆size:=max_bits; max:=max_bits; m┆
0x0451a0…0451c0             69 6e 3a 3d 63 75 72 72 65 6e 74 5f 62 69 74 3b 0a 63 75 72 72 65 6e 74 5f 62 69 74 3a 3d 63 75   ┆in:=current_bit; current_bit:=cu┆
0x0451c0…0451e0             72 72 65 6e 74 5f 62 69 74 2b 6d 61 78 5f 62 69 74 73 3b 0a 69 66 20 64 79 6e 5f 66 69 65 6c 64   ┆rrent_bit+max_bits; if dyn_field┆
0x0451e0…045200             73 20 74 68 65 6e 20 62 65 67 69 6e 0a 6e 69 76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b 0a 6f   ┆s then begin niv:=current_niv; o┆
0x045200…045220 (18, 0, 14) 66 66 73 65 74 3a 3d 61 6c 6c 6f 63 5f 76 61 72 28 66 69 65 6c 64 5f 74 65 6d 70 6c 61 74 65 5f   ┆ffset:=alloc_var(field_template_┆
0x045220…045240             73 69 7a 65 29 3b 0a 70 75 74 33 28 7a 66 69 65 6c 64 73 69 7a 65 2c 20 30 2c 20 6f 66 66 73 65   ┆size); put3(zfieldsize, 0, offse┆
0x045240…045260             74 2c 20 30 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 6f 66 66 73 65 74 3a 3d 72 65 63 6f 72 64 5f 6f   ┆t, 0); end else offset:=record_o┆
0x045260…045280             66 66 73 65 74 3b 0a 69 66 20 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63   ┆ffset; if (* **lambda or rc3502c┆
0x045280…0452a0             2a 2a 20 2a 29 20 6e 6f 74 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 69 66 20 63 75 72   ┆** *) not versionz80 then if cur┆
0x0452a0…0452c0             72 65 6e 74 5f 62 69 74 20 3e 3d 20 62 69 74 73 5f 70 72 5f 62 79 74 65 20 74 68 65 6e 20 62 65   ┆rent_bit >= bits_pr_byte then be┆
0x0452c0…0452e0             67 69 6e 0a 63 75 72 72 65 6e 74 5f 62 69 74 3a 3d 63 75 72 72 65 6e 74 5f 62 69 74 20 2d 20 62   ┆gin current_bit:=current_bit - b┆
0x0452e0…045300             69 74 73 5f 70 72 5f 62 79 74 65 3b 0a 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 3a 3d 66 69 65 6c   ┆its_pr_byte; record_offset:=fiel┆
0x045300…045320             64 5f 61 64 64 28 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 2c 62 79 74 65 5f 6c 65 6e 67 74 68 29   ┆d_add(record_offset,byte_length)┆
0x045320…045340             3b 0a 69 66 20 64 79 6e 5f 66 69 65 6c 64 73 20 74 68 65 6e 20 70 75 74 30 28 7a 69 6e 63 66 69   ┆; if dyn_fields then put0(zincfi┆
0x045340…045360             65 6c 64 29 3b 0a 65 6e 64 3b 0a 65 6e 64 20 65 6c 73 65 20 62 65 67 69 6e 0a 69 66 20 61 6c 6c   ┆eld); end; end else begin if all┆
0x045360…045380             69 67 6e 5f 74 79 70 65 20 74 68 65 6e 20 66 69 65 6c 64 5f 61 6c 6c 69 67 6e 3b 0a 69 66 20 64   ┆ign_type then field_allign; if d┆
0x045380…0453a0             79 6e 5f 66 69 65 6c 64 73 20 74 68 65 6e 20 62 65 67 69 6e 0a 6e 69 76 3a 3d 63 75 72 72 65 6e   ┆yn_fields then begin niv:=curren┆
0x0453a0…0453c0             74 5f 6e 69 76 3b 0a 6f 66 66 73 65 74 3a 3d 61 6c 6c 6f 63 5f 76 61 72 28 66 69 65 6c 64 5f 74   ┆t_niv; offset:=alloc_var(field_t┆
0x0453c0…0453e0             65 6d 70 6c 61 74 65 5f 73 69 7a 65 29 3b 0a 69 66 20 64 79 6e 20 74 68 65 6e 0a 70 75 74 34 28   ┆emplate_size); if dyn then put4(┆
0x0453e0…045400             7a 64 79 6e 66 69 65 6c 64 73 69 7a 65 2c 20 61 6c 6c 69 67 6e 2c 20 6f 66 66 73 65 74 2c 0a 63   ┆zdynfieldsize, allign, offset, c┆
0x045400…045420 (18, 0, 15) 6f 6d 70 5f 6e 69 76 2c 20 63 6f 6d 70 5f 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 70 75 74 33 28   ┆omp_niv, comp_offset) else put3(┆
0x045420…045440             7a 66 69 65 6c 64 73 69 7a 65 2c 20 61 6c 6c 69 67 6e 2c 20 6f 66 66 73 65 74 2c 20 66 69 65 6c   ┆zfieldsize, allign, offset, fiel┆
0x045440…045460             64 5f 73 69 7a 65 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 73 69 7a 65 3a 3d 66 69   ┆d_size); end else begin size:=fi┆
0x045460…045480             65 6c 64 5f 73 69 7a 65 3b 20 20 20 6f 66 66 73 65 74 3a 3d 72 65 63 6f 72 64 5f 6f 66 66 73 65   ┆eld_size;   offset:=record_offse┆
0x045480…0454a0             74 3b 0a 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 3a 3d 66 69 65 6c 64 5f 61 64 64 28 72 65 63 6f   ┆t; record_offset:=field_add(reco┆
0x0454a0…0454c0             72 64 5f 6f 66 66 73 65 74 2c 20 66 69 65 6c 64 5f 73 69 7a 65 29 3b 0a 69 66 20 64 79 6e 20 74   ┆rd_offset, field_size); if dyn t┆
0x0454c0…0454e0             68 65 6e 0a 70 75 74 33 28 7a 72 65 63 6f 72 64 74 65 6d 70 6c 61 74 65 2c 20 6f 66 66 73 65 74   ┆hen put3(zrecordtemplate, offset┆
0x0454e0…045500             2c 20 63 6f 6d 70 5f 6e 69 76 2c 20 63 6f 6d 70 5f 6f 66 66 73 65 74 29 3b 0a 65 6e 64 3b 0a 65   ┆, comp_niv, comp_offset); end; e┆
0x045500…045520             6e 64 3b 0a 69 66 20 64 79 6e 5f 66 69 65 6c 64 73 20 74 68 65 6e 0a 63 6f 6e 74 65 78 74 3a 3d   ┆nd; if dyn_fields then context:=┆
0x045520…045540             64 79 6e 5f 66 69 65 6c 64 20 65 6c 73 65 20 63 6f 6e 74 65 78 74 3a 3d 66 69 65 6c 64 3b 0a 64   ┆dyn_field else context:=field; d┆
0x045540…045560             79 6e 5f 66 69 65 6c 64 73 3a 3d 64 79 6e 5f 66 69 65 6c 64 73 20 6f 72 20 64 79 6e 3b 0a 20 20   ┆yn_fields:=dyn_fields or dyn;   ┆
0x045560…045580             70 61 63 6b 65 64 5f 63 6f 6d 70 3a 3d 70 61 63 6b 5f 66 69 65 6c 64 3b 0a 69 66 20 70 61 63 6b   ┆packed_comp:=pack_field; if pack┆
0x045580…0455a0             5f 66 69 65 6c 64 20 74 68 65 6e 0a 69 66 20 73 69 7a 65 3d 62 69 74 73 5f 70 72 5f 62 79 74 65   ┆_field then if size=bits_pr_byte┆
0x0455a0…0455c0             20 74 68 65 6e 0a 69 66 20 28 6d 69 6e 3d 30 29 20 6f 72 20 28 6d 69 6e 3d 38 29 20 74 68 65 6e   ┆ then if (min=0) or (min=8) then┆
0x0455c0…0455e0             20 62 65 67 69 6e 0a 70 61 63 6b 65 64 5f 63 6f 6d 70 3a 3d 66 61 6c 73 65 3b 0a 73 69 7a 65 3a   ┆ begin packed_comp:=false; size:┆
0x0455e0…045600             3d 62 79 74 65 5f 6c 65 6e 67 74 68 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76   ┆=byte_length; if (* **z80** *) v┆
0x045600…045620 (18, 1, 1)  65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 6d 69 6e 3d 30 20 74 68   ┆ersionz80 then begin if min=0 th┆
0x045620…045640             65 6e 20 6f 66 66 73 65 74 3a 3d 6f 66 66 73 65 74 2b 31 0a 65 6e 64 0a 65 6c 73 65 0a 28 2a 20   ┆en offset:=offset+1 end else (* ┆
0x045640…045660             2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 69 66 20 6d 69 6e 3d   ┆**lambda or rc3502c** *) if min=┆
0x045660…045680             38 20 74 68 65 6e 20 6f 66 66 73 65 74 3a 3d 6f 66 66 73 65 74 2b 31 0a 65 6e 64 3b 0a 69 66 20   ┆8 then offset:=offset+1 end; if ┆
0x045680…0456a0             69 6e 69 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 6e 65 78 74 5f 63 6f 6d 70 3a 3d 63 68 61 69 6e   ┆init then begin next_comp:=chain┆
0x0456a0…0456c0             3b 20 20 63 68 61 69 6e 3a 3d 66 69 65 6c 64 5f 6e 69 78 3b 0a 63 6f 6d 70 5f 74 79 70 65 3a 3d   ┆;  chain:=field_nix; comp_type:=┆
0x0456c0…0456e0             66 69 65 6c 64 5f 74 79 70 65 5f 6e 69 78 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 69   ┆field_type_nix; end; end; end; i┆
0x0456e0…045700             64 63 6f 75 6e 74 3a 3d 30 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 63 6f 72   ┆dcount:=0; end;  procedure recor┆
0x045700…045720             64 5f 64 65 66 3b 0a 62 65 67 69 6e 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 77 69 74   ┆d_def; begin push_name(nix); wit┆
0x045720…045740             68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 70 61   ┆h nametable(nix)^ do begin if pa┆
0x045740…045760             63 6b 5f 72 65 63 6f 72 64 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 63 75 72 72 65 6e 74 5f   ┆ck_record then begin if current_┆
0x045760…045780             62 69 74 3e 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 3a 3d   ┆bit>0 then begin record_offset:=┆
0x045780…0457a0             66 69 65 6c 64 5f 61 64 64 28 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 2c 66 69 65 6c 64 5f 75 6e   ┆field_add(record_offset,field_un┆
0x0457a0…0457c0             69 74 65 29 3b 0a 69 66 20 64 79 6e 5f 66 69 65 6c 64 73 20 74 68 65 6e 20 70 75 74 30 28 7a 69   ┆ite); if dyn_fields then put0(zi┆
0x0457c0…0457e0             6e 63 66 69 65 6c 64 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 64 79 6e 61 6d 69 63 3a 3d 64 79 6e   ┆ncfield); end; end; dynamic:=dyn┆
0x0457e0…045800             5f 66 69 65 6c 64 73 3b 0a 69 66 20 64 79 6e 5f 66 69 65 6c 64 73 20 74 68 65 6e 20 62 65 67 69   ┆_fields; if dyn_fields then begi┆
0x045800…045820 (18, 1, 2)  6e 0a 6e 69 76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b 0a 6f 66 66 73 65 74 3a 3d 61 6c 6c 6f   ┆n niv:=current_niv; offset:=allo┆
0x045820…045840             63 5f 76 61 72 28 72 65 63 6f 72 64 5f 74 65 6d 70 6c 61 74 65 5f 73 69 7a 65 29 3b 0a 70 75 74   ┆c_var(record_template_size); put┆
0x045840…045860             31 28 7a 65 6e 64 74 65 6d 70 6c 61 74 65 2c 20 6f 66 66 73 65 74 29 3b 0a 73 69 7a 65 3a 3d 30   ┆1(zendtemplate, offset); size:=0┆
0x045860…045880             3b 0a 65 6e 64 0a 65 6c 73 65 0a 73 69 7a 65 3a 3d 72 65 63 6f 72 64 5f 6f 66 66 73 65 74 3b 0a   ┆; end else size:=record_offset; ┆
0x045880…0458a0             69 66 20 61 6c 6c 69 67 6e 5f 66 69 65 6c 64 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 7a 38   ┆if allign_fields then begin (*z8┆
0x0458a0…0458c0             30 20 61 6e 64 20 72 63 33 35 30 32 3a 20 73 6f 6d 65 20 66 69 65 6c 64 20 63 6f 6e 74 61 69 6e   ┆0 and rc3502: some field contain┆
0x0458c0…0458e0             73 20 61 20 73 79 73 74 65 6d 76 61 72 69 61 62 6c 65 20 66 6f 72 20 61 6c 6c 69 67 6e 6d 65 6e   ┆s a systemvariable for allignmen┆
0x0458e0…045900             74 0a 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 2a 29 0a 28 2a 72 63 33 35 30 32   ┆t  and initialization*) (*rc3502┆
0x045900…045920             2f 32 3a 20 73 6f 6d 65 20 66 69 65 6c 64 20 63 6f 6e 74 61 69 6e 73 20 61 20 73 79 73 74 65 6d   ┆/2: some field contains a system┆
0x045920…045940             76 61 72 69 61 62 6c 65 20 28 6e 6f 74 20 70 6f 69 6e 74 65 72 29 20 66 6f 72 0a 20 61 6c 6c 69   ┆variable (not pointer) for  alli┆
0x045940…045960             67 6e 6d 65 6e 74 20 61 6e 64 20 69 6e 69 74 69 6c 69 7a 61 74 69 6f 6e 2a 29 0a 63 6f 6e 74 65   ┆gnment and initilization*) conte┆
0x045960…045980             78 74 20 3a 3d 20 61 6c 6c 69 67 6e 5f 72 65 63 5f 74 79 70 65 3b 0a 6e 65 78 74 5f 63 6f 6d 70   ┆xt := allign_rec_type; next_comp┆
0x045980…0459a0             20 3a 3d 20 63 68 61 69 6e 3b 0a 65 6e 64 0a 65 6c 73 65 0a 28 2a 72 63 33 35 30 32 2f 32 3a 20   ┆ := chain; end else (*rc3502/2: ┆
0x0459a0…0459c0             73 6f 6d 65 20 66 69 65 6c 64 20 69 73 20 61 20 70 6f 69 6e 74 65 72 76 61 72 69 61 62 6c 65 20   ┆some field is a pointervariable ┆
0x0459c0…0459e0             66 6f 72 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 2a 29 0a 28 2a 6e 6f 74 65 20 74 68 61 74   ┆for initialization*) (*note that┆
0x0459e0…045a00             20 7a 38 30 20 61 6e 64 20 72 63 33 35 30 32 20 6e 65 76 65 72 20 67 65 74 73 20 74 6f 20 74 68   ┆ z80 and rc3502 never gets to th┆
0x045a00…045a20 (18, 1, 3)  69 73 20 70 6f 69 6e 74 20 73 69 6e 63 65 20 61 6c 6c 69 67 6e 5f 66 69 65 6c 64 73 0a 20 61 6e   ┆is point since allign_fields  an┆
0x045a20…045a40             64 20 69 6e 69 74 5f 66 69 65 6c 64 73 20 61 72 65 20 74 72 75 65 20 61 74 20 74 68 65 20 73 61   ┆d init_fields are true at the sa┆
0x045a40…045a60             6d 65 20 74 69 6d 65 20 66 6f 72 20 74 68 65 73 65 20 6d 61 63 68 69 6e 65 73 2a 29 0a 69 66 20   ┆me time for these machines*) if ┆
0x045a60…045a80             69 6e 69 74 5f 66 69 65 6c 64 73 20 74 68 65 6e 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d   ┆init_fields then begin context:=┆
0x045a80…045aa0             73 79 73 5f 72 65 63 6f 72 64 5f 74 79 70 65 3b 0a 6e 65 78 74 5f 63 6f 6d 70 3a 3d 63 68 61 69   ┆sys_record_type; next_comp:=chai┆
0x045aa0…045ac0             6e 3b 0a 65 6e 64 20 65 6c 73 65 0a 63 6f 6e 74 65 78 74 3a 3d 72 65 63 6f 72 64 5f 74 79 70 65   ┆n; end else context:=record_type┆
0x045ac0…045ae0             3b 0a 65 6e 64 3b 0a 70 6f 70 5f 6c 65 76 65 6c 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72   ┆; end; pop_level; end;  procedur┆
0x045ae0…045b00             65 20 73 65 74 5f 64 65 66 3b 0a 76 61 72 20 6c 6f 77 65 72 2c 75 70 70 65 72 2c 77 6f 72 64 73   ┆e set_def; var lower,upper,words┆
0x045b00…045b20             3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28   ┆: integer; begin with nametable(┆
0x045b20…045b40             73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 29 5e 20 64 6f 20 62 65 67 69   ┆stack_top^.stacked_val)^ do begi┆
0x045b40…045b60             6e 0a 6c 6f 77 65 72 3a 3d 6d 69 6e 3b 20 20 75 70 70 65 72 3a 3d 6d 61 78 3b 0a 69 66 20 64 79   ┆n lower:=min;  upper:=max; if dy┆
0x045b60…045b80             6e 61 6d 69 63 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 65 72 72 6f 72 5f 64 79 6e   ┆namic then begin error(error_dyn┆
0x045b80…045ba0             29 3b 0a 6c 6f 77 65 72 3a 3d 30 3b 20 20 20 75 70 70 65 72 3a 3d 31 3b 0a 65 6e 64 3b 0a 77 6f   ┆); lower:=0;   upper:=1; end; wo┆
0x045ba0…045bc0             72 64 73 3a 3d 75 70 70 65 72 20 64 69 76 20 62 69 74 73 5f 70 72 5f 77 6f 72 64 3b 0a 69 66 20   ┆rds:=upper div bits_pr_word; if ┆
0x045bc0…045be0             75 70 70 65 72 20 6d 6f 64 20 62 69 74 73 5f 70 72 5f 77 6f 72 64 20 3c 3e 20 30 20 74 68 65 6e   ┆upper mod bits_pr_word <> 0 then┆
0x045be0…045c00             20 77 6f 72 64 73 20 3a 3d 20 77 6f 72 64 73 20 2b 20 31 3b 0a 65 6e 64 3b 0a 70 6f 70 5f 74 6f   ┆ words := words + 1; end; pop_to┆
0x045c00…045c20 (18, 1, 4)  5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 69 66 20 6c 6f 77 65 72 3c 30 20 74 68 65 6e 20   ┆_free_stack(1); if lower<0 then ┆
0x045c20…045c40             62 65 67 69 6e 0a 65 72 72 6f 72 28 73 65 74 5f 64 65 66 5f 65 72 72 6f 72 29 3b 20 20 6c 6f 77   ┆begin error(set_def_error);  low┆
0x045c40…045c60             65 72 3a 3d 30 3b 0a 65 6e 64 3b 0a 69 66 20 77 6f 72 64 73 3d 30 20 74 68 65 6e 20 77 6f 72 64   ┆er:=0; end; if words=0 then word┆
0x045c60…045c80             73 3a 3d 31 3b 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74   ┆s:=1; push_name(nix); with namet┆
0x045c80…045ca0             61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 73 65 74   ┆able(nix)^ do begin context:=set┆
0x045ca0…045cc0             5f 74 79 70 65 3b 0a 6d 69 6e 3a 3d 6c 6f 77 65 72 3b 20 20 6d 61 78 3a 3d 75 70 70 65 72 3b 0a   ┆_type; min:=lower;  max:=upper; ┆
0x045cc0…045ce0             73 69 7a 65 3a 3d 77 6f 72 64 73 2a 32 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73 65 3b 0a 65   ┆size:=words*2; dynamic:=false; e┆
0x045ce0…045d00             6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 6f 6f 6c 5f 64 65 66 3b 0a 76 61   ┆nd; end;  procedure pool_def; va┆
0x045d00…045d20             72 20 64 61 74 61 5f 73 69 7a 65 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 77 69 74 68   ┆r data_size: integer; begin with┆
0x045d20…045d40             20 6e 61 6d 65 74 61 62 6c 65 28 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61   ┆ nametable(stack_top^.stacked_va┆
0x045d40…045d60             6c 29 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b   ┆l)^ do begin if stack_top^.stack┆
0x045d60…045d80             65 64 5f 76 61 6c 20 3d 20 6e 69 6c 74 79 70 65 5f 6e 69 78 20 74 68 65 6e 0a 64 61 74 61 5f 73   ┆ed_val = niltype_nix then data_s┆
0x045d80…045da0             69 7a 65 3a 3d 30 0a 65 6c 73 65 0a 64 61 74 61 5f 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 69 66 20   ┆ize:=0 else data_size:=size; if ┆
0x045da0…045dc0             64 79 6e 61 6d 69 63 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 65 72 72 6f 72 5f 64   ┆dynamic then begin error(error_d┆
0x045dc0…045de0             79 6e 29 3b 0a 64 61 74 61 5f 73 69 7a 65 3a 3d 30 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 70 6f 70   ┆yn); data_size:=0; end; end; pop┆
0x045de0…045e00             5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78   ┆_to_free_stack(1); push_name(nix┆
0x045e00…045e20 (18, 1, 5)  29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e   ┆); with nametable(nix)^ do begin┆
0x045e20…045e40             0a 63 6f 6e 74 65 78 74 3a 3d 70 6f 6f 6c 5f 74 79 70 65 3b 0a 73 69 7a 65 3a 3d 73 65 6d 61 70   ┆ context:=pool_type; size:=semap┆
0x045e40…045e60             68 6f 72 5f 6c 65 6e 67 74 68 3b 0a 6d 69 6e 3a 3d 74 61 6b 65 5f 65 78 70 72 3b 0a 69 66 20 6d   ┆hor_length; min:=take_expr; if m┆
0x045e60…045e80             69 6e 3c 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 70 6f 6f 6c 5f 64 65 66 5f 65   ┆in<0 then begin error(pool_def_e┆
0x045e80…045ea0             72 72 6f 72 29 3b 20 20 6d 69 6e 3a 3d 31 3b 0a 65 6e 64 3b 0a 6d 61 78 3a 3d 64 61 74 61 5f 73   ┆rror);  min:=1; end; max:=data_s┆
0x045ea0…045ec0             69 7a 65 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a   ┆ize; dynamic:=false; end; end;  ┆
0x045ec0…045ee0             73 69 7a 65 3a 3d 77 6f 72 64 73 2a 32 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73 65 3b 0a 65   ┆size:=words*2; dynamic:=false; e┆
0x045ee0…045f00             6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 6f 6f 6c 5f 64 65 66 3b 0a 76 61   ┆nd; end;  procedure pool_def; va┆
0x045f00…045f20             72 20 64 61 74 61 5f 73 69 7a 65 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 77 69 74 68   ┆r data_size: integer; begin with┆
0x045f20…045f40             20 6e 61 6d 65 74 61 62 6c 65 28 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61   ┆ nametable(stack_top^.stacked_va┆
0x045f40…045f60             6c 29 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b   ┆l)^ do begin if stack_top^.stack┆
0x045f60…045f80             65 64 5f 76 61 6c 20 3d 20 6e 69 6c 74 79 70 65 5f 6e 69 78 20 74 68 65 6e 0a 64 61 74 61 5f 73   ┆ed_val = niltype_nix then data_s┆
0x045f80…045fa0             69 7a 65 3a 3d 30 0a 65 6c 73 65 0a 64 61 74 61 5f 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 69 66 20   ┆ize:=0 else data_size:=size; if ┆
0x045fa0…045fc0             64 79 6e 61 6d 69 63 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 65 72 72 6f 72 5f 64   ┆dynamic then begin error(error_d┆
0x045fc0…045fe0             79 6e 29 3b 0a 64 61 74 61 5f 73 69 7a 65 3a 3d 30 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 70 6f 70   ┆yn); data_size:=0; end; end; pop┆
0x045fe0…046000             5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78   ┆_to_free_stack(1); push_name(nix┆
0x046000…046020 (18, 1, 6)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 78 70 35 69 6e 69 74 00 00 00 00 00 00 00   ┆../sw2103/src/rtp/xp5init       ┆
0x046020…046040             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x046060…046080             00 00 00 00 20 20 20 37 35 35 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       755     255     146      ┆
0x046080…0460a0             20 31 36 35 34 31 37 20 20 35 32 36 36 37 36 35 34 35 30 20 20 31 30 33 32 35 00 20 00 00 00 00   ┆ 165417  5266765450  10325      ┆
0x0460a0…0460c0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x046200…046220 (18, 1, 7)  0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ (*-----------------------------┆
0x046220…046240             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x046240…046260             2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39 32 20 20 44   ┆---- -- -- (C) Copyrigth 1992  D┆
0x046260…046280             41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 35 49 4e 49 54 2e 50 41 53 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d   ┆ANOSI -- -- P5INIT.PAS -- ------┆
0x046280…0462a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0462a0…0462c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d   ┆----------------------------- --┆
0x0462c0…0462e0             0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Revisions -- ---------------┆
0x0462e0…046300             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 32 2e 30 20 20 20 39 32 2e 30   ┆----------------- --  2.0   92.0┆
0x046300…046320             35 2e 32 31 20 20 42 42 20 20 20 20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20 31 2e 31 32   ┆5.21  BB    Used in release 1.12┆
0x046320…046340             0a 2d 2d 20 20 32 2e 30 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20   ┆ --  2.0   92.10.14  HEJ   SCCS ┆
0x046340…046360             61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆and UNIX used. -- --------------┆
0x046360…046380             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x046380…0463a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e   ┆--------------------- -- SCCS in┆
0x0463a0…0463c0             66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f   ┆formation -- File   :  %P% -- Mo┆
0x0463c0…0463e0             64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09   ┆dule :  %M% -- Version:  %I% -- ┆
0x0463e0…046400             44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆Date   :  %E%  %U% -------------┆
0x046400…046420 (18, 1, 8)  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x046420…046440             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 63 6f 6e 73 74   ┆---------------------- *)  const┆
0x046440…046460             0a 66 69 6c 72 65 63 5f 6d 61 78 20 3d 20 32 35 36 3b 0a 0a 64 65 66 61 75 6c 74 5f 6c 61 6d 62   ┆ filrec_max = 256;  default_lamb┆
0x046460…046480             64 61 5f 76 65 72 73 69 6f 6e 20 3d 20 35 3b 20 20 28 2a 20 64 65 74 65 72 6d 69 6e 65 73 20 6d   ┆da_version = 5;  (* determines m┆
0x046480…0464a0             69 63 72 6f 2d 70 72 6f 67 72 61 6d 20 76 65 72 73 69 6f 6e 20 2a 29 0a 76 65 72 73 69 6f 6e 5f   ┆icro-program version *) version_┆
0x0464a0…0464c0             64 61 74 65 3d 20 27 39 32 2e 30 35 2e 32 31 27 3b 0a 0a 28 2a 20 20 20 63 6f 6e 73 74 2e 20 20   ┆date= '92.05.21';  (*   const.  ┆
0x0464c0…0464e0             20 67 6c 6f 62 61 6c 20 66 6f 72 20 70 61 73 73 35 3a 20 20 20 20 20 20 20 2a 29 0a 63 6f 6d 70   ┆ global for pass5:       *) comp┆
0x0464e0…046500             69 6c 65 72 5f 74 65 73 74 20 3d 20 74 72 75 65 3b 20 28 2a 75 73 65 64 20 66 6f 72 20 74 65 73   ┆iler_test = true; (*used for tes┆
0x046500…046520             74 69 6e 67 20 72 63 33 35 30 32 63 20 63 68 61 6e 67 65 73 2a 29 0a 0a 6f 77 6e 70 61 73 73 6e   ┆ting rc3502c changes*)  ownpassn┆
0x046520…046540             6f 20 3d 20 35 3b 20 20 28 2a 20 70 61 73 73 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 69 73 20 70   ┆o = 5;  (* pass number of this p┆
0x046540…046560             61 73 73 20 2a 29 0a 76 65 72 73 69 6f 6e 70 61 73 73 34 20 3d 20 36 30 30 3b 0a 76 65 72 73 69   ┆ass *) versionpass4 = 600; versi┆
0x046560…046580             6f 6e 70 61 73 73 35 20 3d 20 32 30 30 3b 20 28 2a 20 76 65 72 73 69 6f 6e 20 2a 20 31 30 30 20   ┆onpass5 = 200; (* version * 100 ┆
0x046580…0465a0             2b 20 73 75 62 76 65 72 73 69 6f 6e 20 2a 29 20 28 2a 20 38 36 30 39 30 38 20 2a 29 0a 0a 63 6f   ┆+ subversion *) (* 860908 *)  co┆
0x0465a0…0465c0             6e 73 74 5f 6e 69 76 5f 30 20 3d 20 30 3b 0a 73 69 7a 65 5f 6f 66 5f 72 65 74 75 72 6e 5f 70 6f   ┆nst_niv_0 = 0; size_of_return_po┆
0x0465c0…0465e0             69 6e 74 20 3d 20 38 3b 20 28 2a 20 72 6f 6f 6d 20 66 6f 72 20 20 61 63 74 69 76 61 74 69 6f 6e   ┆int = 8; (* room for  activation┆
0x0465e0…046600             20 72 65 63 6f 72 64 20 2a 29 0a 28 2a 20 6d 61 78 20 68 77 20 73 74 61 63 6b 20 73 69 7a 65 20   ┆ record *) (* max hw stack size ┆
0x046600…046620 (18, 1, 9)  2a 29 0a 6d 61 78 5f 68 77 5f 73 74 61 63 6b 20 3d 20 31 36 20 3b 20 28 2a 62 79 74 65 73 2a 29   ┆*) max_hw_stack = 16 ; (*bytes*)┆
0x046620…046640             0a 0a 0a 65 78 74 5f 64 65 73 63 72 5f 73 69 7a 65 3d 20 32 34 3b 20 28 2a 20 73 69 7a 65 20 6f   ┆   ext_descr_size= 24; (* size o┆
0x046640…046660             66 20 6f 6e 65 20 65 6c 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 65 78 74 65 72 6e 61 6c 20 64 65   ┆f one element in the external de┆
0x046660…046680             73 63 72 69 70 74 69 6f 6e 20 74 61 62 6c 65 20 69 6e 20 68 61 6c 66 20 77 6f 72 64 73 20 2a 29   ┆scription table in half words *)┆
0x046680…0466a0             0a 0a 65 78 74 5f 6d 61 78 5f 72 6f 75 74 69 6e 65 20 3d 20 31 35 30 3b 20 28 2a 20 6d 61 78 20   ┆  ext_max_routine = 150; (* max ┆
0x0466a0…0466c0             6e 6f 20 6f 66 20 77 6f 72 64 73 20 28 6f 66 20 32 20 63 68 61 72 73 20 65 61 63 68 29 20 70 72   ┆no of words (of 2 chars each) pr┆
0x0466c0…0466e0             20 69 6e 6c 69 6e 65 20 72 6f 75 74 69 6e 65 20 2a 29 0a 65 78 74 5f 6d 61 78 5f 63 68 61 72 62   ┆ inline routine *) ext_max_charb┆
0x0466e0…046700             75 66 20 3d 20 35 30 30 30 3b 20 28 2a 20 6e 75 6d 62 65 72 20 6f 66 20 77 6f 72 64 73 20 69 6e   ┆uf = 5000; (* number of words in┆
0x046700…046720             20 63 68 61 72 62 75 66 20 2a 29 0a 64 65 73 63 72 5f 6d 61 78 5f 70 61 72 61 6d 3d 20 33 30 3b   ┆ charbuf *) descr_max_param= 30;┆
0x046720…046740             20 28 2a 20 6d 61 78 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20   ┆ (* max number of parameters of ┆
0x046740…046760             61 20 6d 6f 64 75 6c 65 20 2a 29 0a 0a 63 5f 73 69 7a 65 5f 69 64 65 6e 74 69 66 69 65 72 3d 20   ┆a module *)  c_size_identifier= ┆
0x046760…046780             31 32 3b 0a 0a 74 79 70 65 0a 66 69 6c 72 65 63 20 3d 20 61 72 72 61 79 5b 31 2e 2e 66 69 6c 72   ┆12;  type filrec = array[1..filr┆
0x046780…0467a0             65 63 5f 6d 61 78 5d 20 6f 66 20 69 6e 74 65 67 65 72 3b 0a 0a 69 64 65 6e 74 69 66 69 65 72 3d   ┆ec_max] of integer;  identifier=┆
0x0467a0…0467c0             20 70 61 63 6b 65 64 20 61 72 72 61 79 20 5b 20 31 2e 2e 63 5f 73 69 7a 65 5f 69 64 65 6e 74 69   ┆ packed array [ 1..c_size_identi┆
0x0467c0…0467e0             66 69 65 72 20 5d 20 6f 66 20 63 68 61 72 3b 0a 28 2a 20 20 20 20 74 79 70 65 20 64 65 66 69 6e   ┆fier ] of char; (*    type defin┆
0x0467e0…046800             69 74 69 6f 6e 73 20 66 72 6f 6d 20 6d 6f 64 75 6c 65 73 3a 20 20 20 20 20 2a 29 0a 0a 75 73 65   ┆itions from modules:     *)  use┆
0x046800…046820 (18, 1, 10) 6d 6f 64 65 73 20 3d 20 28 73 79 73 5f 75 73 65 2c 20 67 65 6e 65 72 61 6c 5f 75 73 65 29 3b 0a   ┆modes = (sys_use, general_use); ┆
0x046820…046840             65 78 74 5f 73 74 61 74 65 73 20 3d 20 28 65 78 74 5f 75 6e 75 73 65 64 2c 20 65 78 74 5f 64 65   ┆ext_states = (ext_unused, ext_de┆
0x046840…046860             63 6c 61 72 65 64 2c 20 65 78 74 5f 6f 70 65 6e 2c 20 65 78 74 5f 63 6c 6f 73 65 64 29 3b 0a 0a   ┆clared, ext_open, ext_closed);  ┆
0x046860…046880             70 61 72 61 6d 5f 70 74 72 3d 20 5e 20 70 61 72 61 6d 5f 64 65 73 63 72 3b 0a 0a 70 61 72 61 6d   ┆param_ptr= ^ param_descr;  param┆
0x046880…0468a0             5f 64 65 73 63 72 20 3d 20 72 65 63 6f 72 64 0a 6e 65 78 74 5f 70 61 72 61 6d 3a 20 70 61 72 61   ┆_descr = record next_param: para┆
0x0468a0…0468c0             6d 5f 70 74 72 3b 0a 6b 69 6e 64 2c 0a 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64   ┆m_ptr; kind, size : integer; end┆
0x0468c0…0468e0             3b 0a 0a 0a 65 78 74 5f 64 65 73 63 72 20 3d 20 72 65 63 6f 72 64 0a 73 74 61 74 65 20 3a 20 65   ┆;   ext_descr = record state : e┆
0x0468e0…046900             78 74 5f 73 74 61 74 65 73 3b 0a 6d 6f 64 65 20 20 3a 20 75 73 65 6d 6f 64 65 73 3b 0a 69 64 20   ┆xt_states; mode  : usemodes; id ┆
0x046900…046920             20 20 20 3a 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 0a 28 2a 20 70 61 72 61 6d 65 74 65 72 20 64   ┆   : identifier;  (* parameter d┆
0x046920…046940             65 73 63 72 69 70 74 69 6f 6e 20 2a 29 0a 6e 6f 5f 6f 66 5f 70 61 72 61 6d 20 3a 20 69 6e 74 65   ┆escription *) no_of_param : inte┆
0x046940…046960             67 65 72 3b 0a 70 61 72 61 6d 70 74 72 20 20 20 20 3a 20 70 61 72 61 6d 5f 70 74 72 3b 20 20 28   ┆ger; paramptr    : param_ptr;  (┆
0x046960…046980             2a 20 63 68 61 69 6e 20 6f 66 20 70 61 72 61 6d 65 74 65 72 73 20 2a 29 0a 0a 28 2a 20 73 70 65   ┆* chain of parameters *)  (* spe┆
0x046980…0469a0             63 69 61 6c 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20 6f 70 65 6e 20 72 6f 75 74 69 6e 65 73   ┆cial variables for open routines┆
0x0469a0…0469c0             20 2a 29 0a 61 70 70 65 74 69 74 65 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 77 6f 72 64 63 6f 75   ┆ *) appetite  : integer; wordcou┆
0x0469c0…0469e0             6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 6e 6f 20 6f 66 20 77 6f 72 64 73 20 28 6f   ┆nt : integer;  (* no of words (o┆
0x0469e0…046a00             66 20 32 20 63 68 61 72 73 20 65 61 63 68 29 20 69 6e 20 6f 70 65 6e 20 72 6f 75 74 69 6e 65 20   ┆f 2 chars each) in open routine ┆
0x046a00…046a20 (18, 1, 11) 2a 29 0a 66 69 72 73 74 77 6f 72 64 20 3a 20 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 3c 20 30 3a   ┆*) firstword : integer;  (* < 0:┆
0x046a20…046a40             20 66 69 6c 65 20 70 6f 73 69 74 69 6f 6e 2c 20 3e 20 30 3a 20 69 6e 64 65 78 20 69 6e 20 63 68   ┆ file position, > 0: index in ch┆
0x046a40…046a60             61 72 20 62 75 66 20 2a 29 0a 0a 28 2a 20 73 70 65 63 69 61 6c 20 76 61 72 69 61 62 6c 65 73 20   ┆ar buf *)  (* special variables ┆
0x046a60…046a80             66 6f 72 20 63 6c 6f 73 65 64 20 72 6f 75 74 69 6e 65 73 20 2a 29 0a 6e 6f 5f 6f 66 5f 75 73 65   ┆for closed routines *) no_of_use┆
0x046a80…046aa0             73 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 28 2a 20 6c 69 6e 6b 20 74 68 72 6f 75 67 68 20 65 78   ┆s : integer;  (* link through ex┆
0x046aa0…046ac0             74 5f 64 65 63 6c 61 72 65 64 20 65 6e 74 72 69 65 73 20 2a 29 0a 64 65 63 6c 5f 6c 69 6e 6b 20   ┆t_declared entries *) decl_link ┆
0x046ac0…046ae0             3a 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64 3b 20 28 2a 20 65 78 74 20 64 65 73 63 72 20 2a 29 0a   ┆: integer; end; (* ext descr *) ┆
0x046ae0…046b00             0a 0a 28 2a 20 63 61 73 65 20 74 61 62 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 2a 29 0a 63 61   ┆  (* case table descriptor *) ca┆
0x046b00…046b20             73 65 5f 74 61 62 6c 65 5f 70 74 72 3d 20 5e 20 63 61 73 65 5f 74 61 62 6c 65 5f 65 6e 74 72 79   ┆se_table_ptr= ^ case_table_entry┆
0x046b20…046b40             3b 0a 63 61 73 65 5f 74 61 62 6c 65 5f 65 6e 74 72 79 3d 20 72 65 63 6f 72 64 0a 6e 65 78 74 5f   ┆; case_table_entry= record next_┆
0x046b40…046b60             65 6e 74 72 79 2c 0a 66 6f 72 6d 65 72 5f 65 6e 74 72 79 3a 20 63 61 73 65 5f 74 61 62 6c 65 5f   ┆entry, former_entry: case_table_┆
0x046b60…046b80             70 74 72 3b 20 28 2a 20 63 6f 75 62 6c 65 20 63 68 61 69 6e 65 64 20 6c 69 73 74 20 6f 66 20 63   ┆ptr; (* couble chained list of c┆
0x046b80…046ba0             61 73 65 20 74 61 62 6c 65 20 65 6e 74 72 79 20 64 65 73 63 72 69 70 74 6f 72 73 20 2a 29 0a 66   ┆ase table entry descriptors *) f┆
0x046ba0…046bc0             69 72 73 74 2c 20 20 28 2a 20 6c 6f 77 65 72 20 72 61 6e 67 65 20 76 61 6c 75 65 20 2a 29 0a 6c   ┆irst,  (* lower range value *) l┆
0x046bc0…046be0             61 73 74 2c 20 20 20 28 2a 20 75 70 70 65 72 20 72 61 6e 67 65 20 76 61 6c 75 65 20 2a 29 0a 78   ┆ast,   (* upper range value *) x┆
0x046be0…046c00             5f 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 3b 20 28 2a 20 6c 61 62 65 6c 20 73 65 71 75 65 6e   ┆_index: integer; (* label sequen┆
0x046c00…046c20 (18, 1, 12) 63 65 20 6e 75 6d 62 65 72 20 2a 29 0a 65 6e 64 3b 0a 0a 75 6e 69 76 65 72 73 61 6c 5f 70 74 72   ┆ce number *) end;  universal_ptr┆
0x046c20…046c40             3d 20 5e 69 6e 74 65 67 65 72 3b 0a 76 61 72 0a 69 6e 63 6f 64 65 5f 66 69 6c 70 74 72 20 3a 20   ┆= ^integer; var incode_filptr : ┆
0x046c40…046c60             5e 20 66 69 6c 72 65 63 3b 0a 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 20 69 6e 74 65 67 65   ┆^ filrec; incode_fileix : intege┆
0x046c60…046c80             72 3b 0a 65 78 74 63 6f 64 65 5f 66 69 6c 70 74 72 3a 20 5e 20 66 69 6c 72 65 63 3b 0a 65 78 74   ┆r; extcode_filptr: ^ filrec; ext┆
0x046c80…046ca0             63 6f 64 65 5f 66 69 6c 65 69 78 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 70 61 73 73 35 5f 6f 6b 20   ┆code_fileix: integer;  pass5_ok ┆
0x046ca0…046cc0             3a 20 20 62 6f 6f 6c 65 61 6e 3b 0a 69 6e 5f 70 61 73 73 35 20 3a 20 66 69 6c 65 20 6f 66 20 66   ┆:  boolean; in_pass5 : file of f┆
0x046cc0…046ce0             69 6c 72 65 63 3b 0a 6f 75 74 5f 70 61 73 73 35 20 3a 20 74 65 78 74 3b 0a 65 78 74 5f 70 61 73   ┆ilrec; out_pass5 : text; ext_pas┆
0x046ce0…046d00             73 35 20 3a 20 66 69 6c 65 20 6f 66 20 66 69 6c 72 65 63 3b 0a 0a 6c 61 6d 62 64 61 5f 76 65 72   ┆s5 : file of filrec;  lambda_ver┆
0x046d00…046d20             73 69 6f 6e 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 65 78 74 5f 74 61 62 5f 6d 61 78 3a 20 69 6e   ┆sion : integer;  ext_tab_max: in┆
0x046d20…046d40             74 65 67 65 72 3b 0a 0a 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3a 20 63 61 73 65 5f   ┆teger;  case_tab_freelist: case_┆
0x046d40…046d60             74 61 62 6c 65 5f 70 74 72 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 61 6c 6c 6f 63 5f 65 78 74   ┆table_ptr;   procedure alloc_ext┆
0x046d60…046d80             5f 74 61 62 5f 61 6e 64 5f 63 61 6c 6c 5f 70 61 73 73 35 3b 0a 0a 63 6f 6e 73 74 0a 6d 61 78 5f   ┆_tab_and_call_pass5;  const max_┆
0x046d80…046da0             65 78 74 5f 6e 61 6d 65 73 20 3d 20 36 35 35 32 31 20 64 69 76 20 73 69 7a 65 6f 66 28 65 78 74   ┆ext_names = 65521 div sizeof(ext┆
0x046da0…046dc0             5f 64 65 73 63 72 29 3b 0a 74 79 70 65 0a 74 5f 65 78 74 5f 74 61 62 3d 20 61 72 72 61 79 20 5b   ┆_descr); type t_ext_tab= array [┆
0x046dc0…046de0             31 2e 2e 6d 61 78 5f 65 78 74 5f 6e 61 6d 65 73 5d 20 6f 66 20 65 78 74 5f 64 65 73 63 72 3b 0a   ┆1..max_ext_names] of ext_descr; ┆
0x046de0…046e00             76 61 72 0a 6e 65 65 64 65 64 5f 73 69 7a 65 20 3a 20 77 6f 72 64 3b 0a 70 5f 65 78 74 5f 74 61   ┆var needed_size : word; p_ext_ta┆
0x046e00…046e20 (18, 1, 13) 62 20 3a 20 5e 20 74 5f 65 78 74 5f 74 61 62 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 70 61 73   ┆b : ^ t_ext_tab;  procedure  pas┆
0x046e20…046e40             73 35 28 20 76 61 72 20 65 78 74 5f 74 61 62 3a 20 74 5f 65 78 74 5f 74 61 62 3b 20 76 61 72 20   ┆s5( var ext_tab: t_ext_tab; var ┆
0x046e40…046e60             70 61 73 73 35 5f 6f 6b 20 3a 20 62 6f 6f 6c 65 61 6e 20 29 3b 0a 0a 6c 61 62 65 6c 0a 0a 20 20   ┆pass5_ok : boolean );  label    ┆
0x046e60…046e80             20 31 20 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 20 65 78 69 74 20   ┆ 1 ;                   (*  exit ┆
0x046e80…046ea0             6f 6e 20 66 61 74 61 6c 20 65 72 72 6f 72 20 20 2a 29 0a 0a 63 6f 6e 73 74 0a 0a 28 2a 20 20 72   ┆on fatal error  *)  const  (*  r┆
0x046ea0…046ec0             65 70 72 2e 20 6f 66 20 73 74 61 6e 64 61 72 64 20 76 61 6c 75 65 73 20 69 6e 20 52 65 61 6c 2d   ┆epr. of standard values in Real-┆
0x046ec0…046ee0             54 69 6d 65 20 50 61 73 63 61 6c 20 3a 20 20 2a 29 0a 63 6f 6e 73 74 5f 6e 69 6c 5f 76 61 72 20   ┆Time Pascal :  *) const_nil_var ┆
0x046ee0…046f00             3d 20 31 3b 20 28 2a 6e 69 6c 76 61 6c 75 65 20 66 6f 72 20 72 65 66 65 72 65 6e 63 65 2c 20 70   ┆= 1; (*nilvalue for reference, p┆
0x046f00…046f20             6f 69 6e 74 65 72 20 61 6e 64 20 73 68 61 64 6f 77 76 61 72 69 61 62 6c 65 73 2e 2a 29 0a 28 2a   ┆ointer and shadowvariables.*) (*┆
0x046f20…046f40             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 69 76 65 20 20 76 61 6c 75   ┆                   passive  valu┆
0x046f40…046f60             65 20 66 6f 72 20 73 65 6d 61 70 68 6f 72 65 76 61 72 69 61 62 6c 65 73 20 74 6f 6f 20 2e 2a 29   ┆e for semaphorevariables too .*)┆
0x046f60…046f80             0a 6a 75 6d 70 5f 61 63 72 6f 73 73 5f 66 69 72 73 74 20 3d 20 34 3b 20 28 2a 20 75 73 65 64 20   ┆ jump_across_first = 4; (* used ┆
0x046f80…046fa0             66 6f 72 20 6a 75 6d 70 69 6e 67 20 61 63 72 6f 73 73 20 74 68 65 20 66 69 72 73 74 20 69 6e 73   ┆for jumping across the first ins┆
0x046fa0…046fc0             74 72 75 63 74 69 6f 6e 20 6f 66 20 61 20 2a 29 0a 28 2a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆truction of a *) (*             ┆
0x046fc0…046fe0             20 20 20 20 20 20 20 20 20 20 20 72 6f 75 74 69 6e 65 20 69 2e 20 65 2e 20 72 65 61 61 64 20 72   ┆           routine i. e. reaad r┆
0x046fe0…047000             6c 69 6e 65 74 61 62 20 62 65 63 61 75 73 65 20 6f 66 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 2a 29   ┆linetab because of conventions*)┆
0x047000…047020 (18, 1, 14) 0a 76 61 6c 75 65 5f 66 61 6c 73 65 20 3d 20 30 3b 0a 76 61 6c 75 65 5f 74 72 75 65 20 3d 20 31   ┆ value_false = 0; value_true = 1┆
0x047020…047040             3b 0a 28 2a 20 6e 69 6c 20 66 69 65 6c 64 20 69 6e 20 72 65 66 65 72 65 6e 63 65 20 61 6e 64 20   ┆; (* nil field in reference and ┆
0x047040…047060             73 68 61 64 6f 77 20 76 61 72 69 61 62 6c 65 73 20 2a 29 0a 63 5f 72 65 66 5f 66 69 65 6c 64 5f   ┆shadow variables *) c_ref_field_┆
0x047060…047080             6e 69 6c 20 3d 20 33 38 35 35 20 3b 20 20 28 2a 20 74 68 65 20 66 69 65 6c 64 20 5b 31 35 20 2e   ┆nil = 3855 ;  (* the field [15 .┆
0x047080…0470a0             2e 20 31 35 5d 2c 20 69 2e 65 2e 20 20 32 35 36 20 58 20 31 35 20 2b 20 20 31 35 20 20 2a 29 0a   ┆. 15], i.e.  256 X 15 +  15  *) ┆
0x0470a0…0470c0             63 5f 73 68 61 64 6f 77 5f 66 69 65 6c 64 5f 6e 69 6c 20 3d 20 31 37 39 39 3b 20 28 2a 20 37 2a   ┆c_shadow_field_nil = 1799; (* 7*┆
0x0470c0…0470e0             32 35 36 20 2b 20 37 20 2a 29 0a 64 65 73 63 72 5f 66 72 65 65 5f 77 6f 72 64 73 20 3d 20 34 3b   ┆256 + 7 *) descr_free_words = 4;┆
0x0470e0…047100             20 28 2a 6e 75 6d 62 65 72 20 6f 66 20 75 6e 75 73 65 64 20 77 6f 72 64 73 20 69 6e 20 64 65 73   ┆ (*number of unused words in des┆
0x047100…047120             63 72 2a 29 0a 0a 28 2a 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 70 61 73 73 36 2d 74 6f 6b   ┆cr*)  (* definition of pass6-tok┆
0x047120…047140             65 6e 73 20 2a 29 0a 7a 62 65 67 69 6e 20 3d 20 20 20 27 62 27 3b 0a 7a 65 6e 64 6c 69 73 74 20   ┆ens *) zbegin =   'b'; zendlist ┆
0x047140…047160             3d 20 27 2e 27 3b 20 28 2a 20 65 6e 64 20 6f 66 20 64 65 63 6c 61 72 61 74 69 6f 6e 2d 6c 69 73   ┆= '.'; (* end of declaration-lis┆
0x047160…047180             74 20 2a 29 0a 7a 63 6f 6e 73 74 20 3d 20 20 20 27 63 27 3b 0a 7a 65 6e 64 20 20 20 3d 20 20 20   ┆t *) zconst =   'c'; zend   =   ┆
0x047180…0471a0             27 65 27 3b 0a 7a 6c 69 6e 65 20 20 3d 20 20 20 27 6c 27 3b 0a 7a 6f 70 74 69 6f 6e 3d 20 20 20   ┆'e'; zline  =   'l'; zoption=   ┆
0x0471a0…0471c0             27 6f 27 3b 0a 7a 6e 61 6d 65 20 20 3d 20 20 20 27 7a 27 3b 0a 64 6f 6c 6c 61 72 5f 61 20 3d 20   ┆'o'; zname  =   'z'; dollar_a = ┆
0x0471c0…0471e0             27 31 27 3b 20 28 2a 20 3d 3e 20 24 61 20 2a 29 0a 64 6f 6c 6c 61 72 5f 62 20 3d 20 27 32 27 3b   ┆'1'; (* => $a *) dollar_b = '2';┆
0x0471e0…047200             20 28 2a 20 3d 3e 20 24 62 20 2a 29 0a 64 6f 6c 6c 61 72 5f 69 20 3d 20 27 33 27 3b 20 28 2a 20   ┆ (* => $b *) dollar_i = '3'; (* ┆
0x047200…047220 (18, 1, 15) 3d 3e 20 24 69 20 2a 29 0a 0a 28 2a 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 69 64 65 6e 74   ┆=> $i *)  (* definition of ident┆
0x047220…047240             69 66 69 65 72 73 20 66 6f 72 20 70 61 73 73 36 20 2a 29 0a 63 5f 6e 61 6d 65 20 3d 20 20 20 27   ┆ifiers for pass6 *) c_name =   '┆
0x047240…047260             63 27 3b 20 20 28 2a 20 6c 6f 6e 67 20 63 6f 6e 73 74 61 6e 74 73 2c 20 64 6f 70 65 20 76 65 63   ┆c';  (* long constants, dope vec┆
0x047260…047280             74 6f 72 73 20 2a 29 0a 65 5f 6e 61 6d 65 20 3d 20 20 20 27 65 27 3b 20 20 28 2a 20 65 78 74 65   ┆tors *) e_name =   'e';  (* exte┆
0x047280…0472a0             72 6e 61 6c 20 72 6f 75 74 69 6e 65 73 20 2a 29 0a 6c 5f 6e 61 6d 65 20 3d 20 20 20 27 6c 27 3b   ┆rnal routines *) l_name =   'l';┆
0x0472a0…0472c0             20 20 28 2a 20 6c 61 62 65 6c 73 20 2a 29 0a 72 5f 6e 61 6d 65 20 3d 20 20 20 27 72 27 3b 20 20   ┆  (* labels *) r_name =   'r';  ┆
0x0472c0…0472e0             28 2a 20 69 6e 74 65 72 6e 61 6c 20 72 6f 75 74 69 6e 65 20 65 6e 74 72 69 65 73 20 2a 29 0a 78   ┆(* internal routine entries *) x┆
0x0472e0…047300             5f 6e 61 6d 65 20 3d 20 20 20 27 78 27 3b 20 20 28 2a 20 63 61 73 65 20 6c 61 62 65 6c 73 20 2a   ┆_name =   'x';  (* case labels *┆
0x047300…047320             29 0a 63 31 32 5f 6e 61 6d 65 3d 20 20 27 63 20 20 20 20 20 20 20 20 20 20 20 27 3b 0a 65 31 32   ┆) c12_name=  'c           '; e12┆
0x047320…047340             5f 6e 61 6d 65 3d 20 20 27 65 20 20 20 20 20 20 20 20 20 20 20 27 3b 0a 72 31 32 5f 6e 61 6d 65   ┆_name=  'e           '; r12_name┆
0x047340…047360             3d 20 20 27 72 20 20 20 20 20 20 20 20 20 20 20 27 3b 0a 6c 31 32 5f 6e 61 6d 65 3d 20 20 27 6c   ┆=  'r           '; l12_name=  'l┆
0x047360…047380             20 20 20 20 20 20 20 20 20 20 20 27 3b 0a 78 31 32 5f 6e 61 6d 65 3d 20 20 27 78 20 20 20 20 20   ┆           '; x12_name=  'x     ┆
0x047380…0473a0             20 20 20 20 20 20 27 3b 0a 0a 28 2a 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 75 73 65 64 20   ┆      ';  (* definition of used ┆
0x0473a0…0473c0             69 64 65 6e 74 69 66 69 65 72 73 20 2a 29 0a 69 64 5f 65 6e 74 72 79 20 3d 20 20 20 20 20 20 20   ┆identifiers *) id_entry =       ┆
0x0473c0…0473e0             20 20 20 20 20 27 65 6e 74 72 79 20 20 20 20 20 20 20 27 3b 0a 69 64 5f 65 78 69 74 20 20 3d 20   ┆     'entry       '; id_exit  = ┆
0x0473e0…047400             20 20 20 20 20 20 20 20 20 20 20 27 65 78 69 74 20 20 20 20 20 20 20 20 27 3b 0a 69 64 5f 65 78   ┆           'exit        '; id_ex┆
0x047400…047420 (19, 0, 1)  63 65 70 74 69 6f 6e 20 3d 20 20 20 20 20 20 20 20 27 65 78 63 65 70 74 69 6f 6e 20 20 20 27 3b   ┆ception =        'exception   ';┆
0x047420…047440             0a 69 64 5f 70 61 72 61 6d 20 3d 20 20 20 20 20 20 20 20 20 20 20 20 27 70 61 72 61 6d 20 20 20   ┆ id_param =            'param   ┆
0x047440…047460             20 20 20 20 27 3b 0a 69 64 5f 70 72 6f 63 69 6e 66 20 3d 20 20 20 20 20 20 20 20 20 20 27 70 72   ┆    '; id_procinf =          'pr┆
0x047460…047480             6f 63 69 6e 66 20 20 20 20 20 27 3b 0a 69 64 5f 6e 61 6d 65 20 20 3d 20 20 20 20 20 20 20 20 20   ┆ocinf     '; id_name  =         ┆
0x047480…0474a0             20 20 20 27 6e 61 6d 65 20 20 20 20 20 20 20 20 27 3b 0a 69 64 5f 65 78 63 65 70 74 3d 20 20 20   ┆   'name        '; id_except=   ┆
0x0474a0…0474c0             20 20 20 20 20 20 20 20 20 27 65 78 63 65 70 74 69 6f 6e 20 20 20 27 3b 0a 69 64 5f 61 70 70 65   ┆         'exception   '; id_appe┆
0x0474c0…0474e0             76 61 6c 20 3d 20 20 20 20 20 20 20 20 20 20 27 61 70 70 65 76 61 6c 20 20 20 20 20 27 3b 0a 69   ┆val =          'appeval     '; i┆
0x0474e0…047500             64 5f 61 70 70 73 74 61 74 20 3d 20 20 20 20 20 20 20 20 20 20 27 61 70 70 73 74 61 74 20 20 20   ┆d_appstat =          'appstat   ┆
0x047500…047520             20 20 27 3b 0a 69 64 5f 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 20 3d 20 27 64 65 66 61   ┆  '; id_default_appetite = 'defa┆
0x047520…047540             70 70 20 20 20 20 20 20 27 3b 0a 69 64 5f 77 6f 72 6b 20 20 20 20 3d 20 20 20 20 20 20 20 20 20   ┆pp      '; id_work    =         ┆
0x047540…047560             20 27 77 6f 72 6b 20 20 20 20 20 20 20 20 27 3b 0a 69 64 5f 6c 69 6e 65 74 61 62 20 3d 20 20 20   ┆ 'work        '; id_linetab =   ┆
0x047560…047580             20 20 20 20 20 20 20 27 6c 69 6e 65 74 61 62 20 20 20 20 20 27 3b 0a 69 64 5f 63 6f 6e 74 69 6e   ┆       'linetab     '; id_contin┆
0x047580…0475a0             75 65 3d 20 20 20 20 20 20 20 20 20 20 27 63 6f 6e 74 69 6e 75 65 20 20 20 20 27 3b 0a 69 64 5f   ┆ue=          'continue    '; id_┆
0x0475a0…0475c0             72 65 70 20 20 20 20 3d 20 20 20 20 20 20 20 20 20 20 20 27 72 65 70 20 20 20 20 20 20 20 20 20   ┆rep    =           'rep         ┆
0x0475c0…0475e0             27 3b 0a 69 64 5f 65 6e 64 72 65 70 20 20 20 3d 20 20 20 20 20 20 20 20 20 27 65 6e 64 72 65 70   ┆'; id_endrep   =         'endrep┆
0x0475e0…047600             20 20 20 20 20 20 27 3b 0a 69 64 5f 62 6c 6f 63 6b 65 78 69 74 3d 20 20 20 20 20 20 20 20 20 27   ┆      '; id_blockexit=         '┆
0x047600…047620 (19, 0, 2)  62 6c 6b 65 78 69 74 20 20 20 20 20 27 3b 20 28 2a 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 6f 66   ┆blkexit     '; (* destination of┆
0x047620…047640             20 65 78 69 74 20 73 74 61 74 65 6d 65 6e 74 20 2a 29 0a 28 2a 20 73 74 64 63 61 6c 6c 20 2a 29   ┆ exit statement *) (* stdcall *)┆
0x047640…047660             0a 69 64 5f 73 75 63 70 72 65 64 20 3d 20 20 20 20 20 20 20 20 20 20 27 73 75 63 70 72 65 64 20   ┆ id_sucpred =          'sucpred ┆
0x047660…047680             20 20 20 20 27 3b 0a 28 2a 20 77 68 69 6c 65 20 2a 29 0a 69 64 5f 77 68 72 65 70 20 3d 20 20 20   ┆    '; (* while *) id_whrep =   ┆
0x047680…0476a0             20 20 20 20 20 20 20 20 20 27 77 68 72 65 70 20 20 20 20 20 20 20 27 3b 0a 69 64 5f 77 68 65 78   ┆         'whrep       '; id_whex┆
0x0476a0…0476c0             69 74 3d 20 20 20 20 20 20 20 20 20 20 20 20 27 77 68 65 78 69 74 20 20 20 20 20 20 27 3b 0a 28   ┆it=            'whexit      '; (┆
0x0476c0…0476e0             2a 20 6c 6f 63 6b 20 2a 29 0a 69 64 5f 73 69 7a 65 5f 6f 6b 3d 20 20 20 20 20 20 20 20 20 20 20   ┆* lock *) id_size_ok=           ┆
0x0476e0…047700             27 73 69 7a 65 5f 6f 6b 20 20 20 20 20 27 3b 0a 69 64 5f 63 6f 6e 74 20 20 3d 20 20 20 20 20 20   ┆'size_ok     '; id_cont  =      ┆
0x047700…047720             20 20 20 20 20 20 27 63 6f 6e 74 20 20 20 20 20 20 20 20 27 3b 0a 69 64 5f 65 78 63 20 20 20 3d   ┆      'cont        '; id_exc   =┆
0x047720…047740             20 20 20 20 20 20 20 20 20 20 20 20 27 65 78 63 20 20 20 20 20 20 20 20 20 27 3b 0a 28 2a 20 6a   ┆            'exc         '; (* j┆
0x047740…047760             75 6d 70 20 61 63 72 6f 73 73 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 70 6f 69   ┆ump across initialization of poi┆
0x047760…047780             6e 74 65 72 73 20 69 6e 20 61 20 68 65 61 70 20 6f 62 6a 65 63 74 2c 20 20 20 20 20 20 20 20 20   ┆nters in a heap object,         ┆
0x047780…0477a0             2a 29 0a 28 2a 20 69 66 20 4e 45 57 20 72 65 74 75 72 6e 73 20 6e 69 6c 20 2a 29 0a 69 64 5f 6e   ┆*) (* if NEW returns nil *) id_n┆
0x0477a0…0477c0             69 6c 5f 65 6c 65 6d 65 6e 74 20 3d 20 20 20 20 20 20 27 6e 69 6c 65 6c 65 6d 20 20 20 20 20 27   ┆il_element =      'nilelem     '┆
0x0477c0…0477e0             3b 0a 69 64 5f 65 6e 64 5f 6e 69 6c 5f 74 65 73 74 3d 20 20 20 20 20 20 27 65 6e 64 6e 69 6c 20   ┆; id_end_nil_test=      'endnil ┆
0x0477e0…047800             20 20 20 20 20 27 3b 0a 28 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6d 2d 6e 61 6d 65 73   ┆     '; (* the following m-names┆
0x047800…047820 (19, 0, 3)  20 61 72 65 20 64 65 63 6c 61 72 65 64 20 69 6e 20 6f 75 74 65 72 6d 6f 73 74 20 63 6f 64 65 20   ┆ are declared in outermost code ┆
0x047820…047840             65 6e 76 69 72 6f 6e 6d 65 6e 74 20 2a 29 0a 69 64 5f 6d 73 74 61 72 74 3d 20 20 20 20 20 20 20   ┆environment *) id_mstart=       ┆
0x047840…047860             20 20 20 20 20 27 6d 73 74 61 72 74 20 20 20 20 20 20 27 3b 20 28 2a 20 6f 66 66 73 65 74 20 69   ┆     'mstart      '; (* offset i┆
0x047860…047880             6e 74 6f 20 72 65 66 65 72 65 6e 63 65 20 76 61 72 69 61 62 6c 65 20 2a 29 0a 69 64 5f 6d 66 69   ┆nto reference variable *) id_mfi┆
0x047880…0478a0             72 73 74 3d 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 66 69 72 73 74 20 20 20 20 20 20 27 3b 28   ┆rst=            'mfirst      ';(┆
0x0478a0…0478c0             2a 20 6f 66 66 73 65 74 20 69 6e 74 6f 20 62 75 66 66 65 72 2c 20 66 69 72 73 74 2d 61 74 74 72   ┆* offset into buffer, first-attr┆
0x0478c0…0478e0             69 62 75 74 65 20 2a 29 0a 28 2a 20 69 66 20 2a 29 0a 69 64 5f 69 66 65 6c 73 65 20 3d 20 20 20   ┆ibute *) (* if *) id_ifelse =   ┆
0x0478e0…047900             20 20 20 20 20 20 20 20 27 69 66 65 6c 73 65 20 20 20 20 20 20 27 3b 0a 69 64 5f 69 66 65 78 69   ┆        'ifelse      '; id_ifexi┆
0x047900…047920             74 20 3d 20 20 20 20 20 20 20 20 20 20 20 27 69 66 65 78 69 74 20 20 20 20 20 20 27 3b 0a 28 2a   ┆t =           'ifexit      '; (*┆
0x047920…047940             20 72 65 70 65 61 74 20 2a 29 0a 69 64 5f 72 70 72 65 70 20 3d 20 20 20 20 20 20 20 20 20 20 20   ┆ repeat *) id_rprep =           ┆
0x047940…047960             20 27 72 70 72 65 70 20 20 20 20 20 20 20 27 3b 0a 69 64 5f 72 70 63 6f 6e 74 3d 20 20 20 20 20   ┆ 'rprep       '; id_rpcont=     ┆
0x047960…047980             20 20 20 20 20 20 20 27 72 70 63 6f 6e 74 20 20 20 20 20 20 27 3b 0a 69 64 5f 72 70 65 78 69 74   ┆       'rpcont      '; id_rpexit┆
0x047980…0479a0             3d 20 20 20 20 20 20 20 20 20 20 20 20 27 72 70 65 78 69 74 20 20 20 20 20 20 27 3b 0a 28 2a 20   ┆=            'rpexit      '; (* ┆
0x0479a0…0479c0             6c 6f 6f 70 20 2a 29 0a 69 64 5f 6c 6f 6f 70 3d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6c   ┆loop *) id_loop=              'l┆
0x0479c0…0479e0             6f 6f 70 20 20 20 20 20 20 20 20 27 3b 0a 69 64 5f 6c 6f 6f 70 65 78 69 74 3d 20 20 20 20 20 20   ┆oop        '; id_loopexit=      ┆
0x0479e0…047a00             20 20 20 20 27 6c 6f 6f 70 65 78 69 74 20 20 20 20 27 3b 0a 28 2a 20 66 6f 72 20 2a 29 0a 69 64   ┆    'loopexit    '; (* for *) id┆
0x047a00…047a20 (19, 0, 4)  5f 66 6f 72 72 65 70 20 20 20 3d 20 20 20 20 20 20 20 20 20 27 66 6f 72 72 65 70 20 20 20 20 20   ┆_forrep   =         'forrep     ┆
0x047a20…047a40             20 27 3b 0a 69 64 5f 66 6f 72 73 74 6f 72 65 20 3d 20 20 20 20 20 20 20 20 20 27 66 6f 72 73 74   ┆ '; id_forstore =         'forst┆
0x047a40…047a60             6f 72 65 20 20 20 20 27 3b 0a 69 64 5f 66 6f 72 63 6f 6e 74 3d 20 20 20 20 20 20 20 20 20 20 20   ┆ore    '; id_forcont=           ┆
0x047a60…047a80             27 66 6f 72 63 6f 6e 74 20 20 20 20 20 27 3b 0a 69 64 5f 66 6f 72 65 78 69 74 20 20 3d 20 20 20   ┆'forcont     '; id_forexit  =   ┆
0x047a80…047aa0             20 20 20 20 20 20 27 66 6f 72 65 78 69 74 20 20 20 20 20 27 3b 0a 28 2a 20 63 61 73 65 20 2a 29   ┆      'forexit     '; (* case *)┆
0x047aa0…047ac0             0a 69 64 5f 63 61 73 65 74 61 62 20 3d 20 20 20 20 20 20 20 20 20 20 27 63 61 73 65 74 61 62 20   ┆ id_casetab =          'casetab ┆
0x047ac0…047ae0             20 20 20 20 27 3b 0a 69 64 5f 6f 74 68 65 72 77 69 73 65 3d 20 20 20 20 20 20 20 20 20 27 6f 74   ┆    '; id_otherwise=         'ot┆
0x047ae0…047b00             68 65 72 77 69 73 65 20 20 20 27 3b 0a 69 64 5f 63 61 73 65 65 78 69 74 3d 20 20 20 20 20 20 20   ┆herwise   '; id_caseexit=       ┆
0x047b00…047b20             20 20 20 27 63 61 73 65 65 78 69 74 20 20 20 20 27 3b 0a 28 2a 20 61 72 72 61 79 2d 69 6e 69 74   ┆   'caseexit    '; (* array-init┆
0x047b20…047b40             20 2a 29 0a 69 64 5f 61 72 72 61 79 72 65 70 20 3d 20 20 20 20 20 20 20 20 20 27 61 72 72 61 79   ┆ *) id_arrayrep =         'array┆
0x047b40…047b60             72 65 70 20 20 20 20 27 3b 0a 69 64 5f 72 65 70 5f 65 78 69 74 3d 20 20 20 20 20 20 20 20 20 20   ┆rep    '; id_rep_exit=          ┆
0x047b60…047b80             27 72 65 70 65 78 69 74 20 20 20 20 20 27 3b 0a 69 64 5f 69 6e 64 65 78 5f 73 74 6f 72 65 20 3d   ┆'repexit     '; id_index_store =┆
0x047b80…047ba0             20 20 20 20 20 20 27 69 78 73 74 6f 72 65 20 20 20 20 20 27 3b 0a 28 2a 20 6e 61 6d 65 20 66 6f   ┆      'ixstore     '; (* name fo┆
0x047ba0…047bc0             72 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 64 6f 70 65 20 76 65 63 74 6f 72 20   ┆r initialization of dope vector ┆
0x047bc0…047be0             6f 66 20 64 79 6e 61 6d 69 63 20 61 72 72 61 79 20 2a 29 0a 69 64 5f 65 6c 65 6d 73 5f 72 65 61   ┆of dynamic array *) id_elems_rea┆
0x047be0…047c00             64 79 20 3d 20 20 20 20 20 20 27 65 6c 65 6d 73 72 65 61 64 79 20 20 27 3b 0a 28 2a 20 6e 61 6d   ┆dy =      'elemsready  '; (* nam┆
0x047c00…047c20 (19, 0, 5)  65 73 20 66 72 6f 6d 20 6c 61 6d 62 64 61 2d 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 2a 29 0a 69 64   ┆es from lambda-environment *) id┆
0x047c20…047c40             5f 61 6c 66 61 6c 65 6e 67 74 68 20 3d 20 20 20 20 20 20 20 27 61 6c 66 61 6c 65 6e 67 74 68 20   ┆_alfalength =       'alfalength ┆
0x047c40…047c60             20 27 3b 0a 69 64 5f 6c 65 76 65 6c 20 20 20 20 20 20 20 3d 20 20 20 20 20 20 27 6c 65 76 65 6c   ┆ '; id_level       =      'level┆
0x047c60…047c80             20 20 20 20 20 20 20 27 3b 0a 69 64 5f 65 78 63 6f 64 65 20 20 20 20 20 20 3d 20 20 20 20 20 20   ┆       '; id_excode      =      ┆
0x047c80…047ca0             27 65 78 63 6f 64 65 20 20 20 20 20 20 27 3b 0a 69 64 5f 65 78 70 6f 69 6e 74 20 20 20 20 20 3d   ┆'excode      '; id_expoint     =┆
0x047ca0…047cc0             20 20 20 20 20 20 27 65 78 70 6f 69 6e 74 20 20 20 20 20 27 3b 0a 69 64 5f 65 78 6f 70 63 6f 64   ┆      'expoint     '; id_exopcod┆
0x047cc0…047ce0             65 20 20 20 20 3d 20 20 20 20 20 20 27 65 78 6f 70 63 6f 64 65 20 20 20 20 27 3b 0a 69 64 5f 65   ┆e    =      'exopcode    '; id_e┆
0x047ce0…047d00             78 69 63 20 20 20 20 20 20 20 20 3d 20 20 20 20 20 20 27 65 78 69 63 20 20 20 20 20 20 20 20 27   ┆xic        =      'exic        '┆
0x047d00…047d20             3b 0a 69 64 5f 73 65 6d 63 68 61 69 6e 20 20 20 20 3d 20 20 20 20 20 20 27 73 65 6d 63 68 61 69   ┆; id_semchain    =      'semchai┆
0x047d20…047d40             6e 20 20 20 20 27 3b 0a 69 64 5f 72 65 66 63 68 61 69 6e 20 20 20 20 3d 20 20 20 20 20 20 27 72   ┆n    '; id_refchain    =      'r┆
0x047d40…047d60             65 66 63 68 61 69 6e 20 20 20 20 27 3b 0a 69 64 5f 73 68 61 64 6f 77 63 68 61 69 6e 20 3d 20 20   ┆efchain    '; id_shadowchain =  ┆
0x047d60…047d80             20 20 20 20 27 73 68 61 64 6f 77 63 68 61 69 6e 20 27 3b 0a 69 64 5f 70 72 6f 63 65 73 73 63 68   ┆    'shadowchain '; id_processch┆
0x047d80…047da0             61 69 6e 20 3d 20 20 20 20 20 27 70 72 6f 63 65 73 73 63 68 61 69 6e 27 3b 0a 69 64 5f 6f 73 65   ┆ain =     'processchain'; id_ose┆
0x047da0…047dc0             6d 20 20 20 20 20 20 20 20 3d 20 20 20 20 20 20 27 6f 73 65 6d 20 20 20 20 20 20 20 20 27 3b 0a   ┆m        =      'osem        '; ┆
0x047dc0…047de0             69 64 5f 6f 72 65 66 20 20 20 20 20 20 20 20 3d 20 20 20 20 20 20 27 6f 72 65 66 20 20 20 20 20   ┆id_oref        =      'oref     ┆
0x047de0…047e00             20 20 20 27 3b 0a 69 64 5f 6f 73 68 61 64 6f 77 20 20 20 20 20 3d 20 20 20 20 20 20 27 6f 73 68   ┆   '; id_oshadow     =      'osh┆
0x047e00…047e20 (19, 0, 6)  61 64 6f 77 20 20 20 20 20 27 3b 0a 69 64 5f 63 70 65 78 63 66 69 72 73 74 20 20 3d 20 20 20 20   ┆adow     '; id_cpexcfirst  =    ┆
0x047e20…047e40             20 20 27 63 70 65 78 63 66 69 72 73 74 20 20 27 3b 0a 69 64 5f 65 78 61 70 70 65 74 69 74 65 20   ┆  'cpexcfirst  '; id_exappetite ┆
0x047e40…047e60             20 3d 20 20 20 20 20 20 27 65 78 61 70 70 65 74 69 74 65 20 20 27 3b 0a 69 64 5f 65 78 69 74 61   ┆ =      'exappetite  '; id_exita┆
0x047e60…047e80             70 70 65 74 69 74 65 3d 20 20 20 20 20 20 27 65 78 69 74 61 70 70 65 74 69 74 65 27 3b 0a 69 64   ┆ppetite=      'exitappetite'; id┆
0x047e80…047ea0             5f 6d 61 78 73 74 61 63 6b 20 20 20 20 3d 20 20 20 20 20 20 27 6d 61 78 73 74 61 63 6b 20 20 20   ┆_maxstack    =      'maxstack   ┆
0x047ea0…047ec0             20 27 3b 0a 69 64 5f 62 6f 6e 61 70 70 65 74 69 74 65 20 3d 20 20 20 20 20 20 27 62 6f 6e 61 70   ┆ '; id_bonappetite =      'bonap┆
0x047ec0…047ee0             70 65 74 69 74 65 20 27 3b 0a 69 64 5f 70 6c 69 6e 65 74 61 62 20 20 20 20 3d 20 20 20 20 20 20   ┆petite '; id_plinetab    =      ┆
0x047ee0…047f00             27 70 6c 69 6e 65 74 61 62 20 20 20 20 27 3b 0a 28 2a 20 6f 66 66 73 65 74 73 20 69 6e 20 74 68   ┆'plinetab    '; (* offsets in th┆
0x047f00…047f20             65 20 70 72 6f 63 65 73 73 64 65 73 63 72 69 70 74 6f 72 20 2a 29 0a 69 64 5f 6f 70 64 5f 63 6f   ┆e processdescriptor *) id_opd_co┆
0x047f20…047f40             75 6e 74 20 20 20 3d 20 20 20 20 20 20 27 6f 70 64 63 6f 75 6e 74 20 20 20 20 27 3b 0a 69 64 5f   ┆unt   =      'opdcount    '; id_┆
0x047f40…047f60             6f 70 64 5f 70 61 72 61 6d 20 20 20 3d 20 20 20 20 20 20 27 6f 70 64 70 61 72 61 6d 20 20 20 20   ┆opd_param   =      'opdparam    ┆
0x047f60…047f80             27 3b 0a 69 64 5f 6f 70 64 5f 6c 69 6e 6b 65 64 20 20 3d 20 20 20 20 20 20 27 6f 70 64 6c 69 6e   ┆'; id_opd_linked  =      'opdlin┆
0x047f80…047fa0             6b 65 64 20 20 20 27 3b 0a 69 64 5f 6f 70 64 5f 70 72 6f 63 69 6e 66 20 3d 20 20 20 20 20 20 27   ┆ked   '; id_opd_procinf =      '┆
0x047fa0…047fc0             6f 70 64 70 72 69 6e 66 20 20 20 20 27 3b 0a 69 64 5f 6f 70 64 5f 6e 61 6d 65 20 20 20 20 3d 20   ┆opdprinf    '; id_opd_name    = ┆
0x047fc0…047fe0             20 20 20 20 20 27 6f 70 64 6e 61 6d 65 20 20 20 20 20 27 3b 0a 69 64 5f 6f 70 64 5f 70 72 6f 63   ┆     'opdname     '; id_opd_proc┆
0x047fe0…048000             65 73 73 20 3d 20 20 20 20 20 20 27 6f 70 64 70 72 6f 63 65 73 73 20 20 27 3b 0a 28 2a 20 6d 69   ┆ess =      'opdprocess  '; (* mi┆
0x048000…048020 (19, 0, 7)  73 63 20 2a 29 0a 69 64 5f 68 61 72 64 73 65 74 20 20 20 20 20 3d 20 20 20 20 20 20 27 68 61 72   ┆sc *) id_hardset     =      'har┆
0x048020…048040             64 73 65 74 20 20 20 20 20 27 3b 0a 0a 0a 63 5f 73 69 7a 65 5f 6f 70 63 6f 64 65 20 3d 20 36 3b   ┆dset     ';   c_size_opcode = 6;┆
0x048040…048060             0a 63 5f 73 69 7a 65 5f 69 64 65 6e 74 69 66 69 65 72 20 3d 20 31 32 3b 0a 63 5f 73 69 7a 65 5f   ┆ c_size_identifier = 12; c_size_┆
0x048060…048080             6f 70 74 69 6f 6e 5f 6c 69 73 74 20 3d 20 31 30 3b 0a 0a 0a 28 2a 20 20 65 78 63 65 70 74 69 6f   ┆option_list = 10;   (*  exceptio┆
0x048080…0480a0             6e 20 6e 6f 2e 20 20 2c 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 73 79 6d 62 6f 6c 20   ┆n no.  , relative to the symbol ┆
0x0480a0…0480c0             20 63 70 65 78 63 66 69 72 73 74 20 28 20 73 65 65 3a 20 6c 61 6d 62 64 61 65 6e 76 20 29 20 3a   ┆ cpexcfirst ( see: lambdaenv ) :┆
0x0480c0…0480e0             20 20 2a 29 0a 63 5f 65 78 63 5f 63 61 73 65 20 3d 20 30 3b 20 28 2a 20 6c 61 62 65 6c 20 6e 6f   ┆  *) c_exc_case = 0; (* label no┆
0x0480e0…048100             74 20 66 6f 75 6e 64 20 61 6e 64 20 6e 6f 20 6f 74 68 65 72 77 69 73 65 20 2a 29 0a 63 5f 65 78   ┆t found and no otherwise *) c_ex┆
0x048100…048120             63 5f 73 75 63 63 20 3d 20 31 3b 20 28 2a 20 73 75 63 63 20 65 78 63 65 65 64 73 20 75 70 70 65   ┆c_succ = 1; (* succ exceeds uppe┆
0x048120…048140             72 20 76 61 6c 75 65 20 2a 29 0a 63 5f 65 78 63 5f 70 72 65 64 20 3d 20 32 3b 20 28 2a 20 70 72   ┆r value *) c_exc_pred = 2; (* pr┆
0x048140…048160             65 64 20 65 78 63 65 65 64 73 20 6c 6f 77 65 72 20 76 61 6c 75 65 20 2a 29 0a 63 5f 65 78 63 5f   ┆ed exceeds lower value *) c_exc_┆
0x048160…048180             77 69 74 68 20 3d 20 33 3b 20 28 2a 20 73 69 7a 65 20 65 72 72 6f 72 2c 20 6e 65 77 20 74 79 70   ┆with = 3; (* size error, new typ┆
0x048180…0481a0             65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 69 67 69 6e 61 6c 20 74 79 70 65 20 2a 29 0a   ┆e greater than original type *) ┆
0x0481a0…0481c0             63 5f 65 78 63 5f 6c 6f 63 6b 20 3d 20 34 3b 20 28 2a 20 73 69 7a 65 20 65 72 72 6f 72 2c 20 6e   ┆c_exc_lock = 4; (* size error, n┆
0x0481c0…0481e0             65 77 20 74 79 70 65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 61 63 74 75 61 6c 20 62 75 66 66   ┆ew type greater than actual buff┆
0x0481e0…048200             65 72 28 66 69 72 73 74 2e 2e 74 6f 70 29 20 2a 29 0a 63 5f 65 78 63 5f 72 65 66 20 3d 20 35 3b   ┆er(first..top) *) c_exc_ref = 5;┆
0x048200…048220 (19, 0, 8)  20 28 2a 20 72 65 66 65 72 65 6e 63 65 20 76 61 72 69 61 62 6c 65 20 6e 6f 74 20 6e 69 6c 20 61   ┆ (* reference variable not nil a┆
0x048220…048240             74 20 72 6f 75 74 69 6e 65 20 65 78 69 74 20 2a 29 0a 63 5f 65 78 63 5f 73 68 61 64 6f 77 20 3d   ┆t routine exit *) c_exc_shadow =┆
0x048240…048260             20 36 3b 20 28 2a 20 73 68 61 64 6f 77 20 76 61 72 69 61 62 6c 65 20 6e 6f 74 20 6e 69 6c 20 61   ┆ 6; (* shadow variable not nil a┆
0x048260…048280             74 20 72 6f 75 74 69 6e 65 20 65 78 69 74 20 2a 29 0a 63 5f 65 78 63 5f 6e 65 77 3d 20 37 3b 20   ┆t routine exit *) c_exc_new= 7; ┆
0x048280…0482a0             28 2a 20 6e 6f 74 20 65 6e 6f 75 67 68 20 6d 65 6d 6f 72 79 20 74 6f 20 73 61 74 69 73 66 69 79   ┆(* not enough memory to satisfiy┆
0x0482a0…0482c0             20 74 68 65 20 72 65 71 75 65 73 74 20 2a 29 0a 0a 63 5f 65 78 63 5f 6d 61 78 20 3d 20 34 37 3b   ┆ the request *)  c_exc_max = 47;┆
0x0482c0…0482e0             0a 0a 28 2a 20 63 6f 6e 73 74 61 6e 74 73 20 69 6e 20 70 61 73 73 20 34 20 63 6f 64 65 20 2a 29   ┆  (* constants in pass 4 code *)┆
0x0482e0…048300             0a 0a 28 2a 20 76 61 6c 75 65 20 6f 66 20 74 79 70 65 5f 76 20 69 6e 20 70 61 73 73 20 34 20 63   ┆  (* value of type_v in pass 4 c┆
0x048300…048320             6f 64 65 20 20 2a 29 0a 0a 62 79 74 65 5f 74 79 70 20 3d 20 31 3b 20 20 20 66 69 65 6c 64 5f 74   ┆ode  *)  byte_typ = 1;   field_t┆
0x048320…048340             79 70 20 3d 20 35 3b 0a 77 6f 72 64 5f 74 79 70 20 3d 20 32 3b 20 20 20 61 64 64 72 5f 74 79 70   ┆yp = 5; word_typ = 2;   addr_typ┆
0x048340…048360             20 20 3d 20 36 3b 0a 70 6f 69 6e 74 5f 74 79 70 3d 20 33 3b 20 20 20 73 65 74 5f 74 79 70 20 20   ┆  = 6; point_typ= 3;   set_typ  ┆
0x048360…048380             3d 20 37 3b 0a 64 6f 75 62 6c 65 5f 74 79 70 20 3d 20 34 3b 20 20 64 79 6e 5f 74 79 70 20 20 3d   ┆= 7; double_typ = 4;  dyn_typ  =┆
0x048380…0483a0             20 38 3b 0a 0a 28 2a 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65 5f 6f 20 69 6e 20 70 61 73 73   ┆ 8;  (* values of type_o in pass┆
0x0483a0…0483c0             20 34 20 63 6f 64 65 20 20 2a 29 0a 0a 62 6f 6f 6c 5f 74 79 70 20 3d 20 31 3b 20 20 20 20 20 20   ┆ 4 code  *)  bool_typ = 1;      ┆
0x0483c0…0483e0             69 6e 74 5f 74 79 70 20 3d 20 32 3b 20 20 20 20 20 72 65 61 6c 5f 74 79 70 20 3d 20 33 3b 20 20   ┆int_typ = 2;     real_typ = 3;  ┆
0x0483e0…048400             20 20 20 73 65 74 6f 66 5f 74 79 70 20 3d 20 34 3b 0a 70 6f 69 6e 74 65 72 5f 74 79 70 20 3d 20   ┆   setof_typ = 4; pointer_typ = ┆
0x048400…048420 (19, 0, 9)  35 3b 20 20 20 73 65 6d 5f 74 79 70 20 3d 20 36 3b 20 20 20 20 20 72 65 66 5f 74 79 70 20 3d 20   ┆5;   sem_typ = 6;     ref_typ = ┆
0x048420…048440             37 3b 20 20 20 20 20 20 73 68 61 64 6f 77 5f 74 79 70 20 3d 20 38 3b 0a 73 63 61 6c 61 72 5f 74   ┆7;      shadow_typ = 8; scalar_t┆
0x048440…048460             79 70 20 3d 20 39 3b 0a 0a 28 2a 20 63 6f 6d 70 61 72 65 20 66 75 6e 63 74 69 6f 6e 20 6e 75 6d   ┆yp = 9;  (* compare function num┆
0x048460…048480             62 65 72 20 69 6e 20 70 61 73 73 20 34 20 63 6f 64 65 20 20 20 2a 29 0a 0a 20 20 20 78 65 71 20   ┆ber in pass 4 code   *)     xeq ┆
0x048480…0484a0             3d 20 32 3b 20 20 20 20 20 20 20 20 78 6e 65 20 3d 20 33 3b 20 20 20 20 20 20 20 20 20 78 6c 74   ┆= 2;        xne = 3;         xlt┆
0x0484a0…0484c0             20 3d 20 34 3b 0a 20 20 20 78 67 74 20 3d 20 35 3b 20 20 20 20 20 20 20 20 78 6c 65 20 3d 20 36   ┆ = 4;    xgt = 5;        xle = 6┆
0x0484c0…0484e0             3b 20 20 20 20 20 20 20 20 20 78 67 65 20 3d 20 37 3b 0a 20 20 20 78 65 71 5f 73 65 74 20 3d 20   ┆;         xge = 7;    xeq_set = ┆
0x0484e0…048500             38 3b 20 20 20 20 78 6e 65 5f 73 65 74 20 3d 20 39 3b 20 20 20 20 20 78 6c 65 5f 73 65 74 20 3d   ┆8;    xne_set = 9;     xle_set =┆
0x048500…048520             20 31 30 3b 0a 20 20 20 78 67 65 5f 73 65 74 20 3d 20 31 31 3b 20 20 20 78 69 6e 20 3d 20 31 32   ┆ 10;    xge_set = 11;   xin = 12┆
0x048520…048540             3b 20 20 20 20 20 20 20 20 78 65 71 5f 73 74 72 75 63 20 3d 20 31 33 3b 0a 20 20 20 78 6e 65 5f   ┆;        xeq_struc = 13;    xne_┆
0x048540…048560             73 74 72 75 63 20 3d 20 31 34 3b 20 0a 0a 28 2a 20 73 74 64 20 66 75 6e 63 74 69 6f 6e 20 6e 75   ┆struc = 14;   (* std function nu┆
0x048560…048580             6d 62 65 72 20 69 6e 20 70 61 73 73 20 34 20 63 6f 64 65 20 20 20 20 20 20 20 2a 29 0a 0a 20 78   ┆mber in pass 4 code       *)   x┆
0x048580…0485a0             6f 72 64 3d 20 31 3b 20 78 73 75 63 63 3d 20 32 3b 20 78 70 72 65 64 3d 20 33 3b 20 78 63 68 72   ┆ord= 1; xsucc= 2; xpred= 3; xchr┆
0x0485a0…0485c0             3d 20 34 3b 20 78 6e 69 6c 3d 20 35 3b 20 78 6e 69 6c 72 65 66 20 28 2a 20 6f 6e 6c 79 20 75 73   ┆= 4; xnil= 5; xnilref (* only us┆
0x0485c0…0485e0             65 64 20 69 6e 20 72 65 76 20 63 20 2a 29 3d 20 36 3b 0a 20 78 6e 65 77 20 3d 20 37 3b 0a 0a 28   ┆ed in rev c *)= 6;  xnew = 7;  (┆
0x0485e0…048600             2a 20 6d 6f 64 65 20 66 6f 72 20 66 6f 72 20 73 74 61 74 65 6d 65 6e 74 20 20 20 2a 29 0a 0a 20   ┆* mode for for statement   *)   ┆
0x048600…048620 (19, 0, 10) 20 20 78 75 70 20 3d 20 31 3b 20 20 20 20 20 78 64 6f 77 6e 20 3d 20 32 3b 0a 0a 28 2a 20 65 78   ┆  xup = 1;     xdown = 2;  (* ex┆
0x048620…048640             70 6f 72 74 20 6e 61 6d 65 20 74 79 70 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆port name type                  ┆
0x048640…048660             20 20 20 20 20 20 20 20 2a 29 0a 0a 6f 66 66 73 65 74 5f 74 79 70 65 20 3d 20 31 3b 20 20 20 20   ┆        *)  offset_type = 1;    ┆
0x048660…048680             76 61 6c 75 65 5f 74 79 70 65 20 3d 20 32 3b 0a 0a 28 2a 20 65 6e 64 20 70 61 73 73 20 34 20 63   ┆value_type = 2;  (* end pass 4 c┆
0x048680…0486a0             6f 64 65 20 63 6f 6e 73 74 61 6e 74 73 20 2a 29 0a 0a 0a 0a 0a 0a 28 2a 20 20 20 63 6f 6e 73 74   ┆ode constants *)      (*   const┆
0x0486a0…0486c0             2e 20 6c 6f 63 61 6c 20 74 6f 20 6d 6f 64 75 6c 65 73 3a 20 20 20 20 20 20 20 2a 29 0a 0a 62 79   ┆. local to modules:       *)  by┆
0x0486c0…0486e0             74 65 5f 6c 65 6e 67 74 68 20 3d 20 31 3b 0a 77 6f 72 64 5f 6c 65 6e 67 74 68 20 3d 20 32 3b 20   ┆te_length = 1; word_length = 2; ┆
0x0486e0…048700             28 2a 20 6c 65 6e 67 74 68 20 6f 66 20 69 6e 74 65 67 65 72 20 61 6e 64 20 77 6f 72 64 20 3d 20   ┆(* length of integer and word = ┆
0x048700…048720             32 20 62 79 74 65 73 20 2a 29 0a 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 20 3d 20 33 3b 20 28   ┆2 bytes *) pointer_length = 3; (┆
0x048720…048740             2a 6c 65 6e 67 74 68 20 6f 66 20 70 6f 69 6e 74 65 72 20 3d 20 33 20 62 79 74 65 73 20 2a 29 0a   ┆*length of pointer = 3 bytes *) ┆
0x048740…048760             74 72 61 70 65 6e 74 65 72 20 3d 20 31 3b 20 28 2a 70 61 72 61 6d 65 74 65 72 20 66 6f 72 20 6d   ┆trapenter = 1; (*parameter for m┆
0x048760…048780             74 72 68 20 69 6e 73 74 72 75 63 74 69 6f 6e 2a 29 0a 74 72 61 70 72 65 74 75 72 6e 20 3d 20 32   ┆trh instruction*) trapreturn = 2┆
0x048780…0487a0             3b 28 2a 70 61 72 61 6d 65 74 65 72 20 66 6f 72 20 6d 74 72 68 20 69 6e 73 74 72 75 63 74 69 6f   ┆;(*parameter for mtrh instructio┆
0x0487a0…0487c0             6e 2a 29 0a 0a 28 2a 20 6f 66 66 73 65 74 73 20 69 6e 20 61 6e 6f 6e 79 6d 6f 75 73 20 6f 62 6a   ┆n*)  (* offsets in anonymous obj┆
0x0487c0…0487e0             65 63 74 20 63 72 65 61 74 65 64 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f 6e 20 77 69 74 68 20   ┆ect created in conjunction with ┆
0x0487e0…048800             6c 6f 63 6b 6d 65 73 20 73 74 61 74 65 6d 65 6e 74 20 2a 29 0a 28 2a 20 6f 66 66 73 65 74 73 20   ┆lockmes statement *) (* offsets ┆
0x048800…048820 (19, 0, 11) 61 72 65 20 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 2b 30 2c 20 32 2c 20 61 6e 64 20 34 20 2a   ┆are pointer_length+0, 2, and 4 *┆
0x048820…048840             29 0a 6c 6f 63 6b 6d 65 73 5f 66 69 72 73 74 5f 6f 66 66 73 65 74 3d 20 33 3b 20 28 2a 20 74 68   ┆) lockmes_first_offset= 3; (* th┆
0x048840…048860             65 20 6f 62 6a 65 63 74 20 69 73 20 61 20 72 65 63 6f 72 64 20 77 69 74 68 20 74 68 65 20 62 75   ┆e object is a record with the bu┆
0x048860…048880             66 66 65 72 20 70 6f 69 6e 74 65 72 20 61 73 20 66 69 72 73 74 20 66 69 65 6c 64 20 2a 29 0a 6c   ┆ffer pointer as first field *) l┆
0x048880…0488a0             6f 63 6b 6d 65 73 5f 6c 61 73 74 5f 6f 66 66 73 65 74 3d 20 35 3b 20 28 2a 20 66 6f 6c 6c 6f 77   ┆ockmes_last_offset= 5; (* follow┆
0x0488a0…0488c0             65 64 20 62 79 20 66 69 72 73 74 20 61 6e 64 20 6c 61 73 74 2b 31 2c 20 74 68 65 20 76 61 6c 75   ┆ed by first and last+1, the valu┆
0x0488c0…0488e0             65 73 20 66 72 6f 6d 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 70 61 72 74 20 6f 66 20 74 68   ┆es from the attribute part of th┆
0x0488e0…048900             65 20 62 75 66 66 65 72 20 2a 29 0a 6c 6f 63 6b 6d 65 73 5f 74 6f 70 5f 6f 66 66 73 65 74 3d 20   ┆e buffer *) lockmes_top_offset= ┆
0x048900…048920             37 3b 20 28 2a 20 61 6e 64 20 74 68 65 20 63 6f 6d 70 75 74 65 64 20 74 6f 70 20 76 61 6c 75 65   ┆7; (* and the computed top value┆
0x048920…048940             20 28 66 69 72 73 74 20 2b 20 73 69 7a 65 20 6f 66 20 6e 65 77 20 74 79 70 65 29 20 2a 29 0a 0a   ┆ (first + size of new type) *)  ┆
0x048940…048960             0a 0a 28 2a 20 20 20 74 79 70 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 67 6c 6f 62 61 6c 20 66   ┆  (*   type definitions global f┆
0x048960…048980             6f 72 20 70 61 73 73 35 3a 20 20 20 20 20 2a 29 0a 0a 74 79 70 65 0a 0a 6f 70 74 69 6f 6e 5f 6c   ┆or pass5:     *)  type  option_l┆
0x048980…0489a0             69 73 74 20 3d 20 72 65 63 6f 72 64 0a 20 20 6e 6f 5f 6f 66 5f 6f 70 74 69 6f 6e 73 20 3a 20 69   ┆ist = record   no_of_options : i┆
0x0489a0…0489c0             6e 74 65 67 65 72 3b 0a 6f 70 74 69 6f 6e 73 20 3a 20 61 72 72 61 79 20 5b 20 31 20 2e 2e 20 63   ┆nteger; options : array [ 1 .. c┆
0x0489c0…0489e0             5f 73 69 7a 65 5f 6f 70 74 69 6f 6e 5f 6c 69 73 74 20 5d 20 6f 66 0a 72 65 63 6f 72 64 0a 70 6e   ┆_size_option_list ] of record pn┆
0x0489e0…048a00             6f 2c 20 70 31 2c 20 70 32 20 3a 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64 3b 0a 20 20 20 20 20 20   ┆o, p1, p2 : integer; end;       ┆
0x048a00…048a20 (19, 0, 12) 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 0a 6f 70 63 6f 64 65 20 3d 20 28 6f 70 5f 61 61 61 61 61   ┆        end;  opcode = (op_aaaaa┆
0x048a20…048a40             20 2c 6f 70 5f 61 62 73 20 20 20 2c 6f 70 5f 61 64 64 20 20 20 2c 6f 70 5f 61 6e 64 20 20 20 2c   ┆ ,op_abs   ,op_add   ,op_and   ,┆
0x048a40…048a60             0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 63 65 78 63 68 20 2c 6f 70 5f 63 67 72 65 67 20 2c 6f   ┆           op_cexch ,op_cgreg ,o┆
0x048a60…048a80             70 5f 63 6f 6d 70 6c 20 2c 6f 70 5f 63 6f 75 74 77 71 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70   ┆p_compl ,op_coutwq,           op┆
0x048a80…048aa0             5f 63 72 67 65 74 20 2c 6f 70 5f 63 72 70 75 74 20 2c 6f 70 5f 63 73 65 6c 6c 20 2c 6f 70 5f 64   ┆_crget ,op_crput ,op_csell ,op_d┆
0x048aa0…048ac0             69 76 20 20 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 65 71 20 20 20 20 2c 6f 70 5f 67 65   ┆iv   ,           op_eq    ,op_ge┆
0x048ac0…048ae0             20 20 20 20 2c 6f 70 5f 67 74 20 20 20 20 2c 6f 70 5f 69 6e 64 65 78 20 2c 0a 20 20 20 20 20 20   ┆    ,op_gt    ,op_index ,       ┆
0x048ae0…048b00             20 20 20 20 6f 70 5f 69 6e 64 68 30 20 2c 6f 70 5f 69 6e 64 68 30 31 2c 6f 70 5f 69 6e 64 68 30   ┆    op_indh0 ,op_indh01,op_indh0┆
0x048b00…048b20             32 2c 6f 70 5f 69 6e 64 68 31 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 69 6e 64 68 31 31   ┆2,op_indh1 ,           op_indh11┆
0x048b20…048b40             2c 6f 70 5f 69 6e 64 68 31 32 2c 6f 70 5f 69 6e 70 64 76 20 2c 6f 70 5f 69 6e 74 68 30 20 2c 0a   ┆,op_indh12,op_inpdv ,op_inth0 , ┆
0x048b40…048b60             20 20 20 20 20 20 20 20 20 20 6f 70 5f 69 6e 74 70 61 20 2c 6f 70 5f 69 6e 74 72 73 20 2c 6f 70   ┆          op_intpa ,op_intrs ,op┆
0x048b60…048b80             5f 69 6f 63 64 61 20 2c 6f 70 5f 69 6f 72 73 63 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f   ┆_iocda ,op_iorsc ,           op_┆
0x048b80…048ba0             6a 6d 63 68 74 20 2c 6f 70 5f 6a 6d 70 67 61 20 2c 6f 70 5f 6a 6d 70 72 77 20 2c 6f 70 5f 6a 6d   ┆jmcht ,op_jmpga ,op_jmprw ,op_jm┆
0x048ba0…048bc0             7a 65 71 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 6a 6d 7a 67 65 20 2c 6f 70 5f 6a 6d 7a   ┆zeq ,           op_jmzge ,op_jmz┆
0x048bc0…048be0             67 74 20 2c 6f 70 5f 6a 6d 7a 6c 65 20 2c 6f 70 5f 6a 6d 7a 6c 74 20 2c 0a 20 20 20 20 20 20 20   ┆gt ,op_jmzle ,op_jmzlt ,        ┆
0x048be0…048c00             20 20 20 6f 70 5f 6a 6d 7a 6e 65 20 2c 6f 70 5f 6c 65 20 20 20 20 2c 6f 70 5f 6c 6c 6f 63 6b 20   ┆   op_jmzne ,op_le    ,op_llock ┆
0x048c00…048c20 (19, 0, 13) 2c 6f 70 5f 6c 72 65 6c 65 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 6c 72 65 73 65 20 2c   ┆,op_lrele ,           op_lrese ,┆
0x048c20…048c40             6f 70 5f 6c 74 20 20 20 20 2c 6f 70 5f 6d 61 64 64 20 20 2c 6f 70 5f 6d 6f 64 20 20 20 2c 0a 20   ┆op_lt    ,op_madd  ,op_mod   ,  ┆
0x048c40…048c60             20 20 20 20 20 20 20 20 20 6f 70 5f 6d 6f 76 65 62 20 2c 6f 70 5f 6d 6f 76 65 62 73 2c 6f 70 5f   ┆         op_moveb ,op_movebs,op_┆
0x048c60…048c80             6d 6f 76 65 67 20 2c 6f 70 5f 6d 73 75 62 20 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 6d   ┆moveg ,op_msub  ,           op_m┆
0x048c80…048ca0             74 72 68 20 20 2c 6f 70 5f 6d 74 72 73 20 20 2c 6f 70 5f 6d 75 6c 20 20 20 2c 6f 70 5f 6e 65 20   ┆trh  ,op_mtrs  ,op_mul   ,op_ne ┆
0x048ca0…048cc0             20 20 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 6e 65 67 20 20 20 2c 6f 70 5f 6e 6f 74 20   ┆   ,           op_neg   ,op_not ┆
0x048cc0…048ce0             20 20 2c 6f 70 5f 6f 72 20 20 20 20 2c 6f 70 5f 70 63 61 6c 73 20 2c 0a 20 20 20 20 20 20 20 20   ┆  ,op_or    ,op_pcals ,         ┆
0x048ce0…048d00             20 20 6f 70 5f 70 63 61 6c 73 30 2c 6f 70 5f 70 63 61 6c 73 31 2c 6f 70 5f 70 65 78 69 74 20 2c   ┆  op_pcals0,op_pcals1,op_pexit ,┆
0x048d00…048d20             6f 70 5f 72 65 61 61 64 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 72 65 61 64 62 20 2c 6f   ┆op_reaad ,           op_readb ,o┆
0x048d20…048d40             70 5f 72 65 61 64 77 20 2c 6f 70 5f 72 65 61 67 64 20 2c 6f 70 5f 72 65 61 69 64 20 2c 0a 20 20   ┆p_readw ,op_reagd ,op_reaid ,   ┆
0x048d40…048d60             20 20 20 20 20 20 20 20 6f 70 5f 72 65 61 69 73 64 2c 6f 70 5f 72 65 61 6c 64 20 2c 6f 70 5f 72   ┆        op_reaisd,op_reald ,op_r┆
0x048d60…048d80             65 61 72 64 20 2c 6f 70 5f 72 65 61 73 64 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 72 65   ┆eard ,op_reasd ,           op_re┆
0x048d80…048da0             61 78 64 20 2c 6f 70 5f 72 65 63 68 64 20 2c 6f 70 5f 72 65 63 68 77 20 2c 6f 70 5f 72 65 6e 68   ┆axd ,op_rechd ,op_rechw ,op_renh┆
0x048da0…048dc0             62 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 72 65 6e 70 62 20 2c 6f 70 5f 72 65 73 74 63   ┆b ,           op_renpb ,op_restc┆
0x048dc0…048de0             20 2c 6f 70 5f 72 65 76 67 61 20 2c 6f 70 5f 72 65 76 67 62 20 2c 0a 20 20 20 20 20 20 20 20 20   ┆ ,op_revga ,op_revgb ,          ┆
0x048de0…048e00             20 6f 70 5f 72 65 76 67 64 20 2c 6f 70 5f 72 65 76 67 77 20 2c 6f 70 5f 72 65 76 6c 61 20 2c 6f   ┆ op_revgd ,op_revgw ,op_revla ,o┆
0x048e00…048e20 (19, 0, 14) 70 5f 72 65 76 6c 62 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 72 65 76 6c 64 20 2c 6f 70   ┆p_revlb ,           op_revld ,op┆
0x048e20…048e40             5f 72 65 76 6c 77 20 2c 6f 70 5f 72 65 76 70 64 20 2c 6f 70 5f 72 65 76 70 77 20 2c 0a 20 20 20   ┆_revlw ,op_revpd ,op_revpw ,    ┆
0x048e40…048e60             20 20 20 20 20 20 20 6f 70 5f 72 65 76 73 61 20 2c 6f 70 5f 72 65 76 73 62 20 2c 6f 70 5f 72 65   ┆       op_revsa ,op_revsb ,op_re┆
0x048e60…048e80             76 73 64 20 2c 6f 70 5f 72 65 76 73 66 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 72 65 76   ┆vsd ,op_revsf ,           op_rev┆
0x048e80…048ea0             73 6d 20 2c 6f 70 5f 72 65 76 73 77 20 2c 6f 70 5f 73 65 74 61 64 20 2c 6f 70 5f 73 65 74 61 74   ┆sm ,op_revsw ,op_setad ,op_setat┆
0x048ea0…048ec0             6d 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 73 65 74 63 72 20 2c 6f 70 5f 73 65 74 64 69 20   ┆m,           op_setcr ,op_setdi ┆
0x048ec0…048ee0             2c 6f 70 5f 73 65 74 65 71 20 2c 6f 70 5f 73 65 74 69 6e 20 2c 0a 20 20 20 20 20 20 20 20 20 20   ┆,op_seteq ,op_setin ,           ┆
0x048ee0…048f00             6f 70 5f 73 65 74 72 65 20 2c 6f 70 5f 73 65 74 73 62 20 2c 6f 70 5f 73 65 74 73 70 20 2c 6f 70   ┆op_setre ,op_setsb ,op_setsp ,op┆
0x048f00…048f20             5f 73 65 74 73 74 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 73 65 74 74 6d 20 2c 6f 70 5f   ┆_setst ,           op_settm ,op_┆
0x048f20…048f40             73 65 74 75 6e 20 2c 6f 70 5f 73 68 63 20 20 20 2c 6f 70 5f 73 74 63 65 61 20 2c 6f 70 5f 73 74   ┆setun ,op_shc   ,op_stcea ,op_st┆
0x048f40…048f60             6e 68 62 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 73 74 73 74 63 20 2c 6f 70 5f 73 74 76   ┆nhb ,           op_ststc ,op_stv┆
0x048f60…048f80             67 61 20 2c 6f 70 5f 73 74 76 67 62 20 2c 6f 70 5f 73 74 76 67 64 20 2c 0a 20 20 20 20 20 20 20   ┆ga ,op_stvgb ,op_stvgd ,        ┆
0x048f80…048fa0             20 20 20 6f 70 5f 73 74 76 67 77 20 2c 6f 70 5f 73 74 76 6c 61 20 2c 6f 70 5f 73 74 76 6c 62 20   ┆   op_stvgw ,op_stvla ,op_stvlb ┆
0x048fa0…048fc0             2c 6f 70 5f 73 74 76 6c 64 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 73 74 76 6c 77 20 2c   ┆,op_stvld ,           op_stvlw ,┆
0x048fc0…048fe0             6f 70 5f 73 74 76 73 61 20 2c 6f 70 5f 73 74 76 73 62 20 2c 6f 70 5f 73 74 76 73 64 20 2c 0a 20   ┆op_stvsa ,op_stvsb ,op_stvsd ,  ┆
0x048fe0…049000             20 20 20 20 20 20 20 20 20 6f 70 5f 73 74 76 73 66 20 2c 6f 70 5f 73 74 76 73 77 20 2c 6f 70 5f   ┆         op_stvsf ,op_stvsw ,op_┆
0x049000…049020 (19, 0, 15) 73 75 62 20 20 20 2c 6f 70 5f 74 65 71 61 64 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 74   ┆sub   ,op_teqad ,           op_t┆
0x049020…049040             6e 69 6c 6c 20 2c 6f 70 5f 75 61 64 64 20 20 2c 6f 70 5f 75 61 64 68 77 20 2c 6f 70 5f 75 64 69   ┆nill ,op_uadd  ,op_uadhw ,op_udi┆
0x049040…049060             76 20 20 2c 0a 20 20 20 20 20 20 20 20 20 20 6f 70 5f 75 6c 74 20 20 20 2c 6f 70 5f 75 6d 6f 64   ┆v  ,           op_ult   ,op_umod┆
0x049060…049080             20 20 2c 6f 70 5f 75 6d 75 6c 20 20 2c 6f 70 5f 75 73 75 62 20 20 2c 0a 20 20 20 20 20 20 20 20   ┆  ,op_umul  ,op_usub  ,         ┆
0x049080…0490a0             20 20 6f 70 5f 78 6f 72 20 20 20 2c 6f 70 5f 78 78 78 78 78 29 3b 0a 6f 70 63 6f 64 65 5f 72 61   ┆  op_xor   ,op_xxxxx); opcode_ra┆
0x0490a0…0490c0             6e 67 65 20 3d 20 6f 70 5f 61 61 61 61 61 20 2e 2e 20 6f 70 5f 78 78 78 78 78 3b 0a 0a 0a 65 78   ┆nge = op_aaaaa .. op_xxxxx;   ex┆
0x0490c0…0490e0             63 5f 63 6f 64 65 20 3d 20 30 20 2e 2e 20 63 5f 65 78 63 5f 6d 61 78 3b 0a 0a 0a 63 6f 6e 74 65   ┆c_code = 0 .. c_exc_max;   conte┆
0x0490e0…049100             78 74 20 3d 20 72 65 63 6f 72 64 0a 6e 69 76 20 3a 20 69 6e 74 65 67 65 72 3b 0a 73 74 61 63 6b   ┆xt = record niv : integer; stack┆
0x049100…049120             5f 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6d 61 78 5f 73 74 61 63 6b 5f 73 69 7a 65 20   ┆_size : integer; max_stack_size ┆
0x049120…049140             3a 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64 3b 0a 0a 66 72 61 6d 65 5f 6b 69 6e 64 20 3d 20 28 67   ┆: integer; end;  frame_kind = (g┆
0x049140…049160             5f 66 72 61 6d 65 2c 20 6c 5f 66 72 61 6d 65 2c 20 69 5f 66 72 61 6d 65 2c 20 73 5f 66 72 61 6d   ┆_frame, l_frame, i_frame, s_fram┆
0x049160…049180             65 29 3b 0a 0a 61 64 64 72 5f 6b 69 6e 64 5f 74 79 70 65 20 3d 20 28 20 61 64 64 72 2c 20 73 74   ┆e);  addr_kind_type = ( addr, st┆
0x049180…0491a0             61 63 6b 5f 61 64 64 72 2c 20 70 61 63 6b 65 64 5f 61 72 72 20 29 3b 0a 0a 76 61 72 76 61 6c 75   ┆ack_addr, packed_arr );  varvalu┆
0x0491a0…0491c0             65 5f 64 65 73 63 72 20 3d 20 72 65 63 6f 72 64 0a 6b 69 6e 64 20 3a 20 69 6e 74 65 67 65 72 3b   ┆e_descr = record kind : integer;┆
0x0491c0…0491e0             0a 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 61 6c 20 20 3a 20 69 6e 74 65 67 65 72 3b   ┆ size : integer; val  : integer;┆
0x0491e0…049200             0a 65 6e 64 3b 0a 0a 76 61 72 61 64 64 72 5f 64 65 73 63 72 20 3d 20 72 65 63 6f 72 64 0a 6b 69   ┆ end;  varaddr_descr = record ki┆
0x049200…049220 (19, 1, 1)  6e 64 20 3a 20 61 64 64 72 5f 6b 69 6e 64 5f 74 79 70 65 3b 0a 61 63 63 65 73 73 20 3a 20 66 72   ┆nd : addr_kind_type; access : fr┆
0x049220…049240             61 6d 65 5f 6b 69 6e 64 3b 0a 6e 69 76 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6f 66 66 73 65 74 20   ┆ame_kind; niv : integer; offset ┆
0x049240…049260             3a 20 69 6e 74 65 67 65 72 3b 0a 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 0a 65 6e 64 3b 0a 0a   ┆: integer; size : integer end;  ┆
0x049260…049280             69 6e 73 74 72 75 63 74 69 6f 6e 5f 74 79 70 65 20 3d 28 6e 6f 72 6d 61 6c 2c 0a 20 20 20 20 20   ┆instruction_type =(normal,      ┆
0x049280…0492a0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6d 70 74 79 5f 73 74 61 63 6b 2c 20 28 2a 65 6d 74   ┆              empty_stack, (*emt┆
0x0492a0…0492c0             69 65 73 20 74 68 65 20 73 74 61 63 6b 20 61 66 74 65 72 20 65 78 65 63 75 74 69 6f 6e 2a 29 0a   ┆ies the stack after execution*) ┆
0x0492c0…0492e0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65 6e 5f 69 6e 73 74 72 20 2c 20   ┆                   open_instr , ┆
0x0492e0…049300             28 2a 72 65 71 75 69 72 65 73 20 32 20 65 78 74 72 61 20 73 74 61 63 6b 20 65 6c 65 6d 65 6e 74   ┆(*requires 2 extra stack element┆
0x049300…049320             73 20 6e 6f 74 20 20 61 6c 6c 6f 77 65 64 20 69 6e 20 70 61 73 73 35 20 2a 29 0a 20 20 20 20 20   ┆s not  allowed in pass5 *)      ┆
0x049320…049340             20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 77 5f 69 6e 73 74 72 20 20 20 2c 20 28 2a 20 68 77   ┆              hw_instr   , (* hw┆
0x049340…049360             20 69 6e 73 74 72 75 63 74 69 6f 6e 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 69 6e 20 70 61 73 73   ┆ instruction not allowed in pass┆
0x049360…049380             35 20 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 5f 69 6e 73 74   ┆5 *)                    set_inst┆
0x049380…0493a0             72 20 20 2c 20 20 28 2a 20 6f 6e 6c 79 20 73 69 6d 70 6c 65 20 6f 70 65 72 61 6e 64 73 20 6f 6e   ┆r  ,  (* only simple operands on┆
0x0493a0…0493c0             20 73 74 61 63 6b 20 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74   ┆ stack *)                    set┆
0x0493c0…0493e0             5f 6f 6e 6c 79 5f 73 77 2c 20 28 2a 6f 6e 6c 79 20 73 77 73 74 61 63 6b 20 73 68 61 6c 6c 20 62   ┆_only_sw, (*only swstack shall b┆
0x0493e0…049400             65 20 6d 61 6e 69 70 75 6c 61 74 65 64 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆e manipulated*)                 ┆
0x049400…049420 (19, 1, 2)  20 20 20 73 65 74 5f 68 77 5f 77 6f 72 64 20 20 29 3b 20 28 2a 20 6f 6e 6c 79 20 73 69 6d 70 6c   ┆   set_hw_word  ); (* only simpl┆
0x049420…049440             65 20 6f 70 65 72 61 6e 64 73 20 6f 6e 20 73 74 61 63 6b 2e 4d 6f 76 65 20 6f 6e 65 20 77 6f 72   ┆e operands on stack.Move one wor┆
0x049440…049460             64 20 6f 6e 20 73 74 61 63 6b 20 61 66 74 65 72 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 2a 29 0a   ┆d on stack after instruction *) ┆
0x049460…049480             0a 0a 6f 70 63 6f 64 65 5f 64 65 66 20 3d 20 72 65 63 6f 72 64 0a 6f 70 6e 61 6d 65 20 3a 20 20   ┆  opcode_def = record opname :  ┆
0x049480…0494a0             61 72 72 61 79 20 5b 20 31 20 2e 2e 20 63 5f 73 69 7a 65 5f 6f 70 63 6f 64 65 20 5d 20 6f 66 20   ┆array [ 1 .. c_size_opcode ] of ┆
0x0494a0…0494c0             63 68 61 72 3b 0a 6f 70 61 70 70 65 74 69 74 65 2c 20 20 20 20 28 2a 20 20 73 74 61 63 6b 20 6d   ┆char; opappetite,    (*  stack m┆
0x0494c0…0494e0             6f 76 65 6d 65 6e 74 20 2a 29 0a 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 28 2a 20 72 65 71   ┆ovement *) min_hw_stack:  (* req┆
0x0494e0…049500             75 69 72 65 64 20 65 6c 65 6d 65 6e 74 73 20 6f 6e 20 73 74 61 63 6b 20 62 65 66 6f 72 65 20 65   ┆uired elements on stack before e┆
0x049500…049520             78 65 63 75 74 69 6f 6e 20 2a 29 20 69 6e 74 65 67 65 72 3b 0a 6f 70 5f 74 79 70 65 20 20 20 20   ┆xecution *) integer; op_type    ┆
0x049520…049540             20 3a 20 69 6e 73 74 72 75 63 74 69 6f 6e 5f 74 79 70 65 3b 0a 65 6e 64 3b 0a 0a 70 61 73 73 34   ┆ : instruction_type; end;  pass4┆
0x049540…049560             63 6f 64 65 73 20 3d 0a 28 20 78 66 69 72 73 74 63 6f 64 65 2c 0a 0a 20 78 6d 6f 64 75 6c 65 2c   ┆codes = ( xfirstcode,   xmodule,┆
0x049560…049580             20 20 78 65 6f 6d 2c 0a 20 78 6f 70 74 69 6f 6e 2c 20 20 78 6e 65 77 6c 69 6e 65 2c 0a 0a 20 78   ┆  xeom,  xoption,  xnewline,   x┆
0x049580…0495a0             70 72 6f 63 65 73 73 2c 20 20 78 65 78 74 70 72 6f 63 65 73 73 2c 0a 20 78 62 6c 6f 63 6b 2c 20   ┆process,  xextprocess,  xblock, ┆
0x0495a0…0495c0             20 78 6c 65 6e 67 74 68 2c 20 20 78 65 6e 64 62 6c 6f 63 6b 2c 0a 0a 20 78 62 65 67 69 6e 63 6f   ┆ xlength,  xendblock,   xbeginco┆
0x0495c0…0495e0             64 65 2c 20 20 78 63 6f 64 65 6c 69 6e 65 2c 20 20 78 65 6e 64 63 6f 64 65 2c 0a 0a 20 78 73 75   ┆de,  xcodeline,  xendcode,   xsu┆
0x0495e0…049600             62 64 65 66 2c 0a 20 78 61 72 72 61 79 31 74 65 6d 70 6c 61 74 65 2c 20 20 78 61 72 72 61 79 32   ┆bdef,  xarray1template,  xarray2┆
0x049600…049620 (19, 1, 3)  74 65 6d 70 6c 61 74 65 2c 20 20 78 61 72 72 61 79 33 74 65 6d 70 6c 61 74 65 2c 0a 20 78 72 65   ┆template,  xarray3template,  xre┆
0x049620…049640             63 6f 72 64 74 65 6d 70 6c 61 74 65 2c 20 20 78 66 69 65 6c 64 73 69 7a 65 2c 20 20 78 64 79 6e   ┆cordtemplate,  xfieldsize,  xdyn┆
0x049640…049660             66 69 65 6c 64 73 69 7a 65 2c 20 78 69 6e 63 66 69 65 6c 64 2c 0a 20 78 65 6e 64 74 65 6d 70 6c   ┆fieldsize, xincfield,  xendtempl┆
0x049660…049680             61 74 65 2c 0a 20 78 65 6e 64 64 65 63 6c 2c 0a 0a 20 78 61 6c 6c 6f 63 64 79 6e 76 61 72 2c 0a   ┆ate,  xenddecl,   xallocdynvar, ┆
0x049680…0496a0             0a 20 78 69 6e 69 74 69 61 6c 69 7a 65 2c 20 20 78 73 74 72 75 63 69 6e 69 74 2c 20 20 78 73 69   ┆  xinitialize,  xstrucinit,  xsi┆
0x0496a0…0496c0             6d 70 6c 65 69 6e 69 74 2c 20 20 78 73 65 74 69 6e 69 74 2c 0a 20 78 65 78 63 65 70 74 69 6f 6e   ┆mpleinit,  xsetinit,  xexception┆
0x0496c0…0496e0             2c 20 20 78 65 78 74 65 78 63 65 70 74 69 6f 6e 2c 0a 20 78 73 79 73 69 6e 69 74 2c 20 20 78 73   ┆,  xextexception,  xsysinit,  xs┆
0x0496e0…049700             79 73 64 79 6e 69 6e 69 74 2c 0a 20 78 73 79 73 6e 65 77 69 6e 69 74 2c 0a 20 78 66 69 65 6c 64   ┆ysdyninit,  xsysnewinit,  xfield┆
0x049700…049720             69 6e 69 74 2c 20 20 78 64 79 6e 66 69 65 6c 64 69 6e 69 74 2c 0a 20 78 65 6e 64 69 6e 69 74 66   ┆init,  xdynfieldinit,  xendinitf┆
0x049720…049740             69 65 6c 64 73 2c 0a 20 78 61 72 72 61 79 69 6e 69 74 2c 20 20 78 61 72 72 61 79 64 79 6e 69 6e   ┆ields,  xarrayinit,  xarraydynin┆
0x049740…049760             69 74 2c 0a 20 78 70 6f 6f 6c 69 6e 69 74 2c 0a 20 78 76 61 72 69 6e 69 74 2c 0a 0a 20 78 65 78   ┆it,  xpoolinit,  xvarinit,   xex┆
0x049760…049780             70 6f 72 74 2c 0a 0a 20 78 70 72 6f 63 2c 20 20 78 65 78 74 70 72 6f 63 2c 0a 20 78 66 75 6e 63   ┆port,   xproc,  xextproc,  xfunc┆
0x049780…0497a0             2c 20 20 78 65 78 74 66 75 6e 63 2c 0a 20 78 70 61 72 61 6d 74 79 70 65 2c 0a 0a 20 78 64 65 66   ┆,  xextfunc,  xparamtype,   xdef┆
0x0497a0…0497c0             6c 69 78 2c 0a 0a 20 78 70 72 6f 63 63 61 6c 6c 2c 20 20 78 65 6e 64 70 63 61 6c 6c 2c 0a 20 78   ┆lix,   xproccall,  xendpcall,  x┆
0x0497c0…0497e0             65 78 74 70 72 6f 63 63 61 6c 6c 2c 20 78 73 74 64 70 72 6f 63 63 61 6c 6c 2c 0a 20 78 70 72 6f   ┆extproccall, xstdproccall,  xpro┆
0x0497e0…049800             63 65 73 73 70 61 72 61 6d 2c 20 20 78 65 6e 64 70 72 6f 63 65 73 73 70 61 72 61 6d 2c 0a 20 78   ┆cessparam,  xendprocessparam,  x┆
0x049800…049820 (19, 1, 4)  73 74 64 66 75 6e 63 63 61 6c 6c 2c 20 20 78 66 63 61 6c 6c 2c 20 20 78 65 6e 64 66 75 6e 63 63   ┆stdfunccall,  xfcall,  xendfuncc┆
0x049820…049840             61 6c 6c 2c 0a 20 78 66 75 6e 63 63 61 6c 6c 2c 20 20 78 65 78 74 66 75 6e 63 63 61 6c 6c 2c 0a   ┆all,  xfunccall,  xextfunccall, ┆
0x049840…049860             20 78 65 6e 64 6e 65 77 63 61 6c 6c 2c 0a 0a 20 78 76 61 72 70 6f 69 6e 74 65 72 2c 20 20 78 74   ┆ xendnewcall,   xvarpointer,  xt┆
0x049860…049880             65 6d 70 6f 69 6e 74 65 72 2c 20 20 78 61 72 67 6c 69 73 74 73 69 7a 65 2c 0a 0a 20 78 76 61 72   ┆empointer,  xarglistsize,   xvar┆
0x049880…0498a0             70 61 72 61 6d 2c 20 20 78 76 61 6c 75 65 70 61 72 61 6d 2c 20 78 72 65 74 75 72 6e 70 61 72 61   ┆param,  xvalueparam, xreturnpara┆
0x0498a0…0498c0             6d 2c 0a 0a 20 78 61 73 73 69 67 6e 73 74 61 74 2c 20 20 78 6c 65 66 74 2c 20 20 78 61 73 73 69   ┆m,   xassignstat,  xleft,  xassi┆
0x0498c0…0498e0             67 6e 2c 0a 0a 20 78 63 61 73 65 73 74 61 74 2c 20 20 78 63 61 73 65 2c 20 20 78 65 6e 64 63 61   ┆gn,   xcasestat,  xcase,  xendca┆
0x0498e0…049900             73 65 6c 69 73 74 2c 20 20 78 65 6e 64 63 61 73 65 73 74 61 74 2c 20 20 78 65 6e 64 63 61 73 65   ┆selist,  xendcasestat,  xendcase┆
0x049900…049920             2c 0a 20 78 63 61 73 65 72 61 6e 67 65 2c 20 20 78 63 61 73 65 6c 61 62 65 6c 2c 20 20 78 6f 74   ┆,  xcaserange,  xcaselabel,  xot┆
0x049920…049940             68 65 72 77 69 73 65 2c 0a 0a 20 78 66 6f 72 73 74 61 74 2c 20 20 78 6c 65 66 74 66 6f 72 2c 20   ┆herwise,   xforstat,  xleftfor, ┆
0x049940…049960             20 78 66 6f 72 73 74 6f 72 65 2c 20 20 78 64 6f 2c 20 20 78 65 6e 64 66 6f 72 2c 0a 0a 20 78 67   ┆ xforstore,  xdo,  xendfor,   xg┆
0x049960…049980             6f 74 6f 2c 0a 0a 20 78 69 66 73 74 61 74 2c 20 20 78 69 66 65 78 70 72 2c 20 20 78 65 6c 73 65   ┆oto,   xifstat,  xifexpr,  xelse┆
0x049980…0499a0             2c 20 20 78 69 66 2c 0a 0a 20 78 72 65 70 65 61 74 2c 20 20 78 75 6e 74 69 6c 2c 20 20 78 65 6e   ┆,  xif,   xrepeat,  xuntil,  xen┆
0x0499a0…0499c0             64 72 65 70 65 61 74 2c 0a 0a 20 78 6c 6f 6f 70 73 74 61 74 2c 20 78 65 6e 64 6c 6f 6f 70 73 74   ┆drepeat,   xloopstat, xendloopst┆
0x0499c0…0499e0             61 74 2c 20 78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 2c 20 78 65 78 69 74 6c 6f 6f 70 73 74 61 74   ┆at, xcontloopstat, xexitloopstat┆
0x0499e0…049a00             2c 0a 20 78 65 78 69 74 73 74 61 74 2c 0a 0a 20 78 77 68 69 6c 65 2c 20 20 78 77 68 69 6c 65 65   ┆,  xexitstat,   xwhile,  xwhilee┆
0x049a00…049a20 (19, 1, 5)  78 70 72 2c 20 20 78 65 6e 64 77 68 69 6c 65 2c 0a 0a 20 78 77 69 74 68 73 74 61 74 2c 20 78 77   ┆xpr,  xendwhile,   xwithstat, xw┆
0x049a20…049a40             69 74 68 76 61 72 2c 20 78 77 69 74 68 64 79 6e 76 61 72 2c 20 20 78 65 6e 64 77 69 74 68 2c 20   ┆ithvar, xwithdynvar,  xendwith, ┆
0x049a40…049a60             20 78 6e 6f 72 65 74 79 70 65 2c 20 78 72 65 74 79 70 65 2c 20 78 64 79 6e 72 65 74 79 70 65 2c   ┆ xnoretype, xretype, xdynretype,┆
0x049a60…049a80             0a 0a 20 78 6c 6f 63 6b 73 74 61 74 2c 20 20 78 6c 6f 63 6b 76 61 72 2c 20 20 78 6c 6f 63 6b 64   ┆   xlockstat,  xlockvar,  xlockd┆
0x049a80…049aa0             79 6e 76 61 72 2c 20 20 78 65 6e 64 6c 6f 63 6b 2c 0a 0a 20 78 6c 6f 63 6b 6d 65 73 73 74 61 74   ┆ynvar,  xendlock,   xlockmesstat┆
0x049aa0…049ac0             2c 20 78 65 78 69 74 6c 6f 63 6b 2c 0a 0a 20 78 63 68 61 6e 6e 65 6c 2c 20 20 78 63 68 61 6e 76   ┆, xexitlock,   xchannel,  xchanv┆
0x049ac0…049ae0             61 72 2c 20 20 78 65 6e 64 63 68 61 6e 6e 65 6c 2c 0a 0a 20 78 65 78 63 68 73 74 61 74 2c 20 20   ┆ar,  xendchannel,   xexchstat,  ┆
0x049ae0…049b00             78 65 78 63 68 61 6e 67 65 2c 0a 0a 20 78 6e 6f 74 2c 20 20 78 6e 65 67 2c 20 20 78 63 6f 6d 70   ┆xexchange,   xnot,  xneg,  xcomp┆
0x049b00…049b20             61 72 65 2c 20 20 78 63 6f 6d 70 73 74 72 75 63 2c 20 20 78 63 6f 6d 70 64 79 6e 73 74 72 75 63   ┆are,  xcompstruc,  xcompdynstruc┆
0x049b20…049b40             2c 20 20 78 64 69 76 2c 0a 20 78 6d 75 6c 2c 20 20 78 73 68 69 66 74 2c 20 20 78 72 6f 74 61 74   ┆,  xdiv,  xmul,  xshift,  xrotat┆
0x049b40…049b60             65 2c 20 78 6d 6f 64 2c 20 20 78 6f 72 5f 2c 20 20 78 78 6f 72 2c 0a 20 78 61 64 64 2c 20 20 78   ┆e, xmod,  xor_,  xxor,  xadd,  x┆
0x049b60…049b80             73 75 62 2c 20 20 78 61 6e 64 2c 20 20 78 72 61 6e 67 65 74 65 73 74 2c 0a 20 78 64 79 6e 72 61   ┆sub,  xand,  xrangetest,  xdynra┆
0x049b80…049ba0             6e 67 65 74 65 73 74 2c 0a 0a 20 78 63 6f 6e 73 74 2c 20 20 78 6c 63 6f 6e 73 74 2c 20 20 78 73   ┆ngetest,   xconst,  xlconst,  xs┆
0x049ba0…049bc0             65 74 63 6f 6e 73 74 2c 0a 20 78 73 65 74 2c 20 20 78 69 6e 63 6c 75 64 65 2c 20 20 78 73 65 74   ┆etconst,  xset,  xinclude,  xset┆
0x049bc0…049be0             65 78 70 72 2c 20 20 78 69 6e 63 6c 75 64 65 69 6e 74 2c 20 20 78 65 6e 64 73 65 74 2c 0a 0a 20   ┆expr,  xincludeint,  xendset,   ┆
0x049be0…049c00             78 69 6e 69 74 63 6f 6e 73 74 2c 0a 0a 20 78 69 6e 64 76 61 72 2c 20 20 0a 0a 20 78 61 64 64 72   ┆xinitconst,   xindvar,     xaddr┆
0x049c00…049c20 (19, 1, 6)  2c 20 20 78 63 61 64 64 72 2c 20 20 78 69 6e 64 61 64 64 72 2c 20 0a 20 78 70 61 63 6b 65 64 61   ┆,  xcaddr,  xindaddr,   xpackeda┆
0x049c20…049c40             72 72 2c 0a 0a 20 78 66 69 65 6c 64 2c 20 20 78 64 79 6e 66 69 65 6c 64 2c 0a 0a 20 78 69 6e 64   ┆rr,   xfield,  xdynfield,   xind┆
0x049c40…049c60             65 78 65 78 70 72 2c 20 20 78 63 69 6e 64 65 78 2c 20 20 78 69 6e 64 65 78 2c 0a 0a 20 78 65 72   ┆exexpr,  xcindex,  xindex,   xer┆
0x049c60…049c80             72 6f 72 2c 20 78 65 72 72 6f 72 6e 6f 2c 20 78 65 72 72 6f 72 74 65 78 74 2c 0a 20 78 72 61 6e   ┆ror, xerrorno, xerrortext,  xran┆
0x049c80…049ca0             67 65 6d 61 78 2c 20 78 68 69 6e 64 65 78 2c 0a 20 78 6c 61 73 74 63 6f 64 65 0a 0a 29 3b 0a 70   ┆gemax, xhindex,  xlastcode  ); p┆
0x049ca0…049cc0             61 73 73 34 63 6f 64 65 69 6e 64 65 78 20 3d 20 30 2e 2e 31 36 30 3b 0a 0a 0c 0a 0a 28 2a 20 65   ┆ass4codeindex = 0..160;     (* e┆
0x049cc0…049ce0             6e 64 20 70 61 73 73 20 34 20 63 6f 64 65 73 20 2a 29 0a 0a 0a 0a 0a 70 61 73 73 35 65 72 72 6f   ┆nd pass 4 codes *)     pass5erro┆
0x049ce0…049d00             72 73 20 3d 20 28 0a 65 78 74 5f 74 61 62 6c 65 5f 73 69 7a 65 2c 20 20 20 20 20 20 28 2a 20 65   ┆rs = ( ext_table_size,      (* e┆
0x049d00…049d20             78 74 5f 74 61 62 5f 6d 61 78 20 74 6f 6f 20 73 6d 61 6c 6c 20 2a 29 0a 65 78 74 5f 70 61 72 61   ┆xt_tab_max too small *) ext_para┆
0x049d20…049d40             6d 5f 6e 75 6d 62 65 72 2c 20 20 20 20 28 2a 20 65 72 72 6f 72 20 69 6e 20 75 73 65 72 20 70 72   ┆m_number,    (* error in user pr┆
0x049d40…049d60             6f 67 72 61 6d 20 2a 29 0a 70 61 72 61 6d 5f 6e 75 6d 62 65 72 2c 20 20 20 20 20 20 20 20 28 2a   ┆ogram *) param_number,        (*┆
0x049d60…049d80             20 65 72 72 6f 72 20 69 6e 20 75 73 65 72 20 70 72 6f 67 72 61 6d 20 2a 29 0a 76 5f 73 74 61 63   ┆ error in user program *) v_stac┆
0x049d80…049da0             6b 5f 73 69 7a 65 2c 20 20 20 20 20 20 20 20 28 2a 20 6d 61 78 5f 76 5f 73 74 61 63 6b 20 74 6f   ┆k_size,        (* max_v_stack to┆
0x049da0…049dc0             6f 20 73 6d 61 6c 6c 20 2a 29 0a 63 61 73 65 5f 6c 61 62 65 6c 5f 65 72 72 6f 72 2c 20 20 20 20   ┆o small *) case_label_error,    ┆
0x049dc0…049de0             28 2a 20 65 72 72 6f 72 20 69 6e 20 75 73 65 72 20 70 72 6f 67 72 61 6d 20 2a 29 0a 63 6f 6d 70   ┆(* error in user program *) comp┆
0x049de0…049e00             69 6c 65 72 5f 65 72 72 6f 72 2c 20 20 20 20 20 20 28 2a 20 65 72 72 6f 72 20 69 6e 20 74 68 69   ┆iler_error,      (* error in thi┆
0x049e00…049e20 (19, 1, 7)  73 20 70 61 73 73 20 2a 29 0a 6f 76 65 72 66 6c 6f 77 2c 20 20 20 20 20 20 20 20 20 20 20 20 28   ┆s pass *) overflow,            (┆
0x049e20…049e40             2a 20 68 77 20 73 74 61 63 6b 20 6f 76 65 72 66 6c 6f 77 2a 29 0a 77 72 6f 6e 67 5f 76 65 72 73   ┆* hw stack overflow*) wrong_vers┆
0x049e40…049e60             69 6f 6e 2c 20 20 20 20 20 20 20 28 2a 20 77 72 6f 6e 67 20 70 61 73 73 34 2d 70 61 73 73 35 20   ┆ion,       (* wrong pass4-pass5 ┆
0x049e60…049e80             63 6f 6d 62 69 6e 61 74 69 6f 6e 20 2a 29 0a 69 6e 63 6f 6e 73 69 73 74 65 6e 74 5f 75 73 65 2c   ┆combination *) inconsistent_use,┆
0x049e80…049ea0             20 20 20 20 28 2a 20 65 72 72 6f 72 20 69 6e 20 75 73 65 72 20 70 72 6f 67 72 61 6d 20 2a 29 0a   ┆    (* error in user program *) ┆
0x049ea0…049ec0             70 61 72 61 6d 5f 65 72 72 6f 72 2c 20 20 20 20 20 20 20 20 20 28 2a 20 69 6e 63 6f 6e 73 69 73   ┆param_error,         (* inconsis┆
0x049ec0…049ee0             74 65 6e 74 20 70 61 72 61 6d 73 20 69 6e 20 6f 70 65 6e 20 72 6f 75 74 69 6e 65 20 2a 29 0a 70   ┆tent params in open routine *) p┆
0x049ee0…049f00             61 72 61 6d 5f 74 61 62 6c 65 5f 66 75 6c 6c 2c 20 20 20 20 28 2a 20 6d 61 78 5f 70 61 72 61 6d   ┆aram_table_full,    (* max_param┆
0x049f00…049f20             5f 74 61 62 6c 65 20 74 6f 6f 20 73 6d 61 6c 6c 20 2a 29 0a 70 61 73 73 34 63 6f 64 65 5f 65 72   ┆_table too small *) pass4code_er┆
0x049f20…049f40             72 6f 72 2c 20 20 20 20 20 28 2a 20 65 72 72 6f 72 20 69 6e 20 69 6e 70 75 74 20 64 61 74 61 20   ┆ror,     (* error in input data ┆
0x049f40…049f60             66 72 6f 6d 20 70 61 73 73 34 20 2a 29 0a 6d 6f 76 65 67 5f 77 61 72 6e 69 6e 67 20 20 20 20 20   ┆from pass4 *) moveg_warning     ┆
0x049f60…049f80             20 20 20 28 2a 20 57 41 52 4e 49 4e 47 20 61 62 6f 75 74 20 75 73 65 20 6f 66 20 6f 70 65 6e 20   ┆   (* WARNING about use of open ┆
0x049f80…049fa0             70 72 6f 63 65 64 75 72 65 20 27 6d 6f 76 65 67 27 20 2a 29 0a 29 3b 0a 68 77 5f 65 72 72 6f 72   ┆procedure 'moveg' *) ); hw_error┆
0x049fa0…049fc0             73 20 20 3d 20 20 20 28 6f 70 65 6e 5f 72 6f 75 74 69 6e 65 2c 20 20 20 20 20 20 20 28 2a 68 77   ┆s  =   (open_routine,       (*hw┆
0x049fc0…049fe0             73 74 61 63 6b 20 69 6e 63 6f 6e 73 69 73 74 65 6e 63 65 20 69 6e 20 63 6f 64 65 20 66 6f 72 20   ┆stack inconsistence in code for ┆
0x049fe0…04a000             6f 70 65 6e 20 72 6f 75 74 69 6e 65 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73   ┆open routine*)                 s┆
0x04a000…04a020 (19, 1, 8)  65 74 5f 69 6e 73 74 72 75 63 74 69 6f 6e 2c 20 20 20 20 28 2a 68 77 73 74 61 63 6b 20 69 6e 63   ┆et_instruction,    (*hwstack inc┆
0x04a020…04a040             6f 6e 73 69 73 74 65 6e 63 65 20 62 65 66 6f 72 65 20 73 65 74 20 69 6e 73 74 72 75 63 74 69 6f   ┆onsistence before set instructio┆
0x04a040…04a060             6e 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 6d 70 6c 65 5f 6f 70 65 6e 5f   ┆n*)                 simple_open_┆
0x04a060…04a080             66 75 6e 63 74 69 6f 6e 2c 28 2a 20 61 73 20 6f 70 65 6e 5f 72 6f 75 74 69 6e 65 2a 29 0a 20 20   ┆function,(* as open_routine*)   ┆
0x04a080…04a0a0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 72 61 79 5f 69 6e 69 74 2c 20 20 20 20 20 20 20   ┆              array_init,       ┆
0x04a0a0…04a0c0             20 20 28 2a 69 6e 63 6f 6e 73 69 73 74 65 6e 63 65 20 61 74 20 6a 75 6d 70 20 74 6f 20 6c 61 62   ┆  (*inconsistence at jump to lab┆
0x04a0c0…04a0e0             65 6c 20 69 6e 20 63 6f 64 65 5f 61 72 72 61 79 5f 69 6e 69 74 2a 29 0a 73 68 61 64 6f 77 5f 72   ┆el in code_array_init*) shadow_r┆
0x04a0e0…04a100             65 6d 6f 76 61 6c 2c 20 20 20 20 20 20 28 2a 69 6e 63 6f 6e 73 69 73 74 65 6e 63 65 20 61 74 20   ┆emoval,      (*inconsistence at ┆
0x04a100…04a120             6a 75 6d 70 20 74 6f 20 6c 61 62 65 6c 20 69 6e 20 63 6f 64 65 5f 73 68 61 64 6f 77 5f 72 65 6d   ┆jump to label in code_shadow_rem┆
0x04a120…04a140             6f 76 65 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 5f 72 65 6d 6f 76 61   ┆ove*)                 ref_remova┆
0x04a140…04a160             6c 20 20 20 20 20 20 20 20 20 28 2a 69 6e 63 6f 6e 73 69 73 74 65 6e 63 65 20 61 74 20 6a 75 6d   ┆l         (*inconsistence at jum┆
0x04a160…04a180             70 20 74 6f 20 6c 61 62 65 6c 20 69 6e 20 63 6f 64 65 5f 72 65 66 5f 72 65 6d 6f 76 65 2a 29 0a   ┆p to label in code_ref_remove*) ┆
0x04a180…04a1a0             29 3b 0a 0a 0a 0a 63 61 6c 6c 6d 6f 64 65 73 20 3d 20 28 69 6e 74 5f 63 61 6c 6c 2c 20 65 78 74   ┆);    callmodes = (int_call, ext┆
0x04a1a0…04a1c0             5f 63 61 6c 6c 2c 20 6f 70 65 6e 5f 63 61 6c 6c 2c 20 73 74 64 5f 63 61 6c 6c 29 3b 0a 0a 0a 20   ┆_call, open_call, std_call);    ┆
0x04a1c0…04a1e0             20 73 74 61 74 5f 61 63 63 5f 72 65 63 20 3d 0a 72 65 63 6f 72 64 0a 0a 61 73 73 69 67 6e 20 3a   ┆ stat_acc_rec = record  assign :┆
0x04a1e0…04a200             0a 72 65 63 6f 72 64 0a 0a 6b 69 6e 64 5f 74 79 70 65 20 3a 20 61 72 72 61 79 20 5b 20 61 64 64   ┆ record  kind_type : array [ add┆
0x04a200…04a220 (19, 1, 9)  72 5f 6b 69 6e 64 5f 74 79 70 65 2c 20 30 20 2e 2e 20 36 20 5d 20 6f 66 20 69 6e 74 65 67 65 72   ┆r_kind_type, 0 .. 6 ] of integer┆
0x04a220…04a240             3b 0a 73 69 7a 65 20 3a 20 61 72 72 61 79 20 5b 20 30 20 2e 2e 20 31 35 20 5d 20 6f 66 20 69 6e   ┆; size : array [ 0 .. 15 ] of in┆
0x04a240…04a260             74 65 67 65 72 0a 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 74 72 61 70 5f 74 61 62 6c 65 5f 74 79   ┆teger  end;  end;  trap_table_ty┆
0x04a260…04a280             70 65 20 3d 20 72 65 63 6f 72 64 0a 74 72 61 70 5f 65 6e 74 72 79 20 3a 20 61 72 72 61 79 20 5b   ┆pe = record trap_entry : array [┆
0x04a280…04a2a0             20 30 20 2e 2e 20 32 35 35 20 5d 20 6f 66 20 69 6e 74 65 67 65 72 0a 65 6e 64 3b 0a 28 2a 69 6e   ┆ 0 .. 255 ] of integer end; (*in┆
0x04a2a0…04a2c0             64 65 78 20 74 79 70 65 73 20 66 6f 72 20 6f 70 5f 73 74 76 2c 20 61 6e 64 20 6f 70 5f 72 65 76   ┆dex types for op_stv, and op_rev┆
0x04a2c0…04a2e0             20 74 61 62 6c 65 73 2a 29 0a 0a 66 72 61 6d 65 73 20 3d 20 28 67 2c 20 28 2a 67 6c 6f 62 61 6c   ┆ tables*)  frames = (g, (*global┆
0x04a2e0…04a300             2a 29 0a 20 20 20 20 20 20 20 20 20 20 6c 2c 20 28 2a 6c 6f 63 61 6c 2a 29 0a 20 20 20 20 20 20   ┆*)           l, (*local*)       ┆
0x04a300…04a320             20 20 20 20 73 29 3b 28 2a 73 74 61 63 6b 2a 29 0a 0a 74 79 70 65 73 20 3d 20 20 28 62 2c 20 28   ┆    s);(*stack*)  types =  (b, (┆
0x04a320…04a340             2a 62 79 74 65 2a 29 0a 20 20 20 20 20 20 20 20 20 20 77 2c 20 28 2a 77 6f 72 64 2a 29 0a 20 20   ┆*byte*)           w, (*word*)   ┆
0x04a340…04a360             20 20 20 20 20 20 20 20 61 2c 20 28 2a 70 6f 69 6e 74 65 72 20 69 2e 65 2e 20 61 64 64 72 65 73   ┆        a, (*pointer i.e. addres┆
0x04a360…04a380             73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 64 29 3b 28 2a 64 6f 75 62 6c 65 2a 29 0a 0a 62 61 73   ┆s*)           d);(*double*)  bas┆
0x04a380…04a3a0             65 5f 74 79 70 65 73 20 3d 20 62 79 74 65 5f 74 79 70 2e 2e 64 6f 75 62 6c 65 5f 74 79 70 3b 0a   ┆e_types = byte_typ..double_typ; ┆
0x04a3a0…04a3c0             0a 0a 0a 28 2a 20 20 20 76 61 72 2e 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 67 6c 6f 62 61 6c   ┆   (*   var. declarations global┆
0x04a3c0…04a3e0             20 66 6f 72 20 70 61 73 73 35 3a 20 20 20 20 20 20 2a 29 0a 0a 0a 76 61 72 0a 68 65 61 70 66 72   ┆ for pass5:      *)   var heapfr┆
0x04a3e0…04a400             65 65 3a 20 6c 6f 6e 67 69 6e 74 3b 0a 0a 70 72 65 73 65 72 76 65 5f 6f 70 74 69 6f 6e 2c 0a 70   ┆ee: longint;  preserve_option, p┆
0x04a400…04a420 (19, 1, 10) 72 6f 6c 6f 67 5f 79 65 73 2c 20 65 70 69 6c 6f 67 5f 79 65 73 2c 20 63 6f 6d 70 72 65 73 73 5f   ┆rolog_yes, epilog_yes, compress_┆
0x04a420…04a440             79 65 73 2c 20 63 61 6c 6c 70 61 73 73 36 5f 79 65 73 2c 20 73 74 61 74 61 63 63 5f 79 65 73 2c   ┆yes, callpass6_yes, statacc_yes,┆
0x04a440…04a460             20 73 75 6d 6d 61 72 79 5f 79 65 73 2c 0a 6d 65 61 73 75 72 65 6d 65 6e 74 5f 79 65 73 2c 20 74   ┆ summary_yes, measurement_yes, t┆
0x04a460…04a480             72 61 70 5f 63 6f 64 65 2c 0a 64 79 6e 5f 65 76 61 6c 5f 73 74 61 63 6b 2c 0a 68 65 61 70 5f 69   ┆rap_code, dyn_eval_stack, heap_i┆
0x04a480…04a4a0             6e 69 74 2c 20 28 2a 20 74 72 75 65 20 64 75 72 69 6e 67 20 73 79 73 20 69 6e 69 74 20 63 61 6c   ┆nit, (* true during sys init cal┆
0x04a4a0…04a4c0             6c 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 6e 65 77 2d 63 61 6c 6c 20 2a   ┆l in conjunction with new-call *┆
0x04a4c0…04a4e0             29 0a 6f 70 65 6e 72 6f 75 74 69 6e 65 5f 79 65 73 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 68 77 5f   ┆) openroutine_yes: boolean;  hw_┆
0x04a4e0…04a500             73 74 61 63 6b 5f 73 69 7a 65 20 3a 20 20 69 6e 74 65 67 65 72 3b 20 28 2a 20 68 77 20 73 74 61   ┆stack_size :  integer; (* hw sta┆
0x04a500…04a520             63 6b 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 6f 70 20 2a 29 0a 6f 6c 64 5f 68 77 20 3a 20 69 6e   ┆ck pointer to top *) old_hw : in┆
0x04a520…04a540             74 65 67 65 72 3b 20 28 2a 75 73 65 64 20 66 6f 72 20 73 74 6f 72 69 6e 67 20 68 77 5f 73 74 61   ┆teger; (*used for storing hw_sta┆
0x04a540…04a560             63 6b 5f 73 69 7a 65 20 62 65 66 6f 72 65 20 65 6e 74 72 61 6e 63 65 20 74 6f 20 6f 70 65 6e 20   ┆ck_size before entrance to open ┆
0x04a560…04a580             72 6f 75 74 69 6e 65 73 2a 29 0a 0a 0a 74 72 61 70 5f 6e 72 5f 74 61 62 6c 65 20 3a 20 5e 20 74   ┆routines*)   trap_nr_table : ^ t┆
0x04a580…04a5a0             72 61 70 5f 74 61 62 6c 65 5f 74 79 70 65 3b 0a 63 75 72 72 65 6e 74 5f 74 72 61 70 5f 6e 72 2c   ┆rap_table_type; current_trap_nr,┆
0x04a5a0…04a5c0             0a 6e 6f 5f 6f 66 5f 6d 65 61 73 75 72 65 5f 72 65 63 73 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a   ┆ no_of_measure_recs : integer;  ┆
0x04a5c0…04a5e0             0a 0a 64 65 73 63 72 20 3a 20 72 65 63 6f 72 64 0a 0a 28 2a 20 69 6e 20 74 68 69 73 20 76 61 72   ┆  descr : record  (* in this var┆
0x04a5e0…04a600             69 61 62 6c 65 20 74 68 65 20 44 65 73 63 72 69 70 74 6f 72 20 53 65 67 6d 65 6e 74 2c 20 70 61   ┆iable the Descriptor Segment, pa┆
0x04a600…04a620 (19, 1, 11) 72 74 20 31 20 69 73 20 61 63 63 75 6d 75 6c 61 74 65 64 2e 20 2a 29 0a 0a 6b 69 6e 64 20 3a 20   ┆rt 1 is accumulated. *)  kind : ┆
0x04a620…04a640             20 69 6e 74 65 67 65 72 3b 0a 6e 61 6d 65 20 3a 20 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 28 2a   ┆ integer; name :  identifier; (*┆
0x04a640…04a660             70 72 6f 63 65 73 73 20 69 6e 66 2a 29 0a 0a 65 6e 74 72 79 5f 70 6f 69 6e 74 2c 0a 65 78 63 65   ┆process inf*)  entry_point, exce┆
0x04a660…04a680             70 74 69 6f 6e 5f 70 6f 69 6e 74 20 3a 20 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 0a 64 65 66 61   ┆ption_point :  identifier;  defa┆
0x04a680…04a6a0             75 6c 74 5f 61 70 70 65 74 69 74 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 6c 61 73 74 5f 70 61   ┆ult_appetite : integer;  last_pa┆
0x04a6a0…04a6c0             72 61 6d 5f 6f 66 66 73 65 74 3a 20 69 6e 74 65 67 65 72 3b 0a 66 72 65 65 5f 77 6f 72 64 73 20   ┆ram_offset: integer; free_words ┆
0x04a6c0…04a6e0             3a 20 61 72 72 61 79 20 5b 31 2e 2e 64 65 73 63 72 5f 66 72 65 65 5f 77 6f 72 64 73 5d 20 6f 66   ┆: array [1..descr_free_words] of┆
0x04a6e0…04a700             20 69 6e 74 65 67 65 72 3b 0a 0a 6e 6f 5f 6f 66 5f 70 61 72 61 6d 73 20 20 3a 20 20 69 6e 74 65   ┆ integer;  no_of_params  :  inte┆
0x04a700…04a720             67 65 72 3b 0a 70 61 72 61 6d 20 20 3a 20 20 61 72 72 61 79 20 5b 20 31 20 2e 2e 20 64 65 73 63   ┆ger; param  :  array [ 1 .. desc┆
0x04a720…04a740             72 5f 6d 61 78 5f 70 61 72 61 6d 20 5d 20 6f 66 20 70 61 72 61 6d 5f 64 65 73 63 72 3b 0a 0a 65   ┆r_max_param ] of param_descr;  e┆
0x04a740…04a760             6e 64 20 20 20 28 2a 20 20 64 65 73 63 72 20 20 2a 29 3b 0a 0a 65 6e 66 6f 72 63 65 64 5f 63 72   ┆nd   (*  descr  *);  enforced_cr┆
0x04a760…04a780             65 61 74 65 5f 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 28 2a 20 69 66 20 64 65 66 69 6e   ┆eate_size : integer; (* if defin┆
0x04a780…04a7a0             65 64 20 28 6f 70 74 69 6f 6e 20 31 30 29 20 74 68 65 6e 20 73 75 70 70 72 65 73 73 20 63 6f 6d   ┆ed (option 10) then suppress com┆
0x04a7a0…04a7c0             70 75 74 65 64 20 64 65 66 61 75 6c 74 20 61 70 70 65 74 69 74 65 20 2a 29 0a 65 6e 66 6f 72 63   ┆puted default appetite *) enforc┆
0x04a7c0…04a7e0             65 64 5f 65 78 63 65 70 74 69 6f 6e 5f 61 70 70 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 0a 0a 65   ┆ed_exception_app : integer;    e┆
0x04a7e0…04a800             78 63 5f 68 61 72 64 20 3a 20 73 65 74 20 6f 66 20 65 78 63 5f 63 6f 64 65 3b 0a 0a 65 78 63 5f   ┆xc_hard : set of exc_code;  exc_┆
0x04a800…04a820 (19, 1, 12) 64 65 73 63 72 20 3a 20 72 65 63 6f 72 64 0a 0a 73 74 61 74 65 20 3a 20 69 6e 74 65 67 65 72 3b   ┆descr : record  state : integer;┆
0x04a820…04a840             0a 69 6e 74 65 72 6e 61 6c 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6b 65 79 20 3a 20 69 6e 74 65 67   ┆ internal : boolean; key : integ┆
0x04a840…04a860             65 72 3b 0a 6e 69 76 2c 0a 6c 69 78 20 3a 20 69 6e 74 65 67 65 72 0a 0a 65 6e 64 3b 0a 0a 63 20   ┆er; niv, lix : integer  end;  c ┆
0x04a860…04a880             3a 20 63 6f 6e 74 65 78 74 3b 0a 69 6e 5f 6b 69 6e 64 20 20 3a 20 20 20 20 20 28 73 65 74 61 74   ┆: context; in_kind  :     (setat┆
0x04a880…04a8a0             6d 2c 73 65 74 74 6d 29 3b 20 28 2a 75 73 65 64 20 74 6f 20 63 68 6f 6f 73 65 20 72 69 67 68 74   ┆m,settm); (*used to choose right┆
0x04a8a0…04a8c0             20 69 6e 73 74 72 75 63 74 69 6f 6e 2a 29 0a 0a 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f   ┆ instruction*)  operand_situatio┆
0x04a8c0…04a8e0             6e 3a 20 28 20 62 65 66 6f 72 65 5f 6f 70 61 6e 64 73 2c 20 61 66 74 65 72 5f 73 68 6f 72 74 5f   ┆n: ( before_opands, after_short_┆
0x04a8e0…04a900             63 6f 6e 73 74 2c 20 61 66 74 65 72 5f 6f 70 61 6e 64 73 20 29 3b 0a 0a 0a 0a 0a 0a 0a 28 2a 20   ┆const, after_opands );       (* ┆
0x04a900…04a920             20 20 20 76 61 72 2e 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 66 72 6f 6d 20 74 68 65 20 6d 6f   ┆   var. declarations from the mo┆
0x04a920…04a940             64 75 6c 65 73 3a 20 20 20 20 20 20 2a 29 0a 0a 69 6e 5f 69 74 65 6d 5f 63 6f 75 6e 74 2c 20 69   ┆dules:      *)  in_item_count, i┆
0x04a940…04a960             6e 5f 6c 69 6e 65 5f 6e 6f 20 3a 20 69 6e 74 65 67 65 72 3b 0a 69 6e 5f 6f 70 74 69 6f 6e 73 20   ┆n_line_no : integer; in_options ┆
0x04a960…04a980             3a 20 6f 70 74 69 6f 6e 5f 6c 69 73 74 3b 0a 74 6f 6b 65 6e 3a 20 70 61 73 73 34 63 6f 64 65 73   ┆: option_list; token: pass4codes┆
0x04a980…04a9a0             3b 0a 63 6f 6e 76 65 72 74 5f 69 6e 5f 63 6f 64 65 20 3a 20 61 72 72 61 79 20 5b 20 70 61 73 73   ┆; convert_in_code : array [ pass┆
0x04a9a0…04a9c0             34 63 6f 64 65 69 6e 64 65 78 20 5d 20 6f 66 20 70 61 73 73 34 63 6f 64 65 73 3b 0a 0a 0a 6d 65   ┆4codeindex ] of pass4codes;   me┆
0x04a9c0…04a9e0             73 73 5f 73 75 6d 6d 5f 73 74 61 74 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f 73 74   ┆ss_summ_state : integer;  out_st┆
0x04a9e0…04aa00             61 74 65 2c 20 6f 75 74 5f 70 6f 73 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f 6c 69 6e   ┆ate, out_pos : integer;  out_lin┆
0x04aa00…04aa20 (19, 1, 13) 65 5f 73 74 61 74 65 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6f 75 74 5f 73 70 65 63 69 61 6c 20 3a   ┆e_state : boolean; out_special :┆
0x04aa20…04aa40             20 62 6f 6f 6c 65 61 6e 3b 0a 0a 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 20 3a 20 69 6e 74 65 67 65   ┆ boolean;  not_resolved : intege┆
0x04aa40…04aa60             72 3b 20 20 28 2a 20 6c 69 6e 6b 73 20 74 68 72 6f 75 67 68 20 61 6c 6c 20 65 78 74 5f 64 65 63   ┆r;  (* links through all ext_dec┆
0x04aa60…04aa80             6c 61 72 65 64 20 2a 29 0a 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 3a 20 69 6e 74 65 67 65 72   ┆lared *)  file_position: integer┆
0x04aa80…04aaa0             3b 20 28 2a 20 3c 20 30 3a 20 62 65 66 6f 72 65 20 72 65 73 65 74 2c 20 65 6c 73 65 20 70 6f 73   ┆; (* < 0: before reset, else pos┆
0x04aaa0…04aac0             69 74 69 6f 6e 20 69 6e 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 2a 29 0a 0a 65 78 74 5f 6f 70   ┆ition in library file *)  ext_op┆
0x04aac0…04aae0             65 6e 5f 63 6f 64 65 73 3a 0a 72 65 63 6f 72 64 0a 63 75 72 5f 77 6f 72 64 5f 70 74 72 20 3a 20   ┆en_codes: record cur_word_ptr : ┆
0x04aae0…04ab00             69 6e 74 65 67 65 72 3b 20 28 2a 20 70 6f 69 6e 74 73 20 61 74 20 66 69 72 73 74 20 66 72 65 65   ┆integer; (* points at first free┆
0x04ab00…04ab20             20 77 6f 72 64 20 69 6e 20 63 68 61 72 62 75 66 20 2a 29 0a 63 68 61 72 62 75 66 20 3a 20 61 72   ┆ word in charbuf *) charbuf : ar┆
0x04ab20…04ab40             72 61 79 20 5b 20 31 20 2e 2e 20 65 78 74 5f 6d 61 78 5f 63 68 61 72 62 75 66 20 5d 20 6f 66 20   ┆ray [ 1 .. ext_max_charbuf ] of ┆
0x04ab40…04ab60             69 6e 74 65 67 65 72 3b 0a 65 6e 64 3b 0a 0a 0a 73 74 61 74 5f 61 63 63 20 3a 20 20 73 74 61 74   ┆integer; end;   stat_acc :  stat┆
0x04ab60…04ab80             5f 61 63 63 5f 72 65 63 3b 0a 0a 0a 74 79 70 65 0a 74 5f 6f 70 5f 74 61 62 6c 65 20 3d 20 61 72   ┆_acc_rec;   type t_op_table = ar┆
0x04ab80…04aba0             72 61 79 5b 6f 70 63 6f 64 65 5f 72 61 6e 67 65 5d 20 6f 66 20 6f 70 63 6f 64 65 5f 64 65 66 3b   ┆ray[opcode_range] of opcode_def;┆
0x04aba0…04abc0             0a 63 6f 6e 73 74 0a 6f 70 5f 74 61 62 6c 65 20 3a 20 74 5f 6f 70 5f 74 61 62 6c 65 20 3d 20 28   ┆ const op_table : t_op_table = (┆
0x04abc0…04abe0             0a 20 20 28 6f 70 6e 61 6d 65 3a 27 61 61 61 61 61 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a   ┆   (opname:'aaaaa '; opappetite:┆
0x04abe0…04ac00             20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20   ┆  0; min_hw_stack:  0; op_type: ┆
0x04ac00…04ac20 (19, 1, 14) 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 61 62 73 20 20 20 27 3b 20 6f 70   ┆normal ),   (opname:'abs   '; op┆
0x04ac20…04ac40             61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20   ┆appetite:  0; min_hw_stack:  2; ┆
0x04ac40…04ac60             6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 61 64   ┆op_type: normal ),   (opname:'ad┆
0x04ac60…04ac80             64 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74   ┆d   '; opappetite: -2; min_hw_st┆
0x04ac80…04aca0             61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f   ┆ack:  4; op_type: normal ),   (o┆
0x04aca0…04acc0             70 6e 61 6d 65 3a 27 61 6e 64 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20   ┆pname:'and   '; opappetite: -2; ┆
0x04acc0…04ace0             6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61   ┆min_hw_stack:  4; op_type: norma┆
0x04ace0…04ad00             6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 63 65 78 63 68 20 27 3b 20 6f 70 61 70 70 65 74   ┆l ),   (opname:'cexch '; opappet┆
0x04ad00…04ad20             69 74 65 3a 20 2d 38 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 38 3b 20 6f 70 5f 74 79   ┆ite: -8; min_hw_stack:  8; op_ty┆
0x04ad20…04ad40             70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 63 67 72 65 67 20 27   ┆pe: normal ),   (opname:'cgreg '┆
0x04ad40…04ad60             3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20   ┆; opappetite:  2; min_hw_stack: ┆
0x04ad60…04ad80             20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65   ┆ 0; op_type: normal ),   (opname┆
0x04ad80…04ada0             3a 27 63 6f 6d 70 6c 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68   ┆:'compl '; opappetite:  0; min_h┆
0x04ada0…04adc0             77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a   ┆w_stack:  2; op_type: normal ), ┆
0x04adc0…04ade0             20 20 28 6f 70 6e 61 6d 65 3a 27 63 6f 75 74 77 71 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20   ┆  (opname:'coutwq'; opappetite: ┆
0x04ade0…04ae00             20 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e   ┆ 4; min_hw_stack:  0; op_type: n┆
0x04ae00…04ae20 (19, 1, 15) 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 63 72 67 65 74 20 27 3b 20 6f 70 61   ┆ormal ),   (opname:'crget '; opa┆
0x04ae20…04ae40             70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f   ┆ppetite:  0; min_hw_stack:  2; o┆
0x04ae40…04ae60             70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 63 72 70   ┆p_type: normal ),   (opname:'crp┆
0x04ae60…04ae80             75 74 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61   ┆ut '; opappetite: -4; min_hw_sta┆
0x04ae80…04aea0             63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70   ┆ck:  4; op_type: normal ),   (op┆
0x04aea0…04aec0             6e 61 6d 65 3a 27 63 73 65 6c 6c 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d   ┆name:'csell '; opappetite: -2; m┆
0x04aec0…04aee0             69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c   ┆in_hw_stack:  2; op_type: normal┆
0x04aee0…04af00             20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 64 69 76 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69   ┆ ),   (opname:'div   '; opappeti┆
0x04af00…04af20             74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70   ┆te: -2; min_hw_stack:  4; op_typ┆
0x04af20…04af40             65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 65 71 20 20 20 20 27 3b   ┆e: normal ),   (opname:'eq    ';┆
0x04af40…04af60             20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20   ┆ opappetite: -2; min_hw_stack:  ┆
0x04af60…04af80             34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a   ┆4; op_type: normal ),   (opname:┆
0x04af80…04afa0             27 67 65 20 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77   ┆'ge    '; opappetite: -2; min_hw┆
0x04afa0…04afc0             5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20   ┆_stack:  4; op_type: normal ),  ┆
0x04afc0…04afe0             20 28 6f 70 6e 61 6d 65 3a 27 67 74 20 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d   ┆ (opname:'gt    '; opappetite: -┆
0x04afe0…04b000             32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f   ┆2; min_hw_stack:  4; op_type: no┆
0x04b000…04b020 (20, 0, 1)  72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 69 6e 64 65 78 20 27 3b 20 6f 70 61 70   ┆rmal ),   (opname:'index '; opap┆
0x04b020…04b040             70 65 74 69 74 65 3a 20 2d 36 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 31 30 3b 20 6f 70   ┆petite: -6; min_hw_stack: 10; op┆
0x04b040…04b060             5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 69 6e 64 68   ┆_type: normal ),   (opname:'indh┆
0x04b060…04b080             30 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63   ┆0 '; opappetite: -2; min_hw_stac┆
0x04b080…04b0a0             6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e   ┆k:  6; op_type: normal ),   (opn┆
0x04b0a0…04b0c0             61 6d 65 3a 27 69 6e 64 68 30 31 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69   ┆ame:'indh01'; opappetite: -2; mi┆
0x04b0c0…04b0e0             6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20   ┆n_hw_stack:  6; op_type: normal ┆
0x04b0e0…04b100             29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 69 6e 64 68 30 32 27 3b 20 6f 70 61 70 70 65 74 69 74   ┆),   (opname:'indh02'; opappetit┆
0x04b100…04b120             65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65   ┆e: -2; min_hw_stack:  6; op_type┆
0x04b120…04b140             3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 69 6e 64 68 31 20 27 3b 20   ┆: normal ),   (opname:'indh1 '; ┆
0x04b140…04b160             6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 36   ┆opappetite: -2; min_hw_stack:  6┆
0x04b160…04b180             3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27   ┆; op_type: normal ),   (opname:'┆
0x04b180…04b1a0             69 6e 64 68 31 31 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f   ┆indh11'; opappetite: -2; min_hw_┆
0x04b1a0…04b1c0             73 74 61 63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20   ┆stack:  6; op_type: normal ),   ┆
0x04b1c0…04b1e0             28 6f 70 6e 61 6d 65 3a 27 69 6e 64 68 31 32 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32   ┆(opname:'indh12'; opappetite: -2┆
0x04b1e0…04b200             3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72   ┆; min_hw_stack:  6; op_type: nor┆
0x04b200…04b220 (20, 0, 2)  6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 69 6e 70 64 76 20 27 3b 20 6f 70 61 70 70   ┆mal ),   (opname:'inpdv '; opapp┆
0x04b220…04b240             65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 38 3b 20 6f 70 5f   ┆etite: -2; min_hw_stack:  8; op_┆
0x04b240…04b260             74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 69 6e 74 68 30   ┆type: normal ),   (opname:'inth0┆
0x04b260…04b280             20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b   ┆ '; opappetite:  0; min_hw_stack┆
0x04b280…04b2a0             3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61   ┆:  2; op_type: normal ),   (opna┆
0x04b2a0…04b2c0             6d 65 3a 27 69 6e 74 70 61 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e   ┆me:'intpa '; opappetite: -2; min┆
0x04b2c0…04b2e0             5f 68 77 5f 73 74 61 63 6b 3a 20 31 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29   ┆_hw_stack: 10; op_type: normal )┆
0x04b2e0…04b300             2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 69 6e 74 72 73 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65   ┆,   (opname:'intrs '; opappetite┆
0x04b300…04b320             3a 20 2d 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a   ┆: -4; min_hw_stack:  6; op_type:┆
0x04b320…04b340             20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 69 6f 63 64 61 20 27 3b 20 6f   ┆ normal ),   (opname:'iocda '; o┆
0x04b340…04b360             70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b   ┆pappetite: -2; min_hw_stack:  4;┆
0x04b360…04b380             20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 69   ┆ op_type: normal ),   (opname:'i┆
0x04b380…04b3a0             6f 72 73 63 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 34 3b 20 6d 69 6e 5f 68 77 5f 73   ┆orsc '; opappetite: -4; min_hw_s┆
0x04b3a0…04b3c0             74 61 63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28   ┆tack:  6; op_type: normal ),   (┆
0x04b3c0…04b3e0             6f 70 6e 61 6d 65 3a 27 6a 6d 63 68 74 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b   ┆opname:'jmcht '; opappetite: -2;┆
0x04b3e0…04b400             20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d   ┆ min_hw_stack:  2; op_type: norm┆
0x04b400…04b420 (20, 0, 3)  61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6a 6d 70 67 61 20 27 3b 20 6f 70 61 70 70 65   ┆al ),   (opname:'jmpga '; opappe┆
0x04b420…04b440             74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74   ┆tite:  0; min_hw_stack:  0; op_t┆
0x04b440…04b460             79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6a 6d 70 72 77 20   ┆ype: normal ),   (opname:'jmprw ┆
0x04b460…04b480             27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a   ┆'; opappetite:  0; min_hw_stack:┆
0x04b480…04b4a0             20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d   ┆  0; op_type: normal ),   (opnam┆
0x04b4a0…04b4c0             65 3a 27 6a 6d 7a 65 71 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f   ┆e:'jmzeq '; opappetite: -2; min_┆
0x04b4c0…04b4e0             68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c   ┆hw_stack:  2; op_type: normal ),┆
0x04b4e0…04b500             0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6a 6d 7a 67 65 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a   ┆   (opname:'jmzge '; opappetite:┆
0x04b500…04b520             20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20   ┆ -2; min_hw_stack:  2; op_type: ┆
0x04b520…04b540             6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6a 6d 7a 67 74 20 27 3b 20 6f 70   ┆normal ),   (opname:'jmzgt '; op┆
0x04b540…04b560             61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20   ┆appetite: -2; min_hw_stack:  2; ┆
0x04b560…04b580             6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6a 6d   ┆op_type: normal ),   (opname:'jm┆
0x04b580…04b5a0             7a 6c 65 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74   ┆zle '; opappetite: -2; min_hw_st┆
0x04b5a0…04b5c0             61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f   ┆ack:  2; op_type: normal ),   (o┆
0x04b5c0…04b5e0             70 6e 61 6d 65 3a 27 6a 6d 7a 6c 74 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20   ┆pname:'jmzlt '; opappetite: -2; ┆
0x04b5e0…04b600             6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61   ┆min_hw_stack:  2; op_type: norma┆
0x04b600…04b620 (20, 0, 4)  6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6a 6d 7a 6e 65 20 27 3b 20 6f 70 61 70 70 65 74   ┆l ),   (opname:'jmzne '; opappet┆
0x04b620…04b640             69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79   ┆ite: -2; min_hw_stack:  2; op_ty┆
0x04b640…04b660             70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6c 65 20 20 20 20 27   ┆pe: normal ),   (opname:'le    '┆
0x04b660…04b680             3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20   ┆; opappetite: -2; min_hw_stack: ┆
0x04b680…04b6a0             20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65   ┆ 4; op_type: normal ),   (opname┆
0x04b6a0…04b6c0             3a 27 6c 6c 6f 63 6b 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68   ┆:'llock '; opappetite: -2; min_h┆
0x04b6c0…04b6e0             77 5f 73 74 61 63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a   ┆w_stack:  6; op_type: normal ), ┆
0x04b6e0…04b700             20 20 28 6f 70 6e 61 6d 65 3a 27 6c 72 65 6c 65 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20   ┆  (opname:'lrele '; opappetite: ┆
0x04b700…04b720             2d 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e   ┆-4; min_hw_stack:  4; op_type: n┆
0x04b720…04b740             6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6c 72 65 73 65 20 27 3b 20 6f 70 61   ┆ormal ),   (opname:'lrese '; opa┆
0x04b740…04b760             70 70 65 74 69 74 65 3a 20 2d 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f   ┆ppetite: -4; min_hw_stack:  4; o┆
0x04b760…04b780             70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6c 74 20   ┆p_type: normal ),   (opname:'lt ┆
0x04b780…04b7a0             20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61   ┆   '; opappetite: -2; min_hw_sta┆
0x04b7a0…04b7c0             63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70   ┆ck:  4; op_type: normal ),   (op┆
0x04b7c0…04b7e0             6e 61 6d 65 3a 27 6d 61 64 64 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d   ┆name:'madd  '; opappetite: -2; m┆
0x04b7e0…04b800             69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c   ┆in_hw_stack:  4; op_type: normal┆
0x04b800…04b820 (20, 0, 5)  20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6d 6f 64 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69   ┆ ),   (opname:'mod   '; opappeti┆
0x04b820…04b840             74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70   ┆te: -2; min_hw_stack:  4; op_typ┆
0x04b840…04b860             65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6d 6f 76 65 62 20 27 3b   ┆e: normal ),   (opname:'moveb ';┆
0x04b860…04b880             20 6f 70 61 70 70 65 74 69 74 65 3a 2d 31 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 31   ┆ opappetite:-10; min_hw_stack: 1┆
0x04b880…04b8a0             30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a   ┆0; op_type: normal ),   (opname:┆
0x04b8a0…04b8c0             27 6d 6f 76 65 62 73 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 2d 31 30 3b 20 6d 69 6e 5f 68 77   ┆'movebs'; opappetite:-10; min_hw┆
0x04b8c0…04b8e0             5f 73 74 61 63 6b 3a 20 31 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20   ┆_stack: 10; op_type: normal ),  ┆
0x04b8e0…04b900             20 28 6f 70 6e 61 6d 65 3a 27 6d 6f 76 65 67 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 2d 31   ┆ (opname:'moveg '; opappetite:-1┆
0x04b900…04b920             30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 31 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f   ┆0; min_hw_stack: 10; op_type: no┆
0x04b920…04b940             72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6d 73 75 62 20 20 27 3b 20 6f 70 61 70   ┆rmal ),   (opname:'msub  '; opap┆
0x04b940…04b960             70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70   ┆petite: -2; min_hw_stack:  4; op┆
0x04b960…04b980             5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6d 74 72 68   ┆_type: normal ),   (opname:'mtrh┆
0x04b980…04b9a0             20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63   ┆  '; opappetite:  0; min_hw_stac┆
0x04b9a0…04b9c0             6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e   ┆k:  0; op_type: normal ),   (opn┆
0x04b9c0…04b9e0             61 6d 65 3a 27 6d 74 72 73 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69   ┆ame:'mtrs  '; opappetite: -2; mi┆
0x04b9e0…04ba00             6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20   ┆n_hw_stack:  2; op_type: normal ┆
0x04ba00…04ba20 (20, 0, 6)  29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6d 75 6c 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74   ┆),   (opname:'mul   '; opappetit┆
0x04ba20…04ba40             65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65   ┆e: -2; min_hw_stack:  4; op_type┆
0x04ba40…04ba60             3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6e 65 20 20 20 20 27 3b 20   ┆: normal ),   (opname:'ne    '; ┆
0x04ba60…04ba80             6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34   ┆opappetite: -2; min_hw_stack:  4┆
0x04ba80…04baa0             3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27   ┆; op_type: normal ),   (opname:'┆
0x04baa0…04bac0             6e 65 67 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f   ┆neg   '; opappetite:  0; min_hw_┆
0x04bac0…04bae0             73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20   ┆stack:  2; op_type: normal ),   ┆
0x04bae0…04bb00             28 6f 70 6e 61 6d 65 3a 27 6e 6f 74 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30   ┆(opname:'not   '; opappetite:  0┆
0x04bb00…04bb20             3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72   ┆; min_hw_stack:  2; op_type: nor┆
0x04bb20…04bb40             6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 6f 72 20 20 20 20 27 3b 20 6f 70 61 70 70   ┆mal ),   (opname:'or    '; opapp┆
0x04bb40…04bb60             65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f   ┆etite: -2; min_hw_stack:  4; op_┆
0x04bb60…04bb80             74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 70 63 61 6c 73   ┆type: normal ),   (opname:'pcals┆
0x04bb80…04bba0             20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b   ┆ '; opappetite: -4; min_hw_stack┆
0x04bba0…04bbc0             3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 65 6d 70 74 79 5f 73 74 61 63 6b 29 2c 0a 20 20 28 6f   ┆:  4; op_type:empty_stack),   (o┆
0x04bbc0…04bbe0             70 6e 61 6d 65 3a 27 70 63 61 6c 73 30 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20   ┆pname:'pcals0'; opappetite:  0; ┆
0x04bbe0…04bc00             6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 65 6d 70 74 79 5f   ┆min_hw_stack:  0; op_type:empty_┆
0x04bc00…04bc20 (20, 0, 7)  73 74 61 63 6b 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 70 63 61 6c 73 31 27 3b 20 6f 70 61 70   ┆stack),   (opname:'pcals1'; opap┆
0x04bc20…04bc40             70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70   ┆petite:  0; min_hw_stack:  0; op┆
0x04bc40…04bc60             5f 74 79 70 65 3a 65 6d 70 74 79 5f 73 74 61 63 6b 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 70   ┆_type:empty_stack),   (opname:'p┆
0x04bc60…04bc80             65 78 69 74 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73   ┆exit '; opappetite:  0; min_hw_s┆
0x04bc80…04bca0             74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28   ┆tack:  0; op_type: normal ),   (┆
0x04bca0…04bcc0             6f 70 6e 61 6d 65 3a 27 72 65 61 61 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 34 3b   ┆opname:'reaad '; opappetite:  4;┆
0x04bcc0…04bce0             20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d   ┆ min_hw_stack:  0; op_type: norm┆
0x04bce0…04bd00             61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 61 64 62 20 27 3b 20 6f 70 61 70 70 65   ┆al ),   (opname:'readb '; opappe┆
0x04bd00…04bd20             74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74   ┆tite: -2; min_hw_stack:  4; op_t┆
0x04bd20…04bd40             79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 61 64 77 20   ┆ype: normal ),   (opname:'readw ┆
0x04bd40…04bd60             27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a   ┆'; opappetite: -2; min_hw_stack:┆
0x04bd60…04bd80             20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d   ┆  4; op_type: normal ),   (opnam┆
0x04bd80…04bda0             65 3a 27 72 65 61 67 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 34 3b 20 6d 69 6e 5f   ┆e:'reagd '; opappetite:  4; min_┆
0x04bda0…04bdc0             68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c   ┆hw_stack:  0; op_type: normal ),┆
0x04bdc0…04bde0             0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 61 69 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a   ┆   (opname:'reaid '; opappetite:┆
0x04bde0…04be00             20 20 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20   ┆  4; min_hw_stack:  0; op_type: ┆
0x04be00…04be20 (20, 0, 8)  6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 61 69 73 64 27 3b 20 6f 70   ┆normal ),   (opname:'reaisd'; op┆
0x04be20…04be40             61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20   ┆appetite:  0; min_hw_stack:  4; ┆
0x04be40…04be60             6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65   ┆op_type: normal ),   (opname:'re┆
0x04be60…04be80             61 6c 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 34 3b 20 6d 69 6e 5f 68 77 5f 73 74   ┆ald '; opappetite:  4; min_hw_st┆
0x04be80…04bea0             61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f   ┆ack:  0; op_type: normal ),   (o┆
0x04bea0…04bec0             70 6e 61 6d 65 3a 27 72 65 61 72 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 34 3b 20   ┆pname:'reard '; opappetite:  4; ┆
0x04bec0…04bee0             6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61   ┆min_hw_stack:  0; op_type: norma┆
0x04bee0…04bf00             6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 61 73 64 20 27 3b 20 6f 70 61 70 70 65 74   ┆l ),   (opname:'reasd '; opappet┆
0x04bf00…04bf20             69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79   ┆ite:  0; min_hw_stack:  4; op_ty┆
0x04bf20…04bf40             70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 61 78 64 20 27   ┆pe: normal ),   (opname:'reaxd '┆
0x04bf40…04bf60             3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20   ┆; opappetite:  4; min_hw_stack: ┆
0x04bf60…04bf80             20 30 3b 20 6f 70 5f 74 79 70 65 3a 65 6d 70 74 79 5f 73 74 61 63 6b 29 2c 0a 20 20 28 6f 70 6e   ┆ 0; op_type:empty_stack),   (opn┆
0x04bf80…04bfa0             61 6d 65 3a 27 72 65 63 68 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 34 3b 20 6d 69   ┆ame:'rechd '; opappetite:  4; mi┆
0x04bfa0…04bfc0             6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20   ┆n_hw_stack:  0; op_type: normal ┆
0x04bfc0…04bfe0             29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 63 68 77 20 27 3b 20 6f 70 61 70 70 65 74 69 74   ┆),   (opname:'rechw '; opappetit┆
0x04bfe0…04c000             65 3a 20 20 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65   ┆e:  2; min_hw_stack:  0; op_type┆
0x04c000…04c020 (20, 0, 9)  3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 6e 68 62 20 27 3b 20   ┆: normal ),   (opname:'renhb '; ┆
0x04c020…04c040             6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30   ┆opappetite:  0; min_hw_stack:  0┆
0x04c040…04c060             3b 20 6f 70 5f 74 79 70 65 3a 65 6d 70 74 79 5f 73 74 61 63 6b 29 2c 0a 20 20 28 6f 70 6e 61 6d   ┆; op_type:empty_stack),   (opnam┆
0x04c060…04c080             65 3a 27 72 65 6e 70 62 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f   ┆e:'renpb '; opappetite: -2; min_┆
0x04c080…04c0a0             68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 65 6d 70 74 79 5f 73 74 61 63   ┆hw_stack:  2; op_type:empty_stac┆
0x04c0a0…04c0c0             6b 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 73 74 63 20 27 3b 20 6f 70 61 70 70 65 74 69   ┆k),   (opname:'restc '; opappeti┆
0x04c0c0…04c0e0             74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70   ┆te:  0; min_hw_stack:  0; op_typ┆
0x04c0e0…04c100             65 3a 68 77 5f 69 6e 73 74 72 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 76 67 61 20 27 3b   ┆e:hw_instr),   (opname:'revga ';┆
0x04c100…04c120             20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20   ┆ opappetite:  4; min_hw_stack:  ┆
0x04c120…04c140             30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a   ┆0; op_type: normal ),   (opname:┆
0x04c140…04c160             27 72 65 76 67 62 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 32 3b 20 6d 69 6e 5f 68 77   ┆'revgb '; opappetite:  2; min_hw┆
0x04c160…04c180             5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20   ┆_stack:  0; op_type: normal ),  ┆
0x04c180…04c1a0             20 28 6f 70 6e 61 6d 65 3a 27 72 65 76 67 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20   ┆ (opname:'revgd '; opappetite:  ┆
0x04c1a0…04c1c0             34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f   ┆4; min_hw_stack:  0; op_type: no┆
0x04c1c0…04c1e0             72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 76 67 77 20 27 3b 20 6f 70 61 70   ┆rmal ),   (opname:'revgw '; opap┆
0x04c1e0…04c200             70 65 74 69 74 65 3a 20 20 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70   ┆petite:  2; min_hw_stack:  0; op┆
0x04c200…04c220 (20, 0, 10) 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 76 6c   ┆_type: normal ),   (opname:'revl┆
0x04c220…04c240             61 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63   ┆a '; opappetite:  4; min_hw_stac┆
0x04c240…04c260             6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e   ┆k:  0; op_type: normal ),   (opn┆
0x04c260…04c280             61 6d 65 3a 27 72 65 76 6c 62 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 32 3b 20 6d 69   ┆ame:'revlb '; opappetite:  2; mi┆
0x04c280…04c2a0             6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20   ┆n_hw_stack:  0; op_type: normal ┆
0x04c2a0…04c2c0             29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 76 6c 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74   ┆),   (opname:'revld '; opappetit┆
0x04c2c0…04c2e0             65 3a 20 20 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65   ┆e:  4; min_hw_stack:  0; op_type┆
0x04c2e0…04c300             3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 76 6c 77 20 27 3b 20   ┆: normal ),   (opname:'revlw '; ┆
0x04c300…04c320             6f 70 61 70 70 65 74 69 74 65 3a 20 20 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30   ┆opappetite:  2; min_hw_stack:  0┆
0x04c320…04c340             3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27   ┆; op_type: normal ),   (opname:'┆
0x04c340…04c360             72 65 76 70 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 34 3b 20 6d 69 6e 5f 68 77 5f   ┆revpd '; opappetite:  4; min_hw_┆
0x04c360…04c380             73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20   ┆stack:  4; op_type: normal ),   ┆
0x04c380…04c3a0             28 6f 70 6e 61 6d 65 3a 27 72 65 76 70 77 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 32   ┆(opname:'revpw '; opappetite:  2┆
0x04c3a0…04c3c0             3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72   ┆; min_hw_stack:  2; op_type: nor┆
0x04c3c0…04c3e0             6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 76 73 61 20 27 3b 20 6f 70 61 70 70   ┆mal ),   (opname:'revsa '; opapp┆
0x04c3e0…04c400             65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f   ┆etite:  0; min_hw_stack:  4; op_┆
0x04c400…04c420 (20, 0, 11) 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 76 73 62   ┆type: normal ),   (opname:'revsb┆
0x04c420…04c440             20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b   ┆ '; opappetite: -2; min_hw_stack┆
0x04c440…04c460             3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61   ┆:  4; op_type: normal ),   (opna┆
0x04c460…04c480             6d 65 3a 27 72 65 76 73 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e   ┆me:'revsd '; opappetite:  0; min┆
0x04c480…04c4a0             5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29   ┆_hw_stack:  4; op_type: normal )┆
0x04c4a0…04c4c0             2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 76 73 66 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65   ┆,   (opname:'revsf '; opappetite┆
0x04c4c0…04c4e0             3a 20 2d 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a   ┆: -4; min_hw_stack:  6; op_type:┆
0x04c4e0…04c500             20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 72 65 76 73 6d 20 27 3b 20 6f   ┆ normal ),   (opname:'revsm '; o┆
0x04c500…04c520             70 61 70 70 65 74 69 74 65 3a 20 2d 36 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 36 3b   ┆pappetite: -6; min_hw_stack:  6;┆
0x04c520…04c540             20 6f 70 5f 74 79 70 65 3a 65 6d 70 74 79 5f 73 74 61 63 6b 29 2c 0a 20 20 28 6f 70 6e 61 6d 65   ┆ op_type:empty_stack),   (opname┆
0x04c540…04c560             3a 27 72 65 76 73 77 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68   ┆:'revsw '; opappetite: -2; min_h┆
0x04c560…04c580             77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a   ┆w_stack:  4; op_type: normal ), ┆
0x04c580…04c5a0             20 20 28 6f 70 6e 61 6d 65 3a 27 73 65 74 61 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20   ┆  (opname:'setad '; opappetite: ┆
0x04c5a0…04c5c0             2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 73 65   ┆-2; min_hw_stack:  2; op_type:se┆
0x04c5c0…04c5e0             74 5f 69 6e 73 74 72 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 65 74 61 74 6d 27 3b 20 6f 70   ┆t_instr),   (opname:'setatm'; op┆
0x04c5e0…04c600             61 70 70 65 74 69 74 65 3a 20 2d 36 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 38 3b 20   ┆appetite: -6; min_hw_stack:  8; ┆
0x04c600…04c620 (20, 0, 12) 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 65   ┆op_type: normal ),   (opname:'se┆
0x04c620…04c640             74 63 72 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 34 3b 20 6d 69 6e 5f 68 77 5f 73 74   ┆tcr '; opappetite: -4; min_hw_st┆
0x04c640…04c660             61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 65 6d 70 74 79 5f 73 74 61 63 6b 29 2c 0a 20   ┆ack:  4; op_type:empty_stack),  ┆
0x04c660…04c680             20 28 6f 70 6e 61 6d 65 3a 27 73 65 74 64 69 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20   ┆ (opname:'setdi '; opappetite:  ┆
0x04c680…04c6a0             30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 73 65 74   ┆0; min_hw_stack:  0; op_type:set┆
0x04c6a0…04c6c0             5f 69 6e 73 74 72 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 65 74 65 71 20 27 3b 20 6f 70 61   ┆_instr),   (opname:'seteq '; opa┆
0x04c6c0…04c6e0             70 70 65 74 69 74 65 3a 20 20 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f   ┆ppetite:  2; min_hw_stack:  0; o┆
0x04c6e0…04c700             70 5f 74 79 70 65 3a 73 65 74 5f 69 6e 73 74 72 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 65   ┆p_type:set_instr),   (opname:'se┆
0x04c700…04c720             74 69 6e 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74   ┆tin '; opappetite:  0; min_hw_st┆
0x04c720…04c740             61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 73 65 74 5f 69 6e 73 74 72 29 2c 0a 20 20 28   ┆ack:  0; op_type:set_instr),   (┆
0x04c740…04c760             6f 70 6e 61 6d 65 3a 27 73 65 74 72 65 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 34 3b   ┆opname:'setre '; opappetite: -4;┆
0x04c760…04c780             20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a 65 6d 70 74 79   ┆ min_hw_stack:  6; op_type:empty┆
0x04c780…04c7a0             5f 73 74 61 63 6b 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 65 74 73 62 20 27 3b 20 6f 70 61   ┆_stack),   (opname:'setsb '; opa┆
0x04c7a0…04c7c0             70 70 65 74 69 74 65 3a 20 20 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f   ┆ppetite:  2; min_hw_stack:  0; o┆
0x04c7c0…04c7e0             70 5f 74 79 70 65 3a 73 65 74 5f 69 6e 73 74 72 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 65   ┆p_type:set_instr),   (opname:'se┆
0x04c7e0…04c800             74 73 70 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 32 3b 20 6d 69 6e 5f 68 77 5f 73 74   ┆tsp '; opappetite:  2; min_hw_st┆
0x04c800…04c820 (20, 0, 13) 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 73 65 74 5f 69 6e 73 74 72 29 2c 0a 20 20 28   ┆ack:  0; op_type:set_instr),   (┆
0x04c820…04c840             6f 70 6e 61 6d 65 3a 27 73 65 74 73 74 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 36 3b   ┆opname:'setst '; opappetite: -6;┆
0x04c840…04c860             20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 73 65 74 5f 6f   ┆ min_hw_stack:  0; op_type:set_o┆
0x04c860…04c880             6e 6c 79 5f 73 77 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 65 74 74 6d 20 27 3b 20 6f 70 61   ┆nly_sw),   (opname:'settm '; opa┆
0x04c880…04c8a0             70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f   ┆ppetite:  0; min_hw_stack:  0; o┆
0x04c8a0…04c8c0             70 5f 74 79 70 65 3a 73 65 74 5f 68 77 5f 77 6f 72 64 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27   ┆p_type:set_hw_word),   (opname:'┆
0x04c8c0…04c8e0             73 65 74 75 6e 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f   ┆setun '; opappetite:  0; min_hw_┆
0x04c8e0…04c900             73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 73 65 74 5f 69 6e 73 74 72 29 2c 0a 20   ┆stack:  0; op_type:set_instr),  ┆
0x04c900…04c920             20 28 6f 70 6e 61 6d 65 3a 27 73 68 63 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d   ┆ (opname:'shc   '; opappetite: -┆
0x04c920…04c940             32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f   ┆2; min_hw_stack:  4; op_type: no┆
0x04c940…04c960             72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 63 65 61 20 27 3b 20 6f 70 61 70   ┆rmal ),   (opname:'stcea '; opap┆
0x04c960…04c980             70 65 74 69 74 65 3a 20 2d 38 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 31 30 3b 20 6f 70   ┆petite: -8; min_hw_stack: 10; op┆
0x04c980…04c9a0             5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 6e 68   ┆_type: normal ),   (opname:'stnh┆
0x04c9a0…04c9c0             62 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63   ┆b '; opappetite:  0; min_hw_stac┆
0x04c9c0…04c9e0             6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 65 6d 70 74 79 5f 73 74 61 63 6b 29 2c 0a 20 20 28   ┆k:  0; op_type:empty_stack),   (┆
0x04c9e0…04ca00             6f 70 6e 61 6d 65 3a 27 73 74 73 74 63 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30 3b   ┆opname:'ststc '; opappetite:  0;┆
0x04ca00…04ca20 (20, 0, 14) 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 68 77 5f 69 6e   ┆ min_hw_stack:  0; op_type:hw_in┆
0x04ca20…04ca40             73 74 72 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 76 67 61 20 27 3b 20 6f 70 61 70 70 65   ┆str),   (opname:'stvga '; opappe┆
0x04ca40…04ca60             74 69 74 65 3a 20 2d 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74   ┆tite: -4; min_hw_stack:  4; op_t┆
0x04ca60…04ca80             79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 76 67 62 20   ┆ype: normal ),   (opname:'stvgb ┆
0x04ca80…04caa0             27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a   ┆'; opappetite: -2; min_hw_stack:┆
0x04caa0…04cac0             20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d   ┆  2; op_type: normal ),   (opnam┆
0x04cac0…04cae0             65 3a 27 73 74 76 67 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 34 3b 20 6d 69 6e 5f   ┆e:'stvgd '; opappetite: -4; min_┆
0x04cae0…04cb00             68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c   ┆hw_stack:  4; op_type: normal ),┆
0x04cb00…04cb20             0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 76 67 77 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a   ┆   (opname:'stvgw '; opappetite:┆
0x04cb20…04cb40             20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20   ┆ -2; min_hw_stack:  2; op_type: ┆
0x04cb40…04cb60             6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 76 6c 61 20 27 3b 20 6f 70   ┆normal ),   (opname:'stvla '; op┆
0x04cb60…04cb80             61 70 70 65 74 69 74 65 3a 20 2d 34 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20   ┆appetite: -4; min_hw_stack:  4; ┆
0x04cb80…04cba0             6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74   ┆op_type: normal ),   (opname:'st┆
0x04cba0…04cbc0             76 6c 62 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74   ┆vlb '; opappetite: -2; min_hw_st┆
0x04cbc0…04cbe0             61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f   ┆ack:  2; op_type: normal ),   (o┆
0x04cbe0…04cc00             70 6e 61 6d 65 3a 27 73 74 76 6c 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 34 3b 20   ┆pname:'stvld '; opappetite: -4; ┆
0x04cc00…04cc20 (20, 0, 15) 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61   ┆min_hw_stack:  4; op_type: norma┆
0x04cc20…04cc40             6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 76 6c 77 20 27 3b 20 6f 70 61 70 70 65 74   ┆l ),   (opname:'stvlw '; opappet┆
0x04cc40…04cc60             69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79   ┆ite: -2; min_hw_stack:  2; op_ty┆
0x04cc60…04cc80             70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 76 73 61 20 27   ┆pe: normal ),   (opname:'stvsa '┆
0x04cc80…04cca0             3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 38 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20   ┆; opappetite: -8; min_hw_stack: ┆
0x04cca0…04ccc0             20 38 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65   ┆ 8; op_type: normal ),   (opname┆
0x04ccc0…04cce0             3a 27 73 74 76 73 62 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 36 3b 20 6d 69 6e 5f 68   ┆:'stvsb '; opappetite: -6; min_h┆
0x04cce0…04cd00             77 5f 73 74 61 63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a   ┆w_stack:  6; op_type: normal ), ┆
0x04cd00…04cd20             20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 76 73 64 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20   ┆  (opname:'stvsd '; opappetite: ┆
0x04cd20…04cd40             2d 38 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 38 3b 20 6f 70 5f 74 79 70 65 3a 20 6e   ┆-8; min_hw_stack:  8; op_type: n┆
0x04cd40…04cd60             6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 76 73 66 20 27 3b 20 6f 70 61   ┆ormal ),   (opname:'stvsf '; opa┆
0x04cd60…04cd80             70 70 65 74 69 74 65 3a 20 2d 38 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 38 3b 20 6f   ┆ppetite: -8; min_hw_stack:  8; o┆
0x04cd80…04cda0             70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 73 74 76   ┆p_type: normal ),   (opname:'stv┆
0x04cda0…04cdc0             73 77 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 36 3b 20 6d 69 6e 5f 68 77 5f 73 74 61   ┆sw '; opappetite: -6; min_hw_sta┆
0x04cdc0…04cde0             63 6b 3a 20 20 36 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70   ┆ck:  6; op_type: normal ),   (op┆
0x04cde0…04ce00             6e 61 6d 65 3a 27 73 75 62 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d   ┆name:'sub   '; opappetite: -2; m┆
0x04ce00…04ce20 (20, 1, 1)  69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c   ┆in_hw_stack:  4; op_type: normal┆
0x04ce20…04ce40             20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 74 65 71 61 64 20 27 3b 20 6f 70 61 70 70 65 74 69   ┆ ),   (opname:'teqad '; opappeti┆
0x04ce40…04ce60             74 65 3a 20 2d 36 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 38 3b 20 6f 70 5f 74 79 70   ┆te: -6; min_hw_stack:  8; op_typ┆
0x04ce60…04ce80             65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 74 6e 69 6c 6c 20 27 3b   ┆e: normal ),   (opname:'tnill ';┆
0x04ce80…04cea0             20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20   ┆ opappetite: -2; min_hw_stack:  ┆
0x04cea0…04cec0             34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a   ┆4; op_type: normal ),   (opname:┆
0x04cec0…04cee0             27 75 61 64 64 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77   ┆'uadd  '; opappetite: -2; min_hw┆
0x04cee0…04cf00             5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20   ┆_stack:  4; op_type: normal ),  ┆
0x04cf00…04cf20             20 28 6f 70 6e 61 6d 65 3a 27 75 61 64 68 77 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20   ┆ (opname:'uadhw '; opappetite:  ┆
0x04cf20…04cf40             30 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 32 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f   ┆0; min_hw_stack:  2; op_type: no┆
0x04cf40…04cf60             72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 75 64 69 76 20 20 27 3b 20 6f 70 61 70   ┆rmal ),   (opname:'udiv  '; opap┆
0x04cf60…04cf80             70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70   ┆petite: -2; min_hw_stack:  4; op┆
0x04cf80…04cfa0             5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 75 6c 74 20   ┆_type: normal ),   (opname:'ult ┆
0x04cfa0…04cfc0             20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63   ┆  '; opappetite: -2; min_hw_stac┆
0x04cfc0…04cfe0             6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e   ┆k:  4; op_type: normal ),   (opn┆
0x04cfe0…04d000             61 6d 65 3a 27 75 6d 6f 64 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69   ┆ame:'umod  '; opappetite: -2; mi┆
0x04d000…04d020 (20, 1, 2)  6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20   ┆n_hw_stack:  4; op_type: normal ┆
0x04d020…04d040             29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 75 6d 75 6c 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74   ┆),   (opname:'umul  '; opappetit┆
0x04d040…04d060             65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65   ┆e: -2; min_hw_stack:  4; op_type┆
0x04d060…04d080             3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27 75 73 75 62 20 20 27 3b 20   ┆: normal ),   (opname:'usub  '; ┆
0x04d080…04d0a0             6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 34   ┆opappetite: -2; min_hw_stack:  4┆
0x04d0a0…04d0c0             3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20 28 6f 70 6e 61 6d 65 3a 27   ┆; op_type: normal ),   (opname:'┆
0x04d0c0…04d0e0             78 6f 72 20 20 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 2d 32 3b 20 6d 69 6e 5f 68 77 5f   ┆xor   '; opappetite: -2; min_hw_┆
0x04d0e0…04d100             73 74 61 63 6b 3a 20 20 34 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72 6d 61 6c 20 29 2c 0a 20 20   ┆stack:  4; op_type: normal ),   ┆
0x04d100…04d120             28 6f 70 6e 61 6d 65 3a 27 78 78 78 78 78 20 27 3b 20 6f 70 61 70 70 65 74 69 74 65 3a 20 20 30   ┆(opname:'xxxxx '; opappetite:  0┆
0x04d120…04d140             3b 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 20 20 30 3b 20 6f 70 5f 74 79 70 65 3a 20 6e 6f 72   ┆; min_hw_stack:  0; op_type: nor┆
0x04d140…04d160             6d 61 6c 20 29 20 29 3b 0a 74 79 70 65 0a 20 66 72 5f 74 79 70 65 20 3d 20 61 72 72 61 79 5b 66   ┆mal ) ); type  fr_type = array[f┆
0x04d160…04d180             72 61 6d 65 5f 6b 69 6e 64 5d 20 6f 66 20 66 72 61 6d 65 73 3b 0a 63 6f 6e 73 74 0a 63 6f 6e 76   ┆rame_kind] of frames; const conv┆
0x04d180…04d1a0             5f 66 72 61 6d 65 20 3a 20 66 72 5f 74 79 70 65 20 3d 20 28 0a 20 20 20 20 20 20 20 20 20 20 20   ┆_frame : fr_type = (            ┆
0x04d1a0…04d1c0             20 20 67 28 2a 67 5f 66 72 61 6d 65 2a 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 28 2a   ┆  g(*g_frame*),              l(*┆
0x04d1c0…04d1e0             6c 5f 66 72 61 6d 65 2a 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 73 28 2a 69 5f 66 72 61   ┆l_frame*),              s(*i_fra┆
0x04d1e0…04d200             6d 65 2a 29 2c 20 28 2a 6e 6f 74 20 75 73 65 64 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆me*), (*not used*)              ┆
0x04d200…04d220 (20, 1, 3)  73 28 2a 73 5f 66 72 61 6d 65 2a 29 29 3b 0a 0a 74 79 70 65 0a 20 6d 63 5f 74 79 70 65 20 3d 20   ┆s(*s_frame*));  type  mc_type = ┆
0x04d220…04d240             61 72 72 61 79 5b 62 61 73 65 5f 74 79 70 65 73 5d 20 6f 66 20 74 79 70 65 73 3b 0a 63 6f 6e 73   ┆array[base_types] of types; cons┆
0x04d240…04d260             74 0a 63 6f 6e 76 5f 74 79 70 65 20 20 3a 20 6d 63 5f 74 79 70 65 20 3d 20 28 0a 20 20 20 20 20   ┆t conv_type  : mc_type = (      ┆
0x04d260…04d280             20 20 20 20 20 20 20 20 62 28 2a 62 79 74 65 5f 74 79 70 2a 29 2c 0a 20 20 20 20 20 20 20 20 20   ┆        b(*byte_typ*),          ┆
0x04d280…04d2a0             20 20 20 20 77 28 2a 77 6f 72 64 5f 74 79 70 2a 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆    w(*word_typ*),              ┆
0x04d2a0…04d2c0             61 28 2a 70 6f 69 6e 74 5f 74 79 70 2a 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 28 2a   ┆a(*point_typ*),              d(*┆
0x04d2c0…04d2e0             64 6f 75 62 6c 65 5f 74 79 70 2a 29 29 3b 0a 0a 74 79 70 65 0a 20 73 74 76 5f 72 65 76 5f 74 79   ┆double_typ*));  type  stv_rev_ty┆
0x04d2e0…04d300             70 65 20 3d 20 61 72 72 61 79 5b 67 2e 2e 73 2c 62 2e 2e 64 5d 20 6f 66 20 6f 70 63 6f 64 65 3b   ┆pe = array[g..s,b..d] of opcode;┆
0x04d300…04d320             0a 20 28 2a 6f 70 5f 73 74 76 20 61 6e 64 20 6f 70 5f 72 65 76 20 63 6f 6e 74 61 69 6e 73 20 74   ┆  (*op_stv and op_rev contains t┆
0x04d320…04d340             68 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 72 65 76 2e 2e 20 61 6e 64 20 73 74 76 2e 2e 2a   ┆he instructions rev.. and stv..*┆
0x04d340…04d360             29 0a 63 6f 6e 73 74 0a 6f 70 5f 73 74 76 20 3a 20 73 74 76 5f 72 65 76 5f 74 79 70 65 20 3d 20   ┆) const op_stv : stv_rev_type = ┆
0x04d360…04d380             28 0a 20 20 20 20 20 20 20 20 20 20 28 6f 70 5f 73 74 76 67 62 2c 6f 70 5f 73 74 76 67 77 2c 6f   ┆(           (op_stvgb,op_stvgw,o┆
0x04d380…04d3a0             70 5f 73 74 76 67 61 2c 6f 70 5f 73 74 76 67 64 29 2c 0a 20 20 20 20 20 20 20 20 20 20 28 6f 70   ┆p_stvga,op_stvgd),           (op┆
0x04d3a0…04d3c0             5f 73 74 76 6c 62 2c 6f 70 5f 73 74 76 6c 77 2c 6f 70 5f 73 74 76 6c 61 2c 6f 70 5f 73 74 76 6c   ┆_stvlb,op_stvlw,op_stvla,op_stvl┆
0x04d3c0…04d3e0             64 29 2c 0a 20 20 20 20 20 20 20 20 20 20 28 6f 70 5f 73 74 76 73 62 2c 6f 70 5f 73 74 76 73 77   ┆d),           (op_stvsb,op_stvsw┆
0x04d3e0…04d400             2c 6f 70 5f 73 74 76 73 61 2c 6f 70 5f 73 74 76 73 64 29 20 29 3b 0a 0a 6f 70 5f 72 65 76 20 3a   ┆,op_stvsa,op_stvsd) );  op_rev :┆
0x04d400…04d420 (20, 1, 4)  20 73 74 76 5f 72 65 76 5f 74 79 70 65 20 3d 20 28 0a 20 20 20 20 20 20 20 20 20 20 28 6f 70 5f   ┆ stv_rev_type = (           (op_┆
0x04d420…04d440             72 65 76 67 62 2c 6f 70 5f 72 65 76 67 77 2c 6f 70 5f 72 65 76 67 61 2c 6f 70 5f 72 65 76 67 64   ┆revgb,op_revgw,op_revga,op_revgd┆
0x04d440…04d460             29 2c 0a 20 20 20 20 20 20 20 20 20 20 28 6f 70 5f 72 65 76 6c 62 2c 6f 70 5f 72 65 76 6c 77 2c   ┆),           (op_revlb,op_revlw,┆
0x04d460…04d480             6f 70 5f 72 65 76 6c 61 2c 6f 70 5f 72 65 76 6c 64 29 2c 0a 20 20 20 20 20 20 20 20 20 20 28 6f   ┆op_revla,op_revld),           (o┆
0x04d480…04d4a0             70 5f 72 65 76 73 62 2c 6f 70 5f 72 65 76 73 77 2c 6f 70 5f 72 65 76 73 61 2c 6f 70 5f 72 65 76   ┆p_revsb,op_revsw,op_revsa,op_rev┆
0x04d4a0…04d4c0             73 64 29 20 29 3b 0a 0a 74 79 70 65 0a 20 6f 70 5f 63 6f 6d 70 5f 74 79 70 65 20 3d 20 61 72 72   ┆sd) );  type  op_comp_type = arr┆
0x04d4c0…04d4e0             61 79 5b 31 2e 2e 31 31 5d 20 6f 66 20 6f 70 63 6f 64 65 3b 0a 63 6f 6e 73 74 0a 20 6f 70 5f 63   ┆ay[1..11] of opcode; const  op_c┆
0x04d4e0…04d500             6f 6d 70 20 20 3a 20 6f 70 5f 63 6f 6d 70 5f 74 79 70 65 20 3d 20 28 0a 20 20 20 6f 70 5f 75 6c   ┆omp  : op_comp_type = (    op_ul┆
0x04d500…04d520             74 2c 20 6f 70 5f 65 71 2c 20 6f 70 5f 6e 65 2c 20 6f 70 5f 6c 74 2c 20 6f 70 5f 67 74 2c 20 6f   ┆t, op_eq, op_ne, op_lt, op_gt, o┆
0x04d520…04d540             70 5f 6c 65 2c 20 6f 70 5f 67 65 2c 0a 20 20 20 6f 70 5f 73 65 74 65 71 2c 20 6f 70 5f 73 65 74   ┆p_le, op_ge,    op_seteq, op_set┆
0x04d540…04d560             65 71 2c 0a 20 20 20 6f 70 5f 73 65 74 73 62 2c 20 6f 70 5f 73 65 74 73 70 20 29 3b 0a 0a 74 79   ┆eq,    op_setsb, op_setsp );  ty┆
0x04d560…04d580             70 65 0a 20 6f 70 5f 69 6e 64 68 5f 74 79 70 65 20 3d 20 61 72 72 61 79 5b 30 2e 2e 31 2c 30 2e   ┆pe  op_indh_type = array[0..1,0.┆
0x04d580…04d5a0             2e 32 5d 20 6f 66 20 6f 70 63 6f 64 65 3b 0a 63 6f 6e 73 74 0a 6f 70 5f 69 6e 64 68 20 3a 20 6f   ┆.2] of opcode; const op_indh : o┆
0x04d5a0…04d5c0             70 5f 69 6e 64 68 5f 74 79 70 65 20 3d 20 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 70   ┆p_indh_type = (              (op┆
0x04d5c0…04d5e0             5f 69 6e 64 68 30 2c 6f 70 5f 69 6e 64 68 30 31 2c 6f 70 5f 69 6e 64 68 30 32 29 2c 0a 20 20 20   ┆_indh0,op_indh01,op_indh02),    ┆
0x04d5e0…04d600             20 20 20 20 20 20 20 20 20 20 28 6f 70 5f 69 6e 64 68 31 2c 6f 70 5f 69 6e 64 68 31 31 2c 6f 70   ┆          (op_indh1,op_indh11,op┆
0x04d600…04d620 (20, 1, 5)  5f 69 6e 64 68 31 32 29 20 29 3b 0a 0a 0a 0a 28 2a 20 20 20 20 70 72 6f 63 65 64 75 72 65 20 64   ┆_indh12) );    (*    procedure d┆
0x04d620…04d640             65 63 6c 61 72 61 74 69 6f 6e 73 20 67 6c 6f 62 61 6c 20 66 6f 72 20 70 61 73 73 35 3a 20 20 20   ┆eclarations global for pass5:   ┆
0x04d640…04d660             20 20 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6f 6d 3b 0a 62 65 67 69 6e 0a 77 72   ┆   *)    procedure eom; begin wr┆
0x04d660…04d680             69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 29 3b 0a 63 6c 6f 73 65 20 28 69 6e 5f 70 61 73   ┆iteln (out_pass5); close (in_pas┆
0x04d680…04d6a0             73 35 29 3b 0a 69 66 20 6e 6f 74 20 70 72 65 73 65 72 76 65 5f 6f 70 74 69 6f 6e 20 74 68 65 6e   ┆s5); if not preserve_option then┆
0x04d6a0…04d6c0             0a 62 65 67 69 6e 0a 65 72 61 73 65 28 69 6e 5f 70 61 73 73 35 29 3b 0a 61 73 73 69 67 6e 28 69   ┆ begin erase(in_pass5); assign(i┆
0x04d6c0…04d6e0             6e 5f 70 61 73 73 35 2c 20 63 6f 6e 63 61 74 28 70 61 74 68 31 5f 6e 61 6d 65 2c 20 6f 5f 70 61   ┆n_pass5, concat(path1_name, o_pa┆
0x04d6e0…04d700             73 73 34 5f 6e 69 78 6e 61 6d 65 29 29 3b 0a 65 72 61 73 65 28 69 6e 5f 70 61 73 73 35 29 3b 0a   ┆ss4_nixname)); erase(in_pass5); ┆
0x04d700…04d720             65 6e 64 3b 0a 66 6c 75 73 68 28 6f 75 74 5f 70 61 73 73 35 29 3b 0a 63 6c 6f 73 65 20 28 6f 75   ┆end; flush(out_pass5); close (ou┆
0x04d720…04d740             74 5f 70 61 73 73 35 29 3b 0a 28 2a 24 49 2d 2a 29 0a 63 6c 6f 73 65 20 28 65 78 74 5f 70 61 73   ┆t_pass5); (*$I-*) close (ext_pas┆
0x04d740…04d760             73 35 29 3b 0a 28 2a 24 49 2b 2a 29 0a 69 66 20 69 6f 72 65 73 75 6c 74 20 3d 20 30 20 74 68 65   ┆s5); (*$I+*) if ioresult = 0 the┆
0x04d760…04d780             6e 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 72 69 6e 74 68 65 61 64 3b 0a 62   ┆n; end;   procedure printhead; b┆
0x04d780…04d7a0             65 67 69 6e 0a 77 72 69 74 65 20 28 27 2a 2a 2a 20 70 61 73 73 20 35 20 6c 69 6e 65 20 27 2c 20   ┆egin write ('*** pass 5 line ', ┆
0x04d7a0…04d7c0             69 6e 5f 6c 69 6e 65 5f 6e 6f 3a 34 2c 20 27 2c 20 20 27 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f   ┆in_line_no:4, ',  '); end;   pro┆
0x04d7c0…04d7e0             63 65 64 75 72 65 20 70 72 69 6e 74 73 74 61 74 75 73 3b 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c   ┆cedure printstatus; begin writel┆
0x04d7e0…04d800             6e 20 28 27 20 20 20 74 6f 6b 65 6e 20 20 20 20 20 20 3d 27 2c 20 6f 72 64 28 74 6f 6b 65 6e 29   ┆n ('   token      =', ord(token)┆
0x04d800…04d820 (20, 1, 6)  29 3b 0a 77 72 69 74 65 6c 6e 20 28 27 20 20 20 6e 6f 20 6f 66 20 69 74 65 6d 73 3d 27 2c 20 69   ┆); writeln ('   no of items=', i┆
0x04d820…04d840             6e 5f 69 74 65 6d 5f 63 6f 75 6e 74 29 3b 0a 77 72 69 74 65 6c 6e 20 28 27 20 20 20 73 74 61 63   ┆n_item_count); writeln ('   stac┆
0x04d840…04d860             6b 20 20 20 20 20 20 3d 27 2c 20 63 2e 73 74 61 63 6b 5f 73 69 7a 65 29 3b 0a 77 72 69 74 65 6c   ┆k      =', c.stack_size); writel┆
0x04d860…04d880             6e 28 27 20 20 20 68 77 20 73 74 61 63 6b 20 73 69 7a 65 3d 27 2c 68 77 5f 73 74 61 63 6b 5f 73   ┆n('   hw stack size=',hw_stack_s┆
0x04d880…04d8a0             69 7a 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 72 72 6f 72 5f 74 68 69   ┆ize); end;   procedure error_thi┆
0x04d8a0…04d8c0             73 5f 70 61 73 73 20 28 65 3a 20 70 61 73 73 35 65 72 72 6f 72 73 29 3b 0a 62 65 67 69 6e 0a 77   ┆s_pass (e: pass5errors); begin w┆
0x04d8c0…04d8e0             72 69 74 65 28 27 63 6f 6d 70 69 6c 65 72 20 65 72 72 6f 72 2c 20 65 72 72 6f 72 20 63 6f 64 65   ┆rite('compiler error, error code┆
0x04d8e0…04d900             20 3d 20 27 2c 20 6f 72 64 28 65 29 3a 31 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72   ┆ = ', ord(e):1); end;   procedur┆
0x04d900…04d920             65 20 61 62 6f 72 74 20 28 65 3a 20 70 61 73 73 35 65 72 72 6f 72 73 29 3b 0a 62 65 67 69 6e 0a   ┆e abort (e: pass5errors); begin ┆
0x04d920…04d940             77 72 69 74 65 20 28 27 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 74 65 72 6d 69 6e 61 74 65 64 20 62   ┆write ('compilation terminated b┆
0x04d940…04d960             79 20 27 29 3b 0a 63 61 73 65 20 65 20 6f 66 0a 65 78 74 5f 74 61 62 6c 65 5f 73 69 7a 65 3a 20   ┆y '); case e of ext_table_size: ┆
0x04d960…04d980             20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 20 28 27 65 78 74 65 72 6e 61 6c 20 72 6f 75 74 69   ┆        writeln ('external routi┆
0x04d980…04d9a0             6e 65 20 74 61 62 6c 65 20 6f 76 65 72 66 6c 6f 77 27 29 3b 0a 65 78 74 5f 70 61 72 61 6d 5f 6e   ┆ne table overflow'); ext_param_n┆
0x04d9a0…04d9c0             75 6d 62 65 72 3a 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 20 28 27 74 6f 6f 20 6d 61 6e 79 20   ┆umber:       writeln ('too many ┆
0x04d9c0…04d9e0             70 61 72 61 6d 73 20 69 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 27 29 3b 0a 76 5f 73 74 61 63 6b   ┆params in declaration'); v_stack┆
0x04d9e0…04da00             5f 73 69 7a 65 3a 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 20 28 27 6f 70 65 72 61   ┆_size:           writeln ('opera┆
0x04da00…04da20 (20, 1, 7)  6e 64 20 73 74 61 63 6b 20 6f 76 65 72 66 6c 6f 77 27 29 3b 0a 70 61 73 73 34 63 6f 64 65 5f 65   ┆nd stack overflow'); pass4code_e┆
0x04da20…04da40             72 72 6f 72 3a 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 20 28 27 70 61 73 73 20 34 20 63 6f   ┆rror:        writeln ('pass 4 co┆
0x04da40…04da60             64 65 20 65 72 72 6f 72 27 29 3b 0a 70 61 72 61 6d 5f 74 61 62 6c 65 5f 66 75 6c 6c 3a 20 20 20   ┆de error'); param_table_full:   ┆
0x04da60…04da80             20 20 20 20 77 72 69 74 65 6c 6e 20 28 27 65 78 74 65 72 6e 61 6c 20 72 6f 75 74 69 6e 65 20 70   ┆    writeln ('external routine p┆
0x04da80…04daa0             61 72 61 6d 20 74 61 62 6c 65 20 66 75 6c 6c 27 29 3b 0a 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f   ┆aram table full'); compiler_erro┆
0x04daa0…04dac0             72 3a 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 20 28 27 69 6e 63 6f 6e 73 69 73 74 65 6e   ┆r:         writeln ('inconsisten┆
0x04dac0…04dae0             63 79 20 69 6e 20 70 61 73 73 35 27 29 3b 0a 6f 76 65 72 66 6c 6f 77 3a 20 20 20 20 20 20 20 20   ┆cy in pass5'); overflow:        ┆
0x04dae0…04db00             20 20 20 20 20 20 20 77 72 69 74 65 6c 6e 28 27 68 61 72 64 77 61 72 65 20 73 74 61 63 6b 20 6f   ┆       writeln('hardware stack o┆
0x04db00…04db20             76 65 72 66 6c 6f 77 27 29 3b 0a 77 72 6f 6e 67 5f 76 65 72 73 69 6f 6e 3a 20 20 20 20 20 20 20   ┆verflow'); wrong_version:       ┆
0x04db20…04db40             20 20 20 77 72 69 74 65 6c 6e 20 28 27 77 72 6f 6e 67 20 70 61 73 73 34 2f 70 61 73 73 35 20 63   ┆   writeln ('wrong pass4/pass5 c┆
0x04db40…04db60             6f 6d 62 69 6e 61 74 69 6f 6e 27 29 3b 0a 65 6c 73 65 20 65 72 72 6f 72 5f 74 68 69 73 5f 70 61   ┆ombination'); else error_this_pa┆
0x04db60…04db80             73 73 28 65 29 3b 0a 65 6e 64 3b 0a 70 72 69 6e 74 73 74 61 74 75 73 3b 0a 65 6f 6d 3b 20 72 74   ┆ss(e); end; printstatus; eom; rt┆
0x04db80…04dba0             70 68 61 6c 74 28 74 72 75 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 72   ┆phalt(true); end;   procedure er┆
0x04dba0…04dbc0             72 6f 72 20 28 65 3a 20 70 61 73 73 35 65 72 72 6f 72 73 29 3b 0a 63 6f 6e 73 74 20 73 74 61 72   ┆ror (e: pass5errors); const star┆
0x04dbc0…04dbe0             73 3d 20 27 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 20 27 3b 0a 62 65   ┆s= '*********************  '; be┆
0x04dbe0…04dc00             67 69 6e 0a 70 72 69 6e 74 68 65 61 64 3b 0a 63 61 73 65 20 65 20 6f 66 0a 63 61 73 65 5f 6c 61   ┆gin printhead; case e of case_la┆
0x04dc00…04dc20 (20, 1, 8)  62 65 6c 5f 65 72 72 6f 72 3a 20 20 20 20 20 77 72 69 74 65 6c 6e 20 28 27 2b 64 65 63 6c 20 63   ┆bel_error:     writeln ('+decl c┆
0x04dc20…04dc40             61 73 65 6c 61 62 65 6c 27 29 3b 0a 70 61 72 61 6d 5f 6e 75 6d 62 65 72 3a 20 20 20 20 20 20 20   ┆aselabel'); param_number:       ┆
0x04dc40…04dc60             20 20 77 72 69 74 65 6c 6e 20 28 27 74 6f 6f 20 6d 61 6e 79 20 66 6f 72 6d 61 6c 20 70 61 72 61   ┆  writeln ('too many formal para┆
0x04dc60…04dc80             6d 65 74 65 72 73 27 29 3b 0a 69 6e 63 6f 6e 73 69 73 74 65 6e 74 5f 75 73 65 3a 20 20 20 20 20   ┆meters'); inconsistent_use:     ┆
0x04dc80…04dca0             77 72 69 74 65 6c 6e 20 28 27 75 73 65 72 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 74 6f   ┆writeln ('user is not allowed to┆
0x04dca0…04dcc0             20 63 61 6c 6c 20 73 79 73 74 65 6d 2d 72 6f 75 74 69 6e 65 73 27 29 3b 0a 6d 6f 76 65 67 5f 77   ┆ call system-routines'); moveg_w┆
0x04dcc0…04dce0             61 72 6e 69 6e 67 3a 20 20 20 20 20 20 20 20 62 65 67 69 6e 0a 20 20 20 20 20 20 20 77 72 69 74   ┆arning:        begin        writ┆
0x04dce0…04dd00             65 6c 6e 28 27 57 41 52 4e 49 4e 47 2c 20 43 61 6c 6c 20 6f 66 20 50 52 4f 43 45 44 55 52 45 20   ┆eln('WARNING, Call of PROCEDURE ┆
0x04dd00…04dd20             6d 6f 76 65 67 2e 27 29 3b 0a 77 72 69 74 65 6c 6e 28 73 74 61 72 73 2c 20 27 59 6f 75 20 61 72   ┆moveg.'); writeln(stars, 'You ar┆
0x04dd20…04dd40             65 20 62 72 65 61 6b 69 6e 67 20 74 68 65 20 52 54 50 20 73 65 63 75 72 69 74 79 2e 27 29 3b 0a   ┆e breaking the RTP security.'); ┆
0x04dd40…04dd60             77 72 69 74 65 6c 6e 28 73 74 61 72 73 2c 20 27 54 72 79 20 74 6f 20 66 69 6e 64 20 61 6e 6f 74   ┆writeln(stars, 'Try to find anot┆
0x04dd60…04dd80             68 65 72 20 73 6f 6c 75 74 69 6f 6e 27 29 3b 0a 77 72 69 74 65 6c 6e 28 73 74 61 72 73 2c 20 27   ┆her solution'); writeln(stars, '┆
0x04dd80…04dda0             69 6e 73 69 64 65 20 74 68 65 20 52 54 50 20 6c 61 6e 67 75 61 67 65 20 21 21 27 29 3b 0a 65 6e   ┆inside the RTP language !!'); en┆
0x04dda0…04ddc0             64 3b 0a 65 6c 73 65 20 61 62 6f 72 74 28 65 29 3b 0a 65 6e 64 3b 0a 70 61 73 73 35 5f 6f 6b 20   ┆d; else abort(e); end; pass5_ok ┆
0x04ddc0…04dde0             3a 3d 20 70 61 73 73 35 5f 6f 6b 20 61 6e 64 20 28 65 3d 6d 6f 76 65 67 5f 77 61 72 6e 69 6e 67   ┆:= pass5_ok and (e=moveg_warning┆
0x04dde0…04de00             29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 76 61 6c 73 74 61 63 6b 5f 65 72   ┆); end;   procedure evalstack_er┆
0x04de00…04de20 (20, 1, 9)  72 6f 72 3b 0a 62 65 67 69 6e 0a 70 72 69 6e 74 68 65 61 64 3b 0a 77 72 69 74 65 6c 6e 20 28 27   ┆ror; begin printhead; writeln ('┆
0x04de20…04de40             65 76 61 6c 75 61 74 69 6f 6e 20 73 74 61 63 6b 20 65 72 72 6f 72 27 29 3b 0a 70 72 69 6e 74 73   ┆evaluation stack error'); prints┆
0x04de40…04de60             74 61 74 75 73 3b 0a 63 2e 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 30 3b 0a 68 77 5f 73 74 61   ┆tatus; c.stack_size := 0; hw_sta┆
0x04de60…04de80             63 6b 5f 73 69 7a 65 20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 70 72 6f 63 65 64 75 72 65 20 74 61 62   ┆ck_size := 0; end; procedure tab┆
0x04de80…04dea0             6c 65 5f 65 72 72 6f 72 28 6f 70 3a 20 6f 70 63 6f 64 65 29 3b 0a 62 65 67 69 6e 0a 77 69 74 68   ┆le_error(op: opcode); begin with┆
0x04dea0…04dec0             20 6f 70 5f 74 61 62 6c 65 5b 6f 70 5d 20 64 6f 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 27   ┆ op_table[op] do begin writeln('┆
0x04dec0…04dee0             65 72 72 6f 72 20 69 6e 20 6f 70 63 6f 64 65 74 61 62 6c 65 3a 27 2c 6f 70 6e 61 6d 65 29 3b 0a   ┆error in opcodetable:',opname); ┆
0x04dee0…04df00             77 72 69 74 65 6c 6e 28 27 6f 70 61 70 70 65 74 69 74 65 3a 27 2c 6f 70 61 70 70 65 74 69 74 65   ┆writeln('opappetite:',opappetite┆
0x04df00…04df20             3a 32 2c 27 20 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 3a 27 2c 6d 69 6e 5f 68 77 5f 73 74 61 63 6b   ┆:2,' min_hw_stack:',min_hw_stack┆
0x04df20…04df40             3a 32 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 63 6f   ┆:2); end; end;  procedure out_co┆
0x04df40…04df60             6d 6d 65 6e 74 28 73 74 72 3a 73 74 72 69 6e 67 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 70 72 6f   ┆mment(str:string); forward;  pro┆
0x04df60…04df80             63 65 64 75 72 65 20 68 77 5f 73 74 61 63 6b 5f 65 72 72 6f 72 28 65 72 72 3a 68 77 5f 65 72 72   ┆cedure hw_stack_error(err:hw_err┆
0x04df80…04dfa0             6f 72 73 29 3b 0a 62 65 67 69 6e 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 2a 2a 2a 2a 50 41 53   ┆ors); begin out_comment('****PAS┆
0x04dfa0…04dfc0             53 35 20 48 57 53 54 41 43 4b 45 52 52 4f 52 2a 2a 2a 2a 27 29 3b 0a 77 72 69 74 65 6c 6e 28 27   ┆S5 HWSTACKERROR****'); writeln('┆
0x04dfc0…04dfe0             65 72 72 6f 72 20 69 6e 20 68 77 20 73 74 61 63 6b 20 65 76 61 6c 75 61 74 69 6f 6e 2e 27 29 3b   ┆error in hw stack evaluation.');┆
0x04dfe0…04e000             0a 63 61 73 65 20 65 72 72 20 6f 66 0a 73 65 74 5f 69 6e 73 74 72 75 63 74 69 6f 6e 3a 20 77 72   ┆ case err of set_instruction: wr┆
0x04e000…04e020 (20, 1, 10) 69 74 65 6c 6e 28 27 6f 63 63 75 72 65 64 20 69 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 2e 20 68 77   ┆iteln('occured in out_opcode. hw┆
0x04e020…04e040             73 74 61 63 6b 73 69 7a 65 20 74 6f 6f 20 62 69 67 20 66 6f 72 20 73 65 74 69 6e 73 74 72 75 63   ┆stacksize too big for setinstruc┆
0x04e040…04e060             74 69 6f 6e 27 29 3b 0a 6f 70 65 6e 5f 72 6f 75 74 69 6e 65 3a 20 77 72 69 74 65 6c 6e 28 27 6f   ┆tion'); open_routine: writeln('o┆
0x04e060…04e080             63 63 6f 75 72 65 64 20 69 6e 20 67 65 6e 65 72 61 74 69 6e 67 20 63 6f 64 65 20 66 6f 72 20 6f   ┆ccoured in generating code for o┆
0x04e080…04e0a0             70 65 6e 20 72 6f 75 74 69 6e 65 2e 27 29 3b 0a 73 69 6d 70 6c 65 5f 6f 70 65 6e 5f 66 75 6e 63   ┆pen routine.'); simple_open_func┆
0x04e0a0…04e0c0             74 69 6f 6e 3a 20 77 72 69 74 65 6c 6e 28 27 6f 63 63 6f 75 72 65 64 20 69 6e 20 67 65 6e 65 72   ┆tion: writeln('occoured in gener┆
0x04e0c0…04e0e0             61 74 69 6e 67 20 63 6f 64 65 20 66 6f 72 20 73 69 6d 70 6c 65 20 6f 70 65 6e 20 66 75 6e 63 74   ┆ating code for simple open funct┆
0x04e0e0…04e100             69 6f 6e 2e 27 29 3b 0a 61 72 72 61 79 5f 69 6e 69 74 3a 20 77 72 69 74 65 6c 6e 28 27 6f 63 63   ┆ion.'); array_init: writeln('occ┆
0x04e100…04e120             75 72 72 65 64 20 77 68 65 6e 20 67 65 6e 65 72 61 74 69 6e 67 20 63 6f 64 65 20 66 6f 72 20 61   ┆urred when generating code for a┆
0x04e120…04e140             72 72 61 79 73 20 77 69 74 68 20 73 79 73 74 65 6d 63 6f 6d 70 6f 6e 65 6e 74 73 27 29 3b 0a 72   ┆rrays with systemcomponents'); r┆
0x04e140…04e160             65 66 5f 72 65 6d 6f 76 61 6c 3a 20 77 72 69 74 65 6c 6e 28 27 6f 63 63 75 72 72 65 64 20 77 68   ┆ef_removal: writeln('occurred wh┆
0x04e160…04e180             65 6e 20 67 65 6e 65 72 61 74 69 6e 67 20 63 6f 64 65 20 66 6f 72 20 72 65 66 20 72 65 6d 6f 76   ┆en generating code for ref remov┆
0x04e180…04e1a0             61 6c 27 29 3b 0a 73 68 61 64 6f 77 5f 72 65 6d 6f 76 61 6c 3a 20 77 72 69 74 65 6c 6e 28 27 6f   ┆al'); shadow_removal: writeln('o┆
0x04e1a0…04e1c0             63 63 75 72 65 64 20 77 68 65 6e 20 67 65 6e 65 72 61 74 69 6e 67 20 63 6f 64 65 20 66 6f 72 20   ┆ccured when generating code for ┆
0x04e1c0…04e1e0             73 68 61 64 6f 77 20 72 65 6d 6f 76 61 6c 27 29 3b 0a 65 6e 64 3b 0a 77 72 69 74 65 6c 6e 28 27   ┆shadow removal'); end; writeln('┆
0x04e1e0…04e200             68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 69 73 3a 27 2c 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65   ┆hw_stack_size is:',hw_stack_size┆
0x04e200…04e220 (20, 1, 11) 3a 33 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 6e 74 65 78 74 5f   ┆:3); end;    procedure  context_┆
0x04e220…04e240             65 76 61 6c 28 20 20 63 68 61 6e 67 65 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 62 65 67 69   ┆eval(  change : integer );  begi┆
0x04e240…04e260             6e 0a 0a 77 69 74 68 20 63 20 64 6f 0a 62 65 67 69 6e 0a 0a 73 74 61 63 6b 5f 73 69 7a 65 20 3a   ┆n  with c do begin  stack_size :┆
0x04e260…04e280             3d 20 73 74 61 63 6b 5f 73 69 7a 65 20 2b 20 63 68 61 6e 67 65 3b 0a 69 66 20 73 74 61 63 6b 5f   ┆= stack_size + change; if stack_┆
0x04e280…04e2a0             73 69 7a 65 20 3e 20 6d 61 78 5f 73 74 61 63 6b 5f 73 69 7a 65 20 74 68 65 6e 20 20 6d 61 78 5f   ┆size > max_stack_size then  max_┆
0x04e2a0…04e2c0             73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 73 74 61 63 6b 5f 73 69 7a 65 0a 0a 65 6e 64 0a 0a 65   ┆stack_size := stack_size  end  e┆
0x04e2c0…04e2e0             6e 64 3b 0a 0a 0a 0a 0a 28 2a 20 20 20 20 20 70 72 6f 63 65 64 75 72 65 20 64 65 63 6c 61 72 61   ┆nd;     (*     procedure declara┆
0x04e2e0…04e300             74 69 6f 6e 73 20 66 72 6f 6d 20 74 68 65 20 6d 6f 64 75 6c 65 73 3a 20 20 20 20 20 20 2a 29 0a   ┆tions from the modules:      *) ┆
0x04e300…04e320             0a 0a 70 72 6f 63 65 64 75 72 65 20 65 78 74 69 6e 28 76 61 72 20 6e 3a 20 69 6e 74 65 67 65 72   ┆  procedure extin(var n: integer┆
0x04e320…04e340             29 3b 0a 62 65 67 69 6e 0a 20 20 65 78 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d 20 65 78 74   ┆); begin   extcode_fileix := ext┆
0x04e340…04e360             63 6f 64 65 5f 66 69 6c 65 69 78 20 2b 20 31 3b 0a 20 20 69 66 20 65 78 74 63 6f 64 65 5f 66 69   ┆code_fileix + 1;   if extcode_fi┆
0x04e360…04e380             6c 65 69 78 20 3e 20 66 69 6c 72 65 63 5f 6d 61 78 20 74 68 65 6e 0a 20 20 62 65 67 69 6e 0a 20   ┆leix > filrec_max then   begin  ┆
0x04e380…04e3a0             20 20 20 72 65 61 64 28 65 78 74 5f 70 61 73 73 35 2c 20 65 78 74 63 6f 64 65 5f 66 69 6c 70 74   ┆   read(ext_pass5, extcode_filpt┆
0x04e3a0…04e3c0             72 5e 29 3b 0a 20 20 20 20 65 78 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d 20 31 3b 0a 20 20   ┆r^);     extcode_fileix := 1;   ┆
0x04e3c0…04e3e0             65 6e 64 3b 0a 28 2a 24 52 2d 2a 29 0a 20 20 6e 20 3a 3d 20 73 77 61 70 28 65 78 74 63 6f 64 65   ┆end; (*$R-*)   n := swap(extcode┆
0x04e3e0…04e400             5f 66 69 6c 70 74 72 5e 5b 65 78 74 63 6f 64 65 5f 66 69 6c 65 69 78 5d 29 3b 0a 28 2a 24 52 2b   ┆_filptr^[extcode_fileix]); (*$R+┆
0x04e400…04e420 (20, 1, 12) 2a 29 0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 65 6f 66 5f 65 78 74 5f 70 61 73 73 35 20   ┆*) end;  function eof_ext_pass5 ┆
0x04e420…04e440             3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 69 66 20 65 6f 66 20 28 65 78 74 5f 70 61 73   ┆: boolean; begin if eof (ext_pas┆
0x04e440…04e460             73 35 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 6f 66 5f 65 78 74 5f 70 61 73 73 35 20 3a 3d 20   ┆s5) then begin eof_ext_pass5 := ┆
0x04e460…04e480             65 78 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3e 3d 20 66 69 6c 72 65 63 5f 6d 61 78 3b 0a 65 6e   ┆extcode_fileix >= filrec_max; en┆
0x04e480…04e4a0             64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 65 6f 66 5f 65 78 74 5f 70 61 73 73 35 20 3a 3d 20 66 61   ┆d else begin eof_ext_pass5 := fa┆
0x04e4a0…04e4c0             6c 73 65 3b 0a 65 6e 64 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 61 73 73 69 6e 28   ┆lse; end end;  procedure passin(┆
0x04e4c0…04e4e0             76 61 72 20 6e 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69 6e 0a 20 20 69 6e 63 6f 64 65 5f   ┆var n: integer); begin   incode_┆
0x04e4e0…04e500             66 69 6c 65 69 78 20 3a 3d 20 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 20 2b 20 31 3b 0a 20 20 69   ┆fileix := incode_fileix + 1;   i┆
0x04e500…04e520             66 20 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 20 3e 20 66 69 6c 72 65 63 5f 6d 61 78 20 74 68 65   ┆f incode_fileix > filrec_max the┆
0x04e520…04e540             6e 0a 20 20 62 65 67 69 6e 0a 20 20 20 20 72 65 61 64 28 69 6e 5f 70 61 73 73 35 2c 20 69 6e 63   ┆n   begin     read(in_pass5, inc┆
0x04e540…04e560             6f 64 65 5f 66 69 6c 70 74 72 5e 29 3b 0a 20 20 20 20 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 20   ┆ode_filptr^);     incode_fileix ┆
0x04e560…04e580             3a 3d 20 31 3b 0a 20 20 65 6e 64 3b 0a 20 20 6e 20 3a 3d 20 69 6e 63 6f 64 65 5f 66 69 6c 70 74   ┆:= 1;   end;   n := incode_filpt┆
0x04e580…04e5a0             72 5e 5b 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 5d 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75   ┆r^[incode_fileix]; end;  procedu┆
0x04e5a0…04e5c0             72 65 20 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 76 61 72 0a 66 6f 75 6e 64 20 3a 20 62 6f 6f 6c 65   ┆re get_token;  var found : boole┆
0x04e5c0…04e5e0             61 6e 3b 0a 70 61 73 73 35 5f 79 65 73 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6e 6f 31 2c 20 6e 6f   ┆an; pass5_yes : boolean; no1, no┆
0x04e5e0…04e600             32 2c 20 70 61 73 73 6e 6f 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 66 6f 75   ┆2, passno : integer;  begin  fou┆
0x04e600…04e620 (20, 1, 13) 6e 64 20 3a 3d 20 66 61 6c 73 65 3b 0a 0a 72 65 70 65 61 74 0a 62 65 67 69 6e 0a 0a 70 61 73 73   ┆nd := false;  repeat begin  pass┆
0x04e620…04e640             69 6e 28 6e 6f 31 29 3b 0a 74 6f 6b 65 6e 20 3a 3d 20 63 6f 6e 76 65 72 74 5f 69 6e 5f 63 6f 64   ┆in(no1); token := convert_in_cod┆
0x04e640…04e660             65 20 5b 20 6e 6f 31 20 5d 3b 0a 28 2a 24 52 2d 2a 29 0a 69 6e 5f 69 74 65 6d 5f 63 6f 75 6e 74   ┆e [ no1 ]; (*$R-*) in_item_count┆
0x04e660…04e680             20 3a 3d 20 69 6e 5f 69 74 65 6d 5f 63 6f 75 6e 74 20 2b 20 31 3b 0a 28 2a 24 52 2b 2a 29 0a 0a   ┆ := in_item_count + 1; (*$R+*)  ┆
0x04e680…04e6a0             63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 6f 70 74 69 6f 6e 3a 0a 62 65 67 69 6e 0a 0a 70 61   ┆case token of xoption: begin  pa┆
0x04e6a0…04e6c0             73 73 69 6e 28 70 61 73 73 6e 6f 20 29 3b 0a 70 61 73 73 69 6e 28 6e 6f 31 20 29 3b 0a 70 61 73   ┆ssin(passno ); passin(no1 ); pas┆
0x04e6c0…04e6e0             73 69 6e 28 6e 6f 32 20 29 3b 0a 28 2a 24 52 2d 2a 29 0a 69 6e 5f 69 74 65 6d 5f 63 6f 75 6e 74   ┆sin(no2 ); (*$R-*) in_item_count┆
0x04e6e0…04e700             20 3a 3d 20 69 6e 5f 69 74 65 6d 5f 63 6f 75 6e 74 20 2b 20 33 3b 0a 28 2a 24 52 2b 2a 29 0a 70   ┆ := in_item_count + 3; (*$R+*) p┆
0x04e700…04e720             61 73 73 35 5f 79 65 73 20 3a 3d 20 6e 6f 32 20 3c 3e 20 30 3b 0a 0a 69 66 20 70 61 73 73 6e 6f   ┆ass5_yes := no2 <> 0;  if passno┆
0x04e720…04e740             20 3d 20 35 20 74 68 65 6e 0a 63 61 73 65 20 6e 6f 31 20 6f 66 0a 31 3a 20 70 72 6f 6c 6f 67 5f   ┆ = 5 then case no1 of 1: prolog_┆
0x04e740…04e760             79 65 73 20 3a 3d 20 70 61 73 73 35 5f 79 65 73 3b 0a 32 3a 20 65 70 69 6c 6f 67 5f 79 65 73 20   ┆yes := pass5_yes; 2: epilog_yes ┆
0x04e760…04e780             3a 3d 20 70 61 73 73 35 5f 79 65 73 3b 0a 33 3a 20 73 74 61 74 61 63 63 5f 79 65 73 20 3a 3d 20   ┆:= pass5_yes; 3: statacc_yes := ┆
0x04e780…04e7a0             70 61 73 73 35 5f 79 65 73 3b 0a 34 3a 20 63 6f 6d 70 72 65 73 73 5f 79 65 73 20 3a 3d 20 70 61   ┆pass5_yes; 4: compress_yes := pa┆
0x04e7a0…04e7c0             73 73 35 5f 79 65 73 3b 0a 35 3a 20 63 61 6c 6c 70 61 73 73 36 5f 79 65 73 20 3a 3d 20 70 61 73   ┆ss5_yes; 5: callpass6_yes := pas┆
0x04e7c0…04e7e0             73 35 5f 79 65 73 3b 0a 36 3a 20 73 75 6d 6d 61 72 79 5f 79 65 73 20 3a 3d 20 70 61 73 73 35 5f   ┆s5_yes; 6: summary_yes := pass5_┆
0x04e7e0…04e800             79 65 73 3b 0a 37 3a 20 65 6e 66 6f 72 63 65 64 5f 65 78 63 65 70 74 69 6f 6e 5f 61 70 70 20 3a   ┆yes; 7: enforced_exception_app :┆
0x04e800…04e820 (20, 1, 14) 3d 20 6e 6f 32 3b 0a 38 3a 20 6c 61 6d 62 64 61 5f 76 65 72 73 69 6f 6e 20 3a 3d 20 6e 6f 32 3b   ┆= no2; 8: lambda_version := no2;┆
0x04e820…04e840             0a 39 3a 20 6f 70 65 6e 72 6f 75 74 69 6e 65 5f 79 65 73 20 3a 3d 20 70 61 73 73 35 5f 79 65 73   ┆ 9: openroutine_yes := pass5_yes┆
0x04e840…04e860             3b 0a 31 30 3a 20 65 6e 66 6f 72 63 65 64 5f 63 72 65 61 74 65 5f 73 69 7a 65 20 3a 3d 20 6e 6f   ┆; 10: enforced_create_size := no┆
0x04e860…04e880             32 3b 0a 31 31 3a 20 6d 65 61 73 75 72 65 6d 65 6e 74 5f 79 65 73 20 3a 3d 20 70 61 73 73 35 5f   ┆2; 11: measurement_yes := pass5_┆
0x04e880…04e8a0             79 65 73 3b 0a 31 32 3a 20 70 72 65 73 65 72 76 65 5f 6f 70 74 69 6f 6e 3a 3d 20 70 61 73 73 35   ┆yes; 12: preserve_option:= pass5┆
0x04e8a0…04e8c0             5f 79 65 73 3b 0a 65 6c 73 65 20 3b 20 28 2a 20 62 6c 69 6e 64 20 2a 29 0a 65 6e 64 0a 65 6c 73   ┆_yes; else ; (* blind *) end els┆
0x04e8c0…04e8e0             65 0a 77 69 74 68 20 69 6e 5f 6f 70 74 69 6f 6e 73 20 64 6f 0a 62 65 67 69 6e 0a 0a 69 66 20 70   ┆e with in_options do begin  if p┆
0x04e8e0…04e900             61 73 73 6e 6f 20 3d 20 30 20 74 68 65 6e 20 28 2a 20 76 65 72 73 69 6f 6e 20 69 64 65 6e 74 69   ┆assno = 0 then (* version identi┆
0x04e900…04e920             66 69 63 61 74 69 6f 6e 20 2a 29 0a 69 66 20 6e 6f 31 20 3d 20 34 20 28 2a 20 70 61 73 73 20 34   ┆fication *) if no1 = 4 (* pass 4┆
0x04e920…04e940             20 2a 29 20 74 68 65 6e 0a 69 66 20 28 6e 6f 32 20 64 69 76 20 31 30 30 20 3c 3e 20 76 65 72 73   ┆ *) then if (no2 div 100 <> vers┆
0x04e940…04e960             69 6f 6e 70 61 73 73 34 20 64 69 76 20 31 30 30 29 20 6f 72 0a 28 6e 6f 32 20 6d 6f 64 20 31 30   ┆ionpass4 div 100) or (no2 mod 10┆
0x04e960…04e980             30 20 3c 20 76 65 72 73 69 6f 6e 70 61 73 73 34 20 6d 6f 64 20 31 30 30 29 20 74 68 65 6e 0a 65   ┆0 < versionpass4 mod 100) then e┆
0x04e980…04e9a0             72 72 6f 72 20 28 77 72 6f 6e 67 5f 76 65 72 73 69 6f 6e 29 3b 0a 0a 69 66 20 6f 75 74 5f 73 74   ┆rror (wrong_version);  if out_st┆
0x04e9a0…04e9c0             61 74 65 20 3d 20 31 20 28 2a 20 61 66 74 65 72 20 6e 65 77 6c 69 6e 65 20 2a 29 20 74 68 65 6e   ┆ate = 1 (* after newline *) then┆
0x04e9c0…04e9e0             0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 27 6f 2e 27 2c 20 70 61 73 73 6e   ┆ writeln (out_pass5, 'o.', passn┆
0x04e9e0…04ea00             6f 3a 33 2c 20 6e 6f 31 3a 37 2c 20 6e 6f 32 3a 37 2c 20 27 2e 27 29 0a 65 6c 73 65 0a 0a 69 66   ┆o:3, no1:7, no2:7, '.') else  if┆
0x04ea00…04ea20 (20, 1, 15) 20 6e 6f 5f 6f 66 5f 6f 70 74 69 6f 6e 73 20 3c 20 63 5f 73 69 7a 65 5f 6f 70 74 69 6f 6e 5f 6c   ┆ no_of_options < c_size_option_l┆
0x04ea20…04ea40             69 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 73 70 65 63 69 61 6c 20 3a 3d 20 74   ┆ist then begin  out_special := t┆
0x04ea40…04ea60             72 75 65 3b 0a 0a 6e 6f 5f 6f 66 5f 6f 70 74 69 6f 6e 73 20 3a 3d 20 6e 6f 5f 6f 66 5f 6f 70 74   ┆rue;  no_of_options := no_of_opt┆
0x04ea60…04ea80             69 6f 6e 73 20 2b 20 31 3b 0a 77 69 74 68 20 6f 70 74 69 6f 6e 73 20 5b 20 6e 6f 5f 6f 66 5f 6f   ┆ions + 1; with options [ no_of_o┆
0x04ea80…04eaa0             70 74 69 6f 6e 73 20 5d 20 64 6f 0a 62 65 67 69 6e 0a 70 6e 6f 20 3a 3d 20 70 61 73 73 6e 6f 3b   ┆ptions ] do begin pno := passno;┆
0x04eaa0…04eac0             0a 70 31 20 20 3a 3d 20 6e 6f 31 3b 0a 70 32 20 20 3a 3d 20 6e 6f 32 3b 0a 65 6e 64 3b 0a 0a 65   ┆ p1  := no1; p2  := no2; end;  e┆
0x04eac0…04eae0             6e 64 0a 0a 65 6e 64 0a 65 6e 64 3b 0a 78 6e 65 77 6c 69 6e 65 3a 0a 62 65 67 69 6e 0a 0a 70 61   ┆nd  end end; xnewline: begin  pa┆
0x04eae0…04eb00             73 73 69 6e 28 69 6e 5f 6c 69 6e 65 5f 6e 6f 29 3b 0a 28 2a 24 52 2d 2a 29 0a 69 6e 5f 69 74 65   ┆ssin(in_line_no); (*$R-*) in_ite┆
0x04eb00…04eb20             6d 5f 63 6f 75 6e 74 20 3a 3d 20 69 6e 5f 69 74 65 6d 5f 63 6f 75 6e 74 20 2b 20 31 3b 0a 28 2a   ┆m_count := in_item_count + 1; (*┆
0x04eb20…04eb40             24 52 2b 2a 29 0a 0a 6f 75 74 5f 73 70 65 63 69 61 6c 20 3a 3d 20 74 72 75 65 3b 0a 6f 75 74 5f   ┆$R+*)  out_special := true; out_┆
0x04eb40…04eb60             6c 69 6e 65 5f 73 74 61 74 65 20 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 66 6f   ┆line_state := true; end; else fo┆
0x04eb60…04eb80             75 6e 64 20 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 0a 75 6e 74 69 6c 20 20 66 6f   ┆und := true; end;  end until  fo┆
0x04eb80…04eba0             75 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 67 65 74 5f 74 6f 6b 65 6e 20 2a 29 0a 0a 0a 70 72 6f   ┆und;  end; (* get_token *)   pro┆
0x04eba0…04ebc0             63 65 64 75 72 65 20 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 74 3a 20 70 61 73 73 34 63 6f 64 65 73   ┆cedure skip_token (t: pass4codes┆
0x04ebc0…04ebe0             29 3b 0a 62 65 67 69 6e 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 74 20 74 68 65 6e 20 65 72 72 6f   ┆); begin if token <> t then erro┆
0x04ebe0…04ec00             72 20 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a   ┆r (pass4code_error); get_token; ┆
0x04ec00…04ec20 (21, 0, 1)  65 6e 64 3b 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 20 69 6e 5f 69 6e 74 65 67 65 72 20 3a 20 69 6e   ┆end;   function  in_integer : in┆
0x04ec20…04ec40             74 65 67 65 72 3b 0a 0a 76 61 72 20 20 20 69 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69   ┆teger;  var   i : integer;  begi┆
0x04ec40…04ec60             6e 0a 70 61 73 73 69 6e 28 20 69 20 29 3b 0a 28 2a 24 52 2d 2a 29 0a 69 6e 5f 69 74 65 6d 5f 63   ┆n passin( i ); (*$R-*) in_item_c┆
0x04ec60…04ec80             6f 75 6e 74 20 3a 3d 20 69 6e 5f 69 74 65 6d 5f 63 6f 75 6e 74 20 2b 20 31 3b 0a 28 2a 24 52 2b   ┆ount := in_item_count + 1; (*$R+┆
0x04ec80…04eca0             2a 29 0a 69 6e 5f 69 6e 74 65 67 65 72 20 3a 3d 20 69 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65   ┆*) in_integer := i; end;   proce┆
0x04eca0…04ecc0             64 75 72 65 20 20 69 6e 5f 69 64 65 6e 74 69 66 69 65 72 28 20 76 61 72 20 20 69 64 65 6e 74 20   ┆dure  in_identifier( var  ident ┆
0x04ecc0…04ece0             3a 20 69 64 65 6e 74 69 66 69 65 72 20 29 3b 0a 0a 76 61 72 0a 69 2c 20 6a 2c 20 77 20 3a 20 69   ┆: identifier );  var i, j, w : i┆
0x04ece0…04ed00             6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 69 20 3a 3d 20 31 3b 0a 0a 66 6f 72 20 6a 20 3a   ┆nteger;  begin  i := 1;  for j :┆
0x04ed00…04ed20             3d 20 31 20 74 6f 20 31 32 20 64 6f 0a 62 65 67 69 6e 0a 0a 70 61 73 73 69 6e 28 20 77 20 29 3b   ┆= 1 to 12 do begin  passin( w );┆
0x04ed20…04ed40             0a 28 2a 24 52 2d 2a 29 0a 69 6e 5f 69 74 65 6d 5f 63 6f 75 6e 74 20 3a 3d 20 69 6e 5f 69 74 65   ┆ (*$R-*) in_item_count := in_ite┆
0x04ed40…04ed60             6d 5f 63 6f 75 6e 74 20 2b 20 31 3b 0a 28 2a 24 52 2b 2a 29 0a 0a 69 66 20 69 20 3c 3d 20 63 5f   ┆m_count + 1; (*$R+*)  if i <= c_┆
0x04ed60…04ed80             73 69 7a 65 5f 69 64 65 6e 74 69 66 69 65 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 64 65 6e   ┆size_identifier then begin  iden┆
0x04ed80…04eda0             74 5b 20 69 20 5d 20 3a 3d 20 63 68 72 28 20 77 20 29 3b 0a 69 20 3a 3d 20 69 20 2b 20 31 0a 0a   ┆t[ i ] := chr( w ); i := i + 1  ┆
0x04eda0…04edc0             65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 77 68 69 6c 65 20 69 20 3c 3d 20 63 5f 73 69 7a 65 5f 69 64   ┆end;  end;  while i <= c_size_id┆
0x04edc0…04ede0             65 6e 74 69 66 69 65 72 20 64 6f 0a 62 65 67 69 6e 0a 0a 69 64 65 6e 74 5b 20 69 20 5d 20 3a 3d   ┆entifier do begin  ident[ i ] :=┆
0x04ede0…04ee00             20 27 20 27 3b 0a 69 20 3a 3d 20 69 20 2b 20 31 0a 0a 65 6e 64 3b 0a 0a 65 6e 64 20 28 2a 20 69   ┆ ' '; i := i + 1  end;  end (* i┆
0x04ee00…04ee20 (21, 0, 2)  6e 5f 69 64 65 6e 74 69 66 69 65 72 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 69 6e   ┆n_identifier *);   procedure  in┆
0x04ee20…04ee40             5f 69 6e 69 74 3b 0a 76 61 72 20 74 6f 6b 65 6e 3a 20 70 61 73 73 34 63 6f 64 65 73 3b 0a 62 65   ┆_init; var token: pass4codes; be┆
0x04ee40…04ee60             67 69 6e 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2d 74 61   ┆gin  (* initialize conversion-ta┆
0x04ee60…04ee80             62 6c 65 20 2a 29 0a 66 6f 72 20 74 6f 6b 65 6e 20 3a 3d 20 78 66 69 72 73 74 63 6f 64 65 20 74   ┆ble *) for token := xfirstcode t┆
0x04ee80…04eea0             6f 20 78 6c 61 73 74 63 6f 64 65 20 64 6f 0a 62 65 67 69 6e 0a 69 6e 5f 69 74 65 6d 5f 63 6f 75   ┆o xlastcode do begin in_item_cou┆
0x04eea0…04eec0             6e 74 20 3a 3d 20 6f 72 64 28 74 6f 6b 65 6e 29 3b 0a 63 6f 6e 76 65 72 74 5f 69 6e 5f 63 6f 64   ┆nt := ord(token); convert_in_cod┆
0x04eec0…04eee0             65 20 5b 20 69 6e 5f 69 74 65 6d 5f 63 6f 75 6e 74 20 5d 20 3a 3d 20 74 6f 6b 65 6e 3b 0a 65 6e   ┆e [ in_item_count ] := token; en┆
0x04eee0…04ef00             64 3b 0a 0a 61 73 73 69 67 6e 28 69 6e 5f 70 61 73 73 35 2c 20 63 6f 6e 63 61 74 28 70 61 74 68   ┆d;  assign(in_pass5, concat(path┆
0x04ef00…04ef20             31 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 34 5f 63 6f 64 65 6e 61 6d 65 29 29 3b 0a 28 2a 24 49   ┆1_name, o_pass4_codename)); (*$I┆
0x04ef20…04ef40             2d 2a 29 0a 72 65 73 65 74 28 69 6e 5f 70 61 73 73 35 29 3b 0a 69 66 20 69 6f 72 65 73 75 6c 74   ┆-*) reset(in_pass5); if ioresult┆
0x04ef40…04ef60             20 3c 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 6f 66 69 6c 65 28 63 6f 6e 63 61 74 28 70   ┆ <> 0 then begin nofile(concat(p┆
0x04ef60…04ef80             61 74 68 31 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 34 5f 63 6f 64 65 6e 61 6d 65 29 29 3b 0a 65   ┆ath1_name, o_pass4_codename)); e┆
0x04ef80…04efa0             6e 64 3b 0a 28 2a 24 49 2b 2a 29 0a 69 6e 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d 20 66 69 6c   ┆nd; (*$I+*) incode_fileix := fil┆
0x04efa0…04efc0             72 65 63 5f 6d 61 78 3b 0a 69 6e 5f 69 74 65 6d 5f 63 6f 75 6e 74 20 3a 3d 20 30 3b 0a 69 6e 5f   ┆rec_max; in_item_count := 0; in_┆
0x04efc0…04efe0             6c 69 6e 65 5f 6e 6f 20 3a 3d 20 30 3b 0a 69 6e 5f 6f 70 74 69 6f 6e 73 2e 6e 6f 5f 6f 66 5f 6f   ┆line_no := 0; in_options.no_of_o┆
0x04efe0…04f000             70 74 69 6f 6e 73 20 3a 3d 20 30 3b 0a 0a 28 2a 20 72 65 61 64 20 66 69 72 73 74 20 74 6f 6b 65   ┆ptions := 0;  (* read first toke┆
0x04f000…04f020 (21, 0, 3)  6e 20 2a 29 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 6f 75 74 5f 6c 69 6e 65 5f 73 74 61 74 65 20   ┆n *) get_token;  out_line_state ┆
0x04f020…04f040             3a 3d 20 66 61 6c 73 65 3b 20 20 28 2a 20 73 75 70 70 72 65 73 73 20 70 72 65 76 69 6f 75 73 20   ┆:= false;  (* suppress previous ┆
0x04f040…04f060             72 65 61 64 69 6e 67 20 6f 66 20 6c 69 6e 65 6e 75 6d 62 65 72 73 20 2a 29 0a 65 6e 64 3b 0a 0a   ┆reading of linenumbers *) end;  ┆
0x04f060…04f080             0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 6d 65 73 73 5f 73 75 6d 6d 61 72 79 5f 6c 69 6e 65 28   ┆   procedure  mess_summary_line(┆
0x04f080…04f0a0             20 6e 61 6d 65 20 3a 20 69 64 65 6e 74 69 66 69 65 72 3b 20 20 68 65 61 64 5f 6c 69 6e 65 2c 20   ┆ name : identifier;  head_line, ┆
0x04f0a0…04f0c0             62 65 67 69 6e 5f 6c 69 6e 65 2c 20 65 6e 64 5f 6c 69 6e 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a   ┆begin_line, end_line : integer; ┆
0x04f0c0…04f0e0             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 61 70   ┆                              ap┆
0x04f0e0…04f100             70 65 74 69 74 65 20 3a 20 69 6e 74 65 67 65 72 3b 20 64 79 6e 61 6d 69 63 5f 76 61 72 69 61 62   ┆petite : integer; dynamic_variab┆
0x04f100…04f120             6c 65 73 20 3a 20 62 6f 6f 6c 65 61 6e 20 3b 20 70 72 6f 63 65 73 73 5f 61 70 70 65 74 69 74 65   ┆les : boolean ; process_appetite┆
0x04f120…04f140             20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 76 61 72 0a 64 79 6e 5f 6d 61 72 6b 20 3a 20 61 6c   ┆ : integer );  var dyn_mark : al┆
0x04f140…04f160             66 61 3b 0a 0a 62 65 67 69 6e 0a 0a 69 66 20 73 75 6d 6d 61 72 79 5f 79 65 73 20 74 68 65 6e 0a   ┆fa;  begin  if summary_yes then ┆
0x04f160…04f180             62 65 67 69 6e 0a 0a 69 66 20 6d 65 73 73 5f 73 75 6d 6d 5f 73 74 61 74 65 20 3d 20 30 20 74 68   ┆begin  if mess_summ_state = 0 th┆
0x04f180…04f1a0             65 6e 0a 62 65 67 69 6e 0a 0a 28 2a 20 20 70 72 69 6e 74 20 61 20 68 65 61 64 65 72 20 66 6f 72   ┆en begin  (*  print a header for┆
0x04f1a0…04f1c0             20 74 68 65 20 73 75 6d 6d 61 72 79 20 3a 20 20 2a 29 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75   ┆ the summary :  *) writeln(outpu┆
0x04f1c0…04f1e0             74 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 49 6e 66 6f 72 6d 61 74 69 6f 6e   ┆t); writeln(output, 'Information┆
0x04f1e0…04f200             20 73 75 72 76 65 79 20 66 72 6f 6d 20 52 45 41 4c 2d 54 49 4d 45 20 50 41 53 43 41 4c 2c 20 70   ┆ survey from REAL-TIME PASCAL, p┆
0x04f200…04f220 (21, 0, 4)  61 73 73 35 2c 20 76 65 72 73 69 6f 6e 20 27 2c 0a 76 65 72 73 69 6f 6e 5f 64 61 74 65 29 3b 0a   ┆ass5, version ', version_date); ┆
0x04f220…04f240             0a 77 72 69 74 65 6c 6e 3b 0a 77 72 69 74 65 6c 6e 28 20 27 20 20 20 6e 61 6d 65 20 20 20 20 20   ┆ writeln; writeln( '   name     ┆
0x04f240…04f260             20 20 20 68 65 61 64 6c 69 6e 65 20 62 65 67 69 6e 6c 69 6e 65 20 65 6e 64 6c 69 6e 65 20 20 61   ┆   headline beginline endline  a┆
0x04f260…04f280             70 70 65 74 69 74 65 28 77 6f 72 64 73 29 20 64 65 66 61 75 6c 74 20 63 72 65 61 74 65 2d 73 69   ┆ppetite(words) default create-si┆
0x04f280…04f2a0             7a 65 27 29 3b 0a 77 72 69 74 65 6c 6e 3b 0a 0a 6d 65 73 73 5f 73 75 6d 6d 5f 73 74 61 74 65 20   ┆ze'); writeln;  mess_summ_state ┆
0x04f2a0…04f2c0             3a 3d 20 31 0a 0a 65 6e 64 3b 0a 69 66 20 64 79 6e 61 6d 69 63 5f 76 61 72 69 61 62 6c 65 73 20   ┆:= 1  end; if dynamic_variables ┆
0x04f2c0…04f2e0             74 68 65 6e 0a 64 79 6e 5f 6d 61 72 6b 20 3a 3d 20 27 2b 20 64 79 6e 61 6d 69 63 20 20 20 27 0a   ┆then dyn_mark := '+ dynamic   ' ┆
0x04f2e0…04f300             65 6c 73 65 0a 64 79 6e 5f 6d 61 72 6b 20 3a 3d 20 27 20 20 20 20 20 20 20 20 20 20 20 20 27 3b   ┆else dyn_mark := '            ';┆
0x04f300…04f320             0a 0a 77 72 69 74 65 28 20 27 20 20 20 27 2c 20 6e 61 6d 65 20 29 3b 0a 69 66 20 68 65 61 64 5f   ┆  write( '   ', name ); if head_┆
0x04f320…04f340             6c 69 6e 65 20 3d 20 2d 31 20 28 2a 20 65 78 74 65 72 6e 61 6c 20 72 6f 75 74 69 6e 65 20 2a 29   ┆line = -1 (* external routine *)┆
0x04f340…04f360             20 74 68 65 6e 0a 77 72 69 74 65 28 20 27 20 20 20 65 78 74 65 72 6e 61 6c 2c 20 63 61 6c 6c 65   ┆ then write( '   external, calle┆
0x04f360…04f380             64 20 27 2c 20 61 70 70 65 74 69 74 65 20 3a 20 32 2c 20 27 20 74 69 6d 65 28 73 29 20 27 29 0a   ┆d ', appetite : 2, ' time(s) ') ┆
0x04f380…04f3a0             65 6c 73 65 0a 77 72 69 74 65 28 20 20 68 65 61 64 5f 6c 69 6e 65 20 3a 20 36 2c 20 62 65 67 69   ┆else write(  head_line : 6, begi┆
0x04f3a0…04f3c0             6e 5f 6c 69 6e 65 20 3a 20 31 30 2c 20 65 6e 64 5f 6c 69 6e 65 20 3a 20 38 2c 20 27 20 20 3a 20   ┆n_line : 10, end_line : 8, '  : ┆
0x04f3c0…04f3e0             20 27 2c 20 61 70 70 65 74 69 74 65 20 64 69 76 20 32 20 3a 20 36 0a 2c 20 64 79 6e 5f 6d 61 72   ┆ ', appetite div 2 : 6 , dyn_mar┆
0x04f3e0…04f400             6b 20 20 29 3b 0a 69 66 20 70 72 6f 63 65 73 73 5f 61 70 70 65 74 69 74 65 20 3c 3e 20 30 20 74   ┆k  ); if process_appetite <> 0 t┆
0x04f400…04f420 (21, 0, 5)  68 65 6e 0a 77 72 69 74 65 28 20 70 72 6f 63 65 73 73 5f 61 70 70 65 74 69 74 65 20 3a 20 31 32   ┆hen write( process_appetite : 12┆
0x04f420…04f440             20 29 3b 0a 77 72 69 74 65 6c 6e 3b 0a 0a 65 6e 64 0a 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75   ┆ ); writeln;  end  end;  procedu┆
0x04f440…04f460             72 65 20 6f 75 74 5f 6e 6c 3b 0a 76 61 72 0a 69 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67   ┆re out_nl; var i : integer;  beg┆
0x04f460…04f480             69 6e 0a 20 20 20 77 72 69 74 65 6c 6e 28 20 6f 75 74 5f 70 61 73 73 35 20 29 3b 0a 0a 20 20 20   ┆in    writeln( out_pass5 );     ┆
0x04f480…04f4a0             6f 75 74 5f 73 74 61 74 65 20 3a 3d 20 31 3b 20 20 20 6f 75 74 5f 70 6f 73 20 3a 3d 20 30 3b 0a   ┆out_state := 1;   out_pos := 0; ┆
0x04f4a0…04f4c0             0a 69 66 20 6f 75 74 5f 73 70 65 63 69 61 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f   ┆ if out_special then begin  out_┆
0x04f4c0…04f4e0             73 70 65 63 69 61 6c 20 3a 3d 20 66 61 6c 73 65 3b 0a 0a 77 69 74 68 20 69 6e 5f 6f 70 74 69 6f   ┆special := false;  with in_optio┆
0x04f4e0…04f500             6e 73 20 64 6f 0a 69 66 20 6e 6f 5f 6f 66 5f 6f 70 74 69 6f 6e 73 20 3e 20 30 20 74 68 65 6e 0a   ┆ns do if no_of_options > 0 then ┆
0x04f500…04f520             62 65 67 69 6e 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 6e 6f 5f 6f 66 5f 6f 70 74 69 6f 6e   ┆begin for i := 1 to no_of_option┆
0x04f520…04f540             73 20 64 6f 0a 77 69 74 68 20 6f 70 74 69 6f 6e 73 20 5b 20 69 20 5d 20 64 6f 0a 77 72 69 74 65   ┆s do with options [ i ] do write┆
0x04f540…04f560             6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 27 6f 2e 27 2c 20 70 6e 6f 3a 33 2c 20 70 31 3a 37   ┆ln (out_pass5, 'o.', pno:3, p1:7┆
0x04f560…04f580             2c 20 70 32 3a 37 2c 20 27 2e 27 29 3b 0a 6e 6f 5f 6f 66 5f 6f 70 74 69 6f 6e 73 20 3a 3d 20 30   ┆, p2:7, '.'); no_of_options := 0┆
0x04f580…04f5a0             3b 0a 65 6e 64 3b 0a 0a 69 66 20 6f 75 74 5f 6c 69 6e 65 5f 73 74 61 74 65 20 74 68 65 6e 0a 62   ┆; end;  if out_line_state then b┆
0x04f5a0…04f5c0             65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 20 6f 75 74 5f 70 61 73 73 35 2c 20 27 6c 2e 20 27 2c 20   ┆egin writeln( out_pass5, 'l. ', ┆
0x04f5c0…04f5e0             69 6e 5f 6c 69 6e 65 5f 6e 6f 20 3a 20 31 29 3b 0a 6f 75 74 5f 6c 69 6e 65 5f 73 74 61 74 65 20   ┆in_line_no : 1); out_line_state ┆
0x04f5e0…04f600             3a 3d 20 66 61 6c 73 65 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63   ┆:= false end;  end;  end;   proc┆
0x04f600…04f620 (21, 0, 6)  65 64 75 72 65 20 20 6f 75 74 5f 63 68 61 72 28 20 63 68 72 20 3a 20 63 68 61 72 20 29 3b 0a 0a   ┆edure  out_char( chr : char );  ┆
0x04f620…04f640             62 65 67 69 6e 0a 77 72 69 74 65 28 20 6f 75 74 5f 70 61 73 73 35 2c 20 63 68 72 20 29 3b 0a 6f   ┆begin write( out_pass5, chr ); o┆
0x04f640…04f660             75 74 5f 70 6f 73 20 3a 3d 20 6f 75 74 5f 70 6f 73 20 2b 20 31 0a 65 6e 64 3b 0a 0a 70 72 6f 63   ┆ut_pos := out_pos + 1 end;  proc┆
0x04f660…04f680             65 64 75 72 65 20 6f 75 74 5f 74 61 62 28 20 70 6f 73 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a   ┆edure out_tab( pos : integer ); ┆
0x04f680…04f6a0             0a 62 65 67 69 6e 0a 69 66 20 6f 75 74 5f 70 6f 73 20 3c 20 70 6f 73 20 74 68 65 6e 0a 62 65 67   ┆ begin if out_pos < pos then beg┆
0x04f6a0…04f6c0             69 6e 0a 77 72 69 74 65 28 20 6f 75 74 5f 70 61 73 73 35 2c 20 27 20 27 20 3a 20 70 6f 73 20 2d   ┆in write( out_pass5, ' ' : pos -┆
0x04f6c0…04f6e0             20 6f 75 74 5f 70 6f 73 29 3b 0a 6f 75 74 5f 70 6f 73 20 3a 3d 20 70 6f 73 3b 0a 65 6e 64 0a 65   ┆ out_pos); out_pos := pos; end e┆
0x04f6e0…04f700             6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 69 20 3a   ┆nd;   procedure out_integer( i :┆
0x04f700…04f720             20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 28 69 20 3e 20 39 39 39 29 20   ┆ integer );  begin if (i > 999) ┆
0x04f720…04f740             6f 72 20 28 69 20 3c 20 2d 39 39 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 20 28 6f   ┆or (i < -99) then begin write (o┆
0x04f740…04f760             75 74 5f 70 61 73 73 35 2c 20 69 20 3a 20 36 29 3b 20 20 6f 75 74 5f 70 6f 73 20 3a 3d 20 6f 75   ┆ut_pass5, i : 6);  out_pos := ou┆
0x04f760…04f780             74 5f 70 6f 73 20 2b 20 36 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 77 72 69 74 65 20   ┆t_pos + 6; end else begin write ┆
0x04f780…04f7a0             28 6f 75 74 5f 70 61 73 73 35 2c 20 69 20 3a 20 34 29 3b 20 20 6f 75 74 5f 70 6f 73 20 3a 3d 20   ┆(out_pass5, i : 4);  out_pos := ┆
0x04f7a0…04f7c0             6f 75 74 5f 70 6f 73 20 2b 20 34 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75   ┆out_pos + 4; end; end;   procedu┆
0x04f7c0…04f7e0             72 65 20 6f 75 74 5f 69 64 65 6e 74 69 66 69 65 72 28 20 69 64 20 3a 20 69 64 65 6e 74 69 66 69   ┆re out_identifier( id : identifi┆
0x04f7e0…04f800             65 72 20 29 3b 0a 0a 76 61 72 0a 20 20 20 20 20 20 20 69 2c 20 6e 20 3a 20 69 6e 74 65 67 65 72   ┆er );  var        i, n : integer┆
0x04f800…04f820 (21, 0, 7)  3b 0a 0a 62 65 67 69 6e 0a 0a 6e 20 3a 3d 20 63 5f 73 69 7a 65 5f 69 64 65 6e 74 69 66 69 65 72   ┆;  begin  n := c_size_identifier┆
0x04f820…04f840             3b 0a 77 68 69 6c 65 20 28 20 69 64 5b 20 6e 20 5d 20 3d 20 27 20 27 20 29 20 61 6e 64 20 28 20   ┆; while ( id[ n ] = ' ' ) and ( ┆
0x04f840…04f860             6e 20 3e 20 31 20 29 20 64 6f 20 6e 20 3a 3d 20 6e 20 2d 20 31 3b 0a 0a 77 72 69 74 65 28 6f 75   ┆n > 1 ) do n := n - 1;  write(ou┆
0x04f860…04f880             74 5f 70 61 73 73 35 2c 20 27 20 27 29 3b 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 6e 20 64   ┆t_pass5, ' '); for i := 1 to n d┆
0x04f880…04f8a0             6f 20 77 72 69 74 65 28 20 6f 75 74 5f 70 61 73 73 35 2c 20 69 64 5b 69 5d 29 3b 0a 6f 75 74 5f   ┆o write( out_pass5, id[i]); out_┆
0x04f8a0…04f8c0             70 6f 73 20 3a 3d 20 6f 75 74 5f 70 6f 73 20 2b 20 6e 20 2b 20 31 3b 0a 0a 65 6e 64 3b 0a 0a 0a   ┆pos := out_pos + n + 1;  end;   ┆
0x04f8c0…04f8e0             70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 64 65 66 28 20 69 64 20 3a 20 69 64 65 6e 74 69 66 69   ┆procedure out_def( id : identifi┆
0x04f8e0…04f900             65 72 20 29 3b 0a 0a 62 65 67 69 6e 0a 20 20 20 69 66 20 6f 75 74 5f 73 74 61 74 65 20 3c 3e 20   ┆er );  begin    if out_state <> ┆
0x04f900…04f920             31 20 74 68 65 6e 20 20 6f 75 74 5f 6e 6c 3b 0a 0a 20 20 20 6f 75 74 5f 69 64 65 6e 74 69 66 69   ┆1 then  out_nl;     out_identifi┆
0x04f920…04f940             65 72 20 28 20 69 64 20 29 3b 0a 77 72 69 74 65 28 20 6f 75 74 5f 70 61 73 73 35 2c 20 27 3d 20   ┆er ( id ); write( out_pass5, '= ┆
0x04f940…04f960             27 20 29 3b 20 20 6f 75 74 5f 70 6f 73 20 3a 3d 20 6f 75 74 5f 70 6f 73 20 2b 20 32 3b 0a 0a 20   ┆' );  out_pos := out_pos + 2;   ┆
0x04f960…04f980             20 20 6f 75 74 5f 73 74 61 74 65 20 3a 3d 20 36 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72   ┆  out_state := 6 end;   procedur┆
0x04f980…04f9a0             65 20 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 20 3a 20 69 64 65 6e 74 69 66 69 65 72 20 29 3b 0a   ┆e out_label( id : identifier ); ┆
0x04f9a0…04f9c0             0a 62 65 67 69 6e 0a 20 20 20 69 66 20 6f 75 74 5f 73 74 61 74 65 20 3c 3e 20 31 20 74 68 65 6e   ┆ begin    if out_state <> 1 then┆
0x04f9c0…04f9e0             20 20 6f 75 74 5f 6e 6c 3b 0a 0a 20 20 20 6f 75 74 5f 69 64 65 6e 74 69 66 69 65 72 28 20 69 64   ┆  out_nl;     out_identifier( id┆
0x04f9e0…04fa00             20 29 3b 0a 77 72 69 74 65 28 20 6f 75 74 5f 70 61 73 73 35 2c 20 27 3a 20 27 20 29 3b 20 20 6f   ┆ ); write( out_pass5, ': ' );  o┆
0x04fa00…04fa20 (21, 0, 8)  75 74 5f 70 6f 73 20 3a 3d 20 6f 75 74 5f 70 6f 73 20 2b 20 32 3b 0a 0a 20 20 20 6f 75 74 5f 73   ┆ut_pos := out_pos + 2;     out_s┆
0x04fa20…04fa40             74 61 74 65 20 3a 3d 20 32 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 6c   ┆tate := 2 end;   procedure out_l┆
0x04fa40…04fa60             69 78 20 28 69 64 5f 6c 65 74 74 65 72 3a 20 63 68 61 72 3b 20 69 6e 64 65 78 3a 20 69 6e 74 65   ┆ix (id_letter: char; index: inte┆
0x04fa60…04fa80             67 65 72 29 3b 0a 62 65 67 69 6e 0a 77 72 69 74 65 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 69 64   ┆ger); begin write (out_pass5, id┆
0x04fa80…04faa0             5f 6c 65 74 74 65 72 3a 32 2c 20 27 23 27 2c 20 69 6e 64 65 78 3a 31 29 3b 0a 6f 75 74 5f 70 6f   ┆_letter:2, '#', index:1); out_po┆
0x04faa0…04fac0             73 20 3a 3d 20 6f 75 74 5f 70 6f 73 20 2b 20 34 3b 20 20 28 2a 20 61 73 73 75 6d 65 20 6e 6f 72   ┆s := out_pos + 4;  (* assume nor┆
0x04fac0…04fae0             6d 61 6c 6c 79 20 74 77 6f 2d 64 69 67 69 74 20 69 6e 64 69 63 65 73 2e 2e 2e 20 2a 29 0a 65 6e   ┆mally two-digit indices... *) en┆
0x04fae0…04fb00             64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 6c 69 78 5f 6c 61 62 65 6c 20 28 69 64   ┆d;   procedure out_lix_label (id┆
0x04fb00…04fb20             5f 6c 65 74 74 65 72 3a 20 63 68 61 72 3b 20 69 6e 64 65 78 3a 20 69 6e 74 65 67 65 72 29 3b 0a   ┆_letter: char; index: integer); ┆
0x04fb20…04fb40             62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 6c 69 78 20 28 69 64 5f 6c 65 74 74 65 72   ┆begin out_nl; out_lix (id_letter┆
0x04fb40…04fb60             2c 20 69 6e 64 65 78 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 27 20 20 20 20 20 20 20 20 20 20   ┆, index); out_label ('          ┆
0x04fb60…04fb80             20 20 27 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 6f 75 74 5f 63 6f 6d 6d   ┆  '); end;   procedure  out_comm┆
0x04fb80…04fba0             65 6e 74 28 20 73 74 72 20 3a 20 73 74 72 69 6e 67 20 29 3b 0a 76 61 72 20 6e 3a 20 69 6e 74 65   ┆ent( str : string ); var n: inte┆
0x04fba0…04fbc0             67 65 72 3b 0a 0a 62 65 67 69 6e 0a 20 20 20 69 66 20 6f 75 74 5f 73 74 61 74 65 20 3c 3e 20 35   ┆ger;  begin    if out_state <> 5┆
0x04fbc0…04fbe0             20 74 68 65 6e 0a 20 20 20 62 65 67 69 6e 0a 20 20 20 20 20 20 69 66 20 6e 6f 74 20 63 6f 6d 70   ┆ then    begin       if not comp┆
0x04fbe0…04fc00             72 65 73 73 5f 79 65 73 20 74 68 65 6e 20 20 6f 75 74 5f 74 61 62 28 20 32 35 20 29 3b 0a 77 72   ┆ress_yes then  out_tab( 25 ); wr┆
0x04fc00…04fc20 (21, 0, 9)  69 74 65 28 20 6f 75 74 5f 70 61 73 73 35 2c 20 27 3b 20 27 20 29 3b 20 20 6f 75 74 5f 70 6f 73   ┆ite( out_pass5, '; ' );  out_pos┆
0x04fc20…04fc40             20 3a 3d 20 6f 75 74 5f 70 6f 73 20 2b 20 32 3b 0a 20 20 20 65 6e 64 3b 0a 69 66 20 6e 6f 74 20   ┆ := out_pos + 2;    end; if not ┆
0x04fc40…04fc60             63 6f 6d 70 72 65 73 73 5f 79 65 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 20 3a 3d 20 6c 65 6e   ┆compress_yes then begin n := len┆
0x04fc60…04fc80             67 74 68 28 73 74 72 29 3b 0a 77 68 69 6c 65 20 28 73 74 72 20 5b 20 6e 20 5d 20 3d 20 27 20 27   ┆gth(str); while (str [ n ] = ' '┆
0x04fc80…04fca0             29 20 61 6e 64 20 28 6e 20 3e 20 31 29 20 64 6f 20 6e 20 3a 3d 20 6e 2d 31 3b 0a 77 72 69 74 65   ┆) and (n > 1) do n := n-1; write┆
0x04fca0…04fcc0             20 28 6f 75 74 5f 70 61 73 73 35 2c 20 73 74 72 3a 6e 29 3b 0a 6f 75 74 5f 70 6f 73 20 3a 3d 20   ┆ (out_pass5, str:n); out_pos := ┆
0x04fcc0…04fce0             6f 75 74 5f 70 6f 73 20 2b 20 6e 3b 0a 65 6e 64 3b 0a 0a 20 20 20 6f 75 74 5f 73 74 61 74 65 20   ┆out_pos + n; end;     out_state ┆
0x04fce0…04fd00             3a 3d 20 35 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 73 74 61 72 74 5f   ┆:= 5 end;   procedure out_start_┆
0x04fd00…04fd20             70 61 72 61 6d 3b 0a 0a 62 65 67 69 6e 0a 63 61 73 65 20 6f 75 74 5f 73 74 61 74 65 20 6f 66 0a   ┆param;  begin case out_state of ┆
0x04fd20…04fd40             33 3a 20 6f 75 74 5f 73 74 61 74 65 20 3a 3d 20 34 3b 0a 34 3a 20 6f 75 74 5f 63 68 61 72 28 27   ┆3: out_state := 4; 4: out_char('┆
0x04fd40…04fd60             2c 27 29 3b 0a 65 6c 73 65 20 65 72 72 6f 72 20 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29   ┆,'); else error (compiler_error)┆
0x04fd60…04fd80             3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 72 65 73 74 61   ┆; end; end;  procedure out_resta┆
0x04fd80…04fda0             28 72 65 71 75 65 73 74 3a 69 6e 74 65 67 65 72 29 3b 0a 28 2a 6f 75 74 70 75 74 73 20 61 20 72   ┆(request:integer); (*outputs a r┆
0x04fda0…04fdc0             65 73 74 6f 72 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 69 2e 20 65 2e 20 74 68 65 20 68 61 72   ┆estore instruction i. e. the har┆
0x04fdc0…04fde0             64 77 61 72 65 20 73 74 61 63 6b 20 77 69 6c 6c 20 20 63 6f 6e 74 61 69 6e 0a 65 78 61 63 74 6c   ┆dware stack will  contain exactl┆
0x04fde0…04fe00             79 20 72 65 71 75 65 73 74 20 65 6c 65 6d 65 6e 74 73 20 61 66 74 65 72 20 74 68 65 20 69 6e 73   ┆y request elements after the ins┆
0x04fe00…04fe20 (21, 0, 10) 74 72 75 63 74 69 6f 6e 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 72 65 71 75 65 73 74 20 3e 20 6d   ┆truction *) begin if request > m┆
0x04fe20…04fe40             61 78 5f 68 77 5f 73 74 61 63 6b 20 74 68 65 6e 20 65 72 72 6f 72 28 6f 76 65 72 66 6c 6f 77 29   ┆ax_hw_stack then error(overflow)┆
0x04fe40…04fe60             3b 0a 69 66 20 6f 75 74 5f 73 74 61 74 65 3c 3e 31 20 74 68 65 6e 20 6f 75 74 5f 6e 6c 3b 0a 77   ┆; if out_state<>1 then out_nl; w┆
0x04fe60…04fe80             72 69 74 65 20 28 6f 75 74 5f 70 61 73 73 35 2c 27 72 65 73 74 61 27 29 3b 0a 77 72 69 74 65 20   ┆rite (out_pass5,'resta'); write ┆
0x04fe80…04fea0             28 6f 75 74 5f 70 61 73 73 35 2c 72 65 71 75 65 73 74 3a 34 29 3b 0a 68 77 5f 73 74 61 63 6b 5f   ┆(out_pass5,request:4); hw_stack_┆
0x04fea0…04fec0             73 69 7a 65 20 3a 3d 20 72 65 71 75 65 73 74 3b 0a 6f 75 74 5f 73 74 61 74 65 20 3a 3d 20 33 3b   ┆size := request; out_state := 3;┆
0x04fec0…04fee0             0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 68 77 5f 73 74 61 63 6b 5f 61 64 6a 75 73 74   ┆ end;  procedure hw_stack_adjust┆
0x04fee0…04ff00             28 6d 69 6e 5f 72 65 71 75 65 73 74 2c 61 64 6a 75 73 74 6d 65 6e 74 3a 69 6e 74 65 67 65 72 29   ┆(min_request,adjustment:integer)┆
0x04ff00…04ff20             3b 0a 28 2a 63 68 65 63 6b 73 20 69 66 20 74 68 65 20 68 77 73 74 61 63 6b 20 68 61 73 20 74 6f   ┆; (*checks if the hwstack has to┆
0x04ff20…04ff40             20 62 65 20 70 75 73 68 65 64 20 6f 72 20 70 6f 70 65 64 20 61 6e 64 20 64 6f 65 73 20 73 6f 20   ┆ be pushed or poped and does so ┆
0x04ff40…04ff60             69 66 20 6e 65 73 73 65 73 61 72 79 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 68 77 5f 73 74 61 63   ┆if nessesary *) begin if hw_stac┆
0x04ff60…04ff80             6b 5f 73 69 7a 65 20 3c 20 6d 69 6e 5f 72 65 71 75 65 73 74 20 74 68 65 6e 0a 28 2a 6e 6f 74 20   ┆k_size < min_request then (*not ┆
0x04ff80…04ffa0             65 6e 6f 75 67 68 20 65 6c 65 6d 65 6e 74 73 20 69 2e 20 65 2e 20 70 75 73 68 20 73 6f 6d 65 20   ┆enough elements i. e. push some ┆
0x04ffa0…04ffc0             65 6c 65 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 73 74 61 63 6b 20 2a 29 0a 6f 75 74 5f 72 65 73   ┆elements to the stack *) out_res┆
0x04ffc0…04ffe0             74 61 28 6d 69 6e 5f 72 65 71 75 65 73 74 29 0a 65 6c 73 65 0a 69 66 20 28 68 77 5f 73 74 61 63   ┆ta(min_request) else if (hw_stac┆
0x04ffe0…050000             6b 5f 73 69 7a 65 20 2b 20 61 64 6a 75 73 74 6d 65 6e 74 29 20 3e 20 6d 61 78 5f 68 77 5f 73 74   ┆k_size + adjustment) > max_hw_st┆
0x050000…050020 (21, 0, 11) 61 63 6b 20 74 68 65 6e 0a 28 2a 6f 76 65 72 66 6c 6f 77 20 3a 20 6c 65 61 76 65 20 32 20 77 6f   ┆ack then (*overflow : leave 2 wo┆
0x050020…050040             72 64 73 20 6f 6e 20 73 74 61 63 6b 20 2a 29 0a 6f 75 74 5f 72 65 73 74 61 28 32 2a 77 6f 72 64   ┆rds on stack *) out_resta(2*word┆
0x050040…050060             5f 6c 65 6e 67 74 68 29 3b 0a 0a 28 2a 69 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 74 65 73 74   ┆_length);  (*if none of the test┆
0x050060…050080             73 20 20 77 65 72 65 20 74 72 75 65 20 74 68 65 6e 20 74 68 65 72 65 20 69 73 20 65 6e 6f 75 67   ┆s  were true then there is enoug┆
0x050080…0500a0             68 20 72 6f 6f 6d 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 20 20 73 6f 20 64 6f 20 6e 6f 74 68 69   ┆h room on the stack  so do nothi┆
0x0500a0…0500c0             6e 67 20 2a 29 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 6f 70 63 6f 64   ┆ng *) end;   procedure out_opcod┆
0x0500c0…0500e0             65 28 20 6f 70 20 3a 20 6f 70 63 6f 64 65 20 29 3b 0a 0a 76 61 72 0a 20 20 20 20 20 20 69 20 20   ┆e( op : opcode );  var       i  ┆
0x0500e0…050100             20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 70 5f 74 61 62 6c 65   ┆ : integer;  begin with op_table┆
0x050100…050120             5b 6f 70 5d 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 63 6f 6d 70 69 6c 65 72 5f 74 65 73 74 20 74   ┆[op] do begin if compiler_test t┆
0x050120…050140             68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 28 28 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 20 2b 20 6f 70   ┆hen begin if ((min_hw_stack + op┆
0x050140…050160             61 70 70 65 74 69 74 65 29 20 3e 20 6d 61 78 5f 68 77 5f 73 74 61 63 6b 29 20 6f 72 0a 28 6f 70   ┆appetite) > max_hw_stack) or (op┆
0x050160…050180             5f 74 79 70 65 20 3d 20 6f 70 65 6e 5f 69 6e 73 74 72 29 20 74 68 65 6e 20 74 61 62 6c 65 5f 65   ┆_type = open_instr) then table_e┆
0x050180…0501a0             72 72 6f 72 28 6f 70 29 3b 0a 0a 65 6e 64 3b 0a 0a 69 66 20 6f 70 5f 74 79 70 65 20 3c 3e 20 68   ┆rror(op);  end;  if op_type <> h┆
0x0501a0…0501c0             77 5f 69 6e 73 74 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 28 2a 20 69 66 20 6e 6f 74 20 73 65   ┆w_instr then begin  (* if not se┆
0x0501c0…0501e0             74 20 69 6e 73 74 72 20 74 68 65 6e 2a 29 0a 69 66 20 28 6f 70 5f 74 79 70 65 20 3c 3e 20 73 65   ┆t instr then*) if (op_type <> se┆
0x0501e0…050200             74 5f 69 6e 73 74 72 29 20 61 6e 64 20 28 6f 70 5f 74 79 70 65 20 3c 3e 20 73 65 74 5f 6f 6e 6c   ┆t_instr) and (op_type <> set_onl┆
0x050200…050220 (21, 0, 12) 79 5f 73 77 29 20 61 6e 64 0a 20 20 20 28 6f 70 5f 74 79 70 65 20 3c 3e 20 73 65 74 5f 68 77 5f   ┆y_sw) and    (op_type <> set_hw_┆
0x050220…050240             77 6f 72 64 29 20 74 68 65 6e 0a 0a 28 2a 63 68 65 63 6b 20 61 6e 64 20 65 76 65 6e 74 75 61 6c   ┆word) then  (*check and eventual┆
0x050240…050260             6c 79 20 61 64 6a 75 73 74 20 68 77 20 73 74 61 63 6b 20 2a 29 0a 68 77 5f 73 74 61 63 6b 5f 61   ┆ly adjust hw stack *) hw_stack_a┆
0x050260…050280             64 6a 75 73 74 28 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 2c 6f 70 61 70 70 65 74 69 74 65 29 0a 0a   ┆djust(min_hw_stack,opappetite)  ┆
0x050280…0502a0             65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 73 65 74 20 69 6e 73 74 72 75 63 74 69 6f 6e 2a 29 0a 28   ┆else begin (*set instruction*) (┆
0x0502a0…0502c0             2a 6f 6e 6c 79 20 73 69 6d 70 6c 65 20 6f 70 65 72 61 6e 64 73 20 6f 6e 20 73 74 61 63 6b 2a 29   ┆*only simple operands on stack*)┆
0x0502c0…0502e0             0a 69 66 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3c 3e 20 6d 69 6e 5f 68 77 5f 73 74 61 63   ┆ if hw_stack_size <> min_hw_stac┆
0x0502e0…050300             6b 20 74 68 65 6e 0a 6f 75 74 5f 72 65 73 74 61 28 6d 69 6e 5f 68 77 5f 73 74 61 63 6b 29 3b 0a   ┆k then out_resta(min_hw_stack); ┆
0x050300…050320             28 2a 20 4e 42 21 20 73 65 74 63 72 20 69 73 20 6e 6f 74 20 6d 61 72 6b 65 64 20 61 73 20 73 65   ┆(* NB! setcr is not marked as se┆
0x050320…050340             74 20 69 6e 73 74 72 75 63 74 69 6f 6e 2c 20 74 68 65 20 75 70 64 61 74 65 20 6f 66 20 64 79 6e   ┆t instruction, the update of dyn┆
0x050340…050360             20 65 76 61 6c 20 73 74 61 63 6b 20 69 73 0a 64 6f 6e 65 20 61 66 74 65 72 20 74 68 65 20 63 61   ┆ eval stack is done after the ca┆
0x050360…050380             6c 6c 20 6f 66 20 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 63 72 29 20 2a 29 0a 69 66   ┆ll of out_opcode(op_setcr) *) if┆
0x050380…0503a0             20 28 6f 70 3d 6f 70 5f 73 65 74 61 64 29 20 6f 72 20 28 6f 70 3d 6f 70 5f 73 65 74 72 65 29 20   ┆ (op=op_setad) or (op=op_setre) ┆
0x0503a0…0503c0             74 68 65 6e 0a 64 79 6e 5f 65 76 61 6c 5f 73 74 61 63 6b 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b   ┆then dyn_eval_stack:= true; end;┆
0x0503c0…0503e0             20 28 2a 20 73 65 74 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 2a 29 0a 0a 28 2a 6f 75 74 70 75 74   ┆ (* set instruction *)  (*output┆
0x0503e0…050400             20 69 6e 73 74 72 75 63 74 69 6f 6e 2a 29 0a 69 66 20 28 6f 75 74 5f 73 74 61 74 65 20 3c 3e 20   ┆ instruction*) if (out_state <> ┆
0x050400…050420 (21, 0, 13) 31 29 20 61 6e 64 20 28 6f 75 74 5f 73 74 61 74 65 20 3c 3e 20 32 29 20 74 68 65 6e 20 6f 75 74   ┆1) and (out_state <> 2) then out┆
0x050420…050440             5f 6e 6c 3b 0a 69 66 20 6e 6f 74 20 63 6f 6d 70 72 65 73 73 5f 79 65 73 20 74 68 65 6e 20 6f 75   ┆_nl; if not compress_yes then ou┆
0x050440…050460             74 5f 74 61 62 28 35 29 3b 0a 77 72 69 74 65 28 6f 75 74 5f 70 61 73 73 35 2c 6f 70 6e 61 6d 65   ┆t_tab(5); write(out_pass5,opname┆
0x050460…050480             29 3b 0a 0a 28 2a 61 64 6a 75 73 74 20 73 74 61 63 6b 70 6f 69 6e 74 65 72 73 2a 29 0a 63 6f 6e   ┆);  (*adjust stackpointers*) con┆
0x050480…0504a0             74 65 78 74 5f 65 76 61 6c 28 6f 70 61 70 70 65 74 69 74 65 29 3b 0a 63 61 73 65 20 6f 70 5f 74   ┆text_eval(opappetite); case op_t┆
0x0504a0…0504c0             79 70 65 20 6f 66 0a 65 6d 70 74 79 5f 73 74 61 63 6b 3a 0a 0a 69 66 20 6f 70 61 70 70 65 74 69   ┆ype of empty_stack:  if opappeti┆
0x0504c0…0504e0             74 65 20 3e 20 30 20 74 68 65 6e 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 6f 70 61   ┆te > 0 then hw_stack_size := opa┆
0x0504e0…050500             70 70 65 74 69 74 65 0a 65 6c 73 65 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 30 3b   ┆ppetite else hw_stack_size := 0;┆
0x050500…050520             0a 0a 73 65 74 5f 68 77 5f 77 6f 72 64 3a 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20   ┆  set_hw_word: hw_stack_size := ┆
0x050520…050540             77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 73 65 74 5f 6f 6e 6c 79 5f 73 77 3a 20 3b 20 28 2a 73 65   ┆word_length; set_only_sw: ; (*se┆
0x050540…050560             74 73 74 2a 29 20 28 2a 6f 6e 6c 79 20 73 77 5f 73 74 61 63 6b 20 6d 61 6e 69 70 75 6c 61 74 69   ┆tst*) (*only sw_stack manipulati┆
0x050560…050580             6f 6e 2a 29 0a 0a 65 6c 73 65 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 68 77 5f 73   ┆on*)  else hw_stack_size := hw_s┆
0x050580…0505a0             74 61 63 6b 5f 73 69 7a 65 20 2b 20 6f 70 61 70 70 65 74 69 74 65 3b 0a 65 6e 64 3b 0a 65 6e 64   ┆tack_size + opappetite; end; end┆
0x0505a0…0505c0             0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 68 77 5f 69 6e 73 74 72 75 63 74 69 6f 6e 2a 29 0a 28   ┆ else begin (*hw_instruction*) (┆
0x0505c0…0505e0             2a 6e 6f 72 6d 61 6c 6c 79 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 69 6e 20 70 61 73 73 35 2c 20   ┆*normally not allowed in pass5, ┆
0x0505e0…050600             62 75 74 20 6e 65 73 73 65 73 61 72 79 20 66 6f 72 20 63 6f 64 65 20 65 78 65 63 70 74 69 6f 6e   ┆but nessesary for code execption┆
0x050600…050620 (21, 0, 14) 20 2a 29 0a 77 72 69 74 65 6c 6e 28 6f 75 74 5f 70 61 73 73 35 29 3b 0a 77 72 69 74 65 28 6f 75   ┆ *) writeln(out_pass5); write(ou┆
0x050620…050640             74 5f 70 61 73 73 35 2c 20 6f 70 6e 61 6d 65 29 3b 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20   ┆t_pass5, opname); hw_stack_size ┆
0x050640…050660             3a 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 77 69 74 68 20 6f 70 5f 74 61 62 6c 65   ┆:= 0; end;  end; (*with op_table┆
0x050660…050680             20 2a 29 0a 6f 75 74 5f 70 6f 73 20 3a 3d 20 6f 75 74 5f 70 6f 73 20 2b 20 63 5f 73 69 7a 65 5f   ┆ *) out_pos := out_pos + c_size_┆
0x050680…0506a0             6f 70 63 6f 64 65 3b 0a 20 20 20 6f 75 74 5f 73 74 61 74 65 20 3a 3d 20 33 0a 65 6e 64 3b 0a 0a   ┆opcode;    out_state := 3 end;  ┆
0x0506a0…0506c0             0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 70 5f 69 64 20 28 69 64 3a 20 69 64 65 6e 74 69 66   ┆ procedure out_p_id (id: identif┆
0x0506c0…0506e0             69 65 72 29 3b 0a 62 65 67 69 6e 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 0a 6f 75 74   ┆ier); begin out_start_param; out┆
0x0506e0…050700             5f 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75   ┆_identifier (id); end;   procedu┆
0x050700…050720             72 65 20 6f 75 74 5f 70 5f 69 6e 74 20 28 69 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69 6e   ┆re out_p_int (i: integer); begin┆
0x050720…050740             0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 69   ┆ out_start_param; out_integer (i┆
0x050740…050760             29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 65 78 70 72 20 28 69 64   ┆); end;   procedure out_expr (id┆
0x050760…050780             3a 20 69 64 65 6e 74 69 66 69 65 72 3b 20 69 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69 6e   ┆: identifier; i: integer); begin┆
0x050780…0507a0             0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 0a 6f 75 74 5f 69 64 65 6e 74 69 66 69 65 72   ┆ out_start_param; out_identifier┆
0x0507a0…0507c0             20 28 69 64 29 3b 0a 69 66 20 69 20 3e 3d 20 30 20 74 68 65 6e 20 6f 75 74 5f 63 68 61 72 20 28   ┆ (id); if i >= 0 then out_char (┆
0x0507c0…0507e0             27 2b 27 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 69 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72   ┆'+'); out_integer (i); end;   pr┆
0x0507e0…050800             6f 63 65 64 75 72 65 20 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 3a 20 6f 70 63 6f 64 65 3b 20 69   ┆ocedure out_op_id (op: opcode; i┆
0x050800…050820 (21, 0, 15) 64 3a 20 69 64 65 6e 74 69 66 69 65 72 29 3b 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆d: identifier); begin out_opcode┆
0x050820…050840             20 28 6f 70 29 3b 0a 6f 75 74 5f 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 29 3b 0a 6f 75 74 5f   ┆ (op); out_identifier (id); out_┆
0x050840…050860             73 74 61 74 65 20 3a 3d 20 34 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74   ┆state := 4; end;   procedure out┆
0x050860…050880             5f 6f 70 5f 69 6e 74 20 28 6f 70 3a 20 6f 70 63 6f 64 65 3b 20 69 3a 20 69 6e 74 65 67 65 72 29   ┆_op_int (op: opcode; i: integer)┆
0x050880…0508a0             3b 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 29 3b 0a 6f 75 74 5f 69 6e 74   ┆; begin out_opcode (op); out_int┆
0x0508a0…0508c0             65 67 65 72 20 28 69 29 3b 0a 6f 75 74 5f 73 74 61 74 65 20 3a 3d 20 34 3b 0a 65 6e 64 3b 0a 0a   ┆eger (i); out_state := 4; end;  ┆
0x0508c0…0508e0             70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 69 5f 66 72 61 6d 65 5f 61 64 64 72 28 6c 65 76 65 6c   ┆procedure out_i_frame_addr(level┆
0x0508e0…050900             20 3a 20 69 6e 74 65 67 65 72 29 3b 0a 28 2a 67 65 6e 65 72 61 74 65 73 20 63 6f 64 65 20 66 6f   ┆ : integer); (*generates code fo┆
0x050900…050920             72 20 70 6c 61 63 69 6e 67 20 74 68 65 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 20 69 5f 66   ┆r placing the address of the i_f┆
0x050920…050940             72 61 6d 65 20 64 65 6e 6f 74 65 64 20 62 79 20 6c 65 76 65 6c 0a 6f 6e 20 74 6f 70 20 6f 66 20   ┆rame denoted by level on top of ┆
0x050940…050960             73 74 61 63 6b 2a 29 0a 63 6f 6e 73 74 0a 6d 61 78 5f 6c 65 76 65 6c 20 3d 20 34 3b 20 28 2a 6d   ┆stack*) const max_level = 4; (*m┆
0x050960…050980             61 78 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 74 65 72 6d 69 64 69 61 74 65 20 72 65 66 65 72 65   ┆ax number of intermidiate refere┆
0x050980…0509a0             6e 63 65 73 20 69 6e 20 6f 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 2a 29 0a 0a 76 61 72 0a 73   ┆nces in one instruction*)  var s┆
0x0509a0…0509c0             74 65 70 2c 73 74 6f 70 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66 20 6c 65 76 65   ┆tep,stop: integer; begin if leve┆
0x0509c0…0509e0             6c 20 3d 20 30 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29   ┆l = 0 then error(compiler_error)┆
0x0509e0…050a00             0a 65 6c 73 65 20 28 2a 6c 65 76 65 6c 20 3e 20 30 2a 29 0a 69 66 20 6c 65 76 65 6c 20 3c 3d 20   ┆ else (*level > 0*) if level <= ┆
0x050a00…050a20 (21, 1, 1)  6d 61 78 5f 6c 65 76 65 6c 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61   ┆max_level then out_op_int(op_rea┆
0x050a20…050a40             69 64 2c 6c 65 76 65 6c 29 0a 65 6c 73 65 20 28 2a 6c 65 76 65 6c 20 3e 20 6d 61 78 5f 6c 65 76   ┆id,level) else (*level > max_lev┆
0x050a40…050a60             65 6c 2a 29 0a 62 65 67 69 6e 0a 73 74 6f 70 20 3a 3d 20 6c 65 76 65 6c 20 64 69 76 20 6d 61 78   ┆el*) begin stop := level div max┆
0x050a60…050a80             5f 6c 65 76 65 6c 3b 0a 69 66 20 28 6c 65 76 65 6c 20 6d 6f 64 20 6d 61 78 5f 6c 65 76 65 6c 20   ┆_level; if (level mod max_level ┆
0x050a80…050aa0             3d 20 30 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65   ┆= 0) then begin out_op_int(op_re┆
0x050aa0…050ac0             61 69 64 2c 6d 61 78 5f 6c 65 76 65 6c 29 3b 0a 73 74 6f 70 20 3a 3d 20 73 74 6f 70 20 2d 20 31   ┆aid,max_level); stop := stop - 1┆
0x050ac0…050ae0             3b 0a 65 6e 64 20 28 2a 6c 65 76 65 6c 20 3d 20 78 20 2a 20 6d 61 78 6c 65 76 65 6c 2a 29 0a 65   ┆; end (*level = x * maxlevel*) e┆
0x050ae0…050b00             6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 69 64 2c 20 6c 65 76 65 6c 20 6d   ┆lse out_op_int(op_reaid, level m┆
0x050b00…050b20             6f 64 20 6d 61 78 5f 6c 65 76 65 6c 29 3b 0a 0a 66 6f 72 20 73 74 65 70 20 3a 3d 20 31 20 74 6f   ┆od max_level);  for step := 1 to┆
0x050b20…050b40             20 73 74 6f 70 20 64 6f 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 69 73 64 2c 6d 61   ┆ stop do out_op_int(op_reaisd,ma┆
0x050b40…050b60             78 5f 6c 65 76 65 6c 29 3b 0a 65 6e 64 3b 20 28 2a 6c 65 76 65 6c 20 3e 20 6d 61 78 6c 65 76 65   ┆x_level); end; (*level > maxleve┆
0x050b60…050b80             6c 20 2a 29 0a 65 6e 64 3b 20 28 2a 6f 75 74 5f 69 5f 66 72 61 6d 65 5f 61 64 64 72 2a 29 0a 0a   ┆l *) end; (*out_i_frame_addr*)  ┆
0x050b80…050ba0             70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 3a 6f 70 63 6f   ┆procedure out_specopcode(op:opco┆
0x050ba0…050bc0             64 65 3b 6d 6f 76 65 6d 65 6e 74 3a 69 6e 74 65 67 65 72 29 3b 0a 28 2a 20 74 68 69 73 20 70 72   ┆de;movement:integer); (* this pr┆
0x050bc0…050be0             6f 63 65 64 75 72 65 20 69 73 20 75 73 65 64 20 66 6f 72 20 69 6e 73 74 72 75 63 74 69 6f 6e 73   ┆ocedure is used for instructions┆
0x050be0…050c00             20 77 69 74 68 20 65 78 74 72 61 20 73 74 61 63 6b 63 68 61 6e 67 65 20 74 68 61 6e 20 64 65 6e   ┆ with extra stackchange than den┆
0x050c00…050c20 (21, 1, 2)  6f 74 65 64 0a 69 6e 20 74 68 65 20 6f 70 63 6f 64 65 20 74 61 62 6c 65 20 69 2e 20 65 2e 0a 70   ┆oted in the opcode table i. e. p┆
0x050c20…050c40             63 61 6c 73 30 20 28 2d 70 61 72 61 6d 6c 65 6e 67 74 68 29 2c 20 70 63 61 6c 73 31 20 28 2d 70   ┆cals0 (-paramlength), pcals1 (-p┆
0x050c40…050c60             61 72 61 6d 6c 65 6e 67 74 68 29 2c 20 70 63 61 6c 73 20 28 2d 70 61 72 61 6d 6c 65 6e 67 74 68   ┆aramlength), pcals (-paramlength┆
0x050c60…050c80             29 2c 0a 72 65 76 73 6d 20 28 73 69 7a 65 29 0a 72 65 6e 68 62 20 28 70 61 72 61 6d 29 0a 73 74   ┆), revsm (size) renhb (param) st┆
0x050c80…050ca0             6e 68 62 20 28 2d 70 61 72 61 6d 29 0a 73 65 74 72 65 20 28 73 69 7a 65 29 0a 73 65 74 73 74 20   ┆nhb (-param) setre (size) setst ┆
0x050ca0…050cc0             28 2d 73 69 7a 65 29 2c 20 73 65 74 74 6d 20 28 2d 73 69 7a 65 29 2c 20 73 65 74 61 64 20 28 73   ┆(-size), settm (-size), setad (s┆
0x050cc0…050ce0             69 7a 65 20 2b 20 32 29 20 20 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 6f 70 20 3d 20 6f 70 5f 73   ┆ize + 2)   *) begin if op = op_s┆
0x050ce0…050d00             74 6e 68 62 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 2c 2d 6d 6f 76 65 6d 65 6e   ┆tnhb then out_op_int(op,-movemen┆
0x050d00…050d20             74 29 0a 65 6c 73 65 0a 69 66 20 6f 70 20 3d 20 6f 70 5f 72 65 6e 68 62 20 74 68 65 6e 0a 6f 75   ┆t) else if op = op_renhb then ou┆
0x050d20…050d40             74 5f 6f 70 5f 69 6e 74 28 6f 70 2c 6d 6f 76 65 6d 65 6e 74 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f   ┆t_op_int(op,movement) else out_o┆
0x050d40…050d60             70 63 6f 64 65 28 6f 70 29 3b 0a 63 6f 6e 74 65 78 74 5f 65 76 61 6c 28 6d 6f 76 65 6d 65 6e 74   ┆pcode(op); context_eval(movement┆
0x050d60…050d80             29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 6f 70 5f 72 65 61 28 6c 65   ┆); end;  procedure out_op_rea(le┆
0x050d80…050da0             76 65 6c 2c 6f 66 66 73 65 74 3a 69 6e 74 65 67 65 72 29 3b 0a 28 2a 70 75 73 68 65 73 20 74 68   ┆vel,offset:integer); (*pushes th┆
0x050da0…050dc0             65 20 61 64 64 72 65 73 73 20 64 65 6e 6f 74 65 64 20 62 79 20 6c 65 76 65 6c 2c 20 6f 66 66 73   ┆e address denoted by level, offs┆
0x050dc0…050de0             65 74 20 6f 6e 20 74 6f 70 20 6f 66 20 74 68 65 20 73 74 61 63 6b 2a 29 0a 62 65 67 69 6e 0a 28   ┆et on top of the stack*) begin (┆
0x050de0…050e00             2a 6d 6f 76 65 20 61 64 64 72 65 73 73 20 6f 66 20 69 5f 66 72 61 6d 65 20 6f 6e 20 74 6f 70 20   ┆*move address of i_frame on top ┆
0x050e00…050e20 (21, 1, 3)  6f 66 20 73 74 61 63 6b 2a 29 0a 6f 75 74 5f 69 5f 66 72 61 6d 65 5f 61 64 64 72 28 6c 65 76 65   ┆of stack*) out_i_frame_addr(leve┆
0x050e20…050e40             6c 29 3b 0a 20 20 0a 28 2a 61 64 64 20 6f 66 66 73 65 74 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆l);    (*add offset*) out_op_int┆
0x050e40…050e60             28 6f 70 5f 72 65 61 73 64 2c 6f 66 66 73 65 74 29 3b 0a 20 20 0a 65 6e 64 3b 20 28 2a 6f 75 74   ┆(op_reasd,offset);    end; (*out┆
0x050e60…050e80             5f 6f 70 5f 72 65 61 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 6f 70 5f 72 65 76 5f   ┆_op_rea*)  procedure out_op_rev_┆
0x050e80…050ea0             5f 28 61 63 63 65 73 73 3a 66 72 61 6d 65 5f 6b 69 6e 64 3b 74 79 70 65 5f 76 3a 62 61 73 65 5f   ┆_(access:frame_kind;type_v:base_┆
0x050ea0…050ec0             74 79 70 65 73 3b 6c 65 76 65 6c 2c 6f 66 66 73 65 74 3a 69 6e 74 65 67 65 72 29 3b 0a 28 2a 6f   ┆types;level,offset:integer); (*o┆
0x050ec0…050ee0             75 74 70 75 74 73 20 61 20 72 65 76 2e 2e 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 64 65 70 65 6e   ┆utputs a rev.. instruction depen┆
0x050ee0…050f00             64 65 6e 74 20 6f 66 20 77 68 69 63 68 20 66 72 61 6d 65 20 61 6e 64 20 74 79 70 65 5f 76 2e 20   ┆dent of which frame and type_v. ┆
0x050f00…050f20             49 6e 20 63 61 73 65 20 6f 66 0a 69 5f 66 72 61 6d 65 20 74 68 65 20 61 64 64 72 65 73 73 20 69   ┆In case of i_frame the address i┆
0x050f20…050f40             73 20 70 6c 61 63 65 64 20 6f 6e 20 74 6f 70 20 6f 66 20 73 74 61 63 6b 20 61 6e 64 20 61 20 72   ┆s placed on top of stack and a r┆
0x050f40…050f60             65 76 73 2e 20 30 20 69 73 20 6f 75 74 70 75 74 2a 29 0a 62 65 67 69 6e 0a 0a 69 66 20 61 63 63   ┆evs. 0 is output*) begin  if acc┆
0x050f60…050f80             65 73 73 20 3c 3e 20 69 5f 66 72 61 6d 65 0a 74 68 65 6e 20 28 2a 67 5f 66 72 61 6d 65 20 6c 5f   ┆ess <> i_frame then (*g_frame l_┆
0x050f80…050fa0             66 72 61 6d 65 20 6f 72 20 73 5f 66 72 61 6d 65 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70   ┆frame or s_frame*) out_op_int(op┆
0x050fa0…050fc0             5f 72 65 76 5b 63 6f 6e 76 5f 66 72 61 6d 65 5b 61 63 63 65 73 73 5d 2c 63 6f 6e 76 5f 74 79 70   ┆_rev[conv_frame[access],conv_typ┆
0x050fc0…050fe0             65 5b 74 79 70 65 5f 76 5d 5d 2c 6f 66 66 73 65 74 29 0a 65 6c 73 65 20 62 65 67 69 6e 28 2a 69   ┆e[type_v]],offset) else begin(*i┆
0x050fe0…051000             5f 66 72 61 6d 65 2a 29 0a 6f 75 74 5f 6f 70 5f 72 65 61 28 6c 65 76 65 6c 2c 6f 66 66 73 65 74   ┆_frame*) out_op_rea(level,offset┆
0x051000…051020 (21, 1, 4)  29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 5b 73 2c 63 6f 6e 76 5f 74 79 70 65   ┆); out_op_int(op_rev[s,conv_type┆
0x051020…051040             5b 74 79 70 65 5f 76 5d 5d 2c 30 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64   ┆[type_v]],0); end; end;   proced┆
0x051040…051060             75 72 65 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 74 3a 20 63 68 61 72 29 3b 0a 62 65 67 69 6e 0a 63   ┆ure out_token (t: char); begin c┆
0x051060…051080             61 73 65 20 74 20 6f 66 0a 64 6f 6c 6c 61 72 5f 61 3a 20 62 65 67 69 6e 20 6f 75 74 5f 63 68 61   ┆ase t of dollar_a: begin out_cha┆
0x051080…0510a0             72 20 28 27 24 27 29 3b 20 6f 75 74 5f 63 68 61 72 20 28 27 61 27 29 3b 20 65 6e 64 3b 0a 64 6f   ┆r ('$'); out_char ('a'); end; do┆
0x0510a0…0510c0             6c 6c 61 72 5f 62 3a 20 62 65 67 69 6e 20 6f 75 74 5f 63 68 61 72 20 28 27 24 27 29 3b 20 6f 75   ┆llar_b: begin out_char ('$'); ou┆
0x0510c0…0510e0             74 5f 63 68 61 72 20 28 27 62 27 29 3b 20 65 6e 64 3b 0a 64 6f 6c 6c 61 72 5f 69 3a 20 62 65 67   ┆t_char ('b'); end; dollar_i: beg┆
0x0510e0…051100             69 6e 20 6f 75 74 5f 63 68 61 72 20 28 27 24 27 29 3b 20 6f 75 74 5f 63 68 61 72 20 28 27 69 27   ┆in out_char ('$'); out_char ('i'┆
0x051100…051120             29 3b 20 65 6e 64 3b 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 74 20 3c 3e 20 7a 65 6e 64 6c   ┆); end; else begin if t <> zendl┆
0x051120…051140             69 73 74 20 74 68 65 6e 0a 6f 75 74 5f 63 68 61 72 20 28 74 29 3b 0a 6f 75 74 5f 63 68 61 72 20   ┆ist then out_char (t); out_char ┆
0x051140…051160             28 27 2e 27 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 6f 75 74 5f 73 74 61 74 65 20 3a 3d 20 33 3b   ┆('.'); end; end; out_state := 3;┆
0x051160…051180             0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 69 6e 69 74 3b 0a 0a 62 65 67   ┆ end;   procedure out_init;  beg┆
0x051180…0511a0             69 6e 0a 61 73 73 69 67 6e 28 20 6f 75 74 5f 70 61 73 73 35 2c 20 63 6f 6e 63 61 74 28 70 61 74   ┆in assign( out_pass5, concat(pat┆
0x0511a0…0511c0             68 32 5f 6e 61 6d 65 2c 20 6f 5f 70 61 73 73 35 5f 63 6f 64 65 6e 61 6d 65 29 29 3b 0a 73 65 74   ┆h2_name, o_pass5_codename)); set┆
0x0511c0…0511e0             74 65 78 74 62 75 66 28 6f 75 74 5f 70 61 73 73 35 2c 20 6f 75 74 5f 62 75 66 5f 70 74 72 5e 29   ┆textbuf(out_pass5, out_buf_ptr^)┆
0x0511e0…051200             3b 0a 72 65 77 72 69 74 65 28 20 6f 75 74 5f 70 61 73 73 35 20 29 3b 0a 0a 6f 75 74 5f 73 74 61   ┆; rewrite( out_pass5 );  out_sta┆
0x051200…051220 (21, 1, 5)  74 65 20 3a 3d 20 31 3b 20 20 20 20 6f 75 74 5f 70 6f 73 20 3a 3d 20 30 3b 0a 0a 6f 75 74 5f 73   ┆te := 1;    out_pos := 0;  out_s┆
0x051220…051240             70 65 63 69 61 6c 20 3a 3d 20 66 61 6c 73 65 3b 0a 6f 75 74 5f 6c 69 6e 65 5f 73 74 61 74 65 20   ┆pecial := false; out_line_state ┆
0x051240…051260             3a 3d 20 66 61 6c 73 65 3b 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 0a 20 20   ┆:= false; writeln (out_pass5,   ┆
0x051260…051280             20 20 20 20 20 20 20 27 6f 2e 27 2c 20 30 20 3a 20 33 20 28 2a 20 76 65 72 73 69 6f 6e 20 69 64   ┆       'o.', 0 : 3 (* version id┆
0x051280…0512a0             20 2a 29 2c 20 6f 77 6e 70 61 73 73 6e 6f 3a 37 2c 20 76 65 72 73 69 6f 6e 70 61 73 73 35 3a 37   ┆ *), ownpassno:7, versionpass5:7┆
0x0512a0…0512c0             2c 20 27 2e 27 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75   ┆, '.');  out_nl;  end;   procedu┆
0x0512c0…0512e0             72 65 20 65 78 74 5f 69 6e 69 74 3b 0a 76 61 72 0a 6b 65 79 20 3a 20 69 6e 74 65 67 65 72 3b 0a   ┆re ext_init; var key : integer; ┆
0x0512e0…051300             62 65 67 69 6e 0a 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 20 3a 3d 20 2d 31 3b 0a 65 78 74 5f 6f 70   ┆begin not_resolved := -1; ext_op┆
0x051300…051320             65 6e 5f 63 6f 64 65 73 2e 63 75 72 5f 77 6f 72 64 5f 70 74 72 20 3a 3d 20 31 3b 0a 66 69 6c 65   ┆en_codes.cur_word_ptr := 1; file┆
0x051320…051340             5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 2d 31 3b 20 20 28 2a 20 62 65 66 6f 72 65 20 72 65 73 65   ┆_position := -1;  (* before rese┆
0x051340…051360             74 20 2a 29 0a 61 73 73 69 67 6e 20 28 65 78 74 5f 70 61 73 73 35 2c 20 63 6f 6e 63 61 74 28 72   ┆t *) assign (ext_pass5, concat(r┆
0x051360…051380             74 70 33 35 5f 70 61 74 68 6e 61 6d 65 2c 20 69 5f 70 61 73 73 35 5f 65 78 74 6e 61 6d 65 29 29   ┆tp35_pathname, i_pass5_extname))┆
0x051380…0513a0             3b 0a 66 6f 72 20 6b 65 79 20 3a 3d 20 31 20 74 6f 20 65 78 74 5f 74 61 62 5f 6d 61 78 20 64 6f   ┆; for key := 1 to ext_tab_max do┆
0x0513a0…0513c0             0a 77 69 74 68 20 65 78 74 5f 74 61 62 20 5b 20 6b 65 79 20 5d 20 64 6f 0a 73 74 61 74 65 20 3a   ┆ with ext_tab [ key ] do state :┆
0x0513c0…0513e0             3d 20 65 78 74 5f 75 6e 75 73 65 64 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66   ┆= ext_unused; end;   procedure f┆
0x0513e0…051400             69 6e 64 5f 65 78 74 5f 72 6f 75 74 69 6e 65 3b 0a 76 61 72 0a 6b 65 79 20 3a 20 69 6e 74 65 67   ┆ind_ext_routine; var key : integ┆
0x051400…051420 (21, 1, 6)  65 72 3b 0a 63 75 72 5f 70 61 72 61 6d 3a 20 70 61 72 61 6d 5f 70 74 72 3b 0a 62 65 67 69 6e 0a   ┆er; cur_param: param_ptr; begin ┆
0x051420…051440             0a 6b 65 79 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 6b 65 79 20 3e 20 65 78 74   ┆ key := in_integer; if key > ext┆
0x051440…051460             5f 74 61 62 5f 6d 61 78 20 74 68 65 6e 20 65 72 72 6f 72 20 28 65 78 74 5f 74 61 62 6c 65 5f 73   ┆_tab_max then error (ext_table_s┆
0x051460…051480             69 7a 65 29 3b 0a 0a 77 69 74 68 20 65 78 74 5f 74 61 62 20 5b 20 6b 65 79 20 5d 20 64 6f 0a 62   ┆ize);  with ext_tab [ key ] do b┆
0x051480…0514a0             65 67 69 6e 0a 69 6e 5f 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 29 3b 0a 6e 6f 5f 6f 66 5f 70   ┆egin in_identifier (id); no_of_p┆
0x0514a0…0514c0             61 72 61 6d 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 6e 6f 5f 6f 66 5f 70 61 72   ┆aram := in_integer; if no_of_par┆
0x0514c0…0514e0             61 6d 20 3e 20 30 20 74 68 65 6e 0a 6e 65 77 28 70 61 72 61 6d 70 74 72 29 0a 65 6c 73 65 0a 70   ┆am > 0 then new(paramptr) else p┆
0x0514e0…051500             61 72 61 6d 70 74 72 3a 3d 20 6e 69 6c 3b 0a 63 75 72 5f 70 61 72 61 6d 3a 3d 20 70 61 72 61 6d   ┆aramptr:= nil; cur_param:= param┆
0x051500…051520             70 74 72 3b 0a 0a 6e 6f 5f 6f 66 5f 75 73 65 73 20 3a 3d 20 30 3b 0a 0a 67 65 74 5f 74 6f 6b 65   ┆ptr;  no_of_uses := 0;  get_toke┆
0x051520…051540             6e 3b 0a 77 68 69 6c 65 20 74 6f 6b 65 6e 20 3d 20 78 70 61 72 61 6d 74 79 70 65 20 64 6f 0a 77   ┆n; while token = xparamtype do w┆
0x051540…051560             69 74 68 20 63 75 72 5f 70 61 72 61 6d 5e 20 64 6f 0a 62 65 67 69 6e 0a 6b 69 6e 64 20 3a 3d 20   ┆ith cur_param^ do begin kind := ┆
0x051560…051580             69 6e 5f 69 6e 74 65 67 65 72 3b 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a   ┆in_integer; size := in_integer; ┆
0x051580…0515a0             67 65 74 5f 74 6f 6b 65 6e 3b 0a 69 66 20 74 6f 6b 65 6e 3d 78 70 61 72 61 6d 74 79 70 65 20 74   ┆get_token; if token=xparamtype t┆
0x0515a0…0515c0             68 65 6e 0a 6e 65 77 28 6e 65 78 74 5f 70 61 72 61 6d 29 0a 65 6c 73 65 0a 6e 65 78 74 5f 70 61   ┆hen new(next_param) else next_pa┆
0x0515c0…0515e0             72 61 6d 3a 3d 20 6e 69 6c 3b 0a 63 75 72 5f 70 61 72 61 6d 3a 3d 20 6e 65 78 74 5f 70 61 72 61   ┆ram:= nil; cur_param:= next_para┆
0x0515e0…051600             6d 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a 29 0a 0a 73 74 61 74 65 20 3a 3d 20 65 78 74   ┆m; end; (* with *)  state := ext┆
0x051600…051620 (21, 1, 7)  5f 64 65 63 6c 61 72 65 64 3b 0a 77 68 69 6c 65 20 6b 65 79 3c 3d 6e 6f 74 5f 72 65 73 6f 6c 76   ┆_declared; while key<=not_resolv┆
0x051620…051640             65 64 20 64 6f 0a 28 2a 20 72 65 6d 6f 76 65 20 75 6e 75 73 65 64 20 65 6c 65 6d 65 6e 74 73 20   ┆ed do (* remove unused elements ┆
0x051640…051660             6f 66 20 70 61 72 61 6c 6c 65 6c 20 62 6c 6f 63 6b 20 66 72 6f 6d 20 74 68 65 20 63 68 61 69 6e   ┆of parallel block from the chain┆
0x051660…051680             20 6f 66 20 6e 6f 6e 20 72 65 73 6c 76 65 64 20 72 6f 75 74 69 6e 65 73 20 2a 29 0a 6e 6f 74 5f   ┆ of non reslved routines *) not_┆
0x051680…0516a0             72 65 73 6f 6c 76 65 64 3a 3d 20 65 78 74 5f 74 61 62 5b 20 6e 6f 74 5f 72 65 73 6f 6c 76 65 64   ┆resolved:= ext_tab[ not_resolved┆
0x0516a0…0516c0             20 5d 2e 64 65 63 6c 5f 6c 69 6e 6b 3b 0a 0a 64 65 63 6c 5f 6c 69 6e 6b 20 3a 3d 20 6e 6f 74 5f   ┆ ].decl_link;  decl_link := not_┆
0x0516c0…0516e0             72 65 73 6f 6c 76 65 64 3b 0a 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 20 3a 3d 20 6b 65 79 3b 0a 65   ┆resolved; not_resolved := key; e┆
0x0516e0…051700             6e 64 3b 0a 65 6e 64 3b 20 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 65 78 74 5f   ┆nd; end;  (* procedure find_ext_┆
0x051700…051720             72 6f 75 74 69 6e 65 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 78 74 5f 63 6f 70 79 5f   ┆routine *)   procedure ext_copy_┆
0x051720…051740             63 6f 64 65 20 28 6b 65 79 20 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 0a 69 2c 20 63 2c 20   ┆code (key : integer); var i, c, ┆
0x051740…051760             77 20 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 65 78 74 5f 74 61 62 20   ┆w : integer; begin with ext_tab ┆
0x051760…051780             5b 20 6b 65 79 20 5d 20 64 6f 0a 77 69 74 68 20 65 78 74 5f 6f 70 65 6e 5f 63 6f 64 65 73 20 64   ┆[ key ] do with ext_open_codes d┆
0x051780…0517a0             6f 0a 69 66 20 77 6f 72 64 63 6f 75 6e 74 20 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 28   ┆o if wordcount > 0 then begin  (┆
0x0517a0…0517c0             2a 20 70 75 74 20 61 20 77 61 72 6e 69 6e 67 20 69 66 20 69 74 20 69 73 20 61 20 63 61 6c 6c 20   ┆* put a warning if it is a call ┆
0x0517c0…0517e0             6f 66 20 27 6d 6f 76 65 67 27 20 2a 29 0a 69 66 20 69 64 3d 27 6d 6f 76 65 67 27 20 74 68 65 6e   ┆of 'moveg' *) if id='moveg' then┆
0x0517e0…051800             20 65 72 72 6f 72 28 6d 6f 76 65 67 5f 77 61 72 6e 69 6e 67 29 3b 0a 0a 69 66 20 66 69 72 73 74   ┆ error(moveg_warning);  if first┆
0x051800…051820 (21, 1, 8)  77 6f 72 64 20 3c 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 74 65 78 74 20 6e 6f 74 20   ┆word < 0 then begin (* text not ┆
0x051820…051840             69 6e 20 63 68 61 72 62 75 66 2c 20 70 6f 73 69 74 69 6f 6e 20 74 68 65 20 6c 69 62 72 61 72 79   ┆in charbuf, position the library┆
0x051840…051860             2d 66 69 6c 65 20 2a 29 0a 69 66 20 28 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3d 20 2d 31 29   ┆-file *) if (file_position = -1)┆
0x051860…051880             20 6f 72 20 28 2d 66 69 72 73 74 77 6f 72 64 20 3c 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 29   ┆ or (-firstword < file_position)┆
0x051880…0518a0             20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 78 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a 3d 20 66 69   ┆ then begin extcode_fileix := fi┆
0x0518a0…0518c0             6c 72 65 63 5f 6d 61 78 3b 0a 28 2a 24 49 2d 2a 29 0a 72 65 73 65 74 28 65 78 74 5f 70 61 73 73   ┆lrec_max; (*$I-*) reset(ext_pass┆
0x0518c0…0518e0             35 29 3b 0a 69 66 20 69 6f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆5); if ioresult <> 0 then begin ┆
0x0518e0…051900             6e 6f 66 69 6c 65 28 63 6f 6e 63 61 74 28 72 74 70 33 35 5f 70 61 74 68 6e 61 6d 65 2c 20 69 5f   ┆nofile(concat(rtp35_pathname, i_┆
0x051900…051920             70 61 73 73 35 5f 65 78 74 6e 61 6d 65 29 29 3b 0a 65 6e 64 3b 0a 28 2a 24 49 2b 2a 29 0a 66 69   ┆pass5_extname)); end; (*$I+*) fi┆
0x051920…051940             6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 66 6f 72 20 69 20 3a 3d 20   ┆le_position := 0; end; for i := ┆
0x051940…051960             31 20 74 6f 20 2d 28 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 2b 20 66 69 72 73 74 77 6f 72 64   ┆1 to -(file_position + firstword┆
0x051960…051980             29 20 64 6f 20 65 78 74 69 6e 20 28 20 77 29 3b 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 0a   ┆) do extin ( w); end;  out_nl;  ┆
0x051980…0519a0             66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 77 6f 72 64 63 6f 75 6e 74 20 64 6f 0a 62 65 67 69 6e   ┆for i := 1 to wordcount do begin┆
0x0519a0…0519c0             0a 69 66 20 66 69 72 73 74 77 6f 72 64 20 3e 20 30 20 74 68 65 6e 0a 77 20 3a 3d 20 63 68 61 72   ┆ if firstword > 0 then w := char┆
0x0519c0…0519e0             62 75 66 20 5b 20 69 20 2b 20 66 69 72 73 74 77 6f 72 64 20 2d 20 31 20 5d 0a 65 6c 73 65 0a 65   ┆buf [ i + firstword - 1 ] else e┆
0x0519e0…051a00             78 74 69 6e 20 28 20 77 29 3b 0a 63 20 3a 3d 20 77 20 73 68 72 20 38 3b 20 20 69 66 20 63 20 3d   ┆xtin ( w); c := w shr 8;  if c =┆
0x051a00…051a20 (21, 1, 9)  20 31 30 20 74 68 65 6e 20 6f 75 74 5f 6e 6c 20 65 6c 73 65 20 6f 75 74 5f 63 68 61 72 20 28 63   ┆ 10 then out_nl else out_char (c┆
0x051a20…051a40             68 72 28 63 29 29 3b 0a 63 20 3a 3d 20 77 20 61 6e 64 20 32 35 35 3b 20 20 69 66 20 63 20 3d 20   ┆hr(c)); c := w and 255;  if c = ┆
0x051a40…051a60             31 30 20 74 68 65 6e 20 6f 75 74 5f 6e 6c 20 65 6c 73 65 20 6f 75 74 5f 63 68 61 72 20 28 63 68   ┆10 then out_nl else out_char (ch┆
0x051a60…051a80             72 28 63 29 29 3b 0a 65 6e 64 3b 0a 69 66 20 66 69 72 73 74 77 6f 72 64 20 3c 20 30 20 74 68 65   ┆r(c)); end; if firstword < 0 the┆
0x051a80…051aa0             6e 20 28 2a 20 75 70 64 61 74 65 20 66 69 6c 65 20 70 6f 73 69 74 69 6f 6e 20 2a 29 0a 66 69 6c   ┆n (* update file position *) fil┆
0x051aa0…051ac0             65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 2d 66 69 72 73 74 77 6f 72 64 20 2b 20 77 6f 72 64 63   ┆e_position := -firstword + wordc┆
0x051ac0…051ae0             6f 75 6e 74 3b 0a 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 65 78   ┆ount;  end; end; (* procedure ex┆
0x051ae0…051b00             74 5f 63 6f 70 79 5f 63 6f 64 65 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 78 74 5f 73   ┆t_copy_code *)   procedure ext_s┆
0x051b00…051b20             63 61 6e 3b 0a 63 6f 6e 73 74 0a 73 69 7a 65 5f 6f 66 5f 63 6f 64 65 64 65 73 63 72 20 3d 20 38   ┆can; const size_of_codedescr = 8┆
0x051b20…051b40             3b 20 28 2a 20 6e 6f 20 6f 66 20 77 6f 72 64 73 20 69 6e 20 64 65 73 63 72 2c 20 63 6f 6e 74 61   ┆; (* no of words in descr, conta┆
0x051b40…051b60             69 6e 69 6e 67 20 64 61 74 65 20 65 74 63 20 2a 29 0a 76 61 72 0a 69 2c 20 6a 2c 20 63 6f 64 65   ┆ining date etc *) var i, j, code┆
0x051b60…051b80             77 6f 72 64 73 2c 20 73 6b 69 70 77 6f 72 64 73 2c 20 63 6f 64 65 70 6f 73 2c 0a 64 65 73 63 72   ┆words, skipwords, codepos, descr┆
0x051b80…051ba0             5f 6c 65 6e 67 74 68 2c 20 6e 6f 5f 6f 66 5f 70 61 67 65 73 2c 20 73 69 7a 65 5f 6f 66 5f 70 61   ┆_length, no_of_pages, size_of_pa┆
0x051ba0…051bc0             67 65 2c 20 62 79 74 65 73 5f 6f 6e 5f 6c 61 73 74 5f 70 61 67 65 2c 20 6b 69 6e 64 5f 6f 66 5f   ┆ge, bytes_on_last_page, kind_of_┆
0x051bc0…051be0             6f 62 6a 2c 0a 61 70 70 2c 20 70 6e 6f 2c 20 6e 65 78 74 5f 77 6f 72 64 2c 0a 63 75 72 6b 65 79   ┆obj, app, pno, next_word, curkey┆
0x051be0…051c00             2c 20 70 72 65 76 6b 65 79 20 3a 20 69 6e 74 65 67 65 72 3b 0a 69 64 65 6e 74 20 3a 20 69 64 65   ┆, prevkey : integer; ident : ide┆
0x051c00…051c20 (21, 1, 10) 6e 74 69 66 69 65 72 3b 0a 70 61 72 61 6d 74 61 62 20 3a 20 61 72 72 61 79 20 5b 20 31 20 2e 2e   ┆ntifier; paramtab : array [ 1 ..┆
0x051c20…051c40             20 64 65 73 63 72 5f 6d 61 78 5f 70 61 72 61 6d 20 5d 20 6f 66 20 70 61 72 61 6d 5f 64 65 73 63   ┆ descr_max_param ] of param_desc┆
0x051c40…051c60             72 3b 0a 66 6f 75 6e 64 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 70 61 72 61 6d 5f 70 3a 20 70 61 72   ┆r; found : boolean; param_p: par┆
0x051c60…051c80             61 6d 5f 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 65 78 74 63 6f 64 65 5f 66 69 6c 65 69 78 20 3a   ┆am_ptr;  begin  extcode_fileix :┆
0x051c80…051ca0             3d 20 66 69 6c 72 65 63 5f 6d 61 78 3b 0a 28 2a 24 49 2d 2a 29 0a 72 65 73 65 74 28 65 78 74 5f   ┆= filrec_max; (*$I-*) reset(ext_┆
0x051ca0…051cc0             70 61 73 73 35 29 3b 0a 69 66 20 69 6f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 62 65   ┆pass5); if ioresult <> 0 then be┆
0x051cc0…051ce0             67 69 6e 0a 6e 6f 66 69 6c 65 28 63 6f 6e 63 61 74 28 72 74 70 33 35 5f 70 61 74 68 6e 61 6d 65   ┆gin nofile(concat(rtp35_pathname┆
0x051ce0…051d00             2c 20 69 5f 70 61 73 73 35 5f 65 78 74 6e 61 6d 65 29 29 3b 0a 65 6e 64 3b 0a 28 2a 24 49 2b 2a   ┆, i_pass5_extname)); end; (*$I+*┆
0x051d00…051d20             29 0a 65 78 74 69 6e 28 6e 65 78 74 5f 77 6f 72 64 29 3b 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f   ┆) extin(next_word); file_positio┆
0x051d20…051d40             6e 20 3a 3d 20 30 3b 0a 0a 77 69 74 68 20 65 78 74 5f 6f 70 65 6e 5f 63 6f 64 65 73 20 64 6f 0a   ┆n := 0;  with ext_open_codes do ┆
0x051d40…051d60             77 68 69 6c 65 20 28 6e 6f 74 20 65 6f 66 5f 65 78 74 5f 70 61 73 73 35 29 20 61 6e 64 20 28 6e   ┆while (not eof_ext_pass5) and (n┆
0x051d60…051d80             65 78 74 5f 77 6f 72 64 20 3e 20 30 29 20 61 6e 64 20 28 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 20   ┆ext_word > 0) and (not_resolved ┆
0x051d80…051da0             3e 20 30 29 20 64 6f 0a 62 65 67 69 6e 0a 64 65 73 63 72 5f 6c 65 6e 67 74 68 20 3a 3d 20 6e 65   ┆> 0) do begin descr_length := ne┆
0x051da0…051dc0             78 74 5f 77 6f 72 64 3b 0a 65 78 74 69 6e 28 6e 6f 5f 6f 66 5f 70 61 67 65 73 29 3b 0a 65 78 74   ┆xt_word; extin(no_of_pages); ext┆
0x051dc0…051de0             69 6e 28 73 69 7a 65 5f 6f 66 5f 70 61 67 65 29 3b 0a 65 78 74 69 6e 28 62 79 74 65 73 5f 6f 6e   ┆in(size_of_page); extin(bytes_on┆
0x051de0…051e00             5f 6c 61 73 74 5f 70 61 67 65 29 3b 0a 65 78 74 69 6e 28 6b 69 6e 64 5f 6f 66 5f 6f 62 6a 29 3b   ┆_last_page); extin(kind_of_obj);┆
0x051e00…051e20 (21, 1, 11) 0a 0a 28 2a 20 72 65 61 64 20 6e 61 6d 65 20 2a 29 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20   ┆  (* read name *) for i := 1 to ┆
0x051e20…051e40             36 20 64 6f 0a 62 65 67 69 6e 0a 65 78 74 69 6e 20 28 61 70 70 29 3b 0a 69 64 65 6e 74 20 5b 20   ┆6 do begin extin (app); ident [ ┆
0x051e40…051e60             69 2a 32 2d 31 20 5d 20 3a 3d 20 63 68 72 20 28 61 70 70 20 64 69 76 20 32 35 36 29 3b 0a 69 64   ┆i*2-1 ] := chr (app div 256); id┆
0x051e60…051e80             65 6e 74 20 5b 20 69 2a 32 20 20 20 5d 20 3a 3d 20 63 68 72 20 28 61 70 70 20 6d 6f 64 20 32 35   ┆ent [ i*2   ] := chr (app mod 25┆
0x051e80…051ea0             36 29 3b 0a 65 6e 64 3b 0a 66 6f 72 20 69 20 3a 3d 20 31 33 20 74 6f 20 63 5f 73 69 7a 65 5f 69   ┆6); end; for i := 13 to c_size_i┆
0x051ea0…051ec0             64 65 6e 74 69 66 69 65 72 20 64 6f 20 69 64 65 6e 74 20 5b 20 69 20 5d 20 3a 3d 20 27 20 27 3b   ┆dentifier do ident [ i ] := ' ';┆
0x051ec0…051ee0             0a 0a 28 2a 20 73 6b 69 70 20 65 6e 74 72 79 20 70 6f 69 6e 74 73 20 65 74 63 20 2a 29 0a 66 6f   ┆  (* skip entry points etc *) fo┆
0x051ee0…051f00             72 20 69 20 3a 3d 20 31 20 74 6f 20 35 20 64 6f 20 65 78 74 69 6e 20 28 6e 65 78 74 5f 77 6f 72   ┆r i := 1 to 5 do extin (next_wor┆
0x051f00…051f20             64 29 3b 0a 28 2a 72 65 61 64 20 6c 61 73 74 20 70 61 72 61 6d 20 6f 66 66 73 65 74 2a 29 0a 65   ┆d); (*read last param offset*) e┆
0x051f20…051f40             78 74 69 6e 20 28 61 70 70 29 3b 0a 0a 28 2a 73 6b 69 70 20 74 68 65 20 66 72 65 65 20 77 6f 72   ┆xtin (app);  (*skip the free wor┆
0x051f40…051f60             64 73 2a 29 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 64 65 73 63 72 5f 66 72 65 65 5f 77 6f   ┆ds*) for i := 1 to descr_free_wo┆
0x051f60…051f80             72 64 73 20 64 6f 20 65 78 74 69 6e 28 6e 65 78 74 5f 77 6f 72 64 29 3b 0a 0a 28 2a 72 65 61 64   ┆rds do extin(next_word);  (*read┆
0x051f80…051fa0             20 6e 75 6d 62 65 72 20 6f 66 20 70 61 72 61 6d 73 20 2a 29 0a 65 78 74 69 6e 28 70 6e 6f 29 3b   ┆ number of params *) extin(pno);┆
0x051fa0…051fc0             0a 69 66 20 70 6e 6f 20 3e 20 64 65 73 63 72 5f 6d 61 78 5f 70 61 72 61 6d 20 74 68 65 6e 20 65   ┆ if pno > descr_max_param then e┆
0x051fc0…051fe0             72 72 6f 72 20 28 65 78 74 5f 70 61 72 61 6d 5f 6e 75 6d 62 65 72 29 3b 0a 66 6f 72 20 69 20 3a   ┆rror (ext_param_number); for i :┆
0x051fe0…052000             3d 20 31 20 74 6f 20 70 6e 6f 20 64 6f 0a 77 69 74 68 20 70 61 72 61 6d 74 61 62 5b 20 69 20 5d   ┆= 1 to pno do with paramtab[ i ]┆
0x052000…052020 (21, 1, 12) 20 64 6f 0a 62 65 67 69 6e 0a 65 78 74 69 6e 20 28 6b 69 6e 64 29 3b 0a 65 78 74 69 6e 20 28 73   ┆ do begin extin (kind); extin (s┆
0x052020…052040             69 7a 65 29 3b 0a 65 6e 64 3b 0a 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 64 65 73   ┆ize); end;  file_position := des┆
0x052040…052060             63 72 5f 6c 65 6e 67 74 68 20 64 69 76 20 32 20 2b 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 3b   ┆cr_length div 2 + file_position;┆
0x052060…052080             0a 63 6f 64 65 77 6f 72 64 73 20 3a 3d 20 28 28 6e 6f 5f 6f 66 5f 70 61 67 65 73 20 2d 20 31 29   ┆ codewords := ((no_of_pages - 1)┆
0x052080…0520a0             20 2a 20 73 69 7a 65 5f 6f 66 5f 70 61 67 65 20 2b 20 62 79 74 65 73 5f 6f 6e 5f 6c 61 73 74 5f   ┆ * size_of_page + bytes_on_last_┆
0x0520a0…0520c0             70 61 67 65 20 2b 20 31 29 20 64 69 76 20 32 3b 0a 73 6b 69 70 77 6f 72 64 73 20 3a 3d 20 63 6f   ┆page + 1) div 2; skipwords := co┆
0x0520c0…0520e0             64 65 77 6f 72 64 73 3b 0a 0a 69 66 20 28 6b 69 6e 64 5f 6f 66 5f 6f 62 6a 20 3d 20 34 29 20 6f   ┆dewords;  if (kind_of_obj = 4) o┆
0x0520e0…052100             72 20 28 6b 69 6e 64 5f 6f 66 5f 6f 62 6a 20 3d 20 35 29 20 74 68 65 6e 0a 62 65 67 69 6e 20 28   ┆r (kind_of_obj = 5) then begin (┆
0x052100…052120             2a 20 6f 70 65 6e 20 72 6f 75 74 69 6e 65 20 69 6e 20 6c 69 62 72 61 72 79 20 2a 29 0a 0a 66 6f   ┆* open routine in library *)  fo┆
0x052120…052140             72 20 69 20 3a 3d 20 31 20 74 6f 20 73 69 7a 65 5f 6f 66 5f 63 6f 64 65 64 65 73 63 72 20 64 6f   ┆r i := 1 to size_of_codedescr do┆
0x052140…052160             0a 62 65 67 69 6e 0a 65 78 74 69 6e 20 28 6e 65 78 74 5f 77 6f 72 64 29 3b 20 28 2a 20 73 6b 69   ┆ begin extin (next_word); (* ski┆
0x052160…052180             70 20 64 61 74 65 20 65 74 63 20 2a 29 0a 73 6b 69 70 77 6f 72 64 73 20 3a 3d 20 73 6b 69 70 77   ┆p date etc *) skipwords := skipw┆
0x052180…0521a0             6f 72 64 73 20 2d 20 31 3b 0a 63 6f 64 65 77 6f 72 64 73 20 3a 3d 20 63 6f 64 65 77 6f 72 64 73   ┆ords - 1; codewords := codewords┆
0x0521a0…0521c0             20 2d 20 31 3b 0a 65 6e 64 3b 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65   ┆ - 1; end; file_position := file┆
0x0521c0…0521e0             5f 70 6f 73 69 74 69 6f 6e 20 2b 20 73 69 7a 65 5f 6f 66 5f 63 6f 64 65 64 65 73 63 72 3b 0a 0a   ┆_position + size_of_codedescr;  ┆
0x0521e0…052200             0a 63 75 72 6b 65 79 20 3a 3d 20 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 3b 0a 70 72 65 76 6b 65 79   ┆ curkey := not_resolved; prevkey┆
0x052200…052220 (21, 1, 13) 20 3a 3d 20 2d 31 3b 0a 63 6f 64 65 70 6f 73 20 3a 3d 20 2d 20 66 69 6c 65 5f 70 6f 73 69 74 69   ┆ := -1; codepos := - file_positi┆
0x052220…052240             6f 6e 3b 0a 0a 72 65 70 65 61 74 0a 77 69 74 68 20 65 78 74 5f 74 61 62 20 5b 20 63 75 72 6b 65   ┆on;  repeat with ext_tab [ curke┆
0x052240…052260             79 20 5d 20 64 6f 0a 62 65 67 69 6e 0a 28 2a 20 74 6f 74 61 6c 20 6d 61 74 63 68 20 69 73 3a 20   ┆y ] do begin (* total match is: ┆
0x052260…052280             73 61 6d 65 20 6e 61 6d 65 20 61 6e 64 20 70 61 72 61 6d 6c 69 73 74 20 2a 29 0a 69 66 20 6e 6f   ┆same name and paramlist *) if no┆
0x052280…0522a0             5f 6f 66 5f 70 61 72 61 6d 20 3d 20 70 6e 6f 20 74 68 65 6e 0a 69 66 20 69 64 20 20 20 20 20 20   ┆_of_param = pno then if id      ┆
0x0522a0…0522c0             20 20 3d 20 69 64 65 6e 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 66 6f 75 6e 64 20 3a 3d 20 74 72   ┆  = ident then begin found := tr┆
0x0522c0…0522e0             75 65 3b 20 20 28 2a 20 61 73 73 75 6d 65 20 73 61 6d 65 20 70 61 72 61 6d 2d 64 65 73 63 72 20   ┆ue;  (* assume same param-descr ┆
0x0522e0…052300             2a 29 0a 70 61 72 61 6d 5f 70 3a 3d 20 70 61 72 61 6d 70 74 72 3b 0a 66 6f 72 20 69 20 3a 3d 20   ┆*) param_p:= paramptr; for i := ┆
0x052300…052320             31 20 74 6f 20 70 6e 6f 20 64 6f 0a 77 69 74 68 20 70 61 72 61 6d 74 61 62 5b 20 69 20 5d 20 64   ┆1 to pno do with paramtab[ i ] d┆
0x052320…052340             6f 0a 62 65 67 69 6e 0a 69 66 20 28 70 61 72 61 6d 5f 70 5e 2e 6b 69 6e 64 3c 3e 6b 69 6e 64 29   ┆o begin if (param_p^.kind<>kind)┆
0x052340…052360             20 6f 72 20 28 70 61 72 61 6d 5f 70 5e 2e 73 69 7a 65 3c 3e 73 69 7a 65 29 20 74 68 65 6e 0a 66   ┆ or (param_p^.size<>size) then f┆
0x052360…052380             6f 75 6e 64 3a 3d 20 66 61 6c 73 65 3b 0a 70 61 72 61 6d 5f 70 3a 3d 20 70 61 72 61 6d 5f 70 5e   ┆ound:= false; param_p:= param_p^┆
0x052380…0523a0             2e 6e 65 78 74 5f 70 61 72 61 6d 3b 0a 65 6e 64 3b 0a 69 66 20 66 6f 75 6e 64 20 74 68 65 6e 0a   ┆.next_param; end; if found then ┆
0x0523a0…0523c0             62 65 67 69 6e 0a 73 74 61 74 65 20 3a 3d 20 65 78 74 5f 6f 70 65 6e 3b 0a 61 70 70 65 74 69 74   ┆begin state := ext_open; appetit┆
0x0523c0…0523e0             65 20 3a 3d 20 61 70 70 3b 0a 77 6f 72 64 63 6f 75 6e 74 20 3a 3d 20 63 6f 64 65 77 6f 72 64 73   ┆e := app; wordcount := codewords┆
0x0523e0…052400             3b 0a 0a 69 66 20 70 72 65 76 6b 65 79 20 3d 20 2d 31 20 74 68 65 6e 0a 6e 6f 74 5f 72 65 73 6f   ┆;  if prevkey = -1 then not_reso┆
0x052400…052420 (21, 1, 14) 6c 76 65 64 20 3a 3d 20 64 65 63 6c 5f 6c 69 6e 6b 0a 65 6c 73 65 0a 65 78 74 5f 74 61 62 20 5b   ┆lved := decl_link else ext_tab [┆
0x052420…052440             20 70 72 65 76 6b 65 79 20 5d 20 2e 20 64 65 63 6c 5f 6c 69 6e 6b 20 3a 3d 20 64 65 63 6c 5f 6c   ┆ prevkey ] . decl_link := decl_l┆
0x052440…052460             69 6e 6b 3b 0a 63 75 72 6b 65 79 20 3a 3d 20 70 72 65 76 6b 65 79 3b 0a 0a 69 66 20 73 6b 69 70   ┆ink; curkey := prevkey;  if skip┆
0x052460…052480             77 6f 72 64 73 20 3e 20 30 20 74 68 65 6e 0a 69 66 20 73 6b 69 70 77 6f 72 64 73 20 3c 3d 20 65   ┆words > 0 then if skipwords <= e┆
0x052480…0524a0             78 74 5f 6d 61 78 5f 72 6f 75 74 69 6e 65 20 74 68 65 6e 0a 28 2a 20 72 6f 75 74 69 6e 65 20 69   ┆xt_max_routine then (* routine i┆
0x0524a0…0524c0             73 20 6e 6f 74 20 74 6f 6f 20 6c 61 72 67 65 20 2a 29 0a 69 66 20 63 75 72 5f 77 6f 72 64 5f 70   ┆s not too large *) if cur_word_p┆
0x0524c0…0524e0             74 72 20 2b 20 73 6b 69 70 77 6f 72 64 73 20 3c 3d 20 65 78 74 5f 6d 61 78 5f 63 68 61 72 62 75   ┆tr + skipwords <= ext_max_charbu┆
0x0524e0…052500             66 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 74 68 65 72 65 20 69 73 20 72 6f 6f 6d 20 69 6e   ┆f then begin (* there is room in┆
0x052500…052520             20 63 68 61 72 62 75 66 20 2a 29 0a 63 6f 64 65 70 6f 73 20 3a 3d 20 63 75 72 5f 77 6f 72 64 5f   ┆ charbuf *) codepos := cur_word_┆
0x052520…052540             70 74 72 3b 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 73 6b 69 70 77 6f 72 64 73 20 64 6f 0a   ┆ptr; for i := 1 to skipwords do ┆
0x052540…052560             65 78 74 69 6e 20 28 63 68 61 72 62 75 66 20 5b 20 69 20 2b 20 63 6f 64 65 70 6f 73 20 2d 20 31   ┆extin (charbuf [ i + codepos - 1┆
0x052560…052580             20 5d 29 3b 0a 63 75 72 5f 77 6f 72 64 5f 70 74 72 20 3a 3d 20 63 75 72 5f 77 6f 72 64 5f 70 74   ┆ ]); cur_word_ptr := cur_word_pt┆
0x052580…0525a0             72 20 2b 20 73 6b 69 70 77 6f 72 64 73 3b 0a 73 6b 69 70 77 6f 72 64 73 20 3a 3d 20 30 3b 0a 65   ┆r + skipwords; skipwords := 0; e┆
0x0525a0…0525c0             6e 64 3b 0a 0a 66 69 72 73 74 77 6f 72 64 20 3a 3d 20 63 6f 64 65 70 6f 73 3b 0a 65 6e 64 3b 0a   ┆nd;  firstword := codepos; end; ┆
0x0525c0…0525e0             65 6e 64 3b 0a 70 72 65 76 6b 65 79 20 3a 3d 20 63 75 72 6b 65 79 3b 0a 63 75 72 6b 65 79 20 3a   ┆end; prevkey := curkey; curkey :┆
0x0525e0…052600             3d 20 64 65 63 6c 5f 6c 69 6e 6b 3b 0a 65 6e 64 3b 0a 75 6e 74 69 6c 20 63 75 72 6b 65 79 20 3c   ┆= decl_link; end; until curkey <┆
0x052600…052620 (21, 1, 15) 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 73 6b 69 70 20 61 6e 79 20 72 65 6d 61 69 6e 69 6e 67   ┆= 0; end;  (* skip any remaining┆
0x052620…052640             20 70 61 72 74 20 6f 66 20 63 6f 64 65 2d 62 6f 64 79 20 2a 29 0a 66 6f 72 20 69 20 3a 3d 20 31   ┆ part of code-body *) for i := 1┆
0x052640…052660             20 74 6f 20 73 6b 69 70 77 6f 72 64 73 20 64 6f 20 65 78 74 69 6e 28 6e 65 78 74 5f 77 6f 72 64   ┆ to skipwords do extin(next_word┆
0x052660…052680             29 3b 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f   ┆); file_position := file_positio┆
0x052680…0526a0             6e 20 2b 20 63 6f 64 65 77 6f 72 64 73 3b 0a 28 2a 20 73 6b 69 70 20 65 78 74 65 72 6e 61 6c 20   ┆n + codewords; (* skip external ┆
0x0526a0…0526c0             6c 69 6e 6b 20 70 61 72 74 20 2a 29 0a 65 78 74 69 6e 20 28 70 6e 6f 29 3b 0a 66 69 6c 65 5f 70   ┆link part *) extin (pno); file_p┆
0x0526c0…0526e0             6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 2b 20 31 3b 0a 66 6f   ┆osition := file_position + 1; fo┆
0x0526e0…052700             72 20 69 20 3a 3d 20 31 20 74 6f 20 70 6e 6f 20 64 6f 0a 62 65 67 69 6e 0a 28 2a 20 73 6b 69 70   ┆r i := 1 to pno do begin (* skip┆
0x052700…052720             20 65 78 74 65 72 6e 61 6c 20 6e 61 6d 65 20 2a 29 0a 66 6f 72 20 6a 20 3a 3d 20 31 20 74 6f 20   ┆ external name *) for j := 1 to ┆
0x052720…052740             36 20 64 6f 20 65 78 74 69 6e 20 28 6e 65 78 74 5f 77 6f 72 64 29 3b 0a 66 69 6c 65 5f 70 6f 73   ┆6 do extin (next_word); file_pos┆
0x052740…052760             69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 2b 20 36 3b 0a 28 2a 20 73   ┆ition := file_position + 6; (* s┆
0x052760…052780             6b 69 70 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29 0a 65 78 74 69 6e 20 28 6a 29 3b   ┆kip parameter list *) extin (j);┆
0x052780…0527a0             20 28 2a 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 72 61 6d 73 20 2a 29 0a 66 69 6c 65 5f 70 6f 73   ┆ (* number of params *) file_pos┆
0x0527a0…0527c0             69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 2b 20 32 2a 6a 20 2b 20 31   ┆ition := file_position + 2*j + 1┆
0x0527c0…0527e0             3b 0a 66 6f 72 20 6a 20 3a 3d 20 32 2a 6a 20 64 6f 77 6e 74 6f 20 31 20 64 6f 20 65 78 74 69 6e   ┆; for j := 2*j downto 1 do extin┆
0x0527e0…052800             20 28 6e 65 78 74 5f 77 6f 72 64 29 3b 0a 28 2a 20 73 6b 69 70 20 6e 75 6d 62 65 72 20 6f 66 20   ┆ (next_word); (* skip number of ┆
0x052800…052820 (22, 0, 1)  75 73 65 73 20 2a 29 0a 65 78 74 69 6e 20 28 6e 65 78 74 5f 77 6f 72 64 29 3b 0a 66 69 6c 65 5f   ┆uses *) extin (next_word); file_┆
0x052820…052840             70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 2b 20 31 3b 0a 65   ┆position := file_position + 1; e┆
0x052840…052860             6e 64 3b 0a 28 2a 20 73 6b 69 70 20 69 6e 74 65 72 6e 61 6c 20 6c 69 6e 6b 20 70 61 72 74 20 2a   ┆nd; (* skip internal link part *┆
0x052860…052880             29 0a 65 78 74 69 6e 20 28 70 6e 6f 29 3b 0a 70 6e 6f 20 3a 3d 20 70 6e 6f 20 2a 20 34 3b 20 28   ┆) extin (pno); pno := pno * 4; (┆
0x052880…0528a0             2a 20 66 6f 75 72 20 77 6f 72 64 73 20 70 65 72 20 65 6e 74 72 79 20 2a 29 0a 66 6f 72 20 69 20   ┆* four words per entry *) for i ┆
0x0528a0…0528c0             3a 3d 20 31 20 74 6f 20 70 6e 6f 20 64 6f 20 65 78 74 69 6e 20 28 6e 65 78 74 5f 77 6f 72 64 29   ┆:= 1 to pno do extin (next_word)┆
0x0528c0…0528e0             3b 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e   ┆; file_position := file_position┆
0x0528e0…052900             20 2b 20 70 6e 6f 20 2b 20 31 3b 0a 0a 28 2a 20 6e 6f 77 20 74 68 65 20 6c 69 62 72 61 72 79 66   ┆ + pno + 1;  (* now the libraryf┆
0x052900…052920             69 6c 65 20 69 73 20 70 6f 73 69 74 69 6f 6e 65 64 20 61 74 20 73 74 61 72 74 20 6f 66 20 6e 65   ┆ile is positioned at start of ne┆
0x052920…052940             78 74 20 65 6e 74 72 79 20 2a 29 0a 65 78 74 69 6e 28 6e 65 78 74 5f 77 6f 72 64 29 3b 0a 65 6e   ┆xt entry *) extin(next_word); en┆
0x052940…052960             64 3b 20 28 2a 20 73 63 61 6e 20 6f 66 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 2a 29 0a 0a 28   ┆d; (* scan of library file *)  (┆
0x052960…052980             2a 20 63 6c 61 73 73 69 66 79 20 61 6c 6c 20 72 65 6d 61 69 6e 69 6e 67 20 65 78 74 5f 64 65 63   ┆* classify all remaining ext_dec┆
0x052980…0529a0             6c 61 72 65 64 20 61 73 20 63 6c 6f 73 65 64 2d 72 6f 75 74 69 6e 65 73 20 2a 29 0a 77 68 69 6c   ┆lared as closed-routines *) whil┆
0x0529a0…0529c0             65 20 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 20 3e 20 30 20 64 6f 0a 77 69 74 68 20 65 78 74 5f 74   ┆e not_resolved > 0 do with ext_t┆
0x0529c0…0529e0             61 62 20 5b 20 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 20 5d 20 64 6f 0a 62 65 67 69 6e 0a 73 74 61   ┆ab [ not_resolved ] do begin sta┆
0x0529e0…052a00             74 65 20 3a 3d 20 65 78 74 5f 63 6c 6f 73 65 64 3b 0a 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 20 3a   ┆te := ext_closed; not_resolved :┆
0x052a00…052a20 (22, 0, 2)  3d 20 64 65 63 6c 5f 6c 69 6e 6b 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65   ┆= decl_link; end;  end; (* proce┆
0x052a20…052a40             64 75 72 65 20 65 78 74 73 63 61 6e 20 2a 29 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 67 65 74 6b 69   ┆dure extscan *)   function getki┆
0x052a40…052a60             6e 64 20 28 6b 65 79 3a 20 69 6e 74 65 67 65 72 29 20 3a 20 63 61 6c 6c 6d 6f 64 65 73 3b 0a 62   ┆nd (key: integer) : callmodes; b┆
0x052a60…052a80             65 67 69 6e 0a 77 69 74 68 20 65 78 74 5f 74 61 62 20 5b 20 6b 65 79 20 5d 20 64 6f 0a 62 65 67   ┆egin with ext_tab [ key ] do beg┆
0x052a80…052aa0             69 6e 0a 69 66 20 73 74 61 74 65 20 3d 20 65 78 74 5f 64 65 63 6c 61 72 65 64 20 74 68 65 6e 20   ┆in if state = ext_declared then ┆
0x052aa0…052ac0             65 78 74 5f 73 63 61 6e 3b 0a 69 66 20 73 74 61 74 65 20 3d 20 65 78 74 5f 6f 70 65 6e 20 74 68   ┆ext_scan; if state = ext_open th┆
0x052ac0…052ae0             65 6e 0a 67 65 74 6b 69 6e 64 20 3a 3d 20 6f 70 65 6e 5f 63 61 6c 6c 0a 65 6c 73 65 0a 67 65 74   ┆en getkind := open_call else get┆
0x052ae0…052b00             6b 69 6e 64 20 3a 3d 20 65 78 74 5f 63 61 6c 6c 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 70   ┆kind := ext_call; end; end; (* p┆
0x052b00…052b20             72 6f 63 65 64 75 72 65 20 67 65 74 6b 69 6e 64 20 2a 29 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 65   ┆rocedure getkind *)   function e┆
0x052b20…052b40             78 74 5f 6c 6f 6f 6b 75 70 20 28 76 61 72 20 6b 65 79 3a 20 69 6e 74 65 67 65 72 3b 20 6c 6f 6f   ┆xt_lookup (var key: integer; loo┆
0x052b40…052b60             6b 5f 69 64 3a 20 69 64 65 6e 74 69 66 69 65 72 29 20 3a 20 63 61 6c 6c 6d 6f 64 65 73 3b 0a 76   ┆k_id: identifier) : callmodes; v┆
0x052b60…052b80             61 72 0a 69 20 3a 20 69 6e 74 65 67 65 72 3b 0a 66 6f 75 6e 64 20 3a 20 62 6f 6f 6c 65 61 6e 3b   ┆ar i : integer; found : boolean;┆
0x052b80…052ba0             0a 62 65 67 69 6e 0a 69 20 3a 3d 20 31 3b 0a 66 6f 75 6e 64 20 3a 3d 20 66 61 6c 73 65 3b 0a 72   ┆ begin i := 1; found := false; r┆
0x052ba0…052bc0             65 70 65 61 74 0a 77 69 74 68 20 65 78 74 5f 74 61 62 20 5b 20 69 20 5d 20 64 6f 0a 69 66 20 73   ┆epeat with ext_tab [ i ] do if s┆
0x052bc0…052be0             74 61 74 65 20 3d 20 65 78 74 5f 75 6e 75 73 65 64 20 74 68 65 6e 0a 69 20 3a 3d 20 65 78 74 5f   ┆tate = ext_unused then i := ext_┆
0x052be0…052c00             74 61 62 5f 6d 61 78 20 2b 20 31 0a 65 6c 73 65 0a 69 66 20 69 64 20 3d 20 6c 6f 6f 6b 5f 69 64   ┆tab_max + 1 else if id = look_id┆
0x052c00…052c20 (22, 0, 3)  20 74 68 65 6e 20 66 6f 75 6e 64 20 3a 3d 20 74 72 75 65 0a 65 6c 73 65 0a 69 20 3a 3d 20 69 20   ┆ then found := true else i := i ┆
0x052c20…052c40             2b 20 31 3b 0a 75 6e 74 69 6c 20 66 6f 75 6e 64 20 6f 72 20 28 69 20 3e 20 65 78 74 5f 74 61 62   ┆+ 1; until found or (i > ext_tab┆
0x052c40…052c60             5f 6d 61 78 29 3b 0a 69 66 20 6e 6f 74 20 66 6f 75 6e 64 20 74 68 65 6e 20 65 72 72 6f 72 20 28   ┆_max); if not found then error (┆
0x052c60…052c80             63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 6b 65 79 20 3a 3d 20 69 3b 0a 65 78 74 5f 6c   ┆compiler_error); key := i; ext_l┆
0x052c80…052ca0             6f 6f 6b 75 70 20 3a 3d 20 67 65 74 6b 69 6e 64 20 28 69 29 3b 0a 65 6e 64 3b 20 28 2a 20 70 72   ┆ookup := getkind (i); end; (* pr┆
0x052ca0…052cc0             6f 63 65 64 75 72 65 20 67 65 74 6b 69 6e 64 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20   ┆ocedure getkind *)   procedure  ┆
0x052cc0…052ce0             64 65 73 63 72 5f 65 6e 64 3b 0a 0a 76 61 72 0a 69 2c 20 6a 2c 20 6e 6f 5f 6f 66 5f 65 6e 74 72   ┆descr_end;  var i, j, no_of_entr┆
0x052ce0…052d00             69 65 73 20 3a 20 69 6e 74 65 67 65 72 3b 0a 70 61 72 61 6d 5f 70 3a 20 70 61 72 61 6d 5f 70 74   ┆ies : integer; param_p: param_pt┆
0x052d00…052d20             72 3b 0a 0a 62 65 67 69 6e 0a 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 27   ┆r;  begin  writeln (out_pass5, '┆
0x052d20…052d40             64 2e 27 29 3b 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 64 65 73 63 72 2e   ┆d.'); writeln (out_pass5, descr.┆
0x052d40…052d60             6e 61 6d 65 29 3b 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 64 65 73 63 72   ┆name); writeln (out_pass5, descr┆
0x052d60…052d80             2e 6b 69 6e 64 29 3b 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 29 3b 0a 28 2a 20   ┆.kind); writeln (out_pass5); (* ┆
0x052d80…052da0             69 66 20 69 74 20 69 73 20 61 20 63 6c 6f 73 65 64 20 72 6f 75 74 69 6e 65 20 74 68 65 20 65 6e   ┆if it is a closed routine the en┆
0x052da0…052dc0             74 72 79 70 6f 69 6e 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20 69 6e 73 74 72 75 63 74 69   ┆trypoint is the second instructi┆
0x052dc0…052de0             6f 6e 2e 20 54 68 69 73 20 69 73 20 2a 29 0a 28 2a 68 61 6e 64 65 6c 74 20 62 79 20 61 64 64 69   ┆on. This is *) (*handelt by addi┆
0x052de0…052e00             6e 67 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 69 6e 73 74 72   ┆ng the length of the first instr┆
0x052e00…052e20 (22, 0, 4)  75 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 73 79 6d 62 6f 6c 69 63 20 2a 29 0a 28 2a 20 76 61 6c   ┆uction to the symbolic *) (* val┆
0x052e20…052e40             75 65 20 3a 20 65 6e 74 72 79 5f 70 6f 69 6e 74 20 2a 29 0a 69 66 20 28 64 65 73 63 72 2e 6b 69   ┆ue : entry_point *) if (descr.ki┆
0x052e40…052e60             6e 64 20 3d 20 31 28 2a 70 72 6f 63 65 73 73 2a 29 29 20 6f 72 0a 20 28 64 65 73 63 72 2e 6b 69   ┆nd = 1(*process*)) or  (descr.ki┆
0x052e60…052e80             6e 64 20 3d 20 20 32 28 2a 70 72 6f 63 65 64 75 72 65 2a 29 29 20 6f 72 20 28 64 65 73 63 72 2e   ┆nd =  2(*procedure*)) or (descr.┆
0x052e80…052ea0             6b 69 6e 64 20 3d 20 33 28 2a 66 75 6e 63 74 69 6f 6e 2a 29 29 20 74 68 65 6e 0a 77 72 69 74 65   ┆kind = 3(*function*)) then write┆
0x052ea0…052ec0             6c 6e 28 6f 75 74 5f 70 61 73 73 35 2c 64 65 73 63 72 2e 65 6e 74 72 79 5f 70 6f 69 6e 74 2c 20   ┆ln(out_pass5,descr.entry_point, ┆
0x052ec0…052ee0             27 2b 27 2c 20 6a 75 6d 70 5f 61 63 72 6f 73 73 5f 66 69 72 73 74 29 0a 65 6c 73 65 20 20 28 2a   ┆'+', jump_across_first) else  (*┆
0x052ee0…052f00             6f 70 65 6e 20 72 6f 75 74 69 6e 65 20 3d 20 20 34 20 6f 72 20 35 2a 29 0a 77 72 69 74 65 6c 6e   ┆open routine =  4 or 5*) writeln┆
0x052f00…052f20             28 6f 75 74 5f 70 61 73 73 35 2c 64 65 73 63 72 2e 65 6e 74 72 79 5f 70 6f 69 6e 74 29 3b 0a 77   ┆(out_pass5,descr.entry_point); w┆
0x052f20…052f40             72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 64 65 73 63 72 2e 65 78 63 65 70 74 69   ┆riteln (out_pass5, descr.excepti┆
0x052f40…052f60             6f 6e 5f 70 6f 69 6e 74 29 3b 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 29 3b 0a   ┆on_point); writeln (out_pass5); ┆
0x052f60…052f80             69 66 20 65 6e 66 6f 72 63 65 64 5f 63 72 65 61 74 65 5f 73 69 7a 65 20 3c 3e 20 30 20 74 68 65   ┆if enforced_create_size <> 0 the┆
0x052f80…052fa0             6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 65 6e 66 6f   ┆n begin writeln (out_pass5, enfo┆
0x052fa0…052fc0             72 63 65 64 5f 63 72 65 61 74 65 5f 73 69 7a 65 29 3b 0a 69 66 20 64 65 73 63 72 2e 6b 69 6e 64   ┆rced_create_size); if descr.kind┆
0x052fc0…052fe0             20 3d 20 31 20 28 2a 20 70 72 6f 63 65 73 73 20 2a 29 20 74 68 65 6e 0a 65 6e 66 6f 72 63 65 64   ┆ = 1 (* process *) then enforced┆
0x052fe0…053000             5f 63 72 65 61 74 65 5f 73 69 7a 65 20 3a 3d 20 30 3b 0a 65 6e 64 0a 65 6c 73 65 0a 0a 77 72 69   ┆_create_size := 0; end else  wri┆
0x053000…053020 (22, 0, 5)  74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 64 65 73 63 72 2e 64 65 66 61 75 6c 74 5f 61   ┆teln (out_pass5, descr.default_a┆
0x053020…053040             70 70 65 74 69 74 65 29 3b 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 64 65   ┆ppetite); writeln (out_pass5, de┆
0x053040…053060             73 63 72 2e 6c 61 73 74 5f 70 61 72 61 6d 5f 6f 66 66 73 65 74 29 3b 0a 77 72 69 74 65 6c 6e 20   ┆scr.last_param_offset); writeln ┆
0x053060…053080             28 6f 75 74 5f 70 61 73 73 35 29 3b 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 64 65 73 63 72   ┆(out_pass5); for i := 1 to descr┆
0x053080…0530a0             5f 66 72 65 65 5f 77 6f 72 64 73 20 64 6f 20 77 72 69 74 65 6c 6e 28 6f 75 74 5f 70 61 73 73 35   ┆_free_words do writeln(out_pass5┆
0x0530a0…0530c0             2c 64 65 73 63 72 2e 66 72 65 65 5f 77 6f 72 64 73 5b 69 5d 29 3b 0a 77 72 69 74 65 6c 6e 28 6f   ┆,descr.free_words[i]); writeln(o┆
0x0530c0…0530e0             75 74 5f 70 61 73 73 35 29 3b 0a 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20   ┆ut_pass5);  writeln (out_pass5, ┆
0x0530e0…053100             64 65 73 63 72 2e 6e 6f 5f 6f 66 5f 70 61 72 61 6d 73 29 3b 0a 66 6f 72 20 69 20 3a 3d 20 31 20   ┆descr.no_of_params); for i := 1 ┆
0x053100…053120             74 6f 20 64 65 73 63 72 2e 6e 6f 5f 6f 66 5f 70 61 72 61 6d 73 20 64 6f 0a 77 69 74 68 20 64 65   ┆to descr.no_of_params do with de┆
0x053120…053140             73 63 72 2e 70 61 72 61 6d 20 5b 20 69 20 5d 20 64 6f 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f   ┆scr.param [ i ] do writeln (out_┆
0x053140…053160             70 61 73 73 35 2c 20 6b 69 6e 64 2c 20 27 2c 27 2c 20 73 69 7a 65 29 3b 0a 77 72 69 74 65 6c 6e   ┆pass5, kind, ',', size); writeln┆
0x053160…053180             20 28 6f 75 74 5f 70 61 73 73 35 29 3b 0a 0a 6e 6f 5f 6f 66 5f 65 6e 74 72 69 65 73 20 3a 3d 20   ┆ (out_pass5);  no_of_entries := ┆
0x053180…0531a0             30 3b 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 65 78 74 5f 74 61 62 5f 6d 61 78 20 64 6f 0a   ┆0; for i := 1 to ext_tab_max do ┆
0x0531a0…0531c0             77 69 74 68 20 65 78 74 5f 74 61 62 20 5b 20 69 20 5d 20 64 6f 0a 69 66 20 73 74 61 74 65 20 3d   ┆with ext_tab [ i ] do if state =┆
0x0531c0…0531e0             20 65 78 74 5f 63 6c 6f 73 65 64 20 28 2a 20 63 6c 6f 73 65 64 20 72 6f 75 74 69 6e 65 20 2a 29   ┆ ext_closed (* closed routine *)┆
0x0531e0…053200             20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6e 6f 5f 6f 66 5f 75 73 65 73 20 3e 20 30 20 74 68   ┆ then begin if no_of_uses > 0 th┆
0x053200…053220 (22, 0, 6)  65 6e 0a 6e 6f 5f 6f 66 5f 65 6e 74 72 69 65 73 20 3a 3d 20 6e 6f 5f 6f 66 5f 65 6e 74 72 69 65   ┆en no_of_entries := no_of_entrie┆
0x053220…053240             73 20 2b 20 31 0a 65 6e 64 3b 0a 0a 77 72 69 74 65 6c 6e 28 20 6f 75 74 5f 70 61 73 73 35 2c 20   ┆s + 1 end;  writeln( out_pass5, ┆
0x053240…053260             6e 6f 5f 6f 66 5f 65 6e 74 72 69 65 73 20 29 3b 0a 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20   ┆no_of_entries );  for i := 1 to ┆
0x053260…053280             65 78 74 5f 74 61 62 5f 6d 61 78 20 64 6f 0a 77 69 74 68 20 65 78 74 5f 74 61 62 20 5b 20 69 20   ┆ext_tab_max do with ext_tab [ i ┆
0x053280…0532a0             5d 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 73 74 61 74 65 20 3d 20 65 78 74 5f 63 6c 6f 73 65 64   ┆] do begin if state = ext_closed┆
0x0532a0…0532c0             20 28 2a 20 63 6c 6f 73 65 64 20 72 6f 75 74 69 6e 65 20 2a 29 20 74 68 65 6e 0a 62 65 67 69 6e   ┆ (* closed routine *) then begin┆
0x0532c0…0532e0             0a 69 66 20 6e 6f 5f 6f 66 5f 75 73 65 73 20 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72   ┆ if no_of_uses > 0 then begin wr┆
0x0532e0…053300             69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 29 3b 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f   ┆iteln (out_pass5); writeln (out_┆
0x053300…053320             70 61 73 73 35 2c 20 69 64 29 3b 0a 6d 65 73 73 5f 73 75 6d 6d 61 72 79 5f 6c 69 6e 65 28 20 69   ┆pass5, id); mess_summary_line( i┆
0x053320…053340             64 2c 20 2d 31 20 28 2a 20 65 78 74 65 72 6e 61 6c 20 72 6f 75 74 69 6e 65 20 21 21 20 2a 29 2c   ┆d, -1 (* external routine !! *),┆
0x053340…053360             20 30 2c 20 30 2c 20 6e 6f 5f 6f 66 5f 75 73 65 73 2c 20 66 61 6c 73 65 2c 20 30 20 29 3b 0a 77   ┆ 0, 0, no_of_uses, false, 0 ); w┆
0x053360…053380             72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 6e 6f 5f 6f 66 5f 70 61 72 61 6d 29 3b   ┆riteln (out_pass5, no_of_param);┆
0x053380…0533a0             0a 70 61 72 61 6d 5f 70 3a 3d 20 70 61 72 61 6d 70 74 72 3b 0a 66 6f 72 20 6a 20 3a 3d 20 31 20   ┆ param_p:= paramptr; for j := 1 ┆
0x0533a0…0533c0             74 6f 20 6e 6f 5f 6f 66 5f 70 61 72 61 6d 20 64 6f 0a 77 69 74 68 20 70 61 72 61 6d 5f 70 5e 20   ┆to no_of_param do with param_p^ ┆
0x0533c0…0533e0             64 6f 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 20 28 6f 75 74 5f 70 61 73 73 35 2c 20 6b 69 6e   ┆do begin writeln (out_pass5, kin┆
0x0533e0…053400             64 2c 20 27 2c 27 2c 20 73 69 7a 65 29 3b 0a 70 61 72 61 6d 5f 70 3a 3d 20 6e 65 78 74 5f 70 61   ┆d, ',', size); param_p:= next_pa┆
0x053400…053420 (22, 0, 7)  72 61 6d 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a 29 0a 0a 77 72 69 74 65 6c 6e 20 28 6f   ┆ram; end; (* with *)  writeln (o┆
0x053420…053440             75 74 5f 70 61 73 73 35 2c 20 6e 6f 5f 6f 66 5f 75 73 65 73 29 3b 0a 77 72 69 74 65 6c 6e 20 28   ┆ut_pass5, no_of_uses); writeln (┆
0x053440…053460             6f 75 74 5f 70 61 73 73 35 2c 20 65 5f 6e 61 6d 65 2c 20 27 23 27 2c 20 69 3a 31 29 3b 0a 65 6e   ┆out_pass5, e_name, '#', i:1); en┆
0x053460…053480             64 3b 0a 65 6e 64 3b 0a 6e 6f 5f 6f 66 5f 75 73 65 73 20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 65 6e   ┆d; end; no_of_uses := 0; end; en┆
0x053480…0534a0             64 3b 20 28 2a 20 64 65 73 63 72 5f 65 6e 64 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 69   ┆d; (* descr_end *)   procedure i┆
0x0534a0…0534c0             6e 69 74 5f 74 72 61 70 5f 74 61 62 6c 65 3b 0a 76 61 72 0a 73 74 65 70 20 3a 20 69 6e 74 65 67   ┆nit_trap_table; var step : integ┆
0x0534c0…0534e0             65 72 3b 0a 62 65 67 69 6e 0a 69 66 20 74 72 61 70 5f 6e 72 5f 74 61 62 6c 65 20 3d 20 6e 69 6c   ┆er; begin if trap_nr_table = nil┆
0x0534e0…053500             20 74 68 65 6e 20 6e 65 77 28 74 72 61 70 5f 6e 72 5f 74 61 62 6c 65 29 3b 0a 77 69 74 68 20 74   ┆ then new(trap_nr_table); with t┆
0x053500…053520             72 61 70 5f 6e 72 5f 74 61 62 6c 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 66 6f 72 20 73 74 65 70   ┆rap_nr_table ^ do begin for step┆
0x053520…053540             20 3a 3d 20 32 20 74 6f 20 32 35 35 20 64 6f 20 74 72 61 70 5f 65 6e 74 72 79 20 5b 20 73 74 65   ┆ := 2 to 255 do trap_entry [ ste┆
0x053540…053560             70 20 5d 20 3a 3d 20 30 3b 20 28 2a 20 75 6e 75 73 65 64 20 2a 29 0a 74 72 61 70 5f 65 6e 74 72   ┆p ] := 0; (* unused *) trap_entr┆
0x053560…053580             79 20 5b 20 30 20 5d 20 3a 3d 20 31 3b 20 28 2a 20 72 65 73 65 72 76 65 64 20 66 6f 72 20 6d 61   ┆y [ 0 ] := 1; (* reserved for ma┆
0x053580…0535a0             69 6e 20 70 72 6f 67 72 61 6d 20 2a 29 0a 74 72 61 70 5f 65 6e 74 72 79 20 5b 20 31 20 5d 20 3a   ┆in program *) trap_entry [ 1 ] :┆
0x0535a0…0535c0             3d 20 31 3b 20 28 2a 20 72 65 73 65 72 76 65 64 20 66 6f 72 20 67 61 72 62 61 67 65 20 61 6e 64   ┆= 1; (* reserved for garbage and┆
0x0535c0…0535e0             20 6f 76 65 72 6c 6f 61 64 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a 29 0a 6e 6f 5f   ┆ overload *) end; (* with *) no_┆
0x0535e0…053600             6f 66 5f 6d 65 61 73 75 72 65 5f 72 65 63 73 20 3a 3d 20 31 20 28 2a 20 65 6e 74 72 79 28 30 29   ┆of_measure_recs := 1 (* entry(0)┆
0x053600…053620 (22, 0, 8)  20 66 6f 72 20 6d 61 69 6e 20 2a 29 20 2b 20 31 20 28 2a 20 65 6e 74 72 79 28 31 29 20 66 6f 72   ┆ for main *) + 1 (* entry(1) for┆
0x053620…053640             20 6f 76 65 72 6c 6f 61 64 20 2a 29 3b 0a 63 75 72 72 65 6e 74 5f 74 72 61 70 5f 6e 72 20 3a 3d   ┆ overload *); current_trap_nr :=┆
0x053640…053660             20 30 3b 20 28 2a 20 6d 61 69 6e 20 2a 29 0a 65 6e 64 3b 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 6e   ┆ 0; (* main *) end;   function n┆
0x053660…053680             65 77 5f 74 72 61 70 5f 65 6e 74 72 79 28 20 69 64 65 6e 74 20 3a 20 69 6e 74 65 67 65 72 20 29   ┆ew_trap_entry( ident : integer )┆
0x053680…0536a0             20 3a 20 69 6e 74 65 67 65 72 3b 0a 28 2a 20 69 66 20 6d 6f 72 65 20 66 72 65 65 20 65 6e 74 72   ┆ : integer; (* if more free entr┆
0x0536a0…0536c0             69 65 73 20 74 68 65 6e 20 66 69 6e 64 20 6f 6e 65 2c 20 65 6c 73 65 20 75 73 65 20 65 6e 74 72   ┆ies then find one, else use entr┆
0x0536c0…0536e0             79 28 31 29 20 2a 29 0a 76 61 72 0a 74 72 61 70 5f 6e 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 62   ┆y(1) *) var trap_nr : integer; b┆
0x0536e0…053700             65 67 69 6e 0a 74 72 61 70 5f 6e 72 20 3a 3d 20 31 3b 0a 69 66 20 6e 6f 5f 6f 66 5f 6d 65 61 73   ┆egin trap_nr := 1; if no_of_meas┆
0x053700…053720             75 72 65 5f 72 65 63 73 20 3c 20 32 35 36 20 74 68 65 6e 20 28 2a 20 6d 6f 72 65 20 66 72 65 65   ┆ure_recs < 256 then (* more free┆
0x053720…053740             20 2a 29 0a 77 69 74 68 20 74 72 61 70 5f 6e 72 5f 74 61 62 6c 65 20 5e 20 64 6f 0a 62 65 67 69   ┆ *) with trap_nr_table ^ do begi┆
0x053740…053760             6e 0a 6e 6f 5f 6f 66 5f 6d 65 61 73 75 72 65 5f 72 65 63 73 20 3a 3d 20 6e 6f 5f 6f 66 5f 6d 65   ┆n no_of_measure_recs := no_of_me┆
0x053760…053780             61 73 75 72 65 5f 72 65 63 73 20 2b 20 31 3b 0a 74 72 61 70 5f 6e 72 20 3a 3d 20 61 62 73 28 20   ┆asure_recs + 1; trap_nr := abs( ┆
0x053780…0537a0             69 64 65 6e 74 20 29 20 6d 6f 64 20 32 35 36 3b 0a 77 68 69 6c 65 20 74 72 61 70 5f 65 6e 74 72   ┆ident ) mod 256; while trap_entr┆
0x0537a0…0537c0             79 20 5b 20 74 72 61 70 5f 6e 72 20 5d 20 3c 3e 20 30 20 28 2a 20 66 72 65 65 20 2a 29 20 64 6f   ┆y [ trap_nr ] <> 0 (* free *) do┆
0x0537c0…0537e0             0a 74 72 61 70 5f 6e 72 20 3a 3d 20 28 74 72 61 70 5f 6e 72 20 2b 20 31 29 20 6d 6f 64 20 32 35   ┆ trap_nr := (trap_nr + 1) mod 25┆
0x0537e0…053800             36 3b 0a 74 72 61 70 5f 65 6e 74 72 79 20 5b 20 74 72 61 70 5f 6e 72 20 5d 20 3a 3d 20 69 64 65   ┆6; trap_entry [ trap_nr ] := ide┆
0x053800…053820 (22, 0, 9)  6e 74 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a 29 0a 6e 65 77 5f 74 72 61 70 5f 65 6e 74   ┆nt; end; (* with *) new_trap_ent┆
0x053820…053840             72 79 20 3a 3d 20 74 72 61 70 5f 6e 72 3b 0a 65 6e 64 3b 20 28 2a 20 6e 65 77 20 74 72 61 70 20   ┆ry := trap_nr; end; (* new trap ┆
0x053840…053860             65 6e 74 72 79 20 2a 29 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 67 65 74 5f 74 72 61 70 5f 6e 72 28   ┆entry *)   function get_trap_nr(┆
0x053860…053880             20 69 64 65 6e 74 20 3a 20 69 6e 74 65 67 65 72 20 29 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 61   ┆ ident : integer ) : integer; va┆
0x053880…0538a0             72 0a 66 69 72 73 74 5f 67 75 65 73 73 2c 20 74 72 61 70 5f 6e 72 20 3a 20 69 6e 74 65 67 65 72   ┆r first_guess, trap_nr : integer┆
0x0538a0…0538c0             3b 0a 62 65 67 69 6e 0a 74 72 61 70 5f 6e 72 20 3a 3d 20 61 62 73 28 20 69 64 65 6e 74 20 29 20   ┆; begin trap_nr := abs( ident ) ┆
0x0538c0…0538e0             6d 6f 64 20 32 35 36 3b 0a 66 69 72 73 74 5f 67 75 65 73 73 20 3a 3d 20 74 72 61 70 5f 6e 72 3b   ┆mod 256; first_guess := trap_nr;┆
0x0538e0…053900             0a 67 65 74 5f 74 72 61 70 5f 6e 72 20 3a 3d 20 31 3b 20 28 2a 20 69 6e 20 63 61 73 65 20 6f 66   ┆ get_trap_nr := 1; (* in case of┆
0x053900…053920             20 6d 69 73 73 20 65 6e 74 72 79 28 31 29 20 69 73 20 75 73 65 64 20 2a 29 0a 77 69 74 68 20 74   ┆ miss entry(1) is used *) with t┆
0x053920…053940             72 61 70 5f 6e 72 5f 74 61 62 6c 65 20 5e 20 64 6f 0a 72 65 70 65 61 74 0a 69 66 20 74 72 61 70   ┆rap_nr_table ^ do repeat if trap┆
0x053940…053960             5f 65 6e 74 72 79 20 5b 20 74 72 61 70 5f 6e 72 20 5d 20 3c 3e 20 69 64 65 6e 74 20 74 68 65 6e   ┆_entry [ trap_nr ] <> ident then┆
0x053960…053980             0a 74 72 61 70 5f 6e 72 20 3a 3d 20 28 74 72 61 70 5f 6e 72 20 2b 20 31 29 20 6d 6f 64 20 32 35   ┆ trap_nr := (trap_nr + 1) mod 25┆
0x053980…0539a0             36 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 66 69 72 73 74 5f 67 75 65 73 73 20 3a 3d 20 74 72 61 70   ┆6 else begin first_guess := trap┆
0x0539a0…0539c0             5f 6e 72 3b 20 28 2a 20 65 78 69 74 20 72 65 70 65 61 74 20 2a 29 0a 67 65 74 5f 74 72 61 70 5f   ┆_nr; (* exit repeat *) get_trap_┆
0x0539c0…0539e0             6e 72 20 3a 3d 20 74 72 61 70 5f 6e 72 3b 0a 65 6e 64 3b 0a 75 6e 74 69 6c 20 74 72 61 70 5f 6e   ┆nr := trap_nr; end; until trap_n┆
0x0539e0…053a00             72 20 3d 20 66 69 72 73 74 5f 67 75 65 73 73 3b 0a 65 6e 64 3b 20 28 2a 20 67 65 74 20 74 72 61   ┆r = first_guess; end; (* get tra┆
0x053a00…053a20 (22, 0, 10) 70 20 6e 72 20 2a 29 0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 5f 63 61 6c 6c   ┆p nr *)      procedure code_call┆
0x053a20…053a40             5f 70 72 6f 63 0a 28 75 73 65 3a 20 75 73 65 6d 6f 64 65 73 3b 20 63 61 6c 6c 6b 69 6e 64 3a 20   ┆_proc (use: usemodes; callkind: ┆
0x053a40…053a60             63 61 6c 6c 6d 6f 64 65 73 3b 20 6b 65 79 2c 20 6e 69 76 2c 20 6c 69 78 2c 20 70 61 72 61 6d 6c   ┆callmodes; key, niv, lix, paraml┆
0x053a60…053a80             65 6e 67 74 68 2c 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 3a 20 69   ┆ength,size_of_function_result: i┆
0x053a80…053aa0             6e 74 65 67 65 72 29 3b 0a 76 61 72 0a 64 75 6d 6d 79 2c 73 74 65 70 2c 73 74 6f 70 2c 6c 65 76   ┆nteger); var dummy,step,stop,lev┆
0x053aa0…053ac0             65 6c 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 69 66 20 63 61 6c 6c 6b 69 6e   ┆el : integer;  begin  if callkin┆
0x053ac0…053ae0             64 20 3c 3e 20 69 6e 74 5f 63 61 6c 6c 20 74 68 65 6e 0a 77 69 74 68 20 65 78 74 5f 74 61 62 20   ┆d <> int_call then with ext_tab ┆
0x053ae0…053b00             5b 20 6b 65 79 20 5d 20 64 6f 0a 62 65 67 69 6e 0a 6e 6f 5f 6f 66 5f 75 73 65 73 20 3a 3d 20 6e   ┆[ key ] do begin no_of_uses := n┆
0x053b00…053b20             6f 5f 6f 66 5f 75 73 65 73 20 2b 20 31 3b 0a 69 66 20 6e 6f 5f 6f 66 5f 75 73 65 73 20 3d 20 31   ┆o_of_uses + 1; if no_of_uses = 1┆
0x053b20…053b40             20 74 68 65 6e 0a 62 65 67 69 6e 0a 6d 6f 64 65 20 3a 3d 20 75 73 65 3b 0a 69 66 20 74 72 61 70   ┆ then begin mode := use; if trap┆
0x053b40…053b60             5f 63 6f 64 65 20 61 6e 64 20 28 20 63 61 6c 6c 6b 69 6e 64 20 3d 20 65 78 74 5f 63 61 6c 6c 20   ┆_code and ( callkind = ext_call ┆
0x053b60…053b80             29 20 74 68 65 6e 0a 64 75 6d 6d 79 20 3a 3d 20 6e 65 77 5f 74 72 61 70 5f 65 6e 74 72 79 28 20   ┆) then dummy := new_trap_entry( ┆
0x053b80…053ba0             2d 6b 65 79 20 29 3b 20 28 2a 20 65 78 74 65 72 6e 61 6c 73 20 61 72 65 20 6d 61 72 6b 65 64 20   ┆-key ); (* externals are marked ┆
0x053ba0…053bc0             77 69 74 68 20 6e 65 67 61 74 69 76 65 20 69 64 65 6e 74 69 66 69 63 61 74 69 6f 6e 20 2a 29 0a   ┆with negative identification *) ┆
0x053bc0…053be0             65 6e 64 3b 0a 69 66 20 6d 6f 64 65 20 3c 3e 20 75 73 65 20 74 68 65 6e 0a 65 72 72 6f 72 28 69   ┆end; if mode <> use then error(i┆
0x053be0…053c00             6e 63 6f 6e 73 69 73 74 65 6e 74 5f 75 73 65 29 3b 0a 65 6e 64 3b 0a 0a 63 61 73 65 20 63 61 6c   ┆nconsistent_use); end;  case cal┆
0x053c00…053c20 (22, 0, 11) 6c 6b 69 6e 64 20 6f 66 0a 0a 6f 70 65 6e 5f 63 61 6c 6c 3a 0a 62 65 67 69 6e 0a 77 69 74 68 20   ┆lkind of  open_call: begin with ┆
0x053c20…053c40             65 78 74 5f 74 61 62 5b 6b 65 79 5d 20 64 6f 0a 62 65 67 69 6e 0a 28 2a 63 68 65 63 6b 20 61 6e   ┆ext_tab[key] do begin (*check an┆
0x053c40…053c60             64 20 61 64 6a 75 73 74 20 68 77 20 73 74 61 63 6b 20 69 66 20 6e 65 73 73 65 73 61 72 79 20 2a   ┆d adjust hw stack if nessesary *┆
0x053c60…053c80             29 0a 69 66 20 70 61 72 61 6d 6c 65 6e 67 74 68 20 3c 3e 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a   ┆) if paramlength <> hw_stack_siz┆
0x053c80…053ca0             65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 70 61 72 61 6d 6c 65 6e 67 74 68 20 3e 20 6d 61   ┆e then begin if paramlength > ma┆
0x053ca0…053cc0             78 5f 68 77 5f 73 74 61 63 6b 20 74 68 65 6e 20 28 2a 6e 6f 74 20 65 6e 6f 75 67 68 20 72 6f 6f   ┆x_hw_stack then (*not enough roo┆
0x053cc0…053ce0             6d 20 66 6f 72 20 70 61 72 61 6d 65 74 65 72 73 20 65 6d 70 74 79 20 73 74 61 63 6b 2a 29 0a 6f   ┆m for parameters empty stack*) o┆
0x053ce0…053d00             75 74 5f 72 65 73 74 61 28 30 29 0a 65 6c 73 65 0a 69 66 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63   ┆ut_resta(0) else if size_of_func┆
0x053d00…053d20             74 69 6f 6e 5f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 73 69   ┆tion_result <> 0 then begin (*si┆
0x053d20…053d40             6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 2a 29 0a 69 66 20 28 61 70 70 65 74 69 74 65 20 2b 20 70   ┆mple function*) if (appetite + p┆
0x053d40…053d60             61 72 61 6d 6c 65 6e 67 74 68 29 20 3e 20 6d 61 78 5f 68 77 5f 73 74 61 63 6b 20 74 68 65 6e 0a   ┆aramlength) > max_hw_stack then ┆
0x053d60…053d80             28 2a 6e 6f 74 20 72 6f 6f 6d 20 66 6f 72 20 62 6f 74 68 20 61 70 70 65 74 69 74 65 20 61 6e 64   ┆(*not room for both appetite and┆
0x053d80…053da0             20 70 61 72 61 6d 65 74 65 72 73 20 2e 20 61 73 73 75 72 65 20 65 78 61 63 74 6c 79 20 70 61 72   ┆ parameters . assure exactly par┆
0x053da0…053dc0             61 6d 65 74 65 72 73 2a 29 0a 6f 75 74 5f 72 65 73 74 61 28 70 61 72 61 6d 6c 65 6e 67 74 68 29   ┆ameters*) out_resta(paramlength)┆
0x053dc0…053de0             0a 65 6c 73 65 0a 69 66 20 28 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 2b 20 61 70 70 65 74 69   ┆ else if (hw_stack_size + appeti┆
0x053de0…053e00             74 65 29 20 3e 20 6d 61 78 5f 68 77 5f 73 74 61 63 6b 20 74 68 65 6e 0a 28 2a 6f 76 65 72 66 6c   ┆te) > max_hw_stack then (*overfl┆
0x053e00…053e20 (22, 0, 12) 6f 77 20 6d 61 6b 65 20 72 6f 6f 6d 20 66 6f 72 20 61 70 70 65 74 69 74 65 2a 29 0a 6f 75 74 5f   ┆ow make room for appetite*) out_┆
0x053e20…053e40             72 65 73 74 61 28 6d 61 78 5f 68 77 5f 73 74 61 63 6b 2d 61 70 70 65 74 69 74 65 29 0a 65 6c 73   ┆resta(max_hw_stack-appetite) els┆
0x053e40…053e60             65 0a 69 66 20 70 61 72 61 6d 6c 65 6e 67 74 68 20 3e 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65   ┆e if paramlength > hw_stack_size┆
0x053e60…053e80             20 74 68 65 6e 20 6f 75 74 5f 72 65 73 74 61 28 70 61 72 61 6d 6c 65 6e 67 74 68 29 3b 0a 65 6e   ┆ then out_resta(paramlength); en┆
0x053e80…053ea0             64 20 28 2a 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 2a 29 0a 65 6c 73 65 20 28 2a 70 72 6f   ┆d (*simple function*) else (*pro┆
0x053ea0…053ec0             63 65 64 75 72 65 20 6f 72 20 6e 6f 6e 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 2a 29 0a   ┆cedure or non simple function*) ┆
0x053ec0…053ee0             28 2a 70 75 73 68 20 65 78 61 63 74 6c 79 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74 68 65   ┆(*push exactly parameters to the┆
0x053ee0…053f00             20 73 74 61 63 6b 2a 29 0a 6f 75 74 5f 72 65 73 74 61 28 70 61 72 61 6d 6c 65 6e 67 74 68 29 0a   ┆ stack*) out_resta(paramlength) ┆
0x053f00…053f20             65 6e 64 3b 0a 0a 28 2a 63 6f 70 79 20 74 68 65 20 6f 70 65 6e 20 72 6f 75 74 69 6e 65 20 2a 29   ┆end;  (*copy the open routine *)┆
0x053f20…053f40             0a 0a 65 78 74 5f 63 6f 70 79 5f 63 6f 64 65 28 6b 65 79 29 3b 0a 0a 28 2a 61 64 6a 75 73 74 20   ┆  ext_copy_code(key);  (*adjust ┆
0x053f40…053f60             73 74 61 63 6b 20 70 6f 69 6e 74 65 72 73 2a 29 0a 63 6f 6e 74 65 78 74 5f 65 76 61 6c 28 61 70   ┆stack pointers*) context_eval(ap┆
0x053f60…053f80             70 65 74 69 74 65 29 3b 0a 63 6f 6e 74 65 78 74 5f 65 76 61 6c 28 2d 61 70 70 65 74 69 74 65 2d   ┆petite); context_eval(-appetite-┆
0x053f80…053fa0             70 61 72 61 6d 6c 65 6e 67 74 68 2b 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73   ┆paramlength+size_of_function_res┆
0x053fa0…053fc0             75 6c 74 29 3b 0a 28 2a 68 77 5f 73 74 61 63 6b 70 6f 69 6e 74 65 72 2a 29 0a 69 66 20 73 69 7a   ┆ult); (*hw_stackpointer*) if siz┆
0x053fc0…053fe0             65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 62   ┆e_of_function_result <> 0 then b┆
0x053fe0…054000             65 67 69 6e 20 28 2a 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 2a 29 0a 69 66 20 68 77 5f   ┆egin (*simple function *) if hw_┆
0x054000…054020 (22, 0, 13) 73 74 61 63 6b 5f 73 69 7a 65 20 3d 20 30 20 74 68 65 6e 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a   ┆stack_size = 0 then hw_stack_siz┆
0x054020…054040             65 20 3a 3d 20 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 0a 65 6c   ┆e :=  size_of_function_result el┆
0x054040…054060             73 65 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a   ┆se hw_stack_size := hw_stack_siz┆
0x054060…054080             65 20 2d 20 70 61 72 61 6d 6c 65 6e 67 74 68 20 2b 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69   ┆e - paramlength + size_of_functi┆
0x054080…0540a0             6f 6e 5f 72 65 73 75 6c 74 3b 0a 0a 28 2a 63 68 65 63 6b 20 63 6f 6e 73 69 73 74 65 6e 63 65 2a   ┆on_result;  (*check consistence*┆
0x0540a0…0540c0             29 0a 69 66 20 28 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3c 20 30 29 20 6f 72 20 28 68 77 5f   ┆) if (hw_stack_size < 0) or (hw_┆
0x0540c0…0540e0             73 74 61 63 6b 5f 73 69 7a 65 20 3e 20 6d 61 78 5f 68 77 5f 73 74 61 63 6b 29 20 74 68 65 6e 0a   ┆stack_size > max_hw_stack) then ┆
0x0540e0…054100             68 77 5f 73 74 61 63 6b 5f 65 72 72 6f 72 28 73 69 6d 70 6c 65 5f 6f 70 65 6e 5f 66 75 6e 63 74   ┆hw_stack_error(simple_open_funct┆
0x054100…054120             69 6f 6e 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 28 2a 70 72 6f 63 65 64 75 72 65 20 6f 72 20 6e 6f   ┆ion); end else (*procedure or no┆
0x054120…054140             6e 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 2a 29 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a   ┆n simple function*) hw_stack_siz┆
0x054140…054160             65 20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 6e 74 5f 63 61 6c 6c 2c 0a 65 78 74   ┆e := 0; end; end;  int_call, ext┆
0x054160…054180             5f 63 61 6c 6c 3a 0a 62 65 67 69 6e 0a 69 66 20 74 72 61 70 5f 63 6f 64 65 20 74 68 65 6e 0a 62   ┆_call: begin if trap_code then b┆
0x054180…0541a0             65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 6d 74 72 68 2c 74 72 61 70 65 6e 74 65   ┆egin out_op_int(op_mtrh,trapente┆
0x0541a0…0541c0             72 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72   ┆r); out_start_param; out_integer┆
0x0541c0…0541e0             28 63 75 72 72 65 6e 74 5f 74 72 61 70 5f 6e 72 29 3b 0a 65 6e 64 3b 0a 6c 65 76 65 6c 20 3a 3d   ┆(current_trap_nr); end; level :=┆
0x0541e0…054200             20 63 2e 6e 69 76 20 2d 20 6e 69 76 3b 0a 63 61 73 65 20 6c 65 76 65 6c 20 6f 66 0a 30 3a 20 6f   ┆ c.niv - niv; case level of 0: o┆
0x054200…054220 (22, 0, 14) 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 70 63 61 6c 73 30 2c 2d 70 61 72 61 6d 6c 65   ┆ut_specopcode(op_pcals0,-paramle┆
0x054220…054240             6e 67 74 68 29 3b 0a 31 3a 20 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 70 63 61 6c   ┆ngth); 1: out_specopcode(op_pcal┆
0x054240…054260             73 31 2c 2d 70 61 72 61 6d 6c 65 6e 67 74 68 29 3b 0a 0a 65 6c 73 65 20 62 65 67 69 6e 0a 28 2a   ┆s1,-paramlength);  else begin (*┆
0x054260…054280             6c 65 76 65 6c 20 3e 20 31 2a 29 0a 28 2a 6d 6f 76 65 20 61 64 64 72 20 6f 66 20 69 20 66 72 61   ┆level > 1*) (*move addr of i fra┆
0x054280…0542a0             6d 65 20 6f 6e 20 74 6f 70 20 6f 66 20 73 74 61 63 6b 2a 29 0a 6f 75 74 5f 69 5f 66 72 61 6d 65   ┆me on top of stack*) out_i_frame┆
0x0542a0…0542c0             5f 61 64 64 72 28 6c 65 76 65 6c 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f   ┆_addr(level); out_specopcode(op_┆
0x0542c0…0542e0             70 63 61 6c 73 2c 2d 70 61 72 61 6d 6c 65 6e 67 74 68 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 6f   ┆pcals,-paramlength); end; end; o┆
0x0542e0…054300             75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 0a 69 66 20 63 61 6c 6c 6b 69 6e 64 20 3d 20 69 6e   ┆ut_start_param; if callkind = in┆
0x054300…054320             74 5f 63 61 6c 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6c 69 78 28 72 5f 6e 61 6d 65   ┆t_call then begin out_lix(r_name┆
0x054320…054340             2c 6c 69 78 29 3b 0a 6f 75 74 5f 63 68 61 72 28 27 2b 27 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65   ┆,lix); out_char('+'); out_intege┆
0x054340…054360             72 28 6a 75 6d 70 5f 61 63 72 6f 73 73 5f 66 69 72 73 74 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62   ┆r(jump_across_first); end else b┆
0x054360…054380             65 67 69 6e 0a 6f 75 74 5f 6c 69 78 20 28 65 5f 6e 61 6d 65 2c 20 6b 65 79 29 3b 0a 69 66 20 74   ┆egin out_lix (e_name, key); if t┆
0x054380…0543a0             72 61 70 5f 63 6f 64 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f   ┆rap_code then begin out_op_int(o┆
0x0543a0…0543c0             70 5f 6d 74 72 68 2c 74 72 61 70 72 65 74 75 72 6e 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61   ┆p_mtrh,trapreturn); out_start_pa┆
0x0543c0…0543e0             72 61 6d 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 67 65 74 5f 74 72 61 70 5f 6e 72 28 2d 6b 65   ┆ram; out_integer(get_trap_nr(-ke┆
0x0543e0…054400             79 29 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 63 61   ┆y)); end; end;  end;  end; (* ca┆
0x054400…054420 (22, 0, 15) 73 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 5f 63 61   ┆se *)  end; (* procedure code_ca┆
0x054420…054440             6c 6c 5f 70 72 6f 63 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 69 6e 69   ┆ll_proc *)   procedure  code_ini┆
0x054440…054460             74 76 61 72 28 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 74 79 70 65 5f 6f 20 3a 20 69 6e 74   ┆tvar( kind, offset, type_o : int┆
0x054460…054480             65 67 65 72 3b 0a 20 20 20 20 20 20 20 76 61 72 20 72 65 66 5f 63 6f 75 6e 74 20 3a 20 69 6e 74   ┆eger;        var ref_count : int┆
0x054480…0544a0             65 67 65 72 3b 20 76 61 72 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72   ┆eger; var shadow_count : integer┆
0x0544a0…0544c0             29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 67 65 74 5f 6e 69 76 5f   ┆); forward;   procedure get_niv_┆
0x0544c0…0544e0             6f 66 66 73 65 74 20 28 20 76 61 72 20 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 20 29   ┆offset ( var v : varaddr_descr )┆
0x0544e0…054500             3b 0a 0a 62 65 67 69 6e 0a 77 69 74 68 20 76 20 64 6f 0a 62 65 67 69 6e 0a 0a 6b 69 6e 64 20 3a   ┆;  begin with v do begin  kind :┆
0x054500…054520             3d 20 61 64 64 72 3b 0a 6e 69 76 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 6f 66 66 73 65   ┆= addr; niv := in_integer; offse┆
0x054520…054540             74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 73 69 7a 65 20 3a 3d 20 30 3b 0a 69 66 20 6e   ┆t := in_integer; size := 0; if n┆
0x054540…054560             69 76 20 3d 20 63 2e 6e 69 76 20 74 68 65 6e 20 61 63 63 65 73 73 20 3a 3d 20 6c 5f 66 72 61 6d   ┆iv = c.niv then access := l_fram┆
0x054560…054580             65 0a 65 6c 73 65 0a 69 66 20 6e 69 76 20 3d 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 20 74 68 65 6e   ┆e else if niv = const_niv_0 then┆
0x054580…0545a0             20 61 63 63 65 73 73 20 3a 3d 20 67 5f 66 72 61 6d 65 0a 65 6c 73 65 0a 61 63 63 65 73 73 20 3a   ┆ access := g_frame else access :┆
0x0545a0…0545c0             3d 20 69 5f 66 72 61 6d 65 3b 0a 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 67 65 74 20 6e 69 76   ┆= i_frame;  end; end; (* get niv┆
0x0545c0…0545e0             2c 20 6f 66 66 73 65 74 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 6c 6f 61 64 5f 61   ┆, offset *)    procedure  load_a┆
0x0545e0…054600             64 64 72 65 73 73 28 20 76 61 72 20 20 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 20   ┆ddress( var  v : varaddr_descr; ┆
0x054600…054620 (22, 1, 1)  6f 66 66 73 65 74 5f 7a 65 72 6f 20 3a 20 62 6f 6f 6c 65 61 6e 29 3b 0a 0a 28 2a 20 74 68 65 20   ┆offset_zero : boolean);  (* the ┆
0x054620…054640             65 78 65 63 75 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 65 6e 66 6f   ┆execution of this procedure enfo┆
0x054640…054660             72 63 65 73 20 20 27 76 2e 6b 69 6e 64 27 20 3d 20 27 61 64 64 72 27 20 20 20 20 2a 29 0a 0a 62   ┆rces  'v.kind' = 'addr'    *)  b┆
0x054660…054680             65 67 69 6e 0a 0a 63 61 73 65 20 20 76 2e 6b 69 6e 64 20 20 6f 66 0a 0a 61 64 64 72 3a 0a 20 20   ┆egin  case  v.kind  of  addr:   ┆
0x054680…0546a0             62 65 67 69 6e 0a 63 61 73 65 20 76 2e 61 63 63 65 73 73 20 6f 66 0a 67 5f 66 72 61 6d 65 3a 20   ┆begin case v.access of g_frame: ┆
0x0546a0…0546c0             6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 67 64 2c 76 2e 6f 66 66 73 65 74 29 3b 0a 6c   ┆out_op_int(op_reagd,v.offset); l┆
0x0546c0…0546e0             5f 66 72 61 6d 65 3a 20 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 6c 64 2c 76 2e 6f 66   ┆_frame: out_op_int(op_reald,v.of┆
0x0546e0…054700             66 73 65 74 29 3b 0a 69 5f 66 72 61 6d 65 3a 20 6f 75 74 5f 6f 70 5f 72 65 61 28 63 2e 6e 69 76   ┆fset); i_frame: out_op_rea(c.niv┆
0x054700…054720             20 2d 20 76 2e 6e 69 76 2c 20 76 2e 6f 66 66 73 65 74 29 3b 0a 28 2a 73 5f 66 72 61 6d 65 20 6e   ┆ - v.niv, v.offset); (*s_frame n┆
0x054720…054740             6f 74 20 70 6f 73 73 69 62 6c 65 20 68 65 72 65 2a 29 0a 65 6e 64 3b 20 28 2a 63 61 73 65 2a 29   ┆ot possible here*) end; (*case*)┆
0x054740…054760             0a 0a 76 2e 6b 69 6e 64 20 3a 3d 20 73 74 61 63 6b 5f 61 64 64 72 3b 20 20 20 76 2e 6f 66 66 73   ┆  v.kind := stack_addr;   v.offs┆
0x054760…054780             65 74 20 3a 3d 20 30 3b 20 20 20 76 2e 61 63 63 65 73 73 20 3a 3d 20 73 5f 66 72 61 6d 65 3b 0a   ┆et := 0;   v.access := s_frame; ┆
0x054780…0547a0             65 6e 64 3b 0a 0a 73 74 61 63 6b 5f 61 64 64 72 3a 0a 20 20 69 66 20 20 28 20 6f 66 66 73 65 74   ┆end;  stack_addr:   if  ( offset┆
0x0547a0…0547c0             5f 7a 65 72 6f 20 29 20 61 6e 64 20 28 20 76 2e 6f 66 66 73 65 74 20 3c 3e 20 30 20 29 20 74 68   ┆_zero ) and ( v.offset <> 0 ) th┆
0x0547c0…0547e0             65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 73 64 20 29 3b   ┆en begin out_opcode( op_reasd );┆
0x0547e0…054800             0a 6f 75 74 5f 70 5f 69 6e 74 28 20 76 2e 6f 66 66 73 65 74 20 29 3b 0a 0a 76 2e 6f 66 66 73 65   ┆ out_p_int( v.offset );  v.offse┆
0x054800…054820 (22, 1, 2)  74 20 3a 3d 20 30 0a 65 6e 64 3b 0a 0a 70 61 63 6b 65 64 5f 61 72 72 3a 20 65 72 72 6f 72 20 28   ┆t := 0 end;  packed_arr: error (┆
0x054820…054840             63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 65 6e 64 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70   ┆compiler_error);  end  end;    p┆
0x054840…054860             72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65 72 28 20 65 78 63 65   ┆rocedure  code_exc_trigger( exce┆
0x054860…054880             70 74 69 6f 6e 5f 6e 6f 20 3a 20 69 6e 74 65 67 65 72 29 3b 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74   ┆ption_no : integer);  begin  out┆
0x054880…0548a0             5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 65 78 70 72 20 28 69   ┆_opcode( op_rechw ); out_expr (i┆
0x0548a0…0548c0             64 5f 63 70 65 78 63 66 69 72 73 74 2c 20 65 78 63 65 70 74 69 6f 6e 5f 6e 6f 29 3b 0a 0a 6f 75   ┆d_cpexcfirst, exception_no);  ou┆
0x0548c0…0548e0             74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6d 74 72 73 20 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74   ┆t_opcode( op_mtrs ); out_comment┆
0x0548e0…054900             28 20 27 20 20 20 74 72 69 67 67 65 72 20 65 78 63 65 70 74 69 6f 6e 20 6e 6f 2e 20 3a 20 27 20   ┆( '   trigger exception no. : ' ┆
0x054900…054920             29 3b 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 65 78 63 65 70 74 69 6f 6e 5f 6e 6f 20 29 0a 0a   ┆); out_integer( exception_no )  ┆
0x054920…054940             0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 61 6c 6c 6f 63 70 6f 6f   ┆ end;   procedure  code_allocpoo┆
0x054940…054960             6c 28 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 6e 75 6d 62 65 72 2c 20 73 69 7a 65 20 3a 20   ┆l( kind, offset, number, size : ┆
0x054960…054980             69 6e 74 65 67 65 72 29 3b 0a 0a 76 61 72 0a 77 5f 6f 66 66 73 65 74 2c 20 20 6b 65 79 2c 20 72   ┆integer);  var w_offset,  key, r┆
0x054980…0549a0             65 66 73 20 3a 20 69 6e 74 65 67 65 72 3b 0a 77 5f 73 69 7a 65 20 3a 20 77 6f 72 64 3b 0a 62 65   ┆efs : integer; w_size : word; be┆
0x0549a0…0549c0             67 69 6e 0a 0a 28 2a 20 20 69 6e 69 74 2e 20 74 68 65 20 73 65 6d 61 70 68 6f 72 65 20 6f 66 20   ┆gin  (*  init. the semaphore of ┆
0x0549c0…0549e0             74 68 65 20 70 6f 6f 6c 20 74 6f 20 6e 69 6c 20 3a 20 20 2a 29 0a 0a 69 66 20 28 6b 69 6e 64 20   ┆the pool to nil :  *)  if (kind ┆
0x0549e0…054a00             3d 20 32 29 20 61 6e 64 20 28 6e 75 6d 62 65 72 20 3e 20 30 29 20 74 68 65 6e 0a 62 65 67 69 6e   ┆= 2) and (number > 0) then begin┆
0x054a00…054a20 (22, 1, 3)  0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 64 20 29 0a 0a 65 6e 64 3b 0a 0a   ┆  out_opcode( op_revpd )  end;  ┆
0x054a20…054a40             63 6f 64 65 5f 69 6e 69 74 76 61 72 28 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 36 2c 20 72   ┆code_initvar( kind, offset, 6, r┆
0x054a40…054a60             65 66 73 2c 20 72 65 66 73 29 3b 0a 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 74   ┆efs, refs);  out_comment( '   st┆
0x054a60…054a80             61 72 74 20 69 6e 69 74 2e 20 6f 66 20 70 6f 6f 6c 2e 20 27 20 29 3b 0a 0a 0a 28 2a 20 20 70 72   ┆art init. of pool. ' );   (*  pr┆
0x054a80…054aa0             65 70 61 72 65 20 63 61 6c 6c 20 6f 66 20 74 68 65 20 72 6f 75 74 69 6e 65 3a 20 5f 69 6e 69 74   ┆epare call of the routine: _init┆
0x054aa0…054ac0             70 6f 6f 6c 5f 72 63 20 20 3a 20 20 2a 29 0a 69 66 20 6e 75 6d 62 65 72 20 3e 20 30 20 74 68 65   ┆pool_rc  :  *) if number > 0 the┆
0x054ac0…054ae0             6e 0a 62 65 67 69 6e 0a 0a 28 2a 20 20 67 65 6e 65 72 61 74 65 20 74 68 65 20 61 63 74 75 61 6c   ┆n begin  (*  generate the actual┆
0x054ae0…054b00             20 70 61 72 61 6d 65 74 65 72 73 3a 20 20 2a 29 0a 0a 69 66 20 6b 69 6e 64 20 3d 20 31 20 74 68   ┆ parameters:  *)  if kind = 1 th┆
0x054b00…054b20             65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 72 65 61 6c 64 2c 20 6f   ┆en begin out_op_int (op_reald, o┆
0x054b20…054b40             66 66 73 65 74 29 3b 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 69 66 20 6b 69 6e 64 20 3d 20 32 20 74   ┆ffset);  end  else if kind = 2 t┆
0x054b40…054b60             68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6f 66 66 73 65 74 20 3c 3e 20 30 20 74 68 65 6e 0a 6f 75   ┆hen begin if offset <> 0 then ou┆
0x054b60…054b80             74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 61 73 64 2c 20 6f 66 66 73 65 74 20 29 3b 0a 0a 0a   ┆t_op_int( op_reasd, offset );   ┆
0x054b80…054ba0             65 6e 64 0a 0a 65 6c 73 65 0a 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b   ┆end  else error(compiler_error);┆
0x054ba0…054bc0             0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 72 65 63 68 77 2c 20 6e 75 6d 62 65 72 29 3b   ┆  out_op_int (op_rechw, number);┆
0x054bc0…054be0             0a 28 2a 24 52 2d 2a 29 0a 77 5f 73 69 7a 65 20 3a 3d 20 73 69 7a 65 3b 0a 28 2a 24 52 2b 2a 29   ┆ (*$R-*) w_size := size; (*$R+*)┆
0x054be0…054c00             0a 69 66 20 6f 64 64 28 20 77 5f 73 69 7a 65 20 29 20 74 68 65 6e 20 77 5f 73 69 7a 65 20 3a 3d   ┆ if odd( w_size ) then w_size :=┆
0x054c00…054c20 (22, 1, 4)  20 77 5f 73 69 7a 65 20 2b 20 31 3b 0a 77 5f 73 69 7a 65 20 3a 3d 20 77 5f 73 69 7a 65 20 64 69   ┆ w_size + 1; w_size := w_size di┆
0x054c20…054c40             76 20 32 3b 0a 73 69 7a 65 20 3a 3d 20 77 5f 73 69 7a 65 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆v 2; size := w_size;  out_op_int┆
0x054c40…054c60             20 28 6f 70 5f 72 65 63 68 77 2c 20 73 69 7a 65 29 3b 0a 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72   ┆ (op_rechw, size);  code_call_pr┆
0x054c60…054c80             6f 63 20 28 73 79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 20 28 6b 65 79 2c 20 27 5f   ┆oc (sys_use, ext_lookup (key, '_┆
0x054c80…054ca0             69 6e 69 74 70 6f 6f 6c 5f 72 63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c   ┆initpool_rc'), key, const_niv_0,┆
0x054ca0…054cc0             20 30 2c 0a 34 20 28 2a 20 61 64 64 72 65 73 73 20 2a 29 20 2b 20 32 20 28 2a 20 6e 75 6d 62 65   ┆ 0, 4 (* address *) + 2 (* numbe┆
0x054cc0…054ce0             72 20 2a 29 20 2b 20 32 20 28 2a 20 73 69 7a 65 20 2a 29 2c 30 20 29 3b 0a 65 6e 64 3b 20 28 2a   ┆r *) + 2 (* size *),0 ); end; (*┆
0x054ce0…054d00             20 69 66 20 6e 75 6d 62 65 72 20 3e 20 30 20 2a 29 0a 0a 65 6e 64 20 28 2a 20 63 6f 64 65 5f 61   ┆ if number > 0 *)  end (* code_a┆
0x054d00…054d20             6c 6c 6f 63 70 6f 6f 6c 20 2a 29 3b 0a 0a 0a 5f 69 6e 74 20 28 6f 70 5f 72 65 61 6c 64 2c 20 6f   ┆llocpool *);   _int (op_reald, o┆
0x054d20…054d40             66 66 73 65 74 29 3b 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 69 66 20 6b 69 6e 64 20 3d 20 32 20 74   ┆ffset);  end  else if kind = 2 t┆
0x054d40…054d60             68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6f 66 66 73 65 74 20 3c 3e 20 30 20 74 68 65 6e 0a 6f 75   ┆hen begin if offset <> 0 then ou┆
0x054d60…054d80             74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 61 73 64 2c 20 6f 66 66 73 65 74 20 29 3b 0a 0a 0a   ┆t_op_int( op_reasd, offset );   ┆
0x054d80…054da0             65 6e 64 0a 0a 65 6c 73 65 0a 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b   ┆end  else error(compiler_error);┆
0x054da0…054dc0             0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 72 65 63 68 77 2c 20 6e 75 6d 62 65 72 29 3b   ┆  out_op_int (op_rechw, number);┆
0x054dc0…054de0             0a 28 2a 24 52 2d 2a 29 0a 77 5f 73 69 7a 65 20 3a 3d 20 73 69 7a 65 3b 0a 28 2a 24 52 2b 2a 29   ┆ (*$R-*) w_size := size; (*$R+*)┆
0x054de0…054e00             0a 69 66 20 6f 64 64 28 20 77 5f 73 69 7a 65 20 29 20 74 68 65 6e 20 77 5f 73 69 7a 65 20 3a 3d   ┆ if odd( w_size ) then w_size :=┆
0x054e00…054e20 (22, 1, 5)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 73 2e 70 33 65 78 70 72 2e 70 61 73 00 00   ┆../sw2103/src/rtp/s.p3expr.pas  ┆
0x054e20…054e40             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x054e60…054e80             00 00 00 00 20 20 20 34 34 34 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       444     255     146      ┆
0x054e80…054ea0             20 31 32 30 34 36 34 20 20 35 32 36 36 37 36 37 32 31 35 20 20 31 31 31 35 36 00 20 00 00 00 00   ┆ 120464  5266767215  11156      ┆
0x054ea0…054ec0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x055000…055020 (22, 1, 6)  01 68 30 33 39 32 36 0a 01 73 20 30 32 31 31 39 2f 30 30 30 30 30 2f 30 30 30 30 30 0a 01 64 20   ┆ h03926  s 02119/00000/00000  d ┆
0x055020…055040             44 20 31 2e 31 20 39 32 2f 31 30 2f 31 34 20 31 30 3a 35 35 3a 32 34 20 73 77 32 31 30 33 20 31   ┆D 1.1 92/10/14 10:55:24 sw2103 1┆
0x055040…055060             20 30 0a 01 63 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2c 20 73 6f 75 72 63 65   ┆ 0  c SCCS and UNIX used, source┆
0x055060…055080             20 66 69 6c 65 20 39 32 2e 30 31 2e 32 32 2e 0a 01 65 0a 01 75 0a 01 55 0a 01 74 0a 01 54 0a 01   ┆ file 92.01.22.  e  u  U  t  T  ┆
0x055080…0550a0             49 20 31 0a 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆I 1  (*-------------------------┆
0x0550a0…0550c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0550c0…0550e0             2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39   ┆-------- -- -- (C) Copyrigth 199┆
0x0550e0…055100             32 20 20 44 41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 33 45 58 50 52 2e 50 41 53 0a 2d 2d 0a 2d 2d   ┆2  DANOSI -- -- P3EXPR.PAS -- --┆
0x055100…055120             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
                            […0x1…]
0x055140…055160             2d 0a 2d 2d 0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆- -- -- Revisions -- -----------┆
0x055160…055180             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20   ┆--------------------- --        ┆
0x055180…0551a0             39 31 2e 30 31 2e 32 32 20 20 45 42 4b 20 20 20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20   ┆91.01.22  EBK   Used in release ┆
0x0551a0…0551c0             31 2e 31 32 0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53   ┆1.12 --  1.1   92.10.14  HEJ   S┆
0x0551c0…0551e0             43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆CCS and UNIX used. -- ----------┆
0x0551e0…055200             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x055200…055220 (22, 1, 7)  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43   ┆------------------------- -- SCC┆
0x055220…055240             53 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d   ┆S information -- File   :  %P% -┆
0x055240…055260             2d 09 4d 6f 64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25   ┆- Module :  %M% -- Version:  %I%┆
0x055260…055280             0a 2d 2d 09 44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Date   :  %E%  %U% ---------┆
0x055280…0552a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0552a0…0552c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 0a   ┆-------------------------- *)   ┆
0x0552c0…0552e0             66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 63 5f 73 74 72 69 6e 67 3a 20 73 74 72 69 6e 67 70 74 72   ┆function alloc_string: stringptr┆
0x0552e0…055300             3b 0a 28 2a 20 64 65 6c 69 76 65 72 20 61 20 73 74 72 69 6e 67 6e 6f 64 65 20 2a 29 0a 0a 76 61   ┆; (* deliver a stringnode *)  va┆
0x055300…055320             72 20 73 74 72 72 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 73 74 72 72 3a   ┆r strr: stringptr;  begin  strr:┆
0x055320…055340             3d 20 66 72 65 65 73 74 72 69 6e 67 73 3b 0a 69 66 20 73 74 72 72 20 3d 20 6e 69 6c 73 74 72 69   ┆= freestrings; if strr = nilstri┆
0x055340…055360             6e 67 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 65 77 28 73 74 72 72 29 3b 0a 6d 61 78 73 74 72 69   ┆ng then begin new(strr); maxstri┆
0x055360…055380             6e 67 73 3a 3d 20 6d 61 78 73 74 72 69 6e 67 73 2b 31 3b 0a 73 74 72 72 5e 2e 6e 65 78 74 73 74   ┆ngs:= maxstrings+1; strr^.nextst┆
0x055380…0553a0             72 3a 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 20 73 74 72 72 20   ┆r:= nilstring; end;  with  strr ┆
0x0553a0…0553c0             5e 20 64 6f 0a 62 65 67 69 6e 0a 61 6c 6c 6f 63 5f 73 74 72 69 6e 67 3a 3d 20 73 74 72 72 3b 0a   ┆^ do begin alloc_string:= strr; ┆
0x0553c0…0553e0             66 72 65 65 73 74 72 69 6e 67 73 20 3a 3d 20 6e 65 78 74 73 74 72 3b 0a 6e 65 78 74 73 74 72 20   ┆freestrings := nextstr; nextstr ┆
0x0553e0…055400             20 20 20 20 3a 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a   ┆    := nilstring; end;  end;    ┆
0x055400…055420 (22, 1, 8)  70 72 6f 63 65 64 75 72 65 20 72 65 6c 65 61 73 65 5f 73 74 72 69 6e 67 20 28 78 73 74 72 69 6e   ┆procedure release_string (xstrin┆
0x055420…055440             67 3a 20 73 74 72 69 6e 67 70 74 72 29 3b 0a 28 2a 20 72 65 6c 65 61 73 65 73 20 61 20 77 68 6f   ┆g: stringptr); (* releases a who┆
0x055440…055460             6c 65 20 6c 69 73 74 2c 20 63 6f 6e 73 74 69 74 75 74 69 6e 67 20 61 20 6c 69 74 65 72 61 6c 20   ┆le list, constituting a literal ┆
0x055460…055480             2a 29 0a 0a 76 61 72 20 73 74 72 72 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 0a 62 65 67 69 6e 0a   ┆*)  var strr: stringptr;  begin ┆
0x055480…0554a0             0a 73 74 72 72 3a 3d 20 78 73 74 72 69 6e 67 3b 0a 0a 28 2a 20 73 63 61 6e 20 74 68 65 20 6c 69   ┆ strr:= xstring;  (* scan the li┆
0x0554a0…0554c0             73 74 20 74 6f 20 66 69 6e 64 20 74 68 65 20 74 65 72 6d 69 6e 61 74 69 6f 6e 20 2a 29 0a 72 65   ┆st to find the termination *) re┆
0x0554c0…0554e0             70 65 61 74 0a 77 69 74 68 20 20 73 74 72 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 73 74 72 72 3a   ┆peat with  strr ^ do begin strr:┆
0x0554e0…055500             3d 20 6e 65 78 74 73 74 72 3b 0a 69 66 20 73 74 72 72 20 3d 20 6e 69 6c 73 74 72 69 6e 67 20 74   ┆= nextstr; if strr = nilstring t┆
0x055500…055520             68 65 6e 0a 6e 65 78 74 73 74 72 3a 3d 20 66 72 65 65 73 74 72 69 6e 67 73 3b 20 28 2a 20 69 6e   ┆hen nextstr:= freestrings; (* in┆
0x055520…055540             73 65 72 74 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 66 72 65 65 20 6e 6f 64 65 73 20 2a 29 0a 65   ┆sert in front of free nodes *) e┆
0x055540…055560             6e 64 3b 0a 75 6e 74 69 6c 20 73 74 72 72 20 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 0a 66 72 65   ┆nd; until strr = nilstring;  fre┆
0x055560…055580             65 73 74 72 69 6e 67 73 3a 3d 20 78 73 74 72 69 6e 67 3b 20 20 28 2a 20 66 69 72 73 74 20 66 72   ┆estrings:= xstring;  (* first fr┆
0x055580…0555a0             65 65 20 69 6e 20 74 68 65 20 6c 69 73 74 20 2a 29 0a 0a 65 6e 64 3b 0a 0a 0a 0a 66 75 6e 63 74   ┆ee in the list *)  end;    funct┆
0x0555a0…0555c0             69 6f 6e 20 61 6c 6c 6f 63 5f 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 28 2a 20 64 65   ┆ion alloc_opand: opandptr; (* de┆
0x0555c0…0555e0             6c 69 76 65 72 73 20 61 6e 20 6f 70 61 6e 64 20 6e 6f 64 65 2c 20 69 6e 69 74 69 61 6c 69 7a 65   ┆livers an opand node, initialize┆
0x0555e0…055600             64 20 77 69 74 68 20 63 75 72 5f 6c 69 6e 65 6e 6f 20 2a 29 0a 0a 76 61 72 20 6f 70 61 6e 64 3a   ┆d with cur_lineno *)  var opand:┆
0x055600…055620 (22, 1, 9)  20 6f 70 61 6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 6f 70 61 6e 64 3a 3d 20 66 72 65 65 6f   ┆ opandptr;  begin  opand:= freeo┆
0x055620…055640             70 61 6e 64 73 3b 0a 69 66 20 6f 70 61 6e 64 20 3d 20 6e 69 6c 6f 70 61 6e 64 20 74 68 65 6e 0a   ┆pands; if opand = nilopand then ┆
0x055640…055660             62 65 67 69 6e 0a 6e 65 77 28 6f 70 61 6e 64 29 3b 0a 6d 61 78 6f 70 61 6e 64 73 3a 3d 20 6d 61   ┆begin new(opand); maxopands:= ma┆
0x055660…055680             78 6f 70 61 6e 64 73 2b 31 3b 0a 77 69 74 68 20 6f 70 61 6e 64 5e 20 64 6f 0a 62 65 67 69 6e 0a   ┆xopands+1; with opand^ do begin ┆
0x055680…0556a0             6e 65 78 74 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 6f 70 63 6f 64 65 3a 3d 20 63 65 72 72 6f 72   ┆next:= nilopand; opcode:= cerror┆
0x0556a0…0556c0             61 72 67 3b 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 62 65 63 61 75 73 65 20 69 74 20 69   ┆arg; (* initialized because it i┆
0x0556c0…0556e0             73 20 75 73 65 64 20 61 73 20 27 77 6f 72 6b 69 6e 67 20 6c 6f 63 61 74 69 6f 6e 27 20 62 79 20   ┆s used as 'working location' by ┆
0x0556e0…055700             27 74 65 73 74 69 6e 64 65 78 27 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 20   ┆'testindex' *) end; end;  with  ┆
0x055700…055720             6f 70 61 6e 64 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 61 6c 6c 6f 63 5f 6f 70 61 6e 64 3a 3d 20 6f   ┆opand ^ do begin alloc_opand:= o┆
0x055720…055740             70 61 6e 64 3b 0a 66 72 65 65 6f 70 61 6e 64 73 20 3a 3d 20 6e 65 78 74 3b 0a 6e 65 78 74 20 20   ┆pand; freeopands := next; next  ┆
0x055740…055760             20 20 20 20 20 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 6f 70 5f 6c 69 6e 65 6e 6f 20 20 3a 3d 20   ┆     := nilopand; op_lineno  := ┆
0x055760…055780             63 75 72 5f 6c 69 6e 65 6e 6f 3b 0a 6f 70 5f 6e 61 6d 65 20 20 20 20 3a 3d 20 6e 69 6c 6e 61 6d   ┆cur_lineno; op_name    := nilnam┆
0x055780…0557a0             65 3b 0a 6f 70 5f 76 61 6c 75 65 20 20 20 3a 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 6f 70 5f 70   ┆e; op_value   := nilstring; op_p┆
0x0557a0…0557c0             61 63 6b 66 6c 61 67 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70   ┆ackflag:= false; end;  end;    p┆
0x0557c0…0557e0             72 6f 63 65 64 75 72 65 20 72 65 6c 65 61 73 65 5f 65 78 70 72 20 28 65 78 70 72 3a 20 6f 70 61   ┆rocedure release_expr (expr: opa┆
0x0557e0…055800             6e 64 70 74 72 29 3b 0a 28 2a 20 77 6f 72 6b 73 20 61 73 20 27 65 6d 69 74 65 78 70 72 27 2c 20   ┆ndptr); (* works as 'emitexpr', ┆
0x055800…055820 (22, 1, 10) 62 75 74 20 64 6f 65 73 20 6f 6e 6c 79 20 74 68 65 20 72 65 6c 65 61 73 69 6e 67 20 2a 29 0a 0a   ┆but does only the releasing *)  ┆
0x055820…055840             62 65 67 69 6e 0a 0a 77 68 69 6c 65 20 65 78 70 72 20 3c 3e 20 6e 69 6c 6f 70 61 6e 64 20 64 6f   ┆begin  while expr <> nilopand do┆
0x055840…055860             0a 77 69 74 68 20 20 65 78 70 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 6c 65 66 74 20 3c   ┆ with  expr ^ do begin if left <┆
0x055860…055880             3e 20 6e 69 6c 6f 70 61 6e 64 20 74 68 65 6e 0a 72 65 6c 65 61 73 65 5f 65 78 70 72 20 28 6c 65   ┆> nilopand then release_expr (le┆
0x055880…0558a0             66 74 29 3b 0a 69 66 20 6f 70 5f 76 61 6c 75 65 20 3c 3e 20 6e 69 6c 73 74 72 69 6e 67 20 74 68   ┆ft); if op_value <> nilstring th┆
0x0558a0…0558c0             65 6e 0a 72 65 6c 65 61 73 65 5f 73 74 72 69 6e 67 20 28 6f 70 5f 76 61 6c 75 65 29 3b 0a 6e 65   ┆en release_string (op_value); ne┆
0x0558c0…0558e0             78 74 3a 3d 20 66 72 65 65 6f 70 61 6e 64 73 3b 0a 66 72 65 65 6f 70 61 6e 64 73 3a 3d 20 65 78   ┆xt:= freeopands; freeopands:= ex┆
0x0558e0…055900             70 72 3b 0a 65 78 70 72 3a 3d 20 72 69 67 74 68 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20   ┆pr; expr:= rigth; end;  end; (* ┆
0x055900…055920             70 72 6f 63 65 64 75 72 65 20 72 65 6c 65 61 73 65 2d 65 78 70 72 20 2a 29 0a 0a 0a 0a 66 75 6e   ┆procedure release-expr *)    fun┆
0x055920…055940             63 74 69 6f 6e 20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 28   ┆ction alloc_namenode: nameptr; (┆
0x055940…055960             2a 20 64 65 6c 69 76 65 72 73 20 61 20 6e 61 6d 65 6e 6f 64 65 2c 20 69 6e 69 74 69 61 6c 69 7a   ┆* delivers a namenode, initializ┆
0x055960…055980             65 64 20 61 73 20 64 75 6d 6d 79 20 2a 29 0a 0a 76 61 72 20 6e 61 6d 65 3a 20 6e 61 6d 65 70 74   ┆ed as dummy *)  var name: namept┆
0x055980…0559a0             72 3b 0a 62 65 67 69 6e 0a 6e 61 6d 65 3a 3d 20 66 72 65 65 6e 61 6d 65 73 3b 0a 69 66 20 6e 61   ┆r; begin name:= freenames; if na┆
0x0559a0…0559c0             6d 65 20 3d 20 6e 69 6c 6e 61 6d 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 65 77 28 6e 61 6d 65   ┆me = nilname then begin new(name┆
0x0559c0…0559e0             29 3b 0a 77 69 74 68 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74 6e 61 6d 65   ┆); with name ^ do begin nextname┆
0x0559e0…055a00             3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 6d 61 78 6e 69 78 3a 3d 20 6d 61 78 6e 69 78 2b 31 3b 0a 6e   ┆:= nilname; maxnix:= maxnix+1; n┆
0x055a00…055a20 (22, 1, 11) 69 78 3a 3d 20 6d 61 78 6e 69 78 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 69 6e 69 74 69   ┆ix:= maxnix; end; end;  (* initi┆
0x055a20…055a40             61 6c 69 7a 65 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 61   ┆alize *) with  name ^ do begin a┆
0x055a40…055a60             6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3a 3d 20 6e 61 6d 65 3b 0a 66 72 65 65 6e 61 6d 65 73 3a   ┆lloc_namenode:= name; freenames:┆
0x055a60…055a80             3d 20 6e 65 78 74 6e 61 6d 65 3b 20 28 2a 20 75 6e 6c 69 6e 6b 20 66 72 6f 6d 20 66 72 65 65 2d   ┆= nextname; (* unlink from free-┆
0x055a80…055aa0             63 68 61 69 6e 20 2a 29 0a 6e 65 78 74 6e 61 6d 65 20 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 0a 66   ┆chain *) nextname := nilname;  f┆
0x055aa0…055ac0             6f 72 77 61 72 64 5f 64 65 63 6c 20 3a 3d 20 66 61 6c 73 65 3b 0a 65 78 74 65 72 6e 61 6c 5f 64   ┆orward_decl := false; external_d┆
0x055ac0…055ae0             65 63 6c 3a 3d 20 66 61 6c 73 65 3b 0a 66 75 6e 63 5f 61 73 73 69 67 6e 65 64 3a 3d 20 66 61 6c   ┆ecl:= false; func_assigned:= fal┆
0x055ae0…055b00             73 65 3b 0a 75 73 65 64 6c 65 76 65 6c 3a 3d 20 6e 69 6c 5f 6e 61 6d 65 73 74 61 63 6b 5f 70 74   ┆se; usedlevel:= nil_namestack_pt┆
0x055b00…055b20             72 3b 20 28 2a 20 69 2e 65 2e 20 6e 6f 74 20 75 73 65 64 20 2a 29 0a 70 61 72 61 6d 73 3a 3d 20   ┆r; (* i.e. not used *) params:= ┆
0x055b20…055b40             6e 69 6c 6e 61 6d 65 3b 0a 74 79 70 3a 3d 20 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 3b 0a 65   ┆nilname; typ:= dummy_typenode; e┆
0x055b40…055b60             6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 6c 65 61 73 65 5f 74   ┆nd;  end;    procedure release_t┆
0x055b60…055b80             79 70 65 6e 6f 64 65 20 28 78 74 79 70 65 3a 20 74 79 70 65 70 74 72 29 3b 20 66 6f 72 77 61 72   ┆ypenode (xtype: typeptr); forwar┆
0x055b80…055ba0             64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 6c 65 61 73 65 6e 61 6d 65 73 20 28 78 6e 61 6d   ┆d;  procedure releasenames (xnam┆
0x055ba0…055bc0             65 6c 69 73 74 20 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 28 2a 20 72 65 6c 65 61 73 65 73 20 61 6c   ┆elist : nameptr); (* releases al┆
0x055bc0…055be0             6c 20 6e 61 6d 65 6e 6f 64 65 73 20 69 6e 20 74 68 65 20 6c 69 73 74 20 2a 29 0a 28 2a 20 69 66   ┆l namenodes in the list *) (* if┆
0x055be0…055c00             20 61 20 6e 61 6d 65 6e 6f 64 65 20 69 73 20 61 20 74 79 70 65 6e 61 6d 65 2c 20 74 68 65 20 63   ┆ a namenode is a typename, the c┆
0x055c00…055c20 (22, 1, 12) 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 28 2a 20 20 20 77 69   ┆orresponding typenode *) (*   wi┆
0x055c20…055c40             6c 6c 20 62 65 20 72 65 6c 65 61 73 65 64 20 74 6f 6f 20 2a 29 0a 0a 76 61 72 20 6e 61 6d 65 3a   ┆ll be released too *)  var name:┆
0x055c40…055c60             20 6e 61 6d 65 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 77 68 69 6c 65 20 78 6e 61 6d 65 6c 69 73   ┆ nameptr;  begin  while xnamelis┆
0x055c60…055c80             74 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 20 78 6e 61 6d 65 6c 69 73 74 20   ┆t <> nilname do with  xnamelist ┆
0x055c80…055ca0             5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 70 61 72 61 6d 73 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20   ┆^ do begin if params <> nilname ┆
0x055ca0…055cc0             74 68 65 6e 0a 72 65 6c 65 61 73 65 6e 61 6d 65 73 20 28 70 61 72 61 6d 73 29 3b 20 28 2a 20 72   ┆then releasenames (params); (* r┆
0x055cc0…055ce0             65 6c 65 61 73 65 20 70 61 72 61 6d 6c 69 73 74 73 20 6f 66 20 69 6e 6e 65 72 20 72 6f 75 74 69   ┆elease paramlists of inner routi┆
0x055ce0…055d00             6e 65 73 20 2a 29 0a 69 66 20 74 79 70 20 3c 3e 20 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 20   ┆nes *) if typ <> dummy_typenode ┆
0x055d00…055d20             74 68 65 6e 0a 69 66 20 28 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 75 6e 64 65 63 6c 61 72 65 64   ┆then if (namekind <> cundeclared┆
0x055d20…055d40             29 20 61 6e 64 20 28 6e 61 6d 65 6b 69 6e 64 3c 3e 63 65 78 74 70 72 6f 63 65 73 73 20 28 2a 20   ┆) and (namekind<>cextprocess (* ┆
0x055d40…055d60             64 6f 20 6e 6f 74 20 72 65 6c 65 61 73 65 20 73 6f 6e 20 74 79 70 65 20 2a 29 29 20 74 68 65 6e   ┆do not release son type *)) then┆
0x055d60…055d80             0a 72 65 6c 65 61 73 65 5f 74 79 70 65 6e 6f 64 65 20 28 74 79 70 29 3b 20 28 2a 20 72 65 6c 65   ┆ release_typenode (typ); (* rele┆
0x055d80…055da0             61 73 65 20 74 79 70 65 6e 6f 64 65 20 6f 66 20 6c 6f 63 61 6c 20 74 79 70 65 20 2a 29 0a 0a 28   ┆ase typenode of local type *)  (┆
0x055da0…055dc0             2a 20 69 6e 73 65 72 74 20 69 6e 20 66 72 65 65 2d 63 68 61 69 6e 20 2a 29 0a 6e 61 6d 65 3a 3d   ┆* insert in free-chain *) name:=┆
0x055dc0…055de0             20 6e 65 78 74 6e 61 6d 65 3b 0a 6e 65 78 74 6e 61 6d 65 3a 3d 20 66 72 65 65 6e 61 6d 65 73 3b   ┆ nextname; nextname:= freenames;┆
0x055de0…055e00             0a 66 72 65 65 6e 61 6d 65 73 3a 3d 20 78 6e 61 6d 65 6c 69 73 74 3b 0a 0a 78 6e 61 6d 65 6c 69   ┆ freenames:= xnamelist;  xnameli┆
0x055e00…055e20 (22, 1, 13) 73 74 3a 3d 20 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 78 6e 61 6d 65 6c 69   ┆st:= name;  end; (* with xnameli┆
0x055e20…055e40             73 74 20 2a 29 0a 0a 65 6e 64 3b 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 63 5f 74 79   ┆st *)  end;    function alloc_ty┆
0x055e40…055e60             70 65 6e 6f 64 65 20 3a 20 74 79 70 65 70 74 72 3b 0a 28 2a 20 64 65 6c 69 76 65 72 73 20 61 20   ┆penode : typeptr; (* delivers a ┆
0x055e60…055e80             74 79 70 65 6e 6f 64 65 2c 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 61 73 20 64 75 6d 6d 79 20 2a   ┆typenode, initialized as dummy *┆
0x055e80…055ea0             29 0a 0a 76 61 72 20 6e 61 6d 65 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 6c 6f 63 61 6c 5f 74 79 70   ┆)  var name : nameptr; local_typ┆
0x055ea0…055ec0             65 3a 20 74 79 70 65 70 74 72 3b 0a 62 65 67 69 6e 0a 0a 6e 61 6d 65 3a 3d 20 66 72 65 65 74 79   ┆e: typeptr; begin  name:= freety┆
0x055ec0…055ee0             70 65 6e 61 6d 65 3b 0a 69 66 20 6e 61 6d 65 20 3d 20 6e 69 6c 6e 61 6d 65 20 74 68 65 6e 0a 62   ┆pename; if name = nilname then b┆
0x055ee0…055f00             65 67 69 6e 0a 6e 65 77 28 6c 6f 63 61 6c 5f 74 79 70 65 29 3b 0a 6d 61 78 74 79 70 65 73 3a 3d   ┆egin new(local_type); maxtypes:=┆
0x055f00…055f20             20 6d 61 78 74 79 70 65 73 2b 31 3b 0a 77 69 74 68 20 6c 6f 63 61 6c 5f 74 79 70 65 5e 20 64 6f   ┆ maxtypes+1; with local_type^ do┆
0x055f20…055f40             0a 62 65 67 69 6e 0a 74 79 70 65 6b 69 6e 64 3a 3d 20 63 6e 6f 63 6f 64 65 3b 0a 73 75 62 65 78   ┆ begin typekind:= cnocode; subex┆
0x055f40…055f60             70 72 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 65 6e 64 3b 0a 72 65 6c 65 61 73 65 5f 74 79 70 65   ┆pr:= nilopand; end; release_type┆
0x055f60…055f80             6e 6f 64 65 28 6c 6f 63 61 6c 5f 74 79 70 65 29 3b 0a 6e 61 6d 65 3a 3d 20 66 72 65 65 74 79 70   ┆node(local_type); name:= freetyp┆
0x055f80…055fa0             65 6e 61 6d 65 3b 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 69 66 20 6e   ┆ename; if compilertest then if n┆
0x055fa0…055fc0             61 6d 65 3d 6e 69 6c 6e 61 6d 65 20 74 68 65 6e 20 0a 63 6f 6d 70 5f 65 72 72 6f 72 28 74 6f 6f   ┆ame=nilname then  comp_error(too┆
0x055fc0…055fe0             5f 6d 61 6e 79 5f 74 79 70 65 73 29 3b 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e   ┆_many_types); end;  with  name ^┆
0x055fe0…056000             20 64 6f 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 0a 0a 62 65 67 69 6e 0a 61 6c 6c 6f 63 5f   ┆ do with  typ ^ do  begin alloc_┆
0x056000…056020 (22, 1, 14) 74 79 70 65 6e 6f 64 65 3a 3d 20 74 79 70 3b 0a 66 72 65 65 74 79 70 65 6e 61 6d 65 3a 3d 20 6e   ┆typenode:= typ; freetypename:= n┆
0x056020…056040             65 78 74 6e 61 6d 65 3b 0a 6e 65 78 74 6e 61 6d 65 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 74 79 70   ┆extname; nextname:= nilname; typ┆
0x056040…056060             3a 3d 20 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 3b 0a 72 65 6c 65 61 73 65 6e 61 6d 65 73 20   ┆:= dummy_typenode; releasenames ┆
0x056060…056080             28 6e 61 6d 65 29 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 79 70 65 6e 6f 64 65 20   ┆(name);  (* initialize typenode ┆
0x056080…0560a0             2a 29 0a 65 6c 65 6d 65 6e 74 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 69 6e 64 65 78 20 20 3a 3d 20   ┆*) element:= nilname; index  := ┆
0x0560a0…0560c0             6e 69 6c 6e 61 6d 65 3b 0a 73 75 62 65 78 70 72 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 74 79 70   ┆nilname; subexpr:= nilopand; typ┆
0x0560c0…0560e0             65 6b 69 6e 64 3a 3d 20 63 6e 6f 63 6f 64 65 3b 0a 63 6f 6e 74 65 6e 74 73 3a 3d 20 5b 20 74 5f   ┆ekind:= cnocode; contents:= [ t_┆
0x0560e0…056100             73 69 6d 70 6c 65 20 5d 3b 20 20 28 2a 20 64 65 66 61 75 6c 74 20 2a 29 0a 70 61 63 6b 66 6c 61   ┆simple ];  (* default *) packfla┆
0x056100…056120             67 3a 3d 20 66 61 6c 73 65 3b 0a 65 6d 69 74 74 65 64 3a 3d 20 66 61 6c 73 65 3b 0a 0a 65 6e 64   ┆g:= false; emitted:= false;  end┆
0x056120…056140             3b 20 28 2a 20 77 69 74 68 20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70   ┆; (* with typenode *)  end;    p┆
0x056140…056160             72 6f 63 65 64 75 72 65 20 72 65 6c 65 61 73 65 5f 74 79 70 65 6e 6f 64 65 20 28 78 74 79 70 65   ┆rocedure release_typenode (xtype┆
0x056160…056180             3a 20 74 79 70 65 70 74 72 29 3b 0a 0a 76 61 72 20 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a   ┆: typeptr);  var name: nameptr; ┆
0x056180…0561a0             0a 62 65 67 69 6e 0a 77 69 74 68 20 20 78 74 79 70 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66   ┆ begin with  xtype ^ do begin if┆
0x0561a0…0561c0             20 74 79 70 65 6b 69 6e 64 20 3d 20 63 72 65 63 6f 72 64 20 74 68 65 6e 0a 72 65 6c 65 61 73 65   ┆ typekind = crecord then release┆
0x0561c0…0561e0             6e 61 6d 65 73 20 28 65 6c 65 6d 65 6e 74 29 3b 20 28 2a 20 72 65 6c 65 61 73 65 20 66 69 65 6c   ┆names (element); (* release fiel┆
0x0561e0…056200             64 2d 6c 69 73 74 20 6f 66 20 72 65 63 6f 72 64 20 2a 29 0a 69 66 20 73 75 62 65 78 70 72 20 3c   ┆d-list of record *) if subexpr <┆
0x056200…056220 (22, 1, 15) 3e 20 6e 69 6c 6f 70 61 6e 64 20 74 68 65 6e 0a 72 65 6c 65 61 73 65 5f 65 78 70 72 20 28 73 75   ┆> nilopand then release_expr (su┆
0x056220…056240             62 65 78 70 72 29 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 78 74 79 70 65 20 2a 29 0a 6e 61   ┆bexpr); end; (* with xtype *) na┆
0x056240…056260             6d 65 3a 3d 20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3b 0a 77 69 74 68 20 20 6e 61 6d 65 20   ┆me:= alloc_namenode; with  name ┆
0x056260…056280             5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 61 6d 65 6b 69 6e 64 3a 3d 20 63 74 79 70 65 3b 0a 74 79 70   ┆^ do begin namekind:= ctype; typ┆
0x056280…0562a0             3a 3d 20 78 74 79 70 65 3b 0a 6e 65 78 74 6e 61 6d 65 3a 3d 20 66 72 65 65 74 79 70 65 6e 61 6d   ┆:= xtype; nextname:= freetypenam┆
0x0562a0…0562c0             65 3b 0a 66 72 65 65 74 79 70 65 6e 61 6d 65 3a 3d 20 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 65 6e   ┆e; freetypename:= name; end;  en┆
0x0562c0…0562e0             64 3b 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 63 5f 6c 61 62 65 6c 3a 20 6c 61 62 65   ┆d;    function alloc_label: labe┆
0x0562e0…056300             6c 70 74 72 3b 0a 28 2a 20 64 65 6c 69 76 65 72 73 20 61 20 6c 61 62 65 6c 6e 6f 64 65 20 2a 29   ┆lptr; (* delivers a labelnode *)┆
0x056300…056320             0a 0a 76 61 72 20 6c 61 62 3a 20 6c 61 62 65 6c 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 6c 61 62   ┆  var lab: labelptr;  begin  lab┆
0x056320…056340             3a 3d 20 66 72 65 65 6c 61 62 65 6c 73 3b 0a 69 66 20 6c 61 62 20 3d 20 6e 69 6c 6c 61 62 65 6c   ┆:= freelabels; if lab = nillabel┆
0x056340…056360             20 74 68 65 6e 0a 62 65 67 69 6e 0a 6e 65 77 28 6c 61 62 29 3b 0a 6d 61 78 6c 61 62 65 6c 73 3a   ┆ then begin new(lab); maxlabels:┆
0x056360…056380             3d 20 6d 61 78 6c 61 62 65 6c 73 2b 31 3b 0a 6c 61 62 5e 2e 70 72 65 76 6c 61 62 65 6c 3a 3d 20   ┆= maxlabels+1; lab^.prevlabel:= ┆
0x056380…0563a0             6e 69 6c 6c 61 62 65 6c 3b 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 20 6c 61 62 20 5e 20 64 6f 0a 62   ┆nillabel; end;  with  lab ^ do b┆
0x0563a0…0563c0             65 67 69 6e 0a 61 6c 6c 6f 63 5f 6c 61 62 65 6c 3a 3d 20 6c 61 62 3b 0a 66 72 65 65 6c 61 62 65   ┆egin alloc_label:= lab; freelabe┆
0x0563c0…0563e0             6c 73 20 3a 3d 20 70 72 65 76 6c 61 62 65 6c 3b 0a 70 72 65 76 6c 61 62 65 6c 20 20 3a 3d 20 6e   ┆ls := prevlabel; prevlabel  := n┆
0x0563e0…056400             69 6c 6c 61 62 65 6c 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0c 0a 0a 0a 66 75 6e 63 74 69 6f   ┆illabel; end;  end;      functio┆
0x056400…056420 (23, 0, 1)  6e 20 72 65 61 64 73 74 72 69 6e 67 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 28 2a 20 72 65 61 64   ┆n readstring: stringptr; (* read┆
0x056420…056440             73 3a 20 6c 65 6e 67 74 68 2c 20 63 68 61 72 20 5b 20 31 20 2e 2e 20 6c 65 6e 67 74 68 20 5d 20   ┆s: length, char [ 1 .. length ] ┆
0x056440…056460             66 72 6f 6d 20 70 61 73 73 31 66 69 6c 65 20 2a 29 0a 28 2a 20 20 61 6e 64 20 70 61 63 6b 73 20   ┆from pass1file *) (*  and packs ┆
0x056460…056480             69 6e 74 6f 20 73 74 72 69 6e 67 6e 6f 64 65 73 20 2a 29 0a 0a 76 61 72 0a 6c 65 6e 67 74 68 3a   ┆into stringnodes *)  var length:┆
0x056480…0564a0             20 69 6e 74 65 67 65 72 3b 0a 63 75 72 73 74 72 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 69 2c 20   ┆ integer; curstr: stringptr; i, ┆
0x0564a0…0564c0             70 6f 72 74 69 6f 6e 3a 20 73 74 72 5f 69 6e 64 65 78 3b 0a 0a 62 65 67 69 6e 0a 0a 6c 65 6e 67   ┆portion: str_index;  begin  leng┆
0x0564c0…0564e0             74 68 3a 3d 20 70 61 73 73 69 6e 3b 20 28 2a 20 67 65 74 20 6c 65 6e 67 74 68 20 6f 66 20 73 74   ┆th:= passin; (* get length of st┆
0x0564e0…056500             72 69 6e 67 20 2a 29 0a 0a 63 75 72 73 74 72 3a 3d 20 61 6c 6c 6f 63 5f 73 74 72 69 6e 67 3b 0a   ┆ring *)  curstr:= alloc_string; ┆
0x056500…056520             72 65 61 64 73 74 72 69 6e 67 3a 3d 20 63 75 72 73 74 72 3b 20 28 2a 20 72 65 73 75 6c 74 20 69   ┆readstring:= curstr; (* result i┆
0x056520…056540             73 20 28 66 69 72 73 74 29 20 73 74 72 69 6e 67 6e 6f 64 65 20 2a 29 0a 63 75 72 73 74 72 5e 2e   ┆s (first) stringnode *) curstr^.┆
0x056540…056560             73 74 72 69 6e 67 6c 67 74 20 3a 3d 20 6c 65 6e 67 74 68 3b 0a 0a 70 6f 72 74 69 6f 6e 3a 3d 20   ┆stringlgt := length;  portion:= ┆
0x056560…056580             6d 61 78 73 74 72 69 6e 67 3b 0a 0a 63 75 72 73 74 72 5e 2e 73 74 72 69 6e 67 6c 67 74 20 3a 3d   ┆maxstring;  curstr^.stringlgt :=┆
0x056580…0565a0             20 6c 65 6e 67 74 68 3b 0a 0a 77 68 69 6c 65 20 6c 65 6e 67 74 68 20 3e 20 30 20 64 6f 0a 77 69   ┆ length;  while length > 0 do wi┆
0x0565a0…0565c0             74 68 20 20 63 75 72 73 74 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 0a 28 2a 20 72 65 61 64 20 61   ┆th  curstr ^ do begin  (* read a┆
0x0565c0…0565e0             20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 20 2a 29 0a 73 74 72 69 6e 67   ┆ portion of the string *) string┆
0x0565e0…056600             6c 67 74 3a 3d 20 6c 65 6e 67 74 68 3b 0a 69 66 20 6c 65 6e 67 74 68 20 3c 20 70 6f 72 74 69 6f   ┆lgt:= length; if length < portio┆
0x056600…056620 (23, 0, 2)  6e 20 74 68 65 6e 20 70 6f 72 74 69 6f 6e 3a 3d 20 6c 65 6e 67 74 68 3b 0a 6c 65 6e 67 74 68 3a   ┆n then portion:= length; length:┆
0x056620…056640             3d 20 6c 65 6e 67 74 68 20 2d 20 70 6f 72 74 69 6f 6e 3b 0a 66 6f 72 20 69 3a 3d 20 31 20 74 6f   ┆= length - portion; for i:= 1 to┆
0x056640…056660             20 70 6f 72 74 69 6f 6e 20 64 6f 0a 73 74 72 20 5b 20 69 20 5d 3a 3d 20 63 68 72 20 28 70 61 73   ┆ portion do str [ i ]:= chr (pas┆
0x056660…056680             73 69 6e 29 3b 0a 0a 69 66 20 6c 65 6e 67 74 68 20 3e 20 30 20 74 68 65 6e 0a 6e 65 78 74 73 74   ┆sin);  if length > 0 then nextst┆
0x056680…0566a0             72 3a 3d 20 61 6c 6c 6f 63 5f 73 74 72 69 6e 67 3b 0a 0a 63 75 72 73 74 72 3a 3d 20 6e 65 78 74   ┆r:= alloc_string;  curstr:= next┆
0x0566a0…0566c0             73 74 72 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 63 75 72 73 74 72 20 2a 29 0a 0a 65 6e   ┆str;  end; (* with curstr *)  en┆
0x0566c0…0566e0             64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 72 65 61 64 73 74 72 69 6e 67 20 2a 29 0a 0a 0a   ┆d; (* procedure readstring *)   ┆
0x0566e0…056700             0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 73 74 72 69 6e 67 20 28 73 74 72 72 3a 20 73 74 72   ┆ procedure emitstring (strr: str┆
0x056700…056720             69 6e 67 70 74 72 29 3b 0a 0a 76 61 72 0a 6c 65 6e 67 74 68 3a 20 69 6e 74 65 67 65 72 3b 0a 63   ┆ingptr);  var length: integer; c┆
0x056720…056740             75 72 73 74 72 3a 20 73 74 72 69 6e 67 70 74 72 3b 0a 69 2c 20 70 6f 72 74 69 6f 6e 3a 20 73 74   ┆urstr: stringptr; i, portion: st┆
0x056740…056760             72 5f 69 6e 64 65 78 3b 0a 0a 62 65 67 69 6e 0a 0a 63 75 72 73 74 72 3a 3d 20 73 74 72 72 3b 0a   ┆r_index;  begin  curstr:= strr; ┆
0x056760…056780             70 6f 72 74 69 6f 6e 3a 3d 20 6d 61 78 73 74 72 69 6e 67 3b 0a 0a 77 69 74 68 20 20 63 75 72 73   ┆portion:= maxstring;  with  curs┆
0x056780…0567a0             74 72 20 5e 20 64 6f 0a 6c 65 6e 67 74 68 3a 3d 20 73 74 72 69 6e 67 6c 67 74 3b 0a 0a 65 6d 69   ┆tr ^ do length:= stringlgt;  emi┆
0x0567a0…0567c0             74 69 6e 20 28 6c 65 6e 67 74 68 29 3b 0a 0a 69 66 20 6c 65 6e 67 74 68 20 3e 20 30 20 74 68 65   ┆tin (length);  if length > 0 the┆
0x0567c0…0567e0             6e 0a 72 65 70 65 61 74 0a 77 69 74 68 20 20 63 75 72 73 74 72 20 5e 20 64 6f 0a 62 65 67 69 6e   ┆n repeat with  curstr ^ do begin┆
0x0567e0…056800             0a 69 66 20 70 6f 72 74 69 6f 6e 20 3e 20 73 74 72 69 6e 67 6c 67 74 20 74 68 65 6e 20 70 6f 72   ┆ if portion > stringlgt then por┆
0x056800…056820 (23, 0, 3)  74 69 6f 6e 3a 3d 20 73 74 72 69 6e 67 6c 67 74 3b 0a 0a 66 6f 72 20 69 3a 3d 20 31 20 74 6f 20   ┆tion:= stringlgt;  for i:= 1 to ┆
0x056820…056840             70 6f 72 74 69 6f 6e 20 64 6f 0a 65 6d 69 74 69 6e 20 28 20 6f 72 64 20 28 20 73 74 72 20 5b 20   ┆portion do emitin ( ord ( str [ ┆
0x056840…056860             69 20 5d 20 29 20 29 3b 0a 0a 63 75 72 73 74 72 3a 3d 20 6e 65 78 74 73 74 72 3b 0a 65 6e 64 3b   ┆i ] ) );  curstr:= nextstr; end;┆
0x056860…056880             20 28 2a 20 77 69 74 68 20 63 75 72 73 74 72 20 2a 29 0a 0a 75 6e 74 69 6c 20 63 75 72 73 74 72   ┆ (* with curstr *)  until curstr┆
0x056880…0568a0             20 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65   ┆ = nilstring;  end; (* procedure┆
0x0568a0…0568c0             20 65 6d 69 74 73 74 72 69 6e 67 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74   ┆ emitstring *)    procedure emit┆
0x0568c0…0568e0             5f 65 78 74 6e 61 6d 65 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 0a 62 65 67   ┆_extname (opand: opandptr);  beg┆
0x0568e0…056900             69 6e 0a 0a 65 6d 69 74 20 28 78 6e 61 6d 65 29 3b 0a 77 69 74 68 20 20 6f 70 61 6e 64 20 5e 20   ┆in  emit (xname); with  opand ^ ┆
0x056900…056920             64 6f 0a 65 6d 69 74 73 74 72 69 6e 67 20 28 6f 70 5f 76 61 6c 75 65 29 3b 0a 72 65 6c 65 61 73   ┆do emitstring (op_value); releas┆
0x056920…056940             65 5f 65 78 70 72 20 28 6f 70 61 6e 64 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75   ┆e_expr (opand);  end;    procedu┆
0x056940…056960             72 65 20 73 74 64 73 70 69 78 20 28 78 73 70 69 78 3a 20 69 6e 74 65 67 65 72 3b 20 78 73 74 64   ┆re stdspix (xspix: integer; xstd┆
0x056960…056980             6e 61 6d 65 3a 20 73 74 64 6e 61 6d 65 5f 72 61 6e 67 65 29 3b 0a 0a 28 2a 20 69 6e 73 65 72 74   ┆name: stdname_range);  (* insert┆
0x056980…0569a0             73 20 74 68 65 20 76 61 6c 75 65 20 27 78 73 70 69 78 27 20 69 6e 20 73 74 64 73 70 69 78 2d 74   ┆s the value 'xspix' in stdspix-t┆
0x0569a0…0569c0             61 62 6c 65 20 2a 29 0a 28 2a 20 2e 2e 2e 20 74 68 65 20 76 61 6c 75 65 20 2d 31 20 69 73 20 3c   ┆able *) (* ... the value -1 is <┆
0x0569c0…0569e0             64 75 6d 6d 79 2d 76 61 6c 75 65 3e 20 2a 29 0a 0a 76 61 72 20 69 3a 20 73 74 64 6e 61 6d 65 5f   ┆dummy-value> *)  var i: stdname_┆
0x0569e0…056a00             72 61 6e 67 65 3b 0a 0a 62 65 67 69 6e 0a 0a 73 74 64 73 70 69 78 5f 74 61 62 6c 65 20 5b 20 78   ┆range;  begin  stdspix_table [ x┆
0x056a00…056a20 (23, 0, 4)  73 74 64 6e 61 6d 65 20 5d 3a 3d 20 78 73 70 69 78 3b 0a 0a 6d 61 78 73 74 64 73 70 69 78 3a 3d   ┆stdname ]:= xspix;  maxstdspix:=┆
0x056a20…056a40             20 2d 31 3b 20 28 2a 20 61 73 73 75 6d 65 20 61 6c 6c 20 65 6e 74 72 69 65 73 20 61 72 65 20 64   ┆ -1; (* assume all entries are d┆
0x056a40…056a60             75 6d 6d 79 20 2a 29 0a 28 2a 20 6d 61 78 73 74 64 73 70 69 78 20 69 73 20 75 73 65 64 20 77 68   ┆ummy *) (* maxstdspix is used wh┆
0x056a60…056a80             65 6e 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 61 20 73 70 69 78 20 74 6f 20 62 65 20 27 73 70 65   ┆en determining a spix to be 'spe┆
0x056a80…056aa0             63 69 61 6c 27 20 2a 29 0a 0a 66 6f 72 20 69 3a 3d 20 63 61 6e 6f 6e 79 6d 6f 75 73 20 74 6f 20   ┆cial' *)  for i:= canonymous to ┆
0x056aa0…056ac0             63 6f 72 64 20 64 6f 0a 69 66 20 6d 61 78 73 74 64 73 70 69 78 20 3c 20 73 74 64 73 70 69 78 5f   ┆cord do if maxstdspix < stdspix_┆
0x056ac0…056ae0             74 61 62 6c 65 20 5b 20 69 20 5d 20 74 68 65 6e 0a 6d 61 78 73 74 64 73 70 69 78 3a 3d 20 73 74   ┆table [ i ] then maxstdspix:= st┆
0x056ae0…056b00             64 73 70 69 78 5f 74 61 62 6c 65 20 5b 20 69 20 5d 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63   ┆dspix_table [ i ];  end;    proc┆
0x056b00…056b20             65 64 75 72 65 20 73 74 61 6e 64 61 72 64 6e 61 6d 65 3b 0a 28 2a 20 63 61 6c 6c 65 64 20 66 72   ┆edure standardname; (* called fr┆
0x056b20…056b40             6f 6d 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 61 6e 64 20 6d 61 69 6e 6c 6f 6f 70 20 2a   ┆om initialization and mainloop *┆
0x056b40…056b60             29 0a 28 2a 20 20 20 69 74 20 77 69 6c 6c 20 72 65 61 64 3a 20 28 73 70 69 78 2c 73 74 64 6e 61   ┆) (*   it will read: (spix,stdna┆
0x056b60…056b80             6d 65 29 20 2c 20 61 6e 64 20 69 6e 73 65 72 74 20 69 6e 20 74 61 62 65 6c 20 2a 29 0a 0a 62 65   ┆me) , and insert in tabel *)  be┆
0x056b80…056ba0             67 69 6e 0a 73 74 64 73 70 69 78 20 28 70 61 73 73 69 6e 20 28 2a 20 3d 20 73 70 69 78 20 2a 29   ┆gin stdspix (passin (* = spix *)┆
0x056ba0…056bc0             2c 20 70 61 73 73 77 6f 72 64 20 28 2a 20 3d 20 73 74 64 6e 61 6d 65 20 2a 29 20 29 3b 0a 0a 61   ┆, password (* = stdname *) );  a┆
0x056bc0…056be0             6e 6f 6e 79 6d 6f 75 73 5f 73 70 69 78 3a 3d 20 73 74 64 73 70 69 78 5f 74 61 62 6c 65 20 5b 20   ┆nonymous_spix:= stdspix_table [ ┆
0x056be0…056c00             63 61 6e 6f 6e 79 6d 6f 75 73 20 5d 3b 0a 65 78 63 65 70 74 69 6f 6e 5f 73 70 69 78 3a 3d 20 73   ┆canonymous ]; exception_spix:= s┆
0x056c00…056c20 (23, 0, 5)  74 64 73 70 69 78 5f 74 61 62 6c 65 20 5b 20 63 65 78 63 65 70 74 69 6f 6e 20 5d 3b 0a 65 6e 64   ┆tdspix_table [ cexception ]; end┆
0x056c20…056c40             3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 70 65 63 69 61 6c 73 70 69 78 20 28 78 6e 61 6d   ┆;    procedure specialspix (xnam┆
0x056c40…056c60             65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 28 2a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 6d 61 69 6e   ┆e: nameptr); (* called from main┆
0x056c60…056c80             6c 6f 6f 70 2c 20 77 68 65 6e 20 61 20 27 73 70 65 63 69 61 6c 27 2d 73 70 69 78 20 68 61 73 20   ┆loop, when a 'special'-spix has ┆
0x056c80…056ca0             62 65 65 6e 20 64 65 66 69 6e 65 64 20 2a 29 0a 28 2a 20 20 20 74 68 65 20 61 63 74 69 6f 6e 20   ┆been defined *) (*   the action ┆
0x056ca0…056cc0             64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 73 70 69 78 20 2a 29 0a 0a 6c 61 62 65 6c 20 39 39   ┆depends on the spix *)  label 99┆
0x056cc0…056ce0             3b 0a 76 61 72 20 69 3a 20 73 74 64 6e 61 6d 65 5f 72 61 6e 67 65 3b 0a 0a 62 65 67 69 6e 0a 0a   ┆; var i: stdname_range;  begin  ┆
0x056ce0…056d00             77 69 74 68 20 20 78 6e 61 6d 65 20 5e 20 64 6f 20 20 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20   ┆with  xname ^ do    (* namenode ┆
0x056d00…056d20             6f 66 20 73 70 65 63 69 61 6c 20 69 6e 74 65 72 65 73 74 20 2a 29 0a 77 69 74 68 20 20 74 79 70   ┆of special interest *) with  typ┆
0x056d20…056d40             20 5e 20 64 6f 20 20 20 20 28 2a 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 79   ┆ ^ do    (* the corresponding ty┆
0x056d40…056d60             70 65 6e 6f 64 65 20 28 69 6e 20 63 61 73 65 20 6f 66 20 74 79 70 65 2e 2e 2e 29 20 2a 29 0a 66   ┆penode (in case of type...) *) f┆
0x056d60…056d80             6f 72 20 69 3a 3d 20 63 61 6e 6f 6e 79 6d 6f 75 73 20 74 6f 20 63 6f 72 64 20 64 6f 0a 28 2a 20   ┆or i:= canonymous to cord do (* ┆
0x056d80…056da0             73 63 61 6e 20 74 68 65 20 73 74 64 73 70 69 78 2d 74 61 62 6c 65 20 74 6f 20 66 69 6e 64 20 74   ┆scan the stdspix-table to find t┆
0x056da0…056dc0             68 65 20 72 69 67 74 68 20 73 70 69 78 20 2a 29 0a 69 66 20 73 74 64 73 70 69 78 5f 74 61 62 6c   ┆he rigth spix *) if stdspix_tabl┆
0x056dc0…056de0             65 20 5b 20 69 20 5d 20 3d 20 73 70 69 78 20 28 2a 20 6f 66 20 6e 61 6d 65 6e 6f 64 65 20 2a 29   ┆e [ i ] = spix (* of namenode *)┆
0x056de0…056e00             20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 28 2a 20 72 65 6d 6f 76 65 20 69 74 20 66 72 6f 6d 20 74   ┆ then begin  (* remove it from t┆
0x056e00…056e20 (23, 0, 6)  61 62 6c 65 20 28 2e 2e 2e 20 6f 70 74 69 6d 61 6c 69 7a 61 74 69 6f 6e 20 2e 2e 2e 29 20 2a 29   ┆able (... optimalization ...) *)┆
0x056e20…056e40             0a 73 74 64 73 70 69 78 20 28 2d 31 2c 20 69 29 3b 0a 0a 63 61 73 65 20 69 20 6f 66 0a 0a 63 61   ┆ stdspix (-1, i);  case i of  ca┆
0x056e40…056e60             6e 6f 6e 79 6d 6f 75 73 3a 20 3b 20 28 2a 20 65 6d 70 74 79 20 2a 29 0a 0a 63 62 6f 6f 6c 65 61   ┆nonymous: ; (* empty *)  cboolea┆
0x056e60…056e80             6e 3a 0a 62 65 67 69 6e 0a 62 6f 6f 6c 65 61 6e 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 78 6e 61 6d   ┆n: begin boolean_typename:= xnam┆
0x056e80…056ea0             65 3b 0a 65 6d 69 74 69 64 20 28 78 62 6f 6f 6c 65 61 6e 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64   ┆e; emitid (xboolean, xname); end┆
0x056ea0…056ec0             3b 0a 0a 63 63 68 61 72 3a 0a 62 65 67 69 6e 0a 63 68 61 72 5f 74 79 70 65 6e 61 6d 65 20 20 20   ┆;  cchar: begin char_typename   ┆
0x056ec0…056ee0             3a 3d 20 78 6e 61 6d 65 3b 0a 65 6d 69 74 69 64 20 28 78 63 68 61 72 2c 20 78 6e 61 6d 65 29 3b   ┆:= xname; emitid (xchar, xname);┆
0x056ee0…056f00             0a 65 6e 64 3b 0a 0a 63 73 68 61 64 6f 77 3a 0a 62 65 67 69 6e 0a 73 68 61 64 6f 77 5f 74 79 70   ┆ end;  cshadow: begin shadow_typ┆
0x056f00…056f20             65 6e 61 6d 65 3a 3d 20 78 6e 61 6d 65 3b 0a 63 6f 6e 74 65 6e 74 73 20 20 20 20 20 20 20 20 3a   ┆ename:= xname; contents        :┆
0x056f20…056f40             3d 20 5b 20 74 5f 73 68 61 64 6f 77 20 5d 3b 20 20 28 2a 20 66 6f 72 63 65 20 74 68 69 73 20 73   ┆= [ t_shadow ];  (* force this s┆
0x056f40…056f60             70 65 63 69 61 6c 20 63 6f 6e 74 65 6e 74 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 73 68 61 64 6f   ┆pecial content *) emitid (xshado┆
0x056f60…056f80             77 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 72 65 66 65 72 65 6e 63 65 3a 0a 62 65 67   ┆w, xname); end;  creference: beg┆
0x056f80…056fa0             69 6e 0a 72 65 66 65 72 65 6e 63 65 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 78 6e 61 6d 65 3b 0a 63   ┆in reference_typename:= xname; c┆
0x056fa0…056fc0             6f 6e 74 65 6e 74 73 20 20 20 20 20 20 20 20 3a 3d 20 5b 20 74 5f 72 65 66 65 72 65 6e 63 65 20   ┆ontents        := [ t_reference ┆
0x056fc0…056fe0             5d 3b 20 20 28 2a 20 66 6f 72 63 65 20 74 68 69 73 20 73 70 65 63 69 61 6c 20 63 6f 6e 74 65 6e   ┆];  (* force this special conten┆
0x056fe0…057000             74 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 72 65 66 65 72 65 6e 63 65 2c 20 78 6e 61 6d 65 29 3b   ┆t *) emitid (xreference, xname);┆
0x057000…057020 (23, 0, 7)  0a 65 6e 64 3b 0a 0a 63 73 65 6d 61 70 68 6f 72 65 3a 0a 62 65 67 69 6e 0a 63 6f 6e 74 65 6e 74   ┆ end;  csemaphore: begin content┆
0x057020…057040             73 20 20 20 20 20 20 20 20 3a 3d 20 5b 20 74 5f 73 65 6d 61 70 68 6f 72 65 20 5d 3b 20 20 28 2a   ┆s        := [ t_semaphore ];  (*┆
0x057040…057060             20 66 6f 72 63 65 20 74 68 69 73 20 73 70 65 63 69 61 6c 20 63 6f 6e 74 65 6e 74 20 2a 29 0a 65   ┆ force this special content *) e┆
0x057060…057080             6d 69 74 69 64 20 28 78 73 65 6d 61 70 68 6f 72 65 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a   ┆mitid (xsemaphore, xname); end; ┆
0x057080…0570a0             0a 63 73 6f 6e 3a 0a 62 65 67 69 6e 0a 63 6f 6e 74 65 6e 74 73 3a 3d 20 5b 20 74 5f 65 78 74 70   ┆ cson: begin contents:= [ t_extp┆
0x0570a0…0570c0             72 6f 63 65 73 73 20 5d 3b 0a 73 6f 6e 5f 74 79 70 65 6e 61 6d 65 20 20 20 20 3a 3d 20 78 6e 61   ┆rocess ]; son_typename    := xna┆
0x0570c0…0570e0             6d 65 3b 0a 65 6e 64 3b 0a 0a 63 70 72 6f 63 65 73 73 72 65 63 3a 0a 70 72 6f 63 65 73 73 72 65   ┆me; end;  cprocessrec: processre┆
0x0570e0…057100             63 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 78 6e 61 6d 65 3b 0a 0a 63 65 78 63 65 70 74 69 6f 6e 3a   ┆c_typename:= xname;  cexception:┆
0x057100…057120             0a 65 78 63 65 70 74 69 6f 6e 5f 70 72 6f 63 6e 61 6d 65 3a 3d 20 78 6e 61 6d 65 3b 0a 0a 63 61   ┆ exception_procname:= xname;  ca┆
0x057120…057140             62 73 3a 0a 61 62 73 5f 70 72 6f 63 6e 61 6d 65 20 20 20 20 3a 3d 20 78 6e 61 6d 65 3b 0a 0a 63   ┆bs: abs_procname    := xname;  c┆
0x057140…057160             73 75 63 63 3a 0a 62 65 67 69 6e 0a 73 75 63 63 5f 70 72 6f 63 6e 61 6d 65 20 20 20 3a 3d 20 78   ┆succ: begin succ_procname   := x┆
0x057160…057180             6e 61 6d 65 3b 0a 65 6d 69 74 69 64 20 28 78 73 75 63 63 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64   ┆name; emitid (xsucc, xname); end┆
0x057180…0571a0             3b 0a 0a 63 70 72 65 64 3a 0a 62 65 67 69 6e 0a 70 72 65 64 5f 70 72 6f 63 6e 61 6d 65 20 20 20   ┆;  cpred: begin pred_procname   ┆
0x0571a0…0571c0             3a 3d 20 78 6e 61 6d 65 3b 0a 65 6d 69 74 69 64 20 28 78 70 72 65 64 2c 20 78 6e 61 6d 65 29 3b   ┆:= xname; emitid (xpred, xname);┆
0x0571c0…0571e0             0a 65 6e 64 3b 0a 0a 63 6e 65 77 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 69 64 28 78 6e 65 77 2c 20   ┆ end;  cnew: begin emitid(xnew, ┆
0x0571e0…057200             78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 6e 69 6c 3a 0a 62 65 67 69 6e 0a 6e 69 6c 5f 70 72   ┆xname); end;  cnil: begin nil_pr┆
0x057200…057220 (23, 0, 8)  6f 63 6e 61 6d 65 20 20 20 20 3a 3d 20 78 6e 61 6d 65 3b 0a 65 6d 69 74 69 64 20 28 78 6e 69 6c   ┆ocname    := xname; emitid (xnil┆
0x057220…057240             2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 6e 69 6c 72 65 66 3a 0a 62 65 67 69 6e 0a 6e   ┆, xname); end;  cnilref: begin n┆
0x057240…057260             69 6c 72 65 66 5f 70 72 6f 63 6e 61 6d 65 20 3a 3d 20 78 6e 61 6d 65 3b 0a 65 6d 69 74 69 64 28   ┆ilref_procname := xname; emitid(┆
0x057260…057280             78 6e 69 6c 72 65 66 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 63 68 72 3a 0a 65 6d 69   ┆xnilref, xname); end;  cchr: emi┆
0x057280…0572a0             74 69 64 20 28 78 63 68 72 2c 20 78 6e 61 6d 65 29 3b 0a 0a 63 6f 72 64 3a 0a 62 65 67 69 6e 0a   ┆tid (xchr, xname);  cord: begin ┆
0x0572a0…0572c0             6f 72 64 5f 70 72 6f 63 6e 61 6d 65 20 20 20 20 3a 3d 20 78 6e 61 6d 65 3b 0a 65 6d 69 74 69 64   ┆ord_procname    := xname; emitid┆
0x0572c0…0572e0             20 28 78 6f 72 64 2c 20 78 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 65 6c 73 65 0a 69 66 20 63 6f   ┆ (xord, xname); end;  else if co┆
0x0572e0…057300             6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e   ┆mpilertest then comp_error (unkn┆
0x057300…057320             6f 77 6e 5f 73 74 64 74 79 70 65 5f 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 67 6f 74 6f 20 39 39   ┆own_stdtype_name); end;  goto 99┆
0x057320…057340             3b 20 28 2a 20 67 6f 74 6f 20 66 6f 75 6e 64 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 66 6f 72 20   ┆; (* goto found *)  end; (* for ┆
0x057340…057360             69 20 69 6e 20 73 74 64 73 70 69 78 5f 72 61 6e 67 65 20 2a 29 0a 0a 28 2a 20 69 6e 20 63 61 73   ┆i in stdspix_range *)  (* in cas┆
0x057360…057380             65 20 74 68 65 20 6c 6f 6f 70 20 74 65 72 6d 69 6e 61 74 65 73 3a 20 73 65 76 65 72 65 20 65 72   ┆e the loop terminates: severe er┆
0x057380…0573a0             72 6f 72 20 2a 29 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70   ┆ror *) if compilertest then comp┆
0x0573a0…0573c0             5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f 73 70 69 78 29 3b 0a 0a 39 39 3a 20 3b 20 28 2a   ┆_error (unknown_spix);  99: ; (*┆
0x0573c0…0573e0             20 66 6f 75 6e 64 3a 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 73 70   ┆ found: *)  end; (* procedure sp┆
0x0573e0…057400             65 63 69 61 6c 73 70 69 78 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 65 74 5f 65 72   ┆ecialspix *)    procedure set_er┆
0x057400…057420 (23, 0, 9)  72 6f 72 5f 74 79 70 65 3b 0a 28 2a 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 79 70 65   ┆ror_type; (* if the current type┆
0x057420…057440             20 77 61 73 20 61 6e 20 69 6d 70 6c 69 63 69 74 20 74 79 70 65 20 64 65 66 69 6e 69 74 69 6f 6e   ┆ was an implicit type definition┆
0x057440…057460             2c 20 20 20 20 2a 29 0a 28 2a 20 20 20 69 74 20 77 69 6c 6c 20 62 65 20 72 65 6c 65 61 73 65 64   ┆,    *) (*   it will be released┆
0x057460…057480             20 61 74 20 62 6c 6f 63 6b 2d 65 6e 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ at block-end                   ┆
0x057480…0574a0             20 20 20 2a 29 0a 0a 62 65 67 69 6e 0a 63 75 72 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 65 72 72 6f   ┆   *)  begin cur_typename:= erro┆
0x0574a0…0574c0             72 5f 74 79 70 65 6e 61 6d 65 3b 0a 63 75 72 5f 74 79 70 65 6e 6f 64 65 3a 3d 20 65 72 72 6f 72   ┆r_typename; cur_typenode:= error┆
0x0574c0…0574e0             5f 74 79 70 65 6e 6f 64 65 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66   ┆_typenode; end;  (* procedures f┆
0x0574e0…057500             6f 72 20 69 6e 73 65 72 74 69 6e 67 2f 72 65 74 72 69 65 76 69 6e 67 20 6e 61 6d 65 73 20 2a 29   ┆or inserting/retrieving names *)┆
0x057500…057520             0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 65 61 72 63 68 73 70 69 78 20 28 78 73 70 69 78 3a   ┆    procedure searchspix (xspix:┆
0x057520…057540             20 73 70 69 78 72 61 6e 67 65 3b 20 66 69 72 73 74 6c 65 76 65 6c 2c 20 6c 61 73 74 6c 65 76 65   ┆ spixrange; firstlevel, lastleve┆
0x057540…057560             6c 3a 20 6e 61 6d 65 73 74 61 63 6b 70 74 72 29 3b 0a 28 2a 20 73 65 61 72 63 68 65 73 20 61 6d   ┆l: namestackptr); (* searches am┆
0x057560…057580             6f 6e 67 20 61 6c 6c 20 6e 61 6d 65 73 20 69 6e 20 74 68 65 20 6c 65 76 65 6c 73 20 74 6f 20 66   ┆ong all names in the levels to f┆
0x057580…0575a0             69 6e 64 20 27 78 73 70 69 78 27 20 2a 29 0a 0a 28 2a 20 74 68 65 20 67 6c 6f 62 61 6c 20 76 61   ┆ind 'xspix' *)  (* the global va┆
0x0575a0…0575c0             72 69 61 62 6c 65 73 20 27 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65 27 2f 27 72 65 74 72 69 65   ┆riables 'retrieved_name'/'retrie┆
0x0575c0…0575e0             76 65 64 5f 6c 65 76 65 6c 27 20 2a 29 0a 28 2a 20 20 20 64 65 73 63 72 69 62 65 20 74 68 65 20   ┆ved_level' *) (*   describe the ┆
0x0575e0…057600             72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 3a 20 2a 29 0a 0a 28 2a 20   ┆result of the procedure: *)  (* ┆
0x057600…057620 (23, 0, 10) 78 73 70 69 78 20 6e 6f 74 20 66 6f 75 6e 64 3a 20 27 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65   ┆xspix not found: 'retrieved_name┆
0x057620…057640             27 20 3d 20 6e 69 6c 6e 61 6d 65 20 28 2d 6c 65 76 65 6c 20 75 6e 64 65 66 29 20 2a 29 0a 28 2a   ┆' = nilname (-level undef) *) (*┆
0x057640…057660             20 78 73 70 69 78 20 66 6f 75 6e 64 3a 20 20 20 20 20 27 72 65 74 72 69 65 76 65 64 5f 6e 61 6d   ┆ xspix found:     'retrieved_nam┆
0x057660…057680             65 2f 6c 65 76 65 6c 27 20 69 64 65 6e 74 69 66 69 65 73 20 74 68 65 20 6e 61 6d 65 6e 6f 64 65   ┆e/level' identifies the namenode┆
0x057680…0576a0             20 2a 29 0a 0a 6c 61 62 65 6c 20 39 39 3b 0a 76 61 72 0a 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72   ┆ *)  label 99; var name: nameptr┆
0x0576a0…0576c0             3b 0a 6c 65 76 65 6c 3a 20 6e 61 6d 65 73 74 61 63 6b 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 69 66   ┆; level: namestackptr;  begin if┆
0x0576c0…0576e0             20 6c 61 73 74 6c 65 76 65 6c 3c 3e 6e 69 6c 5f 6e 61 6d 65 73 74 61 63 6b 5f 70 74 72 20 74 68   ┆ lastlevel<>nil_namestack_ptr th┆
0x0576e0…057700             65 6e 0a 62 65 67 69 6e 0a 6c 65 76 65 6c 3a 3d 20 6c 61 73 74 6c 65 76 65 6c 3b 0a 72 65 70 65   ┆en begin level:= lastlevel; repe┆
0x057700…057720             61 74 0a 77 69 74 68 20 20 6c 65 76 65 6c 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 61 6d 65 3a 3d 20   ┆at with  level^ do begin name:= ┆
0x057720…057740             66 69 72 73 74 6e 61 6d 65 3b 0a 77 68 69 6c 65 20 6e 61 6d 65 20 3c 3e 20 6e 69 6c 6e 61 6d 65   ┆firstname; while name <> nilname┆
0x057740…057760             20 64 6f 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 73 70 69   ┆ do with  name ^ do begin if spi┆
0x057760…057780             78 20 28 2a 20 6f 66 20 6e 61 6d 65 20 2a 29 20 3d 20 78 73 70 69 78 20 74 68 65 6e 0a 67 6f 74   ┆x (* of name *) = xspix then got┆
0x057780…0577a0             6f 20 39 39 3b 20 28 2a 20 66 6f 75 6e 64 20 2a 29 0a 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d   ┆o 99; (* found *) name:= nextnam┆
0x0577a0…0577c0             65 3b 20 28 2a 20 66 6f 6c 6c 6f 77 20 63 68 61 69 6e 20 2a 29 0a 65 6e 64 3b 0a 6c 65 76 65 6c   ┆e; (* follow chain *) end; level┆
0x0577c0…0577e0             3a 3d 20 66 6f 72 6d 65 72 5f 6c 65 76 65 6c 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 6c 65   ┆:= former_level; end; (* with le┆
0x0577e0…057800             76 65 6c 5e 20 64 6f 20 2a 29 0a 75 6e 74 69 6c 20 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76   ┆vel^ do *) until level^.next_lev┆
0x057800…057820 (23, 0, 11) 65 6c 3d 66 69 72 73 74 6c 65 76 65 6c 3b 0a 65 6e 64 3b 20 28 2a 20 69 66 20 6c 61 73 74 6c 65   ┆el=firstlevel; end; (* if lastle┆
0x057820…057840             76 65 6c 3c 3e 73 74 61 63 6b 20 62 6f 74 74 6f 6d 20 2a 29 0a 6e 61 6d 65 3a 3d 20 6e 69 6c 6e   ┆vel<>stack bottom *) name:= niln┆
0x057840…057860             61 6d 65 3b 20 28 2a 20 6e 61 6d 65 20 6e 6f 74 20 66 6f 75 6e 64 20 2a 29 0a 0a 39 39 3a 3b 20   ┆ame; (* name not found *)  99:; ┆
0x057860…057880             28 2a 20 66 6f 75 6e 64 20 2a 29 0a 72 65 74 72 69 65 76 65 64 5f 6c 65 76 65 6c 3a 3d 20 6c 65   ┆(* found *) retrieved_level:= le┆
0x057880…0578a0             76 65 6c 3b 20 28 2a 20 75 6e 64 65 66 2c 20 69 66 20 6e 6f 74 20 66 6f 75 6e 64 20 2a 29 0a 72   ┆vel; (* undef, if not found *) r┆
0x0578a0…0578c0             65 74 72 69 65 76 65 64 5f 6e 61 6d 65 20 3a 3d 20 6e 61 6d 65 3b 20 20 28 2a 20 6e 69 6c 6e 61   ┆etrieved_name := name;  (* nilna┆
0x0578c0…0578e0             6d 65 2c 20 69 66 20 6e 6f 74 20 66 6f 75 6e 64 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f   ┆me, if not found *)  end; (* pro┆
0x0578e0…057900             63 65 64 75 72 65 20 73 65 61 72 63 68 73 70 69 78 20 2a 29 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e   ┆cedure searchspix *)    function┆
0x057900…057920             20 66 69 6e 64 6e 61 6d 65 20 28 78 73 70 69 78 3a 20 73 70 69 78 72 61 6e 67 65 29 20 3a 20 6e   ┆ findname (xspix: spixrange) : n┆
0x057920…057940             61 6d 65 70 74 72 3b 0a 28 2a 20 64 65 6c 69 76 65 72 73 20 74 68 65 20 6e 61 6d 65 6e 6f 64 65   ┆ameptr; (* delivers the namenode┆
0x057940…057960             20 77 69 74 68 20 74 68 65 20 73 65 61 72 63 68 65 64 20 73 70 69 78 20 2a 29 0a 28 2a 20 69 66   ┆ with the searched spix *) (* if┆
0x057960…057980             20 74 68 65 20 73 70 69 78 20 77 61 73 27 6e 74 20 66 6f 75 6e 64 2c 20 74 68 65 20 72 65 73 75   ┆ the spix was'nt found, the resu┆
0x057980…0579a0             6c 74 20 69 73 20 27 6e 69 6c 6e 61 6d 65 27 20 2a 29 0a 0a 62 65 67 69 6e 0a 73 65 61 72 63 68   ┆lt is 'nilname' *)  begin search┆
0x0579a0…0579c0             73 70 69 78 20 28 78 73 70 69 78 2c 20 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c 2c 20   ┆spix (xspix, processparamlevel, ┆
0x0579c0…0579e0             6e 61 6d 65 6c 65 76 65 6c 29 3b 0a 69 66 20 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65 20 3d 20   ┆namelevel); if retrieved_name = ┆
0x0579e0…057a00             6e 69 6c 6e 61 6d 65 20 74 68 65 6e 0a 73 65 61 72 63 68 73 70 69 78 20 28 78 73 70 69 78 2c 20   ┆nilname then searchspix (xspix, ┆
0x057a00…057a20 (23, 0, 12) 6c 6f 77 65 73 74 6c 65 76 65 6c 2c 20 6c 61 73 74 67 6c 6f 62 61 6c 6c 65 76 65 6c 29 3b 0a 66   ┆lowestlevel, lastgloballevel); f┆
0x057a20…057a40             69 6e 64 6e 61 6d 65 3a 3d 20 72 65 74 72 69 65 76 65 64 5f 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a   ┆indname:= retrieved_name; end;  ┆
0x057a40…057a60             0a 0a 66 75 6e 63 74 69 6f 6e 20 6e 65 77 6e 61 6d 65 20 28 78 73 70 69 78 3a 20 73 70 69 78 72   ┆  function newname (xspix: spixr┆
0x057a60…057a80             61 6e 67 65 29 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 28 2a 20 61 20 6e 65 77 20 6e 61 6d 65 6e 6f   ┆ange) : nameptr; (* a new nameno┆
0x057a80…057aa0             64 65 20 69 73 20 69 6e 73 65 72 74 65 64 20 61 74 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 6c 65   ┆de is inserted at current namele┆
0x057aa0…057ac0             76 65 6c 20 2a 29 0a 28 2a 20 74 68 65 20 6e 61 6d 65 6e 6f 64 65 20 69 73 20 69 6e 69 74 69 61   ┆vel *) (* the namenode is initia┆
0x057ac0…057ae0             6c 69 7a 65 64 20 61 73 20 64 75 6d 6d 79 20 2a 29 0a 0a 6c 61 62 65 6c 20 39 39 3b 0a 76 61 72   ┆lized as dummy *)  label 99; var┆
0x057ae0…057b00             20 6e 61 6d 65 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 69 66 20 78 73 70 69   ┆ name : nameptr;  begin  if xspi┆
0x057b00…057b20             78 20 3c 3e 20 61 6e 6f 6e 79 6d 6f 75 73 5f 73 70 69 78 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28   ┆x <> anonymous_spix then begin (┆
0x057b20…057b40             2a 20 65 78 70 6c 69 63 69 74 20 73 70 69 78 27 65 73 20 6d 61 79 20 6e 6f 74 20 65 78 69 73 74   ┆* explicit spix'es may not exist┆
0x057b40…057b60             20 61 6c 72 65 61 64 79 20 61 74 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29   ┆ already at current namelevel *)┆
0x057b60…057b80             0a 28 2a 20 20 20 2e 2e 2e 20 65 78 63 65 70 74 20 66 6f 72 77 61 72 64 20 64 65 63 6c 61 72 65   ┆ (*   ... except forward declare┆
0x057b80…057ba0             64 20 72 6f 75 74 69 6e 65 2d 6e 61 6d 65 73 20 2e 2e 2e 20 2a 29 0a 0a 6e 61 6d 65 3a 3d 20 66   ┆d routine-names ... *)  name:= f┆
0x057ba0…057bc0             69 6e 64 6e 61 6d 65 20 28 78 73 70 69 78 29 3b 0a 69 66 20 6e 61 6d 65 20 3c 3e 20 6e 69 6c 6e   ┆indname (xspix); if name <> niln┆
0x057bc0…057be0             61 6d 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 74 68 65 20 6e 61 6d 65 20 61 6c 72 65 61   ┆ame then begin (* the name alrea┆
0x057be0…057c00             64 79 20 65 78 69 73 74 65 64 20 61 74 20 73 6f 6d 65 20 6c 65 76 65 6c 20 2a 29 0a 28 2a 20 63   ┆dy existed at some level *) (* c┆
0x057c00…057c20 (23, 0, 13) 68 65 63 6b 20 74 68 65 20 63 6f 6e 73 69 73 74 65 6e 63 79 20 2a 29 0a 77 69 74 68 20 20 6e 61   ┆heck the consistency *) with  na┆
0x057c20…057c40             6d 65 20 5e 20 64 6f 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 6a 75 73 74 20 66 6f 75   ┆me ^ do  (* namenode of just fou┆
0x057c40…057c60             6e 64 20 6e 61 6d 65 20 2a 29 0a 69 66 20 72 65 74 72 69 65 76 65 64 5f 6c 65 76 65 6c 20 3d 20   ┆nd name *) if retrieved_level = ┆
0x057c60…057c80             6e 61 6d 65 6c 65 76 65 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 64 6f 75 62 6c 65 2d 64   ┆namelevel then begin (* double-d┆
0x057c80…057ca0             65 63 6c 61 72 61 74 69 6f 6e 20 69 73 20 73 75 70 70 72 65 73 73 65 64 2c 20 69 6e 20 63 61 73   ┆eclaration is suppressed, in cas┆
0x057ca0…057cc0             65 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 64 65 63 6c 20 77 61 73 20 66 6f 72 77 61 72 64 20   ┆e the previous decl was forward ┆
0x057cc0…057ce0             2a 29 0a 69 66 20 66 6f 72 77 61 72 64 5f 64 65 63 6c 20 74 68 65 6e 0a 28 2a 20 69 74 20 77 61   ┆*) if forward_decl then (* it wa┆
0x057ce0…057d00             73 20 72 65 61 6c 6c 79 20 66 6f 72 77 61 72 64 20 64 65 63 6c 61 72 65 64 20 2a 29 0a 28 2a 20   ┆s really forward declared *) (* ┆
0x057d00…057d20             6e 6f 77 20 74 65 73 74 20 74 68 61 74 20 69 74 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 74   ┆now test that it is similar to t┆
0x057d20…057d40             68 65 20 6e 65 77 20 6f 6e 65 20 2a 29 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 75 72 5f   ┆he new one *) if namekind = cur_┆
0x057d40…057d60             6e 61 6d 65 6b 69 6e 64 20 74 68 65 6e 0a 67 6f 74 6f 20 39 39 3b 20 28 2a 20 73 6b 69 70 20 69   ┆namekind then goto 99; (* skip i┆
0x057d60…057d80             6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 65 74 63 20 2a 29 0a 0a 28 2a 20 6f 74 68 65 72 77 69   ┆nitialization etc *)  (* otherwi┆
0x057d80…057da0             73 65 20 69 74 20 77 69 6c 6c 20 62 65 20 66 6c 61 67 67 65 64 20 61 73 20 65 72 72 6f 72 20 2a   ┆se it will be flagged as error *┆
0x057da0…057dc0             29 0a 65 72 72 6f 72 73 70 69 78 3a 3d 20 78 73 70 69 78 3b 0a 65 72 72 6f 72 20 28 64 6f 75 62   ┆) errorspix:= xspix; error (doub┆
0x057dc0…057de0             6c 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 29 3b 0a 78 73 70 69 78 3a 3d 20 61 6e 6f 6e 79 6d 6f   ┆le_declaration); xspix:= anonymo┆
0x057de0…057e00             75 73 5f 73 70 69 78 3b 20 28 2a 20 69 2e 65 2e 20 74 68 69 73 20 6e 61 6d 65 20 63 61 6e 20 6e   ┆us_spix; (* i.e. this name can n┆
0x057e00…057e20 (23, 0, 14) 65 76 65 72 20 62 65 20 72 65 74 72 69 65 76 65 64 20 2a 29 0a 0a 65 6e 64 20 28 2a 20 69 66 20   ┆ever be retrieved *)  end (* if ┆
0x057e20…057e40             61 6c 72 65 61 64 79 20 6f 6e 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 65 6c 73 65 0a 62 65 67   ┆already on namelevel *) else beg┆
0x057e40…057e60             69 6e 0a 28 2a 20 74 65 73 74 20 74 68 61 74 20 74 68 69 73 20 28 67 6c 6f 62 61 6c 29 20 6e 61   ┆in (* test that this (global) na┆
0x057e60…057e80             6d 65 20 68 61 73 27 6e 74 20 62 65 65 6e 20 75 73 65 64 20 70 72 65 76 69 6f 75 73 6c 79 20 6f   ┆me has'nt been used previously o┆
0x057e80…057ea0             6e 20 74 68 69 73 20 6c 65 76 65 6c 20 2a 29 0a 69 66 20 75 73 65 64 6c 65 76 65 6c 20 28 2a 20   ┆n this level *) if usedlevel (* ┆
0x057ea0…057ec0             6f 66 20 6e 61 6d 65 20 2a 29 20 3d 20 6e 61 6d 65 6c 65 76 65 6c 20 74 68 65 6e 0a 62 65 67 69   ┆of name *) = namelevel then begi┆
0x057ec0…057ee0             6e 0a 65 72 72 6f 72 73 70 69 78 3a 3d 20 78 73 70 69 78 3b 0a 65 72 72 6f 72 20 28 69 6e 63 6f   ┆n errorspix:= xspix; error (inco┆
0x057ee0…057f00             6e 73 69 73 74 65 6e 74 5f 75 73 65 29 3b 0a 65 6e 64 20 65 6c 73 65 0a 69 66 20 28 63 75 72 5f   ┆nsistent_use); end else if (cur_┆
0x057f00…057f20             63 6f 6e 74 65 78 74 5f 6e 6f 20 3c 3e 20 2d 31 29 20 28 2a 20 69 6e 20 63 6f 6e 74 65 78 74 20   ┆context_no <> -1) (* in context ┆
0x057f20…057f40             2a 29 20 61 6e 64 0a 28 63 75 72 5f 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 72 65 63 66 69 65 6c   ┆*) and (cur_namekind <> crecfiel┆
0x057f40…057f60             64 29 20 61 6e 64 20 28 63 75 72 5f 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 76 61 72 70 29 0a 61   ┆d) and (cur_namekind <> cvarp) a┆
0x057f60…057f80             6e 64 20 28 63 75 72 5f 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 76 61 6c 75 65 70 29 20 74 68 65   ┆nd (cur_namekind <> cvaluep) the┆
0x057f80…057fa0             6e 0a 62 65 67 69 6e 0a 28 2a 20 72 65 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 6e 61 6d 65 20   ┆n begin (* redefinition of name ┆
0x057fa0…057fc0             66 72 6f 6d 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 63 6f 6e 74 65 78 74 20 2a 29 0a 65 72 72 6f   ┆from surrounding context *) erro┆
0x057fc0…057fe0             72 73 70 69 78 20 3a 3d 20 78 73 70 69 78 3b 0a 77 61 72 6e 69 6e 67 28 72 65 64 65 66 69 6e 69   ┆rspix := xspix; warning(redefini┆
0x057fe0…058000             74 69 6f 6e 5f 6f 66 5f 63 6f 6e 74 65 78 74 5f 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b   ┆tion_of_context_name); end; end;┆
0x058000…058020 (23, 0, 15) 0a 65 6e 64 3b 20 28 2a 20 69 66 20 65 78 69 73 74 69 6e 67 20 6e 61 6d 65 20 2a 29 0a 0a 65 6e   ┆ end; (* if existing name *)  en┆
0x058020…058040             64 3b 20 28 2a 20 69 66 20 65 78 70 6c 69 63 69 74 20 73 70 69 78 20 2a 29 0a 0a 28 2a 20 61 6c   ┆d; (* if explicit spix *)  (* al┆
0x058040…058060             6c 6f 63 61 74 65 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 20 6e 65 77 20 6e 61 6d 65   ┆locate and initialize a new name┆
0x058060…058080             6e 6f 64 65 20 2a 29 0a 0a 6e 61 6d 65 3a 3d 20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3b 0a   ┆node *)  name:= alloc_namenode; ┆
0x058080…0580a0             0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 73 70 69 78 20 20 20 20 3a   ┆ with  name ^ do begin spix    :┆
0x0580a0…0580c0             3d 20 78 73 70 69 78 3b 0a 6e 61 6d 65 6b 69 6e 64 3a 3d 20 63 75 72 5f 6e 61 6d 65 6b 69 6e 64   ┆= xspix; namekind:= cur_namekind┆
0x0580c0…0580e0             3b 0a 74 79 70 65 6e 61 6d 65 3a 3d 20 6e 69 6c 5f 74 79 70 65 6e 61 6d 65 3b 0a 0a 28 2a 20 69   ┆; typename:= nil_typename;  (* i┆
0x0580e0…058100             6e 73 65 72 74 20 69 6e 20 6c 69 73 74 20 6f 66 20 6e 61 6d 65 73 20 6f 66 20 73 61 6d 65 20 6c   ┆nsert in list of names of same l┆
0x058100…058120             65 76 65 6c 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 6c 65 76 65 6c 5e 20 64 6f 0a 69 66 20 69   ┆evel *) with  namelevel^ do if i┆
0x058120…058140             6e 73 65 72 74 5f 69 6e 5f 66 72 6f 6e 74 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 6e 6c   ┆nsert_in_front then begin (* onl┆
0x058140…058160             79 20 66 75 6e 63 74 69 6f 6e 2d 72 65 74 75 72 6e 2d 76 61 6c 75 65 20 61 72 65 20 69 6e 73 65   ┆y function-return-value are inse┆
0x058160…058180             72 74 65 64 20 69 6e 20 66 72 6f 6e 74 20 2e 2e 2e 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 20   ┆rted in front ... *) with  name ┆
0x058180…0581a0             5e 20 64 6f 0a 6e 65 78 74 6e 61 6d 65 3a 3d 20 66 69 72 73 74 6e 61 6d 65 3b 20 28 2a 20 69 6e   ┆^ do nextname:= firstname; (* in┆
0x0581a0…0581c0             73 65 72 74 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 65 78 69 73 74 69 6e 67 20 6c 69 73 74 20 2a   ┆sert in front of existing list *┆
0x0581c0…0581e0             29 0a 69 66 20 66 69 72 73 74 6e 61 6d 65 20 3d 20 6e 69 6c 6e 61 6d 65 20 74 68 65 6e 0a 6c 61   ┆) if firstname = nilname then la┆
0x0581e0…058200             73 74 6e 61 6d 65 3a 3d 20 6e 61 6d 65 3b 0a 66 69 72 73 74 6e 61 6d 65 3a 3d 20 6e 61 6d 65 3b   ┆stname:= name; firstname:= name;┆
0x058200…058220 (23, 1, 1)  0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 66 69 72 73 74 6e 61 6d 65 20 3d 20 6e   ┆ end else begin if firstname = n┆
0x058220…058240             69 6c 6e 61 6d 65 20 74 68 65 6e 0a 66 69 72 73 74 6e 61 6d 65 3a 3d 20 6e 61 6d 65 0a 65 6c 73   ┆ilname then firstname:= name els┆
0x058240…058260             65 0a 77 69 74 68 20 20 6c 61 73 74 6e 61 6d 65 20 5e 20 64 6f 0a 6e 65 78 74 6e 61 6d 65 3a 3d   ┆e with  lastname ^ do nextname:=┆
0x058260…058280             20 6e 61 6d 65 3b 20 28 2a 20 69 6e 73 65 72 74 20 69 6e 20 72 65 61 72 20 6f 66 20 65 78 69 73   ┆ name; (* insert in rear of exis┆
0x058280…0582a0             74 69 6e 67 20 6c 69 73 74 20 2a 29 0a 6c 61 73 74 6e 61 6d 65 3a 3d 20 6e 61 6d 65 3b 0a 65 6e   ┆ting list *) lastname:= name; en┆
0x0582a0…0582c0             64 3b 20 28 2a 20 77 69 74 68 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a   ┆d; (* with namelevel *)  end; (*┆
0x0582c0…0582e0             20 77 69 74 68 20 6e 61 6d 65 20 2a 29 0a 0a 39 39 3a 3b 20 28 2a 20 61 66 74 65 72 20 69 6e 69   ┆ with name *)  99:; (* after ini┆
0x0582e0…058300             74 20 6f 66 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 0a 6e 65 77 6e 61 6d 65 3a 3d 20 6e 61 6d 65 3b   ┆t of namenode *) newname:= name;┆
0x058300…058320             0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 6e 65 77 6e 61 6d 65 20 2a 29 0a 0a   ┆  end; (* procedure newname *)  ┆
0x058320…058340             0a 0a 66 75 6e 63 74 69 6f 6e 20 6e 65 77 5f 75 6e 64 65 63 6c 20 28 78 73 70 69 78 3a 20 73 70   ┆  function new_undecl (xspix: sp┆
0x058340…058360             69 78 72 61 6e 67 65 29 3a 20 6e 61 6d 65 70 74 72 3b 0a 28 2a 20 74 68 65 20 72 6f 75 74 69 6e   ┆ixrange): nameptr; (* the routin┆
0x058360…058380             65 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 6e 61 6d 65 6e 6f 64 65 20 77 69 74 68 20 74 68   ┆e creates a new namenode with th┆
0x058380…0583a0             65 20 73 70 69 78 20 67 69 76 65 6e 20 2a 29 0a 28 2a 20 61 6e 64 20 6d 61 72 6b 73 20 69 74 20   ┆e spix given *) (* and marks it ┆
0x0583a0…0583c0             61 73 20 75 6e 64 65 63 6c 61 72 65 64 20 2a 29 0a 0a 76 61 72 20 6e 61 6d 65 3a 20 6e 61 6d 65   ┆as undeclared *)  var name: name┆
0x0583c0…0583e0             70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 6e 61 6d 65 3a 3d 20 6e 65 77 6e 61 6d 65 20 28 78 73 70   ┆ptr;  begin  name:= newname (xsp┆
0x0583e0…058400             69 78 29 3b 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 61 6d 65 6b   ┆ix); with  name ^ do begin namek┆
0x058400…058420 (23, 1, 2)  69 6e 64 3a 3d 20 63 75 6e 64 65 63 6c 61 72 65 64 3b 0a 74 79 70 65 6e 61 6d 65 3a 3d 20 65 72   ┆ind:= cundeclared; typename:= er┆
0x058420…058440             72 6f 72 5f 74 79 70 65 6e 61 6d 65 3b 0a 74 79 70 20 20 20 20 20 3a 3d 20 65 72 72 6f 72 5f 74   ┆ror_typename; typ     := error_t┆
0x058440…058460             79 70 65 6e 6f 64 65 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 6e 62 6e 62 6e 62 3a 20 6d 61 6b 65 20 61   ┆ypenode; end;  (* nbnbnb: make a┆
0x058460…058480             20 27 70 73 65 75 64 6f 27 2d 64 65 63 6c 61 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 61 6d   ┆ 'pseudo'-declaration of the nam┆
0x058480…0584a0             65 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 75 6e 64 65 63 6c 69 64 2c 20 6e 61 6d 65 29 3b 0a 0a   ┆e *) emitid (xundeclid, name);  ┆
0x0584a0…0584c0             6e 65 77 5f 75 6e 64 65 63 6c 3a 3d 20 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63   ┆new_undecl:= name;  end; (* proc┆
0x0584c0…0584e0             65 64 75 72 65 20 6e 65 77 2d 75 6e 64 65 63 6c 20 2a 29 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20   ┆edure new-undecl *)    function ┆
0x0584e0…058500             75 73 65 6e 61 6d 65 20 28 78 73 70 69 78 3a 20 73 70 69 78 72 61 6e 67 65 29 20 3a 20 6e 61 6d   ┆usename (xspix: spixrange) : nam┆
0x058500…058520             65 70 74 72 3b 0a 28 2a 20 74 68 65 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c 20 73 65 61 72 63 68   ┆eptr; (* the routine will search┆
0x058520…058540             20 66 6f 72 20 74 68 65 20 67 69 76 65 6e 20 73 70 69 78 2c 20 61 6e 64 20 6d 61 72 6b 20 74 68   ┆ for the given spix, and mark th┆
0x058540…058560             65 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 0a 28 2a 20 20 20 61 73 20 62 65 69 6e 67 20 75 73 65 64   ┆e namenode *) (*   as being used┆
0x058560…058580             20 6f 6e 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 0a 28 2a 20 69 66 20   ┆ on current namelevel *)  (* if ┆
0x058580…0585a0             74 68 65 20 6e 61 6d 65 20 64 6f 65 73 6e 27 74 20 65 78 69 73 74 2c 20 61 20 6e 65 77 20 6e 61   ┆the name doesn't exist, a new na┆
0x0585a0…0585c0             6d 65 6e 6f 64 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 20 2a 29 0a 0a 76 61 72 20 6e   ┆menode will be created *)  var n┆
0x0585c0…0585e0             61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 63 75 72 5f 6f 70 61 6e 64 6e   ┆ame: nameptr;  begin  cur_opandn┆
0x0585e0…058600             6f 3a 3d 20 63 75 72 5f 6f 70 61 6e 64 6e 6f 20 2b 20 31 3b 0a 0a 6e 61 6d 65 3a 3d 20 66 69 6e   ┆o:= cur_opandno + 1;  name:= fin┆
0x058600…058620 (23, 1, 3)  64 6e 61 6d 65 20 28 78 73 70 69 78 29 3b 0a 0a 69 66 20 6e 61 6d 65 20 3d 20 6e 69 6c 6e 61 6d   ┆dname (xspix);  if name = nilnam┆
0x058620…058640             65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 74 68 65 20 6e 61 6d 65 20 64 69 64 27 6e 74 20   ┆e then begin (* the name did'nt ┆
0x058640…058660             65 78 69 73 74 2c 20 63 72 65 61 74 65 20 65 20 6e 65 77 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 0a   ┆exist, create e new namenode *) ┆
0x058660…058680             65 72 72 6f 72 73 70 69 78 3a 3d 20 78 73 70 69 78 3b 20 28 2a 20 70 72 69 6e 74 20 75 6e 64 65   ┆errorspix:= xspix; (* print unde┆
0x058680…0586a0             63 6c 61 72 65 64 20 6e 61 6d 65 20 2a 29 0a 65 72 72 6f 72 20 28 75 6e 64 65 63 6c 61 72 65 64   ┆clared name *) error (undeclared┆
0x0586a0…0586c0             29 3b 0a 6e 61 6d 65 3a 3d 20 6e 65 77 5f 75 6e 64 65 63 6c 20 28 78 73 70 69 78 29 3b 0a 0a 65   ┆); name:= new_undecl (xspix);  e┆
0x0586c0…0586e0             6e 64 3b 20 28 2a 20 69 66 20 75 6e 64 65 63 6c 61 72 65 64 20 2a 29 0a 0a 28 2a 20 74 65 73 74   ┆nd; (* if undeclared *)  (* test┆
0x0586e0…058700             20 66 6f 72 20 72 65 63 75 72 73 69 76 65 20 75 73 65 20 6f 66 20 63 6f 6e 73 74 61 6e 74 73 2c   ┆ for recursive use of constants,┆
0x058700…058720             20 69 2e 65 2e 20 75 73 69 6e 67 20 62 65 66 6f 72 65 20 64 65 66 69 6e 69 6e 67 20 2a 29 0a 77   ┆ i.e. using before defining *) w┆
0x058720…058740             69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 63 6f   ┆ith  name ^ do if namekind = cco┆
0x058740…058760             6e 73 74 61 6e 74 20 74 68 65 6e 0a 69 66 20 75 73 65 64 6c 65 76 65 6c 20 3d 20 6e 69 6c 5f 6e   ┆nstant then if usedlevel = nil_n┆
0x058760…058780             61 6d 65 73 74 61 63 6b 5f 70 74 72 20 28 2a 20 69 2e 65 2e 20 6a 75 73 74 20 61 66 74 65 72 20   ┆amestack_ptr (* i.e. just after ┆
0x058780…0587a0             64 65 63 6c 61 72 61 74 69 6f 6e 20 2a 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 72 6f 72 73   ┆declaration *) then begin errors┆
0x0587a0…0587c0             70 69 78 3a 3d 20 73 70 69 78 3b 20 28 2a 20 6f 66 20 6e 61 6d 65 20 2a 29 0a 65 72 72 6f 72 20   ┆pix:= spix; (* of name *) error ┆
0x0587c0…0587e0             28 72 65 63 75 72 73 69 76 65 5f 63 6f 6e 73 74 61 6e 74 5f 75 73 65 29 3b 0a 6e 61 6d 65 3a 3d   ┆(recursive_constant_use); name:=┆
0x0587e0…058800             20 6e 65 77 5f 75 6e 64 65 63 6c 20 28 78 73 70 69 78 29 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 6d 61   ┆ new_undecl (xspix); end;  (* ma┆
0x058800…058820 (23, 1, 4)  72 6b 20 74 68 65 20 6e 61 6d 65 20 61 73 20 62 65 69 6e 67 20 75 73 65 64 20 6f 6e 20 63 75 72   ┆rk the name as being used on cur┆
0x058820…058840             72 65 6e 74 20 6c 65 76 65 6c 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 75 73   ┆rent level *) with  name ^ do us┆
0x058840…058860             65 64 6c 65 76 65 6c 3a 3d 20 6e 61 6d 65 6c 65 76 65 6c 3b 0a 0a 75 73 65 6e 61 6d 65 3a 3d 20   ┆edlevel:= namelevel;  usename:= ┆
0x058860…058880             6e 61 6d 65 3b 20 28 2a 20 64 65 6c 69 76 65 72 20 74 68 65 20 75 73 65 64 20 6e 61 6d 65 20 6e   ┆name; (* deliver the used name n┆
0x058880…0588a0             6f 64 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 75 73 65 6e 61 6d   ┆ode *)  end; (* procedure usenam┆
0x0588a0…0588c0             65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 6c 65 76 65 6c 5f 75 73 65 20   ┆e *)    procedure end_level_use ┆
0x0588c0…0588e0             28 66 69 72 73 74 6c 65 76 65 6c 2c 20 6c 61 73 74 6c 65 76 65 6c 3a 20 6e 61 6d 65 73 74 61 63   ┆(firstlevel, lastlevel: namestac┆
0x0588e0…058900             6b 70 74 72 29 3b 0a 28 2a 20 61 6c 6c 20 6e 61 6d 65 73 20 69 6e 20 74 68 65 20 6f 75 74 70 6f   ┆kptr); (* all names in the outpo┆
0x058900…058920             69 6e 74 65 64 20 6e 61 6d 65 6c 65 76 65 6c 73 20 61 72 65 20 74 65 73 74 65 64 20 66 6f 72 20   ┆inted namelevels are tested for ┆
0x058920…058940             75 73 65 20 2a 29 0a 28 2a 20 6f 6e 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 6c 65 76 65 6c 20 2a   ┆use *) (* on current namelevel *┆
0x058940…058960             29 0a 0a 28 2a 20 69 66 20 61 20 6e 61 6d 65 20 77 61 73 20 75 73 65 64 20 6f 6e 20 63 75 72 72   ┆)  (* if a name was used on curr┆
0x058960…058980             65 6e 74 20 6e 61 6d 65 6c 65 76 65 6c 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 66 6c 61 67 67 65   ┆ent namelevel, it will be flagge┆
0x058980…0589a0             64 20 2a 29 0a 28 2a 20 20 20 61 73 20 69 66 20 69 74 20 68 61 64 20 62 65 65 6e 20 75 73 65 64   ┆d *) (*   as if it had been used┆
0x0589a0…0589c0             20 6f 6e 20 70 72 65 63 65 64 69 6e 67 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 0a 76 61 72 0a   ┆ on preceding namelevel *)  var ┆
0x0589c0…0589e0             6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 6c 65 76 65 6c 3a 20 6e 61 6d 65 73 74 61 63 6b 70   ┆name: nameptr; level: namestackp┆
0x0589e0…058a00             74 72 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 6c 61 73 74 6c 65 76 65 6c 3c 3e 6e 69 6c 5f 6e 61 6d   ┆tr;  begin if lastlevel<>nil_nam┆
0x058a00…058a20 (23, 1, 5)  65 73 74 61 63 6b 5f 70 74 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 65 76 65 6c 3a 3d 20 6c 61   ┆estack_ptr then begin level:= la┆
0x058a20…058a40             73 74 6c 65 76 65 6c 3b 0a 72 65 70 65 61 74 0a 77 69 74 68 20 20 6c 65 76 65 6c 5e 20 64 6f 0a   ┆stlevel; repeat with  level^ do ┆
0x058a40…058a60             62 65 67 69 6e 0a 6e 61 6d 65 3a 3d 20 66 69 72 73 74 6e 61 6d 65 3b 0a 77 68 69 6c 65 20 6e 61   ┆begin name:= firstname; while na┆
0x058a60…058a80             6d 65 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f   ┆me <> nilname do with  name ^ do┆
0x058a80…058aa0             0a 62 65 67 69 6e 0a 69 66 20 75 73 65 64 6c 65 76 65 6c 20 3d 20 6e 61 6d 65 6c 65 76 65 6c 20   ┆ begin if usedlevel = namelevel ┆
0x058aa0…058ac0             74 68 65 6e 0a 69 66 20 6e 61 6d 65 6c 65 76 65 6c 20 3d 20 70 72 6f 63 65 73 73 70 61 72 61 6d   ┆then if namelevel = processparam┆
0x058ac0…058ae0             6c 65 76 65 6c 20 74 68 65 6e 0a 75 73 65 64 6c 65 76 65 6c 3a 3d 20 6c 61 73 74 67 6c 6f 62 61   ┆level then usedlevel:= lastgloba┆
0x058ae0…058b00             6c 6c 65 76 65 6c 0a 65 6c 73 65 0a 75 73 65 64 6c 65 76 65 6c 3a 3d 20 75 73 65 64 6c 65 76 65   ┆llevel else usedlevel:= usedleve┆
0x058b00…058b20             6c 5e 2e 66 6f 72 6d 65 72 5f 6c 65 76 65 6c 3b 0a 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d 65   ┆l^.former_level; name:= nextname┆
0x058b20…058b40             3b 20 20 28 2a 20 66 6f 6c 6c 6f 77 20 63 68 61 69 6e 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 77 69   ┆;  (* follow chain *) end; (* wi┆
0x058b40…058b60             74 68 20 6e 61 6d 65 20 5e 20 2a 29 0a 6c 65 76 65 6c 3a 3d 20 66 6f 72 6d 65 72 5f 6c 65 76 65   ┆th name ^ *) level:= former_leve┆
0x058b60…058b80             6c 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 6c 65 76 65 6c 20 5e 20 64 6f 20 2a 29 0a 75 6e   ┆l; end; (* with level ^ do *) un┆
0x058b80…058ba0             74 69 6c 20 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c 3d 66 69 72 73 74 6c 65 76 65 6c   ┆til level^.next_level=firstlevel┆
0x058ba0…058bc0             3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 6c 65 76   ┆; end; end; (* procedure end_lev┆
0x058bc0…058be0             65 6c 5f 75 73 65 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 67 6c 6f 62 61   ┆el_use *)    procedure end_globa┆
0x058be0…058c00             6c 5f 75 73 65 3b 0a 28 2a 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 74 65 72 6d 69 6e 61 74 69 6e   ┆l_use; (* called when terminatin┆
0x058c00…058c20 (23, 1, 6)  67 20 61 20 6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 28 2a 20 69 66 20 67 6c 6f 62 61 6c 20 76 61   ┆g a namelevel *) (* if global va┆
0x058c20…058c40             72 69 61 62 6c 65 73 20 68 61 76 65 20 62 65 65 6e 20 75 73 65 64 20 61 74 20 74 68 69 73 20 6e   ┆riables have been used at this n┆
0x058c40…058c60             61 6d 65 6c 65 76 65 6c 20 2a 29 0a 28 2a 20 20 20 74 68 65 69 72 20 75 73 65 6c 65 76 65 6c 20   ┆amelevel *) (*   their uselevel ┆
0x058c60…058c80             77 69 6c 6c 20 62 65 20 64 65 63 72 65 61 73 65 64 20 61 73 20 69 73 20 74 68 65 79 20 77 65 72   ┆will be decreased as is they wer┆
0x058c80…058ca0             65 20 75 73 65 64 20 61 74 20 2a 29 0a 28 2a 20 20 20 70 72 65 63 65 64 69 6e 67 20 6e 61 6d 65   ┆e used at *) (*   preceding name┆
0x058ca0…058cc0             6c 65 76 65 6c 20 2a 29 0a 0a 62 65 67 69 6e 0a 65 6e 64 5f 6c 65 76 65 6c 5f 75 73 65 20 28 70   ┆level *)  begin end_level_use (p┆
0x058cc0…058ce0             72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c 2c 20 6e 61 6d 65 6c 65 76 65 6c 5e 2e 66 6f 72   ┆rocessparamlevel, namelevel^.for┆
0x058ce0…058d00             6d 65 72 5f 6c 65 76 65 6c 29 3b 0a 65 6e 64 5f 6c 65 76 65 6c 5f 75 73 65 20 28 6c 6f 77 65 73   ┆mer_level); end_level_use (lowes┆
0x058d00…058d20             74 6c 65 76 65 6c 2c 20 6c 61 73 74 67 6c 6f 62 61 6c 6c 65 76 65 6c 29 3b 0a 65 6e 64 3b 0a 0a   ┆tlevel, lastgloballevel); end;  ┆
0x058d20…058d40             0c 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 70 75 73   ┆  (* procedures for handling pus┆
0x058d40…058d60             68 2f 70 6f 70 20 6f 66 20 6e 61 6d 65 73 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 73   ┆h/pop of names *)  procedure pus┆
0x058d60…058d80             68 6e 61 6d 65 20 28 78 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 62 65 67 69 6e 0a 69 66   ┆hname (xname: nameptr); begin if┆
0x058d80…058da0             20 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 75 73 68 5f 63 68 61 69 6e 3d 6e 69 6c 20 74 68 65   ┆ curpushname^.push_chain=nil the┆
0x058da0…058dc0             6e 20 28 2a 20 65 6e 64 20 6f 66 20 6c 69 73 74 2c 20 61 64 64 20 6f 6e 65 20 6d 6f 72 65 20 2a   ┆n (* end of list, add one more *┆
0x058dc0…058de0             29 0a 62 65 67 69 6e 0a 6d 61 78 70 75 73 68 6e 61 6d 65 73 3a 3d 20 6d 61 78 70 75 73 68 6e 61   ┆) begin maxpushnames:= maxpushna┆
0x058de0…058e00             6d 65 73 2b 31 3b 0a 6e 65 77 28 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 75 73 68 5f 63 68 61   ┆mes+1; new(curpushname^.push_cha┆
0x058e00…058e20 (23, 1, 7)  69 6e 29 3b 0a 77 69 74 68 20 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 75 73 68 5f 63 68 61 69   ┆in); with curpushname^.push_chai┆
0x058e20…058e40             6e 5e 20 64 6f 0a 62 65 67 69 6e 0a 70 6f 70 5f 63 68 61 69 6e 3a 3d 20 63 75 72 70 75 73 68 6e   ┆n^ do begin pop_chain:= curpushn┆
0x058e40…058e60             61 6d 65 3b 0a 70 75 73 68 5f 63 68 61 69 6e 3a 3d 20 6e 69 6c 3b 0a 65 6e 64 3b 20 28 2a 20 77   ┆ame; push_chain:= nil; end; (* w┆
0x058e60…058e80             69 74 68 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 61 64 64 20 6e 65 77 20 65 6c 65 6d 65 6e 74 20 74   ┆ith *) end; (* add new element t┆
0x058e80…058ea0             6f 20 6c 69 73 74 20 2a 29 0a 63 75 72 70 75 73 68 6e 61 6d 65 3a 3d 20 63 75 72 70 75 73 68 6e   ┆o list *) curpushname:= curpushn┆
0x058ea0…058ec0             61 6d 65 5e 2e 70 75 73 68 5f 63 68 61 69 6e 3b 0a 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 75   ┆ame^.push_chain; curpushname^.pu┆
0x058ec0…058ee0             73 68 65 64 5f 6e 61 6d 65 3a 3d 20 78 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 66 75 6e 63 74   ┆shed_name:= xname; end;    funct┆
0x058ee0…058f00             69 6f 6e 20 70 6f 70 6e 61 6d 65 20 3a 20 6e 61 6d 65 70 74 72 3b 0a 62 65 67 69 6e 0a 70 6f 70   ┆ion popname : nameptr; begin pop┆
0x058f00…058f20             6e 61 6d 65 3a 3d 20 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 75 73 68 65 64 5f 6e 61 6d 65 3b   ┆name:= curpushname^.pushed_name;┆
0x058f20…058f40             0a 63 75 72 70 75 73 68 6e 61 6d 65 3a 3d 20 63 75 72 70 75 73 68 6e 61 6d 65 5e 2e 70 6f 70 5f   ┆ curpushname:= curpushname^.pop_┆
0x058f40…058f60             63 68 61 69 6e 3b 0a 65 6e 64 3b 0a 0a 0a 0a 28 2a 20 70 75 73 68 6c 69 73 74 2f 70 6f 70 6c 69   ┆chain; end;    (* pushlist/popli┆
0x058f60…058f80             73 74 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6f 66 20 6e 65 73 74   ┆st are used for handling of nest┆
0x058f80…058fa0             65 64 20 6e 61 6d 65 6c 69 73 74 73 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 73 68 6c   ┆ed namelists *)  procedure pushl┆
0x058fa0…058fc0             69 73 74 3b 0a 62 65 67 69 6e 0a 70 75 73 68 6e 61 6d 65 20 28 6c 69 73 74 66 69 72 73 74 29 3b   ┆ist; begin pushname (listfirst);┆
0x058fc0…058fe0             0a 70 75 73 68 6e 61 6d 65 20 28 6c 69 73 74 6c 61 73 74 29 3b 0a 6c 69 73 74 66 69 72 73 74 3a   ┆ pushname (listlast); listfirst:┆
0x058fe0…059000             3d 20 6e 69 6c 6e 61 6d 65 3b 0a 6c 69 73 74 6c 61 73 74 20 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a   ┆= nilname; listlast := nilname; ┆
0x059000…059020 (23, 1, 8)  65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 6f 70 6c 69 73 74 3b 0a 62 65 67 69 6e 0a 6c   ┆end;  procedure poplist; begin l┆
0x059020…059040             69 73 74 6c 61 73 74 20 3a 3d 20 70 6f 70 6e 61 6d 65 3b 0a 6c 69 73 74 66 69 72 73 74 3a 3d 20   ┆istlast := popname; listfirst:= ┆
0x059040…059060             70 6f 70 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 28 2a 20 70 75 73 68 74 79 70 65 2f 70 6f 70   ┆popname; end;    (* pushtype/pop┆
0x059060…059080             74 79 70 65 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6f 66 20 6e 65   ┆type are used for handling of ne┆
0x059080…0590a0             73 74 65 64 20 74 79 70 65 73 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 73 68 74 79 70   ┆sted types *)  procedure pushtyp┆
0x0590a0…0590c0             65 3b 0a 62 65 67 69 6e 0a 70 75 73 68 6e 61 6d 65 20 28 63 75 72 5f 74 79 70 65 6e 61 6d 65 29   ┆e; begin pushname (cur_typename)┆
0x0590c0…0590e0             3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 6f 70 74 79 70 65 3b 0a 62 65 67 69 6e   ┆; end;  procedure poptype; begin┆
0x0590e0…059100             0a 63 75 72 5f 74 79 70 65 6e 61 6d 65 3a 3d 20 70 6f 70 6e 61 6d 65 3b 0a 77 69 74 68 20 20 63   ┆ cur_typename:= popname; with  c┆
0x059100…059120             75 72 5f 74 79 70 65 6e 61 6d 65 20 5e 20 64 6f 0a 63 75 72 5f 74 79 70 65 6e 6f 64 65 3a 3d 20   ┆ur_typename ^ do cur_typenode:= ┆
0x059120…059140             74 79 70 3b 0a 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 69 66 20 63 75   ┆typ;  if compilertest then if cu┆
0x059140…059160             72 5f 74 79 70 65 6e 6f 64 65 20 3d 20 64 75 6d 6d 79 5f 74 79 70 65 6e 6f 64 65 20 74 68 65 6e   ┆r_typenode = dummy_typenode then┆
0x059160…059180             0a 62 65 67 69 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 73 74 61 63 6b 5f 6e 6f 6e 74 79   ┆ begin comp_error (unstack_nonty┆
0x059180…0591a0             70 65 29 3b 0a 73 65 74 5f 65 72 72 6f 72 5f 74 79 70 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a   ┆pe); set_error_type; end; end;  ┆
0x0591a0…0591c0             0a 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6f 66 20   ┆  (* procedures for handling of ┆
0x0591c0…0591e0             6e 65 73 74 65 64 20 70 72 6f 63 65 64 75 72 65 20 63 61 6c 6c 73 20 28 6f 72 20 69 6e 64 65 78   ┆nested procedure calls (or index┆
0x0591e0…059200             69 6e 67 20 65 74 63 29 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 73 68 63 61 6c 6c 3b   ┆ing etc) *)  procedure pushcall;┆
0x059200…059220 (23, 1, 9)  0a 62 65 67 69 6e 0a 69 66 20 63 61 6c 6c 69 6e 64 65 78 20 3d 20 6d 61 78 5f 6e 65 73 74 65 64   ┆ begin if callindex = max_nested┆
0x059220…059240             5f 63 61 6c 6c 73 20 74 68 65 6e 0a 73 74 6f 70 20 28 74 6f 6f 5f 6d 61 6e 79 5f 6e 65 73 74 65   ┆_calls then stop (too_many_neste┆
0x059240…059260             64 5f 63 61 6c 6c 73 29 3b 0a 0a 77 69 74 68 20 63 61 6c 6c 73 20 5b 20 63 61 6c 6c 69 6e 64 65   ┆d_calls);  with calls [ callinde┆
0x059260…059280             78 20 5d 20 64 6f 0a 62 65 67 69 6e 0a 63 61 6c 6c 6b 69 6e 64 20 20 20 20 20 3a 3d 20 61 72 67   ┆x ] do begin callkind     := arg┆
0x059280…0592a0             6b 69 6e 64 3b 0a 63 61 6c 6c 66 6f 72 6d 61 6c 20 20 20 3a 3d 20 63 75 72 66 6f 72 6d 61 6c 3b   ┆kind; callformal   := curformal;┆
0x0592a0…0592c0             0a 63 61 6c 6c 6f 77 6e 65 72 20 20 20 20 3a 3d 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 3b 0a   ┆ callowner    := arglist_owner; ┆
0x0592c0…0592e0             63 61 6c 6c 5f 61 66 74 65 72 66 75 6e 63 3a 3d 20 61 66 74 65 72 5f 66 75 6e 63 63 61 6c 6c 3b   ┆call_afterfunc:= after_funccall;┆
0x0592e0…059300             0a 63 61 6c 6c 5f 66 75 6e 63 74 65 6d 70 3a 3d 20 66 75 6e 63 74 65 6d 70 76 61 72 3b 0a 63 61   ┆ call_functemp:= functempvar; ca┆
0x059300…059320             6c 6c 5f 63 6f 75 6e 74 70 72 6f 63 65 73 73 3a 3d 20 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70   ┆ll_countprocess:= count_processp┆
0x059320…059340             61 72 61 6d 3b 0a 65 6e 64 3b 0a 0a 61 66 74 65 72 5f 66 75 6e 63 63 61 6c 6c 3a 3d 20 66 61 6c   ┆aram; end;  after_funccall:= fal┆
0x059340…059360             73 65 3b 20 28 2a 20 61 73 73 75 6d 65 20 6e 6f 74 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20   ┆se; (* assume not function call ┆
0x059360…059380             2a 29 0a 0a 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 30 3b 0a 0a 63 61 6c   ┆*)  count_processparam:= 0;  cal┆
0x059380…0593a0             6c 69 6e 64 65 78 3a 3d 20 63 61 6c 6c 69 6e 64 65 78 20 2b 20 31 3b 0a 0a 65 6e 64 3b 20 28 2a   ┆lindex:= callindex + 1;  end; (*┆
0x0593a0…0593c0             20 70 72 6f 63 65 64 75 72 65 20 70 75 73 68 63 61 6c 6c 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64   ┆ procedure pushcall *)    proced┆
0x0593c0…0593e0             75 72 65 20 70 6f 70 63 61 6c 6c 3b 0a 28 2a 20 77 6f 72 6b 73 20 6f 70 70 6f 73 69 74 65 20 6f   ┆ure popcall; (* works opposite o┆
0x0593e0…059400             66 20 70 75 73 68 63 61 6c 6c 20 2a 29 0a 0a 62 65 67 69 6e 0a 0a 63 61 6c 6c 69 6e 64 65 78 3a   ┆f pushcall *)  begin  callindex:┆
0x059400…059420 (23, 1, 10) 3d 20 63 61 6c 6c 69 6e 64 65 78 20 2d 20 31 3b 0a 0a 77 69 74 68 20 63 61 6c 6c 73 20 5b 20 63   ┆= callindex - 1;  with calls [ c┆
0x059420…059440             61 6c 6c 69 6e 64 65 78 20 5d 20 64 6f 0a 62 65 67 69 6e 0a 61 72 67 6b 69 6e 64 20 20 20 20 20   ┆allindex ] do begin argkind     ┆
0x059440…059460             20 3a 3d 20 63 61 6c 6c 6b 69 6e 64 3b 0a 63 75 72 66 6f 72 6d 61 6c 20 20 20 20 3a 3d 20 63 61   ┆ := callkind; curformal    := ca┆
0x059460…059480             6c 6c 66 6f 72 6d 61 6c 3b 0a 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 3a 3d 20 63 61 6c 6c 6f 77   ┆llformal; arglist_owner:= callow┆
0x059480…0594a0             6e 65 72 3b 0a 61 66 74 65 72 5f 66 75 6e 63 63 61 6c 6c 3a 3d 20 63 61 6c 6c 5f 61 66 74 65 72   ┆ner; after_funccall:= call_after┆
0x0594a0…0594c0             66 75 6e 63 3b 0a 66 75 6e 63 74 65 6d 70 76 61 72 20 20 3a 3d 20 63 61 6c 6c 5f 66 75 6e 63 74   ┆func; functempvar  := call_funct┆
0x0594c0…0594e0             65 6d 70 3b 0a 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 63 61 6c 6c 5f 63   ┆emp; count_processparam:= call_c┆
0x0594e0…059500             6f 75 6e 74 70 72 6f 63 65 73 73 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65   ┆ountprocess; end;  end; (* proce┆
0x059500…059520             64 75 72 65 20 70 6f 70 63 61 6c 6c 20 2a 29 0a 0a 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20   ┆dure popcall *)   (* procedures ┆
0x059520…059540             66 6f 72 20 63 72 65 61 74 69 6e 67 20 6e 65 77 20 6f 70 61 6e 64 2d 6e 6f 64 65 73 2c 20 77 68   ┆for creating new opand-nodes, wh┆
0x059540…059560             65 74 68 65 72 20 6f 70 65 72 61 74 6f 72 73 20 6f 72 20 6f 70 65 72 61 6e 64 73 20 2a 29 0a 0a   ┆ether operators or operands *)  ┆
0x059560…059580             70 72 6f 63 65 64 75 72 65 20 6f 70 65 72 20 28 6d 6f 64 65 3a 20 6f 70 6d 6f 64 65 73 3b 20 78   ┆procedure oper (mode: opmodes; x┆
0x059580…0595a0             6f 70 63 6f 64 65 3a 20 63 6f 64 65 73 3b 20 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74   ┆opcode: codes; xtypename: namept┆
0x0595a0…0595c0             72 29 3b 0a 28 2a 20 69 6e 73 65 72 74 73 20 61 6e 20 6f 70 61 6e 64 6e 6f 64 65 20 61 73 20 75   ┆r); (* inserts an opandnode as u┆
0x0595c0…0595e0             6e 61 72 79 20 6f 72 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 0a 76 61 72 0a   ┆nary or binary operator *)  var ┆
0x0595e0…059600             6f 6c 64 74 6f 70 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 6d 6f 76   ┆oldtop: opandptr;  begin  (* mov┆
0x059600…059620 (23, 1, 11) 65 20 73 74 61 63 6b 74 6f 70 20 74 6f 20 61 6e 6f 74 68 65 72 20 6f 70 61 6e 64 2c 20 61 6e 64   ┆e stacktop to another opand, and┆
0x059620…059640             20 75 73 65 20 74 68 65 20 73 74 61 63 6b 74 6f 70 20 66 6f 72 20 74 68 65 20 6e 65 77 20 6f 6e   ┆ use the stacktop for the new on┆
0x059640…059660             65 20 2a 29 0a 28 2a 20 74 68 69 73 20 6d 61 6b 65 73 20 69 74 20 70 6f 73 73 69 62 6c 65 20 74   ┆e *) (* this makes it possible t┆
0x059660…059680             6f 20 27 69 6e 73 65 72 74 27 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 74 68 65 20   ┆o 'insert' in the middle of the ┆
0x059680…0596a0             6f 70 61 6e 64 2d 74 72 65 65 20 20 20 2a 29 0a 6f 6c 64 74 6f 70 3a 3d 20 61 6c 6c 6f 63 5f 6f   ┆opand-tree   *) oldtop:= alloc_o┆
0x0596a0…0596c0             70 61 6e 64 3b 0a 20 6f 6c 64 74 6f 70 20 5e 3a 3d 20 20 73 74 61 63 6b 74 6f 70 20 5e 3b 0a 0a   ┆pand;  oldtop ^:=  stacktop ^;  ┆
0x0596c0…0596e0             77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 20 20 28 2a 20 6e 65 77 20 6f 70 61 6e   ┆with  stacktop ^ do  (* new opan┆
0x0596e0…059700             64 20 6e 6f 64 65 20 2a 29 0a 62 65 67 69 6e 0a 0a 6f 70 63 6f 64 65 3a 3d 20 78 6f 70 63 6f 64   ┆d node *) begin  opcode:= xopcod┆
0x059700…059720             65 3b 0a 0a 69 66 20 6d 6f 64 65 20 3d 20 75 6e 61 72 79 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c   ┆e;  if mode = unary then begin l┆
0x059720…059740             65 66 74 20 20 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 72 69 67 74 68 20 3a 3d 20 6f 6c 64 74 6f   ┆eft  := nilopand; rigth := oldto┆
0x059740…059760             70 3b 0a 6e 65 78 74 20 20 3a 3d 20 6e 65 78 74 74 6f 70 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65   ┆p; next  := nexttop; end else be┆
0x059760…059780             67 69 6e 20 28 2a 20 62 69 6e 61 72 79 2a 29 0a 6c 65 66 74 20 20 3a 3d 20 6e 65 78 74 74 6f 70   ┆gin (* binary*) left  := nexttop┆
0x059780…0597a0             3b 0a 72 69 67 74 68 20 3a 3d 20 6f 6c 64 74 6f 70 3b 0a 6e 65 78 74 20 20 3a 3d 20 20 6c 65 66   ┆; rigth := oldtop; next  :=  lef┆
0x0597a0…0597c0             74 20 5e 20 2e 20 6e 65 78 74 3b 0a 0a 6e 65 78 74 74 6f 70 3a 3d 20 6e 65 78 74 3b 0a 0a 65 6e   ┆t ^ . next;  nexttop:= next;  en┆
0x0597c0…0597e0             64 3b 0a 0a 6f 70 5f 6c 69 6e 65 6e 6f 20 20 3a 3d 20 30 3b 20 20 28 2a 20 64 75 6d 6d 79 20 2a   ┆d;  op_lineno  := 0;  (* dummy *┆
0x0597e0…059800             29 0a 6f 70 5f 6e 61 6d 65 20 20 20 20 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 0a 6f 70 5f 76 61 6c 75   ┆) op_name    := nilname; op_valu┆
0x059800…059820 (23, 1, 12) 65 20 20 20 3a 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a 6f 70 5f 74 79 70 65 6e 61 6d 65 3a 3d 20   ┆e   := nilstring; op_typename:= ┆
0x059820…059840             78 74 79 70 65 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 28 6e 65 77 29 20 73   ┆xtypename;  end; (* with (new) s┆
0x059840…059860             74 61 63 6b 74 6f 70 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 6f 70   ┆tacktop *)  end; (* procedure op┆
0x059860…059880             65 72 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6e 65 77 6f 70 61 6e 64 20 28 78 63 6f   ┆er *)    procedure newopand (xco┆
0x059880…0598a0             64 65 3a 20 63 6f 64 65 73 3b 20 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a   ┆de: codes; xtypename: nameptr); ┆
0x0598a0…0598c0             28 2a 20 69 6e 73 65 72 74 20 61 6e 20 6f 70 65 72 61 6e 64 20 61 74 20 73 74 61 63 6b 74 6f 70   ┆(* insert an operand at stacktop┆
0x0598c0…0598e0             20 2a 29 0a 0a 76 61 72 0a 6f 6c 64 74 6f 70 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 0a 62 65 67 69   ┆ *)  var oldtop: opandptr;  begi┆
0x0598e0…059900             6e 0a 0a 69 66 20 72 65 74 61 69 6e 5f 74 6f 70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 69   ┆n  if retain_top then begin (* i┆
0x059900…059920             66 20 69 6e 73 65 72 74 69 6f 6e 20 69 6e 20 6d 69 64 64 6c 65 20 6f 66 20 6c 69 73 74 20 74 68   ┆f insertion in middle of list th┆
0x059920…059940             65 6e 20 64 6f 6e 27 74 20 27 6d 6f 76 65 27 20 73 74 61 63 6b 74 6f 70 20 2a 29 0a 6f 6c 64 74   ┆en don't 'move' stacktop *) oldt┆
0x059940…059960             6f 70 3a 3d 20 61 6c 6c 6f 63 5f 6f 70 61 6e 64 3b 0a 20 6f 6c 64 74 6f 70 20 5e 3a 3d 20 20 73   ┆op:= alloc_opand;  oldtop ^:=  s┆
0x059960…059980             74 61 63 6b 74 6f 70 20 5e 3b 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 62   ┆tacktop ^; with  stacktop ^ do b┆
0x059980…0599a0             65 67 69 6e 0a 6f 70 5f 6c 69 6e 65 6e 6f 3a 3d 20 30 3b 0a 6f 70 5f 6e 61 6d 65 20 20 3a 3d 20   ┆egin op_lineno:= 0; op_name  := ┆
0x0599a0…0599c0             6e 69 6c 6e 61 6d 65 3b 0a 6f 70 5f 76 61 6c 75 65 20 3a 3d 20 6e 69 6c 73 74 72 69 6e 67 3b 0a   ┆nilname; op_value := nilstring; ┆
0x0599c0…0599e0             65 6e 64 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 6f 6c 64 74 6f 70 3a 3d 20 73 74   ┆end; end else begin  oldtop:= st┆
0x0599e0…059a00             61 63 6b 74 6f 70 3b 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 61 6c 6c 6f 63 5f 6f 70 61 6e 64 3b 0a   ┆acktop; stacktop:= alloc_opand; ┆
0x059a00…059a20 (23, 1, 13) 0a 65 6e 64 3b 0a 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 20 20 28 2a 20 6e   ┆ end;  with  stacktop ^ do  (* n┆
0x059a20…059a40             65 77 20 6f 70 61 6e 64 20 6e 6f 64 65 20 2a 29 0a 62 65 67 69 6e 0a 0a 6f 70 63 6f 64 65 20 20   ┆ew opand node *) begin  opcode  ┆
0x059a40…059a60             20 20 20 3a 3d 20 78 63 6f 64 65 3b 0a 6c 65 66 74 20 20 20 20 20 20 20 3a 3d 20 6e 69 6c 6f 70   ┆   := xcode; left       := nilop┆
0x059a60…059a80             61 6e 64 3b 0a 72 69 67 74 68 20 20 20 20 20 20 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 6e 65 78   ┆and; rigth      := nilopand; nex┆
0x059a80…059aa0             74 20 20 20 20 20 20 20 3a 3d 20 6f 6c 64 74 6f 70 3b 0a 6f 70 5f 74 79 70 65 6e 61 6d 65 3a 3d   ┆t       := oldtop; op_typename:=┆
0x059aa0…059ac0             20 78 74 79 70 65 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 0a 0a 6e 65 78 74 74 6f 70 3a 3d 20 6f 6c 64   ┆ xtypename;  end;  nexttop:= old┆
0x059ac0…059ae0             74 6f 70 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 6e 65 77 6f 70 61 6e 64   ┆top;  end; (* procedure newopand┆
0x059ae0…059b00             20 2a 29 0a 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 74 61 6b 65 5f 73 74 61 63 6b 74 6f 70 20 3a 20   ┆ *)    function take_stacktop : ┆
0x059b00…059b20             6f 70 61 6e 64 70 74 72 3b 0a 28 2a 20 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 74 6f 70 2d 65   ┆opandptr; (* used when the top-e┆
0x059b20…059b40             78 70 72 65 73 73 69 6f 6e 20 69 73 20 74 6f 20 62 65 20 73 61 76 65 64 20 61 20 77 68 69 6c 65   ┆xpression is to be saved a while┆
0x059b40…059b60             20 2a 29 0a 62 65 67 69 6e 0a 74 61 6b 65 5f 73 74 61 63 6b 74 6f 70 3a 3d 20 73 74 61 63 6b 74   ┆ *) begin take_stacktop:= stackt┆
0x059b60…059b80             6f 70 3b 0a 73 74 61 63 6b 74 6f 70 20 20 20 20 20 3a 3d 20 6e 65 78 74 74 6f 70 3b 0a 6e 65 78   ┆op; stacktop     := nexttop; nex┆
0x059b80…059ba0             74 74 6f 70 20 20 20 20 20 20 3a 3d 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 2e 20 6e 65 78 74 3b   ┆ttop      :=  stacktop ^ . next;┆
0x059ba0…059bc0             0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 73 65 72 74 5f 66 75 6e 63 74 79   ┆ end;    procedure insert_functy┆
0x059bc0…059be0             70 65 20 28 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 62 65 67 69 6e 0a 77   ┆pe (xtypename: nameptr); begin w┆
0x059be0…059c00             69 74 68 20 20 66 75 6e 63 74 65 6d 70 76 61 72 20 5e 20 64 6f 0a 74 79 70 65 6e 61 6d 65 3a 3d   ┆ith  functempvar ^ do typename:=┆
0x059c00…059c20 (23, 1, 14) 20 78 74 79 70 65 6e 61 6d 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 72   ┆ xtypename; end;    procedure pr┆
0x059c20…059c40             65 70 61 72 65 5f 63 61 6c 6c 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a   ┆epare_call (opand: opandptr); (*┆
0x059c40…059c60             20 75 73 65 64 20 74 6f 20 70 72 65 70 61 72 65 20 61 20 72 6f 75 74 69 6e 65 2d 63 61 6c 6c 20   ┆ used to prepare a routine-call ┆
0x059c60…059c80             2a 29 0a 28 2a 20 6e 62 3a 20 27 70 75 73 68 63 61 6c 6c 27 20 6d 75 73 74 20 68 61 76 65 20 62   ┆*) (* nb: 'pushcall' must have b┆
0x059c80…059ca0             65 65 6e 20 63 61 6c 6c 65 64 20 70 72 65 76 69 6f 75 73 6c 79 20 2a 29 0a 0a 76 61 72 0a 73 61   ┆een called previously *)  var sa┆
0x059ca0…059cc0             76 65 64 5f 73 74 61 63 6b 74 6f 70 20 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 73 61 76 65 64 5f 6e   ┆ved_stacktop : opandptr; saved_n┆
0x059cc0…059ce0             65 78 74 74 6f 70 20 20 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 77 69 74 68   ┆exttop  : opandptr;  begin  with┆
0x059ce0…059d00             20 20 6f 70 61 6e 64 20 5e 20 64 6f 20 20 20 28 2a 20 6f 70 61 6e 64 20 63 6f 6e 74 61 69 6e 73   ┆  opand ^ do   (* opand contains┆
0x059d00…059d20             20 69 64 2c 20 68 6f 6c 64 69 6e 67 20 72 6f 75 74 69 6e 65 20 2a 29 0a 77 69 74 68 20 20 6f 70   ┆ id, holding routine *) with  op┆
0x059d20…059d40             5f 6e 61 6d 65 20 5e 20 64 6f 20 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 72 6f 75 74   ┆_name ^ do   (* namenode of rout┆
0x059d40…059d60             69 6e 65 20 2a 29 0a 0a 62 65 67 69 6e 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 67 6c 6f 62   ┆ine *)  begin (* initialize glob┆
0x059d60…059d80             61 6c 20 76 61 72 69 61 62 6c 65 73 2c 20 64 65 73 63 72 69 62 69 6e 67 20 61 72 67 75 6d 65 6e   ┆al variables, describing argumen┆
0x059d80…059da0             74 73 20 74 6f 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 2a 29 0a 0a 61 72 67 6b 69 6e 64 20 20   ┆ts to this routine *)  argkind  ┆
0x059da0…059dc0             20 20 3a 3d 20 63 61 72 67 75 6d 65 6e 74 3b 0a 63 75 72 66 6f 72 6d 61 6c 20 20 3a 3d 20 70 61   ┆  := cargument; curformal  := pa┆
0x059dc0…059de0             72 61 6d 73 3b 20 20 20 20 20 28 2a 20 66 69 72 73 74 20 6f 66 20 66 6f 72 6d 61 6c 20 6c 69 73   ┆rams;     (* first of formal lis┆
0x059de0…059e00             74 20 2a 29 0a 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 3a 3d 20 6f 70 5f 6e 61 6d 65 3b 20 20 20   ┆t *) arglist_owner:= op_name;   ┆
0x059e00…059e20 (23, 1, 15) 20 28 2a 20 73 65 74 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 61 73 20 6f 77 6e 65 72 20 6f 66   ┆ (* set this routine as owner of┆
0x059e20…059e40             20 66 6f 72 6d 61 6c 20 6c 69 73 74 20 2a 29 0a 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 28 2a 20   ┆ formal list *)  if namekind (* ┆
0x059e40…059e60             6f 66 20 72 6f 75 74 69 6e 65 20 2a 29 20 3d 20 63 66 75 6e 63 74 69 6f 6e 20 74 68 65 6e 0a 62   ┆of routine *) = cfunction then b┆
0x059e60…059e80             65 67 69 6e 0a 28 2a 20 73 61 76 65 20 73 74 61 63 6b 74 6f 70 20 65 74 63 20 61 6e 64 20 72 65   ┆egin (* save stacktop etc and re┆
0x059e80…059ea0             73 74 6f 72 65 20 6c 61 74 65 72 20 2a 29 0a 28 2a 20 73 69 6d 75 6c 61 74 65 20 74 68 61 74 20   ┆store later *) (* simulate that ┆
0x059ea0…059ec0             27 6f 70 61 6e 64 27 20 69 73 20 73 74 61 63 6b 74 6f 70 20 2a 29 0a 73 61 76 65 64 5f 73 74 61   ┆'opand' is stacktop *) saved_sta┆
0x059ec0…059ee0             63 6b 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 3b 0a 73 61 76 65 64 5f 6e 65 78 74 74 6f 70 20   ┆cktop:= stacktop; saved_nexttop ┆
0x059ee0…059f00             3a 3d 20 6e 65 78 74 74 6f 70 3b 0a 73 74 61 63 6b 74 6f 70 20 20 20 20 20 20 3a 3d 20 6f 70 61   ┆:= nexttop; stacktop      := opa┆
0x059f00…059f20             6e 64 3b 0a 6e 65 78 74 74 6f 70 20 20 20 20 20 20 20 3a 3d 20 20 73 74 61 63 6b 74 6f 70 20 5e   ┆nd; nexttop       :=  stacktop ^┆
0x059f20…059f40             20 2e 20 6e 65 78 74 3b 0a 0a 72 65 74 61 69 6e 5f 74 6f 70 3a 3d 20 74 72 75 65 3b 0a 0a 28 2a   ┆ . next;  retain_top:= true;  (*┆
0x059f40…059f60             20 72 65 73 65 72 76 65 20 74 65 6d 70 20 6e 61 6d 65 2c 20 66 6f 72 20 69 64 65 6e 74 69 66 79   ┆ reserve temp name, for identify┆
0x059f60…059f80             69 6e 67 20 74 65 6d 70 2d 72 65 74 75 72 6e 2d 76 61 6c 75 65 20 2a 29 0a 66 75 6e 63 74 65 6d   ┆ing temp-return-value *) functem┆
0x059f80…059fa0             70 76 61 72 3a 3d 20 61 6c 6c 6f 63 5f 6e 61 6d 65 6e 6f 64 65 3b 0a 69 6e 73 65 72 74 5f 66 75   ┆pvar:= alloc_namenode; insert_fu┆
0x059fa0…059fc0             6e 63 74 79 70 65 20 28 74 79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20   ┆nctype (typename (* of function ┆
0x059fc0…059fe0             2a 29 20 29 3b 0a 0a 28 2a 20 69 6e 73 65 72 74 20 6f 70 61 6e 64 2c 20 70 6f 69 6e 74 69 6e 67   ┆*) );  (* insert opand, pointing┆
0x059fe0…05a000             20 61 74 20 74 68 69 73 20 74 65 6d 70 2d 6e 61 6d 65 20 2a 29 0a 6f 70 65 72 20 28 75 6e 61 72   ┆ at this temp-name *) oper (unar┆
0x05a000…05a020 (24, 0, 1)  79 2c 20 63 66 75 6e 63 74 72 61 69 6c 65 72 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 69 72 72 65   ┆y, cfunctrailer, nilname (* irre┆
0x05a020…05a040             6c 6c 20 74 79 70 65 6e 61 6d 65 20 2a 29 20 29 3b 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70   ┆ll typename *) ); with  stacktop┆
0x05a040…05a060             20 5e 20 64 6f 0a 6f 70 5f 6e 61 6d 65 3a 3d 20 66 75 6e 63 74 65 6d 70 76 61 72 3b 0a 0a 28 2a   ┆ ^ do op_name:= functempvar;  (*┆
0x05a060…05a080             20 69 6e 73 65 72 74 20 6f 70 65 72 61 6e 64 2c 20 74 6f 20 62 65 20 75 73 65 64 20 61 73 20 61   ┆ insert operand, to be used as a┆
0x05a080…05a0a0             63 74 75 61 6c 20 61 72 67 75 6d 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65 74 75 72 6e 2d 76 61   ┆ctual argument for the return-va┆
0x05a0a0…05a0c0             6c 75 65 20 2a 29 0a 6e 65 77 6f 70 61 6e 64 20 28 63 66 75 6e 63 74 65 6d 70 2c 20 6e 69 6c 6e   ┆lue *) newopand (cfunctemp, niln┆
0x05a0c0…05a0e0             61 6d 65 20 28 2a 20 69 72 72 65 6c 6c 20 74 79 70 65 6e 61 6d 65 20 2a 29 20 29 3b 0a 77 69 74   ┆ame (* irrell typename *) ); wit┆
0x05a0e0…05a100             68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 6f 70 5f 6e 61 6d 65 3a 3d 20 66 75 6e 63 74   ┆h  stacktop ^ do op_name:= funct┆
0x05a100…05a120             65 6d 70 76 61 72 3b 0a 0a 28 2a 20 62 69 6e 64 20 74 68 69 73 20 61 63 74 75 61 6c 2d 61 72 67   ┆empvar;  (* bind this actual-arg┆
0x05a120…05a140             75 6d 65 6e 74 20 6f 6e 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 2a 29 0a 28 2a 20 2e 2e   ┆ument onto the function *) (* ..┆
0x05a140…05a160             2e 20 73 65 65 20 61 6c 73 6f 20 27 61 63 74 70 61 72 61 6d 27 20 2e 2e 2e 20 2a 29 0a 6f 70 65   ┆. see also 'actparam' ... *) ope┆
0x05a160…05a180             72 20 28 62 69 6e 61 72 79 2c 20 61 72 67 6b 69 6e 64 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 69   ┆r (binary, argkind, nilname (* i┆
0x05a180…05a1a0             72 72 65 6c 6c 20 74 79 70 65 6e 61 6d 65 20 2a 29 20 29 3b 0a 77 69 74 68 20 20 73 74 61 63 6b   ┆rrell typename *) ); with  stack┆
0x05a1a0…05a1c0             74 6f 70 20 5e 20 64 6f 0a 6f 70 5f 6e 61 6d 65 3a 3d 20 63 75 72 66 6f 72 6d 61 6c 3b 20 20 28   ┆top ^ do op_name:= curformal;  (┆
0x05a1c0…05a1e0             2a 20 6c 65 74 20 6f 70 6e 61 6d 65 20 70 6f 69 6e 74 20 61 74 20 66 69 72 73 74 20 66 6f 72 6d   ┆* let opname point at first form┆
0x05a1e0…05a200             61 6c 20 6e 61 6d 65 2c 20 69 2e 65 2e 20 27 66 75 6e 63 76 61 6c 27 20 2a 29 0a 0a 69 66 20 63   ┆al name, i.e. 'funcval' *)  if c┆
0x05a200…05a220 (24, 0, 2)  6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 69 66 20 28 73 74 61 63 6b 74 6f 70 20 3c 3e   ┆ompilertest then if (stacktop <>┆
0x05a220…05a240             20 6f 70 61 6e 64 29 20 6f 72 20 28 6e 65 78 74 74 6f 70 20 3c 3e 20 20 6f 70 61 6e 64 20 5e 20   ┆ opand) or (nexttop <>  opand ^ ┆
0x05a240…05a260             2e 20 6e 65 78 74 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 28 73 65 67 28 73 74 61   ┆. next) then begin write(seg(sta┆
0x05a260…05a280             63 6b 74 6f 70 29 2c 20 6f 66 73 28 73 74 61 63 6b 74 6f 70 29 2c 0a 20 20 20 20 20 20 73 65 67   ┆cktop), ofs(stacktop),       seg┆
0x05a280…05a2a0             28 6f 70 61 6e 64 29 2c 20 20 20 20 6f 66 73 28 6f 70 61 6e 64 29 2c 0a 20 20 20 20 20 20 73 65   ┆(opand),    ofs(opand),       se┆
0x05a2a0…05a2c0             67 28 6e 65 78 74 74 6f 70 29 2c 20 20 6f 66 73 28 6e 65 78 74 74 6f 70 29 2c 0a 20 20 20 20 20   ┆g(nexttop),  ofs(nexttop),      ┆
0x05a2c0…05a2e0             20 73 65 67 28 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 2c 6f 66 73 28 6f 70 61 6e 64 5e 2e 6e 65 78   ┆ seg(opand^.next),ofs(opand^.nex┆
0x05a2e0…05a300             74 29 29 3b 0a 62 72 65 61 6b 3b 0a 65 6e 64 3b 0a 0a 72 65 74 61 69 6e 5f 74 6f 70 3a 3d 20 66   ┆t)); break; end;  retain_top:= f┆
0x05a300…05a320             61 6c 73 65 3b 0a 0a 73 74 61 63 6b 74 6f 70 20 20 20 20 20 20 3a 3d 20 73 61 76 65 64 5f 73 74   ┆alse;  stacktop      := saved_st┆
0x05a320…05a340             61 63 6b 74 6f 70 3b 0a 6e 65 78 74 74 6f 70 20 20 20 20 20 20 20 3a 3d 20 73 61 76 65 64 5f 6e   ┆acktop; nexttop       := saved_n┆
0x05a340…05a360             65 78 74 74 6f 70 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 6e 61 6d 65 6e   ┆exttop; end;  end; (* with namen┆
0x05a360…05a380             6f 64 65 20 6f 66 20 72 6f 75 74 69 6e 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65   ┆ode of routine *)  end; (* proce┆
0x05a380…05a3a0             64 75 72 65 20 70 72 65 70 61 72 65 2d 63 61 6c 6c 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72   ┆dure prepare-call *)    procedur┆
0x05a3a0…05a3c0             65 20 74 65 72 6d 69 6e 61 74 65 5f 63 61 6c 6c 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74   ┆e terminate_call (opand: opandpt┆
0x05a3c0…05a3e0             72 29 3b 0a 28 2a 20 75 73 65 64 20 62 79 20 27 65 6e 64 61 63 74 75 61 6c 27 20 74 6f 20 74 65   ┆r); (* used by 'endactual' to te┆
0x05a3e0…05a400             73 74 20 74 6f 74 61 6c 20 6d 61 74 63 68 20 6f 66 20 66 6f 72 6d 61 6c 20 6c 69 73 74 73 20 65   ┆st total match of formal lists e┆
0x05a400…05a420 (24, 0, 3)  74 63 20 2a 29 0a 0a 6c 61 62 65 6c 20 31 30 3b 0a 0a 76 61 72 0a 73 61 76 65 64 5f 73 74 61 63   ┆tc *)  label 10;  var saved_stac┆
0x05a420…05a440             6b 74 6f 70 20 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 73 61 76 65 64 5f 6e 65 78 74 74 6f 70 20 20   ┆ktop : opandptr; saved_nexttop  ┆
0x05a440…05a460             3a 20 6f 70 61 6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 73 61 76 65 20 73 74 61 63   ┆: opandptr;  begin  (* save stac┆
0x05a460…05a480             6b 74 6f 70 20 65 74 63 20 61 6e 64 20 72 65 73 74 6f 72 65 20 6c 61 74 65 72 20 2a 29 0a 28 2a   ┆ktop etc and restore later *) (*┆
0x05a480…05a4a0             20 73 69 6d 75 6c 61 74 65 20 74 68 61 74 20 27 6f 70 61 6e 64 27 20 69 73 20 73 74 61 63 6b 74   ┆ simulate that 'opand' is stackt┆
0x05a4a0…05a4c0             6f 70 20 20 20 2a 29 0a 73 61 76 65 64 5f 73 74 61 63 6b 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f   ┆op   *) saved_stacktop:= stackto┆
0x05a4c0…05a4e0             70 3b 0a 73 61 76 65 64 5f 6e 65 78 74 74 6f 70 20 3a 3d 20 6e 65 78 74 74 6f 70 3b 0a 73 74 61   ┆p; saved_nexttop := nexttop; sta┆
0x05a4e0…05a500             63 6b 74 6f 70 20 20 20 20 20 20 3a 3d 20 6f 70 61 6e 64 3b 0a 6e 65 78 74 74 6f 70 20 20 20 20   ┆cktop      := opand; nexttop    ┆
0x05a500…05a520             20 20 20 3a 3d 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 2e 20 6e 65 78 74 3b 0a 0a 63 61 73 65 20   ┆   :=  stacktop ^ . next;  case ┆
0x05a520…05a540             61 72 67 6b 69 6e 64 20 6f 66 0a 0a 63 73 74 72 75 63 72 65 63 6f 72 64 2c 0a 63 61 72 67 75 6d   ┆argkind of  cstrucrecord, cargum┆
0x05a540…05a560             65 6e 74 3a 0a 62 65 67 69 6e 0a 28 2a 20 74 65 73 74 20 74 68 61 74 20 61 6c 6c 20 72 65 63 66   ┆ent: begin (* test that all recf┆
0x05a560…05a580             69 65 6c 64 73 20 28 72 65 73 70 65 63 74 69 76 65 6c 79 20 61 6c 6c 20 66 6f 72 6d 61 6c 73 29   ┆ields (respectively all formals)┆
0x05a580…05a5a0             20 68 61 76 65 20 62 65 65 6e 20 6d 61 74 63 68 65 64 20 2a 29 0a 77 68 69 6c 65 20 63 75 72 66   ┆ have been matched *) while curf┆
0x05a5a0…05a5c0             6f 72 6d 61 6c 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 20 63 75 72 66 6f 72   ┆ormal <> nilname do with  curfor┆
0x05a5c0…05a5e0             6d 61 6c 20 5e 20 64 6f 0a 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 28 2a 20 6f 66 20 63 75 72   ┆mal ^ do case namekind (* of cur┆
0x05a5e0…05a600             66 6f 72 6d 61 6c 20 2a 29 20 6f 66 0a 63 72 65 63 66 69 65 6c 64 2c 0a 63 76 61 72 70 2c 0a 63   ┆formal *) of crecfield, cvarp, c┆
0x05a600…05a620 (24, 0, 4)  76 61 6c 75 65 70 3a 0a 62 65 67 69 6e 0a 65 72 72 6f 72 73 70 69 78 3a 3d 20 61 72 67 6c 69 73   ┆valuep: begin errorspix:= arglis┆
0x05a620…05a640             74 5f 6f 77 6e 65 72 5e 2e 73 70 69 78 3b 0a 65 72 72 6f 72 20 28 74 6f 6f 5f 66 65 77 5f 70 61   ┆t_owner^.spix; error (too_few_pa┆
0x05a640…05a660             72 61 6d 65 74 65 72 73 29 3b 0a 67 6f 74 6f 20 31 30 3b 0a 65 6e 64 3b 0a 63 66 75 6e 63 76 61   ┆rameters); goto 10; end; cfuncva┆
0x05a660…05a680             6c 2c 0a 63 75 6e 64 65 63 6c 61 72 65 64 2c 20 20 28 2a 20 75 6e 64 65 63 6c 61 72 65 64 20 74   ┆l, cundeclared,  (* undeclared t┆
0x05a680…05a6a0             79 70 65 6e 61 6d 65 20 2a 29 0a 63 73 63 61 6c 61 72 65 6c 65 6d 2c 0a 63 74 79 70 65 3a 0a 63   ┆ypename *) cscalarelem, ctype: c┆
0x05a6a0…05a6c0             75 72 66 6f 72 6d 61 6c 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 20 20 28 2a 20 69 2e 65 2e 20 73 6b   ┆urformal:= nextname;  (* i.e. sk┆
0x05a6c0…05a6e0             69 70 20 69 6e 20 66 6f 72 6d 61 6c 2d 6c 69 73 74 20 2a 29 0a 65 6c 73 65 0a 69 66 20 63 6f 6d   ┆ip in formal-list *) else if com┆
0x05a6e0…05a700             70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f   ┆pilertest then comp_error (unkno┆
0x05a700…05a720             77 6e 5f 6e 61 6d 65 6b 69 6e 64 29 3b 0a 65 6e 64 3b 0a 0a 31 30 3a 3b 0a 65 6e 64 3b 20 28 2a   ┆wn_namekind); end;  10:; end; (*┆
0x05a720…05a740             20 61 72 67 6b 69 6e 64 20 3d 20 73 74 72 75 63 72 65 63 6f 72 64 20 6f 72 20 61 72 67 75 6d 65   ┆ argkind = strucrecord or argume┆
0x05a740…05a760             6e 74 20 2a 29 0a 0a 65 6c 73 65 3b 20 28 2a 20 6e 6f 20 63 68 65 63 6b 20 2a 29 0a 65 6e 64 3b   ┆nt *)  else; (* no check *) end;┆
0x05a760…05a780             20 28 2a 20 63 61 73 65 20 61 72 67 6b 69 6e 64 20 2a 29 0a 0a 28 2a 20 69 6e 73 65 72 74 20 6f   ┆ (* case argkind *)  (* insert o┆
0x05a780…05a7a0             70 61 6e 64 73 2c 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 65 20 70 72 6f 70 65 72 20 65 6e 64   ┆pands, describing the proper end┆
0x05a7a0…05a7c0             2d 6c 69 73 74 20 2a 29 0a 63 61 73 65 20 61 72 67 6b 69 6e 64 20 6f 66 0a 0a 63 69 6e 64 65 78   ┆-list *) case argkind of  cindex┆
0x05a7c0…05a7e0             3a 20 3b 20 28 2a 20 6e 6f 74 68 69 6e 67 20 2a 29 0a 0a 63 73 74 72 75 63 61 72 72 61 79 2c 0a   ┆: ; (* nothing *)  cstrucarray, ┆
0x05a7e0…05a800             63 73 74 72 75 63 72 65 63 6f 72 64 3a 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 65 6e 64 73   ┆cstrucrecord: oper (unary, cends┆
0x05a800…05a820 (24, 0, 5)  74 72 75 63 2c 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 29 3b 0a 0a 63 61 72 67 75 6d 65 6e 74   ┆truc, arglist_owner);  cargument┆
0x05a820…05a840             3a 0a 77 69 74 68 20 20 61 72 67 6c 69 73 74 5f 6f 77 6e 65 72 20 5e 20 64 6f 0a 63 61 73 65 20   ┆: with  arglist_owner ^ do case ┆
0x05a840…05a860             6e 61 6d 65 6b 69 6e 64 20 6f 66 0a 63 65 78 74 70 72 6f 63 65 73 73 3a 0a 6f 70 65 72 28 75 6e   ┆namekind of cextprocess: oper(un┆
0x05a860…05a880             61 72 79 2c 20 63 63 61 6c 6c 70 72 6f 63 65 73 73 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 6e 6f   ┆ary, ccallprocess, nilname (* no┆
0x05a880…05a8a0             20 74 79 70 65 20 2a 29 29 3b 0a 63 70 72 6f 63 65 73 73 3a 0a 62 65 67 69 6e 0a 6f 70 65 72 20   ┆ type *)); cprocess: begin oper ┆
0x05a8a0…05a8c0             28 75 6e 61 72 79 2c 20 63 63 61 6c 6c 70 72 6f 63 65 73 73 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a   ┆(unary, ccallprocess, nilname (*┆
0x05a8c0…05a8e0             20 6e 6f 20 74 79 70 65 20 2a 29 20 29 3b 0a 77 69 74 68 20 20 73 74 61 63 6b 74 6f 70 20 5e 20   ┆ no type *) ); with  stacktop ^ ┆
0x05a8e0…05a900             64 6f 0a 6f 70 5f 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d 65 20 28 2a 20 6f 66 20 70 72 6f 63   ┆do op_name:= nextname (* of proc┆
0x05a900…05a920             65 73 73 20 2a 29 3b 20 20 28 2a 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20 73 6f 6e 76 61 72 2d   ┆ess *);  (* remember the sonvar-┆
0x05a920…05a940             6e 61 6d 65 2c 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65 20 2a 29 0a 65 6e 64 3b 0a 63 70 72 6f   ┆name, for later use *) end; cpro┆
0x05a940…05a960             63 65 64 75 72 65 2c 0a 63 66 75 6e 63 74 69 6f 6e 3a 0a 62 65 67 69 6e 0a 28 2a 20 66 69 72 73   ┆cedure, cfunction: begin (* firs┆
0x05a960…05a980             74 20 69 6e 73 65 72 74 20 6f 70 65 72 61 74 6f 72 73 20 66 6f 72 20 6c 61 74 65 72 20 63 6f 75   ┆t insert operators for later cou┆
0x05a980…05a9a0             6e 74 69 6e 67 20 69 6e 20 6f 70 61 6e 64 2d 73 74 61 63 6b 20 2a 29 0a 77 68 69 6c 65 20 63 6f   ┆nting in opand-stack *) while co┆
0x05a9a0…05a9c0             75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 20 3e 20 30 20 64 6f 0a 62 65 67 69 6e 0a 63 6f   ┆unt_processparam > 0 do begin co┆
0x05a9c0…05a9e0             75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73   ┆unt_processparam:= count_process┆
0x05a9e0…05aa00             70 61 72 61 6d 20 2d 20 31 3b 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 65 6e 64 70 72 6f 63   ┆param - 1; oper (unary, cendproc┆
0x05aa00…05aa20 (24, 0, 6)  65 73 73 70 61 72 61 6d 2c 20 6e 69 6c 6e 61 6d 65 20 28 2a 20 69 72 72 65 6c 6c 20 74 79 70 65   ┆essparam, nilname (* irrell type┆
0x05aa20…05aa40             6e 61 6d 65 20 2a 29 20 29 3b 0a 65 6e 64 3b 0a 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 28 2a   ┆name *) ); end; case namekind (*┆
0x05aa40…05aa60             20 6f 66 20 61 72 67 6c 69 73 74 2d 6f 77 6e 65 72 20 2a 29 20 6f 66 0a 63 70 72 6f 63 65 64 75   ┆ of arglist-owner *) of cprocedu┆
0x05aa60…05aa80             72 65 3a 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 65 6e 64 70 72 6f 63 2c 20 6e 69 6c 6e 61   ┆re: oper (unary, cendproc, nilna┆
0x05aa80…05aaa0             6d 65 20 28 2a 20 69 72 72 65 6c 6c 20 74 79 70 65 6e 61 6d 65 20 2a 29 20 29 3b 0a 63 66 75 6e   ┆me (* irrell typename *) ); cfun┆
0x05aaa0…05aac0             63 74 69 6f 6e 3a 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 66 75 6e 63 74 65 6d 70 76 61 72 20 5e   ┆ction: begin with  functempvar ^┆
0x05aac0…05aae0             20 64 6f 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 2c 20 63 6f 6e 74 61 69 6e 69 6e 67 20 66 75 6e   ┆ do  (* namenode, containing fun┆
0x05aae0…05ab00             63 74 69 6f 6e 2d 74 79 70 65 20 2a 29 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 66 63 61 6c   ┆ction-type *) oper (unary, cfcal┆
0x05ab00…05ab20             6c 2c 20 74 79 70 65 6e 61 6d 65 20 28 2a 20 6f 66 20 66 75 6e 63 74 69 6f 6e 2d 74 79 70 65 20   ┆l, typename (* of function-type ┆
0x05ab20…05ab40             2a 29 20 29 3b 0a 77 69 74 68 20 63 61 6c 6c 73 20 5b 20 63 61 6c 6c 69 6e 64 65 78 20 2d 20 31   ┆*) ); with calls [ callindex - 1┆
0x05ab40…05ab60             20 5d 20 64 6f 20 20 28 2a 20 69 2e 65 2e 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 76 61 6c   ┆ ] do  (* i.e. determine the val┆
0x05ab60…05ab80             75 65 20 74 6f 20 62 65 20 75 6e 73 74 61 63 6b 65 64 20 2a 29 0a 63 61 6c 6c 5f 61 66 74 65 72   ┆ue to be unstacked *) call_after┆
0x05ab80…05aba0             66 75 6e 63 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 28 2a 20 6e 6f 74 20 70 6f   ┆func:= true; end; else (* not po┆
0x05aba0…05abc0             73 73 69 62 6c 65 20 2a 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 70 72 6f 63 65 64 75 72   ┆ssible *); end; (* case procedur┆
0x05abc0…05abe0             65 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 2a 29 0a 65 6e 64 3b 0a 65 6c 73 65 3b 0a 65 6e 64 3b   ┆e or function *) end; else; end;┆
0x05abe0…05ac00             20 28 2a 20 63 61 73 65 20 6e 61 6d 65 6b 69 6e 64 20 2a 29 0a 0a 63 65 72 72 6f 72 61 72 67 3a   ┆ (* case namekind *)  cerrorarg:┆
0x05ac00…05ac20 (24, 0, 7)  20 3b 20 28 2a 20 64 6f 6e 27 74 20 63 61 72 65 20 61 6e 79 77 61 79 20 2a 29 0a 0a 0a 65 6c 73   ┆ ; (* don't care anyway *)   els┆
0x05ac20…05ac40             65 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72 6f   ┆e if compilertest then comp_erro┆
0x05ac40…05ac60             72 20 28 75 6e 6b 6e 6f 77 6e 5f 61 72 67 6b 69 6e 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73   ┆r (unknown_argkind); end; (* cas┆
0x05ac60…05ac80             65 20 61 72 67 6b 69 6e 64 20 2a 29 0a 0a 28 2a 20 75 6e 73 74 61 63 6b 20 6e 65 73 74 65 64 20   ┆e argkind *)  (* unstack nested ┆
0x05ac80…05aca0             63 61 6c 6c 20 2a 29 0a 70 6f 70 63 61 6c 6c 3b 0a 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73   ┆call *) popcall;  if compilertes┆
0x05aca0…05acc0             74 20 74 68 65 6e 0a 69 66 20 28 6f 70 61 6e 64 20 3c 3e 20 73 74 61 63 6b 74 6f 70 29 20 6f 72   ┆t then if (opand <> stacktop) or┆
0x05acc0…05ace0             20 28 6e 65 78 74 74 6f 70 20 3c 3e 20 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 20 74 68 65 6e 0a 62   ┆ (nexttop <> opand^.next) then b┆
0x05ace0…05ad00             65 67 69 6e 0a 77 72 69 74 65 28 73 65 67 28 73 74 61 63 6b 74 6f 70 29 2c 20 6f 66 73 28 73 74   ┆egin write(seg(stacktop), ofs(st┆
0x05ad00…05ad20             61 63 6b 74 6f 70 29 2c 0a 20 20 20 20 20 20 73 65 67 28 6f 70 61 6e 64 29 2c 20 20 20 20 6f 66   ┆acktop),       seg(opand),    of┆
0x05ad20…05ad40             73 28 6f 70 61 6e 64 29 2c 0a 20 20 20 20 20 20 73 65 67 28 6e 65 78 74 74 6f 70 29 2c 20 20 6f   ┆s(opand),       seg(nexttop),  o┆
0x05ad40…05ad60             66 73 28 6e 65 78 74 74 6f 70 29 2c 0a 20 20 20 20 20 20 73 65 67 28 6f 70 61 6e 64 5e 2e 6e 65   ┆fs(nexttop),       seg(opand^.ne┆
0x05ad60…05ad80             78 74 29 2c 6f 66 73 28 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 29 3b 0a 62 72 65 61 6b 3b 0a 65 6e   ┆xt),ofs(opand^.next)); break; en┆
0x05ad80…05ada0             64 3b 0a 28 2a 20 72 65 73 74 6f 72 65 20 74 68 65 72 65 61 6c 20 73 74 61 63 6b 74 6f 70 20 61   ┆d; (* restore thereal stacktop a┆
0x05ada0…05adc0             6e 64 20 6e 65 78 74 74 6f 70 20 2a 29 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 73 61 76 65 64 5f 73   ┆nd nexttop *) stacktop:= saved_s┆
0x05adc0…05ade0             74 61 63 6b 74 6f 70 3b 0a 6e 65 78 74 74 6f 70 20 3a 3d 20 73 61 76 65 64 5f 6e 65 78 74 74 6f   ┆tacktop; nexttop := saved_nextto┆
0x05ade0…05ae00             70 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 74 65 72 6d 69 6e 61 74 65 2d   ┆p;  end; (* procedure terminate-┆
0x05ae00…05ae20 (24, 0, 8)  63 61 6c 6c 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 72 6d 69 6e 61 74 65 5f 66   ┆call *)    procedure terminate_f┆
0x05ae20…05ae40             75 6e 63 63 61 6c 6c 20 28 6f 70 61 6e 64 3a 20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 65 6e   ┆unccall (opand: opandptr); (* en┆
0x05ae40…05ae60             73 75 72 65 73 20 74 68 61 74 20 74 68 65 20 27 65 6e 64 66 75 6e 63 63 61 6c 6c 27 20 69 73 20   ┆sures that the 'endfunccall' is ┆
0x05ae60…05ae80             65 6d 69 74 74 65 64 20 28 61 73 20 6c 61 74 65 20 61 73 20 70 6f 73 73 69 62 6c 65 29 20 61 66   ┆emitted (as late as possible) af┆
0x05ae80…05aea0             74 65 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20 2a 29 0a 0a 76 61 72 0a 73 61 76 65   ┆ter a function call *)  var save┆
0x05aea0…05aec0             64 5f 73 74 61 63 6b 74 6f 70 20 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 73 61 76 65 64 5f 6e 65 78   ┆d_stacktop : opandptr; saved_nex┆
0x05aec0…05aee0             74 74 6f 70 20 20 3a 20 6f 70 61 6e 64 70 74 72 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 61 66 74 65   ┆ttop  : opandptr;  begin if afte┆
0x05aee0…05af00             72 5f 66 75 6e 63 63 61 6c 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 73 61 76 65 20 73 74   ┆r_funccall then begin (* save st┆
0x05af00…05af20             61 63 6b 74 6f 70 20 65 74 63 20 61 6e 64 20 72 65 73 74 6f 72 65 20 6c 61 74 65 72 20 2a 29 0a   ┆acktop etc and restore later *) ┆
0x05af20…05af40             28 2a 20 73 69 6d 75 6c 61 74 65 20 74 68 61 74 20 27 6f 70 61 6e 64 27 20 69 73 20 73 74 61 63   ┆(* simulate that 'opand' is stac┆
0x05af40…05af60             6b 74 6f 70 20 20 20 2a 29 0a 73 61 76 65 64 5f 73 74 61 63 6b 74 6f 70 3a 3d 20 73 74 61 63 6b   ┆ktop   *) saved_stacktop:= stack┆
0x05af60…05af80             74 6f 70 3b 0a 73 61 76 65 64 5f 6e 65 78 74 74 6f 70 20 3a 3d 20 6e 65 78 74 74 6f 70 3b 0a 73   ┆top; saved_nexttop := nexttop; s┆
0x05af80…05afa0             74 61 63 6b 74 6f 70 20 20 20 20 20 20 3a 3d 20 6f 70 61 6e 64 3b 0a 6e 65 78 74 74 6f 70 20 20   ┆tacktop      := opand; nexttop  ┆
0x05afa0…05afc0             20 20 20 20 20 3a 3d 20 20 73 74 61 63 6b 74 6f 70 20 5e 20 2e 20 6e 65 78 74 3b 0a 77 69 74 68   ┆     :=  stacktop ^ . next; with┆
0x05afc0…05afe0             20 20 73 74 61 63 6b 74 6f 70 20 5e 20 64 6f 0a 6f 70 65 72 20 28 75 6e 61 72 79 2c 20 63 65 6e   ┆  stacktop ^ do oper (unary, cen┆
0x05afe0…05b000             64 76 61 72 69 61 62 6c 65 2c 20 6f 70 5f 74 79 70 65 6e 61 6d 65 20 28 2a 20 63 6f 6e 74 69 6e   ┆dvariable, op_typename (* contin┆
0x05b000…05b020 (24, 0, 9)  75 65 20 77 69 74 68 20 6f 70 2d 74 79 70 65 20 2a 29 20 29 3b 0a 28 2a 20 75 6e 73 74 61 63 6b   ┆ue with op-type *) ); (* unstack┆
0x05b020…05b040             20 66 72 6f 6d 20 63 61 6c 6c 2d 73 74 61 63 6b 20 2a 29 0a 61 66 74 65 72 5f 66 75 6e 63 63 61   ┆ from call-stack *) after_funcca┆
0x05b040…05b060             6c 6c 3a 3d 20 66 61 6c 73 65 3b 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e   ┆ll:= false; if compilertest then┆
0x05b060…05b080             0a 69 66 20 28 6f 70 61 6e 64 20 3c 3e 20 73 74 61 63 6b 74 6f 70 29 20 6f 72 20 28 6e 65 78 74   ┆ if (opand <> stacktop) or (next┆
0x05b080…05b0a0             74 6f 70 20 3c 3e 20 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77   ┆top <> opand^.next) then begin w┆
0x05b0a0…05b0c0             72 69 74 65 28 73 65 67 28 73 74 61 63 6b 74 6f 70 29 2c 20 6f 66 73 28 73 74 61 63 6b 74 6f 70   ┆rite(seg(stacktop), ofs(stacktop┆
0x05b0c0…05b0e0             29 2c 0a 20 20 20 20 20 73 65 67 28 6f 70 61 6e 64 29 2c 20 20 20 20 20 6f 66 73 28 6f 70 61 6e   ┆),      seg(opand),     ofs(opan┆
0x05b0e0…05b100             64 29 2c 0a 20 20 20 20 20 73 65 67 28 6e 65 78 74 74 6f 70 29 2c 20 20 20 6f 66 73 28 6e 65 78   ┆d),      seg(nexttop),   ofs(nex┆
0x05b100…05b120             74 74 6f 70 29 2c 0a 20 20 20 20 20 73 65 67 28 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 2c 6f 66 73   ┆ttop),      seg(opand^.next),ofs┆
0x05b120…05b140             28 6f 70 61 6e 64 5e 2e 6e 65 78 74 29 29 3b 0a 62 72 65 61 6b 3b 0a 65 6e 64 3b 0a 28 2a 20 72   ┆(opand^.next)); break; end; (* r┆
0x05b140…05b160             65 73 74 6f 72 65 20 74 68 65 20 72 65 61 6c 20 73 74 61 63 6b 74 6f 70 20 61 6e 64 20 6e 65 78   ┆estore the real stacktop and nex┆
0x05b160…05b180             74 74 6f 70 20 2a 29 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 73 61 76 65 64 5f 73 74 61 63 6b 74 6f   ┆ttop *) stacktop:= saved_stackto┆
0x05b180…05b1a0             70 3b 0a 6e 65 78 74 74 6f 70 20 3a 3d 20 73 61 76 65 64 5f 6e 65 78 74 74 6f 70 3b 0a 65 6e 64   ┆p; nexttop := saved_nexttop; end┆
0x05b1a0…05b1c0             3b 0a 0a 65 6e 64 3b 20 28 2a 20 74 65 72 6d 69 6e 61 74 65 20 66 75 6e 63 20 63 61 6c 6c 20 2a   ┆;  end; (* terminate func call *┆
0x05b1c0…05b1e0             29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6d 61 6b 65 5f 63 61 6c 6c 20 28 6f 70 61 6e 64 3a   ┆)    procedure make_call (opand:┆
0x05b1e0…05b200             20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 69 66 20 74 68 65 20 6f 70 65 72 61 6e 64 20 69 73   ┆ opandptr); (* if the operand is┆
0x05b200…05b220 (24, 0, 10) 20 61 20 72 6f 75 74 69 6e 65 2d 69 64 65 6e 74 2c 20 61 20 28 70 61 72 61 6d 65 74 65 72 2d 6c   ┆ a routine-ident, a (parameter-l┆
0x05b220…05b240             65 73 73 29 20 63 61 6c 6c 20 77 69 6c 6c 20 62 65 20 6d 61 64 65 20 2a 29 0a 0a 62 65 67 69 6e   ┆ess) call will be made *)  begin┆
0x05b240…05b260             0a 77 69 74 68 20 20 6f 70 61 6e 64 20 5e 20 64 6f 0a 69 66 20 6f 70 63 6f 64 65 20 3d 20 63 69   ┆ with  opand ^ do if opcode = ci┆
0x05b260…05b280             64 20 74 68 65 6e 0a 77 69 74 68 20 20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 0a 63 61 73 65 20 6e   ┆d then with  op_name ^ do case n┆
0x05b280…05b2a0             61 6d 65 6b 69 6e 64 20 6f 66 0a 63 70 72 6f 63 65 73 73 2c 0a 63 70 72 6f 63 65 64 75 72 65 2c   ┆amekind of cprocess, cprocedure,┆
0x05b2a0…05b2c0             0a 63 66 75 6e 63 74 69 6f 6e 3a 0a 62 65 67 69 6e 0a 70 75 73 68 63 61 6c 6c 3b 0a 70 72 65 70   ┆ cfunction: begin pushcall; prep┆
0x05b2c0…05b2e0             61 72 65 5f 63 61 6c 6c 20 28 6f 70 61 6e 64 29 3b 0a 74 65 72 6d 69 6e 61 74 65 5f 63 61 6c 6c   ┆are_call (opand); terminate_call┆
0x05b2e0…05b300             20 28 6f 70 61 6e 64 29 3b 0a 74 65 72 6d 69 6e 61 74 65 5f 66 75 6e 63 63 61 6c 6c 20 28 6f 70   ┆ (opand); terminate_funccall (op┆
0x05b300…05b320             61 6e 64 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 3b 20 28 2a 20 6f 74 68 65 72 20 6e 61 6d 65 6b 69   ┆and); end; else; (* other nameki┆
0x05b320…05b340             6e 64 73 20 61 72 65 20 6e 6f 74 20 72 6f 75 74 69 6e 65 2d 63 61 6c 6c 73 20 2a 29 0a 65 6e 64   ┆nds are not routine-calls *) end┆
0x05b340…05b360             3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 6d 61 6b 65 2d 63 61 6c 6c 20 2a 29   ┆; end; (* procedure make-call *)┆
0x05b360…05b380             0a 0a 0c 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6c   ┆    (* procedures for handling l┆
0x05b380…05b3a0             65 76 65 6c 2d 63 68 61 6e 67 65 20 65 74 63 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 6e 65   ┆evel-change etc *)  procedure ne┆
0x05b3a0…05b3c0             77 6e 61 6d 65 6c 65 76 65 6c 3b 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 61 20 6e 65 77   ┆wnamelevel; (* initializes a new┆
0x05b3c0…05b3e0             20 6e 61 6d 65 6c 65 76 65 6c 2c 20 77 69 74 68 20 61 6e 20 65 6d 70 74 79 20 6e 61 6d 65 6c 69   ┆ namelevel, with an empty nameli┆
0x05b3e0…05b400             73 74 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 6c 65 76 65 6c 20 28 2a 20 63 75 72 72   ┆st *) begin if namelevel (* curr┆
0x05b400…05b420 (24, 0, 11) 65 6e 74 20 6c 65 76 65 6c 20 2a 29 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c 3d 6e 69 6c 20 74 68 65   ┆ent level *)^.next_level=nil the┆
0x05b420…05b440             6e 0a 62 65 67 69 6e 0a 6e 65 77 28 6e 61 6d 65 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76 65   ┆n begin new(namelevel^.next_leve┆
0x05b440…05b460             6c 29 3b 0a 6d 61 78 6e 61 6d 65 73 74 61 63 6b 6c 65 76 65 6c 73 3a 3d 20 6d 61 78 6e 61 6d 65   ┆l); maxnamestacklevels:= maxname┆
0x05b460…05b480             73 74 61 63 6b 6c 65 76 65 6c 73 2b 31 3b 0a 77 69 74 68 20 6e 61 6d 65 6c 65 76 65 6c 5e 2e 6e   ┆stacklevels+1; with namelevel^.n┆
0x05b480…05b4a0             65 78 74 5f 6c 65 76 65 6c 5e 20 64 6f 0a 62 65 67 69 6e 0a 6c 65 76 65 6c 5f 6e 75 6d 62 65 72   ┆ext_level^ do begin level_number┆
0x05b4a0…05b4c0             3a 3d 20 6d 61 78 6e 61 6d 65 73 74 61 63 6b 6c 65 76 65 6c 73 3b 0a 6e 65 78 74 5f 6c 65 76 65   ┆:= maxnamestacklevels; next_leve┆
0x05b4c0…05b4e0             6c 3a 3d 20 6e 69 6c 3b 0a 66 6f 72 6d 65 72 5f 6c 65 76 65 6c 3a 3d 20 6e 61 6d 65 6c 65 76 65   ┆l:= nil; former_level:= nameleve┆
0x05b4e0…05b500             6c 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2e 2e 2e 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 65   ┆l; end; (* with ... *) end; (* e┆
0x05b500…05b520             78 74 65 6e 64 20 74 68 65 20 73 74 61 63 6b 20 2a 29 0a 6e 61 6d 65 6c 65 76 65 6c 3a 3d 20 6e   ┆xtend the stack *) namelevel:= n┆
0x05b520…05b540             61 6d 65 6c 65 76 65 6c 5e 2e 6e 65 78 74 5f 6c 65 76 65 6c 3b 0a 77 69 74 68 20 20 6e 61 6d 65   ┆amelevel^.next_level; with  name┆
0x05b540…05b560             6c 65 76 65 6c 5e 20 64 6f 0a 62 65 67 69 6e 0a 66 69 72 73 74 6e 61 6d 65 3a 3d 20 6e 69 6c 6e   ┆level^ do begin firstname:= niln┆
0x05b560…05b580             61 6d 65 3b 0a 6e 61 6d 65 6c 69 73 74 6b 69 6e 64 3a 3d 20 6c 65 76 65 6c 6b 69 6e 64 3b 0a 77   ┆ame; namelistkind:= levelkind; w┆
0x05b580…05b5a0             69 74 68 6e 61 6d 65 3a 3d 20 6e 69 6c 6e 61 6d 65 3b 20 20 28 2a 20 61 73 73 75 6d 65 20 6e 6f   ┆ithname:= nilname;  (* assume no┆
0x05b5a0…05b5c0             72 6d 61 6c 20 6c 65 76 65 6c 20 2a 29 0a 69 66 20 6e 61 6d 65 6c 69 73 74 6b 69 6e 64 20 3d 20   ┆rmal level *) if namelistkind = ┆
0x05b5c0…05b5e0             70 72 6f 63 65 73 73 6c 65 76 65 6c 20 74 68 65 6e 0a 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65   ┆processlevel then processparamle┆
0x05b5e0…05b600             76 65 6c 3a 3d 20 6e 61 6d 65 6c 65 76 65 6c 3b 0a 65 6e 64 3b 0a 6c 65 76 65 6c 6b 69 6e 64 3a   ┆vel:= namelevel; end; levelkind:┆
0x05b600…05b620 (24, 0, 12) 3d 20 69 72 72 65 6c 6c 5f 6c 65 76 65 6c 3b 20 20 28 2a 20 70 72 65 70 61 72 65 20 66 6f 72 20   ┆= irrell_level;  (* prepare for ┆
0x05b620…05b640             6e 65 78 74 20 6c 65 76 65 6c 20 74 6f 20 62 65 20 6e 6f 72 6d 61 6c 20 2a 29 0a 0a 65 6e 64 3b   ┆next level to be normal *)  end;┆
0x05b640…05b660             0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 73 65 72 74 5f 6e 61 6d 65 6c 69 73 74 20 28 66 69   ┆   procedure insert_namelist (fi┆
0x05b660…05b680             72 73 74 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 63 75   ┆rst: nameptr); (* initializes cu┆
0x05b680…05b6a0             72 72 65 6e 74 20 6e 61 6d 65 6c 65 76 65 6c 20 77 69 74 68 20 74 68 65 20 6e 61 6d 65 6c 69 73   ┆rrent namelevel with the namelis┆
0x05b6a0…05b6c0             74 20 67 69 76 65 6e 20 2a 29 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 6e 61 6d 65 6c 65 76 65 6c   ┆t given *) begin with  namelevel┆
0x05b6c0…05b6e0             5e 20 64 6f 0a 62 65 67 69 6e 0a 66 69 72 73 74 6e 61 6d 65 3a 3d 20 66 69 72 73 74 3b 0a 6c 61   ┆^ do begin firstname:= first; la┆
0x05b6e0…05b700             73 74 6e 61 6d 65 3a 3d 20 66 69 72 73 74 3b 0a 77 68 69 6c 65 20 20 6c 61 73 74 6e 61 6d 65 20   ┆stname:= first; while  lastname ┆
0x05b700…05b720             5e 20 2e 20 6e 65 78 74 6e 61 6d 65 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 6c 61 73 74 6e   ┆^ . nextname <> nilname do lastn┆
0x05b720…05b740             61 6d 65 3a 3d 20 20 6c 61 73 74 6e 61 6d 65 20 5e 20 2e 20 6e 65 78 74 6e 61 6d 65 3b 0a 65 6e   ┆ame:=  lastname ^ . nextname; en┆
0x05b740…05b760             64 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 6e 61 6d 65 6c 65 76 65 6c   ┆d; end;   procedure endnamelevel┆
0x05b760…05b780             3b 0a 62 65 67 69 6e 0a 28 2a 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 27 70 72 6f 63 65 73 73   ┆; begin (* the variable 'process┆
0x05b780…05b7a0             70 61 72 61 6d 6c 65 76 65 6c 27 20 6d 75 73 74 20 62 65 20 72 65 69 6e 69 74 69 61 6c 69 7a 65   ┆paramlevel' must be reinitialize┆
0x05b7a0…05b7c0             64 2c 20 77 68 65 6e 20 2a 29 0a 28 2a 20 20 20 6c 65 61 76 69 6e 67 20 61 20 70 72 6f 63 65 73   ┆d, when *) (*   leaving a proces┆
0x05b7c0…05b7e0             73 2e 20 2a 29 0a 69 66 20 6e 61 6d 65 6c 65 76 65 6c 20 3d 20 70 72 6f 63 65 73 73 70 61 72 61   ┆s. *) if namelevel = processpara┆
0x05b7e0…05b800             6d 6c 65 76 65 6c 20 74 68 65 6e 0a 72 65 70 65 61 74 0a 70 72 6f 63 65 73 73 70 61 72 61 6d 6c   ┆mlevel then repeat processparaml┆
0x05b800…05b820 (24, 0, 13) 65 76 65 6c 3a 3d 20 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c 5e 2e 66 6f 72 6d 65 72   ┆evel:= processparamlevel^.former┆
0x05b820…05b840             5f 6c 65 76 65 6c 3b 0a 75 6e 74 69 6c 0a 28 20 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65   ┆_level; until ( processparamleve┆
0x05b840…05b860             6c 5e 20 2e 20 6e 61 6d 65 6c 69 73 74 6b 69 6e 64 20 3d 20 70 72 6f 63 65 73 73 6c 65 76 65 6c   ┆l^ . namelistkind = processlevel┆
0x05b860…05b880             29 0a 6f 72 0a 28 70 72 6f 63 65 73 73 70 61 72 61 6d 6c 65 76 65 6c 20 3d 20 6c 61 73 74 67 6c   ┆) or (processparamlevel = lastgl┆
0x05b880…05b8a0             6f 62 61 6c 6c 65 76 65 6c 5e 2e 66 6f 72 6d 65 72 5f 6c 65 76 65 6c 29 3b 0a 65 6e 64 5f 67 6c   ┆oballevel^.former_level); end_gl┆
0x05b8a0…05b8c0             6f 62 61 6c 5f 75 73 65 3b 0a 6e 61 6d 65 6c 65 76 65 6c 3a 3d 20 6e 61 6d 65 6c 65 76 65 6c 5e   ┆obal_use; namelevel:= namelevel^┆
0x05b8c0…05b8e0             2e 66 6f 72 6d 65 72 5f 6c 65 76 65 6c 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 74   ┆.former_level; end;  procedure t┆
0x05b8e0…05b900             65 73 74 5f 72 65 63 75 72 73 69 76 65 5f 74 79 70 65 3b 0a 28 2a 20 77 69 6c 6c 20 74 65 73 74   ┆est_recursive_type; (* will test┆
0x05b900…05b920             20 74 68 61 74 20 27 63 75 72 5f 74 79 70 65 6e 61 6d 65 27 20 69 73 20 61 20 64 65 66 69 6e 65   ┆ that 'cur_typename' is a define┆
0x05b920…05b940             64 20 74 79 70 65 20 2a 29 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 63 75 72 5f 74 79 70 65 6e 61   ┆d type *) begin with  cur_typena┆
0x05b940…05b960             6d 65 20 5e 20 64 6f 0a 69 66 20 28 73 70 69 78 20 28 2a 20 6f 66 20 74 79 70 65 6e 61 6d 65 20   ┆me ^ do if (spix (* of typename ┆
0x05b960…05b980             2a 29 3c 3e 61 6e 6f 6e 79 6d 6f 75 73 5f 73 70 69 78 29 20 61 6e 64 20 6e 6f 74 20 66 6f 72 77   ┆*)<>anonymous_spix) and not forw┆
0x05b980…05b9a0             61 72 64 5f 64 65 63 6c 20 74 68 65 6e 0a 28 2a 20 72 65 63 75 72 73 69 6f 6e 20 6f 6e 6c 79 20   ┆ard_decl then (* recursion only ┆
0x05b9a0…05b9c0             70 6f 73 73 69 62 6c 65 20 77 69 74 68 20 6e 61 6d 65 64 20 74 79 70 65 73 20 2a 29 0a 28 2a 20   ┆possible with named types *) (* ┆
0x05b9c0…05b9e0             61 6e 64 20 66 6f 72 77 61 72 64 20 70 6f 69 6e 74 65 72 73 20 61 72 65 20 61 6c 6c 6f 77 65 64   ┆and forward pointers are allowed┆
0x05b9e0…05ba00             20 74 6f 20 62 65 20 72 65 63 75 72 73 69 76 65 20 2a 29 0a 77 69 74 68 20 20 74 79 70 20 5e 20   ┆ to be recursive *) with  typ ^ ┆
0x05ba00…05ba20 (24, 0, 14) 64 6f 0a 69 66 20 6e 6f 74 20 65 6d 69 74 74 65 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 72   ┆do if not emitted then begin err┆
0x05ba20…05ba40             6f 72 73 70 69 78 3a 3d 20 73 70 69 78 3b 20 28 2a 20 6f 66 20 74 79 70 65 6e 61 6d 65 20 2a 29   ┆orspix:= spix; (* of typename *)┆
0x05ba40…05ba60             0a 65 72 72 6f 72 20 28 72 65 63 75 72 73 69 76 65 5f 75 73 65 5f 6f 66 5f 74 79 70 65 29 3b 0a   ┆ error (recursive_use_of_type); ┆
0x05ba60…05ba80             73 65 74 5f 65 72 72 6f 72 5f 74 79 70 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0c 0a 0a 0a 66   ┆set_error_type; end; end;      f┆
0x05ba80…05baa0             75 6e 63 74 69 6f 6e 20 65 6d 70 74 79 5f 70 61 72 61 6d 6c 69 73 74 20 28 70 61 72 61 6d 6c 69   ┆unction empty_paramlist (paramli┆
0x05baa0…05bac0             73 74 3a 20 6e 61 6d 65 70 74 72 29 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 28 2a 20 72 65 74 75 72 6e   ┆st: nameptr): boolean; (* return┆
0x05bac0…05bae0             73 20 66 61 6c 73 65 2c 20 69 66 20 74 68 65 20 70 61 72 61 6d 6c 69 73 74 20 63 6f 6e 74 61 69   ┆s false, if the paramlist contai┆
0x05bae0…05bb00             6e 73 20 27 76 61 72 70 61 72 61 6d 27 20 6f 72 20 27 76 61 6c 75 65 70 61 72 61 6d 27 20 2a 29   ┆ns 'varparam' or 'valueparam' *)┆
0x05bb00…05bb20             0a 0a 6c 61 62 65 6c 20 39 39 3b 0a 0a 62 65 67 69 6e 0a 77 68 69 6c 65 20 70 61 72 61 6d 6c 69   ┆  label 99;  begin while paramli┆
0x05bb20…05bb40             73 74 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20 64 6f 0a 77 69 74 68 20 20 70 61 72 61 6d 6c 69 73 74   ┆st <> nilname do with  paramlist┆
0x05bb40…05bb60             20 5e 20 64 6f 0a 69 66 20 28 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 76 61 72 70 29 20 6f 72 20 28   ┆ ^ do if (namekind = cvarp) or (┆
0x05bb60…05bb80             6e 61 6d 65 6b 69 6e 64 20 3d 20 63 76 61 6c 75 65 70 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65   ┆namekind = cvaluep) then begin e┆
0x05bb80…05bba0             6d 70 74 79 5f 70 61 72 61 6d 6c 69 73 74 3a 3d 20 66 61 6c 73 65 3b 0a 67 6f 74 6f 20 39 39 3b   ┆mpty_paramlist:= false; goto 99;┆
0x05bba0…05bbc0             0a 65 6e 64 0a 65 6c 73 65 0a 70 61 72 61 6d 6c 69 73 74 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 20   ┆ end else paramlist:= nextname; ┆
0x05bbc0…05bbe0             20 28 2a 20 66 6f 6c 6c 6f 77 20 63 68 61 69 6e 20 2a 29 0a 0a 28 2a 20 74 68 65 20 6c 69 73 74   ┆ (* follow chain *)  (* the list┆
0x05bbe0…05bc00             20 64 69 64 27 6e 74 20 63 6f 6e 74 61 69 6e 20 76 61 72 2d 20 6f 72 20 76 61 6c 75 65 70 61 72   ┆ did'nt contain var- or valuepar┆
0x05bc00…05bc20 (24, 0, 15) 61 6d 20 2a 29 0a 65 6d 70 74 79 5f 70 61 72 61 6d 6c 69 73 74 3a 3d 20 74 72 75 65 3b 0a 39 39   ┆am *) empty_paramlist:= true; 99┆
0x05bc20…05bc40             3a 20 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 65 6d 70 74 79 2d 70 61 72   ┆: ;  end; (* procedure empty-par┆
0x05bc40…05bc60             61 6d 6c 69 73 74 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 6d 70 61 72 65 5f 70 61 72   ┆amlist *)  procedure compare_par┆
0x05bc60…05bc80             61 6d 6c 69 73 74 73 3b 0a 28 2a 20 63 6f 6d 70 61 72 65 73 20 74 68 65 20 70 72 65 76 69 6f 75   ┆amlists; (* compares the previou┆
0x05bc80…05bca0             73 20 70 61 72 61 6d 6c 69 73 74 20 6f 66 20 27 63 75 72 5f 72 6f 75 74 69 6e 65 27 20 2a 29 0a   ┆s paramlist of 'cur_routine' *) ┆
0x05bca0…05bcc0             28 2a 20 20 20 77 69 74 68 20 70 61 72 61 6d 2d 6c 69 73 74 20 69 6e 20 63 75 72 72 65 6e 74 20   ┆(*   with param-list in current ┆
0x05bcc0…05bce0             6e 61 6d 65 6c 65 76 65 6c 20 2a 29 0a 0a 28 2a 20 74 68 65 20 6e 65 77 20 70 61 72 61 6d 6c 69   ┆namelevel *)  (* the new paramli┆
0x05bce0…05bd00             73 74 20 6d 61 79 20 62 65 20 65 6d 70 74 79 20 6f 72 20 65 78 61 63 74 6c 79 20 74 68 65 20 73   ┆st may be empty or exactly the s┆
0x05bd00…05bd20             61 6d 65 20 2a 29 0a 0a 28 2a 20 74 68 65 20 6e 65 77 20 70 61 72 61 6d 6c 69 73 74 20 69 73 20   ┆ame *)  (* the new paramlist is ┆
0x05bd20…05bd40             72 65 6c 65 61 73 65 64 20 61 6e 64 20 72 65 70 6c 61 63 65 64 20 62 79 20 74 68 65 20 6f 72 69   ┆released and replaced by the ori┆
0x05bd40…05bd60             67 69 6e 61 6c 20 6c 69 73 74 20 2a 29 0a 0a 76 61 72 0a 6e 65 77 70 61 72 61 6d 2c 20 6f 6c 64   ┆ginal list *)  var newparam, old┆
0x05bd60…05bd80             70 61 72 61 6d 3a 20 6e 61 6d 65 70 74 72 3b 0a 65 72 72 6f 72 66 6c 61 67 3a 20 62 6f 6f 6c 65   ┆param: nameptr; errorflag: boole┆
0x05bd80…05bda0             61 6e 3b 0a 0a 62 65 67 69 6e 0a 65 72 72 6f 72 66 6c 61 67 3a 3d 20 66 61 6c 73 65 3b 20 28 2a   ┆an;  begin errorflag:= false; (*┆
0x05bda0…05bdc0             20 73 75 70 70 6f 73 65 20 6e 6f 20 65 72 72 6f 72 73 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65   ┆ suppose no errors *) with  name┆
0x05bdc0…05bde0             6c 65 76 65 6c 5e 20 64 6f 0a 77 69 74 68 20 20 63 75 72 5f 72 6f 75 74 69 6e 65 20 5e 20 64 6f   ┆level^ do with  cur_routine ^ do┆
0x05bde0…05be00             0a 62 65 67 69 6e 0a 0a 6e 65 77 70 61 72 61 6d 3a 3d 20 66 69 72 73 74 6e 61 6d 65 3b 20 28 2a   ┆ begin  newparam:= firstname; (*┆
0x05be00…05be20 (24, 1, 1)  20 66 69 72 73 74 20 6f 66 20 6e 65 77 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29 0a   ┆ first of new parameter list *) ┆
0x05be20…05be40             0a 69 66 20 6e 6f 74 20 65 6d 70 74 79 5f 70 61 72 61 6d 6c 69 73 74 20 28 6e 65 77 70 61 72 61   ┆ if not empty_paramlist (newpara┆
0x05be40…05be60             6d 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 6c 64 70 61 72 61 6d 3a 3d 20 70 61 72 61 6d 73 3b   ┆m) then begin oldparam:= params;┆
0x05be60…05be80             20 28 2a 20 66 69 72 73 74 20 6f 66 20 6f 6c 64 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20   ┆ (* first of old parameter list ┆
0x05be80…05bea0             28 6f 66 20 63 75 72 5f 72 6f 75 74 69 6e 65 29 20 2a 29 0a 0a 28 2a 20 63 6f 6d 70 61 72 65 20   ┆(of cur_routine) *)  (* compare ┆
0x05bea0…05bec0             74 68 65 20 74 77 6f 20 6c 69 73 74 73 20 2a 29 0a 28 2a 20 74 68 65 79 20 62 6f 74 68 20 74 65   ┆the two lists *) (* they both te┆
0x05bec0…05bee0             72 6d 69 6e 61 74 65 20 77 69 74 68 20 6e 69 6c 6e 61 6d 65 20 2a 29 0a 0a 77 68 69 6c 65 20 6f   ┆rminate with nilname *)  while o┆
0x05bee0…05bf00             6c 64 70 61 72 61 6d 20 3c 3e 20 6e 65 77 70 61 72 61 6d 20 64 6f 0a 77 69 74 68 20 20 6f 6c 64   ┆ldparam <> newparam do with  old┆
0x05bf00…05bf20             70 61 72 61 6d 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 0a 69 66 0a 28 2a 20 74 68 65 79 20 6d 75 73   ┆param ^ do begin  if (* they mus┆
0x05bf20…05bf40             74 20 68 61 76 65 20 69 64 65 6e 74 69 63 61 6c 20 6e 61 6d 65 73 20 2a 29 0a 28 73 70 69 78 20   ┆t have identical names *) (spix ┆
0x05bf40…05bf60             20 20 20 20 3c 3e 20 20 6e 65 77 70 61 72 61 6d 20 5e 20 2e 20 73 70 69 78 29 0a 6f 72 0a 28 2a   ┆    <>  newparam ^ . spix) or (*┆
0x05bf60…05bf80             20 62 6f 74 68 20 6d 75 73 74 20 62 65 20 27 63 76 61 72 70 27 20 6f 72 20 27 63 76 61 6c 75 65   ┆ both must be 'cvarp' or 'cvalue┆
0x05bf80…05bfa0             70 27 20 2a 29 0a 28 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 20 6e 65 77 70 61 72 61 6d 20 5e 20 2e   ┆p' *) (namekind <>  newparam ^ .┆
0x05bfa0…05bfc0             20 6e 61 6d 65 6b 69 6e 64 29 0a 6f 72 0a 28 2a 20 74 68 65 79 20 6d 75 73 74 20 68 61 76 65 20   ┆ namekind) or (* they must have ┆
0x05bfc0…05bfe0             73 61 6d 65 20 74 79 70 65 20 2a 29 0a 28 74 79 70 65 6e 61 6d 65 3c 3e 6e 65 77 70 61 72 61 6d   ┆same type *) (typename<>newparam┆
0x05bfe0…05c000             5e 2e 74 79 70 65 6e 61 6d 65 29 20 61 6e 64 0a 28 28 74 79 70 65 6e 61 6d 65 5e 2e 74 79 70 5e   ┆^.typename) and ((typename^.typ^┆
0x05c000…05c020 (24, 1, 2)  2e 74 79 70 65 6b 69 6e 64 3c 3e 63 72 65 61 64 6f 6e 6c 79 29 20 6f 72 0a 28 6e 65 77 70 61 72   ┆.typekind<>creadonly) or (newpar┆
0x05c020…05c040             61 6d 5e 2e 74 79 70 65 6e 61 6d 65 5e 2e 74 79 70 5e 2e 74 79 70 65 6b 69 6e 64 3c 3e 63 72 65   ┆am^.typename^.typ^.typekind<>cre┆
0x05c040…05c060             61 64 6f 6e 6c 79 29 20 6f 72 0a 28 74 79 70 65 6e 61 6d 65 5e 2e 74 79 70 5e 2e 65 6c 65 6d 65   ┆adonly) or (typename^.typ^.eleme┆
0x05c060…05c080             6e 74 3c 3e 6e 65 77 70 61 72 61 6d 5e 2e 74 79 70 65 6e 61 6d 65 5e 2e 74 79 70 5e 2e 65 6c 65   ┆nt<>newparam^.typename^.typ^.ele┆
0x05c080…05c0a0             6d 65 6e 74 29 29 20 0a 74 68 65 6e 0a 65 72 72 6f 72 66 6c 61 67 3a 3d 20 74 72 75 65 3b 0a 0a   ┆ment))  then errorflag:= true;  ┆
0x05c0a0…05c0c0             6f 6c 64 70 61 72 61 6d 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 0a 6e 65 77 70 61 72 61 6d 3a 3d 20   ┆oldparam:= nextname; newparam:= ┆
0x05c0c0…05c0e0             20 6e 65 77 70 61 72 61 6d 20 5e 20 2e 20 6e 65 78 74 6e 61 6d 65 3b 0a 0a 65 6e 64 3b 20 28 2a   ┆ newparam ^ . nextname;  end; (*┆
0x05c0e0…05c100             20 77 69 74 68 2f 77 68 69 6c 65 20 6d 6f 72 65 20 70 61 72 61 6d 73 20 2a 29 0a 0a 69 66 20 65   ┆ with/while more params *)  if e┆
0x05c100…05c120             72 72 6f 72 66 6c 61 67 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 70 61 72 61 6d 6c 69 73 74 5f 63   ┆rrorflag then error (paramlist_c┆
0x05c120…05c140             68 61 6e 67 65 64 5f 73 69 6e 63 65 5f 66 6f 72 77 61 72 64 64 65 63 6c 29 3b 0a 0a 65 6e 64 3b   ┆hanged_since_forwarddecl);  end;┆
0x05c140…05c160             20 28 2a 20 69 66 20 6e 65 77 20 70 61 72 61 6d 6c 69 73 74 20 6e 6f 74 20 65 6d 70 74 79 20 2a   ┆ (* if new paramlist not empty *┆
0x05c160…05c180             29 0a 0a 28 2a 20 72 65 6c 65 61 73 65 20 74 68 65 20 6e 65 77 20 70 61 72 61 6d 6c 69 73 74 20   ┆)  (* release the new paramlist ┆
0x05c180…05c1a0             61 6e 64 20 72 65 70 6c 61 63 65 20 69 74 20 62 79 20 74 68 65 20 6f 6c 64 20 6f 6e 65 20 2a 29   ┆and replace it by the old one *)┆
0x05c1a0…05c1c0             0a 0a 72 65 6c 65 61 73 65 6e 61 6d 65 73 20 28 66 69 72 73 74 6e 61 6d 65 20 28 2a 20 6f 66 20   ┆  releasenames (firstname (* of ┆
0x05c1c0…05c1e0             6e 61 6d 65 6c 65 76 65 6c 20 2a 29 20 29 3b 0a 69 6e 73 65 72 74 5f 6e 61 6d 65 6c 69 73 74 20   ┆namelevel *) ); insert_namelist ┆
0x05c1e0…05c200             28 70 61 72 61 6d 73 20 28 2a 20 6f 66 20 63 75 72 2d 72 6f 75 74 69 6e 65 20 2a 29 20 29 3b 0a   ┆(params (* of cur-routine *) ); ┆
0x05c200…05c220 (24, 1, 3)  0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 63 75 72 5f 72 6f 75 74 69 6e 65 20 2a 29 0a 0a 65 6e   ┆ end; (* with cur_routine *)  en┆
0x05c220…05c240             64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 63 6f 6d 70 61 72 65 5f 70 61 72 61 6d 6c 69 73   ┆d; (* procedure compare_paramlis┆
0x05c240…05c260             74 73 20 2a 29 0a 0a 0c 0a 70 72 6f 63 65 64 75 72 65 20 62 65 67 69 6e 5f 62 6c 6f 63 6b 3b 0a   ┆ts *)    procedure begin_block; ┆
0x05c260…05c280             28 2a 20 63 61 6c 6c 65 64 20 62 65 66 6f 72 65 20 66 69 72 73 74 20 6c 6f 63 61 6c 20 64 65 63   ┆(* called before first local dec┆
0x05c280…05c2a0             6c 61 72 61 74 69 6f 6e 20 69 6e 20 61 20 72 6f 75 74 69 6e 65 20 2a 29 0a 62 65 67 69 6e 0a 65   ┆laration in a routine *) begin e┆
0x05c2a0…05c2c0             78 70 65 63 74 69 6e 67 5f 62 6c 6f 63 6b 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 69 6e 64 69 63   ┆xpecting_block:= false; (* indic┆
0x05c2c0…05c2e0             61 74 65 20 74 68 61 74 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 20 68 61 73 20 62 65 65 6e 20   ┆ate that the procedure has been ┆
0x05c2e0…05c300             63 61 6c 6c 65 64 20 2a 29 0a 0a 77 69 74 68 20 20 63 75 72 5f 72 6f 75 74 69 6e 65 20 5e 20 64   ┆called *)  with  cur_routine ^ d┆
0x05c300…05c320             6f 0a 62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 6b 69 6e 64 20 3c 3e 20 63 70 72 6f 63 65 73 73 20   ┆o begin if namekind <> cprocess ┆
0x05c320…05c340             74 68 65 6e 0a 63 75 72 5f 62 6c 6f 63 6b 6e 6f 3a 3d 20 63 75 72 5f 62 6c 6f 63 6b 6e 6f 20 2b   ┆then cur_blockno:= cur_blockno +┆
0x05c340…05c360             20 31 3b 0a 66 6f 72 77 61 72 64 5f 64 65 63 6c 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 62 65 63   ┆ 1; forward_decl:= false; (* bec┆
0x05c360…05c380             61 75 73 65 20 68 65 72 65 20 63 6f 6d 65 73 20 74 68 65 20 62 6f 64 79 20 2a 29 0a 65 6e 64 3b   ┆ause here comes the body *) end;┆
0x05c380…05c3a0             0a 0a 65 6d 69 74 20 28 78 62 6c 6f 63 6b 29 3b 0a 65 6d 69 74 69 6e 20 28 63 75 72 5f 62 6c 6f   ┆  emit (xblock); emitin (cur_blo┆
0x05c3a0…05c3c0             63 6b 6e 6f 29 3b 0a 0a 65 6e 64 3b 0a 0a 0c 0a 28 2a 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f   ┆ckno);  end;    (* procedures fo┆
0x05c3c0…05c3e0             72 20 65 6d 69 74 74 69 6e 67 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 6e 64 20 74 79 70 65 73   ┆r emitting identifiers and types┆
0x05c3e0…05c400             20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 65 78 70 72 20 28 65 78 70 72 3a   ┆ *)    procedure emitexpr (expr:┆
0x05c400…05c420 (24, 1, 4)  20 6f 70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73   ┆ opandptr); (* the expression is┆
0x05c420…05c440             20 65 6d 69 74 74 65 64 2c 20 61 6e 64 20 6d 61 79 62 65 20 72 65 6c 65 61 73 65 64 20 28 64 65   ┆ emitted, and maybe released (de┆
0x05c440…05c460             70 65 6e 64 69 6e 67 20 6f 6e 20 27 65 78 70 72 2d 72 65 6c 65 61 73 65 27 29 20 2a 29 0a 0a 70   ┆pending on 'expr-release') *)  p┆
0x05c460…05c480             72 6f 63 65 64 75 72 65 20 65 6d 69 74 62 6f 74 68 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 65   ┆rocedure emitboth; begin with  e┆
0x05c480…05c4a0             78 70 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 6c 65 66 74 29 3b 0a   ┆xpr ^ do begin emitexpr (left); ┆
0x05c4a0…05c4c0             65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f   ┆emitexpr (rigth); end; end;  pro┆
0x05c4c0…05c4e0             63 65 64 75 72 65 20 65 6d 69 74 5f 61 72 69 74 68 20 28 6f 75 74 63 6f 64 65 3a 20 70 61 73 73   ┆cedure emit_arith (outcode: pass┆
0x05c4e0…05c500             33 63 6f 64 65 73 29 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 20 65 78 70 72 20 5e 20 64 6f 0a 62   ┆3codes); begin with  expr ^ do b┆
0x05c500…05c520             65 67 69 6e 0a 69 66 20 6c 65 66 74 20 3c 3e 20 6e 69 6c 6f 70 61 6e 64 20 74 68 65 6e 0a 62 65   ┆egin if left <> nilopand then be┆
0x05c520…05c540             67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 6c 65 66 74 29 3b 0a 65 6d 69 74 20 28 78 67 65 74 76   ┆gin emitexpr (left); emit (xgetv┆
0x05c540…05c560             61 6c 75 65 29 3b 0a 65 6e 64 3b 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 0a 65 6d   ┆alue); end; emitexpr (rigth); em┆
0x05c560…05c580             69 74 20 28 6f 75 74 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 62 65 67 69 6e 0a 0a   ┆it (outcode); end; end;  begin  ┆
0x05c580…05c5a0             69 66 20 65 78 70 72 20 3c 3e 20 6e 69 6c 6f 70 61 6e 64 20 74 68 65 6e 0a 77 69 74 68 20 20 65   ┆if expr <> nilopand then with  e┆
0x05c5a0…05c5c0             78 70 72 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 0a 28 2a 20 6e 6f 74 65 3a 20 6f 6e 6c 79 20 27 6e   ┆xpr ^ do begin  (* note: only 'n┆
0x05c5c0…05c5e0             65 77 6f 70 61 6e 64 27 20 69 6e 73 65 72 74 73 20 70 72 6f 70 65 72 20 6c 69 6e 65 6e 6f 20 69   ┆ewopand' inserts proper lineno i┆
0x05c5e0…05c600             6e 20 6f 70 61 6e 64 73 20 2a 29 0a 69 66 20 6f 70 5f 6c 69 6e 65 6e 6f 20 3c 3e 20 30 20 74 68   ┆n opands *) if op_lineno <> 0 th┆
0x05c600…05c620 (24, 1, 5)  65 6e 0a 69 66 20 6f 70 5f 6c 69 6e 65 6e 6f 20 3c 3e 20 65 6d 69 74 5f 6c 69 6e 65 6e 6f 20 74   ┆en if op_lineno <> emit_lineno t┆
0x05c620…05c640             68 65 6e 0a 62 65 67 69 6e 0a 65 6d 69 74 20 28 78 6e 65 77 6c 69 6e 65 29 3b 0a 65 6d 69 74 69   ┆hen begin emit (xnewline); emiti┆
0x05c640…05c660             6e 20 28 6f 70 5f 6c 69 6e 65 6e 6f 29 3b 0a 65 6d 69 74 5f 6c 69 6e 65 6e 6f 3a 3d 20 6f 70 5f   ┆n (op_lineno); emit_lineno:= op_┆
0x05c660…05c680             6c 69 6e 65 6e 6f 3b 0a 65 6e 64 3b 0a 0a 0a 65 78 70 72 5f 6c 65 76 65 6c 3a 3d 20 65 78 70 72   ┆lineno; end;   expr_level:= expr┆
0x05c680…05c6a0             5f 6c 65 76 65 6c 20 2b 20 31 3b 0a 69 66 20 65 78 70 72 5f 6c 65 76 65 6c 20 3d 20 31 20 74 68   ┆_level + 1; if expr_level = 1 th┆
0x05c6a0…05c6c0             65 6e 0a 62 65 67 69 6e 0a 65 6d 69 74 20 28 78 65 78 70 72 29 3b 20 20 20 20 20 20 28 2a 20 74   ┆en begin emit (xexpr);      (* t┆
0x05c6c0…05c6e0             68 69 73 20 69 73 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 61 20 77 68 6f 6c 65 20 65 78 70 72   ┆his is the start of a whole expr┆
0x05c6e0…05c700             65 73 73 69 6f 6e 20 2a 29 0a 69 66 20 74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 20 63 6f 6e   ┆ession *) if testoutput then con┆
0x05c700…05c720             74 69 6e 75 65 5f 6c 69 6e 65 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6f 70 63 6f 64 65 20 3d 20 63 6e   ┆tinue_line; end;  if opcode = cn┆
0x05c720…05c740             6f 63 6f 64 65 20 74 68 65 6e 0a 65 6d 69 74 62 6f 74 68 0a 65 6c 73 65 0a 63 61 73 65 20 6f 70   ┆ocode then emitboth else case op┆
0x05c740…05c760             63 6f 64 65 20 28 2a 20 6f 66 20 6f 70 61 6e 64 20 2a 29 20 6f 66 0a 0a 63 74 79 70 65 69 64 2c   ┆code (* of opand *) of  ctypeid,┆
0x05c760…05c780             20 28 2a 20 69 6d 70 6c 69 63 69 74 20 74 79 70 65 20 6e 61 6d 65 20 69 6e 20 66 72 6f 6e 74 20   ┆ (* implicit type name in front ┆
0x05c780…05c7a0             6f 66 20 73 74 72 75 63 74 75 72 65 64 20 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 63 69 64 3a 0a 62   ┆of structured constant *) cid: b┆
0x05c7a0…05c7c0             65 67 69 6e 0a 28 2a 20 69 64 65 6e 74 69 66 69 65 72 3a 20 61 63 74 69 6f 6e 20 64 65 70 65 6e   ┆egin (* identifier: action depen┆
0x05c7c0…05c7e0             64 73 20 6f 6e 20 6e 61 6d 65 6b 69 6e 64 20 2a 29 0a 0a 69 66 20 28 6f 70 63 6f 64 65 3d 63 74   ┆ds on namekind *)  if (opcode=ct┆
0x05c7e0…05c800             79 70 65 69 64 29 20 61 6e 64 20 28 6f 70 5f 6e 61 6d 65 5e 2e 6e 61 6d 65 6b 69 6e 64 3c 3e 63   ┆ypeid) and (op_name^.namekind<>c┆
0x05c800…05c820 (24, 1, 6)  74 79 70 65 29 20 61 6e 64 20 28 6f 70 5f 6e 61 6d 65 5e 2e 6e 61 6d 65 6b 69 6e 64 3c 3e 63 75   ┆type) and (op_name^.namekind<>cu┆
0x05c820…05c840             6e 64 65 63 6c 61 72 65 64 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 74 79 70 65 5f 6e 61 6d 65 5f   ┆ndeclared) then error(type_name_┆
0x05c840…05c860             6d 69 73 73 69 6e 67 29 3b 0a 0a 77 69 74 68 20 20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 20 20 28   ┆missing);  with  op_name ^ do  (┆
0x05c860…05c880             2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 69 64 65 6e 74 69 66 69 65 72 20 2a 29 0a 0a 63 61 73   ┆* namenode of identifier *)  cas┆
0x05c880…05c8a0             65 20 6e 61 6d 65 6b 69 6e 64 20 28 2a 20 6f 66 20 6e 61 6d 65 6e 6f 64 65 20 2a 29 20 6f 66 0a   ┆e namekind (* of namenode *) of ┆
0x05c8a0…05c8c0             0a 63 75 6e 64 65 63 6c 61 72 65 64 2c 0a 63 73 63 61 6c 61 72 65 6c 65 6d 2c 0a 63 63 6f 6e 73   ┆ cundeclared, cscalarelem, ccons┆
0x05c8c0…05c8e0             74 61 6e 74 2c 0a 63 76 61 72 2c 0a 63 76 61 72 70 2c 0a 63 76 61 6c 75 65 70 2c 0a 63 66 75 6e   ┆tant, cvar, cvarp, cvaluep, cfun┆
0x05c8e0…05c900             63 76 61 6c 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 69 64 20 28 78 76 61 72 2c 20 6f 70 5f 6e 61 6d   ┆cval: begin emitid (xvar, op_nam┆
0x05c900…05c920             65 29 3b 0a 65 6d 69 74 69 6e 20 28 74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78 29 3b 0a 65 6e 64 3b   ┆e); emitin (typename^.nix); end;┆
0x05c920…05c940             0a 0a 63 70 72 6f 63 65 73 73 3a 20 0a 62 65 67 69 6e 0a 65 6d 69 74 69 64 28 78 76 61 72 2c 20   ┆  cprocess:  begin emitid(xvar, ┆
0x05c940…05c960             6e 65 78 74 6e 61 6d 65 29 3b 20 28 2a 20 73 6f 6e 20 76 61 72 20 2a 29 0a 65 6d 69 74 69 6e 28   ┆nextname); (* son var *) emitin(┆
0x05c960…05c980             6e 65 78 74 6e 61 6d 65 5e 2e 74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78 29 3b 0a 65 6d 69 74 28 78   ┆nextname^.typename^.nix); emit(x┆
0x05c980…05c9a0             74 65 6d 70 6f 69 6e 74 65 72 29 3b 0a 65 6e 64 3b 0a 28 2a 20 73 74 61 72 74 20 6f 66 20 70 72   ┆tempointer); end; (* start of pr┆
0x05c9a0…05c9c0             6f 63 65 73 73 20 70 61 72 61 6d 20 73 65 71 75 65 6e 63 65 20 2a 29 0a 0a 63 70 72 6f 63 65 64   ┆ocess param sequence *)  cproced┆
0x05c9c0…05c9e0             75 72 65 3a 0a 62 65 67 69 6e 0a 28 2a 20 73 74 61 72 74 20 6f 66 20 70 72 6f 63 65 64 75 72 65   ┆ure: begin (* start of procedure┆
0x05c9e0…05ca00             20 63 61 6c 6c 2d 73 65 71 75 65 6e 63 65 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 70 72 6f 63 63   ┆ call-sequence *) emitid (xprocc┆
0x05ca00…05ca20 (24, 1, 7)  61 6c 6c 2c 20 6f 70 5f 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 66 75 6e 63 74 69 6f 6e 3a 0a   ┆all, op_name); end;  cfunction: ┆
0x05ca20…05ca40             62 65 67 69 6e 0a 28 2a 20 73 74 61 72 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20   ┆begin (* start of function call ┆
0x05ca40…05ca60             73 65 71 75 65 6e 63 65 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 66 75 6e 63 63 61 6c 6c 2c 20 6f   ┆sequence *) emitid (xfunccall, o┆
0x05ca60…05ca80             70 5f 6e 61 6d 65 29 3b 0a 28 2a 20 74 68 65 20 74 65 6d 70 2d 72 65 74 75 72 6e 2d 76 61 6c 75   ┆p_name); (* the temp-return-valu┆
0x05ca80…05caa0             65 20 61 6e 64 20 74 68 65 20 74 79 70 65 20 61 72 65 20 65 6d 69 74 74 65 64 20 62 79 20 27 66   ┆e and the type are emitted by 'f┆
0x05caa0…05cac0             75 6e 63 74 72 61 69 6c 65 72 27 20 2a 29 0a 65 6e 64 3b 0a 0a 63 65 72 72 6f 72 6b 69 6e 64 3a   ┆unctrailer' *) end;  cerrorkind:┆
0x05cac0…05cae0             20 3b 20 28 2a 20 6e 6f 74 68 69 6e 67 20 2a 29 0a 0a 63 74 79 70 65 3a 0a 62 65 67 69 6e 0a 28   ┆ ; (* nothing *)  ctype: begin (┆
0x05cae0…05cb00             2a 20 73 74 61 72 74 20 6f 66 20 73 74 72 75 63 74 75 72 65 64 20 63 6f 6e 73 74 61 6e 74 20 73   ┆* start of structured constant s┆
0x05cb00…05cb20             65 71 75 65 6e 63 65 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 73 74 72 75 63 63 6f 6e 73 74 2c 20   ┆equence *) emitid (xstrucconst, ┆
0x05cb20…05cb40             6f 70 5f 6e 61 6d 65 20 28 2a 20 6e 61 6d 65 20 6f 66 20 74 79 70 65 20 69 74 73 65 6c 66 20 2a   ┆op_name (* name of type itself *┆
0x05cb40…05cb60             29 29 3b 0a 65 6e 64 3b 0a 0a 65 6c 73 65 0a 69 66 20 74 72 75 65 20 74 68 65 6e 20 77 72 69 74   ┆)); end;  else if true then writ┆
0x05cb60…05cb80             65 20 28 6f 75 74 70 75 74 2c 20 27 2a 2a 2a 20 69 64 3a 20 6e 61 6d 65 6b 69 6e 64 20 3d 20 27   ┆e (output, '*** id: namekind = '┆
0x05cb80…05cba0             2c 20 6f 72 64 28 6e 61 6d 65 6b 69 6e 64 29 3a 31 29 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 69   ┆, ord(namekind):1) else if compi┆
0x05cba0…05cbc0             6c 65 72 74 65 73 74 20 74 68 65 6e 0a 63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e   ┆lertest then comp_error (unknown┆
0x05cbc0…05cbe0             5f 6e 61 6d 65 6b 69 6e 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 6e 61 6d 65 6b 69 6e   ┆_namekind); end; (* case namekin┆
0x05cbe0…05cc00             64 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 6f 70 63 6f 64 65 20 3d 20 27 69 64 27 20 2a 29 0a 0a   ┆d *)  end; (* opcode = 'id' *)  ┆
0x05cc00…05cc20 (24, 1, 8)  63 6c 69 74 65 72 61 6c 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 20 28 78 6c 69 74 65 72 61 6c 29 3b   ┆cliteral: begin emit (xliteral);┆
0x05cc20…05cc40             0a 77 69 74 68 20 20 6f 70 5f 74 79 70 65 6e 61 6d 65 20 5e 20 64 6f 20 20 20 20 28 2a 20 6e 61   ┆ with  op_typename ^ do    (* na┆
0x05cc40…05cc60             6d 65 6e 6f 64 65 20 6f 66 20 6f 70 61 6e 64 2d 74 79 70 65 20 2a 29 0a 77 69 74 68 20 20 74 79   ┆menode of opand-type *) with  ty┆
0x05cc60…05cc80             70 20 5e 20 64 6f 20 20 20 20 20 20 20 20 20 20 28 2a 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67   ┆p ^ do          (* corresponding┆
0x05cc80…05cca0             20 74 79 70 65 6e 6f 64 65 20 2a 29 0a 69 66 20 74 79 70 65 6b 69 6e 64 20 28 2a 20 6f 66 20 6f   ┆ typenode *) if typekind (* of o┆
0x05cca0…05ccc0             70 61 6e 64 2d 74 79 70 65 6e 6f 64 65 20 2a 29 20 3d 20 63 69 6e 74 65 67 65 72 20 74 68 65 6e   ┆pand-typenode *) = cinteger then┆
0x05ccc0…05cce0             0a 65 6d 69 74 69 6e 20 28 20 6f 72 64 28 6c 69 74 5f 69 6e 74 65 67 65 72 29 20 29 0a 65 6c 73   ┆ emitin ( ord(lit_integer) ) els┆
0x05cce0…05cd00             65 0a 77 69 74 68 20 20 6f 70 5f 76 61 6c 75 65 20 5e 20 64 6f 0a 69 66 20 73 74 72 69 6e 67 6c   ┆e with  op_value ^ do if stringl┆
0x05cd00…05cd20             67 74 20 3d 20 31 20 74 68 65 6e 0a 65 6d 69 74 69 6e 20 28 20 6f 72 64 28 6c 69 74 5f 63 68 61   ┆gt = 1 then emitin ( ord(lit_cha┆
0x05cd20…05cd40             72 29 20 29 0a 65 6c 73 65 0a 65 6d 69 74 69 6e 20 28 20 6f 72 64 28 6c 69 74 5f 73 74 72 69 6e   ┆r) ) else emitin ( ord(lit_strin┆
0x05cd40…05cd60             67 5f 6f 72 5f 65 6d 70 74 79 29 20 29 3b 0a 65 6d 69 74 73 74 72 69 6e 67 20 28 6f 70 5f 76 61   ┆g_or_empty) ); emitstring (op_va┆
0x05cd60…05cd80             6c 75 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 63 74 79 70 65 73 69 7a 65 63 61 6c 6c 3a 0a 62 65 67 69   ┆lue); end;   ctypesizecall: begi┆
0x05cd80…05cda0             6e 0a 65 6d 69 74 28 78 74 79 70 65 73 69 7a 65 63 61 6c 6c 29 3b 0a 65 6d 69 74 69 6e 28 6f 70   ┆n emit(xtypesizecall); emitin(op┆
0x05cda0…05cdc0             5f 6e 61 6d 65 5e 2e 6e 69 78 29 3b 0a 65 6e 64 3b 20 28 2a 20 74 79 70 65 73 69 7a 65 63 61 6c   ┆_name^.nix); end; (* typesizecal┆
0x05cdc0…05cde0             6c 20 2a 29 0a 0a 63 73 6b 69 70 70 61 72 61 6d 3a 0a 65 6d 69 74 20 28 78 6e 75 6c 6c 29 3b 0a   ┆l *)  cskipparam: emit (xnull); ┆
0x05cde0…05ce00             0a 0a 63 66 75 6e 63 74 72 61 69 6c 65 72 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28   ┆  cfunctrailer: begin emitexpr (┆
0x05ce00…05ce20 (24, 1, 9)  72 69 67 74 68 29 3b 20 20 28 2a 20 65 6d 69 74 20 66 75 6e 63 63 61 6c 6c 20 65 74 63 20 2a 29   ┆rigth);  (* emit funccall etc *)┆
0x05ce20…05ce40             0a 65 6d 69 74 69 6e 20 28 6f 70 5f 6e 61 6d 65 5e 2e 6e 69 78 29 3b 20 20 28 2a 20 6e 61 6d 65   ┆ emitin (op_name^.nix);  (* name┆
0x05ce40…05ce60             20 6f 66 20 74 65 6d 70 2d 72 65 74 75 72 6e 2d 76 61 6c 75 65 20 2a 29 0a 77 69 74 68 20 20 6f   ┆ of temp-return-value *) with  o┆
0x05ce60…05ce80             70 5f 6e 61 6d 65 20 5e 20 64 6f 20 20 28 2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 66 75 6e 63   ┆p_name ^ do  (* namenode of func┆
0x05ce80…05cea0             74 65 6d 70 20 76 61 72 20 2a 29 0a 65 6d 69 74 69 6e 20 28 74 79 70 65 6e 61 6d 65 5e 2e 6e 69   ┆temp var *) emitin (typename^.ni┆
0x05cea0…05cec0             78 20 29 3b 20 20 28 2a 20 74 79 70 65 6e 61 6d 65 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 2a 29   ┆x );  (* typename of function *)┆
0x05cec0…05cee0             0a 65 6e 64 3b 0a 0a 0a 63 66 75 6e 63 74 65 6d 70 3a 0a 62 65 67 69 6e 0a 28 2a 20 74 68 69 73   ┆ end;   cfunctemp: begin (* this┆
0x05cee0…05cf00             20 69 73 20 61 6c 6d 6f 73 74 20 61 6e 20 27 69 64 27 2c 20 62 75 74 20 74 68 65 20 6e 61 6d 65   ┆ is almost an 'id', but the name┆
0x05cf00…05cf20             6e 6f 64 65 20 64 6f 65 73 6e 27 74 20 63 6f 6e 74 61 69 6e 20 74 79 70 65 6e 61 6d 65 20 2a 29   ┆node doesn't contain typename *)┆
0x05cf20…05cf40             0a 28 2a 20 75 73 65 64 20 66 6f 72 20 61 63 74 75 61 6c 20 61 72 67 6d 65 6e 74 2c 20 74 6f 20   ┆ (* used for actual argment, to ┆
0x05cf40…05cf60             6d 61 74 63 68 20 27 66 75 6e 63 76 61 6c 27 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 76 61 72 2c   ┆match 'funcval' *) emitid (xvar,┆
0x05cf60…05cf80             20 6f 70 5f 6e 61 6d 65 29 3b 0a 77 69 74 68 20 20 6f 70 5f 6e 61 6d 65 20 5e 20 64 6f 20 20 28   ┆ op_name); with  op_name ^ do  (┆
0x05cf80…05cfa0             2a 20 6e 61 6d 65 6e 6f 64 65 20 6f 66 20 66 75 6e 63 74 65 6d 70 20 76 61 72 20 2a 29 0a 65 6d   ┆* namenode of functemp var *) em┆
0x05cfa0…05cfc0             69 74 69 6e 20 28 74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78 20 20 29 3b 0a 69 66 20 65 78 70 72 5f   ┆itin (typename^.nix  ); if expr_┆
0x05cfc0…05cfe0             72 65 6c 65 61 73 65 20 74 68 65 6e 0a 72 65 6c 65 61 73 65 6e 61 6d 65 73 20 28 6f 70 5f 6e 61   ┆release then releasenames (op_na┆
0x05cfe0…05d000             6d 65 29 3b 20 28 2a 20 62 65 63 61 75 73 65 20 69 74 20 77 61 73 20 61 20 74 65 6d 70 6f 72 61   ┆me); (* because it was a tempora┆
0x05d000…05d020 (24, 1, 10) 72 79 20 2a 29 0a 65 6e 64 3b 0a 0a 0a 63 66 63 61 6c 6c 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65   ┆ry *) end;   cfcall: begin emite┆
0x05d020…05d040             78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 69 74 20 69 73 20 61 6e 20   ┆xpr (rigth);  (* note: it is an ┆
0x05d040…05d060             75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 20 28 78 66 63 61 6c 6c 29 3b   ┆unary operator *) emit (xfcall);┆
0x05d060…05d080             0a 65 6d 69 74 69 6e 20 28 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 29 3b 20 63 6f   ┆ emitin (count_processparam); co┆
0x05d080…05d0a0             75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 30 3b 0a 28 2a 20 6e 6f 74 65 3a 20 74   ┆unt_processparam:= 0; (* note: t┆
0x05d0a0…05d0c0             68 65 20 27 65 6e 64 66 75 6e 63 63 61 6c 6c 27 20 69 73 20 65 6d 69 74 74 65 64 20 61 66 74 65   ┆he 'endfunccall' is emitted afte┆
0x05d0c0…05d0e0             72 20 61 6e 79 20 69 6e 64 65 78 69 6e 67 2c 75 70 61 72 72 6f 77 20 65 74 63 20 2a 29 0a 65 6e   ┆r any indexing,uparrow etc *) en┆
0x05d0e0…05d100             64 3b 0a 0a 0a 63 65 6e 64 70 72 6f 63 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 72   ┆d;   cendproc: begin emitexpr (r┆
0x05d100…05d120             69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 69 74 20 69 73 20 61 6e 20 75 6e 61 72 79 20   ┆igth);  (* note: it is an unary ┆
0x05d120…05d140             6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 20 28 78 65 6e 64 70 72 6f 63 29 3b 0a 65 6d 69   ┆operator *) emit (xendproc); emi┆
0x05d140…05d160             74 69 6e 20 28 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 29 3b 20 63 6f 75 6e 74 5f   ┆tin (count_processparam); count_┆
0x05d160…05d180             70 72 6f 63 65 73 73 70 61 72 61 6d 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 0a 63 63 61 6c 6c 70 72   ┆processparam:= 0; end;   ccallpr┆
0x05d180…05d1a0             6f 63 65 73 73 3a 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74   ┆ocess: emitexpr (rigth);  (* not┆
0x05d1a0…05d1c0             65 3a 20 69 74 20 69 73 20 61 6e 20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 0a 0a   ┆e: it is an unary operator *)   ┆
0x05d1c0…05d1e0             63 65 6e 64 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72   ┆cendprocessparam: begin emitexpr┆
0x05d1e0…05d200             20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 69 74 20 69 73 20 61 6e 20 75 6e 61   ┆ (rigth);  (* note: it is an una┆
0x05d200…05d220 (24, 1, 11) 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61   ┆ry operator *) count_processpara┆
0x05d220…05d240             6d 3a 3d 20 63 6f 75 6e 74 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 20 2b 20 31 3b 0a 65 6e 64 3b   ┆m:= count_processparam + 1; end;┆
0x05d240…05d260             0a 0a 0a 28 2a 20 65 6d 69 73 73 69 6f 6e 20 6f 66 20 73 65 74 5f 76 61 6c 75 65 73 20 2a 29 0a   ┆   (* emission of set_values *) ┆
0x05d260…05d280             63 73 65 74 6c 69 73 74 3a 0a 65 6d 69 74 20 28 78 73 65 74 29 3b 0a 63 73 5f 65 6c 65 6d 65 6e   ┆csetlist: emit (xset); cs_elemen┆
0x05d280…05d2a0             74 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 62 6f 74 68 3b 0a 65 6d 69 74 20 28 78 69 6e 63 6c 75 64   ┆t: begin emitboth; emit (xinclud┆
0x05d2a0…05d2c0             65 29 3b 0a 65 6e 64 3b 0a 63 6d 5f 65 6c 65 6d 65 6e 74 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65   ┆e); end; cm_element: begin emite┆
0x05d2c0…05d2e0             78 70 72 20 28 6c 65 66 74 29 3b 0a 65 6d 69 74 20 28 78 73 65 74 65 78 70 72 29 3b 0a 65 6d 69   ┆xpr (left); emit (xsetexpr); emi┆
0x05d2e0…05d300             74 65 78 70 72 20 28 72 69 67 74 68 29 3b 0a 65 6d 69 74 20 28 78 69 6e 63 6c 75 64 65 72 61 6e   ┆texpr (rigth); emit (xincluderan┆
0x05d300…05d320             67 65 29 3b 0a 65 6e 64 3b 0a 63 65 6e 64 73 65 74 6c 69 73 74 3a 0a 62 65 67 69 6e 0a 65 6d 69   ┆ge); end; cendsetlist: begin emi┆
0x05d320…05d340             74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 75 6e 61 72 79 20 6f   ┆texpr (rigth);  (* note: unary o┆
0x05d340…05d360             70 65 72 61 74 6f 72 20 2a 29 0a 28 2a 20 6e 6f 74 65 3a 20 70 61 73 73 34 20 77 69 6c 6c 20 67   ┆perator *) (* note: pass4 will g┆
0x05d360…05d380             65 6e 65 72 61 74 65 20 69 74 73 20 6f 77 6e 20 74 79 70 65 20 64 65 73 63 72 69 70 74 69 6f 6e   ┆enerate its own type description┆
0x05d380…05d3a0             2c 20 75 73 69 6e 67 20 74 68 69 73 20 74 79 70 65 2d 6e 69 78 20 2a 29 0a 65 6d 69 74 69 64 20   ┆, using this type-nix *) emitid ┆
0x05d3a0…05d3c0             28 78 65 6e 64 73 65 74 2c 20 6f 70 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 69 66 20 65 78 70 72 5f   ┆(xendset, op_typename); if expr_┆
0x05d3c0…05d3e0             72 65 6c 65 61 73 65 20 74 68 65 6e 0a 69 66 20 6e 6f 74 20 63 6f 6e 73 74 5f 64 65 63 6c 20 74   ┆release then if not const_decl t┆
0x05d3e0…05d400             68 65 6e 20 20 28 2a 20 64 6f 6e 74 27 74 20 72 65 6c 65 61 73 65 2c 20 77 68 65 6e 20 63 6f 6e   ┆hen  (* dont't release, when con┆
0x05d400…05d420 (24, 1, 12) 73 74 2d 64 65 63 6c 61 72 61 74 69 6f 6e 20 2a 29 0a 72 65 6c 65 61 73 65 6e 61 6d 65 73 20 28   ┆st-declaration *) releasenames (┆
0x05d420…05d440             6f 70 5f 74 79 70 65 6e 61 6d 65 29 3b 20 28 2a 20 62 65 63 61 75 73 65 20 69 74 20 77 61 73 20   ┆op_typename); (* because it was ┆
0x05d440…05d460             61 20 74 65 6d 70 6f 72 61 72 79 20 2a 29 0a 65 6e 64 3b 0a 0a 0a 63 66 69 65 6c 64 3a 0a 62 65   ┆a temporary *) end;   cfield: be┆
0x05d460…05d480             67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 62 3a 20 66 69   ┆gin emitexpr (rigth);  (* nb: fi┆
0x05d480…05d4a0             65 6c 64 20 69 73 20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 20 28 78   ┆eld is unary operator *) emit (x┆
0x05d4a0…05d4c0             66 69 65 6c 64 29 3b 0a 65 6d 69 74 69 6e 20 28 6f 70 5f 6e 61 6d 65 5e 2e 6e 69 78 20 29 3b 20   ┆field); emitin (op_name^.nix ); ┆
0x05d4c0…05d4e0             20 20 20 20 28 2a 20 66 69 65 6c 64 20 6e 61 6d 65 20 2a 29 0a 65 6d 69 74 69 6e 20 28 6f 70 5f   ┆    (* field name *) emitin (op_┆
0x05d4e0…05d500             74 79 70 65 6e 61 6d 65 5e 2e 6e 69 78 29 3b 20 28 2a 20 66 69 65 6c 64 20 74 79 70 65 20 6e 61   ┆typename^.nix); (* field type na┆
0x05d500…05d520             6d 65 20 2a 29 0a 65 6e 64 3b 0a 0a 0a 63 75 70 61 72 72 6f 77 3a 0a 62 65 67 69 6e 0a 65 6d 69   ┆me *) end;   cuparrow: begin emi┆
0x05d520…05d540             74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 28 2a 20 6e 62 3a 20 75 70 61 72 72 6f 77 20 69 73   ┆texpr (rigth); (* nb: uparrow is┆
0x05d540…05d560             20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 61 72 72 6f   ┆ unary operator *) emitid (xarro┆
0x05d560…05d580             77 2c 20 6f 70 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 63 72 61 6e 67 65 3a 0a 62   ┆w, op_typename); end;  crange: b┆
0x05d580…05d5a0             65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a   ┆egin emitexpr (rigth);  (* note:┆
0x05d5a0…05d5c0             20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 72 61 6e 67   ┆ unary operator *) emitid (xrang┆
0x05d5c0…05d5e0             65 2c 20 6f 70 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 63 65 72 72 6f 72 61 72   ┆e, op_typename); end;   cerrorar┆
0x05d5e0…05d600             67 2c 20 28 2a 20 6d 69 64 6c 65 72 74 69 64 69 67 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆g, (* midlertidig **************┆
0x05d600…05d620 (24, 1, 13) 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 2a 29 0a 63 69 6e 64   ┆************************ *) cind┆
0x05d620…05d640             65 78 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 6c 65 66 74 29 3b 20 28 2a 20 61 72   ┆ex: begin emitexpr (left); (* ar┆
0x05d640…05d660             72 61 79 20 6e 61 6d 65 20 65 74 63 20 2a 29 0a 65 6d 69 74 20 28 78 69 6e 64 65 78 65 78 70 72   ┆ray name etc *) emit (xindexexpr┆
0x05d660…05d680             29 3b 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 28 2a 20 69 6e 64 65 78 20 65 78   ┆); emitexpr (rigth); (* index ex┆
0x05d680…05d6a0             70 72 65 73 73 69 6f 6e 20 2a 29 0a 65 6d 69 74 20 28 78 69 6e 64 65 78 29 3b 0a 65 6d 69 74 69   ┆pression *) emit (xindex); emiti┆
0x05d6a0…05d6c0             6e 20 28 6f 70 5f 6e 61 6d 65 5e 2e 6e 69 78 29 3b 20 20 20 20 20 28 2a 20 61 72 72 61 79 20 74   ┆n (op_name^.nix);     (* array t┆
0x05d6c0…05d6e0             79 70 65 20 6e 61 6d 65 20 2a 29 0a 65 6d 69 74 69 6e 20 28 6f 70 5f 74 79 70 65 6e 61 6d 65 5e   ┆ype name *) emitin (op_typename^┆
0x05d6e0…05d700             2e 6e 69 78 29 3b 20 28 2a 20 65 6c 65 6d 65 6e 74 20 74 79 70 65 20 6e 61 6d 65 20 2a 29 0a 65   ┆.nix); (* element type name *) e┆
0x05d700…05d720             6e 64 3b 0a 0a 0a 63 70 72 6f 63 65 73 73 61 72 67 75 6d 65 6e 74 3a 0a 62 65 67 69 6e 0a 28 2a   ┆nd;   cprocessargument: begin (*┆
0x05d720…05d740             20 70 61 72 61 6d 65 74 65 72 2c 20 64 65 73 63 72 69 62 69 6e 67 20 61 20 70 72 6f 63 65 73 73   ┆ parameter, describing a process┆
0x05d740…05d760             2d 27 63 61 6c 6c 27 20 2a 29 0a 28 2a 20 65 6d 69 74 20 74 68 65 20 61 72 67 75 6d 65 6e 74 2d   ┆-'call' *) (* emit the argument-┆
0x05d760…05d780             65 78 70 72 65 73 73 69 6f 6e 20 61 74 20 6f 6e 63 65 20 28 69 2e 65 2e 20 74 68 65 20 70 72 6f   ┆expression at once (i.e. the pro┆
0x05d780…05d7a0             63 65 73 73 2d 70 61 72 61 6d 73 29 20 2a 29 0a 28 2a 20 61 6e 64 20 74 68 65 6e 20 6c 61 74 65   ┆cess-params) *) (* and then late┆
0x05d7a0…05d7c0             72 20 73 69 6d 75 6c 61 74 65 20 61 20 6e 6f 72 6d 61 6c 20 61 72 67 75 6d 65 6e 74 20 2a 29 0a   ┆r simulate a normal argument *) ┆
0x05d7c0…05d7e0             65 6d 69 74 20 28 78 70 72 6f 63 65 73 73 70 61 72 61 6d 29 3b 0a 65 6d 69 74 20 28 78 76 61 72   ┆emit (xprocessparam); emit (xvar┆
0x05d7e0…05d800             70 6f 69 6e 74 65 72 29 3b 0a 65 6d 69 74 69 6e 20 28 6f 70 5f 74 79 70 65 6e 61 6d 65 5e 2e 6e   ┆pointer); emitin (op_typename^.n┆
0x05d800…05d820 (24, 1, 14) 69 78 29 3b 20 20 28 2a 20 74 65 6d 70 20 76 61 72 2c 20 66 6f 72 20 61 64 64 72 65 73 73 69 6e   ┆ix);  (* temp var, for addressin┆
0x05d820…05d840             67 20 74 68 65 20 27 70 72 6f 63 65 73 73 72 65 63 27 20 2a 29 0a 65 6d 69 74 65 78 70 72 20 28   ┆g the 'processrec' *) emitexpr (┆
0x05d840…05d860             72 69 67 74 68 29 3b 20 20 28 2a 20 65 6d 69 74 20 74 68 65 20 70 72 6f 63 65 73 73 2d 70 61 72   ┆rigth);  (* emit the process-par┆
0x05d860…05d880             61 6d 73 20 2a 29 0a 0a 65 6d 69 74 20 28 78 61 72 67 6c 69 73 74 73 69 7a 65 29 3b 0a 65 6d 69   ┆ams *)  emit (xarglistsize); emi┆
0x05d880…05d8a0             74 65 78 70 72 20 28 6c 65 66 74 29 3b 20 20 28 2a 20 70 72 65 76 69 6f 75 73 20 72 6f 75 74 69   ┆texpr (left);  (* previous routi┆
0x05d8a0…05d8c0             6e 65 2d 69 64 65 6e 74 20 61 6e 64 20 61 72 67 75 6d 65 6e 74 73 20 2a 29 0a 65 6e 64 3b 0a 0a   ┆ne-ident and arguments *) end;  ┆
0x05d8c0…05d8e0             0a 63 61 72 67 75 6d 65 6e 74 3a 0a 62 65 67 69 6e 0a 28 2a 20 61 72 67 75 6d 65 6e 74 2d 6c 69   ┆ cargument: begin (* argument-li┆
0x05d8e0…05d900             73 74 20 6f 66 20 72 6f 75 74 69 6e 65 20 63 61 6c 6c 20 2a 29 0a 65 6d 69 74 65 78 70 72 20 28   ┆st of routine call *) emitexpr (┆
0x05d900…05d920             6c 65 66 74 29 3b 20 20 28 2a 20 70 72 65 76 69 6f 75 73 20 72 6f 75 74 69 6e 65 2d 69 64 65 6e   ┆left);  (* previous routine-iden┆
0x05d920…05d940             74 20 61 6e 64 20 61 72 67 75 6d 65 6e 74 73 20 2a 29 0a 65 6d 69 74 69 64 20 28 78 61 63 74 75   ┆t and arguments *) emitid (xactu┆
0x05d940…05d960             61 6c 2c 20 6f 70 5f 6e 61 6d 65 29 3b 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20   ┆al, op_name); emitexpr (rigth); ┆
0x05d960…05d980             28 2a 20 61 72 67 75 6d 65 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 20 2a 29 0a 65 6d 69 74 20 28   ┆(* argument expression *) emit (┆
0x05d980…05d9a0             78 65 6e 64 61 63 74 75 61 6c 29 3b 0a 65 6e 64 3b 0a 0a 0a 63 64 6f 75 62 6c 65 70 61 72 61 6d   ┆xendactual); end;   cdoubleparam┆
0x05d9a0…05d9c0             3a 0a 62 65 67 69 6e 0a 28 2a 20 75 73 65 64 20 66 6f 72 20 72 65 70 65 74 69 74 69 6f 6e 20 69   ┆: begin (* used for repetition i┆
0x05d9c0…05d9e0             6e 20 73 74 72 75 63 74 75 72 65 64 20 61 72 72 61 79 2d 76 61 6c 75 65 73 20 2a 29 0a 65 6d 69   ┆n structured array-values *) emi┆
0x05d9e0…05da00             74 65 78 70 72 20 28 6c 65 66 74 29 3b 20 20 28 2a 20 65 6d 69 74 20 72 65 70 65 61 74 2d 76 61   ┆texpr (left);  (* emit repeat-va┆
0x05da00…05da20 (24, 1, 15) 6c 75 65 20 2a 29 0a 65 6d 69 74 20 28 78 74 69 6d 65 73 29 3b 0a 65 6d 69 74 65 78 70 72 20 28   ┆lue *) emit (xtimes); emitexpr (┆
0x05da20…05da40             72 69 67 74 68 29 3b 20 28 2a 20 65 6d 69 74 20 74 68 65 20 73 74 72 75 63 2d 76 61 6c 75 65 20   ┆rigth); (* emit the struc-value ┆
0x05da40…05da60             2a 29 0a 65 6e 64 3b 0a 0a 0a 63 65 6e 64 76 61 72 69 61 62 6c 65 3a 0a 62 65 67 69 6e 20 28 2a   ┆*) end;   cendvariable: begin (*┆
0x05da60…05da80             20 6d 61 64 65 20 62 79 20 27 63 65 6e 64 76 61 72 69 61 62 6c 65 27 2c 20 69 66 20 61 66 74 65   ┆ made by 'cendvariable', if afte┆
0x05da80…05daa0             72 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 20 2a 29 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67   ┆r function call *) emitexpr (rig┆
0x05daa0…05dac0             74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 2a 29   ┆th);  (* note: unary operator *)┆
0x05dac0…05dae0             0a 65 6d 69 74 20 28 78 65 6e 64 66 75 6e 63 63 61 6c 6c 29 3b 0a 65 6e 64 3b 0a 0a 0a 63 73 74   ┆ emit (xendfunccall); end;   cst┆
0x05dae0…05db00             72 75 63 61 72 72 61 79 2c 0a 63 73 74 72 75 63 72 65 63 6f 72 64 3a 0a 62 65 67 69 6e 0a 65 6d   ┆rucarray, cstrucrecord: begin em┆
0x05db00…05db20             69 74 62 6f 74 68 3b 20 20 28 2a 20 65 6d 69 74 20 70 72 65 76 69 6f 75 73 20 73 74 72 75 63 2d   ┆itboth;  (* emit previous struc-┆
0x05db20…05db40             65 6c 65 6d 65 6e 74 73 20 61 6e 64 20 76 61 6c 75 65 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 29 0a   ┆elements and value component *) ┆
0x05db40…05db60             65 6d 69 74 69 64 20 28 78 73 74 72 75 63 2c 20 6f 70 5f 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e   ┆emitid (xstruc, op_typename); en┆
0x05db60…05db80             64 3b 0a 0a 0a 63 65 6e 64 73 74 72 75 63 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28   ┆d;   cendstruc: begin emitexpr (┆
0x05db80…05dba0             72 69 67 74 68 29 3b 20 20 28 2a 20 6e 6f 74 65 3a 20 69 74 20 69 73 20 61 6e 20 75 6e 61 72 79   ┆rigth);  (* note: it is an unary┆
0x05dba0…05dbc0             20 6f 70 65 72 61 74 6f 72 20 2a 29 0a 65 6d 69 74 20 28 78 65 6e 64 73 74 72 75 63 29 3b 0a 65   ┆ operator *) emit (xendstruc); e┆
0x05dbc0…05dbe0             6e 64 3b 0a 0a 63 65 6e 64 61 73 73 69 67 6e 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 20 28 78 61 73   ┆nd;  cendassign: begin emit (xas┆
0x05dbe0…05dc00             73 69 67 6e 73 74 61 74 29 3b 0a 65 6d 69 74 65 78 70 72 20 28 6c 65 66 74 29 3b 20 20 20 28 2a   ┆signstat); emitexpr (left);   (*┆
0x05dc00…05dc20 (25, 0, 1)  20 76 61 72 69 61 62 6c 65 20 2a 29 0a 65 6d 69 74 20 28 78 62 65 63 6f 6d 65 73 29 3b 0a 65 6d   ┆ variable *) emit (xbecomes); em┆
0x05dc20…05dc40             69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 65 78 70 72 65 73 73 69 6f 6e 20 2a   ┆itexpr (rigth);  (* expression *┆
0x05dc40…05dc60             29 0a 65 6d 69 74 20 28 78 61 73 73 69 67 6e 29 3b 0a 65 6e 64 3b 0a 0a 63 65 6e 64 65 78 63 68   ┆) emit (xassign); end;  cendexch┆
0x05dc60…05dc80             61 6e 67 65 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 20 28 78 65 78 63 68 61 6e 67 65 73 74 61 74 29   ┆ange: begin emit (xexchangestat)┆
0x05dc80…05dca0             3b 0a 65 6d 69 74 65 78 70 72 20 28 6c 65 66 74 29 3b 20 20 20 28 2a 20 6c 65 66 74 68 61 6e 64   ┆; emitexpr (left);   (* lefthand┆
0x05dca0…05dcc0             20 76 61 72 69 61 62 6c 65 20 2a 29 0a 65 6d 69 74 20 28 78 62 65 63 6f 6d 65 73 29 3b 0a 65 6d   ┆ variable *) emit (xbecomes); em┆
0x05dcc0…05dce0             69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 72 69 67 74 68 68 61 6e 64 20 76 61   ┆itexpr (rigth);  (* rigthhand va┆
0x05dce0…05dd00             72 69 61 62 6c 65 20 2a 29 0a 65 6d 69 74 20 28 78 65 78 63 68 61 6e 67 65 29 3b 0a 65 6e 64 3b   ┆riable *) emit (xexchange); end;┆
0x05dd00…05dd20             0a 0a 63 72 61 6e 67 65 66 69 72 73 74 3a 0a 62 65 67 69 6e 0a 65 6d 69 74 65 78 70 72 20 28 6c   ┆  crangefirst: begin emitexpr (l┆
0x05dd20…05dd40             65 66 74 29 3b 20 20 28 2a 20 66 69 72 73 74 20 72 61 6e 67 65 20 2a 29 0a 65 6d 69 74 20 28 78   ┆eft);  (* first range *) emit (x┆
0x05dd40…05dd60             67 65 74 65 78 70 72 29 3b 0a 65 6d 69 74 65 78 70 72 20 28 72 69 67 74 68 29 3b 20 28 2a 20 6c   ┆getexpr); emitexpr (rigth); (* l┆
0x05dd60…05dd80             61 73 74 20 72 61 6e 67 65 20 2a 29 0a 65 6e 64 3b 0a 0a 63 70 6c 75 73 3a 20 20 20 65 6d 69 74   ┆ast range *) end;  cplus:   emit┆
0x05dd80…05dda0             5f 61 72 69 74 68 20 28 78 61 64 64 29 3b 0a 63 6d 69 6e 75 73 3a 20 20 65 6d 69 74 5f 61 72 69   ┆_arith (xadd); cminus:  emit_ari┆
0x05dda0…05ddc0             74 68 20 28 78 73 75 62 29 3b 0a 63 73 74 61 72 3a 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28   ┆th (xsub); cstar:   emit_arith (┆
0x05ddc0…05dde0             78 6d 75 6c 29 3b 0a 63 73 6c 61 73 68 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆xmul); cslash,                  ┆
0x05dde0…05de00             20 20 28 2a 20 75 6e 74 69 6c 20 66 75 72 74 68 65 72 20 73 61 6d 65 20 61 73 20 64 69 76 2e 2e   ┆  (* until further same as div..┆
0x05de00…05de20 (25, 0, 2)  2e 20 2a 29 0a 63 64 69 76 3a 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 64 69 76 29 3b   ┆. *) cdiv:    emit_arith (xdiv);┆
0x05de20…05de40             0a 63 6d 6f 64 3a 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 6d 6f 64 29 3b 0a 63 73 68   ┆ cmod:    emit_arith (xmod); csh┆
0x05de40…05de60             69 66 74 3a 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 73 68 69 66 74 29 3b 0a 63 65 71 3a 20   ┆ift:  emit_arith (xshift); ceq: ┆
0x05de60…05de80             20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 65 71 29 3b 0a 63 6e 65 3a 20 20 20 20 20 65   ┆    emit_arith (xeq); cne:     e┆
0x05de80…05dea0             6d 69 74 5f 61 72 69 74 68 20 28 78 6e 65 29 3b 0a 63 6c 74 3a 20 20 20 20 20 65 6d 69 74 5f 61   ┆mit_arith (xne); clt:     emit_a┆
0x05dea0…05dec0             72 69 74 68 20 28 78 6c 74 29 3b 0a 63 6c 65 3a 20 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20   ┆rith (xlt); cle:     emit_arith ┆
0x05dec0…05dee0             28 78 6c 65 29 3b 0a 63 67 74 3a 20 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 67 74 29   ┆(xle); cgt:     emit_arith (xgt)┆
0x05dee0…05df00             3b 0a 63 67 65 3a 20 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 67 65 29 3b 0a 63 69 6e   ┆; cge:     emit_arith (xge); cin┆
0x05df00…05df20             3a 20 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 69 6e 29 3b 0a 63 6f 72 3a 20 20 20 20   ┆:     emit_arith (xin); cor:    ┆
0x05df20…05df40             20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 6f 72 5f 29 3b 0a 63 78 6f 72 3a 20 20 20 20 62 65 67   ┆ emit_arith (xor_); cxor:    beg┆
0x05df40…05df60             69 6e 0a 69 66 20 74 61 72 67 65 74 5f 6d 61 63 68 69 6e 65 20 3d 20 74 61 72 67 65 74 7a 38 30   ┆in if target_machine = targetz80┆
0x05df60…05df80             20 74 68 65 6e 20 65 72 72 6f 72 28 20 6e 6f 74 5f 69 6d 70 6c 65 6d 65 6e 74 65 64 5f 6f 6e 5f   ┆ then error( not_implemented_on_┆
0x05df80…05dfa0             7a 38 30 20 29 3b 0a 65 6d 69 74 5f 61 72 69 74 68 20 28 78 78 6f 72 29 3b 0a 65 6e 64 3b 0a 63   ┆z80 ); emit_arith (xxor); end; c┆
0x05dfa0…05dfc0             61 6e 64 3a 20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 61 6e 64 29 3b 0a 63 6e 6f 74 3a   ┆and:    emit_arith (xand); cnot:┆
0x05dfc0…05dfe0             20 20 20 20 65 6d 69 74 5f 61 72 69 74 68 20 28 78 6e 6f 74 29 3b 0a 63 75 6d 69 6e 75 73 3a 20   ┆    emit_arith (xnot); cuminus: ┆
0x05dfe0…05e000             65 6d 69 74 5f 61 72 69 74 68 20 28 78 6e 65 67 29 3b 0a 63 75 70 6c 75 73 3a 20 20 65 6d 69 74   ┆emit_arith (xneg); cuplus:  emit┆
0x05e000…05e020 (25, 0, 3)  65 78 70 72 20 28 72 69 67 74 68 29 3b 20 20 28 2a 20 62 6c 69 6e 64 20 6f 70 65 72 61 74 6f 72   ┆expr (rigth);  (* blind operator┆
0x05e020…05e040             20 2a 29 0a 0a 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 69 6c 65 72 74 65 73 74 20 74 68 65 6e 0a   ┆ *)   else if compilertest then ┆
0x05e040…05e060             63 6f 6d 70 5f 65 72 72 6f 72 20 28 75 6e 6b 6e 6f 77 6e 5f 6f 70 63 6f 64 65 29 3b 0a 65 6e 64   ┆comp_error (unknown_opcode); end┆
0x05e060…05e080             3b 20 28 2a 20 63 61 73 65 20 6f 70 63 6f 64 65 20 6f 66 20 6f 70 61 6e 64 20 2a 29 0a 0a 69 66   ┆; (* case opcode of opand *)  if┆
0x05e080…05e0a0             20 6f 70 5f 74 79 70 65 6e 61 6d 65 5e 2e 6e 61 6d 65 6b 69 6e 64 3d 63 65 78 74 70 72 6f 63 65   ┆ op_typename^.namekind=cextproce┆
0x05e0a0…05e0c0             73 73 20 74 68 65 6e 0a 65 6d 69 74 28 78 74 65 6d 70 6f 69 6e 74 65 72 29 3b 0a 0a 69 66 20 74   ┆ss then emit(xtempointer);  if t┆
0x05e0c0…05e0e0             65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 20 63 6f 6e 74 69 6e 75 65 5f 6c 69 6e 65 3b 0a 0a 69   ┆estoutput then continue_line;  i┆
0x05e0e0…05e100             66 20 65 78 70 72 5f 72 65 6c 65 61 73 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6f 70 5f   ┆f expr_release then begin if op_┆
0x05e100…05e120             76 61 6c 75 65 20 3c 3e 20 6e 69 6c 73 74 72 69 6e 67 20 74 68 65 6e 0a 72 65 6c 65 61 73 65 5f   ┆value <> nilstring then release_┆
0x05e120…05e140             73 74 72 69 6e 67 20 28 6f 70 5f 76 61 6c 75 65 29 3b 0a 69 66 20 65 78 70 72 20 3d 20 73 74 61   ┆string (op_value); if expr = sta┆
0x05e140…05e160             63 6b 74 6f 70 20 74 68 65 6e 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 6e 65 78 74 3b 0a 6e 65 78 74   ┆cktop then stacktop:= next; next┆
0x05e160…05e180             3a 3d 20 66 72 65 65 6f 70 61 6e 64 73 3b 0a 66 72 65 65 6f 70 61 6e 64 73 3a 3d 20 65 78 70 72   ┆:= freeopands; freeopands:= expr┆
0x05e180…05e1a0             3b 0a 65 6e 64 3b 0a 0a 65 78 70 72 5f 6c 65 76 65 6c 3a 3d 20 65 78 70 72 5f 6c 65 76 65 6c 20   ┆; end;  expr_level:= expr_level ┆
0x05e1a0…05e1c0             2d 20 31 3b 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 65 78 70 72 20 2a 29 0a 0a 65 6e 64 3b   ┆- 1;  end; (* with expr *)  end;┆
0x05e1c0…05e1e0             20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 65 6d 69 74 65 78 70 72 20 2a 29 0a 0a 0a 0a 70 72 6f   ┆ (* procedure emitexpr *)    pro┆
0x05e1e0…05e200             63 65 64 75 72 65 20 65 6d 69 74 5f 61 6e 64 5f 72 65 6c 65 61 73 65 20 28 65 78 70 72 3a 20 6f   ┆cedure emit_and_release (expr: o┆
0x05e200…05e220 (25, 0, 4)  70 61 6e 64 70 74 72 29 3b 0a 28 2a 20 65 6d 69 74 73 20 2d 20 61 6e 64 20 72 65 6c 65 61 73 65   ┆pandptr); (* emits - and release┆
0x05e220…05e240             73 20 2d 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 2a 29 0a 62 65 67 69 6e 0a 65 78 70 72   ┆s - the expression *) begin expr┆
0x05e240…05e260             5f 72 65 6c 65 61 73 65 3a 3d 20 74 72 75 65 3b 0a 65 6d 69 74 65 78 70 72 20 28 65 78 70 72 29   ┆_release:= true; emitexpr (expr)┆
0x05e260…05e280             3b 0a 65 78 70 72 5f 72 65 6c 65 61 73 65 3a 3d 20 66 61 6c 73 65 3b 0a 0a 28 2a 20 69 6e 20 63   ┆; expr_release:= false;  (* in c┆
0x05e280…05e2a0             61 73 65 20 73 74 61 63 6b 74 6f 70 20 68 61 73 20 62 65 65 6e 20 75 70 64 61 74 65 64 2c 20 6e   ┆ase stacktop has been updated, n┆
0x05e2a0…05e2c0             6f 77 20 75 70 64 61 74 65 20 6e 65 78 74 74 6f 70 20 2a 29 0a 69 66 20 73 74 61 63 6b 74 6f 70   ┆ow update nexttop *) if stacktop┆
0x05e2c0…05e2e0             3d 6e 69 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 73 74 61 63 6b 74 6f 70 3a 3d 20 6e 69 6c 6f 70   ┆=nil then begin stacktop:= nilop┆
0x05e2e0…05e300             61 6e 64 3b 0a 6e 65 78 74 74 6f 70 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 65 6e 64 0a 65 6c 73   ┆and; nexttop:= nilopand; end els┆
0x05e300…05e320             65 0a 6e 65 78 74 74 6f 70 3a 3d 20 73 74 61 63 6b 74 6f 70 20 5e 20 2e 20 6e 65 78 74 3b 0a 0a   ┆e nexttop:= stacktop ^ . next;  ┆
0x05e320…05e340             65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 72 65 70 61 72 65 5f 73 74 61 74 65 6d   ┆end;    procedure prepare_statem┆
0x05e340…05e360             65 6e 74 3b 0a 28 2a 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 20 77 69 6c 6c 20 65 6d 69 74 20   ┆ent; (* the procedure will emit ┆
0x05e360…05e380             61 6c 6c 20 70 65 6e 64 69 6e 67 20 65 78 70 72 65 73 73 69 6f 6e 73 20 20 2a 29 0a 28 2a 20 2e   ┆all pending expressions  *) (* .┆
0x05e380…05e3a0             2e 2e 2e 20 62 75 74 20 6d 61 79 62 65 20 69 74 20 73 68 6f 75 6c 64 20 72 61 74 68 65 72 20 74   ┆... but maybe it should rather t┆
0x05e3a0…05e3c0             65 73 74 20 66 6f 72 20 70 65 6e 64 69 6e 67 20 65 78 70 72 65 73 73 69 6f 6e 73 20 3f 20 2a 29   ┆est for pending expressions ? *)┆
0x05e3c0…05e3e0             0a 28 2a 2a 29 0a 28 2a 20 66 75 72 74 68 65 72 6d 6f 72 65 20 69 74 20 77 69 6c 6c 20 73 65 74   ┆ (**) (* furthermore it will set┆
0x05e3e0…05e400             20 61 20 66 6c 61 67 2c 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 68 6f 77 20 2a   ┆ a flag, used to determine how *┆
0x05e400…05e420 (25, 0, 5)  29 0a 28 2a 20 20 20 61 20 66 75 6e 63 74 69 6f 6e 2d 69 64 65 6e 74 69 66 69 65 72 20 73 68 6f   ┆) (*   a function-identifier sho┆
0x05e420…05e440             75 6c 64 20 62 65 20 69 6e 74 65 72 70 72 65 74 65 64 20 20 20 20 20 20 20 20 20 2a 29 0a 0a 62   ┆uld be interpreted         *)  b┆
0x05e440…05e460             65 67 69 6e 0a 77 68 69 6c 65 20 73 74 61 63 6b 74 6f 70 20 3c 3e 20 6e 69 6c 6f 70 61 6e 64 20   ┆egin while stacktop <> nilopand ┆
0x05e460…05e480             64 6f 0a 65 6d 69 74 5f 61 6e 64 5f 72 65 6c 65 61 73 65 20 28 73 74 61 63 6b 74 6f 70 29 3b 0a   ┆do emit_and_release (stacktop); ┆
0x05e480…05e4a0             62 65 66 6f 72 65 5f 61 73 73 69 67 6e 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72   ┆before_assign:= true; end;    pr┆
0x05e4a0…05e4c0             6f 63 65 64 75 72 65 20 70 72 65 70 61 72 65 5f 65 78 70 72 65 73 73 69 6f 6e 3b 0a 28 2a 20 77   ┆ocedure prepare_expression; (* w┆
0x05e4c0…05e4e0             6f 72 6b 73 20 69 6e 20 63 6f 6f 72 70 6f 72 61 74 69 6f 6e 20 77 69 74 68 20 70 72 65 70 61 72   ┆orks in coorporation with prepar┆
0x05e4e0…05e500             65 2d 73 74 61 74 65 6d 65 6e 74 20 2a 29 0a 0a 62 65 67 69 6e 0a 62 65 66 6f 72 65 5f 61 73 73   ┆e-statement *)  begin before_ass┆
0x05e500…05e520             69 67 6e 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65   ┆ign:= false; end;    procedure e┆
0x05e520…05e540             6d 69 74 74 79 70 65 20 28 78 74 79 70 65 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 29 3b 0a 6c 61   ┆mittype (xtypename: nameptr); la┆
0x05e540…05e560             62 65 6c 20 31 30 3b 20 28 2a 20 6c 6f 6f 70 20 69 6e 20 63 73 63 61 6c 61 72 20 2a 29 0a 76 61   ┆bel 10; (* loop in cscalar *) va┆
0x05e560…05e580             72 20 6e 61 6d 65 3a 20 6e 61 6d 65 70 74 72 3b 0a 62 65 67 69 6e 0a 0a 77 69 74 68 20 20 78 74   ┆r name: nameptr; begin  with  xt┆
0x05e580…05e5a0             79 70 65 6e 61 6d 65 20 5e 20 64 6f 0a 77 69 74 68 20 20 74 79 70 20 5e 20 64 6f 0a 62 65 67 69   ┆ypename ^ do with  typ ^ do begi┆
0x05e5a0…05e5c0             6e 20 0a 0a 69 66 20 65 6d 69 74 74 65 64 20 74 68 65 6e 0a 65 6d 69 74 69 64 20 28 78 74 79 70   ┆n   if emitted then emitid (xtyp┆
0x05e5c0…05e5e0             65 2c 20 78 74 79 70 65 6e 61 6d 65 29 0a 65 6c 73 65 0a 69 66 20 66 6f 72 77 61 72 64 5f 64 65   ┆e, xtypename) else if forward_de┆
0x05e5e0…05e600             63 6c 20 74 68 65 6e 20 28 2a 20 66 6f 72 77 61 72 64 20 70 6f 69 6e 74 65 72 20 64 65 63 6c 61   ┆cl then (* forward pointer decla┆
0x05e600…05e620 (25, 0, 6)  72 61 74 69 6f 6e 20 2a 29 0a 65 6d 69 74 69 64 28 78 66 6f 72 77 61 72 64 70 6f 69 6e 74 65 72   ┆ration *) emitid(xforwardpointer┆
0x05e620…05e640             2c 20 78 74 79 70 65 6e 61 6d 65 29 0a 28 2a 20 65 6d 69 74 74 65 64 20 69 73 20 6e 6f 74 20 73   ┆, xtypename) (* emitted is not s┆
0x05e640…05e660             65 74 20 74 6f 20 74 72 75 65 20 62 65 63 61 75 73 65 20 74 68 65 20 72 65 61 6c 20 64 65 66 69   ┆et to true because the real defi┆
0x05e660…05e680             6e 69 74 69 6f 6e 20 6d 75 73 74 20 62 65 0a 65 6d 69 74 74 65 64 20 69 6e 20 74 6f 74 61 6c 20   ┆nition must be emitted in total ┆
0x05e680…05e6a0             77 68 65 6e 20 64 65 66 69 6e 65 64 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28 2a 20 74 68   ┆when defined *) else begin (* th┆
0x05e6a0…05e6c0             69 73 20 69 73 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 74 68 65 20 74 79 70 65 6e 61 6d   ┆is is the first time the typenam┆
0x05e6c0…05e6e0             65 20 69 73 20 65 6d 69 74 74 65 64 20 2a 29 0a 28 2a 20 20 20 65 6d 69 74 20 74 68 65 20 77 68   ┆e is emitted *) (*   emit the wh┆
0x05e6e0…05e700             6f 6c 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 2a 29 0a 65 6d 69 74 74 65 64 3a 3d 20 74 72 75 65   ┆ole definition *) emitted:= true┆
0x05e700…05e720             3b 0a 0a 63 61 73 65 20 74 79 70 65 6b 69 6e 64 20 6f 66 0a 0a 63 61 6c 69 61 73 3a 0a 62 65 67   ┆;  case typekind of  calias: beg┆
0x05e720…05e740             69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 3c 74 79 70 65 3e 20 20 72 65 64 65 66 74 79 70 65   ┆in (* output:  <type>  redeftype┆
0x05e740…05e760             28 6e 69 78 29 20 2a 29 0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 65 6d 69   ┆(nix) *) emittype (element); emi┆
0x05e760…05e780             74 69 64 20 28 78 72 65 64 65 66 74 79 70 65 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64   ┆tid (xredeftype, xtypename); end┆
0x05e780…05e7a0             3b 0a 0a 0a 0a 63 73 63 61 6c 61 72 3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20   ┆;    cscalar: begin (* output:  ┆
0x05e7a0…05e7c0             28 20 73 63 61 6c 61 72 69 64 28 6e 69 78 29 20 29 2a 20 20 73 63 61 6c 61 72 64 65 66 28 6e 69   ┆( scalarid(nix) )*  scalardef(ni┆
0x05e7c0…05e7e0             78 29 20 20 20 2a 29 0a 6e 61 6d 65 3a 3d 20 65 6c 65 6d 65 6e 74 3b 20 28 2a 20 66 69 72 73 74   ┆x)   *) name:= element; (* first┆
0x05e7e0…05e800             20 73 63 61 6c 61 72 20 6e 61 6d 65 20 6f 66 20 73 63 61 6c 61 72 74 79 70 65 20 2a 29 0a 0a 31   ┆ scalar name of scalartype *)  1┆
0x05e800…05e820 (25, 0, 7)  30 3a 20 28 2a 20 6c 6f 6f 70 20 2a 29 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 69 66   ┆0: (* loop *) with  name ^ do if┆
0x05e820…05e840             20 6e 61 6d 65 6b 69 6e 64 20 3d 20 63 73 63 61 6c 61 72 65 6c 65 6d 20 74 68 65 6e 0a 28 2a 20   ┆ namekind = cscalarelem then (* ┆
0x05e840…05e860             74 68 65 20 73 63 61 6c 61 72 20 6e 61 6d 65 73 20 61 72 65 20 69 6e 20 74 68 65 20 63 6f 6d 6d   ┆the scalar names are in the comm┆
0x05e860…05e880             6f 6e 20 6e 61 6d 65 6c 69 73 74 20 2a 29 0a 69 66 20 74 79 70 65 6e 61 6d 65 20 3d 20 78 74 79   ┆on namelist *) if typename = xty┆
0x05e880…05e8a0             70 65 6e 61 6d 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 6d 69 74 69 64 20 28 78 73 63 61 6c 61   ┆pename then begin emitid (xscala┆
0x05e8a0…05e8c0             72 69 64 2c 20 6e 61 6d 65 29 3b 0a 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 20 20 28 2a   ┆rid, name); name:= nextname;  (*┆
0x05e8c0…05e8e0             20 66 6f 6c 6c 6f 77 20 63 68 61 69 6e 20 2a 29 0a 69 66 20 74 65 73 74 6f 75 74 70 75 74 20 74   ┆ follow chain *) if testoutput t┆
0x05e8e0…05e900             68 65 6e 20 63 6f 6e 74 69 6e 75 65 5f 6c 69 6e 65 3b 0a 67 6f 74 6f 20 31 30 3b 20 20 28 2a 20   ┆hen continue_line; goto 10;  (* ┆
0x05e900…05e920             67 6f 74 6f 20 6c 6f 6f 70 20 2a 29 0a 65 6e 64 3b 0a 0a 65 6d 69 74 69 64 20 28 78 73 63 61 6c   ┆goto loop *) end;  emitid (xscal┆
0x05e920…05e940             61 72 64 65 66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 73 75 62 72   ┆ardef, xtypename); end;    csubr┆
0x05e940…05e960             61 6e 67 65 3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 3c 65 78 70 72 3e 20 3c   ┆ange: begin (* output:  <expr> <┆
0x05e960…05e980             65 78 70 72 3e 20 73 75 62 64 65 66 28 74 79 70 65 6e 69 78 2c 20 65 6c 65 6d 65 6e 74 6e 69 78   ┆expr> subdef(typenix, elementnix┆
0x05e980…05e9a0             29 20 2a 29 0a 65 6d 69 74 5f 61 6e 64 5f 72 65 6c 65 61 73 65 20 28 73 75 62 65 78 70 72 29 3b   ┆) *) emit_and_release (subexpr);┆
0x05e9a0…05e9c0             20 20 28 2a 20 65 6d 69 74 20 62 6f 74 68 20 65 78 70 72 65 73 73 69 6f 6e 73 20 2a 29 0a 73 75   ┆  (* emit both expressions *) su┆
0x05e9c0…05e9e0             62 65 78 70 72 3a 3d 20 6e 69 6c 6f 70 61 6e 64 3b 0a 65 6d 69 74 69 64 20 28 78 73 75 62 64 65   ┆bexpr:= nilopand; emitid (xsubde┆
0x05e9e0…05ea00             66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6d 69 74 69 6e 20 28 69 6e 64 65 78 5e 2e 6e 69   ┆f, xtypename); emitin (index^.ni┆
0x05ea00…05ea20 (25, 0, 8)  78 29 3b 20 20 28 2a 20 6e 69 78 20 6f 66 20 65 6c 65 6d 65 6e 74 20 74 79 70 65 20 2a 29 0a 65   ┆x);  (* nix of element type *) e┆
0x05ea20…05ea40             6e 64 3b 0a 0a 0a 0a 63 70 6f 69 6e 74 65 72 3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74   ┆nd;    cpointer: begin (* output┆
0x05ea40…05ea60             3a 20 20 3c 74 79 70 65 3e 20 20 70 6f 69 6e 74 65 72 64 65 66 28 6e 69 78 29 20 20 2a 29 0a 65   ┆:  <type>  pointerdef(nix)  *) e┆
0x05ea60…05ea80             6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 65 6d 69 74 69 64 20 28 78 70 6f 69 6e   ┆mittype (element); emitid (xpoin┆
0x05ea80…05eaa0             74 65 72 64 65 66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 72 65 61   ┆terdef, xtypename); end;    crea┆
0x05eaa0…05eac0             64 6f 6e 6c 79 3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 3c 74 79 70 65 3e 20   ┆donly: begin (* output:  <type> ┆
0x05eac0…05eae0             20 66 72 6f 7a 65 6e 64 65 66 28 6e 69 78 29 20 20 2a 29 0a 65 6d 69 74 74 79 70 65 20 28 65 6c   ┆ frozendef(nix)  *) emittype (el┆
0x05eae0…05eb00             65 6d 65 6e 74 29 3b 0a 65 6d 69 74 69 64 20 28 78 66 72 6f 7a 65 6e 64 65 66 2c 20 78 74 79 70   ┆ement); emitid (xfrozendef, xtyp┆
0x05eb00…05eb20             65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 61 72 72 61 79 3a 0a 62 65 67 69 6e 0a 28 2a   ┆ename); end;    carray: begin (*┆
0x05eb20…05eb40             20 6f 75 74 70 75 74 3a 20 20 3c 69 6e 64 65 78 74 79 70 65 3e 20 3c 65 6c 65 6d 65 6e 74 74 79   ┆ output:  <indextype> <elementty┆
0x05eb40…05eb60             70 65 3e 20 28 70 61 63 6b 65 64 29 20 61 72 72 61 79 64 65 66 28 6e 69 78 29 20 20 2a 29 0a 65   ┆pe> (packed) arraydef(nix)  *) e┆
0x05eb60…05eb80             6d 69 74 74 79 70 65 20 28 69 6e 64 65 78 29 3b 0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65   ┆mittype (index); emittype (eleme┆
0x05eb80…05eba0             6e 74 29 3b 0a 69 66 20 70 61 63 6b 66 6c 61 67 20 28 2a 20 6f 66 20 61 72 72 61 79 20 74 79 70   ┆nt); if packflag (* of array typ┆
0x05eba0…05ebc0             65 20 2a 29 20 74 68 65 6e 0a 65 6d 69 74 69 64 20 28 78 70 61 63 6b 65 64 61 72 72 61 79 64 65   ┆e *) then emitid (xpackedarrayde┆
0x05ebc0…05ebe0             66 2c 20 78 74 79 70 65 6e 61 6d 65 29 0a 65 6c 73 65 0a 65 6d 69 74 69 64 20 28 78 61 72 72 61   ┆f, xtypename) else emitid (xarra┆
0x05ebe0…05ec00             79 64 65 66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 72 65 63 6f 72   ┆ydef, xtypename); end;    crecor┆
0x05ec00…05ec20 (25, 0, 9)  64 3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆d: begin (* output:             ┆
0x05ec20…05ec40             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0a 28 2a 20 20 20 70 61   ┆                      *) (*   pa┆
0x05ec40…05ec60             63 6b 65 64 72 65 63 6f 72 64 2f 72 65 63 6f 72 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ckedrecord/record               ┆
0x05ec60…05ec80             20 20 20 20 20 20 2a 29 0a 28 2a 20 20 20 20 20 28 20 66 69 65 6c 64 69 64 28 6e 69 78 29 20 20   ┆      *) (*     ( fieldid(nix)  ┆
0x05ec80…05eca0             3c 74 79 70 65 3e 20 20 66 69 65 6c 64 64 65 66 20 29 2a 20 20 20 2a 29 0a 28 2a 20 20 20 72 65   ┆<type>  fielddef )*   *) (*   re┆
0x05eca0…05ecc0             63 64 65 66 28 6e 69 78 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆cdef(nix)                       ┆
0x05ecc0…05ece0             20 20 20 20 20 20 2a 29 0a 69 66 20 70 61 63 6b 66 6c 61 67 20 28 2a 20 6f 66 20 72 65 63 6f 72   ┆      *) if packflag (* of recor┆
0x05ece0…05ed00             64 20 74 79 70 65 20 2a 29 20 74 68 65 6e 0a 65 6d 69 74 20 28 78 70 61 63 6b 65 64 72 65 63 6f   ┆d type *) then emit (xpackedreco┆
0x05ed00…05ed20             72 64 29 0a 65 6c 73 65 0a 65 6d 69 74 20 28 78 72 65 63 6f 72 64 29 3b 0a 0a 6e 61 6d 65 3a 3d   ┆rd) else emit (xrecord);  name:=┆
0x05ed20…05ed40             20 65 6c 65 6d 65 6e 74 3b 20 20 28 2a 20 66 69 72 73 74 20 6e 61 6d 65 20 69 6e 20 66 69 65 6c   ┆ element;  (* first name in fiel┆
0x05ed40…05ed60             64 20 6c 69 73 74 20 2a 29 0a 77 68 69 6c 65 20 6e 61 6d 65 20 3c 3e 20 6e 69 6c 6e 61 6d 65 20   ┆d list *) while name <> nilname ┆
0x05ed60…05ed80             64 6f 0a 77 69 74 68 20 20 6e 61 6d 65 20 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 6e 61 6d 65   ┆do with  name ^ do begin if name┆
0x05ed80…05eda0             6b 69 6e 64 20 28 2a 20 6f 66 20 66 69 65 6c 64 6e 61 6d 65 2f 6c 6f 63 61 6c 20 74 79 70 65 64   ┆kind (* of fieldname/local typed┆
0x05eda0…05edc0             65 66 20 2a 29 20 3d 20 63 72 65 63 66 69 65 6c 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20   ┆ef *) = crecfield then begin if ┆
0x05edc0…05ede0             74 65 73 74 6f 75 74 70 75 74 20 74 68 65 6e 20 63 6f 6e 74 69 6e 75 65 5f 6c 69 6e 65 3b 0a 65   ┆testoutput then continue_line; e┆
0x05ede0…05ee00             6d 69 74 69 64 20 28 78 66 69 65 6c 64 69 64 2c 20 6e 61 6d 65 29 3b 0a 65 6d 69 74 74 79 70 65   ┆mitid (xfieldid, name); emittype┆
0x05ee00…05ee20 (25, 0, 10) 20 28 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6d 69 74 20 28 78 66 69 65 6c 64 64 65 66 29 3b 0a 65   ┆ (typename); emit (xfielddef); e┆
0x05ee20…05ee40             6e 64 3b 0a 6e 61 6d 65 3a 3d 20 6e 65 78 74 6e 61 6d 65 3b 20 20 28 2a 20 66 6f 6c 6c 6f 77 20   ┆nd; name:= nextname;  (* follow ┆
0x05ee40…05ee60             63 68 61 69 6e 20 2a 29 0a 65 6e 64 3b 0a 0a 65 6d 69 74 69 64 20 28 78 72 65 63 64 65 66 2c 20   ┆chain *) end;  emitid (xrecdef, ┆
0x05ee60…05ee80             78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 63 73 65 74 3a 0a 62 65 67 69 6e   ┆xtypename);  end;    cset: begin┆
0x05ee80…05eea0             0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 3c 74 79 70 65 3e 20 20 73 65 74 64 65 66 28 6e 69 78 29   ┆ (* output:  <type>  setdef(nix)┆
0x05eea0…05eec0             20 20 2a 29 0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 65 6d 69 74 69 64 20   ┆  *) emittype (element); emitid ┆
0x05eec0…05eee0             28 78 73 65 74 64 65 66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a 63 70   ┆(xsetdef, xtypename); end;    cp┆
0x05eee0…05ef00             6f 6f 6c 3a 0a 62 65 67 69 6e 0a 28 2a 20 6f 75 74 70 75 74 3a 20 20 3c 65 78 70 72 3e 20 3c 74   ┆ool: begin (* output:  <expr> <t┆
0x05ef00…05ef20             79 70 65 3e 20 70 6f 6f 6c 64 65 66 28 6e 69 78 29 20 20 2a 29 0a 65 6d 69 74 5f 61 6e 64 5f 72   ┆ype> pooldef(nix)  *) emit_and_r┆
0x05ef20…05ef40             65 6c 65 61 73 65 20 28 73 75 62 65 78 70 72 29 3b 0a 73 75 62 65 78 70 72 3a 3d 20 6e 69 6c 6f   ┆elease (subexpr); subexpr:= nilo┆
0x05ef40…05ef60             70 61 6e 64 3b 0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 65 6d 69 74 69 64   ┆pand; emittype (element); emitid┆
0x05ef60…05ef80             20 28 78 70 6f 6f 6c 64 65 66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a   ┆ (xpooldef, xtypename); end;    ┆
0x05ef80…05efa0             63 69 6e 74 65 67 65 72 3a 0a 65 6d 69 74 69 64 20 28 78 69 6e 74 65 67 65 72 2c 20 78 74 79 70   ┆cinteger: emitid (xinteger, xtyp┆
0x05efa0…05efc0             65 6e 61 6d 65 29 3b 0a 0a 0a 0a 63 72 65 61 6c 3a 0a 65 6d 69 74 69 64 20 28 78 72 65 61 6c 2c   ┆ename);    creal: emitid (xreal,┆
0x05efc0…05efe0             20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 63 6e 69 6c 74 79 70 65 3a 0a 65 6d 69 74 69 64   ┆ xtypename);    cniltype: emitid┆
0x05efe0…05f000             20 28 78 6e 69 6c 74 79 70 65 2c 78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 63 65 72 72 6f 72   ┆ (xniltype,xtypename);    cerror┆
0x05f000…05f020 (25, 0, 11) 6b 69 6e 64 3a 0a 65 6d 69 74 69 64 20 28 78 65 72 72 6f 72 74 79 70 65 2c 20 78 74 79 70 65 6e   ┆kind: emitid (xerrortype, xtypen┆
0x05f020…05f040             61 6d 65 29 3b 0a 0a 0a 0a 63 74 65 78 74 3a 0a 65 6d 69 74 69 64 20 28 78 73 74 72 69 6e 67 74   ┆ame);    ctext: emitid (xstringt┆
0x05f040…05f060             79 70 65 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 65 6c 73 65 0a 69 66 20 74 72 75 65   ┆ype, xtypename);    else if true┆
0x05f060…05f080             20 74 68 65 6e 20 77 72 69 74 65 28 27 20 75 6e 6b 6e 6f 77 6e 20 74 79 70 65 6b 69 6e 64 20 3d   ┆ then write(' unknown typekind =┆
0x05f080…05f0a0             20 27 2c 20 6f 72 64 20 28 74 79 70 65 6b 69 6e 64 29 29 20 65 6c 73 65 0a 63 6f 6d 70 5f 65 72   ┆ ', ord (typekind)) else comp_er┆
0x05f0a0…05f0c0             72 6f 72 28 75 6e 6b 6e 6f 77 6e 5f 74 79 70 65 6b 69 6e 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 63   ┆ror(unknown_typekind); end; (* c┆
0x05f0c0…05f0e0             61 73 65 20 74 79 70 65 6b 69 6e 64 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 69 66 20 6e 6f 74 20   ┆ase typekind *)  end; (* if not ┆
0x05f0e0…05f100             65 6d 69 74 74 65 64 20 79 65 74 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 74 79 70   ┆emitted yet *)  end; (* with typ┆
0x05f100…05f120             2f 74 79 70 65 6e 61 6d 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20   ┆/typename *)  end; (* procedure ┆
0x05f120…05f140             65 6d 69 74 74 79 70 65 20 2a 29 0a 0a 0c 0a 01 45 20 31 0a 62 65 78 70 72 3a 3d 20 6e 69 6c 6f   ┆emittype *)     E 1 bexpr:= nilo┆
0x05f140…05f160             70 61 6e 64 3b 0a 65 6d 69 74 74 79 70 65 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 65 6d 69 74 69 64   ┆pand; emittype (element); emitid┆
0x05f160…05f180             20 28 78 70 6f 6f 6c 64 65 66 2c 20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 0a 0a   ┆ (xpooldef, xtypename); end;    ┆
0x05f180…05f1a0             63 69 6e 74 65 67 65 72 3a 0a 65 6d 69 74 69 64 20 28 78 69 6e 74 65 67 65 72 2c 20 78 74 79 70   ┆cinteger: emitid (xinteger, xtyp┆
0x05f1a0…05f1c0             65 6e 61 6d 65 29 3b 0a 0a 0a 0a 63 72 65 61 6c 3a 0a 65 6d 69 74 69 64 20 28 78 72 65 61 6c 2c   ┆ename);    creal: emitid (xreal,┆
0x05f1c0…05f1e0             20 78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 63 6e 69 6c 74 79 70 65 3a 0a 65 6d 69 74 69 64   ┆ xtypename);    cniltype: emitid┆
0x05f1e0…05f200             20 28 78 6e 69 6c 74 79 70 65 2c 78 74 79 70 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 63 65 72 72 6f 72   ┆ (xniltype,xtypename);    cerror┆
0x05f200…05f220 (25, 0, 12) 2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 78 70 34 70 72 6f 63 00 00 00 00 00 00 00   ┆../sw2103/src/rtp/xp4proc       ┆
0x05f220…05f240             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x05f260…05f280             00 00 00 00 20 20 20 37 35 35 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       755     255     146      ┆
0x05f280…05f2a0             20 31 36 33 31 32 33 20 20 35 32 36 36 37 36 37 35 34 33 20 20 31 30 33 32 31 00 20 00 00 00 00   ┆ 163123  5266767543  10321      ┆
0x05f2a0…05f2c0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x05f400…05f420 (25, 0, 13) 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ (*-----------------------------┆
0x05f420…05f440             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x05f440…05f460             2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39 32 20 20 44   ┆---- -- -- (C) Copyrigth 1992  D┆
0x05f460…05f480             41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 34 50 52 4f 43 2e 50 41 53 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d   ┆ANOSI -- -- P4PROC.PAS -- ------┆
0x05f480…05f4a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x05f4a0…05f4c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d   ┆----------------------------- --┆
0x05f4c0…05f4e0             0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Revisions -- ---------------┆
0x05f4e0…05f500             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20 39 31 2e 31   ┆----------------- --        91.1┆
0x05f500…05f520             32 2e 30 32 20 20 45 42 4b 20 20 20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20 31 2e 31 32   ┆2.02  EBK   Used in release 1.12┆
0x05f520…05f540             0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20   ┆ --  1.1   92.10.14  HEJ   SCCS ┆
0x05f540…05f560             61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆and UNIX used. -- --------------┆
0x05f560…05f580             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x05f580…05f5a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e   ┆--------------------- -- SCCS in┆
0x05f5a0…05f5c0             66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f   ┆formation -- File   :  %P% -- Mo┆
0x05f5c0…05f5e0             64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09   ┆dule :  %M% -- Version:  %I% -- ┆
0x05f5e0…05f600             44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆Date   :  %E%  %U% -------------┆
0x05f600…05f620 (25, 0, 14) 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x05f620…05f640             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 70 72 6f 63 65   ┆---------------------- *)  proce┆
0x05f640…05f660             64 75 72 65 20 72 6f 75 74 69 6e 65 5f 64 65 66 28 6d 3a 20 62 6c 6f 63 6b 5f 6d 6f 64 65 29 3b   ┆dure routine_def(m: block_mode);┆
0x05f660…05f680             0a 62 65 67 69 6e 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 77 69 74 68 20 6e 61 6d 65   ┆ begin push_name(nix); with name┆
0x05f680…05f6a0             74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 72 6f   ┆table(nix)^ do begin context:=ro┆
0x05f6a0…05f6c0             75 74 69 6e 65 5f 74 79 70 65 3b 0a 6e 69 76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b 0a 6c 69   ┆utine_type; niv:=current_niv; li┆
0x05f6c0…05f6e0             78 3a 3d 63 75 72 72 65 6e 74 5f 6c 69 78 3b 0a 63 75 72 72 65 6e 74 5f 6c 69 78 3a 3d 63 75 72   ┆x:=current_lix; current_lix:=cur┆
0x05f6e0…05f700             72 65 6e 74 5f 6c 69 78 2b 31 3b 0a 65 6e 64 3b 0a 70 75 73 68 5f 6c 65 76 65 6c 28 6d 29 3b 0a   ┆rent_lix+1; end; push_level(m); ┆
0x05f700…05f720             69 64 63 6f 75 6e 74 3a 3d 30 3b 20 20 70 61 72 61 6d 5f 6e 75 6d 62 65 72 3a 3d 30 3b 0a 68 65   ┆idcount:=0;  param_number:=0; he┆
0x05f720…05f740             61 64 5f 6c 69 6e 65 3a 3d 73 6f 75 72 63 65 5f 6c 69 6e 65 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63   ┆ad_line:=source_line; end;  proc┆
0x05f740…05f760             65 64 75 72 65 20 70 72 6f 63 65 73 73 5f 64 65 66 3b 0a 76 61 72 20 74 79 3a 20 69 6e 74 65 67   ┆edure process_def; var ty: integ┆
0x05f760…05f780             65 72 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 6e 69 78 29 3b 20 20 20 20 28 2a 73 6b 69 70   ┆er; begin passin(nix);    (*skip┆
0x05f780…05f7a0             20 6e 69 78 2a 29 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 20 20 20 70 61 73 73 69 6e 28   ┆ nix*) push_name(nix);   passin(┆
0x05f7a0…05f7c0             74 79 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 0a 62 65 67   ┆ty); with nametable(nix)^ do beg┆
0x05f7c0…05f7e0             69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 76 61 72 69 61 62 6c 65 3b 0a 6f 66 66 73 65 74 3a 3d 61 6c   ┆in context:=variable; offset:=al┆
0x05f7e0…05f800             6c 6f 63 5f 76 61 72 28 6e 61 6d 65 74 61 62 6c 65 28 74 79 29 5e 2e 73 69 7a 65 29 3b 0a 6e 69   ┆loc_var(nametable(ty)^.size); ni┆
0x05f800…05f820 (25, 0, 15) 76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b 0a 65 6e 64 3b 0a 70 75 73 68 5f 6c 65 76 65 6c 28   ┆v:=current_niv; end; push_level(┆
0x05f820…05f840             70 72 6f 63 65 73 73 5f 6d 6f 64 65 29 3b 0a 69 64 63 6f 75 6e 74 3a 3d 30 3b 20 20 20 70 61 72   ┆process_mode); idcount:=0;   par┆
0x05f840…05f860             61 6d 5f 6e 75 6d 62 65 72 3a 3d 30 3b 0a 68 65 61 64 5f 6c 69 6e 65 3a 3d 73 6f 75 72 63 65 5f   ┆am_number:=0; head_line:=source_┆
0x05f860…05f880             6c 69 6e 65 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 78 74 70 72 6f 63 65 73 73   ┆line; end;  procedure extprocess┆
0x05f880…05f8a0             5f 64 65 66 3b 0a 76 61 72 20 0a 74 65 6d 70 5f 76 61 72 2c 0a 74 79 70 65 5f 70 2c 20 70 61 72   ┆_def; var  temp_var, type_p, par┆
0x05f8a0…05f8c0             61 6d 5f 73 69 7a 65 2c 20 73 74 65 70 3a 20 69 6e 74 65 67 65 72 3b 0a 68 65 6c 70 5f 70 74 72   ┆am_size, step: integer; help_ptr┆
0x05f8c0…05f8e0             3a 20 73 74 61 63 6b 5f 70 74 72 3b 0a 62 65 67 69 6e 20 28 2a 20 70 69 63 6b 20 75 70 20 70 61   ┆: stack_ptr; begin (* pick up pa┆
0x05f8e0…05f900             72 61 6d 65 74 65 72 74 20 6c 69 73 74 20 66 6f 72 20 65 78 74 65 72 6e 61 6c 20 70 72 6f 63 65   ┆rametert list for external proce┆
0x05f900…05f920             73 73 20 74 79 70 65 20 2a 29 0a 70 61 73 73 69 6e 28 6e 69 78 29 3b 20 28 2a 20 6f 66 20 65 78   ┆ss type *) passin(nix); (* of ex┆
0x05f920…05f940             74 65 72 6e 61 6c 20 70 72 6f 63 65 73 73 20 74 79 70 65 20 2a 29 0a 77 69 74 68 20 6e 61 6d 65   ┆ternal process type *) with name┆
0x05f940…05f960             74 61 62 6c 65 28 20 6e 69 78 20 29 5e 20 64 6f 0a 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d   ┆table( nix )^ do begin context:=┆
0x05f960…05f980             20 70 72 6f 63 65 73 73 5f 74 79 70 65 3b 0a 73 69 7a 65 3a 3d 20 6e 61 6d 65 74 61 62 6c 65 28   ┆ process_type; size:= nametable(┆
0x05f980…05f9a0             20 63 6f 6d 70 5f 74 79 70 65 20 29 5e 2e 73 69 7a 65 3b 0a 64 79 6e 61 6d 69 63 3a 3d 20 66 61   ┆ comp_type )^.size; dynamic:= fa┆
0x05f9a0…05f9c0             6c 73 65 3b 0a 70 61 63 6b 65 64 5f 63 6f 6d 70 3a 3d 20 66 61 6c 73 65 3b 0a 6d 61 78 3a 3d 20   ┆lse; packed_comp:= false; max:= ┆
0x05f9c0…05f9e0             70 61 72 61 6d 5f 6e 75 6d 62 65 72 3b 0a 65 6e 64 3b 0a 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f   ┆param_number; end;  pop_to_free_┆
0x05f9e0…05fa00             73 74 61 63 6b 28 70 61 72 61 6d 5f 6e 75 6d 62 65 72 2b 31 29 3b 0a 68 65 6c 70 5f 70 74 72 3a   ┆stack(param_number+1); help_ptr:┆
0x05fa00…05fa20 (25, 1, 1)  3d 20 66 72 65 65 5f 73 74 61 63 6b 3b 0a 66 6f 72 20 73 74 65 70 3a 3d 20 70 61 72 61 6d 5f 6e   ┆= free_stack; for step:= param_n┆
0x05fa20…05fa40             75 6d 62 65 72 20 64 6f 77 6e 74 6f 20 31 20 64 6f 0a 62 65 67 69 6e 0a 74 65 6d 70 5f 76 61 72   ┆umber downto 1 do begin temp_var┆
0x05fa40…05fa60             3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 3b 0a 68 65 6c 70 5f 70   ┆:= help_ptr^.stacked_val; help_p┆
0x05fa60…05fa80             74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b 0a 6e 61 6d 65   ┆tr:= help_ptr^.former_elem; name┆
0x05fa80…05faa0             74 61 62 6c 65 28 20 74 65 6d 70 5f 76 61 72 20 29 5e 2e 6e 65 78 74 5f 63 6f 6d 70 3a 3d 20 68   ┆table( temp_var )^.next_comp:= h┆
0x05faa0…05fac0             65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 3b 20 28 2a 63 68 61 69 6e 20 6f 66   ┆elp_ptr^.stacked_val; (*chain of┆
0x05fac0…05fae0             20 66 6f 72 6d 61 6c 20 70 61 72 61 6d 65 74 65 72 73 20 2a 29 0a 77 69 74 68 20 6e 61 6d 65 74   ┆ formal parameters *) with namet┆
0x05fae0…05fb00             61 62 6c 65 28 20 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 20 29 5e 20 64   ┆able( help_ptr^.stacked_val )^ d┆
0x05fb00…05fb20             6f 0a 62 65 67 69 6e 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 20 63 6f 6d 70 5f 74 79 70   ┆o begin with nametable( comp_typ┆
0x05fb20…05fb40             65 20 29 5e 20 64 6f 0a 62 65 67 69 6e 0a 70 61 72 61 6d 5f 73 69 7a 65 3a 3d 20 73 69 7a 65 3b   ┆e )^ do begin param_size:= size;┆
0x05fb40…05fb60             20 28 2a 20 6f 66 20 70 61 72 61 6d 20 74 79 70 65 20 2a 29 0a 63 61 73 65 20 63 6f 6e 74 65 78   ┆ (* of param type *) case contex┆
0x05fb60…05fb80             74 20 6f 66 0a 70 6f 69 6e 74 65 72 5f 74 79 70 65 3a 20 74 79 70 65 5f 70 3a 3d 20 31 3b 0a 73   ┆t of pointer_type: type_p:= 1; s┆
0x05fb80…05fba0             65 6d 5f 74 79 70 65 3a 20 20 20 20 20 74 79 70 65 5f 70 3a 3d 20 32 3b 0a 72 65 66 5f 74 79 70   ┆em_type:     type_p:= 2; ref_typ┆
0x05fba0…05fbc0             65 3a 20 20 20 20 20 74 79 70 65 5f 70 3a 3d 20 33 3b 0a 73 68 61 64 6f 77 5f 74 79 70 65 3a 20   ┆e:     type_p:= 3; shadow_type: ┆
0x05fbc0…05fbe0             20 74 79 70 65 5f 70 3a 3d 20 34 3b 0a 70 6f 6f 6c 5f 74 79 70 65 3a 20 20 20 20 74 79 70 65 5f   ┆ type_p:= 4; pool_type:    type_┆
0x05fbe0…05fc00             70 3a 3d 20 35 3b 0a 61 6c 6c 69 67 6e 5f 72 65 63 5f 74 79 70 65 2c 0a 73 79 73 5f 72 65 63 6f   ┆p:= 5; allign_rec_type, sys_reco┆
0x05fc00…05fc20 (25, 1, 2)  72 64 5f 74 79 70 65 3a 20 74 79 70 65 5f 70 3a 3d 20 36 3b 0a 61 6c 6c 69 67 6e 5f 61 72 72 5f   ┆rd_type: type_p:= 6; allign_arr_┆
0x05fc20…05fc40             74 79 70 65 2c 0a 73 79 73 5f 61 72 72 61 79 5f 74 79 70 65 3a 20 20 74 79 70 65 5f 70 3a 3d 20   ┆type, sys_array_type:  type_p:= ┆
0x05fc40…05fc60             37 3b 0a 65 6c 73 65 20 20 20 20 20 20 74 79 70 65 5f 70 3a 3d 20 38 3b 0a 65 6e 64 3b 0a 65 6e   ┆7; else      type_p:= 8; end; en┆
0x05fc60…05fc80             64 3b 20 28 2a 20 77 69 74 68 20 63 6f 6d 70 20 74 79 70 65 20 2a 29 0a 0a 69 66 20 63 6f 6e 74   ┆d; (* with comp type *)  if cont┆
0x05fc80…05fca0             65 78 74 3d 76 61 6c 75 65 5f 70 61 72 61 6d 20 74 68 65 6e 0a 74 79 70 65 5f 70 3a 3d 20 74 79   ┆ext=value_param then type_p:= ty┆
0x05fca0…05fcc0             70 65 5f 70 2a 34 2b 32 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 74 61 62 6c 65   ┆pe_p*4+2 else begin if nametable┆
0x05fcc0…05fce0             28 20 63 6f 6d 70 5f 74 79 70 65 20 29 5e 2e 64 79 6e 61 6d 69 63 20 74 68 65 6e 20 65 72 72 6f   ┆( comp_type )^.dynamic then erro┆
0x05fce0…05fd00             72 28 65 72 72 6f 72 5f 64 79 6e 29 3b 0a 74 79 70 65 5f 70 3a 3d 20 74 79 70 65 5f 70 2a 34 2b   ┆r(error_dyn); type_p:= type_p*4+┆
0x05fd00…05fd20             31 3b 0a 65 6e 64 3b 20 28 2a 20 76 61 72 20 70 61 72 61 6d 20 2a 29 0a 73 69 7a 65 3a 3d 20 70   ┆1; end; (* var param *) size:= p┆
0x05fd20…05fd40             61 72 61 6d 5f 73 69 7a 65 3b 0a 6d 69 6e 3a 3d 20 74 79 70 65 5f 70 3b 20 28 2a 20 73 61 76 65   ┆aram_size; min:= type_p; (* save┆
0x05fd40…05fd60             20 70 61 72 61 6d 20 74 79 70 65 20 66 6f 72 20 6c 61 74 65 72 20 64 75 6d 70 20 69 6e 20 73 79   ┆ param type for later dump in sy┆
0x05fd60…05fd80             73 69 6e 69 74 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 70 61 72 61 6d 20 2a 29 0a 65   ┆sinit *) end; (* with param *) e┆
0x05fd80…05fda0             6e 64 3b 20 28 2a 20 66 6f 72 20 2e 2e 2e 20 2a 29 0a 70 61 72 61 6d 5f 6e 75 6d 62 65 72 3a 3d   ┆nd; (* for ... *) param_number:=┆
0x05fda0…05fdc0             20 30 3b 0a 65 6e 64 3b 20 28 2a 20 65 78 74 70 72 6f 63 65 73 73 20 64 65 66 20 2a 29 0a 0a 0a   ┆ 0; end; (* extprocess def *)   ┆
0x05fdc0…05fde0             70 72 6f 63 65 64 75 72 65 20 65 78 63 65 70 74 69 6f 6e 5f 64 65 66 3b 0a 62 65 67 69 6e 0a 70   ┆procedure exception_def; begin p┆
0x05fde0…05fe00             75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 20 20 20 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61   ┆ush_name(nix);   pop_to_free_sta┆
0x05fe00…05fe20 (25, 1, 3)  63 6b 28 31 29 3b 0a 69 66 20 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63   ┆ck(1); if (* **lambda or rc3502c┆
0x05fe20…05fe40             2a 2a 20 2a 29 20 6e 6f 74 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 77 69 74 68 20 6e   ┆** *) not versionz80 then with n┆
0x05fe40…05fe60             61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 0a 69 66 20 6e 69 76 3c 30 20 74 68 65 6e 20   ┆ametable(nix)^ do if niv<0 then ┆
0x05fe60…05fe80             62 65 67 69 6e 20 20 0a 70 75 74 31 28 7a 65 78 74 65 78 63 65 70 74 69 6f 6e 2c 20 6f 66 66 73   ┆begin   put1(zextexception, offs┆
0x05fe80…05fea0             65 74 29 3b 20 20 28 2a 20 6f 66 66 73 65 74 20 69 73 20 6e 61 6d 65 20 6b 65 79 20 2a 29 0a 65   ┆et);  (* offset is name key *) e┆
0x05fea0…05fec0             6e 64 20 65 6c 73 65 0a 70 75 74 32 28 7a 65 78 63 65 70 74 69 6f 6e 2c 6e 69 76 2c 6c 69 78 29   ┆nd else put2(zexception,niv,lix)┆
0x05fec0…05fee0             3b 0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 63 5f 70 72 6f 63 65 73 73 5f 70   ┆; end;  function alloc_process_p┆
0x05fee0…05ff00             61 72 61 6d 20 3a 20 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 72 65 74 75 72 6e 20 3d 20 70 61 72   ┆aram : integer;  (* return = par┆
0x05ff00…05ff20             61 6d 20 6c 65 6e 67 74 68 20 2a 29 0a 76 61 72 20 74 79 70 65 5f 6e 69 78 2c 20 6e 6f 2c 20 70   ┆am length *) var type_nix, no, p┆
0x05ff20…05ff40             61 72 61 6d 5f 73 69 7a 65 2c 20 62 79 74 65 5f 64 69 73 70 6c 2c 20 70 61 72 61 6d 65 74 65 72   ┆aram_size, byte_displ, parameter┆
0x05ff40…05ff60             5f 6c 65 6e 67 74 68 20 3a 20 69 6e 74 65 67 65 72 3b 0a 68 65 6c 70 5f 70 74 72 3a 20 73 74 61   ┆_length : integer; help_ptr: sta┆
0x05ff60…05ff80             63 6b 5f 70 74 72 3b 0a 62 65 67 69 6e 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28   ┆ck_ptr; begin pop_to_free_stack(┆
0x05ff80…05ffa0             70 61 72 61 6d 5f 6e 75 6d 62 65 72 29 3b 0a 68 65 6c 70 5f 70 74 72 3a 3d 66 72 65 65 5f 73 74   ┆param_number); help_ptr:=free_st┆
0x05ffa0…05ffc0             61 63 6b 3b 20 28 2a 20 74 65 6d 70 6f 72 61 72 79 20 72 65 76 65 72 73 65 20 6f 66 20 70 61 72   ┆ack; (* temporary reverse of par┆
0x05ffc0…05ffe0             61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29 0a 66 6f 72 20 6e 6f 3a 3d 70 61 72 61 6d 5f 6e 75 6d   ┆ameter list *) for no:=param_num┆
0x05ffe0…060000             62 65 72 20 2d 20 31 20 64 6f 77 6e 74 6f 20 30 20 64 6f 0a 77 69 74 68 20 6e 61 6d 65 74 61 62   ┆ber - 1 downto 0 do with nametab┆
0x060000…060020 (25, 1, 4)  6c 65 28 20 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 20 29 5e 20 64 6f 20   ┆le( help_ptr^.stacked_val )^ do ┆
0x060020…060040             62 65 67 69 6e 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65   ┆begin help_ptr:= help_ptr^.forme┆
0x060040…060060             72 5f 65 6c 65 6d 3b 0a 74 79 70 65 5f 6e 69 78 3a 3d 63 6f 6d 70 5f 74 79 70 65 3b 0a 69 66 20   ┆r_elem; type_nix:=comp_type; if ┆
0x060060…060080             63 6f 6e 74 65 78 74 20 3d 20 76 61 6c 75 65 5f 70 61 72 61 6d 20 74 68 65 6e 0a 70 61 72 61 6d   ┆context = value_param then param┆
0x060080…0600a0             5f 73 69 7a 65 3a 3d 6e 61 6d 65 74 61 62 6c 65 28 74 79 70 65 5f 6e 69 78 29 5e 2e 73 69 7a 65   ┆_size:=nametable(type_nix)^.size┆
0x0600a0…0600c0             0a 65 6c 73 65 0a 70 61 72 61 6d 5f 73 69 7a 65 3a 3d 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68   ┆ else param_size:=pointer_length┆
0x0600c0…0600e0             3b 0a 69 66 20 6e 61 6d 65 74 61 62 6c 65 28 74 79 70 65 5f 6e 69 78 29 5e 2e 64 79 6e 61 6d 69   ┆; if nametable(type_nix)^.dynami┆
0x0600e0…060100             63 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 65 72 72 6f 72 5f 64 79 6e 29 3b 0a 70   ┆c then begin error(error_dyn); p┆
0x060100…060120             61 72 61 6d 5f 73 69 7a 65 3a 3d 30 3b 0a 65 6e 64 3b 0a 62 79 74 65 5f 64 69 73 70 6c 3a 3d 30   ┆aram_size:=0; end; byte_displ:=0┆
0x060120…060140             3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68   ┆; if (* **z80** *) versionz80 th┆
0x060140…060160             65 6e 20 62 65 67 69 6e 0a 69 66 20 70 61 72 61 6d 5f 73 69 7a 65 20 3d 20 62 79 74 65 5f 6c 65   ┆en begin if param_size = byte_le┆
0x060160…060180             6e 67 74 68 20 74 68 65 6e 20 70 61 72 61 6d 5f 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74   ┆ngth then param_size:=word_lengt┆
0x060180…0601a0             68 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 20 74 68 65   ┆h; end else if lambdaversion the┆
0x0601a0…0601c0             6e 0a 62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 74 61 62 6c 65 28 74 79 70 65 5f 6e 69 78 29 5e 2e   ┆n begin if nametable(type_nix)^.┆
0x0601c0…0601e0             63 6f 6e 74 65 78 74 20 69 6e 20 69 6e 64 65 78 5f 74 79 70 65 73 20 74 68 65 6e 0a 69 66 20 70   ┆context in index_types then if p┆
0x0601e0…060200             61 72 61 6d 5f 73 69 7a 65 20 3d 20 62 79 74 65 5f 6c 65 6e 67 74 68 20 74 68 65 6e 20 62 79 74   ┆aram_size = byte_length then byt┆
0x060200…060220 (25, 1, 5)  65 5f 64 69 73 70 6c 3a 3d 31 3b 0a 69 66 20 6f 64 64 28 70 61 72 61 6d 5f 73 69 7a 65 29 20 74   ┆e_displ:=1; if odd(param_size) t┆
0x060220…060240             68 65 6e 20 70 61 72 61 6d 5f 73 69 7a 65 3a 3d 70 61 72 61 6d 5f 73 69 7a 65 2b 31 3b 0a 65 6e   ┆hen param_size:=param_size+1; en┆
0x060240…060260             64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 2a 2a 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 69   ┆d else begin (* **rc3502c** *) i┆
0x060260…060280             66 20 28 6e 61 6d 65 74 61 62 6c 65 28 74 79 70 65 5f 6e 69 78 29 5e 2e 63 6f 6e 74 65 78 74 20   ┆f (nametable(type_nix)^.context ┆
0x060280…0602a0             69 6e 20 61 64 6a 75 73 74 5f 74 79 70 65 73 29 20 6f 72 20 28 63 6f 6e 74 65 78 74 3d 76 61 72   ┆in adjust_types) or (context=var┆
0x0602a0…0602c0             5f 70 61 72 61 6d 29 20 74 68 65 6e 0a 69 66 20 6f 64 64 28 70 61 72 61 6d 5f 73 69 7a 65 29 20   ┆_param) then if odd(param_size) ┆
0x0602c0…0602e0             74 68 65 6e 20 62 79 74 65 5f 64 69 73 70 6c 20 3a 3d 20 31 3b 0a 69 66 20 6f 64 64 28 70 61 72   ┆then byte_displ := 1; if odd(par┆
0x0602e0…060300             61 6d 5f 73 69 7a 65 29 20 74 68 65 6e 20 70 61 72 61 6d 5f 73 69 7a 65 20 3a 3d 20 70 61 72 61   ┆am_size) then param_size := para┆
0x060300…060320             6d 5f 73 69 7a 65 20 2b 20 31 3b 0a 65 6e 64 3b 0a 6e 69 76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69   ┆m_size + 1; end; niv:=current_ni┆
0x060320…060340             76 3b 0a 6f 66 66 73 65 74 3a 3d 61 6c 6c 6f 63 5f 76 61 72 28 70 61 72 61 6d 5f 73 69 7a 65 29   ┆v; offset:=alloc_var(param_size)┆
0x060340…060360             3b 0a 6f 66 66 73 65 74 3a 3d 6f 66 66 73 65 74 2b 62 79 74 65 5f 64 69 73 70 6c 3b 0a 65 6e 64   ┆; offset:=offset+byte_displ; end┆
0x060360…060380             3b 20 28 2a 20 66 6f 72 20 2e 2e 20 77 69 74 68 20 2e 2e 20 2a 29 0a 0a 28 2a 20 70 75 74 20 74   ┆; (* for .. with .. *)  (* put t┆
0x060380…0603a0             68 65 20 65 6c 65 6d 65 6e 74 73 20 62 61 63 6b 20 6f 6e 74 6f 20 74 68 65 20 73 74 61 63 6b 20   ┆he elements back onto the stack ┆
0x0603a0…0603c0             2a 29 0a 66 6f 72 20 6e 6f 3a 3d 20 70 61 72 61 6d 5f 6e 75 6d 62 65 72 20 64 6f 77 6e 74 6f 20   ┆*) for no:= param_number downto ┆
0x0603c0…0603e0             31 20 64 6f 0a 62 65 67 69 6e 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 66 72 65 65 5f 73 74 61 63 6b   ┆1 do begin help_ptr:= free_stack┆
0x0603e0…060400             3b 0a 66 72 65 65 5f 73 74 61 63 6b 3a 3d 20 66 72 65 65 5f 73 74 61 63 6b 5e 2e 66 6f 72 6d 65   ┆; free_stack:= free_stack^.forme┆
0x060400…060420 (25, 1, 6)  72 5f 65 6c 65 6d 3b 0a 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3a 3d 20   ┆r_elem; help_ptr^.former_elem:= ┆
0x060420…060440             73 74 61 63 6b 5f 74 6f 70 3b 0a 73 74 61 63 6b 5f 74 6f 70 3a 3d 20 68 65 6c 70 5f 70 74 72 3b   ┆stack_top; stack_top:= help_ptr;┆
0x060440…060460             0a 65 6e 64 3b 0a 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a   ┆ end;  if (* **z80** *) versionz┆
0x060460…060480             38 30 20 74 68 65 6e 0a 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 3a 3d 2d 63 75 72 72 65   ┆80 then parameter_length:=-curre┆
0x060480…0604a0             6e 74 5f 6f 66 66 73 65 74 0a 65 6c 73 65 0a 69 66 20 6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 20   ┆nt_offset else if lambdaversion ┆
0x0604a0…0604c0             74 68 65 6e 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 2a 2a 20 2a 29 0a 70 61 72 61 6d 65 74 65 72 5f   ┆then (* **lambda** *) parameter_┆
0x0604c0…0604e0             6c 65 6e 67 74 68 3a 3d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 2b 20 31 0a 65 6c 73 65 20   ┆length:=current_offset + 1 else ┆
0x0604e0…060500             28 2a 20 2a 2a 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67   ┆(* **rc3502c** *) parameter_leng┆
0x060500…060520             74 68 20 3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3b 0a 74 68 69 73 5f 6c 65 76 65 6c   ┆th := current_offset; this_level┆
0x060520…060540             5e 2e 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 3a 3d 70 61 72 61 6d 65 74 65 72 5f 6c 65   ┆^.parameter_length:=parameter_le┆
0x060540…060560             6e 67 74 68 3b 0a 61 6c 6c 6f 63 5f 70 72 6f 63 65 73 73 5f 70 61 72 61 6d 3a 3d 70 61 72 61 6d   ┆ngth; alloc_process_param:=param┆
0x060560…060580             65 74 65 72 5f 6c 65 6e 67 74 68 3b 0a 65 6e 64 3b 20 20 28 2a 20 61 6c 6c 6f 63 20 70 72 6f 63   ┆eter_length; end;  (* alloc proc┆
0x060580…0605a0             65 73 73 20 70 61 72 61 6d 20 2a 29 0a 0a 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 63 5f 72 6f 75   ┆ess param *)  function alloc_rou┆
0x0605a0…0605c0             74 69 6e 65 5f 70 61 72 61 6d 20 3a 20 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 72 65 74 75 72 6e   ┆tine_param : integer;  (* return┆
0x0605c0…0605e0             20 3d 20 70 61 72 61 6d 20 6c 65 6e 67 74 68 20 2a 29 0a 76 61 72 20 71 2c 20 6e 6f 2c 20 70 61   ┆ = param length *) var q, no, pa┆
0x0605e0…060600             72 61 6d 65 74 65 72 5f 6f 66 66 73 65 74 2c 20 72 65 74 75 72 6e 5f 73 69 7a 65 2c 20 70 61 72   ┆rameter_offset, return_size, par┆
0x060600…060620 (25, 1, 7)  61 6d 5f 73 69 7a 65 2c 0a 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 2c 20 62 79 74 65 5f   ┆am_size, parameter_length, byte_┆
0x060620…060640             64 69 73 70 6c 20 3a 20 69 6e 74 65 67 65 72 3b 0a 68 65 6c 70 5f 70 74 72 3a 20 73 74 61 63 6b   ┆displ : integer; help_ptr: stack┆
0x060640…060660             5f 70 74 72 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 63 5f 70 61 72 61 6d 28 73 69 7a 65   ┆_ptr;  function alloc_param(size┆
0x060660…060680             20 3a 20 69 6e 74 65 67 65 72 29 20 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 28 2a 24   ┆ : integer) : integer; begin (*$┆
0x060680…0606a0             52 2d 2a 29 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30   ┆R-*) if (* **z80** *) versionz80┆
0x0606a0…0606c0             20 74 68 65 6e 20 62 65 67 69 6e 0a 28 2a 20 70 61 72 61 6d 65 74 65 72 5f 6f 66 66 73 65 74 20   ┆ then begin (* parameter_offset ┆
0x0606c0…0606e0             3e 3d 20 30 20 2a 29 0a 61 6c 6c 6f 63 5f 70 61 72 61 6d 3a 3d 70 61 72 61 6d 65 74 65 72 5f 6f   ┆>= 0 *) alloc_param:=parameter_o┆
0x0606e0…060700             66 66 73 65 74 3b 0a 69 66 20 74 6f 70 5f 61 64 64 72 65 73 73 20 2d 20 70 61 72 61 6d 65 74 65   ┆ffset; if top_address - paramete┆
0x060700…060720             72 5f 6f 66 66 73 65 74 20 3e 3d 20 73 69 7a 65 20 74 68 65 6e 0a 70 61 72 61 6d 65 74 65 72 5f   ┆r_offset >= size then parameter_┆
0x060720…060740             6f 66 66 73 65 74 3a 3d 70 61 72 61 6d 65 74 65 72 5f 6f 66 66 73 65 74 20 2b 20 73 69 7a 65 0a   ┆offset:=parameter_offset + size ┆
0x060740…060760             65 6c 73 65 0a 65 72 72 6f 72 28 61 64 64 72 65 73 73 5f 6f 76 65 72 66 6c 6f 77 29 3b 0a 65 6e   ┆else error(address_overflow); en┆
0x060760…060780             64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35   ┆d else begin (* **lambda or rc35┆
0x060780…0607a0             30 32 63 2a 2a 20 2a 29 0a 28 2a 20 70 61 72 61 6d 65 74 65 72 5f 6f 66 66 73 65 74 20 3c 3d 20   ┆02c** *) (* parameter_offset <= ┆
0x0607a0…0607c0             30 20 2a 29 0a 69 66 20 74 6f 70 5f 61 64 64 72 65 73 73 20 2b 20 70 61 72 61 6d 65 74 65 72 5f   ┆0 *) if top_address + parameter_┆
0x0607c0…0607e0             6f 66 66 73 65 74 20 3e 3d 20 73 69 7a 65 20 74 68 65 6e 0a 70 61 72 61 6d 65 74 65 72 5f 6f 66   ┆offset >= size then parameter_of┆
0x0607e0…060800             66 73 65 74 3a 3d 70 61 72 61 6d 65 74 65 72 5f 6f 66 66 73 65 74 20 2d 20 73 69 7a 65 0a 65 6c   ┆fset:=parameter_offset - size el┆
0x060800…060820 (25, 1, 8)  73 65 0a 65 72 72 6f 72 28 61 64 64 72 65 73 73 5f 6f 76 65 72 66 6c 6f 77 29 3b 0a 61 6c 6c 6f   ┆se error(address_overflow); allo┆
0x060820…060840             63 5f 70 61 72 61 6d 3a 3d 70 61 72 61 6d 65 74 65 72 5f 6f 66 66 73 65 74 3b 0a 65 6e 64 3b 0a   ┆c_param:=parameter_offset; end; ┆
0x060840…060860             28 2a 52 2b 2a 29 0a 65 6e 64 3b 20 28 2a 20 61 6c 6c 6f 63 5f 70 61 72 61 6d 20 2a 29 0a 0a 62   ┆(*R+*) end; (* alloc_param *)  b┆
0x060860…060880             65 67 69 6e 20 28 2a 20 61 6c 6c 6f 63 20 72 6f 75 74 69 6e 65 20 70 61 72 61 6d 20 2a 29 0a 72   ┆egin (* alloc routine param *) r┆
0x060880…0608a0             65 74 75 72 6e 5f 73 69 7a 65 3a 3d 30 3b 0a 71 3a 3d 70 61 72 61 6d 5f 6e 75 6d 62 65 72 20 2d   ┆eturn_size:=0; q:=param_number -┆
0x0608a0…0608c0             20 31 3b 0a 69 66 20 6d 6f 64 65 20 3d 20 66 75 6e 63 5f 6d 6f 64 65 20 74 68 65 6e 0a 62 65 67   ┆ 1; if mode = func_mode then beg┆
0x0608c0…0608e0             69 6e 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 73 74 61 63 6b 5f 74 6f 70 3b 20 28 2a 20 66 69 6e 64   ┆in help_ptr:= stack_top; (* find┆
0x0608e0…060900             20 66 75 6e 63 74 69 6f 6e 20 64 65 73 69 67 6e 61 74 6f 72 20 65 6c 65 6d 65 6e 74 20 69 6e 20   ┆ function designator element in ┆
0x060900…060920             73 74 61 63 6b 20 2a 29 0a 66 6f 72 20 6e 6f 3a 3d 20 31 20 74 6f 20 71 20 64 6f 20 68 65 6c 70   ┆stack *) for no:= 1 to q do help┆
0x060920…060940             5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b 20 28 2a   ┆_ptr:= help_ptr^.former_elem; (*┆
0x060940…060960             20 73 6b 69 70 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 2a 29 0a 0a 77 69 74 68 20 6e 61   ┆ skip the parameters *)  with na┆
0x060960…060980             6d 65 74 61 62 6c 65 28 20 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 20 29   ┆metable( help_ptr^.stacked_val )┆
0x060980…0609a0             5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 74 61 62 6c 65 28 63 6f 6d 70 5f 74 79 70   ┆^ do begin if nametable(comp_typ┆
0x0609a0…0609c0             65 29 5e 2e 63 6f 6e 74 65 78 74 20 69 6e 20 64 69 72 65 63 74 5f 72 65 74 75 72 6e 20 74 68 65   ┆e)^.context in direct_return the┆
0x0609c0…0609e0             6e 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 72 65 74 75 72 6e 5f 70 61 72 61 6d 3b 0a 72   ┆n begin context:=return_param; r┆
0x0609e0…060a00             65 74 75 72 6e 5f 73 69 7a 65 3a 3d 6e 61 6d 65 74 61 62 6c 65 28 63 6f 6d 70 5f 74 79 70 65 29   ┆eturn_size:=nametable(comp_type)┆
0x060a00…060a20 (25, 1, 9)  5e 2e 73 69 7a 65 3b 0a 69 66 20 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 7a 38 30 2a 2a 20   ┆^.size; if (* **lambda or z80** ┆
0x060a20…060a40             2a 29 20 6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 20 6f 72 20 76 65 72 73 69 6f 6e 7a 38 30 20 74   ┆*) lambdaversion or versionz80 t┆
0x060a40…060a60             68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 72 65 74 75 72 6e 5f 73 69 7a 65 3d 62 79 74 65 5f 6c 65   ┆hen begin if return_size=byte_le┆
0x060a60…060a80             6e 67 74 68 20 74 68 65 6e 20 72 65 74 75 72 6e 5f 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67   ┆ngth then return_size:=word_leng┆
0x060a80…060aa0             74 68 0a 65 6e 64 0a 65 6c 73 65 20 28 2a 20 2a 2a 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 69 66   ┆th end else (* **rc3502c** *) if┆
0x060aa0…060ac0             20 6f 64 64 28 72 65 74 75 72 6e 5f 73 69 7a 65 29 20 74 68 65 6e 20 72 65 74 75 72 6e 5f 73 69   ┆ odd(return_size) then return_si┆
0x060ac0…060ae0             7a 65 20 3a 3d 20 72 65 74 75 72 6e 5f 73 69 7a 65 20 2b 20 31 3b 0a 65 6e 64 3b 0a 69 66 20 6e   ┆ze := return_size + 1; end; if n┆
0x060ae0…060b00             61 6d 65 74 61 62 6c 65 28 63 6f 6d 70 5f 74 79 70 65 29 5e 2e 64 79 6e 61 6d 69 63 20 74 68 65   ┆ametable(comp_type)^.dynamic the┆
0x060b00…060b20             6e 20 65 72 72 6f 72 28 65 72 72 6f 72 5f 64 79 6e 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a   ┆n error(error_dyn); end; end; (*┆
0x060b20…060b40             20 69 66 20 66 75 6e 63 5f 6d 6f 64 65 20 2a 29 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 20 6f 72 20   ┆ if func_mode *) if (* **z80 or ┆
0x060b40…060b60             72 63 33 35 30 32 63 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 6f 72 20 28 6e 6f 74 20   ┆rc3502c** *) versionz80 or (not ┆
0x060b60…060b80             6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 29 20 74 68 65 6e 0a 70 61 72 61 6d 65 74 65 72 5f 6f 66   ┆lambdaversion) then parameter_of┆
0x060b80…060ba0             66 73 65 74 3a 3d 30 0a 65 6c 73 65 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 2a 2a 20 2a 29 0a 70 61   ┆fset:=0 else (* **lambda** *) pa┆
0x060ba0…060bc0             72 61 6d 65 74 65 72 5f 6f 66 66 73 65 74 3a 3d 2d 31 3b 0a 70 61 72 61 6d 65 74 65 72 5f 6c 65   ┆rameter_offset:=-1; parameter_le┆
0x060bc0…060be0             6e 67 74 68 3a 3d 30 3b 0a 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 73 74 61 63 6b 5f 74 6f 70 3b 20   ┆ngth:=0;  help_ptr:= stack_top; ┆
0x060be0…060c00             28 2a 20 74 72 61 76 65 72 73 65 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a   ┆(* traverse the parameter list *┆
0x060c00…060c20 (25, 1, 10) 29 0a 66 6f 72 20 6e 6f 3a 3d 30 20 74 6f 20 71 20 64 6f 0a 77 69 74 68 20 6e 61 6d 65 74 61 62   ┆) for no:=0 to q do with nametab┆
0x060c20…060c40             6c 65 28 20 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 20 29 5e 20 64 6f 20   ┆le( help_ptr^.stacked_val )^ do ┆
0x060c40…060c60             62 65 67 69 6e 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65   ┆begin help_ptr:= help_ptr^.forme┆
0x060c60…060c80             72 5f 65 6c 65 6d 3b 0a 69 66 20 63 6f 6e 74 65 78 74 20 3d 20 76 61 72 5f 70 61 72 61 6d 20 74   ┆r_elem; if context = var_param t┆
0x060c80…060ca0             68 65 6e 0a 70 61 72 61 6d 5f 73 69 7a 65 3a 3d 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 0a 65   ┆hen param_size:=pointer_length e┆
0x060ca0…060cc0             6c 73 65 0a 28 2a 20 76 61 6c 75 65 20 70 61 72 61 6d 20 61 6e 64 20 72 65 74 75 72 6e 20 70 61   ┆lse (* value param and return pa┆
0x060cc0…060ce0             72 61 6d 20 2a 29 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 20 63 6f 6d 70 5f 74 79 70 65   ┆ram *) with nametable( comp_type┆
0x060ce0…060d00             29 5e 20 64 6f 20 62 65 67 69 6e 0a 70 61 72 61 6d 5f 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 69 66   ┆)^ do begin param_size:=size; if┆
0x060d00…060d20             20 64 79 6e 61 6d 69 63 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 65 72 72 6f 72 5f   ┆ dynamic then begin error(error_┆
0x060d20…060d40             64 79 6e 29 3b 0a 70 61 72 61 6d 5f 73 69 7a 65 3a 3d 30 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 62   ┆dyn); param_size:=0; end; end; b┆
0x060d40…060d60             79 74 65 5f 64 69 73 70 6c 3a 3d 30 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76   ┆yte_displ:=0; if (* **z80** *) v┆
0x060d60…060d80             65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 70 61 72 61 6d 5f 73 69   ┆ersionz80 then begin if param_si┆
0x060d80…060da0             7a 65 20 3d 20 62 79 74 65 5f 6c 65 6e 67 74 68 20 74 68 65 6e 20 70 61 72 61 6d 5f 73 69 7a 65   ┆ze = byte_length then param_size┆
0x060da0…060dc0             3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 20 28 2a 20 2a   ┆:=word_length; end else if  (* *┆
0x060dc0…060de0             2a 6c 61 6d 62 64 61 2a 2a 20 2a 29 20 6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 20 74 68 65 6e 0a   ┆*lambda** *) lambdaversion then ┆
0x060de0…060e00             62 65 67 69 6e 0a 69 66 20 6e 61 6d 65 74 61 62 6c 65 28 63 6f 6d 70 5f 74 79 70 65 29 5e 2e 63   ┆begin if nametable(comp_type)^.c┆
0x060e00…060e20 (25, 1, 11) 6f 6e 74 65 78 74 20 69 6e 20 69 6e 64 65 78 5f 74 79 70 65 73 20 74 68 65 6e 0a 69 66 20 70 61   ┆ontext in index_types then if pa┆
0x060e20…060e40             72 61 6d 5f 73 69 7a 65 20 3d 20 62 79 74 65 5f 6c 65 6e 67 74 68 20 74 68 65 6e 20 62 79 74 65   ┆ram_size = byte_length then byte┆
0x060e40…060e60             5f 64 69 73 70 6c 3a 3d 31 3b 0a 69 66 20 6f 64 64 28 70 61 72 61 6d 5f 73 69 7a 65 29 20 74 68   ┆_displ:=1; if odd(param_size) th┆
0x060e60…060e80             65 6e 20 70 61 72 61 6d 5f 73 69 7a 65 3a 3d 70 61 72 61 6d 5f 73 69 7a 65 20 2b 20 31 3b 0a 65   ┆en param_size:=param_size + 1; e┆
0x060e80…060ea0             6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 2a 2a 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a   ┆nd else begin (* **rc3502c** *) ┆
0x060ea0…060ec0             69 66 20 28 6e 61 6d 65 74 61 62 6c 65 28 63 6f 6d 70 5f 74 79 70 65 29 5e 2e 63 6f 6e 74 65 78   ┆if (nametable(comp_type)^.contex┆
0x060ec0…060ee0             74 20 69 6e 20 61 64 6a 75 73 74 5f 74 79 70 65 73 29 20 6f 72 20 28 63 6f 6e 74 65 78 74 20 3d   ┆t in adjust_types) or (context =┆
0x060ee0…060f00             20 76 61 72 5f 70 61 72 61 6d 29 20 74 68 65 6e 0a 69 66 20 6f 64 64 28 70 61 72 61 6d 5f 73 69   ┆ var_param) then if odd(param_si┆
0x060f00…060f20             7a 65 29 20 74 68 65 6e 20 62 79 74 65 5f 64 69 73 70 6c 20 3a 3d 20 31 3b 0a 69 66 20 6f 64 64   ┆ze) then byte_displ := 1; if odd┆
0x060f20…060f40             28 70 61 72 61 6d 5f 73 69 7a 65 29 20 74 68 65 6e 20 70 61 72 61 6d 5f 73 69 7a 65 20 3a 3d 20   ┆(param_size) then param_size := ┆
0x060f40…060f60             70 61 72 61 6d 5f 73 69 7a 65 20 2b 20 31 3b 0a 65 6e 64 3b 0a 70 61 72 61 6d 65 74 65 72 5f 6c   ┆param_size + 1; end; parameter_l┆
0x060f60…060f80             65 6e 67 74 68 3a 3d 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 20 2b 20 70 61 72 61 6d 5f   ┆ength:=parameter_length + param_┆
0x060f80…060fa0             73 69 7a 65 3b 0a 6e 69 76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b 0a 6f 66 66 73 65 74 3a 3d   ┆size; niv:=current_niv; offset:=┆
0x060fa0…060fc0             61 6c 6c 6f 63 5f 70 61 72 61 6d 28 70 61 72 61 6d 5f 73 69 7a 65 29 3b 0a 6f 66 66 73 65 74 3a   ┆alloc_param(param_size); offset:┆
0x060fc0…060fe0             3d 6f 66 66 73 65 74 20 2b 20 62 79 74 65 5f 64 69 73 70 6c 3b 0a 65 6e 64 3b 20 28 2a 20 66 6f   ┆=offset + byte_displ; end; (* fo┆
0x060fe0…061000             72 20 2e 2e 2e 20 77 69 74 68 20 2e 2e 20 2a 29 0a 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74   ┆r ... with .. *) parameter_lengt┆
0x061000…061020 (25, 1, 12) 68 3a 3d 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 20 2d 20 72 65 74 75 72 6e 5f 73 69 7a   ┆h:=parameter_length - return_siz┆
0x061020…061040             65 3b 0a 61 6c 6c 6f 63 5f 72 6f 75 74 69 6e 65 5f 70 61 72 61 6d 3a 3d 70 61 72 61 6d 65 74 65   ┆e; alloc_routine_param:=paramete┆
0x061040…061060             72 5f 6c 65 6e 67 74 68 3b 0a 65 6e 64 3b 20 28 2a 20 61 6c 6c 6f 63 20 72 6f 75 74 69 6e 65 20   ┆r_length; end; (* alloc routine ┆
0x061060…061080             70 61 72 61 6d 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 6f 72 6d 61 6c 5f 70 61 72 61 6d   ┆param *)  procedure formal_param┆
0x061080…0610a0             28 63 3a 20 63 6f 6e 74 65 78 74 5f 6b 69 6e 64 29 3b 0a 76 61 72 20 74 79 70 65 5f 6e 69 78 2c   ┆(c: context_kind); var type_nix,┆
0x0610a0…0610c0             20 70 61 72 6d 5f 73 69 7a 65 2c 20 62 79 74 65 5f 64 69 73 70 6c 2c 20 69 3a 20 69 6e 74 65 67   ┆ parm_size, byte_displ, i: integ┆
0x0610c0…0610e0             65 72 3b 0a 68 65 6c 70 5f 70 74 72 3a 20 73 74 61 63 6b 5f 70 74 72 3b 0a 62 65 67 69 6e 0a 74   ┆er; help_ptr: stack_ptr; begin t┆
0x0610e0…061100             79 70 65 5f 6e 69 78 3a 3d 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 3b   ┆ype_nix:=stack_top^.stacked_val;┆
0x061100…061120             0a 68 65 6c 70 5f 70 74 72 3a 3d 20 73 74 61 63 6b 5f 74 6f 70 5e 2e 66 6f 72 6d 65 72 5f 65 6c   ┆ help_ptr:= stack_top^.former_el┆
0x061120…061140             65 6d 3b 20 28 2a 20 62 79 70 61 73 73 20 74 6f 70 20 65 6c 65 6d 65 6e 74 20 2a 29 0a 66 6f 72   ┆em; (* bypass top element *) for┆
0x061140…061160             20 69 3a 3d 69 64 63 6f 75 6e 74 20 64 6f 77 6e 74 6f 20 31 20 64 6f 0a 77 69 74 68 20 6e 61 6d   ┆ i:=idcount downto 1 do with nam┆
0x061160…061180             65 74 61 62 6c 65 28 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 20 20 20 29   ┆etable(help_ptr^.stacked_val   )┆
0x061180…0611a0             5e 20 64 6f 20 62 65 67 69 6e 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e   ┆^ do begin help_ptr:= help_ptr^.┆
0x0611a0…0611c0             66 6f 72 6d 65 72 5f 65 6c 65 6d 3b 0a 63 6f 6e 74 65 78 74 3a 3d 63 3b 0a 63 6f 6d 70 5f 74 79   ┆former_elem; context:=c; comp_ty┆
0x0611c0…0611e0             70 65 3a 3d 74 79 70 65 5f 6e 69 78 3b 0a 65 6e 64 3b 0a 70 61 72 61 6d 5f 6e 75 6d 62 65 72 3a   ┆pe:=type_nix; end; param_number:┆
0x0611e0…061200             3d 70 61 72 61 6d 5f 6e 75 6d 62 65 72 2b 69 64 63 6f 75 6e 74 3b 0a 69 64 63 6f 75 6e 74 3a 3d   ┆=param_number+idcount; idcount:=┆
0x061200…061220 (25, 1, 13) 30 3b 20 20 20 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 65 6e 64 3b 0a   ┆0;   pop_to_free_stack(1); end; ┆
0x061220…061240             0a 70 72 6f 63 65 64 75 72 65 20 6e 61 6d 65 3b 0a 76 61 72 20 70 2c 71 2c 63 68 2c 69 3a 20 69   ┆ procedure name; var p,q,ch,i: i┆
0x061240…061260             6e 74 65 67 65 72 3b 20 20 6e 61 3a 20 61 6c 66 61 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28   ┆nteger;  na: alfa; begin passin(┆
0x061260…061280             70 29 3b 20 20 20 71 3a 3d 30 3b 20 20 20 6e 61 3a 3d 27 20 20 20 20 20 20 20 20 20 20 20 20 27   ┆p);   q:=0;   na:='            '┆
0x061280…0612a0             3b 0a 69 66 20 70 3e 61 6c 66 61 6c 65 6e 67 74 68 20 74 68 65 6e 20 62 65 67 69 6e 0a 71 3a 3d   ┆; if p>alfalength then begin q:=┆
0x0612a0…0612c0             70 3b 20 20 70 3a 3d 61 6c 66 61 6c 65 6e 67 74 68 3b 0a 65 6e 64 3b 0a 66 6f 72 20 69 3a 3d 31   ┆p;  p:=alfalength; end; for i:=1┆
0x0612c0…0612e0             20 74 6f 20 70 20 64 6f 20 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 63 68 29 3b 0a 6e 61 5b 69 5d   ┆ to p do begin passin(ch); na[i]┆
0x0612e0…061300             3a 3d 63 68 72 28 63 68 29 3b 0a 65 6e 64 3b 0a 69 66 20 71 3e 30 20 74 68 65 6e 0a 66 6f 72 20   ┆:=chr(ch); end; if q>0 then for ┆
0x061300…061320             69 3a 3d 70 2b 31 20 74 6f 20 71 20 64 6f 20 70 61 73 73 69 6e 28 63 68 29 3b 0a 69 66 20 70 72   ┆i:=p+1 to q do passin(ch); if pr┆
0x061320…061340             65 66 69 78 65 64 5f 6e 61 6d 65 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 72 65 66 69 78 5f 6e 61   ┆efixed_name then begin prefix_na┆
0x061340…061360             6d 65 3a 3d 6e 61 3b 0a 70 72 65 66 69 78 65 64 5f 6e 61 6d 65 3a 3d 66 61 6c 73 65 3b 0a 65 6e   ┆me:=na; prefixed_name:=false; en┆
0x061360…061380             64 0a 65 6c 73 65 0a 65 78 74 5f 6e 61 6d 65 3a 3d 6e 61 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65   ┆d else ext_name:=na; end;  proce┆
0x061380…0613a0             64 75 72 65 20 6e 65 77 5f 62 6c 6f 63 6b 3b 0a 76 61 72 20 6f 70 3a 20 6f 75 74 5f 63 6f 64 65   ┆dure new_block; var op: out_code┆
0x0613a0…0613c0             3b 20 20 20 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 3a 20 69 6e 74 65 67 65 72 3b 0a 73   ┆;   parameter_length: integer; s┆
0x0613c0…0613e0             74 65 70 3a 20 69 6e 74 65 67 65 72 3b 0a 68 65 6c 70 5f 70 74 72 3a 20 73 74 61 63 6b 5f 70 74   ┆tep: integer; help_ptr: stack_pt┆
0x0613e0…061400             72 3b 20 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 69 29 3b 20 20 20 28 2a 73 6b 69 70 2a 29 0a   ┆r;  begin passin(i);   (*skip*) ┆
0x061400…061420 (25, 1, 14) 28 2a 20 66 69 6e 64 20 70 72 6f 63 2f 66 75 6e 63 20 65 6e 74 72 79 20 69 6e 20 73 74 61 63 6b   ┆(* find proc/func entry in stack┆
0x061420…061440             20 2a 29 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 73 74 61 63 6b 5f 74 6f 70 3b 0a 66 6f 72 20 73 74   ┆ *) help_ptr:= stack_top; for st┆
0x061440…061460             65 70 3a 3d 20 31 20 74 6f 20 70 61 72 61 6d 5f 6e 75 6d 62 65 72 20 64 6f 20 68 65 6c 70 5f 70   ┆ep:= 1 to param_number do help_p┆
0x061460…061480             74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b 0a 63 61 73 65   ┆tr:= help_ptr^.former_elem; case┆
0x061480…0614a0             20 6d 6f 64 65 20 6f 66 0a 70 72 6f 63 5f 6d 6f 64 65 2c 20 66 75 6e 63 5f 6d 6f 64 65 3a 20 62   ┆ mode of proc_mode, func_mode: b┆
0x0614a0…0614c0             65 67 69 6e 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 68 65 6c 70 5f 70 74 72 5e 2e 73 74   ┆egin with nametable(help_ptr^.st┆
0x0614c0…0614e0             61 63 6b 65 64 5f 76 61 6c 29 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 70 61 72 61 6d 5f 6c 69   ┆acked_val)^ do begin if param_li┆
0x0614e0…061500             73 74 20 74 68 65 6e 0a 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 3a 3d 61 6c 6c 6f 63 5f   ┆st then parameter_length:=alloc_┆
0x061500…061520             72 6f 75 74 69 6e 65 5f 70 61 72 61 6d 0a 65 6c 73 65 0a 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e   ┆routine_param else parameter_len┆
0x061520…061540             67 74 68 3a 3d 73 69 7a 65 3b 20 20 20 28 2a 20 72 6f 75 74 69 6e 65 20 70 72 65 76 69 6f 75 73   ┆gth:=size;   (* routine previous┆
0x061540…061560             20 64 65 66 69 6e 65 64 20 2a 29 0a 70 61 72 61 6d 5f 6c 69 73 74 3a 3d 74 72 75 65 3b 0a 69 66   ┆ defined *) param_list:=true; if┆
0x061560…061580             20 70 72 65 66 69 78 65 64 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 75 74 30 28 7a 6d 6f 64 75 6c   ┆ prefixed then begin put0(zmodul┆
0x061580…0615a0             65 29 3b 20 20 20 6f 75 74 5f 6e 61 6d 65 28 70 72 65 66 69 78 5f 6e 61 6d 65 29 3b 0a 70 75 74   ┆e);   out_name(prefix_name); put┆
0x0615a0…0615c0             5f 61 72 67 31 28 70 61 72 61 6d 5f 6e 75 6d 62 65 72 29 3b 0a 6f 75 74 5f 66 6f 72 6d 61 6c 5f   ┆_arg1(param_number); out_formal_┆
0x0615c0…0615e0             6c 69 73 74 3b 20 28 2a 20 70 6f 70 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29 0a 70   ┆list; (* pop parameter list *) p┆
0x0615e0…061600             72 65 66 69 78 65 64 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 20 20 0a 65 6c 73 65 0a 70 6f 70 5f 74   ┆refixed:=false; end   else pop_t┆
0x061600…061620 (25, 1, 15) 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 70 61 72 61 6d 5f 6e 75 6d 62 65 72 29 3b 0a 74 68 69 73   ┆o_free_stack(param_number); this┆
0x061620…061640             5f 6c 65 76 65 6c 5e 2e 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 3a 3d 70 61 72 61 6d 65   ┆_level^.parameter_length:=parame┆
0x061640…061660             74 65 72 5f 6c 65 6e 67 74 68 3b 0a 73 69 7a 65 3a 3d 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67   ┆ter_length; size:=parameter_leng┆
0x061660…061680             74 68 3b 0a 69 66 20 6d 6f 64 65 3d 70 72 6f 63 5f 6d 6f 64 65 20 74 68 65 6e 20 6f 70 3a 3d 7a   ┆th; if mode=proc_mode then op:=z┆
0x061680…0616a0             70 72 6f 63 20 65 6c 73 65 20 6f 70 3a 3d 7a 66 75 6e 63 3b 0a 70 75 74 31 28 6f 70 2c 6c 69 78   ┆proc else op:=zfunc; put1(op,lix┆
0x0616a0…0616c0             29 3b 0a 6f 75 74 5f 6e 61 6d 65 28 65 78 74 5f 6e 61 6d 65 29 3b 0a 70 75 74 31 28 7a 62 6c 6f   ┆); out_name(ext_name); put1(zblo┆
0x0616c0…0616e0             63 6b 2c 63 75 72 72 65 6e 74 5f 6e 69 76 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 70 72 6f 63 65   ┆ck,current_niv); end; end; proce┆
0x0616e0…061700             73 73 5f 6d 6f 64 65 3a 20 62 65 67 69 6e 0a 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 3a   ┆ss_mode: begin parameter_length:┆
0x061700…061720             3d 61 6c 6c 6f 63 5f 70 72 6f 63 65 73 73 5f 70 61 72 61 6d 3b 0a 77 69 74 68 20 6e 61 6d 65 74   ┆=alloc_process_param; with namet┆
0x061720…061740             61 62 6c 65 28 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 29 5e 20 64 6f 20   ┆able(help_ptr^.stacked_val)^ do ┆
0x061740…061760             62 65 67 69 6e 0a 70 75 74 31 28 7a 70 72 6f 63 65 73 73 2c 6f 66 66 73 65 74 29 3b 20 20 20 6f   ┆begin put1(zprocess,offset);   o┆
0x061760…061780             75 74 5f 6e 61 6d 65 28 65 78 74 5f 6e 61 6d 65 29 3b 0a 70 75 74 5f 61 72 67 32 28 70 61 72 61   ┆ut_name(ext_name); put_arg2(para┆
0x061780…0617a0             6d 65 74 65 72 5f 6c 65 6e 67 74 68 2c 70 61 72 61 6d 5f 6e 75 6d 62 65 72 29 3b 0a 65 6e 64 3b   ┆meter_length,param_number); end;┆
0x0617a0…0617c0             0a 6f 75 74 5f 66 6f 72 6d 61 6c 5f 6c 69 73 74 3b 20 28 2a 20 70 6f 70 20 70 61 72 61 6d 65 74   ┆ out_formal_list; (* pop paramet┆
0x0617c0…0617e0             65 72 20 6c 69 73 74 20 2a 29 0a 70 75 74 31 28 7a 62 6c 6f 63 6b 2c 20 30 29 3b 0a 65 6e 64 3b   ┆er list *) put1(zblock, 0); end;┆
0x0617e0…061800             0a 65 6e 64 3b 0a 74 68 69 73 5f 6c 65 76 65 6c 5e 2e 73 61 76 65 64 5f 6c 69 78 3a 3d 63 75 72   ┆ end; this_level^.saved_lix:=cur┆
0x061800…061820 (26, 0, 1)  72 65 6e 74 5f 6c 69 78 3b 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20   ┆rent_lix; pop_to_free_stack(1); ┆
0x061820…061840             28 2a 20 70 6f 70 20 70 72 6f 63 2f 66 75 6e 63 20 6e 61 6d 65 20 2a 29 20 20 20 70 61 72 61 6d   ┆(* pop proc/func name *)   param┆
0x061840…061860             5f 6e 75 6d 62 65 72 3a 3d 30 3b 0a 76 61 72 5f 6c 65 6e 67 74 68 3a 3d 30 3b 0a 65 6e 64 3b 0a   ┆_number:=0; var_length:=0; end; ┆
0x061860…061880             0a 70 72 6f 63 65 64 75 72 65 20 65 78 74 65 72 6e 61 6c 5f 3b 0a 76 61 72 20 6f 70 3a 20 6f 75   ┆ procedure external_; var op: ou┆
0x061880…0618a0             74 5f 63 6f 64 65 3b 20 20 6e 6f 74 5f 73 74 64 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 73 74 65 70 3a   ┆t_code;  not_std: boolean; step:┆
0x0618a0…0618c0             20 69 6e 74 65 67 65 72 3b 0a 68 65 6c 70 5f 70 74 72 3a 20 73 74 61 63 6b 5f 70 74 72 3b 0a 62   ┆ integer; help_ptr: stack_ptr; b┆
0x0618c0…0618e0             65 67 69 6e 0a 6e 6f 74 5f 73 74 64 3a 3d 74 72 75 65 3b 0a 28 2a 20 66 69 6e 64 20 70 72 6f 63   ┆egin not_std:=true; (* find proc┆
0x0618e0…061900             2f 66 75 6e 63 20 65 6e 74 72 79 20 69 6e 20 73 74 61 63 6b 20 2a 29 0a 68 65 6c 70 5f 70 74 72   ┆/func entry in stack *) help_ptr┆
0x061900…061920             3a 3d 20 73 74 61 63 6b 5f 74 6f 70 3b 20 0a 66 6f 72 20 73 74 65 70 3a 3d 20 31 20 74 6f 20 70   ┆:= stack_top;  for step:= 1 to p┆
0x061920…061940             61 72 61 6d 5f 6e 75 6d 62 65 72 20 64 6f 20 68 65 6c 70 5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70   ┆aram_number do help_ptr:= help_p┆
0x061940…061960             74 72 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b 0a 63 61 73 65 20 6d 6f 64 65 20 6f 66 0a 70 72   ┆tr^.former_elem; case mode of pr┆
0x061960…061980             6f 63 5f 6d 6f 64 65 2c 20 66 75 6e 63 5f 6d 6f 64 65 3a 0a 77 69 74 68 20 6e 61 6d 65 74 61 62   ┆oc_mode, func_mode: with nametab┆
0x061980…0619a0             6c 65 28 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 29 5e 20 64 6f 20 62 65   ┆le(help_ptr^.stacked_val)^ do be┆
0x0619a0…0619c0             67 69 6e 0a 6e 6f 74 5f 73 74 64 3a 3d 6e 69 76 3e 3d 30 3b 0a 73 69 7a 65 3a 3d 61 6c 6c 6f 63   ┆gin not_std:=niv>=0; size:=alloc┆
0x0619c0…0619e0             5f 72 6f 75 74 69 6e 65 5f 70 61 72 61 6d 3b 0a 69 66 20 6e 6f 74 5f 73 74 64 20 74 68 65 6e 20   ┆_routine_param; if not_std then ┆
0x0619e0…061a00             62 65 67 69 6e 0a 6e 69 76 3a 3d 2d 31 3b 0a 69 66 20 6d 6f 64 65 3d 70 72 6f 63 5f 6d 6f 64 65   ┆begin niv:=-1; if mode=proc_mode┆
0x061a00…061a20 (26, 0, 2)  20 74 68 65 6e 20 6f 70 3a 3d 7a 65 78 74 70 72 6f 63 20 65 6c 73 65 20 6f 70 3a 3d 7a 65 78 74   ┆ then op:=zextproc else op:=zext┆
0x061a20…061a40             66 75 6e 63 3b 0a 70 75 74 31 28 6f 70 2c 20 6e 61 6d 65 5f 6b 65 79 29 3b 20 20 20 6f 75 74 5f   ┆func; put1(op, name_key);   out_┆
0x061a40…061a60             6e 61 6d 65 28 65 78 74 5f 6e 61 6d 65 29 3b 0a 6f 66 66 73 65 74 3a 3d 6e 61 6d 65 5f 6b 65 79   ┆name(ext_name); offset:=name_key┆
0x061a60…061a80             3b 0a 6e 61 6d 65 5f 6b 65 79 3a 3d 6e 61 6d 65 5f 6b 65 79 2b 31 3b 0a 65 6e 64 3b 0a 65 6e 64   ┆; name_key:=name_key+1; end; end┆
0x061a80…061aa0             3b 0a 70 72 6f 63 65 73 73 5f 6d 6f 64 65 3a 20 20 0a 69 66 20 70 72 65 6c 75 64 65 20 74 68 65   ┆; process_mode:   if prelude the┆
0x061aa0…061ac0             6e 20 65 72 72 6f 72 28 70 72 65 6c 75 64 65 5f 65 72 72 6f 72 29 0a 65 6c 73 65 0a 77 69 74 68   ┆n error(prelude_error) else with┆
0x061ac0…061ae0             20 6e 61 6d 65 74 61 62 6c 65 28 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c   ┆ nametable(help_ptr^.stacked_val┆
0x061ae0…061b00             29 5e 20 64 6f 0a 69 66 20 76 65 72 73 69 6f 6e 7a 38 30 20 6f 72 20 6c 61 6d 62 64 61 76 65 72   ┆)^ do if versionz80 or lambdaver┆
0x061b00…061b20             73 69 6f 6e 20 28 2a 20 66 6f 72 20 7a 38 30 20 6f 72 20 52 43 33 35 30 32 20 6d 6f 64 65 6c 20   ┆sion (* for z80 or RC3502 model ┆
0x061b20…061b40             31 20 2a 29 20 74 68 65 6e 0a 62 65 67 69 6e 20 70 75 74 31 28 7a 65 78 74 70 72 6f 63 65 73 73   ┆1 *) then begin put1(zextprocess┆
0x061b40…061b60             2c 6f 66 66 73 65 74 29 3b 20 20 6f 75 74 5f 6e 61 6d 65 28 65 78 74 5f 6e 61 6d 65 29 3b 20 65   ┆,offset);  out_name(ext_name); e┆
0x061b60…061b80             6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 70 75 74 31 28 7a 73 79 73 69 6e 69 74 2c 20 6f 66 66   ┆nd else begin put1(zsysinit, off┆
0x061b80…061ba0             73 65 74 29 3b 0a 70 75 74 30 28 7a 65 78 74 70 72 6f 63 65 73 73 29 3b 0a 65 6e 64 3b 0a 65 6e   ┆set); put0(zextprocess); end; en┆
0x061ba0…061bc0             64 3b 0a 69 66 20 6e 6f 74 5f 73 74 64 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 75 74 5f 61 72 67   ┆d; if not_std then begin put_arg┆
0x061bc0…061be0             31 28 70 61 72 61 6d 5f 6e 75 6d 62 65 72 29 3b 20 20 20 6f 75 74 5f 66 6f 72 6d 61 6c 5f 6c 69   ┆1(param_number);   out_formal_li┆
0x061be0…061c00             73 74 3b 20 28 2a 20 70 6f 70 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29 0a 65 6e 64   ┆st; (* pop parameter list *) end┆
0x061c00…061c20 (26, 0, 3)  20 0a 65 6c 73 65 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 70 61 72 61 6d 5f 6e   ┆  else pop_to_free_stack(param_n┆
0x061c20…061c40             75 6d 62 65 72 29 3b 0a 74 68 69 73 5f 6c 65 76 65 6c 5e 2e 73 61 76 65 64 5f 6c 69 78 3a 3d 63   ┆umber); this_level^.saved_lix:=c┆
0x061c40…061c60             75 72 72 65 6e 74 5f 6c 69 78 3b 0a 70 6f 70 5f 6c 65 76 65 6c 3b 0a 70 6f 70 5f 74 6f 5f 66 72   ┆urrent_lix; pop_level; pop_to_fr┆
0x061c60…061c80             65 65 5f 73 74 61 63 6b 28 31 29 3b 20 28 2a 20 70 6f 70 20 70 72 6f 63 20 2f 20 66 75 6e 63 20   ┆ee_stack(1); (* pop proc / func ┆
0x061c80…061ca0             6e 61 6d 65 20 2a 29 0a 70 61 72 61 6d 5f 6e 75 6d 62 65 72 3a 3d 30 3b 0a 65 6e 64 3b 0a 0a 70   ┆name *) param_number:=0; end;  p┆
0x061ca0…061cc0             72 6f 63 65 64 75 72 65 20 66 6f 72 77 61 72 64 5f 3b 0a 76 61 72 20 73 74 65 70 3a 20 69 6e 74   ┆rocedure forward_; var step: int┆
0x061cc0…061ce0             65 67 65 72 3b 0a 68 65 6c 70 5f 70 74 72 3a 20 73 74 61 63 6b 5f 70 74 72 3b 0a 62 65 67 69 6e   ┆eger; help_ptr: stack_ptr; begin┆
0x061ce0…061d00             0a 28 2a 20 66 69 6e 64 20 70 72 6f 63 2f 66 75 6e 63 20 65 6e 74 72 79 20 69 6e 20 73 74 61 63   ┆ (* find proc/func entry in stac┆
0x061d00…061d20             6b 20 2a 29 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 73 74 61 63 6b 5f 74 6f 70 3b 20 0a 66 6f 72 20   ┆k *) help_ptr:= stack_top;  for ┆
0x061d20…061d40             73 74 65 70 3a 3d 20 31 20 74 6f 20 70 61 72 61 6d 5f 6e 75 6d 62 65 72 20 64 6f 20 68 65 6c 70   ┆step:= 1 to param_number do help┆
0x061d40…061d60             5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b 0a 77 69   ┆_ptr:= help_ptr^.former_elem; wi┆
0x061d60…061d80             74 68 20 6e 61 6d 65 74 61 62 6c 65 28 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76   ┆th nametable(help_ptr^.stacked_v┆
0x061d80…061da0             61 6c 29 5e 20 64 6f 0a 73 69 7a 65 3a 3d 61 6c 6c 6f 63 5f 72 6f 75 74 69 6e 65 5f 70 61 72 61   ┆al)^ do size:=alloc_routine_para┆
0x061da0…061dc0             6d 3b 0a 74 68 69 73 5f 6c 65 76 65 6c 5e 2e 73 61 76 65 64 5f 6c 69 78 3a 3d 63 75 72 72 65 6e   ┆m; this_level^.saved_lix:=curren┆
0x061dc0…061de0             74 5f 6c 69 78 3b 0a 70 6f 70 5f 6c 65 76 65 6c 3b 20 20 20 0a 70 6f 70 5f 74 6f 5f 66 72 65 65   ┆t_lix; pop_level;    pop_to_free┆
0x061de0…061e00             5f 73 74 61 63 6b 28 70 61 72 61 6d 5f 6e 75 6d 62 65 72 2b 31 29 3b 20 20 20 20 70 61 72 61 6d   ┆_stack(param_number+1);    param┆
0x061e00…061e20 (26, 0, 4)  5f 6e 75 6d 62 65 72 3a 3d 30 3b 0a 69 64 63 6f 75 6e 74 3a 3d 30 3b 0a 65 6e 64 3b 0a 0a 70 72   ┆_number:=0; idcount:=0; end;  pr┆
0x061e20…061e40             6f 63 65 64 75 72 65 20 70 72 65 76 69 6f 75 73 5f 66 6f 72 77 61 72 64 28 6d 3a 20 62 6c 6f 63   ┆ocedure previous_forward(m: bloc┆
0x061e40…061e60             6b 5f 6d 6f 64 65 29 3b 0a 62 65 67 69 6e 0a 70 75 73 68 5f 6c 65 76 65 6c 28 6d 29 3b 0a 70 61   ┆k_mode); begin push_level(m); pa┆
0x061e60…061e80             72 61 6d 5f 6e 75 6d 62 65 72 3a 3d 30 3b 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 70   ┆ram_number:=0; push_name(nix); p┆
0x061e80…061ea0             61 72 61 6d 5f 6c 69 73 74 3a 3d 66 61 6c 73 65 3b 0a 68 65 61 64 5f 6c 69 6e 65 3a 3d 73 6f 75   ┆aram_list:=false; head_line:=sou┆
0x061ea0…061ec0             72 63 65 5f 6c 69 6e 65 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 62 6c   ┆rce_line; end;  procedure end_bl┆
0x061ec0…061ee0             6f 63 6b 3b 0a 76 61 72 20 6c 2c 69 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66 20   ┆ock; var l,i: integer; begin if ┆
0x061ee0…061f00             6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 20 74 68 65 6e 0a 76 61 72 5f 6c 65 6e 67 74 68 3a 3d 76   ┆lambdaversion then var_length:=v┆
0x061f00…061f20             61 72 5f 6c 65 6e 67 74 68 2b 31 3b 0a 69 66 20 6d 6f 64 65 20 3d 20 70 72 6f 63 65 73 73 5f 6d   ┆ar_length+1; if mode = process_m┆
0x061f20…061f40             6f 64 65 20 74 68 65 6e 0a 76 61 72 5f 6c 65 6e 67 74 68 3a 3d 76 61 72 5f 6c 65 6e 67 74 68 20   ┆ode then var_length:=var_length ┆
0x061f40…061f60             2d 20 74 68 69 73 5f 6c 65 76 65 6c 5e 2e 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 0a 65   ┆- this_level^.parameter_length e┆
0x061f60…061f80             6c 73 65 0a 76 61 72 5f 6c 65 6e 67 74 68 3a 3d 76 61 72 5f 6c 65 6e 67 74 68 20 2d 20 61 63 74   ┆lse var_length:=var_length - act┆
0x061f80…061fa0             69 76 61 74 69 6f 6e 5f 72 65 63 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 69 66 20 6f 64 64 28 76 61   ┆ivation_record_length; if odd(va┆
0x061fa0…061fc0             72 5f 6c 65 6e 67 74 68 29 20 74 68 65 6e 20 76 61 72 5f 6c 65 6e 67 74 68 3a 3d 76 61 72 5f 6c   ┆r_length) then var_length:=var_l┆
0x061fc0…061fe0             65 6e 67 74 68 2b 31 3b 0a 70 75 74 32 28 7a 6c 65 6e 67 74 68 2c 76 61 72 5f 6c 65 6e 67 74 68   ┆ength+1; put2(zlength,var_length┆
0x061fe0…062000             2c 20 74 68 69 73 5f 6c 65 76 65 6c 5e 2e 70 61 72 61 6d 65 74 65 72 5f 6c 65 6e 67 74 68 29 3b   ┆, this_level^.parameter_length);┆
0x062000…062020 (26, 0, 5)  0a 6f 75 74 5f 63 6f 6e 73 74 61 6e 74 5f 61 72 65 61 3b 0a 6c 3a 3d 63 75 72 72 65 6e 74 5f 6c   ┆ out_constant_area; l:=current_l┆
0x062020…062040             69 78 20 2d 20 31 3b 0a 69 66 20 6c 20 3e 20 74 6f 70 5f 6c 69 78 20 74 68 65 6e 20 74 6f 70 5f   ┆ix - 1; if l > top_lix then top_┆
0x062040…062060             6c 69 78 3a 3d 6c 3b 0a 70 6f 70 5f 6c 65 76 65 6c 3b 0a 69 66 20 74 68 69 73 5f 6c 65 76 65 6c   ┆lix:=l; pop_level; if this_level┆
0x062060…062080             3d 62 6f 74 74 6f 6d 5f 6c 65 76 65 6c 20 74 68 65 6e 20 62 65 67 69 6e 0a 6f 75 74 5f 63 6f 6e   ┆=bottom_level then begin out_con┆
0x062080…0620a0             73 74 61 6e 74 5f 61 72 65 61 3b 0a 69 66 20 28 6f 74 3c 3e 65 6d 70 74 79 5f 73 74 61 63 6b 29   ┆stant_area; if (ot<>empty_stack)┆
0x0620a0…0620c0             20 6f 72 20 28 73 74 61 63 6b 5f 74 6f 70 3c 3e 6e 69 6c 29 20 6f 72 20 28 73 73 3c 3e 73 74 72   ┆ or (stack_top<>nil) or (ss<>str┆
0x0620c0…0620e0             75 63 5f 62 6f 74 74 6f 6d 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6f 74 20 3c 3e 20 65   ┆uc_bottom) then begin if ot <> e┆
0x0620e0…062100             6d 70 74 79 5f 73 74 61 63 6b 20 74 68 65 6e 20 77 72 69 74 65 6c 6e 28 27 20 6e 6f 74 20 65 6d   ┆mpty_stack then writeln(' not em┆
0x062100…062120             70 74 79 20 73 74 61 63 6b 27 29 3b 0a 69 66 20 73 74 61 63 6b 5f 74 6f 70 20 3c 3e 20 6e 69 6c   ┆pty stack'); if stack_top <> nil┆
0x062120…062140             20 74 68 65 6e 20 77 72 69 74 65 6c 6e 28 27 20 6e 6f 74 20 6e 69 6c 20 73 74 61 63 6b 27 29 3b   ┆ then writeln(' not nil stack');┆
0x062140…062160             0a 69 66 20 73 73 20 3c 3e 20 73 74 72 75 63 5f 62 6f 74 74 6f 6d 20 74 68 65 6e 20 77 72 69 74   ┆ if ss <> struc_bottom then writ┆
0x062160…062180             65 6c 6e 28 27 20 6e 6f 74 20 73 74 72 75 63 74 75 72 65 20 62 6f 74 74 6f 6d 27 29 3b 0a 61 62   ┆eln(' not structure bottom'); ab┆
0x062180…0621a0             6f 72 74 28 73 74 61 63 6b 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 66 6f 72 20 69 3a 3d 30 20   ┆ort(stack_error); end; for i:=0 ┆
0x0621a0…0621c0             74 6f 20 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 20 64 6f 0a 77 69 74 68 20 6e 61 6d 65 74 61   ┆to max_name_index do with nameta┆
0x0621c0…0621e0             62 6c 65 28 69 29 5e 20 64 6f 0a 69 66 20 6c 69 78 20 3e 20 30 20 74 68 65 6e 0a 6c 69 78 3a 3d   ┆ble(i)^ do if lix > 0 then lix:=┆
0x0621e0…062200             2d 6c 69 78 3b 20 28 2a 6d 61 72 6b 20 74 68 65 20 6e 61 6d 65 20 61 73 20 75 6e 75 73 65 64 20   ┆-lix; (*mark the name as unused ┆
0x062200…062220 (26, 0, 6)  2a 29 0a 65 6e 64 3b 0a 70 75 74 32 28 7a 65 6e 64 62 6c 6f 63 6b 2c 20 63 75 72 72 65 6e 74 5f   ┆*) end; put2(zendblock, current_┆
0x062220…062240             6c 69 78 2c 20 6c 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 62 65 67 69 6e 5f 63   ┆lix, l); end;  procedure begin_c┆
0x062240…062260             6f 64 65 3b 0a 62 65 67 69 6e 0a 69 66 20 6f 74 5e 2e 63 6f 6e 74 65 78 74 20 3c 3e 20 73 63 6f   ┆ode; begin if ot^.context <> sco┆
0x062260…062280             6e 73 74 20 74 68 65 6e 20 65 72 72 6f 72 28 76 61 72 5f 65 72 72 6f 72 29 3b 0a 70 75 74 31 28   ┆nst then error(var_error); put1(┆
0x062280…0622a0             7a 62 65 67 69 6e 63 6f 64 65 2c 6f 74 5e 2e 6f 66 66 73 65 74 29 3b 0a 70 6f 70 3b 0a 65 6e 64   ┆zbegincode,ot^.offset); pop; end┆
0x0622a0…0622c0             3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 5f 6c 69 6e 65 3b 0a 76 61 72 20 69 2c 6e 6f   ┆;  procedure code_line; var i,no┆
0x0622c0…0622e0             2c 63 68 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 6e 6f 29 3b 0a   ┆,ch: integer; begin passin(no); ┆
0x0622e0…062300             70 75 74 31 28 7a 63 6f 64 65 6c 69 6e 65 2c 6e 6f 29 3b 0a 66 6f 72 20 69 3a 3d 31 20 74 6f 20   ┆put1(zcodeline,no); for i:=1 to ┆
0x062300…062320             6e 6f 20 64 6f 20 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 63 68 29 3b 0a 70 75 74 5f 61 72 67 31   ┆no do begin passin(ch); put_arg1┆
0x062320…062340             28 63 68 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 69 74 5f   ┆(ch); end; end;  procedure init_┆
0x062340…062360             76 61 6c 75 65 73 28 6e 69 78 2c 76 6e 69 76 2c 76 6f 66 66 73 65 74 3a 20 69 6e 74 65 67 65 72   ┆values(nix,vniv,voffset: integer┆
0x062360…062380             29 3b 0a 76 61 72 20 76 61 72 76 61 6c 75 65 2c 74 79 70 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65   ┆); var varvalue,typ: integer; be┆
0x062380…0623a0             67 69 6e 0a 69 66 20 70 72 65 6c 75 64 65 20 74 68 65 6e 20 65 72 72 6f 72 28 70 72 65 6c 75 64   ┆gin if prelude then error(prelud┆
0x0623a0…0623c0             65 5f 65 72 72 6f 72 29 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 69 66 20 63 6f 6e 74 65 78 74   ┆e_error); with ot^ do if context┆
0x0623c0…0623e0             3d 73 74 72 75 63 5f 63 20 74 68 65 6e 20 63 6f 6e 74 65 78 74 3a 3d 6c 63 6f 6e 73 74 3b 0a 77   ┆=struc_c then context:=lconst; w┆
0x0623e0…062400             69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 0a 69 66 20 63 6f 6e 74 65 78   ┆ith nametable(nix)^ do if contex┆
0x062400…062420 (26, 0, 7)  74 20 69 6e 20 73 69 6d 70 6c 65 5f 74 79 70 65 73 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20   ┆t in simple_types then begin if ┆
0x062420…062440             6f 74 5e 2e 63 6f 6e 74 65 78 74 3c 3e 73 63 6f 6e 73 74 20 74 68 65 6e 0a 65 72 72 6f 72 28 76   ┆ot^.context<>sconst then error(v┆
0x062440…062460             61 72 5f 65 72 72 6f 72 29 20 65 6c 73 65 0a 62 65 67 69 6e 0a 76 61 72 76 61 6c 75 65 3a 3d 6f   ┆ar_error) else begin varvalue:=o┆
0x062460…062480             74 5e 2e 6f 66 66 73 65 74 3b 0a 69 66 20 28 76 61 72 76 61 6c 75 65 3c 6d 69 6e 29 20 6f 72 20   ┆t^.offset; if (varvalue<min) or ┆
0x062480…0624a0             28 76 61 72 76 61 6c 75 65 3e 6d 61 78 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 74 79 70 65 5f 65   ┆(varvalue>max) then error(type_e┆
0x0624a0…0624c0             72 72 6f 72 29 20 65 6c 73 65 0a 62 65 67 69 6e 0a 70 75 74 30 28 7a 69 6e 69 74 69 61 6c 69 7a   ┆rror) else begin put0(zinitializ┆
0x0624c0…0624e0             65 29 3b 20 20 70 75 74 32 28 7a 61 64 64 72 2c 76 6e 69 76 2c 76 6f 66 66 73 65 74 29 3b 0a 69   ┆e);  put2(zaddr,vniv,voffset); i┆
0x0624e0…062500             66 20 63 6f 6e 74 65 78 74 3d 62 6f 6f 6c 5f 74 79 70 65 20 74 68 65 6e 20 74 79 70 3a 3d 62 6f   ┆f context=bool_type then typ:=bo┆
0x062500…062520             6f 6c 5f 74 79 70 0a 65 6c 73 65 20 69 66 20 73 69 7a 65 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 20   ┆ol_typ else if size=word_length ┆
0x062520…062540             74 68 65 6e 20 74 79 70 3a 3d 69 6e 74 5f 74 79 70 0a 65 6c 73 65 20 74 79 70 3a 3d 73 63 61 6c   ┆then typ:=int_typ else typ:=scal┆
0x062540…062560             61 72 5f 74 79 70 3b 0a 70 75 74 32 28 7a 73 69 6d 70 6c 65 69 6e 69 74 2c 74 79 70 2c 76 61 72   ┆ar_typ; put2(zsimpleinit,typ,var┆
0x062560…062580             76 61 6c 75 65 29 3b 0a 65 6e 64 0a 65 6e 64 3b 0a 65 6e 64 20 65 6c 73 65 20 0a 69 66 20 6f 74   ┆value); end end; end else  if ot┆
0x062580…0625a0             5e 2e 63 6f 6e 74 65 78 74 3d 6c 63 6f 6e 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 28 2a 69 66   ┆^.context=lconst then begin (*if┆
0x0625a0…0625c0             20 6f 74 5e 2e 6e 69 76 3c 30 20 74 68 65 6e 20 2a 29 20 63 6f 6e 73 74 61 6e 74 5f 75 73 65 64   ┆ ot^.niv<0 then *) constant_used┆
0x0625c0…0625e0             28 6f 74 29 3b 0a 69 66 20 6f 74 5e 2e 6b 69 6e 64 20 3d 20 61 72 72 61 79 5f 74 79 70 65 20 74   ┆(ot); if ot^.kind = array_type t┆
0x0625e0…062600             68 65 6e 20 62 65 67 69 6e 0a 70 75 73 68 3b 0a 6f 74 5e 2e 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a   ┆hen begin push; ot^.size:=size; ┆
0x062600…062620 (26, 0, 8)  61 64 6a 75 73 74 5f 73 74 72 69 6e 67 28 6f 73 2c 20 6f 74 29 3b 0a 70 6f 70 3b 0a 65 6e 64 3b   ┆adjust_string(os, ot); pop; end;┆
0x062620…062640             0a 70 75 74 30 28 7a 69 6e 69 74 69 61 6c 69 7a 65 29 3b 20 20 20 70 75 74 32 28 7a 61 64 64 72   ┆ put0(zinitialize);   put2(zaddr┆
0x062640…062660             2c 76 6e 69 76 2c 76 6f 66 66 73 65 74 29 3b 0a 70 75 74 32 28 7a 73 74 72 75 63 69 6e 69 74 2c   ┆,vniv,voffset); put2(zstrucinit,┆
0x062660…062680             73 69 7a 65 2c 6f 74 5e 2e 6e 69 76 29 3b 0a 65 6e 64 20 65 6c 73 65 0a 69 66 20 6f 74 5e 2e 63   ┆size,ot^.niv); end else if ot^.c┆
0x062680…0626a0             6f 6e 74 65 78 74 3d 73 65 74 5f 63 6f 6e 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 28 2a 69 66   ┆ontext=set_const then begin (*if┆
0x0626a0…0626c0             20 6f 74 5e 2e 6e 69 76 3c 30 20 74 68 65 6e 20 2a 29 20 63 6f 6e 73 74 61 6e 74 5f 75 73 65 64   ┆ ot^.niv<0 then *) constant_used┆
0x0626c0…0626e0             28 6f 74 29 3b 0a 70 75 74 30 28 7a 69 6e 69 74 69 61 6c 69 7a 65 29 3b 20 20 70 75 74 32 28 7a   ┆(ot); put0(zinitialize);  put2(z┆
0x0626e0…062700             61 64 64 72 2c 76 6e 69 76 2c 76 6f 66 66 73 65 74 29 3b 0a 70 75 74 33 28 7a 73 65 74 69 6e 69   ┆addr,vniv,voffset); put3(zsetini┆
0x062700…062720             74 2c 73 69 7a 65 2c 6f 74 5e 2e 6e 69 76 2c 6f 74 5e 2e 73 69 7a 65 29 3b 0a 65 6e 64 0a 65 6c   ┆t,size,ot^.niv,ot^.size); end el┆
0x062720…062740             73 65 20 65 72 72 6f 72 28 76 61 72 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65   ┆se error(var_error); end;  proce┆
0x062740…062760             64 75 72 65 20 63 6f 6d 70 6f 6e 65 6e 74 5f 69 6e 69 74 28 74 79 70 65 5f 6e 69 78 3a 20 69 6e   ┆dure component_init(type_nix: in┆
0x062760…062780             74 65 67 65 72 29 3b 0a 76 61 72 20 66 69 65 6c 64 5f 6e 69 78 2c 20 77 5f 6f 66 66 73 65 74 2c   ┆teger); var field_nix, w_offset,┆
0x062780…0627a0             20 73 2c 20 73 74 65 70 2c 20 70 61 72 61 6d 5f 63 68 61 69 6e 3a 20 69 6e 74 65 67 65 72 3b 0a   ┆ s, step, param_chain: integer; ┆
0x0627a0…0627c0             62 65 67 69 6e 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 74 79 70 65 5f 6e 69 78 29 5e 20   ┆begin with nametable(type_nix)^ ┆
0x0627c0…0627e0             64 6f 0a 69 66 20 28 63 6f 6e 74 65 78 74 20 3d 20 73 79 73 5f 72 65 63 6f 72 64 5f 74 79 70 65   ┆do if (context = sys_record_type┆
0x0627e0…062800             29 20 6f 72 20 28 63 6f 6e 74 65 78 74 20 3d 20 61 6c 6c 69 67 6e 5f 72 65 63 5f 74 79 70 65 29   ┆) or (context = allign_rec_type)┆
0x062800…062820 (26, 0, 9)  0a 74 68 65 6e 20 62 65 67 69 6e 0a 66 69 65 6c 64 5f 6e 69 78 3a 3d 6e 65 78 74 5f 63 6f 6d 70   ┆ then begin field_nix:=next_comp┆
0x062820…062840             3b 0a 77 68 69 6c 65 20 66 69 65 6c 64 5f 6e 69 78 20 3c 3e 20 30 20 64 6f 0a 77 69 74 68 20 6e   ┆; while field_nix <> 0 do with n┆
0x062840…062860             61 6d 65 74 61 62 6c 65 28 66 69 65 6c 64 5f 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66   ┆ametable(field_nix)^ do begin if┆
0x062860…062880             20 63 6f 6e 74 65 78 74 20 3d 20 66 69 65 6c 64 20 74 68 65 6e 0a 70 75 74 31 28 7a 66 69 65 6c   ┆ context = field then put1(zfiel┆
0x062880…0628a0             64 69 6e 69 74 2c 20 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 70 75 74 32 28 7a 64 79 6e 66 69 65   ┆dinit, offset) else put2(zdynfie┆
0x0628a0…0628c0             6c 64 69 6e 69 74 2c 20 6e 69 76 2c 20 6f 66 66 73 65 74 29 3b 0a 63 6f 6d 70 6f 6e 65 6e 74 5f   ┆ldinit, niv, offset); component_┆
0x0628c0…0628e0             69 6e 69 74 28 63 6f 6d 70 5f 74 79 70 65 29 3b 0a 66 69 65 6c 64 5f 6e 69 78 3a 3d 6e 65 78 74   ┆init(comp_type); field_nix:=next┆
0x0628e0…062900             5f 63 6f 6d 70 3b 0a 65 6e 64 3b 20 28 2a 77 69 74 68 2a 29 0a 70 75 74 30 28 7a 65 6e 64 69 6e   ┆_comp; end; (*with*) put0(zendin┆
0x062900…062920             69 74 66 69 65 6c 64 73 29 3b 0a 65 6e 64 20 20 28 2a 72 65 63 6f 72 64 2a 29 0a 65 6c 73 65 0a   ┆itfields); end  (*record*) else ┆
0x062920…062940             69 66 20 28 63 6f 6e 74 65 78 74 20 3d 20 73 79 73 5f 61 72 72 61 79 5f 74 79 70 65 29 20 6f 72   ┆if (context = sys_array_type) or┆
0x062940…062960             20 28 63 6f 6e 74 65 78 74 20 3d 20 61 6c 6c 69 67 6e 5f 61 72 72 5f 74 79 70 65 29 0a 74 68 65   ┆ (context = allign_arr_type) the┆
0x062960…062980             6e 20 62 65 67 69 6e 0a 77 5f 6f 66 66 73 65 74 3a 3d 61 6c 6c 6f 63 5f 74 65 6d 70 28 77 6f 72   ┆n begin w_offset:=alloc_temp(wor┆
0x062980…0629a0             64 5f 6c 65 6e 67 74 68 29 3b 0a 73 3a 3d 6e 61 6d 65 74 61 62 6c 65 28 6e 65 78 74 5f 63 6f 6d   ┆d_length); s:=nametable(next_com┆
0x0629a0…0629c0             70 29 5e 2e 73 69 7a 65 3b 0a 69 66 20 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35   ┆p)^.size; if (* **lambda or rc35┆
0x0629c0…0629e0             30 32 63 2a 2a 20 2a 29 20 6e 6f 74 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 69 66 20   ┆02c** *) not versionz80 then if ┆
0x0629e0…062a00             28 63 6f 6e 74 65 78 74 20 3d 20 61 6c 6c 69 67 6e 5f 61 72 72 5f 74 79 70 65 29 20 61 6e 64 20   ┆(context = allign_arr_type) and ┆
0x062a00…062a20 (26, 0, 10) 6f 64 64 28 73 29 20 74 68 65 6e 20 73 3a 3d 20 73 2b 20 31 3b 0a 69 66 20 64 79 6e 61 6d 69 63   ┆odd(s) then s:= s+ 1; if dynamic┆
0x062a20…062a40             20 74 68 65 6e 0a 70 75 74 33 28 7a 61 72 72 61 79 64 79 6e 69 6e 69 74 2c 20 77 5f 6f 66 66 73   ┆ then put3(zarraydyninit, w_offs┆
0x062a40…062a60             65 74 2c 20 6e 69 76 2c 20 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 70 75 74 34 28 7a 61 72 72 61   ┆et, niv, offset) else put4(zarra┆
0x062a60…062a80             79 69 6e 69 74 2c 20 77 5f 6f 66 66 73 65 74 2c 20 6d 69 6e 2c 20 6d 61 78 2c 20 73 29 3b 0a 63   ┆yinit, w_offset, min, max, s); c┆
0x062a80…062aa0             6f 6d 70 6f 6e 65 6e 74 5f 69 6e 69 74 28 6e 65 78 74 5f 63 6f 6d 70 29 3b 0a 72 65 6c 65 61 73   ┆omponent_init(next_comp); releas┆
0x062aa0…062ac0             65 5f 74 65 6d 70 28 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 65 6e 64 20 28 2a 61 72 72 61 79   ┆e_temp(word_length); end (*array┆
0x062ac0…062ae0             2a 29 0a 65 6c 73 65 0a 69 66 20 63 6f 6e 74 65 78 74 20 3d 20 70 6f 6f 6c 5f 74 79 70 65 20 74   ┆*) else if context = pool_type t┆
0x062ae0…062b00             68 65 6e 0a 70 75 74 32 28 7a 70 6f 6f 6c 69 6e 69 74 2c 20 6d 69 6e 2c 20 6d 61 78 29 0a 65 6c   ┆hen put2(zpoolinit, min, max) el┆
0x062b00…062b20             73 65 0a 69 66 20 63 6f 6e 74 65 78 74 3d 70 72 6f 63 65 73 73 5f 74 79 70 65 20 74 68 65 6e 0a   ┆se if context=process_type then ┆
0x062b20…062b40             62 65 67 69 6e 0a 70 75 74 31 28 7a 65 78 74 70 72 6f 63 65 73 73 2c 20 6d 61 78 20 28 2a 20 70   ┆begin put1(zextprocess, max (* p┆
0x062b40…062b60             61 72 61 6d 20 6e 75 6d 62 65 72 20 2a 29 29 3b 0a 70 61 72 61 6d 5f 63 68 61 69 6e 3a 3d 20 6e   ┆aram number *)); param_chain:= n┆
0x062b60…062b80             65 78 74 5f 63 6f 6d 70 3b 0a 66 6f 72 20 73 74 65 70 3a 3d 20 31 20 74 6f 20 6d 61 78 20 28 2a   ┆ext_comp; for step:= 1 to max (*┆
0x062b80…062ba0             20 70 61 72 61 6d 20 6e 75 6d 62 65 72 20 2a 29 20 64 6f 0a 77 69 74 68 20 6e 61 6d 65 74 61 62   ┆ param number *) do with nametab┆
0x062ba0…062bc0             6c 65 28 20 70 61 72 61 6d 5f 63 68 61 69 6e 20 29 5e 20 64 6f 0a 62 65 67 69 6e 0a 70 75 74 32   ┆le( param_chain )^ do begin put2┆
0x062bc0…062be0             28 7a 70 61 72 61 6d 74 79 70 65 2c 20 6d 69 6e 20 28 2a 20 74 79 70 65 5f 70 20 6f 66 20 70 61   ┆(zparamtype, min (* type_p of pa┆
0x062be0…062c00             72 61 6d 20 2a 29 2c 20 73 69 7a 65 29 3b 0a 70 61 72 61 6d 5f 63 68 61 69 6e 3a 3d 20 6e 65 78   ┆ram *), size); param_chain:= nex┆
0x062c00…062c20 (26, 0, 11) 74 5f 63 6f 6d 70 3b 0a 65 6e 64 3b 20 28 2a 20 66 6f 72 20 2e 2e 20 77 69 74 68 20 2a 29 0a 65   ┆t_comp; end; (* for .. with *) e┆
0x062c20…062c40             6e 64 20 28 2a 20 70 72 6f 63 65 73 73 20 74 79 70 65 20 2a 29 0a 65 6c 73 65 0a 69 66 20 28 2a   ┆nd (* process type *) else if (*┆
0x062c40…062c60             20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 63 6f 6d 70   ┆ **z80** *) versionz80 then comp┆
0x062c60…062c80             69 6c 65 72 5f 65 72 72 6f 72 28 61 64 64 72 5f 65 72 72 6f 72 29 0a 65 6c 73 65 0a 28 2a 20 2a   ┆iler_error(addr_error) else (* *┆
0x062c80…062ca0             2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 70 75 74 31 28 7a 76 61   ┆*lambda or rc3502c** *) put1(zva┆
0x062ca0…062cc0             72 69 6e 69 74 2c 20 74 79 70 65 5f 6f 28 63 6f 6e 74 65 78 74 29 29 3b 0a 65 6e 64 3b 20 28 2a   ┆rinit, type_o(context)); end; (*┆
0x062cc0…062ce0             63 6f 6d 70 6f 6e 65 6e 74 20 69 6e 69 74 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 79 73 74   ┆component init*)  procedure syst┆
0x062ce0…062d00             65 6d 5f 69 6e 69 74 28 74 79 70 65 5f 6e 69 78 2c 20 76 6f 66 66 73 65 74 3a 20 69 6e 74 65 67   ┆em_init(type_nix, voffset: integ┆
0x062d00…062d20             65 72 29 3b 0a 62 65 67 69 6e 0a 69 66 20 6e 65 77 5f 63 61 6c 6c 20 74 68 65 6e 0a 70 75 74 30   ┆er); begin if new_call then put0┆
0x062d20…062d40             28 7a 73 79 73 6e 65 77 69 6e 69 74 29 0a 65 6c 73 65 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c   ┆(zsysnewinit) else with nametabl┆
0x062d40…062d60             65 28 74 79 70 65 5f 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 64 79 6e 61 6d 69 63   ┆e(type_nix)^ do begin if dynamic┆
0x062d60…062d80             20 74 68 65 6e 0a 70 75 74 31 28 7a 73 79 73 64 79 6e 69 6e 69 74 2c 20 76 6f 66 66 73 65 74 29   ┆ then put1(zsysdyninit, voffset)┆
0x062d80…062da0             0a 65 6c 73 65 0a 70 75 74 31 28 7a 73 79 73 69 6e 69 74 2c 20 76 6f 66 66 73 65 74 29 3b 0a 65   ┆ else put1(zsysinit, voffset); e┆
0x062da0…062dc0             6e 64 3b 0a 63 6f 6d 70 6f 6e 65 6e 74 5f 69 6e 69 74 28 74 79 70 65 5f 6e 69 78 29 3b 0a 65 6e   ┆nd; component_init(type_nix); en┆
0x062dc0…062de0             64 3b 20 28 2a 73 79 73 74 65 6d 20 69 6e 69 74 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 76 61   ┆d; (*system init*)  procedure va┆
0x062de0…062e00             72 5f 6c 69 73 74 3b 0a 76 61 72 20 74 79 70 65 5f 6e 69 78 2c 20 76 61 72 5f 73 69 7a 65 2c 20   ┆r_list; var type_nix, var_size, ┆
0x062e00…062e20 (26, 0, 12) 74 79 70 65 5f 6e 69 76 2c 20 74 79 70 65 5f 6f 66 66 73 65 74 2c 20 69 3a 20 69 6e 74 65 67 65   ┆type_niv, type_offset, i: intege┆
0x062e20…062e40             72 3b 0a 20 20 69 6e 69 74 2c 20 61 6c 6c 69 67 6e 2c 20 64 79 6e 3a 20 62 6f 6f 6c 65 61 6e 3b   ┆r;   init, allign, dyn: boolean;┆
0x062e40…062e60             0a 68 65 6c 70 5f 70 74 72 3a 20 73 74 61 63 6b 5f 70 74 72 3b 0a 62 65 67 69 6e 0a 74 79 70 65   ┆ help_ptr: stack_ptr; begin type┆
0x062e60…062e80             5f 6e 69 78 3a 3d 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 3b 0a 77 69   ┆_nix:=stack_top^.stacked_val; wi┆
0x062e80…062ea0             74 68 20 6e 61 6d 65 74 61 62 6c 65 28 74 79 70 65 5f 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e   ┆th nametable(type_nix)^ do begin┆
0x062ea0…062ec0             0a 76 61 72 5f 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 61 6c 6c 69 67 6e 20 3a 3d 20 63 6f 6e 74 65   ┆ var_size:=size; allign := conte┆
0x062ec0…062ee0             78 74 20 69 6e 20 61 6c 6c 69 67 6e 5f 74 79 70 65 73 3b 0a 69 6e 69 74 20 3a 3d 20 28 63 6f 6e   ┆xt in allign_types; init := (con┆
0x062ee0…062f00             74 65 78 74 20 69 6e 20 69 6e 69 74 5f 74 79 70 65 73 29 20 61 6e 64 20 28 6e 6f 74 20 70 72 65   ┆text in init_types) and (not pre┆
0x062f00…062f20             6c 75 64 65 29 3b 0a 74 79 70 65 5f 6e 69 76 3a 3d 6e 69 76 3b 20 20 20 74 79 70 65 5f 6f 66 66   ┆lude); type_niv:=niv;   type_off┆
0x062f20…062f40             73 65 74 3a 3d 6f 66 66 73 65 74 3b 0a 64 79 6e 3a 3d 64 79 6e 61 6d 69 63 3b 0a 69 66 20 63 6f   ┆set:=offset; dyn:=dynamic; if co┆
0x062f40…062f60             6e 74 65 78 74 20 3d 20 64 79 6e 5f 73 75 62 72 61 6e 67 65 20 74 68 65 6e 20 64 79 6e 3a 3d 66   ┆ntext = dyn_subrange then dyn:=f┆
0x062f60…062f80             61 6c 73 65 3b 0a 65 6e 64 3b 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 69 64 63   ┆alse; end; pop_to_free_stack(idc┆
0x062f80…062fa0             6f 75 6e 74 2b 31 29 3b 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 66 72 65 65 5f 73 74 61 63 6b 3b 0a   ┆ount+1); help_ptr:= free_stack; ┆
0x062fa0…062fc0             66 6f 72 20 69 3a 3d 69 64 63 6f 75 6e 74 20 64 6f 77 6e 74 6f 20 31 20 64 6f 0a 77 69 74 68 20   ┆for i:=idcount downto 1 do with ┆
0x062fc0…062fe0             6e 61 6d 65 74 61 62 6c 65 28 68 65 6c 70 5f 70 74 72 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 29   ┆nametable(help_ptr^.stacked_val)┆
0x062fe0…063000             5e 20 64 6f 20 62 65 67 69 6e 0a 68 65 6c 70 5f 70 74 72 3a 3d 20 68 65 6c 70 5f 70 74 72 5e 2e   ┆^ do begin help_ptr:= help_ptr^.┆
0x063000…063020 (26, 0, 13) 66 6f 72 6d 65 72 5f 65 6c 65 6d 3b 0a 69 66 20 64 79 6e 20 74 68 65 6e 20 62 65 67 69 6e 0a 63   ┆former_elem; if dyn then begin c┆
0x063020…063040             6f 6e 74 65 78 74 3a 3d 64 79 6e 5f 76 61 72 69 61 62 6c 65 3b 0a 6e 69 76 3a 3d 63 75 72 72 65   ┆ontext:=dyn_variable; niv:=curre┆
0x063040…063060             6e 74 5f 6e 69 76 3b 0a 6f 66 66 73 65 74 3a 3d 61 6c 6c 6f 63 5f 76 61 72 28 70 6f 69 6e 74 65   ┆nt_niv; offset:=alloc_var(pointe┆
0x063060…063080             72 5f 6c 65 6e 67 74 68 29 3b 0a 70 75 74 33 28 7a 61 6c 6c 6f 63 64 79 6e 76 61 72 2c 20 6f 66   ┆r_length); put3(zallocdynvar, of┆
0x063080…0630a0             66 73 65 74 2c 20 74 79 70 65 5f 6e 69 76 2c 20 74 79 70 65 5f 6f 66 66 73 65 74 29 3b 0a 65 6e   ┆fset, type_niv, type_offset); en┆
0x0630a0…0630c0             64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 61 6c 6c 69 67 6e 20 74 68 65 6e 20 77 6f 72 64   ┆d else begin if allign then word┆
0x0630c0…0630e0             5f 61 6c 6c 69 67 6e 3b 0a 63 6f 6e 74 65 78 74 3a 3d 76 61 72 69 61 62 6c 65 3b 0a 6e 69 76 3a   ┆_allign; context:=variable; niv:┆
0x0630e0…063100             3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b 0a 6f 66 66 73 65 74 3a 3d 61 6c 6c 6f 63 5f 76 61 72 28   ┆=current_niv; offset:=alloc_var(┆
0x063100…063120             76 61 72 5f 73 69 7a 65 29 3b 0a 65 6e 64 3b 0a 69 66 20 76 61 72 69 61 62 6c 65 5f 69 6e 69 74   ┆var_size); end; if variable_init┆
0x063120…063140             20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 64 79 6e 20 74 68 65 6e 20 65 72 72 6f 72 28 65 72   ┆ then begin if dyn then error(er┆
0x063140…063160             72 6f 72 5f 64 79 6e 5f 69 6e 69 74 29 0a 65 6c 73 65 0a 69 6e 69 74 5f 76 61 6c 75 65 73 28 74   ┆ror_dyn_init) else init_values(t┆
0x063160…063180             79 70 65 5f 6e 69 78 2c 20 6e 69 76 2c 20 6f 66 66 73 65 74 29 3b 0a 65 6e 64 3b 0a 69 66 20 69   ┆ype_nix, niv, offset); end; if i┆
0x063180…0631a0             6e 69 74 20 74 68 65 6e 20 73 79 73 74 65 6d 5f 69 6e 69 74 28 74 79 70 65 5f 6e 69 78 2c 20 6f   ┆nit then system_init(type_nix, o┆
0x0631a0…0631c0             66 66 73 65 74 29 3b 0a 65 6e 64 3b 0a 69 64 63 6f 75 6e 74 3a 3d 30 3b 0a 69 66 20 76 61 72 69   ┆ffset); end; idcount:=0; if vari┆
0x0631c0…0631e0             61 62 6c 65 5f 69 6e 69 74 20 74 68 65 6e 20 70 6f 70 3b 20 28 2a 69 6e 69 74 20 76 61 6c 75 65   ┆able_init then pop; (*init value┆
0x0631e0…063200             2a 29 0a 76 61 72 69 61 62 6c 65 5f 69 6e 69 74 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 0a 70   ┆*) variable_init:=false; end;  p┆
0x063200…063220 (26, 0, 14) 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 65 78 70 6f 72 74 3b 0a 76 61 72 20 74 79 70 2c 20 76 61   ┆rocedure end_export; var typ, va┆
0x063220…063240             6c 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65   ┆l: integer; begin with ot^ do be┆
0x063240…063260             67 69 6e 0a 69 66 20 66 69 65 6c 64 5f 70 61 63 6b 65 64 20 74 68 65 6e 20 65 72 72 6f 72 28 66   ┆gin if field_packed then error(f┆
0x063260…063280             69 65 6c 64 5f 65 78 70 6f 72 74 5f 65 72 72 6f 72 29 3b 0a 63 61 73 65 20 65 78 70 6f 72 74 5f   ┆ield_export_error); case export_┆
0x063280…0632a0             6b 69 6e 64 20 6f 66 0a 65 78 70 6f 72 74 76 61 6c 75 65 3a 20 62 65 67 69 6e 0a 69 66 20 63 6f   ┆kind of exportvalue: begin if co┆
0x0632a0…0632c0             6e 74 65 78 74 3c 3e 73 63 6f 6e 73 74 20 74 68 65 6e 20 65 72 72 6f 72 28 65 78 70 6f 72 74 76   ┆ntext<>sconst then error(exportv┆
0x0632c0…0632e0             61 6c 75 65 5f 65 72 72 6f 72 29 3b 0a 74 79 70 3a 3d 76 61 6c 75 65 5f 74 79 70 65 3b 0a 76 61   ┆alue_error); typ:=value_type; va┆
0x0632e0…063300             6c 3a 3d 6f 66 66 73 65 74 3b 0a 65 6e 64 3b 0a 65 78 70 6f 72 74 73 69 7a 65 3a 20 62 65 67 69   ┆l:=offset; end; exportsize: begi┆
0x063300…063320             6e 0a 74 79 70 3a 3d 76 61 6c 75 65 5f 74 79 70 65 3b 0a 76 61 6c 3a 3d 73 69 7a 65 3b 0a 65 6e   ┆n typ:=value_type; val:=size; en┆
0x063320…063340             64 3b 0a 65 78 70 6f 72 74 64 69 73 70 6c 3a 20 62 65 67 69 6e 0a 74 79 70 3a 3d 76 61 6c 75 65   ┆d; exportdispl: begin typ:=value┆
0x063340…063360             5f 74 79 70 65 3b 0a 76 61 6c 3a 3d 66 69 65 6c 64 5f 6f 66 66 73 65 74 3b 0a 65 6e 64 3b 0a 65   ┆_type; val:=field_offset; end; e┆
0x063360…063380             78 70 6f 72 74 61 64 64 72 2c 20 0a 65 78 70 6f 72 74 6f 66 66 73 65 74 3a 20 62 65 67 69 6e 0a   ┆xportaddr,  exportoffset: begin ┆
0x063380…0633a0             69 66 20 6e 6f 74 20 28 20 63 6f 6e 74 65 78 74 20 69 6e 20 76 61 72 5f 74 79 70 65 73 20 29 20   ┆if not ( context in var_types ) ┆
0x0633a0…0633c0             74 68 65 6e 20 65 72 72 6f 72 28 65 78 70 6f 72 74 61 64 64 72 5f 65 72 72 6f 72 29 3b 0a 69 66   ┆then error(exportaddr_error); if┆
0x0633c0…0633e0             20 65 78 70 6f 72 74 5f 6b 69 6e 64 3d 65 78 70 6f 72 74 61 64 64 72 20 74 68 65 6e 20 0a 74 79   ┆ export_kind=exportaddr then  ty┆
0x0633e0…063400             70 3a 3d 6f 66 66 73 65 74 5f 74 79 70 65 20 65 6c 73 65 20 74 79 70 3a 3d 76 61 6c 75 65 5f 74   ┆p:=offset_type else typ:=value_t┆
0x063400…063420 (26, 0, 15) 79 70 65 3b 0a 76 61 6c 3a 3d 6f 66 66 73 65 74 2b 66 69 65 6c 64 5f 6f 66 66 73 65 74 3b 0a 65   ┆ype; val:=offset+field_offset; e┆
0x063420…063440             6e 64 3b 0a 65 6e 64 3b 28 2a 63 61 73 65 2a 29 0a 65 6e 64 3b 28 2a 77 69 74 68 2a 29 0a 70 75   ┆nd; end;(*case*) end;(*with*) pu┆
0x063440…063460             74 30 28 7a 65 78 70 6f 72 74 29 3b 20 20 20 20 20 6f 75 74 5f 6e 61 6d 65 28 65 78 74 5f 6e 61   ┆t0(zexport);     out_name(ext_na┆
0x063460…063480             6d 65 29 3b 0a 70 75 74 5f 61 72 67 32 28 74 79 70 2c 20 76 61 6c 29 3b 0a 70 6f 70 3b 0a 65 78   ┆me); put_arg2(typ, val); pop; ex┆
0x063480…0634a0             70 6f 72 74 3a 3d 66 61 6c 73 65 3b 0a 66 69 65 6c 64 5f 6f 66 66 73 65 74 3a 3d 30 3b 0a 65 6e   ┆port:=false; field_offset:=0; en┆
0x0634a0…0634c0             64 3b 28 2a 65 6e 64 20 65 78 70 6f 72 74 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6e 65 77   ┆d;(*end export*)   procedure new┆
0x0634c0…0634e0             5f 6c 61 62 65 6c 3b 0a 62 65 67 69 6e 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 77 69   ┆_label; begin push_name(nix); wi┆
0x0634e0…063500             74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 63 6f 6e 74   ┆th nametable(nix)^ do begin cont┆
0x063500…063520             65 78 74 3a 3d 6c 61 62 65 6c 5f 74 79 70 65 3b 0a 6c 69 78 3a 3d 63 75 72 72 65 6e 74 5f 6c 69   ┆ext:=label_type; lix:=current_li┆
0x063520…063540             78 3b 0a 63 75 72 72 65 6e 74 5f 6c 69 78 3a 3d 63 75 72 72 65 6e 74 5f 6c 69 78 2b 31 3b 0a 65   ┆x; current_lix:=current_lix+1; e┆
0x063540…063560             6e 64 3b 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 65 6e 64 3b 0a 0a   ┆nd; pop_to_free_stack(1); end;  ┆
0x063560…063580             70 72 6f 63 65 64 75 72 65 20 63 6f 6e 73 74 5f 64 65 66 3b 0a 62 65 67 69 6e 0a 70 75 73 68 5f   ┆procedure const_def; begin push_┆
0x063580…0635a0             6e 61 6d 65 28 6e 69 78 29 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20   ┆name(nix); with ot^ do begin if ┆
0x0635a0…0635c0             63 6f 6e 74 65 78 74 3d 73 74 72 75 63 5f 63 20 74 68 65 6e 20 63 6f 6e 74 65 78 74 3a 3d 6c 63   ┆context=struc_c then context:=lc┆
0x0635c0…0635e0             6f 6e 73 74 3b 0a 69 66 20 28 63 6f 6e 74 65 78 74 3c 3e 73 63 6f 6e 73 74 29 20 61 6e 64 20 28   ┆onst; if (context<>sconst) and (┆
0x0635e0…063600             63 6f 6e 74 65 78 74 3c 3e 6c 63 6f 6e 73 74 29 20 61 6e 64 20 28 63 6f 6e 74 65 78 74 3c 3e 73   ┆context<>lconst) and (context<>s┆
0x063600…063620 (26, 1, 1)  65 74 5f 63 6f 6e 73 74 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 76 61 72 5f 65   ┆et_const) then begin error(var_e┆
0x063620…063640             72 72 6f 72 29 3b 0a 63 6f 6e 74 65 78 74 3a 3d 73 63 6f 6e 73 74 3b 20 20 73 69 7a 65 3a 3d 30   ┆rror); context:=sconst;  size:=0┆
0x063640…063660             3b 20 20 6e 69 76 3a 3d 30 3b 0a 6f 66 66 73 65 74 3a 3d 30 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a   ┆;  niv:=0; offset:=0; end; end; ┆
0x063660…063680             77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 63 6f   ┆with nametable(nix)^ do begin co┆
0x063680…0636a0             6e 74 65 78 74 3a 3d 6f 74 5e 2e 63 6f 6e 74 65 78 74 3b 0a 73 69 7a 65 3a 3d 6f 74 5e 2e 73 69   ┆ntext:=ot^.context; size:=ot^.si┆
0x0636a0…0636c0             7a 65 3b 0a 6e 69 76 3a 3d 6f 74 5e 2e 6e 69 76 3b 0a 6f 66 66 73 65 74 3a 3d 6f 74 5e 2e 6f 66   ┆ze; niv:=ot^.niv; offset:=ot^.of┆
0x0636c0…0636e0             66 73 65 74 3b 0a 65 6e 64 3b 0a 70 6f 70 3b 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63   ┆fset; end; pop; pop_to_free_stac┆
0x0636e0…063700             6b 28 31 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6c 6f 61 64 5f 76 61 72 28 6f   ┆k(1); end;  procedure load_var(o┆
0x063700…063720             70 3a 20 6f 75 74 5f 63 6f 64 65 29 3b 0a 76 61 72 20 6c 6f 61 64 5f 74 79 70 65 3a 20 69 6e 74   ┆p: out_code); var load_type: int┆
0x063720…063740             65 67 65 72 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66   ┆eger; begin with ot^ do begin if┆
0x063740…063760             20 6b 69 6e 64 20 69 6e 20 73 69 6d 70 6c 65 5f 74 79 70 65 73 20 74 68 65 6e 20 62 65 67 69 6e   ┆ kind in simple_types then begin┆
0x063760…063780             0a 69 66 20 66 69 65 6c 64 5f 70 61 63 6b 65 64 20 74 68 65 6e 0a 70 75 74 33 28 6f 70 2c 20 66   ┆ if field_packed then put3(op, f┆
0x063780…0637a0             69 65 6c 64 5f 74 79 70 2c 66 69 72 73 74 2c 20 63 6f 6d 70 5f 73 69 7a 65 29 0a 65 6c 73 65 0a   ┆ield_typ,first, comp_size) else ┆
0x0637a0…0637c0             62 65 67 69 6e 0a 69 66 20 73 69 7a 65 3d 30 20 74 68 65 6e 20 65 72 72 6f 72 28 65 6d 70 74 79   ┆begin if size=0 then error(empty┆
0x0637c0…0637e0             5f 65 6c 65 6d 65 6e 74 5f 63 68 61 6e 67 65 29 3b 0a 69 66 20 73 69 7a 65 3d 62 79 74 65 5f 6c   ┆_element_change); if size=byte_l┆
0x0637e0…063800             65 6e 67 74 68 20 74 68 65 6e 20 6c 6f 61 64 5f 74 79 70 65 3a 3d 62 79 74 65 5f 74 79 70 20 65   ┆ength then load_type:=byte_typ e┆
0x063800…063820 (26, 1, 2)  6c 73 65 0a 6c 6f 61 64 5f 74 79 70 65 3a 3d 77 6f 72 64 5f 74 79 70 3b 0a 70 75 74 31 28 6f 70   ┆lse load_type:=word_typ; put1(op┆
0x063820…063840             2c 6c 6f 61 64 5f 74 79 70 65 29 3b 0a 65 6e 64 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 6b 69 6e   ┆,load_type); end end else if kin┆
0x063840…063860             64 3d 70 6f 69 6e 74 65 72 5f 74 79 70 65 20 74 68 65 6e 20 70 75 74 31 28 6f 70 2c 74 79 70 65   ┆d=pointer_type then put1(op,type┆
0x063860…063880             5f 70 6f 69 6e 74 65 72 29 0a 65 6c 73 65 0a 69 66 20 6b 69 6e 64 3d 73 65 74 5f 74 79 70 65 20   ┆_pointer) else if kind=set_type ┆
0x063880…0638a0             74 68 65 6e 20 62 65 67 69 6e 0a 70 75 74 32 28 6f 70 2c 73 65 74 5f 74 79 70 2c 73 69 7a 65 29   ┆then begin put2(op,set_typ,size)┆
0x0638a0…0638c0             3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e   ┆; end else begin if dynamic then┆
0x0638c0…0638e0             0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 74 79 70 65 5f 6e 69 78 29 5e 20 64 6f 0a 70 75   ┆ with nametable(type_nix)^ do pu┆
0x0638e0…063900             74 33 28 6f 70 2c 20 64 79 6e 5f 74 79 70 2c 20 6e 69 76 2c 20 6f 66 66 73 65 74 29 0a 65 6c 73   ┆t3(op, dyn_typ, niv, offset) els┆
0x063900…063920             65 0a 70 75 74 32 28 6f 70 2c 20 61 64 64 72 5f 74 79 70 2c 20 73 69 7a 65 29 3b 0a 65 6e 64 3b   ┆e put2(op, addr_typ, size); end;┆
0x063920…063940             0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 67 65 74 5f 70 75 73 68 65 64   ┆ end; end;  procedure get_pushed┆
0x063940…063960             5f 63 6f 6e 73 74 73 3b 0a 76 61 72 20 70 3a 20 6f 70 65 72 61 6e 64 5f 70 74 72 3b 20 73 74 6f   ┆_consts; var p: operand_ptr; sto┆
0x063960…063980             70 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 70 3a 3d 6f 74 3b 0a 69 66 20 70 3c 3e 66   ┆p: boolean; begin p:=ot; if p<>f┆
0x063980…0639a0             69 72 73 74 5f 6f 66 5f 65 78 70 72 20 74 68 65 6e 0a 72 65 70 65 61 74 0a 70 3a 3d 70 5e 2e 66   ┆irst_of_expr then repeat p:=p^.f┆
0x0639a0…0639c0             6f 72 6d 65 72 5f 6f 70 65 72 61 6e 64 3b 0a 69 66 20 70 3c 3e 66 69 72 73 74 5f 6f 66 5f 65 78   ┆ormer_operand; if p<>first_of_ex┆
0x0639c0…0639e0             70 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 69 74 68 20 70 5e 20 64 6f 20 69 66 20 63 6f 6e 74   ┆pr then begin with p^ do if cont┆
0x0639e0…063a00             65 78 74 3d 73 74 72 75 63 5f 63 20 74 68 65 6e 20 63 6f 6e 74 65 78 74 3a 3d 6c 63 6f 6e 73 74   ┆ext=struc_c then context:=lconst┆
0x063a00…063a20 (26, 1, 3)  3b 0a 73 74 6f 70 3a 3d 20 28 70 5e 2e 63 6f 6e 74 65 78 74 20 3c 3e 20 73 63 6f 6e 73 74 29 20   ┆; stop:= (p^.context <> sconst) ┆
0x063a20…063a40             61 6e 64 20 28 70 5e 2e 63 6f 6e 74 65 78 74 20 3c 3e 20 6c 63 6f 6e 73 74 29 0a 65 6e 64 0a 65   ┆and (p^.context <> lconst) end e┆
0x063a40…063a60             6c 73 65 20 73 74 6f 70 3a 3d 74 72 75 65 3b 0a 75 6e 74 69 6c 20 73 74 6f 70 3b 0a 69 66 20 70   ┆lse stop:=true; until stop; if p┆
0x063a60…063a80             5e 2e 6e 65 78 74 5f 6f 70 65 72 61 6e 64 3c 3e 6f 74 20 74 68 65 6e 0a 72 65 70 65 61 74 0a 70   ┆^.next_operand<>ot then repeat p┆
0x063a80…063aa0             3a 3d 20 70 5e 2e 6e 65 78 74 5f 6f 70 65 72 61 6e 64 3b 0a 77 69 74 68 20 70 5e 20 64 6f 20 62   ┆:= p^.next_operand; with p^ do b┆
0x063aa0…063ac0             65 67 69 6e 0a 69 66 20 63 6f 6e 74 65 78 74 3d 73 63 6f 6e 73 74 20 74 68 65 6e 20 62 65 67 69   ┆egin if context=sconst then begi┆
0x063ac0…063ae0             6e 0a 70 75 74 31 28 7a 63 6f 6e 73 74 2c 6f 66 66 73 65 74 29 3b 0a 69 66 20 73 69 7a 65 3d 62   ┆n put1(zconst,offset); if size=b┆
0x063ae0…063b00             79 74 65 5f 6c 65 6e 67 74 68 20 74 68 65 6e 20 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74   ┆yte_length then size:=word_lengt┆
0x063b00…063b20             68 3b 0a 65 6e 64 0a 65 6c 73 65 20 62 65 67 69 6e 0a 28 2a 69 66 20 6e 69 76 3c 30 20 74 68 65   ┆h; end else begin (*if niv<0 the┆
0x063b20…063b40             6e 20 2a 29 20 63 6f 6e 73 74 61 6e 74 5f 75 73 65 64 28 70 29 3b 0a 70 75 74 32 28 7a 6c 63 6f   ┆n *) constant_used(p); put2(zlco┆
0x063b40…063b60             6e 73 74 2c 6e 69 76 2c 73 69 7a 65 29 3b 0a 65 6e 64 3b 0a 73 74 61 74 65 3a 3d 65 78 70 72 65   ┆nst,niv,size); end; state:=expre┆
0x063b60…063b80             73 73 69 6f 6e 3b 20 20 63 6f 6e 74 65 78 74 3a 3d 65 78 70 72 3b 0a 65 6e 64 3b 20 28 2a 20 77   ┆ssion;  context:=expr; end; (* w┆
0x063b80…063ba0             69 74 68 20 2a 29 0a 75 6e 74 69 6c 20 70 5e 2e 6e 65 78 74 5f 6f 70 65 72 61 6e 64 3d 6f 74 3b   ┆ith *) until p^.next_operand=ot;┆
0x063ba0…063bc0             0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 61 64 64 72 65 73 73 3b 0a 62 65 67 69 6e 0a   ┆ end;  procedure address; begin ┆
0x063bc0…063be0             67 65 74 5f 70 75 73 68 65 64 5f 63 6f 6e 73 74 73 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 69   ┆get_pushed_consts; with ot^ do i┆
0x063be0…063c00             66 20 63 6f 6e 74 65 78 74 3d 73 74 72 75 63 5f 63 20 74 68 65 6e 20 63 6f 6e 74 65 78 74 3a 3d   ┆f context=struc_c then context:=┆
0x063c00…063c20 (26, 1, 4)  6c 63 6f 6e 73 74 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 63 61 73 65 20 73   ┆lconst; with ot^ do begin case s┆
0x063c20…063c40             74 61 74 65 20 6f 66 0a 64 69 72 65 63 74 3a 20 20 69 66 20 63 6f 6e 74 65 78 74 3d 6c 63 6f 6e   ┆tate of direct:  if context=lcon┆
0x063c40…063c60             73 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 69 66 20 6e 69 76 3c 30 20 74 68 65 6e 20 2a 29   ┆st then begin (*if niv<0 then *)┆
0x063c60…063c80             20 63 6f 6e 73 74 61 6e 74 5f 75 73 65 64 28 6f 74 29 3b 0a 70 75 74 31 28 7a 63 61 64 64 72 2c   ┆ constant_used(ot); put1(zcaddr,┆
0x063c80…063ca0             6e 69 76 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 28 63 6f 6e 74 65 78 74 3d 73 63 6f 6e 73   ┆niv); end else if (context=scons┆
0x063ca0…063cc0             74 29 20 6f 72 20 28 63 6f 6e 74 65 78 74 3d 73 65 74 5f 63 6f 6e 73 74 29 20 74 68 65 6e 20 62   ┆t) or (context=set_const) then b┆
0x063cc0…063ce0             65 67 69 6e 0a 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 28 61 64 64 72 5f 65 72 72 6f 72 29 3b   ┆egin compiler_error(addr_error);┆
0x063ce0…063d00             0a 70 75 74 32 28 7a 61 64 64 72 2c 30 2c 30 29 3b 0a 65 6e 64 20 65 6c 73 65 0a 70 75 74 32 28   ┆ put2(zaddr,0,0); end else put2(┆
0x063d00…063d20             7a 61 64 64 72 2c 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 69 6e 64 69 72 65 63 74 3a 20 62 65 67   ┆zaddr,niv,offset); indirect: beg┆
0x063d20…063d40             69 6e 0a 70 75 74 32 28 7a 61 64 64 72 2c 6e 69 76 2c 6f 66 66 73 65 74 29 3b 20 70 75 74 30 28   ┆in put2(zaddr,niv,offset); put0(┆
0x063d40…063d60             7a 69 6e 64 61 64 64 72 29 3b 0a 65 6e 64 3b 0a 61 64 64 72 2c 20 70 5f 63 6f 6d 70 3a 20 3b 0a   ┆zindaddr); end; addr, p_comp: ; ┆
0x063d60…063d80             65 78 70 72 65 73 73 69 6f 6e 3a 20 20 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 28 61 64 64 72   ┆expression:  compiler_error(addr┆
0x063d80…063da0             5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 73 74 61 74 65 3a 3d 61 64 64 72 3b 20 20 20 63 6f 6e   ┆_error); end; state:=addr;   con┆
0x063da0…063dc0             74 65 78 74 3a 3d 65 78 70 72 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65   ┆text:=expr; end; end;  procedure┆
0x063dc0…063de0             20 6c 6f 61 64 5f 6f 70 65 72 61 6e 64 3b 0a 62 65 67 69 6e 0a 69 66 20 28 20 6f 74 5e 2e 63 6f   ┆ load_operand; begin if ( ot^.co┆
0x063de0…063e00             6e 74 65 78 74 3c 3e 73 63 6f 6e 73 74 20 29 20 61 6e 64 0a 28 20 6f 74 5e 2e 63 6f 6e 74 65 78   ┆ntext<>sconst ) and ( ot^.contex┆
0x063e00…063e20 (26, 1, 5)  74 3c 3e 73 74 72 75 63 5f 63 29 20 61 6e 64 0a 20 20 20 28 6f 74 5e 2e 63 6f 6e 74 65 78 74 3c   ┆t<>struc_c) and    (ot^.context<┆
0x063e20…063e40             3e 6c 63 6f 6e 73 74 20 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 67 65 74 5f 70 75 73 68 65 64 5f   ┆>lconst ) then begin get_pushed_┆
0x063e40…063e60             63 6f 6e 73 74 73 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 63 61 73 65 20 73   ┆consts; with ot^ do begin case s┆
0x063e60…063e80             74 61 74 65 20 6f 66 0a 64 69 72 65 63 74 3a 20 69 66 20 63 6f 6e 74 65 78 74 3d 73 65 74 5f 63   ┆tate of direct: if context=set_c┆
0x063e80…063ea0             6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 69 66 20 6e 69 76 3c 30 20 74 68 65 6e 20   ┆onst then begin (*if niv<0 then ┆
0x063ea0…063ec0             2a 29 20 63 6f 6e 73 74 61 6e 74 5f 75 73 65 64 28 6f 74 29 3b 0a 70 75 74 32 28 7a 73 65 74 63   ┆*) constant_used(ot); put2(zsetc┆
0x063ec0…063ee0             6f 6e 73 74 2c 6e 69 76 2c 73 69 7a 65 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 70   ┆onst,niv,size); end else begin p┆
0x063ee0…063f00             75 74 32 28 7a 61 64 64 72 2c 20 6e 69 76 2c 20 6f 66 66 73 65 74 29 3b 20 6c 6f 61 64 5f 76 61   ┆ut2(zaddr, niv, offset); load_va┆
0x063f00…063f20             72 28 7a 69 6e 64 76 61 72 29 3b 20 65 6e 64 3b 0a 69 6e 64 69 72 65 63 74 3a 20 20 62 65 67 69   ┆r(zindvar); end; indirect:  begi┆
0x063f20…063f40             6e 0a 70 75 74 32 28 7a 61 64 64 72 2c 6e 69 76 2c 6f 66 66 73 65 74 29 3b 20 20 70 75 74 30 28   ┆n put2(zaddr,niv,offset);  put0(┆
0x063f40…063f60             7a 69 6e 64 61 64 64 72 29 3b 0a 6c 6f 61 64 5f 76 61 72 28 7a 69 6e 64 76 61 72 29 3b 0a 65 6e   ┆zindaddr); load_var(zindvar); en┆
0x063f60…063f80             64 3b 0a 61 64 64 72 3a 20 6c 6f 61 64 5f 76 61 72 28 7a 69 6e 64 76 61 72 29 3b 0a 65 78 70 72   ┆d; addr: load_var(zindvar); expr┆
0x063f80…063fa0             65 73 73 69 6f 6e 2c 20 70 5f 63 6f 6d 70 3a 20 3b 0a 65 6e 64 3b 20 28 2a 63 61 73 65 2a 29 0a   ┆ession, p_comp: ; end; (*case*) ┆
0x063fa0…063fc0             0a 28 2a 69 66 20 74 68 65 20 6f 70 65 72 61 6e 64 20 69 73 20 61 20 62 79 74 65 20 6f 72 20 61   ┆ (*if the operand is a byte or a┆
0x063fc0…063fe0             20 70 6f 69 6e 74 65 72 28 33 20 62 79 74 65 73 29 2c 20 74 68 65 6e 20 74 68 65 20 73 69 7a 65   ┆ pointer(3 bytes), then the size┆
0x063fe0…064000             20 6f 66 20 73 70 61 63 65 0a 20 20 6f 63 63 75 70 69 65 64 20 6f 6e 20 74 68 65 20 73 74 61 63   ┆ of space   occupied on the stac┆
0x064000…064020 (26, 1, 6)  6b 20 69 73 20 61 20 77 6f 72 64 20 66 6f 72 20 61 20 62 79 74 65 20 61 6e 64 20 61 20 64 6f 75   ┆k is a word for a byte and a dou┆
0x064020…064040             62 6c 65 20 66 6f 72 20 61 20 70 6f 69 6e 74 65 72 2e 0a 20 20 69 2e 65 2e 20 74 68 65 20 73 69   ┆ble for a pointer.   i.e. the si┆
0x064040…064060             7a 65 20 68 61 73 20 74 6f 20 62 65 20 65 76 65 6e 2a 29 0a 69 66 20 6b 69 6e 64 20 69 6e 20 61   ┆ze has to be even*) if kind in a┆
0x064060…064080             64 6a 75 73 74 5f 74 79 70 65 73 20 74 68 65 6e 0a 69 66 20 6f 64 64 28 73 69 7a 65 29 20 74 68   ┆djust_types then if odd(size) th┆
0x064080…0640a0             65 6e 20 73 69 7a 65 20 3a 3d 20 73 69 7a 65 20 2b 20 31 3b 0a 73 74 61 74 65 3a 3d 65 78 70 72   ┆en size := size + 1; state:=expr┆
0x0640a0…0640c0             65 73 73 69 6f 6e 3b 20 20 20 63 6f 6e 74 65 78 74 3a 3d 65 78 70 72 3b 0a 65 6e 64 3b 20 28 2a   ┆ession;   context:=expr; end; (*┆
0x0640c0…0640e0             77 69 74 68 2a 29 0a 65 6e 64 3b 20 28 2a 69 66 2a 29 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75   ┆with*) end; (*if*) end;  procedu┆
0x0640e0…064100             72 65 20 6c 6f 61 64 5f 65 78 70 72 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20   ┆re load_expr; begin with ot^ do ┆
0x064100…064120             62 65 67 69 6e 0a 69 66 20 63 6f 6e 74 65 78 74 3d 73 74 72 75 63 5f 63 20 74 68 65 6e 20 63 6f   ┆begin if context=struc_c then co┆
0x064120…064140             6e 74 65 78 74 3a 3d 6c 63 6f 6e 73 74 3b 0a 69 66 20 28 63 6f 6e 74 65 78 74 3d 6c 63 6f 6e 73   ┆ntext:=lconst; if (context=lcons┆
0x064140…064160             74 29 20 6f 72 20 28 63 6f 6e 74 65 78 74 3d 73 65 74 5f 63 6f 6e 73 74 29 20 74 68 65 6e 0a 28   ┆t) or (context=set_const) then (┆
0x064160…064180             2a 69 66 20 6e 69 76 3c 30 20 74 68 65 6e 20 2a 29 20 63 6f 6e 73 74 61 6e 74 5f 75 73 65 64 28   ┆*if niv<0 then *) constant_used(┆
0x064180…0641a0             6f 74 29 3b 0a 69 66 20 63 6f 6e 74 65 78 74 3d 73 63 6f 6e 73 74 20 74 68 65 6e 20 62 65 67 69   ┆ot); if context=sconst then begi┆
0x0641a0…0641c0             6e 0a 70 75 74 31 28 7a 63 6f 6e 73 74 2c 6f 66 66 73 65 74 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a   ┆n put1(zconst,offset); end else ┆
0x0641c0…0641e0             69 66 20 63 6f 6e 74 65 78 74 3d 6c 63 6f 6e 73 74 20 74 68 65 6e 20 70 75 74 32 28 7a 6c 63 6f   ┆if context=lconst then put2(zlco┆
0x0641e0…064200             6e 73 74 2c 6e 69 76 2c 73 69 7a 65 29 0a 65 6c 73 65 0a 69 66 20 63 6f 6e 74 65 78 74 3d 73 65   ┆nst,niv,size) else if context=se┆
0x064200…064220 (26, 1, 7)  74 5f 63 6f 6e 73 74 20 74 68 65 6e 20 70 75 74 32 28 7a 73 65 74 63 6f 6e 73 74 2c 6e 69 76 2c   ┆t_const then put2(zsetconst,niv,┆
0x064220…064240             73 69 7a 65 29 0a 65 6c 73 65 0a 6c 6f 61 64 5f 6f 70 65 72 61 6e 64 3b 0a 69 66 20 73 69 7a 65   ┆size) else load_operand; if size┆
0x064240…064260             3d 62 79 74 65 5f 6c 65 6e 67 74 68 20 74 68 65 6e 20 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e   ┆=byte_length then size:=word_len┆
0x064260…064280             67 74 68 3b 0a 73 74 61 74 65 3a 3d 65 78 70 72 65 73 73 69 6f 6e 3b 20 20 20 63 6f 6e 74 65 78   ┆gth; state:=expression;   contex┆
0x064280…0642a0             74 3a 3d 65 78 70 72 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 61   ┆t:=expr; end; end;  procedure pa┆
0x0642a0…0642c0             73 73 5f 65 78 70 72 28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65 29 3b 0a 62 65 67 69 6e 0a 6c 6f 61   ┆ss_expr(op: out_code); begin loa┆
0x0642c0…0642e0             64 5f 65 78 70 72 3b 20 20 20 70 6f 70 3b 0a 70 75 74 30 28 6f 70 29 3b 0a 65 6e 64 3b 0a 0a 70   ┆d_expr;   pop; put0(op); end;  p┆
0x0642e0…064300             72 6f 63 65 64 75 72 65 20 70 61 73 73 5f 61 64 64 72 28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65 29   ┆rocedure pass_addr(op: out_code)┆
0x064300…064320             3b 0a 62 65 67 69 6e 0a 61 64 64 72 65 73 73 3b 20 20 20 70 6f 70 3b 0a 70 75 74 30 28 6f 70 29   ┆; begin address;   pop; put0(op)┆
0x064320…064340             3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 61 72 69 74 68 6d 65 74 69 63 28 6f 70 3a   ┆; end;  procedure arithmetic(op:┆
0x064340…064360             20 6f 75 74 5f 63 6f 64 65 29 3b 0a 76 61 72 20 73 74 65 70 2c 20 6d 61 73 6b 76 61 6c 2c 20 66   ┆ out_code); var step, maskval, f┆
0x064360…064380             2c 20 74 79 70 3a 20 69 6e 74 65 67 65 72 3b 0a 72 6f 74 61 74 65 5f 66 69 72 73 74 3a 20 62 6f   ┆, typ: integer; rotate_first: bo┆
0x064380…0643a0             6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 69 66 20 28 20 6f 74 5e 2e 63 6f 6e 74 65 78 74 3d 73 63   ┆olean; begin if ( ot^.context=sc┆
0x0643a0…0643c0             6f 6e 73 74 20 29 20 61 6e 64 0a 28 20 6f 73 5e 2e 63 6f 6e 74 65 78 74 3d 73 63 6f 6e 73 74 20   ┆onst ) and ( os^.context=sconst ┆
0x0643c0…0643e0             29 20 74 68 65 6e 20 62 65 67 69 6e 0a 66 3a 3d 6f 74 5e 2e 6f 66 66 73 65 74 3b 20 20 70 6f 70   ┆) then begin f:=ot^.offset;  pop┆
0x0643e0…064400             3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 63 61 73 65 20 6f 70 20 6f 66 0a 7a   ┆; with ot^ do begin case op of z┆
0x064400…064420 (26, 1, 8)  61 6e 64 2c 20 7a 6f 72 5f 2c 20 7a 78 6f 72 3a 20 6f 66 66 73 65 74 20 3a 3d 20 69 6e 74 5f 6c   ┆and, zor_, zxor: offset := int_l┆
0x064420…064440             6f 67 69 63 61 6c 28 20 6f 70 2c 20 6f 66 66 73 65 74 2c 20 66 20 29 3b 0a 7a 61 64 64 3a 20 6f   ┆ogical( op, offset, f ); zadd: o┆
0x064440…064460             66 66 73 65 74 3a 3d 69 6e 74 5f 61 64 64 28 6f 66 66 73 65 74 2c 66 29 3b 0a 7a 73 75 62 3a 20   ┆ffset:=int_add(offset,f); zsub: ┆
0x064460…064480             6f 66 66 73 65 74 3a 3d 69 6e 74 5f 61 64 64 28 6f 66 66 73 65 74 2c 2d 66 29 3b 0a 7a 6d 75 6c   ┆offset:=int_add(offset,-f); zmul┆
0x064480…0644a0             3a 20 6f 66 66 73 65 74 3a 3d 69 6e 74 5f 6d 75 6c 28 6f 66 66 73 65 74 2c 66 29 3b 0a 7a 64 69   ┆: offset:=int_mul(offset,f); zdi┆
0x0644a0…0644c0             76 3a 20 6f 66 66 73 65 74 3a 3d 69 6e 74 5f 64 69 76 28 6f 66 66 73 65 74 2c 66 29 3b 0a 7a 6d   ┆v: offset:=int_div(offset,f); zm┆
0x0644c0…0644e0             6f 64 3a 20 6f 66 66 73 65 74 3a 3d 69 6e 74 5f 6d 6f 64 28 6f 66 66 73 65 74 2c 66 29 3b 0a 7a   ┆od: offset:=int_mod(offset,f); z┆
0x0644e0…064500             73 68 69 66 74 3a 20 6f 66 66 73 65 74 3a 3d 20 69 6e 74 5f 73 68 69 66 74 28 6f 66 66 73 65 74   ┆shift: offset:= int_shift(offset┆
0x064500…064520             2c 20 66 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 28 6f 70 3d   ┆, f); end; end; end else if (op=┆
0x064520…064540             7a 73 68 69 66 74 29 20 61 6e 64 20 28 6f 74 5e 2e 63 6f 6e 74 65 78 74 3d 73 63 6f 6e 73 74 29   ┆zshift) and (ot^.context=sconst)┆
0x064540…064560             20 74 68 65 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 0a 62 65 67 69 6e 20 28 2a 20 63 6f 6e 76 65   ┆ then with ot^ do begin (* conve┆
0x064560…064580             72 74 20 74 6f 20 6d 61 73 6b 20 61 6e 64 20 72 6f 74 61 74 65 20 2a 29 0a 69 66 20 6f 66 66 73   ┆rt to mask and rotate *) if offs┆
0x064580…0645a0             65 74 3c 3e 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 72 6f 74 61 74 65 5f 66 69 72 73 74 3a 3d 20   ┆et<>0 then begin rotate_first:= ┆
0x0645a0…0645c0             6f 66 66 73 65 74 3c 30 3b 0a 6f 66 66 73 65 74 3a 3d 20 61 62 73 28 6f 66 66 73 65 74 29 3b 0a   ┆offset<0; offset:= abs(offset); ┆
0x0645c0…0645e0             69 66 20 6f 66 66 73 65 74 3e 31 36 20 74 68 65 6e 20 6f 66 66 73 65 74 3a 3d 20 31 36 3b 0a 28   ┆if offset>16 then offset:= 16; (┆
0x0645e0…064600             2a 24 52 2d 2a 29 0a 6d 61 73 6b 76 61 6c 3a 3d 20 28 31 20 73 68 6c 20 28 31 36 20 2d 20 6f 66   ┆*$R-*) maskval:= (1 shl (16 - of┆
0x064600…064620 (26, 1, 9)  66 73 65 74 29 29 20 2d 20 31 3b 0a 28 2a 24 52 2b 2a 29 0a 69 66 20 72 6f 74 61 74 65 5f 66 69   ┆fset)) - 1; (*$R+*) if rotate_fi┆
0x064620…064640             72 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6f 66 66 73 65 74 3c 31 36 20 74 68 65 6e   ┆rst then begin if offset<16 then┆
0x064640…064660             0a 62 65 67 69 6e 0a 70 75 74 31 28 7a 63 6f 6e 73 74 2c 20 2d 6f 66 66 73 65 74 29 3b 0a 70 75   ┆ begin put1(zconst, -offset); pu┆
0x064660…064680             74 30 28 7a 72 6f 74 61 74 65 29 3b 0a 65 6e 64 3b 0a 70 75 74 31 28 7a 63 6f 6e 73 74 2c 20 6d   ┆t0(zrotate); end; put1(zconst, m┆
0x064680…0646a0             61 73 6b 76 61 6c 29 3b 0a 70 75 74 30 28 7a 61 6e 64 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65   ┆askval); put0(zand); end else be┆
0x0646a0…0646c0             67 69 6e 0a 70 75 74 31 28 7a 63 6f 6e 73 74 2c 20 6d 61 73 6b 76 61 6c 29 3b 0a 70 75 74 30 28   ┆gin put1(zconst, maskval); put0(┆
0x0646c0…0646e0             7a 61 6e 64 29 3b 0a 69 66 20 6f 66 66 73 65 74 3c 31 36 20 74 68 65 6e 0a 62 65 67 69 6e 0a 70   ┆zand); if offset<16 then begin p┆
0x0646e0…064700             75 74 31 28 7a 63 6f 6e 73 74 2c 20 6f 66 66 73 65 74 29 3b 0a 70 75 74 30 28 7a 72 6f 74 61 74   ┆ut1(zconst, offset); put0(zrotat┆
0x064700…064720             65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 6f 66 66 73 65 74 20 3c 3e 20   ┆e); end; end; end; (* offset <> ┆
0x064720…064740             30 20 2a 29 0a 70 6f 70 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 0a 62 65 67 69 6e 0a 73 69 7a 65   ┆0 *) pop; with ot^ do begin size┆
0x064740…064760             3a 3d 20 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 63 6f 6e 74 65 78 74 3a 3d 20 65 78 70 72 3b 0a   ┆:= word_length; context:= expr; ┆
0x064760…064780             73 74 61 74 65 3a 3d 20 65 78 70 72 65 73 73 69 6f 6e 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68   ┆state:= expression; end; (* with┆
0x064780…0647a0             20 6f 74 5e 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 6c 6f 61 64 5f 65 78 70 72   ┆ ot^ *) end else begin load_expr┆
0x0647a0…0647c0             3b 0a 70 6f 70 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 63 61 73 65 20 6b 69   ┆; pop; with ot^ do begin case ki┆
0x0647c0…0647e0             6e 64 20 6f 66 0a 62 6f 6f 6c 5f 74 79 70 65 3a 20 20 74 79 70 3a 3d 62 6f 6f 6c 5f 74 79 70 3b   ┆nd of bool_type:  typ:=bool_typ;┆
0x0647e0…064800             0a 73 65 74 5f 74 79 70 65 3a 20 20 20 74 79 70 3a 3d 73 65 74 6f 66 5f 74 79 70 3b 0a 65 6c 73   ┆ set_type:   typ:=setof_typ; els┆
0x064800…064820 (26, 1, 10) 65 20 74 79 70 3a 3d 69 6e 74 5f 74 79 70 3b 0a 65 6e 64 3b 0a 70 75 74 30 28 6f 70 29 3b 0a 69   ┆e typ:=int_typ; end; put0(op); i┆
0x064820…064840             66 20 28 6f 70 3d 7a 6d 75 6c 29 20 6f 72 20 28 6f 70 3d 7a 61 64 64 29 20 6f 72 20 28 6f 70 3d   ┆f (op=zmul) or (op=zadd) or (op=┆
0x064840…064860             7a 73 75 62 29 20 74 68 65 6e 20 0a 70 75 74 5f 61 72 67 31 28 74 79 70 29 3b 0a 69 66 20 73 69   ┆zsub) then  put_arg1(typ); if si┆
0x064860…064880             7a 65 3d 62 79 74 65 5f 6c 65 6e 67 74 68 20 74 68 65 6e 20 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c   ┆ze=byte_length then size:=word_l┆
0x064880…0648a0             65 6e 67 74 68 3b 0a 63 6f 6e 74 65 78 74 3a 3d 65 78 70 72 3b 20 20 73 74 61 74 65 3a 3d 65 78   ┆ength; context:=expr;  state:=ex┆
0x0648a0…0648c0             70 72 65 73 73 69 6f 6e 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64   ┆pression; end; end; end;  proced┆
0x0648c0…0648e0             75 72 65 20 6e 65 67 5f 6e 6f 74 28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65 29 3b 0a 76 61 72 20 74   ┆ure neg_not(op: out_code); var t┆
0x0648e0…064900             79 70 20 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 0a   ┆yp : integer; begin with ot^ do ┆
0x064900…064920             69 66 20 63 6f 6e 74 65 78 74 3d 73 63 6f 6e 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 63 61 73   ┆if context=sconst then begin cas┆
0x064920…064940             65 20 6f 70 20 6f 66 0a 7a 6e 65 67 3a 20 6f 66 66 73 65 74 3a 3d 2d 6f 66 66 73 65 74 3b 0a 7a   ┆e op of zneg: offset:=-offset; z┆
0x064940…064960             6e 6f 74 3a 20 69 66 20 6b 69 6e 64 3c 3e 62 6f 6f 6c 5f 74 79 70 65 20 74 68 65 6e 0a 28 2a 24   ┆not: if kind<>bool_type then (*$┆
0x064960…064980             52 2d 2a 29 0a 6f 66 66 73 65 74 3a 3d 20 2d 6f 66 66 73 65 74 2d 31 0a 28 2a 24 52 2b 2a 29 0a   ┆R-*) offset:= -offset-1 (*$R+*) ┆
0x064980…0649a0             65 6c 73 65 0a 69 66 20 6f 66 66 73 65 74 3d 30 20 74 68 65 6e 20 6f 66 66 73 65 74 3a 3d 31 20   ┆else if offset=0 then offset:=1 ┆
0x0649a0…0649c0             65 6c 73 65 20 6f 66 66 73 65 74 3a 3d 30 3b 0a 65 6e 64 3b 0a 65 6e 64 0a 65 6c 73 65 20 62 65   ┆else offset:=0; end; end else be┆
0x0649c0…0649e0             67 69 6e 0a 6c 6f 61 64 5f 6f 70 65 72 61 6e 64 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65   ┆gin load_operand; with ot^ do be┆
0x0649e0…064a00             67 69 6e 0a 70 75 74 30 28 6f 70 29 3b 0a 69 66 20 6f 70 20 3d 20 7a 6e 6f 74 20 74 68 65 6e 20   ┆gin put0(op); if op = znot then ┆
0x064a00…064a20 (26, 1, 11) 62 65 67 69 6e 0a 69 66 20 6b 69 6e 64 20 3d 20 62 6f 6f 6c 5f 74 79 70 65 20 74 68 65 6e 20 74   ┆begin if kind = bool_type then t┆
0x064a20…064a40             79 70 20 3a 3d 20 62 6f 6f 6c 5f 74 79 70 20 65 6c 73 65 20 74 79 70 3a 3d 69 6e 74 5f 74 79 70   ┆yp := bool_typ else typ:=int_typ┆
0x064a40…064a60             3b 0a 70 75 74 5f 61 72 67 31 28 74 79 70 29 3b 0a 65 6e 64 3b 0a 69 66 20 73 69 7a 65 3d 62 79   ┆; put_arg1(typ); end; if size=by┆
0x064a60…064a80             74 65 5f 6c 65 6e 67 74 68 20 74 68 65 6e 20 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68   ┆te_length then size:=word_length┆
0x064a80…064aa0             3b 0a 63 6f 6e 74 65 78 74 3a 3d 65 78 70 72 3b 20 20 20 73 74 61 74 65 3a 3d 65 78 70 72 65 73   ┆; context:=expr;   state:=expres┆
0x064aa0…064ac0             73 69 6f 6e 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆sion; end; end; end;  procedure ┆
0x064ac0…064ae0             65 71 75 61 6c 69 74 79 28 6f 70 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 20 66 2c 71 2c 6e   ┆equality(op: integer); var f,q,n┆
0x064ae0…064b00             2c 6f 70 31 2c 70 2c 6f 70 31 5f 73 69 7a 65 2c 6f 70 32 5f 73 69 7a 65 2c 6c 61 73 74 2c 6e 31   ┆,op1,p,op1_size,op2_size,last,n1┆
0x064b00…064b20             2c 69 3a 20 69 6e 74 65 67 65 72 3b 0a 62 6f 2c 20 72 65 6d 6f 76 65 31 2c 20 72 65 6d 6f 76 65   ┆,i: integer; bo, remove1, remove┆
0x064b20…064b40             32 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 69 66 20 28 6f 74 5e 2e 63 6f 6e 74 65 78   ┆2: boolean; begin if (ot^.contex┆
0x064b40…064b60             74 3d 73 63 6f 6e 73 74 29 20 61 6e 64 0a 28 6f 73 5e 2e 63 6f 6e 74 65 78 74 3d 73 63 6f 6e 73   ┆t=sconst) and (os^.context=scons┆
0x064b60…064b80             74 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 66 3a 3d 6f 74 5e 2e 6f 66 66 73 65 74 3b 20 20 20 70   ┆t) then begin f:=ot^.offset;   p┆
0x064b80…064ba0             6f 70 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 63 61 73 65 20 6f 70 20 6f 66   ┆op; with ot^ do begin case op of┆
0x064ba0…064bc0             0a 7a 6e 65 3a 20 20 62 6f 3a 3d 6f 66 66 73 65 74 3c 3e 66 3b 0a 7a 65 71 3a 20 20 62 6f 3a 3d   ┆ zne:  bo:=offset<>f; zeq:  bo:=┆
0x064bc0…064be0             6f 66 66 73 65 74 3d 66 3b 0a 7a 6c 65 3a 20 20 62 6f 3a 3d 6f 66 66 73 65 74 3c 3d 66 3b 0a 7a   ┆offset=f; zle:  bo:=offset<=f; z┆
0x064be0…064c00             67 65 3a 20 20 62 6f 3a 3d 6f 66 66 73 65 74 3e 3d 66 3b 0a 7a 6c 74 3a 20 20 62 6f 3a 3d 6f 66   ┆ge:  bo:=offset>=f; zlt:  bo:=of┆
0x064c00…064c20 (26, 1, 12) 66 73 65 74 3c 66 3b 0a 7a 67 74 3a 20 20 62 6f 3a 3d 6f 66 66 73 65 74 3e 66 3b 0a 65 6e 64 3b   ┆fset<f; zgt:  bo:=offset>f; end;┆
0x064c20…064c40             20 28 2a 63 61 73 65 2a 29 0a 69 66 20 62 6f 20 74 68 65 6e 20 6f 66 66 73 65 74 3a 3d 31 20 65   ┆ (*case*) if bo then offset:=1 e┆
0x064c40…064c60             6c 73 65 20 6f 66 66 73 65 74 3a 3d 30 3b 0a 6b 69 6e 64 3a 3d 62 6f 6f 6c 5f 74 79 70 65 3b 20   ┆lse offset:=0; kind:=bool_type; ┆
0x064c60…064c80             20 20 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 65 6e 64 3b 20 28 2a 77 69 74 68   ┆  size:=word_length; end; (*with┆
0x064c80…064ca0             2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 72 65 6d 6f 76 65 31 3a 3d 6f 74 5e 2e 63   ┆*) end else begin remove1:=ot^.c┆
0x064ca0…064cc0             6f 6e 74 65 78 74 3d 73 74 72 75 63 5f 63 3b 0a 69 66 20 72 65 6d 6f 76 65 31 20 74 68 65 6e 20   ┆ontext=struc_c; if remove1 then ┆
0x064cc0…064ce0             6f 74 5e 2e 63 6f 6e 74 65 78 74 3a 3d 6c 63 6f 6e 73 74 3b 0a 72 65 6d 6f 76 65 32 3a 3d 6f 73   ┆ot^.context:=lconst; remove2:=os┆
0x064ce0…064d00             5e 2e 63 6f 6e 74 65 78 74 3d 73 74 72 75 63 5f 63 3b 0a 69 66 20 72 65 6d 6f 76 65 32 20 74 68   ┆^.context=struc_c; if remove2 th┆
0x064d00…064d20             65 6e 20 6f 73 5e 2e 63 6f 6e 74 65 78 74 3a 3d 6c 63 6f 6e 73 74 3b 0a 69 66 20 28 28 6f 70 3d   ┆en os^.context:=lconst; if ((op=┆
0x064d20…064d40             7a 6e 65 29 20 6f 72 20 28 6f 70 3d 7a 65 71 29 29 20 61 6e 64 0a 28 6f 74 5e 2e 63 6f 6e 74 65   ┆zne) or (op=zeq)) and (ot^.conte┆
0x064d40…064d60             78 74 3d 6c 63 6f 6e 73 74 29 20 61 6e 64 0a 28 6f 73 5e 2e 63 6f 6e 74 65 78 74 3d 6c 63 6f 6e   ┆xt=lconst) and (os^.context=lcon┆
0x064d60…064d80             73 74 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 6f 70 31 5f 73 69 7a 65 3a 3d 6f 73 5e 2e 73 69 7a   ┆st) then begin op1_size:=os^.siz┆
0x064d80…064da0             65 3b 0a 6f 70 32 5f 73 69 7a 65 3a 3d 6f 74 5e 2e 73 69 7a 65 3b 0a 6e 3a 3d 6f 70 31 5f 73 69   ┆e; op2_size:=ot^.size; n:=op1_si┆
0x064da0…064dc0             7a 65 3b 0a 69 66 20 6e 3e 6f 70 32 5f 73 69 7a 65 20 74 68 65 6e 20 6e 3a 3d 6f 70 32 5f 73 69   ┆ze; if n>op2_size then n:=op2_si┆
0x064dc0…064de0             7a 65 3b 0a 6e 31 3a 3d 6e 3b 0a 70 3a 3d 6f 74 5e 2e 6f 66 66 73 65 74 3b 20 20 20 70 6f 70 3b   ┆ze; n1:=n; p:=ot^.offset;   pop;┆
0x064de0…064e00             0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 6e 3a 3d 28 6e 2b 31 29 20 64 69 76 20   ┆ with ot^ do begin n:=(n+1) div ┆
0x064e00…064e20 (26, 1, 13) 32 20 2d 31 3b 20 20 20 71 3a 3d 6f 66 66 73 65 74 3b 0a 62 6f 3a 3d 74 72 75 65 3b 0a 66 6f 72   ┆2 -1;   q:=offset; bo:=true; for┆
0x064e20…064e40             20 69 3a 3d 30 20 74 6f 20 6e 20 64 6f 0a 62 6f 3a 3d 62 6f 20 61 6e 64 20 28 72 65 74 72 69 65   ┆ i:=0 to n do bo:=bo and (retrie┆
0x064e40…064e60             76 65 5f 63 6f 6e 73 74 28 69 2b 70 29 3d 72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 69 2b 71   ┆ve_const(i+p)=retrieve_const(i+q┆
0x064e60…064e80             29 29 3b 0a 69 66 20 6f 70 31 5f 73 69 7a 65 3e 6f 70 32 5f 73 69 7a 65 20 74 68 65 6e 20 62 65   ┆)); if op1_size>op2_size then be┆
0x064e80…064ea0             67 69 6e 0a 66 6f 72 20 69 3a 3d 6e 20 74 6f 20 28 6f 70 31 5f 73 69 7a 65 2b 31 29 64 69 76 20   ┆gin for i:=n to (op1_size+1)div ┆
0x064ea0…064ec0             32 20 2d 20 31 20 64 6f 20 62 6f 3a 3d 62 6f 20 61 6e 64 20 28 72 65 74 72 69 65 76 65 5f 63 6f   ┆2 - 1 do bo:=bo and (retrieve_co┆
0x064ec0…064ee0             6e 73 74 28 69 2b 71 29 3d 73 70 73 70 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 6f 70 32 5f   ┆nst(i+q)=spsp); end else if op2_┆
0x064ee0…064f00             73 69 7a 65 3e 6f 70 31 5f 73 69 7a 65 20 74 68 65 6e 20 62 65 67 69 6e 0a 66 6f 72 20 69 3a 3d   ┆size>op1_size then begin for i:=┆
0x064f00…064f20             6e 20 74 6f 20 28 6f 70 32 5f 73 69 7a 65 2b 31 29 64 69 76 20 32 20 2d 20 31 20 64 6f 20 62 6f   ┆n to (op2_size+1)div 2 - 1 do bo┆
0x064f20…064f40             3a 3d 62 6f 20 61 6e 64 20 28 72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 69 2b 70 29 3d 73 70   ┆:=bo and (retrieve_const(i+p)=sp┆
0x064f40…064f60             73 70 29 3b 0a 65 6e 64 3b 0a 63 61 73 65 20 6f 70 20 6f 66 0a 7a 65 71 3a 20 20 69 66 20 62 6f   ┆sp); end; case op of zeq:  if bo┆
0x064f60…064f80             20 74 68 65 6e 20 6f 66 66 73 65 74 3a 3d 31 20 65 6c 73 65 20 6f 66 66 73 65 74 3a 3d 30 3b 0a   ┆ then offset:=1 else offset:=0; ┆
0x064f80…064fa0             7a 6e 65 3a 20 20 69 66 20 62 6f 20 74 68 65 6e 20 6f 66 66 73 65 74 3a 3d 30 20 65 6c 73 65 20   ┆zne:  if bo then offset:=0 else ┆
0x064fa0…064fc0             6f 66 66 73 65 74 3a 3d 31 3b 0a 65 6e 64 3b 0a 6b 69 6e 64 3a 3d 62 6f 6f 6c 5f 74 79 70 65 3b   ┆offset:=1; end; kind:=bool_type;┆
0x064fc0…064fe0             20 20 20 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 63 6f 6e 74 65 78 74 3a 3d 73   ┆   size:=word_length; context:=s┆
0x064fe0…065000             63 6f 6e 73 74 3b 0a 65 6e 64 3b 20 20 28 2a 77 69 74 68 2a 29 0a 69 66 20 72 65 6d 6f 76 65 31   ┆const; end;  (*with*) if remove1┆
0x065000…065020 (26, 1, 14) 20 74 68 65 6e 20 72 65 6d 6f 76 65 5f 63 6f 6e 73 74 61 6e 74 28 70 29 3b 0a 69 66 20 72 65 6d   ┆ then remove_constant(p); if rem┆
0x065020…065040             6f 76 65 32 20 74 68 65 6e 20 72 65 6d 6f 76 65 5f 63 6f 6e 73 74 61 6e 74 28 71 29 3b 0a 65 6e   ┆ove2 then remove_constant(q); en┆
0x065040…065060             64 0a 65 6c 73 65 20 62 65 67 69 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 0a 69 66 20 28 6b 69 6e   ┆d else begin with ot^ do if (kin┆
0x065060…065080             64 3d 61 72 72 61 79 5f 74 79 70 65 29 20 61 6e 64 20 28 63 6f 6e 74 65 78 74 3d 6c 63 6f 6e 73   ┆d=array_type) and (context=lcons┆
0x065080…0650a0             74 29 20 74 68 65 6e 20 61 64 6a 75 73 74 5f 73 74 72 69 6e 67 28 6f 74 2c 6f 73 29 3b 0a 77 69   ┆t) then adjust_string(ot,os); wi┆
0x0650a0…0650c0             74 68 20 6f 73 5e 20 64 6f 0a 69 66 20 28 6b 69 6e 64 3d 61 72 72 61 79 5f 74 79 70 65 29 20 61   ┆th os^ do if (kind=array_type) a┆
0x0650c0…0650e0             6e 64 20 28 63 6f 6e 74 65 78 74 3d 6c 63 6f 6e 73 74 29 20 74 68 65 6e 20 61 64 6a 75 73 74 5f   ┆nd (context=lconst) then adjust_┆
0x0650e0…065100             73 74 72 69 6e 67 28 6f 73 2c 6f 74 29 3b 0a 6c 6f 61 64 5f 65 78 70 72 3b 20 20 20 70 6f 70 3b   ┆string(os,ot); load_expr;   pop;┆
0x065100…065120             0a 77 69 74 68 20 6f 74 5e 20 64 6f 0a 63 61 73 65 20 6b 69 6e 64 20 6f 66 0a 69 6e 74 5f 74 79   ┆ with ot^ do case kind of int_ty┆
0x065120…065140             70 65 2c 63 68 61 72 5f 74 79 70 65 2c 62 6f 6f 6c 5f 74 79 70 65 2c 73 63 61 6c 61 72 5f 74 79   ┆pe,char_type,bool_type,scalar_ty┆
0x065140…065160             70 65 2c 64 79 6e 5f 73 75 62 72 61 6e 67 65 3a 0a 70 75 74 31 28 7a 63 6f 6d 70 61 72 65 2c 6f   ┆pe,dyn_subrange: put1(zcompare,o┆
0x065160…065180             70 29 3b 0a 61 72 72 61 79 5f 74 79 70 65 2c 20 72 65 63 6f 72 64 5f 74 79 70 65 2c 20 73 79 73   ┆p); array_type, record_type, sys┆
0x065180…0651a0             5f 61 72 72 61 79 5f 74 79 70 65 2c 20 73 79 73 5f 72 65 63 6f 72 64 5f 74 79 70 65 2c 0a 61 6c   ┆_array_type, sys_record_type, al┆
0x0651a0…0651c0             6c 69 67 6e 5f 61 72 72 5f 74 79 70 65 2c 61 6c 6c 69 67 6e 5f 72 65 63 5f 74 79 70 65 3a 0a 62   ┆lign_arr_type,allign_rec_type: b┆
0x0651c0…0651e0             65 67 69 6e 0a 69 66 20 6f 70 3d 7a 65 71 20 74 68 65 6e 20 6f 70 31 3a 3d 7a 65 71 5f 73 74 72   ┆egin if op=zeq then op1:=zeq_str┆
0x0651e0…065200             75 63 0a 65 6c 73 65 20 6f 70 31 3a 3d 7a 6e 65 5f 73 74 72 75 63 3b 0a 69 66 20 64 79 6e 61 6d   ┆uc else op1:=zne_struc; if dynam┆
0x065200…065220 (26, 1, 15) 69 63 20 74 68 65 6e 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 74 79 70 65 5f 6e 69 78 29   ┆ic then with nametable(type_nix)┆
0x065220…065240             5e 20 64 6f 0a 70 75 74 33 28 7a 63 6f 6d 70 64 79 6e 73 74 72 75 63 2c 20 6f 70 31 2c 20 6e 69   ┆^ do put3(zcompdynstruc, op1, ni┆
0x065240…065260             76 2c 20 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 70 75 74 32 28 7a 63 6f 6d 70 73 74 72 75 63 2c   ┆v, offset) else put2(zcompstruc,┆
0x065260…065280             6f 70 31 2c 73 69 7a 65 29 3b 0a 65 6e 64 3b 0a 70 6f 69 6e 74 65 72 5f 74 79 70 65 3a 20 69 66   ┆op1,size); end; pointer_type: if┆
0x065280…0652a0             20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 70 75 74 31 28 7a 63 6f 6d 70 61 72 65 2c 20   ┆ versionz80 then put1(zcompare, ┆
0x0652a0…0652c0             6f 70 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 6f 70 3d 7a 65 71 20 74 68 65 6e 20 6f 70   ┆op) else begin if op=zeq then op┆
0x0652c0…0652e0             31 3a 3d 20 7a 65 71 5f 73 74 72 75 63 0a 65 6c 73 65 20 6f 70 31 3a 3d 20 7a 6e 65 5f 73 74 72   ┆1:= zeq_struc else op1:= zne_str┆
0x0652e0…065300             75 63 3b 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e 0a 77 69 74 68 20 6e 61 6d 65 74 61 62   ┆uc; if dynamic then with nametab┆
0x065300…065320             6c 65 28 74 79 70 65 5f 6e 69 78 29 5e 20 64 6f 0a 70 75 74 33 28 7a 63 6f 6d 70 64 79 6e 73 74   ┆le(type_nix)^ do put3(zcompdynst┆
0x065320…065340             72 75 63 2c 20 6f 70 31 2c 20 6e 69 76 2c 20 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 70 75 74 32   ┆ruc, op1, niv, offset) else put2┆
0x065340…065360             28 7a 63 6f 6d 70 73 74 72 75 63 2c 20 6f 70 31 2c 20 73 69 7a 65 29 3b 0a 65 6e 64 3b 20 28 2a   ┆(zcompstruc, op1, size); end; (*┆
0x065360…065380             20 70 6f 69 6e 74 65 72 20 74 79 70 65 20 2a 29 0a 73 65 74 5f 74 79 70 65 3a 20 62 65 67 69 6e   ┆ pointer type *) set_type: begin┆
0x065380…0653a0             0a 63 61 73 65 20 6f 70 20 6f 66 0a 7a 65 71 3a 20 20 6f 70 31 3a 3d 7a 65 71 5f 73 65 74 3b 0a   ┆ case op of zeq:  op1:=zeq_set; ┆
0x0653a0…0653c0             7a 6e 65 3a 20 20 6f 70 31 3a 3d 7a 6e 65 5f 73 65 74 3b 0a 7a 6c 65 3a 20 20 6f 70 31 3a 3d 7a   ┆zne:  op1:=zne_set; zle:  op1:=z┆
0x0653c0…0653e0             6c 65 5f 73 65 74 3b 0a 7a 67 65 3a 20 20 6f 70 31 3a 3d 7a 67 65 5f 73 65 74 3b 0a 65 6e 64 3b   ┆le_set; zge:  op1:=zge_set; end;┆
0x0653e0…065400             0a 70 75 74 31 28 7a 63 6f 6d 70 61 72 65 2c 6f 70 31 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 63   ┆ put1(zcompare,op1); end; else c┆
0x065400…065420 (27, 0, 1)  6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 20 28 76 61 72 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a   ┆ompiler_error (var_error); end; ┆
0x065420…065440             77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 6b 69 6e 64 3a 3d 62 6f 6f 6c 5f 74 79 70   ┆with ot^ do begin kind:=bool_typ┆
0x065440…065460             65 3b 20 20 20 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 63 6f 6e 74 65 78 74 3a   ┆e;   size:=word_length; context:┆
0x065460…065480             3d 65 78 70 72 3b 20 20 20 20 20 73 74 61 74 65 3a 3d 65 78 70 72 65 73 73 69 6f 6e 3b 0a 65 6e   ┆=expr;     state:=expression; en┆
0x065480…0654a0             64 3b 0a 65 6e 64 3b 0a 65 6e 64 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 63 6c   ┆d; end; end end;  procedure incl┆
0x0654a0…0654c0             75 73 69 6f 6e 3b 0a 62 65 67 69 6e 0a 69 66 20 73 74 61 74 5f 70 61 72 74 20 74 68 65 6e 20 62   ┆usion; begin if stat_part then b┆
0x0654c0…0654e0             65 67 69 6e 0a 67 65 74 5f 70 75 73 68 65 64 5f 63 6f 6e 73 74 73 3b 0a 6c 6f 61 64 5f 65 78 70   ┆egin get_pushed_consts; load_exp┆
0x0654e0…065500             72 3b 20 20 20 70 6f 70 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 70 75 74 31   ┆r;   pop; with ot^ do begin put1┆
0x065500…065520             28 7a 63 6f 6d 70 61 72 65 2c 7a 69 6e 29 3b 0a 6b 69 6e 64 3a 3d 62 6f 6f 6c 5f 74 79 70 65 3b   ┆(zcompare,zin); kind:=bool_type;┆
0x065520…065540             20 20 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 63 6f 6e 74 65 78 74 3a 3d 65 78   ┆  size:=word_length; context:=ex┆
0x065540…065560             70 72 3b 20 20 20 20 20 20 73 74 61 74 65 3a 3d 65 78 70 72 65 73 73 69 6f 6e 3b 0a 65 6e 64 3b   ┆pr;      state:=expression; end;┆
0x065560…065580             0a 65 6e 64 20 65 6c 73 65 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 76 61 72 5f 65 72 72 6f 72 29   ┆ end else begin error(var_error)┆
0x065580…0655a0             3b 0a 70 6f 70 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 61 6e 67   ┆; pop; end; end;  procedure rang┆
0x0655a0…0655c0             65 3b 0a 76 61 72 20 61 2c 62 3a 20 69 6e 74 65 67 65 72 3b 20 20 20 64 79 6e 20 3a 20 62 6f 6f   ┆e; var a,b: integer;   dyn : boo┆
0x0655c0…0655e0             6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 6e 69 78 29 3b 0a 77 69 74 68 20 6e 61   ┆lean; begin passin(nix); with na┆
0x0655e0…065600             6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 61 3a 3d 6d 69 6e 3b 20 20   ┆metable(nix)^ do begin a:=min;  ┆
0x065600…065620 (27, 0, 2)  20 62 3a 3d 6d 61 78 3b 20 20 20 20 64 79 6e 3a 3d 64 79 6e 61 6d 69 63 3b 0a 65 6e 64 3b 0a 69   ┆ b:=max;    dyn:=dynamic; end; i┆
0x065620…065640             66 20 64 79 6e 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 6f 74 5e 2e 63 6f 6e 74 65 78 74 20   ┆f dyn then begin if ot^.context ┆
0x065640…065660             3d 20 73 63 6f 6e 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 75 73 68 3b 20 67 65 74 5f 70 75   ┆= sconst then begin push; get_pu┆
0x065660…065680             73 68 65 64 5f 63 6f 6e 73 74 73 3b 20 70 6f 70 3b 0a 65 6e 64 3b 0a 6c 6f 61 64 5f 6f 70 65 72   ┆shed_consts; pop; end; load_oper┆
0x065680…0656a0             61 6e 64 3b 0a 69 66 20 69 6e 64 65 78 5f 63 68 65 63 6b 20 74 68 65 6e 0a 77 69 74 68 20 6e 61   ┆and; if index_check then with na┆
0x0656a0…0656c0             6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 0a 70 75 74 32 28 7a 64 79 6e 72 61 6e 67 65 74   ┆metable(nix)^ do put2(zdynranget┆
0x0656c0…0656e0             65 73 74 2c 20 6e 69 76 2c 20 6f 66 66 73 65 74 2b 32 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 77 69   ┆est, niv, offset+2); end else wi┆
0x0656e0…065700             74 68 20 6f 74 5e 20 64 6f 0a 69 66 20 63 6f 6e 74 65 78 74 3d 73 63 6f 6e 73 74 20 74 68 65 6e   ┆th ot^ do if context=sconst then┆
0x065700…065720             20 62 65 67 69 6e 0a 69 66 20 28 6f 66 66 73 65 74 3c 61 29 20 6f 72 20 28 6f 66 66 73 65 74 3e   ┆ begin if (offset<a) or (offset>┆
0x065720…065740             62 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 74 79 70 65 5f 65 72 72 6f 72 29 3b   ┆b) then begin error(type_error);┆
0x065740…065760             20 20 20 6f 66 66 73 65 74 3a 3d 61 3b 0a 65 6e 64 3b 0a 65 6e 64 20 65 6c 73 65 20 62 65 67 69   ┆   offset:=a; end; end else begi┆
0x065760…065780             6e 0a 6c 6f 61 64 5f 6f 70 65 72 61 6e 64 3b 0a 69 66 20 69 6e 64 65 78 5f 63 68 65 63 6b 20 74   ┆n load_operand; if index_check t┆
0x065780…0657a0             68 65 6e 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 0a 69 66 20 6e   ┆hen with nametable(nix)^ do if n┆
0x0657a0…0657c0             6f 74 20 28 6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 20 6f 72 20 76 65 72 73 69 6f 6e 7a 38 30 29   ┆ot (lambdaversion or versionz80)┆
0x0657c0…0657e0             20 61 6e 64 20 28 6d 69 6e 3d 30 29 0a 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 72 63 33 35 30 32   ┆ and (min=0) then begin (*rc3502┆
0x0657e0…065800             20 6d 6f 64 65 6c 20 32 20 61 6e 64 20 73 74 61 74 69 63 20 61 72 72 61 79 20 73 74 61 72 74 69   ┆ model 2 and static array starti┆
0x065800…065820 (27, 0, 3)  6e 67 20 69 6e 20 30 2a 29 0a 69 66 20 6c 69 78 20 3c 20 30 20 74 68 65 6e 20 6c 69 78 20 3a 3d   ┆ng in 0*) if lix < 0 then lix :=┆
0x065820…065840             20 2d 6c 69 78 3b 0a 70 75 74 31 28 7a 72 61 6e 67 65 6d 61 78 2c 6d 61 78 29 0a 65 6e 64 0a 65   ┆ -lix; put1(zrangemax,max) end e┆
0x065840…065860             6c 73 65 20 62 65 67 69 6e 0a 69 66 20 6c 69 78 3c 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 6c 69   ┆lse begin if lix<0 then begin li┆
0x065860…065880             78 3a 3d 2d 6c 69 78 3b 0a 61 6c 6c 6f 63 5f 72 61 6e 67 65 5f 64 65 73 63 72 28 6c 69 78 2c 6d   ┆x:=-lix; alloc_range_descr(lix,m┆
0x065880…0658a0             69 6e 2c 6d 61 78 29 3b 0a 65 6e 64 3b 0a 70 75 74 31 28 7a 72 61 6e 67 65 74 65 73 74 2c 6c 69   ┆in,max); end; put1(zrangetest,li┆
0x0658a0…0658c0             78 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 75   ┆x); end; end; end;  procedure fu┆
0x0658c0…0658e0             6e 63 5f 63 61 6c 6c 3b 0a 76 61 72 20 70 2c 71 2c 72 65 73 75 6c 74 5f 73 69 7a 65 2c 73 74 64   ┆nc_call; var p,q,result_size,std┆
0x0658e0…065900             2c 61 6c 6c 6f 63 5f 73 69 7a 65 3a 20 69 6e 74 65 67 65 72 3b 20 20 20 76 69 61 5f 73 74 61 63   ┆,alloc_size: integer;   via_stac┆
0x065900…065920             6b 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 70 75 73 68 3b 0a 67 65 74 5f 70 75 73   ┆k : boolean; begin push; get_pus┆
0x065920…065940             68 65 64 5f 63 6f 6e 73 74 73 3b 0a 70 61 73 73 69 6e 28 6e 69 78 29 3b 20 20 20 73 74 64 3a 3d   ┆hed_consts; passin(nix);   std:=┆
0x065940…065960             30 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 0a 69 66 20 6e 69   ┆0; with nametable(nix)^ do if ni┆
0x065960…065980             76 3c 30 20 74 68 65 6e 20 62 65 67 69 6e 20 20 28 2a 65 78 74 65 72 6e 61 6c 20 6f 72 20 73 74   ┆v<0 then begin  (*external or st┆
0x065980…0659a0             64 20 66 75 6e 63 74 69 6f 6e 20 2a 29 0a 73 74 64 3a 3d 2d 6e 69 76 2d 31 3b 0a 69 66 20 6e 69   ┆d function *) std:=-niv-1; if ni┆
0x0659a0…0659c0             76 3d 2d 31 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 75 74 32 28 7a 65 78 74 66 75 6e 63 63 61 6c   ┆v=-1 then begin put2(zextfunccal┆
0x0659c0…0659e0             6c 2c 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 29 3b 20 20 28 2a 20 6f 66 66 73 65 74 20 3d 20 6e   ┆l, offset, size);  (* offset = n┆
0x0659e0…065a00             61 6d 65 20 6b 65 79 20 2a 29 0a 65 6e 64 20 65 6c 73 65 20 70 75 74 31 28 7a 73 74 64 66 75 6e   ┆ame key *) end else put1(zstdfun┆
0x065a00…065a20 (27, 0, 4)  63 63 61 6c 6c 2c 20 73 74 64 20 29 3b 0a 65 6e 64 20 0a 65 6c 73 65 20 70 75 74 33 28 7a 66 75   ┆ccall, std ); end  else put3(zfu┆
0x065a20…065a40             6e 63 63 61 6c 6c 2c 6e 69 76 2c 6c 69 78 2c 20 73 69 7a 65 29 3b 0a 70 75 73 68 5f 6e 61 6d 65   ┆nccall,niv,lix, size); push_name┆
0x065a40…065a60             28 6e 69 78 29 3b 20 20 20 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 70   ┆(nix);   pop_to_free_stack(1); p┆
0x065a60…065a80             61 73 73 69 6e 28 70 29 3b 0a 69 66 20 73 74 64 3e 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 63 61   ┆assin(p); if std>0 then begin ca┆
0x065a80…065aa0             73 65 20 73 74 64 20 6f 66 0a 7a 73 75 63 63 3a 20 70 75 74 5f 61 72 67 31 28 6e 61 6d 65 74 61   ┆se std of zsucc: put_arg1(nameta┆
0x065aa0…065ac0             62 6c 65 28 70 29 5e 2e 6d 61 78 29 3b 0a 7a 70 72 65 64 3a 20 70 75 74 5f 61 72 67 31 28 6e 61   ┆ble(p)^.max); zpred: put_arg1(na┆
0x065ac0…065ae0             6d 65 74 61 62 6c 65 28 70 29 5e 2e 6d 69 6e 29 3b 0a 7a 6e 69 6c 2c 20 7a 6e 69 6c 72 65 66 3a   ┆metable(p)^.min); znil, znilref:┆
0x065ae0…065b00             20 3b 20 28 2a 20 6e 6f 20 61 63 74 69 6f 6e 20 2a 29 0a 65 6c 73 65 20 20 20 20 20 20 20 20 20   ┆ ; (* no action *) else         ┆
0x065b00…065b20             20 20 3b 20 28 2a 20 6e 6f 20 61 63 74 69 6f 6e 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 77 69   ┆  ; (* no action *) end; end; wi┆
0x065b20…065b40             74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 77 69 74 68   ┆th nametable(nix)^ do begin with┆
0x065b40…065b60             20 6e 61 6d 65 74 61 62 6c 65 28 70 29 5e 20 64 6f 20 62 65 67 69 6e 0a 72 65 73 75 6c 74 5f 73   ┆ nametable(p)^ do begin result_s┆
0x065b60…065b80             69 7a 65 3a 3d 73 69 7a 65 3b 0a 76 69 61 5f 73 74 61 63 6b 3a 3d 63 6f 6e 74 65 78 74 20 69 6e   ┆ize:=size; via_stack:=context in┆
0x065b80…065ba0             20 64 69 72 65 63 74 5f 72 65 74 75 72 6e 3b 0a 69 66 20 64 79 6e 61 6d 69 63 20 61 6e 64 20 28   ┆ direct_return; if dynamic and (┆
0x065ba0…065bc0             63 6f 6e 74 65 78 74 3c 3e 64 79 6e 5f 73 75 62 72 61 6e 67 65 29 20 74 68 65 6e 20 65 72 72 6f   ┆context<>dyn_subrange) then erro┆
0x065bc0…065be0             72 28 65 72 72 6f 72 5f 64 79 6e 29 3b 0a 65 6e 64 3b 0a 63 6f 6e 74 65 78 74 3a 3d 66 75 6e 63   ┆r(error_dyn); end; context:=func┆
0x065be0…065c00             5f 72 65 73 75 6c 74 3b 0a 69 66 20 6e 6f 74 20 76 69 61 5f 73 74 61 63 6b 20 74 68 65 6e 20 62   ┆_result; if not via_stack then b┆
0x065c00…065c20 (27, 0, 5)  65 67 69 6e 0a 6e 69 76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b 0a 69 66 20 28 2a 20 2a 2a 7a   ┆egin niv:=current_niv; if (* **z┆
0x065c20…065c40             38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66   ┆80** *) versionz80 then begin if┆
0x065c40…065c60             20 72 65 73 75 6c 74 5f 73 69 7a 65 3d 62 79 74 65 5f 6c 65 6e 67 74 68 20 74 68 65 6e 0a 61 6c   ┆ result_size=byte_length then al┆
0x065c60…065c80             6c 6f 63 5f 73 69 7a 65 3a 3d 72 65 73 75 6c 74 5f 73 69 7a 65 2b 31 20 65 6c 73 65 20 61 6c 6c   ┆loc_size:=result_size+1 else all┆
0x065c80…065ca0             6f 63 5f 73 69 7a 65 3a 3d 72 65 73 75 6c 74 5f 73 69 7a 65 3b 0a 65 6e 64 0a 65 6c 73 65 0a 28   ┆oc_size:=result_size; end else (┆
0x065ca0…065cc0             2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 69 66 20 6f 64   ┆* **lambda or rc3502c** *) if od┆
0x065cc0…065ce0             64 28 72 65 73 75 6c 74 5f 73 69 7a 65 29 20 74 68 65 6e 20 0a 61 6c 6c 6f 63 5f 73 69 7a 65 3a   ┆d(result_size) then  alloc_size:┆
0x065ce0…065d00             3d 72 65 73 75 6c 74 5f 73 69 7a 65 2b 31 20 65 6c 73 65 20 61 6c 6c 6f 63 5f 73 69 7a 65 3a 3d   ┆=result_size+1 else alloc_size:=┆
0x065d00…065d20             72 65 73 75 6c 74 5f 73 69 7a 65 3b 0a 71 3a 3d 61 6c 6c 6f 63 5f 74 65 6d 70 28 61 6c 6c 6f 63   ┆result_size; q:=alloc_temp(alloc┆
0x065d20…065d40             5f 73 69 7a 65 29 3b 0a 6f 66 66 73 65 74 3a 3d 71 3b 0a 65 6e 64 20 28 2a 20 6e 6f 74 20 76 69   ┆_size); offset:=q; end (* not vi┆
0x065d40…065d60             61 20 73 74 61 63 6b 20 2a 29 0a 65 6c 73 65 0a 61 6c 6c 6f 63 5f 73 69 7a 65 3a 3d 30 3b 0a 65   ┆a stack *) else alloc_size:=0; e┆
0x065d60…065d80             6e 64 3b 0a 76 69 61 5f 73 74 61 63 6b 3a 3d 76 69 61 5f 73 74 61 63 6b 20 6f 72 20 28 73 74 64   ┆nd; via_stack:=via_stack or (std┆
0x065d80…065da0             3e 30 29 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 74 79 70 65 5f 6e 69 78 3a   ┆>0); with ot^ do begin type_nix:┆
0x065da0…065dc0             3d 70 3b 0a 76 61 72 5f 6e 69 78 3a 3d 6e 69 78 3b 0a 6b 69 6e 64 3a 3d 6e 61 6d 65 74 61 62 6c   ┆=p; var_nix:=nix; kind:=nametabl┆
0x065dc0…065de0             65 28 70 29 5e 2e 63 6f 6e 74 65 78 74 3b 0a 6e 69 76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b   ┆e(p)^.context; niv:=current_niv;┆
0x065de0…065e00             20 20 20 63 6f 6e 74 65 78 74 3a 3d 66 75 6e 63 5f 72 65 73 75 6c 74 3b 0a 6f 66 66 73 65 74 3a   ┆   context:=func_result; offset:┆
0x065e00…065e20 (27, 0, 6)  3d 71 3b 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 3a 3d 72 65 73 75 6c 74 5f 73 69 7a 65 3b 0a   ┆=q;          size:=result_size; ┆
0x065e20…065e40             6c 69 78 3a 3d 6e 61 6d 65 74 61 62 6c 65 28 70 29 5e 2e 6c 69 78 3b 0a 61 72 72 61 79 5f 70 61   ┆lix:=nametable(p)^.lix; array_pa┆
0x065e40…065e60             63 6b 65 64 3a 3d 6e 61 6d 65 74 61 62 6c 65 28 70 29 5e 2e 70 61 63 6b 65 64 5f 63 6f 6d 70 3b   ┆cked:=nametable(p)^.packed_comp;┆
0x065e60…065e80             0a 66 69 65 6c 64 5f 70 61 63 6b 65 64 3a 3d 66 61 6c 73 65 3b 0a 66 75 6e 63 5f 76 61 6c 75 65   ┆ field_packed:=false; func_value┆
0x065e80…065ea0             3a 3d 76 69 61 5f 73 74 61 63 6b 3b 0a 73 74 61 74 65 3a 3d 64 69 72 65 63 74 3b 0a 74 65 6d 70   ┆:=via_stack; state:=direct; temp┆
0x065ea0…065ec0             5f 73 69 7a 65 3a 3d 61 6c 6c 6f 63 5f 73 69 7a 65 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73   ┆_size:=alloc_size; dynamic:=fals┆
0x065ec0…065ee0             65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 66 75 6e 63   ┆e; end; end;  procedure end_func┆
0x065ee0…065f00             5f 63 61 6c 6c 3b 0a 62 65 67 69 6e 0a 69 66 20 6e 6f 74 20 6f 74 5e 2e 66 75 6e 63 5f 76 61 6c   ┆_call; begin if not ot^.func_val┆
0x065f00…065f20             75 65 20 74 68 65 6e 20 62 65 67 69 6e 0a 6c 6f 61 64 5f 6f 70 65 72 61 6e 64 3b 0a 65 6e 64 0a   ┆ue then begin load_operand; end ┆
0x065f20…065f40             65 6c 73 65 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 0a 28 2a 73 69 7a 65 20 6f   ┆else with ot^ do begin  (*size o┆
0x065f40…065f60             66 20 62 79 74 65 73 20 61 6e 64 20 70 6f 69 6e 74 65 72 73 28 33 20 62 79 74 65 73 29 20 6f 63   ┆f bytes and pointers(3 bytes) oc┆
0x065f60…065f80             63 75 70 69 65 64 20 6f 6e 20 73 74 61 63 6b 20 69 73 20 61 20 77 6f 72 64 20 66 6f 72 0a 20 20   ┆cupied on stack is a word for   ┆
0x065f80…065fa0             61 20 62 79 74 65 20 61 6e 64 20 61 20 64 6f 75 62 6c 65 20 66 6f 72 20 61 20 70 6f 69 6e 74 65   ┆a byte and a double for a pointe┆
0x065fa0…065fc0             72 2e 20 69 2e 65 2e 20 74 68 65 20 73 69 7a 65 20 68 61 73 20 74 6f 20 62 65 20 65 76 65 6e 20   ┆r. i.e. the size has to be even ┆
0x065fc0…065fe0             2a 29 0a 69 66 20 6f 64 64 28 73 69 7a 65 29 20 74 68 65 6e 20 73 69 7a 65 20 3a 3d 20 73 69 7a   ┆*) if odd(size) then size := siz┆
0x065fe0…066000             65 20 2b 20 31 3b 0a 73 74 61 74 65 3a 3d 65 78 70 72 65 73 73 69 6f 6e 3b 20 20 20 63 6f 6e 74   ┆e + 1; state:=expression;   cont┆
0x066000…066020 (27, 0, 7)  65 78 74 3a 3d 65 78 70 72 3b 0a 65 6e 64 3b 0a 70 75 74 31 28 7a 65 6e 64 66 75 6e 63 63 61 6c   ┆ext:=expr; end; put1(zendfunccal┆
0x066020…066040             6c 2c 6f 74 5e 2e 73 69 7a 65 29 3b 0a 72 65 6c 65 61 73 65 5f 74 65 6d 70 28 6f 74 5e 2e 74 65   ┆l,ot^.size); release_temp(ot^.te┆
0x066040…066060             6d 70 5f 73 69 7a 65 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 72 6f 63 5f 63   ┆mp_size); end;  procedure proc_c┆
0x066060…066080             61 6c 6c 3b 0a 76 61 72 0a 73 74 64 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 61 73   ┆all; var std: integer; begin pas┆
0x066080…0660a0             73 69 6e 28 6e 69 78 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64   ┆sin(nix); with nametable(nix)^ d┆
0x0660a0…0660c0             6f 0a 69 66 20 6e 69 76 3c 30 20 74 68 65 6e 20 62 65 67 69 6e 20 20 28 2a 20 65 78 74 65 72 6e   ┆o if niv<0 then begin  (* extern┆
0x0660c0…0660e0             61 6c 20 6f 72 20 73 74 61 6e 64 61 72 64 20 2a 29 0a 73 74 64 3a 3d 20 2d 6e 69 76 2d 31 3b 0a   ┆al or standard *) std:= -niv-1; ┆
0x0660e0…066100             69 66 20 28 6e 69 76 3d 2d 31 29 20 6f 72 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 28   ┆if (niv=-1) or versionz80 then (┆
0x066100…066120             2a 20 65 78 74 65 72 6e 61 6c 20 2a 29 0a 70 75 74 32 28 7a 65 78 74 70 72 6f 63 63 61 6c 6c 2c   ┆* external *) put2(zextproccall,┆
0x066120…066140             20 6f 66 66 73 65 74 2c 20 73 69 7a 65 29 20 20 28 2a 20 6f 66 66 73 65 74 20 3d 20 6e 61 6d 65   ┆ offset, size)  (* offset = name┆
0x066140…066160             5f 6b 65 79 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 73 74 61 6e 64 61 72 64 20 70   ┆_key *) else begin (* standard p┆
0x066160…066180             72 6f 63 65 64 75 72 65 20 63 61 6c 6c 2c 20 6d 75 73 74 20 62 65 20 4e 45 57 2d 63 61 6c 6c 20   ┆rocedure call, must be NEW-call ┆
0x066180…0661a0             2a 29 0a 70 75 74 31 28 7a 73 74 64 70 72 6f 63 63 61 6c 6c 2c 20 73 74 64 29 3b 0a 6e 65 77 5f   ┆*) put1(zstdproccall, std); new_┆
0x0661a0…0661c0             63 61 6c 6c 3a 3d 20 74 72 75 65 3b 20 28 2a 20 66 6c 61 67 20 73 70 65 63 69 61 6c 20 63 61 6c   ┆call:= true; (* flag special cal┆
0x0661c0…0661e0             6c 2c 20 75 73 65 64 20 61 74 20 65 6e 64 61 63 74 75 61 6c 20 61 6e 64 20 65 6e 64 70 72 6f 63   ┆l, used at endactual and endproc┆
0x0661e0…066200             63 61 6c 6c 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 6e 65 77 20 63 61 6c 6c 20 2a 29 0a 65 6e 64 20   ┆call *) end; (* new call *) end ┆
0x066200…066220 (27, 0, 8)  28 2a 20 6e 69 76 3c 30 20 2a 29 0a 65 6c 73 65 20 70 75 74 33 28 7a 70 72 6f 63 63 61 6c 6c 2c   ┆(* niv<0 *) else put3(zproccall,┆
0x066220…066240             6e 69 76 2c 6c 69 78 2c 73 69 7a 65 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 61   ┆niv,lix,size); end;  procedure a┆
0x066240…066260             63 74 75 61 6c 3b 0a 76 61 72 20 73 20 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 61   ┆ctual; var s : integer; begin pa┆
0x066260…066280             73 73 69 6e 28 6e 69 78 29 3b 20 20 20 70 75 73 68 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c   ┆ssin(nix);   push; with nametabl┆
0x066280…0662a0             65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 6f 74 5e 2e 64 79 6e 61 6d 69 63 20 3a 3d 20   ┆e(nix)^ do begin ot^.dynamic := ┆
0x0662a0…0662c0             66 61 6c 73 65 3b 0a 6f 74 5e 2e 74 79 70 65 5f 6e 69 78 3a 3d 63 6f 6d 70 5f 74 79 70 65 3b 0a   ┆false; ot^.type_nix:=comp_type; ┆
0x0662c0…0662e0             6f 74 5e 2e 76 61 72 5f 6e 69 78 3a 3d 6e 69 78 3b 0a 6f 74 5e 2e 6b 69 6e 64 3a 3d 6e 61 6d 65   ┆ot^.var_nix:=nix; ot^.kind:=name┆
0x0662e0…066300             74 61 62 6c 65 28 63 6f 6d 70 5f 74 79 70 65 29 5e 2e 63 6f 6e 74 65 78 74 3b 0a 6f 74 5e 2e 73   ┆table(comp_type)^.context; ot^.s┆
0x066300…066320             69 7a 65 3a 3d 6e 61 6d 65 74 61 62 6c 65 28 63 6f 6d 70 5f 74 79 70 65 29 5e 2e 73 69 7a 65 3b   ┆ize:=nametable(comp_type)^.size;┆
0x066320…066340             0a 73 3a 3d 6f 74 5e 2e 73 69 7a 65 3b 0a 69 66 20 73 20 3c 20 77 6f 72 64 5f 6c 65 6e 67 74 68   ┆ s:=ot^.size; if s < word_length┆
0x066340…066360             20 74 68 65 6e 20 73 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 6f 74 5e 2e 63 6f 6e 74 65 78   ┆ then s:=word_length; ot^.contex┆
0x066360…066380             74 3a 3d 63 6f 6e 74 65 78 74 3b 20 20 28 2a 73 61 76 65 20 70 61 72 61 6d 65 74 65 72 20 74 79   ┆t:=context;  (*save parameter ty┆
0x066380…0663a0             70 65 2a 29 0a 63 61 73 65 20 63 6f 6e 74 65 78 74 20 6f 66 0a 76 61 72 5f 70 61 72 61 6d 3a 20   ┆pe*) case context of var_param: ┆
0x0663a0…0663c0             20 70 75 74 30 28 7a 76 61 72 70 61 72 61 6d 29 3b 0a 76 61 6c 75 65 5f 70 61 72 61 6d 3a 20 62   ┆ put0(zvarparam); value_param: b┆
0x0663c0…0663e0             65 67 69 6e 0a 70 75 74 30 28 7a 76 61 6c 75 65 70 61 72 61 6d 29 3b 0a 77 69 74 68 20 6e 61 6d   ┆egin put0(zvalueparam); with nam┆
0x0663e0…066400             65 74 61 62 6c 65 28 63 6f 6d 70 5f 74 79 70 65 29 5e 20 64 6f 0a 63 61 73 65 20 63 6f 6e 74 65   ┆etable(comp_type)^ do case conte┆
0x066400…066420 (27, 0, 9)  78 74 20 6f 66 0a 69 6e 74 5f 74 79 70 65 2c 20 63 68 61 72 5f 74 79 70 65 2c 20 62 6f 6f 6c 5f   ┆xt of int_type, char_type, bool_┆
0x066420…066440             74 79 70 65 2c 20 73 63 61 6c 61 72 5f 74 79 70 65 3a 20 70 75 74 5f 61 72 67 31 28 77 6f 72 64   ┆type, scalar_type: put_arg1(word┆
0x066440…066460             5f 74 79 70 29 3b 0a 70 6f 69 6e 74 65 72 5f 74 79 70 65 3a 20 70 75 74 5f 61 72 67 31 28 74 79   ┆_typ); pointer_type: put_arg1(ty┆
0x066460…066480             70 65 5f 70 6f 69 6e 74 65 72 29 3b 0a 73 65 74 5f 74 79 70 65 3a 20 70 75 74 5f 61 72 67 32 28   ┆pe_pointer); set_type: put_arg2(┆
0x066480…0664a0             73 65 74 5f 74 79 70 2c 73 69 7a 65 29 3b 0a 65 6c 73 65 20 70 75 74 5f 61 72 67 32 28 61 64 64   ┆set_typ,size); else put_arg2(add┆
0x0664a0…0664c0             72 5f 74 79 70 2c 73 69 7a 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 72 65 74 75 72 6e 5f 70 61   ┆r_typ,size); end; end; return_pa┆
0x0664c0…0664e0             72 61 6d 3a 20 69 66 20 76 65 72 73 69 6f 6e 7a 38 30 20 6f 72 20 6c 61 6d 62 64 61 76 65 72 73   ┆ram: if versionz80 or lambdavers┆
0x0664e0…066500             69 6f 6e 20 74 68 65 6e 20 70 75 74 31 28 7a 72 65 74 75 72 6e 70 61 72 61 6d 2c 73 29 0a 65 6c   ┆ion then put1(zreturnparam,s) el┆
0x066500…066520             73 65 20 62 65 67 69 6e 20 28 2a 72 63 33 35 30 32 63 2a 29 0a 69 66 20 6f 64 64 28 73 29 20 74   ┆se begin (*rc3502c*) if odd(s) t┆
0x066520…066540             68 65 6e 20 73 20 3a 3d 20 73 2b 31 3b 0a 70 75 74 31 28 7a 72 65 74 75 72 6e 70 61 72 61 6d 2c   ┆hen s := s+1; put1(zreturnparam,┆
0x066540…066560             73 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75   ┆s); end; end; end; end;  procedu┆
0x066560…066580             72 65 20 65 6e 64 5f 61 63 74 75 61 6c 3b 0a 76 61 72 0a 70 6f 69 6e 74 65 64 5f 74 79 70 65 5f   ┆re end_actual; var pointed_type_┆
0x066580…0665a0             6e 69 78 3a 20 69 6e 74 65 67 65 72 3b 20 28 2a 20 75 73 65 64 20 66 6f 72 20 63 61 6c 6c 20 6f   ┆nix: integer; (* used for call o┆
0x0665a0…0665c0             66 20 4e 45 57 2c 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 20 6e 65 77 20 6f 62 6a 65 63   ┆f NEW, the type of the new objec┆
0x0665c0…0665e0             74 20 2a 29 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20   ┆t *) begin with ot^ do begin if ┆
0x0665e0…066600             63 6f 6e 74 65 78 74 3d 73 74 72 75 63 5f 63 20 74 68 65 6e 20 63 6f 6e 74 65 78 74 3a 3d 6c 63   ┆context=struc_c then context:=lc┆
0x066600…066620 (27, 0, 10) 6f 6e 73 74 3b 0a 69 66 20 28 63 6f 6e 74 65 78 74 3d 6c 63 6f 6e 73 74 29 20 61 6e 64 20 28 6b   ┆onst; if (context=lconst) and (k┆
0x066620…066640             69 6e 64 3d 61 72 72 61 79 5f 74 79 70 65 29 20 74 68 65 6e 0a 69 66 20 6f 73 5e 2e 73 69 7a 65   ┆ind=array_type) then if os^.size┆
0x066640…066660             3c 3e 73 69 7a 65 20 74 68 65 6e 20 61 64 6a 75 73 74 5f 73 74 72 69 6e 67 28 6f 74 2c 6f 73 29   ┆<>size then adjust_string(ot,os)┆
0x066660…066680             3b 0a 65 6e 64 3b 0a 77 69 74 68 20 6f 73 5e 20 64 6f 0a 63 61 73 65 20 63 6f 6e 74 65 78 74 20   ┆; end; with os^ do case context ┆
0x066680…0666a0             6f 66 0a 76 61 6c 75 65 5f 70 61 72 61 6d 3a 20 20 20 6c 6f 61 64 5f 65 78 70 72 3b 0a 76 61 72   ┆of value_param:   load_expr; var┆
0x0666a0…0666c0             5f 70 61 72 61 6d 3a 20 62 65 67 69 6e 0a 69 66 20 6f 74 5e 2e 63 6f 6e 74 65 78 74 3d 73 63 6f   ┆_param: begin if ot^.context=sco┆
0x0666c0…0666e0             6e 73 74 20 74 68 65 6e 20 28 2a 20 73 69 6d 70 6c 65 20 63 6f 6e 73 74 61 6e 74 20 61 73 20 72   ┆nst then (* simple constant as r┆
0x0666e0…066700             65 61 64 6f 6e 6c 79 2d 76 61 72 2d 70 61 72 61 6d 2c 20 73 69 6d 75 6c 61 74 65 20 73 74 72 75   ┆eadonly-var-param, simulate stru┆
0x066700…066720             63 74 75 72 65 64 20 63 6f 6e 73 74 20 2a 29 0a 77 69 74 68 20 6f 74 5e 20 64 6f 0a 62 65 67 69   ┆ctured const *) with ot^ do begi┆
0x066720…066740             6e 0a 66 69 72 73 74 3a 3d 20 6f 66 66 73 65 74 3b 20 28 2a 20 73 61 76 65 20 76 61 6c 75 65 20   ┆n first:= offset; (* save value ┆
0x066740…066760             6f 66 20 63 6f 6e 73 74 61 6e 74 20 2a 29 0a 61 6c 6c 6f 63 5f 63 6f 6e 73 74 61 6e 74 28 6e 69   ┆of constant *) alloc_constant(ni┆
0x066760…066780             76 20 28 2a 20 6f 66 20 6f 74 20 2a 29 2c 20 6f 66 66 73 65 74 20 28 2a 20 6f 66 20 6f 74 20 2a   ┆v (* of ot *), offset (* of ot *┆
0x066780…0667a0             29 2c 20 6f 73 5e 2e 73 69 7a 65 29 3b 0a 69 66 20 6f 73 5e 2e 73 69 7a 65 3d 62 79 74 65 5f 6c   ┆), os^.size); if os^.size=byte_l┆
0x0667a0…0667c0             65 6e 67 74 68 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 28 66 69 72 73 74 3e 6d 61 78 5f 62   ┆ength then begin if (first>max_b┆
0x0667c0…0667e0             79 74 65 5f 76 61 6c 75 65 29 20 6f 72 20 28 66 69 72 73 74 3c 30 29 20 74 68 65 6e 0a 62 65 67   ┆yte_value) or (first<0) then beg┆
0x0667e0…066800             69 6e 0a 66 69 72 73 74 3a 3d 20 30 3b 0a 65 72 72 6f 72 28 74 79 70 65 5f 65 72 72 6f 72 29 3b   ┆in first:= 0; error(type_error);┆
0x066800…066820 (27, 0, 11) 0a 65 6e 64 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38   ┆ end; if (* **z80** *) versionz8┆
0x066820…066840             30 20 74 68 65 6e 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 6f 66 66 73 65 74 2c 20 66 69 72 73   ┆0 then update_const(offset, firs┆
0x066840…066860             74 29 0a 65 6c 73 65 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 6f 66 66 73 65 74 2c 20 66 69 72   ┆t) else update_const(offset, fir┆
0x066860…066880             73 74 20 73 68 6c 20 38 29 3b 20 28 2a 20 52 43 33 35 30 32 32 20 2a 29 0a 65 6e 64 0a 65 6c 73   ┆st shl 8); (* RC35022 *) end els┆
0x066880…0668a0             65 0a 62 65 67 69 6e 20 28 2a 20 77 6f 72 64 20 6c 65 6e 67 74 68 20 63 6f 6e 73 74 61 6e 74 20   ┆e begin (* word length constant ┆
0x0668a0…0668c0             2a 29 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74   ┆*) if (* **z80** *) versionz80 t┆
0x0668c0…0668e0             68 65 6e 0a 66 69 72 73 74 3a 3d 20 73 77 61 70 28 66 69 72 73 74 29 3b 0a 75 70 64 61 74 65 5f   ┆hen first:= swap(first); update_┆
0x0668e0…066900             63 6f 6e 73 74 28 6f 66 66 73 65 74 2c 20 66 69 72 73 74 29 3b 0a 65 6e 64 3b 0a 63 6f 6e 74 65   ┆const(offset, first); end; conte┆
0x066900…066920             78 74 3a 3d 20 73 74 72 75 63 5f 63 3b 20 28 2a 20 63 68 61 6e 67 65 20 63 6f 6e 74 65 78 74 20   ┆xt:= struc_c; (* change context ┆
0x066920…066940             2a 29 0a 76 61 72 5f 6e 69 78 3a 3d 20 2d 31 3b 0a 65 6e 64 3b 20 28 2a 20 73 63 6f 6e 73 74 2c   ┆*) var_nix:= -1; end; (* sconst,┆
0x066940…066960             20 73 69 6d 75 6c 61 74 65 20 73 74 72 75 63 20 2a 29 0a 61 64 64 72 65 73 73 3b 0a 65 6e 64 3b   ┆ simulate struc *) address; end;┆
0x066960…066980             20 28 2a 20 76 61 72 70 61 72 61 6d 20 2a 29 0a 72 65 74 75 72 6e 5f 70 61 72 61 6d 3a 20 20 3b   ┆ (* varparam *) return_param:  ;┆
0x066980…0669a0             20 20 28 2a 20 6e 6f 20 61 63 74 69 6f 6e 20 2a 29 0a 65 6e 64 3b 0a 69 66 20 6e 65 77 5f 63 61   ┆  (* no action *) end; if new_ca┆
0x0669a0…0669c0             6c 6c 20 74 68 65 6e 0a 28 2a 20 63 6f 6e 76 65 72 74 20 74 6f 20 73 70 65 63 69 61 6c 20 63 61   ┆ll then (* convert to special ca┆
0x0669c0…0669e0             6c 6c 2c 20 69 2e 65 2e 20 61 64 64 20 72 65 74 75 72 6e 70 61 72 61 6d 2c 20 73 69 7a 65 20 70   ┆ll, i.e. add returnparam, size p┆
0x0669e0…066a00             61 72 61 6d 65 74 65 72 2c 20 61 6e 64 20 61 6c 6c 69 67 6e 20 70 61 72 61 6d 65 74 65 72 20 2a   ┆arameter, and allign parameter *┆
0x066a00…066a20 (27, 0, 12) 29 0a 62 65 67 69 6e 0a 70 75 74 31 28 7a 72 65 74 75 72 6e 70 61 72 61 6d 2c 20 34 20 28 2a 20   ┆) begin put1(zreturnparam, 4 (* ┆
0x066a20…066a40             73 69 7a 65 20 6f 66 20 72 65 73 75 6c 74 2c 20 28 70 6f 69 6e 74 65 72 29 20 2a 29 29 3b 0a 70   ┆size of result, (pointer) *)); p┆
0x066a40…066a60             75 74 31 28 7a 76 61 6c 75 65 70 61 72 61 6d 2c 20 77 6f 72 64 5f 74 79 70 29 3b 0a 70 6f 69 6e   ┆ut1(zvalueparam, word_typ); poin┆
0x066a60…066a80             74 65 64 5f 74 79 70 65 5f 6e 69 78 3a 3d 20 6e 61 6d 65 74 61 62 6c 65 28 20 6f 74 5e 2e 74 79   ┆ted_type_nix:= nametable( ot^.ty┆
0x066a80…066aa0             70 65 5f 6e 69 78 20 28 2a 20 74 68 65 20 70 6f 69 6e 74 65 72 20 2a 29 20 29 5e 2e 63 6f 6d 70   ┆pe_nix (* the pointer *) )^.comp┆
0x066aa0…066ac0             5f 74 79 70 65 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 20 70 6f 69 6e 74 65 64 5f 74   ┆_type; with nametable( pointed_t┆
0x066ac0…066ae0             79 70 65 5f 6e 69 78 20 29 5e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 64 79 6e 61 6d 69 63 20 74   ┆ype_nix )^ do begin if dynamic t┆
0x066ae0…066b00             68 65 6e 0a 62 65 67 69 6e 0a 70 75 74 32 28 7a 61 64 64 72 2c 20 6e 69 76 2c 20 6f 66 66 73 65   ┆hen begin put2(zaddr, niv, offse┆
0x066b00…066b20             74 29 3b 20 28 2a 20 73 69 7a 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65   ┆t); (* size information from the┆
0x066b20…066b40             20 64 6f 70 65 20 76 65 63 74 6f 72 20 2a 29 0a 70 75 74 31 28 7a 69 6e 64 76 61 72 2c 20 77 6f   ┆ dope vector *) put1(zindvar, wo┆
0x066b40…066b60             72 64 5f 74 79 70 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 70 75 74 31 28 7a 63 6f 6e 73 74 2c 20 73   ┆rd_typ); end else put1(zconst, s┆
0x066b60…066b80             69 7a 65 29 3b 0a 28 2a 20 61 64 64 20 61 6c 6c 69 67 6e 20 70 61 72 61 6d 65 74 65 72 20 2a 29   ┆ize); (* add allign parameter *)┆
0x066b80…066ba0             0a 70 75 74 31 28 7a 76 61 6c 75 65 70 61 72 61 6d 2c 20 77 6f 72 64 5f 74 79 70 29 3b 0a 70 75   ┆ put1(zvalueparam, word_typ); pu┆
0x066ba0…066bc0             74 31 28 7a 63 6f 6e 73 74 2c 20 6f 72 64 28 63 6f 6e 74 65 78 74 20 69 6e 20 61 6c 6c 69 67 6e   ┆t1(zconst, ord(context in allign┆
0x066bc0…066be0             5f 74 79 70 65 73 29 29 3b 0a 70 75 74 30 28 7a 65 6e 64 6e 65 77 63 61 6c 6c 29 3b 0a 69 66 20   ┆_types)); put0(zendnewcall); if ┆
0x066be0…066c00             63 6f 6e 74 65 78 74 20 69 6e 20 69 6e 69 74 5f 74 79 70 65 73 20 74 68 65 6e 0a 73 79 73 74 65   ┆context in init_types then syste┆
0x066c00…066c20 (27, 0, 13) 6d 5f 69 6e 69 74 28 70 6f 69 6e 74 65 64 5f 74 79 70 65 5f 6e 69 78 2c 20 30 20 28 2a 20 6e 6f   ┆m_init(pointed_type_nix, 0 (* no┆
0x066c20…066c40             74 20 75 73 65 64 20 2a 29 29 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 6e 61 6d 65 74 61 62   ┆t used *)); end; (* with nametab┆
0x066c40…066c60             6c 65 5b 20 70 6f 69 6e 74 65 64 20 74 79 70 65 20 6e 69 78 20 5d 20 2a 29 0a 65 6e 64 3b 20 28   ┆le[ pointed type nix ] *) end; (┆
0x066c60…066c80             2a 20 6e 65 77 20 63 61 6c 6c 20 2a 29 0a 70 6f 70 3b 20 28 2a 20 65 78 70 72 20 6f 72 20 61 64   ┆* new call *) pop; (* expr or ad┆
0x066c80…066ca0             64 72 20 2a 29 0a 70 6f 70 3b 20 28 2a 20 73 61 76 65 64 20 70 61 72 61 6d 65 74 65 72 20 74 79   ┆dr *) pop; (* saved parameter ty┆
0x066ca0…066cc0             70 65 20 2a 29 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6c 61 62 65 6c 5f 67 6f 74 6f   ┆pe *) end;  procedure label_goto┆
0x066cc0…066ce0             28 6f 70 3a 20 6f 75 74 5f 63 6f 64 65 29 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 6e 69 78   ┆(op: out_code); begin passin(nix┆
0x066ce0…066d00             29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 70 75 74 31 28   ┆); with nametable(nix)^ do put1(┆
0x066d00…066d20             6f 70 2c 6c 69 78 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 62 65 63 6f 6d 65 73   ┆op,lix); end;  procedure becomes┆
0x066d20…066d40             3b 0a 62 65 67 69 6e 0a 61 64 64 72 65 73 73 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 0a 69 66   ┆; begin address; with ot^ do  if┆
0x066d40…066d60             20 6b 69 6e 64 3d 20 72 65 66 5f 74 79 70 65 20 74 68 65 6e 20 28 2a 20 65 78 63 68 61 6e 67 65   ┆ kind= ref_type then (* exchange┆
0x066d60…066d80             20 6f 66 20 72 65 66 65 6e 63 65 73 20 2a 29 0a 70 75 74 31 28 7a 6c 65 66 74 2c 20 72 65 66 5f   ┆ of refences *) put1(zleft, ref_┆
0x066d80…066da0             74 79 70 29 0a 65 6c 73 65 0a 69 66 20 6b 69 6e 64 3d 73 68 61 64 6f 77 5f 74 79 70 65 20 74 68   ┆typ) else if kind=shadow_type th┆
0x066da0…066dc0             65 6e 0a 70 75 74 31 28 7a 6c 65 66 74 2c 20 73 68 61 64 6f 77 5f 74 79 70 29 0a 65 6c 73 65 0a   ┆en put1(zleft, shadow_typ) else ┆
0x066dc0…066de0             69 66 20 66 69 65 6c 64 5f 70 61 63 6b 65 64 20 74 68 65 6e 0a 70 75 74 33 28 7a 6c 65 66 74 2c   ┆if field_packed then put3(zleft,┆
0x066de0…066e00             66 69 65 6c 64 5f 74 79 70 2c 66 69 72 73 74 2c 63 6f 6d 70 5f 73 69 7a 65 29 0a 65 6c 73 65 0a   ┆field_typ,first,comp_size) else ┆
0x066e00…066e20 (27, 0, 14) 6c 6f 61 64 5f 76 61 72 28 7a 6c 65 66 74 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65   ┆load_var(zleft); end;  procedure┆
0x066e20…066e40             20 61 73 73 69 67 6e 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e   ┆ assign; begin with ot^ do begin┆
0x066e40…066e60             0a 69 66 20 63 6f 6e 74 65 78 74 3d 73 74 72 75 63 5f 63 20 74 68 65 6e 20 63 6f 6e 74 65 78 74   ┆ if context=struc_c then context┆
0x066e60…066e80             3a 3d 6c 63 6f 6e 73 74 3b 0a 69 66 20 28 6b 69 6e 64 3d 61 72 72 61 79 5f 74 79 70 65 29 20 61   ┆:=lconst; if (kind=array_type) a┆
0x066e80…066ea0             6e 64 20 28 63 6f 6e 74 65 78 74 3d 6c 63 6f 6e 73 74 29 20 74 68 65 6e 20 61 64 6a 75 73 74 5f   ┆nd (context=lconst) then adjust_┆
0x066ea0…066ec0             73 74 72 69 6e 67 28 6f 74 2c 6f 73 29 3b 0a 65 6e 64 3b 0a 6c 6f 61 64 5f 65 78 70 72 3b 20 20   ┆string(ot,os); end; load_expr;  ┆
0x066ec0…066ee0             28 2a 20 72 69 67 68 74 20 68 61 6e 64 20 73 69 64 65 20 2a 29 0a 70 6f 70 3b 20 20 28 2a 72 69   ┆(* right hand side *) pop;  (*ri┆
0x066ee0…066f00             67 68 74 20 68 61 6e 64 20 73 69 64 65 2a 29 0a 70 6f 70 3b 20 20 28 2a 6c 65 66 74 20 68 61 6e   ┆ght hand side*) pop;  (*left han┆
0x066f00…066f20             64 20 73 69 64 65 2a 29 0a 70 75 74 30 28 7a 61 73 73 69 67 6e 29 3b 0a 65 6e 64 3b 0a 0a 70 72   ┆d side*) put0(zassign); end;  pr┆
0x066f20…066f40             6f 63 65 64 75 72 65 20 63 61 73 65 5f 6c 61 62 65 6c 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f   ┆ocedure case_label; begin with o┆
0x066f40…066f60             74 5e 20 64 6f 0a 69 66 20 63 6f 6e 74 65 78 74 3d 73 63 6f 6e 73 74 20 74 68 65 6e 20 62 65 67   ┆t^ do if context=sconst then beg┆
0x066f60…066f80             69 6e 0a 70 75 74 31 28 7a 63 61 73 65 6c 61 62 65 6c 2c 6f 66 66 73 65 74 29 3b 0a 65 6e 64 0a   ┆in put1(zcaselabel,offset); end ┆
0x066f80…066fa0             65 6c 73 65 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 76 61 72 5f 65 72 72 6f 72 29 3b 20 20 70 75   ┆else begin error(var_error);  pu┆
0x066fa0…066fc0             74 31 28 7a 63 61 73 65 6c 61 62 65 6c 2c 30 29 3b 0a 65 6e 64 3b 0a 70 6f 70 3b 0a 65 6e 64 3b   ┆t1(zcaselabel,0); end; pop; end;┆
0x066fc0…066fe0             0a 0a 70 72 6f 63 65 64 75 72 65 20 63 61 73 65 72 61 6e 67 65 3b 0a 76 61 72 20 6c 61 73 74 2c   ┆  procedure caserange; var last,┆
0x066fe0…067000             66 69 72 73 74 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66 20 28 6f 74 5e 2e 63 6f   ┆first: integer; begin if (ot^.co┆
0x067000…067020 (27, 0, 15) 6e 74 65 78 74 3c 3e 73 63 6f 6e 73 74 29 20 6f 72 20 28 6f 73 5e 2e 63 6f 6e 74 65 78 74 3c 3e   ┆ntext<>sconst) or (os^.context<>┆
0x067020…067040             73 63 6f 6e 73 74 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 72 6f 72 28 76 61 72 5f 65 72 72   ┆sconst) then begin error(var_err┆
0x067040…067060             6f 72 29 3b 20 6c 61 73 74 3a 3d 30 3b 20 66 69 72 73 74 3a 3d 30 3b 0a 65 6e 64 20 65 6c 73 65   ┆or); last:=0; first:=0; end else┆
0x067060…067080             20 62 65 67 69 6e 0a 66 69 72 73 74 3a 3d 6f 73 5e 2e 6f 66 66 73 65 74 3b 0a 6c 61 73 74 3a 3d   ┆ begin first:=os^.offset; last:=┆
0x067080…0670a0             6f 74 5e 2e 6f 66 66 73 65 74 3b 0a 65 6e 64 3b 0a 70 6f 70 3b 20 20 70 6f 70 3b 0a 69 66 20 6c   ┆ot^.offset; end; pop;  pop; if l┆
0x0670a0…0670c0             61 73 74 3c 66 69 72 73 74 20 74 68 65 6e 20 0a 62 65 67 69 6e 20 66 69 72 73 74 3a 3d 6c 61 73   ┆ast<first then  begin first:=las┆
0x0670c0…0670e0             74 3b 20 65 72 72 6f 72 28 72 61 6e 67 65 5f 65 72 72 6f 72 29 3b 20 20 65 6e 64 3b 0a 70 75 74   ┆t; error(range_error);  end; put┆
0x0670e0…067100             32 28 7a 63 61 73 65 72 61 6e 67 65 2c 66 69 72 73 74 2c 6c 61 73 74 29 3b 0a 65 6e 64 3b 0a 0a   ┆2(zcaserange,first,last); end;  ┆
0x067100…067120             70 72 6f 63 65 64 75 72 65 20 66 6f 72 5f 3b 0a 76 61 72 20 6c 6f 61 64 5f 74 79 70 65 2c 74 65   ┆procedure for_; var load_type,te┆
0x067120…067140             6d 70 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 61 64 64 72 65 73 73 3b 20 20 20 20 20   ┆mp: integer; begin address;     ┆
0x067140…067160             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 63 6f 6e 74 72 6f 6c 20 76 61 72 20 61   ┆                 (*control var a┆
0x067160…067180             64 64 72 2a 29 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 20 20 20 20 20 20 20 20 20   ┆ddr*) with ot^ do begin         ┆
0x067180…0671a0             28 2a 70 75 73 68 20 74 65 6d 70 20 63 6f 6e 74 72 6f 6c 20 76 61 72 2a 29 0a 69 66 20 6b 69 6e   ┆(*push temp control var*) if kin┆
0x0671a0…0671c0             64 20 69 6e 20 73 69 6d 70 6c 65 5f 74 79 70 65 73 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20   ┆d in simple_types then begin if ┆
0x0671c0…0671e0             73 69 7a 65 3d 62 79 74 65 5f 6c 65 6e 67 74 68 20 74 68 65 6e 20 6c 6f 61 64 5f 74 79 70 65 3a   ┆size=byte_length then load_type:┆
0x0671e0…067200             3d 62 79 74 65 5f 74 79 70 0a 65 6c 73 65 20 6c 6f 61 64 5f 74 79 70 65 3a 3d 77 6f 72 64 5f 74   ┆=byte_typ else load_type:=word_t┆
0x067200…067220 (27, 1, 1)  79 70 3b 0a 65 6e 64 0a 65 6c 73 65 20 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 28 66 6f 72 5f   ┆yp; end else compiler_error(for_┆
0x067220…067240             65 72 72 6f 72 29 3b 0a 6b 69 6e 64 3a 3d 70 6f 69 6e 74 65 72 5f 74 79 70 65 3b 0a 63 6f 6e 74   ┆error); kind:=pointer_type; cont┆
0x067240…067260             65 78 74 3a 3d 76 61 72 69 61 62 6c 65 3b 0a 6e 69 76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b   ┆ext:=variable; niv:=current_niv;┆
0x067260…067280             0a 73 69 7a 65 3a 3d 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 3b 0a 6f 66 66 73 65 74 3a 3d 61   ┆ size:=pointer_length; offset:=a┆
0x067280…0672a0             6c 6c 6f 63 5f 74 65 6d 70 28 73 69 7a 65 29 3b 0a 74 65 6d 70 3a 3d 61 6c 6c 6f 63 5f 74 65 6d   ┆lloc_temp(size); temp:=alloc_tem┆
0x0672a0…0672c0             70 28 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 73 74 61 74 65 3a 3d 69 6e 64 69 72 65 63 74 3b   ┆p(word_length); state:=indirect;┆
0x0672c0…0672e0             0a 70 75 74 33 28 7a 6c 65 66 74 66 6f 72 2c 6f 66 66 73 65 74 2c 74 65 6d 70 2c 6c 6f 61 64 5f   ┆ put3(zleftfor,offset,temp,load_┆
0x0672e0…067300             74 79 70 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 75 70 5f 64   ┆type); end; end;  procedure up_d┆
0x067300…067320             6f 77 6e 28 6d 6f 64 65 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69 6e 0a 6c 6f 61 64 5f 65   ┆own(mode: integer); begin load_e┆
0x067320…067340             78 70 72 3b 20 70 6f 70 3b 20 20 20 20 20 20 28 2a 6c 6f 61 64 20 66 72 6f 6d 20 65 78 70 72 20   ┆xpr; pop;      (*load from expr ┆
0x067340…067360             76 61 6c 75 65 2a 29 0a 6f 74 5e 2e 6c 69 78 3a 3d 6d 6f 64 65 3b 20 20 20 28 2a 73 65 74 20 6d   ┆value*) ot^.lix:=mode;   (*set m┆
0x067360…067380             6f 64 65 20 69 6e 20 74 65 6d 70 20 63 6f 6e 74 72 6f 6c 20 76 61 72 20 61 64 64 72 2a 29 0a 70   ┆ode in temp control var addr*) p┆
0x067380…0673a0             75 74 30 28 7a 66 6f 72 73 74 6f 72 65 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆ut0(zforstore); end;  procedure ┆
0x0673a0…0673c0             66 6f 72 5f 64 6f 3b 0a 76 61 72 20 6d 3a 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 6c 6f 61   ┆for_do; var m:integer; begin loa┆
0x0673c0…0673e0             64 5f 65 78 70 72 3b 20 20 70 6f 70 3b 20 20 28 2a 6c 6f 61 64 20 74 6f 20 65 78 70 72 65 73 73   ┆d_expr;  pop;  (*load to express┆
0x0673e0…067400             69 6f 6e 20 76 61 6c 75 65 2a 29 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66   ┆ion value*) with ot^ do begin if┆
0x067400…067420 (27, 1, 2)  20 6c 69 78 3d 31 20 74 68 65 6e 20 6d 3a 3d 7a 75 70 20 65 6c 73 65 20 6d 3a 3d 7a 64 6f 77 6e   ┆ lix=1 then m:=zup else m:=zdown┆
0x067420…067440             3b 0a 65 6e 64 3b 0a 70 75 74 31 28 7a 64 6f 2c 6d 29 3b 20 20 20 70 6f 70 3b 0a 65 6e 64 3b 0a   ┆; end; put1(zdo,m);   pop; end; ┆
0x067440…067460             0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 66 6f 72 3b 0a 76 61 72 20 6d 3a 20 69 6e 74 65 67   ┆ procedure end_for; var m: integ┆
0x067460…067480             65 72 3b 0a 62 65 67 69 6e 0a 70 75 74 30 28 7a 65 6e 64 66 6f 72 29 3b 0a 72 65 6c 65 61 73 65   ┆er; begin put0(zendfor); release┆
0x067480…0674a0             5f 74 65 6d 70 28 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 2b 77 6f 72 64 5f 6c 65 6e 67 74 68   ┆_temp(pointer_length+word_length┆
0x0674a0…0674c0             29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 77 69 74 68 76 61 72 3b 0a 76 61 72   ┆); end;   procedure withvar; var┆
0x0674c0…0674e0             0a 77 69 74 68 76 61 72 5f 6f 66 66 73 65 74 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a   ┆ withvar_offset: integer; begin ┆
0x0674e0…067500             73 74 61 74 5f 70 61 72 74 3a 3d 20 66 61 6c 73 65 3b 0a 70 75 73 68 5f 6e 61 6d 65 28 6e 69 78   ┆stat_part:= false; push_name(nix┆
0x067500…067520             29 3b 0a 6f 74 5e 2e 74 65 6d 70 5f 73 69 7a 65 3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65   ┆); ot^.temp_size:= current_offse┆
0x067520…067540             74 3b 20 28 2a 20 75 6e 73 74 61 63 6b 20 6c 69 6d 69 74 20 61 66 74 65 72 20 77 69 74 68 20 73   ┆t; (* unstack limit after with s┆
0x067540…067560             74 61 74 65 6d 65 6e 74 20 2a 29 0a 69 66 20 6e 6f 74 20 6f 74 5e 2e 64 79 6e 61 6d 69 63 20 61   ┆tatement *) if not ot^.dynamic a┆
0x067560…067580             6e 64 20 74 65 6d 70 5f 77 69 74 68 76 61 72 5f 6e 6f 74 5f 75 73 65 64 20 74 68 65 6e 0a 77 69   ┆nd temp_withvar_not_used then wi┆
0x067580…0675a0             74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 2e   ┆th ot^ do begin nametable(nix)^.┆
0x0675a0…0675c0             63 6f 6e 74 65 78 74 3a 3d 63 6f 6e 74 65 78 74 3b 0a 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29   ┆context:=context; nametable(nix)┆
0x0675c0…0675e0             5e 2e 6e 69 76 3a 3d 6e 69 76 3b 0a 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 2e 6f 66 66 73   ┆^.niv:=niv; nametable(nix)^.offs┆
0x0675e0…067600             65 74 3a 3d 6f 66 66 73 65 74 3b 0a 77 69 74 68 76 61 72 5f 6f 66 66 73 65 74 3a 3d 20 30 3b 20   ┆et:=offset; withvar_offset:= 0; ┆
0x067600…067620 (27, 1, 3)  28 2a 20 76 61 6c 75 65 20 6e 6f 74 20 75 73 65 64 20 2a 29 0a 74 65 6d 70 5f 77 69 74 68 76 61   ┆(* value not used *) temp_withva┆
0x067620…067640             72 5f 6e 6f 74 5f 75 73 65 64 3a 3d 66 61 6c 73 65 3b 0a 70 75 74 32 28 7a 61 64 64 72 2c 20 6e   ┆r_not_used:=false; put2(zaddr, n┆
0x067640…067660             69 76 2c 20 6f 66 66 73 65 74 29 3b 20 28 2a 20 64 75 6d 6d 79 20 22 76 61 72 69 61 62 6c 65 22   ┆iv, offset); (* dummy "variable"┆
0x067660…067680             2c 20 6e 6f 74 20 75 73 65 64 20 62 79 20 70 61 73 73 35 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a   ┆, not used by pass5 *) end else ┆
0x067680…0676a0             77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 61 64   ┆with nametable(nix)^ do begin ad┆
0x0676a0…0676c0             64 72 65 73 73 3b 0a 63 6f 6e 74 65 78 74 3a 3d 77 69 74 68 5f 76 61 72 3b 0a 6e 69 76 3a 3d 63   ┆dress; context:=with_var; niv:=c┆
0x0676c0…0676e0             75 72 72 65 6e 74 5f 6e 69 76 3b 0a 6f 66 66 73 65 74 3a 3d 61 6c 6c 6f 63 5f 74 65 6d 70 28 70   ┆urrent_niv; offset:=alloc_temp(p┆
0x0676e0…067700             6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 29 3b 0a 77 69 74 68 76 61 72 5f 6f 66 66 73 65 74 3a 3d   ┆ointer_length); withvar_offset:=┆
0x067700…067720             20 6f 66 66 73 65 74 3b 0a 65 6e 64 3b 0a 69 66 20 6f 74 5e 2e 64 79 6e 61 6d 69 63 20 74 68 65   ┆ offset; end; if ot^.dynamic the┆
0x067720…067740             6e 0a 70 75 74 33 28 7a 77 69 74 68 64 79 6e 76 61 72 2c 20 6e 61 6d 65 74 61 62 6c 65 28 20 6f   ┆n put3(zwithdynvar, nametable( o┆
0x067740…067760             74 5e 2e 74 79 70 65 5f 6e 69 78 20 29 5e 2e 6e 69 76 2c 20 6e 61 6d 65 74 61 62 6c 65 28 20 6f   ┆t^.type_nix )^.niv, nametable( o┆
0x067760…067780             74 5e 2e 74 79 70 65 5f 6e 69 78 20 29 5e 2e 6f 66 66 73 65 74 2c 20 77 69 74 68 76 61 72 5f 6f   ┆t^.type_nix )^.offset, withvar_o┆
0x067780…0677a0             66 66 73 65 74 29 0a 65 6c 73 65 0a 70 75 74 32 28 7a 77 69 74 68 76 61 72 2c 20 6f 74 5e 2e 73   ┆ffset) else put2(zwithvar, ot^.s┆
0x0677a0…0677c0             69 7a 65 2c 20 77 69 74 68 76 61 72 5f 6f 66 66 73 65 74 29 3b 0a 65 6e 64 3b 20 28 2a 20 77 69   ┆ize, withvar_offset); end; (* wi┆
0x0677c0…0677e0             74 68 20 76 61 72 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 72 65 74 79 70 65 3b 0a 76 61 72   ┆th var *)  procedure retype; var┆
0x0677e0…067800             0a 74 79 70 65 5f 73 69 7a 65 2c 20 74 79 70 65 5f 6e 69 76 2c 20 74 79 70 65 5f 6f 66 66 73 65   ┆ type_size, type_niv, type_offse┆
0x067800…067820 (27, 1, 4)  74 3a 20 69 6e 74 65 67 65 72 3b 0a 64 79 6e 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a   ┆t: integer; dyn: boolean; begin ┆
0x067820…067840             77 69 74 68 20 28 2a 20 6e 65 77 20 74 79 70 65 20 2a 29 20 6e 61 6d 65 74 61 62 6c 65 28 20 73   ┆with (* new type *) nametable( s┆
0x067840…067860             74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 20 29 5e 20 64 6f 0a 62 65 67 69   ┆tack_top^.stacked_val )^ do begi┆
0x067860…067880             6e 0a 74 79 70 65 5f 73 69 7a 65 3a 3d 20 73 69 7a 65 3b 20 28 2a 20 73 69 7a 65 20 69 66 20 73   ┆n type_size:= size; (* size if s┆
0x067880…0678a0             74 61 74 69 63 20 2a 29 0a 64 79 6e 3a 3d 20 64 79 6e 61 6d 69 63 3b 0a 74 79 70 65 5f 6e 69 76   ┆tatic *) dyn:= dynamic; type_niv┆
0x0678a0…0678c0             3a 3d 20 6e 69 76 3b 20 28 2a 20 64 6f 70 65 20 76 65 63 74 6f 72 20 61 64 64 72 65 73 73 20 69   ┆:= niv; (* dope vector address i┆
0x0678c0…0678e0             66 20 64 79 6e 61 6d 69 63 20 2a 29 0a 74 79 70 65 5f 6f 66 66 73 65 74 3a 3d 20 6f 66 66 73 65   ┆f dynamic *) type_offset:= offse┆
0x0678e0…067900             74 3b 0a 65 6e 64 3b 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20 28 2a   ┆t; end; pop_to_free_stack(1); (*┆
0x067900…067920             20 70 6f 70 20 6e 65 77 20 74 79 70 65 20 69 6e 66 6f 20 2a 29 0a 0a 69 66 20 64 79 6e 20 28 2a   ┆ pop new type info *)  if dyn (*┆
0x067920…067940             20 6e 65 77 20 74 79 70 65 20 2a 29 20 74 68 65 6e 0a 70 75 74 32 28 7a 64 79 6e 72 65 74 79 70   ┆ new type *) then put2(zdynretyp┆
0x067940…067960             65 2c 20 74 79 70 65 5f 6e 69 76 2c 20 74 79 70 65 5f 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 69   ┆e, type_niv, type_offset) else i┆
0x067960…067980             66 20 6e 6f 74 20 6f 74 5e 2e 64 79 6e 61 6d 69 63 20 74 68 65 6e 20 28 2a 20 62 6f 74 68 20 74   ┆f not ot^.dynamic then (* both t┆
0x067980…0679a0             79 70 65 73 20 61 72 65 20 73 74 61 74 69 63 2c 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 73 69   ┆ypes are static, compile time si┆
0x0679a0…0679c0             7a 65 20 63 68 65 63 6b 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 74 79 70 65 5f 73 69 7a 65 20 28   ┆ze check *) begin if type_size (┆
0x0679c0…0679e0             2a 20 6f 66 20 6e 65 77 20 74 79 70 65 20 2a 29 20 3e 20 6f 74 5e 2e 73 69 7a 65 20 28 2a 20 6f   ┆* of new type *) > ot^.size (* o┆
0x0679e0…067a00             66 20 77 69 74 68 20 76 61 72 69 61 62 6c 65 20 2a 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 77 69   ┆f with variable *) then error(wi┆
0x067a00…067a20 (27, 1, 5)  74 68 5f 73 69 7a 65 5f 65 72 72 6f 72 29 3b 0a 70 75 74 30 28 7a 6e 6f 72 65 74 79 70 65 29 3b   ┆th_size_error); put0(znoretype);┆
0x067a20…067a40             20 28 2a 20 6e 6f 20 73 69 7a 65 20 74 65 73 74 20 61 74 20 72 75 6e 20 74 69 6d 65 20 2a 29 0a   ┆ (* no size test at run time *) ┆
0x067a40…067a60             65 6e 64 0a 65 6c 73 65 0a 70 75 74 31 28 7a 72 65 74 79 70 65 2c 20 74 79 70 65 5f 73 69 7a 65   ┆end else put1(zretype, type_size┆
0x067a60…067a80             29 3b 0a 0a 69 66 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20   ┆);  if versionz80 then begin if ┆
0x067a80…067aa0             2d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3e 76 61 72 5f 6c 65 6e 67 74 68 20 74 68 65 6e 0a   ┆-current_offset>var_length then ┆
0x067aa0…067ac0             76 61 72 5f 6c 65 6e 67 74 68 3a 3d 20 2d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 0a 65 6e 64   ┆var_length:= -current_offset end┆
0x067ac0…067ae0             0a 65 6c 73 65 0a 28 2a 20 2a 2a 20 6c 61 6d 62 64 61 20 6f 72 20 33 35 30 32 63 20 2a 2a 20 2a   ┆ else (* ** lambda or 3502c ** *┆
0x067ae0…067b00             29 0a 69 66 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 3e 20 76 61 72 5f 6c 65 6e 67 74 68   ┆) if current_offset > var_length┆
0x067b00…067b20             20 74 68 65 6e 0a 76 61 72 5f 6c 65 6e 67 74 68 20 3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73   ┆ then var_length := current_offs┆
0x067b20…067b40             65 74 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 0a 74 65 6d 70 5f 73 69 7a 65 20 3a 3d 20 63 75 72   ┆et; with ot^ do temp_size := cur┆
0x067b40…067b60             72 65 6e 74 5f 6f 66 66 73 65 74 20 2d 20 74 65 6d 70 5f 73 69 7a 65 3b 20 20 20 28 2a 20 73 69   ┆rent_offset - temp_size;   (* si┆
0x067b60…067b80             7a 65 20 61 6c 6c 6f 63 61 74 65 64 20 66 6f 72 20 74 79 70 65 73 20 2a 29 0a 0a 70 6f 70 5f 74   ┆ze allocated for types *)  pop_t┆
0x067b80…067ba0             6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20 28 2a 20 70 6f 70 20 77 69 74 68 20 76 61 72   ┆o_free_stack(1); (* pop with var┆
0x067ba0…067bc0             69 61 62 6c 65 20 2a 29 0a 73 74 61 74 5f 70 61 72 74 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 20   ┆iable *) stat_part:= true; end; ┆
0x067bc0…067be0             28 2a 20 72 65 74 79 70 65 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6e 6f 5f 72 65 74 79   ┆(* retype *)   procedure no_rety┆
0x067be0…067c00             70 65 3b 0a 62 65 67 69 6e 0a 70 75 74 30 28 7a 6e 6f 72 65 74 79 70 65 29 3b 0a 77 69 74 68 20   ┆pe; begin put0(znoretype); with ┆
0x067c00…067c20 (27, 1, 6)  6f 74 5e 20 64 6f 0a 74 65 6d 70 5f 73 69 7a 65 3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65   ┆ot^ do temp_size:= current_offse┆
0x067c20…067c40             74 2d 74 65 6d 70 5f 73 69 7a 65 3b 20 28 2a 20 73 69 7a 65 20 61 6c 6c 6f 63 61 74 65 64 20 66   ┆t-temp_size; (* size allocated f┆
0x067c40…067c60             6f 72 20 77 69 74 68 20 61 64 64 72 65 73 73 20 2a 29 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73   ┆or with address *) pop_to_free_s┆
0x067c60…067c80             74 61 63 6b 28 31 29 3b 20 28 2a 20 70 6f 70 20 77 69 74 68 20 76 61 72 69 61 62 6c 65 20 2a 29   ┆tack(1); (* pop with variable *)┆
0x067c80…067ca0             0a 73 74 61 74 5f 70 61 72 74 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 20 28 2a 20 6e 6f 20 72 65   ┆ stat_part:= true; end; (* no re┆
0x067ca0…067cc0             74 79 70 65 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 77 69 74 68 3b 0a 62 65   ┆type *)   procedure end_with; be┆
0x067cc0…067ce0             67 69 6e 0a 70 75 74 30 28 7a 65 6e 64 77 69 74 68 29 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 0a   ┆gin put0(zendwith); with ot^ do ┆
0x067ce0…067d00             72 65 6c 65 61 73 65 5f 74 65 6d 70 28 6f 74 5e 2e 74 65 6d 70 5f 73 69 7a 65 29 3b 0a 70 6f 70   ┆release_temp(ot^.temp_size); pop┆
0x067d00…067d20             3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6c 6f 63 6b 5f 76 61 72 5f 3b 0a 62 65 67   ┆; end;  procedure lock_var_; beg┆
0x067d20…067d40             69 6e 0a 73 74 61 74 5f 70 61 72 74 3a 3d 66 61 6c 73 65 3b 0a 70 75 73 68 5f 6e 61 6d 65 28 6e   ┆in stat_part:=false; push_name(n┆
0x067d40…067d60             69 78 29 3b 0a 61 64 64 72 65 73 73 3b 20 20 20 0a 6f 74 5e 2e 74 65 6d 70 5f 73 69 7a 65 20 3a   ┆ix); address;    ot^.temp_size :┆
0x067d60…067d80             3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72   ┆= current_offset; end;  procedur┆
0x067d80…067da0             65 20 6c 6f 63 6b 5f 74 79 70 65 3b 0a 76 61 72 20 74 79 70 65 5f 73 69 7a 65 2c 20 74 79 70 65   ┆e lock_type; var type_size, type┆
0x067da0…067dc0             5f 6e 69 76 2c 20 74 79 70 65 5f 6f 66 66 73 65 74 20 3a 20 69 6e 74 65 67 65 72 3b 0a 64 79 6e   ┆_niv, type_offset : integer; dyn┆
0x067dc0…067de0             20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65   ┆ : boolean; begin with nametable┆
0x067de0…067e00             28 20 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61 63 6b 65 64 5f 76 61 6c 20 29 5e 20 64 6f 20 62   ┆( stack_top^.stacked_val )^ do b┆
0x067e00…067e20 (27, 1, 7)  65 67 69 6e 0a 74 79 70 65 5f 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 64 79 6e 3a 3d 64 79 6e 61 6d   ┆egin type_size:=size; dyn:=dynam┆
0x067e20…067e40             69 63 3b 0a 74 79 70 65 5f 6e 69 76 3a 3d 6e 69 76 3b 0a 74 79 70 65 5f 6f 66 66 73 65 74 3a 3d   ┆ic; type_niv:=niv; type_offset:=┆
0x067e40…067e60             6f 66 66 73 65 74 3b 0a 65 6e 64 3b 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31   ┆offset; end; pop_to_free_stack(1┆
0x067e60…067e80             29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74 61   ┆); with nametable(stack_top^.sta┆
0x067e80…067ea0             63 6b 65 64 5f 76 61 6c 29 5e 20 64 6f 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 6c 6f 63   ┆cked_val)^ do begin context:=loc┆
0x067ea0…067ec0             6b 5f 76 61 72 3b 0a 6e 69 76 3a 3d 63 75 72 72 65 6e 74 5f 6e 69 76 3b 0a 69 66 20 6c 6f 63 6b   ┆k_var; niv:=current_niv; if lock┆
0x067ec0…067ee0             5f 6d 65 73 5f 73 74 61 74 20 74 68 65 6e 0a 6f 66 66 73 65 74 3a 3d 20 61 6c 6c 6f 63 5f 76 61   ┆_mes_stat then offset:= alloc_va┆
0x067ee0…067f00             72 28 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 2b 6c 6f 63 6b 6d 65 73 5f 74 65 6d 70 6c 5f 73   ┆r(pointer_length+lockmes_templ_s┆
0x067f00…067f20             69 7a 65 29 0a 65 6c 73 65 0a 6f 66 66 73 65 74 3a 3d 61 6c 6c 6f 63 5f 76 61 72 28 70 6f 69 6e   ┆ize) else offset:=alloc_var(poin┆
0x067f20…067f40             74 65 72 5f 6c 65 6e 67 74 68 29 3b 0a 69 66 20 64 79 6e 20 74 68 65 6e 0a 70 75 74 33 28 7a 6c   ┆ter_length); if dyn then put3(zl┆
0x067f40…067f60             6f 63 6b 64 79 6e 76 61 72 2c 20 74 79 70 65 5f 6e 69 76 2c 20 74 79 70 65 5f 6f 66 66 73 65 74   ┆ockdynvar, type_niv, type_offset┆
0x067f60…067f80             2c 20 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 70 75 74 32 28 7a 6c 6f 63 6b 76 61 72 2c 20 74 79   ┆, offset) else put2(zlockvar, ty┆
0x067f80…067fa0             70 65 5f 73 69 7a 65 2c 20 6f 66 66 73 65 74 29 3b 0a 65 6e 64 3b 0a 69 66 20 76 65 72 73 69 6f   ┆pe_size, offset); end; if versio┆
0x067fa0…067fc0             6e 7a 38 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 2d 63 75 72 72 65 6e 74 5f 6f 66 66 73   ┆nz80 then begin if -current_offs┆
0x067fc0…067fe0             65 74 3e 76 61 72 5f 6c 65 6e 67 74 68 20 74 68 65 6e 0a 76 61 72 5f 6c 65 6e 67 74 68 3a 3d 20   ┆et>var_length then var_length:= ┆
0x067fe0…068000             2d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 0a 65 6e 64 0a 65 6c 73 65 0a 28 2a 20 2a 2a 20 6c   ┆-current_offset end else (* ** l┆
0x068000…068020 (27, 1, 8)  61 6d 62 64 61 20 6f 72 20 33 35 30 32 63 20 2a 2a 20 2a 29 0a 69 66 20 63 75 72 72 65 6e 74 5f   ┆ambda or 3502c ** *) if current_┆
0x068020…068040             6f 66 66 73 65 74 20 3e 20 76 61 72 5f 6c 65 6e 67 74 68 20 74 68 65 6e 0a 76 61 72 5f 6c 65 6e   ┆offset > var_length then var_len┆
0x068040…068060             67 74 68 20 3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3b 0a 77 69 74 68 20 6f 74 5e 20   ┆gth := current_offset; with ot^ ┆
0x068060…068080             64 6f 0a 74 65 6d 70 5f 73 69 7a 65 20 3a 3d 20 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 20 2d   ┆do temp_size := current_offset -┆
0x068080…0680a0             20 74 65 6d 70 5f 73 69 7a 65 3b 20 20 20 28 2a 20 73 69 7a 65 20 61 6c 6c 6f 63 61 74 65 64 20   ┆ temp_size;   (* size allocated ┆
0x0680a0…0680c0             66 6f 72 20 74 79 70 65 73 20 2a 29 0a 70 6f 70 5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31   ┆for types *) pop_to_free_stack(1┆
0x0680c0…0680e0             29 3b 0a 73 74 61 74 5f 70 61 72 74 20 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63   ┆); stat_part := true; end;  proc┆
0x0680e0…068100             65 64 75 72 65 20 65 6e 64 5f 6c 6f 63 6b 3b 0a 62 65 67 69 6e 0a 70 75 74 30 28 7a 65 6e 64 6c   ┆edure end_lock; begin put0(zendl┆
0x068100…068120             6f 63 6b 29 3b 0a 72 65 6c 65 61 73 65 5f 74 65 6d 70 28 6f 74 5e 2e 74 65 6d 70 5f 73 69 7a 65   ┆ock); release_temp(ot^.temp_size┆
0x068120…068140             29 3b 0a 70 6f 70 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 6c 6f 6f 70 5f 67 6f 74   ┆); pop; end;  procedure loop_got┆
0x068140…068160             6f 28 63 6f 64 65 5f 6b 69 6e 64 3a 20 6f 75 74 5f 63 6f 64 65 29 3b 0a 76 61 72 0a 70 61 72 61   ┆o(code_kind: out_code); var para┆
0x068160…068180             6d 3a 20 69 6e 74 65 67 65 72 3b 20 28 2a 20 70 61 73 73 33 20 63 6f 64 65 20 2a 29 0a 62 65 67   ┆m: integer; (* pass3 code *) beg┆
0x068180…0681a0             69 6e 20 28 2a 20 65 78 69 74 6c 6f 6f 70 2f 63 6f 6e 74 69 6e 75 65 6c 6f 6f 70 2f 65 78 69 74   ┆in (* exitloop/continueloop/exit┆
0x0681a0…0681c0             6c 6f 63 6b 20 28 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 6c 6f 6f 70 20 69 6e 20 6f 72 20 65 78   ┆lock (statement to loop in or ex┆
0x0681c0…0681e0             69 74 20 66 72 6f 6d 29 20 2a 29 0a 69 66 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 65   ┆it from) *) if versionz80 then e┆
0x0681e0…068200             72 72 6f 72 28 6e 6f 74 5f 69 6d 70 6c 5f 63 6f 6e 74 5f 65 78 69 74 5f 6c 6f 6f 70 29 0a 65 6c   ┆rror(not_impl_cont_exit_loop) el┆
0x068200…068220 (27, 1, 9)  73 65 0a 62 65 67 69 6e 0a 70 75 74 30 28 63 6f 64 65 5f 6b 69 6e 64 29 3b 0a 70 61 73 73 69 6e   ┆se begin put0(code_kind); passin┆
0x068220…068240             28 70 61 72 61 6d 29 3b 0a 63 61 73 65 20 63 6f 6e 76 65 72 74 5f 69 6e 5f 63 6f 64 65 5b 20 70   ┆(param); case convert_in_code[ p┆
0x068240…068260             61 72 61 6d 20 5d 20 6f 66 0a 78 63 68 61 6e 6e 65 6c 3a 20 20 20 20 63 6f 64 65 5f 6b 69 6e 64   ┆aram ] of xchannel:    code_kind┆
0x068260…068280             3a 3d 20 7a 63 68 61 6e 6e 65 6c 3b 0a 78 66 6f 72 73 74 61 74 3a 20 20 20 20 63 6f 64 65 5f 6b   ┆:= zchannel; xforstat:    code_k┆
0x068280…0682a0             69 6e 64 3a 3d 20 7a 66 6f 72 73 74 61 74 3b 0a 78 6c 6f 63 6b 73 74 61 74 3a 20 20 20 63 6f 64   ┆ind:= zforstat; xlockstat:   cod┆
0x0682a0…0682c0             65 5f 6b 69 6e 64 3a 3d 20 7a 6c 6f 63 6b 73 74 61 74 3b 0a 78 6c 6f 6f 70 73 74 61 74 3a 20 20   ┆e_kind:= zlockstat; xloopstat:  ┆
0x0682c0…0682e0             20 63 6f 64 65 5f 6b 69 6e 64 3a 3d 20 7a 6c 6f 6f 70 73 74 61 74 3b 0a 78 72 65 70 65 61 74 3a   ┆ code_kind:= zloopstat; xrepeat:┆
0x0682e0…068300             20 20 20 20 20 63 6f 64 65 5f 6b 69 6e 64 3a 3d 20 7a 72 65 70 65 61 74 3b 0a 78 77 68 69 6c 65   ┆     code_kind:= zrepeat; xwhile┆
0x068300…068320             3a 20 20 20 20 20 20 63 6f 64 65 5f 6b 69 6e 64 3a 3d 20 7a 77 68 69 6c 65 3b 0a 65 6c 73 65 20   ┆:      code_kind:= zwhile; else ┆
0x068320…068340             63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 28 69 6e 70 75 74 5f 65 72 72 6f 72 29 3b 0a 65 6e 64   ┆compiler_error(input_error); end┆
0x068340…068360             3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 70 75 74 30 28 63 6f 64 65 5f 6b 69 6e 64 29 3b 0a 65 6e   ┆; (* case *) put0(code_kind); en┆
0x068360…068380             64 3b 20 28 2a 20 6e 6f 74 20 76 65 72 73 69 6f 6e 20 7a 38 30 20 2a 29 0a 65 6e 64 3b 20 28 2a   ┆d; (* not version z80 *) end; (*┆
0x068380…0683a0             20 6c 6f 6f 70 20 67 6f 74 6f 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 68 61 6e 5f 76   ┆ loop goto *)   procedure chan_v┆
0x0683a0…0683c0             61 72 3b 0a 76 61 72 20 74 65 6d 70 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 61 64 64   ┆ar; var temp: integer; begin add┆
0x0683c0…0683e0             72 65 73 73 3b 20 20 70 6f 70 3b 0a 70 75 74 30 28 7a 63 68 61 6e 76 61 72 29 3b 0a 65 6e 64 3b   ┆ress;  pop; put0(zchanvar); end;┆
0x0683e0…068400             0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 63 68 61 6e 6e 65 6c 3b 0a 62 65 67 69 6e 0a 70   ┆  procedure end_channel; begin p┆
0x068400…068420 (27, 1, 10) 75 74 30 28 7a 65 6e 64 63 68 61 6e 6e 65 6c 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72   ┆ut0(zendchannel); end;  procedur┆
0x068420…068440             65 20 76 61 72 5f 70 6f 69 6e 74 65 72 3b 0a 62 65 67 69 6e 0a 70 75 73 68 5f 6e 61 6d 65 28 6e   ┆e var_pointer; begin push_name(n┆
0x068440…068460             69 78 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67   ┆ix); with nametable(nix)^ do beg┆
0x068460…068480             69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 76 61 72 69 61 62 6c 65 3b 0a 6e 69 76 3a 3d 63 75 72 72 65   ┆in context:=variable; niv:=curre┆
0x068480…0684a0             6e 74 5f 6e 69 76 3b 0a 6f 66 66 73 65 74 3a 3d 61 6c 6c 6f 63 5f 74 65 6d 70 28 70 6f 69 6e 74   ┆nt_niv; offset:=alloc_temp(point┆
0x0684a0…0684c0             65 72 5f 6c 65 6e 67 74 68 29 3b 0a 70 75 74 31 28 7a 76 61 72 70 6f 69 6e 74 65 72 2c 20 6f 66   ┆er_length); put1(zvarpointer, of┆
0x0684c0…0684e0             66 73 65 74 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 65 6d 70   ┆fset); end; end;  procedure temp┆
0x0684e0…068500             6f 69 6e 74 65 72 3b 0a 76 61 72 20 70 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 61 64   ┆ointer; var p: integer; begin ad┆
0x068500…068520             64 72 65 73 73 3b 0a 70 6f 70 3b 0a 70 3a 3d 61 6c 6c 6f 63 5f 74 65 6d 70 28 70 6f 69 6e 74 65   ┆dress; pop; p:=alloc_temp(pointe┆
0x068520…068540             72 5f 6c 65 6e 67 74 68 29 3b 0a 70 75 74 31 28 7a 74 65 6d 70 6f 69 6e 74 65 72 2c 70 29 3b 0a   ┆r_length); put1(ztempointer,p); ┆
0x068540…068560             65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 61 72 67 6c 69 73 74 5f 73 69 7a 65 3b 0a 76 61   ┆end;  procedure arglist_size; va┆
0x068560…068580             72 20 70 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 3a 3d 61 6c 6c 6f 63 5f 74 65 6d   ┆r p: integer; begin p:=alloc_tem┆
0x068580…0685a0             70 28 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 70 75 74 31 28 7a 61 72 67 6c 69 73 74 73 69 7a   ┆p(word_length); put1(zarglistsiz┆
0x0685a0…0685c0             65 2c 70 29 3b 0a 69 66 20 28 2a 20 2a 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a   ┆e,p); if (* ***z80** *) versionz┆
0x0685c0…0685e0             38 30 20 74 68 65 6e 0a 6e 61 6d 65 74 61 62 6c 65 28 20 73 74 61 63 6b 5f 74 6f 70 5e 2e 73 74   ┆80 then nametable( stack_top^.st┆
0x0685e0…068600             61 63 6b 65 64 5f 76 61 6c 20 29 5e 2e 6f 66 66 73 65 74 3a 3d 70 3b 0a 70 6f 70 5f 74 6f 5f 66   ┆acked_val )^.offset:=p; pop_to_f┆
0x068600…068620 (27, 1, 11) 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 20 28 2a 20 70 6f 70 20 6e 61 6d 65 20 73 74 61 63 6b 20   ┆ree_stack(1); (* pop name stack ┆
0x068620…068640             2a 29 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 70 72 6f 63 3b 0a 76 61 72   ┆*) end;  procedure end_proc; var┆
0x068640…068660             20 69 2c 6e 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 75 74 30 28 7a 65 6e 64 70 63   ┆ i,n: integer; begin put0(zendpc┆
0x068660…068680             61 6c 6c 29 3b 0a 70 61 73 73 69 6e 28 6e 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆all); passin(n);                ┆
0x068680…0686a0             28 2a 20 6e 75 6d 62 65 72 20 6f 66 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 20 6c 69 73 74 73   ┆(* number of process param lists┆
0x0686a0…0686c0             2a 29 0a 66 6f 72 20 69 3a 3d 31 20 74 6f 20 6e 20 64 6f 20 62 65 67 69 6e 0a 72 65 6c 65 61 73   ┆*) for i:=1 to n do begin releas┆
0x0686c0…0686e0             65 5f 74 65 6d 70 28 70 72 6f 63 65 73 73 5f 70 61 72 61 6d 5f 6c 65 6e 67 74 68 29 3b 0a 70 75   ┆e_temp(process_param_length); pu┆
0x0686e0…068700             74 30 28 7a 65 6e 64 70 72 6f 63 65 73 73 70 61 72 61 6d 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a   ┆t0(zendprocessparam); end; end; ┆
0x068700…068720             0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 66 75 6e 63 3b 0a 76 61 72 20 69 2c 6e 3a 20 69 6e   ┆ procedure end_func; var i,n: in┆
0x068720…068740             74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 75 74 30 28 7a 66 63 61 6c 6c 29 3b 0a 70 61 73 73 69   ┆teger; begin put0(zfcall); passi┆
0x068740…068760             6e 28 6e 29 3b 20 20 20 20 20 20 20 20 20 20 28 2a 20 6e 75 6d 62 65 72 20 6f 66 20 70 72 6f 63   ┆n(n);          (* number of proc┆
0x068760…068780             65 73 73 20 70 61 72 61 6d 20 6c 69 73 74 73 20 2a 29 0a 66 6f 72 20 69 3a 3d 31 20 74 6f 20 6e   ┆ess param lists *) for i:=1 to n┆
0x068780…0687a0             20 64 6f 20 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 74 65 6d 70 5f 73 69 7a 65   ┆ do  with ot^ do begin temp_size┆
0x0687a0…0687c0             3a 3d 74 65 6d 70 5f 73 69 7a 65 20 2b 20 70 72 6f 63 65 73 73 5f 70 61 72 61 6d 5f 6c 65 6e 67   ┆:=temp_size + process_param_leng┆
0x0687c0…0687e0             74 68 3b 0a 70 75 74 30 28 7a 65 6e 64 70 72 6f 63 65 73 73 70 61 72 61 6d 29 3b 0a 65 6e 64 3b   ┆th; put0(zendprocessparam); end;┆
0x0687e0…068800             0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 76 61 72 5f 72 65 66 3b 0a 62 65 67 69 6e 0a   ┆ end;  procedure var_ref; begin ┆
0x068800…068820 (27, 1, 12) 70 61 73 73 69 6e 28 6e 69 78 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29   ┆passin(nix); with nametable(nix)┆
0x068820…068840             5e 20 64 6f 20 62 65 67 69 6e 0a 6f 74 5e 2e 76 61 72 5f 6e 69 78 3a 3d 6e 69 78 3b 0a 6f 74 5e   ┆^ do begin ot^.var_nix:=nix; ot^┆
0x068840…068860             2e 63 6f 6e 74 65 78 74 3a 3d 63 6f 6e 74 65 78 74 3b 0a 69 66 20 63 6f 6e 74 65 78 74 3d 6c 63   ┆.context:=context; if context=lc┆
0x068860…068880             6f 6e 73 74 20 74 68 65 6e 20 6f 74 5e 2e 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 6f 74 5e 2e 6e 69   ┆onst then ot^.size:=size; ot^.ni┆
0x068880…0688a0             76 3a 3d 6e 69 76 3b 0a 6f 74 5e 2e 6f 66 66 73 65 74 3a 3d 6f 66 66 73 65 74 3b 0a 6f 74 5e 2e   ┆v:=niv; ot^.offset:=offset; ot^.┆
0x0688a0…0688c0             66 69 72 73 74 3a 3d 6d 69 6e 3b 0a 6f 74 5e 2e 63 6f 6d 70 5f 73 69 7a 65 3a 3d 6d 61 78 3b 0a   ┆first:=min; ot^.comp_size:=max; ┆
0x0688c0…0688e0             69 66 20 28 63 6f 6e 74 65 78 74 20 3c 3e 20 66 69 65 6c 64 29 20 61 6e 64 20 28 63 6f 6e 74 65   ┆if (context <> field) and (conte┆
0x0688e0…068900             78 74 20 3c 3e 20 64 79 6e 5f 66 69 65 6c 64 29 20 74 68 65 6e 0a 6f 74 5e 2e 66 69 65 6c 64 5f   ┆xt <> dyn_field) then ot^.field_┆
0x068900…068920             70 61 63 6b 65 64 3a 3d 66 61 6c 73 65 0a 65 6c 73 65 0a 6f 74 5e 2e 66 69 65 6c 64 5f 70 61 63   ┆packed:=false else ot^.field_pac┆
0x068920…068940             6b 65 64 3a 3d 70 61 63 6b 65 64 5f 63 6f 6d 70 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f   ┆ked:=packed_comp; end; end;  pro┆
0x068940…068960             63 65 64 75 72 65 20 74 79 70 65 5f 72 65 66 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 6e 69   ┆cedure type_ref; begin passin(ni┆
0x068960…068980             78 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69   ┆x); with nametable(nix)^ do begi┆
0x068980…0689a0             6e 0a 6f 74 5e 2e 74 79 70 65 5f 6e 69 78 3a 3d 6e 69 78 3b 0a 6f 74 5e 2e 6b 69 6e 64 3a 3d 63   ┆n ot^.type_nix:=nix; ot^.kind:=c┆
0x0689a0…0689c0             6f 6e 74 65 78 74 3b 0a 6f 74 5e 2e 6c 69 78 3a 3d 6c 69 78 3b 0a 69 66 20 6f 74 5e 2e 63 6f 6e   ┆ontext; ot^.lix:=lix; if ot^.con┆
0x0689c0…0689e0             74 65 78 74 3c 3e 6c 63 6f 6e 73 74 20 74 68 65 6e 20 0a 6f 74 5e 2e 73 69 7a 65 3a 3d 73 69 7a   ┆text<>lconst then  ot^.size:=siz┆
0x0689e0…068a00             65 3b 0a 69 66 20 63 6f 6e 74 65 78 74 20 3c 3e 20 61 72 72 61 79 5f 74 79 70 65 20 74 68 65 6e   ┆e; if context <> array_type then┆
0x068a00…068a20 (27, 1, 13) 0a 6f 74 5e 2e 61 72 72 61 79 5f 70 61 63 6b 65 64 3a 3d 66 61 6c 73 65 0a 65 6c 73 65 0a 6f 74   ┆ ot^.array_packed:=false else ot┆
0x068a20…068a40             5e 2e 61 72 72 61 79 5f 70 61 63 6b 65 64 3a 3d 70 61 63 6b 65 64 5f 63 6f 6d 70 3b 0a 6f 74 5e   ┆^.array_packed:=packed_comp; ot^┆
0x068a40…068a60             2e 64 79 6e 61 6d 69 63 3a 3d 64 79 6e 61 6d 69 63 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72   ┆.dynamic:=dynamic; end; end;  pr┆
0x068a60…068a80             6f 63 65 64 75 72 65 20 76 61 72 5f 3b 0a 62 65 67 69 6e 0a 70 75 73 68 3b 0a 76 61 72 5f 72 65   ┆ocedure var_; begin push; var_re┆
0x068a80…068aa0             66 3b 20 20 20 74 79 70 65 5f 72 65 66 3b 0a 6f 74 5e 2e 66 75 6e 63 5f 76 61 6c 75 65 3a 3d 66   ┆f;   type_ref; ot^.func_value:=f┆
0x068aa0…068ac0             61 6c 73 65 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 63 6f 6e 74 65   ┆alse; with ot^ do begin if conte┆
0x068ac0…068ae0             78 74 20 69 6e 20 69 6e 64 69 72 65 63 74 73 20 74 68 65 6e 0a 73 74 61 74 65 3a 3d 69 6e 64 69   ┆xt in indirects then state:=indi┆
0x068ae0…068b00             72 65 63 74 20 65 6c 73 65 20 73 74 61 74 65 3a 3d 64 69 72 65 63 74 3b 0a 65 6e 64 3b 0a 65 6e   ┆rect else state:=direct; end; en┆
0x068b00…068b20             64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 65 6c 64 5f 3b 0a 76 61 72 20 63 3a 20 63 6f 6e   ┆d;  procedure field_; var c: con┆
0x068b20…068b40             74 65 78 74 5f 6b 69 6e 64 3b 20 20 70 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66   ┆text_kind;  p: integer; begin if┆
0x068b40…068b60             20 65 78 70 6f 72 74 20 74 68 65 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 63   ┆ export then with ot^ do begin c┆
0x068b60…068b80             3a 3d 63 6f 6e 74 65 78 74 3b 20 20 70 3a 3d 6f 66 66 73 65 74 3b 0a 76 61 72 5f 72 65 66 3b 20   ┆:=context;  p:=offset; var_ref; ┆
0x068b80…068ba0             20 74 79 70 65 5f 72 65 66 3b 0a 69 66 20 63 6f 6e 74 65 78 74 20 3c 3e 20 66 69 65 6c 64 20 74   ┆ type_ref; if context <> field t┆
0x068ba0…068bc0             68 65 6e 20 65 72 72 6f 72 28 65 72 72 6f 72 5f 64 79 6e 29 3b 0a 63 6f 6e 74 65 78 74 3a 3d 63   ┆hen error(error_dyn); context:=c┆
0x068bc0…068be0             3b 0a 66 69 65 6c 64 5f 6f 66 66 73 65 74 3a 3d 66 69 65 6c 64 5f 6f 66 66 73 65 74 2b 6f 66 66   ┆; field_offset:=field_offset+off┆
0x068be0…068c00             73 65 74 3b 0a 6f 66 66 73 65 74 3a 3d 70 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 74   ┆set; offset:=p; end else begin t┆
0x068c00…068c20 (27, 1, 14) 65 6d 70 5f 77 69 74 68 76 61 72 5f 6e 6f 74 5f 75 73 65 64 3a 3d 20 66 61 6c 73 65 3b 0a 61 64   ┆emp_withvar_not_used:= false; ad┆
0x068c20…068c40             64 72 65 73 73 3b 0a 76 61 72 5f 72 65 66 3b 20 20 20 74 79 70 65 5f 72 65 66 3b 0a 77 69 74 68   ┆dress; var_ref;   type_ref; with┆
0x068c40…068c60             20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 63 6f 6e 74 65 78 74 20 3d 20 66 69 65 6c 64   ┆ ot^ do begin if context = field┆
0x068c60…068c80             20 74 68 65 6e 0a 70 75 74 31 28 7a 66 69 65 6c 64 2c 20 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a   ┆ then put1(zfield, offset) else ┆
0x068c80…068ca0             70 75 74 32 28 7a 64 79 6e 66 69 65 6c 64 2c 20 6e 69 76 2c 20 6f 66 66 73 65 74 29 3b 0a 73 74   ┆put2(zdynfield, niv, offset); st┆
0x068ca0…068cc0             61 74 65 3a 3d 61 64 64 72 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65   ┆ate:=addr; end; end; end;  proce┆
0x068cc0…068ce0             64 75 72 65 20 61 72 72 6f 77 3b 0a 62 65 67 69 6e 0a 69 66 20 6f 74 5e 2e 66 75 6e 63 5f 76 61   ┆dure arrow; begin if ot^.func_va┆
0x068ce0…068d00             6c 75 65 20 74 68 65 6e 20 62 65 67 69 6e 0a 74 79 70 65 5f 72 65 66 3b 0a 77 69 74 68 20 6f 74   ┆lue then begin type_ref; with ot┆
0x068d00…068d20             5e 20 64 6f 20 62 65 67 69 6e 0a 73 74 61 74 65 3a 3d 61 64 64 72 3b 20 20 20 63 6f 6e 74 65 78   ┆^ do begin state:=addr;   contex┆
0x068d20…068d40             74 3a 3d 65 78 70 72 3b 0a 66 75 6e 63 5f 76 61 6c 75 65 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b   ┆t:=expr; func_value:=false; end;┆
0x068d40…068d60             0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 74 65 6d 70 5f 77 69 74 68 76 61 72 5f 6e 6f 74   ┆ end else begin temp_withvar_not┆
0x068d60…068d80             5f 75 73 65 64 3a 3d 20 66 61 6c 73 65 3b 0a 61 64 64 72 65 73 73 3b 0a 69 66 20 28 2a 20 2a 2a   ┆_used:= false; address; if (* **┆
0x068d80…068da0             72 63 33 35 30 32 63 2a 2a 20 2a 29 20 28 6e 6f 74 20 76 65 72 73 69 6f 6e 7a 38 30 29 20 61 6e   ┆rc3502c** *) (not versionz80) an┆
0x068da0…068dc0             64 20 28 6e 6f 74 20 6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 29 20 74 68 65 6e 0a 69 66 20 6f 74   ┆d (not lambdaversion) then if ot┆
0x068dc0…068de0             5e 2e 6b 69 6e 64 20 3d 20 72 65 66 5f 74 79 70 65 20 74 68 65 6e 0a 70 75 74 31 28 7a 66 69 65   ┆^.kind = ref_type then put1(zfie┆
0x068de0…068e00             6c 64 2c 62 79 74 65 5f 6c 65 6e 67 74 68 29 3b 0a 70 75 74 30 28 7a 69 6e 64 61 64 64 72 29 3b   ┆ld,byte_length); put0(zindaddr);┆
0x068e00…068e20 (27, 1, 15) 0a 6f 74 5e 2e 73 74 61 74 65 3a 3d 61 64 64 72 3b 0a 74 79 70 65 5f 72 65 66 3b 0a 65 6e 64 3b   ┆ ot^.state:=addr; type_ref; end;┆
0x068e20…068e40             0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 64 65 78 5f 65 78 70 72 3b 0a 62 65 67   ┆ end;  procedure index_expr; beg┆
0x068e40…068e60             69 6e 0a 74 65 6d 70 5f 77 69 74 68 76 61 72 5f 6e 6f 74 5f 75 73 65 64 3a 3d 20 66 61 6c 73 65   ┆in temp_withvar_not_used:= false┆
0x068e60…068e80             3b 0a 61 64 64 72 65 73 73 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 0a 69 66 20 61 72 72 61 79 5f   ┆; address; with ot^ do if array_┆
0x068e80…068ea0             70 61 63 6b 65 64 20 74 68 65 6e 20 70 75 74 30 28 7a 70 61 63 6b 65 64 61 72 72 29 0a 65 6c 73   ┆packed then put0(zpackedarr) els┆
0x068ea0…068ec0             65 20 70 75 74 30 28 7a 69 6e 64 65 78 65 78 70 72 29 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64   ┆e put0(zindexexpr); end;  proced┆
0x068ec0…068ee0             75 72 65 20 69 6e 64 65 78 3b 0a 76 61 72 20 6e 69 78 2c 20 65 3a 20 69 6e 74 65 67 65 72 3b 20   ┆ure index; var nix, e: integer; ┆
0x068ee0…068f00             20 20 70 61 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 6c 6f 61 64 5f 65 78 70 72 3b   ┆  pa : boolean; begin load_expr;┆
0x068f00…068f20             20 20 20 28 2a 6c 6f 61 64 20 69 6e 64 65 78 20 76 61 6c 75 65 2a 29 0a 70 6f 70 3b 20 20 20 20   ┆   (*load index value*) pop;    ┆
0x068f20…068f40             20 20 20 20 20 28 2a 69 6e 64 65 78 20 76 61 6c 75 65 2a 29 0a 70 61 73 73 69 6e 28 6e 69 78 29   ┆     (*index value*) passin(nix)┆
0x068f40…068f60             3b 20 20 20 28 2a 20 61 72 72 61 79 20 74 79 70 65 20 6e 69 78 20 2a 29 0a 77 69 74 68 20 6e 61   ┆;   (* array type nix *) with na┆
0x068f60…068f80             6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 64 79 6e 61 6d 69   ┆metable(nix)^ do begin if dynami┆
0x068f80…068fa0             63 20 74 68 65 6e 0a 70 75 74 32 28 7a 69 6e 64 65 78 2c 20 6e 69 76 2c 20 6f 66 66 73 65 74 2b   ┆c then put2(zindex, niv, offset+┆
0x068fa0…068fc0             32 29 0a 65 6c 73 65 0a 69 66 20 6e 6f 74 28 6c 61 6d 62 64 61 76 65 72 73 69 6f 6e 20 6f 72 20   ┆2) else if not(lambdaversion or ┆
0x068fc0…068fe0             76 65 72 73 69 6f 6e 7a 38 30 29 20 20 20 20 20 28 2a 72 63 33 35 30 32 20 6d 6f 64 2e 32 2a 29   ┆versionz80)     (*rc3502 mod.2*)┆
0x068fe0…069000             0a 20 20 20 61 6e 64 20 6e 6f 74 20 70 61 63 6b 65 64 5f 63 6f 6d 70 0a 20 20 20 61 6e 64 20 28   ┆    and not packed_comp    and (┆
0x069000…069020 (28, 0, 1)  20 28 6d 69 6e 20 3d 20 30 29 20 6f 72 20 28 6d 69 6e 20 3d 20 31 29 20 29 0a 20 20 20 28 2a 20   ┆ (min = 0) or (min = 1) )    (* ┆
0x069020…069040             73 74 61 74 69 63 20 61 72 72 61 79 20 77 69 74 68 20 69 6e 64 65 78 20 73 74 61 72 74 69 6e 67   ┆static array with index starting┆
0x069040…069060             20 69 6e 20 30 20 6f 72 20 31 20 61 6e 64 20 73 74 61 74 69 63 20 65 6c 65 6d 65 6e 74 20 74 79   ┆ in 0 or 1 and static element ty┆
0x069060…069080             70 65 20 2a 29 0a 74 68 65 6e 0a 70 75 74 33 28 7a 68 69 6e 64 65 78 2c 20 6d 69 6e 2c 20 6d 61   ┆pe *) then put3(zhindex, min, ma┆
0x069080…0690a0             78 2c 20 6e 69 76 29 0a 65 6c 73 65 20 62 65 67 69 6e 0a 69 66 20 6c 69 78 20 3c 20 30 20 74 68   ┆x, niv) else begin if lix < 0 th┆
0x0690a0…0690c0             65 6e 20 62 65 67 69 6e 20 20 28 2a 20 61 6c 6c 6f 63 20 64 6f 70 65 20 76 65 63 74 6f 72 20 2a   ┆en begin  (* alloc dope vector *┆
0x0690c0…0690e0             29 0a 6c 69 78 3a 3d 2d 6c 69 78 3b 0a 61 6c 6c 6f 63 5f 64 6f 70 65 28 6c 69 78 2c 20 6d 69 6e   ┆) lix:=-lix; alloc_dope(lix, min┆
0x0690e0…069100             2c 20 6d 61 78 2c 20 6e 69 76 29 3b 0a 65 6e 64 3b 0a 70 75 74 31 28 7a 63 69 6e 64 65 78 2c 20   ┆, max, niv); end; put1(zcindex, ┆
0x069100…069120             6c 69 78 29 3b 0a 65 6e 64 3b 0a 70 61 3a 3d 70 61 63 6b 65 64 5f 63 6f 6d 70 3b 0a 65 6e 64 3b   ┆lix); end; pa:=packed_comp; end;┆
0x069120…069140             0a 74 79 70 65 5f 72 65 66 3b 0a 69 66 20 70 61 20 74 68 65 6e 0a 77 69 74 68 20 6f 74 5e 20 64   ┆ type_ref; if pa then with ot^ d┆
0x069140…069160             6f 20 62 65 67 69 6e 0a 73 74 61 74 65 3a 3d 70 5f 63 6f 6d 70 3b 20 20 73 69 7a 65 3a 3d 77 6f   ┆o begin state:=p_comp;  size:=wo┆
0x069160…069180             72 64 5f 6c 65 6e 67 74 68 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆rd_length; end; end;  procedure ┆
0x069180…0691a0             6c 69 74 65 72 61 6c 3b 0a 76 61 72 20 69 2c 20 63 5f 69 6e 64 65 78 20 3a 20 69 6e 74 65 67 65   ┆literal; var i, c_index : intege┆
0x0691a0…0691c0             72 3b 0a 20 20 20 20 74 79 2c 6c 2c 63 6c 69 78 2c 63 68 31 2c 63 68 32 2c 63 68 2c 76 61 6c 2c   ┆r;     ty,l,clix,ch1,ch2,ch,val,┆
0x0691c0…0691e0             62 61 73 65 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 74 79 29 3b   ┆base: integer; begin passin(ty);┆
0x0691e0…069200             20 20 20 70 61 73 73 69 6e 28 6c 29 3b 0a 63 61 73 65 20 74 79 20 6f 66 0a 73 74 72 69 6e 67 5f   ┆   passin(l); case ty of string_┆
0x069200…069220 (28, 0, 2)  63 6f 6e 73 74 3a 20 62 65 67 69 6e 0a 61 6c 6c 6f 63 5f 63 6f 6e 73 74 61 6e 74 28 63 6c 69 78   ┆const: begin alloc_constant(clix┆
0x069220…069240             2c 63 5f 69 6e 64 65 78 2c 6c 29 3b 0a 66 6f 72 20 69 3a 3d 63 5f 69 6e 64 65 78 20 74 6f 20 63   ┆,c_index,l); for i:=c_index to c┆
0x069240…069260             5f 69 6e 64 65 78 2b 6c 20 64 69 76 20 32 2d 31 20 64 6f 20 62 65 67 69 6e 0a 70 61 73 73 69 6e   ┆_index+l div 2-1 do begin passin┆
0x069260…069280             28 63 68 31 29 3b 20 70 61 73 73 69 6e 28 63 68 32 29 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a   ┆(ch1); passin(ch2); if (* **z80*┆
0x069280…0692a0             2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 75 70 64 61 74 65 5f 63 6f 6e 73   ┆* *) versionz80 then update_cons┆
0x0692a0…0692c0             74 28 69 2c 20 63 68 32 20 73 68 6c 20 38 20 2b 20 63 68 31 29 0a 65 6c 73 65 0a 28 2a 20 2a 2a   ┆t(i, ch2 shl 8 + ch1) else (* **┆
0x0692c0…0692e0             6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 75 70 64 61 74 65 5f 63 6f   ┆lambda or rc3502c** *) update_co┆
0x0692e0…069300             6e 73 74 28 69 2c 20 63 68 31 20 73 68 6c 20 38 2b 63 68 32 29 3b 0a 65 6e 64 3b 0a 69 66 20 6c   ┆nst(i, ch1 shl 8+ch2); end; if l┆
0x069300…069320             20 6d 6f 64 20 32 20 3c 3e 20 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 63 68   ┆ mod 2 <> 0 then begin passin(ch┆
0x069320…069340             29 3b 0a 69 3a 3d 63 5f 69 6e 64 65 78 20 2b 20 6c 20 64 69 76 20 32 3b 0a 69 66 20 28 2a 20 2a   ┆); i:=c_index + l div 2; if (* *┆
0x069340…069360             2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 75 70 64 61 74 65   ┆*z80** *) versionz80 then update┆
0x069360…069380             5f 63 6f 6e 73 74 28 69 2c 20 6f 72 64 28 27 20 27 29 20 73 68 6c 20 38 20 2b 20 63 68 29 0a 65   ┆_const(i, ord(' ') shl 8 + ch) e┆
0x069380…0693a0             6c 73 65 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a   ┆lse (* **lambda or rc3502c** *) ┆
0x0693a0…0693c0             75 70 64 61 74 65 5f 63 6f 6e 73 74 28 69 2c 20 63 68 20 73 68 6c 20 38 2b 6f 72 64 28 27 20 27   ┆update_const(i, ch shl 8+ord(' '┆
0x0693c0…0693e0             29 29 3b 0a 65 6e 64 3b 0a 70 75 73 68 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e   ┆)); end; push; with ot^ do begin┆
0x0693e0…069400             0a 76 61 72 5f 6e 69 78 3a 3d 2d 31 3b 0a 74 79 70 65 5f 6e 69 78 3a 3d 2d 31 3b 0a 6b 69 6e 64   ┆ var_nix:=-1; type_nix:=-1; kind┆
0x069400…069420 (28, 0, 3)  3a 3d 61 72 72 61 79 5f 74 79 70 65 3b 20 6e 69 76 3a 3d 63 6c 69 78 3b 0a 6f 66 66 73 65 74 3a   ┆:=array_type; niv:=clix; offset:┆
0x069420…069440             3d 63 5f 69 6e 64 65 78 3b 20 20 20 20 73 69 7a 65 3a 3d 6c 3b 0a 63 6f 6e 74 65 78 74 3a 3d 73   ┆=c_index;    size:=l; context:=s┆
0x069440…069460             74 72 75 63 5f 63 3b 20 20 73 74 61 74 65 3a 3d 64 69 72 65 63 74 3b 0a 64 79 6e 61 6d 69 63 3a   ┆truc_c;  state:=direct; dynamic:┆
0x069460…069480             3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 63 68 61 72 5f 63 6f 6e 73 74 3a 20 62 65   ┆=false; end; end; char_const: be┆
0x069480…0694a0             67 69 6e 0a 70 61 73 73 69 6e 28 63 68 29 3b 0a 70 75 73 68 3b 0a 77 69 74 68 20 6f 74 5e 20 64   ┆gin passin(ch); push; with ot^ d┆
0x0694a0…0694c0             6f 20 62 65 67 69 6e 0a 74 79 70 65 5f 6e 69 78 3a 3d 2d 31 3b 0a 76 61 72 5f 6e 69 78 3a 3d 2d   ┆o begin type_nix:=-1; var_nix:=-┆
0x0694c0…0694e0             31 3b 0a 6b 69 6e 64 3a 3d 63 68 61 72 5f 74 79 70 65 3b 0a 6f 66 66 73 65 74 3a 3d 63 68 3b 20   ┆1; kind:=char_type; offset:=ch; ┆
0x0694e0…069500             20 20 20 73 69 7a 65 3a 3d 63 68 61 72 5f 6c 65 6e 67 74 68 3b 0a 63 6f 6e 74 65 78 74 3a 3d 73   ┆   size:=char_length; context:=s┆
0x069500…069520             63 6f 6e 73 74 3b 20 20 73 74 61 74 65 3a 3d 64 69 72 65 63 74 3b 0a 64 79 6e 61 6d 69 63 3a 3d   ┆const;  state:=direct; dynamic:=┆
0x069520…069540             66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 6e 75 6d 5f 63 6f 6e 73 74 3a 20 62 65 67 69   ┆false; end; end; num_const: begi┆
0x069540…069560             6e 0a 70 61 73 73 69 6e 28 63 68 29 3b 20 20 20 76 61 6c 3a 3d 30 3b 20 20 20 62 61 73 65 3a 3d   ┆n passin(ch);   val:=0;   base:=┆
0x069560…069580             31 30 3b 0a 69 66 20 63 68 3d 6f 72 64 28 27 23 27 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 70 61   ┆10; if ch=ord('#') then begin pa┆
0x069580…0695a0             73 73 69 6e 28 63 68 29 3b 20 20 20 6c 3a 3d 6c 2d 32 3b 0a 69 66 20 63 68 3d 6f 72 64 28 27 62   ┆ssin(ch);   l:=l-2; if ch=ord('b┆
0x0695a0…0695c0             27 29 20 74 68 65 6e 20 62 61 73 65 3a 3d 32 0a 65 6c 73 65 20 69 66 20 63 68 3d 6f 72 64 28 27   ┆') then base:=2 else if ch=ord('┆
0x0695c0…0695e0             6f 27 29 20 74 68 65 6e 20 62 61 73 65 3a 3d 38 0a 65 6c 73 65 20 69 66 20 63 68 3d 6f 72 64 28   ┆o') then base:=8 else if ch=ord(┆
0x0695e0…069600             27 68 27 29 20 74 68 65 6e 20 62 61 73 65 3a 3d 31 36 0a 65 6c 73 65 20 69 66 20 63 68 3d 6f 72   ┆'h') then base:=16 else if ch=or┆
0x069600…069620 (28, 0, 4)  64 28 27 64 27 29 20 74 68 65 6e 20 62 61 73 65 3a 3d 31 30 0a 65 6c 73 65 20 65 72 72 6f 72 28   ┆d('d') then base:=10 else error(┆
0x069620…069640             6c 69 74 65 72 61 6c 5f 65 72 72 6f 72 29 3b 0a 70 61 73 73 69 6e 28 63 68 29 3b 0a 65 6e 64 3b   ┆literal_error); passin(ch); end;┆
0x069640…069660             0a 66 6f 72 20 69 3a 3d 31 20 74 6f 20 6c 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 63 68 3c 3d 6f   ┆ for i:=1 to l do begin if ch<=o┆
0x069660…069680             72 64 28 27 39 27 29 20 74 68 65 6e 20 63 68 3a 3d 63 68 2d 6f 72 64 28 27 30 27 29 0a 65 6c 73   ┆rd('9') then ch:=ch-ord('0') els┆
0x069680…0696a0             65 20 69 66 20 63 68 3e 3d 6f 72 64 28 27 61 27 29 20 74 68 65 6e 20 63 68 3a 3d 63 68 2d 6f 72   ┆e if ch>=ord('a') then ch:=ch-or┆
0x0696a0…0696c0             64 28 27 61 27 29 2b 31 30 3b 0a 69 66 20 28 63 68 3c 30 29 20 6f 72 20 28 63 68 3e 3d 62 61 73   ┆d('a')+10; if (ch<0) or (ch>=bas┆
0x0696c0…0696e0             65 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 6c 69 74 65 72 61 6c 5f 65 72 72 6f   ┆e) then begin error(literal_erro┆
0x0696e0…069700             72 29 3b 0a 63 68 3a 3d 30 3b 0a 65 6e 64 3b 0a 69 66 20 62 61 73 65 3d 31 30 20 74 68 65 6e 0a   ┆r); ch:=0; end; if base=10 then ┆
0x069700…069720             76 61 6c 3a 3d 69 6e 74 5f 61 64 64 28 69 6e 74 5f 6d 75 6c 28 76 61 6c 2c 62 61 73 65 29 2c 63   ┆val:=int_add(int_mul(val,base),c┆
0x069720…069740             68 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28 2a 24 52 2d 2a 29 0a 63 61 73 65 20 62 61 73 65 20   ┆h) else begin (*$R-*) case base ┆
0x069740…069760             6f 66 0a 32 3a 20 69 66 20 76 61 6c 3c 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 65 72 72 6f 72 28   ┆of 2: if val<0 then begin error(┆
0x069760…069780             6c 69 74 65 72 61 6c 5f 65 72 72 6f 72 29 3b 0a 76 61 6c 20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 38   ┆literal_error); val := 0; end; 8┆
0x069780…0697a0             3a 69 66 20 28 2d 31 29 20 73 68 72 20 33 20 3c 20 76 61 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆:if (-1) shr 3 < val then begin ┆
0x0697a0…0697c0             65 72 72 6f 72 28 6c 69 74 65 72 61 6c 5f 65 72 72 6f 72 29 3b 0a 76 61 6c 20 3a 3d 20 30 3b 0a   ┆error(literal_error); val := 0; ┆
0x0697c0…0697e0             65 6e 64 3b 0a 31 36 3a 69 66 20 28 2d 31 29 20 73 68 72 20 34 20 3c 20 76 61 6c 20 74 68 65 6e   ┆end; 16:if (-1) shr 4 < val then┆
0x0697e0…069800             0a 62 65 67 69 6e 0a 65 72 72 6f 72 28 6c 69 74 65 72 61 6c 5f 65 72 72 6f 72 29 3b 0a 76 61 6c   ┆ begin error(literal_error); val┆
0x069800…069820 (28, 0, 5)  20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 76 61 6c 3a 3d 76 61 6c 2a 62 61 73 65 2b 63   ┆ := 0; end; end; val:=val*base+c┆
0x069820…069840             68 3b 0a 28 2a 24 52 2b 2a 29 0a 65 6e 64 3b 0a 69 66 20 69 3c 6c 20 74 68 65 6e 20 70 61 73 73   ┆h; (*$R+*) end; if i<l then pass┆
0x069840…069860             69 6e 28 63 68 29 3b 0a 65 6e 64 3b 0a 70 75 73 68 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62   ┆in(ch); end; push; with ot^ do b┆
0x069860…069880             65 67 69 6e 0a 74 79 70 65 5f 6e 69 78 3a 3d 2d 31 3b 0a 76 61 72 5f 6e 69 78 3a 3d 2d 31 3b 0a   ┆egin type_nix:=-1; var_nix:=-1; ┆
0x069880…0698a0             6b 69 6e 64 3a 3d 69 6e 74 5f 74 79 70 65 3b 20 20 20 20 20 6f 66 66 73 65 74 3a 3d 76 61 6c 3b   ┆kind:=int_type;     offset:=val;┆
0x0698a0…0698c0             0a 63 6f 6e 74 65 78 74 3a 3d 73 63 6f 6e 73 74 3b 20 20 20 20 73 74 61 74 65 3a 3d 64 69 72 65   ┆ context:=sconst;    state:=dire┆
0x0698c0…0698e0             63 74 3b 0a 73 69 7a 65 3a 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 64 79 6e 61 6d 69 63 3a 3d   ┆ct; size:=word_length; dynamic:=┆
0x0698e0…069900             66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 6c 69   ┆false; end; end; end; end; (* li┆
0x069900…069920             74 65 72 61 6c 20 2a 29 0a 0a 50 72 6f 63 65 64 75 72 65 20 74 79 70 65 73 69 7a 65 5f 63 61 6c   ┆teral *)  Procedure typesize_cal┆
0x069920…069940             6c 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 6e 69 78 29 3b 0a 70 75 73 68 3b 0a 77 69 74 68   ┆l; begin passin(nix); push; with┆
0x069940…069960             20 6f 74 5e 20 64 6f 0a 62 65 67 69 6e 20 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 63 6f 6d 6d   ┆ ot^ do begin (* initialize comm┆
0x069960…069980             6f 6e 20 66 69 65 6c 64 73 20 2a 29 0a 74 79 70 65 5f 6e 69 78 3a 3d 20 2d 31 3b 0a 76 61 72 5f   ┆on fields *) type_nix:= -1; var_┆
0x069980…0699a0             6e 69 78 3a 3d 20 2d 31 3b 0a 73 74 61 74 65 3a 3d 20 64 69 72 65 63 74 3b 0a 6b 69 6e 64 3a 3d   ┆nix:= -1; state:= direct; kind:=┆
0x0699a0…0699c0             20 69 6e 74 5f 74 79 70 65 3b 0a 64 79 6e 61 6d 69 63 3a 3d 20 66 61 6c 73 65 3b 0a 73 69 7a 65   ┆ int_type; dynamic:= false; size┆
0x0699c0…0699e0             3a 3d 20 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 6f 74 5e   ┆:= word_length; end; (* with ot^┆
0x0699e0…069a00             20 2a 29 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 20 6e 69 78 20 29 5e 20 28 2a 20 74 79   ┆ *) with nametable( nix )^ (* ty┆
0x069a00…069a20 (28, 0, 6)  70 65 20 6e 69 78 20 2a 29 20 64 6f 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e 0a 62 65 67   ┆pe nix *) do if dynamic then beg┆
0x069a20…069a40             69 6e 0a 6f 74 5e 2e 63 6f 6e 74 65 78 74 3a 3d 20 76 61 72 69 61 62 6c 65 3b 0a 6f 74 5e 2e 6e   ┆in ot^.context:= variable; ot^.n┆
0x069a40…069a60             69 76 3a 3d 20 6e 69 76 3b 20 28 2a 20 6f 66 20 64 6f 70 65 20 76 65 63 74 6f 72 20 2a 29 0a 6f   ┆iv:= niv; (* of dope vector *) o┆
0x069a60…069a80             74 5e 2e 6f 66 66 73 65 74 3a 3d 20 6f 66 66 73 65 74 3b 20 28 2a 20 6f 66 20 64 6f 70 65 20 76   ┆t^.offset:= offset; (* of dope v┆
0x069a80…069aa0             65 63 74 6f 72 20 2a 29 0a 28 2a 20 6e 69 76 2c 20 6f 66 66 73 65 74 20 64 65 6e 6f 74 65 73 20   ┆ector *) (* niv, offset denotes ┆
0x069aa0…069ac0             74 68 65 20 73 69 7a 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20 64 6f 70 65 20 76 65 63 74 6f   ┆the size field of the dope vecto┆
0x069ac0…069ae0             72 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 20 28 2a 20 73 74 61 74 69 63 20 2a 29 0a 62 65 67 69 6e   ┆r *) end else (* static *) begin┆
0x069ae0…069b00             0a 6f 74 5e 2e 63 6f 6e 74 65 78 74 3a 3d 20 73 63 6f 6e 73 74 3b 0a 6f 74 5e 2e 6f 66 66 73 65   ┆ ot^.context:= sconst; ot^.offse┆
0x069b00…069b20             74 3a 3d 20 73 69 7a 65 20 28 2a 20 6f 66 20 6f 62 6a 65 63 74 20 2a 29 3b 0a 65 6e 64 3b 0a 65   ┆t:= size (* of object *); end; e┆
0x069b20…069b40             6e 64 3b 20 28 2a 20 74 79 70 65 20 73 69 7a 65 20 63 61 6c 6c 20 2a 29 0a 0a 0a 70 72 6f 63 65   ┆nd; (* type size call *)   proce┆
0x069b40…069b60             64 75 72 65 20 6e 65 77 5f 73 65 74 3b 0a 62 65 67 69 6e 0a 70 75 73 68 3b 0a 67 65 74 5f 70 75   ┆dure new_set; begin push; get_pu┆
0x069b60…069b80             73 68 65 64 5f 63 6f 6e 73 74 73 3b 0a 69 66 20 73 74 61 74 5f 70 61 72 74 20 74 68 65 6e 20 62   ┆shed_consts; if stat_part then b┆
0x069b80…069ba0             65 67 69 6e 0a 70 75 74 30 28 7a 73 65 74 29 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67   ┆egin put0(zset); with ot^ do beg┆
0x069ba0…069bc0             69 6e 0a 6b 69 6e 64 3a 3d 73 65 74 5f 74 79 70 65 3b 20 20 63 6f 6e 74 65 78 74 3a 3d 65 78 70   ┆in kind:=set_type;  context:=exp┆
0x069bc0…069be0             72 3b 0a 73 69 7a 65 3a 3d 30 3b 0a 73 74 61 74 65 3a 3d 65 78 70 72 65 73 73 69 6f 6e 3b 0a 65   ┆r; size:=0; state:=expression; e┆
0x069be0…069c00             6e 64 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65   ┆nd end else begin with ot^ do be┆
0x069c00…069c20 (28, 0, 7)  67 69 6e 0a 6b 69 6e 64 3a 3d 73 65 74 5f 74 79 70 65 3b 0a 73 69 7a 65 3a 3d 73 65 74 5f 63 6f   ┆gin kind:=set_type; size:=set_co┆
0x069c20…069c40             6e 73 74 5f 6c 65 6e 67 74 68 2a 32 3b 0a 61 6c 6c 6f 63 5f 63 6f 6e 73 74 61 6e 74 28 6e 69 76   ┆nst_length*2; alloc_constant(niv┆
0x069c40…069c60             2c 6f 66 66 73 65 74 2c 73 69 7a 65 29 3b 0a 63 6f 6e 74 65 78 74 3a 3d 73 65 74 5f 63 6f 6e 73   ┆,offset,size); context:=set_cons┆
0x069c60…069c80             74 3b 20 20 20 66 69 72 73 74 3a 3d 30 3b 0a 73 74 61 74 65 3a 3d 64 69 72 65 63 74 3b 0a 76 61   ┆t;   first:=0; state:=direct; va┆
0x069c80…069ca0             72 5f 6e 69 78 3a 3d 20 2d 31 3b 20 74 79 70 65 5f 6e 69 78 3a 3d 20 2d 31 3b 0a 64 79 6e 61 6d   ┆r_nix:= -1; type_nix:= -1; dynam┆
0x069ca0…069cc0             69 63 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65   ┆ic:=false; end; end; end;  proce┆
0x069cc0…069ce0             64 75 72 65 20 73 65 74 5f 62 69 74 28 6e 6f 3a 20 69 6e 74 65 67 65 72 29 3b 20 66 6f 72 77 61   ┆dure set_bit(no: integer); forwa┆
0x069ce0…069d00             72 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 65 74 5f 65 78 70 72 3b 0a 62 65 67 69 6e 0a 69   ┆rd;  procedure set_expr; begin i┆
0x069d00…069d20             66 20 73 74 61 74 5f 70 61 72 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 6c 6f 61 64 5f 65 78 70 72   ┆f stat_part then begin load_expr┆
0x069d20…069d40             3b 20 20 20 70 6f 70 3b 0a 70 75 74 30 28 7a 73 65 74 65 78 70 72 29 3b 0a 65 6e 64 3b 0a 65 6e   ┆;   pop; put0(zsetexpr); end; en┆
0x069d40…069d60             64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 63 6c 75 64 65 5f 69 6e 74 3b 0a 76 61 72 20 6d   ┆d;  procedure include_int; var m┆
0x069d60…069d80             69 6e 2c 6d 61 78 2c 69 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66 20 73 74 61 74   ┆in,max,i: integer; begin if stat┆
0x069d80…069da0             5f 70 61 72 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 6c 6f 61 64 5f 65 78 70 72 3b 20 20 20 70 6f   ┆_part then begin load_expr;   po┆
0x069da0…069dc0             70 3b 0a 70 75 74 30 28 7a 69 6e 63 6c 75 64 65 69 6e 74 29 3b 0a 65 6e 64 20 65 6c 73 65 20 62   ┆p; put0(zincludeint); end else b┆
0x069dc0…069de0             65 67 69 6e 0a 6d 61 78 3a 3d 74 61 6b 65 5f 65 78 70 72 3b 20 20 20 6d 69 6e 3a 3d 74 61 6b 65   ┆egin max:=take_expr;   min:=take┆
0x069de0…069e00             5f 65 78 70 72 3b 0a 69 66 20 28 6d 69 6e 3c 30 29 20 6f 72 20 28 6d 69 6e 3e 6d 61 78 5f 73 65   ┆_expr; if (min<0) or (min>max_se┆
0x069e00…069e20 (28, 0, 8)  74 5f 63 6f 6e 73 74 5f 76 61 6c 75 65 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28   ┆t_const_value) then begin error(┆
0x069e20…069e40             73 65 74 5f 65 72 72 6f 72 29 3b 0a 6d 69 6e 3a 3d 30 3b 0a 65 6e 64 3b 0a 69 66 20 28 6d 61 78   ┆set_error); min:=0; end; if (max┆
0x069e40…069e60             3e 6d 61 78 5f 73 65 74 5f 63 6f 6e 73 74 5f 76 61 6c 75 65 29 20 74 68 65 6e 20 62 65 67 69 6e   ┆>max_set_const_value) then begin┆
0x069e60…069e80             0a 65 72 72 6f 72 28 73 65 74 5f 65 72 72 6f 72 29 3b 0a 6d 61 78 3a 3d 6d 69 6e 3b 0a 65 6e 64   ┆ error(set_error); max:=min; end┆
0x069e80…069ea0             3b 0a 66 6f 72 20 69 3a 3d 6d 69 6e 20 74 6f 20 6d 61 78 20 64 6f 20 73 65 74 5f 62 69 74 28 69   ┆; for i:=min to max do set_bit(i┆
0x069ea0…069ec0             29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 63 6c 75 64 65 3b   ┆); end; end;  procedure include;┆
0x069ec0…069ee0             0a 76 61 72 20 76 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66 20 73 74 61 74 5f 70   ┆ var v: integer; begin if stat_p┆
0x069ee0…069f00             61 72 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 6c 6f 61 64 5f 65 78 70 72 3b 20 20 20 70 6f 70 3b   ┆art then begin load_expr;   pop;┆
0x069f00…069f20             0a 70 75 74 30 28 7a 69 6e 63 6c 75 64 65 29 3b 0a 65 6e 64 20 65 6c 73 65 20 62 65 67 69 6e 0a   ┆ put0(zinclude); end else begin ┆
0x069f20…069f40             76 3a 3d 74 61 6b 65 5f 65 78 70 72 3b 0a 69 66 20 28 76 3c 30 29 20 6f 72 20 28 76 3e 6d 61 78   ┆v:=take_expr; if (v<0) or (v>max┆
0x069f40…069f60             5f 73 65 74 5f 63 6f 6e 73 74 5f 76 61 6c 75 65 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72   ┆_set_const_value) then begin err┆
0x069f60…069f80             6f 72 28 73 65 74 5f 65 72 72 6f 72 29 3b 0a 76 3a 3d 30 3b 0a 65 6e 64 3b 0a 73 65 74 5f 62 69   ┆or(set_error); v:=0; end; set_bi┆
0x069f80…069fa0             74 28 76 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 65 74 5f 62   ┆t(v); end; end;  procedure set_b┆
0x069fa0…069fc0             69 74 28 6e 6f 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 20 62 69 74 2c 77 6f 72 64 2c 20 6f   ┆it(no: integer); var bit,word, o┆
0x069fc0…069fe0             6c 64 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 62 69 74 20 3a 3d 6e 6f 20 6d 6f 64 20   ┆ld: integer; begin bit :=no mod ┆
0x069fe0…06a000             62 69 74 73 5f 70 72 5f 77 6f 72 64 3b 0a 77 6f 72 64 3a 3d 6f 74 5e 2e 6f 66 66 73 65 74 20 2b   ┆bits_pr_word; word:=ot^.offset +┆
0x06a000…06a020 (28, 0, 9)  20 6e 6f 20 64 69 76 20 62 69 74 73 5f 70 72 5f 77 6f 72 64 3b 0a 6f 6c 64 20 3a 3d 72 65 74 72   ┆ no div bits_pr_word; old :=retr┆
0x06a020…06a040             69 65 76 65 5f 63 6f 6e 73 74 28 77 6f 72 64 29 3b 0a 69 66 20 6f 6c 64 20 61 6e 64 20 28 31 20   ┆ieve_const(word); if old and (1 ┆
0x06a040…06a060             73 68 6c 20 28 28 62 69 74 73 5f 70 72 5f 77 6f 72 64 2d 31 29 2d 62 69 74 29 29 20 3d 20 30 20   ┆shl ((bits_pr_word-1)-bit)) = 0 ┆
0x06a060…06a080             74 68 65 6e 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 77 6f 72 64 2c 20 6f 6c 64 20 6f 72 20 28   ┆then update_const(word, old or (┆
0x06a080…06a0a0             31 20 73 68 6c 20 28 28 62 69 74 73 5f 70 72 5f 77 6f 72 64 2d 31 29 2d 62 69 74 29 29 29 3b 0a   ┆1 shl ((bits_pr_word-1)-bit))); ┆
0x06a0a0…06a0c0             77 69 74 68 20 6f 74 5e 20 64 6f 0a 69 66 20 66 69 72 73 74 3c 6e 6f 20 74 68 65 6e 20 66 69 72   ┆with ot^ do if first<no then fir┆
0x06a0c0…06a0e0             73 74 3a 3d 6e 6f 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 73 65 74 3b   ┆st:=no; end;  procedure end_set;┆
0x06a0e0…06a100             0a 76 61 72 20 77 6f 72 64 73 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69   ┆ var words: integer; begin passi┆
0x06a100…06a120             6e 28 6e 69 78 29 3b 0a 69 66 20 73 74 61 74 5f 70 61 72 74 20 74 68 65 6e 0a 70 75 74 30 28 7a   ┆n(nix); if stat_part then put0(z┆
0x06a120…06a140             65 6e 64 73 65 74 29 0a 65 6c 73 65 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 28   ┆endset) else with ot^ do begin (┆
0x06a140…06a160             2a 20 6f 66 66 73 65 74 20 69 73 20 69 6e 64 65 78 20 69 6e 20 63 20 20 2d 2d 20 20 66 69 72 73   ┆* offset is index in c  --  firs┆
0x06a160…06a180             74 20 69 73 20 6d 61 78 20 76 61 6c 75 65 20 6f 66 20 65 78 70 72 20 2a 29 0a 77 6f 72 64 73 3a   ┆t is max value of expr *) words:┆
0x06a180…06a1a0             3d 28 66 69 72 73 74 20 2b 20 31 20 2b 20 62 69 74 73 5f 70 72 5f 77 6f 72 64 20 2d 20 31 29 20   ┆=(first + 1 + bits_pr_word - 1) ┆
0x06a1a0…06a1c0             64 69 76 20 62 69 74 73 5f 70 72 5f 77 6f 72 64 3b 0a 69 66 20 77 6f 72 64 73 3d 30 20 74 68 65   ┆div bits_pr_word; if words=0 the┆
0x06a1c0…06a1e0             6e 20 77 6f 72 64 73 3a 3d 31 3b 0a 73 69 7a 65 3a 3d 77 6f 72 64 73 2a 32 3b 0a 63 75 74 5f 63   ┆n words:=1; size:=words*2; cut_c┆
0x06a1e0…06a200             6f 6e 73 74 61 6e 74 28 6f 66 66 73 65 74 2c 77 6f 72 64 73 29 3b 0a 77 69 74 68 20 6e 61 6d 65   ┆onstant(offset,words); with name┆
0x06a200…06a220 (28, 0, 10) 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 3a 3d 73 65   ┆table(nix)^ do begin context:=se┆
0x06a220…06a240             74 5f 74 79 70 65 3b 0a 73 69 7a 65 3a 3d 77 6f 72 64 73 2a 32 3b 0a 6d 69 6e 3a 3d 30 3b 20 20   ┆t_type; size:=words*2; min:=0;  ┆
0x06a240…06a260             20 6d 61 78 3a 3d 6f 74 5e 2e 66 69 72 73 74 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a   ┆ max:=ot^.first; end; end; end; ┆
0x06a260…06a280             0a 70 72 6f 63 65 64 75 72 65 20 6e 75 6c 6c 3b 0a 62 65 67 69 6e 0a 70 75 73 68 3b 0a 77 69 74   ┆ procedure null; begin push; wit┆
0x06a280…06a2a0             68 20 6f 74 5e 20 64 6f 20 62 65 67 69 6e 0a 6b 69 6e 64 3a 3d 69 6e 74 5f 74 79 70 65 3b 20 20   ┆h ot^ do begin kind:=int_type;  ┆
0x06a2a0…06a2c0             20 20 6f 66 66 73 65 74 3a 3d 30 3b 0a 73 69 7a 65 3a 3d 30 3b 20 20 20 20 20 20 20 20 20 20 20   ┆  offset:=0; size:=0;           ┆
0x06a2c0…06a2e0             63 6f 6e 74 65 78 74 3a 3d 73 63 6f 6e 73 74 3b 0a 73 74 61 74 65 3a 3d 64 69 72 65 63 74 3b 0a   ┆context:=sconst; state:=direct; ┆
0x06a2e0…06a300             65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 74 72 75 63 5f 63 6f 6e 73 74   ┆end; end;  procedure struc_const┆
0x06a300…06a320             3b 0a 62 65 67 69 6e 0a 28 2a 20 70 75 73 68 20 63 6f 6e 73 74 20 6c 65 76 65 6c 20 2a 29 0a 69   ┆; begin (* push const level *) i┆
0x06a320…06a340             66 20 73 73 5e 2e 6e 65 78 74 5f 73 74 72 75 63 3d 20 6e 69 6c 20 74 68 65 6e 0a 62 65 67 69 6e   ┆f ss^.next_struc= nil then begin┆
0x06a340…06a360             0a 6e 65 77 28 73 73 5e 2e 6e 65 78 74 5f 73 74 72 75 63 29 3b 0a 77 69 74 68 20 73 73 5e 2e 6e   ┆ new(ss^.next_struc); with ss^.n┆
0x06a360…06a380             65 78 74 5f 73 74 72 75 63 5e 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 78 74 5f 73 74 72 75 63 3a 3d   ┆ext_struc^ do begin next_struc:=┆
0x06a380…06a3a0             20 6e 69 6c 3b 20 28 2a 20 74 6f 70 20 65 6c 65 6d 65 6e 74 20 2a 29 0a 66 6f 72 6d 65 72 5f 73   ┆ nil; (* top element *) former_s┆
0x06a3a0…06a3c0             74 72 75 63 3a 3d 20 73 73 3b 0a 65 6e 64 3b 0a 74 6f 70 5f 73 73 3a 3d 20 74 6f 70 5f 73 73 2b   ┆truc:= ss; end; top_ss:= top_ss+┆
0x06a3c0…06a3e0             31 3b 0a 65 6e 64 3b 20 28 2a 20 61 6c 6c 6f 63 61 74 65 20 6f 6e 65 20 6d 6f 72 65 20 65 6c 65   ┆1; end; (* allocate one more ele┆
0x06a3e0…06a400             6d 65 6e 74 20 2a 29 0a 73 73 3a 3d 20 73 73 5e 2e 6e 65 78 74 5f 73 74 72 75 63 3b 0a 70 61 73   ┆ment *) ss:= ss^.next_struc; pas┆
0x06a400…06a420 (28, 0, 11) 73 69 6e 28 6e 69 78 29 3b 0a 77 69 74 68 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 2c 20   ┆sin(nix); with nametable(nix)^, ┆
0x06a420…06a440             73 73 5e 20 64 6f 20 62 65 67 69 6e 0a 73 61 76 65 64 5f 6e 69 78 3a 3d 6e 69 78 3b 0a 61 6c 6c   ┆ss^ do begin saved_nix:=nix; all┆
0x06a440…06a460             6f 63 5f 63 6f 6e 73 74 61 6e 74 28 73 61 76 65 64 5f 6c 69 78 2c 66 69 72 73 74 2c 73 69 7a 65   ┆oc_constant(saved_lix,first,size┆
0x06a460…06a480             29 3b 0a 28 2a 24 52 2d 2a 29 0a 66 69 72 73 74 3a 3d 66 69 72 73 74 2a 32 3b 0a 64 69 73 70 6c   ┆); (*$R-*) first:=first*2; displ┆
0x06a480…06a4a0             3a 3d 66 69 72 73 74 3b 0a 73 61 76 65 64 5f 73 69 7a 65 3a 3d 73 69 7a 65 3b 0a 73 61 76 65 64   ┆:=first; saved_size:=size; saved┆
0x06a4a0…06a4c0             5f 73 74 61 74 5f 70 61 72 74 3a 3d 73 74 61 74 5f 70 61 72 74 3b 0a 73 74 61 74 5f 70 61 72 74   ┆_stat_part:=stat_part; stat_part┆
0x06a4c0…06a4e0             3a 3d 66 61 6c 73 65 3b 0a 64 6f 70 65 5f 6c 69 78 3a 3d 6c 69 78 3b 0a 74 69 6d 65 73 3a 3d 31   ┆:=false; dope_lix:=lix; times:=1┆
0x06a4e0…06a500             3b 0a 69 66 20 63 6f 6e 74 65 78 74 20 69 6e 20 61 72 72 61 79 5f 74 79 70 65 73 20 74 68 65 6e   ┆; if context in array_types then┆
0x06a500…06a520             20 62 65 67 69 6e 0a 69 66 20 70 61 63 6b 65 64 5f 63 6f 6d 70 20 74 68 65 6e 20 62 65 67 69 6e   ┆ begin if packed_comp then begin┆
0x06a520…06a540             0a 69 6e 69 74 5f 6d 6f 64 65 3a 3d 70 61 63 6b 65 64 5f 61 72 72 61 79 3b 0a 65 6c 65 6d 5f 70   ┆ init_mode:=packed_array; elem_p┆
0x06a540…06a560             72 5f 77 6f 72 64 3a 3d 6e 69 76 20 73 68 72 20 38 3b 0a 62 69 74 73 5f 70 72 5f 66 69 65 6c 64   ┆r_word:=niv shr 8; bits_pr_field┆
0x06a560…06a580             3a 3d 6e 69 76 20 61 6e 64 20 32 35 35 3b 0a 65 6e 64 20 65 6c 73 65 0a 69 6e 69 74 5f 6d 6f 64   ┆:=niv and 255; end else init_mod┆
0x06a580…06a5a0             65 3a 3d 61 72 72 61 79 5f 69 6e 69 74 3b 0a 63 75 72 72 65 6e 74 5f 69 6e 64 65 78 3a 3d 30 3b   ┆e:=array_init; current_index:=0;┆
0x06a5a0…06a5c0             20 20 20 74 6f 70 5f 69 6e 64 65 78 3a 3d 6d 61 78 2d 6d 69 6e 2b 31 3b 0a 28 2a 24 52 2b 2a 29   ┆   top_index:=max-min+1; (*$R+*)┆
0x06a5c0…06a5e0             0a 65 6e 64 20 65 6c 73 65 0a 69 6e 69 74 5f 6d 6f 64 65 3a 3d 72 65 63 6f 72 64 5f 69 6e 69 74   ┆ end else init_mode:=record_init┆
0x06a5e0…06a600             3b 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 65 72   ┆; if dynamic then begin error(er┆
0x06a600…06a620 (28, 0, 12) 72 6f 72 5f 64 79 6e 29 3b 0a 69 6e 69 74 5f 6d 6f 64 65 3a 3d 65 72 72 6f 72 5f 69 6e 69 74 3b   ┆ror_dyn); init_mode:=error_init;┆
0x06a620…06a640             0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 6e 64 5f 73   ┆ end; end; end;  procedure end_s┆
0x06a640…06a660             74 72 75 63 3b 0a 62 65 67 69 6e 0a 70 75 73 68 3b 0a 77 69 74 68 20 6f 74 5e 2c 20 73 73 5e 20   ┆truc; begin push; with ot^, ss^ ┆
0x06a660…06a680             64 6f 20 62 65 67 69 6e 0a 69 66 20 69 6e 69 74 5f 6d 6f 64 65 3d 72 65 63 6f 72 64 5f 69 6e 69   ┆do begin if init_mode=record_ini┆
0x06a680…06a6a0             74 20 74 68 65 6e 0a 6b 69 6e 64 3a 3d 72 65 63 6f 72 64 5f 74 79 70 65 20 65 6c 73 65 20 6b 69   ┆t then kind:=record_type else ki┆
0x06a6a0…06a6c0             6e 64 3a 3d 61 72 72 61 79 5f 74 79 70 65 3b 0a 61 72 72 61 79 5f 70 61 63 6b 65 64 3a 3d 69 6e   ┆nd:=array_type; array_packed:=in┆
0x06a6c0…06a6e0             69 74 5f 6d 6f 64 65 20 3d 20 70 61 63 6b 65 64 5f 61 72 72 61 79 3b 0a 66 69 65 6c 64 5f 70 61   ┆it_mode = packed_array; field_pa┆
0x06a6e0…06a700             63 6b 65 64 3a 3d 66 61 6c 73 65 3b 0a 6c 69 78 3a 3d 64 6f 70 65 5f 6c 69 78 3b 0a 73 69 7a 65   ┆cked:=false; lix:=dope_lix; size┆
0x06a700…06a720             3a 3d 73 61 76 65 64 5f 73 69 7a 65 3b 0a 73 74 61 74 65 3a 3d 64 69 72 65 63 74 3b 0a 6f 66 66   ┆:=saved_size; state:=direct; off┆
0x06a720…06a740             73 65 74 3a 3d 66 69 72 73 74 20 73 68 72 20 31 3b 0a 6e 69 76 3a 3d 73 61 76 65 64 5f 6c 69 78   ┆set:=first shr 1; niv:=saved_lix┆
0x06a740…06a760             3b 0a 63 6f 6e 74 65 78 74 3a 3d 73 74 72 75 63 5f 63 3b 0a 76 61 72 5f 6e 69 78 3a 3d 2d 31 3b   ┆; context:=struc_c; var_nix:=-1;┆
0x06a760…06a780             0a 74 79 70 65 5f 6e 69 78 3a 3d 73 61 76 65 64 5f 6e 69 78 3b 0a 66 75 6e 63 5f 76 61 6c 75 65   ┆ type_nix:=saved_nix; func_value┆
0x06a780…06a7a0             3a 3d 66 61 6c 73 65 3b 0a 64 79 6e 61 6d 69 63 3a 3d 66 61 6c 73 65 3b 0a 69 66 20 69 6e 69 74   ┆:=false; dynamic:=false; if init┆
0x06a7a0…06a7c0             5f 6d 6f 64 65 20 3c 3e 20 65 72 72 6f 72 5f 69 6e 69 74 20 74 68 65 6e 0a 69 66 20 69 6e 69 74   ┆_mode <> error_init then if init┆
0x06a7c0…06a7e0             5f 6d 6f 64 65 3c 3e 72 65 63 6f 72 64 5f 69 6e 69 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66   ┆_mode<>record_init then begin if┆
0x06a7e0…06a800             20 63 75 72 72 65 6e 74 5f 69 6e 64 65 78 3c 3e 74 6f 70 5f 69 6e 64 65 78 20 74 68 65 6e 20 65   ┆ current_index<>top_index then e┆
0x06a800…06a820 (28, 0, 13) 72 72 6f 72 28 63 6f 6e 73 74 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 73 74 61 74 5f 70 61 72   ┆rror(const_error); end; stat_par┆
0x06a820…06a840             74 3a 3d 73 61 76 65 64 5f 73 74 61 74 5f 70 61 72 74 3b 0a 65 6e 64 3b 0a 73 73 3a 3d 73 73 5e   ┆t:=saved_stat_part; end; ss:=ss^┆
0x06a840…06a860             2e 66 6f 72 6d 65 72 5f 73 74 72 75 63 3b 20 28 2a 20 70 6f 70 20 63 6f 6e 73 74 20 6c 65 76 65   ┆.former_struc; (* pop const leve┆
0x06a860…06a880             6c 2a 29 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 74 69 6d 65 73 5f 3b 0a 62 65 67 69   ┆l*) end;  procedure times_; begi┆
0x06a880…06a8a0             6e 0a 77 69 74 68 20 73 73 5e 20 64 6f 20 62 65 67 69 6e 0a 74 69 6d 65 73 3a 3d 74 61 6b 65 5f   ┆n with ss^ do begin times:=take_┆
0x06a8a0…06a8c0             65 78 70 72 3b 0a 69 66 20 69 6e 69 74 5f 6d 6f 64 65 20 3c 3e 20 65 72 72 6f 72 5f 69 6e 69 74   ┆expr; if init_mode <> error_init┆
0x06a8c0…06a8e0             20 74 68 65 6e 0a 69 66 20 28 74 69 6d 65 73 3c 30 29 20 6f 72 20 28 63 75 72 72 65 6e 74 5f 69   ┆ then if (times<0) or (current_i┆
0x06a8e0…06a900             6e 64 65 78 2b 74 69 6d 65 73 3e 74 6f 70 5f 69 6e 64 65 78 29 20 74 68 65 6e 20 62 65 67 69 6e   ┆ndex+times>top_index) then begin┆
0x06a900…06a920             0a 65 72 72 6f 72 28 63 6f 6e 73 74 5f 65 72 72 6f 72 29 3b 0a 74 69 6d 65 73 3a 3d 74 6f 70 5f   ┆ error(const_error); times:=top_┆
0x06a920…06a940             69 6e 64 65 78 2d 63 75 72 72 65 6e 74 5f 69 6e 64 65 78 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65   ┆index-current_index; end; end; e┆
0x06a940…06a960             6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 70 75 74 5f 62 79 74 65 28 76 61 6c 3a 69 6e 74   ┆nd;   procedure put_byte(val:int┆
0x06a960…06a980             65 67 65 72 3b 20 61 64 64 72 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 20 73 68 3a 69 6e 74   ┆eger; addr: integer); var sh:int┆
0x06a980…06a9a0             65 67 65 72 3b 0a 20 20 20 20 77 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 69 66 20 28   ┆eger;     w: integer; begin if (┆
0x06a9a0…06a9c0             2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 62 65 67   ┆* **z80** *) versionz80 then beg┆
0x06a9c0…06a9e0             69 6e 0a 69 66 20 6f 64 64 28 61 64 64 72 29 20 74 68 65 6e 20 73 68 3a 3d 38 20 65 6c 73 65 20   ┆in if odd(addr) then sh:=8 else ┆
0x06a9e0…06aa00             73 68 3a 3d 30 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61   ┆sh:=0 end else begin (* **lambda┆
0x06aa00…06aa20 (28, 0, 14) 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 69 66 20 6f 64 64 28 61 64 64 72 29 20 74 68   ┆ or rc3502c** *) if odd(addr) th┆
0x06aa20…06aa40             65 6e 20 73 68 3a 3d 30 20 65 6c 73 65 20 73 68 3a 3d 38 0a 65 6e 64 3b 0a 77 3a 3d 61 64 64 72   ┆en sh:=0 else sh:=8 end; w:=addr┆
0x06aa40…06aa60             20 73 68 72 20 31 3b 0a 28 2a 24 52 2d 2a 29 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 77 2c 20   ┆ shr 1; (*$R-*) update_const(w, ┆
0x06aa60…06aa80             72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 77 29 20 2b 20 76 61 6c 20 73 68 6c 20 73 68 29 3b   ┆retrieve_const(w) + val shl sh);┆
0x06aa80…06aaa0             0a 28 2a 24 52 2b 2a 29 0a 65 6e 64 3b 20 28 2a 70 75 74 20 62 79 74 65 2a 29 0a 0a 70 72 6f 63   ┆ (*$R+*) end; (*put byte*)  proc┆
0x06aaa0…06aac0             65 64 75 72 65 20 70 75 74 5f 77 6f 72 64 28 76 61 6c 3a 69 6e 74 65 67 65 72 3b 20 61 64 64 72   ┆edure put_word(val:integer; addr┆
0x06aac0…06aae0             3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 20 77 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69   ┆: integer); var w: integer; begi┆
0x06aae0…06ab00             6e 0a 77 3a 3d 61 64 64 72 20 73 68 72 20 31 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a   ┆n w:=addr shr 1; if (* **z80** *┆
0x06ab00…06ab20             29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 6f 64 64 28 61   ┆) versionz80 then begin if odd(a┆
0x06ab20…06ab40             64 64 72 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 77 2c 20   ┆ddr) then begin update_const(w, ┆
0x06ab40…06ab60             72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 77 29 20 2b 20 28 76 61 6c 20 61 6e 64 20 32 35 35   ┆retrieve_const(w) + (val and 255┆
0x06ab60…06ab80             29 20 73 68 6c 20 38 29 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 77 2b 31 2c 20 72 65 74 72   ┆) shl 8); update_const(w+1, retr┆
0x06ab80…06aba0             69 65 76 65 5f 63 6f 6e 73 74 28 77 2b 31 29 20 2b 20 76 61 6c 20 73 68 72 20 38 29 3b 0a 65 6e   ┆ieve_const(w+1) + val shr 8); en┆
0x06aba0…06abc0             64 0a 65 6c 73 65 20 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 77 2c 20 76 61 6c 20 2b 20 72 65 74   ┆d else update_const(w, val + ret┆
0x06abc0…06abe0             72 69 65 76 65 5f 63 6f 6e 73 74 28 77 29 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a   ┆rieve_const(w)); end else begin ┆
0x06abe0…06ac00             28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 69 66 20 6f   ┆(* **lambda or rc3502c** *) if o┆
0x06ac00…06ac20 (28, 0, 15) 64 64 28 61 64 64 72 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74   ┆dd(addr) then begin update_const┆
0x06ac20…06ac40             28 77 2c 20 72 65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 77 29 20 2b 20 76 61 6c 20 73 68 72 20   ┆(w, retrieve_const(w) + val shr ┆
0x06ac40…06ac60             38 29 3b 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 77 2b 31 2c 20 72 65 74 72 69 65 76 65 5f 63   ┆8); update_const(w+1, retrieve_c┆
0x06ac60…06ac80             6f 6e 73 74 28 77 2b 31 29 20 2b 20 28 76 61 6c 20 61 6e 64 20 32 35 35 29 20 73 68 6c 20 38 29   ┆onst(w+1) + (val and 255) shl 8)┆
0x06ac80…06aca0             3b 0a 65 6e 64 0a 65 6c 73 65 0a 75 70 64 61 74 65 5f 63 6f 6e 73 74 28 77 2c 20 76 61 6c 2b 72   ┆; end else update_const(w, val+r┆
0x06aca0…06acc0             65 74 72 69 65 76 65 5f 63 6f 6e 73 74 28 77 29 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 28 2a 70 75   ┆etrieve_const(w)); end; end;(*pu┆
0x06acc0…06ace0             74 20 77 6f 72 64 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 67 65 74 5f 62 79 74 65 28 76 61 72   ┆t word*)  procedure get_byte(var┆
0x06ace0…06ad00             20 76 61 6c 3a 20 69 6e 74 65 67 65 72 3b 20 61 64 64 72 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76   ┆ val: integer; addr: integer); v┆
0x06ad00…06ad20             61 72 20 71 3a 20 69 6e 74 65 67 65 72 3b 0a 20 20 20 20 77 3a 20 69 6e 74 65 67 65 72 3b 0a 62   ┆ar q: integer;     w: integer; b┆
0x06ad20…06ad40             65 67 69 6e 0a 77 3a 3d 61 64 64 72 20 73 68 72 20 31 3b 0a 71 3a 3d 72 65 74 72 69 65 76 65 5f   ┆egin w:=addr shr 1; q:=retrieve_┆
0x06ad40…06ad60             63 6f 6e 73 74 28 77 29 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69   ┆const(w); if (* **z80** *) versi┆
0x06ad60…06ad80             6f 6e 7a 38 30 20 74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 6f 64 64 28 61 64 64 72 29 20 74 68   ┆onz80 then begin if odd(addr) th┆
0x06ad80…06ada0             65 6e 0a 76 61 6c 3a 3d 71 20 73 68 72 20 38 0a 65 6c 73 65 0a 76 61 6c 3a 3d 71 20 61 6e 64 20   ┆en val:=q shr 8 else val:=q and ┆
0x06ada0…06adc0             32 35 35 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 20   ┆255; end else begin (* **lambda ┆
0x06adc0…06ade0             6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 0a 69 66 20 6f 64 64 28 61 64 64 72 29 20 74 68 65   ┆or rc3502c** *) if odd(addr) the┆
0x06ade0…06ae00             6e 0a 76 61 6c 3a 3d 71 20 61 6e 64 20 32 35 35 0a 65 6c 73 65 0a 76 61 6c 3a 3d 71 20 73 68 72   ┆n val:=q and 255 else val:=q shr┆
0x06ae00…06ae20 (28, 1, 1)  20 38 0a 65 6e 64 3b 0a 65 6e 64 3b 28 2a 67 65 74 20 62 79 74 65 2a 29 0a 0a 70 72 6f 63 65 64   ┆ 8 end; end;(*get byte*)  proced┆
0x06ae20…06ae40             75 72 65 20 70 75 74 5f 63 6f 6e 73 74 61 6e 74 28 76 61 72 20 64 69 73 70 6c 3a 20 69 6e 74 65   ┆ure put_constant(var displ: inte┆
0x06ae40…06ae60             67 65 72 3b 20 74 69 6d 65 73 2c 63 6f 6e 73 74 5f 73 69 7a 65 3a 20 69 6e 74 65 67 65 72 29 3b   ┆ger; times,const_size: integer);┆
0x06ae60…06ae80             0a 76 61 72 20 63 5f 69 6e 64 65 78 2c 20 70 2c 20 71 2c 20 76 61 6c 20 3a 20 69 6e 74 65 67 65   ┆ var c_index, p, q, val : intege┆
0x06ae80…06aea0             72 3b 0a 20 20 20 20 64 73 69 7a 65 2c 73 68 2c 72 65 73 74 2c 76 2c 69 3a 20 69 6e 74 65 67 65   ┆r;     dsize,sh,rest,v,i: intege┆
0x06aea0…06aec0             72 3b 20 20 63 6f 6e 3a 20 63 6f 6e 74 65 78 74 5f 6b 69 6e 64 3b 0a 72 65 6d 6f 76 65 2c 20 66   ┆r;  con: context_kind; remove, f┆
0x06aec0…06aee0             69 6c 6c 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 77 69 74 68 20 6f 74 5e 20 64 6f 20   ┆ill: boolean; begin with ot^ do ┆
0x06aee0…06af00             62 65 67 69 6e 0a 64 73 69 7a 65 3a 3d 73 69 7a 65 3b 20 20 20 76 61 6c 3a 3d 6f 66 66 73 65 74   ┆begin dsize:=size;   val:=offset┆
0x06af00…06af20             3b 0a 63 6f 6e 3a 3d 63 6f 6e 74 65 78 74 3b 0a 65 6e 64 3b 0a 69 66 20 63 6f 6e 3d 73 74 72 75   ┆; con:=context; end; if con=stru┆
0x06af20…06af40             63 5f 63 20 74 68 65 6e 20 62 65 67 69 6e 0a 63 5f 69 6e 64 65 78 3a 3d 76 61 6c 3b 0a 72 65 6d   ┆c_c then begin c_index:=val; rem┆
0x06af40…06af60             6f 76 65 3a 3d 74 72 75 65 3b 20 20 63 6f 6e 3a 3d 6c 63 6f 6e 73 74 3b 0a 65 6e 64 20 65 6c 73   ┆ove:=true;  con:=lconst; end els┆
0x06af60…06af80             65 20 72 65 6d 6f 76 65 3a 3d 66 61 6c 73 65 3b 0a 70 6f 70 3b 0a 69 66 20 28 63 6f 6e 3c 3e 73   ┆e remove:=false; pop; if (con<>s┆
0x06af80…06afa0             63 6f 6e 73 74 29 20 61 6e 64 20 28 63 6f 6e 3c 3e 6c 63 6f 6e 73 74 29 20 61 6e 64 20 28 63 6f   ┆const) and (con<>lconst) and (co┆
0x06afa0…06afc0             6e 3c 3e 73 65 74 5f 63 6f 6e 73 74 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 76   ┆n<>set_const) then begin error(v┆
0x06afc0…06afe0             61 72 5f 65 72 72 6f 72 29 3b 0a 64 73 69 7a 65 3a 3d 30 3b 0a 65 6e 64 3b 0a 66 6f 72 20 69 3a   ┆ar_error); dsize:=0; end; for i:┆
0x06afe0…06b000             3d 31 20 74 6f 20 74 69 6d 65 73 20 64 6f 20 62 65 67 69 6e 0a 69 66 20 64 73 69 7a 65 3d 30 20   ┆=1 to times do begin if dsize=0 ┆
0x06b000…06b020 (28, 1, 2)  74 68 65 6e 20 28 2a 6e 75 6c 6c 2a 29 20 65 6c 73 65 0a 69 66 20 28 63 6f 6e 73 74 5f 73 69 7a   ┆then (*null*) else if (const_siz┆
0x06b020…06b040             65 3d 62 79 74 65 5f 6c 65 6e 67 74 68 29 20 61 6e 64 20 28 63 6f 6e 3d 73 63 6f 6e 73 74 29 20   ┆e=byte_length) and (con=sconst) ┆
0x06b040…06b060             74 68 65 6e 20 62 65 67 69 6e 0a 69 66 20 28 76 61 6c 3e 6d 61 78 5f 62 79 74 65 5f 76 61 6c 75   ┆then begin if (val>max_byte_valu┆
0x06b060…06b080             65 29 20 6f 72 20 28 76 61 6c 3c 30 29 20 74 68 65 6e 20 62 65 67 69 6e 0a 76 61 6c 3a 3d 30 3b   ┆e) or (val<0) then begin val:=0;┆
0x06b080…06b0a0             0a 65 72 72 6f 72 28 74 79 70 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 70 75 74 5f 62 79 74   ┆ error(type_error); end; put_byt┆
0x06b0a0…06b0c0             65 28 76 61 6c 2c 20 64 69 73 70 6c 29 3b 0a 65 6e 64 20 65 6c 73 65 0a 69 66 20 28 63 6f 6e 73   ┆e(val, displ); end else if (cons┆
0x06b0c0…06b0e0             74 5f 73 69 7a 65 3d 77 6f 72 64 5f 6c 65 6e 67 74 68 29 20 61 6e 64 20 28 63 6f 6e 3d 73 63 6f   ┆t_size=word_length) and (con=sco┆
0x06b0e0…06b100             6e 73 74 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 70 75 74 5f 77 6f 72 64 28 76 61 6c 2c 20 64 69   ┆nst) then begin put_word(val, di┆
0x06b100…06b120             73 70 6c 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 72 65 73 74 3a 3d 63 6f 6e 73 74   ┆spl); end else begin rest:=const┆
0x06b120…06b140             5f 73 69 7a 65 3b 20 71 3a 3d 76 61 6c 20 73 68 6c 20 31 3b 0a 69 66 20 63 6f 6e 3d 73 65 74 5f   ┆_size; q:=val shl 1; if con=set_┆
0x06b140…06b160             63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 61 64 6a 75 73 74 20 73 65 74 2d 63   ┆const then begin (* adjust set-c┆
0x06b160…06b180             6f 6e 73 74 61 6e 74 73 20 74 6f 20 64 65 6d 61 6e 64 65 64 20 73 69 7a 65 20 2a 29 0a 69 66 20   ┆onstants to demanded size *) if ┆
0x06b180…06b1a0             64 73 69 7a 65 3e 63 6f 6e 73 74 5f 73 69 7a 65 20 74 68 65 6e 20 65 72 72 6f 72 28 74 79 70 65   ┆dsize>const_size then error(type┆
0x06b1a0…06b1c0             5f 65 72 72 6f 72 29 0a 65 6c 73 65 0a 69 66 20 64 73 69 7a 65 3c 63 6f 6e 73 74 5f 73 69 7a 65   ┆_error) else if dsize<const_size┆
0x06b1c0…06b1e0             20 74 68 65 6e 0a 72 65 73 74 3a 3d 64 73 69 7a 65 3b 0a 65 6e 64 3b 0a 69 66 20 64 73 69 7a 65   ┆ then rest:=dsize; end; if dsize┆
0x06b1e0…06b200             20 3c 20 72 65 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 72 65 73 74 3a 3d 64 73 69 7a 65 3b 20   ┆ < rest then begin rest:=dsize; ┆
0x06b200…06b220 (28, 1, 3)  20 66 69 6c 6c 3a 3d 74 72 75 65 3b 0a 65 6e 64 20 65 6c 73 65 20 66 69 6c 6c 3a 3d 66 61 6c 73   ┆ fill:=true; end else fill:=fals┆
0x06b220…06b240             65 3b 0a 70 3a 3d 64 69 73 70 6c 3b 0a 28 2a 24 52 2d 2a 29 0a 77 68 69 6c 65 20 72 65 73 74 3c   ┆e; p:=displ; (*$R-*) while rest<┆
0x06b240…06b260             3e 30 20 64 6f 20 62 65 67 69 6e 0a 67 65 74 5f 62 79 74 65 28 76 2c 71 29 3b 20 20 20 70 75 74   ┆>0 do begin get_byte(v,q);   put┆
0x06b260…06b280             5f 62 79 74 65 28 76 2c 70 29 3b 0a 70 3a 3d 70 2b 31 3b 20 20 71 3a 3d 71 2b 31 3b 0a 72 65 73   ┆_byte(v,p); p:=p+1;  q:=q+1; res┆
0x06b280…06b2a0             74 3a 3d 72 65 73 74 2d 31 3b 0a 65 6e 64 3b 0a 28 2a 24 52 2b 2a 29 0a 69 66 20 66 69 6c 6c 20   ┆t:=rest-1; end; (*$R+*) if fill ┆
0x06b2a0…06b2c0             74 68 65 6e 20 62 65 67 69 6e 0a 72 65 73 74 3a 3d 63 6f 6e 73 74 5f 73 69 7a 65 20 2d 20 64 73   ┆then begin rest:=const_size - ds┆
0x06b2c0…06b2e0             69 7a 65 3b 0a 77 68 69 6c 65 20 72 65 73 74 20 3e 20 30 20 64 6f 20 62 65 67 69 6e 0a 70 75 74   ┆ize; while rest > 0 do begin put┆
0x06b2e0…06b300             5f 62 79 74 65 28 33 32 2c 70 29 3b 0a 70 3a 3d 70 2b 31 3b 20 20 20 72 65 73 74 3a 3d 72 65 73   ┆_byte(32,p); p:=p+1;   rest:=res┆
0x06b300…06b320             74 2d 31 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 28 2a 24 52 2d 2a 29 0a 64 69 73 70   ┆t-1; end; end; end; (*$R-*) disp┆
0x06b320…06b340             6c 3a 3d 64 69 73 70 6c 2b 63 6f 6e 73 74 5f 73 69 7a 65 3b 0a 28 2a 24 52 2b 2a 29 0a 65 6e 64   ┆l:=displ+const_size; (*$R+*) end┆
0x06b340…06b360             3b 20 20 28 2a 66 6f 72 20 74 69 6d 65 73 2a 29 0a 69 66 20 72 65 6d 6f 76 65 20 74 68 65 6e 20   ┆;  (*for times*) if remove then ┆
0x06b360…06b380             72 65 6d 6f 76 65 5f 63 6f 6e 73 74 61 6e 74 28 63 5f 69 6e 64 65 78 29 3b 0a 65 6e 64 3b 0a 0a   ┆remove_constant(c_index); end;  ┆
0x06b380…06b3a0             70 72 6f 63 65 64 75 72 65 20 73 74 72 75 63 3b 0a 76 61 72 20 66 69 72 73 74 5f 62 69 74 2c 76   ┆procedure struc; var first_bit,v┆
0x06b3a0…06b3c0             61 6c 2c 71 2c 72 2c 73 2c 69 3a 20 69 6e 74 65 67 65 72 3b 0a 20 20 20 20 77 20 3a 20 69 6e 74   ┆al,q,r,s,i: integer;     w : int┆
0x06b3c0…06b3e0             65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 61 73 73 69 6e 28 6e 69 78 29 3b 0a 77 69 74 68 20 73 73   ┆eger; begin passin(nix); with ss┆
0x06b3e0…06b400             5e 2c 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 20 64 6f 20 62 65 67 69 6e 0a 63 61 73 65   ┆^, nametable(nix)^ do begin case┆
0x06b400…06b420 (28, 1, 4)  20 69 6e 69 74 5f 6d 6f 64 65 20 6f 66 0a 61 72 72 61 79 5f 69 6e 69 74 3a 20 62 65 67 69 6e 0a   ┆ init_mode of array_init: begin ┆
0x06b420…06b440             69 66 20 63 75 72 72 65 6e 74 5f 69 6e 64 65 78 2b 74 69 6d 65 73 3e 74 6f 70 5f 69 6e 64 65 78   ┆if current_index+times>top_index┆
0x06b440…06b460             20 74 68 65 6e 20 62 65 67 69 6e 0a 74 69 6d 65 73 3a 3d 30 3b 0a 65 72 72 6f 72 28 63 6f 6e 73   ┆ then begin times:=0; error(cons┆
0x06b460…06b480             74 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 73 3a 3d 73 69 7a 65 3b 0a 69 66 20 28 2a 20 2a 2a   ┆t_error); end; s:=size; if (* **┆
0x06b480…06b4a0             6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a 2a 20 2a 29 20 6e 6f 74 20 76 65 72 73 69   ┆lambda or rc3502c** *) not versi┆
0x06b4a0…06b4c0             6f 6e 7a 38 30 20 74 68 65 6e 0a 69 66 20 73 69 7a 65 3e 32 20 74 68 65 6e 0a 69 66 20 6f 64 64   ┆onz80 then if size>2 then if odd┆
0x06b4c0…06b4e0             28 73 69 7a 65 29 20 61 6e 64 20 28 63 6f 6e 74 65 78 74 20 69 6e 20 61 6c 6c 69 67 6e 5f 74 79   ┆(size) and (context in allign_ty┆
0x06b4e0…06b500             70 65 73 29 20 74 68 65 6e 0a 73 3a 3d 73 2b 31 3b 0a 70 75 74 5f 63 6f 6e 73 74 61 6e 74 28 64   ┆pes) then s:=s+1; put_constant(d┆
0x06b500…06b520             69 73 70 6c 2c 20 74 69 6d 65 73 2c 20 73 29 3b 0a 63 75 72 72 65 6e 74 5f 69 6e 64 65 78 3a 3d   ┆ispl, times, s); current_index:=┆
0x06b520…06b540             63 75 72 72 65 6e 74 5f 69 6e 64 65 78 2b 74 69 6d 65 73 3b 0a 74 69 6d 65 73 3a 3d 31 3b 0a 65   ┆current_index+times; times:=1; e┆
0x06b540…06b560             6e 64 3b 0a 72 65 63 6f 72 64 5f 69 6e 69 74 3a 20 62 65 67 69 6e 0a 64 69 73 70 6c 3a 3d 66 69   ┆nd; record_init: begin displ:=fi┆
0x06b560…06b580             72 73 74 2b 6f 66 66 73 65 74 3b 0a 69 66 20 70 61 63 6b 65 64 5f 63 6f 6d 70 20 74 68 65 6e 20   ┆rst+offset; if packed_comp then ┆
0x06b580…06b5a0             62 65 67 69 6e 0a 66 69 72 73 74 5f 62 69 74 3a 3d 6d 69 6e 3b 20 20 20 62 69 74 73 5f 70 72 5f   ┆begin first_bit:=min;   bits_pr_┆
0x06b5a0…06b5c0             66 69 65 6c 64 3a 3d 6d 61 78 3b 0a 77 69 74 68 20 6f 74 5e 20 64 6f 0a 69 66 20 63 6f 6e 74 65   ┆field:=max; with ot^ do if conte┆
0x06b5c0…06b5e0             78 74 3d 73 63 6f 6e 73 74 20 74 68 65 6e 20 62 65 67 69 6e 0a 76 61 6c 3a 3d 6f 66 66 73 65 74   ┆xt=sconst then begin val:=offset┆
0x06b5e0…06b600             3b 0a 69 66 20 62 69 74 73 28 76 61 6c 29 3e 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 20 74 68 65   ┆; if bits(val)>bits_pr_field the┆
0x06b600…06b620 (28, 1, 5)  6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 74 79 70 65 5f 65 72 72 6f 72 29 3b 0a 76 61 6c 3a 3d   ┆n begin error(type_error); val:=┆
0x06b620…06b640             30 3b 0a 65 6e 64 3b 0a 65 6e 64 20 65 6c 73 65 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 76 61 72   ┆0; end; end else begin error(var┆
0x06b640…06b660             5f 65 72 72 6f 72 29 3b 0a 76 61 6c 3a 3d 30 3b 0a 65 6e 64 3b 0a 70 6f 70 3b 0a 28 2a 24 52 2d   ┆_error); val:=0; end; pop; (*$R-┆
0x06b660…06b680             2a 29 0a 71 3a 3d 76 61 6c 2a 28 31 20 73 68 6c 20 28 28 62 69 74 73 5f 70 72 5f 77 6f 72 64 2d   ┆*) q:=val*(1 shl ((bits_pr_word-┆
0x06b680…06b6a0             31 29 2d 28 66 69 72 73 74 5f 62 69 74 2b 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 2d 31 29 29 29   ┆1)-(first_bit+bits_pr_field-1)))┆
0x06b6a0…06b6c0             3b 0a 28 2a 24 52 2b 2a 29 0a 70 75 74 5f 77 6f 72 64 28 71 2c 20 64 69 73 70 6c 29 3b 0a 65 6e   ┆; (*$R+*) put_word(q, displ); en┆
0x06b6c0…06b6e0             64 20 65 6c 73 65 0a 70 75 74 5f 63 6f 6e 73 74 61 6e 74 28 64 69 73 70 6c 2c 31 2c 73 69 7a 65   ┆d else put_constant(displ,1,size┆
0x06b6e0…06b700             29 3b 0a 65 6e 64 3b 0a 70 61 63 6b 65 64 5f 61 72 72 61 79 3a 20 20 62 65 67 69 6e 0a 77 69 74   ┆); end; packed_array:  begin wit┆
0x06b700…06b720             68 20 6f 74 5e 20 64 6f 0a 69 66 20 63 6f 6e 74 65 78 74 3d 73 63 6f 6e 73 74 20 74 68 65 6e 20   ┆h ot^ do if context=sconst then ┆
0x06b720…06b740             62 65 67 69 6e 0a 76 61 6c 3a 3d 6f 66 66 73 65 74 3b 0a 69 66 20 62 69 74 73 28 76 61 6c 29 3e   ┆begin val:=offset; if bits(val)>┆
0x06b740…06b760             62 69 74 73 5f 70 72 5f 66 69 65 6c 64 20 74 68 65 6e 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 74   ┆bits_pr_field then begin error(t┆
0x06b760…06b780             79 70 65 5f 65 72 72 6f 72 29 3b 0a 76 61 6c 3a 3d 30 3b 0a 65 6e 64 3b 0a 65 6e 64 20 65 6c 73   ┆ype_error); val:=0; end; end els┆
0x06b780…06b7a0             65 20 62 65 67 69 6e 0a 65 72 72 6f 72 28 76 61 72 5f 65 72 72 6f 72 29 3b 0a 76 61 6c 3a 3d 30   ┆e begin error(var_error); val:=0┆
0x06b7a0…06b7c0             3b 0a 65 6e 64 3b 0a 70 6f 70 3b 0a 69 66 20 63 75 72 72 65 6e 74 5f 69 6e 64 65 78 2b 74 69 6d   ┆; end; pop; if current_index+tim┆
0x06b7c0…06b7e0             65 73 3e 74 6f 70 5f 69 6e 64 65 78 20 74 68 65 6e 20 62 65 67 69 6e 0a 74 69 6d 65 73 3a 3d 30   ┆es>top_index then begin times:=0┆
0x06b7e0…06b800             3b 0a 65 72 72 6f 72 28 63 6f 6e 73 74 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 66 6f 72 20 69   ┆; error(const_error); end; for i┆
0x06b800…06b820 (28, 1, 6)  3a 3d 31 20 74 6f 20 74 69 6d 65 73 20 64 6f 20 62 65 67 69 6e 0a 71 3a 3d 65 6c 65 6d 5f 70 72   ┆:=1 to times do begin q:=elem_pr┆
0x06b820…06b840             5f 77 6f 72 64 3b 0a 66 69 72 73 74 5f 62 69 74 3a 3d 28 63 75 72 72 65 6e 74 5f 69 6e 64 65 78   ┆_word; first_bit:=(current_index┆
0x06b840…06b860             20 6d 6f 64 20 71 29 2a 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 3b 0a 77 3a 3d 66 69 72 73 74 20   ┆ mod q)*bits_pr_field; w:=first ┆
0x06b860…06b880             2b 20 28 63 75 72 72 65 6e 74 5f 69 6e 64 65 78 20 64 69 76 20 71 29 2a 32 3b 0a 28 2a 24 52 2d   ┆+ (current_index div q)*2; (*$R-┆
0x06b880…06b8a0             2a 29 0a 72 3a 3d 76 61 6c 2a 28 31 20 73 68 6c 20 28 28 62 69 74 73 5f 70 72 5f 77 6f 72 64 2d   ┆*) r:=val*(1 shl ((bits_pr_word-┆
0x06b8a0…06b8c0             31 29 2d 28 66 69 72 73 74 5f 62 69 74 2b 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 2d 31 29 29 29   ┆1)-(first_bit+bits_pr_field-1)))┆
0x06b8c0…06b8e0             3b 0a 28 2a 24 52 2b 2a 29 0a 70 75 74 5f 77 6f 72 64 28 72 2c 20 77 29 3b 0a 63 75 72 72 65 6e   ┆; (*$R+*) put_word(r, w); curren┆
0x06b8e0…06b900             74 5f 69 6e 64 65 78 3a 3d 63 75 72 72 65 6e 74 5f 69 6e 64 65 78 2b 31 3b 0a 65 6e 64 3b 20 28   ┆t_index:=current_index+1; end; (┆
0x06b900…06b920             2a 66 6f 72 2a 29 0a 74 69 6d 65 73 3a 3d 31 3b 0a 65 6e 64 3b 20 28 2a 70 61 63 6b 65 64 2a 29   ┆*for*) times:=1; end; (*packed*)┆
0x06b920…06b940             0a 65 72 72 6f 72 5f 69 6e 69 74 3a 20 62 65 67 69 6e 0a 74 69 6d 65 73 3a 3d 31 3b 0a 70 6f 70   ┆ error_init: begin times:=1; pop┆
0x06b940…06b960             3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 63 61 73 65 2a 29 0a 65 6e 64 3b 20 28 2a 77 69 74 68   ┆; end; end; (*case*) end; (*with┆
0x06b960…06b980             2a 29 0a 65 6e 64 3b 0a 0a 62 65 67 69 6e 0a 69 6e 69 74 69 61 6c 69 7a 65 3b 0a 0a 72 65 70 65   ┆*) end;  begin initialize;  repe┆
0x06b980…06b9a0             61 74 0a 70 61 73 73 69 6e 28 6e 6f 29 3b 0a 0a 63 61 73 65 20 63 6f 6e 76 65 72 74 5f 69 6e 5f   ┆at passin(no);  case convert_in_┆
0x06b9a0…06b9c0             63 6f 64 65 5b 6e 6f 5d 20 6f 66 0a 0a 78 61 63 74 75 61 6c 3a 20 20 20 20 20 20 61 63 74 75 61   ┆code[no] of  xactual:      actua┆
0x06b9c0…06b9e0             6c 3b 0a 78 61 64 64 3a 20 20 20 20 20 20 20 20 20 61 72 69 74 68 6d 65 74 69 63 28 7a 61 64 64   ┆l; xadd:         arithmetic(zadd┆
0x06b9e0…06ba00             29 3b 0a 78 61 6e 64 3a 20 20 20 20 20 20 20 20 20 61 72 69 74 68 6d 65 74 69 63 28 7a 61 6e 64   ┆); xand:         arithmetic(zand┆
0x06ba00…06ba20 (28, 1, 7)  29 3b 0a 78 61 72 67 6c 69 73 74 73 69 7a 65 3a 20 61 72 67 6c 69 73 74 5f 73 69 7a 65 3b 0a 78   ┆); xarglistsize: arglist_size; x┆
0x06ba20…06ba40             61 72 72 61 79 64 65 66 3a 20 20 20 20 61 72 72 61 79 5f 64 65 66 28 6e 6f 6e 5f 70 61 63 6b 29   ┆arraydef:    array_def(non_pack)┆
0x06ba40…06ba60             3b 0a 78 61 72 72 6f 77 3a 20 20 20 20 20 20 20 61 72 72 6f 77 3b 0a 78 61 73 73 69 67 6e 3a 20   ┆; xarrow:       arrow; xassign: ┆
0x06ba60…06ba80             20 20 20 20 20 61 73 73 69 67 6e 3b 0a 78 61 73 73 69 67 6e 73 74 61 74 3a 20 20 70 75 74 30 28   ┆     assign; xassignstat:  put0(┆
0x06ba80…06baa0             7a 61 73 73 69 67 6e 73 74 61 74 29 3b 0a 78 62 65 63 6f 6d 65 73 3a 20 20 20 20 20 62 65 63 6f   ┆zassignstat); xbecomes:     beco┆
0x06baa0…06bac0             6d 65 73 3b 0a 78 62 65 67 69 6e 63 6f 64 65 3a 20 20 20 62 65 67 69 6e 5f 63 6f 64 65 3b 0a 78   ┆mes; xbegincode:   begin_code; x┆
0x06bac0…06bae0             62 6c 6f 63 6b 3a 20 20 20 20 20 20 20 6e 65 77 5f 62 6c 6f 63 6b 3b 0a 78 62 6f 6f 6c 65 61 6e   ┆block:       new_block; xboolean┆
0x06bae0…06bb00             3a 20 20 20 20 73 74 64 5f 6e 61 6d 65 28 78 62 6f 6f 6c 65 61 6e 29 3b 0a 78 63 61 73 65 3a 20   ┆:    std_name(xboolean); xcase: ┆
0x06bb00…06bb20             20 20 20 20 20 20 20 62 65 67 69 6e 20 73 74 61 74 5f 70 61 72 74 3a 3d 66 61 6c 73 65 3b 20 70   ┆       begin stat_part:=false; p┆
0x06bb20…06bb40             61 73 73 5f 65 78 70 72 28 7a 63 61 73 65 29 3b 20 65 6e 64 3b 0a 78 63 61 73 65 6c 61 62 65 6c   ┆ass_expr(zcase); end; xcaselabel┆
0x06bb40…06bb60             3a 20 20 20 63 61 73 65 5f 6c 61 62 65 6c 3b 0a 78 63 61 73 65 72 61 6e 67 65 3a 20 20 20 63 61   ┆:   case_label; xcaserange:   ca┆
0x06bb60…06bb80             73 65 72 61 6e 67 65 3b 0a 78 63 61 73 65 73 74 61 74 3a 20 20 20 20 70 75 74 30 28 7a 63 61 73   ┆serange; xcasestat:    put0(zcas┆
0x06bb80…06bba0             65 73 74 61 74 29 3b 0a 78 63 68 61 6e 6e 65 6c 3a 20 20 20 20 20 62 65 67 69 6e 0a 69 66 20 28   ┆estat); xchannel:     begin if (┆
0x06bba0…06bbc0             2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 65 72 72   ┆* **z80** *) versionz80 then err┆
0x06bbc0…06bbe0             6f 72 28 65 72 72 6f 72 5f 63 68 61 6e 6e 65 6c 29 3b 0a 70 75 74 30 28 7a 63 68 61 6e 6e 65 6c   ┆or(error_channel); put0(zchannel┆
0x06bbe0…06bc00             29 3b 0a 65 6e 64 3b 0a 78 63 68 61 6e 76 61 72 3a 20 20 20 20 20 63 68 61 6e 5f 76 61 72 3b 0a   ┆); end; xchanvar:     chan_var; ┆
0x06bc00…06bc20 (28, 1, 8)  78 63 68 61 72 3a 20 20 20 20 20 20 20 73 74 64 5f 6e 61 6d 65 28 78 63 68 61 72 29 3b 0a 78 63   ┆xchar:       std_name(xchar); xc┆
0x06bc20…06bc40             68 72 3a 20 20 20 20 20 20 20 20 20 73 74 64 5f 6e 61 6d 65 28 78 63 68 72 29 3b 0a 78 63 6f 64   ┆hr:         std_name(xchr); xcod┆
0x06bc40…06bc60             65 6c 69 6e 65 3a 20 20 20 20 63 6f 64 65 5f 6c 69 6e 65 3b 0a 78 63 6f 6e 73 74 69 64 3a 20 20   ┆eline:    code_line; xconstid:  ┆
0x06bc60…06bc80             20 20 20 63 6f 6e 73 74 5f 64 65 66 3b 0a 78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 3a 6c 6f 6f 70   ┆   const_def; xcontloopstat:loop┆
0x06bc80…06bca0             5f 67 6f 74 6f 28 7a 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 29 3b 0a 78 64 69 76 3a 20 20 20 20 20   ┆_goto(zcontloopstat); xdiv:     ┆
0x06bca0…06bcc0             20 20 20 20 61 72 69 74 68 6d 65 74 69 63 28 7a 64 69 76 29 3b 0a 78 64 6f 3a 20 20 20 20 20 20   ┆    arithmetic(zdiv); xdo:      ┆
0x06bcc0…06bce0             20 20 20 20 66 6f 72 5f 64 6f 3b 0a 78 64 6f 77 6e 3a 20 20 20 20 20 20 20 20 75 70 5f 64 6f 77   ┆    for_do; xdown:        up_dow┆
0x06bce0…06bd00             6e 28 2d 31 29 3b 0a 78 65 6c 73 65 3a 20 20 20 20 20 20 20 20 70 75 74 30 28 7a 65 6c 73 65 29   ┆n(-1); xelse:        put0(zelse)┆
0x06bd00…06bd20             3b 0a 78 65 6e 64 61 63 74 75 61 6c 3a 20 20 20 65 6e 64 5f 61 63 74 75 61 6c 3b 0a 78 65 6e 64   ┆; xendactual:   end_actual; xend┆
0x06bd20…06bd40             62 6c 6f 63 6b 3a 20 20 20 20 65 6e 64 5f 62 6c 6f 63 6b 3b 0a 78 65 6e 64 63 61 73 65 3a 20 20   ┆block:    end_block; xendcase:  ┆
0x06bd40…06bd60             20 20 20 62 65 67 69 6e 20 73 74 61 74 5f 70 61 72 74 3a 3d 74 72 75 65 3b 20 70 75 74 30 28 7a   ┆   begin stat_part:=true; put0(z┆
0x06bd60…06bd80             65 6e 64 63 61 73 65 29 3b 20 65 6e 64 3b 0a 78 65 6e 64 63 61 73 65 6c 69 73 74 3a 20 62 65 67   ┆endcase); end; xendcaselist: beg┆
0x06bd80…06bda0             69 6e 20 73 74 61 74 5f 70 61 72 74 3a 3d 74 72 75 65 3b 0a 20 20 20 20 70 75 74 30 28 7a 65 6e   ┆in stat_part:=true;     put0(zen┆
0x06bda0…06bdc0             64 63 61 73 65 6c 69 73 74 29 3b 20 65 6e 64 3b 0a 78 65 6e 64 63 61 73 65 73 74 61 74 3a 20 62   ┆dcaselist); end; xendcasestat: b┆
0x06bdc0…06bde0             65 67 69 6e 20 73 74 61 74 5f 70 61 72 74 3a 3d 66 61 6c 73 65 3b 20 70 75 74 30 28 7a 65 6e 64   ┆egin stat_part:=false; put0(zend┆
0x06bde0…06be00             63 61 73 65 73 74 61 74 29 3b 20 65 6e 64 3b 0a 78 65 6e 64 63 68 61 6e 6e 65 6c 3a 20 20 65 6e   ┆casestat); end; xendchannel:  en┆
0x06be00…06be20 (28, 1, 9)  64 5f 63 68 61 6e 6e 65 6c 3b 0a 78 65 6e 64 63 6f 64 65 3a 20 20 20 20 20 62 65 67 69 6e 20 70   ┆d_channel; xendcode:     begin p┆
0x06be20…06be40             75 74 30 28 7a 65 6e 64 63 6f 64 65 29 3b 20 70 75 74 32 28 7a 65 6e 64 62 6c 6f 63 6b 2c 32 2c   ┆ut0(zendcode); put2(zendblock,2,┆
0x06be40…06be60             31 29 3b 20 20 70 6f 70 5f 6c 65 76 65 6c 3b 20 65 6e 64 3b 0a 78 65 6e 64 65 78 70 6f 72 74 3a   ┆1);  pop_level; end; xendexport:┆
0x06be60…06be80             20 20 20 65 6e 64 5f 65 78 70 6f 72 74 3b 0a 78 65 6e 64 66 6f 72 3a 20 20 20 20 20 20 65 6e 64   ┆   end_export; xendfor:      end┆
0x06be80…06bea0             5f 66 6f 72 3b 0a 78 65 6e 64 66 75 6e 63 63 61 6c 6c 3a 20 65 6e 64 5f 66 75 6e 63 5f 63 61 6c   ┆_for; xendfunccall: end_func_cal┆
0x06bea0…06bec0             6c 3b 0a 78 65 6e 64 6c 6f 63 6b 3a 20 20 20 20 20 65 6e 64 5f 6c 6f 63 6b 3b 0a 78 65 6e 64 6c   ┆l; xendlock:     end_lock; xendl┆
0x06bec0…06bee0             6f 6f 70 73 74 61 74 3a 20 70 75 74 30 28 7a 65 6e 64 6c 6f 6f 70 73 74 61 74 29 3b 0a 78 65 6e   ┆oopstat: put0(zendloopstat); xen┆
0x06bee0…06bf00             64 70 72 65 6c 75 64 65 3a 20 20 62 65 67 69 6e 20 77 6f 72 64 5f 61 6c 6c 69 67 6e 3b 0a 73 6f   ┆dprelude:  begin word_allign; so┆
0x06bf00…06bf20             75 72 63 65 5f 6c 69 6e 65 3a 3d 30 3b 0a 69 66 20 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20   ┆urce_line:=0; if (* **lambda or ┆
0x06bf20…06bf40             72 63 33 35 30 32 63 2a 2a 20 2a 29 20 6e 6f 74 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e   ┆rc3502c** *) not versionz80 then┆
0x06bf40…06bf60             20 0a 70 72 6f 63 65 73 73 5f 6f 66 66 73 65 74 3a 3d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74   ┆  process_offset:=current_offset┆
0x06bf60…06bf80             3b 20 70 72 65 6c 75 64 65 3a 3d 66 61 6c 73 65 3b 20 65 6e 64 3b 0a 78 65 6e 64 70 72 6f 63 3a   ┆; prelude:=false; end; xendproc:┆
0x06bf80…06bfa0             20 20 20 20 20 69 66 20 6e 65 77 5f 63 61 6c 6c 20 74 68 65 6e 20 62 65 67 69 6e 20 70 61 73 73   ┆     if new_call then begin pass┆
0x06bfa0…06bfc0             69 6e 28 69 29 3b 20 6e 65 77 5f 63 61 6c 6c 3a 3d 20 66 61 6c 73 65 3b 20 65 6e 64 20 65 6c 73   ┆in(i); new_call:= false; end els┆
0x06bfc0…06bfe0             65 20 65 6e 64 5f 70 72 6f 63 3b 0a 78 65 6e 64 72 65 70 65 61 74 3a 20 20 20 70 61 73 73 5f 65   ┆e end_proc; xendrepeat:   pass_e┆
0x06bfe0…06c000             78 70 72 28 7a 65 6e 64 72 65 70 65 61 74 29 3b 0a 78 65 6e 64 73 65 74 3a 20 20 20 20 20 20 65   ┆xpr(zendrepeat); xendset:      e┆
0x06c000…06c020 (28, 1, 10) 6e 64 5f 73 65 74 3b 0a 78 65 6e 64 73 74 72 75 63 3a 20 20 20 20 65 6e 64 5f 73 74 72 75 63 3b   ┆nd_set; xendstruc:    end_struc;┆
0x06c020…06c040             0a 78 65 6e 64 77 68 69 6c 65 3a 20 20 20 20 70 75 74 30 28 7a 65 6e 64 77 68 69 6c 65 29 3b 0a   ┆ xendwhile:    put0(zendwhile); ┆
0x06c040…06c060             78 65 6e 64 77 69 74 68 3a 20 20 20 20 20 65 6e 64 5f 77 69 74 68 3b 0a 78 65 6f 6d 3a 20 20 20   ┆xendwith:     end_with; xeom:   ┆
0x06c060…06c080             20 20 20 20 20 20 65 6f 6d 3b 0a 78 65 71 3a 20 20 20 20 20 20 20 20 20 20 65 71 75 61 6c 69 74   ┆      eom; xeq:          equalit┆
0x06c080…06c0a0             79 28 7a 65 71 29 3b 0a 78 65 72 72 6f 72 3a 20 20 20 20 20 20 20 62 65 67 69 6e 20 63 6f 70 79   ┆y(zeq); xerror:       begin copy┆
0x06c0a0…06c0c0             28 7a 65 72 72 6f 72 2c 32 29 3b 20 70 72 6f 67 72 61 6d 5f 6f 6b 3a 3d 66 61 6c 73 65 3b 20 65   ┆(zerror,2); program_ok:=false; e┆
0x06c0c0…06c0e0             6e 64 3b 0a 78 65 72 72 6f 72 6e 6f 3a 20 20 20 20 20 62 65 67 69 6e 20 63 6f 70 79 28 7a 65 72   ┆nd; xerrorno:     begin copy(zer┆
0x06c0e0…06c100             72 6f 72 6e 6f 2c 31 29 3b 20 70 72 6f 67 72 61 6d 5f 6f 6b 3a 3d 66 61 6c 73 65 3b 20 65 6e 64   ┆rorno,1); program_ok:=false; end┆
0x06c100…06c120             3b 0a 78 65 72 72 6f 72 74 65 78 74 3a 20 20 20 62 65 67 69 6e 20 63 6f 70 79 28 7a 65 72 72 6f   ┆; xerrortext:   begin copy(zerro┆
0x06c120…06c140             72 74 65 78 74 2c 31 29 3b 20 70 72 6f 67 72 61 6d 5f 6f 6b 3a 3d 66 61 6c 73 65 3b 20 65 6e 64   ┆rtext,1); program_ok:=false; end┆
0x06c140…06c160             3b 0a 78 65 78 63 65 70 74 69 6f 6e 3a 20 20 20 65 78 63 65 70 74 69 6f 6e 5f 64 65 66 3b 0a 78   ┆; xexception:   exception_def; x┆
0x06c160…06c180             65 78 63 68 61 6e 67 65 3a 20 20 20 20 62 65 67 69 6e 20 70 61 73 73 5f 61 64 64 72 28 7a 65 78   ┆exchange:    begin pass_addr(zex┆
0x06c180…06c1a0             63 68 61 6e 67 65 29 3b 20 20 70 6f 70 3b 20 20 65 6e 64 3b 0a 78 65 78 63 68 61 6e 67 65 73 74   ┆change);  pop;  end; xexchangest┆
0x06c1a0…06c1c0             61 74 3a 20 20 20 20 70 75 74 30 28 7a 65 78 63 68 73 74 61 74 29 3b 0a 78 65 78 69 74 6c 6f 63   ┆at:    put0(zexchstat); xexitloc┆
0x06c1c0…06c1e0             6b 3a 20 20 20 20 6c 6f 6f 70 5f 67 6f 74 6f 28 7a 65 78 69 74 6c 6f 63 6b 29 3b 0a 78 65 78 69   ┆k:    loop_goto(zexitlock); xexi┆
0x06c1e0…06c200             74 73 74 61 74 3a 20 20 20 20 69 66 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 65 72 72   ┆tstat:    if versionz80 then err┆
0x06c200…06c220 (28, 1, 11) 6f 72 28 6e 6f 74 5f 69 6d 70 6c 5f 65 78 69 74 29 0a 65 6c 73 65 20 70 75 74 30 28 7a 65 78 69   ┆or(not_impl_exit) else put0(zexi┆
0x06c220…06c240             74 73 74 61 74 29 3b 0a 78 65 78 69 74 6c 6f 6f 70 73 74 61 74 3a 6c 6f 6f 70 5f 67 6f 74 6f 28   ┆tstat); xexitloopstat:loop_goto(┆
0x06c240…06c260             7a 65 78 69 74 6c 6f 6f 70 73 74 61 74 29 3b 0a 78 65 78 70 6f 72 74 61 64 64 72 3a 20 20 62 65   ┆zexitloopstat); xexportaddr:  be┆
0x06c260…06c280             67 69 6e 20 65 78 70 6f 72 74 3a 3d 74 72 75 65 3b 20 65 78 70 6f 72 74 5f 6b 69 6e 64 3a 3d 65   ┆gin export:=true; export_kind:=e┆
0x06c280…06c2a0             78 70 6f 72 74 61 64 64 72 20 65 6e 64 3b 0a 78 65 78 70 6f 72 74 64 69 73 70 6c 3a 20 62 65 67   ┆xportaddr end; xexportdispl: beg┆
0x06c2a0…06c2c0             69 6e 20 65 78 70 6f 72 74 3a 3d 74 72 75 65 3b 20 65 78 70 6f 72 74 5f 6b 69 6e 64 3a 3d 65 78   ┆in export:=true; export_kind:=ex┆
0x06c2c0…06c2e0             70 6f 72 74 64 69 73 70 6c 20 65 6e 64 3b 0a 78 65 78 70 6f 72 74 6f 66 66 73 65 74 3a 62 65 67   ┆portdispl end; xexportoffset:beg┆
0x06c2e0…06c300             69 6e 20 65 78 70 6f 72 74 3a 3d 74 72 75 65 3b 20 65 78 70 6f 72 74 5f 6b 69 6e 64 3a 3d 65 78   ┆in export:=true; export_kind:=ex┆
0x06c300…06c320             70 6f 72 74 6f 66 66 73 65 74 20 65 6e 64 3b 0a 78 65 78 70 6f 72 74 73 69 7a 65 3a 20 20 62 65   ┆portoffset end; xexportsize:  be┆
0x06c320…06c340             67 69 6e 20 65 78 70 6f 72 74 3a 3d 74 72 75 65 3b 20 65 78 70 6f 72 74 5f 6b 69 6e 64 3a 3d 65   ┆gin export:=true; export_kind:=e┆
0x06c340…06c360             78 70 6f 72 74 73 69 7a 65 20 65 6e 64 3b 0a 78 65 78 70 6f 72 74 76 61 6c 75 65 3a 20 62 65 67   ┆xportsize end; xexportvalue: beg┆
0x06c360…06c380             69 6e 20 65 78 70 6f 72 74 3a 3d 74 72 75 65 3b 20 65 78 70 6f 72 74 5f 6b 69 6e 64 3a 3d 65 78   ┆in export:=true; export_kind:=ex┆
0x06c380…06c3a0             70 6f 72 74 76 61 6c 75 65 20 65 6e 64 3b 0a 78 65 78 70 72 3a 20 20 20 20 20 20 20 20 66 69 72   ┆portvalue end; xexpr:        fir┆
0x06c3a0…06c3c0             73 74 5f 6f 66 5f 65 78 70 72 3a 3d 6f 74 3b 0a 78 65 78 74 65 72 6e 61 6c 3a 20 20 20 20 65 78   ┆st_of_expr:=ot; xexternal:    ex┆
0x06c3c0…06c3e0             74 65 72 6e 61 6c 5f 3b 0a 78 65 78 74 70 72 6f 63 64 65 66 3a 20 20 65 78 74 70 72 6f 63 65 73   ┆ternal_; xextprocdef:  extproces┆
0x06c3e0…06c400             73 5f 64 65 66 3b 0a 78 65 78 74 70 72 6f 63 65 73 73 3a 20 20 62 65 67 69 6e 0a 70 75 73 68 5f   ┆s_def; xextprocess:  begin push_┆
0x06c400…06c420 (28, 1, 12) 6e 61 6d 65 28 6e 69 78 29 3b 0a 70 61 73 73 69 6e 28 69 29 3b 0a 6e 61 6d 65 74 61 62 6c 65 28   ┆name(nix); passin(i); nametable(┆
0x06c420…06c440             20 6e 69 78 20 29 5e 2e 63 6f 6d 70 5f 74 79 70 65 3a 3d 20 69 3b 0a 65 6e 64 3b 0a 78 66 63 61   ┆ nix )^.comp_type:= i; end; xfca┆
0x06c440…06c460             6c 6c 3a 20 20 20 20 20 20 20 65 6e 64 5f 66 75 6e 63 3b 0a 78 66 69 65 6c 64 3a 20 20 20 20 20   ┆ll:       end_func; xfield:     ┆
0x06c460…06c480             20 20 66 69 65 6c 64 5f 3b 0a 78 66 69 65 6c 64 64 65 66 3a 20 20 20 20 66 69 65 6c 64 5f 6c 69   ┆  field_; xfielddef:    field_li┆
0x06c480…06c4a0             73 74 3b 0a 78 66 69 65 6c 64 69 64 3a 20 20 20 20 20 6e 65 77 5f 6e 61 6d 65 3b 0a 78 66 6f 72   ┆st; xfieldid:     new_name; xfor┆
0x06c4a0…06c4c0             3a 20 20 20 20 20 20 20 20 20 66 6f 72 5f 3b 0a 78 66 6f 72 73 74 61 74 3a 20 20 20 20 20 70 75   ┆:         for_; xforstat:     pu┆
0x06c4c0…06c4e0             74 30 28 7a 66 6f 72 73 74 61 74 29 3b 0a 78 66 6f 72 77 61 72 64 3a 20 20 20 20 20 66 6f 72 77   ┆t0(zforstat); xforward:     forw┆
0x06c4e0…06c500             61 72 64 5f 3b 0a 78 66 6f 72 77 61 72 64 70 6f 69 6e 74 65 72 3a 20 66 6f 72 77 61 72 64 5f 70   ┆ard_; xforwardpointer: forward_p┆
0x06c500…06c520             6f 69 6e 74 65 72 5f 64 65 66 3b 0a 78 66 72 6f 7a 65 6e 64 65 66 3a 20 20 20 72 65 64 65 66 5f   ┆ointer_def; xfrozendef:   redef_┆
0x06c520…06c540             74 79 70 65 3b 0a 78 66 75 6e 63 63 61 6c 6c 3a 20 20 20 20 66 75 6e 63 5f 63 61 6c 6c 3b 0a 78   ┆type; xfunccall:    func_call; x┆
0x06c540…06c560             66 75 6e 63 69 64 3a 20 20 20 20 20 20 72 6f 75 74 69 6e 65 5f 64 65 66 28 66 75 6e 63 5f 6d 6f   ┆funcid:      routine_def(func_mo┆
0x06c560…06c580             64 65 29 3b 0a 78 67 65 3a 20 20 20 20 20 20 20 20 20 20 65 71 75 61 6c 69 74 79 28 7a 67 65 29   ┆de); xge:          equality(zge)┆
0x06c580…06c5a0             3b 0a 78 67 65 74 65 78 70 72 3a 20 20 20 20 20 6c 6f 61 64 5f 6f 70 65 72 61 6e 64 3b 0a 78 67   ┆; xgetexpr:     load_operand; xg┆
0x06c5a0…06c5c0             65 74 76 61 6c 75 65 3a 20 20 20 20 6c 6f 61 64 5f 6f 70 65 72 61 6e 64 3b 0a 78 67 6f 74 6f 3a   ┆etvalue:    load_operand; xgoto:┆
0x06c5c0…06c5e0             20 20 20 20 20 20 20 20 6c 61 62 65 6c 5f 67 6f 74 6f 28 7a 67 6f 74 6f 29 3b 0a 78 67 74 3a 20   ┆        label_goto(zgoto); xgt: ┆
0x06c5e0…06c600             20 20 20 20 20 20 20 20 20 65 71 75 61 6c 69 74 79 28 7a 67 74 29 3b 0a 78 69 66 3a 20 20 20 20   ┆         equality(zgt); xif:    ┆
0x06c600…06c620 (28, 1, 13) 20 20 20 20 20 20 70 75 74 30 28 7a 69 66 29 3b 0a 78 69 66 65 78 70 72 3a 20 20 20 20 20 20 70   ┆      put0(zif); xifexpr:      p┆
0x06c620…06c640             61 73 73 5f 65 78 70 72 28 7a 69 66 65 78 70 72 29 3b 0a 78 69 66 73 74 61 74 3a 20 20 20 20 20   ┆ass_expr(zifexpr); xifstat:     ┆
0x06c640…06c660             20 70 75 74 30 28 7a 69 66 73 74 61 74 29 3b 0a 78 69 6e 3a 20 20 20 20 20 20 20 20 20 20 69 6e   ┆ put0(zifstat); xin:          in┆
0x06c660…06c680             63 6c 75 73 69 6f 6e 3b 0a 78 69 6e 63 6c 75 64 65 3a 20 20 20 20 20 69 6e 63 6c 75 64 65 3b 0a   ┆clusion; xinclude:     include; ┆
0x06c680…06c6a0             78 69 6e 63 6c 75 64 65 72 61 6e 67 65 3a 20 20 69 6e 63 6c 75 64 65 5f 69 6e 74 3b 0a 78 69 6e   ┆xincluderange:  include_int; xin┆
0x06c6a0…06c6c0             64 65 78 3a 20 20 20 20 20 20 20 69 6e 64 65 78 3b 0a 78 69 6e 64 65 78 65 78 70 72 3a 20 20 20   ┆dex:       index; xindexexpr:   ┆
0x06c6c0…06c6e0             69 6e 64 65 78 5f 65 78 70 72 3b 0a 78 69 6e 69 74 62 6c 6f 63 6b 3a 20 20 20 62 65 67 69 6e 20   ┆index_expr; xinitblock:   begin ┆
0x06c6e0…06c700             73 74 61 74 5f 70 61 72 74 3a 3d 74 72 75 65 3b 20 77 6f 72 64 5f 61 6c 6c 69 67 6e 3b 0a 70 75   ┆stat_part:=true; word_allign; pu┆
0x06c700…06c720             74 30 28 7a 65 6e 64 64 65 63 6c 29 3b 0a 69 66 20 28 2a 20 2a 2a 7a 38 30 2a 2a 20 2a 29 20 76   ┆t0(zenddecl); if (* **z80** *) v┆
0x06c720…06c740             65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 69 3a 3d 20 2d 20 63 75 72 72 65 6e 74 5f 6f 66 66   ┆ersionz80 then i:= - current_off┆
0x06c740…06c760             73 65 74 0a 65 6c 73 65 0a 28 2a 20 2a 2a 6c 61 6d 62 64 61 20 6f 72 20 72 63 33 35 30 32 63 2a   ┆set else (* **lambda or rc3502c*┆
0x06c760…06c780             2a 20 2a 29 0a 69 3a 3d 63 75 72 72 65 6e 74 5f 6f 66 66 73 65 74 3b 0a 69 66 20 69 3e 76 61 72   ┆* *) i:=current_offset; if i>var┆
0x06c780…06c7a0             5f 6c 65 6e 67 74 68 20 74 68 65 6e 20 76 61 72 5f 6c 65 6e 67 74 68 3a 3d 69 3b 0a 65 6e 64 3b   ┆_length then var_length:=i; end;┆
0x06c7a0…06c7c0             0a 78 69 6e 69 74 63 6f 6e 73 74 3a 20 20 20 76 61 72 69 61 62 6c 65 5f 69 6e 69 74 3a 3d 74 72   ┆ xinitconst:   variable_init:=tr┆
0x06c7c0…06c7e0             75 65 3b 0a 78 69 6e 74 65 67 65 72 3a 20 20 20 20 73 74 64 5f 6e 61 6d 65 28 78 69 6e 74 65 67   ┆ue; xinteger:    std_name(xinteg┆
0x06c7e0…06c800             65 72 29 3b 0a 78 6c 61 62 65 6c 3a 20 20 20 20 20 20 20 6c 61 62 65 6c 5f 67 6f 74 6f 28 7a 64   ┆er); xlabel:       label_goto(zd┆
0x06c800…06c820 (28, 1, 14) 65 66 6c 69 78 29 3b 0a 78 6c 65 3a 20 20 20 20 20 20 20 20 20 20 65 71 75 61 6c 69 74 79 28 7a   ┆eflix); xle:          equality(z┆
0x06c820…06c840             6c 65 29 3b 0a 78 6c 61 62 65 6c 69 64 3a 20 20 20 20 20 6e 65 77 5f 6c 61 62 65 6c 3b 0a 78 6c   ┆le); xlabelid:     new_label; xl┆
0x06c840…06c860             69 74 65 72 61 6c 3a 20 20 20 20 20 6c 69 74 65 72 61 6c 3b 0a 78 6c 6f 63 6b 3a 20 20 20 20 20   ┆iteral:     literal; xlock:     ┆
0x06c860…06c880             20 20 20 6c 6f 63 6b 5f 74 79 70 65 3b 0a 78 6c 6f 63 6b 6d 65 73 73 74 61 74 3a 20 69 66 20 76   ┆   lock_type; xlockmesstat: if v┆
0x06c880…06c8a0             65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 20 65 72 72 6f 72 28 6e 6f 74 5f 69 6d 70 6c 5f 6c 6f   ┆ersionz80 then error(not_impl_lo┆
0x06c8a0…06c8c0             63 6b 6d 65 73 29 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 65 67 69 6e 20   ┆ckmes) else               begin ┆
0x06c8c0…06c8e0             6c 6f 63 6b 5f 6d 65 73 5f 73 74 61 74 3a 3d 20 74 72 75 65 3b 20 70 75 74 30 28 7a 6c 6f 63 6b   ┆lock_mes_stat:= true; put0(zlock┆
0x06c8e0…06c900             6d 65 73 73 74 61 74 29 3b 20 65 6e 64 3b 0a 78 6c 6f 63 6b 73 74 61 74 3a 20 20 20 20 62 65 67   ┆messtat); end; xlockstat:    beg┆
0x06c900…06c920             69 6e 20 6c 6f 63 6b 5f 6d 65 73 5f 73 74 61 74 3a 3d 20 66 61 6c 73 65 3b 20 70 75 74 30 28 7a   ┆in lock_mes_stat:= false; put0(z┆
0x06c920…06c940             6c 6f 63 6b 73 74 61 74 29 3b 20 65 6e 64 3b 0a 78 6c 6f 63 6b 76 61 72 3a 20 20 20 20 20 6c 6f   ┆lockstat); end; xlockvar:     lo┆
0x06c940…06c960             63 6b 5f 76 61 72 5f 3b 0a 78 6c 6f 6f 70 73 74 61 74 3a 20 20 20 20 69 66 20 76 65 72 73 69 6f   ┆ck_var_; xloopstat:    if versio┆
0x06c960…06c980             6e 7a 38 30 20 74 68 65 6e 20 65 72 72 6f 72 28 6e 6f 74 5f 69 6d 70 6c 5f 6c 6f 6f 70 29 20 65   ┆nz80 then error(not_impl_loop) e┆
0x06c980…06c9a0             6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 30 28 7a 6c 6f 6f 70 73 74 61 74   ┆lse               put0(zloopstat┆
0x06c9a0…06c9c0             29 3b 0a 78 6c 74 3a 20 20 20 20 20 20 20 20 20 20 65 71 75 61 6c 69 74 79 28 7a 6c 74 29 3b 0a   ┆); xlt:          equality(zlt); ┆
0x06c9c0…06c9e0             78 6d 6f 64 3a 20 20 20 20 20 20 20 20 20 61 72 69 74 68 6d 65 74 69 63 28 7a 6d 6f 64 29 3b 0a   ┆xmod:         arithmetic(zmod); ┆
0x06c9e0…06ca00             78 6d 75 6c 3a 20 20 20 20 20 20 20 20 20 61 72 69 74 68 6d 65 74 69 63 28 7a 6d 75 6c 29 3b 0a   ┆xmul:         arithmetic(zmul); ┆
0x06ca00…06ca20 (28, 1, 15) 78 6e 61 6d 65 3a 20 20 20 20 20 20 20 20 6e 61 6d 65 3b 0a 78 6e 65 3a 20 20 20 20 20 20 20 20   ┆xname:        name; xne:        ┆
0x06ca20…06ca40             20 20 65 71 75 61 6c 69 74 79 28 7a 6e 65 29 3b 0a 78 6e 65 67 3a 20 20 20 20 20 20 20 20 20 6e   ┆  equality(zne); xneg:         n┆
0x06ca40…06ca60             65 67 5f 6e 6f 74 28 7a 6e 65 67 29 3b 0a 78 6e 65 77 3a 20 20 20 20 20 20 20 20 20 73 74 64 5f   ┆eg_not(zneg); xnew:         std_┆
0x06ca60…06ca80             6e 61 6d 65 28 78 6e 65 77 29 3b 0a 78 6e 65 77 6c 69 6e 65 3a 20 20 20 20 20 6e 65 77 5f 6c 69   ┆name(xnew); xnewline:     new_li┆
0x06ca80…06caa0             6e 65 3b 0a 78 6e 69 6c 3a 20 20 20 20 20 20 20 20 20 69 66 20 76 65 72 73 69 6f 6e 7a 38 30 20   ┆ne; xnil:         if versionz80 ┆
0x06caa0…06cac0             74 68 65 6e 20 70 61 73 73 69 6e 28 6e 69 6c 5f 6e 69 78 29 20 28 2a 20 72 65 6d 65 6d 62 65 72   ┆then passin(nil_nix) (* remember┆
0x06cac0…06cae0             20 6e 69 78 20 2a 29 0a 65 6c 73 65 20 73 74 64 5f 6e 61 6d 65 28 78 6e 69 6c 29 3b 0a 78 6e 69   ┆ nix *) else std_name(xnil); xni┆
0x06cae0…06cb00             6c 72 65 66 3a 20 20 20 20 20 20 69 66 20 76 65 72 73 69 6f 6e 7a 38 30 20 74 68 65 6e 0a 62 65   ┆lref:      if versionz80 then be┆
0x06cb00…06cb20             67 69 6e 0a 70 61 73 73 69 6e 28 6e 69 78 29 3b 0a 28 2a 20 6c 65 74 20 65 6e 74 72 79 3a 20 6e   ┆gin passin(nix); (* let entry: n┆
0x06cb20…06cb40             69 6c 72 65 66 20 62 65 20 65 71 75 61 6c 20 74 6f 20 65 6e 74 72 79 3a 20 6e 69 6c 20 2a 29 0a   ┆ilref be equal to entry: nil *) ┆
0x06cb40…06cb60             6e 61 6d 65 74 61 62 6c 65 28 6e 69 78 29 5e 3a 3d 20 6e 61 6d 65 74 61 62 6c 65 28 6e 69 6c 5f   ┆nametable(nix)^:= nametable(nil_┆
0x06cb60…06cb80             6e 69 78 29 5e 3b 20 28 2a 20 4e 49 4c 20 4d 55 53 54 20 42 45 20 44 45 43 4c 41 52 45 44 20 42   ┆nix)^; (* NIL MUST BE DECLARED B┆
0x06cb80…06cba0             45 46 4f 52 45 20 4e 49 4c 52 45 46 20 21 21 21 21 21 21 21 21 21 21 21 21 20 20 2a 29 0a 65 6e   ┆EFORE NILREF !!!!!!!!!!!!  *) en┆
0x06cba0…06cbc0             64 0a 65 6c 73 65 20 73 74 64 5f 6e 61 6d 65 28 78 6e 69 6c 72 65 66 29 3b 0a 78 6e 69 6c 74 79   ┆d else std_name(xnilref); xnilty┆
0x06cbc0…06cbe0             70 65 3a 20 20 20 20 20 73 74 64 5f 6e 61 6d 65 28 78 6e 69 6c 74 79 70 65 29 3b 0a 78 6e 6f 72   ┆pe:     std_name(xniltype); xnor┆
0x06cbe0…06cc00             65 74 79 70 65 3a 20 20 20 20 6e 6f 5f 72 65 74 79 70 65 3b 0a 78 6e 6f 74 3a 20 20 20 20 20 20   ┆etype:    no_retype; xnot:      ┆
0x06cc00…06cc20 (29, 0, 1)  20 20 20 6e 65 67 5f 6e 6f 74 28 7a 6e 6f 74 29 3b 0a 78 6e 75 6c 6c 3a 20 20 20 20 20 20 20 20   ┆   neg_not(znot); xnull:        ┆
0x06cc20…06cc40             6e 75 6c 6c 3b 0a 78 6f 70 74 69 6f 6e 3a 20 20 20 20 20 20 73 65 74 5f 6f 70 74 69 6f 6e 3b 0a   ┆null; xoption:      set_option; ┆
0x06cc40…06cc60             78 6f 72 5f 3a 20 20 20 20 20 20 20 20 20 61 72 69 74 68 6d 65 74 69 63 28 7a 6f 72 5f 29 3b 0a   ┆xor_:         arithmetic(zor_); ┆
0x06cc60…06cc80             78 6f 72 64 3a 20 20 20 20 20 20 20 20 20 73 74 64 5f 6e 61 6d 65 28 78 6f 72 64 29 3b 0a 78 6f   ┆xord:         std_name(xord); xo┆
0x06cc80…06cca0             74 68 65 72 77 69 73 65 3a 20 20 20 70 75 74 30 28 7a 6f 74 68 65 72 77 69 73 65 29 3b 0a 78 70   ┆therwise:   put0(zotherwise); xp┆
0x06cca0…06ccc0             61 72 61 6d 69 64 3a 20 20 20 20 20 6e 65 77 5f 6e 61 6d 65 3b 0a 78 70 61 63 6b 65 64 61 72 72   ┆aramid:     new_name; xpackedarr┆
0x06ccc0…06cce0             61 79 64 65 66 3a 20 20 20 61 72 72 61 79 5f 64 65 66 28 70 61 63 6b 29 3b 0a 78 70 6f 69 6e 74   ┆aydef:   array_def(pack); xpoint┆
0x06cce0…06cd00             65 72 64 65 66 3a 20 20 70 6f 69 6e 74 65 72 5f 64 65 66 3b 0a 78 70 6f 6f 6c 64 65 66 3a 20 20   ┆erdef:  pointer_def; xpooldef:  ┆
0x06cd00…06cd20             20 20 20 70 6f 6f 6c 5f 64 65 66 3b 0a 78 70 72 65 64 3a 20 20 20 20 20 20 20 20 73 74 64 5f 6e   ┆   pool_def; xpred:        std_n┆
0x06cd20…06cd40             61 6d 65 28 78 70 72 65 64 29 3b 0a 78 70 61 63 6b 65 64 72 65 63 6f 72 64 3a 20 20 20 20 20 62   ┆ame(xpred); xpackedrecord:     b┆
0x06cd40…06cd60             65 67 69 6e 20 70 75 73 68 5f 6c 65 76 65 6c 28 72 65 63 6f 72 64 5f 6d 6f 64 65 29 3b 20 70 61   ┆egin push_level(record_mode); pa┆
0x06cd60…06cd80             63 6b 5f 72 65 63 6f 72 64 3a 3d 70 61 63 6b 20 65 6e 64 3b 0a 78 70 72 65 66 69 78 3a 20 20 20   ┆ck_record:=pack end; xprefix:   ┆
0x06cd80…06cda0             20 20 20 62 65 67 69 6e 20 70 72 65 66 69 78 65 64 3a 3d 74 72 75 65 3b 20 70 72 65 66 69 78 65   ┆   begin prefixed:=true; prefixe┆
0x06cda0…06cdc0             64 5f 6e 61 6d 65 3a 3d 74 72 75 65 3b 20 65 6e 64 3b 0a 78 70 72 6f 63 65 73 73 69 64 3a 20 20   ┆d_name:=true; end; xprocessid:  ┆
0x06cdc0…06cde0             20 70 72 6f 63 65 73 73 5f 64 65 66 3b 0a 78 70 72 6f 63 63 61 6c 6c 3a 20 20 20 20 70 72 6f 63   ┆ process_def; xproccall:    proc┆
0x06cde0…06ce00             5f 63 61 6c 6c 3b 0a 78 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 62 65 67 69 6e 20 70 75 73 68 3b   ┆_call; xprocessparam:begin push;┆
0x06ce00…06ce20 (29, 0, 2)  20 67 65 74 5f 70 75 73 68 65 64 5f 63 6f 6e 73 74 73 3b 20 70 6f 70 3b 20 70 75 74 30 28 7a 70   ┆ get_pushed_consts; pop; put0(zp┆
0x06ce20…06ce40             72 6f 63 65 73 73 70 61 72 61 6d 29 3b 20 65 6e 64 3b 0a 78 70 72 6f 63 69 64 3a 20 20 20 20 20   ┆rocessparam); end; xprocid:     ┆
0x06ce40…06ce60             20 72 6f 75 74 69 6e 65 5f 64 65 66 28 70 72 6f 63 5f 6d 6f 64 65 29 3b 0a 78 72 61 6e 67 65 3a   ┆ routine_def(proc_mode); xrange:┆
0x06ce60…06ce80             20 20 20 20 20 20 20 72 61 6e 67 65 3b 0a 78 72 65 61 6c 3a 20 20 20 20 20 20 20 20 73 74 64 5f   ┆       range; xreal:        std_┆
0x06ce80…06cea0             6e 61 6d 65 28 78 72 65 61 6c 29 3b 0a 78 72 65 63 64 65 66 3a 20 20 20 20 20 20 72 65 63 6f 72   ┆name(xreal); xrecdef:      recor┆
0x06cea0…06cec0             64 5f 64 65 66 3b 0a 78 72 65 63 6f 72 64 3a 20 20 20 20 20 20 70 75 73 68 5f 6c 65 76 65 6c 28   ┆d_def; xrecord:      push_level(┆
0x06cec0…06cee0             72 65 63 6f 72 64 5f 6d 6f 64 65 29 3b 0a 78 72 65 64 65 66 74 79 70 65 3a 20 20 20 72 65 64 65   ┆record_mode); xredeftype:   rede┆
0x06cee0…06cf00             66 5f 74 79 70 65 3b 0a 78 72 65 66 65 72 65 6e 63 65 3a 20 20 20 73 74 64 5f 6e 61 6d 65 28 78   ┆f_type; xreference:   std_name(x┆
0x06cf00…06cf20             72 65 66 65 72 65 6e 63 65 29 3b 0a 78 72 65 70 65 61 74 3a 20 20 20 20 20 20 70 75 74 30 28 7a   ┆reference); xrepeat:      put0(z┆
0x06cf20…06cf40             72 65 70 65 61 74 29 3b 0a 78 72 65 74 79 70 65 3a 20 20 20 20 20 20 72 65 74 79 70 65 3b 0a 78   ┆repeat); xretype:      retype; x┆
0x06cf40…06cf60             73 63 61 6c 61 72 64 65 66 3a 20 20 20 73 63 61 6c 61 72 5f 64 65 66 3b 0a 78 73 63 61 6c 61 72   ┆scalardef:   scalar_def; xscalar┆
0x06cf60…06cf80             69 64 3a 20 20 20 20 6e 65 77 5f 73 63 61 6c 61 72 3b 0a 78 73 65 63 66 75 6e 63 69 64 3a 20 20   ┆id:    new_scalar; xsecfuncid:  ┆
0x06cf80…06cfa0             20 70 72 65 76 69 6f 75 73 5f 66 6f 72 77 61 72 64 28 66 75 6e 63 5f 6d 6f 64 65 29 3b 0a 78 73   ┆ previous_forward(func_mode); xs┆
0x06cfa0…06cfc0             65 63 70 72 6f 63 69 64 3a 20 20 20 70 72 65 76 69 6f 75 73 5f 66 6f 72 77 61 72 64 28 70 72 6f   ┆ecprocid:   previous_forward(pro┆
0x06cfc0…06cfe0             63 5f 6d 6f 64 65 29 3b 0a 78 73 65 6d 61 70 68 6f 72 65 3a 20 20 20 73 74 64 5f 6e 61 6d 65 28   ┆c_mode); xsemaphore:   std_name(┆
0x06cfe0…06d000             78 73 65 6d 61 70 68 6f 72 65 29 3b 0a 78 73 65 74 3a 20 20 20 20 20 20 20 20 20 6e 65 77 5f 73   ┆xsemaphore); xset:         new_s┆
0x06d000…06d020 (29, 0, 3)  65 74 3b 0a 78 73 65 74 64 65 66 3a 20 20 20 20 20 20 73 65 74 5f 64 65 66 3b 0a 78 73 65 74 65   ┆et; xsetdef:      set_def; xsete┆
0x06d020…06d040             78 70 72 3a 20 20 20 20 20 73 65 74 5f 65 78 70 72 3b 0a 78 73 68 61 64 6f 77 3a 20 20 20 20 20   ┆xpr:     set_expr; xshadow:     ┆
0x06d040…06d060             20 73 74 64 5f 6e 61 6d 65 28 78 73 68 61 64 6f 77 29 3b 0a 78 73 68 69 66 74 3a 20 20 20 20 20   ┆ std_name(xshadow); xshift:     ┆
0x06d060…06d080             20 20 61 72 69 74 68 6d 65 74 69 63 28 7a 73 68 69 66 74 29 3b 0a 78 73 74 72 69 6e 67 74 79 70   ┆  arithmetic(zshift); xstringtyp┆
0x06d080…06d0a0             65 3a 20 20 73 74 64 5f 6e 61 6d 65 28 78 73 74 72 69 6e 67 74 79 70 65 29 3b 0a 78 73 74 72 75   ┆e:  std_name(xstringtype); xstru┆
0x06d0a0…06d0c0             63 3a 20 20 20 20 20 20 20 73 74 72 75 63 3b 0a 78 73 74 72 75 63 63 6f 6e 73 74 3a 20 20 73 74   ┆c:       struc; xstrucconst:  st┆
0x06d0c0…06d0e0             72 75 63 5f 63 6f 6e 73 74 3b 0a 78 73 75 62 3a 20 20 20 20 20 20 20 20 20 61 72 69 74 68 6d 65   ┆ruc_const; xsub:         arithme┆
0x06d0e0…06d100             74 69 63 28 7a 73 75 62 29 3b 0a 78 73 75 62 64 65 66 3a 20 20 20 20 20 20 73 75 62 5f 64 65 66   ┆tic(zsub); xsubdef:      sub_def┆
0x06d100…06d120             3b 0a 78 73 75 63 63 3a 20 20 20 20 20 20 20 20 73 74 64 5f 6e 61 6d 65 28 78 73 75 63 63 29 3b   ┆; xsucc:        std_name(xsucc);┆
0x06d120…06d140             0a 78 74 65 6d 70 6f 69 6e 74 65 72 3a 20 20 74 65 6d 70 6f 69 6e 74 65 72 3b 0a 78 74 69 6d 65   ┆ xtempointer:  tempointer; xtime┆
0x06d140…06d160             73 3a 20 20 20 20 20 20 20 74 69 6d 65 73 5f 3b 0a 78 74 79 70 65 3a 20 20 20 20 20 20 20 20 70   ┆s:       times_; xtype:        p┆
0x06d160…06d180             75 73 68 5f 6e 61 6d 65 28 6e 69 78 29 3b 0a 78 74 79 70 65 64 65 66 3a 20 20 20 20 20 70 6f 70   ┆ush_name(nix); xtypedef:     pop┆
0x06d180…06d1a0             5f 74 6f 5f 66 72 65 65 5f 73 74 61 63 6b 28 31 29 3b 0a 78 74 79 70 65 73 69 7a 65 63 61 6c 6c   ┆_to_free_stack(1); xtypesizecall┆
0x06d1a0…06d1c0             3a 20 74 79 70 65 73 69 7a 65 5f 63 61 6c 6c 3b 0a 78 65 72 72 6f 72 74 79 70 65 3a 20 20 20 73   ┆: typesize_call; xerrortype:   s┆
0x06d1c0…06d1e0             74 64 5f 6e 61 6d 65 28 78 65 72 72 6f 72 74 79 70 65 29 3b 0a 78 75 6e 64 65 63 6c 69 64 3a 20   ┆td_name(xerrortype); xundeclid: ┆
0x06d1e0…06d200             20 20 20 73 74 64 5f 6e 61 6d 65 28 78 75 6e 64 65 63 6c 69 64 29 3b 0a 78 75 6e 74 69 6c 3a 20   ┆   std_name(xundeclid); xuntil: ┆
0x06d200…06d220 (29, 0, 4)  20 20 20 20 20 20 70 75 74 30 28 7a 75 6e 74 69 6c 29 3b 0a 78 75 70 3a 20 20 20 20 20 20 20 20   ┆      put0(zuntil); xup:        ┆
0x06d220…06d240             20 20 75 70 5f 64 6f 77 6e 28 2b 31 29 3b 0a 78 76 61 6c 75 65 70 61 72 61 6d 3a 20 20 66 6f 72   ┆  up_down(+1); xvalueparam:  for┆
0x06d240…06d260             6d 61 6c 5f 70 61 72 61 6d 28 76 61 6c 75 65 5f 70 61 72 61 6d 29 3b 0a 78 76 61 72 3a 20 20 20   ┆mal_param(value_param); xvar:   ┆
0x06d260…06d280             20 20 20 20 20 20 76 61 72 5f 3b 0a 78 76 61 72 70 61 72 61 6d 3a 20 20 20 20 66 6f 72 6d 61 6c   ┆      var_; xvarparam:    formal┆
0x06d280…06d2a0             5f 70 61 72 61 6d 28 76 61 72 5f 70 61 72 61 6d 29 3b 0a 78 76 61 72 69 64 3a 20 20 20 20 20 20   ┆_param(var_param); xvarid:      ┆
0x06d2a0…06d2c0             20 6e 65 77 5f 6e 61 6d 65 3b 0a 78 76 61 72 6c 69 73 74 3a 20 20 20 20 20 76 61 72 5f 6c 69 73   ┆ new_name; xvarlist:     var_lis┆
0x06d2c0…06d2e0             74 3b 0a 78 76 61 72 70 6f 69 6e 74 65 72 3a 20 20 76 61 72 5f 70 6f 69 6e 74 65 72 3b 0a 78 77   ┆t; xvarpointer:  var_pointer; xw┆
0x06d2e0…06d300             68 69 6c 65 3a 20 20 20 20 20 20 20 70 75 74 30 28 7a 77 68 69 6c 65 29 3b 0a 78 77 68 69 6c 65   ┆hile:       put0(zwhile); xwhile┆
0x06d300…06d320             65 78 70 72 3a 20 20 20 70 61 73 73 5f 65 78 70 72 28 7a 77 68 69 6c 65 65 78 70 72 29 3b 0a 78   ┆expr:   pass_expr(zwhileexpr); x┆
0x06d320…06d340             77 69 74 68 3a 20 20 20 20 20 20 20 20 62 65 67 69 6e 20 70 75 74 30 28 7a 77 69 74 68 73 74 61   ┆with:        begin put0(zwithsta┆
0x06d340…06d360             74 29 3b 20 74 65 6d 70 5f 77 69 74 68 76 61 72 5f 6e 6f 74 5f 75 73 65 64 3a 3d 74 72 75 65 3b   ┆t); temp_withvar_not_used:=true;┆
0x06d360…06d380             20 65 6e 64 3b 0a 78 77 69 74 68 76 61 72 3a 20 20 20 20 20 77 69 74 68 76 61 72 3b 0a 78 78 6f   ┆ end; xwithvar:     withvar; xxo┆
0x06d380…06d3a0             72 3a 20 20 20 20 20 20 20 20 20 61 72 69 74 68 6d 65 74 69 63 28 7a 78 6f 72 29 3b 0a 65 6c 73   ┆r:         arithmetic(zxor); els┆
0x06d3a0…06d3c0             65 20 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 28 69 6e 70 75 74 5f 65 72 72 6f 72 29 3b 0a 65   ┆e compiler_error(input_error); e┆
0x06d3c0…06d3e0             6e 64 3b 0a 75 6e 74 69 6c 20 64 6f 6e 65 3b 0a 69 66 20 74 65 73 74 5f 73 75 72 76 65 79 20 74   ┆nd; until done; if test_survey t┆
0x06d3e0…06d400             68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 49 6e 66 6f 72   ┆hen begin writeln(output, 'Infor┆
0x06d400…06d420 (29, 0, 5)  6d 61 74 69 6f 6e 20 73 75 72 76 65 79 20 66 72 6f 6d 20 27 2c 20 76 65 72 73 69 6f 6e 29 3b 0a   ┆mation survey from ', version); ┆
0x06d420…06d440             77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 44 65 65 70 65 73 74 20 6e 61 6d 65 20 73 74   ┆writeln(output, 'Deepest name st┆
0x06d440…06d460             61 63 6b 3a 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 27 2c   ┆ack:                          ',┆
0x06d460…06d480             20 74 6f 70 5f 73 74 61 63 6b 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 44 65   ┆ top_stack); writeln(output, 'De┆
0x06d480…06d4a0             65 70 65 73 74 20 6f 70 65 72 61 6e 64 20 73 74 61 63 6b 3a 20 20 20 20 20 20 20 20 20 20 20 20   ┆epest operand stack:            ┆
0x06d4a0…06d4c0             20 20 20 20 20 20 20 20 20 20 20 27 2c 20 74 6f 70 5f 6f 70 73 29 3b 0a 77 72 69 74 65 6c 6e 28   ┆           ', top_ops); writeln(┆
0x06d4c0…06d4e0             6f 75 74 70 75 74 2c 20 27 43 6f 6e 73 74 61 6e 74 20 61 72 65 61 20 73 69 7a 65 3a 20 20 20 20   ┆output, 'Constant area size:    ┆
0x06d4e0…06d500             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 20 74 6f 70 5f 63 29 3b   ┆                      ', top_c);┆
0x06d500…06d520             0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 44 65 65 70 65 73 74 20 73 74 72 75 63 74   ┆ writeln(output, 'Deepest struct┆
0x06d520…06d540             75 72 65 20 6e 65 73 74 69 6e 67 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27   ┆ure nesting:                   '┆
0x06d540…06d560             2c 20 74 6f 70 5f 73 73 29 3b 0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 6d 65   ┆, top_ss); needed_namesize := me┆
0x06d560…06d580             6d 61 76 61 69 6c 3b 0a 72 65 6c 65 61 73 65 28 68 65 61 70 6f 72 67 29 3b 0a 77 72 69 74 65 6c   ┆mavail; release(heaporg); writel┆
0x06d580…06d5a0             6e 28 6f 75 74 70 75 74 2c 20 27 48 65 65 70 20 73 70 61 63 65 20 75 73 65 64 20 69 6e 20 62 79   ┆n(output, 'Heep space used in by┆
0x06d5a0…06d5c0             74 65 73 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 0a 20 20 20 20 20   ┆tes:                    ',      ┆
0x06d5c0…06d5e0             20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 61 76 61 69 6c 20 2d 20 6e 65 65 64 65 64 5f 6e 61 6d   ┆           memavail - needed_nam┆
0x06d5e0…06d600             65 73 69 7a 65 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 65 6e 64 3b 20 28 2a   ┆esize); writeln(output); end; (*┆
0x06d600…06d620 (29, 0, 6)  20 74 65 73 74 20 73 75 72 76 65 79 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 61 73 73 34 20 2a   ┆ test survey *)  end; (* pass4 *┆
0x06d620…06d640             29 0a 0a 62 65 67 69 6e 0a 69 66 20 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 20 3c 20 6d 61 78   ┆)  begin if max_name_index < max┆
0x06d640…06d660             5f 6d 65 6d 6f 72 69 65 73 20 2a 20 6d 61 78 5f 6e 61 6d 65 73 20 74 68 65 6e 0a 62 65 67 69 6e   ┆_memories * max_names then begin┆
0x06d660…06d680             0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 30 3b 0a 69 20 20 20 20 20 20 20 20   ┆ needed_namesize := 0; i        ┆
0x06d680…06d6a0             20 20 20 20 20 20 20 3a 3d 20 30 3b 0a 6d 61 78 5f 6e 61 6d 65 5f 6b 65 79 20 20 20 20 3a 3d 20   ┆       := 0; max_name_key    := ┆
0x06d6a0…06d6c0             6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 3b 0a 0a 77 68 69 6c 65 20 6d 61 78 5f 6e 61 6d 65 5f   ┆max_name_index;  while max_name_┆
0x06d6c0…06d6e0             69 6e 64 65 78 20 3e 20 6d 61 78 5f 6e 61 6d 65 73 20 64 6f 0a 62 65 67 69 6e 0a 6e 65 65 64 65   ┆index > max_names do begin neede┆
0x06d6e0…06d700             64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 2b 20   ┆d_namesize := needed_namesize + ┆
0x06d700…06d720             6d 61 78 5f 6e 61 6d 65 73 3b 0a 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 20 20 3a 3d 20 6d 61   ┆max_names; max_name_index  := ma┆
0x06d720…06d740             78 5f 6e 61 6d 65 5f 69 6e 64 65 78 20 2d 20 6d 61 78 5f 6e 61 6d 65 73 3b 0a 69 20 3a 3d 20 69   ┆x_name_index - max_names; i := i┆
0x06d740…06d760             20 2b 20 31 3b 0a 65 6e 64 3b 0a 0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 6e   ┆ + 1; end;  needed_namesize := n┆
0x06d760…06d780             65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 2b 20 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 3b   ┆eeded_namesize + max_name_index;┆
0x06d780…06d7a0             0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73   ┆ needed_namesize := needed_names┆
0x06d7a0…06d7c0             69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 6e 61 6d 65 5f 72 65 63 29 3b 0a 0a 69 66 20 6d 61 78 61   ┆ize * sizeof(name_rec);  if maxa┆
0x06d7c0…06d7e0             76 61 69 6c 20 3e 3d 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 74 68 65 6e 0a 62 65 67   ┆vail >= needed_namesize then beg┆
0x06d7e0…06d800             69 6e 0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 6d 61 78 5f 6e 61 6d 65 5f 69   ┆in needed_namesize := max_name_i┆
0x06d800…06d820 (29, 0, 7)  6e 64 65 78 2b 31 3b 0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 6e 65 65 64 65   ┆ndex+1; needed_namesize := neede┆
0x06d820…06d840             64 5f 6e 61 6d 65 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 6e 61 6d 65 5f 72 65 63 29 3b 0a 67   ┆d_namesize * sizeof(name_rec); g┆
0x06d840…06d860             65 74 6d 65 6d 28 6e 61 6d 65 74 61 62 5f 70 74 72 5b 69 5d 2c 20 6e 65 65 64 65 64 5f 6e 61 6d   ┆etmem(nametab_ptr[i], needed_nam┆
0x06d860…06d880             65 73 69 7a 65 29 3b 0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 6d 61 78 5f 6e   ┆esize); needed_namesize := max_n┆
0x06d880…06d8a0             61 6d 65 73 3b 0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 6e 65 65 64 65 64 5f   ┆ames; needed_namesize := needed_┆
0x06d8a0…06d8c0             6e 61 6d 65 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 6e 61 6d 65 5f 72 65 63 29 3b 0a 66 6f 72   ┆namesize * sizeof(name_rec); for┆
0x06d8c0…06d8e0             20 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 20 3a 3d 20 30 20 74 6f 20 69 2d 31 20 64 6f 0a 67   ┆ max_name_index := 0 to i-1 do g┆
0x06d8e0…06d900             65 74 6d 65 6d 28 6e 61 6d 65 74 61 62 5f 70 74 72 5b 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78   ┆etmem(nametab_ptr[max_name_index┆
0x06d900…06d920             5d 2c 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 29 3b 0a 6d 61 78 5f 6e 61 6d 65 5f 69 6e   ┆], needed_namesize); max_name_in┆
0x06d920…06d940             64 65 78 20 3a 3d 20 6d 61 78 5f 6e 61 6d 65 5f 6b 65 79 3b 0a 6d 61 78 5f 6e 61 6d 65 5f 6b 65   ┆dex := max_name_key; max_name_ke┆
0x06d940…06d960             79 20 20 20 3a 3d 20 30 3b 0a 0a 70 61 73 73 34 3b 0a 0a 65 6e 64 20 65 6c 73 65 0a 62 65 67 69   ┆y   := 0;  pass4;  end else begi┆
0x06d960…06d980             6e 0a 20 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 65   ┆n   needed_namesize := 0; end; e┆
0x06d980…06d9a0             6e 64 20 65 6c 73 65 0a 62 65 67 69 6e 0a 20 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20   ┆nd else begin   needed_namesize ┆
0x06d9a0…06d9c0             3a 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3d   ┆:= 0; end;  if needed_namesize =┆
0x06d9c0…06d9e0             20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 74   ┆ 0 then begin writeln(output, 't┆
0x06d9e0…06da00             6f 6f 20 6d 61 6e 79 20 6e 61 6d 65 73 20 27 2c 20 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 29   ┆oo many names ', max_name_index)┆
0x06da00…06da20 (29, 0, 8)  3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 20 20 20 20 20 61 76 61 69 6c 61 62 6c   ┆; writeln(output, '     availabl┆
0x06da20…06da40             65 20 27 2c 20 6d 61 78 61 76 61 69 6c 20 64 69 76 20 73 69 7a 65 6f 66 28 6e 61 6d 65 5f 72 65   ┆e ', maxavail div sizeof(name_re┆
0x06da40…06da60             63 29 20 2d 20 31 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 5d 2c 20 6e 65 65 64 65 64 5f 6e 61 6d   ┆c) - 1); end; end; ], needed_nam┆
0x06da60…06da80             65 73 69 7a 65 29 3b 0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 6d 61 78 5f 6e   ┆esize); needed_namesize := max_n┆
0x06da80…06daa0             61 6d 65 73 3b 0a 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 6e 65 65 64 65 64 5f   ┆ames; needed_namesize := needed_┆
0x06daa0…06dac0             6e 61 6d 65 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 6e 61 6d 65 5f 72 65 63 29 3b 0a 66 6f 72   ┆namesize * sizeof(name_rec); for┆
0x06dac0…06dae0             20 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 20 3a 3d 20 30 20 74 6f 20 69 2d 31 20 64 6f 0a 67   ┆ max_name_index := 0 to i-1 do g┆
0x06dae0…06db00             65 74 6d 65 6d 28 6e 61 6d 65 74 61 62 5f 70 74 72 5b 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78   ┆etmem(nametab_ptr[max_name_index┆
0x06db00…06db20             5d 2c 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 29 3b 0a 6d 61 78 5f 6e 61 6d 65 5f 69 6e   ┆], needed_namesize); max_name_in┆
0x06db20…06db40             64 65 78 20 3a 3d 20 6d 61 78 5f 6e 61 6d 65 5f 6b 65 79 3b 0a 6d 61 78 5f 6e 61 6d 65 5f 6b 65   ┆dex := max_name_key; max_name_ke┆
0x06db40…06db60             79 20 20 20 3a 3d 20 30 3b 0a 0a 70 61 73 73 34 3b 0a 0a 65 6e 64 20 65 6c 73 65 0a 62 65 67 69   ┆y   := 0;  pass4;  end else begi┆
0x06db60…06db80             6e 0a 20 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 65   ┆n   needed_namesize := 0; end; e┆
0x06db80…06dba0             6e 64 20 65 6c 73 65 0a 62 65 67 69 6e 0a 20 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20   ┆nd else begin   needed_namesize ┆
0x06dba0…06dbc0             3a 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6e 65 65 64 65 64 5f 6e 61 6d 65 73 69 7a 65 20 3d   ┆:= 0; end;  if needed_namesize =┆
0x06dbc0…06dbe0             20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 74   ┆ 0 then begin writeln(output, 't┆
0x06dbe0…06dc00             6f 6f 20 6d 61 6e 79 20 6e 61 6d 65 73 20 27 2c 20 6d 61 78 5f 6e 61 6d 65 5f 69 6e 64 65 78 29   ┆oo many names ', max_name_index)┆
0x06dc00…06dc20 (29, 0, 9)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 78 70 35 70 72 6f 63 00 00 00 00 00 00 00   ┆../sw2103/src/rtp/xp5proc       ┆
0x06dc20…06dc40             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x06dc60…06dc80             00 00 00 00 20 20 20 37 35 35 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       755     255     146      ┆
0x06dc80…06dca0             20 31 36 36 32 34 37 20 20 35 32 36 36 37 37 30 30 34 37 20 20 31 30 33 32 35 00 20 00 00 00 00   ┆ 166247  5266770047  10325      ┆
0x06dca0…06dcc0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x06de00…06de20 (29, 0, 10) 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ (*-----------------------------┆
0x06de20…06de40             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x06de40…06de60             2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39 32 20 20 44   ┆---- -- -- (C) Copyrigth 1992  D┆
0x06de60…06de80             41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 35 50 52 4f 43 2e 50 41 53 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d   ┆ANOSI -- -- P5PROC.PAS -- ------┆
0x06de80…06dea0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x06dea0…06dec0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d   ┆----------------------------- --┆
0x06dec0…06dee0             0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Revisions -- ---------------┆
0x06dee0…06df00             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20 39 32 2e 30   ┆----------------- --        92.0┆
0x06df00…06df20             34 2e 30 39 20 20 42 42 20 20 20 20 53 63 61 6e 6e 69 6e 67 20 6f 66 20 6f 70 65 6e 20 6c 69 62   ┆4.09  BB    Scanning of open lib┆
0x06df20…06df40             20 63 6f 72 72 65 63 74 65 64 2c 20 75 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20 31 2e 31 32   ┆ corrected, used in release 1.12┆
0x06df40…06df60             0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20   ┆ --  1.1   92.10.14  HEJ   SCCS ┆
0x06df60…06df80             61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆and UNIX used. -- --------------┆
0x06df80…06dfa0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x06dfa0…06dfc0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e   ┆--------------------- -- SCCS in┆
0x06dfc0…06dfe0             66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f   ┆formation -- File   :  %P% -- Mo┆
0x06dfe0…06e000             64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09   ┆dule :  %M% -- Version:  %I% -- ┆
0x06e000…06e020 (29, 0, 11) 44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆Date   :  %E%  %U% -------------┆
0x06e020…06e040             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x06e040…06e060             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 70 72 6f 63 65   ┆---------------------- *)  proce┆
0x06e060…06e080             64 75 72 65 20 63 6f 64 65 5f 73 65 74 5f 6d 61 78 73 74 61 63 6b 20 28 72 65 73 65 72 76 61 74   ┆dure code_set_maxstack (reservat┆
0x06e080…06e0a0             69 6f 6e 20 3a 20 69 64 65 6e 74 69 66 69 65 72 29 3b 0a 63 6f 6e 73 74 20 6c 6d 5f 72 65 67 6e   ┆ion : identifier); const lm_regn┆
0x06e0a0…06e0c0             6f 20 3d 20 2d 32 3b 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f 72 65   ┆o = -2;  begin  out_op_id (op_re┆
0x06e0c0…06e0e0             76 67 77 2c 20 69 64 5f 6d 61 78 73 74 61 63 6b 29 3b 0a 20 28 2a 20 64 65 63 72 65 61 73 65 20   ┆vgw, id_maxstack);  (* decrease ┆
0x06e0e0…06e100             6d 61 78 73 74 61 63 6b 20 62 79 20 3c 72 65 73 65 72 76 61 74 69 6f 6e 3e 20 2a 29 0a 6f 75 74   ┆maxstack by <reservation> *) out┆
0x06e100…06e120             5f 6f 70 63 6f 64 65 20 28 6f 70 5f 72 65 63 68 77 29 3b 0a 0a 69 66 20 72 65 73 65 72 76 61 74   ┆_opcode (op_rechw);  if reservat┆
0x06e120…06e140             69 6f 6e 20 3d 20 69 64 5f 65 78 69 74 61 70 70 65 74 69 74 65 20 74 68 65 6e 0a 6f 75 74 5f 69   ┆ion = id_exitappetite then out_i┆
0x06e140…06e160             64 65 6e 74 69 66 69 65 72 20 28 69 64 5f 65 78 69 74 61 70 70 65 74 69 74 65 29 0a 65 6c 73 65   ┆dentifier (id_exitappetite) else┆
0x06e160…06e180             0a 28 2a 20 72 65 73 65 72 76 61 74 69 6f 6e 20 3d 20 69 64 5f 62 6f 6e 61 70 70 65 74 69 74 65   ┆ (* reservation = id_bonappetite┆
0x06e180…06e1a0             20 2a 29 0a 69 66 20 65 6e 66 6f 72 63 65 64 5f 65 78 63 65 70 74 69 6f 6e 5f 61 70 70 20 3c 20   ┆ *) if enforced_exception_app < ┆
0x06e1a0…06e1c0             30 20 74 68 65 6e 0a 6f 75 74 5f 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 5f 62 6f 6e 61 70 70   ┆0 then out_identifier (id_bonapp┆
0x06e1c0…06e1e0             65 74 69 74 65 29 0a 65 6c 73 65 0a 6f 75 74 5f 65 78 70 72 28 20 69 64 5f 65 78 69 74 61 70 70   ┆etite) else out_expr( id_exitapp┆
0x06e1e0…06e200             65 74 69 74 65 2c 20 28 39 20 28 2a 77 6f 72 64 73 20 66 6f 72 20 68 77 73 74 61 63 6b 20 61 6e   ┆etite, (9 (*words for hwstack an┆
0x06e200…06e220 (29, 0, 12) 64 20 63 6f 75 6e 74 2a 29 20 2b 20 31 20 28 2a 77 6f 72 64 20 66 6f 72 20 70 61 72 61 6d 65 74   ┆d count*) + 1 (*word for paramet┆
0x06e220…06e240             65 72 2a 29 0a 2b 20 65 6e 66 6f 72 63 65 64 5f 65 78 63 65 70 74 69 6f 6e 5f 61 70 70 29 20 2a   ┆er*) + enforced_exception_app) *┆
0x06e240…06e260             20 32 29 3b 20 28 2a 69 6e 20 62 79 74 65 73 2a 29 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f   ┆ 2); (*in bytes*)  out_opcode (o┆
0x06e260…06e280             70 5f 75 73 75 62 29 3b 0a 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 63 67 72 65 67 29   ┆p_usub);   out_opcode (op_cgreg)┆
0x06e280…06e2a0             3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 75 61 64 68 77 2c 20 6c 6d 5f 72 65 67 6e 6f   ┆; out_op_int (op_uadhw, lm_regno┆
0x06e2a0…06e2c0             29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 63 72 70 75 74 29 3b 0a 65 6e 64 3b 0a   ┆);  out_opcode (op_crput); end; ┆
0x06e2c0…06e2e0             0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 5f 65 78 69 74 3b 0a 0a 76 61 72 0a 6b 65 79 20   ┆  procedure code_exit;  var key ┆
0x06e2e0…06e300             3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f   ┆: integer;  begin  code_call_pro┆
0x06e300…06e320             63 20 28 73 79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 20 28 6b 65 79 2c 20 27 5f 5f   ┆c (sys_use, ext_lookup (key, '__┆
0x06e320…06e340             5f 65 78 69 74 5f 5f 5f 72 63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20   ┆_exit___rc'), key, const_niv_0, ┆
0x06e340…06e360             30 2c 20 30 2c 30 29 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 5f   ┆0, 0,0); end; (* procedure code_┆
0x06e360…06e380             65 78 69 74 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 69 6e 69 74 76 61   ┆exit *)   procedure  code_initva┆
0x06e380…06e3a0             72 28 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 74 79 70 65 5f 6f 20 3a 20 69 6e 74 65 67 65   ┆r( kind, offset, type_o : intege┆
0x06e3a0…06e3c0             72 3b 0a 20 20 76 61 72 20 72 65 66 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61   ┆r;   var ref_count : integer; va┆
0x06e3c0…06e3e0             72 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 29 3b 0a 28 2a 20 6f 75   ┆r shadow_count : integer); (* ou┆
0x06e3e0…06e400             74 70 75 74 73 20 74 68 65 20 63 6f 64 65 20 66 6f 72 20 69 6e 69 74 69 61 6c 69 7a 69 6e 67 20   ┆tputs the code for initializing ┆
0x06e400…06e420 (29, 0, 13) 76 61 72 69 61 62 6c 65 73 20 6f 66 20 74 79 70 65 3a 20 70 6f 69 6e 74 65 72 2c 20 73 65 6d 61   ┆variables of type: pointer, sema┆
0x06e420…06e440             70 68 6f 72 65 2c 0a 72 65 66 65 72 65 6e 63 65 20 6f 72 20 73 68 61 64 6f 77 20 2a 29 0a 0a 76   ┆phore, reference or shadow *)  v┆
0x06e440…06e460             61 72 0a 6f 5f 69 2c 20 6f 5f 63 20 3a 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 6b 65 79 3a 20 69   ┆ar o_i, o_c : identifier; key: i┆
0x06e460…06e480             6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 3d 20 30   ┆nteger;  begin shadow_count := 0┆
0x06e480…06e4a0             3b 0a 0a 72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 30 3b 0a 0a 0a 63 61 73 65 20 74 79 70 65 5f 6f   ┆;  ref_count := 0;   case type_o┆
0x06e4a0…06e4c0             20 6f 66 0a 73 68 61 64 6f 77 5f 74 79 70 3a 20 62 65 67 69 6e 0a 69 66 20 6b 69 6e 64 3d 31 20   ┆ of shadow_typ: begin if kind=1 ┆
0x06e4c0…06e4e0             74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 6c 64 2c 20 6f 66 66 73 65 74   ┆then out_op_int(op_reald, offset┆
0x06e4e0…06e500             29 0a 65 6c 73 65 0a 69 66 20 6f 66 66 73 65 74 3c 3e 30 20 74 68 65 6e 20 0a 6f 75 74 5f 6f 70   ┆) else if offset<>0 then  out_op┆
0x06e500…06e520             5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c 20 6f 66 66 73 65 74 29 3b 0a 0a 69 66 20 68 65 61 70   ┆_int(op_reasd, offset);  if heap┆
0x06e520…06e540             5f 69 6e 69 74 20 74 68 65 6e 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75 73   ┆_init then code_call_proc(sys_us┆
0x06e540…06e560             65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 68 65 61 70 73 68 5f 5f 5f 72 63   ┆e, ext_lookup(key, '_heapsh___rc┆
0x06e560…06e580             27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 34 2c 20 30 29 0a 65   ┆'), key, const_niv_0, 0, 4, 0) e┆
0x06e580…06e5a0             6c 73 65 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75 73 65 2c 20 65 78 74 5f   ┆lse code_call_proc(sys_use, ext_┆
0x06e5a0…06e5c0             6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 69 6e 69 74 73 68 5f 5f 5f 72 63 27 29 2c 20 6b 65 79   ┆lookup(key, '_initsh___rc'), key┆
0x06e5c0…06e5e0             2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 34 2c 20 30 29 3b 0a 6f 75 74 5f 63 6f 6d   ┆, const_niv_0, 0, 4, 0); out_com┆
0x06e5e0…06e600             6d 65 6e 74 28 27 20 69 6e 69 74 69 61 6c 69 7a 65 20 73 68 61 64 6f 77 20 6f 62 6a 65 63 74 20   ┆ment(' initialize shadow object ┆
0x06e600…06e620 (29, 0, 14) 27 29 3b 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74 3a 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 70 6f 69 6e   ┆'); shadow_count:= 1; end;  poin┆
0x06e620…06e640             74 65 72 5f 74 79 70 3a 0a 62 65 67 69 6e 0a 69 66 20 68 65 61 70 5f 69 6e 69 74 20 74 68 65 6e   ┆ter_typ: begin if heap_init then┆
0x06e640…06e660             0a 62 65 67 69 6e 20 28 2a 20 74 65 73 74 20 66 6f 72 20 65 6e 6f 75 67 68 20 6d 65 6d 6f 72 79   ┆ begin (* test for enough memory┆
0x06e660…06e680             20 66 6f 72 20 74 68 65 20 4e 45 57 20 63 61 6c 6c 20 20 20 2a 29 0a 20 20 20 20 20 20 28 2a 20   ┆ for the NEW call   *)       (* ┆
0x06e680…06e6a0             62 65 66 6f 72 65 20 69 6e 69 74 69 61 6c 69 7a 69 6e 67 20 74 68 65 20 70 6f 69 6e 74 65 72 20   ┆before initializing the pointer ┆
0x06e6a0…06e6c0             63 6f 6d 70 6f 6e 65 6e 74 20 2a 29 0a 20 20 20 20 20 20 28 2a 20 54 68 65 20 61 64 64 72 65 73   ┆component *)       (* The addres┆
0x06e6c0…06e6e0             73 20 6f 66 20 74 68 65 20 68 65 61 70 20 65 6c 65 6d 65 6e 74 20 69 73 20 6f 6e 20 74 68 65 20   ┆s of the heap element is on the ┆
0x06e6e0…06e700             73 74 61 63 6b 2c 20 6b 69 6e 64 20 3d 20 32 20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74   ┆stack, kind = 2 *) out_nl; out_t┆
0x06e700…06e720             6f 6b 65 6e 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 28 69 64 5f 6e 69 6c 5f 65 6c   ┆oken(zbegin); out_p_id(id_nil_el┆
0x06e720…06e740             65 6d 65 6e 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 28 69 64 5f 65 6e 64 5f 6e 69 6c 5f 74 65 73 74   ┆ement); out_p_id(id_end_nil_test┆
0x06e740…06e760             29 3b 20 28 2a 20 69 6e 73 65 72 74 65 64 20 62 79 20 42 42 20 39 32 30 34 30 39 20 2a 29 0a 6f   ┆); (* inserted by BB 920409 *) o┆
0x06e760…06e780             75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28   ┆ut_token(zendlist); out_comment(┆
0x06e780…06e7a0             27 74 65 73 74 20 72 65 73 75 6c 74 3c 3e 6e 69 6c 27 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28   ┆'test result<>nil'); out_opcode(┆
0x06e7a0…06e7c0             6f 70 5f 72 65 61 78 64 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c 20   ┆op_reaxd); out_op_int(op_reasd, ┆
0x06e7c0…06e7e0             2d 32 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 74 6e 69 6c 6c 29 3b 0a 6f 75 74 5f 6f   ┆-2); out_opcode(op_tnill); out_o┆
0x06e7e0…06e800             70 5f 69 64 28 6f 70 5f 6a 6d 7a 6e 65 2c 20 69 64 5f 6e 69 6c 5f 65 6c 65 6d 65 6e 74 29 3b 0a   ┆p_id(op_jmzne, id_nil_element); ┆
0x06e800…06e820 (29, 0, 15) 65 6e 64 3b 20 28 2a 20 68 65 61 70 69 6e 69 74 20 2a 29 0a 0a 28 2a 70 75 73 68 20 6e 69 6c 76   ┆end; (* heapinit *)  (*push nilv┆
0x06e820…06e840             61 6c 75 65 20 6f 6e 20 73 74 61 63 6b 2e 20 73 74 6f 72 65 20 62 61 73 65 5f 62 79 74 65 20 69   ┆alue on stack. store base_byte i┆
0x06e840…06e860             6e 20 61 64 64 72 65 73 73 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77   ┆n address *) out_op_int(op_rechw┆
0x06e860…06e880             2c 63 6f 6e 73 74 5f 6e 69 6c 5f 76 61 72 29 3b 0a 69 66 20 6b 69 6e 64 3d 31 20 74 68 65 6e 0a   ┆,const_nil_var); if kind=1 then ┆
0x06e880…06e8a0             6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 6c 62 2c 6f 66 66 73 65 74 29 0a 65 6c 73 65   ┆out_op_int(op_stvlb,offset) else┆
0x06e8a0…06e8c0             0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 73 62 2c 20 6f 66 66 73 65 74 29 3b 0a 6f   ┆ out_op_int(op_stvsb, offset); o┆
0x06e8c0…06e8e0             75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 69 6e 69 74 69 61 6c 69 7a 65 20 70 6f 69 6e 74 65 72 20   ┆ut_comment(' initialize pointer ┆
0x06e8e0…06e900             6f 62 6a 65 63 74 20 27 29 3b 0a 69 66 20 68 65 61 70 5f 69 6e 69 74 20 74 68 65 6e 0a 62 65 67   ┆object '); if heap_init then beg┆
0x06e900…06e920             69 6e 20 28 2a 20 70 75 74 20 6c 61 62 65 6c 20 66 6f 72 20 6e 69 6c 20 74 65 73 74 20 69 6e 64   ┆in (* put label for nil test ind┆
0x06e920…06e940             69 63 61 74 69 6f 6e 20 6e 6f 20 6d 65 6d 6f 72 79 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f   ┆ication no memory *) out_op_id(o┆
0x06e940…06e960             70 5f 6a 6d 70 72 77 2c 20 69 64 5f 65 6e 64 5f 6e 69 6c 5f 74 65 73 74 29 3b 0a 6f 75 74 5f 6c   ┆p_jmprw, id_end_nil_test); out_l┆
0x06e960…06e980             61 62 65 6c 28 69 64 5f 6e 69 6c 5f 65 6c 65 6d 65 6e 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆abel(id_nil_element); out_op_int┆
0x06e980…06e9a0             28 6f 70 5f 73 74 6e 68 62 2c 20 34 29 3b 20 28 2a 20 6e 6f 20 63 6f 6e 74 65 78 74 20 65 76 61   ┆(op_stnhb, 4); (* no context eva┆
0x06e9a0…06e9c0             6c 20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 65 6e 64 5f 6e 69   ┆l *) out_nl; out_label(id_end_ni┆
0x06e9c0…06e9e0             6c 5f 74 65 73 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 29   ┆l_test); out_nl; out_token(zend)┆
0x06e9e0…06ea00             3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 70 6f 69 6e 74 65 72 20 2a 29 0a 0a 73 65 6d 5f 74   ┆; end; end; (* pointer *)  sem_t┆
0x06ea00…06ea20 (29, 1, 1)  79 70 3a 20 62 65 67 69 6e 0a 69 66 20 6b 69 6e 64 3d 31 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f   ┆yp: begin if kind=1 then out_op_┆
0x06ea20…06ea40             69 6e 74 28 6f 70 5f 72 65 61 6c 64 2c 20 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 69 66 20 6f 66   ┆int(op_reald, offset) else if of┆
0x06ea40…06ea60             66 73 65 74 3c 3e 30 20 74 68 65 6e 20 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73   ┆fset<>0 then  out_op_int(op_reas┆
0x06ea60…06ea80             64 2c 20 6f 66 66 73 65 74 29 3b 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75   ┆d, offset); code_call_proc(sys_u┆
0x06ea80…06eaa0             73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 69 6e 69 74 73 65 6d 5f 5f 72   ┆se, ext_lookup(key, '_initsem__r┆
0x06eaa0…06eac0             63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 34 2c 20 30 29 3b   ┆c'), key, const_niv_0, 0, 4, 0);┆
0x06eac0…06eae0             0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 69 6e 69 74 69 61 6c 69 7a 65 20 73 65 6d 61 70 68   ┆ out_comment(' initialize semaph┆
0x06eae0…06eb00             6f 72 65 20 6f 62 6a 65 63 74 20 27 29 3b 0a 65 6e 64 3b 0a 0a 72 65 66 5f 74 79 70 3a 0a 62 65   ┆ore object '); end;  ref_typ: be┆
0x06eb00…06eb20             67 69 6e 0a 69 66 20 6b 69 6e 64 3d 31 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70   ┆gin if kind=1 then out_op_int(op┆
0x06eb20…06eb40             5f 72 65 61 6c 64 2c 20 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 69 66 20 6f 66 66 73 65 74 3c 3e   ┆_reald, offset) else if offset<>┆
0x06eb40…06eb60             30 20 74 68 65 6e 20 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c 20 6f 66 66   ┆0 then  out_op_int(op_reasd, off┆
0x06eb60…06eb80             73 65 74 29 3b 0a 69 66 20 68 65 61 70 5f 69 6e 69 74 20 74 68 65 6e 0a 63 6f 64 65 5f 63 61 6c   ┆set); if heap_init then code_cal┆
0x06eb80…06eba0             6c 5f 70 72 6f 63 28 73 79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20   ┆l_proc(sys_use, ext_lookup(key, ┆
0x06eba0…06ebc0             27 5f 68 65 61 70 72 65 66 5f 5f 72 63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f   ┆'_heapref__rc'), key, const_niv_┆
0x06ebc0…06ebe0             30 2c 20 30 2c 20 34 2c 20 30 29 0a 65 6c 73 65 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28   ┆0, 0, 4, 0) else code_call_proc(┆
0x06ebe0…06ec00             73 79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 69 6e 69 74 72   ┆sys_use, ext_lookup(key, '_initr┆
0x06ec00…06ec20 (29, 1, 2)  65 66 5f 5f 72 63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 34   ┆ef__rc'), key, const_niv_0, 0, 4┆
0x06ec20…06ec40             2c 20 30 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 69 6e 69 74 69 61 6c 69 7a 65 20 72   ┆, 0); out_comment(' initialize r┆
0x06ec40…06ec60             65 66 65 72 65 6e 63 65 20 6f 62 6a 65 63 74 20 27 29 3b 0a 72 65 66 5f 63 6f 75 6e 74 3a 3d 20   ┆eference object '); ref_count:= ┆
0x06ec60…06ec80             31 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72   ┆1; end; else error(pass4code_err┆
0x06ec80…06eca0             6f 72 29 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 63 6f 64 65 5f 69 6e 69 74 76 61 72   ┆or); end;  end  (*  code_initvar┆
0x06eca0…06ecc0             20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 73 74 61 74 5f 74 6f   ┆  *);    procedure  code_stat_to┆
0x06ecc0…06ece0             5f 64 79 6e 28 20 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 62 65 67 69 6e 0a 0a   ┆_dyn( size : integer );  begin  ┆
0x06ece0…06ed00             28 2a 20 20 74 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 6d 6f 76 65 73 20 28 20 63 6f 6e 63 65   ┆(*  this procedure moves ( conce┆
0x06ed00…06ed20             70 74 75 61 6c 6c 79 20 21 21 20 29 20 61 20 62 6c 6f 63 6b 20 6f 66 20 27 73 69 7a 65 27 20 62   ┆ptually !! ) a block of 'size' b┆
0x06ed20…06ed40             79 74 65 73 0a 28 20 77 68 69 63 68 20 6d 75 73 74 20 62 65 20 6f 6e 65 20 6f 72 20 6d 6f 72 65   ┆ytes ( which must be one or more┆
0x06ed40…06ed60             20 73 65 74 73 20 29 20 66 72 6f 6d 20 74 68 65 20 73 74 61 74 69 63 20 70 61 72 74 20 6f 66 20   ┆ sets ) from the static part of ┆
0x06ed60…06ed80             74 68 65 20 0a 65 76 61 6c 75 61 74 69 6f 6e 20 73 74 61 63 6b 2c 20 74 6f 20 74 68 65 20 64 79   ┆the  evaluation stack, to the dy┆
0x06ed80…06eda0             6e 61 6d 69 63 20 70 61 72 74 2e 20 20 2a 29 0a 0a 63 6f 6e 74 65 78 74 5f 65 76 61 6c 28 20 2d   ┆namic part.  *)  context_eval( -┆
0x06eda0…06edc0             73 69 7a 65 20 29 0a 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 64   ┆size )  end;   procedure  code_d┆
0x06edc0…06ede0             79 6e 5f 74 6f 5f 73 74 61 74 28 20 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 62   ┆yn_to_stat( size : integer );  b┆
0x06ede0…06ee00             65 67 69 6e 0a 0a 28 2a 20 74 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 68 61 73 20 74 68 65 20   ┆egin  (* this procedure has the ┆
0x06ee00…06ee20 (29, 1, 3)  6f 70 70 6f 73 69 74 65 20 65 66 66 65 63 74 20 61 73 20 27 63 6f 64 65 5f 73 74 61 74 5f 74 6f   ┆opposite effect as 'code_stat_to┆
0x06ee20…06ee40             5f 64 79 6e 27 20 2a 29 0a 0a 63 6f 6e 74 65 78 74 5f 65 76 61 6c 28 20 73 69 7a 65 20 29 0a 0a   ┆_dyn' *)  context_eval( size )  ┆
0x06ee40…06ee60             65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 5f 65 78 63 65 70 74 69 6f 6e 3b 0a   ┆end;  procedure code_exception; ┆
0x06ee60…06ee80             63 6f 6e 73 74 0a 68 61 72 64 5f 73 69 7a 65 5f 6d 61 78 20 3d 20 32 30 3b 0a 0a 76 61 72 0a 6b   ┆const hard_size_max = 20;  var k┆
0x06ee80…06eea0             65 79 2c 20 69 2c 20 6a 2c 20 70 2c 20 72 2c 20 77 2c 20 68 61 72 64 5f 73 69 7a 65 2c 6e 75 6d   ┆ey, i, j, p, r, w, hard_size,num┆
0x06eea0…06eec0             62 65 72 5f 6f 66 5f 65 6c 65 6d 2c 6f 6c 64 5f 68 77 5f 73 69 7a 65 20 3a 20 69 6e 74 65 67 65   ┆ber_of_elem,old_hw_size : intege┆
0x06eec0…06eee0             72 3b 0a 68 61 72 64 5f 73 65 74 20 3a 20 61 72 72 61 79 20 5b 20 30 20 2e 2e 20 68 61 72 64 5f   ┆r; hard_set : array [ 0 .. hard_┆
0x06eee0…06ef00             73 69 7a 65 5f 6d 61 78 20 5d 20 6f 66 20 69 6e 74 65 67 65 72 3b 0a 63 61 6c 6c 6b 69 6e 64 20   ┆size_max ] of integer; callkind ┆
0x06ef00…06ef20             3a 20 63 61 6c 6c 6d 6f 64 65 73 3b 0a 0a 62 65 67 69 6e 0a 0a 69 66 28 20 65 78 63 5f 64 65 73   ┆: callmodes;  begin  if( exc_des┆
0x06ef20…06ef40             63 72 2e 73 74 61 74 65 20 3d 20 31 20 29 20 61 6e 64 20 28 20 65 70 69 6c 6f 67 5f 79 65 73 20   ┆cr.state = 1 ) and ( epilog_yes ┆
0x06ef40…06ef60             29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 6c 64 5f 68 77 5f 73 69 7a 65 20 3a 3d 20 68 77 5f 73   ┆) then begin old_hw_size := hw_s┆
0x06ef60…06ef80             74 61 63 6b 5f 73 69 7a 65 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 74 73 74 63 29 3b   ┆tack_size; out_opcode(op_ststc);┆
0x06ef80…06efa0             0a 69 66 20 6d 65 61 73 75 72 65 6d 65 6e 74 5f 79 65 73 20 74 68 65 6e 0a 63 6f 64 65 5f 63 61   ┆ if measurement_yes then code_ca┆
0x06efa0…06efc0             6c 6c 5f 70 72 6f 63 28 20 73 79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 20 6b 65   ┆ll_proc( sys_use, ext_lookup( ke┆
0x06efc0…06efe0             79 2c 20 27 74 72 61 70 5f 63 6f 64 65 5f 72 63 27 20 29 2c 20 0a 20 20 6b 65 79 2c 20 63 6f 6e   ┆y, 'trap_code_rc' ),    key, con┆
0x06efe0…06f000             73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 30 20 2c 30 29 3b 0a 0a 28 2a 64 75 6d 70 20 74 68 65 20   ┆st_niv_0, 0, 0 ,0);  (*dump the ┆
0x06f000…06f020 (29, 1, 4)  68 77 5f 73 74 61 63 6b 20 61 6e 64 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20 68 77 73 74 61 63   ┆hw_stack and remember the hwstac┆
0x06f020…06f040             6b 73 69 7a 65 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 61 61 64 2c 69 64 5f 65   ┆ksize*)  out_op_id(op_reaad,id_e┆
0x06f040…06f060             78 69 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 73 74 76 67 61 2c 69 64 5f 65 78 70 6f   ┆xit); out_op_id(op_stvga,id_expo┆
0x06f060…06f080             69 6e 74 29 3b 0a 0a 28 2a 6f 75 74 70 75 74 20 63 6f 64 65 20 74 6f 20 64 65 63 72 65 61 73 65   ┆int);  (*output code to decrease┆
0x06f080…06f0a0             20 6c 6d 20 28 69 6e 20 74 68 65 20 72 65 67 2e 20 73 65 74 29 20 62 79 20 65 78 69 74 61 70 70   ┆ lm (in the reg. set) by exitapp┆
0x06f0a0…06f0c0             65 74 69 74 65 20 2a 29 0a 0a 63 6f 64 65 5f 73 65 74 5f 6d 61 78 73 74 61 63 6b 28 69 64 5f 65   ┆etite *)  code_set_maxstack(id_e┆
0x06f0c0…06f0e0             78 69 74 61 70 70 65 74 69 74 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 76 67 77   ┆xitappetite); out_op_id(op_revgw┆
0x06f0e0…06f100             2c 69 64 5f 65 78 63 6f 64 65 29 3b 0a 0a 77 69 74 68 20 65 78 63 5f 64 65 73 63 72 20 64 6f 0a   ┆,id_excode);  with exc_descr do ┆
0x06f100…06f120             62 65 67 69 6e 0a 69 66 20 69 6e 74 65 72 6e 61 6c 20 74 68 65 6e 0a 63 61 6c 6c 6b 69 6e 64 20   ┆begin if internal then callkind ┆
0x06f120…06f140             3a 3d 20 69 6e 74 5f 63 61 6c 6c 0a 65 6c 73 65 0a 63 61 6c 6c 6b 69 6e 64 20 3a 3d 20 67 65 74   ┆:= int_call else callkind := get┆
0x06f140…06f160             6b 69 6e 64 20 28 6b 65 79 29 3b 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 20 28 67 65 6e 65   ┆kind (key); code_call_proc (gene┆
0x06f160…06f180             72 61 6c 5f 75 73 65 2c 20 63 61 6c 6c 6b 69 6e 64 2c 20 6b 65 79 2c 20 63 2e 6e 69 76 2c 20 6c   ┆ral_use, callkind, key, c.niv, l┆
0x06f180…06f1a0             69 78 2c 20 32 2c 30 29 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 20 63 61 6c 63 75 6c 61 74 65 20 3a 20   ┆ix, 2,0); end;  (*  calculate : ┆
0x06f1a0…06f1c0             20 68 61 72 64 5f 73 65 74 5b 20 30 20 2e 2e 20 68 61 72 64 5f 73 69 7a 65 20 5d 20 20 20 20 20   ┆ hard_set[ 0 .. hard_size ]     ┆
0x06f1c0…06f1e0             20 20 2a 29 0a 0a 69 66 20 28 20 63 5f 65 78 63 5f 6d 61 78 20 64 69 76 20 31 36 20 29 20 3e 20   ┆  *)  if ( c_exc_max div 16 ) > ┆
0x06f1e0…06f200             68 61 72 64 5f 73 69 7a 65 5f 6d 61 78 20 74 68 65 6e 0a 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65   ┆hard_size_max then error(compile┆
0x06f200…06f220 (29, 1, 5)  72 5f 65 72 72 6f 72 29 3b 0a 0a 66 6f 72 20 69 20 3a 3d 20 30 20 74 6f 20 68 61 72 64 5f 73 69   ┆r_error);  for i := 0 to hard_si┆
0x06f220…06f240             7a 65 5f 6d 61 78 20 64 6f 20 20 68 61 72 64 5f 73 65 74 5b 20 69 20 5d 20 3a 3d 20 30 3b 0a 0a   ┆ze_max do  hard_set[ i ] := 0;  ┆
0x06f240…06f260             66 6f 72 20 69 20 3a 3d 20 30 20 74 6f 20 63 5f 65 78 63 5f 6d 61 78 20 64 6f 0a 69 66 20 69 20   ┆for i := 0 to c_exc_max do if i ┆
0x06f260…06f280             69 6e 20 65 78 63 5f 68 61 72 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 77 20 3a 3d 20 69 20 64   ┆in exc_hard then begin  w := i d┆
0x06f280…06f2a0             69 76 20 31 36 3b 20 20 70 20 3a 3d 20 69 20 6d 6f 64 20 31 36 3b 0a 72 20 3a 3d 20 31 3b 20 20   ┆iv 16;  p := i mod 16; r := 1;  ┆
0x06f2a0…06f2c0             66 6f 72 20 6a 20 3a 3d 20 70 20 74 6f 20 31 34 20 64 6f 20 72 20 3a 3d 20 72 2a 32 3b 0a 68 61   ┆for j := p to 14 do r := r*2; ha┆
0x06f2c0…06f2e0             72 64 5f 73 65 74 5b 20 77 20 5d 20 3a 3d 20 68 61 72 64 5f 73 65 74 5b 20 77 20 5d 20 2b 20 72   ┆rd_set[ w ] := hard_set[ w ] + r┆
0x06f2e0…06f300             0a 0a 65 6e 64 3b 0a 0a 68 61 72 64 5f 73 69 7a 65 20 3a 3d 20 68 61 72 64 5f 73 69 7a 65 5f 6d   ┆  end;  hard_size := hard_size_m┆
0x06f300…06f320             61 78 3b 0a 77 68 69 6c 65 20 28 20 68 61 72 64 5f 73 65 74 5b 20 68 61 72 64 5f 73 69 7a 65 20   ┆ax; while ( hard_set[ hard_size ┆
0x06f320…06f340             5d 20 3d 20 30 20 29 20 61 6e 64 20 28 20 68 61 72 64 5f 73 69 7a 65 20 3e 20 30 20 29 20 64 6f   ┆] = 0 ) and ( hard_size > 0 ) do┆
0x06f340…06f360             0a 68 61 72 64 5f 73 69 7a 65 20 3a 3d 20 68 61 72 64 5f 73 69 7a 65 20 2d 20 31 3b 0a 6e 75 6d   ┆ hard_size := hard_size - 1; num┆
0x06f360…06f380             62 65 72 5f 6f 66 5f 65 6c 65 6d 20 3a 3d 20 68 61 72 64 5f 73 69 7a 65 20 2b 20 31 3b 0a 0a 6f   ┆ber_of_elem := hard_size + 1;  o┆
0x06f380…06f3a0             75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69   ┆ut_nl;  out_nl; out_token (zbegi┆
0x06f3a0…06f3c0             6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 68 61 72 64 73 65 74 29 3b 0a 6f 75 74 5f 74   ┆n); out_p_id (id_hardset); out_t┆
0x06f3c0…06f3e0             6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 0a 28 2a 63 6f 64 65   ┆oken (zendlist); out_nl;  (*code┆
0x06f3e0…06f400             20 66 6f 72 20 74 65 73 74 69 6e 67 20 69 66 20 69 74 20 77 61 73 20 61 20 68 61 72 64 20 65 78   ┆ for testing if it was a hard ex┆
0x06f400…06f420 (29, 1, 6)  65 63 70 74 69 6f 6e 20 6f 72 20 6e 6f 74 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72   ┆ecption or not *) out_op_id(op_r┆
0x06f420…06f440             65 76 67 77 2c 69 64 5f 65 78 63 6f 64 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65   ┆evgw,id_excode); out_op_id(op_re┆
0x06f440…06f460             61 61 64 2c 69 64 5f 68 61 72 64 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72   ┆aad,id_hardset); out_op_int(op_r┆
0x06f460…06f480             65 63 68 77 2c 77 6f 72 64 5f 6c 65 6e 67 74 68 20 2a 20 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65   ┆echw,word_length * number_of_ele┆
0x06f480…06f4a0             6d 20 2b 20 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 28 2a 6d 6f 76 65 20 68 61 72 64 73 65 74   ┆m + word_length); (*move hardset┆
0x06f4a0…06f4c0             20 74 6f 20 74 68 65 20 73 74 61 63 6b 2a 29 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f   ┆ to the stack*) out_specopcode(o┆
0x06f4c0…06f4e0             70 5f 72 65 76 73 6d 2c 77 6f 72 64 5f 6c 65 6e 67 74 68 20 2a 20 6e 75 6d 62 65 72 5f 6f 66 5f   ┆p_revsm,word_length * number_of_┆
0x06f4e0…06f500             65 6c 65 6d 20 2b 20 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 28 2a 74 65 73 74 20 6d 65 6d 62   ┆elem + word_length); (*test memb┆
0x06f500…06f520             65 72 73 68 69 70 20 6f 66 20 68 61 72 64 73 65 74 2a 29 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f   ┆ership of hardset*) out_specopco┆
0x06f520…06f540             64 65 28 6f 70 5f 73 65 74 74 6d 2c 2d 28 77 6f 72 64 5f 6c 65 6e 67 74 68 20 2a 20 6e 75 6d 62   ┆de(op_settm,-(word_length * numb┆
0x06f540…06f560             65 72 5f 6f 66 5f 65 6c 65 6d 20 2b 20 77 6f 72 64 5f 6c 65 6e 67 74 68 29 29 3b 0a 0a 28 2a 6a   ┆er_of_elem + word_length));  (*j┆
0x06f560…06f580             75 6d 70 20 74 6f 20 65 78 69 74 20 70 6f 69 6e 74 20 69 66 20 68 61 72 64 20 65 78 63 65 70 74   ┆ump to exit point if hard except┆
0x06f580…06f5a0             69 6f 6e 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 7a 67 74 2c 69 64 5f 65 78 69   ┆ion *) out_op_id(op_jmzgt,id_exi┆
0x06f5a0…06f5c0             74 29 3b 0a 0a 28 2a 69 66 20 6e 6f 74 20 68 61 72 64 20 65 78 63 65 70 74 69 6f 6e 20 74 68 65   ┆t);  (*if not hard exception the┆
0x06f5c0…06f5e0             6e 2a 29 0a 28 2a 72 65 65 73 74 61 62 6c 69 73 68 20 6d 61 78 73 74 61 63 6b 2a 29 0a 63 6f 64   ┆n*) (*reestablish maxstack*) cod┆
0x06f5e0…06f600             65 5f 73 65 74 5f 6d 61 78 73 74 61 63 6b 28 69 64 5f 62 6f 6e 61 70 70 65 74 69 74 65 29 3b 0a   ┆e_set_maxstack(id_bonappetite); ┆
0x06f600…06f620 (29, 1, 7)  28 2a 72 65 73 74 6f 72 65 20 65 78 63 65 70 74 69 6f 6e 70 6f 69 6e 74 2a 29 0a 6f 75 74 5f 6f   ┆(*restore exceptionpoint*) out_o┆
0x06f620…06f640             70 5f 69 64 28 6f 70 5f 72 65 61 61 64 2c 69 64 5f 65 78 63 65 70 74 69 6f 6e 29 3b 0a 6f 75 74   ┆p_id(op_reaad,id_exception); out┆
0x06f640…06f660             5f 6f 70 5f 69 64 28 6f 70 5f 73 74 76 67 61 2c 69 64 5f 65 78 70 6f 69 6e 74 29 3b 0a 28 2a 72   ┆_op_id(op_stvga,id_expoint); (*r┆
0x06f660…06f680             65 65 73 74 61 62 6c 69 73 68 20 68 77 5f 73 74 61 63 6b 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆eestablish hw_stack*) out_opcode┆
0x06f680…06f6a0             28 6f 70 5f 72 65 73 74 63 29 3b 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 6f 6c 64   ┆(op_restc); hw_stack_size := old┆
0x06f6a0…06f6c0             5f 68 77 5f 73 69 7a 65 3b 0a 28 2a 6a 75 6d 70 20 74 6f 20 70 6f 69 6e 74 20 77 68 65 72 65 20   ┆_hw_size; (*jump to point where ┆
0x06f6c0…06f6e0             65 78 63 65 70 74 69 6f 6e 20 6f 63 63 75 72 65 64 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70   ┆exception occured*) out_op_id(op┆
0x06f6e0…06f700             5f 6a 6d 70 67 61 2c 69 64 5f 65 78 69 63 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 6e   ┆_jmpga,id_exic);  out_nl;  out_n┆
0x06f700…06f720             6c 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 68 61 72 64 73 65 74 20 29 3b 0a 6f 75 74   ┆l;  out_label( id_hardset ); out┆
0x06f720…06f740             5f 74 6f 6b 65 6e 28 7a 63 6f 6e 73 74 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 6e 75 6d 62   ┆_token(zconst); out_integer(numb┆
0x06f740…06f760             65 72 5f 6f 66 5f 65 6c 65 6d 20 2a 20 77 6f 72 64 5f 6c 65 6e 67 74 68 20 2b 20 77 6f 72 64 5f   ┆er_of_elem * word_length + word_┆
0x06f760…06f780             6c 65 6e 67 74 68 29 3b 0a 0a 66 6f 72 20 69 20 3a 3d 20 30 20 74 6f 20 68 61 72 64 5f 73 69 7a   ┆length);  for i := 0 to hard_siz┆
0x06f780…06f7a0             65 20 64 6f 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 61 62 28 20 31 35 20 29   ┆e do begin out_nl; out_tab( 15 )┆
0x06f7a0…06f7c0             3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 68 61 72 64 5f 73 65 74 5b 20 69 20 5d 20 29 0a   ┆;  out_integer( hard_set[ i ] ) ┆
0x06f7c0…06f7e0             65 6e 64 3b 0a 28 2a 6f 75 74 70 75 74 20 73 69 7a 65 20 6f 66 20 68 61 72 64 73 65 74 2a 29 0a   ┆end; (*output size of hardset*) ┆
0x06f7e0…06f800             6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 61 62 28 31 35 29 3b 20 6f 75 74 5f 69 6e 74 65 67 65 72   ┆out_nl; out_tab(15); out_integer┆
0x06f800…06f820 (29, 1, 8)  28 77 6f 72 64 5f 6c 65 6e 67 74 68 2a 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 29 3b 0a 0a 6f   ┆(word_length*number_of_elem);  o┆
0x06f820…06f840             75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 20 20 28 2a 20 65 6e 64   ┆ut_nl; out_token (zend);  (* end┆
0x06f840…06f860             20 6f 66 20 63 6f 6e 73 74 20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28   ┆ of const *) out_nl; out_token (┆
0x06f860…06f880             7a 65 6e 64 29 3b 20 20 28 2a 20 65 6e 64 20 6f 66 20 62 6c 6f 63 6b 20 2a 29 0a 6f 75 74 5f 6e   ┆zend);  (* end of block *) out_n┆
0x06f880…06f8a0             6c 3b 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 69 66 20 65 70 69 6c 6f 67 5f 79   ┆l;  end  else begin  if epilog_y┆
0x06f8a0…06f8c0             65 73 20 74 68 65 6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 20   ┆es then error(pass4code_error); ┆
0x06f8c0…06f8e0             28 2a 20 65 78 63 65 70 74 69 6f 6e 6e 6f 74 20 64 65 66 69 6e 65 64 20 2a 29 3b 0a 0a 6f 75 74   ┆(* exceptionnot defined *);  out┆
0x06f8e0…06f900             5f 6f 70 5f 69 64 20 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 65 78 63 65 70 74 69 6f 6e 29 3b   ┆_op_id (op_jmprw, id_exception);┆
0x06f900…06f920             0a 0a 65 6e 64 0a 0a 65 6e 64 20 28 2a 20 63 6f 64 65 5f 65 78 63 65 70 74 69 6f 6e 20 20 2a 29   ┆  end  end (* code_exception  *)┆
0x06f920…06f940             3b 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 72 65 6d 6f 76 65 28 63 6f 75 6e 74 20 3a   ┆; procedure  code_remove(count :┆
0x06f940…06f960             20 69 6e 74 65 67 65 72 3b 20 64 79 6e 61 6d 69 63 73 20 3a 20 62 6f 6f 6c 65 61 6e 3b 20 74 79   ┆ integer; dynamics : boolean; ty┆
0x06f960…06f980             70 65 5f 6f 20 3a 20 69 6e 74 65 67 65 72 29 3b 0a 0a 76 61 72 0a 77 6f 72 6b 5f 73 69 7a 65 20   ┆pe_o : integer);  var work_size ┆
0x06f980…06f9a0             20 20 20 2c 0a 63 6f 6e 74 5f 68 77 5f 73 69 7a 65 20 2c 0a 72 65 70 5f 68 77 5f 73 69 7a 65 20   ┆   , cont_hw_size , rep_hw_size ┆
0x06f9a0…06f9c0             20 3a 20 69 6e 74 65 67 65 72 3b 0a 6a 75 6d 70 20 20 20 20 20 20 20 20 20 3a 20 6f 70 63 6f 64   ┆ : integer; jump         : opcod┆
0x06f9c0…06f9e0             65 3b 0a 0a 62 65 67 69 6e 0a 28 2a 20 69 66 20 6e 6f 74 20 64 79 6e 61 6d 69 63 73 20 74 68 65   ┆e;  begin (* if not dynamics the┆
0x06f9e0…06fa00             6e 0a 72 65 6d 6f 76 65 20 28 20 61 6e 64 20 63 68 65 63 6b 20 3d 20 4e 49 4c 20 29 20 27 63 6f   ┆n remove ( and check = NIL ) 'co┆
0x06fa00…06fa20 (29, 1, 9)  75 6e 74 27 20 76 61 72 69 61 62 6c 65 73 0a 66 72 6f 6d 20 74 68 65 20 63 68 61 69 6e 20 6f 66   ┆unt' variables from the chain of┆
0x06fa20…06fa40             20 73 68 61 64 6f 77 73 20 6f 72 20 72 65 66 65 72 65 6e 63 65 73 0a 65 6c 73 65 20 0a 72 65 6d   ┆ shadows or references else  rem┆
0x06fa40…06fa60             6f 76 65 20 61 6c 6c 20 73 68 61 64 6f 77 20 6f 72 20 72 65 66 65 72 65 6e 63 65 20 76 61 72 69   ┆ove all shadow or reference vari┆
0x06fa60…06fa80             61 62 6c 65 73 20 6f 66 20 6c 6f 63 61 6c 20 66 72 61 6d 65 20 66 72 6f 6d 20 74 68 65 20 63 68   ┆ables of local frame from the ch┆
0x06fa80…06faa0             61 69 6e 20 0a 2a 29 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67   ┆ain  *)  out_nl; out_token (zbeg┆
0x06faa0…06fac0             69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 20 28 69 64 5f 72 65 70 29 3b 0a 6f 75 74 5f 70 5f 69   ┆in); out_p_id  (id_rep); out_p_i┆
0x06fac0…06fae0             64 20 20 28 69 64 5f 63 6f 6e 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 20 28 69 64 5f 65 6e 64 72   ┆d  (id_cont); out_p_id  (id_endr┆
0x06fae0…06fb00             65 70 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 69 66 20 74 79   ┆ep); out_token (zendlist); if ty┆
0x06fb00…06fb20             70 65 5f 6f 20 3d 20 73 68 61 64 6f 77 5f 74 79 70 20 74 68 65 6e 0a 6f 75 74 5f 63 6f 6d 6d 65   ┆pe_o = shadow_typ then out_comme┆
0x06fb20…06fb40             6e 74 28 20 27 20 20 20 72 65 6d 6f 76 65 20 61 6e 64 20 63 68 65 63 6b 20 73 68 61 64 6f 77 20   ┆nt( '   remove and check shadow ┆
0x06fb40…06fb60             76 61 72 69 61 62 6c 65 73 2e 27 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20   ┆variables.' ) else out_comment( ┆
0x06fb60…06fb80             27 20 20 20 72 65 6d 6f 76 65 20 61 6e 64 20 63 68 65 63 6b 20 72 65 66 65 72 65 6e 63 65 20 76   ┆'   remove and check reference v┆
0x06fb80…06fba0             61 72 69 61 62 6c 65 73 2e 27 20 29 3b 0a 0a 69 66 20 64 79 6e 61 6d 69 63 73 20 74 68 65 6e 0a   ┆ariables.' );  if dynamics then ┆
0x06fba0…06fbc0             62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 72 65 61 6c 64 2c 20 2d 31 29 3b   ┆begin out_op_int (op_reald, -1);┆
0x06fbc0…06fbe0             0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27 20 67 65 74 20 6c 66 20 27 29 3b 0a 77 6f 72 6b 5f   ┆ out_comment (' get lf '); work_┆
0x06fbe0…06fc00             73 69 7a 65 20 3a 3d 20 36 3b 0a 6a 75 6d 70 20 20 20 20 20 20 3a 3d 20 6f 70 5f 6a 6d 70 72 77   ┆size := 6; jump      := op_jmprw┆
0x06fc00…06fc20 (29, 1, 10) 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 63 6f 75 6e 74 20 3e 20 31 20 74 68 65 6e 0a 62 65 67   ┆; end else if count > 1 then beg┆
0x06fc20…06fc40             69 6e 0a 77 6f 72 6b 5f 73 69 7a 65 20 3a 3d 20 32 3b 0a 6a 75 6d 70 20 20 20 20 20 20 3a 3d 20   ┆in work_size := 2; jump      := ┆
0x06fc40…06fc60             6f 70 5f 6a 6d 7a 6e 65 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 72 65 63 68 77 2c 20   ┆op_jmzne; out_op_int (op_rechw, ┆
0x06fc60…06fc80             63 6f 75 6e 74 29 3b 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 72 65 70 29   ┆count); end;  out_label (id_rep)┆
0x06fc80…06fca0             3b 0a 72 65 70 5f 68 77 5f 73 69 7a 65 20 3a 3d 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 3b 0a   ┆; rep_hw_size := hw_stack_size; ┆
0x06fca0…06fcc0             0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 68 61 64 6f 77 5f 74 79 70 20 74 68 65 6e 0a 6f 75 74   ┆ if type_o = shadow_typ then out┆
0x06fcc0…06fce0             5f 6f 70 5f 69 64 20 20 28 6f 70 5f 72 65 76 67 61 2c 20 69 64 5f 73 68 61 64 6f 77 63 68 61 69   ┆_op_id  (op_revga, id_shadowchai┆
0x06fce0…06fd00             6e 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 72 65 76 67 61 2c 20 69 64   ┆n) else out_op_id  (op_revga, id┆
0x06fd00…06fd20             5f 72 65 66 63 68 61 69 6e 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 20 6f 70 5f 72 65 76   ┆_refchain);  out_opcode ( op_rev┆
0x06fd20…06fd40             70 64 20 29 3b 0a 0a 69 66 20 64 79 6e 61 6d 69 63 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75   ┆pd );  if dynamics then begin ou┆
0x06fd40…06fd60             74 5f 6f 70 63 6f 64 65 20 20 28 6f 70 5f 72 65 61 78 64 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆t_opcode  (op_reaxd); out_op_int┆
0x06fd60…06fd80             20 20 28 6f 70 5f 72 65 76 73 77 2c 20 2d 39 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27   ┆  (op_revsw, -9); out_comment ('┆
0x06fd80…06fda0             20 70 75 73 68 20 6c 66 2e 64 69 73 70 20 27 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 20 28 6f   ┆ push lf.disp '); out_opcode  (o┆
0x06fda0…06fdc0             70 5f 75 6c 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 20 28 6f 70 5f 6a 6d 7a 6e 65 2c 20 69   ┆p_ult); out_op_id   (op_jmzne, i┆
0x06fdc0…06fde0             64 5f 65 6e 64 72 65 70 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 20 28 6f 70 5f 73 74 6e 68 62   ┆d_endrep); out_op_int  (op_stnhb┆
0x06fde0…06fe00             2c 20 32 29 3b 20 28 2a 20 6e 6f 20 63 6f 6e 74 65 78 74 20 65 76 61 6c 20 68 65 72 65 20 21 21   ┆, 2); (* no context eval here !!┆
0x06fe00…06fe20 (29, 1, 11) 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 20 28 6f 70 5f 72 65 76 70 64 29 3b 0a 65 6e 64 3b   ┆ *) out_opcode  (op_revpd); end;┆
0x06fe20…06fe40             0a 0a 28 2a 66 69 65 6c 64 20 64 65 73 63 72 69 70 74 6f 72 20 6f 6e 20 74 6f 70 20 6f 66 20 73   ┆  (*field descriptor on top of s┆
0x06fe40…06fe60             74 61 63 6b 2a 29 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 68 61 64 6f 77 5f 74 79 70 20 74 68   ┆tack*) if type_o = shadow_typ th┆
0x06fe60…06fe80             65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 72 65 63 68 77 2c 20 63 5f 73 68 61 64 6f   ┆en out_op_int (op_rechw, c_shado┆
0x06fe80…06fea0             77 5f 66 69 65 6c 64 5f 6e 69 6c 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70   ┆w_field_nil) else out_op_int (op┆
0x06fea0…06fec0             5f 72 65 63 68 77 2c 20 63 5f 72 65 66 5f 66 69 65 6c 64 5f 6e 69 6c 29 3b 0a 6f 75 74 5f 6f 70   ┆_rechw, c_ref_field_nil); out_op┆
0x06fec0…06fee0             63 6f 64 65 20 28 6f 70 5f 72 65 76 73 66 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f   ┆code (op_revsf); out_op_id  (op_┆
0x06fee0…06ff00             6a 6d 7a 6e 65 2c 20 69 64 5f 63 6f 6e 74 29 3b 0a 63 6f 6e 74 5f 68 77 5f 73 69 7a 65 20 3a 3d   ┆jmzne, id_cont); cont_hw_size :=┆
0x06ff00…06ff20             20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 3b 0a 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 68 61   ┆ hw_stack_size;  if type_o = sha┆
0x06ff20…06ff40             64 6f 77 5f 74 79 70 20 74 68 65 6e 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65 72 20 28 63   ┆dow_typ then code_exc_trigger (c┆
0x06ff40…06ff60             5f 65 78 63 5f 73 68 61 64 6f 77 29 0a 65 6c 73 65 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67   ┆_exc_shadow) else code_exc_trigg┆
0x06ff60…06ff80             65 72 20 28 63 5f 65 78 63 5f 72 65 66 29 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 63   ┆er (c_exc_ref);  out_label (id_c┆
0x06ff80…06ffa0             6f 6e 74 29 3b 0a 69 66 20 63 6f 6e 74 5f 68 77 5f 73 69 7a 65 20 3c 3e 20 68 77 5f 73 74 61 63   ┆ont); if cont_hw_size <> hw_stac┆
0x06ffa0…06ffc0             6b 5f 73 69 7a 65 20 74 68 65 6e 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 68 61 64 6f 77 5f 74   ┆k_size then if type_o = shadow_t┆
0x06ffc0…06ffe0             79 70 20 74 68 65 6e 0a 68 77 5f 73 74 61 63 6b 5f 65 72 72 6f 72 20 28 73 68 61 64 6f 77 5f 72   ┆yp then hw_stack_error (shadow_r┆
0x06ffe0…070000             65 6d 6f 76 61 6c 29 0a 65 6c 73 65 0a 68 77 5f 73 74 61 63 6b 5f 65 72 72 6f 72 20 28 72 65 66   ┆emoval) else hw_stack_error (ref┆
0x070000…070020 (29, 1, 12) 5f 72 65 6d 6f 76 61 6c 29 3b 0a 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 68 61 64 6f 77 5f 74   ┆_removal);  if type_o = shadow_t┆
0x070020…070040             79 70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 72 65 76   ┆yp then begin out_op_id  (op_rev┆
0x070040…070060             73 61 2c 20 69 64 5f 6f 73 68 61 64 6f 77 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f   ┆sa, id_oshadow); out_op_id  (op_┆
0x070060…070080             73 74 76 67 61 2c 20 69 64 5f 73 68 61 64 6f 77 63 68 61 69 6e 29 3b 0a 65 6e 64 0a 65 6c 73 65   ┆stvga, id_shadowchain); end else┆
0x070080…0700a0             0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 72 65 76 73 61 2c 20 69 64 5f   ┆ begin out_op_id  (op_revsa, id_┆
0x0700a0…0700c0             6f 72 65 66 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 73 74 76 67 61 2c 20 69 64 5f   ┆oref); out_op_id  (op_stvga, id_┆
0x0700c0…0700e0             72 65 66 63 68 61 69 6e 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6e 6f 74 20 64 79 6e 61 6d 69 63 73   ┆refchain); end;  if not dynamics┆
0x0700e0…070100             20 74 68 65 6e 0a 69 66 20 63 6f 75 6e 74 20 3e 20 31 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75   ┆ then if count > 1 then begin ou┆
0x070100…070120             74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 75 61 64 68 77 2c 20 2d 31 29 3b 0a 6f 75 74 5f 6f 70 63   ┆t_op_int (op_uadhw, -1); out_opc┆
0x070120…070140             6f 64 65 20 28 6f 70 5f 72 65 76 70 77 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 28 63 6f 75 6e 74 20   ┆ode (op_revpw); end;  if (count ┆
0x070140…070160             3e 20 31 29 20 6f 72 20 64 79 6e 61 6d 69 63 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 69 74 68   ┆> 1) or dynamics then begin with┆
0x070160…070180             20 6f 70 5f 74 61 62 6c 65 20 5b 6a 75 6d 70 5d 20 64 6f 0a 69 66 20 68 77 5f 73 74 61 63 6b 5f   ┆ op_table [jump] do if hw_stack_┆
0x070180…0701a0             73 69 7a 65 20 3c 3e 20 28 72 65 70 5f 68 77 5f 73 69 7a 65 20 2b 20 61 62 73 28 6f 70 61 70 70   ┆size <> (rep_hw_size + abs(opapp┆
0x0701a0…0701c0             65 74 69 74 65 29 29 20 74 68 65 6e 0a 6f 75 74 5f 72 65 73 74 61 28 72 65 70 5f 68 77 5f 73 69   ┆etite)) then out_resta(rep_hw_si┆
0x0701c0…0701e0             7a 65 20 2b 20 61 62 73 28 6f 70 61 70 70 65 74 69 74 65 29 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64   ┆ze + abs(opappetite)); out_op_id┆
0x0701e0…070200             20 28 6a 75 6d 70 2c 20 69 64 5f 72 65 70 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 65   ┆ (jump, id_rep); out_label (id_e┆
0x070200…070220 (29, 1, 13) 6e 64 72 65 70 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 20 28 6f 70 5f 73 74 6e 68 62   ┆ndrep); out_specopcode (op_stnhb┆
0x070220…070240             2c 20 2d 77 6f 72 6b 5f 73 69 7a 65 29 3b 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74   ┆, -work_size); end;  out_nl; out┆
0x070240…070260             5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 0a 65 6e 64 20 20 28 2a 20   ┆_token (zend); out_nl;  end  (* ┆
0x070260…070280             63 6f 64 65 5f 72 65 6d 6f 76 65 20 20 2a 29 3b 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20   ┆code_remove  *);     procedure  ┆
0x070280…0702a0             63 6f 64 65 5f 6c 69 6e 65 5f 74 61 62 5f 68 65 61 64 65 72 28 20 6e 61 6d 65 20 3a 20 69 64 65   ┆code_line_tab_header( name : ide┆
0x0702a0…0702c0             6e 74 69 66 69 65 72 20 29 3b 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 6e 61   ┆ntifier );  begin out_token (zna┆
0x0702c0…0702e0             6d 65 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 6e 61 6d 65 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75   ┆me); out_p_id (name); out_nl; ou┆
0x0702e0…070300             74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 63 6f 64 65 5f 6c   ┆t_token (zend);  end  (*  code_l┆
0x070300…070320             69 6e 65 5f 74 61 62 5f 68 65 61 64 65 72 20 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆ine_tab_header  *);   procedure ┆
0x070320…070340             20 73 74 61 74 5f 72 65 73 65 74 3b 0a 0a 76 61 72 0a 69 3a 20 61 64 64 72 5f 6b 69 6e 64 5f 74   ┆ stat_reset;  var i: addr_kind_t┆
0x070340…070360             79 70 65 3b 0a 6a 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 77 69 74 68 20 73   ┆ype; j : integer;  begin  with s┆
0x070360…070380             74 61 74 5f 61 63 63 2e 61 73 73 69 67 6e 20 64 6f 0a 62 65 67 69 6e 0a 0a 66 6f 72 20 69 20 3a   ┆tat_acc.assign do begin  for i :┆
0x070380…0703a0             3d 20 61 64 64 72 20 74 6f 20 70 61 63 6b 65 64 5f 61 72 72 20 64 6f 0a 66 6f 72 20 6a 20 3a 3d   ┆= addr to packed_arr do for j :=┆
0x0703a0…0703c0             20 30 20 74 6f 20 36 20 64 6f 20 20 6b 69 6e 64 5f 74 79 70 65 5b 20 69 2c 20 6a 20 5d 20 3a 3d   ┆ 0 to 6 do  kind_type[ i, j ] :=┆
0x0703c0…0703e0             20 30 3b 0a 0a 66 6f 72 20 6a 20 3a 3d 20 30 20 74 6f 20 31 35 20 64 6f 20 73 69 7a 65 5b 20 6a   ┆ 0;  for j := 0 to 15 do size[ j┆
0x0703e0…070400             20 5d 20 3a 3d 20 30 0a 0a 65 6e 64 3b 0a 74 72 61 70 5f 6e 72 5f 74 61 62 6c 65 20 3a 3d 20 6e   ┆ ] := 0  end; trap_nr_table := n┆
0x070400…070420 (29, 1, 14) 69 6c 3b 0a 0a 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 73 74 61 74 5f 70 72 69   ┆il;   end;   procedure  stat_pri┆
0x070420…070440             6e 74 3b 0a 0a 76 61 72 0a 69 3a 20 61 64 64 72 5f 6b 69 6e 64 5f 74 79 70 65 3b 0a 6a 20 3a 20   ┆nt;  var i: addr_kind_type; j : ┆
0x070440…070460             69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 77 72 69 74 65 6c 6e 3b 20 20 77 72 69 74 65   ┆integer;  begin  writeln;  write┆
0x070460…070480             6c 6e 3b 0a 77 72 69 74 65 6c 6e 28 20 27 20 20 20 73 74 61 74 69 73 74 69 63 73 20 66 72 6f 6d   ┆ln; writeln( '   statistics from┆
0x070480…0704a0             20 70 61 73 73 35 3a 20 27 20 29 3b 0a 77 72 69 74 65 6c 6e 3b 0a 0a 77 72 69 74 65 6c 6e 28 20   ┆ pass5: ' ); writeln;  writeln( ┆
0x0704a0…0704c0             27 20 20 20 20 20 61 73 73 69 67 6e 6d 65 6e 74 3a 20 27 20 29 3b 0a 77 72 69 74 65 6c 6e 3b 0a   ┆'     assignment: ' ); writeln; ┆
0x0704c0…0704e0             77 69 74 68 20 73 74 61 74 5f 61 63 63 2e 61 73 73 69 67 6e 20 64 6f 0a 62 65 67 69 6e 0a 0a 66   ┆with stat_acc.assign do begin  f┆
0x0704e0…070500             6f 72 20 69 20 3a 3d 61 64 64 72 20 74 6f 20 70 61 63 6b 65 64 5f 61 72 72 20 64 6f 0a 62 65 67   ┆or i :=addr to packed_arr do beg┆
0x070500…070520             69 6e 0a 66 6f 72 20 6a 20 3a 3d 20 30 20 74 6f 20 36 20 64 6f 20 77 72 69 74 65 28 20 6b 69 6e   ┆in for j := 0 to 6 do write( kin┆
0x070520…070540             64 5f 74 79 70 65 5b 20 69 2c 20 6a 20 5d 20 29 3b 0a 77 72 69 74 65 6c 6e 0a 65 6e 64 3b 0a 77   ┆d_type[ i, j ] ); writeln end; w┆
0x070540…070560             72 69 74 65 6c 6e 3b 0a 0a 66 6f 72 20 6a 20 3a 3d 20 30 20 74 6f 20 37 20 64 6f 20 77 72 69 74   ┆riteln;  for j := 0 to 7 do writ┆
0x070560…070580             65 28 20 73 69 7a 65 5b 20 6a 20 5d 20 29 3b 0a 77 72 69 74 65 6c 6e 3b 0a 66 6f 72 20 6a 20 3a   ┆e( size[ j ] ); writeln; for j :┆
0x070580…0705a0             3d 20 38 20 74 6f 20 31 35 20 64 6f 20 77 72 69 74 65 28 20 73 69 7a 65 5b 20 6a 20 5d 20 29 3b   ┆= 8 to 15 do write( size[ j ] );┆
0x0705a0…0705c0             0a 77 72 69 74 65 6c 6e 3b 0a 0a 65 6e 64 3b 0a 0a 77 72 69 74 65 6c 6e 0a 0a 65 6e 64 3b 0a 0a   ┆ writeln;  end;  writeln  end;  ┆
0x0705c0…0705e0             0a 0a 70 72 6f 63 65 64 75 72 65 20 20 73 74 61 74 5f 61 73 73 69 67 6e 28 20 6c 5f 76 20 3a 20   ┆  procedure  stat_assign( l_v : ┆
0x0705e0…070600             76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 20 6c 5f 74 79 70 65 2c 20 6c 5f 73 69 7a 65 20 3a 20   ┆varaddr_descr; l_type, l_size : ┆
0x070600…070620 (29, 1, 15) 69 6e 74 65 67 65 72 3b 0a 20 20 20 20 20 20 72 5f 76 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65   ┆integer;       r_v : varvalue_de┆
0x070620…070640             73 63 72 20 29 3b 0a 0a 76 61 72 0a 69 5f 6b 69 6e 64 20 3a 20 61 64 64 72 5f 6b 69 6e 64 5f 74   ┆scr );  var i_kind : addr_kind_t┆
0x070640…070660             79 70 65 3b 0a 69 5f 74 79 70 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 69   ┆ype; i_type : integer;  begin  i┆
0x070660…070680             66 20 73 74 61 74 61 63 63 5f 79 65 73 20 74 68 65 6e 0a 77 69 74 68 20 20 73 74 61 74 5f 61 63   ┆f statacc_yes then with  stat_ac┆
0x070680…0706a0             63 2e 61 73 73 69 67 6e 20 64 6f 0a 62 65 67 69 6e 0a 0a 69 5f 6b 69 6e 64 20 3a 3d 20 6c 5f 76   ┆c.assign do begin  i_kind := l_v┆
0x0706a0…0706c0             2e 6b 69 6e 64 3b 0a 0a 69 5f 74 79 70 65 20 3a 3d 20 6c 5f 74 79 70 65 3b 0a 69 66 20 28 20 69   ┆.kind;  i_type := l_type; if ( i┆
0x0706c0…0706e0             5f 74 79 70 65 20 3e 20 73 65 74 5f 74 79 70 20 29 20 6f 72 20 28 20 69 5f 74 79 70 65 20 3c 20   ┆_type > set_typ ) or ( i_type < ┆
0x0706e0…070700             30 20 29 20 74 68 65 6e 20 69 5f 74 79 70 65 20 3a 3d 20 30 3b 0a 0a 6b 69 6e 64 5f 74 79 70 65   ┆0 ) then i_type := 0;  kind_type┆
0x070700…070720             5b 20 69 5f 6b 69 6e 64 2c 20 69 5f 74 79 70 65 5d 20 3a 3d 20 6b 69 6e 64 5f 74 79 70 65 5b 20   ┆[ i_kind, i_type] := kind_type[ ┆
0x070720…070740             69 5f 6b 69 6e 64 2c 20 69 5f 74 79 70 65 20 5d 20 2b 20 31 3b 0a 0a 69 66 20 28 20 6c 5f 74 79   ┆i_kind, i_type ] + 1;  if ( l_ty┆
0x070740…070760             70 65 20 3d 20 61 64 64 72 5f 74 79 70 20 29 20 6f 72 20 28 20 6c 5f 74 79 70 65 20 3d 20 73 65   ┆pe = addr_typ ) or ( l_type = se┆
0x070760…070780             74 5f 74 79 70 20 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 66 20 28 20 6c 5f 73 69 7a 65 20   ┆t_typ ) then begin  if ( l_size ┆
0x070780…0707a0             3c 20 30 20 29 20 6f 72 20 28 20 6c 5f 73 69 7a 65 20 3e 20 31 35 20 29 20 74 68 65 6e 0a 73 69   ┆< 0 ) or ( l_size > 15 ) then si┆
0x0707a0…0707c0             7a 65 5b 20 30 20 5d 20 3a 3d 20 73 69 7a 65 5b 20 30 20 5d 20 2b 20 31 0a 65 6c 73 65 0a 73 69   ┆ze[ 0 ] := size[ 0 ] + 1 else si┆
0x0707c0…0707e0             7a 65 5b 20 6c 5f 73 69 7a 65 20 5d 20 3a 3d 20 73 69 7a 65 5b 20 6c 5f 73 69 7a 65 20 5d 20 2b   ┆ze[ l_size ] := size[ l_size ] +┆
0x0707e0…070800             20 31 0a 0a 65 6e 64 0a 0a 65 6e 64 0a 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 20   ┆ 1  end  end  end;  procedure   ┆
0x070800…070820 (30, 0, 1)  66 69 6e 64 5f 65 78 70 72 73 28 20 76 61 72 20 20 76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73   ┆find_exprs( var  v: varvalue_des┆
0x070820…070840             63 72 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 20 66 69 6e 64   ┆cr); forward;   procedure   find┆
0x070840…070860             5f 6f 70 65 72 61 6e 64 28 20 76 61 72 20 76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29   ┆_operand( var v: varvalue_descr)┆
0x070860…070880             3b 0a 66 6f 72 77 61 72 64 3b 0a 20 0a 20 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 66   ┆; forward;     procedure  find_f┆
0x070880…0708a0             75 6e 63 5f 63 61 6c 6c 28 20 76 61 72 20 76 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72   ┆unc_call( var v : varvalue_descr┆
0x0708a0…0708c0             29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 63 61   ┆); forward;   procedure  find_ca┆
0x0708c0…0708e0             6c 6c 28 20 76 61 72 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20   ┆ll( var size_of_function_result ┆
0x0708e0…070900             3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72   ┆: integer ); forward;   procedur┆
0x070900…070920             65 20 20 66 69 6e 64 5f 63 6f 6e 73 74 61 6e 74 73 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72   ┆e  find_constants; forward;   pr┆
0x070920…070940             6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 73 74 64 5f 63 61 6c 6c 28 76 61 72 20 76 3a 20 76 61   ┆ocedure  find_std_call(var v: va┆
0x070940…070960             72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63 65 64   ┆rvalue_descr); forward;   proced┆
0x070960…070980             75 72 65 20 20 66 69 6e 64 5f 61 72 67 6c 69 73 74 28 20 63 61 6c 6c 5f 6d 6f 64 65 20 3a 20 63   ┆ure  find_arglist( call_mode : c┆
0x070980…0709a0             61 6c 6c 6d 6f 64 65 73 3b 20 76 61 72 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72   ┆allmodes; var size_of_function_r┆
0x0709a0…0709c0             65 73 75 6c 74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 70 72 6f   ┆esult : integer ); forward;  pro┆
0x0709c0…0709e0             63 65 64 75 72 65 20 20 20 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 66 6f 72 77 61 72 64   ┆cedure   find_statement; forward┆
0x0709e0…070a00             3b 0a 70 72 6f 63 65 64 75 72 65 20 20 20 66 69 6e 64 5f 76 61 72 76 61 6c 75 65 28 20 76 61 72   ┆; procedure   find_varvalue( var┆
0x070a00…070a20 (30, 0, 2)  20 20 76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 70   ┆  v: varvalue_descr); forward; p┆
0x070a20…070a40             72 6f 63 65 64 75 72 65 20 20 20 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 61 72 20 20 76 3a   ┆rocedure   find_varaddr( var  v:┆
0x070a40…070a60             20 76 61 72 61 64 64 72 5f 64 65 73 63 72 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63   ┆ varaddr_descr); forward;   proc┆
0x070a60…070a80             65 64 75 72 65 20 66 69 6e 64 5f 69 6e 69 74 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63   ┆edure find_init; forward;   proc┆
0x070a80…070aa0             65 64 75 72 65 20 66 69 6e 64 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 28 20 76 61 72 20 73 69 7a   ┆edure find_processparam( var siz┆
0x070aa0…070ac0             65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3a 20 69 6e 74 65 67 65 72 20 29   ┆e_of_function_result : integer )┆
0x070ac0…070ae0             3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 20 66 69 6e 64 5f 61   ┆; forward;    procedure   find_a┆
0x070ae0…070b00             73 73 69 67 6e 3b 0a 0a 0a 76 61 72 20 20 20 20 6c 5f 76 20 20 2c 20 6c 5f 76 5f 73 74 61 74 2c   ┆ssign;   var    l_v  , l_v_stat,┆
0x070b00…070b20             20 74 65 6d 70 6c 5f 76 20 3a 20 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 20 20 20 20 20   ┆ templ_v :  varaddr_descr;      ┆
0x070b20…070b40             20 20 72 5f 76 20 20 3a 20 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 20 20 20 20 20 20   ┆  r_v  :  varvalue_descr;       ┆
0x070b40…070b60             20 6c 5f 74 79 70 65 2c 20 6c 5f 66 69 72 73 74 2c 20 6c 5f 6e 75 6d 62 65 72 2c 20 6c 5f 73 69   ┆ l_type, l_first, l_number, l_si┆
0x070b60…070b80             7a 65 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e   ┆ze  : integer;   begin get_token┆
0x070b80…070ba0             3b 0a 0a 20 20 20 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 6c 5f 76 29 3b 20 20 20 20 20 20 6c   ┆;     find_varaddr( l_v);      l┆
0x070ba0…070bc0             5f 76 5f 73 74 61 74 20 3a 3d 20 6c 5f 76 3b 20 20 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 6c   ┆_v_stat := l_v;   if token <> xl┆
0x070bc0…070be0             65 66 74 20 74 68 65 6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b   ┆eft then error(pass4code_error);┆
0x070be0…070c00             0a 0a 20 20 20 6c 5f 74 79 70 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 20 20 20 69   ┆     l_type := in_integer;     i┆
0x070c00…070c20 (30, 0, 3)  66 20 6c 5f 74 79 70 65 20 3d 20 66 69 65 6c 64 5f 74 79 70 20 74 68 65 6e 0a 20 20 20 62 65 67   ┆f l_type = field_typ then    beg┆
0x070c20…070c40             69 6e 0a 6c 5f 66 69 72 73 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 6c 5f 6e 75 6d   ┆in l_first := in_integer;  l_num┆
0x070c40…070c60             62 65 72 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 6c 5f 6e 75 6d 62 65 72 20 3d   ┆ber := in_integer; if l_number =┆
0x070c60…070c80             20 38 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 70 74 69 6d 69 7a 65 20 38 2d 62 69 74 20   ┆ 8 then begin (* optimize 8-bit ┆
0x070c80…070ca0             66 69 65 6c 64 73 20 61 73 20 62 79 74 65 73 20 2a 29 0a 69 66 20 6c 5f 66 69 72 73 74 20 3d 20   ┆fields as bytes *) if l_first = ┆
0x070ca0…070cc0             30 20 74 68 65 6e 0a 6c 5f 74 79 70 65 20 3a 3d 20 62 79 74 65 5f 74 79 70 20 20 20 28 2a 20 6c   ┆0 then l_type := byte_typ   (* l┆
0x070cc0…070ce0             65 66 74 20 62 79 74 65 2c 20 64 6f 6e 27 74 20 63 68 61 6e 67 65 20 6f 66 66 73 65 74 20 2a 29   ┆eft byte, don't change offset *)┆
0x070ce0…070d00             0a 65 6c 73 65 0a 69 66 20 6c 5f 66 69 72 73 74 20 3d 20 38 20 74 68 65 6e 0a 62 65 67 69 6e 20   ┆ else if l_first = 8 then begin ┆
0x070d00…070d20             28 2a 20 72 69 67 74 68 20 62 79 74 65 2c 20 61 64 64 20 6f 6e 65 20 74 6f 20 6f 66 66 73 65 74   ┆(* rigth byte, add one to offset┆
0x070d20…070d40             20 2a 29 0a 6c 5f 76 2e 6f 66 66 73 65 74 20 3a 3d 20 6c 5f 76 2e 6f 66 66 73 65 74 20 2b 20 31   ┆ *) l_v.offset := l_v.offset + 1┆
0x070d40…070d60             3b 0a 6c 5f 74 79 70 65 20 3a 3d 20 62 79 74 65 5f 74 79 70 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a   ┆; l_type := byte_typ; end; end; ┆
0x070d60…070d80             20 20 20 65 6e 64 0a 20 20 20 65 6c 73 65 0a 20 20 20 69 66 20 28 20 6c 5f 74 79 70 65 20 3d 20   ┆   end    else    if ( l_type = ┆
0x070d80…070da0             61 64 64 72 5f 74 79 70 20 29 20 20 6f 72 20 20 28 20 6c 5f 74 79 70 65 20 3d 20 73 65 74 5f 74   ┆addr_typ )  or  ( l_type = set_t┆
0x070da0…070dc0             79 70 20 29 20 74 68 65 6e 20 20 6c 5f 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 0a   ┆yp ) then  l_size := in_integer ┆
0x070dc0…070de0             65 6c 73 65 0a 69 66 20 6c 5f 74 79 70 65 20 3d 20 64 79 6e 5f 74 79 70 20 74 68 65 6e 0a 67 65   ┆else if l_type = dyn_typ then ge┆
0x070de0…070e00             74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 74 65 6d 70 6c 5f 76 20 29 3b 0a 0a 69 66 20 6c 5f 76   ┆t_niv_offset( templ_v );  if l_v┆
0x070e00…070e20 (30, 0, 4)  2e 6b 69 6e 64 20 3d 20 70 61 63 6b 65 64 5f 61 72 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75   ┆.kind = packed_arr then begin ou┆
0x070e20…070e40             74 5f 6f 70 63 6f 64 65 28 6f 70 5f 69 6e 74 70 61 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f   ┆t_opcode(op_intpa); out_opcode(o┆
0x070e40…070e60             70 5f 69 6e 70 64 76 29 3b 0a 65 6e 64 0a 65 6c 73 65 20 28 2a 6e 6f 74 20 70 61 63 6b 65 64 20   ┆p_inpdv); end else (*not packed ┆
0x070e60…070e80             61 72 72 61 79 2a 29 0a 69 66 20 6c 5f 74 79 70 65 20 3d 20 66 69 65 6c 64 5f 74 79 70 20 74 68   ┆array*) if l_type = field_typ th┆
0x070e80…070ea0             65 6e 0a 62 65 67 69 6e 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 28 6c 5f 76 2c 74 72 75 65 29 3b   ┆en begin load_address(l_v,true);┆
0x070ea0…070ec0             0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 6c 5f 66 69 72 73 74 2a 32 35 36   ┆ out_op_int(op_rechw,l_first*256┆
0x070ec0…070ee0             20 2b 20 6c 5f 66 69 72 73 74 20 2b 6c 5f 6e 75 6d 62 65 72 20 2d 20 31 29 3b 0a 65 6e 64 20 28   ┆ + l_first +l_number - 1); end (┆
0x070ee0…070f00             2a 66 69 65 6c 64 5f 74 79 70 2a 29 0a 65 6c 73 65 0a 69 66 20 28 6c 5f 74 79 70 65 20 20 3d 20   ┆*field_typ*) else if (l_type  = ┆
0x070f00…070f20             61 64 64 72 5f 74 79 70 29 20 6f 72 20 28 6c 5f 74 79 70 65 20 3d 20 20 73 65 74 5f 74 79 70 29   ┆addr_typ) or (l_type =  set_typ)┆
0x070f20…070f40             20 6f 72 0a 28 6c 5f 74 79 70 65 20 3d 20 64 79 6e 5f 74 79 70 29 20 6f 72 20 28 6c 5f 76 2e 61   ┆ or (l_type = dyn_typ) or (l_v.a┆
0x070f40…070f60             63 63 65 73 73 20 3d 20 20 69 5f 66 72 61 6d 65 29 20 74 68 65 6e 0a 6c 6f 61 64 5f 61 64 64 72   ┆ccess =  i_frame) then load_addr┆
0x070f60…070f80             65 73 73 28 6c 5f 76 2c 74 72 75 65 29 3b 0a 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64   ┆ess(l_v,true);   get_token; find┆
0x070f80…070fa0             5f 65 78 70 72 73 28 20 72 5f 76 29 3b 0a 0a 0a 28 2a 20 68 65 72 65 2c 20 74 65 73 74 73 20 63   ┆_exprs( r_v);   (* here, tests c┆
0x070fa0…070fc0             61 6e 20 62 65 20 69 6e 73 65 72 74 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 68 65 63 6b   ┆an be inserted in order to check┆
0x070fc0…070fe0             20 74 68 65 20 0a 63 6f 6e 73 69 73 74 65 6e 63 79 20 6f 66 20 20 22 72 5f 76 22 2c 20 22 6c 5f   ┆ the  consistency of  "r_v", "l_┆
0x070fe0…071000             76 22 20 61 6e 64 20 22 6c 5f 74 79 70 65 22 2e 20 2a 29 0a 0a 69 66 20 73 74 61 74 61 63 63 5f   ┆v" and "l_type". *)  if statacc_┆
0x071000…071020 (30, 0, 5)  79 65 73 20 74 68 65 6e 0a 73 74 61 74 5f 61 73 73 69 67 6e 28 20 6c 5f 76 5f 73 74 61 74 2c 20   ┆yes then stat_assign( l_v_stat, ┆
0x071020…071040             6c 5f 74 79 70 65 2c 20 6c 5f 73 69 7a 65 2c 20 72 5f 76 20 29 3b 20 20 0a 0a 73 6b 69 70 5f 74   ┆l_type, l_size, r_v );    skip_t┆
0x071040…071060             6f 6b 65 6e 20 28 78 61 73 73 69 67 6e 29 3b 0a 0a 20 20 20 63 61 73 65 20 6c 5f 76 2e 6b 69 6e   ┆oken (xassign);     case l_v.kin┆
0x071060…071080             64 20 6f 66 0a 61 64 64 72 3a 20 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 5b 63 6f 6e   ┆d of addr: out_op_int(op_stv[con┆
0x071080…0710a0             76 5f 66 72 61 6d 65 5b 6c 5f 76 2e 61 63 63 65 73 73 5d 2c 63 6f 6e 76 5f 74 79 70 65 5b 6c 5f   ┆v_frame[l_v.access],conv_type[l_┆
0x0710a0…0710c0             74 79 70 65 5d 5d 2c 6c 5f 76 2e 6f 66 66 73 65 74 29 3b 0a 0a 73 74 61 63 6b 5f 61 64 64 72 3a   ┆type]],l_v.offset);  stack_addr:┆
0x0710c0…0710e0             0a 20 20 20 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 69 66 20 6c 5f 74 79 70 65 20 3d 20 73 65 74   ┆    begin        if l_type = set┆
0x0710e0…071100             5f 74 79 70 20 74 68 65 6e 20 28 2a 20 73 65 74 20 2a 29 0a 20 20 20 20 20 20 62 65 67 69 6e 0a   ┆_typ then (* set *)       begin ┆
0x071100…071120             0a 69 66 20 72 5f 76 2e 6b 69 6e 64 20 3c 3e 20 31 20 74 68 65 6e 20 20 65 72 72 6f 72 28 70 61   ┆ if r_v.kind <> 1 then  error(pa┆
0x071120…071140             73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 69 66 20 72 5f 76 2e 73 69 7a 65 20 3c 3e 20   ┆ss4code_error);  if r_v.size <> ┆
0x071140…071160             28 20 6c 5f 73 69 7a 65 20 2b 20 32 20 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 66 20 72 5f   ┆( l_size + 2 ) then begin  if r_┆
0x071160…071180             76 2e 73 69 7a 65 20 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 63 6f 64 65 5f 73 74 61 74   ┆v.size > 0 then begin  code_stat┆
0x071180…0711a0             5f 74 6f 5f 64 79 6e 28 20 72 5f 76 2e 73 69 7a 65 20 29 3b 0a 0a 72 5f 76 2e 73 69 7a 65 20 3a   ┆_to_dyn( r_v.size );  r_v.size :┆
0x0711a0…0711c0             3d 20 30 0a 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20   ┆= 0  end;  out_opcode( op_rechw ┆
0x0711c0…0711e0             29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72   ┆); out_start_param;  out_integer┆
0x0711e0…071200             28 20 6c 5f 73 69 7a 65 20 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65   ┆( l_size ); out_specopcode(op_se┆
0x071200…071220 (30, 0, 6)  74 61 64 2c 6c 5f 73 69 7a 65 20 2b 20 32 20 29 3b 0a 0a 65 6e 64 3b 0a 6f 75 74 5f 73 70 65 63   ┆tad,l_size + 2 );  end; out_spec┆
0x071220…071240             6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 73 74 2c 2d 20 6c 5f 73 69 7a 65 29 3b 0a 0a 20 20 20 20   ┆opcode(op_setst,- l_size);      ┆
0x071240…071260             20 20 65 6e 64 20 20 28 2a 20 6c 5f 74 79 70 65 20 3d 20 73 65 74 5f 74 79 70 20 2a 29 0a 0a 20   ┆  end  (* l_type = set_typ *)   ┆
0x071260…071280             20 20 20 20 20 65 6c 73 65 0a 0a 20 20 20 20 20 20 69 66 20 6c 5f 74 79 70 65 20 3d 20 61 64 64   ┆     else        if l_type = add┆
0x071280…0712a0             72 5f 74 79 70 20 74 68 65 6e 20 28 2a 20 73 74 61 74 69 63 20 73 74 72 75 63 74 75 72 65 20 2a   ┆r_typ then (* static structure *┆
0x0712a0…0712c0             29 0a 20 20 20 20 20 20 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 20 20 20 6f 75 74 5f 6f 70 63 6f   ┆)       begin           out_opco┆
0x0712c0…0712e0             64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 20 20 20 20 20 20 20 20 20 6f 75 74 5f 73 74 61   ┆de( op_rechw );          out_sta┆
0x0712e0…071300             72 74 5f 70 61 72 61 6d 3b 20 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6c 5f 73 69 7a 65 20   ┆rt_param;   out_integer( l_size ┆
0x071300…071320             29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 6d 6f 76 65 67 29 0a 0a 20 20 20 20 20 20   ┆); out_opcode (op_moveg)        ┆
0x071320…071340             65 6e 64 20 20 28 2a 20 6c 5f 74 79 70 65 20 3d 20 61 64 64 72 5f 74 79 70 20 2a 29 0a 0a 65 6c   ┆end  (* l_type = addr_typ *)  el┆
0x071340…071360             73 65 0a 0a 69 66 20 6c 5f 74 79 70 65 20 3d 20 64 79 6e 5f 74 79 70 20 74 68 65 6e 0a 62 65 67   ┆se  if l_type = dyn_typ then beg┆
0x071360…071380             69 6e 20 28 2a 20 64 79 6e 61 6d 69 63 20 73 74 72 75 63 74 75 72 65 20 2a 29 0a 77 69 74 68 20   ┆in (* dynamic structure *) with ┆
0x071380…0713a0             74 65 6d 70 6c 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77   ┆templ_v do out_op_rev__(access,w┆
0x0713a0…0713c0             6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f   ┆ord_typ,c.niv-niv,offset); out_o┆
0x0713c0…0713e0             70 63 6f 64 65 28 20 6f 70 5f 6d 6f 76 65 67 20 29 3b 0a 65 6e 64 20 28 2a 20 6c 5f 74 79 70 65   ┆pcode( op_moveg ); end (* l_type┆
0x0713e0…071400             20 3d 20 64 79 6e 5f 74 79 70 20 2a 29 0a 0a 20 20 20 20 20 20 65 6c 73 65 0a 0a 20 20 20 20 20   ┆ = dyn_typ *)        else       ┆
0x071400…071420 (30, 0, 7)  20 62 65 67 69 6e 0a 28 2a 20 20 20 20 6c 5f 74 79 70 65 20 3d 20 62 79 74 65 2c 77 6f 72 64 2c   ┆ begin (*    l_type = byte,word,┆
0x071420…071440             66 69 65 6c 64 20 6f 72 20 64 6f 75 62 6c 65 20 20 20 20 2a 29 0a 69 66 20 6c 5f 74 79 70 65 20   ┆field or double    *) if l_type ┆
0x071440…071460             3c 3e 20 66 69 65 6c 64 5f 74 79 70 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f   ┆<> field_typ then out_op_int(op_┆
0x071460…071480             73 74 76 5b 73 2c 63 6f 6e 76 5f 74 79 70 65 5b 6c 5f 74 79 70 65 5d 5d 2c 6c 5f 76 2e 6f 66 66   ┆stv[s,conv_type[l_type]],l_v.off┆
0x071480…0714a0             73 65 74 29 0a 65 6c 73 65 20 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 74 76 73 66 29 3b   ┆set) else  out_opcode(op_stvsf);┆
0x0714a0…0714c0             0a 0a 20 20 20 20 20 20 65 6e 64 0a 0a 65 6e 64 3b 0a 0a 70 61 63 6b 65 64 5f 61 72 72 3a 0a 20   ┆        end  end;  packed_arr:  ┆
0x0714c0…0714e0             20 20 62 65 67 69 6e 0a 0a 69 66 28 20 72 5f 76 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20   ┆  begin  if( r_v.kind <> 1 ) or ┆
0x0714e0…071500             28 20 28 20 72 5f 76 2e 73 69 7a 65 20 3c 3e 20 30 20 29 20 61 6e 64 20 28 20 72 5f 76 2e 73 69   ┆( ( r_v.size <> 0 ) and ( r_v.si┆
0x071500…071520             7a 65 20 3c 3e 20 32 20 29 20 29 0a 20 20 20 20 20 20 20 20 20 74 68 65 6e 20 20 20 65 72 72 6f   ┆ze <> 2 ) )          then   erro┆
0x071520…071540             72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f   ┆r(pass4code_error); out_opcode(o┆
0x071540…071560             70 5f 73 74 76 73 66 29 3b 0a 0a 65 6e 64 3b 0a 0a 20 20 20 65 6e 64 20 20 28 2a 20 20 63 61 73   ┆p_stvsf);  end;     end  (*  cas┆
0x071560…071580             65 20 6c 5f 76 2e 6b 69 6e 64 20 6f 66 2e 2e 2e 20 20 2a 29 0a 0a 65 6e 64 20 20 28 2a 20 20 66   ┆e l_v.kind of...  *)  end  (*  f┆
0x071580…0715a0             69 6e 64 5f 61 73 73 69 67 6e 20 20 2a 29 3b 0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20   ┆ind_assign  *);      procedure  ┆
0x0715a0…0715c0             66 69 6e 64 5f 65 78 70 72 28 20 76 61 72 20 20 76 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73   ┆find_expr( var  v : varvalue_des┆
0x0715c0…0715e0             63 72 29 3b 0a 0a 63 6f 6e 73 74 0a 0a 6d 61 78 5f 76 5f 73 74 61 63 6b 20 3d 20 31 30 3b 0a 0a   ┆cr);  const  max_v_stack = 10;  ┆
0x0715e0…071600             76 61 72 0a 0a 28 2a 20 2e 2e 2e 2e 20 66 6f 72 20 74 68 65 20 53 74 61 63 6b 20 6d 6f 64 75 6c   ┆var  (* .... for the Stack modul┆
0x071600…071620 (30, 0, 8)  65 20 3a 20 20 20 20 2a 29 0a 0a 76 5f 73 74 61 63 6b 20 3a 20 61 72 72 61 79 20 5b 20 31 20 2e   ┆e :    *)  v_stack : array [ 1 .┆
0x071620…071640             2e 20 6d 61 78 5f 76 5f 73 74 61 63 6b 20 5d 20 6f 66 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63   ┆. max_v_stack ] of varvalue_desc┆
0x071640…071660             72 3b 0a 0a 74 6f 70 5f 76 5f 73 74 61 63 6b 2c 0a 73 74 61 74 65 5f 76 5f 73 74 61 63 6b 20 3a   ┆r;  top_v_stack, state_v_stack :┆
0x071660…071680             20 69 6e 74 65 67 65 72 3b 0a 0a 28 2a 20 2e 2e 2e 2e 20 66 6f 72 20 74 68 65 20 72 65 73 74 20   ┆ integer;  (* .... for the rest ┆
0x071680…0716a0             6f 66 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 20 3a 20 20 20 20 2a 29 0a 0a 76 5f 6f 31 2c 20   ┆of the procedure :    *)  v_o1, ┆
0x0716a0…0716c0             76 5f 6f 32 2c 20 76 5f 72 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 0a 65 6e 64   ┆v_o2, v_r : varvalue_descr;  end┆
0x0716c0…0716e0             5f 65 78 70 72 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6b 65 79 2c 0a 74 79 70 65 5f 6f 2c 20 63 6f   ┆_expr : boolean; key, type_o, co┆
0x0716e0…071700             6d 70 2c 20 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 74 65 6d 70 6c 61 74 65 5f 76 20   ┆mp, size : integer;  template_v ┆
0x071700…071720             3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 70 75   ┆: varaddr_descr;   procedure  pu┆
0x071720…071740             73 68 5f 76 5f 73 74 61 63 6b 28 20 76 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 20 29   ┆sh_v_stack( v : varvalue_descr )┆
0x071740…071760             3b 0a 0a 62 65 67 69 6e 0a 69 66 20 74 6f 70 5f 76 5f 73 74 61 63 6b 20 3e 3d 20 6d 61 78 5f 76   ┆;  begin if top_v_stack >= max_v┆
0x071760…071780             5f 73 74 61 63 6b 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 76 5f 73 74 61 63 6b 5f 73 69 7a 65 29   ┆_stack then error (v_stack_size)┆
0x071780…0717a0             0a 65 6c 73 65 0a 62 65 67 69 6e 0a 74 6f 70 5f 76 5f 73 74 61 63 6b 20 3a 3d 20 74 6f 70 5f 76   ┆ else begin top_v_stack := top_v┆
0x0717a0…0717c0             5f 73 74 61 63 6b 20 2b 20 31 3b 0a 76 5f 73 74 61 63 6b 5b 20 74 6f 70 5f 76 5f 73 74 61 63 6b   ┆_stack + 1; v_stack[ top_v_stack┆
0x0717c0…0717e0             20 5d 20 3a 3d 20 76 0a 65 6e 64 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 70 6f   ┆ ] := v end end;   procedure  po┆
0x0717e0…071800             70 5f 76 5f 73 74 61 63 6b 28 20 76 61 72 20 20 76 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73   ┆p_v_stack( var  v : varvalue_des┆
0x071800…071820 (30, 0, 9)  63 72 20 29 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 74 6f 70 5f 76 5f 73 74 61 63 6b 20 3c 3d 20 30   ┆cr );  begin if top_v_stack <= 0┆
0x071820…071840             20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 69 66 20   ┆ then error(compiler_error); if ┆
0x071840…071860             73 74 61 74 65 5f 76 5f 73 74 61 63 6b 20 3d 20 31 20 74 68 65 6e 0a 62 65 67 69 6e 0a 76 2e 6b   ┆state_v_stack = 1 then begin v.k┆
0x071860…071880             69 6e 64 20 3a 3d 20 30 3b 0a 76 2e 73 69 7a 65 20 3a 3d 20 30 0a 65 6e 64 0a 65 6c 73 65 0a 62   ┆ind := 0; v.size := 0 end else b┆
0x071880…0718a0             65 67 69 6e 0a 76 20 3a 3d 20 76 5f 73 74 61 63 6b 5b 20 74 6f 70 5f 76 5f 73 74 61 63 6b 20 5d   ┆egin v := v_stack[ top_v_stack ]┆
0x0718a0…0718c0             3b 0a 74 6f 70 5f 76 5f 73 74 61 63 6b 20 3a 3d 20 74 6f 70 5f 76 5f 73 74 61 63 6b 20 2d 20 31   ┆; top_v_stack := top_v_stack - 1┆
0x0718c0…0718e0             0a 65 6e 64 0a 65 6e 64 3b 0a 0a 0a 62 65 67 69 6e 0a 0a 0a 74 6f 70 5f 76 5f 73 74 61 63 6b 20   ┆ end end;   begin   top_v_stack ┆
0x0718e0…071900             20 20 3a 3d 20 30 3b 0a 73 74 61 74 65 5f 76 5f 73 74 61 63 6b 20 3a 3d 20 30 3b 0a 0a 65 6e 64   ┆  := 0; state_v_stack := 0;  end┆
0x071900…071920             5f 65 78 70 72 20 20 20 20 20 20 3a 3d 20 66 61 6c 73 65 3b 0a 0a 6f 70 65 72 61 6e 64 5f 73 69   ┆_expr      := false;  operand_si┆
0x071920…071940             74 75 61 74 69 6f 6e 20 3a 3d 20 62 65 66 6f 72 65 5f 6f 70 61 6e 64 73 3b 0a 69 6e 5f 6b 69 6e   ┆tuation := before_opands; in_kin┆
0x071940…071960             64 20 3a 3d 20 73 65 74 74 6d 3b 20 28 2a 69 6e 73 74 72 75 63 74 69 6f 6e 20 73 65 74 74 6d 20   ┆d := settm; (*instruction settm ┆
0x071960…071980             74 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 69 6e 20 69 73 20 6d 65 74 2a 29 0a 0a 72 65 70   ┆to be used when in is met*)  rep┆
0x071980…0719a0             65 61 74 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 78 63 6f 6e 73 74 2c 0a 78 6c 63 6f   ┆eat  case token of  xconst, xlco┆
0x0719a0…0719c0             6e 73 74 2c 0a 78 66 75 6e 63 63 61 6c 6c 2c 0a 78 65 78 74 66 75 6e 63 63 61 6c 6c 2c 0a 78 73   ┆nst, xfunccall, xextfunccall, xs┆
0x0719c0…0719e0             74 64 66 75 6e 63 63 61 6c 6c 2c 0a 78 70 72 6f 63 65 73 73 70 61 72 61 6d 2c 0a 78 73 65 74 63   ┆tdfunccall, xprocessparam, xsetc┆
0x0719e0…071a00             6f 6e 73 74 2c 0a 78 73 65 74 2c 0a 78 61 64 64 72 2c 0a 78 63 61 64 64 72 3a 0a 62 65 67 69 6e   ┆onst, xset, xaddr, xcaddr: begin┆
0x071a00…071a20 (30, 0, 10) 0a 0a 28 2a 20 20 20 74 68 65 20 6e 65 78 74 20 69 74 65 6d 20 6f 6e 20 69 6e 70 75 74 20 69 73   ┆  (*   the next item on input is┆
0x071a20…071a40             20 61 6e 20 6f 70 65 72 61 6e 64 2e 0a 20 20 20 20 20 66 69 6e 64 20 74 68 65 20 6f 70 65 72 61   ┆ an operand.      find the opera┆
0x071a40…071a60             6e 64 2c 20 61 6e 64 20 70 75 73 68 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 20 6f 6e 0a 20   ┆nd, and push the descriptor on  ┆
0x071a60…071a80             20 20 20 20 74 68 65 20 76 5f 73 74 61 63 6b 20 3a 0a 2a 29 0a 0a 69 66 20 6f 70 65 72 61 6e 64   ┆    the v_stack : *)  if operand┆
0x071a80…071aa0             5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 61 66 74 65 72 5f 73 68 6f 72 74 5f 63 6f 6e 73 74 20 74   ┆_situation = after_short_const t┆
0x071aa0…071ac0             68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 72 65 63 68 77 29 3b   ┆hen begin out_opcode (op_rechw);┆
0x071ac0…071ae0             0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28   ┆ out_start_param;  out_integer (┆
0x071ae0…071b00             76 5f 72 2e 76 61 6c 29 3b 0a 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3a 3d 20 61   ┆v_r.val); operand_situation := a┆
0x071b00…071b20             66 74 65 72 5f 6f 70 61 6e 64 73 3b 0a 65 6e 64 3b 0a 0a 66 69 6e 64 5f 6f 70 65 72 61 6e 64 20   ┆fter_opands; end;  find_operand ┆
0x071b20…071b40             28 76 5f 72 29 3b 0a 0a 69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 62   ┆(v_r);  if operand_situation = b┆
0x071b40…071b60             65 66 6f 72 65 5f 6f 70 61 6e 64 73 20 74 68 65 6e 0a 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74   ┆efore_opands then operand_situat┆
0x071b60…071b80             69 6f 6e 20 3a 3d 20 61 66 74 65 72 5f 6f 70 61 6e 64 73 3b 0a 0a 70 75 73 68 5f 76 5f 73 74 61   ┆ion := after_opands;  push_v_sta┆
0x071b80…071ba0             63 6b 28 20 76 5f 72 20 29 0a 65 6e 64 3b 0a 0a 28 2a 20 20 20 63 68 65 63 6b 20 74 68 65 20 6e   ┆ck( v_r ) end;  (*   check the n┆
0x071ba0…071bc0             65 78 74 20 69 74 65 6d 20 74 6f 20 73 65 65 20 69 66 20 69 74 20 69 73 20 61 6e 20 6f 70 65 72   ┆ext item to see if it is an oper┆
0x071bc0…071be0             61 74 6f 72 2e 0a 20 20 20 20 20 67 65 6e 65 72 61 74 65 20 74 68 65 20 70 72 6f 70 65 72 20 62   ┆ator.      generate the proper b┆
0x071be0…071c00             69 73 2d 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6f 70 65 72 61 74 6f 72   ┆is-instructions for the operator┆
0x071c00…071c20 (30, 0, 11) 2e 0a 20 20 20 20 20 74 61 6b 65 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 73 20 66 6f 72 20   ┆.      take the descriptors for ┆
0x071c20…071c40             74 68 65 20 6f 70 65 72 61 6e 64 73 20 66 72 6f 6d 20 74 68 65 20 76 5f 73 74 61 63 6b 2c 0a 20   ┆the operands from the v_stack,  ┆
0x071c40…071c60             20 20 20 20 61 6e 64 20 73 74 6f 72 65 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 20 6f 66 20   ┆    and store the descriptor of ┆
0x071c60…071c80             74 68 65 20 72 65 73 75 6c 74 20 6f 6e 20 74 68 65 20 76 5f 73 74 61 63 6b 20 3a 0a 2a 29 0a 0a   ┆the result on the v_stack : *)  ┆
0x071c80…071ca0             78 6e 6f 74 20 3a 0a 0a 62 65 67 69 6e 0a 74 79 70 65 5f 6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67   ┆xnot :  begin type_o := in_integ┆
0x071ca0…071cc0             65 72 3b 0a 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 62 6f 6f 6c 5f 74 79 70 20 74 68 65 6e 0a 0a   ┆er;  if type_o = bool_typ then  ┆
0x071cc0…071ce0             6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6e 6f 74 20 29 0a 65 6c 73 65 20 28 2a 20 69 6e 74   ┆out_opcode( op_not ) else (* int┆
0x071ce0…071d00             65 67 65 72 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 63 6f 6d 70 6c 20 29 3b 0a   ┆eger *) out_opcode( op_compl ); ┆
0x071d00…071d20             0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31   ┆  pop_v_stack( v_o1 ); if ( v_o1┆
0x071d20…071d40             2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 32   ┆.kind <> 1 ) or ( v_o1.size <> 2┆
0x071d40…071d60             20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a   ┆ ) then error(compiler_error);  ┆
0x071d60…071d80             76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a   ┆v_r.kind := 1;   v_r.size := 2; ┆
0x071d80…071da0             70 75 73 68 5f 76 5f 73 74 61 63 6b 20 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b   ┆push_v_stack ( v_r ); get_token;┆
0x071da0…071dc0             0a 0a 65 6e 64 3b 0a 0a 0a 78 6e 65 67 20 3a 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f   ┆  end;   xneg :  begin  out_opco┆
0x071dc0…071de0             64 65 28 20 6f 70 5f 6e 65 67 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31   ┆de( op_neg );  pop_v_stack( v_o1┆
0x071de0…071e00             20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76   ┆ ); if ( v_o1.kind <> 1 ) or ( v┆
0x071e00…071e20 (30, 0, 12) 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69   ┆_o1.size <> 2 ) then error(compi┆
0x071e20…071e40             6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 76 5f 72   ┆ler_error);  v_r.kind := 1;  v_r┆
0x071e40…071e60             2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 3b   ┆.size := 2; push_v_stack( v_r );┆
0x071e60…071e80             0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 78 63 6f 6d 70 61 72 65 20 3a 0a   ┆ get_token;  end;    xcompare : ┆
0x071e80…071ea0             0a 62 65 67 69 6e 0a 0a 63 6f 6d 70 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 69 66 20   ┆ begin  comp := in_integer;  if ┆
0x071ea0…071ec0             28 20 63 6f 6d 70 20 3e 3d 20 31 20 29 20 61 6e 64 20 28 20 63 6f 6d 70 20 3c 3d 20 37 20 29 20   ┆( comp >= 1 ) and ( comp <= 7 ) ┆
0x071ec0…071ee0             74 68 65 6e 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 63 6f 6d 70 5b   ┆then begin  out_opcode( op_comp[┆
0x071ee0…071f00             20 63 6f 6d 70 20 5d 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b   ┆ comp ] );  pop_v_stack( v_o2 );┆
0x071f00…071f20             20 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f   ┆   pop_v_stack( v_o1 ); if ( v_o┆
0x071f20…071f40             31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20   ┆1.kind <> 1 ) or ( v_o1.size <> ┆
0x071f40…071f60             32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20   ┆2 ) or    ( v_o2.kind <> 1 ) or ┆
0x071f60…071f80             28 20 76 5f 6f 32 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f   ┆( v_o2.size <> 2 ) then error(co┆
0x071f80…071fa0             6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20   ┆mpiler_error);  v_r.kind := 1;  ┆
0x071fa0…071fc0             76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72   ┆v_r.size := 2; push_v_stack( v_r┆
0x071fc0…071fe0             20 29 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 0a 69 66 20 28 20 63 6f 6d 70 20 3e 3d 20 38 20 29 20   ┆ )  end  else  if ( comp >= 8 ) ┆
0x071fe0…072000             61 6e 64 20 28 20 63 6f 6d 70 20 3c 3d 20 31 31 20 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 70   ┆and ( comp <= 11 ) then begin  p┆
0x072000…072020 (30, 0, 13) 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b   ┆op_v_stack( v_o2 );  pop_v_stack┆
0x072020…072040             28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 29 20 6f   ┆( v_o1 ); if ( v_o1.kind <> 1) o┆
0x072040…072060             72 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28   ┆r ( v_o2.kind <> 1 ) then error(┆
0x072060…072080             63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 63 6f 64 65 5f 73 74 61 74 5f 74 6f 5f 64   ┆compiler_error);  code_stat_to_d┆
0x072080…0720a0             79 6e 28 20 76 5f 6f 31 2e 73 69 7a 65 20 2b 20 76 5f 6f 32 2e 73 69 7a 65 20 29 3b 0a 28 2a 6e   ┆yn( v_o1.size + v_o2.size ); (*n┆
0x0720a0…0720c0             6f 74 65 21 20 62 65 63 61 75 73 65 20 61 20 6c 6f 6f 6b 61 68 65 61 64 20 77 61 73 20 75 73 65   ┆ote! because a lookahead was use┆
0x0720c0…0720e0             64 20 74 6f 20 64 65 73 69 64 65 20 77 65 74 68 65 72 20 61 20 73 65 74 65 78 70 72 65 73 73 69   ┆d to deside wether a setexpressi┆
0x0720e0…072100             6f 6e 0a 6f 72 20 61 20 73 69 6d 70 6c 65 20 73 65 74 76 61 72 69 61 62 6c 65 20 77 61 73 20 6d   ┆on or a simple setvariable was m┆
0x072100…072120             65 74 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 64 65 73 69 64 65 20 77 65 74 68 65 72 20 61 20 73   ┆et in order to deside wether a s┆
0x072120…072140             65 74 72 65 20 6f 72 20 61 0a 73 65 74 61 74 6d 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 73 68 6f   ┆etre or a setatm instruction sho┆
0x072140…072160             6c 64 20 62 65 20 67 65 6e 65 72 61 74 65 64 20 77 68 65 6e 20 74 68 65 20 63 6f 6d 70 61 72 65   ┆ld be generated when the compare┆
0x072160…072180             20 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e 2c 0a 74 68 65 6e 20 74 68 65 20 73 65 74 72 65 20   ┆ function is in, then the setre ┆
0x072180…0721a0             69 6e 73 74 72 75 63 74 69 6f 6e 20 66 6f 72 20 6f 74 68 65 72 20 73 65 74 63 6f 6d 70 61 72 65   ┆instruction for other setcompare┆
0x0721a0…0721c0             66 75 6e 63 74 69 6f 6e 73 20 77 61 73 20 61 6c 73 6f 20 6e 6f 74 0a 67 65 6e 65 72 61 74 65 64   ┆functions was also not generated┆
0x0721c0…0721e0             2e 20 54 68 65 72 65 66 6f 72 65 20 69 74 20 68 61 73 20 74 6f 20 62 65 20 67 65 6e 65 72 61 74   ┆. Therefore it has to be generat┆
0x0721e0…072200             65 64 20 42 45 46 4f 52 45 20 74 68 65 20 63 6f 6d 70 61 72 65 20 69 6e 73 74 72 75 63 74 69 6f   ┆ed BEFORE the compare instructio┆
0x072200…072220 (30, 0, 14) 6e 2a 29 0a 69 66 20 69 6e 5f 6b 69 6e 64 20 3d 20 73 65 74 61 74 6d 20 74 68 65 6e 20 6f 75 74   ┆n*) if in_kind = setatm then out┆
0x072220…072240             5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 72 65 2c 76 5f 6f 32 2e 73 69 7a 65 20 2d   ┆_specopcode(op_setre,v_o2.size -┆
0x072240…072260             20 77 6f 72 64 5f 6c 65 6e 67 74 68 20 29 3b 0a 28 2a 6e 6f 74 65 20 74 68 61 74 20 74 68 65 20   ┆ word_length ); (*note that the ┆
0x072260…072280             76 5f 6f 32 2e 73 69 7a 65 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 6c 65 6e 67 74 68 77 6f 72   ┆v_o2.size includes the lengthwor┆
0x072280…0722a0             64 2e 20 74 68 65 72 65 66 6f 72 65 20 74 68 65 20 73 69 7a 65 20 68 61 73 0a 74 6f 20 62 65 20   ┆d. therefore the size has to be ┆
0x0722a0…0722c0             64 65 63 72 65 6d 65 6e 74 65 64 20 62 79 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6c   ┆decremented by the size of the l┆
0x0722c0…0722e0             65 6e 67 74 68 77 6f 72 64 2a 29 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 63 6f 6d 70   ┆engthword*)  out_opcode( op_comp┆
0x0722e0…072300             5b 20 63 6f 6d 70 20 5d 20 29 3b 0a 69 66 20 63 6f 6d 70 20 3d 20 39 20 74 68 65 6e 20 20 6f 75   ┆[ comp ] ); if comp = 9 then  ou┆
0x072300…072320             74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6e 6f 74 20 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d   ┆t_opcode( op_not );  v_r.kind :=┆
0x072320…072340             20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 0a 70 75 73 68 5f 76 5f 73 74 61 63   ┆ 1;  v_r.size := 2;  push_v_stac┆
0x072340…072360             6b 28 20 76 5f 72 20 29 0a 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 0a 69 66 20 63 6f 6d 70 20 3d 20   ┆k( v_r )   end  else  if comp = ┆
0x072360…072380             31 32 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32   ┆12 then begin  pop_v_stack( v_o2┆
0x072380…0723a0             20 29 3b 20 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20   ┆ );   pop_v_stack( v_o1 ); if ( ┆
0x0723a0…0723c0             76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20   ┆v_o1.kind <> 1 ) or ( v_o1.size ┆
0x0723c0…0723e0             3c 3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20   ┆<> 2 ) or    ( v_o2.kind <> 1 ) ┆
0x0723e0…072400             20 20 74 68 65 6e 20 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 28   ┆  then  error(compiler_error); (┆
0x072400…072420 (30, 0, 15) 2a 69 66 20 6f 6e 6c 79 20 61 20 73 65 74 76 61 72 69 61 62 6c 65 20 6d 65 74 20 74 68 65 6e 20   ┆*if only a setvariable met then ┆
0x072420…072440             75 73 65 20 73 65 74 61 74 6d 20 65 6c 73 65 20 75 73 65 20 73 65 74 74 6d 2a 29 0a 69 66 20 69   ┆use setatm else use settm*) if i┆
0x072440…072460             6e 5f 6b 69 6e 64 20 3d 20 73 65 74 61 74 6d 20 74 68 65 6e 20 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆n_kind = setatm then  out_opcode┆
0x072460…072480             28 6f 70 5f 73 65 74 61 74 6d 29 0a 65 6c 73 65 20 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28   ┆(op_setatm) else out_specopcode(┆
0x072480…0724a0             6f 70 5f 73 65 74 74 6d 2c 2d 76 5f 6f 32 2e 73 69 7a 65 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20   ┆op_settm,-v_o2.size);  v_r.kind ┆
0x0724a0…0724c0             3a 3d 20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61   ┆:= 1;  v_r.size := 2; push_v_sta┆
0x0724c0…0724e0             63 6b 28 20 76 5f 72 20 29 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 65 72 72 6f 72 28 70 61 73 73 34   ┆ck( v_r )  end  else error(pass4┆
0x0724e0…072500             63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a   ┆code_error); get_token;  end;   ┆
0x072500…072520             78 63 6f 6d 70 73 74 72 75 63 20 3a 0a 0a 62 65 67 69 6e 0a 0a 63 6f 6d 70 20 3a 3d 20 69 6e 5f   ┆xcompstruc :  begin  comp := in_┆
0x072520…072540             69 6e 74 65 67 65 72 3b 20 20 20 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a   ┆integer;   size := in_integer;  ┆
0x072540…072560             70 6f 70 5f 76 5f 73 74 61 63 6b 20 28 76 5f 6f 32 29 3b 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b   ┆pop_v_stack (v_o2);  pop_v_stack┆
0x072560…072580             20 28 76 5f 6f 31 29 3b 0a 69 66 20 28 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 76 5f 6f 32 2e 6b   ┆ (v_o1); if (v_o1.kind <> v_o2.k┆
0x072580…0725a0             69 6e 64 29 20 6f 72 0a 28 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 76 5f 6f 32 2e 73 69 7a 65 29   ┆ind) or (v_o1.size <> v_o2.size)┆
0x0725a0…0725c0             20 6f 72 0a 28 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 73 69 7a 65 29 20 74 68 65 6e 0a 65 72 72   ┆ or (v_o1.size <> size) then err┆
0x0725c0…0725e0             6f 72 20 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 69 66 20 76 5f 6f 31 2e 6b 69   ┆or (compiler_error);  if v_o1.ki┆
0x0725e0…072600             6e 64 20 3d 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 63 6f 6d 70 61 72 65 20 61 72 72   ┆nd = 2 then begin (* compare arr┆
0x072600…072620 (30, 1, 1)  61 79 73 20 6f 72 20 72 65 63 6f 72 64 73 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70   ┆ays or records *) out_opcode( op┆
0x072620…072640             5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 20 6f 75 74   ┆_rechw ); out_start_param;   out┆
0x072640…072660             5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f   ┆_integer( size ); out_opcode(op_┆
0x072660…072680             73 74 63 65 61 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 30 29 3b 0a   ┆stcea); out_op_int(op_rechw,0); ┆
0x072680…0726a0             69 66 20 63 6f 6d 70 20 3d 20 78 6e 65 5f 73 74 72 75 63 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63   ┆if comp = xne_struc then out_opc┆
0x0726a0…0726c0             6f 64 65 28 6f 70 5f 6e 65 29 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 20 3d 20 78 65 71 5f 73 74   ┆ode(op_ne) else if comp = xeq_st┆
0x0726c0…0726e0             72 75 63 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 65 71 29 0a 65 6c 73 65 0a   ┆ruc then out_opcode(op_eq) else ┆
0x0726e0…072700             65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 0a 65 6c 73 65   ┆error(pass4code_error); end else┆
0x072700…072720             20 28 2a 20 63 6f 6d 70 61 72 65 20 70 6f 69 6e 74 65 72 73 20 2a 29 0a 62 65 67 69 6e 0a 6f 75   ┆ (* compare pointers *) begin ou┆
0x072720…072740             74 5f 6f 70 63 6f 64 65 28 6f 70 5f 74 65 71 61 64 29 3b 0a 69 66 20 63 6f 6d 70 20 3d 20 78 6e   ┆t_opcode(op_teqad); if comp = xn┆
0x072740…072760             65 5f 73 74 72 75 63 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 6e 6f 74 29 0a   ┆e_struc then out_opcode(op_not) ┆
0x072760…072780             65 6c 73 65 0a 69 66 20 63 6f 6d 70 20 3c 3e 20 78 65 71 5f 73 74 72 75 63 20 74 68 65 6e 20 65   ┆else if comp <> xeq_struc then e┆
0x072780…0727a0             72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 0a 0a 76 5f   ┆rror(pass4code_error); end;   v_┆
0x0727a0…0727c0             72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75   ┆r.kind := 1;   v_r.size := 2; pu┆
0x0727c0…0727e0             73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65   ┆sh_v_stack( v_r ); get_token;  e┆
0x0727e0…072800             6e 64 3b 0a 0a 0a 78 63 6f 6d 70 64 79 6e 73 74 72 75 63 20 3a 0a 0a 62 65 67 69 6e 0a 0a 63 6f   ┆nd;   xcompdynstruc :  begin  co┆
0x072800…072820 (30, 1, 2)  6d 70 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65   ┆mp := in_integer;  get_niv_offse┆
0x072820…072840             74 28 20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 20 28 20   ┆t( template_v );  pop_v_stack ( ┆
0x072840…072860             76 5f 6f 32 20 29 3b 20 70 6f 70 5f 76 5f 73 74 61 63 6b 20 28 20 76 5f 6f 31 20 29 3b 0a 0a 69   ┆v_o2 ); pop_v_stack ( v_o1 );  i┆
0x072860…072880             66 20 76 5f 6f 31 2e 6b 69 6e 64 20 3d 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 63 6f   ┆f v_o1.kind = 2 then begin (* co┆
0x072880…0728a0             6d 70 61 72 65 20 61 72 72 61 79 73 20 6f 72 20 72 65 63 6f 72 64 73 20 2a 29 0a 77 69 74 68 20   ┆mpare arrays or records *) with ┆
0x0728a0…0728c0             74 65 6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73   ┆template_v do out_op_rev__(acces┆
0x0728c0…0728e0             73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 6f 75   ┆s,word_typ,c.niv-niv,offset); ou┆
0x0728e0…072900             74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 74 63 65 61 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f   ┆t_opcode(op_stcea); out_op_int(o┆
0x072900…072920             70 5f 72 65 63 68 77 2c 30 29 3b 0a 69 66 20 63 6f 6d 70 20 3d 20 78 6e 65 5f 73 74 72 75 63 20   ┆p_rechw,0); if comp = xne_struc ┆
0x072920…072940             74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 6e 65 29 0a 65 6c 73 65 0a 69 66 20 63   ┆then out_opcode(op_ne) else if c┆
0x072940…072960             6f 6d 70 20 3d 20 78 65 71 5f 73 74 72 75 63 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28   ┆omp = xeq_struc then out_opcode(┆
0x072960…072980             6f 70 5f 65 71 29 0a 65 6c 73 65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f   ┆op_eq) else error(pass4code_erro┆
0x072980…0729a0             72 29 3b 0a 0a 65 6e 64 0a 65 6c 73 65 0a 65 72 72 6f 72 28 20 70 61 73 73 34 63 6f 64 65 5f 65   ┆r);  end else error( pass4code_e┆
0x0729a0…0729c0             72 72 6f 72 20 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 76 5f 72 2e 73 69 7a 65   ┆rror );  v_r.kind := 1; v_r.size┆
0x0729c0…0729e0             20 3a 3d 20 32 3b 0a 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 20 28 20 76 5f 72 20 29 3b 0a 0a 67   ┆ := 2;  push_v_stack ( v_r );  g┆
0x0729e0…072a00             65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 63 6f 6d 70 20 64 79 6e 20 73 74 72 75   ┆et_token;  end; (* comp dyn stru┆
0x072a00…072a20 (30, 1, 3)  63 20 2a 29 0a 0a 0a 78 64 69 76 20 3a 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆c *)   xdiv :  begin  out_opcode┆
0x072a20…072a40             28 20 6f 70 5f 64 69 76 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29   ┆( op_div );  pop_v_stack( v_o2 )┆
0x072a40…072a60             3b 20 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f   ┆;   pop_v_stack( v_o1 ); if ( v_┆
0x072a60…072a80             6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e   ┆o1.kind <> 1 ) or ( v_o1.size <>┆
0x072a80…072aa0             20 32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72   ┆ 2 ) or    ( v_o2.kind <> 1 ) or┆
0x072aa0…072ac0             20 28 20 76 5f 6f 32 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63   ┆ ( v_o2.size <> 2 ) then error(c┆
0x072ac0…072ae0             6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20   ┆ompiler_error);  v_r.kind := 1; ┆
0x072ae0…072b00             20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f   ┆ v_r.size := 2; push_v_stack( v_┆
0x072b00…072b20             72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a 78 73 68 69 66 74 3a 0a   ┆r ); get_token;  end;   xshift: ┆
0x072b20…072b40             62 65 67 69 6e 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75 73 65 2c 20 65 78   ┆begin code_call_proc(sys_use, ex┆
0x072b40…072b60             74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 73 68 69 66 74 5f 5f 5f 5f 72 63 27 29 2c 20 6b   ┆t_lookup(key, '_shift____rc'), k┆
0x072b60…072b80             65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 32 2c 20 32 29 3b 0a 6f 75 74 5f 63   ┆ey, const_niv_0, 0, 2, 2); out_c┆
0x072b80…072ba0             6f 6d 6d 65 6e 74 28 27 20 73 68 69 66 74 20 27 29 3b 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20   ┆omment(' shift '); pop_v_stack( ┆
0x072ba0…072bc0             76 5f 6f 32 20 29 3b 20 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69   ┆v_o2 );   pop_v_stack( v_o1 ); i┆
0x072bc0…072be0             66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73   ┆f ( v_o1.kind <> 1 ) or ( v_o1.s┆
0x072be0…072c00             69 7a 65 20 3c 3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20   ┆ize <> 2 ) or    ( v_o2.kind <> ┆
0x072c00…072c20 (30, 1, 4)  31 20 29 20 6f 72 20 28 20 76 5f 6f 32 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65   ┆1 ) or ( v_o2.size <> 2 ) then e┆
0x072c20…072c40             72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20   ┆rror(compiler_error);  v_r.kind ┆
0x072c40…072c60             3a 3d 20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61   ┆:= 1;  v_r.size := 2; push_v_sta┆
0x072c60…072c80             63 6b 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 0a 78 72 6f 74   ┆ck( v_r ); get_token; end;  xrot┆
0x072c80…072ca0             61 74 65 3a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 68 63 29 3b 0a 70   ┆ate: begin out_opcode(op_shc); p┆
0x072ca0…072cc0             6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b 20 20 20 70 6f 70 5f 76 5f 73 74 61 63   ┆op_v_stack( v_o2 );   pop_v_stac┆
0x072cc0…072ce0             6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29   ┆k( v_o1 ); if ( v_o1.kind <> 1 )┆
0x072ce0…072d00             20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20 76   ┆ or ( v_o1.size <> 2 ) or    ( v┆
0x072d00…072d20             5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 32 2e 73 69 7a 65 20 3c   ┆_o2.kind <> 1 ) or ( v_o2.size <┆
0x072d20…072d40             3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29   ┆> 2 ) then error(compiler_error)┆
0x072d40…072d60             3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32   ┆;  v_r.kind := 1;  v_r.size := 2┆
0x072d60…072d80             3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e   ┆; push_v_stack( v_r ); get_token┆
0x072d80…072da0             3b 0a 65 6e 64 3b 0a 0a 78 61 64 64 2c 0a 78 73 75 62 2c 0a 78 6d 75 6c 20 3a 0a 0a 62 65 67 69   ┆; end;  xadd, xsub, xmul :  begi┆
0x072da0…072dc0             6e 0a 0a 74 79 70 65 5f 6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 74 79 70 65   ┆n  type_o := in_integer; if type┆
0x072dc0…072de0             5f 6f 20 3d 20 72 65 61 6c 5f 74 79 70 20 74 68 65 6e 0a 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65   ┆_o = real_typ then error(compile┆
0x072de0…072e00             72 5f 65 72 72 6f 72 29 0a 65 6c 73 65 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 69 6e 74 5f 74 79   ┆r_error) else if type_o = int_ty┆
0x072e00…072e20 (30, 1, 5)  70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 61 64 64 20 74 68   ┆p then begin  if token = xadd th┆
0x072e20…072e40             65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 61 64 64 20 29 0a 65 6c 73 65 0a 69 66 20   ┆en out_opcode( op_add ) else if ┆
0x072e40…072e60             74 6f 6b 65 6e 20 3d 20 78 73 75 62 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70   ┆token = xsub then out_opcode( op┆
0x072e60…072e80             5f 73 75 62 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6d 75 6c 20 29   ┆_sub ) else out_opcode( op_mul )┆
0x072e80…072ea0             3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b 20 20 20 70 6f 70 5f 76 5f   ┆;  pop_v_stack( v_o2 );   pop_v_┆
0x072ea0…072ec0             73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e   ┆stack( v_o1 ); if ( v_o1.kind <>┆
0x072ec0…072ee0             20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 6f 72 0a 20 20   ┆ 1 ) or ( v_o1.size <> 2 ) or   ┆
0x072ee0…072f00             20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 32 2e 73 69   ┆ ( v_o2.kind <> 1 ) or ( v_o2.si┆
0x072f00…072f20             7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72   ┆ze <> 2 ) then error(compiler_er┆
0x072f20…072f40             72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20   ┆ror);  v_r.kind := 1;  v_r.size ┆
0x072f40…072f60             3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 0a 0a 65 6e 64 0a 0a   ┆:= 2; push_v_stack( v_r )  end  ┆
0x072f60…072f80             65 6c 73 65 0a 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 65 74 6f 66 5f 74 79 70 20 74 68 65 6e   ┆else  if type_o = setof_typ then┆
0x072f80…072fa0             0a 62 65 67 69 6e 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b 20 20 70 6f   ┆ begin  pop_v_stack( v_o2 );  po┆
0x072fa0…072fc0             70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e   ┆p_v_stack( v_o1 ); if ( v_o1.kin┆
0x072fc0…072fe0             64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 74   ┆d <> 1 ) or ( v_o2.kind <> 1 ) t┆
0x072fe0…073000             68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 63 6f 64 65   ┆hen error(compiler_error);  code┆
0x073000…073020 (30, 1, 6)  5f 73 74 61 74 5f 74 6f 5f 64 79 6e 28 20 76 5f 6f 31 2e 73 69 7a 65 20 2b 20 76 5f 6f 32 2e 73   ┆_stat_to_dyn( v_o1.size + v_o2.s┆
0x073020…073040             69 7a 65 20 29 3b 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 61 64 64 20 74 68 65 6e 20 6f 75 74   ┆ize );  if token = xadd then out┆
0x073040…073060             5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 65 74 75 6e 20 29 0a 65 6c 73 65 0a 69 66 20 74 6f 6b 65   ┆_opcode( op_setun ) else if toke┆
0x073060…073080             6e 20 3d 20 78 73 75 62 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 65 74   ┆n = xsub then out_opcode( op_set┆
0x073080…0730a0             64 69 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 65 74 69 6e 20 29   ┆di ) else out_opcode( op_setin )┆
0x0730a0…0730c0             3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20   ┆;  v_r.kind := 1;   v_r.size := ┆
0x0730c0…0730e0             30 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 0a 0a 65 6e 64 0a 0a 65 6c 73   ┆0; push_v_stack( v_r )  end  els┆
0x0730e0…073100             65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 67 65 74 5f 74 6f   ┆e error(pass4code_error); get_to┆
0x073100…073120             6b 65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a 78 6f 72 5f 2c 0a 78 78 6f 72 2c 0a 78 61 6e 64 20 3a 0a   ┆ken;  end;   xor_, xxor, xand : ┆
0x073120…073140             62 65 67 69 6e 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 6f 72 5f 20 74 68 65 6e 20 6f 75 74 5f   ┆begin  if token = xor_ then out_┆
0x073140…073160             6f 70 63 6f 64 65 28 20 6f 70 5f 6f 72 20 29 0a 65 6c 73 65 0a 69 66 20 74 6f 6b 65 6e 20 3d 20   ┆opcode( op_or ) else if token = ┆
0x073160…073180             78 78 6f 72 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 20 28 20 6f 70 5f 78 6f 72 20 29 0a   ┆xxor then out_opcode ( op_xor ) ┆
0x073180…0731a0             65 6c 73 65 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 61 6e 64 20 29 3b 0a 0a 70 6f 70 5f   ┆else out_opcode( op_and );  pop_┆
0x0731a0…0731c0             76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b 20 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20   ┆v_stack( v_o2 );   pop_v_stack( ┆
0x0731c0…0731e0             76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72   ┆v_o1 ); if ( v_o1.kind <> 1 ) or┆
0x0731e0…073200             20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32   ┆ ( v_o1.size <> 2 ) or    ( v_o2┆
0x073200…073220 (30, 1, 7)  2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 32   ┆.kind <> 1 ) or ( v_o1.size <> 2┆
0x073220…073240             20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a   ┆ ) then error(compiler_error);  ┆
0x073240…073260             76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a   ┆v_r.kind := 1;   v_r.size := 2; ┆
0x073260…073280             70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a   ┆push_v_stack( v_r ); get_token; ┆
0x073280…0732a0             0a 65 6e 64 3b 0a 0a 0a 78 6d 6f 64 20 3a 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64   ┆ end;   xmod :  begin  out_opcod┆
0x0732a0…0732c0             65 28 20 6f 70 5f 6d 6f 64 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20   ┆e( op_mod );  pop_v_stack( v_o2 ┆
0x0732c0…0732e0             29 20 3b 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76   ┆) ;  pop_v_stack( v_o1 ); if ( v┆
0x0732e0…073300             5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c   ┆_o1.kind <> 1 ) or ( v_o1.size <┆
0x073300…073320             3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f   ┆> 2 ) or    ( v_o2.kind <> 1 ) o┆
0x073320…073340             72 20 28 20 76 5f 6f 32 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28   ┆r ( v_o2.size <> 2 ) then error(┆
0x073340…073360             63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b   ┆compiler_error);  v_r.kind := 1;┆
0x073360…073380             20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76   ┆  v_r.size := 2; push_v_stack( v┆
0x073380…0733a0             5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a 78 72 61 6e 67 65 74   ┆_r ); get_token;  end;   xranget┆
0x0733a0…0733c0             65 73 74 20 3a 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61   ┆est :  begin  out_opcode( op_rea┆
0x0733c0…0733e0             61 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 6c 69 78 20   ┆ad ); out_start_param;  out_lix ┆
0x0733e0…073400             28 63 5f 6e 61 6d 65 2c 20 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64   ┆(c_name, in_integer);  out_opcod┆
0x073400…073420 (30, 1, 8)  65 28 20 6f 70 5f 69 6e 74 72 73 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 0a   ┆e( op_intrs ); get_token;  end; ┆
0x073420…073440             0a 78 72 61 6e 67 65 6d 61 78 20 3a 20 20 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆ xrangemax :    begin out_op_int┆
0x073440…073460             28 6f 70 5f 69 6e 74 68 30 2c 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e   ┆(op_inth0,in_integer); get_token┆
0x073460…073480             3b 0a 65 6e 64 3b 0a 0a 0a 0a 0a 78 64 79 6e 72 61 6e 67 65 74 65 73 74 20 3a 0a 0a 62 65 67 69   ┆; end;     xdynrangetest :  begi┆
0x073480…0734a0             6e 0a 0a 69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 61 66 74 65 72 5f   ┆n  if operand_situation = after_┆
0x0734a0…0734c0             73 68 6f 72 74 5f 63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e   ┆short_const then begin out_op_in┆
0x0734c0…0734e0             74 28 20 6f 70 5f 72 65 63 68 77 2c 20 76 5f 72 2e 76 61 6c 29 3b 0a 6f 70 65 72 61 6e 64 5f 73   ┆t( op_rechw, v_r.val); operand_s┆
0x0734e0…073500             69 74 75 61 74 69 6f 6e 20 3a 3d 20 61 66 74 65 72 5f 6f 70 61 6e 64 73 3b 0a 65 6e 64 3b 0a 0a   ┆ituation := after_opands; end;  ┆
0x073500…073520             67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 20 28 20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 0a   ┆get_niv_offset ( template_v );  ┆
0x073520…073540             6c 6f 61 64 5f 61 64 64 72 65 73 73 28 20 74 65 6d 70 6c 61 74 65 5f 76 2c 20 74 72 75 65 20 29   ┆load_address( template_v, true )┆
0x073540…073560             3b 20 20 20 28 2a 20 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f   ┆;   (* ?????????????????????????┆
0x073560…073580             3f 3f 3f 3f 3f 3f 3f 3f 3f 20 2a 29 0a 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 69 6e 74   ┆????????? *)  out_opcode( op_int┆
0x073580…0735a0             72 73 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 0a 65 6e 64 3b 20 28 2a 20 64 79 6e 20   ┆rs );  get_token;   end; (* dyn ┆
0x0735a0…0735c0             72 61 6e 67 65 20 74 65 73 74 20 2a 29 0a 0a 0a 78 73 75 62 64 65 66 3a 20 28 2a 20 70 6f 70 20   ┆range test *)   xsubdef: (* pop ┆
0x0735c0…0735e0             74 68 65 20 73 74 61 63 6b 20 2a 29 0a 62 65 67 69 6e 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28   ┆the stack *) begin  pop_v_stack(┆
0x0735e0…073600             20 76 5f 6f 32 20 29 3b 0a 0a 65 6e 64 5f 65 78 70 72 20 3a 3d 20 74 72 75 65 3b 0a 0a 65 6e 64   ┆ v_o2 );  end_expr := true;  end┆
0x073600…073620 (30, 1, 9)  3b 0a 0a 0a 0a 0a 65 6c 73 65 0a 0a 28 2a 20 20 74 68 65 20 69 6e 70 75 74 20 69 74 65 6d 20 69   ┆;     else  (*  the input item i┆
0x073620…073640             73 20 6e 65 69 74 68 65 72 20 61 6e 20 6f 70 65 72 61 6e 64 20 6e 6f 72 20 61 6e 20 6f 70 65 72   ┆s neither an operand nor an oper┆
0x073640…073660             61 74 6f 72 2e 0a 20 20 20 20 74 68 69 73 20 73 69 67 6e 61 6c 73 20 74 68 65 20 65 6e 64 20 6f   ┆ator.     this signals the end o┆
0x073660…073680             66 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 2a 29 0a 0a 65 6e 64 5f 65 78 70 72 20 3a 3d   ┆f an expression. *)  end_expr :=┆
0x073680…0736a0             20 74 72 75 65 0a 0a 65 6e 64 3b 20 20 28 2a 20 20 63 61 73 65 20 20 74 6f 6b 65 6e 20 6f 66 20   ┆ true  end;  (*  case  token of ┆
0x0736a0…0736c0             2e 2e 2e 2e 2e 2e 20 20 2a 29 0a 0a 75 6e 74 69 6c 20 20 0a 65 6e 64 5f 65 78 70 72 3b 0a 0a 0a   ┆......  *)  until   end_expr;   ┆
0x0736c0…0736e0             70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 20 29 3b 0a 0a 69 66 20 74 6f 70 5f 76 5f 73 74 61 63   ┆pop_v_stack( v );  if top_v_stac┆
0x0736e0…073700             6b 20 3c 3e 20 30 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72   ┆k <> 0 then error(compiler_error┆
0x073700…073720             29 0a 0a 0a 65 6e 64 3b 20 20 28 2a 20 20 66 69 6e 64 5f 65 78 70 72 73 20 20 2a 29 0a 0a 0a 0a   ┆)   end;  (*  find_exprs  *)    ┆
0x073720…073740             0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 6f 70 65 72 61 6e 64 28 20 76   ┆      procedure  find_operand( v┆
0x073740…073760             61 72 20 76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 0a 76 61 72 20 20 20 73 69   ┆ar v: varvalue_descr);  var   si┆
0x073760…073780             7a 65 2c 20 76 61 6c 20 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 5f 63 20 3a 20 76 61 72 76 61   ┆ze, val   : integer; v_c : varva┆
0x073780…0737a0             6c 75 65 5f 64 65 73 63 72 3b 0a 66 69 72 73 74 5f 73 65 74 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a   ┆lue_descr; first_set : boolean; ┆
0x0737a0…0737c0             0a 0a 62 65 67 69 6e 0a 0a 20 20 20 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 20 78 63 6f 6e   ┆  begin     case token of   xcon┆
0x0737c0…0737e0             73 74 3a 0a 20 20 20 62 65 67 69 6e 0a 76 61 6c 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a   ┆st:    begin val := in_integer; ┆
0x0737e0…073800             69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 62 65 66 6f 72 65 5f 6f 70   ┆if operand_situation = before_op┆
0x073800…073820 (30, 1, 10) 61 6e 64 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a 76 2e 76 61 6c 20 3a 3d 20 76 61 6c 3b 0a 6f 70   ┆ands then begin v.val := val; op┆
0x073820…073840             65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3a 3d 20 61 66 74 65 72 5f 73 68 6f 72 74 5f 63   ┆erand_situation := after_short_c┆
0x073840…073860             6f 6e 73 74 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 20   ┆onst; end else begin out_opcode ┆
0x073860…073880             28 6f 70 5f 72 65 63 68 77 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75   ┆(op_rechw); out_start_param;  ou┆
0x073880…0738a0             74 5f 69 6e 74 65 67 65 72 20 28 76 61 6c 29 3b 0a 65 6e 64 3b 0a 0a 20 20 20 20 20 20 76 2e 6b   ┆t_integer (val); end;        v.k┆
0x0738a0…0738c0             69 6e 64 20 3a 3d 20 31 3b 0a 20 20 20 20 20 20 76 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 67 65 74   ┆ind := 1;       v.size := 2; get┆
0x0738c0…0738e0             5f 74 6f 6b 65 6e 3b 0a 0a 20 20 20 65 6e 64 20 20 28 2a 20 74 5f 63 6f 6e 73 74 20 2a 29 3b 0a   ┆_token;     end  (* t_const *); ┆
0x0738e0…073900             0a 20 78 6c 63 6f 6e 73 74 3a 0a 20 20 20 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 6f 75 74 5f 6f   ┆  xlconst:    begin        out_o┆
0x073900…073920             70 63 6f 64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72   ┆pcode( op_reaad ); out_start_par┆
0x073920…073940             61 6d 3b 20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 69 6e 5f 69 6e 74 65 67 65 72   ┆am;  out_lix (c_name, in_integer┆
0x073940…073960             29 3b 0a 0a 20 20 20 20 20 20 76 2e 6b 69 6e 64 20 3a 3d 20 32 3b 0a 20 20 20 20 20 20 76 2e 73   ┆);        v.kind := 2;       v.s┆
0x073960…073980             69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 20   ┆ize := in_integer; get_token;   ┆
0x073980…0739a0             20 20 65 6e 64 20 20 28 2a 20 74 5f 6c 63 6f 6e 73 74 20 2a 29 3b 0a 0a 78 66 75 6e 63 63 61 6c   ┆  end  (* t_lconst *);  xfunccal┆
0x0739a0…0739c0             6c 2c 0a 78 65 78 74 66 75 6e 63 63 61 6c 6c 2c 0a 78 73 74 64 66 75 6e 63 63 61 6c 6c 2c 0a 78   ┆l, xextfunccall, xstdfunccall, x┆
0x0739c0…0739e0             70 72 6f 63 65 73 73 70 61 72 61 6d 3a 0a 62 65 67 69 6e 0a 0a 66 69 6e 64 5f 66 75 6e 63 5f 63   ┆processparam: begin  find_func_c┆
0x0739e0…073a00             61 6c 6c 28 20 76 29 0a 0a 65 6e 64 20 20 28 2a 20 20 66 75 6e 63 20 63 61 6c 6c 20 20 2a 29 3b   ┆all( v)  end  (*  func call  *);┆
0x073a00…073a20 (30, 1, 11) 0a 0a 78 73 65 74 63 6f 6e 73 74 20 3a 0a 62 65 67 69 6e 0a 76 61 6c 20 20 3a 3d 20 69 6e 5f 69   ┆  xsetconst : begin val  := in_i┆
0x073a20…073a40             6e 74 65 67 65 72 3b 20 20 28 2a 20 6c 69 78 20 66 6f 72 20 74 68 65 20 63 6f 6e 73 74 61 6e 74   ┆nteger;  (* lix for the constant┆
0x073a40…073a60             20 2a 29 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f 6f 70 63   ┆ *) size := in_integer;  out_opc┆
0x073a60…073a80             6f 64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d   ┆ode( op_reaad ); out_start_param┆
0x073a80…073aa0             3b 20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 76 61 6c 29 3b 0a 0a 6f 75 74 5f 6f   ┆;  out_lix (c_name, val);  out_o┆
0x073aa0…073ac0             70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72   ┆pcode( op_rechw ); out_start_par┆
0x073ac0…073ae0             61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 20 29 3b 0a 0a 76 2e 6b 69 6e   ┆am;  out_integer( size );  v.kin┆
0x073ae0…073b00             64 20 3a 3d 20 31 3b 0a 76 2e 73 69 7a 65 20 3a 3d 20 73 69 7a 65 20 2b 20 32 3b 0a 67 65 74 5f   ┆d := 1; v.size := size + 2; get_┆
0x073b00…073b20             74 6f 6b 65 6e 3b 0a 28 2a 69 66 20 73 65 74 65 78 70 72 65 73 73 69 6f 6e 20 74 68 65 6e 20 6f   ┆token; (*if setexpression then o┆
0x073b20…073b40             75 74 70 75 74 20 73 65 74 72 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 65 6c 73 65 20 6e 6f 74   ┆utput setre instruction else not┆
0x073b40…073b60             65 20 74 68 61 74 20 73 65 74 61 74 6d 20 73 68 61 6c 6c 20 62 65 20 75 73 65 64 2a 29 0a 69 66   ┆e that setatm shall be used*) if┆
0x073b60…073b80             20 74 6f 6b 65 6e 20 3d 20 78 63 6f 6d 70 61 72 65 20 74 68 65 6e 20 69 6e 5f 6b 69 6e 64 3a 3d   ┆ token = xcompare then in_kind:=┆
0x073b80…073ba0             73 65 74 61 74 6d 0a 65 6c 73 65 20 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65   ┆setatm else out_specopcode(op_se┆
0x073ba0…073bc0             74 72 65 2c 73 69 7a 65 29 3b 0a 0a 65 6e 64 3b 0a 0a 78 73 65 74 20 3a 0a 62 65 67 69 6e 0a 0a   ┆tre,size);  end;  xset : begin  ┆
0x073bc0…073be0             66 69 72 73 74 5f 73 65 74 20 3a 3d 20 74 72 75 65 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 72   ┆first_set := true; get_token;  r┆
0x073be0…073c00             65 70 65 61 74 0a 62 65 67 69 6e 0a 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 65 6e 64 73 65 74   ┆epeat begin  if token <> xendset┆
0x073c00…073c20 (30, 1, 12) 20 74 68 65 6e 0a 66 69 6e 64 5f 65 78 70 72 73 20 28 76 5f 63 29 3b 0a 0a 63 61 73 65 20 74 6f   ┆ then find_exprs (v_c);  case to┆
0x073c20…073c40             6b 65 6e 20 6f 66 0a 78 65 6e 64 73 65 74 3a 0a 62 65 67 69 6e 0a 28 2a 20 73 69 6d 75 6c 61 74   ┆ken of xendset: begin (* simulat┆
0x073c40…073c60             65 20 65 6d 70 74 79 20 73 65 74 20 61 73 3a 20 20 28 2e 20 31 20 2e 2e 20 30 20 2e 29 20 2a 29   ┆e empty set as:  (. 1 .. 0 .) *)┆
0x073c60…073c80             0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 72 65 63 68 64 29 3b 0a 6f 75 74 5f 73 74 61 72   ┆ out_opcode (op_rechd); out_star┆
0x073c80…073ca0             74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 31 29 3b 0a 6f 75 74 5f 73   ┆t_param;  out_integer (1); out_s┆
0x073ca0…073cc0             74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 30 29 3b 0a 65 6e   ┆tart_param;  out_integer (0); en┆
0x073cc0…073ce0             64 3b 0a 78 69 6e 63 6c 75 64 65 3a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f   ┆d; xinclude: begin out_opcode (o┆
0x073ce0…073d00             70 5f 72 65 76 70 77 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 78 73 65 74 65 78   ┆p_revpw); get_token; end; xsetex┆
0x073d00…073d20             70 72 3a 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 20   ┆pr: begin get_token; find_exprs ┆
0x073d20…073d40             28 76 5f 63 29 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 69 6e 63 6c 75 64 65 69 6e 74 29 3b   ┆(v_c); skip_token (xincludeint);┆
0x073d40…073d60             0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72   ┆ end; else error(pass4code_error┆
0x073d60…073d80             29 3b 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 65 74 63 72 20 29 3b   ┆); end;  out_opcode( op_setcr );┆
0x073d80…073da0             0a 28 2a 20 66 6f 72 63 65 20 64 79 6e 61 6d 69 63 20 6d 61 72 6b 69 6e 67 20 6f 66 20 72 6f 75   ┆ (* force dynamic marking of rou┆
0x073da0…073dc0             74 69 6e 65 20 61 70 70 65 74 69 74 65 20 2a 29 0a 64 79 6e 5f 65 76 61 6c 5f 73 74 61 63 6b 3a   ┆tine appetite *) dyn_eval_stack:┆
0x073dc0…073de0             3d 20 74 72 75 65 3b 0a 0a 69 66 20 6e 6f 74 28 20 66 69 72 73 74 5f 73 65 74 20 29 20 74 68 65   ┆= true;  if not( first_set ) the┆
0x073de0…073e00             6e 20 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 65 74 75 6e 20 29 3b 0a 0a 66 69 72 73   ┆n  out_opcode( op_setun );  firs┆
0x073e00…073e20 (30, 1, 13) 74 5f 73 65 74 20 3a 3d 20 66 61 6c 73 65 0a 0a 65 6e 64 0a 0a 75 6e 74 69 6c 20 74 6f 6b 65 6e   ┆t_set := false  end  until token┆
0x073e20…073e40             20 3d 20 78 65 6e 64 73 65 74 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 76 2e 6b 69 6e 64 20   ┆ = xendset;  get_token;  v.kind ┆
0x073e40…073e60             3a 3d 20 31 3b 0a 76 2e 73 69 7a 65 20 3a 3d 20 30 0a 65 6e 64 3b 0a 0a 0a 65 6c 73 65 0a 62 65   ┆:= 1; v.size := 0 end;   else be┆
0x073e60…073e80             67 69 6e 0a 0a 20 20 20 20 20 20 20 20 20 66 69 6e 64 5f 76 61 72 76 61 6c 75 65 28 20 76 29 0a   ┆gin           find_varvalue( v) ┆
0x073e80…073ea0             0a 20 20 20 20 20 20 65 6e 64 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 74 6f 6b 65 6e 20 2a 29   ┆       end end; (* case token *)┆
0x073ea0…073ec0             0a 0a 0a 65 6e 64 20 20 28 2a 20 20 20 66 69 6e 64 5f 6f 70 65 72 61 6e 64 20 20 20 2a 29 3b 0a   ┆   end  (*   find_operand   *); ┆
0x073ec0…073ee0             0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 65 78 70 72 73 20 28 76 61 72 20 76 3a 20 76   ┆  procedure find_exprs (var v: v┆
0x073ee0…073f00             61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 28 2a 20 73 69 6d 69 6c 61 72 20 74 6f 20 66 69   ┆arvalue_descr); (* similar to fi┆
0x073f00…073f20             6e 64 5f 65 78 70 72 2c 20 62 75 74 20 61 6c 77 61 79 73 20 64 65 6c 69 76 65 72 73 20 72 65 73   ┆nd_expr, but always delivers res┆
0x073f20…073f40             75 6c 74 20 6f 6e 20 73 74 61 63 6b 20 2a 29 0a 62 65 67 69 6e 0a 66 69 6e 64 5f 65 78 70 72 20   ┆ult on stack *) begin find_expr ┆
0x073f40…073f60             28 76 29 3b 0a 69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 61 66 74 65   ┆(v); if operand_situation = afte┆
0x073f60…073f80             72 5f 73 68 6f 72 74 5f 63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63   ┆r_short_const then begin out_opc┆
0x073f80…073fa0             6f 64 65 20 28 6f 70 5f 72 65 63 68 77 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b   ┆ode (op_rechw); out_start_param;┆
0x073fa0…073fc0             20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 76 2e 76 61 6c 29 3b 0a 6f 70 65 72 61 6e 64 5f 73   ┆  out_integer (v.val); operand_s┆
0x073fc0…073fe0             69 74 75 61 74 69 6f 6e 20 3a 3d 20 61 66 74 65 72 5f 6f 70 61 6e 64 73 3b 0a 65 6e 64 3b 0a 65   ┆ituation := after_opands; end; e┆
0x073fe0…074000             6e 64 3b 0a 20 20 20 20 20 20 20 20 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 66   ┆nd;            procedure  find_f┆
0x074000…074020 (30, 1, 14) 75 6e 63 5f 63 61 6c 6c 28 20 76 61 72 20 76 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72   ┆unc_call( var v : varvalue_descr┆
0x074020…074040             29 3b 0a 0a 76 61 72 0a 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 2c   ┆);  var size_of_function_result,┆
0x074040…074060             20 20 28 2a 20 75 73 65 64 20 62 79 20 66 69 6e 64 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 20   ┆  (* used by find process param ┆
0x074060…074080             2a 29 0a 76 61 6c 75 65 5f 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 20 28 2a 20 73 69 7a 65   ┆*) value_size : integer; (* size┆
0x074080…0740a0             20 6f 66 20 72 65 73 75 6c 74 20 69 66 20 6e 6f 74 20 79 6f 79 6f 20 2a 29 0a 0a 62 65 67 69 6e   ┆ of result if not yoyo *)  begin┆
0x0740a0…0740c0             0a 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3a 3d 20 30 3b 0a 28   ┆ size_of_function_result := 0; (┆
0x0740c0…0740e0             2a 20 75 73 65 64 20 62 79 20 66 69 6e 64 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 2c 20 63 68   ┆* used by find process param, ch┆
0x0740e0…074100             61 6e 67 65 64 20 62 79 20 66 69 6e 64 5f 61 72 67 6c 69 73 74 20 2a 29 0a 0a 69 66 20 74 6f 6b   ┆anged by find_arglist *)  if tok┆
0x074100…074120             65 6e 20 3d 20 78 70 72 6f 63 65 73 73 70 61 72 61 6d 20 74 68 65 6e 0a 66 69 6e 64 5f 70 72 6f   ┆en = xprocessparam then find_pro┆
0x074120…074140             63 65 73 73 70 61 72 61 6d 28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75   ┆cessparam( size_of_function_resu┆
0x074140…074160             6c 74 20 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 73 74 64 66   ┆lt ) else begin if token = xstdf┆
0x074160…074180             75 6e 63 63 61 6c 6c 20 74 68 65 6e 0a 66 69 6e 64 5f 73 74 64 5f 63 61 6c 6c 20 28 76 29 0a 65   ┆unccall then find_std_call (v) e┆
0x074180…0741a0             6c 73 65 0a 66 69 6e 64 5f 63 61 6c 6c 28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f   ┆lse find_call( size_of_function_┆
0x0741a0…0741c0             72 65 73 75 6c 74 20 29 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 66 63 61 6c 6c 29 3b 0a 65   ┆result ); skip_token (xfcall); e┆
0x0741c0…0741e0             6e 64 3b 0a 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 65 6e 64 66 75 6e 63 63 61 6c 6c 20 74 68   ┆nd;  if token <> xendfunccall th┆
0x0741e0…074200             65 6e 0a 66 69 6e 64 5f 76 61 72 76 61 6c 75 65 20 28 76 29 20 20 28 2a 20 72 65 74 72 69 65 76   ┆en find_varvalue (v)  (* retriev┆
0x074200…074220 (30, 1, 15) 65 20 72 65 73 75 6c 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 2d 63 61 6c 6c 20 2a 29 0a 0a 65 6c   ┆e result of function-call *)  el┆
0x074220…074240             73 65 0a 69 66 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3c 3e   ┆se if size_of_function_result <>┆
0x074240…074260             20 30 20 74 68 65 6e 0a 77 69 74 68 20 76 20 64 6f 0a 62 65 67 69 6e 0a 6b 69 6e 64 20 3a 3d 20   ┆ 0 then with v do begin kind := ┆
0x074260…074280             31 3b 20 20 28 2a 20 6f 6e 20 73 74 61 63 6b 20 74 6f 70 20 2a 29 0a 73 69 7a 65 20 3a 3d 20 73   ┆1;  (* on stack top *) size := s┆
0x074280…0742a0             69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 3b 0a 65 6e 64 3b 20 28 2a 20   ┆ize_of_function_result; end; (* ┆
0x0742a0…0742c0             77 69 74 68 20 76 20 2a 29 0a 0a 76 61 6c 75 65 5f 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65   ┆with v *)  value_size := in_inte┆
0x0742c0…0742e0             67 65 72 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 20 28 2a 20 20 66 69 6e 64 5f 66 75   ┆ger; get_token;  end (*  find_fu┆
0x0742e0…074300             6e 63 5f 63 61 6c 6c 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f   ┆nc_call  *);    procedure  find_┆
0x074300…074320             70 72 6f 63 5f 63 61 6c 6c 28 20 76 61 72 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f   ┆proc_call( var size_of_function_┆
0x074320…074340             72 65 73 75 6c 74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 62 65 67 69 6e 0a 0a 69 66 20 74   ┆result : integer );  begin  if t┆
0x074340…074360             6f 6b 65 6e 20 3d 20 78 70 72 6f 63 65 73 73 70 61 72 61 6d 20 74 68 65 6e 0a 66 69 6e 64 5f 70   ┆oken = xprocessparam then find_p┆
0x074360…074380             72 6f 63 65 73 73 70 61 72 61 6d 28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65   ┆rocessparam( size_of_function_re┆
0x074380…0743a0             73 75 6c 74 20 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 66 69 6e 64 5f 63 61 6c 6c 28 20 73 69   ┆sult ) else begin  find_call( si┆
0x0743a0…0743c0             7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 29 3b 0a 0a 73 6b 69 70 5f 74   ┆ze_of_function_result );  skip_t┆
0x0743c0…0743e0             6f 6b 65 6e 20 28 78 65 6e 64 70 63 61 6c 6c 29 3b 0a 0a 65 6e 64 0a 0a 65 6e 64 20 20 28 2a 20   ┆oken (xendpcall);  end  end  (* ┆
0x0743e0…074400             20 66 69 6e 64 5f 70 72 6f 63 5f 63 61 6c 6c 20 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65   ┆ find_proc_call  *);   procedure┆
0x074400…074420 (31, 0, 1)  20 66 69 6e 64 5f 73 79 73 5f 69 6e 69 74 28 20 76 61 72 20 72 65 66 5f 63 6f 75 6e 74 20 3a 20   ┆ find_sys_init( var ref_count : ┆
0x074420…074440             69 6e 74 65 67 65 72 3b 20 76 61 72 20 64 79 6e 5f 72 65 66 73 20 3a 20 62 6f 6f 6c 65 61 6e 20   ┆integer; var dyn_refs : boolean ┆
0x074440…074460             3b 0a 76 61 72 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61   ┆; var shadow_count : integer; va┆
0x074460…074480             72 20 64 79 6e 5f 73 68 61 64 6f 77 73 20 3a 20 62 6f 6f 6c 65 61 6e 29 3b 0a 66 6f 72 77 61 72   ┆r dyn_shadows : boolean); forwar┆
0x074480…0744a0             64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 73 74 64 5f 70 72 6f 63 63 61 6c 6c 3b   ┆d;  procedure find_std_proccall;┆
0x0744a0…0744c0             0a 76 61 72 0a 64 75 6d 6d 79 5f 72 65 66 73 2c 20 64 75 6d 6d 79 5f 73 68 61 64 6f 77 73 2c 20   ┆ var dummy_refs, dummy_shadows, ┆
0x0744c0…0744e0             28 2a 20 66 6f 72 20 73 79 73 74 65 6d 20 69 6e 69 74 20 6f 66 20 68 65 61 70 20 65 6c 65 6d 65   ┆(* for system init of heap eleme┆
0x0744e0…074500             6e 74 73 20 2a 29 0a 73 69 7a 65 5f 6f 66 5f 72 65 73 75 6c 74 2c 20 6b 65 79 3a 20 69 6e 74 65   ┆nts *) size_of_result, key: inte┆
0x074500…074520             67 65 72 3b 20 0a 64 75 6d 6d 79 5f 64 79 6e 5f 72 65 66 73 2c 20 64 75 6d 6d 79 5f 64 79 6e 5f   ┆ger;  dummy_dyn_refs, dummy_dyn_┆
0x074520…074540             73 68 61 64 6f 77 73 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 69 66 20 69 6e 5f 69 6e   ┆shadows: boolean; begin if in_in┆
0x074540…074560             74 65 67 65 72 3c 3e 78 6e 65 77 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65   ┆teger<>xnew then error(pass4code┆
0x074560…074580             5f 65 72 72 6f 72 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20   ┆_error);  out_nl; out_comment(' ┆
0x074580…0745a0             6e 65 77 20 63 61 6c 6c 20 27 29 3b 0a 66 69 6e 64 5f 61 72 67 6c 69 73 74 28 65 78 74 5f 63 61   ┆new call '); find_arglist(ext_ca┆
0x0745a0…0745c0             6c 6c 2c 20 73 69 7a 65 5f 6f 66 5f 72 65 73 75 6c 74 29 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 28   ┆ll, size_of_result); skip_token(┆
0x0745c0…0745e0             78 65 6e 64 6e 65 77 63 61 6c 6c 29 3b 0a 0a 28 2a 20 65 6e 64 20 6f 66 20 6e 65 77 20 63 61 6c   ┆xendnewcall);  (* end of new cal┆
0x0745e0…074600             6c 2c 20 6d 61 6b 65 20 63 6f 64 65 20 74 6f 20 74 65 73 74 20 69 66 20 65 6e 6f 75 67 68 20 6d   ┆l, make code to test if enough m┆
0x074600…074620 (31, 0, 2)  65 6d 6f 72 79 20 28 72 65 73 75 6c 74 3c 3e 6e 69 6c 29 2c 0a 69 6e 69 74 69 61 6c 69 7a 65 20   ┆emory (result<>nil), initialize ┆
0x074620…074640             70 6f 73 73 69 62 6c 65 20 73 79 73 74 65 6d 20 63 6f 6d 70 6f 6e 65 6e 74 73 2c 20 61 6e 64 20   ┆possible system components, and ┆
0x074640…074660             61 73 69 67 6e 20 74 68 65 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 70 6f 69 6e 74 65 72 20   ┆asign the result to the pointer ┆
0x074660…074680             76 61 72 69 61 62 6c 65 20 20 2a 29 0a 28 2a 20 73 74 61 63 6b 20 70 69 63 74 75 72 65 3a 20 20   ┆variable  *) (* stack picture:  ┆
0x074680…0746a0             20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆                      ----------┆
0x0746a0…0746c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20   ┆---------------------           ┆
0x0746c0…0746e0             20 20 20 20 20 20 20 20 20 20 20 61 64 64 72 65 73 20 6f 66 20 70 6f 69 6e 74 65 72 20 76 61 72   ┆           addres of pointer var┆
0x0746e0…074700             69 61 62 6c 65 20 28 61 63 74 75 61 6c 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 6e 65 77 20 63   ┆iable (actual parameter of new c┆
0x074700…074720             61 6c 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d   ┆all)                    --------┆
0x074720…074740             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20   ┆-----------------------         ┆
0x074740…074760             20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f 6d 20 66 6f 72 20 61 64 64 72 65 73 73 20 6f 66   ┆             room for address of┆
0x074760…074780             20 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ allocated memory               ┆
0x074780…0747a0             20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆     ---------------------------┆
0x0747a0…0747c0             2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 6e 74 65 64   ┆----                      wanted┆
0x0747c0…0747e0             20 73 69 7a 65 20 69 6e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ size in bytes                  ┆
0x0747e0…074800             20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆  ------------------------------┆
0x074800…074820 (31, 0, 3)  2d 0a 20 20 20 20 74 6f 70 2d 3e 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 69 67 6e 20 28 62   ┆-     top->            allign (b┆
0x074820…074840             6f 6f 6c 65 61 6e 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆oolean value)                   ┆
0x074840…074860             20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -------------------------------┆
0x074860…074880             0a 2a 29 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75 73 65 2c 20 65 78 74 5f   ┆ *) code_call_proc(sys_use, ext_┆
0x074880…0748a0             6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 5f 5f 6e 65 77 5f 5f 5f 5f 72 63 27 29 2c 20 6b 65 79   ┆lookup(key, '___new____rc'), key┆
0x0748a0…0748c0             2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 0a 30 2c 20 32 2b 32 20 28 2a 20 70 61 72 61 6d 65 74   ┆, const_niv_0, 0, 2+2 (* paramet┆
0x0748c0…0748e0             65 72 20 6c 65 6e 67 74 68 20 2a 29 2c 20 34 29 3b 0a 0a 28 2a 20 73 74 61 63 6b 20 70 69 63 74   ┆er length *), 4);  (* stack pict┆
0x0748e0…074900             75 72 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d   ┆ure:                    --------┆
0x074900…074920             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20   ┆-----------------------         ┆
0x074920…074940             20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 72 65 73 73 20 6f 66 20 70 6f 69 6e 74 65 72 0a   ┆             address of pointer ┆
0x074940…074960             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆                   -------------┆
0x074960…074980             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 74 6f 70 20 2d 3e 20 20 20 20   ┆------------------    top ->    ┆
0x074980…0749a0             20 20 20 20 20 20 20 20 61 64 64 72 65 73 73 20 6f 66 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d   ┆        address of allocated mem┆
0x0749a0…0749c0             6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ory                    ---------┆
0x0749c0…0749e0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 28 2a 6f 75 74 5f   ┆---------------------- *) (*out_┆
0x0749e0…074a00             6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 28   ┆nl; out_token(zbegin); out_p_id(┆
0x074a00…074a20 (31, 0, 4)  69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 6c 69 73 74 29   ┆id_size_ok); out_token(zendlist)┆
0x074a20…074a40             3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 74 65 73 74 20 72 65 73 75 6c 74 20 3c 3e 20 6e   ┆; out_comment(' test result <> n┆
0x074a40…074a60             69 6c 27 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 61 78 64 29 3b 0a 6f 75 74 5f   ┆il'); out_opcode(op_reaxd); out_┆
0x074a60…074a80             6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c 20 2d 32 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆op_int(op_reasd, -2); out_opcode┆
0x074a80…074aa0             28 6f 70 5f 74 6e 69 6c 6c 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 7a 6e 65 2c 20   ┆(op_tnill); out_op_id(op_jmzne, ┆
0x074aa0…074ac0             69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65 72 28 63 5f   ┆id_size_ok); code_exc_trigger(c_┆
0x074ac0…074ae0             65 78 63 5f 6e 65 77 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b   ┆exc_new); out_label(id_size_ok);┆
0x074ae0…074b00             0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 29 3b 0a 2a 29 0a 0a 69 66   ┆ out_nl; out_token(zend); *)  if┆
0x074b00…074b20             20 74 6f 6b 65 6e 3d 78 73 79 73 6e 65 77 69 6e 69 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 68 65   ┆ token=xsysnewinit then begin he┆
0x074b20…074b40             61 70 5f 69 6e 69 74 3a 3d 20 74 72 75 65 3b 20 28 2a 20 66 6c 61 67 20 73 70 65 63 69 61 6c 20   ┆ap_init:= true; (* flag special ┆
0x074b40…074b60             63 68 61 69 6e 69 6e 67 20 6f 66 20 70 6f 73 73 69 62 6c 65 20 72 65 66 65 72 65 6e 63 65 73 20   ┆chaining of possible references ┆
0x074b60…074b80             61 6e 64 2f 6f 72 20 73 68 61 64 6f 77 73 20 2a 29 0a 66 69 6e 64 5f 73 79 73 5f 69 6e 69 74 28   ┆and/or shadows *) find_sys_init(┆
0x074b80…074ba0             64 75 6d 6d 79 5f 72 65 66 73 2c 20 64 75 6d 6d 79 5f 64 79 6e 5f 72 65 66 73 2c 20 64 75 6d 6d   ┆dummy_refs, dummy_dyn_refs, dumm┆
0x074ba0…074bc0             79 5f 73 68 61 64 6f 77 73 2c 20 64 75 6d 6d 79 5f 64 79 6e 5f 73 68 61 64 6f 77 73 29 3b 0a 68   ┆y_shadows, dummy_dyn_shadows); h┆
0x074bc0…074be0             65 61 70 5f 69 6e 69 74 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6f 70 5f 69   ┆eap_init:= false; end;  out_op_i┆
0x074be0…074c00             6e 74 28 6f 70 5f 73 74 76 73 61 2c 20 30 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 65   ┆nt(op_stvsa, 0); out_comment(' e┆
0x074c00…074c20 (31, 0, 5)  6e 64 20 6e 65 77 20 63 61 6c 6c 20 27 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 20 73 74   ┆nd new call ');  end; (* find st┆
0x074c20…074c40             64 20 70 72 6f 63 63 61 6c 6c 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f   ┆d proccall *)   procedure  find_┆
0x074c40…074c60             63 61 6c 6c 28 20 76 61 72 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c   ┆call( var size_of_function_resul┆
0x074c60…074c80             74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 76 61 72 0a 6e 69 76 2c 20 6c 69 78 2c 20 70 61   ┆t : integer );  var niv, lix, pa┆
0x074c80…074ca0             72 61 6d 6c 65 6e 67 74 68 2c 20 61 70 70 65 74 69 74 65 2c 20 6b 65 79 20 3a 20 69 6e 74 65 67   ┆ramlength, appetite, key : integ┆
0x074ca0…074cc0             65 72 3b 0a 63 61 6c 6c 6b 69 6e 64 20 3a 20 63 61 6c 6c 6d 6f 64 65 73 3b 0a 6e 61 6d 65 2c 20   ┆er; callkind : callmodes; name, ┆
0x074cc0…074ce0             69 64 20 3a 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 63 61 73 65 20 74 6f   ┆id : identifier;  begin  case to┆
0x074ce0…074d00             6b 65 6e 20 6f 66 0a 0a 78 70 72 6f 63 63 61 6c 6c 2c 0a 78 66 75 6e 63 63 61 6c 6c 3a 0a 62 65   ┆ken of  xproccall, xfunccall: be┆
0x074d00…074d20             67 69 6e 20 28 2a 20 69 6e 74 65 72 6e 61 6c 20 72 6f 75 74 69 6e 65 20 2a 29 0a 0a 6e 69 76 20   ┆gin (* internal routine *)  niv ┆
0x074d20…074d40             3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 69 78 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72   ┆:= in_integer; lix := in_integer┆
0x074d40…074d60             3b 0a 0a 63 61 6c 6c 6b 69 6e 64 20 3a 3d 20 69 6e 74 5f 63 61 6c 6c 3b 0a 65 6e 64 3b 0a 78 65   ┆;  callkind := int_call; end; xe┆
0x074d60…074d80             78 74 70 72 6f 63 63 61 6c 6c 2c 0a 78 65 78 74 66 75 6e 63 63 61 6c 6c 3a 0a 62 65 67 69 6e 20   ┆xtproccall, xextfunccall: begin ┆
0x074d80…074da0             28 2a 20 65 78 74 65 72 6e 61 6c 20 72 6f 75 74 69 6e 65 20 2a 29 0a 6b 65 79 20 3a 3d 20 69 6e   ┆(* external routine *) key := in┆
0x074da0…074dc0             5f 69 6e 74 65 67 65 72 3b 0a 6e 69 76 20 3a 3d 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 3b 0a 63 61   ┆_integer; niv := const_niv_0; ca┆
0x074dc0…074de0             6c 6c 6b 69 6e 64 20 3a 3d 20 67 65 74 6b 69 6e 64 20 28 6b 65 79 29 3b 0a 65 6e 64 3b 0a 0a 65   ┆llkind := getkind (key); end;  e┆
0x074de0…074e00             6c 73 65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b   ┆lse error(pass4code_error); end;┆
0x074e00…074e20 (31, 0, 6)  20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 70 61 72 61 6d 6c 65 6e 67 74 68 20 3a 3d 20 69 6e 5f 69   ┆ (* case *)  paramlength := in_i┆
0x074e20…074e40             6e 74 65 67 65 72 3b 0a 0a 66 69 6e 64 5f 61 72 67 6c 69 73 74 28 20 63 61 6c 6c 6b 69 6e 64 20   ┆nteger;  find_arglist( callkind ┆
0x074e40…074e60             20 2c 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 29 3b 0a 0a 63   ┆ , size_of_function_result );  c┆
0x074e60…074e80             6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 20 28 67 65 6e 65 72 61 6c 5f 75 73 65 2c 20 63 61 6c 6c   ┆ode_call_proc (general_use, call┆
0x074e80…074ea0             6b 69 6e 64 2c 20 6b 65 79 2c 20 6e 69 76 2c 20 6c 69 78 2c 20 70 61 72 61 6d 6c 65 6e 67 74 68   ┆kind, key, niv, lix, paramlength┆
0x074ea0…074ec0             2c 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 29 3b 0a 0a 0a 65 6e 64   ┆,size_of_function_result);   end┆
0x074ec0…074ee0             20 28 2a 20 20 66 69 6e 64 5f 63 61 6c 6c 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65   ┆ (*  find_call  *);    procedure┆
0x074ee0…074f00             20 20 66 69 6e 64 5f 63 6f 6e 73 74 61 6e 74 73 3b 0a 0a 76 61 72 0a 6e 2c 20 70 2c 20 69 20 3a   ┆  find_constants;  var n, p, i :┆
0x074f00…074f20             20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 77 68 69   ┆ integer;  begin  get_token; whi┆
0x074f20…074f40             6c 65 20 74 6f 6b 65 6e 20 3d 20 78 64 65 66 6c 69 78 20 64 6f 0a 62 65 67 69 6e 0a 0a 6f 75 74   ┆le token = xdeflix do begin  out┆
0x074f40…074f60             5f 6c 69 78 5f 6c 61 62 65 6c 20 28 63 5f 6e 61 6d 65 2c 20 69 6e 5f 69 6e 74 65 67 65 72 29 3b   ┆_lix_label (c_name, in_integer);┆
0x074f60…074f80             0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 20 20 28 2a 20 73 6b 69 70 3a 20 78 69 6e 69 74 63 6f 6e 73   ┆  get_token;  (* skip: xinitcons┆
0x074f80…074fa0             74 20 2a 29 0a 0a 6e 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f 74 61 62 28   ┆t *)  n := in_integer;  out_tab(┆
0x074fa0…074fc0             20 31 35 20 29 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 63 6f 6e 73 74 29 3b 20 20 6f 75 74 5f   ┆ 15 ); out_token (zconst);  out_┆
0x074fc0…074fe0             69 6e 74 65 67 65 72 28 20 32 2a 6e 20 29 3b 0a 0a 70 20 3a 3d 20 30 3b 0a 66 6f 72 20 69 20 3a   ┆integer( 2*n );  p := 0; for i :┆
0x074fe0…075000             3d 20 31 20 74 6f 20 6e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 70 20 6d 6f 64 20 35 20 3d 20 30   ┆= 1 to n do begin if p mod 5 = 0┆
0x075000…075020 (31, 0, 7)  20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 20 20 20 6f 75 74 5f 74 61 62 28 20 32   ┆ then begin out_nl;   out_tab( 2┆
0x075020…075040             30 20 29 0a 65 6e 64 0a 65 6c 73 65 0a 6f 75 74 5f 63 68 61 72 20 28 27 2c 27 29 3b 0a 6f 75 74   ┆0 ) end else out_char (','); out┆
0x075040…075060             5f 69 6e 74 65 67 65 72 28 20 69 6e 5f 69 6e 74 65 67 65 72 20 29 3b 0a 70 20 3a 3d 20 70 20 2b   ┆_integer( in_integer ); p := p +┆
0x075060…075080             20 31 0a 65 6e 64 3b 20 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 61 62 28 20 31 35 20 29 3b   ┆ 1 end;   out_nl; out_tab( 15 );┆
0x075080…0750a0             20 20 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 0a 67 65   ┆   out_token (zend); out_nl;  ge┆
0x0750a0…0750c0             74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 65 6e 64 20 28 2a 20 20 66 69 6e 64 5f 63 6f 6e 73 74   ┆t_token; end; end (*  find_const┆
0x0750c0…0750e0             61 6e 74 73 20 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 6d 61 6b 65 5f 74   ┆ants  *);   procedure out_make_t┆
0x0750e0…075100             6f 70 5f 65 76 65 6e 3b 0a 28 2a 20 6d 61 6b 65 20 74 6f 70 20 6f 66 20 73 74 61 63 6b 20 76 61   ┆op_even; (* make top of stack va┆
0x075100…075120             72 69 61 62 6c 65 20 65 76 65 6e 2c 20 69 2e 65 2e 20 72 6f 75 6e 64 20 75 70 20 2a 29 0a 0a 62   ┆riable even, i.e. round up *)  b┆
0x075120…075140             65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 6f 75   ┆egin  out_opcode( op_revpw ); ou┆
0x075140…075160             74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 31 20 29 3b 0a 6f 75 74 5f 6f 70 63   ┆t_op_int( op_rechw, 1 ); out_opc┆
0x075160…075180             6f 64 65 28 20 6f 70 5f 61 6e 64 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61   ┆ode( op_and ); out_opcode( op_ua┆
0x075180…0751a0             64 64 20 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 6d 70 75 74 65 5f   ┆dd );  end;   procedure compute_┆
0x0751a0…0751c0             6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 65 6e 74 73 20 28 20 64 6f 70 65 5f 73 74 61 72 74 20   ┆number_of_elements ( dope_start ┆
0x0751c0…0751e0             3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 28 2a 20 64 6f 70 65 5f 73 74 61 72 74 20 3d 20 5e 20   ┆: integer );  (* dope_start = ^ ┆
0x0751e0…075200             72 65 63 6f 72 64 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 2c   ┆record .                   size,┆
0x075200…075220 (31, 0, 8)  0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 72 73 74 5f 69 6e 64 65 78   ┆ .                   first_index┆
0x075220…075240             2c 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 69 6e 64 65 78   ┆, .                   last_index┆
0x075240…075260             2c 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 5f 73 69   ┆, .                   element_si┆
0x075260…075280             7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ze : integer; .                 ┆
0x075280…0752a0             65 6e 64 0a 0a 2a 29 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65   ┆end  *)  begin  out_nl; out_toke┆
0x0752a0…0752c0             6e 20 28 7a 62 65 67 69 6e 29 3b 20 6f 75 74 5f 70 5f 69 64 28 20 69 64 5f 65 6c 65 6d 73 5f 72   ┆n (zbegin); out_p_id( id_elems_r┆
0x0752c0…0752e0             65 61 64 79 20 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75   ┆eady ); out_token (zendlist); ou┆
0x0752e0…075300             74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 63 6f 6d 70 75 74 65 20 6e 75 6d 62 65 72 20 6f 66 20   ┆t_comment( '  compute number of ┆
0x075300…075320             65 6c 65 6d 65 6e 74 73 20 27 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65   ┆elements ' );  out_op_int( op_re┆
0x075320…075340             76 6c 64 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 32 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64   ┆vld, dope_start + 2 ); out_opcod┆
0x075340…075360             65 28 20 6f 70 5f 6c 65 20 29 3b 20 28 2a 20 30 3a 20 66 69 72 73 74 20 3e 20 6c 61 73 74 2c 20   ┆e( op_le ); (* 0: first > last, ┆
0x075360…075380             69 2e 65 2e 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 3d 20 30 20 2a 29 0a 6f   ┆i.e. number of elements = 0 *) o┆
0x075380…0753a0             75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64   ┆ut_opcode( op_revpw ); out_op_id┆
0x0753a0…0753c0             20 28 20 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 65 6c 65 6d 73 5f 72 65 61 64 79 20 29 3b 20 28   ┆ ( op_jmzeq, id_elems_ready ); (┆
0x0753c0…0753e0             2a 20 69 66 20 66 69 72 73 74 20 3e 20 6c 61 73 74 20 74 68 65 6e 20 6e 6f 5f 6f 66 5f 65 6c 65   ┆* if first > last then no_of_ele┆
0x0753e0…075400             6d 73 20 3a 3d 20 30 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 76 6c 77 2c   ┆ms := 0 *) out_op_int( op_revlw,┆
0x075400…075420 (31, 0, 9)  20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 34 20 29 3b 20 28 2a 20 20 65 6c 73 65 20 20 2a 29 0a   ┆ dope_start + 4 ); (*  else  *) ┆
0x075420…075440             6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74   ┆out_op_int( op_revlw, dope_start┆
0x075440…075460             20 2b 20 32 20 29 3b 20 28 2a 20 6e 6f 5f 6f 66 5f 65 6c 65 6d 73 20 3a 3d 20 20 20 20 20 20 20   ┆ + 2 ); (* no_of_elems :=       ┆
0x075460…075480             2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6d 73 75 62 20 29 3b 20 20 20 20 20 20 20   ┆*) out_opcode( op_msub );       ┆
0x075480…0754a0             20 20 20 20 20 20 20 20 20 20 20 28 2a 20 20 6c 61 73 74 20 2d 20 66 69 72 73 74 20 20 20 20 20   ┆           (*  last - first     ┆
0x0754a0…0754c0             20 20 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64 64 20 29 3b 20 20 20 20   ┆   *) out_opcode( op_uadd );    ┆
0x0754c0…0754e0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 20 20 20 20 2b 20 31 20 20 20 20 20 20 20 20   ┆              (*     + 1        ┆
0x0754e0…075500             20 20 20 20 20 20 2a 29 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 20 69 64 5f 65 6c 65 6d 73 5f 72 65   ┆      *) out_label ( id_elems_re┆
0x075500…075520             61 64 79 20 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b   ┆ady ); out_nl; out_token (zend);┆
0x075520…075540             0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 6c 61 73 74 20 2d 20 66 69 72 73 74 20 2b 20 31 20   ┆ out_comment(' last - first + 1 ┆
0x075540…075560             27 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 64 79 6e 5f 74 79 70 65 5f   ┆');  end;    procedure dyn_type_┆
0x075560…075580             64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 76 61 72 0a 74 65 6d 70 6c 61 74 65 5f 76 2c 20 74 65   ┆declaration;  var template_v, te┆
0x075580…0755a0             6d 70 6c 61 74 65 31 5f 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 73 69 7a 65 2c   ┆mplate1_v : varaddr_descr; size,┆
0x0755a0…0755c0             20 66 69 72 73 74 2c 20 6c 61 73 74 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 3a 20 69 6e 74 65 67   ┆ first, last, dope_start : integ┆
0x0755c0…0755e0             65 72 3b 0a 65 6c 65 6d 65 6e 74 5f 73 69 7a 65 2c 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64   ┆er; element_size, fields_pr_word┆
0x0755e0…075600             2c 20 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 20 3a 20 69 6e 74 65 67 65 72 3b 0a 61 6c 6c 69 67   ┆, bits_pr_field : integer; allig┆
0x075600…075620 (31, 0, 10) 6e 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 76 61 72 5f 76 61 6c 5f 76 20 3a 20 76 61 72 76 61 6c 75   ┆n : boolean; var_val_v : varvalu┆
0x075620…075640             65 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78   ┆e_descr;  begin  case token of x┆
0x075640…075660             61 72 72 61 79 31 74 65 6d 70 6c 61 74 65 2c 0a 78 61 72 72 61 79 32 74 65 6d 70 6c 61 74 65 2c   ┆array1template, xarray2template,┆
0x075660…075680             0a 78 61 72 72 61 79 33 74 65 6d 70 6c 61 74 65 20 3a 20 62 65 67 69 6e 0a 0a 64 6f 70 65 5f 73   ┆ xarray3template : begin  dope_s┆
0x075680…0756a0             74 61 72 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73   ┆tart := in_integer; get_niv_offs┆
0x0756a0…0756c0             65 74 28 20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a   ┆et( template_v ); case token of ┆
0x0756c0…0756e0             78 61 72 72 61 79 31 74 65 6d 70 6c 61 74 65 3a 20 62 65 67 69 6e 20 28 2a 20 64 79 6e 61 6d 69   ┆xarray1template: begin (* dynami┆
0x0756e0…075700             63 20 69 6e 64 65 78 20 72 61 6e 67 65 2c 20 73 74 61 74 69 63 20 63 6f 6d 70 20 2a 29 0a 65 6c   ┆c index range, static comp *) el┆
0x075700…075720             65 6d 65 6e 74 5f 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 66 69 65 6c 64 73   ┆ement_size := in_integer; fields┆
0x075720…075740             5f 70 72 5f 77 6f 72 64 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 62 69 74 73 5f 70 72 5f   ┆_pr_word := in_integer; bits_pr_┆
0x075740…075760             66 69 65 6c 64 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 77 69 74 68 20 74 65 6d 70 6c   ┆field := in_integer;  with templ┆
0x075760…075780             61 74 65 5f 76 20 64 6f 0a 28 2a 6c 6f 61 64 20 28 66 69 72 73 74 2c 20 6c 61 73 74 29 20 2a 29   ┆ate_v do (*load (first, last) *)┆
0x075780…0757a0             0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 64 6f 75 62 6c 65 5f 74 79 70 2c   ┆ out_op_rev__(access,double_typ,┆
0x0757a0…0757c0             63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 2b 32 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28   ┆c.niv-niv,offset+2); out_op_int(┆
0x0757c0…0757e0             20 6f 70 5f 73 74 76 6c 64 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 32 20 29 3b 0a 0a 69 66   ┆ op_stvld, dope_start + 2 );  if┆
0x0757e0…075800             20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 20 3d 20 31 20 74 68 65 6e 20 0a 62 65 67 69 6e 20   ┆ fields_pr_word = 1 then  begin ┆
0x075800…075820 (31, 0, 11) 28 2a 20 75 6e 70 61 63 6b 65 64 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72   ┆(* unpacked *)  out_op_int( op_r┆
0x075820…075840             65 63 68 77 2c 20 65 6c 65 6d 65 6e 74 5f 73 69 7a 65 20 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e   ┆echw, element_size ); out_commen┆
0x075840…075860             74 28 20 27 20 75 6e 70 61 63 6b 65 64 20 64 79 6e 20 61 72 72 61 79 2c 20 73 74 61 74 69 63 20   ┆t( ' unpacked dyn array, static ┆
0x075860…075880             63 6f 6d 70 20 27 20 29 3b 0a 69 66 20 65 6c 65 6d 65 6e 74 5f 73 69 7a 65 20 3e 20 32 20 74 68   ┆comp ' ); if element_size > 2 th┆
0x075880…0758a0             65 6e 20 28 2a 20 70 72 65 70 61 72 65 20 6d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e 20 2a 29 0a   ┆en (* prepare multiplication *) ┆
0x0758a0…0758c0             6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69   ┆out_opcode( op_revpw ); out_op_i┆
0x0758c0…0758e0             6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 36 20 29 3b 0a   ┆nt( op_stvlw, dope_start + 6 ); ┆
0x0758e0…075900             0a 28 2a 20 63 6f 6d 70 75 74 65 20 74 68 65 20 73 69 7a 65 20 2a 29 0a 63 6f 6d 70 75 74 65 5f   ┆ (* compute the size *) compute_┆
0x075900…075920             6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 65 6e 74 73 20 28 20 64 6f 70 65 5f 73 74 61 72 74 20   ┆number_of_elements ( dope_start ┆
0x075920…075940             29 3b 0a 69 66 20 65 6c 65 6d 65 6e 74 5f 73 69 7a 65 20 3e 20 32 20 74 68 65 6e 0a 6f 75 74 5f   ┆); if element_size > 2 then out_┆
0x075940…075960             6f 70 63 6f 64 65 28 20 6f 70 5f 75 6d 75 6c 20 29 0a 65 6c 73 65 0a 69 66 20 65 6c 65 6d 65 6e   ┆opcode( op_umul ) else if elemen┆
0x075960…075980             74 5f 73 69 7a 65 20 3d 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆t_size = 2 then begin out_opcode┆
0x075980…0759a0             28 20 6f 70 5f 72 65 76 70 77 20 29 3b 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 2a 20 32   ┆( op_revpw ); out_comment( ' * 2┆
0x0759a0…0759c0             20 28 65 6c 65 6d 65 6e 74 20 73 69 7a 65 29 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28   ┆ (element size) ' ); out_opcode(┆
0x0759c0…0759e0             20 6f 70 5f 75 61 64 64 20 20 29 3b 0a 65 6e 64 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70   ┆ op_uadd  ); end; out_op_int( op┆
0x0759e0…075a00             5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 29 3b 0a 0a 65 6e 64 0a 0a 65 6c 73 65   ┆_stvlw, dope_start );  end  else┆
0x075a00…075a20 (31, 0, 12) 0a 0a 62 65 67 69 6e 20 28 2a 20 70 61 63 6b 65 64 20 61 72 72 61 79 20 2a 29 0a 0a 6f 75 74 5f   ┆  begin (* packed array *)  out_┆
0x075a20…075a40             6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64   ┆op_int( op_rechw, fields_pr_word┆
0x075a40…075a60             20 2a 20 32 35 36 20 2b 20 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 20 29 3b 0a 6f 75 74 5f 63 6f   ┆ * 256 + bits_pr_field ); out_co┆
0x075a60…075a80             6d 6d 65 6e 74 28 20 27 20 70 61 63 6b 65 64 20 64 79 6e 20 61 72 72 61 79 2c 20 73 74 61 74 69   ┆mment( ' packed dyn array, stati┆
0x075a80…075aa0             63 20 63 6f 6d 70 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77   ┆c comp ' ); out_op_int( op_stvlw┆
0x075aa0…075ac0             2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 36 20 29 3b 0a 0a 63 6f 6d 70 75 74 65 5f 6e 75 6d   ┆, dope_start + 6 );  compute_num┆
0x075ac0…075ae0             62 65 72 5f 6f 66 5f 65 6c 65 6d 65 6e 74 73 28 20 64 6f 70 65 5f 73 74 61 72 74 20 29 3b 0a 6f   ┆ber_of_elements( dope_start ); o┆
0x075ae0…075b00             75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69   ┆ut_opcode( op_revpw );  out_op_i┆
0x075b00…075b20             6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 20 29 3b 0a   ┆nt( op_rechw, fields_pr_word ); ┆
0x075b20…075b40             6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 64 69 76 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64   ┆out_opcode( op_udiv ); out_opcod┆
0x075b40…075b60             65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 2a 20   ┆e( op_revpw ); out_comment( ' * ┆
0x075b60…075b80             32 20 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64 64 20 29 3b 0a 0a   ┆2  ' ); out_opcode( op_uadd );  ┆
0x075b80…075ba0             6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 78 64 20 29 3b 20 20 28 2a 20 67 65 74 20   ┆out_opcode( op_reaxd );  (* get ┆
0x075ba0…075bc0             6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆number of elements *) out_op_int┆
0x075bc0…075be0             28 20 6f 70 5f 72 65 76 73 77 2c 20 2d 33 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f   ┆( op_revsw, -3 );  out_op_int( o┆
0x075be0…075c00             70 5f 72 65 63 68 77 2c 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 20 29 3b 0a 6f 75 74 5f 6f   ┆p_rechw, fields_pr_word ); out_o┆
0x075c00…075c20 (31, 0, 13) 70 63 6f 64 65 28 20 6f 70 5f 75 6d 6f 64 20 29 3b 0a 69 66 20 62 69 74 73 5f 70 72 5f 66 69 65   ┆pcode( op_umod ); if bits_pr_fie┆
0x075c20…075c40             6c 64 20 3e 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70   ┆ld > 2 then begin out_op_int( op┆
0x075c40…075c60             5f 72 65 63 68 77 2c 20 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 20 29 3b 0a 0a 6f 75 74 5f 6f 70   ┆_rechw, bits_pr_field );  out_op┆
0x075c60…075c80             63 6f 64 65 28 20 6f 70 5f 75 6d 75 6c 20 29 3b 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20   ┆code( op_umul ); out_comment( ' ┆
0x075c80…075ca0             2a 20 62 69 74 73 20 70 65 72 20 66 69 65 6c 64 20 27 20 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69   ┆* bits per field ' ); end else i┆
0x075ca0…075cc0             66 20 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 20 3d 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f   ┆f bits_pr_field = 2 then begin o┆
0x075cc0…075ce0             75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 20 6f 75 74 5f 63 6f 6d 6d 65   ┆ut_opcode( op_revpw ); out_comme┆
0x075ce0…075d00             6e 74 28 20 27 20 2a 20 62 69 74 73 20 70 65 72 20 66 69 65 6c 64 20 20 28 3d 20 32 20 29 20 27   ┆nt( ' * bits per field  (= 2 ) '┆
0x075d00…075d20             20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64 64 20 29 3b 0a 65 6e 64 3b 0a   ┆ ); out_opcode( op_uadd ); end; ┆
0x075d20…075d40             6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 75 61 64 68 77 2c 20 37 20 29 3b 0a 6f 75 74 5f 6f   ┆out_op_int( op_uadhw, 7 ); out_o┆
0x075d40…075d60             70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 38 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆p_int( op_rechw, 8 ); out_opcode┆
0x075d60…075d80             28 20 6f 70 5f 75 64 69 76 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64   ┆( op_udiv );  out_opcode( op_uad┆
0x075d80…075da0             64 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65   ┆d );  out_op_int( op_stvlw, dope┆
0x075da0…075dc0             5f 73 74 61 72 74 20 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 74 6e 68   ┆_start ); out_specopcode(op_stnh┆
0x075dc0…075de0             62 2c 2d 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 61 63 6b 65 64   ┆b,-word_length);  end; (* packed┆
0x075de0…075e00             20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 61 72 72 61 79 31 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a   ┆ *)  end; (* array1 template *) ┆
0x075e00…075e20 (31, 0, 14) 0a 78 61 72 72 61 79 32 74 65 6d 70 6c 61 74 65 3a 20 28 2a 20 73 74 61 74 69 63 20 69 6e 64 65   ┆ xarray2template: (* static inde┆
0x075e20…075e40             78 2c 20 64 79 6e 61 6d 69 63 20 63 6f 6d 70 20 2a 29 0a 62 65 67 69 6e 0a 0a 66 69 72 73 74 20   ┆x, dynamic comp *) begin  first ┆
0x075e40…075e60             3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 61 73 74 20 20 3a 3d 20 69 6e 5f 69 6e 74 65 67   ┆:= in_integer; last  := in_integ┆
0x075e60…075e80             65 72 3b 0a 61 6c 6c 69 67 6e 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 20 3d 20 31 3b 0a 0a 6f   ┆er; allign := in_integer = 1;  o┆
0x075e80…075ea0             75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 66 69 72 73 74 20 29 3b 0a 6f 75   ┆ut_op_int( op_rechw, first ); ou┆
0x075ea0…075ec0             74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 6c 61 73 74 20 20 29 3b 0a 6f 75 74   ┆t_op_int( op_rechw, last  ); out┆
0x075ec0…075ee0             5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 64 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20   ┆_op_int( op_stvld, dope_start + ┆
0x075ee0…075f00             32 20 29 3b 0a 0a 77 69 74 68 20 74 65 6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f   ┆2 );  with template_v do out_op_┆
0x075f00…075f20             72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c   ┆rev__(access,word_typ,c.niv-niv,┆
0x075f20…075f40             6f 66 66 73 65 74 29 3b 0a 0a 69 66 20 61 6c 6c 69 67 6e 20 74 68 65 6e 20 6f 75 74 5f 6d 61 6b   ┆offset);  if allign then out_mak┆
0x075f40…075f60             65 5f 74 6f 70 5f 65 76 65 6e 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70   ┆e_top_even;  out_opcode( op_revp┆
0x075f60…075f80             77 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f   ┆w ); out_op_int( op_stvlw, dope_┆
0x075f80…075fa0             73 74 61 72 74 20 2b 20 36 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63   ┆start + 6 );  out_op_int( op_rec┆
0x075fa0…075fc0             68 77 2c 20 6c 61 73 74 20 2d 20 66 69 72 73 74 20 2b 20 31 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f   ┆hw, last - first + 1 ); out_opco┆
0x075fc0…075fe0             64 65 28 20 6f 70 5f 75 6d 75 6c 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74   ┆de( op_umul ); out_op_int( op_st┆
0x075fe0…076000             76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 61 72 72 61   ┆vlw, dope_start );  end; (* arra┆
0x076000…076020 (31, 0, 15) 79 32 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 0a 78 61 72 72 61 79 33 74 65 6d 70 6c 61 74 65 3a   ┆y2 template *)  xarray3template:┆
0x076020…076040             20 28 2a 20 64 79 6e 61 6d 69 63 20 69 6e 64 65 78 2c 20 64 79 6e 61 6d 69 63 20 63 6f 6d 70 20   ┆ (* dynamic index, dynamic comp ┆
0x076040…076060             2a 29 0a 62 65 67 69 6e 0a 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 74 65 6d 70 6c 61   ┆*) begin  get_niv_offset( templa┆
0x076060…076080             74 65 31 5f 76 20 29 3b 0a 61 6c 6c 69 67 6e 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 20 3d 20   ┆te1_v ); allign := in_integer = ┆
0x076080…0760a0             31 3b 0a 0a 77 69 74 68 20 74 65 6d 70 6c 61 74 65 31 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72   ┆1;  with template1_v do out_op_r┆
0x0760a0…0760c0             65 76 5f 5f 28 61 63 63 65 73 73 2c 64 6f 75 62 6c 65 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76   ┆ev__(access,double_typ,c.niv-niv┆
0x0760c0…0760e0             2c 6f 66 66 73 65 74 20 2b 20 32 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76   ┆,offset + 2); out_op_int( op_stv┆
0x0760e0…076100             6c 64 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 32 20 29 3b 0a 0a 77 69 74 68 20 74 65 6d 70   ┆ld, dope_start + 2 );  with temp┆
0x076100…076120             6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f   ┆late_v do out_op_rev__(access,wo┆
0x076120…076140             72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 69 66 20 61 6c 6c   ┆rd_typ,c.niv-niv,offset); if all┆
0x076140…076160             69 67 6e 20 74 68 65 6e 20 6f 75 74 5f 6d 61 6b 65 5f 74 6f 70 5f 65 76 65 6e 3b 0a 6f 75 74 5f   ┆ign then out_make_top_even; out_┆
0x076160…076180             6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20   ┆opcode( op_revpw ); out_op_int( ┆
0x076180…0761a0             6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 36 20 29 3b 0a 0a 63 6f 6d   ┆op_stvlw, dope_start + 6 );  com┆
0x0761a0…0761c0             70 75 74 65 5f 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 65 6e 74 73 28 20 64 6f 70 65 5f 73 74   ┆pute_number_of_elements( dope_st┆
0x0761c0…0761e0             61 72 74 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 6d 75 6c 20 29 3b 0a 6f 75   ┆art ); out_opcode( op_umul ); ou┆
0x0761e0…076200             74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 29   ┆t_op_int( op_stvlw, dope_start )┆
0x076200…076220 (31, 1, 1)  3b 0a 0a 65 6e 64 3b 20 28 2a 20 61 72 72 61 79 33 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 0a 65   ┆;  end; (* array3 template *)  e┆
0x076220…076240             6e 64 3b 20 28 2a 20 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 20 2a 29 0a 0a 67 65 74 5f 74 6f 6b   ┆nd; (* case token of *)  get_tok┆
0x076240…076260             65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 61 72 72 61 79 20 31 2c 20 32 2c 20 33 20 74 65 6d 70 6c   ┆en;  end; (* array 1, 2, 3 templ┆
0x076260…076280             61 74 65 20 2a 29 0a 0a 0a 78 72 65 63 6f 72 64 74 65 6d 70 6c 61 74 65 20 3a 0a 62 65 67 69 6e   ┆ate *)   xrecordtemplate : begin┆
0x076280…0762a0             0a 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 28 2a 20 73 69 7a 65 20 6f 66   ┆  size := in_integer; (* size of┆
0x0762a0…0762c0             20 73 74 61 74 69 63 20 70 61 72 74 20 2a 29 0a 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28   ┆ static part *)  get_niv_offset(┆
0x0762c0…0762e0             20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 69 66 20 73 69 7a 65 20 3c 3e 20 30 20 74 68 65 6e   ┆ template_v ); if size <> 0 then┆
0x0762e0…076300             0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 73 69 7a 65 20 29 3b 0a   ┆  out_op_int( op_rechw, size ); ┆
0x076300…076320             77 69 74 68 20 74 65 6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28   ┆with template_v do out_op_rev__(┆
0x076320…076340             61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74   ┆access,word_typ,c.niv-niv,offset┆
0x076340…076360             29 3b 0a 69 66 20 73 69 7a 65 20 3c 3e 20 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28   ┆); if size <> 0 then out_opcode(┆
0x076360…076380             20 6f 70 5f 75 61 64 64 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 77 68 69 6c 65 20 74   ┆ op_uadd );  get_token;  while t┆
0x076380…0763a0             6f 6b 65 6e 20 3c 3e 20 78 65 6e 64 74 65 6d 70 6c 61 74 65 20 64 6f 0a 62 65 67 69 6e 0a 0a 63   ┆oken <> xendtemplate do begin  c┆
0x0763a0…0763c0             61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 78 69 6e 63 66 69 65 6c 64 3a 20 62 65 67 69 6e 0a 6f   ┆ase token of  xincfield: begin o┆
0x0763c0…0763e0             75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 75 61 64 68 77 2c 20 31 20 29 3b 0a 67 65 74 5f 74 6f   ┆ut_op_int( op_uadhw, 1 ); get_to┆
0x0763e0…076400             6b 65 6e 3b 0a 65 6e 64 3b 20 28 2a 20 69 6e 63 66 69 65 6c 64 20 2a 29 0a 0a 78 66 69 65 6c 64   ┆ken; end; (* incfield *)  xfield┆
0x076400…076420 (31, 1, 2)  73 69 7a 65 2c 20 78 64 79 6e 66 69 65 6c 64 73 69 7a 65 20 3a 0a 62 65 67 69 6e 0a 0a 61 6c 6c   ┆size, xdynfieldsize : begin  all┆
0x076420…076440             69 67 6e 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 20 3d 20 31 3b 0a 64 6f 70 65 5f 73 74 61 72   ┆ign := in_integer = 1; dope_star┆
0x076440…076460             74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 66 69 65 6c 64 20 74 65 6d 70 6c   ┆t := in_integer;  (* field templ┆
0x076460…076480             61 74 65 20 2a 29 0a 0a 69 66 20 61 6c 6c 69 67 6e 20 74 68 65 6e 20 6f 75 74 5f 6d 61 6b 65 5f   ┆ate *)  if allign then out_make_┆
0x076480…0764a0             74 6f 70 5f 65 76 65 6e 3b 0a 28 2a 20 61 73 73 69 67 6e 20 74 6f 20 66 69 65 6c 64 20 74 65 6d   ┆top_even; (* assign to field tem┆
0x0764a0…0764c0             70 6c 61 74 65 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b   ┆plate *) out_opcode( op_revpw );┆
0x0764c0…0764e0             0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72   ┆ out_op_int( op_stvlw, dope_star┆
0x0764e0…076500             74 20 29 3b 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 66 69 65 6c 64 73 69 7a 65 20 74 68 65 6e   ┆t );  if token = xfieldsize then┆
0x076500…076520             0a 62 65 67 69 6e 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 73 69   ┆ begin size := in_integer; if si┆
0x076520…076540             7a 65 20 3c 3e 20 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68   ┆ze <> 0 then out_op_int( op_rech┆
0x076540…076560             77 2c 20 73 69 7a 65 20 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 73 69 7a 65 20 3a   ┆w, size ); end else begin size :┆
0x076560…076580             3d 20 2d 31 3b 20 20 28 2a 20 3c 3e 20 30 20 21 21 21 20 2a 29 0a 0a 67 65 74 5f 6e 69 76 5f 6f   ┆= -1;  (* <> 0 !!! *)  get_niv_o┆
0x076580…0765a0             66 66 73 65 74 28 20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 77 69 74 68 20 74 65 6d 70 6c 61   ┆ffset( template_v ); with templa┆
0x0765a0…0765c0             74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64   ┆te_v do out_op_rev__(access,word┆
0x0765c0…0765e0             5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 65 6e 64 3b 0a 0a 69 66   ┆_typ,c.niv-niv,offset); end;  if┆
0x0765e0…076600             20 73 69 7a 65 20 3c 3e 20 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75   ┆ size <> 0 then out_opcode( op_u┆
0x076600…076620 (31, 1, 3)  61 64 64 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 20 3b 20 28 2a 20 66 69 65   ┆add );  get_token;  end ; (* fie┆
0x076620…076640             6c 64 20 73 69 7a 65 2c 20 64 79 6e 20 66 69 65 6c 64 20 73 69 7a 65 20 2a 29 0a 65 6c 73 65 0a   ┆ld size, dyn field size *) else ┆
0x076640…076660             0a 0a 64 79 6e 5f 74 79 70 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 65 6e 64 3b 0a 0a 65 6e   ┆  dyn_type_declaration; end;  en┆
0x076660…076680             64 3b 20 28 2a 20 77 68 69 6c 65 20 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f   ┆d; (* while  *)  out_op_int( op_┆
0x076680…0766a0             73 74 76 6c 77 2c 20 69 6e 5f 69 6e 74 65 67 65 72 20 29 3b 20 20 20 28 2a 20 72 65 63 6f 72 64   ┆stvlw, in_integer );   (* record┆
0x0766a0…0766c0             20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a   ┆ template *) get_token;  end; (*┆
0x0766c0…0766e0             20 72 65 63 6f 72 64 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 0a 65 6c 73 65 0a 69 66 20 74 6f 6b   ┆ record template *)  else if tok┆
0x0766e0…076700             65 6e 20 3c 3e 20 78 65 6e 64 64 65 63 6c 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6d 75 73   ┆en <> xenddecl then begin (* mus┆
0x076700…076720             74 20 62 65 20 64 79 6e 61 6d 69 63 20 73 75 62 72 61 6e 67 65 20 74 79 70 65 20 64 65 66 69 6e   ┆t be dynamic subrange type defin┆
0x076720…076740             69 74 69 6f 6e 20 2a 29 0a 28 2a 20 2d 2d 2d 3e 20 65 78 70 72 20 2d 2d 2d 3e 20 65 78 70 72 20   ┆ition *) (* ---> expr ---> expr ┆
0x076740…076760             2d 2d 2d 3e 20 73 75 62 64 65 66 28 20 6f 66 66 73 65 74 20 29 20 20 2d 2d 2d 2d 3e 20 20 20 2a   ┆---> subdef( offset )  ---->   *┆
0x076760…076780             29 0a 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 20 28 2a 20 6c 6f 61 64 20 65 78 70 72 31 20 61 6e   ┆)  find_exprs(  (* load expr1 an┆
0x076780…0767a0             64 20 65 78 70 72 32 20 20 2a 29 20 76 61 72 5f 76 61 6c 5f 76 20 29 3b 0a 0a 28 2a 20 69 6e 69   ┆d expr2  *) var_val_v );  (* ini┆
0x0767a0…0767c0             74 69 61 6c 69 7a 65 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20   ┆tialize template *) out_op_int( ┆
0x0767c0…0767e0             6f 70 5f 72 65 63 68 77 2c 20 32 20 29 3b 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 73 75 62 64   ┆op_rechw, 2 ); if token <> xsubd┆
0x0767e0…076800             65 66 20 74 68 65 6e 20 65 72 72 6f 72 20 28 20 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 20   ┆ef then error ( pass4code_error ┆
0x076800…076820 (31, 1, 4)  29 3b 0a 64 6f 70 65 5f 73 74 61 72 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 6f 75   ┆); dope_start := in_integer;  ou┆
0x076820…076840             74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 29   ┆t_op_int( op_stvlw, dope_start )┆
0x076840…076860             3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 64 2c 20 64 6f 70 65 5f 73 74 61   ┆; out_op_int( op_stvld, dope_sta┆
0x076860…076880             72 74 20 2b 20 32 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 73 75   ┆rt + 2 ); get_token;  end; (* su┆
0x076880…0768a0             62 64 65 66 20 2e 2e 2e 2e 20 2a 29 0a 65 6e 64 3b 0a 0a 65 6e 64 20 3b 20 28 2a 20 64 79 6e 20   ┆bdef .... *) end;  end ; (* dyn ┆
0x0768a0…0768c0             74 79 70 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 2a 29 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f   ┆type declaration *)  procedure o┆
0x0768c0…0768e0             75 74 5f 70 61 72 61 6d 73 3b 0a 28 2a 20 20 63 6f 70 79 20 74 68 65 20 70 72 6f 63 65 73 73 20   ┆ut_params; (*  copy the process ┆
0x0768e0…076900             70 61 72 61 6d 65 74 65 72 20 64 65 73 63 72 69 70 74 69 6f 6e 20 69 6e 74 6f 20 61 20 63 6f 6e   ┆parameter description into a con┆
0x076900…076920             73 74 61 6e 74 20 62 6c 6f 63 6b 3a 20 20 2a 29 0a 76 61 72 0a 73 74 65 70 2c 20 70 61 72 61 6d   ┆stant block:  *) var step, param┆
0x076920…076940             5f 63 6f 75 6e 74 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 70 61 72 61 6d 5f 63 6f   ┆_count: integer;  begin param_co┆
0x076940…076960             75 6e 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64   ┆unt := in_integer; out_label (id┆
0x076960…076980             5f 70 61 72 61 6d 29 3b 0a 6f 75 74 5f 74 61 62 20 28 31 35 29 3b 20 6f 75 74 5f 74 6f 6b 65 6e   ┆_param); out_tab (15); out_token┆
0x076980…0769a0             20 28 7a 63 6f 6e 73 74 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 34 20 2a 20 70 61 72 61   ┆ (zconst); out_integer( 4 * para┆
0x0769a0…0769c0             6d 5f 63 6f 75 6e 74 20 2b 20 32 20 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 20 6f 75 74 5f 74 61 62   ┆m_count + 2 ); out_nl;   out_tab┆
0x0769c0…0769e0             28 20 32 30 20 29 3b 20 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 70 61 72 61 6d 5f 63 6f 75   ┆( 20 );   out_integer( param_cou┆
0x0769e0…076a00             6e 74 20 29 3b 0a 0a 66 6f 72 20 73 74 65 70 20 3a 3d 20 31 20 74 6f 20 70 61 72 61 6d 5f 63 6f   ┆nt );  for step := 1 to param_co┆
0x076a00…076a20 (31, 1, 5)  75 6e 74 20 64 6f 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 20 20 28 2a 20 73 6b 69 70   ┆unt do begin get_token;  (* skip┆
0x076a20…076a40             3a 20 78 70 61 72 61 6d 74 79 70 65 20 2a 29 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 20 6f 75 74 5f 74   ┆: xparamtype *)  out_nl;   out_t┆
0x076a40…076a60             61 62 28 20 32 30 20 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 69 6e 5f 69 6e 74 65 67 65   ┆ab( 20 ); out_integer( in_intege┆
0x076a60…076a80             72 20 29 3b 0a 6f 75 74 5f 63 68 61 72 20 28 27 2c 27 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72   ┆r ); out_char (','); out_integer┆
0x076a80…076aa0             28 20 69 6e 5f 69 6e 74 65 67 65 72 20 29 0a 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75   ┆( in_integer )  end;  out_nl; ou┆
0x076aa0…076ac0             74 5f 74 61 62 20 28 31 35 29 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75   ┆t_tab (15); out_token (zend); ou┆
0x076ac0…076ae0             74 5f 6e 6c 3b 0a 65 6e 64 3b 20 28 2a 20 6f 75 74 20 70 61 72 61 6d 73 20 2a 29 0a 0a 0a 70 72   ┆t_nl; end; (* out params *)   pr┆
0x076ae0…076b00             6f 63 65 64 75 72 65 20 63 6f 64 65 5f 70 72 6f 63 65 73 73 5f 69 6e 69 74 28 6b 69 6e 64 2c 20   ┆ocedure code_process_init(kind, ┆
0x076b00…076b20             6f 66 66 73 65 74 5f 70 64 3a 20 69 6e 74 65 67 65 72 3b 20 65 78 74 65 72 6e 61 6c 5f 70 72 3a   ┆offset_pd: integer; external_pr:┆
0x076b20…076b40             20 62 6f 6f 6c 65 61 6e 29 3b 0a 76 61 72 0a 6b 65 79 2c 20 73 74 65 70 3a 20 69 6e 74 65 67 65   ┆ boolean); var key, step: intege┆
0x076b40…076b60             72 3b 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 69 6e 69 74 69   ┆r;  begin out_comment( '   initi┆
0x076b60…076b80             61 6c 69 7a 65 20 74 68 65 20 66 69 65 6c 64 73 20 69 6e 20 74 68 65 20 50 72 6f 63 65 73 73 20   ┆alize the fields in the Process ┆
0x076b80…076ba0             44 65 73 63 72 69 70 74 6f 72 2e 20 27 20 29 3b 0a 69 66 20 65 78 74 65 72 6e 61 6c 5f 70 72 20   ┆Descriptor. ' ); if external_pr ┆
0x076ba0…076bc0             74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 63 61 6c 6c 20 5f 69 6e 69 74 70 72 6f 63 5f 72 63 20   ┆then begin (* call _initproc_rc ┆
0x076bc0…076be0             2a 29 0a 69 66 20 6b 69 6e 64 3d 31 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f   ┆*) if kind=1 then out_op_int(op_┆
0x076be0…076c00             72 65 61 67 64 2c 20 6f 66 66 73 65 74 5f 70 64 29 0a 65 6c 73 65 0a 69 66 20 6f 66 66 73 65 74   ┆reagd, offset_pd) else if offset┆
0x076c00…076c20 (31, 1, 6)  5f 70 64 3c 3e 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c   ┆_pd<>0 then out_op_int(op_reasd,┆
0x076c20…076c40             20 6f 66 66 73 65 74 5f 70 64 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 61 61 64 2c   ┆ offset_pd); out_op_id(op_reaad,┆
0x076c40…076c60             20 69 64 5f 70 61 72 61 6d 29 3b 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75   ┆ id_param); code_call_proc(sys_u┆
0x076c60…076c80             73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 69 6e 69 74 70 72 6f 63 5f 72   ┆se, ext_lookup(key, '_initproc_r┆
0x076c80…076ca0             63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 38 2c 20 30 29 3b   ┆c'), key, const_niv_0, 0, 8, 0);┆
0x076ca0…076cc0             0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 69 6e 69 74 69 61 6c 69 7a 65 20 70 72 6f 63 65 73   ┆ out_comment(' initialize proces┆
0x076cc0…076ce0             73 20 6f 62 6a 65 63 74 20 27 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 28 2a 20   ┆s object '); end else begin  (* ┆
0x076ce0…076d00             69 6e 63 61 72 6e 61 74 69 6f 6e 20 63 6f 75 6e 74 20 3d 20 30 20 2a 29 0a 6f 75 74 5f 6f 70 5f   ┆incarnation count = 0 *) out_op_┆
0x076d00…076d20             69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 30 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73   ┆int(op_rechw,0); out_opcode(op_s┆
0x076d20…076d40             74 76 67 77 29 3b 0a 6f 75 74 5f 65 78 70 72 28 69 64 5f 6f 70 64 5f 63 6f 75 6e 74 2c 6f 66 66   ┆tvgw); out_expr(id_opd_count,off┆
0x076d40…076d60             73 65 74 5f 70 64 29 3b 0a 0a 28 2a 20 70 61 72 61 6d 20 64 65 73 63 72 20 72 65 66 20 3d 61 64   ┆set_pd);  (* param descr ref =ad┆
0x076d60…076d80             64 72 65 73 73 20 6f 66 20 66 6f 72 6d 61 6c 20 70 61 72 61 6d 65 74 65 72 73 20 2a 29 0a 6f 75   ┆dress of formal parameters *) ou┆
0x076d80…076da0             74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 61 61 64 2c 69 64 5f 70 61 72 61 6d 29 3b 0a 6f 75 74 5f   ┆t_op_id(op_reaad,id_param); out_┆
0x076da0…076dc0             6f 70 63 6f 64 65 28 6f 70 5f 73 74 76 67 61 29 3b 0a 6f 75 74 5f 65 78 70 72 28 69 64 5f 6f 70   ┆opcode(op_stvga); out_expr(id_op┆
0x076dc0…076de0             64 5f 70 61 72 61 6d 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 0a 28 2a 20 6c 69 6e 6b 73 74 61 74   ┆d_param,offset_pd);  (* linkstat┆
0x076de0…076e00             65 3a 20 20 30 3d 75 6e 6c 69 6e 6b 65 64 2c 20 31 3d 69 6e 74 65 72 6e 61 6c 20 6c 69 6e 6b 65   ┆e:  0=unlinked, 1=internal linke┆
0x076e00…076e20 (31, 1, 7)  64 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 31 29 3b 0a 6f 75   ┆d *)  out_op_int(op_rechw,1); ou┆
0x076e20…076e40             74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 74 76 67 77 29 3b 0a 6f 75 74 5f 65 78 70 72 28 69 64 5f   ┆t_opcode(op_stvgw); out_expr(id_┆
0x076e40…076e60             6f 70 64 5f 6c 69 6e 6b 65 64 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 0a 28 2a 20 70 72 6f 63 65   ┆opd_linked,offset_pd);  (* proce┆
0x076e60…076e80             73 73 69 6e 66 20 72 65 66 20 3a 20 70 6f 69 6e 74 65 72 20 74 6f 20 70 72 6f 63 65 73 73 69 6e   ┆ssinf ref : pointer to processin┆
0x076e80…076ea0             66 20 69 66 20 69 6e 74 65 72 6e 61 6c 20 6c 69 6e 6b 65 64 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f   ┆f if internal linked *)  out_op_┆
0x076ea0…076ec0             69 64 28 6f 70 5f 72 65 61 61 64 2c 69 64 5f 70 72 6f 63 69 6e 66 29 3b 0a 6f 75 74 5f 6f 70 63   ┆id(op_reaad,id_procinf); out_opc┆
0x076ec0…076ee0             6f 64 65 28 6f 70 5f 73 74 76 67 61 29 3b 20 6f 75 74 5f 65 78 70 72 28 69 64 5f 6f 70 64 5f 70   ┆ode(op_stvga); out_expr(id_opd_p┆
0x076ee0…076f00             72 6f 63 69 6e 66 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 0a 28 2a 20 6e 61 6d 65 20 2c 20 38 36   ┆rocinf,offset_pd);  (* name , 86┆
0x076f00…076f20             2e 30 39 2e 30 38 3a 20 6e 61 6d 65 20 66 69 65 6c 64 20 6e 6f 74 20 69 6e 69 74 69 61 6c 69 7a   ┆.09.08: name field not initializ┆
0x076f20…076f40             65 64 20 61 6e 79 20 6d 6f 72 65 20 21 21 21 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ed any more !!!                 ┆
0x076f40…076f60             20 20 20 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 20 69 73 20 61 6c 73 6f 20 72 65 6d 6f 76 65 64   ┆    the constant is also removed┆
0x076f60…076f80             20 66 72 6f 6d 20 74 68 65 20 63 6f 64 65 2c 20 28 66 69 6e 64 5f 62 6c 6f 63 6b 29 0a 0a 6f 75   ┆ from the code, (find_block)  ou┆
0x076f80…076fa0             74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 61 67 64 29 3b 20 6f 75 74 5f 65 78 70 72 28 69 64 5f   ┆t_opcode(op_reagd); out_expr(id_┆
0x076fa0…076fc0             6f 70 64 5f 6e 61 6d 65 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f   ┆opd_name,offset_pd); out_op_id(o┆
0x076fc0…076fe0             70 5f 72 65 61 61 64 2c 69 64 5f 6e 61 6d 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72   ┆p_reaad,id_name); out_op_id(op_r┆
0x076fe0…077000             65 63 68 77 2c 69 64 5f 61 6c 66 61 6c 65 6e 67 74 68 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28   ┆echw,id_alfalength); out_opcode(┆
0x077000…077020 (31, 1, 8)  6f 70 5f 6d 6f 76 65 67 29 3b 0a 28 2a 20 65 6e 64 20 6f 66 20 6e 61 6d 65 20 66 69 65 6c 64 20   ┆op_moveg); (* end of name field ┆
0x077020…077040             69 6e 69 74 20 2a 29 0a 0a 28 2a 70 72 6f 63 65 73 73 64 65 73 63 72 69 70 74 6f 72 20 69 6e 20   ┆init *)  (*processdescriptor in ┆
0x077040…077060             72 65 6d 6f 76 65 20 63 68 61 69 6e 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 76 67   ┆remove chain*) out_op_id(op_revg┆
0x077060…077080             61 2c 69 64 5f 70 72 6f 63 65 73 73 63 68 61 69 6e 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f   ┆a,id_processchain); out_opcode(o┆
0x077080…0770a0             70 5f 73 74 76 67 61 29 3b 0a 6f 75 74 5f 65 78 70 72 28 69 64 5f 6f 70 64 5f 70 72 6f 63 65 73   ┆p_stvga); out_expr(id_opd_proces┆
0x0770a0…0770c0             73 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 6c   ┆s,offset_pd); out_op_int(op_real┆
0x0770c0…0770e0             64 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 73 74 76 67 61   ┆d,offset_pd); out_op_id(op_stvga┆
0x0770e0…077100             2c 69 64 5f 70 72 6f 63 65 73 73 63 68 61 69 6e 29 3b 0a 65 6e 64 3b 20 28 2a 20 69 6e 74 65 72   ┆,id_processchain); end; (* inter┆
0x077100…077120             6e 61 6c 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 63 6f 64 65 20 70 72 6f 63 65 73 73 20 69 6e 69 74   ┆nal *) end; (* code process init┆
0x077120…077140             20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 73 79 73 5f 69 6e 69 74 28 20 76   ┆ *)   procedure find_sys_init( v┆
0x077140…077160             61 72 20 72 65 66 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61 72 20 64 79 6e 5f   ┆ar ref_count : integer; var dyn_┆
0x077160…077180             72 65 66 73 20 3a 20 62 6f 6f 6c 65 61 6e 20 3b 0a 76 61 72 20 73 68 61 64 6f 77 5f 63 6f 75 6e   ┆refs : boolean ; var shadow_coun┆
0x077180…0771a0             74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61 72 20 64 79 6e 5f 73 68 61 64 6f 77 73 20 3a 20 62   ┆t : integer; var dyn_shadows : b┆
0x0771a0…0771c0             6f 6f 6c 65 61 6e 29 3b 0a 0a 0a 76 61 72 20 0a 74 79 70 65 5f 6f 20 3a 20 69 6e 74 65 67 65 72   ┆oolean);   var  type_o : integer┆
0x0771c0…0771e0             3b 0a 6b 69 6e 64 2c 20 77 5f 6f 66 66 73 65 74 2c 20 6f 66 66 73 65 74 2c 20 6e 75 6d 62 65 72   ┆; kind, w_offset, offset, number┆
0x0771e0…077200             2c 20 73 69 7a 65 2c 20 6c 6f 77 65 72 2c 20 75 70 70 65 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a   ┆, size, lower, upper : integer; ┆
0x077200…077220 (31, 1, 9)  73 74 61 63 6b 5f 73 61 76 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 61 2c 20 64 6f 70 65 5f 76   ┆stack_save : integer; va, dope_v┆
0x077220…077240             2c 20 74 65 6d 70 6c 61 74 65 5f 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 0a 0a   ┆, template_v : varaddr_descr;   ┆
0x077240…077260             70 72 6f 63 65 64 75 72 65 20 63 6f 6d 70 6f 6e 65 6e 74 5f 69 6e 69 74 28 20 6b 69 6e 64 2c 20   ┆procedure component_init( kind, ┆
0x077260…077280             6f 66 66 73 65 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61 72 20 72 65 66 5f 63 6f 75 6e 74 20   ┆offset : integer; var ref_count ┆
0x077280…0772a0             3a 20 69 6e 74 65 67 65 72 20 3b 0a 76 61 72 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 20 69   ┆: integer ; var shadow_count : i┆
0x0772a0…0772c0             6e 74 65 67 65 72 29 3b 0a 0a 28 2a 20 6b 69 6e 64 20 3d 20 31 20 3c 3d 3e 20 6f 66 66 73 65 74   ┆nteger);  (* kind = 1 <=> offset┆
0x0772c0…0772e0             20 69 73 20 6c 6f 63 61 6c 20 66 72 61 6d 65 20 61 64 64 72 65 73 73 20 6f 66 20 76 61 72 69 61   ┆ is local frame address of varia┆
0x0772e0…077300             62 6c 65 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 2c 0a 6b 69 6e 64 20 3d 20 32 20 20 3c 3d 3e   ┆ble to initialize, kind = 2  <=>┆
0x077300…077320             20 28 6f 66 66 73 65 74 20 3d 20 30 29 20 61 6e 64 20 61 64 64 72 65 73 73 20 6f 6e 20 74 6f 70   ┆ (offset = 0) and address on top┆
0x077320…077340             20 6f 66 20 73 74 61 63 6b 20 20 2a 29 0a 0a 76 61 72 0a 6e 65 77 5f 6b 69 6e 64 2c 20 6e 65 77   ┆ of stack  *)  var new_kind, new┆
0x077340…077360             5f 6f 66 66 73 65 74 2c 20 72 65 66 73 2c 20 73 68 61 64 6f 77 73 20 3a 20 69 6e 74 65 67 65 72   ┆_offset, refs, shadows : integer┆
0x077360…077380             3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 61 72 72 61 79 5f 69 6e 69 74 28 64   ┆;   procedure  code_array_init(d┆
0x077380…0773a0             79 6e 61 6d 69 63 20 3a 20 62 6f 6f 6c 65 61 6e 3b 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20   ┆ynamic : boolean; kind, offset, ┆
0x0773a0…0773c0             77 5f 6f 66 66 73 65 74 2c 20 6c 6f 77 65 72 2c 20 75 70 70 65 72 2c 20 73 69 7a 65 20 3a 20 69   ┆w_offset, lower, upper, size : i┆
0x0773c0…0773e0             6e 74 65 67 65 72 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆nteger;                         ┆
0x0773e0…077400             76 61 72 20 72 65 66 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61 72 20 73 68 61   ┆var ref_count : integer; var sha┆
0x077400…077420 (31, 1, 10) 64 6f 77 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 74 65 6d 70 6c 5f 76 20 3a 20 76   ┆dow_count : integer; templ_v : v┆
0x077420…077440             61 72 61 64 64 72 5f 64 65 73 63 72 20 29 3b 0a 0a 76 61 72 0a 72 65 66 73 2c 73 68 61 64 6f 77   ┆araddr_descr );  var refs,shadow┆
0x077440…077460             73 2c 69 78 73 74 6f 72 65 5f 68 77 2c 61 72 72 61 79 72 65 70 5f 68 77 20 3a 20 69 6e 74 65 67   ┆s,ixstore_hw,arrayrep_hw : integ┆
0x077460…077480             65 72 3b 0a 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 6e 6c 3b 0a 6f 75   ┆er;   begin  out_nl;  out_nl; ou┆
0x077480…0774a0             74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 61   ┆t_token (zbegin); out_p_id (id_a┆
0x0774a0…0774c0             72 72 61 79 72 65 70 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 69 6e 64 65 78 5f 73 74 6f   ┆rrayrep); out_p_id (id_index_sto┆
0x0774c0…0774e0             72 65 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 72 65 70 5f 65 78 69 74 29 3b 0a 6f 75 74   ┆re); out_p_id (id_rep_exit); out┆
0x0774e0…077500             5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20   ┆_token (zendlist); out_comment( ┆
0x077500…077520             27 20 20 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 6e 20 61 72 72 61 79 2e 20 27 20 29 3b 0a 6f 75   ┆'   initialize an array. ' ); ou┆
0x077520…077540             74 5f 6e 6c 3b 20 20 6f 75 74 5f 6e 6c 3b 0a 0a 69 66 20 6b 69 6e 64 20 3d 20 31 20 74 68 65 6e   ┆t_nl;  out_nl;  if kind = 1 then┆
0x077540…077560             0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 6c 64 20 29 3b 0a   ┆ begin  out_opcode( op_reald ); ┆
0x077560…077580             6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f   ┆out_start_param;  out_integer( o┆
0x077580…0775a0             66 66 73 65 74 20 29 3b 0a 6b 69 6e 64 20 3a 3d 20 32 3b 20 6f 66 66 73 65 74 20 3a 3d 20 30 3b   ┆ffset ); kind := 2; offset := 0;┆
0x0775a0…0775c0             0a 0a 0a 65 6e 64 3b 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e 0a 28 2a 6c 6f 61 64 20 6c   ┆   end; if dynamic then (*load l┆
0x0775c0…0775e0             6f 77 65 72 20 62 6f 75 6e 64 20 66 72 6f 6d 20 74 65 6d 70 6c 61 74 65 2a 29 0a 77 69 74 68 20   ┆ower bound from template*) with ┆
0x0775e0…077600             74 65 6d 70 6c 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77   ┆templ_v do out_op_rev__(access,w┆
0x077600…077620 (31, 1, 11) 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 20 2b 20 32 28 2a 6c 6f   ┆ord_typ,c.niv-niv,offset + 2(*lo┆
0x077620…077640             77 65 72 20 62 6f 75 6e 64 2a 29 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63   ┆wer bound*)) else begin  out_opc┆
0x077640…077660             6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d   ┆ode( op_rechw ); out_start_param┆
0x077660…077680             3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6c 6f 77 65 72 20 29 3b 0a 65 6e 64 3b 0a 0a 28   ┆;  out_integer( lower ); end;  (┆
0x077680…0776a0             2a 20 74 65 73 74 20 66 6f 72 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 61 72 72 61 79 20 65 6c   ┆* test for at least one array el┆
0x0776a0…0776c0             65 6d 65 6e 74 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 76 70 77 29 3b 20 28   ┆ement *) out_opcode(op_revpw); (┆
0x0776c0…0776e0             2a 20 6c 6f 77 65 72 20 62 6f 75 6e 64 20 2a 29 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 74 65   ┆* lower bound *) out_comment('te┆
0x0776e0…077700             73 74 20 66 6f 72 20 6e 6f 6e 2d 65 6d 70 74 79 20 61 72 72 61 79 27 29 3b 0a 69 66 20 64 79 6e   ┆st for non-empty array'); if dyn┆
0x077700…077720             61 6d 69 63 20 74 68 65 6e 0a 28 2a 20 6c 6f 61 64 20 75 70 70 65 72 20 62 6f 75 6e 64 20 66 72   ┆amic then (* load upper bound fr┆
0x077720…077740             6f 6d 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 77 69 74 68 20 74 65 6d 70 6c 5f 76 20 64 6f 0a 6f   ┆om template *) with templ_v do o┆
0x077740…077760             75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 20 77 6f 72 64 5f 74 79 70 2c 20 63 2e   ┆ut_op_rev__(access, word_typ, c.┆
0x077760…077780             6e 69 76 2d 6e 69 76 2c 20 6f 66 66 73 65 74 2b 34 29 20 28 2a 20 75 70 70 65 72 20 62 6f 75 6e   ┆niv-niv, offset+4) (* upper boun┆
0x077780…0777a0             64 20 2a 29 0a 65 6c 73 65 0a 28 2a 20 6c 6f 61 64 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 20 75   ┆d *) else (* load the constant u┆
0x0777a0…0777c0             70 70 65 72 20 62 6f 75 6e 64 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68   ┆pper bound *) out_op_int(op_rech┆
0x0777c0…0777e0             77 2c 20 75 70 70 65 72 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 67 74 29 3b 0a 6f 75   ┆w, upper); out_opcode(op_gt); ou┆
0x0777e0…077800             74 5f 63 6f 6d 6d 65 6e 74 28 27 6c 6f 77 65 72 3e 75 70 70 65 72 20 3f 27 29 3b 0a 6f 75 74 5f   ┆t_comment('lower>upper ?'); out_┆
0x077800…077820 (31, 1, 12) 6f 70 5f 69 64 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 69 6e 64 65 78 5f 73 74 6f 72 65 29 3b   ┆op_id(op_jmzeq, id_index_store);┆
0x077820…077840             20 28 2a 20 64 6f 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20   ┆ (* do not count the first time ┆
0x077840…077860             2a 29 0a 0a 28 2a 6d 61 6b 65 20 73 70 61 63 65 20 61 74 20 73 74 61 63 6b 20 74 6f 20 64 6f 20   ┆*)  (*make space at stack to do ┆
0x077860…077880             6a 6d 7a 65 71 20 61 72 72 61 79 72 65 70 20 20 69 66 20 73 74 61 63 6b 20 69 73 20 66 75 6c 6c   ┆jmzeq arrayrep  if stack is full┆
0x077880…0778a0             20 61 74 20 6c 61 62 65 6c 2a 29 0a 69 66 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3d 20 6d   ┆ at label*) if hw_stack_size = m┆
0x0778a0…0778c0             61 78 5f 68 77 5f 73 74 61 63 6b 20 74 68 65 6e 0a 6f 75 74 5f 72 65 73 74 61 28 6d 61 78 5f 68   ┆ax_hw_stack then out_resta(max_h┆
0x0778c0…0778e0             77 5f 73 74 61 63 6b 20 2d 20 61 62 73 28 6f 70 5f 74 61 62 6c 65 5b 6f 70 5f 6a 6d 7a 65 71 5d   ┆w_stack - abs(op_table[op_jmzeq]┆
0x0778e0…077900             2e 6f 70 61 70 70 65 74 69 74 65 29 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 64 28 20 6f 70 5f 6a 6d   ┆.opappetite));  out_op_id( op_jm┆
0x077900…077920             70 72 77 2c 20 69 64 5f 72 65 70 5f 65 78 69 74 20 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28   ┆prw, id_rep_exit ); out_comment(┆
0x077920…077940             27 69 66 20 6c 6f 77 65 72 3e 75 70 70 65 72 20 74 68 65 6e 20 65 78 69 74 20 61 72 72 61 79 20   ┆'if lower>upper then exit array ┆
0x077940…077960             72 65 70 27 29 3b 0a 69 78 73 74 6f 72 65 5f 68 77 3a 3d 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a   ┆rep'); ixstore_hw:= hw_stack_siz┆
0x077960…077980             65 3b 0a 61 72 72 61 79 72 65 70 5f 68 77 20 3a 3d 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 3b   ┆e; arrayrep_hw := hw_stack_size;┆
0x077980…0779a0             0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 61 72 72 61 79 72 65 70 20 29 3b 0a 0a 6f 75 74   ┆  out_label( id_arrayrep );  out┆
0x0779a0…0779c0             5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 75 61 64 68 77 2c 20 31 20 29 3b 0a 6f 75 74 5f 6c 61 62 65   ┆_op_int( op_uadhw, 1 ); out_labe┆
0x0779c0…0779e0             6c 28 20 69 64 5f 69 6e 64 65 78 5f 73 74 6f 72 65 20 29 3b 0a 69 66 20 69 78 73 74 6f 72 65 5f   ┆l( id_index_store ); if ixstore_┆
0x0779e0…077a00             68 77 20 3c 3e 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 74 68 65 6e 20 68 77 5f 73 74 61 63   ┆hw <> hw_stack_size then hw_stac┆
0x077a00…077a20 (31, 1, 13) 6b 5f 65 72 72 6f 72 28 61 72 72 61 79 5f 69 6e 69 74 29 3b 0a 0a 0a 6f 75 74 5f 6f 70 63 6f 64   ┆k_error(array_init);   out_opcod┆
0x077a20…077a40             65 20 28 6f 70 5f 73 74 76 6c 77 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20   ┆e (op_stvlw); out_start_param;  ┆
0x077a40…077a60             6f 75 74 5f 69 6e 74 65 67 65 72 20 28 77 5f 6f 66 66 73 65 74 29 3b 0a 0a 6f 75 74 5f 6f 70 63   ┆out_integer (w_offset);  out_opc┆
0x077a60…077a80             6f 64 65 28 20 6f 70 5f 72 65 76 70 64 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 63 6f 6d   ┆ode( op_revpd ); get_token;  com┆
0x077a80…077aa0             70 6f 6e 65 6e 74 5f 69 6e 69 74 28 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 72 65 66 73 2c   ┆ponent_init( kind, offset, refs,┆
0x077aa0…077ac0             20 73 68 61 64 6f 77 73 20 29 3b 0a 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e 0a 62 65 67   ┆ shadows );  if dynamic then beg┆
0x077ac0…077ae0             69 6e 0a 28 2a 6c 6f 61 64 20 73 69 7a 65 20 66 72 6f 6d 20 74 65 6d 70 6c 61 74 65 2a 29 0a 77   ┆in (*load size from template*) w┆
0x077ae0…077b00             69 74 68 20 74 65 6d 70 6c 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65   ┆ith templ_v do out_op_rev__(acce┆
0x077b00…077b20             73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 20 2b 20 36   ┆ss,word_typ,c.niv-niv,offset + 6┆
0x077b20…077b40             28 2a 73 69 7a 65 2a 29 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64 64 20 29   ┆(*size*)); out_opcode( op_uadd )┆
0x077b40…077b60             3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70   ┆; end else begin  out_opcode( op┆
0x077b60…077b80             5f 72 65 61 73 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f   ┆_reasd ); out_start_param;  out_┆
0x077b80…077ba0             69 6e 74 65 67 65 72 28 20 73 69 7a 65 20 29 3b 0a 65 6e 64 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e   ┆integer( size ); end; out_commen┆
0x077ba0…077bc0             74 28 20 27 20 20 20 61 64 64 72 20 3a 3d 20 61 64 64 72 20 2b 20 73 69 7a 65 20 20 2e 20 27 20   ┆t( '   addr := addr + size  . ' ┆
0x077bc0…077be0             29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 6c 77 20 29 3b 0a 6f 75 74 5f   ┆);  out_opcode( op_revlw ); out_┆
0x077be0…077c00             73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 77 5f 6f 66 66   ┆start_param;  out_integer (w_off┆
0x077c00…077c20 (31, 1, 14) 73 65 74 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 69   ┆set);  out_opcode( op_revpw ); i┆
0x077c20…077c40             66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e 0a 28 2a 6c 6f 61 64 20 75 70 70 65 72 20 62 6f 75 6e   ┆f dynamic then (*load upper boun┆
0x077c40…077c60             64 20 66 72 6f 6d 20 74 65 6d 70 6c 61 74 65 2a 29 0a 77 69 74 68 20 74 65 6d 70 6c 5f 76 20 64   ┆d from template*) with templ_v d┆
0x077c60…077c80             6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63   ┆o out_op_rev__(access,word_typ,c┆
0x077c80…077ca0             2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 20 2b 20 34 28 2a 75 70 70 65 72 20 62 6f 75 6e 64   ┆.niv-niv,offset + 4(*upper bound┆
0x077ca0…077cc0             2a 29 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 75   ┆*)) else out_op_int( op_rechw, u┆
0x077cc0…077ce0             70 70 65 72 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 67 65 20 29 3b 0a 6f 75   ┆pper );  out_opcode( op_ge ); ou┆
0x077ce0…077d00             74 5f 63 6f 6d 6d 65 6e 74 28 27 6c 6f 77 65 72 3e 3d 75 70 70 65 72 20 3f 20 27 20 29 3b 0a 77   ┆t_comment('lower>=upper ? ' ); w┆
0x077d00…077d20             69 74 68 20 6f 70 5f 74 61 62 6c 65 5b 6f 70 5f 6a 6d 7a 65 71 5d 20 64 6f 0a 69 66 20 68 77 5f   ┆ith op_table[op_jmzeq] do if hw_┆
0x077d20…077d40             73 74 61 63 6b 5f 73 69 7a 65 20 3c 3e 20 28 61 72 72 61 79 72 65 70 5f 68 77 20 2b 20 61 62 73   ┆stack_size <> (arrayrep_hw + abs┆
0x077d40…077d60             28 6f 70 61 70 70 65 74 69 74 65 29 29 20 74 68 65 6e 0a 6f 75 74 5f 72 65 73 74 61 28 61 72 72   ┆(opappetite)) then out_resta(arr┆
0x077d60…077d80             61 79 72 65 70 5f 68 77 20 2b 20 61 62 73 28 6f 70 61 70 70 65 74 69 74 65 29 29 3b 0a 0a 6f 75   ┆ayrep_hw + abs(opappetite));  ou┆
0x077d80…077da0             74 5f 6f 70 5f 69 64 28 20 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 61 72 72 61 79 72 65 70 20 29   ┆t_op_id( op_jmzeq, id_arrayrep )┆
0x077da0…077dc0             3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 69 66 20 6c 6f 77 65 72 3c 75 70 70 65 72 20 74   ┆; out_comment(' if lower<upper t┆
0x077dc0…077de0             68 65 6e 20 67 6f 74 6f 20 61 72 72 61 79 72 65 70 20 27 20 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c   ┆hen goto arrayrep ' ); out_label┆
0x077de0…077e00             28 69 64 5f 72 65 70 5f 65 78 69 74 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70   ┆(id_rep_exit); out_specopcode(op┆
0x077e00…077e20 (31, 1, 15) 5f 73 74 6e 68 62 2c 2d 33 2a 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b   ┆_stnhb,-3*word_length);  out_nl;┆
0x077e20…077e40             20 20 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f   ┆  out_nl; out_token (zend); out_┆
0x077e40…077e60             6e 6c 3b 20 20 6f 75 74 5f 6e 6c 3b 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e 0a 62 65 67   ┆nl;  out_nl; if dynamic then beg┆
0x077e60…077e80             69 6e 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77 73 3b 0a 72 65 66 5f   ┆in shadow_count := shadows; ref_┆
0x077e80…077ea0             63 6f 75 6e 74 20 3a 3d 20 72 65 66 73 20 20 28 2a 20 3c 3e 20 30 20 69 66 20 72 65 66 73 20 64   ┆count := refs  (* <> 0 if refs d┆
0x077ea0…077ec0             65 66 69 6e 65 64 20 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 73 68 61 64 6f 77   ┆efined  *) end else begin shadow┆
0x077ec0…077ee0             5f 63 6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77 73 20 2a 20 28 75 70 70 65 72 20 2d 20 6c 6f 77   ┆_count := shadows * (upper - low┆
0x077ee0…077f00             65 72 20 2b 20 31 29 3b 0a 0a 72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 20 72 65 66 73 20 2a 20 28   ┆er + 1);  ref_count :=  refs * (┆
0x077f00…077f20             20 75 70 70 65 72 20 2d 20 6c 6f 77 65 72 20 2b 20 31 20 29 0a 65 6e 64 0a 0a 0a 65 6e 64 20 20   ┆ upper - lower + 1 ) end   end  ┆
0x077f20…077f40             28 2a 20 63 6f 64 65 20 61 72 72 61 79 20 69 6e 69 74 20 20 20 2a 29 3b 0a 0a 62 65 67 69 6e 20   ┆(* code array init   *);  begin ┆
0x077f40…077f60             28 2a 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 6e 69 74 20 2a 29 0a 73 68 61 64 6f 77 5f 63 6f 75 6e   ┆(* component init *) shadow_coun┆
0x077f60…077f80             74 20 3a 3d 20 30 3b 0a 0a 72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 30 3b 0a 0a 63 61 73 65 20 74   ┆t := 0;  ref_count := 0;  case t┆
0x077f80…077fa0             6f 6b 65 6e 20 6f 66 0a 0a 78 76 61 72 69 6e 69 74 20 3a 0a 62 65 67 69 6e 0a 0a 74 79 70 65 5f   ┆oken of  xvarinit : begin  type_┆
0x077fa0…077fc0             6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 63 6f 64 65 5f 69 6e 69 74 76 61 72 28 20 6b   ┆o := in_integer; code_initvar( k┆
0x077fc0…077fe0             69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 74 79 70 65 5f 6f 2c 20 72 65 66 5f 63 6f 75 6e 74 2c 20   ┆ind, offset, type_o, ref_count, ┆
0x077fe0…078000             73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b   ┆shadow_count ); get_token;  end;┆
0x078000…078020 (32, 0, 1)  20 28 2a 20 76 61 72 20 69 6e 69 74 20 2a 29 0a 0a 0a 78 65 78 74 70 72 6f 63 65 73 73 3a 0a 62   ┆ (* var init *)   xextprocess: b┆
0x078020…078040             65 67 69 6e 0a 28 2a 20 64 65 63 6c 61 72 65 20 6c 61 62 65 6c 73 20 66 6f 72 20 70 72 6f 63 65   ┆egin (* declare labels for proce┆
0x078040…078060             73 73 20 64 65 73 63 72 69 70 74 6f 72 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 2a 29 0a   ┆ss descriptor initialization *) ┆
0x078060…078080             6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70   ┆out_nl; out_token(zbegin); out_p┆
0x078080…0780a0             5f 69 64 28 69 64 5f 70 61 72 61 6d 29 3b 0a 6f 75 74 5f 70 5f 69 64 28 69 64 5f 63 6f 6e 74 69   ┆_id(id_param); out_p_id(id_conti┆
0x0780a0…0780c0             6e 75 65 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 0a 6f 75 74 5f   ┆nue); out_token(zendlist);  out_┆
0x0780c0…0780e0             6f 70 5f 69 64 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 63 6f 6e 74 69 6e 75 65 29 3b 20 0a 6f   ┆op_id(op_jmprw, id_continue);  o┆
0x0780e0…078100             75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 20 20 6a 75 6d 70 20 61 63 72 6f 73 73 20 74 68 65 20 70   ┆ut_comment('   jump across the p┆
0x078100…078120             72 6f 63 65 73 73 20 70 61 72 61 6d 65 74 65 72 73 20 27 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 6f 75   ┆rocess parameters '); out_nl; ou┆
0x078120…078140             74 5f 6e 6c 3b 0a 0a 28 2a 20 6f 75 74 70 75 74 20 74 68 65 20 70 72 6f 63 65 73 73 20 70 61 72   ┆t_nl;  (* output the process par┆
0x078140…078160             61 6d 65 74 65 72 73 20 2a 29 0a 6f 75 74 5f 70 61 72 61 6d 73 3b 0a 0a 6f 75 74 5f 6c 61 62 65   ┆ameters *) out_params;  out_labe┆
0x078160…078180             6c 28 69 64 5f 63 6f 6e 74 69 6e 75 65 29 3b 0a 0a 28 2a 20 67 65 6e 65 72 61 74 65 20 63 6f 64   ┆l(id_continue);  (* generate cod┆
0x078180…0781a0             65 20 66 6f 72 20 74 68 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20   ┆e for the initialization of the ┆
0x0781a0…0781c0             66 69 65 6c 64 73 20 69 6e 20 74 68 65 20 70 72 6f 63 65 73 73 20 64 65 73 63 72 69 70 74 6f 72   ┆fields in the process descriptor┆
0x0781c0…0781e0             20 2a 29 0a 63 6f 64 65 5f 70 72 6f 63 65 73 73 5f 69 6e 69 74 28 6b 69 6e 64 2c 20 6f 66 66 73   ┆ *) code_process_init(kind, offs┆
0x0781e0…078200             65 74 2c 20 74 72 75 65 20 28 2a 20 65 78 74 65 72 6e 61 6c 20 2a 29 29 3b 0a 0a 6f 75 74 5f 6e   ┆et, true (* external *));  out_n┆
0x078200…078220 (32, 0, 2)  6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 29 3b 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28   ┆l; out_token(zend); out_comment(┆
0x078220…078240             27 65 6e 64 20 6f 66 20 65 78 74 65 72 6e 61 6c 20 70 72 6f 63 65 73 73 20 69 6e 69 74 27 29 3b   ┆'end of external process init');┆
0x078240…078260             0a 6f 75 74 5f 6e 6c 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 20 28 2a 20 65 78 74 70   ┆ out_nl; get_token; end; (* extp┆
0x078260…078280             72 6f 63 65 73 73 20 2a 29 0a 0a 78 70 6f 6f 6c 69 6e 69 74 20 3a 0a 62 65 67 69 6e 0a 0a 6e 75   ┆rocess *)  xpoolinit : begin  nu┆
0x078280…0782a0             6d 62 65 72 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69   ┆mber := in_integer; size := in_i┆
0x0782a0…0782c0             6e 74 65 67 65 72 3b 0a 0a 63 6f 64 65 5f 61 6c 6c 6f 63 70 6f 6f 6c 20 28 20 6b 69 6e 64 2c 20   ┆nteger;  code_allocpool ( kind, ┆
0x0782c0…0782e0             6f 66 66 73 65 74 2c 20 6e 75 6d 62 65 72 2c 20 73 69 7a 65 20 29 3b 0a 67 65 74 5f 74 6f 6b 65   ┆offset, number, size ); get_toke┆
0x0782e0…078300             6e 3b 0a 20 0a 65 6e 64 3b 20 28 2a 20 70 6f 6f 6c 20 69 6e 69 74 20 2a 29 0a 0a 78 66 69 65 6c   ┆n;   end; (* pool init *)  xfiel┆
0x078300…078320             64 69 6e 69 74 2c 0a 78 64 79 6e 66 69 65 6c 64 69 6e 69 74 20 3a 20 62 65 67 69 6e 0a 72 65 70   ┆dinit, xdynfieldinit : begin rep┆
0x078320…078340             65 61 74 0a 69 66 20 6b 69 6e 64 20 3d 20 32 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28   ┆eat if kind = 2 then out_opcode(┆
0x078340…078360             20 6f 70 5f 72 65 76 70 64 20 29 3b 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 78 66 69   ┆ op_revpd );  case token of  xfi┆
0x078360…078380             65 6c 64 69 6e 69 74 20 3a 0a 62 65 67 69 6e 0a 6e 65 77 5f 6f 66 66 73 65 74 20 3a 3d 20 6f 66   ┆eldinit : begin new_offset := of┆
0x078380…0783a0             66 73 65 74 20 2b 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6e 65 77 5f 6b 69 6e 64 20 3a 3d 20 6b   ┆fset + in_integer; new_kind := k┆
0x0783a0…0783c0             69 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 66 69 65 6c 64 20 69 6e 69 74 20 2a 29 0a 0a 78 64 79   ┆ind;  end; (* field init *)  xdy┆
0x0783c0…0783e0             6e 66 69 65 6c 64 69 6e 69 74 20 3a 0a 62 65 67 69 6e 0a 0a 69 66 20 6b 69 6e 64 20 3d 20 31 20   ┆nfieldinit : begin  if kind = 1 ┆
0x0783e0…078400             74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 61 6c 64 2c   ┆then begin out_op_int( op_reald,┆
0x078400…078420 (32, 0, 3)  20 6f 66 66 73 65 74 20 29 3b 0a 6e 65 77 5f 6b 69 6e 64 20 3a 3d 20 32 3b 20 6e 65 77 5f 6f 66   ┆ offset ); new_kind := 2; new_of┆
0x078420…078440             66 73 65 74 20 3a 3d 20 30 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 0a 6e 65 77 5f 6b   ┆fset := 0; end else begin  new_k┆
0x078440…078460             69 6e 64 20 3a 3d 20 6b 69 6e 64 3b 20 6e 65 77 5f 6f 66 66 73 65 74 20 3a 3d 20 6f 66 66 73 65   ┆ind := kind; new_offset := offse┆
0x078460…078480             74 3b 0a 65 6e 64 3b 20 28 2a 20 6b 69 6e 64 20 3d 20 32 20 2a 29 0a 67 65 74 5f 6e 69 76 5f 6f   ┆t; end; (* kind = 2 *) get_niv_o┆
0x078480…0784a0             66 66 73 65 74 28 20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 77 69 74 68 20 74 65 6d 70 6c 61   ┆ffset( template_v ); with templa┆
0x0784a0…0784c0             74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64   ┆te_v do out_op_rev__(access,word┆
0x0784c0…0784e0             5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 63 6f   ┆_typ,c.niv-niv,offset); out_opco┆
0x0784e0…078500             64 65 28 20 6f 70 5f 75 61 64 64 20 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 64 79 6e 20 66 69 65 6c   ┆de( op_uadd );  end; (* dyn fiel┆
0x078500…078520             64 20 69 6e 69 74 20 2a 29 0a 65 6c 73 65 0a 65 72 72 6f 72 20 28 20 70 61 73 73 34 63 6f 64 65   ┆d init *) else error ( pass4code┆
0x078520…078540             5f 65 72 72 6f 72 20 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2e 2e 2e 20 2a 29 0a 0a 0a   ┆_error ); end; (* case ... *)   ┆
0x078540…078560             67 65 74 5f 74 6f 6b 65 6e 3b 0a 63 6f 6d 70 6f 6e 65 6e 74 5f 69 6e 69 74 28 20 6e 65 77 5f 6b   ┆get_token; component_init( new_k┆
0x078560…078580             69 6e 64 2c 20 6e 65 77 5f 6f 66 66 73 65 74 2c 20 72 65 66 73 2c 20 73 68 61 64 6f 77 73 20 29   ┆ind, new_offset, refs, shadows )┆
0x078580…0785a0             3b 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 2b   ┆; shadow_count := shadow_count +┆
0x0785a0…0785c0             20 73 68 61 64 6f 77 73 3b 0a 72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 72 65 66 5f 63 6f 75 6e 74   ┆ shadows; ref_count := ref_count┆
0x0785c0…0785e0             20 2b 20 72 65 66 73 3b 0a 0a 75 6e 74 69 6c 20 74 6f 6b 65 6e 20 3d 20 78 65 6e 64 69 6e 69 74   ┆ + refs;  until token = xendinit┆
0x0785e0…078600             66 69 65 6c 64 73 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 69 66 20 6b 69 6e 64 20 3d 20 32 20   ┆fields;  get_token; if kind = 2 ┆
0x078600…078620 (32, 0, 4)  74 68 65 6e 20 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 74 6e 68 62 2c 2d 32 2a   ┆then out_specopcode(op_stnhb,-2*┆
0x078620…078640             77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 0a 0a 65 6e 64 3b 20 28 2a 20 66 69 65 6c 64 20 69 6e   ┆word_length);   end; (* field in┆
0x078640…078660             69 74 20 61 6e 64 20 64 79 6e 20 66 69 65 6c 64 20 69 6e 69 74 20 2a 29 0a 0a 0a 78 61 72 72 61   ┆it and dyn field init *)   xarra┆
0x078660…078680             79 69 6e 69 74 20 3a 0a 62 65 67 69 6e 0a 0a 77 5f 6f 66 66 73 65 74 20 3a 3d 20 69 6e 5f 69 6e   ┆yinit : begin  w_offset := in_in┆
0x078680…0786a0             74 65 67 65 72 3b 0a 6c 6f 77 65 72 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 75 70 70 65   ┆teger; lower := in_integer; uppe┆
0x0786a0…0786c0             72 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65   ┆r := in_integer; size := in_inte┆
0x0786c0…0786e0             67 65 72 3b 0a 0a 63 6f 64 65 5f 61 72 72 61 79 5f 69 6e 69 74 28 20 74 6f 6b 65 6e 20 3d 20 78   ┆ger;  code_array_init( token = x┆
0x0786e0…078700             61 72 72 61 79 64 79 6e 69 6e 69 74 2c 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 77 5f 6f 66   ┆arraydyninit, kind, offset, w_of┆
0x078700…078720             66 73 65 74 2c 20 6c 6f 77 65 72 2c 20 75 70 70 65 72 2c 20 73 69 7a 65 2c 0a 20 72 65 66 73 2c   ┆fset, lower, upper, size,  refs,┆
0x078720…078740             20 73 68 61 64 6f 77 73 2c 20 64 6f 70 65 5f 76 20 29 3b 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74   ┆ shadows, dope_v ); shadow_count┆
0x078740…078760             20 3a 3d 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 2b 20 73 68 61 64 6f 77 73 3b 0a 72 65 66 5f   ┆ := shadow_count + shadows; ref_┆
0x078760…078780             63 6f 75 6e 74 20 3a 3d 20 72 65 66 5f 63 6f 75 6e 74 20 2b 20 72 65 66 73 3b 0a 0a 65 6e 64 3b   ┆count := ref_count + refs;  end;┆
0x078780…0787a0             20 28 2a 20 61 72 72 61 79 20 69 6e 69 74 20 2a 29 0a 0a 0a 78 61 72 72 61 79 64 79 6e 69 6e 69   ┆ (* array init *)   xarraydynini┆
0x0787a0…0787c0             74 20 3a 0a 62 65 67 69 6e 0a 0a 77 5f 6f 66 66 73 65 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65   ┆t : begin  w_offset := in_intege┆
0x0787c0…0787e0             72 3b 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 64 6f 70 65 5f 76 20 29 3b 0a 63 6f 64   ┆r; get_niv_offset( dope_v ); cod┆
0x0787e0…078800             65 5f 61 72 72 61 79 5f 69 6e 69 74 28 20 74 6f 6b 65 6e 20 3d 20 78 61 72 72 61 79 64 79 6e 69   ┆e_array_init( token = xarraydyni┆
0x078800…078820 (32, 0, 5)  6e 69 74 2c 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 77 5f 6f 66 66 73 65 74 2c 20 30 2c 20   ┆nit, kind, offset, w_offset, 0, ┆
0x078820…078840             30 2c 20 30 2c 20 0a 72 65 66 73 2c 20 73 68 61 64 6f 77 73 2c 20 64 6f 70 65 5f 76 29 3b 0a 72   ┆0, 0,  refs, shadows, dope_v); r┆
0x078840…078860             65 66 5f 63 6f 75 6e 74 20 3a 3d 20 72 65 66 5f 63 6f 75 6e 74 20 2b 20 72 65 66 73 3b 0a 64 79   ┆ef_count := ref_count + refs; dy┆
0x078860…078880             6e 5f 72 65 66 73 20 3a 3d 20 64 79 6e 5f 72 65 66 73 20 6f 72 20 28 20 72 65 66 73 20 3e 20 30   ┆n_refs := dyn_refs or ( refs > 0┆
0x078880…0788a0             20 29 3b 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74   ┆ ); shadow_count := shadow_count┆
0x0788a0…0788c0             20 2b 20 73 68 61 64 6f 77 73 3b 0a 64 79 6e 5f 73 68 61 64 6f 77 73 20 20 3a 3d 20 64 79 6e 5f   ┆ + shadows; dyn_shadows  := dyn_┆
0x0788c0…0788e0             73 68 61 64 6f 77 73 20 6f 72 20 28 73 68 61 64 6f 77 73 20 3e 20 30 29 3b 0a 0a 65 6e 64 3b 20   ┆shadows or (shadows > 0);  end; ┆
0x0788e0…078900             28 2a 20 61 72 72 61 79 20 64 79 6e 20 69 6e 69 74 20 2a 29 0a 0a 65 6c 73 65 20 20 65 72 72 6f   ┆(* array dyn init *)  else  erro┆
0x078900…078920             72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 20 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73   ┆r(pass4code_error ); end; (* cas┆
0x078920…078940             65 20 2a 29 0a 0a 0a 65 6e 64 3b 20 28 2a 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 6e 69 74 20 2a 29   ┆e *)   end; (* component init *)┆
0x078940…078960             0a 0a 0a 0a 0a 0a 62 65 67 69 6e 20 28 2a 20 73 74 61 72 74 20 6f 66 3a 20 66 69 6e 64 20 73 79   ┆      begin (* start of: find sy┆
0x078960…078980             73 20 69 6e 69 74 20 2a 29 0a 69 66 20 74 6f 6b 65 6e 3c 3e 78 73 79 73 6e 65 77 69 6e 69 74 20   ┆s init *) if token<>xsysnewinit ┆
0x078980…0789a0             74 68 65 6e 0a 62 65 67 69 6e 0a 6f 66 66 73 65 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b   ┆then begin offset := in_integer;┆
0x0789a0…0789c0             0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 73 79 73 69 6e 69 74 20 74 68 65 6e 20 0a 62 65 67 69 6e   ┆ if token = xsysinit then  begin┆
0x0789c0…0789e0             0a 6b 69 6e 64 20 3a 3d 20 31 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f   ┆ kind := 1; end else begin out_o┆
0x0789e0…078a00             70 5f 69 6e 74 28 20 6f 70 5f 72 65 76 6c 61 2c 20 6f 66 66 73 65 74 20 29 3b 0a 6b 69 6e 64 20   ┆p_int( op_revla, offset ); kind ┆
0x078a00…078a20 (32, 0, 6)  3a 3d 20 32 3b 0a 6f 66 66 73 65 74 20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 65 6e 64 0a 65 6c 73 65   ┆:= 2; offset := 0; end; end else┆
0x078a20…078a40             0a 62 65 67 69 6e 20 28 2a 20 68 65 61 70 20 69 6e 69 74 2c 20 6a 75 73 74 20 61 66 74 65 72 20   ┆ begin (* heap init, just after ┆
0x078a40…078a60             6e 65 77 20 63 61 6c 6c 2c 20 69 2e 65 2e 20 74 68 65 20 6f 62 6a 65 63 74 20 61 64 64 72 65 73   ┆new call, i.e. the object addres┆
0x078a60…078a80             73 20 69 73 20 6f 6e 20 74 6f 70 20 6f 66 20 73 74 61 63 6b 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f   ┆s is on top of stack *) out_opco┆
0x078a80…078aa0             64 65 28 6f 70 5f 72 65 76 70 64 29 3b 0a 6b 69 6e 64 3a 3d 20 32 3b 0a 6f 66 66 73 65 74 3a 3d   ┆de(op_revpd); kind:= 2; offset:=┆
0x078aa0…078ac0             20 30 0a 65 6e 64 3b 20 28 2a 20 68 65 61 70 20 69 6e 69 74 20 2a 29 0a 67 65 74 5f 74 6f 6b 65   ┆ 0 end; (* heap init *) get_toke┆
0x078ac0…078ae0             6e 3b 0a 63 6f 6d 70 6f 6e 65 6e 74 5f 69 6e 69 74 28 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c   ┆n; component_init( kind, offset,┆
0x078ae0…078b00             20 72 65 66 5f 63 6f 75 6e 74 2c 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 29 3b 0a 69 66 20 6e   ┆ ref_count, shadow_count ); if n┆
0x078b00…078b20             6f 74 20 68 65 61 70 5f 69 6e 69 74 20 74 68 65 6e 0a 69 66 20 28 68 77 5f 73 74 61 63 6b 5f 73   ┆ot heap_init then if (hw_stack_s┆
0x078b20…078b40             69 7a 65 20 3c 3e 20 30 29 20 6f 72 20 28 63 2e 73 74 61 63 6b 5f 73 69 7a 65 20 3c 3e 20 30 29   ┆ize <> 0) or (c.stack_size <> 0)┆
0x078b40…078b60             20 74 68 65 6e 20 65 76 61 6c 73 74 61 63 6b 5f 65 72 72 6f 72 3b 0a 0a 65 6e 64 3b 20 28 2a 20   ┆ then evalstack_error;  end; (* ┆
0x078b60…078b80             66 69 6e 64 20 73 79 73 20 69 6e 69 74 20 2a 29 0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆find sys init *)      procedure ┆
0x078b80…078ba0             20 66 69 6e 64 5f 62 6c 6f 63 6b 20 28 6f 75 74 65 72 6d 6f 73 74 5f 6c 65 76 65 6c 3a 20 62 6f   ┆ find_block (outermost_level: bo┆
0x078ba0…078bc0             6f 6c 65 61 6e 3b 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 3a 20 69 6e 74 65 67 65 72 3b 20 6e   ┆olean; param_length : integer; n┆
0x078bc0…078be0             61 6d 65 20 3a 20 69 64 65 6e 74 69 66 69 65 72 20 29 3b 0a 74 79 70 65 0a 73 6b 69 70 5f 6d 6f   ┆ame : identifier ); type skip_mo┆
0x078be0…078c00             64 65 73 20 3d 20 28 73 6b 69 70 2c 20 64 6f 6e 74 5f 73 6b 69 70 2c 20 65 6e 64 5f 73 6b 69 70   ┆des = (skip, dont_skip, end_skip┆
0x078c00…078c20 (32, 0, 7)  2c 20 65 6e 64 5f 73 6b 69 70 5f 62 6c 6f 63 6b 29 3b 0a 0a 76 61 72 0a 69 2c 20 72 65 66 63 6f   ┆, end_skip_block);  var i, refco┆
0x078c20…078c40             75 6e 74 2c 20 72 65 66 73 2c 20 73 68 61 64 6f 77 63 6f 75 6e 74 2c 20 73 68 61 64 6f 77 73 20   ┆unt, refs, shadowcount, shadows ┆
0x078c40…078c60             3a 20 69 6e 74 65 67 65 72 3b 0a 76 61 72 5f 6c 65 6e 67 74 68 2c 20 70 72 6f 63 5f 70 61 72 6c   ┆: integer; var_length, proc_parl┆
0x078c60…078c80             65 6e 67 74 68 2c 20 70 61 72 61 6d 5f 63 6f 75 6e 74 2c 0a 72 6f 75 6c 69 78 2c 20 72 6f 75 6e   ┆ength, param_count, roulix, roun┆
0x078c80…078ca0             69 76 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6e 69 76 5f 70 64 2c 20 6f 66 66 73 65 74 5f 70 64 20   ┆iv : integer; niv_pd, offset_pd ┆
0x078ca0…078cc0             3a 20 69 6e 74 65 67 65 72 3b 0a 6f 6c 64 5f 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 20   ┆: integer; old_default_appetite ┆
0x078cc0…078ce0             3a 20 69 6e 74 65 67 65 72 3b 0a 6f 6c 64 5f 63 20 3a 20 63 6f 6e 74 65 78 74 3b 0a 65 78 74 65   ┆: integer; old_c : context; exte┆
0x078ce0…078d00             72 6e 61 6c 5f 70 72 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6e 61 6d 65 5f 70 64 20 3a 20 69 64 65   ┆rnal_pr : boolean; name_pd : ide┆
0x078d00…078d20             6e 74 69 66 69 65 72 3b 0a 6c 69 6e 65 5f 6e 6f 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6c 6f 63 61   ┆ntifier; line_no : integer; loca┆
0x078d20…078d40             6c 5f 64 79 6e 5f 72 65 66 73 2c 0a 6c 6f 63 61 6c 5f 64 79 6e 5f 73 68 61 64 6f 77 73 2c 0a 65   ┆l_dyn_refs, local_dyn_shadows, e┆
0x078d40…078d60             6e 64 5f 69 6e 69 74 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 5f 6c 69 6e 65 20 3a 20 69   ┆nd_init: boolean; begin_line : i┆
0x078d60…078d80             6e 74 65 67 65 72 3b 0a 6a 75 6d 70 5f 73 74 61 74 65 20 3a 20 73 6b 69 70 5f 6d 6f 64 65 73 3b   ┆nteger; jump_state : skip_modes;┆
0x078d80…078da0             20 28 2a 20 64 65 66 69 6e 65 73 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 2a 29 0a 73 6b 69   ┆ (* defines current state *) ski┆
0x078da0…078dc0             70 5f 62 6c 6f 63 6b 20 3a 20 62 6f 6f 6c 65 61 6e 3b 20 28 2a 20 74 72 75 65 20 77 68 65 6e 20   ┆p_block : boolean; (* true when ┆
0x078dc0…078de0             6a 75 6d 70 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 2a 29 0a 70 65 6e 64 69 6e 67 5f 65 6e 74 72   ┆jump to continue *) pending_entr┆
0x078de0…078e00             79 3a 20 62 6f 6f 6c 65 61 6e 3b 20 28 2a 20 74 72 75 65 2c 20 77 68 65 6e 20 65 6e 74 72 79 2d   ┆y: boolean; (* true, when entry-┆
0x078e00…078e20 (32, 0, 8)  70 6f 69 6e 74 20 6e 6f 74 20 64 65 66 69 6e 65 64 20 79 65 74 20 2a 29 0a 74 65 6d 70 6c 61 74   ┆point not defined yet *) templat┆
0x078e20…078e40             65 5f 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 64 79 6e 5f 76 61 72 5f 6f 66 66   ┆e_v : varaddr_descr; dyn_var_off┆
0x078e40…078e60             73 65 74 20 3a 20 69 6e 74 65 67 65 72 3b 0a 64 79 6e 5f 79 65 73 5f 6f 72 5f 6e 6f 20 3a 20 62   ┆set : integer; dyn_yes_or_no : b┆
0x078e60…078e80             6f 6f 6c 65 61 6e 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 6b 69 70 5f 61 72 6f 75 6e 64 20 28   ┆oolean;  procedure skip_around (┆
0x078e80…078ea0             6a 75 6d 70 3a 20 73 6b 69 70 5f 6d 6f 64 65 73 29 3b 0a 62 65 67 69 6e 0a 69 66 20 6a 75 6d 70   ┆jump: skip_modes); begin if jump┆
0x078ea0…078ec0             20 3c 3e 20 6a 75 6d 70 5f 73 74 61 74 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6a 75 6d   ┆ <> jump_state then begin if jum┆
0x078ec0…078ee0             70 20 3d 20 73 6b 69 70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 73 6b 69 70 5f 62 6c 6f 63 6b 3a 3d   ┆p = skip then begin skip_block:=┆
0x078ee0…078f00             74 72 75 65 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29   ┆true; out_nl; out_token (zbegin)┆
0x078f00…078f20             3b 0a 6f 75 74 5f 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 5f 63 6f 6e 74 69 6e 75 65 29 3b 0a   ┆; out_identifier (id_continue); ┆
0x078f20…078f40             6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20   ┆out_token (zendlist); out_op_id ┆
0x078f40…078f60             28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 63 6f 6e 74 69 6e 75 65 29 3b 0a 65 6e 64 0a 65 6c 73   ┆(op_jmprw, id_continue); end els┆
0x078f60…078f80             65 0a 69 66 20 70 65 6e 64 69 6e 67 5f 65 6e 74 72 79 20 74 68 65 6e 0a 62 65 67 69 6e 0a 70 65   ┆e if pending_entry then begin pe┆
0x078f80…078fa0             6e 64 69 6e 67 5f 65 6e 74 72 79 20 3a 3d 20 66 61 6c 73 65 3b 0a 28 2a 20 64 65 66 69 6e 65 20   ┆nding_entry := false; (* define ┆
0x078fa0…078fc0             74 68 65 20 65 6e 74 72 79 2d 70 6f 69 6e 74 20 2a 29 0a 69 66 20 6f 75 74 65 72 6d 6f 73 74 5f   ┆the entry-point *) if outermost_┆
0x078fc0…078fe0             6c 65 76 65 6c 20 6f 72 20 28 72 6f 75 6c 69 78 20 3d 20 2d 31 29 20 74 68 65 6e 0a 6f 75 74 5f   ┆level or (roulix = -1) then out_┆
0x078fe0…079000             6c 61 62 65 6c 20 28 69 64 5f 65 6e 74 72 79 29 3b 0a 69 66 20 72 6f 75 6c 69 78 20 3c 3e 20 2d   ┆label (id_entry); if roulix <> -┆
0x079000…079020 (32, 0, 9)  31 20 74 68 65 6e 0a 6f 75 74 5f 6c 69 78 5f 6c 61 62 65 6c 20 28 72 5f 6e 61 6d 65 2c 20 72 6f   ┆1 then out_lix_label (r_name, ro┆
0x079020…079040             75 6c 69 78 29 3b 0a 0a 28 2a 20 67 65 6e 65 72 61 74 65 20 61 20 70 72 6f 6c 6f 67 20 66 6f 72   ┆ulix);  (* generate a prolog for┆
0x079040…079060             20 74 68 65 20 62 6f 64 79 20 2a 29 0a 69 66 20 70 72 6f 6c 6f 67 5f 79 65 73 20 6f 72 20 28 72   ┆ the body *) if prolog_yes or (r┆
0x079060…079080             6f 75 6c 69 78 20 3c 3e 20 2d 31 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 63 6f 6e 74 65 78 74 5f   ┆oulix <> -1) then begin context_┆
0x079080…0790a0             65 76 61 6c 28 2d 34 29 3b 20 28 2a 74 68 65 20 6c 69 6e 65 69 6e 66 6f 72 6d 61 74 69 6f 6e 20   ┆eval(-4); (*the lineinformation ┆
0x0790a0…0790c0             69 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 61 63 74 69 76 61 74 69 6f 6e 20 72 65 63 6f 72 64   ┆is part of the activation record┆
0x0790c0…0790e0             2a 29 0a 28 2a 67 65 6e 65 72 61 74 65 20 6c 69 6e 6b 20 74 6f 20 6c 69 6e 65 74 61 62 6c 65 2c   ┆*) (*generate link to linetable,┆
0x0790e0…079100             20 62 75 74 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 69 73 20 6e 65 76 65 72 20 63 61 72 72 69 65   ┆ but instruction is never carrie┆
0x079100…079120             64 20 6f 75 74 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 61 61 64 2c 69 64 5f 6c   ┆d out *) out_op_id(op_reaad,id_l┆
0x079120…079140             69 6e 65 74 61 62 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 69 6e 73 74 72 75 63 74 69 6f   ┆inetab); out_comment('instructio┆
0x079140…079160             6e 20 6e 65 76 65 72 20 65 78 65 63 75 74 65 64 27 29 3b 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a   ┆n never executed'); (* initializ┆
0x079160…079180             65 20 6d 61 78 2d 73 74 61 63 6b 20 72 65 67 69 73 74 65 72 20 2a 29 0a 69 66 20 72 6f 75 6c 69   ┆e max-stack register *) if rouli┆
0x079180…0791a0             78 20 3d 20 2d 31 20 74 68 65 6e 20 28 2a 20 70 72 6f 63 65 73 73 20 62 6f 64 79 20 2a 29 0a 63   ┆x = -1 then (* process body *) c┆
0x0791a0…0791c0             6f 64 65 5f 73 65 74 5f 6d 61 78 73 74 61 63 6b 20 28 69 64 5f 62 6f 6e 61 70 70 65 74 69 74 65   ┆ode_set_maxstack (id_bonappetite┆
0x0791c0…0791e0             29 3b 0a 28 2a 20 61 6c 6c 6f 63 61 74 65 20 72 6f 6f 6d 20 66 6f 72 20 6c 6f 63 61 6c 20 76 61   ┆); (* allocate room for local va┆
0x0791e0…079200             72 69 61 62 6c 65 73 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f 72 65 6e 68 62 2c 20   ┆riables *) out_op_id (op_renhb, ┆
0x079200…079220 (32, 0, 10) 69 64 5f 61 70 70 73 74 61 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f   ┆id_appstat); out_nl; end; (* pro┆
0x079220…079240             6c 6f 67 20 2a 29 0a 65 6e 64 20 28 2a 20 70 65 6e 64 69 6e 67 20 65 6e 74 72 79 20 2a 29 0a 65   ┆log *) end (* pending entry *) e┆
0x079240…079260             6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 6a 75 6d 70 20 3c 3e 20 65 6e 64 5f 73 6b 69 70 5f 62 6c   ┆lse begin if jump <> end_skip_bl┆
0x079260…079280             6f 63 6b 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 63 6f 6e   ┆ock then begin out_label (id_con┆
0x079280…0792a0             74 69 6e 75 65 29 3b 0a 69 66 20 6a 75 6d 70 20 3c 3e 20 65 6e 64 5f 73 6b 69 70 20 74 68 65 6e   ┆tinue); if jump <> end_skip then┆
0x0792a0…0792c0             0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b   ┆ begin out_nl; out_token (zend);┆
0x0792c0…0792e0             0a 65 6e 64 3b 0a 65 6e 64 20 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 73 6b 69 70 5f 62 6c 6f   ┆ end; end else begin if skip_blo┆
0x0792e0…079300             63 6b 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28   ┆ck then begin out_nl; out_token(┆
0x079300…079320             7a 65 6e 64 29 3b 0a 73 6b 69 70 5f 62 6c 6f 63 6b 3a 3d 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 6a   ┆zend); skip_block:=false; end; j┆
0x079320…079340             75 6d 70 3a 3d 64 6f 6e 74 5f 73 6b 69 70 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 6a 75 6d 70 5f   ┆ump:=dont_skip; end; end;  jump_┆
0x079340…079360             73 74 61 74 65 20 3a 3d 20 6a 75 6d 70 3b 0a 65 6e 64 3b 20 28 2a 20 63 68 61 6e 67 65 20 6f 66   ┆state := jump; end; (* change of┆
0x079360…079380             20 6a 75 6d 70 73 74 61 74 65 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20   ┆ jumpstate *) end; (* procedure ┆
0x079380…0793a0             73 6b 69 70 2d 61 72 6f 75 6e 64 20 2a 29 0a 0a 62 65 67 69 6e 20 28 2a 20 62 6f 64 79 20 6f 66   ┆skip-around *)  begin (* body of┆
0x0793a0…0793c0             20 66 69 6e 64 20 62 6c 6f 63 6b 20 2a 29 0a 0a 69 66 20 28 74 6f 6b 65 6e 20 3d 20 78 66 75 6e   ┆ find block *)  if (token = xfun┆
0x0793c0…0793e0             63 29 20 6f 72 20 28 74 6f 6b 65 6e 20 3d 20 78 70 72 6f 63 29 20 74 68 65 6e 0a 62 65 67 69 6e   ┆c) or (token = xproc) then begin┆
0x0793e0…079400             0a 72 6f 75 6c 69 78 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 6e 5f 69 64 65 6e 74 69   ┆ roulix := in_integer; in_identi┆
0x079400…079420 (32, 0, 11) 66 69 65 72 20 28 6e 61 6d 65 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 69 66 20 6f 75 74 65 72   ┆fier (name); get_token; if outer┆
0x079420…079440             6d 6f 73 74 5f 6c 65 76 65 6c 20 74 68 65 6e 0a 77 69 74 68 20 64 65 73 63 72 20 64 6f 0a 62 65   ┆most_level then with descr do be┆
0x079440…079460             67 69 6e 0a 65 78 63 65 70 74 69 6f 6e 5f 70 6f 69 6e 74 20 3a 3d 20 27 30 20 20 20 20 20 20 20   ┆gin exception_point := '0       ┆
0x079460…079480             20 20 20 20 27 3b 0a 65 6e 64 3b 0a 65 6e 64 0a 65 6c 73 65 0a 72 6f 75 6c 69 78 20 3a 3d 20 2d   ┆    '; end; end else roulix := -┆
0x079480…0794a0             31 3b 20 20 28 2a 20 69 2e 65 2e 20 70 72 6f 63 65 73 73 20 2a 29 0a 69 66 20 74 6f 6b 65 6e 20   ┆1;  (* i.e. process *) if token ┆
0x0794a0…0794c0             3c 3e 20 78 62 6c 6f 63 6b 20 74 68 65 6e 20 65 72 72 6f 72 20 28 70 61 73 73 34 63 6f 64 65 5f   ┆<> xblock then error (pass4code_┆
0x0794c0…0794e0             65 72 72 6f 72 29 3b 0a 0a 6c 69 6e 65 5f 6e 6f 20 3a 3d 20 69 6e 5f 6c 69 6e 65 5f 6e 6f 3b 0a   ┆error);  line_no := in_line_no; ┆
0x0794e0…079500             72 6f 75 6e 69 76 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b   ┆rouniv := in_integer; get_token;┆
0x079500…079520             0a 0a 28 2a 20 64 65 63 6c 61 72 65 20 67 6c 6f 62 61 6c 2d 6c 61 62 65 6c 73 2c 20 61 74 20 6f   ┆  (* declare global-labels, at o┆
0x079520…079540             75 74 65 72 6d 6f 73 74 20 6c 65 76 65 6c 20 2a 29 0a 69 66 20 6f 75 74 65 72 6d 6f 73 74 5f 6c   ┆utermost level *) if outermost_l┆
0x079540…079560             65 76 65 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69   ┆evel then begin out_token (zbegi┆
0x079560…079580             6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 65 6e 74 72 79 29 3b 0a 6f 75 74 5f 70 5f 69   ┆n); out_p_id (id_entry); out_p_i┆
0x079580…0795a0             64 20 28 69 64 5f 65 78 69 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 65 78 63 65 70 74   ┆d (id_exit); out_p_id (id_except┆
0x0795a0…0795c0             69 6f 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 63 31 32 5f 6e 61 6d 65 29 3b 20 6f 75 74 5f 63   ┆ion); out_p_id (c12_name); out_c┆
0x0795c0…0795e0             68 61 72 20 28 27 23 27 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 65 31 32 5f 6e 61 6d 65 29 3b 20   ┆har ('#'); out_p_id (e12_name); ┆
0x0795e0…079600             6f 75 74 5f 63 68 61 72 20 28 27 23 27 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 72 31 32 5f 6e 61   ┆out_char ('#'); out_p_id (r12_na┆
0x079600…079620 (32, 0, 12) 6d 65 29 3b 20 6f 75 74 5f 63 68 61 72 20 28 27 23 27 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 6c   ┆me); out_char ('#'); out_p_id (l┆
0x079620…079640             31 32 5f 6e 61 6d 65 29 3b 20 6f 75 74 5f 63 68 61 72 20 28 27 23 27 29 3b 0a 6f 75 74 5f 74 6f   ┆12_name); out_char ('#'); out_to┆
0x079640…079660             6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 65 6e 64 3b 0a 0a 28 2a   ┆ken (zendlist); out_nl; end;  (*┆
0x079660…079680             20 74 77 6f 20 63 6f 6d 70 6c 65 74 65 20 64 69 66 66 65 72 65 6e 74 20 62 6f 64 69 65 73 20 61   ┆ two complete different bodies a┆
0x079680…0796a0             72 65 20 72 65 63 6f 67 6e 69 7a 65 64 3a 20 2a 29 0a 28 2a 20 20 20 31 2e 20 63 6f 64 65 2d 62   ┆re recognized: *) (*   1. code-b┆
0x0796a0…0796c0             6f 64 69 65 73 2c 20 69 2e 65 2e 20 27 62 65 67 69 6e 62 6f 64 79 27 20 20 20 20 20 20 20 20 20   ┆odies, i.e. 'beginbody'         ┆
0x0796c0…0796e0             20 20 20 2a 29 0a 28 2a 20 20 20 32 2e 20 6e 6f 72 6d 61 6c 2d 62 6f 64 69 65 73 2c 20 69 2e 65   ┆   *) (*   2. normal-bodies, i.e┆
0x0796e0…079700             2e 20 70 61 73 63 61 6c 38 30 2d 67 65 6e 65 72 61 74 65 64 20 20 20 2a 29 0a 0a 69 66 20 74 6f   ┆. pascal80-generated   *)  if to┆
0x079700…079720             6b 65 6e 20 3d 20 78 62 65 67 69 6e 63 6f 64 65 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 63   ┆ken = xbegincode then begin (* c┆
0x079720…079740             6f 64 65 2d 62 6f 64 79 20 2a 29 0a 28 2a 20 6d 61 6b 65 20 70 72 6f 70 65 72 20 63 68 61 6e 67   ┆ode-body *) (* make proper chang┆
0x079740…079760             65 73 20 74 6f 20 27 64 65 73 63 72 27 20 2a 29 0a 69 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72   ┆es to 'descr' *) i := in_integer┆
0x079760…079780             3b 0a 69 66 20 72 6f 75 6c 69 78 20 3c 3e 20 2d 31 20 74 68 65 6e 20 28 2a 20 6f 6e 6c 79 20 66   ┆; if roulix <> -1 then (* only f┆
0x079780…0797a0             75 6e 63 74 69 6f 6e 73 20 61 6e 64 20 70 72 6f 63 65 64 75 72 65 73 20 6d 61 79 20 62 65 20 6f   ┆unctions and procedures may be o┆
0x0797a0…0797c0             70 65 6e 2d 72 6f 75 74 69 6e 65 73 20 2a 29 0a 69 66 20 6f 75 74 65 72 6d 6f 73 74 5f 6c 65 76   ┆pen-routines *) if outermost_lev┆
0x0797c0…0797e0             65 6c 20 61 6e 64 20 6f 70 65 6e 72 6f 75 74 69 6e 65 5f 79 65 73 20 74 68 65 6e 0a 77 69 74 68   ┆el and openroutine_yes then with┆
0x0797e0…079800             20 64 65 73 63 72 20 64 6f 0a 62 65 67 69 6e 0a 65 6e 74 72 79 5f 70 6f 69 6e 74 20 3a 3d 20 27   ┆ descr do begin entry_point := '┆
0x079800…079820 (32, 0, 13) 30 20 20 20 20 20 20 20 20 20 20 20 27 3b 0a 6c 61 73 74 5f 70 61 72 61 6d 5f 6f 66 66 73 65 74   ┆0           '; last_param_offset┆
0x079820…079840             20 20 20 20 3a 3d 20 69 3b 0a 69 66 20 6b 69 6e 64 20 3d 20 32 20 74 68 65 6e 20 6b 69 6e 64 20   ┆    := i; if kind = 2 then kind ┆
0x079840…079860             3a 3d 20 34 0a 65 6c 73 65 20 69 66 20 6b 69 6e 64 20 3d 20 33 20 74 68 65 6e 20 6b 69 6e 64 20   ┆:= 4 else if kind = 3 then kind ┆
0x079860…079880             3a 3d 20 35 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 6f 70 74 69 6f 6e   ┆:= 5; out_nl; out_token (zoption┆
0x079880…0798a0             29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 36 29 3b 20 20 28 2a 20 70 61 73 73 20 6e 6f 20   ┆); out_integer (6);  (* pass no ┆
0x0798a0…0798c0             2a 29 0a 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 31 32 29 3b 20 28 2a 20 6f 70 74 69 6f 6e 20 3d   ┆*) out_integer (12); (* option =┆
0x0798c0…0798e0             20 63 6c 6f 73 65 64 20 6f 72 20 6f 70 65 6e 20 62 6f 64 79 20 2a 29 0a 6f 75 74 5f 69 6e 74 65   ┆ closed or open body *) out_inte┆
0x0798e0…079900             67 65 72 20 28 30 29 3b 20 20 28 2a 20 76 61 6c 75 65 20 3d 20 6f 70 65 6e 20 62 6f 64 79 20 2a   ┆ger (0);  (* value = open body *┆
0x079900…079920             29 0a 6f 75 74 5f 63 68 61 72 28 27 2e 27 29 3b 20 20 20 20 28 2a 20 65 6e 64 20 6f 66 20 6f 70   ┆) out_char('.');    (* end of op┆
0x079920…079940             74 69 6f 6e 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 63 6f 64 65 72 6f   ┆tion *) end else begin (* codero┆
0x079940…079960             75 74 69 6e 65 20 6d 75 73 74 20 62 65 20 63 6c 6f 73 65 64 20 61 6e 79 77 61 79 20 2a 29 0a 6f   ┆utine must be closed anyway *) o┆
0x079960…079980             75 74 5f 6e 6c 3b 0a 6f 75 74 5f 6c 69 78 5f 6c 61 62 65 6c 20 28 72 5f 6e 61 6d 65 2c 20 72 6f   ┆ut_nl; out_lix_label (r_name, ro┆
0x079980…0799a0             75 6c 69 78 29 3b 0a 65 6e 64 3b 0a 28 2a 20 63 6f 70 79 20 74 68 65 20 63 6f 64 65 20 2a 29 0a   ┆ulix); end; (* copy the code *) ┆
0x0799a0…0799c0             6f 75 74 5f 6e 6c 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 77 68 69 6c 65 20 74 6f 6b 65 6e 20 3d   ┆out_nl; get_token; while token =┆
0x0799c0…0799e0             20 78 63 6f 64 65 6c 69 6e 65 20 64 6f 0a 62 65 67 69 6e 0a 66 6f 72 20 69 20 3a 3d 20 69 6e 5f   ┆ xcodeline do begin for i := in_┆
0x0799e0…079a00             69 6e 74 65 67 65 72 20 64 6f 77 6e 74 6f 20 31 20 64 6f 20 6f 75 74 5f 63 68 61 72 20 28 63 68   ┆integer downto 1 do out_char (ch┆
0x079a00…079a20 (32, 0, 14) 72 28 69 6e 5f 69 6e 74 65 67 65 72 29 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 67 65 74 5f 74 6f 6b 65   ┆r(in_integer)); out_nl; get_toke┆
0x079a20…079a40             6e 3b 0a 65 6e 64 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 63 6f 64 65 29 3b 0a 65   ┆n; end; skip_token (xendcode); e┆
0x079a40…079a60             6e 64 20 28 2a 20 63 6f 64 65 2d 62 6f 64 79 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a   ┆nd (* code-body *) else begin (*┆
0x079a60…079a80             20 6e 6f 72 6d 61 6c 2d 62 6f 64 79 20 2a 29 0a 0a 6f 6c 64 5f 63 20 3a 3d 20 63 3b 0a 0a 77 69   ┆ normal-body *)  old_c := c;  wi┆
0x079a80…079aa0             74 68 20 63 20 64 6f 0a 62 65 67 69 6e 0a 0a 6e 69 76 20 3a 3d 20 72 6f 75 6e 69 76 3b 0a 73 74   ┆th c do begin  niv := rouniv; st┆
0x079aa0…079ac0             61 63 6b 5f 73 69 7a 65 20 3a 3d 20 30 3b 0a 6d 61 78 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d   ┆ack_size := 0; max_stack_size :=┆
0x079ac0…079ae0             20 30 3b 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 30 3b 0a 0a 65 6e 64 3b 0a 0a 28   ┆ 0; hw_stack_size := 0;  end;  (┆
0x079ae0…079b00             2a 20 64 65 63 6c 61 72 65 20 72 6f 75 74 69 6e 65 2d 6c 61 62 65 6c 73 20 2a 29 0a 6f 75 74 5f   ┆* declare routine-labels *) out_┆
0x079b00…079b20             6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64   ┆nl; out_token (zbegin); out_p_id┆
0x079b20…079b40             20 28 69 64 5f 61 70 70 65 76 61 6c 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 61 70 70 73   ┆ (id_appeval); out_p_id (id_apps┆
0x079b40…079b60             74 61 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 77 6f 72 6b 29 3b 0a 6f 75 74 5f 70 5f   ┆tat); out_p_id (id_work); out_p_┆
0x079b60…079b80             69 64 20 28 69 64 5f 6c 69 6e 65 74 61 62 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 62 6c   ┆id (id_linetab); out_p_id (id_bl┆
0x079b80…079ba0             6f 63 6b 65 78 69 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a   ┆ockexit); out_token (zendlist); ┆
0x079ba0…079bc0             6f 75 74 5f 6e 6c 3b 0a 0a 72 65 66 63 6f 75 6e 74 20 3a 3d 20 30 3b 0a 6c 6f 63 61 6c 5f 64 79   ┆out_nl;  refcount := 0; local_dy┆
0x079bc0…079be0             6e 5f 72 65 66 73 20 3a 3d 20 66 61 6c 73 65 3b 0a 73 68 61 64 6f 77 63 6f 75 6e 74 20 3a 3d 20   ┆n_refs := false; shadowcount := ┆
0x079be0…079c00             30 3b 0a 6c 6f 63 61 6c 5f 64 79 6e 5f 73 68 61 64 6f 77 73 20 3a 3d 20 66 61 6c 73 65 3b 0a 64   ┆0; local_dyn_shadows := false; d┆
0x079c00…079c20 (32, 0, 15) 79 6e 5f 79 65 73 5f 6f 72 5f 6e 6f 20 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 5f 69 6e 69 74 20   ┆yn_yes_or_no := false; end_init ┆
0x079c20…079c40             3a 3d 20 66 61 6c 73 65 3b 0a 6a 75 6d 70 5f 73 74 61 74 65 20 3a 3d 20 73 6b 69 70 3b 0a 73 6b   ┆:= false; jump_state := skip; sk┆
0x079c40…079c60             69 70 5f 62 6c 6f 63 6b 20 3a 3d 20 66 61 6c 73 65 3b 0a 70 65 6e 64 69 6e 67 5f 65 6e 74 72 79   ┆ip_block := false; pending_entry┆
0x079c60…079c80             20 3a 3d 20 74 72 75 65 3b 0a 0a 69 66 20 6f 75 74 65 72 6d 6f 73 74 5f 6c 65 76 65 6c 20 61 6e   ┆ := true;  if outermost_level an┆
0x079c80…079ca0             64 20 28 72 6f 75 6c 69 78 20 3d 20 2d 31 29 20 74 68 65 6e 0a 73 6b 69 70 5f 61 72 6f 75 6e 64   ┆d (roulix = -1) then skip_around┆
0x079ca0…079cc0             20 28 64 6f 6e 74 5f 73 6b 69 70 29 3b 20 20 28 2a 20 6f 75 74 65 72 6d 6f 73 74 20 70 72 6f 63   ┆ (dont_skip);  (* outermost proc┆
0x079cc0…079ce0             65 73 73 20 6d 75 73 74 20 73 74 61 72 74 20 69 6d 6d 65 64 69 61 74 6c 79 20 2a 29 0a 0a 72 65   ┆ess must start immediatly *)  re┆
0x079ce0…079d00             70 65 61 74 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 65 78 74 70 72 6f 63 2c 0a 78 65 78   ┆peat case token of xextproc, xex┆
0x079d00…079d20             74 66 75 6e 63 3a 0a 66 69 6e 64 5f 65 78 74 5f 72 6f 75 74 69 6e 65 3b 0a 78 70 72 6f 63 2c 0a   ┆tfunc: find_ext_routine; xproc, ┆
0x079d20…079d40             78 66 75 6e 63 3a 0a 62 65 67 69 6e 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 20 28 73 6b 69 70 29 3b   ┆xfunc: begin skip_around (skip);┆
0x079d40…079d60             0a 66 69 6e 64 5f 62 6c 6f 63 6b 20 28 66 61 6c 73 65 2c 20 30 2d 30 2d 30 2c 20 27 2a 2a 2a 2a   ┆ find_block (false, 0-0-0, '****┆
0x079d60…079d80             2a 2a 20 20 20 20 20 20 27 29 3b 0a 65 6e 64 3b 0a 0a 78 69 6e 69 74 69 61 6c 69 7a 65 2c 0a 78   ┆**      '); end;  xinitialize, x┆
0x079d80…079da0             65 78 74 65 78 63 65 70 74 69 6f 6e 2c 0a 78 65 78 63 65 70 74 69 6f 6e 20 3a 0a 62 65 67 69 6e   ┆extexception, xexception : begin┆
0x079da0…079dc0             0a 73 6b 69 70 5f 61 72 6f 75 6e 64 20 28 64 6f 6e 74 5f 73 6b 69 70 29 3b 0a 66 69 6e 64 5f 69   ┆ skip_around (dont_skip); find_i┆
0x079dc0…079de0             6e 69 74 3b 0a 65 6e 64 3b 0a 0a 0a 78 73 79 73 69 6e 69 74 2c 0a 78 73 79 73 64 79 6e 69 6e 69   ┆nit; end;   xsysinit, xsysdynini┆
0x079de0…079e00             74 3a 0a 62 65 67 69 6e 0a 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 28 20 64 6f 6e 74 5f 73 6b 69 70   ┆t: begin  skip_around( dont_skip┆
0x079e00…079e20 (32, 1, 1)  20 29 3b 0a 66 69 6e 64 5f 73 79 73 5f 69 6e 69 74 28 20 72 65 66 73 2c 20 6c 6f 63 61 6c 5f 64   ┆ ); find_sys_init( refs, local_d┆
0x079e20…079e40             79 6e 5f 72 65 66 73 2c 20 73 68 61 64 6f 77 73 2c 20 6c 6f 63 61 6c 5f 64 79 6e 5f 73 68 61 64   ┆yn_refs, shadows, local_dyn_shad┆
0x079e40…079e60             6f 77 73 20 29 3b 0a 73 68 61 64 6f 77 63 6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77 63 6f 75 6e   ┆ows ); shadowcount := shadowcoun┆
0x079e60…079e80             74 20 2b 20 73 68 61 64 6f 77 73 3b 0a 72 65 66 63 6f 75 6e 74 20 3a 3d 20 72 65 66 63 6f 75 6e   ┆t + shadows; refcount := refcoun┆
0x079e80…079ea0             74 20 2b 20 72 65 66 73 3b 0a 0a 65 6e 64 3b 20 28 2a 20 73 79 73 69 6e 69 74 20 61 6e 64 20 73   ┆t + refs;  end; (* sysinit and s┆
0x079ea0…079ec0             79 73 64 79 6e 69 6e 69 74 20 2a 29 0a 0a 0a 0a 78 70 72 6f 63 65 73 73 3a 0a 62 65 67 69 6e 0a   ┆ysdyninit *)    xprocess: begin ┆
0x079ec0…079ee0             0a 28 2a 20 64 65 63 6c 61 72 65 20 69 6e 74 65 72 2d 70 72 6f 63 65 73 73 20 6c 61 62 65 6c 73   ┆ (* declare inter-process labels┆
0x079ee0…079f00             20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a   ┆ *) out_nl; out_token (zbegin); ┆
0x079f00…079f20             6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 70 61 72 61 6d 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69   ┆out_p_id (id_param); out_p_id (i┆
0x079f20…079f40             64 5f 70 72 6f 63 69 6e 66 29 3b 0a 6f 75 74 5f 70 5f 69 64 28 20 69 64 5f 64 65 66 61 75 6c 74   ┆d_procinf); out_p_id( id_default┆
0x079f40…079f60             5f 61 70 70 65 74 69 74 65 20 29 3b 0a 28 2a 20 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 6e 61 6d   ┆_appetite ); (* out_p_id (id_nam┆
0x079f60…079f80             65 29 3b 20 20 38 36 2e 30 39 2e 30 38 20 6e 6f 74 20 75 73 65 64 20 61 6e 79 20 6d 6f 72 65 20   ┆e);  86.09.08 not used any more ┆
0x079f80…079fa0             2a 29 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 0a 73 6b 69 70 5f 61   ┆*) out_token (zendlist);  skip_a┆
0x079fa0…079fc0             72 6f 75 6e 64 20 28 73 6b 69 70 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 6a   ┆round (skip); out_comment( '   j┆
0x079fc0…079fe0             75 6d 70 20 61 63 72 6f 73 73 20 74 68 65 20 70 72 6f 63 65 73 73 20 64 65 63 6c 61 72 61 74 69   ┆ump across the process declarati┆
0x079fe0…07a000             6f 6e 2e 20 27 20 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 20 6f 75 74 5f 6e 6c 3b 0a 0a 6f 66 66 73   ┆on. ' ); out_nl;   out_nl;  offs┆
0x07a000…07a020 (32, 1, 2)  65 74 5f 70 64 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 69 6e 5f 69 64 65 6e 74 69 66   ┆et_pd := in_integer;  in_identif┆
0x07a020…07a040             69 65 72 28 20 6e 61 6d 65 5f 70 64 20 29 3b 0a 0a 70 72 6f 63 5f 70 61 72 6c 65 6e 67 74 68 20   ┆ier( name_pd );  proc_parlength ┆
0x07a040…07a060             3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f 70 61 72 61 6d 73 3b 0a 0a 6f 75 74   ┆:= in_integer;  out_params;  out┆
0x07a060…07a080             5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 65 6e   ┆_token (zbegin); out_p_id (id_en┆
0x07a080…07a0a0             74 72 79 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 65 78 63 65 70 74 69 6f 6e 29 3b 0a 6f   ┆try); out_p_id (id_exception); o┆
0x07a0a0…07a0c0             75 74 5f 70 5f 69 64 20 28 69 64 5f 65 78 69 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65   ┆ut_p_id (id_exit); out_token (ze┆
0x07a0c0…07a0e0             6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 70 72 6f 63 69 6e 66 29 3b   ┆ndlist); out_label (id_procinf);┆
0x07a0e0…07a100             0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 63 6f 6e 73 74 29 3b 20 6f 75 74 5f 69 6e 74 65 67 65 72   ┆ out_token (zconst); out_integer┆
0x07a100…07a120             20 28 32 20 2a 20 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 20 2b 20 32 20 2a 20 77 6f 72 64 5f   ┆ (2 * pointer_length + 2 * word_┆
0x07a120…07a140             6c 65 6e 67 74 68 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 64 6f 6c   ┆length); out_nl;  out_token (dol┆
0x07a140…07a160             6c 61 72 5f 61 29 3b 20 20 6f 75 74 5f 65 78 70 72 28 69 64 5f 65 6e 74 72 79 2c 6a 75 6d 70 5f   ┆lar_a);  out_expr(id_entry,jump_┆
0x07a160…07a180             61 63 72 6f 73 73 5f 66 69 72 73 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 74 6f 6b 65   ┆across_first); out_nl;  out_toke┆
0x07a180…07a1a0             6e 20 28 64 6f 6c 6c 61 72 5f 61 29 3b 20 20 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 65 78 63 65   ┆n (dollar_a);  out_p_id (id_exce┆
0x07a1a0…07a1c0             70 74 69 6f 6e 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 64 6f 6c 6c   ┆ption); out_nl;  out_token (doll┆
0x07a1c0…07a1e0             61 72 5f 69 29 3b 20 20 6f 75 74 5f 70 5f 69 64 28 20 69 64 5f 64 65 66 61 75 6c 74 5f 61 70 70   ┆ar_i);  out_p_id( id_default_app┆
0x07a1e0…07a200             65 74 69 74 65 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 64 6f 6c 6c   ┆etite); out_nl;  out_token (doll┆
0x07a200…07a220 (32, 1, 3)  61 72 5f 69 29 3b 20 20 6f 75 74 5f 70 5f 69 6e 74 20 28 70 72 6f 63 5f 70 61 72 6c 65 6e 67 74   ┆ar_i);  out_p_int (proc_parlengt┆
0x07a220…07a240             68 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75   ┆h); out_nl; out_token (zend); ou┆
0x07a240…07a260             74 5f 6e 6c 3b 0a 20 20 0a 28 2a 20 38 36 2e 30 39 2e 30 38 20 6e 61 6d 65 20 6e 6f 74 20 75 73   ┆t_nl;    (* 86.09.08 name not us┆
0x07a260…07a280             65 64 20 61 6e 79 20 6d 6f 72 65 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 6e 61 6d 65 29 3b   ┆ed any more out_label (id_name);┆
0x07a280…07a2a0             0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 63 6f 6e 73 74 29 3b 20 20 6f 75 74 5f 70 5f 69 6e 74 20   ┆ out_token (zconst);  out_p_int ┆
0x07a2a0…07a2c0             28 31 32 29 3b 0a 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 31 32 20 64 6f 0a 62 65 67 69 6e   ┆(12);  for i := 1 to 12 do begin┆
0x07a2c0…07a2e0             0a 0a 69 66 20 28 20 69 20 6d 6f 64 20 32 20 29 20 3d 20 31 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆  if ( i mod 2 ) = 1 then begin ┆
0x07a2e0…07a300             6f 75 74 5f 6e 6c 3b 20 20 20 6f 75 74 5f 74 61 62 28 20 32 30 20 29 0a 65 6e 64 0a 65 6c 73 65   ┆out_nl;   out_tab( 20 ) end else┆
0x07a300…07a320             0a 6f 75 74 5f 63 68 61 72 20 28 27 2c 27 29 3b 0a 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 64 6f 6c   ┆ out_char (',');  out_token (dol┆
0x07a320…07a340             6c 61 72 5f 62 29 3b 0a 0a 69 66 20 69 20 3c 3d 20 63 5f 73 69 7a 65 5f 69 64 65 6e 74 69 66 69   ┆lar_b);  if i <= c_size_identifi┆
0x07a340…07a360             65 72 20 74 68 65 6e 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f 72 64 28 20 6e 61 6d 65 5f 70   ┆er then out_integer( ord( name_p┆
0x07a360…07a380             64 5b 20 69 20 5d 20 29 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f 72 64   ┆d[ i ] ) ) else out_integer( ord┆
0x07a380…07a3a0             28 20 27 20 27 20 29 20 29 0a 0a 65 6e 64 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65   ┆( ' ' ) )  end; out_nl; out_toke┆
0x07a3a0…07a3c0             6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 28 2a 20 65 6e 64 20 6f 66 20 6e 61 6d 65   ┆n (zend); out_nl; (* end of name┆
0x07a3c0…07a3e0             20 2a 29 0a 0a 28 2a 20 20 69 6e 73 65 72 74 20 74 68 65 20 62 6f 64 79 20 6f 66 20 74 68 65 20   ┆ *)  (*  insert the body of the ┆
0x07a3e0…07a400             70 72 6f 63 65 73 73 20 64 65 63 6c 61 72 61 74 69 6f 6e 3a 20 20 2a 29 0a 0a 67 65 74 5f 74 6f   ┆process declaration:  *)  get_to┆
0x07a400…07a420 (32, 1, 4)  6b 65 6e 3b 0a 0a 6f 6c 64 5f 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 20 3a 3d 20 64 65   ┆ken;  old_default_appetite := de┆
0x07a420…07a440             73 63 72 2e 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 3b 0a 64 65 73 63 72 2e 64 65 66 61   ┆scr.default_appetite; descr.defa┆
0x07a440…07a460             75 6c 74 5f 61 70 70 65 74 69 74 65 20 3a 3d 20 30 3b 0a 66 69 6e 64 5f 62 6c 6f 63 6b 20 28 66   ┆ult_appetite := 0; find_block (f┆
0x07a460…07a480             61 6c 73 65 2c 20 70 72 6f 63 5f 70 61 72 6c 65 6e 67 74 68 2c 20 6e 61 6d 65 5f 70 64 29 3b 0a   ┆alse, proc_parlength, name_pd); ┆
0x07a480…07a4a0             6f 75 74 5f 64 65 66 28 20 69 64 5f 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 20 29 3b 0a   ┆out_def( id_default_appetite ); ┆
0x07a4a0…07a4c0             6f 75 74 5f 69 6e 74 65 67 65 72 28 20 64 65 73 63 72 20 2e 20 64 65 66 61 75 6c 74 5f 61 70 70   ┆out_integer( descr . default_app┆
0x07a4c0…07a4e0             65 74 69 74 65 20 29 3b 0a 0a 64 65 73 63 72 20 2e 20 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69   ┆etite );  descr . default_appeti┆
0x07a4e0…07a500             74 65 20 3a 3d 20 6f 6c 64 5f 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 3b 0a 6f 75 74 5f   ┆te := old_default_appetite; out_┆
0x07a500…07a520             6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 20 20 6f 75 74 5f 63 6f 6d 6d 65   ┆nl; out_token (zend);  out_comme┆
0x07a520…07a540             6e 74 20 28 27 65 6e 64 20 6f 66 20 69 6e 74 65 72 6e 61 6c 20 70 72 6f 63 65 73 73 20 62 6f 64   ┆nt ('end of internal process bod┆
0x07a540…07a560             79 27 29 3b 0a 0a 28 2a 20 20 67 65 6e 65 72 61 74 65 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20   ┆y');  (*  generate code for the ┆
0x07a560…07a580             69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 50 72 6f 63 65 73 73 20 44 65   ┆initialization of the Process De┆
0x07a580…07a5a0             73 63 72 69 70 74 6f 72 3a 20 20 2a 29 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 20 28 65 6e 64 5f 73   ┆scriptor:  *) skip_around (end_s┆
0x07a5a0…07a5c0             6b 69 70 29 3b 0a 0a 63 6f 64 65 5f 70 72 6f 63 65 73 73 5f 69 6e 69 74 28 31 20 28 2a 20 6b 69   ┆kip);  code_process_init(1 (* ki┆
0x07a5c0…07a5e0             6e 64 20 64 69 72 65 63 74 20 61 64 64 72 65 73 73 61 62 6c 65 20 2a 29 2c 20 6f 66 66 73 65 74   ┆nd direct addressable *), offset┆
0x07a5e0…07a600             5f 70 64 2c 20 66 61 6c 73 65 28 2a 20 6e 6f 74 20 65 78 74 65 72 6e 61 6c 20 2a 29 29 3b 0a 0a   ┆_pd, false(* not external *));  ┆
0x07a600…07a620 (32, 1, 5)  73 6b 69 70 5f 61 72 6f 75 6e 64 20 28 65 6e 64 5f 73 6b 69 70 5f 62 6c 6f 63 6b 29 3b 20 20 6f   ┆skip_around (end_skip_block);  o┆
0x07a620…07a640             75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27 65 6e 64 20 2e 2e 63 6f 6e 74 69 6e 75 65 2e 2e 20 62 6c   ┆ut_comment ('end ..continue.. bl┆
0x07a640…07a660             6f 63 6b 27 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b   ┆ock'); out_nl; out_token (zend);┆
0x07a660…07a680             20 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27 65 6e 64 20 6f 66 20 69 6e 74 65 72 6e 61 6c 20   ┆  out_comment ('end of internal ┆
0x07a680…07a6a0             70 72 6f 63 65 73 73 20 69 6e 69 74 27 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 0a 74 72 61 70 5f 63 6f   ┆process init'); out_nl;  trap_co┆
0x07a6a0…07a6c0             64 65 20 3a 3d 20 6d 65 61 73 75 72 65 6d 65 6e 74 5f 79 65 73 3b 0a 63 75 72 72 65 6e 74 5f 74   ┆de := measurement_yes; current_t┆
0x07a6c0…07a6e0             72 61 70 5f 6e 72 20 3a 3d 20 30 3b 20 28 2a 20 72 65 74 75 72 6e 20 74 6f 20 73 75 72 72 6f 75   ┆rap_nr := 0; (* return to surrou┆
0x07a6e0…07a700             6e 64 69 6e 67 20 6d 61 69 6e 20 62 6c 6f 63 6b 20 2a 29 0a 0a 0a 65 6e 64 3b 0a 0a 0a 78 61 72   ┆nding main block *)   end;   xar┆
0x07a700…07a720             72 61 79 31 74 65 6d 70 6c 61 74 65 2c 20 78 61 72 72 61 79 32 74 65 6d 70 6c 61 74 65 2c 20 78   ┆ray1template, xarray2template, x┆
0x07a720…07a740             61 72 72 61 79 33 74 65 6d 70 6c 61 74 65 2c 0a 78 72 65 63 6f 72 64 74 65 6d 70 6c 61 74 65 20   ┆array3template, xrecordtemplate ┆
0x07a740…07a760             3a 0a 62 65 67 69 6e 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 28 20 64 6f 6e 74 5f 73 6b 69 70 20 29   ┆: begin skip_around( dont_skip )┆
0x07a760…07a780             3b 0a 20 64 79 6e 5f 74 79 70 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 65 6e 64 3b 0a 0a 0a   ┆;  dyn_type_declaration; end;   ┆
0x07a780…07a7a0             78 61 6c 6c 6f 63 64 79 6e 76 61 72 20 3a 0a 62 65 67 69 6e 0a 73 6b 69 70 5f 61 72 6f 75 6e 64   ┆xallocdynvar : begin skip_around┆
0x07a7a0…07a7c0             28 20 64 6f 6e 74 5f 73 6b 69 70 20 29 3b 0a 0a 64 79 6e 5f 76 61 72 5f 6f 66 66 73 65 74 20 3a   ┆( dont_skip );  dyn_var_offset :┆
0x07a7c0…07a7e0             3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 6c 6f 63 61 6c 20 66 72 61 6d 65 20 61 64   ┆= in_integer;  (* local frame ad┆
0x07a7e0…07a800             72 65 73 73 20 6f 66 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 76 61 72 69 61 62 6c 65 20   ┆ress of pointer to the variable ┆
0x07a800…07a820 (32, 1, 6)  2a 29 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 78 64 20 29 3b 20 20 28 2a 20   ┆*)  out_opcode( op_reaxd );  (* ┆
0x07a820…07a840             67 65 74 20 6c 61 73 74 20 75 73 65 64 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f   ┆get last used *) out_op_int( op_┆
0x07a840…07a860             72 65 61 73 64 2c 20 31 20 29 3b 20 28 2a 20 65 76 65 6e 20 73 74 61 72 74 20 61 64 64 72 65 73   ┆reasd, 1 ); (* even start addres┆
0x07a860…07a880             73 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 61 2c 20 64 79 6e 5f   ┆s *)  out_op_int( op_stvla, dyn_┆
0x07a880…07a8a0             76 61 72 5f 6f 66 66 73 65 74 20 29 3b 20 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20   ┆var_offset ); (* initialize the ┆
0x07a8a0…07a8c0             70 6f 69 6e 74 65 72 20 2a 29 0a 0a 28 2a 20 72 65 73 65 72 76 65 20 73 74 61 63 6b 20 73 70 61   ┆pointer *)  (* reserve stack spa┆
0x07a8c0…07a8e0             63 65 20 2a 29 0a 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 74 65 6d 70 6c 61 74 65 5f   ┆ce *)  get_niv_offset( template_┆
0x07a8e0…07a900             76 20 29 3b 0a 77 69 74 68 20 74 65 6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72   ┆v ); with template_v do out_op_r┆
0x07a900…07a920             65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f   ┆ev__(access,word_typ,c.niv-niv,o┆
0x07a920…07a940             66 66 73 65 74 29 3b 0a 0a 6f 75 74 5f 6d 61 6b 65 5f 74 6f 70 5f 65 76 65 6e 3b 0a 6f 75 74 5f   ┆ffset);  out_make_top_even; out_┆
0x07a940…07a960             6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 6e 70 62 20 29 3b 0a 64 79 6e 5f 79 65 73 5f 6f 72 5f 6e   ┆opcode( op_renpb ); dyn_yes_or_n┆
0x07a960…07a980             6f 20 3a 3d 20 74 72 75 65 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20   ┆o := true;  get_token;  end; (* ┆
0x07a980…07a9a0             61 6c 6c 6f 63 20 64 79 6e 20 76 61 72 20 2a 29 0a 0a 0a 0a 0a 0a 65 6c 73 65 0a 69 66 20 74 6f   ┆alloc dyn var *)      else if to┆
0x07a9a0…07a9c0             6b 65 6e 20 3c 3e 20 78 65 6e 64 64 65 63 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 73 6b 69 70 5f   ┆ken <> xenddecl then begin skip_┆
0x07a9c0…07a9e0             61 72 6f 75 6e 64 28 20 64 6f 6e 74 5f 73 6b 69 70 20 29 3b 0a 64 79 6e 5f 74 79 70 65 5f 64 65   ┆around( dont_skip ); dyn_type_de┆
0x07a9e0…07aa00             63 6c 61 72 61 74 69 6f 6e 3b 0a 65 6e 64 0a 65 6c 73 65 0a 65 6e 64 5f 69 6e 69 74 20 3a 3d 20   ┆claration; end else end_init := ┆
0x07aa00…07aa20 (32, 1, 7)  74 72 75 65 3b 0a 65 6e 64 3b 20 28 2a 20 20 63 61 73 65 20 69 6e 5f 74 6f 6b 65 6e 20 6f 66 20   ┆true; end; (*  case in_token of ┆
0x07aa20…07aa40             2e 2e 2e 2e 2e 2e 20 20 2a 29 0a 0a 75 6e 74 69 6c 20 65 6e 64 5f 69 6e 69 74 3b 0a 0a 73 6b 69   ┆......  *)  until end_init;  ski┆
0x07aa40…07aa60             70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 64 65 63 6c 29 3b 0a 0a 69 66 20 74 72 61 70 5f 63 6f 64   ┆p_token (xenddecl);  if trap_cod┆
0x07aa60…07aa80             65 20 74 68 65 6e 0a 69 66 20 72 6f 75 6c 69 78 20 3c 3e 20 2d 31 20 74 68 65 6e 0a 63 75 72 72   ┆e then if roulix <> -1 then curr┆
0x07aa80…07aaa0             65 6e 74 5f 74 72 61 70 5f 6e 72 20 3a 3d 20 6e 65 77 5f 74 72 61 70 5f 65 6e 74 72 79 28 20 72   ┆ent_trap_nr := new_trap_entry( r┆
0x07aaa0…07aac0             6f 75 6c 69 78 20 29 0a 65 6c 73 65 0a 63 75 72 72 65 6e 74 5f 74 72 61 70 5f 6e 72 20 3a 3d 20   ┆oulix ) else current_trap_nr := ┆
0x07aac0…07aae0             30 3b 20 28 2a 20 6d 61 69 6e 20 2a 29 0a 0a 0a 28 2a 20 20 66 69 6e 64 20 73 74 61 74 65 6d 65   ┆0; (* main *)   (*  find stateme┆
0x07aae0…07ab00             6e 74 73 3a 20 20 2a 29 0a 0a 62 65 67 69 6e 5f 6c 69 6e 65 20 3a 3d 20 69 6e 5f 6c 69 6e 65 5f   ┆nts:  *)  begin_line := in_line_┆
0x07ab00…07ab20             6e 6f 3b 0a 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 20 28 64 6f 6e 74 5f 73 6b 69 70 29 3b 0a 69 66   ┆no;  skip_around (dont_skip); if┆
0x07ab20…07ab40             20 72 6f 75 6c 69 78 20 3d 20 2d 31 20 74 68 65 6e 20 28 2a 70 72 6f 63 65 73 73 2a 29 0a 62 65   ┆ roulix = -1 then (*process*) be┆
0x07ab40…07ab60             67 69 6e 0a 28 2a 65 78 6f 70 63 6f 64 65 20 62 79 74 65 20 73 65 74 20 74 6f 20 30 2a 29 0a 6f   ┆gin (*exopcode byte set to 0*) o┆
0x07ab60…07ab80             75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 30 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64   ┆ut_op_int(op_rechw,0); out_op_id┆
0x07ab80…07aba0             28 6f 70 5f 73 74 76 67 62 2c 69 64 5f 65 78 6f 70 63 6f 64 65 29 3b 0a 65 6e 64 3b 0a 64 79 6e   ┆(op_stvgb,id_exopcode); end; dyn┆
0x07aba0…07abc0             5f 65 76 61 6c 5f 73 74 61 63 6b 3a 3d 20 66 61 6c 73 65 3b 0a 66 69 6e 64 5f 73 74 61 74 65 6d   ┆_eval_stack:= false; find_statem┆
0x07abc0…07abe0             65 6e 74 3b 0a 64 79 6e 5f 79 65 73 5f 6f 72 5f 6e 6f 3a 3d 20 64 79 6e 5f 79 65 73 5f 6f 72 5f   ┆ent; dyn_yes_or_no:= dyn_yes_or_┆
0x07abe0…07ac00             6e 6f 20 6f 72 20 64 79 6e 5f 65 76 61 6c 5f 73 74 61 63 6b 3b 0a 6f 75 74 5f 6c 61 62 65 6c 28   ┆no or dyn_eval_stack; out_label(┆
0x07ac00…07ac20 (32, 1, 8)  69 64 5f 62 6c 6f 63 6b 65 78 69 74 29 3b 0a 0a 28 2a 20 20 66 69 6e 64 20 74 68 65 20 61 70 70   ┆id_blockexit);  (*  find the app┆
0x07ac20…07ac40             65 74 69 74 65 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 3a 20 20 2a 29 0a 0a 76 61 72 5f 6c 65 6e   ┆etite of the block:  *)  var_len┆
0x07ac40…07ac60             67 74 68 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 70 61 72 61 6d 5f 6c 65 6e 67 74 68   ┆gth := in_integer;  param_length┆
0x07ac60…07ac80             20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 0a 28 2a 20 20 67 65 6e 65 72 61 74 65 20 74   ┆ := in_integer;   (*  generate t┆
0x07ac80…07aca0             68 65 20 65 70 69 6c 6f 67 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 2c 20 64 65 70 65 6e 64 69 6e   ┆he epilog of the block, dependin┆
0x07aca0…07acc0             67 20 6f 6e 20 70 72 6f 63 65 73 73 20 6f 72 20 6e 6f 74 3a 20 20 2a 29 0a 0a 69 66 20 72 6f 75   ┆g on process or not:  *)  if rou┆
0x07acc0…07ace0             6c 69 78 20 3c 3e 20 2d 31 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 66 75 6e 63 74 69 6f 6e   ┆lix <> -1 then begin (* function┆
0x07ace0…07ad00             20 6f 72 20 70 72 6f 63 65 64 75 72 65 20 2a 29 0a 69 66 20 6c 6f 63 61 6c 5f 64 79 6e 5f 72 65   ┆ or procedure *) if local_dyn_re┆
0x07ad00…07ad20             66 73 20 6f 72 20 28 72 65 66 63 6f 75 6e 74 20 3e 20 30 29 20 74 68 65 6e 0a 63 6f 64 65 5f 72   ┆fs or (refcount > 0) then code_r┆
0x07ad20…07ad40             65 6d 6f 76 65 20 28 72 65 66 63 6f 75 6e 74 2c 20 6c 6f 63 61 6c 5f 64 79 6e 5f 72 65 66 73 2c   ┆emove (refcount, local_dyn_refs,┆
0x07ad40…07ad60             20 72 65 66 5f 74 79 70 29 3b 0a 69 66 20 6c 6f 63 61 6c 5f 64 79 6e 5f 73 68 61 64 6f 77 73 20   ┆ ref_typ); if local_dyn_shadows ┆
0x07ad60…07ad80             6f 72 20 28 73 68 61 64 6f 77 63 6f 75 6e 74 3e 30 29 20 74 68 65 6e 0a 63 6f 64 65 5f 72 65 6d   ┆or (shadowcount>0) then code_rem┆
0x07ad80…07ada0             6f 76 65 20 28 73 68 61 64 6f 77 63 6f 75 6e 74 2c 20 6c 6f 63 61 6c 5f 64 79 6e 5f 73 68 61 64   ┆ove (shadowcount, local_dyn_shad┆
0x07ada0…07adc0             6f 77 73 2c 20 73 68 61 64 6f 77 5f 74 79 70 29 3b 0a 69 66 20 74 72 61 70 5f 63 6f 64 65 20 74   ┆ows, shadow_typ); if trap_code t┆
0x07adc0…07ade0             68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 6d 74 72 68 2c 74 72 61   ┆hen begin out_op_int(op_mtrh,tra┆
0x07ade0…07ae00             70 72 65 74 75 72 6e 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 0a 6f 75 74 5f 69   ┆preturn); out_start_param; out_i┆
0x07ae00…07ae20 (32, 1, 9)  6e 74 65 67 65 72 28 63 75 72 72 65 6e 74 5f 74 72 61 70 5f 6e 72 29 3b 0a 65 6e 64 3b 0a 6f 75   ┆nteger(current_trap_nr); end; ou┆
0x07ae20…07ae40             74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 70 65 78 69 74 2c 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68   ┆t_op_int (op_pexit, param_length┆
0x07ae40…07ae60             20 2b 20 31 20 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 70 72 6f 63 65 73   ┆ + 1 ); end else begin (* proces┆
0x07ae60…07ae80             73 20 2a 29 0a 0a 74 72 61 70 5f 63 6f 64 65 20 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 64 6f 20   ┆s *)  trap_code := false; (* do ┆
0x07ae80…07aea0             6e 6f 74 20 67 65 6e 65 72 61 74 65 20 6d 65 61 73 75 72 65 6d 65 6e 74 20 63 6f 64 65 20 61 66   ┆not generate measurement code af┆
0x07aea0…07aec0             74 65 72 20 65 78 69 74 20 70 6f 69 6e 74 20 2a 29 0a 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74   ┆ter exit point *)   out_nl;  out┆
0x07aec0…07aee0             5f 6c 61 62 65 6c 28 20 69 64 5f 65 78 69 74 20 29 3b 0a 0a 69 66 20 65 70 69 6c 6f 67 5f 79 65   ┆_label( id_exit );  if epilog_ye┆
0x07aee0…07af00             73 20 74 68 65 6e 20 63 6f 64 65 5f 65 78 69 74 3b 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f   ┆s then code_exit;  out_nl;  out_┆
0x07af00…07af20             6c 61 62 65 6c 28 20 69 64 5f 65 78 63 65 70 74 69 6f 6e 20 29 3b 0a 0a 63 6f 64 65 5f 65 78 63   ┆label( id_exception );  code_exc┆
0x07af20…07af40             65 70 74 69 6f 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 65 70 69 6c 6f 67 20 6f 66 20 70 72 6f 63 65   ┆eption;  end; (* epilog of proce┆
0x07af40…07af60             73 73 20 2a 29 0a 0a 28 2a 20 20 64 65 66 69 6e 65 20 27 77 6f 72 6b 27 20 61 6e 64 20 74 68 65   ┆ss *)  (*  define 'work' and the┆
0x07af60…07af80             20 61 70 70 65 74 69 74 65 20 73 79 6d 62 6f 6c 73 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 3a 20   ┆ appetite symbols of the block: ┆
0x07af80…07afa0             20 2a 29 0a 0a 6f 75 74 5f 64 65 66 28 20 69 64 5f 77 6f 72 6b 20 29 3b 20 20 6f 75 74 5f 69 6e   ┆ *)  out_def( id_work );  out_in┆
0x07afa0…07afc0             74 65 67 65 72 28 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 2b 20 76 61 72 5f 6c 65 6e 67 74 68   ┆teger( param_length + var_length┆
0x07afc0…07afe0             20 2d 20 31 20 29 3b 0a 0a 6f 75 74 5f 64 65 66 28 20 69 64 5f 61 70 70 73 74 61 74 20 29 3b 0a   ┆ - 1 );  out_def( id_appstat ); ┆
0x07afe0…07b000             6f 75 74 5f 69 6e 74 65 67 65 72 28 20 76 61 72 5f 6c 65 6e 67 74 68 20 29 3b 0a 0a 6f 75 74 5f   ┆out_integer( var_length );  out_┆
0x07b000…07b020 (32, 1, 10) 64 65 66 28 20 69 64 5f 61 70 70 65 76 61 6c 20 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20   ┆def( id_appeval ); out_integer( ┆
0x07b020…07b040             63 2e 6d 61 78 5f 73 74 61 63 6b 5f 73 69 7a 65 20 29 3b 0a 0a 28 2a 20 20 70 72 69 6e 74 20 61   ┆c.max_stack_size );  (*  print a┆
0x07b040…07b060             20 6c 69 6e 65 20 69 6e 20 74 68 65 20 73 75 6d 6d 61 72 79 20 3a 20 20 2a 29 0a 0a 69 66 20 72   ┆ line in the summary :  *)  if r┆
0x07b060…07b080             6f 75 6c 69 78 20 3c 3e 20 2d 31 20 74 68 65 6e 0a 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 3a 3d   ┆oulix <> -1 then param_length :=┆
0x07b080…07b0a0             20 73 69 7a 65 5f 6f 66 5f 72 65 74 75 72 6e 5f 70 6f 69 6e 74 3b 20 28 2a 20 69 6e 63 6c 75 64   ┆ size_of_return_point; (* includ┆
0x07b0a0…07b0c0             65 20 72 6f 6f 6d 20 66 6f 72 20 64 69 73 70 6c 61 79 20 69 6e 20 74 68 65 20 61 70 70 65 74 69   ┆e room for display in the appeti┆
0x07b0c0…07b0e0             74 65 20 2a 29 0a 0a 77 69 74 68 20 64 65 73 63 72 20 64 6f 0a 64 65 66 61 75 6c 74 5f 61 70 70   ┆te *)  with descr do default_app┆
0x07b0e0…07b100             65 74 69 74 65 20 3a 3d 20 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 20 2b 20 28 20 76 61   ┆etite := default_appetite + ( va┆
0x07b100…07b120             72 5f 6c 65 6e 67 74 68 20 2b 20 0a 20 20 63 2e 6d 61 78 5f 73 74 61 63 6b 5f 73 69 7a 65 20 2b   ┆r_length +    c.max_stack_size +┆
0x07b120…07b140             20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 29 20 64 69 76 20 32 3b 20 20 28 2a 20 77 6f 72 64 73   ┆ param_length ) div 2;  (* words┆
0x07b140…07b160             20 21 21 20 2a 29 0a 0a 69 66 20 72 6f 75 6c 69 78 20 3d 20 2d 31 20 74 68 65 6e 20 28 2a 20 70   ┆ !! *)  if roulix = -1 then (* p┆
0x07b160…07b180             72 6f 63 65 73 73 20 6c 65 76 65 6c 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 6f 75 74 65 72 6d 6f   ┆rocess level *) begin if outermo┆
0x07b180…07b1a0             73 74 5f 6c 65 76 65 6c 20 61 6e 64 20 28 65 6e 66 6f 72 63 65 64 5f 63 72 65 61 74 65 5f 73 69   ┆st_level and (enforced_create_si┆
0x07b1a0…07b1c0             7a 65 20 3c 3e 20 30 29 20 74 68 65 6e 0a 69 20 3a 3d 20 65 6e 66 6f 72 63 65 64 5f 63 72 65 61   ┆ze <> 0) then i := enforced_crea┆
0x07b1c0…07b1e0             74 65 5f 73 69 7a 65 0a 65 6c 73 65 0a 69 20 3a 3d 20 64 65 73 63 72 20 2e 20 64 65 66 61 75 6c   ┆te_size else i := descr . defaul┆
0x07b1e0…07b200             74 5f 61 70 70 65 74 69 74 65 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 20 3a 3d 20 30 3b 20 28 2a 20   ┆t_appetite; end else i := 0; (* ┆
0x07b200…07b220 (32, 1, 11) 73 75 70 70 72 65 73 73 20 70 72 69 6e 74 69 6e 67 20 6f 66 20 63 72 65 61 74 65 20 73 69 7a 65   ┆suppress printing of create size┆
0x07b220…07b240             20 2a 29 0a 0a 6d 65 73 73 5f 73 75 6d 6d 61 72 79 5f 6c 69 6e 65 28 20 6e 61 6d 65 2c 20 6c 69   ┆ *)  mess_summary_line( name, li┆
0x07b240…07b260             6e 65 5f 6e 6f 2c 20 62 65 67 69 6e 5f 6c 69 6e 65 2c 20 69 6e 5f 6c 69 6e 65 5f 6e 6f 2c 0a 20   ┆ne_no, begin_line, in_line_no,  ┆
0x07b260…07b280             76 61 72 5f 6c 65 6e 67 74 68 20 2b 20 63 2e 6d 61 78 5f 73 74 61 63 6b 5f 73 69 7a 65 20 2b 20   ┆var_length + c.max_stack_size + ┆
0x07b280…07b2a0             70 61 72 61 6d 5f 6c 65 6e 67 74 68 2c 20 64 79 6e 5f 79 65 73 5f 6f 72 5f 6e 6f 2c 20 69 20 29   ┆param_length, dyn_yes_or_no, i )┆
0x07b2a0…07b2c0             3b 0a 0a 0a 28 2a 20 20 67 65 6e 65 72 61 74 65 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 20 73 65   ┆;   (*  generate the constant se┆
0x07b2c0…07b2e0             63 74 69 6f 6e 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 3a 20 20 2a 29 0a 0a 66 69 6e 64 5f 63 6f   ┆ction of the block:  *)  find_co┆
0x07b2e0…07b300             6e 73 74 61 6e 74 73 3b 0a 0a 28 2a 20 20 67 65 6e 65 72 61 74 65 20 74 68 65 20 6c 69 6e 65 20   ┆nstants;  (*  generate the line ┆
0x07b300…07b320             74 61 62 2e 20 68 65 61 64 65 72 20 3a 20 20 2a 29 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 6c   ┆tab. header :  *)  out_nl; out_l┆
0x07b320…07b340             61 62 65 6c 28 20 69 64 5f 6c 69 6e 65 74 61 62 20 29 3b 0a 63 6f 64 65 5f 6c 69 6e 65 5f 74 61   ┆abel( id_linetab ); code_line_ta┆
0x07b340…07b360             62 5f 68 65 61 64 65 72 28 20 6e 61 6d 65 20 29 3b 0a 28 2a 20 6f 75 74 70 75 74 20 61 6e 20 65   ┆b_header( name ); (* output an e┆
0x07b360…07b380             6e 64 2d 6f 66 2d 62 6c 6f 63 6b 20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e   ┆nd-of-block *) out_nl; out_token┆
0x07b380…07b3a0             20 28 7a 65 6e 64 29 3b 20 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27 65 6e 64 20 6f 66 20 62   ┆ (zend);  out_comment ('end of b┆
0x07b3a0…07b3c0             6f 64 79 27 29 3b 0a 69 66 20 28 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3c 3e 20 30 29 20 6f   ┆ody'); if (hw_stack_size <> 0) o┆
0x07b3c0…07b3e0             72 20 28 63 2e 73 74 61 63 6b 5f 73 69 7a 65 20 3c 3e 20 30 29 20 74 68 65 6e 20 65 76 61 6c 73   ┆r (c.stack_size <> 0) then evals┆
0x07b3e0…07b400             74 61 63 6b 5f 65 72 72 6f 72 3b 0a 0a 63 20 3a 3d 20 6f 6c 64 5f 63 3b 0a 0a 65 6e 64 3b 20 28   ┆tack_error;  c := old_c;  end; (┆
0x07b400…07b420 (32, 1, 12) 2a 20 63 6c 6f 73 65 64 20 72 6f 75 74 69 6e 65 20 2a 29 0a 0a 69 66 20 6f 75 74 65 72 6d 6f 73   ┆* closed routine *)  if outermos┆
0x07b420…07b440             74 5f 6c 65 76 65 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 64 65 73 63 72   ┆t_level then begin out_nl; descr┆
0x07b440…07b460             5f 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 73 6b 69 70 20 65 6e 64 62 6c 6f 63 6b 2d 70 61 72   ┆_end; end;  (* skip endblock-par┆
0x07b460…07b480             61 6d 65 74 65 72 73 20 2a 29 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 65 6e 64 62 6c 6f 63 6b   ┆ameters *) if token <> xendblock┆
0x07b480…07b4a0             20 74 68 65 6e 20 65 72 72 6f 72 20 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 69   ┆ then error (pass4code_error); i┆
0x07b4a0…07b4c0             20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b   ┆ := in_integer; i := in_integer;┆
0x07b4c0…07b4e0             0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 5f 62 6c 6f 63 6b 20   ┆ get_token;  end; (* find_block ┆
0x07b4e0…07b500             2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 70 72 6f 67 72 61 6d 3b 0a 0a 76   ┆*)    procedure find_program;  v┆
0x07b500…07b520             61 72 0a 70 2c 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62   ┆ar p, param_length : integer;  b┆
0x07b520…07b540             65 67 69 6e 0a 0a 28 2a 20 73 6b 69 70 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2d 64 65 63 6c 61 72   ┆egin  (* skip environment-declar┆
0x07b540…07b560             61 74 69 6f 6e 73 20 2a 29 0a 77 68 69 6c 65 20 28 74 6f 6b 65 6e 20 3d 20 78 65 78 74 70 72 6f   ┆ations *) while (token = xextpro┆
0x07b560…07b580             63 29 20 6f 72 20 28 74 6f 6b 65 6e 20 3d 20 78 65 78 74 66 75 6e 63 29 20 64 6f 0a 66 69 6e 64   ┆c) or (token = xextfunc) do find┆
0x07b580…07b5a0             5f 65 78 74 5f 72 6f 75 74 69 6e 65 3b 0a 0a 72 65 70 65 61 74 0a 0a 63 61 73 65 20 74 6f 6b 65   ┆_ext_routine;  repeat  case toke┆
0x07b5a0…07b5c0             6e 20 6f 66 0a 78 6d 6f 64 75 6c 65 3a 0a 62 65 67 69 6e 0a 69 6e 5f 69 64 65 6e 74 69 66 69 65   ┆n of xmodule: begin in_identifie┆
0x07b5c0…07b5e0             72 20 28 64 65 73 63 72 2e 6e 61 6d 65 29 3b 0a 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 3a 3d 20   ┆r (descr.name); param_length := ┆
0x07b5e0…07b600             30 3b 0a 74 72 61 70 5f 63 6f 64 65 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 78 70 72 6f 63   ┆0; trap_code:= false; end; xproc┆
0x07b600…07b620 (32, 1, 13) 65 73 73 3a 0a 62 65 67 69 6e 0a 28 2a 20 73 6b 69 70 3a 20 6f 66 66 73 65 74 20 2a 29 0a 70 20   ┆ess: begin (* skip: offset *) p ┆
0x07b620…07b640             3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 6e 5f 69 64 65 6e 74 69 66 69 65 72 20 28 64 65   ┆:= in_integer; in_identifier (de┆
0x07b640…07b660             73 63 72 2e 6e 61 6d 65 29 3b 0a 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 3a 3d 20 69 6e 5f 69 6e   ┆scr.name); param_length := in_in┆
0x07b660…07b680             74 65 67 65 72 3b 0a 74 72 61 70 5f 63 6f 64 65 20 3a 3d 20 6d 65 61 73 75 72 65 6d 65 6e 74 5f   ┆teger; trap_code := measurement_┆
0x07b680…07b6a0             79 65 73 3b 0a 69 66 20 74 72 61 70 5f 63 6f 64 65 20 74 68 65 6e 20 69 6e 69 74 5f 74 72 61 70   ┆yes; if trap_code then init_trap┆
0x07b6a0…07b6c0             5f 74 61 62 6c 65 3b 0a 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 20 28 70 61 73 73 34 63   ┆_table;  end; else error (pass4c┆
0x07b6c0…07b6e0             6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 28 2a 20 69 6e 70 75 74 20 61 6e 64 20 73 74   ┆ode_error); end; (* input and st┆
0x07b6e0…07b700             6f 72 65 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29 0a 64 65 73 63 72 2e   ┆ore the parameter list *) descr.┆
0x07b700…07b720             6e 6f 5f 6f 66 5f 70 61 72 61 6d 73 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 64   ┆no_of_params := in_integer; if d┆
0x07b720…07b740             65 73 63 72 2e 6e 6f 5f 6f 66 5f 70 61 72 61 6d 73 20 3e 20 64 65 73 63 72 5f 6d 61 78 5f 70 61   ┆escr.no_of_params > descr_max_pa┆
0x07b740…07b760             72 61 6d 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 70 61 72 61 6d 5f 6e 75 6d 62 65 72 29 3b 0a 66   ┆ram then error (param_number); f┆
0x07b760…07b780             6f 72 20 70 20 3a 3d 20 31 20 74 6f 20 64 65 73 63 72 2e 6e 6f 5f 6f 66 5f 70 61 72 61 6d 73 20   ┆or p := 1 to descr.no_of_params ┆
0x07b780…07b7a0             64 6f 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20   ┆do begin get_token; if token <> ┆
0x07b7a0…07b7c0             78 70 61 72 61 6d 74 79 70 65 20 74 68 65 6e 20 65 72 72 6f 72 20 28 70 61 73 73 34 63 6f 64 65   ┆xparamtype then error (pass4code┆
0x07b7c0…07b7e0             5f 65 72 72 6f 72 29 3b 0a 77 69 74 68 20 64 65 73 63 72 2e 70 61 72 61 6d 20 5b 20 70 20 5d 20   ┆_error); with descr.param [ p ] ┆
0x07b7e0…07b800             64 6f 0a 62 65 67 69 6e 0a 6b 69 6e 64 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 73 69 7a   ┆do begin kind := in_integer; siz┆
0x07b800…07b820 (32, 1, 14) 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 77 69 74 68   ┆e := in_integer; end; end;  with┆
0x07b820…07b840             20 64 65 73 63 72 20 64 6f 0a 62 65 67 69 6e 0a 65 6e 74 72 79 5f 70 6f 69 6e 74 20 20 20 20 20   ┆ descr do begin entry_point     ┆
0x07b840…07b860             3a 3d 20 69 64 5f 65 6e 74 72 79 3b 0a 65 78 63 65 70 74 69 6f 6e 5f 70 6f 69 6e 74 20 3a 3d 20   ┆:= id_entry; exception_point := ┆
0x07b860…07b880             69 64 5f 65 78 63 65 70 74 69 6f 6e 3b 0a 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 20 3a   ┆id_exception; default_appetite :┆
0x07b880…07b8a0             3d 20 30 3b 0a 6c 61 73 74 5f 70 61 72 61 6d 5f 6f 66 66 73 65 74 20 20 20 20 20 20 20 20 3a 3d   ┆= 0; last_param_offset        :=┆
0x07b8a0…07b8c0             20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 3b 0a 66 6f 72 20 70 20 3a 3d 20 20 31 20 74 6f 20 64 65   ┆ param_length; for p :=  1 to de┆
0x07b8c0…07b8e0             73 63 72 5f 66 72 65 65 5f 77 6f 72 64 73 20 64 6f 20 66 72 65 65 5f 77 6f 72 64 73 5b 70 5d 20   ┆scr_free_words do free_words[p] ┆
0x07b8e0…07b900             3a 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 63 61 73 65 20 74 6f 6b 65   ┆:= 0; end;  get_token; case toke┆
0x07b900…07b920             6e 20 6f 66 0a 78 70 72 6f 63 3a 0a 64 65 73 63 72 2e 6b 69 6e 64 20 3a 3d 20 32 3b 0a 78 66 75   ┆n of xproc: descr.kind := 2; xfu┆
0x07b920…07b940             6e 63 3a 0a 64 65 73 63 72 2e 6b 69 6e 64 20 3a 3d 20 33 3b 0a 65 6c 73 65 20 64 65 73 63 72 2e   ┆nc: descr.kind := 3; else descr.┆
0x07b940…07b960             6b 69 6e 64 20 3a 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 66 69 6e 64 5f 62 6c 6f 63 6b 20 28 74 72 75   ┆kind := 1; end;  find_block (tru┆
0x07b960…07b980             65 2c 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 2c 20 64 65 73 63 72 2e 6e 61 6d 65 29 3b 0a 0a 75   ┆e, param_length, descr.name);  u┆
0x07b980…07b9a0             6e 74 69 6c 20 74 6f 6b 65 6e 20 3d 20 78 65 6f 6d 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f   ┆ntil token = xeom;  out_nl; out_┆
0x07b9a0…07b9c0             74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 5f 70 72 6f 67   ┆token (zend);  end; (* find_prog┆
0x07b9c0…07b9e0             72 61 6d 20 2a 29 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 73 74 64 5f 63   ┆ram *)     procedure  find_std_c┆
0x07b9e0…07ba00             61 6c 6c 20 28 76 61 72 20 76 3a 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 0a 76 61 72   ┆all (var v:varvalue_descr);  var┆
0x07ba00…07ba20 (32, 1, 15) 0a 69 2c 20 6e 6f 2c 20 6c 69 6d 69 74 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a   ┆ i, no, limit : integer;  begin ┆
0x07ba20…07ba40             0a 6e 6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 69 66 20 28 20 6e 6f 20 3d 20 78 73   ┆ no := in_integer;  if ( no = xs┆
0x07ba40…07ba60             75 63 63 20 29 20 6f 72 20 28 20 6e 6f 20 3d 20 78 70 72 65 64 20 29 20 74 68 65 6e 0a 6c 69 6d   ┆ucc ) or ( no = xpred ) then lim┆
0x07ba60…07ba80             69 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 66 69 6e 64 5f 61 72 67 6c 69 73 74 28   ┆it := in_integer;  find_arglist(┆
0x07ba80…07baa0             20 73 74 64 5f 63 61 6c 6c 2c 20 69 20 28 2a 20 73 69 7a 65 20 6f 66 20 66 75 6e 63 74 69 6f 6e   ┆ std_call, i (* size of function┆
0x07baa0…07bac0             20 72 65 73 75 6c 74 20 2a 29 29 3b 0a 0a 0a 0a 63 61 73 65 20 6e 6f 20 6f 66 0a 78 6f 72 64 2c   ┆ result *));    case no of xord,┆
0x07bac0…07bae0             0a 78 63 68 72 3a 20 3b 0a 0a 78 6e 69 6c 2c 20 78 6e 69 6c 72 65 66 3a 0a 62 65 67 69 6e 0a 28   ┆ xchr: ;  xnil, xnilref: begin (┆
0x07bae0…07bb00             2a 20 69 66 20 6e 69 6c 72 65 66 20 74 68 65 6e 20 73 6b 69 70 20 74 68 65 20 63 6f 75 6e 74 20   ┆* if nilref then skip the count ┆
0x07bb00…07bb20             62 79 74 65 2c 20 69 2e 65 2e 20 69 6e 63 72 65 61 73 65 20 61 64 64 72 65 73 73 20 2a 29 0a 69   ┆byte, i.e. increase address *) i┆
0x07bb20…07bb40             66 20 6e 6f 20 3d 20 78 6e 69 6c 72 65 66 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20   ┆f no = xnilref then out_op_int( ┆
0x07bb40…07bb60             6f 70 5f 75 61 64 68 77 2c 20 31 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 74   ┆op_uadhw, 1 );  out_opcode( op_t┆
0x07bb60…07bb80             6e 69 6c 6c 20 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 20 73 74 64 2e 20 66 75 6e 63   ┆nill ); out_comment('  std. func┆
0x07bb80…07bba0             74 69 6f 6e 20 3a 20 6e 69 6c 20 27 29 3b 0a 65 6e 64 3b 0a 0a 0a 78 73 75 63 63 2c 0a 78 70 72   ┆tion : nil '); end;   xsucc, xpr┆
0x07bba0…07bbc0             65 64 3a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f   ┆ed: begin  out_nl;  out_nl; out_┆
0x07bbc0…07bbe0             74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 73 75 63   ┆token (zbegin); out_p_id (id_suc┆
0x07bbe0…07bc00             70 72 65 64 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 0a 69 66   ┆pred); out_token (zendlist);  if┆
0x07bc00…07bc20 (33, 0, 1)  20 6e 6f 20 3d 20 78 73 75 63 63 20 74 68 65 6e 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20   ┆ no = xsucc then out_comment( ' ┆
0x07bc20…07bc40             20 20 73 74 61 72 74 20 6f 66 20 73 74 64 2e 20 66 75 6e 63 74 69 6f 6e 20 3a 20 20 73 75 63 63   ┆  start of std. function :  succ┆
0x07bc40…07bc60             20 2e 20 27 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 74 61   ┆ . ' ) else out_comment( '   sta┆
0x07bc60…07bc80             72 74 20 6f 66 20 73 74 64 2e 20 66 75 6e 63 74 69 6f 6e 20 3a 20 20 70 72 65 64 20 2e 20 27 20   ┆rt of std. function :  pred . ' ┆
0x07bc80…07bca0             29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 0a 6f 75 74   ┆);  out_opcode( op_revpw );  out┆
0x07bca0…07bcc0             5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70   ┆_opcode( op_rechw ); out_start_p┆
0x07bcc0…07bce0             61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6c 69 6d 69 74 20 29 3b 0a 0a 6f 75   ┆aram;  out_integer( limit );  ou┆
0x07bce0…07bd00             74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 65 71 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28   ┆t_opcode( op_eq );  out_op_id  (┆
0x07bd00…07bd20             6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 73 75 63 70 72 65 64 29 3b 0a 0a 69 66 20 6e 6f 20 3d 20   ┆op_jmzeq, id_sucpred);  if no = ┆
0x07bd20…07bd40             78 73 75 63 63 20 74 68 65 6e 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65 72 28 20 63 5f 65   ┆xsucc then code_exc_trigger( c_e┆
0x07bd40…07bd60             78 63 5f 73 75 63 63 29 0a 65 6c 73 65 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65 72 28 20   ┆xc_succ) else code_exc_trigger( ┆
0x07bd60…07bd80             63 5f 65 78 63 5f 70 72 65 64 29 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 73 75 63 70   ┆c_exc_pred);  out_label (id_sucp┆
0x07bd80…07bda0             72 65 64 29 3b 0a 69 66 20 6e 6f 20 3d 20 78 73 75 63 63 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f   ┆red); if no = xsucc then out_op_┆
0x07bda0…07bdc0             69 6e 74 20 28 6f 70 5f 75 61 64 68 77 2c 20 31 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 6e   ┆int (op_uadhw, 1) else out_op_in┆
0x07bdc0…07bde0             74 20 28 6f 70 5f 75 61 64 68 77 2c 2d 31 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f   ┆t (op_uadhw,-1);  out_nl; out_to┆
0x07bde0…07be00             6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73   ┆ken (zend); end; else error(pass┆
0x07be00…07be20 (33, 0, 2)  34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 28 2a 20 74 68 65 20 76 61 6c 75 65 20   ┆4code_error); end; (* the value ┆
0x07be20…07be40             64 65 73 63 72 69 70 74 6f 72 20 76 20 6d 75 73 74 20 64 65 73 63 72 69 62 65 20 74 68 65 20 66   ┆descriptor v must describe the f┆
0x07be40…07be60             75 6e 63 74 69 6f 6e 20 72 65 73 75 6c 74 2c 20 69 2e 65 2e 20 2a 29 0a 77 69 74 68 20 76 20 64   ┆unction result, i.e. *) with v d┆
0x07be60…07be80             6f 0a 62 65 67 69 6e 0a 6b 69 6e 64 20 3a 3d 20 31 3b 20 73 69 7a 65 20 3a 3d 20 69 20 28 2a 20   ┆o begin kind := 1; size := i (* ┆
0x07be80…07bea0             73 69 7a 65 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 72 65 73 75 6c 74 20 61 73 20 73 65 74 20 62   ┆size of function result as set b┆
0x07bea0…07bec0             79 20 66 69 6e 64 20 61 72 67 6c 69 73 74 20 2a 29 0a 65 6e 64 3b 0a 0a 65 6e 64 20 28 2a 20 20   ┆y find arglist *) end;  end (*  ┆
0x07bec0…07bee0             66 69 6e 64 5f 73 74 64 5f 63 61 6c 6c 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20   ┆find_std_call  *);    procedure ┆
0x07bee0…07bf00             20 66 69 6e 64 5f 61 72 67 6c 69 73 74 28 20 63 61 6c 6c 5f 6d 6f 64 65 20 3a 20 63 61 6c 6c 6d   ┆ find_arglist( call_mode : callm┆
0x07bf00…07bf20             6f 64 65 73 3b 20 76 61 72 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c   ┆odes; var size_of_function_resul┆
0x07bf20…07bf40             74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 28 2a 20 6e 6f 74 65 3a 20 74 6f 6b 65 6e 20 75 6e   ┆t : integer ); (* note: token un┆
0x07bf40…07bf60             64 65 66 20 61 74 20 65 6e 74 72 79 20 21 21 20 2a 29 0a 0a 76 61 72 0a 74 79 70 65 5f 6c 2c 20   ┆def at entry !! *)  var type_l, ┆
0x07bf60…07bf80             73 69 7a 65 5f 6c 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 5f 72 20 3a 20 76 61 72 76 61 6c 75 65   ┆size_l : integer; v_r : varvalue┆
0x07bf80…07bfa0             5f 64 65 73 63 72 3b 0a 76 5f 6c 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 20 3b 0a 65 6e   ┆_descr; v_l : varaddr_descr ; en┆
0x07bfa0…07bfc0             64 5f 61 72 67 6c 69 73 74 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 62 65 67 69 6e 0a 0a 65 6e 64   ┆d_arglist : boolean;  begin  end┆
0x07bfc0…07bfe0             5f 61 72 67 6c 69 73 74 20 3a 3d 20 66 61 6c 73 65 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 72 65   ┆_arglist := false; get_token; re┆
0x07bfe0…07c000             70 65 61 74 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 76 61 6c 75 65 70 61 72 61 6d 3a 0a   ┆peat case token of xvalueparam: ┆
0x07c000…07c020 (33, 0, 3)  62 65 67 69 6e 0a 0a 74 79 70 65 5f 6c 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 69 66   ┆begin  type_l := in_integer;  if┆
0x07c020…07c040             20 28 20 74 79 70 65 5f 6c 20 3d 20 61 64 64 72 5f 74 79 70 20 29 20 6f 72 20 28 20 74 79 70 65   ┆ ( type_l = addr_typ ) or ( type┆
0x07c040…07c060             5f 6c 20 3d 20 73 65 74 5f 74 79 70 20 29 20 74 68 65 6e 0a 73 69 7a 65 5f 6c 20 3a 3d 20 69 6e   ┆_l = set_typ ) then size_l := in┆
0x07c060…07c080             5f 69 6e 74 65 67 65 72 0a 65 6c 73 65 0a 69 66 20 74 79 70 65 5f 6c 20 3d 20 70 6f 69 6e 74 5f   ┆_integer else if type_l = point_┆
0x07c080…07c0a0             74 79 70 20 74 68 65 6e 20 20 73 69 7a 65 5f 6c 20 3a 3d 20 34 20 65 6c 73 65 20 73 69 7a 65 5f   ┆typ then  size_l := 4 else size_┆
0x07c0a0…07c0c0             6c 20 3a 3d 20 32 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 28 20   ┆l := 2;  get_token; find_exprs( ┆
0x07c0c0…07c0e0             76 5f 72 29 3b 0a 0a 69 66 20 76 5f 72 2e 6b 69 6e 64 20 3d 20 32 20 74 68 65 6e 0a 62 65 67 69   ┆v_r);  if v_r.kind = 2 then begi┆
0x07c0e0…07c100             6e 0a 0a 69 66 20 74 79 70 65 5f 6c 20 3c 3e 20 61 64 64 72 5f 74 79 70 20 74 68 65 6e 20 65 72   ┆n  if type_l <> addr_typ then er┆
0x07c100…07c120             72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 69 66 20 6f 64 64 28 20 73   ┆ror(pass4code_error);  if odd( s┆
0x07c120…07c140             69 7a 65 5f 6c 20 29 20 74 68 65 6e 20 73 69 7a 65 5f 6c 20 3a 3d 20 73 69 7a 65 5f 6c 20 2b 20   ┆ize_l ) then size_l := size_l + ┆
0x07c140…07c160             31 3b 0a 0a 69 66 20 73 69 7a 65 5f 6c 20 3c 3d 20 34 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69   ┆1;  if size_l <= 4 then out_op_i┆
0x07c160…07c180             6e 74 28 6f 70 5f 72 65 76 5b 73 2c 63 6f 6e 76 5f 74 79 70 65 5b 73 69 7a 65 5f 6c 5d 5d 2c 30   ┆nt(op_rev[s,conv_type[size_l]],0┆
0x07c180…07c1a0             29 0a 0a 65 6c 73 65 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72   ┆)  else  begin  out_opcode( op_r┆
0x07c1a0…07c1c0             65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e   ┆echw ); out_start_param;  out_in┆
0x07c1c0…07c1e0             74 65 67 65 72 28 20 73 69 7a 65 5f 6c 20 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28   ┆teger( size_l ); out_specopcode(┆
0x07c1e0…07c200             6f 70 5f 72 65 76 73 6d 2c 73 69 7a 65 5f 6c 29 3b 0a 0a 65 6e 64 3b 0a 0a 65 6e 64 0a 0a 65 6c   ┆op_revsm,size_l);  end;  end  el┆
0x07c200…07c220 (33, 0, 4)  73 65 0a 69 66 20 74 79 70 65 5f 6c 20 3d 20 73 65 74 5f 74 79 70 20 74 68 65 6e 0a 62 65 67 69   ┆se if type_l = set_typ then begi┆
0x07c220…07c240             6e 0a 0a 69 66 20 76 5f 72 2e 73 69 7a 65 20 3c 3e 20 28 20 73 69 7a 65 5f 6c 20 2b 20 32 20 29   ┆n  if v_r.size <> ( size_l + 2 )┆
0x07c240…07c260             20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 66 20 76 5f 72 2e 73 69 7a 65 20 3e 20 30 20 74 68 65   ┆ then begin  if v_r.size > 0 the┆
0x07c260…07c280             6e 0a 63 6f 64 65 5f 73 74 61 74 5f 74 6f 5f 64 79 6e 28 20 76 5f 72 2e 73 69 7a 65 20 29 3b 0a   ┆n code_stat_to_dyn( v_r.size ); ┆
0x07c280…07c2a0             0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61   ┆ out_opcode( op_rechw ); out_sta┆
0x07c2a0…07c2c0             72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 5f 6c 20 29   ┆rt_param;  out_integer( size_l )┆
0x07c2c0…07c2e0             3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 61 64 2c 73 69 7a 65 5f 6c   ┆; out_specopcode(op_setad,size_l┆
0x07c2e0…07c300             20 2b 20 32 29 3b 0a 0a 65 6e 64 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73   ┆ + 2);  end; out_specopcode(op_s┆
0x07c300…07c320             74 6e 68 62 2c 2d 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 69   ┆tnhb,-word_length);  end  else i┆
0x07c320…07c340             66 20 76 5f 72 2e 73 69 7a 65 20 3c 3e 20 73 69 7a 65 5f 6c 20 74 68 65 6e 0a 65 72 72 6f 72 28   ┆f v_r.size <> size_l then error(┆
0x07c340…07c360             70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 78 76 61 72 70 61 72 61 6d   ┆pass4code_error); end; xvarparam┆
0x07c360…07c380             3a 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 20   ┆: begin get_token; find_varaddr ┆
0x07c380…07c3a0             28 76 5f 6c 29 3b 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 20 28 76 5f 6c 2c 20 74 72 75 65 29 3b   ┆(v_l); load_address (v_l, true);┆
0x07c3a0…07c3c0             0a 65 6e 64 3b 0a 0a 78 72 65 74 75 72 6e 70 61 72 61 6d 3a 20 28 2a 20 72 65 73 65 72 76 65 20   ┆ end;  xreturnparam: (* reserve ┆
0x07c3c0…07c3e0             73 74 61 63 6b 20 73 70 61 63 65 20 66 6f 72 20 66 75 6e 63 74 69 6f 6e 20 72 65 73 75 6c 74 20   ┆stack space for function result ┆
0x07c3e0…07c400             2a 29 0a 62 65 67 69 6e 0a 73 69 7a 65 5f 6c 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 73   ┆*) begin size_l := in_integer; s┆
0x07c400…07c420 (33, 0, 5)  69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3a 3d 20 73 69 7a 65 5f 6c   ┆ize_of_function_result := size_l┆
0x07c420…07c440             3b 20 28 2a 20 72 65 6d 65 6d 62 65 72 20 73 69 7a 65 20 69 6e 20 63 61 73 65 20 6f 66 20 70 72   ┆; (* remember size in case of pr┆
0x07c440…07c460             6f 63 65 73 73 20 70 61 72 61 6d 73 20 2a 29 0a 69 66 20 28 63 61 6c 6c 5f 6d 6f 64 65 20 3c 3e   ┆ocess params *) if (call_mode <>┆
0x07c460…07c480             20 6f 70 65 6e 5f 63 61 6c 6c 29 20 61 6e 64 20 28 63 61 6c 6c 5f 6d 6f 64 65 20 3c 3e 20 73 74   ┆ open_call) and (call_mode <> st┆
0x07c480…07c4a0             64 5f 63 61 6c 6c 29 20 74 68 65 6e 0a 28 2a 20 63 6c 6f 73 65 64 20 72 6f 75 74 69 6e 65 20 2a   ┆d_call) then (* closed routine *┆
0x07c4a0…07c4c0             29 0a 62 65 67 69 6e 0a 69 66 20 73 69 7a 65 5f 6c 20 3d 20 32 20 74 68 65 6e 0a 6f 75 74 5f 6f   ┆) begin if size_l = 2 then out_o┆
0x07c4c0…07c4e0             70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 30 20 29 20 28 2a 20 61 73 73 75 72 65 20 6c   ┆p_int( op_rechw, 0 ) (* assure l┆
0x07c4e0…07c500             65 66 74 20 62 79 74 65 20 3d 20 30 20 69 6e 20 63 61 73 65 20 6f 66 20 62 79 74 65 20 72 65 73   ┆eft byte = 0 in case of byte res┆
0x07c500…07c520             75 6c 74 20 21 21 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28   ┆ult !! *) else begin out_op_int(┆
0x07c520…07c540             6f 70 5f 72 65 63 68 64 20 28 2a 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 73 75 6c 74 20   ┆op_rechd (* the function result ┆
0x07c540…07c560             6d 75 73 74 20 62 65 20 61 6e 20 61 64 64 72 65 73 73 20 2a 29 2c 20 63 6f 6e 73 74 5f 6e 69 6c   ┆must be an address *), const_nil┆
0x07c560…07c580             5f 76 61 72 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 0a 6f 75 74 5f 69 6e 74 65   ┆_var); out_start_param; out_inte┆
0x07c580…07c5a0             67 65 72 28 30 29 3b 0a 65 6e 64 3b 0a 73 69 7a 65 5f 6c 20 3a 3d 20 30 3b 20 28 2a 20 63 6f 6e   ┆ger(0); end; size_l := 0; (* con┆
0x07c5a0…07c5c0             74 65 78 74 20 65 76 61 6c 20 28 32 20 6f 72 20 34 29 20 68 61 73 20 62 65 65 6e 20 64 6f 6e 65   ┆text eval (2 or 4) has been done┆
0x07c5c0…07c5e0             20 2a 29 0a 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 72 6f 6f 6d 20 66 6f 72 20 66 75 6e   ┆ *)  out_comment( ' room for fun┆
0x07c5e0…07c600             63 74 69 6f 6e 20 72 65 73 75 6c 74 20 27 20 29 3b 0a 0a 28 2a 20 73 74 64 20 72 6f 75 74 69 6e   ┆ction result ' );  (* std routin┆
0x07c600…07c620 (33, 0, 6)  65 73 20 61 72 65 20 6a 75 73 74 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 20 69 6e 73 74 72 75   ┆es are just a sequence of instru┆
0x07c620…07c640             63 74 69 6f 6e 73 2c 20 74 68 65 72 65 66 6f 72 65 20 74 68 65 0a 6d 6f 76 65 6d 65 6e 74 73 20   ┆ctions, therefore the movements ┆
0x07c640…07c660             6f 6e 20 74 68 65 20 65 76 61 6c 75 61 74 69 6f 6e 20 73 74 61 63 6b 20 69 73 20 6d 61 64 65 20   ┆on the evaluation stack is made ┆
0x07c660…07c680             61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 63 6f 64 65 0a 67 65 6e 65 72 61 74 69 6f 6e 2c 20   ┆as part of the code generation, ┆
0x07c680…07c6a0             61 6e 64 20 61 20 63 61 6c 6c 20 6f 66 20 63 6f 6e 74 65 78 74 5f 65 76 61 6c 20 69 73 20 6e 6f   ┆and a call of context_eval is no┆
0x07c6a0…07c6c0             74 20 6e 65 65 64 65 64 20 2a 29 0a 0a 28 2a 66 6f 72 20 20 6f 70 65 6e 20 72 6f 75 74 69 6e 65   ┆t needed *)  (*for  open routine┆
0x07c6c0…07c6e0             73 20 73 74 61 63 6b 6d 6f 76 65 6d 65 6e 74 20 69 73 20 74 61 6b 65 6e 20 63 61 72 65 20 6f 66   ┆s stackmovement is taken care of┆
0x07c6e0…07c700             20 62 79 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 20 61 66 74 65 72 20 20 63 61 6c 6c 20 6f   ┆ by code_call_proc after  call o┆
0x07c700…07c720             66 20 6f 70 65 6e 72 6f 75 74 69 6e 65 20 2a 29 0a 63 6f 6e 74 65 78 74 5f 65 76 61 6c 28 20 73   ┆f openroutine *) context_eval( s┆
0x07c720…07c740             69 7a 65 5f 6c 20 29 3b 0a 65 6e 64 3b 20 28 2a 20 69 66 20 63 6c 6f 73 65 64 20 72 6f 75 74 69   ┆ize_l ); end; (* if closed routi┆
0x07c740…07c760             6e 65 20 2a 29 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 0a 0a 65 6c 73 65 20 65 6e 64   ┆ne *) get_token; end;   else end┆
0x07c760…07c780             5f 61 72 67 6c 69 73 74 20 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 75 6e 74 69 6c 20 65 6e 64   ┆_arglist := true; end; until end┆
0x07c780…07c7a0             5f 61 72 67 6c 69 73 74 3b 0a 0a 65 6e 64 20 20 28 2a 20 66 69 6e 64 5f 61 72 67 6c 69 73 74 20   ┆_arglist;  end  (* find_arglist ┆
0x07c7a0…07c7c0             2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 77 68 69 6c 65 3b 0a 0a 76   ┆*);    procedure  find_while;  v┆
0x07c7c0…07c7e0             61 72 20 20 76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 0a 6f   ┆ar  v: varvalue_descr;  begin  o┆
0x07c7e0…07c800             75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70   ┆ut_nl; out_token (zbegin); out_p┆
0x07c800…07c820 (33, 0, 7)  5f 69 64 20 28 69 64 5f 77 68 72 65 70 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 77 68 65   ┆_id (id_whrep); out_p_id (id_whe┆
0x07c820…07c840             78 69 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f   ┆xit); out_token (zendlist); out_┆
0x07c840…07c860             63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 74 61 72 74 20 6f 66 20 77 68 69 6c 65 5f 73 74 61 74   ┆comment( '   start of while_stat┆
0x07c860…07c880             65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 77 68 72 65 70   ┆ement. ' );  out_label( id_whrep┆
0x07c880…07c8a0             20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 28 20 76 29 3b 0a 69   ┆ );  get_token; find_expr( v); i┆
0x07c8a0…07c8c0             66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 61 66 74 65 72 5f 73 68 6f 72   ┆f operand_situation = after_shor┆
0x07c8c0…07c8e0             74 5f 63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 70 74 69 6d 69 7a 65 20 6f   ┆t_const then begin (* optimize o┆
0x07c8e0…07c900             6e 20 27 77 68 69 6c 65 20 74 72 75 65 27 20 2a 29 0a 69 66 20 76 2e 76 61 6c 20 3d 20 76 61 6c   ┆n 'while true' *) if v.val = val┆
0x07c900…07c920             75 65 5f 66 61 6c 73 65 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f 6a 6d 70 72   ┆ue_false then out_op_id (op_jmpr┆
0x07c920…07c940             77 2c 20 69 64 5f 77 68 65 78 69 74 29 3b 20 28 2a 20 73 6b 69 70 20 6f 6e 3a 20 27 77 68 69 6c   ┆w, id_whexit); (* skip on: 'whil┆
0x07c940…07c960             65 20 66 61 6c 73 65 27 20 2a 29 0a 28 2a 20 64 6f 6e 27 74 20 74 65 73 74 20 6f 6e 3a 20 27 77   ┆e false' *) (* don't test on: 'w┆
0x07c960…07c980             68 69 6c 65 20 74 72 75 65 27 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 64   ┆hile true' *) end else out_op_id┆
0x07c980…07c9a0             20 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 77 68 65 78 69 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d   ┆ (op_jmzeq, id_whexit); out_comm┆
0x07c9a0…07c9c0             65 6e 74 28 20 27 20 20 20 65 78 69 74 20 66 72 6f 6d 20 77 68 69 6c 65 5f 73 74 61 74 65 6d 65   ┆ent( '   exit from while_stateme┆
0x07c9c0…07c9e0             6e 74 2e 20 27 20 29 3b 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 77 68 69 6c 65 65 78 70 72   ┆nt. ' );  skip_token (xwhileexpr┆
0x07c9e0…07ca00             29 3b 0a 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78   ┆); find_statement; skip_token (x┆
0x07ca00…07ca20 (33, 0, 8)  65 6e 64 77 68 69 6c 65 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f 6a 6d 70 72 77 2c   ┆endwhile);  out_op_id (op_jmprw,┆
0x07ca20…07ca40             20 69 64 5f 77 68 72 65 70 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 77 68 65 78 69 74   ┆ id_whrep); out_label (id_whexit┆
0x07ca40…07ca60             29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74   ┆); out_nl; out_token (zend); out┆
0x07ca60…07ca80             5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 77 68 69 6c 65 5f 73 74 61 74 65   ┆_comment( '   end of while_state┆
0x07ca80…07caa0             6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 0a 65 6e 64 20 20 28 2a 20 66 69 6e 64 5f 77 68 69 6c 65 20   ┆ment. ' );   end  (* find_while ┆
0x07caa0…07cac0             2a 29 20 3b 0a 0a 0a 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 61 66 74 65 72 5f 73 68 6f 72   ┆*) ;   nd_situation = after_shor┆
0x07cac0…07cae0             74 5f 63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 70 74 69 6d 69 7a 65 20 6f   ┆t_const then begin (* optimize o┆
0x07cae0…07cb00             6e 20 27 77 68 69 6c 65 20 74 72 75 65 27 20 2a 29 0a 69 66 20 76 2e 76 61 6c 20 3d 20 76 61 6c   ┆n 'while true' *) if v.val = val┆
0x07cb00…07cb20             75 65 5f 66 61 6c 73 65 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f 6a 6d 70 72   ┆ue_false then out_op_id (op_jmpr┆
0x07cb20…07cb40             77 2c 20 69 64 5f 77 68 65 78 69 74 29 3b 20 28 2a 20 73 6b 69 70 20 6f 6e 3a 20 27 77 68 69 6c   ┆w, id_whexit); (* skip on: 'whil┆
0x07cb40…07cb60             65 20 66 61 6c 73 65 27 20 2a 29 0a 28 2a 20 64 6f 6e 27 74 20 74 65 73 74 20 6f 6e 3a 20 27 77   ┆e false' *) (* don't test on: 'w┆
0x07cb60…07cb80             68 69 6c 65 20 74 72 75 65 27 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 64   ┆hile true' *) end else out_op_id┆
0x07cb80…07cba0             20 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 77 68 65 78 69 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d   ┆ (op_jmzeq, id_whexit); out_comm┆
0x07cba0…07cbc0             65 6e 74 28 20 27 20 20 20 65 78 69 74 20 66 72 6f 6d 20 77 68 69 6c 65 5f 73 74 61 74 65 6d 65   ┆ent( '   exit from while_stateme┆
0x07cbc0…07cbe0             6e 74 2e 20 27 20 29 3b 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 77 68 69 6c 65 65 78 70 72   ┆nt. ' );  skip_token (xwhileexpr┆
0x07cbe0…07cc00             29 3b 0a 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78   ┆); find_statement; skip_token (x┆
0x07cc00…07cc20 (33, 0, 9)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 78 70 35 65 78 69 74 00 00 00 00 00 00 00   ┆../sw2103/src/rtp/xp5exit       ┆
0x07cc20…07cc40             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x07cc60…07cc80             00 00 00 00 20 20 20 37 35 35 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       755     255     146      ┆
0x07cc80…07cca0             20 20 36 37 37 36 37 20 20 35 32 36 36 37 37 30 32 32 33 20 20 31 30 33 31 36 00 20 00 00 00 00   ┆  67767  5266770223  10316      ┆
0x07cca0…07ccc0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x07ce00…07ce20 (33, 0, 10) 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ (*-----------------------------┆
0x07ce20…07ce40             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x07ce40…07ce60             2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39 32 20 20 44   ┆---- -- -- (C) Copyrigth 1992  D┆
0x07ce60…07ce80             41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 35 45 58 49 54 2e 50 41 53 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d   ┆ANOSI -- -- P5EXIT.PAS -- ------┆
0x07ce80…07cea0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x07cea0…07cec0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d   ┆----------------------------- --┆
0x07cec0…07cee0             0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Revisions -- ---------------┆
0x07cee0…07cf00             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20 38 39 2e 30   ┆----------------- --        89.0┆
0x07cf00…07cf20             36 2e 32 39 20 20 45 42 4b 20 20 20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20 31 2e 31 32   ┆6.29  EBK   Used in release 1.12┆
0x07cf20…07cf40             0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20   ┆ --  1.1   92.10.14  HEJ   SCCS ┆
0x07cf40…07cf60             61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆and UNIX used. -- --------------┆
0x07cf60…07cf80             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x07cf80…07cfa0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e   ┆--------------------- -- SCCS in┆
0x07cfa0…07cfc0             66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f   ┆formation -- File   :  %P% -- Mo┆
0x07cfc0…07cfe0             64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09   ┆dule :  %M% -- Version:  %I% -- ┆
0x07cfe0…07d000             44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆Date   :  %E%  %U% -------------┆
0x07d000…07d020 (33, 0, 11) 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x07d020…07d040             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 70 72 6f 63 65   ┆---------------------- *)  proce┆
0x07d040…07d060             64 75 72 65 20 20 66 69 6e 64 5f 6c 6f 63 6b 3b 0a 0a 76 61 72 0a 76 20 3a 20 76 61 72 61 64 64   ┆dure  find_lock;  var v : varadd┆
0x07d060…07d080             72 5f 64 65 73 63 72 3b 0a 6c 6f 63 6b 5f 6f 66 66 73 65 74 2c 20 73 69 7a 65 20 3a 20 69 6e 74   ┆r_descr; lock_offset, size : int┆
0x07d080…07d0a0             65 67 65 72 3b 0a 6c 6f 63 6b 6d 65 73 73 74 61 74 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 62 65 67   ┆eger; lockmesstat: boolean;  beg┆
0x07d0a0…07d0c0             69 6e 0a 6c 6f 63 6b 6d 65 73 73 74 61 74 3a 3d 20 74 6f 6b 65 6e 3d 78 6c 6f 63 6b 6d 65 73 73   ┆in lockmesstat:= token=xlockmess┆
0x07d0c0…07d0e0             74 61 74 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27 73 74 61 72 74   ┆tat; out_nl; out_comment ('start┆
0x07d0e0…07d100             20 6f 66 20 6c 6f 63 6b 20 73 74 61 74 65 6d 65 6e 74 27 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b   ┆ of lock statement'); get_token;┆
0x07d100…07d120             0a 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 29 3b 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73   ┆  find_varaddr( v); load_address┆
0x07d120…07d140             28 20 76 2c 20 74 72 75 65 29 3b 0a 77 68 69 6c 65 20 28 74 6f 6b 65 6e 20 3c 3e 20 78 6c 6f 63   ┆( v, true); while (token <> xloc┆
0x07d140…07d160             6b 76 61 72 29 20 61 6e 64 20 28 74 6f 6b 65 6e 20 3c 3e 20 78 6c 6f 63 6b 64 79 6e 76 61 72 29   ┆kvar) and (token <> xlockdynvar)┆
0x07d160…07d180             20 64 6f 0a 64 79 6e 5f 74 79 70 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 69 66 20 74 6f   ┆ do dyn_type_declaration;  if to┆
0x07d180…07d1a0             6b 65 6e 20 3d 20 78 6c 6f 63 6b 76 61 72 20 74 68 65 6e 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69   ┆ken = xlockvar then size := in_i┆
0x07d1a0…07d1c0             6e 74 65 67 65 72 0a 65 6c 73 65 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 76 20 29 3b   ┆nteger else get_niv_offset( v );┆
0x07d1c0…07d1e0             0a 6c 6f 63 6b 5f 6f 66 66 73 65 74 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 69 66 20 6c   ┆ lock_offset:= in_integer;  if l┆
0x07d1e0…07d200             6f 63 6b 6d 65 73 73 74 61 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 69 6e 69 74 69 61 6c   ┆ockmesstat then begin (* initial┆
0x07d200…07d220 (33, 0, 12) 69 7a 65 20 61 6e 6f 6e 79 6d 6f 75 73 20 6f 62 6a 65 63 74 20 69 6e 20 63 6f 6e 6a 75 6e 63 74   ┆ize anonymous object in conjunct┆
0x07d220…07d240             69 6f 6e 20 77 69 74 68 20 6c 6f 63 6b 6d 65 73 73 74 61 74 20 2a 29 0a 0a 6f 75 74 5f 6e 6c 3b   ┆ion with lockmesstat *)  out_nl;┆
0x07d240…07d260             0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69   ┆ out_token (zbegin); out_p_id (i┆
0x07d260…07d280             64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29   ┆d_size_ok); out_token (zendlist)┆
0x07d280…07d2a0             3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 76 70 64 29 3b 0a 6f 75 74 5f 63 6f 6d 6d   ┆; out_opcode(op_revpd); out_comm┆
0x07d2a0…07d2c0             65 6e 74 28 27 20 20 20 6c 6f 63 6b 6d 65 73 5f 73 74 61 74 65 6d 65 6e 74 20 64 65 73 63 72 69   ┆ent('   lockmes_statement descri┆
0x07d2c0…07d2e0             70 74 6f 72 2e 27 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 73 61 2c 20 31 29   ┆ptor.'); out_op_int(op_revsa, 1)┆
0x07d2e0…07d300             3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 76 73 64 2c 20 69 64 5f 6d 73 74 61 72 74 29   ┆; out_op_id(op_revsd, id_mstart)┆
0x07d300…07d320             3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 76 73 64 2c 20 69 64 5f 6d 66 69 72 73 74 29   ┆; out_op_id(op_revsd, id_mfirst)┆
0x07d320…07d340             3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 75 61 64 68 77 2c 20 31 29 3b 0a 6f 75 74 5f 6f   ┆; out_op_int(op_uadhw, 1); out_o┆
0x07d340…07d360             70 5f 69 6e 74 28 6f 70 5f 73 74 76 6c 64 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c 6f 63 6b   ┆p_int(op_stvld, lock_offset+lock┆
0x07d360…07d380             6d 65 73 5f 66 69 72 73 74 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27   ┆mes_first_offset); out_comment('┆
0x07d380…07d3a0             20 73 61 76 65 20 28 66 69 72 73 74 2c 20 6c 61 73 74 2b 31 29 20 27 29 3b 0a 6f 75 74 5f 6f 70   ┆ save (first, last+1) '); out_op┆
0x07d3a0…07d3c0             5f 69 6e 74 28 6f 70 5f 72 65 76 6c 77 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c 6f 63 6b 6d   ┆_int(op_revlw, lock_offset+lockm┆
0x07d3c0…07d3e0             65 73 5f 66 69 72 73 74 5f 6f 66 66 73 65 74 29 3b 0a 69 66 20 74 6f 6b 65 6e 3d 78 6c 6f 63 6b   ┆es_first_offset); if token=xlock┆
0x07d3e0…07d400             76 61 72 20 74 68 65 6e 20 28 2a 20 73 74 61 74 69 63 20 73 69 7a 65 64 20 74 79 70 65 20 2a 29   ┆var then (* static sized type *)┆
0x07d400…07d420 (33, 0, 13) 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 75 61 64 68 77 2c 20 73 69 7a 65 29 0a 65 6c 73 65   ┆ out_op_int(op_uadhw, size) else┆
0x07d420…07d440             0a 62 65 67 69 6e 0a 77 69 74 68 20 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63   ┆ begin with v do out_op_rev__(ac┆
0x07d440…07d460             63 65 73 73 2c 20 77 6f 72 64 5f 74 79 70 2c 20 63 2e 6e 69 76 2d 6e 69 76 2c 20 6f 66 66 73 65   ┆cess, word_typ, c.niv-niv, offse┆
0x07d460…07d480             74 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 75 61 64 64 29 3b 0a 65 6e 64 3b 20 28 2a   ┆t); out_opcode(op_uadd); end; (*┆
0x07d480…07d4a0             20 64 79 6e 61 6d 69 63 20 73 69 7a 65 64 20 62 75 66 66 65 72 20 74 79 70 65 20 2a 29 0a 6f 75   ┆ dynamic sized buffer type *) ou┆
0x07d4a0…07d4c0             74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 6c 77 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c   ┆t_op_int(op_stvlw, lock_offset+l┆
0x07d4c0…07d4e0             6f 63 6b 6d 65 73 5f 74 6f 70 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28   ┆ockmes_top_offset); out_comment(┆
0x07d4e0…07d500             27 20 73 61 76 65 20 63 6f 6d 70 75 74 65 64 20 74 6f 70 20 27 29 3b 0a 6f 75 74 5f 6f 70 5f 69   ┆' save computed top '); out_op_i┆
0x07d500…07d520             6e 74 28 6f 70 5f 72 65 76 6c 64 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c 6f 63 6b 6d 65 73   ┆nt(op_revld, lock_offset+lockmes┆
0x07d520…07d540             5f 6c 61 73 74 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 73 69 7a   ┆_last_offset); out_comment(' siz┆
0x07d540…07d560             65 20 74 65 73 74 2c 20 74 6f 70 20 69 6e 73 69 64 65 20 62 75 66 66 65 72 20 61 72 65 61 20 27   ┆e test, top inside buffer area '┆
0x07d560…07d580             29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 75 6c 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64   ┆); out_opcode(op_ult); out_op_id┆
0x07d580…07d5a0             28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75 74 5f 6f 70 5f 69   ┆(op_jmzeq, id_size_ok); out_op_i┆
0x07d5a0…07d5c0             6e 74 28 6f 70 5f 72 65 76 6c 77 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c 6f 63 6b 6d 65 73   ┆nt(op_revlw, lock_offset+lockmes┆
0x07d5c0…07d5e0             5f 74 6f 70 5f 6f 66 66 73 65 74 29 3b 20 28 2a 20 65 78 74 72 61 20 70 61 72 61 6d 65 74 65 72   ┆_top_offset); (* extra parameter┆
0x07d5e0…07d600             20 66 6f 72 20 70 72 69 6e 74 20 65 78 63 65 70 74 69 6f 6e 20 2a 29 0a 63 6f 6e 74 65 78 74 5f   ┆ for print exception *) context_┆
0x07d600…07d620 (33, 0, 14) 65 76 61 6c 28 2d 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 20 28 2a 20 72 65 6d 6f 76 65 20 66 72   ┆eval(-word_length); (* remove fr┆
0x07d620…07d640             6f 6d 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 63 6b 20 73 69 7a 65 20 63 6f 6d 70 75 74 61 74 69   ┆om internal stack size computati┆
0x07d640…07d660             6f 6e 20 2a 29 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 3a 3d 20 68 77 5f 73 74 61 63 6b 5f 73   ┆on *) hw_stack_size:= hw_stack_s┆
0x07d660…07d680             69 7a 65 2d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 20 28 2a 20 61 64 6a 75 73 74 20 68 77 5f 73 74   ┆ize-word_length; (* adjust hw_st┆
0x07d680…07d6a0             61 63 6b 20 2a 29 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65 72 28 63 5f 65 78 63 5f 6c 6f   ┆ack *) code_exc_trigger(c_exc_lo┆
0x07d6a0…07d6c0             63 6b 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75 74 5f   ┆ck); out_label(id_size_ok); out_┆
0x07d6c0…07d6e0             6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 6c 77 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c 6f 63   ┆op_int(op_revlw, lock_offset+loc┆
0x07d6e0…07d700             6b 6d 65 73 5f 74 6f 70 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f   ┆kmes_top_offset); out_op_int(op_┆
0x07d700…07d720             75 61 64 68 77 2c 20 31 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 20   ┆uadhw, 1); out_op_int(op_rechw, ┆
0x07d720…07d740             32 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 75 64 69 76 29 3b 20 28 2a 20 63 6f 6e 76   ┆2); out_opcode(op_udiv); (* conv┆
0x07d740…07d760             65 72 74 20 73 69 7a 65 20 66 72 6f 6d 20 62 79 74 65 73 20 74 6f 20 77 6f 72 64 73 20 2a 29 0a   ┆ert size from bytes to words *) ┆
0x07d760…07d780             6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 63 6f 6d   ┆out_nl; out_token(zend); out_com┆
0x07d780…07d7a0             6d 65 6e 74 28 27 20 65 6e 64 20 6f 66 20 6c 6f 63 6b 6d 65 73 20 64 65 73 63 72 69 70 74 6f 72   ┆ment(' end of lockmes descriptor┆
0x07d7a0…07d7c0             20 69 6e 69 74 20 27 29 3b 0a 65 6e 64 20 28 2a 20 6c 6f 63 6b 6d 65 73 73 74 61 74 20 2a 29 0a   ┆ init '); end (* lockmesstat *) ┆
0x07d7c0…07d7e0             65 6c 73 65 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 6c 6f 63 6b 76 61 72 20 74 68 65 6e 0a 6f 75   ┆else if token = xlockvar then ou┆
0x07d7e0…07d800             74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 28 73 69 7a 65 20 2b 20 31 29 20 64   ┆t_op_int( op_rechw, (size + 1) d┆
0x07d800…07d820 (33, 0, 15) 69 76 20 32 20 29 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 64 79 6e 20 6c 6f 63 6b 20 76 61   ┆iv 2 ) else begin (* dyn lock va┆
0x07d820…07d840             72 20 2a 29 0a 77 69 74 68 20 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65   ┆r *) with v do out_op_rev__(acce┆
0x07d840…07d860             73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 28   ┆ss,word_typ,c.niv-niv,offset); (┆
0x07d860…07d880             2a 20 63 6f 6e 76 65 72 74 20 73 69 7a 65 20 66 72 6f 6d 20 62 79 74 65 73 20 74 6f 20 77 6f 72   ┆* convert size from bytes to wor┆
0x07d880…07d8a0             64 73 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 75 61 64 68 77 2c 20 31 20 29 3b   ┆ds *) out_op_int( op_uadhw, 1 );┆
0x07d8a0…07d8c0             20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 63 6f 6e 76 65 72 74 20 74 6f 20 77 6f 72 64 73   ┆ out_comment( ' convert to words┆
0x07d8c0…07d8e0             20 27 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 32 20 29 3b   ┆ ' ); out_op_int( op_rechw, 2 );┆
0x07d8e0…07d900             0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 64 69 76 20 29 3b 0a 65 6e 64 3b 20 28 2a 20   ┆ out_opcode( op_udiv ); end; (* ┆
0x07d900…07d920             64 79 6e 20 6c 6f 63 6b 20 76 61 72 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f   ┆dyn lock var *)  out_op_int (op_┆
0x07d920…07d940             6c 6c 6f 63 6b 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28   ┆llock, lock_offset); out_opcode(┆
0x07d940…07d960             6f 70 5f 72 65 76 70 64 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 6c 72 65 73 65 29   ┆op_revpd); out_opcode (op_lrese)┆
0x07d960…07d980             3b 0a 6f 75 74 5f 72 65 73 74 61 20 28 30 29 3b 0a 69 66 20 6c 6f 63 6b 6d 65 73 73 74 61 74 20   ┆; out_resta (0); if lockmesstat ┆
0x07d980…07d9a0             74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 6c 61 2c 20   ┆then begin out_op_int(op_revla, ┆
0x07d9a0…07d9c0             6c 6f 63 6b 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 6c   ┆lock_offset); out_op_int(op_revl┆
0x07d9c0…07d9e0             77 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c 6f 63 6b 6d 65 73 5f 66 69 72 73 74 5f 6f 66 66   ┆w, lock_offset+lockmes_first_off┆
0x07d9e0…07da00             73 65 74 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 75 61 64 64 29 3b 20 0a 6f 75 74 5f   ┆set); out_opcode(op_uadd);  out_┆
0x07da00…07da20 (33, 1, 1)  63 6f 6d 6d 65 6e 74 28 27 20 63 6f 6d 70 75 74 65 20 73 74 61 72 74 20 61 64 64 72 65 73 73 20   ┆comment(' compute start address ┆
0x07da20…07da40             6f 66 20 76 69 73 69 62 6c 65 20 62 75 66 66 65 72 20 70 61 72 74 20 27 29 3b 0a 6f 75 74 5f 6f   ┆of visible buffer part '); out_o┆
0x07da40…07da60             70 5f 69 6e 74 28 6f 70 5f 73 74 76 6c 61 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 29 3b 0a 65 6e   ┆p_int(op_stvla, lock_offset); en┆
0x07da60…07da80             64 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 73   ┆d;  get_token; find_statement; s┆
0x07da80…07daa0             6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 6c 6f 63 6b 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆kip_token (xendlock); out_opcode┆
0x07daa0…07dac0             28 6f 70 5f 6c 72 65 6c 65 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64   ┆(op_lrele); out_comment( '   end┆
0x07dac0…07dae0             20 6f 66 20 61 20 6c 6f 63 6b 5f 73 74 61 74 65 6d 65 6e 74 2e 27 20 29 3b 0a 0a 65 6e 64 20 20   ┆ of a lock_statement.' );  end  ┆
0x07dae0…07db00             28 2a 20 20 66 69 6e 64 5f 6c 6f 63 6b 20 20 2a 29 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69   ┆(*  find_lock  *);  procedure fi┆
0x07db00…07db20             6e 64 5f 65 78 69 74 6c 6f 63 6b 3b 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 6f 75   ┆nd_exitlock; begin get_token; ou┆
0x07db20…07db40             74 5f 6f 70 63 6f 64 65 28 6f 70 5f 6c 72 65 6c 65 29 3b 0a 63 6f 6e 74 65 78 74 5f 65 76 61 6c   ┆t_opcode(op_lrele); context_eval┆
0x07db40…07db60             28 2d 6f 70 5f 74 61 62 6c 65 5b 6f 70 5f 6c 72 65 6c 65 5d 2e 6f 70 61 70 70 65 74 69 74 65 29   ┆(-op_table[op_lrele].opappetite)┆
0x07db60…07db80             3b 20 28 2a 20 75 6e 64 6f 20 73 74 61 63 6b 20 6d 6f 76 65 6d 65 6e 74 20 65 66 66 65 63 74 20   ┆; (* undo stack movement effect ┆
0x07db80…07dba0             6f 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 2a 29 0a 69 66 20 74 6f 6b 65 6e 3d 78 63 68   ┆of the operation *) if token=xch┆
0x07dba0…07dbc0             61 6e 6e 65 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 66   ┆annel then begin out_comment(' f┆
0x07dbc0…07dbe0             6f 72 63 65 64 20 65 78 69 74 20 6f 66 20 63 68 61 6e 6e 65 6c 20 73 74 61 74 65 6d 65 6e 74 20   ┆orced exit of channel statement ┆
0x07dbe0…07dc00             27 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 63 73 65 6c 6c 29 3b 0a 63 6f 6e 74 65 78   ┆'); out_opcode(op_csell); contex┆
0x07dc00…07dc20 (33, 1, 2)  74 5f 65 76 61 6c 28 2d 6f 70 5f 74 61 62 6c 65 5b 6f 70 5f 63 73 65 6c 6c 5d 2e 6f 70 61 70 70   ┆t_eval(-op_table[op_csell].opapp┆
0x07dc20…07dc40             65 74 69 74 65 29 3b 20 28 2a 20 75 6e 64 6f 20 73 74 61 63 6b 20 6d 6f 76 65 6d 65 6e 74 20 65   ┆etite); (* undo stack movement e┆
0x07dc40…07dc60             66 66 65 63 74 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 2a 29 0a 65 6e 64 0a 65 6c   ┆ffect of the operation *) end el┆
0x07dc60…07dc80             73 65 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 66 6f 72 63 65 64 20 65 78 69 74 20 6f 66 20   ┆se out_comment(' forced exit of ┆
0x07dc80…07dca0             6c 6f 63 6b 20 73 74 61 74 65 6d 65 6e 74 27 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64   ┆lock statement'); get_token; end┆
0x07dca0…07dcc0             3b 20 28 2a 20 66 69 6e 64 20 65 78 69 74 6c 6f 63 6b 2f 65 78 69 74 63 68 61 6e 6e 65 6c 20 2a   ┆; (* find exitlock/exitchannel *┆
0x07dcc0…07dce0             29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 77 69 74 68 3b 0a 0a 76 61 72 0a   ┆)    procedure  find_with;  var ┆
0x07dce0…07dd00             76 2c 20 76 31 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 6f 66 66 73 65 74 2c 20 73   ┆v, v1 : varaddr_descr; offset, s┆
0x07dd00…07dd20             69 7a 65 2c 20 6e 65 77 5f 73 69 7a 65 3a 20 69 6e 74 65 67 65 72 3b 0a 73 74 61 74 69 63 5f 6f   ┆ize, new_size: integer; static_o┆
0x07dd20…07dd40             62 6a 65 63 74 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e   ┆bject: boolean;  begin get_token┆
0x07dd40…07dd60             3b 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 76 31 29 3b 0a 0a 69 66 20 74 6f 6b 65 6e 3d 78 77   ┆; find_varaddr(v1);  if token=xw┆
0x07dd60…07dd80             69 74 68 76 61 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 73 69 7a 65 3a 3d 20 69 6e 5f 69 6e 74 65   ┆ithvar then begin size:= in_inte┆
0x07dd80…07dda0             67 65 72 3b 0a 73 74 61 74 69 63 5f 6f 62 6a 65 63 74 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 0a 65   ┆ger; static_object:= true; end e┆
0x07dda0…07ddc0             6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 64 79 6e 61 6d 69 63 20 73 69 7a 65 64 20 6f 62 6a 65 63   ┆lse begin (* dynamic sized objec┆
0x07ddc0…07dde0             74 20 2a 29 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 76 29 3b 0a 73 74 61 74 69 63 5f 6f   ┆t *) get_niv_offset(v); static_o┆
0x07dde0…07de00             62 6a 65 63 74 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 6f 66 66 73 65 74 3a 3d 20 69 6e 5f   ┆bject:= false; end; offset:= in_┆
0x07de00…07de20 (33, 1, 3)  69 6e 74 65 67 65 72 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 69 66 20 6f 66 66 73 65 74 3c 3e   ┆integer;  get_token; if offset<>┆
0x07de20…07de40             30 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 74 65 6d 70 6f 72 61 72 79 20 77 69 74 68 20 61   ┆0 then begin (* temporary with a┆
0x07de40…07de60             64 64 72 65 73 73 20 6e 65 63 65 73 73 61 72 79 20 2a 29 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73   ┆ddress necessary *) load_address┆
0x07de60…07de80             28 76 31 2c 20 74 72 75 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 6c 61 2c   ┆(v1, true); out_op_int(op_stvla,┆
0x07de80…07dea0             20 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 61 76 65 20   ┆ offset); out_comment( '   save ┆
0x07dea0…07dec0             74 68 65 20 77 69 74 68 5f 61 64 64 72 2e 20 27 20 29 3b 0a 65 6e 64 3b 0a 0a 77 68 69 6c 65 20   ┆the with_addr. ' ); end;  while ┆
0x07dec0…07dee0             28 74 6f 6b 65 6e 3c 3e 78 6e 6f 72 65 74 79 70 65 29 20 61 6e 64 20 28 74 6f 6b 65 6e 3c 3e 78   ┆(token<>xnoretype) and (token<>x┆
0x07dee0…07df00             72 65 74 79 70 65 29 20 61 6e 64 20 28 74 6f 6b 65 6e 3c 3e 78 64 79 6e 72 65 74 79 70 65 29 20   ┆retype) and (token<>xdynretype) ┆
0x07df00…07df20             64 6f 0a 64 79 6e 5f 74 79 70 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 69 66 20 74 6f 6b   ┆do dyn_type_declaration;  if tok┆
0x07df20…07df40             65 6e 3c 3e 78 6e 6f 72 65 74 79 70 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b   ┆en<>xnoretype then begin out_nl;┆
0x07df40…07df60             0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69   ┆ out_token (zbegin); out_p_id (i┆
0x07df60…07df80             64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29   ┆d_size_ok); out_token (zendlist)┆
0x07df80…07dfa0             3b 0a 69 66 20 73 74 61 74 69 63 5f 6f 62 6a 65 63 74 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69   ┆; if static_object then out_op_i┆
0x07dfa0…07dfc0             6e 74 28 6f 70 5f 72 65 63 68 77 2c 20 73 69 7a 65 29 0a 65 6c 73 65 0a 77 69 74 68 20 76 20 64   ┆nt(op_rechw, size) else with v d┆
0x07dfc0…07dfe0             6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 20 77 6f 72 64 5f 74 79 70 2c   ┆o out_op_rev__(access, word_typ,┆
0x07dfe0…07e000             20 63 2e 6e 69 76 2d 6e 69 76 2c 20 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74   ┆ c.niv-niv, offset); out_comment┆
0x07e000…07e020 (33, 1, 4)  28 27 20 63 6f 6d 70 61 72 65 20 73 69 7a 65 73 20 6f 66 20 74 79 70 65 73 2e 27 29 3b 0a 69 66   ┆(' compare sizes of types.'); if┆
0x07e020…07e040             20 74 6f 6b 65 6e 3d 78 72 65 74 79 70 65 20 74 68 65 6e 20 28 2a 20 73 74 61 74 69 63 20 72 65   ┆ token=xretype then (* static re┆
0x07e040…07e060             74 79 70 69 6e 67 20 74 79 70 65 20 2a 29 0a 62 65 67 69 6e 0a 6e 65 77 5f 73 69 7a 65 3a 3d 20   ┆typing type *) begin new_size:= ┆
0x07e060…07e080             69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c   ┆in_integer; out_op_int(op_rechw,┆
0x07e080…07e0a0             20 6e 65 77 5f 73 69 7a 65 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 67 65 74 5f 6e   ┆ new_size); end else begin get_n┆
0x07e0a0…07e0c0             69 76 5f 6f 66 66 73 65 74 28 76 31 29 3b 0a 77 69 74 68 20 76 31 20 64 6f 0a 6f 75 74 5f 6f 70   ┆iv_offset(v1); with v1 do out_op┆
0x07e0c0…07e0e0             5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 20 77 6f 72 64 5f 74 79 70 2c 20 63 2e 6e 69 76 2d 6e   ┆_rev__(access, word_typ, c.niv-n┆
0x07e0e0…07e100             69 76 2c 20 6f 66 66 73 65 74 29 3b 0a 65 6e 64 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f   ┆iv, offset); end; out_opcode(op_┆
0x07e100…07e120             75 6c 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 73 69 7a   ┆ult); out_op_id(op_jmzeq, id_siz┆
0x07e120…07e140             65 5f 6f 6b 29 3b 0a 28 2a 20 6c 6f 61 64 20 73 69 7a 65 20 76 61 6c 75 65 73 20 66 6f 72 20 70   ┆e_ok); (* load size values for p┆
0x07e140…07e160             72 69 6e 74 20 65 78 63 65 70 74 69 6f 6e 20 2a 29 0a 69 66 20 73 74 61 74 69 63 5f 6f 62 6a 65   ┆rint exception *) if static_obje┆
0x07e160…07e180             63 74 20 74 68 65 6e 20 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 20 73 69   ┆ct then  out_op_int(op_rechw, si┆
0x07e180…07e1a0             7a 65 29 0a 65 6c 73 65 0a 77 69 74 68 20 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28   ┆ze) else with v do out_op_rev__(┆
0x07e1a0…07e1c0             61 63 63 65 73 73 2c 20 77 6f 72 64 5f 74 79 70 2c 20 63 2e 6e 69 76 2d 6e 69 76 2c 20 6f 66 66   ┆access, word_typ, c.niv-niv, off┆
0x07e1c0…07e1e0             73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 73 69 7a 65 20 6f 66 20 77 69 74 68   ┆set); out_comment(' size of with┆
0x07e1e0…07e200             20 6f 62 6a 65 63 74 2e 27 29 3b 0a 69 66 20 74 6f 6b 65 6e 3d 78 72 65 74 79 70 65 20 74 68 65   ┆ object.'); if token=xretype the┆
0x07e200…07e220 (33, 1, 5)  6e 20 28 2a 20 73 74 61 74 69 63 20 72 65 74 79 70 69 6e 67 20 74 79 70 65 20 2a 29 0a 6f 75 74   ┆n (* static retyping type *) out┆
0x07e220…07e240             5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 20 6e 65 77 5f 73 69 7a 65 29 0a 65 6c 73 65   ┆_op_int(op_rechw, new_size) else┆
0x07e240…07e260             0a 77 69 74 68 20 76 31 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c   ┆ with v1 do out_op_rev__(access,┆
0x07e260…07e280             20 77 6f 72 64 5f 74 79 70 2c 20 63 2e 6e 69 76 2d 6e 69 76 2c 20 6f 66 66 73 65 74 29 3b 0a 6f   ┆ word_typ, c.niv-niv, offset); o┆
0x07e280…07e2a0             75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 73 69 7a 65 20 6f 66 20 72 65 74 79 70 65 64 20 6f 62 6a   ┆ut_comment(' size of retyped obj┆
0x07e2a0…07e2c0             65 63 74 2e 27 29 3b 0a 63 6f 6e 74 65 78 74 5f 65 76 61 6c 28 2d 32 2a 77 6f 72 64 5f 6c 65 6e   ┆ect.'); context_eval(-2*word_len┆
0x07e2c0…07e2e0             67 74 68 29 3b 20 28 2a 20 61 64 6a 75 73 74 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 63 6b 20 73   ┆gth); (* adjust internal stack s┆
0x07e2e0…07e300             69 7a 65 2c 20 73 69 7a 65 20 76 61 6c 75 65 73 20 6e 6f 74 20 75 6e 73 74 61 63 6b 65 64 20 2a   ┆ize, size values not unstacked *┆
0x07e300…07e320             29 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 3a 3d 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 2d   ┆) hw_stack_size:= hw_stack_size-┆
0x07e320…07e340             32 2a 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 20 28 2a 20 61 64 6a 75 73 74 20 68 77 5f 73 74 61 63   ┆2*word_length; (* adjust hw_stac┆
0x07e340…07e360             6b 20 2a 29 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65 72 28 63 5f 65 78 63 5f 77 69 74 68   ┆k *) code_exc_trigger(c_exc_with┆
0x07e360…07e380             29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75 74 5f 6e 6c   ┆); out_label(id_size_ok); out_nl┆
0x07e380…07e3a0             3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 74 6f 6b 65 6e   ┆; out_token(zend); end; (* token┆
0x07e3a0…07e3c0             3c 3e 6e 6f 72 65 74 79 70 65 20 2a 29 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 73   ┆<>noretype *)  get_token; find_s┆
0x07e3c0…07e3e0             74 61 74 65 6d 65 6e 74 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 77 69 74 68 29 3b   ┆tatement; skip_token (xendwith);┆
0x07e3e0…07e400             0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 77 69 74 68 20 20 2a 29 3b 0a 0a 70 72 6f 63 65   ┆  end  (*  find_with  *);  proce┆
0x07e400…07e420 (33, 1, 6)  64 75 72 65 20 66 69 6e 64 5f 65 78 63 68 61 6e 67 65 3b 0a 0a 76 61 72 0a 74 79 70 65 5f 6f 2c   ┆dure find_exchange;  var type_o,┆
0x07e420…07e440             20 6b 65 79 2c 20 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 31 2c 20 76 32 20 3a 20 76   ┆ key, size : integer; v1, v2 : v┆
0x07e440…07e460             61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a   ┆araddr_descr;  begin get_token; ┆
0x07e460…07e480             66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 31 29 3b 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 20   ┆find_varaddr( v1); load_address ┆
0x07e480…07e4a0             28 76 31 2c 20 74 72 75 65 29 3b 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 6c 65 66 74 20 74 68   ┆(v1, true); if token <> xleft th┆
0x07e4a0…07e4c0             65 6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 74 79 70 65   ┆en error(pass4code_error);  type┆
0x07e4c0…07e4e0             5f 6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 28 74 79 70 65 5f 6f 3c 3e 72 65   ┆_o := in_integer; if (type_o<>re┆
0x07e4e0…07e500             66 5f 74 79 70 29 20 61 6e 64 20 28 74 79 70 65 5f 6f 3c 3e 73 68 61 64 6f 77 5f 74 79 70 29 20   ┆f_typ) and (type_o<>shadow_typ) ┆
0x07e500…07e520             74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 67 65 74   ┆then error(pass4code_error); get┆
0x07e520…07e540             5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 32 29 3b 0a 6c 6f 61 64 5f   ┆_token; find_varaddr( v2); load_┆
0x07e540…07e560             61 64 64 72 65 73 73 20 28 76 32 2c 20 74 72 75 65 29 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28   ┆address (v2, true); skip_token (┆
0x07e560…07e580             78 65 78 63 68 61 6e 67 65 29 3b 0a 69 66 20 74 79 70 65 5f 6f 3d 73 68 61 64 6f 77 5f 74 79 70   ┆xexchange); if type_o=shadow_typ┆
0x07e580…07e5a0             20 74 68 65 6e 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75 73 65 2c 20 65 78   ┆ then code_call_proc(sys_use, ex┆
0x07e5a0…07e5c0             74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 65 78 63 68 61 6e 67 65 5f 72 63 27 29 2c 20 6b   ┆t_lookup(key, '_exchange_rc'), k┆
0x07e5c0…07e5e0             65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 0a 34 20 28 2a 20 6c 65 66 74 20 68 61   ┆ey, const_niv_0, 0, 4 (* left ha┆
0x07e5e0…07e600             6e 64 20 61 64 64 72 65 73 73 20 2a 29 20 2b 20 34 20 28 2a 20 72 69 67 68 74 20 68 61 6e 64 20   ┆nd address *) + 4 (* right hand ┆
0x07e600…07e620 (33, 1, 7)  61 64 64 72 65 73 73 20 2a 29 2c 20 30 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28   ┆address *), 0) else out_opcode (┆
0x07e620…07e640             6f 70 5f 63 65 78 63 68 29 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 65 78 63 68 61 6e   ┆op_cexch);  end  (*  find_exchan┆
0x07e640…07e660             67 65 20 20 2a 29 3b 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 6c 61 62 65   ┆ge  *);     procedure  find_labe┆
0x07e660…07e680             6c 3b 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6c 69 78 5f 6c 61 62 65 6c 20 28 6c 5f 6e 61 6d 65 2c   ┆l;  begin out_lix_label (l_name,┆
0x07e680…07e6a0             20 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 20 20 28   ┆ in_integer); get_token;  end  (┆
0x07e6a0…07e6c0             2a 20 66 69 6e 64 5f 6c 61 62 65 6c 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69   ┆* find_label *);   procedure  fi┆
0x07e6c0…07e6e0             6e 64 5f 67 6f 74 6f 3b 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f   ┆nd_goto;  begin  out_opcode( op_┆
0x07e6e0…07e700             6a 6d 70 72 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 6c   ┆jmprw ); out_start_param;  out_l┆
0x07e700…07e720             69 78 20 28 6c 5f 6e 61 6d 65 2c 20 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a 67 65 74 5f 74 6f 6b   ┆ix (l_name, in_integer); get_tok┆
0x07e720…07e740             65 6e 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 67 6f 74 6f 20 20 2a 29 3b 0a 0a 0a 70   ┆en;  end  (*  find_goto  *);   p┆
0x07e740…07e760             72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 69 66 3b 0a 0a 76 61 72 20 0a 76 20 3a 20 76 61 72   ┆rocedure  find_if;  var  v : var┆
0x07e760…07e780             76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f   ┆value_descr;  begin out_nl; out_┆
0x07e780…07e7a0             74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 69 66 65   ┆token (zbegin); out_p_id (id_ife┆
0x07e7a0…07e7c0             6c 73 65 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 69 66 65 78 69 74 29 3b 0a 6f 75 74 5f   ┆lse); out_p_id (id_ifexit); out_┆
0x07e7c0…07e7e0             74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27   ┆token (zendlist); out_comment( '┆
0x07e7e0…07e800             20 20 20 73 74 61 72 74 20 6f 66 20 69 66 5f 73 74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a   ┆   start of if_statement. ' );  ┆
0x07e800…07e820 (33, 1, 8)  67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 76 29 3b 0a 0a 69 66 20 28   ┆get_token; find_exprs( v);  if (┆
0x07e820…07e840             20 76 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 0a 20 20 20 28 20 28 20 76 2e 73 69 7a 65 20   ┆ v.kind <> 1 ) or    ( ( v.size ┆
0x07e840…07e860             3e 3d 20 30 20 29 20 61 6e 64 20 28 20 76 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 29 20 74 68 65   ┆>= 0 ) and ( v.size <> 2 ) ) the┆
0x07e860…07e880             6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 6f 75 74 5f 6f 70   ┆n error(pass4code_error); out_op┆
0x07e880…07e8a0             5f 69 64 20 20 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 69 66 65 6c 73 65 29 3b 0a 0a 73 6b 69   ┆_id  (op_jmzeq, id_ifelse);  ski┆
0x07e8a0…07e8c0             70 5f 74 6f 6b 65 6e 20 28 78 69 66 65 78 70 72 29 3b 0a 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e   ┆p_token (xifexpr); find_statemen┆
0x07e8c0…07e8e0             74 3b 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 65 6c 73 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆t;  if token = xelse then begin ┆
0x07e8e0…07e900             28 2a 20 20 20 20 65 6c 73 65 5f 70 61 72 74 20 3a 20 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 20   ┆(*    else_part :  *) out_op_id ┆
0x07e900…07e920             20 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 69 66 65 78 69 74 29 3b 0a 6f 75 74 5f 6c 61 62 65   ┆ (op_jmprw, id_ifexit); out_labe┆
0x07e920…07e940             6c 20 28 69 64 5f 69 66 65 6c 73 65 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f   ┆l (id_ifelse);  get_token; find_┆
0x07e940…07e960             73 74 61 74 65 6d 65 6e 74 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 69 66 65 78 69 74   ┆statement;  out_label( id_ifexit┆
0x07e960…07e980             20 29 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 0a 62 65 67 69 6e 0a 28 2a 20 20 20 20 6e 6f 20 65 6c   ┆ )  end  else  begin (*    no el┆
0x07e980…07e9a0             73 65 5f 70 61 72 74 20 20 20 2a 29 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 69 66 65 6c 73   ┆se_part   *) out_label (id_ifels┆
0x07e9a0…07e9c0             65 29 3b 0a 65 6e 64 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64   ┆e); end; out_nl; out_token (zend┆
0x07e9c0…07e9e0             29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 69 66 5f 73 74   ┆); out_comment( '   end of if_st┆
0x07e9e0…07ea00             61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 69 66 29 3b   ┆atement. ' );  skip_token (xif);┆
0x07ea00…07ea20 (33, 1, 9)  0a 0a 65 6e 64 20 28 2a 20 20 66 69 6e 64 5f 69 66 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64   ┆  end (*  find_if  *);    proced┆
0x07ea20…07ea40             75 72 65 20 20 66 69 6e 64 5f 72 65 70 65 61 74 3b 0a 0a 76 61 72 0a 76 20 3a 20 76 61 72 76 61   ┆ure  find_repeat;  var v : varva┆
0x07ea40…07ea60             6c 75 65 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f   ┆lue_descr;  begin out_nl; out_to┆
0x07ea60…07ea80             6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 72 70 72 65 70   ┆ken (zbegin); out_p_id (id_rprep┆
0x07ea80…07eaa0             29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 72 70 63 6f 6e 74 29 3b 0a 6f 75 74 5f 70 5f 69   ┆); out_p_id (id_rpcont); out_p_i┆
0x07eaa0…07eac0             64 20 28 69 64 5f 72 70 65 78 69 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69   ┆d (id_rpexit); out_token (zendli┆
0x07eac0…07eae0             73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 74 61 72 74 20 6f 66 20 72   ┆st); out_comment( '   start of r┆
0x07eae0…07eb00             65 70 65 61 74 5f 73 74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c   ┆epeat_statement. ' );  out_label┆
0x07eb00…07eb20             28 20 69 64 5f 72 70 72 65 70 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 73   ┆( id_rprep );  get_token; find_s┆
0x07eb20…07eb40             74 61 74 65 6d 65 6e 74 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 72 70 63 6f 6e 74 29 3b   ┆tatement;  out_label(id_rpcont);┆
0x07eb40…07eb60             0a 73 6b 69 70 5f 74 6f 6b 65 6e 28 78 75 6e 74 69 6c 29 3b 0a 66 69 6e 64 5f 65 78 70 72 28 20   ┆ skip_token(xuntil); find_expr( ┆
0x07eb60…07eb80             76 29 3b 0a 0a 69 66 20 28 20 76 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 0a 20 20 20 28 20   ┆v);  if ( v.kind <> 1 ) or    ( ┆
0x07eb80…07eba0             28 20 76 2e 73 69 7a 65 20 3e 3d 20 30 20 29 20 61 6e 64 20 28 20 76 2e 73 69 7a 65 20 3c 3e 20   ┆( v.size >= 0 ) and ( v.size <> ┆
0x07eba0…07ebc0             32 20 29 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72   ┆2 ) ) then error(pass4code_error┆
0x07ebc0…07ebe0             29 3b 0a 69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 61 66 74 65 72 5f   ┆); if operand_situation = after_┆
0x07ebe0…07ec00             73 68 6f 72 74 5f 63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 70 74 69 6d 69   ┆short_const then begin (* optimi┆
0x07ec00…07ec20 (33, 1, 10) 7a 65 20 6f 6e 20 27 72 65 70 65 61 74 20 2e 2e 2e 20 75 6e 74 69 6c 20 66 61 6c 73 65 27 20 2a   ┆ze on 'repeat ... until false' *┆
0x07ec20…07ec40             29 0a 69 66 20 76 2e 76 61 6c 20 3d 20 76 61 6c 75 65 5f 66 61 6c 73 65 20 74 68 65 6e 0a 6f 75   ┆) if v.val = value_false then ou┆
0x07ec40…07ec60             74 5f 6f 70 5f 69 64 20 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 72 70 72 65 70 29 3b 20 28 2a   ┆t_op_id (op_jmprw, id_rprep); (*┆
0x07ec60…07ec80             20 64 6f 6e 27 74 20 74 65 73 74 20 6f 6e 3a 20 27 2e 2e 2e 20 75 6e 74 69 6c 20 66 61 6c 73 65   ┆ don't test on: '... until false┆
0x07ec80…07eca0             27 20 2a 29 0a 28 2a 20 65 78 69 74 20 69 6d 6d 65 64 69 61 74 6c 79 20 6f 6e 20 27 20 2e 2e 2e   ┆' *) (* exit immediatly on ' ...┆
0x07eca0…07ecc0             20 75 6e 74 69 6c 20 74 72 75 65 27 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f   ┆ until true' *) end else out_op_┆
0x07ecc0…07ece0             69 64 20 20 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 72 70 72 65 70 29 3b 0a 0a 6f 75 74 5f 6c   ┆id  (op_jmzeq, id_rprep);  out_l┆
0x07ece0…07ed00             61 62 65 6c 28 69 64 5f 72 70 65 78 69 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b   ┆abel(id_rpexit); out_nl; out_tok┆
0x07ed00…07ed20             65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20   ┆en (zend); out_comment( '   end ┆
0x07ed20…07ed40             6f 66 20 72 65 70 65 61 74 5f 73 74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 73 6b 69 70 5f   ┆of repeat_statement. ' );  skip_┆
0x07ed40…07ed60             74 6f 6b 65 6e 20 28 78 65 6e 64 72 65 70 65 61 74 29 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69   ┆token (xendrepeat);  end  (*  fi┆
0x07ed60…07ed80             6e 64 5f 72 65 70 65 61 74 20 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f   ┆nd_repeat  *);   procedure find_┆
0x07ed80…07eda0             6c 6f 6f 70 3b 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a   ┆loop; begin out_nl; out_token (z┆
0x07eda0…07edc0             62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 6c 6f 6f 70 29 3b 0a 6f 75 74 5f   ┆begin); out_p_id (id_loop); out_┆
0x07edc0…07ede0             70 5f 69 64 20 28 69 64 5f 6c 6f 6f 70 65 78 69 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a   ┆p_id (id_loopexit); out_token (z┆
0x07ede0…07ee00             65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 74 61 72 74   ┆endlist); out_comment( '   start┆
0x07ee00…07ee20 (33, 1, 11) 20 6f 66 20 6c 6f 6f 70 5f 73 74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6c 61   ┆ of loop_statement. ' );  out_la┆
0x07ee20…07ee40             62 65 6c 28 20 69 64 5f 6c 6f 6f 70 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64   ┆bel( id_loop );  get_token; find┆
0x07ee40…07ee60             5f 73 74 61 74 65 6d 65 6e 74 3b 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e 28 78 65 6e 64 6c 6f 6f 70   ┆_statement;  skip_token(xendloop┆
0x07ee60…07ee80             73 74 61 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f   ┆stat); out_op_id  (op_jmprw, id_┆
0x07ee80…07eea0             6c 6f 6f 70 29 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 6c 6f 6f 70 65 78 69 74 29 3b 0a   ┆loop);  out_label(id_loopexit); ┆
0x07eea0…07eec0             6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 63 6f   ┆out_nl; out_token (zend); out_co┆
0x07eec0…07eee0             6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 6c 6f 6f 70 5f 73 74 61 74 65 6d 65 6e 74   ┆mment( '   end of loop_statement┆
0x07eee0…07ef00             2e 20 27 20 29 3b 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 20 6c 6f 6f 70 20 2a 29 0a 0a 70 72 6f   ┆. ' ); end; (* find loop *)  pro┆
0x07ef00…07ef20             63 65 64 75 72 65 20 66 69 6e 64 5f 6c 6f 6f 70 5f 67 6f 74 6f 28 63 6f 6e 74 5f 6f 72 5f 65 78   ┆cedure find_loop_goto(cont_or_ex┆
0x07ef20…07ef40             69 74 3a 20 70 61 73 73 34 63 6f 64 65 73 29 3b 0a 76 61 72 0a 64 65 73 74 69 6e 61 74 69 6f 6e   ┆it: pass4codes); var destination┆
0x07ef40…07ef60             3a 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 63   ┆: identifier; begin get_token; c┆
0x07ef60…07ef80             61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 66 6f 72 73 74 61 74 3a 20 69 66 20 63 6f 6e 74 5f 6f   ┆ase token of xforstat: if cont_o┆
0x07ef80…07efa0             72 5f 65 78 69 74 3d 78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 20 74 68 65 6e 0a 64 65 73 74 69 6e   ┆r_exit=xcontloopstat then destin┆
0x07efa0…07efc0             61 74 69 6f 6e 3a 3d 20 69 64 5f 66 6f 72 63 6f 6e 74 0a 65 6c 73 65 0a 64 65 73 74 69 6e 61 74   ┆ation:= id_forcont else destinat┆
0x07efc0…07efe0             69 6f 6e 3a 3d 20 69 64 5f 6c 6f 6f 70 65 78 69 74 3b 0a 78 77 68 69 6c 65 3a 20 69 66 20 63 6f   ┆ion:= id_loopexit; xwhile: if co┆
0x07efe0…07f000             6e 74 5f 6f 72 5f 65 78 69 74 3d 78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 20 74 68 65 6e 0a 64 65   ┆nt_or_exit=xcontloopstat then de┆
0x07f000…07f020 (33, 1, 12) 73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 77 68 72 65 70 0a 65 6c 73 65 0a 64 65 73 74 69 6e   ┆stination:= id_whrep else destin┆
0x07f020…07f040             61 74 69 6f 6e 3a 3d 20 69 64 5f 77 68 65 78 69 74 3b 0a 78 72 65 70 65 61 74 3a 20 69 66 20 63   ┆ation:= id_whexit; xrepeat: if c┆
0x07f040…07f060             6f 6e 74 5f 6f 72 5f 65 78 69 74 3d 78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 20 74 68 65 6e 0a 64   ┆ont_or_exit=xcontloopstat then d┆
0x07f060…07f080             65 73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 72 70 63 6f 6e 74 0a 65 6c 73 65 0a 64 65 73 74   ┆estination:= id_rpcont else dest┆
0x07f080…07f0a0             69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 72 70 65 78 69 74 3b 0a 78 6c 6f 6f 70 73 74 61 74 3a 20   ┆ination:= id_rpexit; xloopstat: ┆
0x07f0a0…07f0c0             69 66 20 63 6f 6e 74 5f 6f 72 5f 65 78 69 74 3d 78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 20 74 68   ┆if cont_or_exit=xcontloopstat th┆
0x07f0c0…07f0e0             65 6e 0a 64 65 73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 6c 6f 6f 70 0a 65 6c 73 65 0a 64 65   ┆en destination:= id_loop else de┆
0x07f0e0…07f100             73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 6c 6f 6f 70 65 78 69 74 3b 0a 65 6c 73 65 20 65 72   ┆stination:= id_loopexit; else er┆
0x07f100…07f120             72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61   ┆ror(pass4code_error); end; (* ca┆
0x07f120…07f140             73 65 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 70 72 77 2c 20 64 65 73 74 69   ┆se *)  out_op_id(op_jmprw, desti┆
0x07f140…07f160             6e 61 74 69 6f 6e 29 3b 0a 69 66 20 63 6f 6e 74 5f 6f 72 5f 65 78 69 74 3d 78 63 6f 6e 74 6c 6f   ┆nation); if cont_or_exit=xcontlo┆
0x07f160…07f180             6f 70 73 74 61 74 20 74 68 65 6e 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 63 6f 6e 74 69 6e   ┆opstat then out_comment(' contin┆
0x07f180…07f1a0             75 65 6c 6f 6f 70 20 73 74 61 74 65 6d 65 6e 74 20 27 29 0a 65 6c 73 65 0a 6f 75 74 5f 63 6f 6d   ┆ueloop statement ') else out_com┆
0x07f1a0…07f1c0             6d 65 6e 74 28 27 20 65 78 69 74 6c 6f 6f 70 20 73 74 61 74 65 6d 65 6e 74 27 29 3b 0a 67 65 74   ┆ment(' exitloop statement'); get┆
0x07f1c0…07f1e0             5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 20 6c 6f 6f 70 20 67 6f 74 6f 20 2a   ┆_token; end; (* find loop goto *┆
0x07f1e0…07f200             29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 65 78 69 74 3b 0a 62 65 67 69 6e 0a 6f   ┆)   procedure find_exit; begin o┆
0x07f200…07f220 (33, 1, 13) 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 62 6c 6f 63 6b 65 78 69 74 29   ┆ut_op_id(op_jmprw, id_blockexit)┆
0x07f220…07f240             3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 65 78 69 74 20 73 74 61 74 65 6d 65 6e 74 20 27   ┆; out_comment(' exit statement '┆
0x07f240…07f260             29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 20 65 78 69 74 20   ┆); get_token; end; (* find exit ┆
0x07f260…07f280             2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 66 6f 72 3b 0a 0a 76 61 72 0a 76   ┆*)   procedure  find_for;  var v┆
0x07f280…07f2a0             5f 6c 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 76 5f 72 20 3a 20 76 61 72 76 61 6c   ┆_l : varaddr_descr; v_r : varval┆
0x07f2a0…07f2c0             75 65 5f 64 65 73 63 72 3b 0a 6f 66 66 73 65 74 2c 20 74 79 70 65 5f 76 2c 20 6d 6f 64 65 2c 20   ┆ue_descr; offset, type_v, mode, ┆
0x07f2c0…07f2e0             77 5f 6f 66 66 73 65 74 2c 20 72 65 6d 61 69 6e 64 65 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a   ┆w_offset, remainder : integer;  ┆
0x07f2e0…07f300             62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b   ┆begin get_token; out_nl; out_tok┆
0x07f300…07f320             65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 66 6f 72 72 65 70   ┆en (zbegin); out_p_id (id_forrep┆
0x07f320…07f340             29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 66 6f 72 73 74 6f 72 65 29 3b 0a 6f 75 74 5f 70   ┆); out_p_id (id_forstore); out_p┆
0x07f340…07f360             5f 69 64 28 69 64 5f 66 6f 72 63 6f 6e 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 66 6f   ┆_id(id_forcont); out_p_id (id_fo┆
0x07f360…07f380             72 65 78 69 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 6c 6f 6f 70 65 78 69 74 29 3b 0a   ┆rexit); out_p_id (id_loopexit); ┆
0x07f380…07f3a0             6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 0a 66 69 6e 64 5f 76 61 72 61   ┆out_token (zendlist);  find_vara┆
0x07f3a0…07f3c0             64 64 72 28 20 76 5f 6c 29 3b 0a 28 2a 20 6c 65 74 20 69 6e 74 65 72 6d 69 64 69 61 74 65 5f 66   ┆ddr( v_l); (* let intermidiate_f┆
0x07f3c0…07f3e0             72 61 6d 65 20 62 65 20 69 6e 64 69 72 65 63 74 2d 61 64 64 72 65 73 73 65 64 20 2a 29 0a 69 66   ┆rame be indirect-addressed *) if┆
0x07f3e0…07f400             20 76 5f 6c 2e 61 63 63 65 73 73 20 3d 20 69 5f 66 72 61 6d 65 20 74 68 65 6e 0a 6c 6f 61 64 5f   ┆ v_l.access = i_frame then load_┆
0x07f400…07f420 (33, 1, 14) 61 64 64 72 65 73 73 28 20 76 5f 6c 2c 20 74 72 75 65 29 3b 0a 0a 6f 66 66 73 65 74 20 3a 3d 20   ┆address( v_l, true);  offset := ┆
0x07f420…07f440             69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 20 77 5f 6f 66 66 73 65 74 20 3a 3d 20 69 6e 5f 69 6e 74   ┆in_integer;   w_offset := in_int┆
0x07f440…07f460             65 67 65 72 3b 20 20 20 74 79 70 65 5f 76 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 69   ┆eger;   type_v := in_integer;  i┆
0x07f460…07f480             66 20 28 20 74 79 70 65 5f 76 20 3c 3e 20 62 79 74 65 5f 74 79 70 20 29 20 61 6e 64 20 28 20 74   ┆f ( type_v <> byte_typ ) and ( t┆
0x07f480…07f4a0             79 70 65 5f 76 20 3c 3e 20 77 6f 72 64 5f 74 79 70 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70   ┆ype_v <> word_typ ) then error(p┆
0x07f4a0…07f4c0             61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 69 66 20 76 5f 6c 2e 6b 69 6e 64 20 3c 3e   ┆ass4code_error);  if v_l.kind <>┆
0x07f4c0…07f4e0             20 61 64 64 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 6e 65 69 74 68 65 72 20 67 6c 6f 62   ┆ addr then begin (* neither glob┆
0x07f4e0…07f500             61 6c 20 6e 6f 72 20 6c 6f 63 61 6c 20 66 72 61 6d 20 2a 29 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆al nor local fram *)  out_opcode┆
0x07f500…07f520             28 20 6f 70 5f 72 65 76 70 64 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74   ┆( op_revpd );  out_opcode( op_st┆
0x07f520…07f540             76 6c 61 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 20 6f 75 74 5f 69 6e   ┆vla ); out_start_param;   out_in┆
0x07f540…07f560             74 65 67 65 72 28 20 6f 66 66 73 65 74 20 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20   ┆teger( offset ); out_comment( ' ┆
0x07f560…07f580             20 20 73 74 6f 72 65 20 61 64 64 72 2e 20 6f 66 20 74 68 65 20 63 6f 6e 74 72 2e 20 76 61 72 2e   ┆  store addr. of the contr. var.┆
0x07f580…07f5a0             20 27 20 29 3b 0a 65 6e 64 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72   ┆ ' ); end;  get_token; find_expr┆
0x07f5a0…07f5c0             73 28 20 76 5f 72 29 3b 0a 69 66 20 28 20 76 5f 72 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72   ┆s( v_r); if ( v_r.kind <> 1 ) or┆
0x07f5c0…07f5e0             20 28 20 28 20 76 5f 72 2e 73 69 7a 65 20 3e 3d 20 30 20 29 20 61 6e 64 20 28 20 76 5f 72 2e 73   ┆ ( ( v_r.size >= 0 ) and ( v_r.s┆
0x07f5e0…07f600             69 7a 65 20 3c 3e 20 32 20 29 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64   ┆ize <> 2 ) ) then error(pass4cod┆
0x07f600…07f620 (33, 1, 15) 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20   ┆e_error);  out_opcode( op_revpw ┆
0x07f620…07f640             29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 76 5f 72 29 3b   ┆);  get_token; find_exprs( v_r);┆
0x07f640…07f660             0a 0a 69 66 20 28 20 76 5f 72 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 28 20 76 5f   ┆  if ( v_r.kind <> 1 ) or ( ( v_┆
0x07f660…07f680             72 2e 73 69 7a 65 20 3e 3d 20 30 20 29 20 61 6e 64 20 28 20 76 5f 72 2e 73 69 7a 65 20 3c 3e 20   ┆r.size >= 0 ) and ( v_r.size <> ┆
0x07f680…07f6a0             32 20 29 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72   ┆2 ) ) then error(pass4code_error┆
0x07f6a0…07f6c0             29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 0a 6f 75 74   ┆);  out_opcode( op_revpw );  out┆
0x07f6c0…07f6e0             5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 6c 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70   ┆_opcode( op_stvlw ); out_start_p┆
0x07f6e0…07f700             61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 77 5f 6f 66 66 73 65 74 29 3b 0a 6f 75   ┆aram;  out_integer(w_offset); ou┆
0x07f700…07f720             74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 61 76 65 20 74 68 65 20 6c 69 6d 69 74 20 76 61   ┆t_comment( '   save the limit va┆
0x07f720…07f740             6c 75 65 2e 20 27 20 29 3b 0a 28 2a 20 70 72 65 63 69 73 65 6c 79 20 33 20 77 6f 72 64 73 20 6d   ┆lue. ' ); (* precisely 3 words m┆
0x07f740…07f760             75 73 74 20 62 65 20 6f 6e 20 74 68 65 20 72 65 67 69 73 74 65 72 73 74 61 63 6b 20 2a 29 0a 28   ┆ust be on the registerstack *) (┆
0x07f760…07f780             2a 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 20 2a 29 0a 68 77 5f 73 74 61 63 6b 5f 61 64 6a 75   ┆* at this point *) hw_stack_adju┆
0x07f780…07f7a0             73 74 20 28 36 2c 20 30 29 3b 0a 0a 0a 6d 6f 64 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b   ┆st (6, 0);   mode := in_integer;┆
0x07f7a0…07f7c0             0a 69 66 20 28 20 6d 6f 64 65 20 3c 3e 20 31 20 29 20 61 6e 64 20 28 20 6d 6f 64 65 20 3c 3e 20   ┆ if ( mode <> 1 ) and ( mode <> ┆
0x07f7c0…07f7e0             32 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b   ┆2 ) then error(pass4code_error);┆
0x07f7e0…07f800             0a 0a 69 66 20 6d 6f 64 65 20 3d 20 31 20 74 68 65 6e 20 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20   ┆  if mode = 1 then  out_opcode( ┆
0x07f800…07f820 (34, 0, 1)  6f 70 5f 6c 65 20 29 20 65 6c 73 65 20 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 67 65 20   ┆op_le ) else  out_opcode( op_ge ┆
0x07f820…07f840             29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 63 6f 6d 70 61 72 65 20 74 68 65 20   ┆); out_comment( '   compare the ┆
0x07f840…07f860             6c 69 6d 69 74 20 77 69 74 68 20 74 68 65 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 20 2e 20 27   ┆limit with the initial value . '┆
0x07f860…07f880             20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 7a 67 74 2c 20 69 64 5f 66 6f 72   ┆ ); out_op_id  (op_jmzgt, id_for┆
0x07f880…07f8a0             73 74 6f 72 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64   ┆store); out_op_id  (op_jmprw, id┆
0x07f8a0…07f8c0             5f 66 6f 72 65 78 69 74 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 66 6f 72 72 65 70 29   ┆_forexit); out_label (id_forrep)┆
0x07f8c0…07f8e0             3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 20 6f 70 5f 75 61 64 68 77 20 29 3b 20 20 28 2a 20   ┆;  out_opcode ( op_uadhw );  (* ┆
0x07f8e0…07f900             69 6e 63 72 65 61 73 65 20 6f 72 20 64 65 63 72 65 61 73 65 20 2a 29 0a 6f 75 74 5f 73 74 61 72   ┆increase or decrease *) out_star┆
0x07f900…07f920             74 5f 70 61 72 61 6d 3b 0a 69 66 20 6d 6f 64 65 20 3d 20 31 20 74 68 65 6e 20 6f 75 74 5f 69 6e   ┆t_param; if mode = 1 then out_in┆
0x07f920…07f940             74 65 67 65 72 20 28 31 29 0a 65 6c 73 65 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 2d 31 29 3b   ┆teger (1) else out_integer (-1);┆
0x07f940…07f960             0a 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 66 6f 72 73 74 6f 72 65 29 3b 0a 28 2a 74 79 70   ┆  out_label (id_forstore); (*typ┆
0x07f960…07f980             65 5f 76 20 3d 20 62 79 74 65 5f 74 79 70 20 6f 72 20 77 6f 72 64 5f 74 79 70 2a 29 0a 77 69 74   ┆e_v = byte_typ or word_typ*) wit┆
0x07f980…07f9a0             68 20 76 5f 6c 20 64 6f 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 5b 63 6f 6e 76 5f   ┆h v_l do out_op_int(op_stv[conv_┆
0x07f9a0…07f9c0             66 72 61 6d 65 5b 61 63 63 65 73 73 5d 2c 63 6f 6e 76 5f 74 79 70 65 5b 74 79 70 65 5f 76 5d 5d   ┆frame[access],conv_type[type_v]]┆
0x07f9c0…07f9e0             2c 6f 66 66 73 65 74 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 73 74 61 74 65   ┆,offset);  get_token; find_state┆
0x07f9e0…07fa00             6d 65 6e 74 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 66 6f 72 29 3b 0a 6f 75 74 5f   ┆ment; skip_token (xendfor); out_┆
0x07fa00…07fa20 (34, 0, 2)  6c 61 62 65 6c 28 69 64 5f 66 6f 72 63 6f 6e 74 29 3b 0a 0a 69 66 20 76 5f 6c 2e 61 63 63 65 73   ┆label(id_forcont);  if v_l.acces┆
0x07fa20…07fa40             73 20 3d 20 73 5f 66 72 61 6d 65 20 74 68 65 6e 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63   ┆s = s_frame then  begin  out_opc┆
0x07fa40…07fa60             6f 64 65 28 20 6f 70 5f 72 65 76 6c 61 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d   ┆ode( op_revla ); out_start_param┆
0x07fa60…07fa80             3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f 66 66 73 65 74 20 29 3b 0a 6f 75 74 5f 63 6f   ┆;  out_integer( offset ); out_co┆
0x07fa80…07faa0             6d 6d 65 6e 74 28 20 27 20 20 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 63 6f 6e 74 72 2e 20   ┆mment( '   increment the contr. ┆
0x07faa0…07fac0             76 61 72 2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 64 20   ┆var. ' );  out_opcode( op_revpd ┆
0x07fac0…07fae0             29 3b 0a 0a 65 6e 64 3b 0a 28 2a 74 79 70 65 5f 76 20 69 73 20 65 69 74 68 65 72 20 62 79 74 65   ┆);  end; (*type_v is either byte┆
0x07fae0…07fb00             5f 74 79 70 20 6f 72 20 77 6f 72 64 5f 74 79 70 2a 29 0a 77 69 74 68 20 76 5f 6c 20 64 6f 0a 6f   ┆_typ or word_typ*) with v_l do o┆
0x07fb00…07fb20             75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 5b 63 6f 6e 76 5f 66 72 61 6d 65 5b 61 63 63 65   ┆ut_op_int(op_rev[conv_frame[acce┆
0x07fb20…07fb40             73 73 5d 2c 63 6f 6e 76 5f 74 79 70 65 5b 74 79 70 65 5f 76 5d 5d 2c 6f 66 66 73 65 74 29 3b 0a   ┆ss],conv_type[type_v]],offset); ┆
0x07fb40…07fb60             0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 0a 6f 75 74 5f 6f 70   ┆ out_opcode( op_revpw );  out_op┆
0x07fb60…07fb80             63 6f 64 65 28 20 6f 70 5f 72 65 76 6c 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61   ┆code( op_revlw ); out_start_para┆
0x07fb80…07fba0             6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 77 5f 6f 66 66 73 65 74 29 3b 0a 69 66 20 6d 6f   ┆m;  out_integer(w_offset); if mo┆
0x07fba0…07fbc0             64 65 20 3d 20 31 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 20 6f 70 5f 6c 74 20 29   ┆de = 1 then out_opcode ( op_lt )┆
0x07fbc0…07fbe0             0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 20 6f 70 5f 67 74 20 29 3b 0a 6f 75 74 5f   ┆ else out_opcode ( op_gt ); out_┆
0x07fbe0…07fc00             63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 63 68 65 63 6b 20 69 66 20 6c 69 6d 69 74 20 69 73 20 72   ┆comment( '   check if limit is r┆
0x07fc00…07fc20 (34, 0, 3)  65 61 63 68 65 64 2e 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 7a 67   ┆eached. ' ); out_op_id  (op_jmzg┆
0x07fc20…07fc40             74 2c 20 69 64 5f 66 6f 72 72 65 70 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 66 6f 72   ┆t, id_forrep); out_label (id_for┆
0x07fc40…07fc60             65 78 69 74 29 3b 0a 0a 69 66 20 76 5f 6c 2e 61 63 63 65 73 73 20 3c 3e 20 73 5f 66 72 61 6d 65   ┆exit);  if v_l.access <> s_frame┆
0x07fc60…07fc80             20 74 68 65 6e 0a 72 65 6d 61 69 6e 64 65 72 20 3a 3d 20 32 0a 65 6c 73 65 0a 72 65 6d 61 69 6e   ┆ then remainder := 2 else remain┆
0x07fc80…07fca0             64 65 72 20 3a 3d 20 36 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 74 6e 68   ┆der := 6; out_specopcode(op_stnh┆
0x07fca0…07fcc0             62 2c 2d 72 65 6d 61 69 6e 64 65 72 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 6c 6f 6f   ┆b,-remainder); out_label (id_loo┆
0x07fcc0…07fce0             70 65 78 69 74 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64   ┆pexit);  out_nl; out_token (zend┆
0x07fce0…07fd00             29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 66 6f 72 5f 73   ┆); out_comment( '   end of for_s┆
0x07fd00…07fd20             74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 66   ┆tatement. ' );   end  (*  find_f┆
0x07fd20…07fd40             6f 72 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 63 68 61 6e 6e   ┆or  *);    procedure  find_chann┆
0x07fd40…07fd60             65 6c 3b 0a 0a 76 61 72 0a 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 0a 62 65 67   ┆el;  var v : varaddr_descr;  beg┆
0x07fd60…07fd80             69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f 72 65 76 67   ┆in get_token; out_op_id (op_revg┆
0x07fd80…07fda0             62 2c 20 69 64 5f 6c 65 76 65 6c 29 3b 20 20 28 2a 20 73 61 76 65 20 6f 6c 64 6c 65 76 65 6c 20   ┆b, id_level);  (* save oldlevel ┆
0x07fda0…07fdc0             2a 29 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 29 3b 0a 6c 6f 61 64 5f 61 64 64 72 65 73   ┆*) find_varaddr( v); load_addres┆
0x07fdc0…07fde0             73 20 28 76 2c 20 74 72 75 65 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 76 70 64   ┆s (v, true); out_opcode(op_revpd┆
0x07fde0…07fe00             29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 6c 72 65 73 65 29 3b 0a 6f 75 74 5f 6f 70   ┆); out_opcode (op_lrese); out_op┆
0x07fe00…07fe20 (34, 0, 4)  63 6f 64 65 20 28 6f 70 5f 72 65 76 70 64 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70   ┆code (op_revpd);  out_opcode( op┆
0x07fe20…07fe40             5f 69 6f 63 64 61 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 63 73 65 6c 6c 20   ┆_iocda );  out_opcode( op_csell ┆
0x07fe40…07fe60             29 3b 0a 20 20 20 6f 75 74 5f 72 65 73 74 61 20 28 30 29 3b 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e   ┆);    out_resta (0);  skip_token┆
0x07fe60…07fe80             20 28 78 63 68 61 6e 76 61 72 29 3b 0a 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 73 6b 69   ┆ (xchanvar); find_statement; ski┆
0x07fe80…07fea0             70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 63 68 61 6e 6e 65 6c 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64   ┆p_token (xendchannel); out_opcod┆
0x07fea0…07fec0             65 28 6f 70 5f 6c 72 65 6c 65 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 63 73 65   ┆e(op_lrele);  out_opcode( op_cse┆
0x07fec0…07fee0             6c 6c 20 29 3b 20 20 28 2a 20 72 65 73 74 6f 72 65 20 6f 6c 64 6c 65 76 65 6c 20 2a 29 0a 0a 65   ┆ll );  (* restore oldlevel *)  e┆
0x07fee0…07ff00             6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 63 68 61 6e 6e 65 6c 20 20 2a 29 3b 0a 0a 0a 0a 0a 70 72   ┆nd  (*  find_channel  *);     pr┆
0x07ff00…07ff20             6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 63 61 73 65 3b 0a 0a 76 61 72 0a 66 69 72 73 74 5f 65   ┆ocedure  find_case;  var first_e┆
0x07ff20…07ff40             6e 74 72 79 2c 20 6c 61 73 74 5f 65 6e 74 72 79 3a 20 63 61 73 65 5f 74 61 62 6c 65 5f 70 74 72   ┆ntry, last_entry: case_table_ptr┆
0x07ff40…07ff60             3b 20 28 2a 20 6c 69 73 74 20 6f 66 20 63 61 73 65 20 74 61 62 6c 65 20 65 6e 74 72 69 65 73 20   ┆; (* list of case table entries ┆
0x07ff60…07ff80             2a 29 0a 76 5f 72 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 66 69 72 73 74 2c 20   ┆*) v_r : varvalue_descr; first, ┆
0x07ff80…07ffa0             6c 61 73 74 20 2c 20 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 20 3a 20 69 6e 74 65 67   ┆last , contents_of_table : integ┆
0x07ffa0…07ffc0             65 72 3b 0a 6f 74 68 65 72 77 69 73 65 5f 66 6f 75 6e 64 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a   ┆er; otherwise_found : boolean;  ┆
0x07ffc0…07ffe0             0a 70 72 6f 63 65 64 75 72 65 20 20 61 64 64 5f 74 6f 5f 74 61 62 6c 65 28 20 66 2c 20 6c 20 3a   ┆ procedure  add_to_table( f, l :┆
0x07ffe0…080000             20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 0a 69 2c 6a 20 3a 20 69 6e 74 65 67 65 72 3b 0a 63 75   ┆ integer); var i,j : integer; cu┆
0x080000…080020 (34, 0, 5)  72 5f 65 6e 74 72 79 2c 20 68 65 6c 70 5f 65 6e 74 72 79 3a 20 63 61 73 65 5f 74 61 62 6c 65 5f   ┆r_entry, help_entry: case_table_┆
0x080020…080040             70 74 72 3b 0a 62 65 67 69 6e 0a 63 75 72 5f 65 6e 74 72 79 3a 3d 20 6c 61 73 74 5f 65 6e 74 72   ┆ptr; begin cur_entry:= last_entr┆
0x080040…080060             79 3b 0a 69 3a 3d 20 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 3b 20 28 2a 20 6e 75 6d   ┆y; i:= contents_of_table; (* num┆
0x080060…080080             62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 2a 29 0a 0a 28 2a 20 63 72 65 61 74 65 20 72 61   ┆ber of elements *)  (* create ra┆
0x080080…0800a0             6e 67 65 20 64 65 73 63 72 69 70 74 6f 72 20 61 6e 64 20 69 6e 73 65 72 74 20 69 74 20 69 6e 74   ┆nge descriptor and insert it int┆
0x0800a0…0800c0             6f 20 74 68 65 20 73 6f 72 74 65 64 20 6c 69 73 74 20 6f 66 20 63 61 73 65 20 74 61 62 6c 65 20   ┆o the sorted list of case table ┆
0x0800c0…0800e0             65 6e 74 72 69 65 73 20 2a 29 0a 77 68 69 6c 65 20 28 69 3e 30 29 20 61 6e 64 20 28 63 75 72 5f   ┆entries *) while (i>0) and (cur_┆
0x0800e0…080100             65 6e 74 72 79 5e 2e 6c 61 73 74 3e 66 29 20 64 6f 20 28 2a 20 73 65 61 72 63 68 20 66 72 6f 6d   ┆entry^.last>f) do (* search from┆
0x080100…080120             20 68 69 67 68 20 65 6e 64 20 2a 29 0a 62 65 67 69 6e 20 0a 69 3a 3d 20 69 2d 31 3b 0a 63 75 72   ┆ high end *) begin  i:= i-1; cur┆
0x080120…080140             5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e 74 72 79 5e 2e 66 6f 72 6d 65 72 5f 65 6e 74 72 79   ┆_entry:= cur_entry^.former_entry┆
0x080140…080160             3b 0a 65 6e 64 3b 0a 0a 69 66 20 28 63 75 72 5f 65 6e 74 72 79 3d 6e 69 6c 29 20 61 6e 64 20 28   ┆; end;  if (cur_entry=nil) and (┆
0x080160…080180             66 69 72 73 74 5f 65 6e 74 72 79 3c 3e 6e 69 6c 29 20 61 6e 64 20 28 66 69 72 73 74 5f 65 6e 74   ┆first_entry<>nil) and (first_ent┆
0x080180…0801a0             72 79 5e 2e 66 69 72 73 74 3c 3d 6c 29 20 6f 72 0a 28 63 75 72 5f 65 6e 74 72 79 3c 3e 6e 69 6c   ┆ry^.first<=l) or (cur_entry<>nil┆
0x0801a0…0801c0             29 20 61 6e 64 20 28 28 63 75 72 5f 65 6e 74 72 79 5e 2e 6c 61 73 74 3d 66 29 20 6f 72 0a 28 63   ┆) and ((cur_entry^.last=f) or (c┆
0x0801c0…0801e0             75 72 5f 65 6e 74 72 79 3c 3e 6c 61 73 74 5f 65 6e 74 72 79 29 20 61 6e 64 20 28 63 75 72 5f 65   ┆ur_entry<>last_entry) and (cur_e┆
0x0801e0…080200             6e 74 72 79 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 5e 2e 66 69 72 73 74 3c 3d 6c 29 29 20 74 68 65   ┆ntry^.next_entry^.first<=l)) the┆
0x080200…080220 (34, 0, 6)  6e 0a 65 72 72 6f 72 20 28 63 61 73 65 5f 6c 61 62 65 6c 5f 65 72 72 6f 72 29 0a 65 6c 73 65 0a   ┆n error (case_label_error) else ┆
0x080220…080240             62 65 67 69 6e 20 28 2a 20 74 68 65 20 65 6e 74 72 79 20 69 73 20 6f 6b 20 2a 29 0a 28 2a 20 6e   ┆begin (* the entry is ok *) (* n┆
0x080240…080260             6f 77 20 69 6e 73 65 72 74 20 61 20 6e 65 77 20 65 6e 74 72 79 20 61 66 74 65 72 20 63 75 72 5f   ┆ow insert a new entry after cur_┆
0x080260…080280             65 6e 74 72 79 20 2a 29 0a 69 66 20 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3d 6e 69   ┆entry *) if case_tab_freelist=ni┆
0x080280…0802a0             6c 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 61 6c 6c 6f 63 61 74 65 20 61 6e 20 65 6c 65 6d   ┆l then begin (* allocate an elem┆
0x0802a0…0802c0             65 6e 74 20 74 6f 20 74 68 65 20 66 72 65 65 20 6c 69 73 74 20 2a 29 0a 6e 65 77 28 63 61 73 65   ┆ent to the free list *) new(case┆
0x0802c0…0802e0             5f 74 61 62 5f 66 72 65 65 6c 69 73 74 29 3b 0a 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73   ┆_tab_freelist); case_tab_freelis┆
0x0802e0…080300             74 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3a 3d 20 6e 69 6c 3b 0a 65 6e 64 3b 0a 0a 69 66 20 63 75   ┆t^.next_entry:= nil; end;  if cu┆
0x080300…080320             72 5f 65 6e 74 72 79 3d 6e 69 6c 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 69 6e 73 65 72 74   ┆r_entry=nil then begin (* insert┆
0x080320…080340             20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 6c 69 73 74 20 2a 29 0a 63 75 72 5f 65 6e 74 72 79 3a 3d   ┆ in front of list *) cur_entry:=┆
0x080340…080360             20 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3b 0a 63 61 73 65 5f 74 61 62 5f 66 72 65   ┆ case_tab_freelist; case_tab_fre┆
0x080360…080380             65 6c 69 73 74 3a 3d 20 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 5e 2e 6e 65 78 74 5f   ┆elist:= case_tab_freelist^.next_┆
0x080380…0803a0             65 6e 74 72 79 3b 0a 63 75 72 5f 65 6e 74 72 79 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3a 3d 20 66   ┆entry; cur_entry^.next_entry:= f┆
0x0803a0…0803c0             69 72 73 74 5f 65 6e 74 72 79 3b 0a 69 66 20 66 69 72 73 74 5f 65 6e 74 72 79 3d 6e 69 6c 20 74   ┆irst_entry; if first_entry=nil t┆
0x0803c0…0803e0             68 65 6e 20 20 28 2a 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 2a 29 0a 62 65 67 69 6e 0a 6c   ┆hen  (* first element *) begin l┆
0x0803e0…080400             61 73 74 5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e 74 72 79 3b 0a 6c 61 73 74 5f 65 6e 74 72   ┆ast_entry:= cur_entry; last_entr┆
0x080400…080420 (34, 0, 7)  79 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3a 3d 20 6e 69 6c 3b 0a 65 6e 64 0a 65 6c 73 65 0a 66 69   ┆y^.next_entry:= nil; end else fi┆
0x080420…080440             72 73 74 5f 65 6e 74 72 79 5e 2e 66 6f 72 6d 65 72 5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e   ┆rst_entry^.former_entry:= cur_en┆
0x080440…080460             74 72 79 3b 0a 66 69 72 73 74 5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e 74 72 79 3b 0a 63 75   ┆try; first_entry:= cur_entry; cu┆
0x080460…080480             72 5f 65 6e 74 72 79 5e 2e 66 6f 72 6d 65 72 5f 65 6e 74 72 79 3a 3d 20 6e 69 6c 3b 0a 65 6e 64   ┆r_entry^.former_entry:= nil; end┆
0x080480…0804a0             0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 6e 6f 74 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 6c   ┆ else begin (* not in front of l┆
0x0804a0…0804c0             69 73 74 20 2a 29 0a 68 65 6c 70 5f 65 6e 74 72 79 3a 3d 20 63 61 73 65 5f 74 61 62 5f 66 72 65   ┆ist *) help_entry:= case_tab_fre┆
0x0804c0…0804e0             65 6c 69 73 74 3b 0a 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3a 3d 20 63 61 73 65 5f   ┆elist; case_tab_freelist:= case_┆
0x0804e0…080500             74 61 62 5f 66 72 65 65 6c 69 73 74 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3b 0a 68 65 6c 70 5f 65   ┆tab_freelist^.next_entry; help_e┆
0x080500…080520             6e 74 72 79 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e 74 72 79 5e 2e 6e 65   ┆ntry^.next_entry:= cur_entry^.ne┆
0x080520…080540             78 74 5f 65 6e 74 72 79 3b 0a 63 75 72 5f 65 6e 74 72 79 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3a   ┆xt_entry; cur_entry^.next_entry:┆
0x080540…080560             3d 20 68 65 6c 70 5f 65 6e 74 72 79 3b 0a 68 65 6c 70 5f 65 6e 74 72 79 5e 2e 66 6f 72 6d 65 72   ┆= help_entry; help_entry^.former┆
0x080560…080580             5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e 74 72 79 3b 0a 69 66 20 63 75 72 5f 65 6e 74 72 79   ┆_entry:= cur_entry; if cur_entry┆
0x080580…0805a0             3d 6c 61 73 74 5f 65 6e 74 72 79 20 74 68 65 6e 0a 6c 61 73 74 5f 65 6e 74 72 79 3a 3d 20 68 65   ┆=last_entry then last_entry:= he┆
0x0805a0…0805c0             6c 70 5f 65 6e 74 72 79 0a 65 6c 73 65 0a 68 65 6c 70 5f 65 6e 74 72 79 5e 2e 6e 65 78 74 5f 65   ┆lp_entry else help_entry^.next_e┆
0x0805c0…0805e0             6e 74 72 79 5e 2e 66 6f 72 6d 65 72 5f 65 6e 74 72 79 3a 3d 20 68 65 6c 70 5f 65 6e 74 72 79 3b   ┆ntry^.former_entry:= help_entry;┆
0x0805e0…080600             0a 63 75 72 5f 65 6e 74 72 79 3a 3d 20 68 65 6c 70 5f 65 6e 74 72 79 3b 0a 65 6e 64 3b 0a 0a 63   ┆ cur_entry:= help_entry; end;  c┆
0x080600…080620 (34, 0, 8)  6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 20 3a 3d 20 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f   ┆ontents_of_table := contents_of_┆
0x080620…080640             74 61 62 6c 65 20 2b 20 31 3b 0a 77 69 74 68 20 63 75 72 5f 65 6e 74 72 79 5e 20 64 6f 0a 62 65   ┆table + 1; with cur_entry^ do be┆
0x080640…080660             67 69 6e 0a 66 69 72 73 74 20 3a 3d 20 66 3b 0a 6c 61 73 74 20 20 3a 3d 20 6c 3b 0a 78 5f 69 6e   ┆gin first := f; last  := l; x_in┆
0x080660…080680             64 65 78 20 3a 3d 20 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 3b 0a 65 6e 64 3b 0a 6f   ┆dex := contents_of_table; end; o┆
0x080680…0806a0             75 74 5f 6c 69 78 5f 6c 61 62 65 6c 20 28 78 5f 6e 61 6d 65 2c 20 63 6f 6e 74 65 6e 74 73 5f 6f   ┆ut_lix_label (x_name, contents_o┆
0x0806a0…0806c0             66 5f 74 61 62 6c 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65   ┆f_table); end; end; (* procedure┆
0x0806c0…0806e0             20 61 64 64 2d 74 6f 2d 74 61 62 6c 65 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 6f 75   ┆ add-to-table *)   procedure  ou┆
0x0806e0…080700             74 5f 74 61 62 6c 65 3b 0a 0a 76 61 72 0a 63 75 72 5f 65 6e 74 72 79 3a 20 63 61 73 65 5f 74 61   ┆t_table;  var cur_entry: case_ta┆
0x080700…080720             62 6c 65 5f 70 74 72 3b 0a 69 2c 20 6a 2c 20 6d 69 6e 2c 20 6d 61 78 2c 20 6e 65 78 74 20 3a 20   ┆ble_ptr; i, j, min, max, next : ┆
0x080720…080740             69 6e 74 65 67 65 72 3b 0a 70 6f 73 69 74 69 6f 6e 5f 66 6f 75 6e 64 20 3a 20 62 6f 6f 6c 65 61   ┆integer; position_found : boolea┆
0x080740…080760             6e 3b 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 20 6f 75 74 70 75 74 20 74 68 65 20 73 6f 72 74 65 64   ┆n;  begin  (*  output the sorted┆
0x080760…080780             20 74 61 62 6c 65 20 61 73 20 61 20 73 69 6e 67 6c 65 20 63 6f 6e 73 74 61 6e 74 20 3a 20 20 2a   ┆ table as a single constant :  *┆
0x080780…0807a0             29 0a 69 66 20 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 20 3c 3d 20 30 20 74 68 65 6e   ┆) if contents_of_table <= 0 then┆
0x0807a0…0807c0             0a 62 65 67 69 6e 20 28 2a 20 65 6d 70 74 79 20 63 61 73 65 2d 74 61 62 6c 65 2c 20 73 69 6d 75   ┆ begin (* empty case-table, simu┆
0x0807c0…0807e0             6c 61 74 65 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 20 63 61 73 65 2d 72 61 6e 67 65 21 20 2a 29   ┆late inconsistent case-range! *)┆
0x0807e0…080800             0a 6d 69 6e 20 3a 3d 20 31 3b 0a 6d 61 78 20 3a 3d 20 30 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65   ┆ min := 1; max := 0; end else be┆
0x080800…080820 (34, 0, 9)  67 69 6e 0a 6d 69 6e 20 3a 3d 20 66 69 72 73 74 5f 65 6e 74 72 79 5e 2e 66 69 72 73 74 3b 0a 6d   ┆gin min := first_entry^.first; m┆
0x080820…080840             61 78 20 3a 3d 20 6c 61 73 74 5f 65 6e 74 72 79 5e 2e 6c 61 73 74 3b 0a 65 6e 64 3b 0a 0a 6f 75   ┆ax := last_entry^.last; end;  ou┆
0x080840…080860             74 5f 6c 61 62 65 6c 28 20 69 64 5f 63 61 73 65 74 61 62 20 29 3b 20 20 20 6f 75 74 5f 74 61 62   ┆t_label( id_casetab );   out_tab┆
0x080860…080880             28 20 31 35 20 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 63 6f 6e 73 74 29 3b 0a 6f 75 74 5f 69   ┆( 15 ); out_token(zconst); out_i┆
0x080880…0808a0             6e 74 65 67 65 72 28 20 28 6d 61 78 20 2d 20 6d 69 6e 20 2b 20 31 29 20 2a 20 70 6f 69 6e 74 65   ┆nteger( (max - min + 1) * pointe┆
0x0808a0…0808c0             72 5f 6c 65 6e 67 74 68 20 2b 20 32 2a 77 6f 72 64 5f 6c 65 6e 67 74 68 20 2b 20 70 6f 69 6e 74   ┆r_length + 2*word_length + point┆
0x0808c0…0808e0             65 72 5f 6c 65 6e 67 74 68 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 74 61   ┆er_length); out_comment( '   sta┆
0x0808e0…080900             72 74 20 6f 66 20 63 61 73 65 5f 6a 75 6d 70 20 74 61 62 6c 65 2e 20 27 20 29 3b 0a 6f 75 74 5f   ┆rt of case_jump table. ' ); out_┆
0x080900…080920             6e 6c 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 64 6f 6c 6c 61 72 5f 69 29 3b 20 6f 75 74 5f 69 6e   ┆nl; out_token (dollar_i); out_in┆
0x080920…080940             74 65 67 65 72 20 28 6d 69 6e 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28   ┆teger (min); out_nl; out_token (┆
0x080940…080960             64 6f 6c 6c 61 72 5f 69 29 3b 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 6d 61 78 29 3b 0a 6f 75   ┆dollar_i); out_integer (max); ou┆
0x080960…080980             74 5f 6e 6c 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 64 6f 6c 6c 61 72 5f 61 29 3b 20 6f 75 74 5f   ┆t_nl; out_token (dollar_a); out_┆
0x080980…0809a0             69 64 65 6e 74 69 66 69 65 72 20 28 69 64 5f 6f 74 68 65 72 77 69 73 65 29 3b 0a 0a 0a 6e 65 78   ┆identifier (id_otherwise);   nex┆
0x0809a0…0809c0             74 20 3a 3d 20 6d 69 6e 3b 0a 63 75 72 5f 65 6e 74 72 79 3a 3d 20 66 69 72 73 74 5f 65 6e 74 72   ┆t := min; cur_entry:= first_entr┆
0x0809c0…0809e0             79 3b 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62   ┆y; for i := 1 to contents_of_tab┆
0x0809e0…080a00             6c 65 20 64 6f 0a 77 69 74 68 20 63 75 72 5f 65 6e 74 72 79 5e 20 64 6f 0a 62 65 67 69 6e 0a 0a   ┆le do with cur_entry^ do begin  ┆
0x080a00…080a20 (34, 0, 10) 77 68 69 6c 65 20 6e 65 78 74 20 3c 20 66 69 72 73 74 20 64 6f 0a 62 65 67 69 6e 0a 6f 75 74 5f   ┆while next < first do begin out_┆
0x080a20…080a40             6e 6c 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 64 6f 6c 6c 61 72 5f 61 29 3b 20 6f 75 74 5f 69 64   ┆nl; out_token (dollar_a); out_id┆
0x080a40…080a60             65 6e 74 69 66 69 65 72 20 28 69 64 5f 6f 74 68 65 72 77 69 73 65 29 3b 0a 6e 65 78 74 20 3a 3d   ┆entifier (id_otherwise); next :=┆
0x080a60…080a80             20 6e 65 78 74 20 2b 20 31 0a 0a 65 6e 64 3b 0a 0a 77 68 69 6c 65 20 6e 65 78 74 20 3c 3d 20 6c   ┆ next + 1  end;  while next <= l┆
0x080a80…080aa0             61 73 74 20 64 6f 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28   ┆ast do begin out_nl; out_token (┆
0x080aa0…080ac0             64 6f 6c 6c 61 72 5f 61 29 3b 20 6f 75 74 5f 6c 69 78 20 28 78 5f 6e 61 6d 65 2c 20 78 5f 69 6e   ┆dollar_a); out_lix (x_name, x_in┆
0x080ac0…080ae0             64 65 78 29 3b 0a 6e 65 78 74 20 3a 3d 20 6e 65 78 74 20 2b 20 31 0a 0a 65 6e 64 3b 0a 63 75 72   ┆dex); next := next + 1  end; cur┆
0x080ae0…080b00             5f 65 6e 74 72 79 3a 3d 20 6e 65 78 74 5f 65 6e 74 72 79 3b 0a 65 6e 64 3b 20 28 2a 20 66 6f 72   ┆_entry:= next_entry; end; (* for┆
0x080b00…080b20             20 69 20 2e 2e 2e 20 77 69 74 68 20 63 75 72 20 2e 2e 2e 20 2a 29 0a 0a 6f 75 74 5f 6e 6c 3b 20   ┆ i ... with cur ... *)  out_nl; ┆
0x080b20…080b40             20 20 6f 75 74 5f 74 61 62 28 20 31 35 20 29 3b 20 20 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65   ┆  out_tab( 15 );   out_token (ze┆
0x080b40…080b60             6e 64 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 63 61 73   ┆nd); out_comment( '   end of cas┆
0x080b60…080b80             65 5f 6a 75 6d 70 20 74 61 62 6c 65 2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 0a 28 2a 20   ┆e_jump table. ' );  out_nl;  (* ┆
0x080b80…080ba0             72 65 74 75 72 6e 20 63 61 73 65 20 65 6e 74 72 79 20 64 65 73 63 72 69 70 74 6f 72 73 20 74 6f   ┆return case entry descriptors to┆
0x080ba0…080bc0             20 63 61 73 65 20 74 61 62 20 66 72 65 65 6c 69 73 74 20 2a 29 0a 69 66 20 66 69 72 73 74 5f 65   ┆ case tab freelist *) if first_e┆
0x080bc0…080be0             6e 74 72 79 3c 3e 6e 69 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 61 73 74 5f 65 6e 74 72 79 5e   ┆ntry<>nil then begin last_entry^┆
0x080be0…080c00             2e 6e 65 78 74 5f 65 6e 74 72 79 3a 3d 20 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3b   ┆.next_entry:= case_tab_freelist;┆
0x080c00…080c20 (34, 0, 11) 0a 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3a 3d 20 66 69 72 73 74 5f 65 6e 74 72 79   ┆ case_tab_freelist:= first_entry┆
0x080c20…080c40             3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 6f 75 74 20 74 61 62 6c 65 20 2a 29 0a 0a 62 65 67   ┆; end; end; (* out table *)  beg┆
0x080c40…080c60             69 6e 0a 0a 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 20 3a 3d 20 30 3b 0a 66 69 72 73   ┆in  contents_of_table := 0; firs┆
0x080c60…080c80             74 5f 65 6e 74 72 79 3a 3d 20 6e 69 6c 3b 0a 6c 61 73 74 5f 65 6e 74 72 79 3a 3d 20 6e 69 6c 3b   ┆t_entry:= nil; last_entry:= nil;┆
0x080c80…080ca0             0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74   ┆ out_nl; out_token (zbegin); out┆
0x080ca0…080cc0             5f 70 5f 69 64 20 28 69 64 5f 63 61 73 65 74 61 62 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64   ┆_p_id (id_casetab); out_p_id (id┆
0x080cc0…080ce0             5f 6f 74 68 65 72 77 69 73 65 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 63 61 73 65 65 78   ┆_otherwise); out_p_id (id_caseex┆
0x080ce0…080d00             69 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 78 31 32 5f 6e 61 6d 65 29 3b 20 20 6f 75 74 5f 63   ┆it); out_p_id (x12_name);  out_c┆
0x080d00…080d20             68 61 72 28 27 23 27 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a   ┆har('#'); out_token (zendlist); ┆
0x080d20…080d40             0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 76 5f 72 29 3b 0a 0a 69   ┆ get_token; find_exprs( v_r);  i┆
0x080d40…080d60             66 20 28 20 76 5f 72 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 0a 20 20 20 28 20 28 20 76 5f   ┆f ( v_r.kind <> 1 ) or    ( ( v_┆
0x080d60…080d80             72 2e 73 69 7a 65 20 3e 3d 20 30 20 29 20 61 6e 64 20 28 20 76 5f 72 2e 73 69 7a 65 20 3c 3e 20   ┆r.size >= 0 ) and ( v_r.size <> ┆
0x080d80…080da0             32 20 29 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72   ┆2 ) ) then error(pass4code_error┆
0x080da0…080dc0             29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 63 68 74 2c 20 69 64 5f 63 61 73 65   ┆); out_op_id  (op_jmcht, id_case┆
0x080dc0…080de0             74 61 62 29 3b 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 63 61 73 65 29 3b 0a 0a 6f 74 68 65   ┆tab);  skip_token (xcase);  othe┆
0x080de0…080e00             72 77 69 73 65 5f 66 6f 75 6e 64 20 3a 3d 20 66 61 6c 73 65 3b 0a 0a 77 68 69 6c 65 20 20 74 6f   ┆rwise_found := false;  while  to┆
0x080e00…080e20 (34, 0, 12) 6b 65 6e 20 3c 3e 20 78 65 6e 64 63 61 73 65 20 64 6f 0a 62 65 67 69 6e 0a 0a 72 65 70 65 61 74   ┆ken <> xendcase do begin  repeat┆
0x080e20…080e40             20 0a 0a 63 61 73 65 20 20 74 6f 6b 65 6e 20 20 6f 66 0a 0a 78 63 61 73 65 6c 61 62 65 6c 20 3a   ┆   case  token  of  xcaselabel :┆
0x080e40…080e60             0a 62 65 67 69 6e 0a 0a 66 69 72 73 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 61 73   ┆ begin  first := in_integer; las┆
0x080e60…080e80             74 20 3a 3d 20 66 69 72 73 74 3b 0a 0a 61 64 64 5f 74 6f 5f 74 61 62 6c 65 28 20 66 69 72 73 74   ┆t := first;  add_to_table( first┆
0x080e80…080ea0             2c 20 6c 61 73 74 29 3b 0a 0a 65 6e 64 3b 0a 0a 78 63 61 73 65 72 61 6e 67 65 20 3a 0a 62 65 67   ┆, last);  end;  xcaserange : beg┆
0x080ea0…080ec0             69 6e 0a 0a 66 69 72 73 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 61 73 74 20 3a 3d   ┆in  first := in_integer; last :=┆
0x080ec0…080ee0             20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 69 66 20 6c 61 73 74 20 3c 20 66 69 72 73 74 20 74 68   ┆ in_integer;  if last < first th┆
0x080ee0…080f00             65 6e 20 20 65 72 72 6f 72 28 63 61 73 65 5f 6c 61 62 65 6c 5f 65 72 72 6f 72 29 3b 0a 0a 61 64   ┆en  error(case_label_error);  ad┆
0x080f00…080f20             64 5f 74 6f 5f 74 61 62 6c 65 28 20 66 69 72 73 74 2c 20 6c 61 73 74 29 3b 0a 0a 65 6e 64 3b 0a   ┆d_to_table( first, last);  end; ┆
0x080f20…080f40             0a 78 6f 74 68 65 72 77 69 73 65 20 3a 0a 62 65 67 69 6e 0a 0a 69 66 20 6f 74 68 65 72 77 69 73   ┆ xotherwise : begin  if otherwis┆
0x080f40…080f60             65 5f 66 6f 75 6e 64 20 74 68 65 6e 20 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72   ┆e_found then  error(pass4code_er┆
0x080f60…080f80             72 6f 72 29 3b 0a 0a 6f 74 68 65 72 77 69 73 65 5f 66 6f 75 6e 64 20 3a 3d 20 74 72 75 65 3b 0a   ┆ror);  otherwise_found := true; ┆
0x080f80…080fa0             0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 6f 74 68 65 72 77 69 73 65 20 29 3b 0a 0a 65 6e 64   ┆ out_label( id_otherwise );  end┆
0x080fa0…080fc0             3b 0a 0a 65 6c 73 65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a   ┆;  else error(pass4code_error); ┆
0x080fc0…080fe0             0a 65 6e 64 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 75 6e 74 69 6c 20 28 20 74 6f 6b 65 6e   ┆ end;  get_token;  until ( token┆
0x080fe0…081000             20 3d 20 78 65 6e 64 63 61 73 65 6c 69 73 74 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66   ┆ = xendcaselist );  get_token; f┆
0x081000…081020 (34, 0, 13) 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 63   ┆ind_statement; skip_token (xendc┆
0x081020…081040             61 73 65 73 74 61 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 70 72 77 2c 20   ┆asestat); out_op_id  (op_jmprw, ┆
0x081040…081060             69 64 5f 63 61 73 65 65 78 69 74 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 6f 74 20 6f 74 68   ┆id_caseexit);  end;   if not oth┆
0x081060…081080             65 72 77 69 73 65 5f 66 6f 75 6e 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6c 61 62   ┆erwise_found then begin  out_lab┆
0x081080…0810a0             65 6c 28 20 69 64 5f 6f 74 68 65 72 77 69 73 65 20 29 3b 0a 0a 63 6f 64 65 5f 65 78 63 5f 74 72   ┆el( id_otherwise );  code_exc_tr┆
0x0810a0…0810c0             69 67 67 65 72 28 20 63 5f 65 78 63 5f 63 61 73 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28   ┆igger( c_exc_case); out_op_id  (┆
0x0810c0…0810e0             6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 63 61 73 65 65 78 69 74 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a   ┆op_jmprw, id_caseexit);  end;   ┆
0x0810e0…081100             6f 75 74 5f 74 61 62 6c 65 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 63 61 73 65 65 78 69   ┆out_table; out_label (id_caseexi┆
0x081100…081120             74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 0a 67   ┆t); out_nl; out_token (zend);  g┆
0x081120…081140             65 74 5f 74 6f 6b 65 6e 3b 0a 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 63 61 73 65 20 20   ┆et_token;   end  (*  find_case  ┆
0x081140…081160             2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b   ┆*);    procedure find_statement;┆
0x081160…081180             0a 76 61 72 0a 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 2c 20 6f 6c   ┆ var size_of_function_result, ol┆
0x081180…0811a0             64 73 74 61 63 6b 20 3a 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64 5f 73 74 61 74 20 3a 20 62 6f 6f   ┆dstack : integer; end_stat : boo┆
0x0811a0…0811c0             6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 0a 65 6e 64 5f 73 74 61 74 20 3a 3d 20 66 61 6c 73 65 3b 0a   ┆lean; begin  end_stat := false; ┆
0x0811c0…0811e0             72 65 70 65 61 74 0a 6f 6c 64 73 74 61 63 6b 20 3a 3d 20 63 2e 73 74 61 63 6b 5f 73 69 7a 65 3b   ┆repeat oldstack := c.stack_size;┆
0x0811e0…081200             0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 61 73 73 69 67 6e 73 74 61 74 3a 20 20 20 66 69   ┆ case token of xassignstat:   fi┆
0x081200…081220 (34, 0, 14) 6e 64 5f 61 73 73 69 67 6e 3b 0a 78 77 68 69 6c 65 3a 20 20 20 20 20 20 20 20 66 69 6e 64 5f 77   ┆nd_assign; xwhile:        find_w┆
0x081220…081240             68 69 6c 65 3b 0a 78 70 72 6f 63 63 61 6c 6c 2c 0a 78 65 78 74 70 72 6f 63 63 61 6c 6c 2c 0a 78   ┆hile; xproccall, xextproccall, x┆
0x081240…081260             70 72 6f 63 65 73 73 70 61 72 61 6d 3a 20 62 65 67 69 6e 0a 73 69 7a 65 5f 6f 66 5f 66 75 6e 63   ┆processparam: begin size_of_func┆
0x081260…081280             74 69 6f 6e 5f 72 65 73 75 6c 74 20 3a 3d 20 30 3b 0a 28 2a 20 75 73 65 64 20 62 79 20 66 69 6e   ┆tion_result := 0; (* used by fin┆
0x081280…0812a0             64 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 2c 20 63 68 61 6e 67 65 64 20 62 79 20 66 69 6e 64   ┆d process param, changed by find┆
0x0812a0…0812c0             20 61 72 67 6c 69 73 74 20 2a 29 0a 20 66 69 6e 64 5f 70 72 6f 63 5f 63 61 6c 6c 28 73 69 7a 65   ┆ arglist *)  find_proc_call(size┆
0x0812c0…0812e0             5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 29 3b 0a 65 6e 64 3b 0a 78 73 74 64 70   ┆_of_function_result); end; xstdp┆
0x0812e0…081300             72 6f 63 63 61 6c 6c 3a 20 20 66 69 6e 64 5f 73 74 64 5f 70 72 6f 63 63 61 6c 6c 3b 0a 78 6c 6f   ┆roccall:  find_std_proccall; xlo┆
0x081300…081320             63 6b 6d 65 73 73 74 61 74 2c 0a 78 6c 6f 63 6b 73 74 61 74 3a 20 20 20 20 20 66 69 6e 64 5f 6c   ┆ckmesstat, xlockstat:     find_l┆
0x081320…081340             6f 63 6b 3b 0a 78 77 69 74 68 73 74 61 74 3a 20 20 20 20 20 66 69 6e 64 5f 77 69 74 68 3b 0a 78   ┆ock; xwithstat:     find_with; x┆
0x081340…081360             65 78 63 68 73 74 61 74 3a 20 20 20 20 20 66 69 6e 64 5f 65 78 63 68 61 6e 67 65 3b 0a 78 64 65   ┆exchstat:     find_exchange; xde┆
0x081360…081380             66 6c 69 78 3a 20 20 20 20 20 20 20 66 69 6e 64 5f 6c 61 62 65 6c 3b 0a 78 67 6f 74 6f 3a 20 20   ┆flix:       find_label; xgoto:  ┆
0x081380…0813a0             20 20 20 20 20 20 20 66 69 6e 64 5f 67 6f 74 6f 3b 0a 78 69 66 73 74 61 74 3a 20 20 20 20 20 20   ┆       find_goto; xifstat:      ┆
0x0813a0…0813c0             20 66 69 6e 64 5f 69 66 3b 0a 78 72 65 70 65 61 74 3a 20 20 20 20 20 20 20 66 69 6e 64 5f 72 65   ┆ find_if; xrepeat:       find_re┆
0x0813c0…0813e0             70 65 61 74 3b 0a 78 6c 6f 6f 70 73 74 61 74 3a 20 20 20 20 20 66 69 6e 64 5f 6c 6f 6f 70 3b 0a   ┆peat; xloopstat:     find_loop; ┆
0x0813e0…081400             78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 2c 0a 78 65 78 69 74 6c 6f 6f 70 73 74 61 74 3a 20 66 69   ┆xcontloopstat, xexitloopstat: fi┆
0x081400…081420 (34, 0, 15) 6e 64 5f 6c 6f 6f 70 5f 67 6f 74 6f 28 74 6f 6b 65 6e 29 3b 0a 78 65 78 69 74 6c 6f 63 6b 3a 20   ┆nd_loop_goto(token); xexitlock: ┆
0x081420…081440             20 20 20 20 66 69 6e 64 5f 65 78 69 74 6c 6f 63 6b 3b 0a 78 65 78 69 74 73 74 61 74 3a 20 20 20   ┆    find_exitlock; xexitstat:   ┆
0x081440…081460             20 20 66 69 6e 64 5f 65 78 69 74 3b 0a 78 66 6f 72 73 74 61 74 3a 20 20 20 20 20 20 66 69 6e 64   ┆  find_exit; xforstat:      find┆
0x081460…081480             5f 66 6f 72 3b 0a 78 63 68 61 6e 6e 65 6c 3a 20 20 20 20 20 20 66 69 6e 64 5f 63 68 61 6e 6e 65   ┆_for; xchannel:      find_channe┆
0x081480…0814a0             6c 3b 0a 78 63 61 73 65 73 74 61 74 3a 20 20 20 20 20 66 69 6e 64 5f 63 61 73 65 3b 0a 65 6c 73   ┆l; xcasestat:     find_case; els┆
0x0814a0…0814c0             65 20 65 6e 64 5f 73 74 61 74 20 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 69 66 20 63 2e 73 74   ┆e end_stat := true; end; if c.st┆
0x0814c0…0814e0             61 63 6b 5f 73 69 7a 65 20 3c 3e 20 6f 6c 64 73 74 61 63 6b 20 74 68 65 6e 20 65 76 61 6c 73 74   ┆ack_size <> oldstack then evalst┆
0x0814e0…081500             61 63 6b 5f 65 72 72 6f 72 3b 0a 75 6e 74 69 6c 20 65 6e 64 5f 73 74 61 74 3b 0a 65 6e 64 3b 0a   ┆ack_error; until end_stat; end; ┆
0x081500…081520             0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 76 61 72 76 61 6c 75 65 28 20 76   ┆     procedure  find_varvalue( v┆
0x081520…081540             61 72 20 20 76 3a 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 0a 76 61 72 20 20 74 79 70   ┆ar  v:varvalue_descr);  var  typ┆
0x081540…081560             65 5f 76 2c 20 66 69 72 73 74 2c 20 6e 75 6d 62 65 72 2c 20 73 69 7a 65 2c 20 6e 69 76 2c 20 6f   ┆e_v, first, number, size, niv, o┆
0x081560…081580             66 66 73 65 74 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 61 63 63 65 73 73 20 3a 20 66 72 61 6d 65   ┆ffset  : integer; access : frame┆
0x081580…0815a0             5f 6b 69 6e 64 3b 0a 20 20 20 20 20 74 65 6d 70 6c 5f 76 2c 20 76 61 20 20 3a 20 76 61 72 61 64   ┆_kind;      templ_v, va  : varad┆
0x0815a0…0815c0             64 72 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 66 69 6e 64 5f 76 61 72   ┆dr_descr;  begin        find_var┆
0x0815c0…0815e0             61 64 64 72 28 20 76 61 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 76 61 2e 6b 69 6e 64 20 3d 20 70   ┆addr( va);        if va.kind = p┆
0x0815e0…081600             61 63 6b 65 64 5f 61 72 72 20 74 68 65 6e 0a 20 20 20 20 20 20 62 65 67 69 6e 0a 20 20 20 20 20   ┆acked_arr then       begin      ┆
0x081600…081620 (34, 1, 1)  20 20 20 20 28 2a 20 20 70 75 73 68 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 61 6e 20 65 6c 65   ┆    (*  push the value of an ele┆
0x081620…081640             6d 65 6e 74 20 69 6e 20 61 20 70 61 63 6b 65 64 20 61 72 72 61 79 20 3a 20 20 2a 29 0a 6f 75 74   ┆ment in a packed array :  *) out┆
0x081640…081660             5f 6f 70 63 6f 64 65 28 6f 70 5f 69 6e 74 70 61 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70   ┆_opcode(op_intpa); out_opcode(op┆
0x081660…081680             5f 69 6e 70 64 76 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 76 73 66 29 3b 0a 0a   ┆_inpdv); out_opcode(op_revsf);  ┆
0x081680…0816a0             20 20 20 20 20 20 20 20 20 20 76 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 76 2e 73 69 7a 65 20 3a   ┆          v.kind := 1;  v.size :┆
0x0816a0…0816c0             3d 20 32 0a 0a 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6c 73 65   ┆= 2        end              else┆
0x0816c0…0816e0             0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 69 6e 64 76 61 72 20 74 68 65 6e 0a 20 20 20 20 20 20   ┆  if token = xindvar then       ┆
0x0816e0…081700             62 65 67 69 6e 0a 0a 20 20 20 20 20 20 20 20 20 74 79 70 65 5f 76 20 3a 3d 20 69 6e 5f 69 6e 74   ┆begin           type_v := in_int┆
0x081700…081720             65 67 65 72 3b 0a 0a 20 20 20 20 20 20 20 20 20 69 66 20 74 79 70 65 5f 76 20 3d 20 66 69 65 6c   ┆eger;           if type_v = fiel┆
0x081720…081740             64 5f 74 79 70 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 62 65 67 69 6e 0a 66 69 72 73 74 20   ┆d_typ then          begin first ┆
0x081740…081760             3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 6e 75 6d 62 65 72 20 3a 3d 20 69 6e 5f 69 6e 74   ┆:= in_integer;  number := in_int┆
0x081760…081780             65 67 65 72 3b 0a 69 66 20 6e 75 6d 62 65 72 20 3d 20 38 20 74 68 65 6e 0a 62 65 67 69 6e 20 28   ┆eger; if number = 8 then begin (┆
0x081780…0817a0             2a 20 6f 70 74 69 6d 69 7a 65 20 38 2d 62 69 74 20 66 69 65 6c 64 73 20 61 73 20 62 79 74 65 73   ┆* optimize 8-bit fields as bytes┆
0x0817a0…0817c0             20 2a 29 0a 69 66 20 66 69 72 73 74 20 3d 20 30 20 74 68 65 6e 0a 74 79 70 65 5f 76 20 3a 3d 20   ┆ *) if first = 0 then type_v := ┆
0x0817c0…0817e0             62 79 74 65 5f 74 79 70 20 20 28 2a 20 6c 65 66 74 20 62 79 74 65 2c 20 64 6f 6e 27 74 20 63 68   ┆byte_typ  (* left byte, don't ch┆
0x0817e0…081800             61 6e 67 65 20 6f 66 66 73 65 74 20 2a 29 0a 65 6c 73 65 0a 69 66 20 66 69 72 73 74 20 3d 20 38   ┆ange offset *) else if first = 8┆
0x081800…081820 (34, 1, 2)  20 74 68 65 6e 0a 62 65 67 69 6e 20 20 28 2a 20 72 69 67 74 68 20 62 79 74 65 2c 20 61 64 64 20   ┆ then begin  (* rigth byte, add ┆
0x081820…081840             6f 6e 65 20 74 6f 20 6f 66 66 73 65 74 20 2a 29 0a 76 61 2e 6f 66 66 73 65 74 20 3a 3d 20 76 61   ┆one to offset *) va.offset := va┆
0x081840…081860             2e 6f 66 66 73 65 74 20 2b 20 31 3b 0a 74 79 70 65 5f 76 20 3a 3d 20 62 79 74 65 5f 74 79 70 3b   ┆.offset + 1; type_v := byte_typ;┆
0x081860…081880             0a 65 6e 64 3b 0a 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 20 20   ┆ end; end;          end         ┆
0x081880…0818a0             20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 69 66 28 20 74 79 70 65 5f 76 20 3d 20 61 64 64 72   ┆ else          if( type_v = addr┆
0x0818a0…0818c0             5f 74 79 70 20 29 20 6f 72 20 28 20 74 79 70 65 5f 76 20 3d 20 73 65 74 5f 74 79 70 20 29 20 74   ┆_typ ) or ( type_v = set_typ ) t┆
0x0818c0…0818e0             68 65 6e 20 20 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 0a 0a 65 6c 73 65 0a 69 66   ┆hen  size := in_integer  else if┆
0x0818e0…081900             20 74 79 70 65 5f 76 20 3d 20 64 79 6e 5f 74 79 70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 67 65 74   ┆ type_v = dyn_typ then begin get┆
0x081900…081920             5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 74 65 6d 70 6c 5f 76 20 29 3b 0a 73 69 7a 65 20 3a 3d 20   ┆_niv_offset( templ_v ); size := ┆
0x081920…081940             30 3b 20 20 28 2a 20 6e 6f 74 20 75 73 65 64 20 21 21 21 20 2a 29 0a 65 6e 64 3b 0a 0a 20 20 20   ┆0;  (* not used !!! *) end;     ┆
0x081940…081960             20 20 20 20 20 20 63 61 73 65 20 74 79 70 65 5f 76 20 6f 66 0a 62 79 74 65 5f 74 79 70 2c 0a 77   ┆      case type_v of byte_typ, w┆
0x081960…081980             6f 72 64 5f 74 79 70 2c 0a 70 6f 69 6e 74 5f 74 79 70 3a 0a 62 65 67 69 6e 0a 77 69 74 68 20 76   ┆ord_typ, point_typ: begin with v┆
0x081980…0819a0             61 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 74 79 70 65 5f 76 2c   ┆a do out_op_rev__(access,type_v,┆
0x0819a0…0819c0             63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 0a 76 2e 6b 69 6e 64 20 3a 3d 20 31 3b   ┆c.niv-niv,offset);  v.kind := 1;┆
0x0819c0…0819e0             0a 69 66 20 74 79 70 65 5f 76 20 3d 20 70 6f 69 6e 74 5f 74 79 70 20 74 68 65 6e 20 76 2e 73 69   ┆ if type_v = point_typ then v.si┆
0x0819e0…081a00             7a 65 20 3a 3d 20 34 20 65 6c 73 65 20 76 2e 73 69 7a 65 20 3a 3d 20 32 0a 0a 65 6e 64 3b 0a 66   ┆ze := 4 else v.size := 2  end; f┆
0x081a00…081a20 (34, 1, 3)  69 65 6c 64 5f 74 79 70 3a 0a 62 65 67 69 6e 0a 0a 28 2a 61 64 64 72 65 73 73 20 6f 6e 20 74 6f   ┆ield_typ: begin  (*address on to┆
0x081a20…081a40             70 20 6f 66 20 73 74 61 63 6b 2a 29 0a 77 69 74 68 20 76 61 20 64 6f 0a 63 61 73 65 20 61 63 63   ┆p of stack*) with va do case acc┆
0x081a40…081a60             65 73 73 20 6f 66 0a 67 5f 66 72 61 6d 65 3a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61   ┆ess of g_frame:out_op_int(op_rea┆
0x081a60…081a80             67 64 2c 6f 66 66 73 65 74 29 3b 0a 6c 5f 66 72 61 6d 65 3a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f   ┆gd,offset); l_frame:out_op_int(o┆
0x081a80…081aa0             70 5f 72 65 61 6c 64 2c 6f 66 66 73 65 74 29 3b 0a 73 5f 66 72 61 6d 65 3a 6f 75 74 5f 6f 70 5f   ┆p_reald,offset); s_frame:out_op_┆
0x081aa0…081ac0             69 6e 74 28 6f 70 5f 72 65 61 73 64 2c 6f 66 66 73 65 74 29 3b 0a 69 5f 66 72 61 6d 65 3a 6f 75   ┆int(op_reasd,offset); i_frame:ou┆
0x081ac0…081ae0             74 5f 6f 70 5f 72 65 61 28 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 65 6e 64 3b   ┆t_op_rea(c.niv-niv,offset); end;┆
0x081ae0…081b00             20 28 2a 63 61 73 65 2a 29 0a 28 2a 66 69 65 6c 64 20 64 65 73 63 72 69 70 74 6f 72 20 6f 6e 20   ┆ (*case*) (*field descriptor on ┆
0x081b00…081b20             74 6f 70 20 6f 66 20 73 74 61 63 6b 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63   ┆top of stack*) out_op_int(op_rec┆
0x081b20…081b40             68 77 2c 66 69 72 73 74 2a 32 35 36 20 2b 20 66 69 72 73 74 20 2b 20 6e 75 6d 62 65 72 20 2d 31   ┆hw,first*256 + first + number -1┆
0x081b40…081b60             29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 76 73 66 29 3b 0a 76 2e 6b 69 6e 64 20   ┆); out_opcode(op_revsf); v.kind ┆
0x081b60…081b80             3a 3d 20 31 3b 0a 76 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 65 6e 64 3b 0a 61 64 64 72 5f 74 79 70   ┆:= 1; v.size := 2; end; addr_typ┆
0x081b80…081ba0             2c 0a 64 79 6e 5f 74 79 70 3a 0a 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f   ┆, dyn_typ: begin              lo┆
0x081ba0…081bc0             61 64 5f 61 64 64 72 65 73 73 28 20 76 61 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 20 20   ┆ad_address( va, true);          ┆
0x081bc0…081be0             20 20 20 76 2e 6b 69 6e 64 20 3a 3d 20 32 3b 20 20 76 2e 73 69 7a 65 20 3a 3d 20 73 69 7a 65 0a   ┆   v.kind := 2;  v.size := size ┆
0x081be0…081c00             0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 0a 20 20 20 73 65 74 5f 74 79 70 3a 20 20 20 20 62   ┆          end;     set_typ:    b┆
0x081c00…081c20 (34, 1, 4)  65 67 69 6e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 61 64 5f 61 64 64 72 65 73 73 28 20   ┆egin              load_address( ┆
0x081c20…081c40             76 61 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 5f 6f 70 63 6f 64   ┆va, true);             out_opcod┆
0x081c40…081c60             65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 5f 73   ┆e( op_rechw );             out_s┆
0x081c60…081c80             74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 20 29   ┆tart_param;  out_integer( size )┆
0x081c80…081ca0             3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 20 76 2e   ┆;              v.kind := 1;   v.┆
0x081ca0…081cc0             73 69 7a 65 20 3a 3d 20 73 69 7a 65 20 2b 20 32 0a 0a 20 20 20 20 20 20 20 20 20 65 6e 64 0a 65   ┆size := size + 2           end e┆
0x081cc0…081ce0             6e 64 3b 20 28 2a 20 63 61 73 65 20 74 79 70 65 5f 76 20 2a 29 0a 67 65 74 5f 74 6f 6b 65 6e 3b   ┆nd; (* case type_v *) get_token;┆
0x081ce0…081d00             0a 69 66 20 28 74 79 70 65 5f 76 20 3d 20 73 65 74 5f 74 79 70 29 20 20 74 68 65 6e 0a 62 65 67   ┆ if (type_v = set_typ)  then beg┆
0x081d00…081d20             69 6e 20 28 2a 20 69 66 20 61 20 73 69 6e 67 6c 65 20 73 65 74 76 61 72 69 61 62 6c 65 20 6d 65   ┆in (* if a single setvariable me┆
0x081d20…081d40             74 20 74 68 65 6e 20 6e 6f 74 65 20 73 65 74 61 74 6d 2a 29 0a 20 20 20 20 20 20 28 2a 20 69 66   ┆t then note setatm*)       (* if┆
0x081d40…081d60             20 61 20 73 65 74 65 78 70 72 65 73 73 69 6f 6e 20 6d 65 74 20 74 68 65 6e 20 6f 75 74 70 75 74   ┆ a setexpression met then output┆
0x081d60…081d80             20 73 65 74 72 65 2a 29 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 63 6f 6d 70 61 72 65 20 74 68 65   ┆ setre*) if token = xcompare the┆
0x081d80…081da0             6e 20 69 6e 5f 6b 69 6e 64 3a 3d 20 73 65 74 61 74 6d 0a 65 6c 73 65 20 6f 75 74 5f 73 70 65 63   ┆n in_kind:= setatm else out_spec┆
0x081da0…081dc0             6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 72 65 2c 73 69 7a 65 29 3b 0a 65 6e 64 3b 0a 0a 65 6e 64   ┆opcode(op_setre,size); end;  end┆
0x081dc0…081de0             3b 20 28 2a 20 78 69 6e 64 76 61 72 20 2a 29 0a 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f   ┆; (* xindvar *)   end  (*  find_┆
0x081de0…081e00             76 61 72 76 61 6c 75 65 20 20 2a 29 3b 0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 20 66   ┆varvalue  *);      procedure   f┆
0x081e00…081e20 (34, 1, 5)  69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 61 72 20 20 76 3a 20 76 61 72 61 64 64 72 5f 64 65 73   ┆ind_varaddr( var  v: varaddr_des┆
0x081e20…081e40             63 72 29 3b 0a 76 61 72 0a 20 20 20 20 20 72 5f 76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63   ┆cr); var      r_v: varvalue_desc┆
0x081e40…081e60             72 3b 0a 20 20 20 20 20 64 6f 70 65 5f 76 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 67   ┆r;      dope_v: varaddr_descr; g┆
0x081e60…081e80             65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 2c 20 65 6e 64 5f 61 64 64 72 20 3a 20 62 6f 6f 6c 65 61   ┆et_next_token, end_addr : boolea┆
0x081e80…081ea0             6e 3b 0a 6d 69 6e 2c 6d 61 78 2c 6c 65 6e 67 74 68 3a 69 6e 74 65 67 65 72 3b 0a 0a 0a 62 65 67   ┆n; min,max,length:integer;   beg┆
0x081ea0…081ec0             69 6e 0a 0a 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 20 3a 3d 20 74 72 75 65 3b 0a 0a 0a 63 61   ┆in  get_next_token := true;   ca┆
0x081ec0…081ee0             73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 61 64 64 72 3a 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65   ┆se token of xaddr: get_niv_offse┆
0x081ee0…081f00             74 20 28 76 29 3b 0a 78 63 61 64 64 72 3a 0a 20 20 20 62 65 67 69 6e 0a 20 20 20 20 20 20 76 2e   ┆t (v); xcaddr:    begin       v.┆
0x081f00…081f20             6b 69 6e 64 20 3a 3d 20 73 74 61 63 6b 5f 61 64 64 72 3b 20 20 20 20 76 2e 6f 66 66 73 65 74 20   ┆kind := stack_addr;    v.offset ┆
0x081f20…081f40             3a 3d 20 30 3b 20 20 20 20 76 2e 61 63 63 65 73 73 20 3a 3d 20 73 5f 66 72 61 6d 65 3b 0a 20 20   ┆:= 0;    v.access := s_frame;   ┆
0x081f40…081f60             20 20 20 20 76 2e 73 69 7a 65 20 3a 3d 20 30 3b 0a 0a 20 20 20 20 20 20 6f 75 74 5f 6f 70 63 6f   ┆    v.size := 0;        out_opco┆
0x081f60…081f80             64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b   ┆de( op_reaad ); out_start_param;┆
0x081f80…081fa0             20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a   ┆  out_lix (c_name, in_integer); ┆
0x081fa0…081fc0             65 6e 64 3b 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 20 3a   ┆end; else begin get_next_token :┆
0x081fc0…081fe0             3d 20 66 61 6c 73 65 3b 20 28 2a 20 61 66 74 65 72 20 66 63 61 6c 6c 20 2a 29 0a 28 2a 20 69 6e   ┆= false; (* after fcall *) (* in┆
0x081fe0…082000             69 74 69 61 6c 69 7a 65 20 76 20 61 73 20 61 64 64 72 65 73 73 20 6f 6e 20 73 74 61 63 6b 20 2a   ┆itialize v as address on stack *┆
0x082000…082020 (34, 1, 6)  29 0a 77 69 74 68 20 76 20 64 6f 0a 62 65 67 69 6e 0a 6b 69 6e 64 20 3a 3d 20 73 74 61 63 6b 5f   ┆) with v do begin kind := stack_┆
0x082020…082040             61 64 64 72 3b 20 6f 66 66 73 65 74 20 3a 3d 20 30 3b 20 61 63 63 65 73 73 20 3a 3d 20 73 5f 66   ┆addr; offset := 0; access := s_f┆
0x082040…082060             72 61 6d 65 3b 0a 73 69 7a 65 20 3a 3d 20 30 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74 68 20 2a 29   ┆rame; size := 0; end; (* with *)┆
0x082060…082080             0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 5f 61 64 64 72 20 3a 3d 20 66 61 6c 73 65 3b 0a 72   ┆ end; end;  end_addr := false; r┆
0x082080…0820a0             65 70 65 61 74 0a 69 66 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 20 74 68 65 6e 0a 67 65 74   ┆epeat if get_next_token then get┆
0x0820a0…0820c0             5f 74 6f 6b 65 6e 0a 65 6c 73 65 0a 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 20 3a 3d 20 74 72   ┆_token else get_next_token := tr┆
0x0820c0…0820e0             75 65 3b 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 20 78 66 69 65 6c 64 3a 0a 0a 20 20   ┆ue;  case token of   xfield:    ┆
0x0820e0…082100             20 20 20 20 62 65 67 69 6e 0a 20 20 20 20 20 20 20 20 20 76 2e 6f 66 66 73 65 74 20 3a 3d 20 76   ┆    begin          v.offset := v┆
0x082100…082120             2e 6f 66 66 73 65 74 20 2b 20 69 6e 5f 69 6e 74 65 67 65 72 0a 20 20 20 20 20 20 65 6e 64 3b 0a   ┆.offset + in_integer       end; ┆
0x082120…082140             0a 0a 78 64 79 6e 66 69 65 6c 64 20 3a 0a 62 65 67 69 6e 0a 0a 6c 6f 61 64 5f 61 64 64 72 65 73   ┆  xdynfield : begin  load_addres┆
0x082140…082160             73 28 20 76 2c 20 74 72 75 65 20 29 3b 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 64 6f   ┆s( v, true ); get_niv_offset( do┆
0x082160…082180             70 65 5f 76 20 29 3b 0a 0a 77 69 74 68 20 64 6f 70 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72   ┆pe_v );  with dope_v do out_op_r┆
0x082180…0821a0             65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f   ┆ev__(access,word_typ,c.niv-niv,o┆
0x0821a0…0821c0             66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64 64 20 29 3b 0a 0a   ┆ffset); out_opcode( op_uadd );  ┆
0x0821c0…0821e0             65 6e 64 3b 20 28 2a 20 64 79 6e 20 66 69 65 6c 64 20 2a 29 0a 0a 0a 20 78 69 6e 64 65 78 65 78   ┆end; (* dyn field *)    xindexex┆
0x0821e0…082200             70 72 3a 0a 0a 20 20 20 20 20 20 62 65 67 69 6e 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 20 28 76   ┆pr:        begin load_address (v┆
0x082200…082220 (34, 1, 7)  2c 20 66 61 6c 73 65 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66   ┆, false);           get_token; f┆
0x082220…082240             69 6e 64 5f 65 78 70 72 73 28 20 72 5f 76 29 3b 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a   ┆ind_exprs( r_v);  case token of ┆
0x082240…082260             78 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 20 28 64 6f   ┆xindex: begin get_niv_offset (do┆
0x082260…082280             70 65 5f 76 29 3b 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 20 28 64 6f 70 65 5f 76 2c 20 74 72 75   ┆pe_v); load_address (dope_v, tru┆
0x082280…0822a0             65 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 69 6e 64 65 78 29 3b 0a 65 6e 64 3b 0a 78   ┆e); out_opcode(op_index); end; x┆
0x0822a0…0822c0             63 69 6e 64 65 78 3a 0a 20 20 20 20 20 20 20 20 20 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 20 20   ┆cindex:          begin          ┆
0x0822c0…0822e0             20 20 20 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f   ┆    out_opcode( op_reaad ); out_┆
0x0822e0…082300             73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 69   ┆start_param;  out_lix (c_name, i┆
0x082300…082320             6e 5f 69 6e 74 65 67 65 72 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 69 6e 64 65 78 29   ┆n_integer); out_opcode(op_index)┆
0x082320…082340             3b 0a 65 6e 64 3b 0a 78 68 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 6d 69 6e 20 3a 3d 20 69 6e 5f   ┆; end; xhindex: begin min := in_┆
0x082340…082360             69 6e 74 65 67 65 72 3b 0a 6d 61 78 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 65 6e 67   ┆integer; max := in_integer; leng┆
0x082360…082380             74 68 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 6c 65 6e 67 74 68 20 3e 20 32 20   ┆th := in_integer; if length > 2 ┆
0x082380…0823a0             74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 69 6e 64 68 5b 6d 69   ┆then begin out_op_int(op_indh[mi┆
0x0823a0…0823c0             6e 2c 30 5d 2c 6d 61 78 29 3b 0a 6f 75 74 5f 70 5f 69 6e 74 28 6c 65 6e 67 74 68 29 3b 0a 65 6e   ┆n,0],max); out_p_int(length); en┆
0x0823c0…0823e0             64 20 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 69 6e 64 68 5b 6d 69 6e 2c 6c 65   ┆d else out_op_int(op_indh[min,le┆
0x0823e0…082400             6e 67 74 68 5d 2c 6d 61 78 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73   ┆ngth],max); end; else error(pass┆
0x082400…082420 (34, 1, 8)  34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 0a 20 20 20 20 20 20 20 20 0a 20 20 20   ┆4code_error); end;              ┆
0x082420…082440             20 20 20 65 6e 64 20 20 28 2a 20 20 74 5f 69 6e 64 65 78 65 78 70 72 20 20 2a 29 3b 0a 0a 78 69   ┆   end  (*  t_indexexpr  *);  xi┆
0x082440…082460             6e 64 61 64 64 72 3a 0a 77 69 74 68 20 76 20 64 6f 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 72   ┆ndaddr: with v do begin out_op_r┆
0x082460…082480             65 76 5f 5f 28 61 63 63 65 73 73 2c 70 6f 69 6e 74 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c   ┆ev__(access,point_typ,c.niv-niv,┆
0x082480…0824a0             6f 66 66 73 65 74 29 3b 0a 6b 69 6e 64 20 3a 3d 20 73 74 61 63 6b 5f 61 64 64 72 3b 0a 6f 66 66   ┆offset); kind := stack_addr; off┆
0x0824a0…0824c0             73 65 74 3a 3d 20 30 3b 0a 61 63 63 65 73 73 3a 3d 73 5f 66 72 61 6d 65 3b 0a 65 6e 64 20 28 2a   ┆set:= 0; access:=s_frame; end (*┆
0x0824c0…0824e0             77 69 74 68 20 76 20 64 6f 2a 29 0a 0a 65 6c 73 65 20 65 6e 64 5f 61 64 64 72 20 3a 3d 20 74 72   ┆with v do*)  else end_addr := tr┆
0x0824e0…082500             75 65 3b 0a 65 6e 64 3b 0a 75 6e 74 69 6c 20 65 6e 64 5f 61 64 64 72 3b 0a 0a 69 66 20 74 6f 6b   ┆ue; end; until end_addr;  if tok┆
0x082500…082520             65 6e 20 3d 20 78 70 61 63 6b 65 64 61 72 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 6f 61 64 5f   ┆en = xpackedarr then begin load_┆
0x082520…082540             61 64 64 72 65 73 73 20 28 76 2c 20 74 72 75 65 29 3b 0a 0a 20 20 20 20 20 20 67 65 74 5f 74 6f   ┆address (v, true);        get_to┆
0x082540…082560             6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 72 5f 76 29 3b 0a 63 61 73 65 20 74 6f 6b 65   ┆ken; find_exprs( r_v); case toke┆
0x082560…082580             6e 20 6f 66 0a 78 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65   ┆n of xindex: begin get_niv_offse┆
0x082580…0825a0             74 28 64 6f 70 65 5f 76 29 3b 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 28 64 6f 70 65 5f 76 2c 74   ┆t(dope_v); load_address(dope_v,t┆
0x0825a0…0825c0             72 75 65 29 3b 0a 65 6e 64 3b 0a 78 63 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70   ┆rue); end; xcindex: begin out_op┆
0x0825c0…0825e0             63 6f 64 65 28 6f 70 5f 72 65 61 61 64 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b   ┆code(op_reaad); out_start_param;┆
0x0825e0…082600             0a 6f 75 74 5f 6c 69 78 28 63 5f 6e 61 6d 65 2c 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a 65 6e 64   ┆ out_lix(c_name,in_integer); end┆
0x082600…082620 (34, 1, 9)  3b 0a 78 68 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 6d 69 6e 20 3a 3d 20 69 6e 5f 69 6e 74 65 67   ┆; xhindex: begin min := in_integ┆
0x082620…082640             65 72 3b 0a 6d 61 78 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 65 6e 67 74 68 20 3a 3d   ┆er; max := in_integer; length :=┆
0x082640…082660             20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 6c 65 6e 67 74 68 20 3e 20 32 20 74 68 65 6e 0a   ┆ in_integer; if length > 2 then ┆
0x082660…082680             62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 69 6e 64 68 5b 6d 69 6e 2c 30 5d 2c   ┆begin out_op_int(op_indh[min,0],┆
0x082680…0826a0             6d 61 78 29 3b 0a 6f 75 74 5f 70 5f 69 6e 74 28 6c 65 6e 67 74 68 29 3b 0a 65 6e 64 20 65 6c 73   ┆max); out_p_int(length); end els┆
0x0826a0…0826c0             65 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 69 6e 64 68 5b 6d 69 6e 2c 6c 65 6e 67 74 68 5d   ┆e out_op_int(op_indh[min,length]┆
0x0826c0…0826e0             2c 6d 61 78 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65   ┆,max); end; else error(pass4code┆
0x0826e0…082700             5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 0a 20 20 20 20 20 20 76 2e 6b 69 6e 64 20 3a 3d 20 70   ┆_error); end;        v.kind := p┆
0x082700…082720             61 63 6b 65 64 5f 61 72 72 3b 20 20 20 76 2e 73 69 7a 65 20 3a 3d 20 30 3b 0a 0a 67 65 74 5f 74   ┆acked_arr;   v.size := 0;  get_t┆
0x082720…082740             6f 6b 65 6e 3b 0a 0a 20 20 20 65 6e 64 0a 0a 0a 65 6e 64 20 20 20 28 2a 20 20 66 69 6e 64 5f 76   ┆oken;     end   end   (*  find_v┆
0x082740…082760             61 72 61 64 64 72 20 20 2a 29 20 3b 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64   ┆araddr  *) ;     procedure  find┆
0x082760…082780             5f 69 6e 69 74 3b 0a 0a 76 61 72 0a 74 79 70 65 5f 6f 20 3a 20 69 6e 74 65 67 65 72 3b 0a 69 20   ┆_init;  var type_o : integer; i ┆
0x082780…0827a0             3a 20 69 6e 74 65 67 65 72 3b 0a 77 5f 6f 66 66 73 65 74 2c 20 6f 66 66 73 65 74 2c 20 6e 75 6d   ┆: integer; w_offset, offset, num┆
0x0827a0…0827c0             62 65 72 2c 20 73 69 7a 65 2c 20 73 69 7a 65 5f 6c 2c 20 73 69 7a 65 5f 63 2c 20 6c 6f 77 65 72   ┆ber, size, size_l, size_c, lower┆
0x0827c0…0827e0             2c 20 75 70 70 65 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 73 74 61 63 6b 5f 73 61 76 65 20 3a 20   ┆, upper : integer; stack_save : ┆
0x0827e0…082800             69 6e 74 65 67 65 72 3b 0a 76 61 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 0a 0a 0a   ┆integer; va : varaddr_descr;    ┆
0x082800…082820 (34, 1, 10) 62 65 67 69 6e 0a 0a 73 74 61 63 6b 5f 73 61 76 65 20 3a 3d 20 63 2e 73 74 61 63 6b 5f 73 69 7a   ┆begin  stack_save := c.stack_siz┆
0x082820…082840             65 3b 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 78 69 6e 69 74 69 61 6c 69 7a 65 20 3a   ┆e;  case token of  xinitialize :┆
0x082840…082860             0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20   ┆ begin get_token; find_varaddr( ┆
0x082860…082880             76 61 29 3b 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 73 74 72 75 63 69 6e 69 74 3a 0a 62   ┆va); case token of xstrucinit: b┆
0x082880…0828a0             65 67 69 6e 0a 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 20 20 20 20 3a   ┆egin  size := in_integer; i    :┆
0x0828a0…0828c0             3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 6c 69 78 20 2a 29 0a 0a 6c 6f 61 64 5f 61   ┆= in_integer;  (* lix *)  load_a┆
0x0828c0…0828e0             64 64 72 65 73 73 28 20 76 61 2c 20 74 72 75 65 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20   ┆ddress( va, true);  out_opcode( ┆
0x0828e0…082900             6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75   ┆op_reaad ); out_start_param;  ou┆
0x082900…082920             74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 69 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20   ┆t_lix (c_name, i);  out_opcode( ┆
0x082920…082940             6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75   ┆op_rechw ); out_start_param;  ou┆
0x082940…082960             74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f   ┆t_integer( size ); out_opcode (o┆
0x082960…082980             70 5f 6d 6f 76 65 67 29 0a 65 6e 64 3b 0a 78 73 69 6d 70 6c 65 69 6e 69 74 3a 0a 62 65 67 69 6e   ┆p_moveg) end; xsimpleinit: begin┆
0x082980…0829a0             0a 0a 74 79 70 65 5f 6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 20 3a 3d 20 69 6e 5f   ┆  type_o := in_integer; i := in_┆
0x0829a0…0829c0             69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29   ┆integer;  out_opcode( op_rechw )┆
0x0829c0…0829e0             3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28   ┆; out_start_param;  out_integer(┆
0x0829e0…082a00             20 69 20 29 3b 0a 0a 69 66 20 76 61 2e 6b 69 6e 64 20 3d 20 61 64 64 72 20 74 68 65 6e 0a 62 65   ┆ i );  if va.kind = addr then be┆
0x082a00…082a20 (34, 1, 11) 67 69 6e 0a 0a 69 66 20 76 61 2e 6e 69 76 20 3c 3e 20 63 2e 6e 69 76 20 74 68 65 6e 20 20 65 72   ┆gin  if va.niv <> c.niv then  er┆
0x082a20…082a40             72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 69 66 20 28 20 74 79 70 65   ┆ror(pass4code_error);  if ( type┆
0x082a40…082a60             5f 6f 20 3d 20 73 63 61 6c 61 72 5f 74 79 70 20 29 20 6f 72 20 28 20 74 79 70 65 5f 6f 20 3d 20   ┆_o = scalar_typ ) or ( type_o = ┆
0x082a60…082a80             62 6f 6f 6c 5f 74 79 70 20 29 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73   ┆bool_typ ) then out_opcode( op_s┆
0x082a80…082aa0             74 76 6c 62 20 29 0a 65 6c 73 65 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 69 6e 74 5f 74 79 70 20   ┆tvlb ) else if type_o = int_typ ┆
0x082aa0…082ac0             74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 6c 77 20 29 0a 65 6c 73 65   ┆then out_opcode( op_stvlw ) else┆
0x082ac0…082ae0             0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 75 74 5f 73 74   ┆ error(pass4code_error);  out_st┆
0x082ae0…082b00             61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 76 61 2e 6f 66 66 73   ┆art_param;  out_integer( va.offs┆
0x082b00…082b20             65 74 20 29 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 69 66 20 76 61 2e 6b 69 6e 64 20 3d 20 73 74 61   ┆et )  end  else if va.kind = sta┆
0x082b20…082b40             63 6b 5f 61 64 64 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 66 20 28 20 74 79 70 65 5f 6f 20   ┆ck_addr then begin  if ( type_o ┆
0x082b40…082b60             3d 20 73 63 61 6c 61 72 5f 74 79 70 20 29 20 6f 72 20 28 20 74 79 70 65 5f 6f 20 3d 20 62 6f 6f   ┆= scalar_typ ) or ( type_o = boo┆
0x082b60…082b80             6c 5f 74 79 70 20 29 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 73   ┆l_typ ) then out_opcode( op_stvs┆
0x082b80…082ba0             62 20 29 0a 65 6c 73 65 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 69 6e 74 5f 74 79 70 20 74 68 65   ┆b ) else if type_o = int_typ the┆
0x082ba0…082bc0             6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 73 77 20 29 0a 65 6c 73 65 0a 65 72   ┆n out_opcode( op_stvsw ) else er┆
0x082bc0…082be0             72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 75 74 5f 73 74 61 72 74   ┆ror(pass4code_error);  out_start┆
0x082be0…082c00             5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 76 61 2e 6f 66 66 73 65 74 20   ┆_param;  out_integer( va.offset ┆
0x082c00…082c20 (34, 1, 12) 29 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72   ┆)  end  else error(pass4code_err┆
0x082c20…082c40             6f 72 29 3b 0a 65 6e 64 3b 0a 78 73 65 74 69 6e 69 74 3a 0a 62 65 67 69 6e 0a 0a 6c 6f 61 64 5f   ┆or); end; xsetinit: begin  load_┆
0x082c40…082c60             61 64 64 72 65 73 73 28 20 76 61 2c 20 74 72 75 65 29 3b 0a 0a 73 69 7a 65 5f 6c 20 3a 3d 20 69   ┆address( va, true);  size_l := i┆
0x082c60…082c80             6e 5f 69 6e 74 65 67 65 72 3b 0a 69 20 20 20 20 20 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b   ┆n_integer; i      := in_integer;┆
0x082c80…082ca0             20 20 28 2a 6c 69 78 20 2a 29 0a 73 69 7a 65 5f 63 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b   ┆  (*lix *) size_c := in_integer;┆
0x082ca0…082cc0             0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f 73 74   ┆  out_opcode( op_reaad ); out_st┆
0x082cc0…082ce0             61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 69 29 3b   ┆art_param;  out_lix (c_name, i);┆
0x082ce0…082d00             0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74   ┆  out_opcode( op_rechw ); out_st┆
0x082d00…082d20             61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 5f 63 20   ┆art_param;  out_integer( size_c ┆
0x082d20…082d40             29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 72 65 2c 73 69 7a 65 5f   ┆); out_specopcode(op_setre,size_┆
0x082d40…082d60             63 29 3b 0a 0a 69 66 20 73 69 7a 65 5f 6c 20 3c 3e 20 73 69 7a 65 5f 63 20 74 68 65 6e 0a 62 65   ┆c);  if size_l <> size_c then be┆
0x082d60…082d80             67 69 6e 0a 0a 63 6f 64 65 5f 73 74 61 74 5f 74 6f 5f 64 79 6e 28 20 73 69 7a 65 5f 63 20 2b 20   ┆gin  code_stat_to_dyn( size_c + ┆
0x082d80…082da0             32 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75   ┆2 );  out_opcode( op_rechw ); ou┆
0x082da0…082dc0             74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a   ┆t_start_param;  out_integer( siz┆
0x082dc0…082de0             65 5f 6c 20 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 61 64 2c 73   ┆e_l ); out_specopcode(op_setad,s┆
0x082de0…082e00             69 7a 65 5f 6c 20 2b 20 32 29 3b 0a 0a 65 6e 64 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65   ┆ize_l + 2);  end; out_specopcode┆
0x082e00…082e20 (34, 1, 13) 28 6f 70 5f 73 65 74 73 74 2c 2d 73 69 7a 65 5f 6c 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72   ┆(op_setst,-size_l); end; else er┆
0x082e20…082e40             72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a   ┆ror(pass4code_error); end; end; ┆
0x082e40…082e60             0a 78 65 78 74 65 78 63 65 70 74 69 6f 6e 3a 0a 77 69 74 68 20 65 78 63 5f 64 65 73 63 72 20 64   ┆ xextexception: with exc_descr d┆
0x082e60…082e80             6f 0a 62 65 67 69 6e 0a 0a 73 74 61 74 65 20 3a 3d 20 31 3b 0a 69 6e 74 65 72 6e 61 6c 20 3a 3d   ┆o begin  state := 1; internal :=┆
0x082e80…082ea0             20 66 61 6c 73 65 3b 0a 6b 65 79 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 65 6e 64 3b   ┆ false; key := in_integer;  end;┆
0x082ea0…082ec0             0a 0a 78 65 78 63 65 70 74 69 6f 6e 20 3a 0a 77 69 74 68 20 65 78 63 5f 64 65 73 63 72 20 64 6f   ┆  xexception : with exc_descr do┆
0x082ec0…082ee0             0a 62 65 67 69 6e 0a 0a 73 74 61 74 65 20 3a 3d 20 31 3b 0a 69 6e 74 65 72 6e 61 6c 20 3a 3d 20   ┆ begin  state := 1; internal := ┆
0x082ee0…082f00             74 72 75 65 3b 0a 6e 69 76 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 20 6c 69 78 20 3a   ┆true; niv := in_integer;   lix :┆
0x082f00…082f20             3d 20 69 6e 5f 69 6e 74 65 67 65 72 0a 0a 65 6e 64 3b 0a 0a 0a 65 6c 73 65 0a 65 72 72 6f 72 28   ┆= in_integer  end;   else error(┆
0x082f20…082f40             70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 20 20 28 2a 20 20 63 61 73 65   ┆pass4code_error); end;  (*  case┆
0x082f40…082f60             20 20 74 6f 6b 65 6e 20 20 6f 66 20 2e 2e 2e 2e 2e 2e 2e 20 20 2a 29 0a 0a 69 66 20 73 74 61 63   ┆  token  of .......  *)  if stac┆
0x082f60…082f80             6b 5f 73 61 76 65 20 3c 3e 20 63 2e 73 74 61 63 6b 5f 73 69 7a 65 20 74 68 65 6e 20 20 65 76 61   ┆k_save <> c.stack_size then  eva┆
0x082f80…082fa0             6c 73 74 61 63 6b 5f 65 72 72 6f 72 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 20 20   ┆lstack_error;  get_token;  end  ┆
0x082fa0…082fc0             28 2a 20 20 66 69 6e 64 5f 69 6e 69 74 20 20 2a 29 3b 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65   ┆(*  find_init  *);     procedure┆
0x082fc0…082fe0             20 20 66 69 6e 64 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 28 20 76 61 72 20 73 69 7a 65 5f 6f 66   ┆  find_processparam( var size_of┆
0x082fe0…083000             5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 76   ┆_function_result : integer );  v┆
0x083000…083020 (34, 1, 14) 61 72 0a 6f 66 66 73 65 74 5f 31 2c 20 6f 66 66 73 65 74 5f 32 2c 20 6f 66 66 73 65 74 5f 33 2c   ┆ar offset_1, offset_2, offset_3,┆
0x083020…083040             0a 73 74 61 63 6b 5f 73 69 7a 65 2c 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 3a 20 69 6e 74 65   ┆ stack_size, param_length : inte┆
0x083040…083060             67 65 72 3b 0a 76 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 0a 67   ┆ger; v: varaddr_descr;  begin  g┆
0x083060…083080             65 74 5f 74 6f 6b 65 6e 3b 20 20 28 2a 20 73 6b 69 70 3a 20 78 70 72 6f 63 65 73 73 70 61 72 61   ┆et_token;  (* skip: xprocesspara┆
0x083080…0830a0             6d 20 2a 29 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 76 61 72 70 6f 69 6e 74 65 72 20 74 68 65   ┆m *) if token <> xvarpointer the┆
0x0830a0…0830c0             6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 66 66 73 65   ┆n error(pass4code_error);  offse┆
0x0830c0…0830e0             74 5f 31 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66   ┆t_1 := in_integer;  get_token; f┆
0x0830e0…083100             69 6e 64 5f 76 61 72 61 64 64 72 28 76 29 3b 0a 77 69 74 68 20 76 20 64 6f 0a 69 66 20 6b 69 6e   ┆ind_varaddr(v); with v do if kin┆
0x083100…083120             64 3d 61 64 64 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6e 69 76 20 3d 20 63 6f 6e 73 74   ┆d=addr then begin if niv = const┆
0x083120…083140             5f 6e 69 76 5f 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 67 64 2c   ┆_niv_0 then out_op_int(op_reagd,┆
0x083140…083160             6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 69 66 20 6e 69 76 20 3d 20 63 2e 6e 69 76 20 74 68 65 6e   ┆offset) else if niv = c.niv then┆
0x083160…083180             0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 6c 64 2c 6f 66 66 73 65 74 29 0a 65 6c 73   ┆ out_op_int(op_reald,offset) els┆
0x083180…0831a0             65 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 72 65 61 28 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66   ┆e begin out_op_rea(c.niv-niv,off┆
0x0831a0…0831c0             73 65 74 29 3b 0a 65 6e 64 3b 0a 65 6e 64 20 28 2a 20 6b 69 6e 64 3d 61 64 64 72 20 2a 29 0a 65   ┆set); end; end (* kind=addr *) e┆
0x0831c0…0831e0             6c 73 65 20 28 2a 20 73 74 61 63 6b 5f 61 64 64 72 20 2a 29 0a 69 66 20 6f 66 66 73 65 74 3c 3e   ┆lse (* stack_addr *) if offset<>┆
0x0831e0…083200             30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c 20 6f 66 66 73   ┆0 then out_op_int(op_reasd, offs┆
0x083200…083220 (34, 1, 15) 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 74 61 72 74 20 6f 66 20 70   ┆et); out_comment( '   start of p┆
0x083220…083240             72 6f 63 65 73 73 20 70 61 72 61 6d 2e 20 6c 69 73 74 20 2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6f   ┆rocess param. list . ' );  out_o┆
0x083240…083260             70 63 6f 64 65 28 20 6f 70 5f 73 74 76 6c 61 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72   ┆pcode( op_stvla ); out_start_par┆
0x083260…083280             61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f 66 66 73 65 74 5f 31 20 29 3b 0a 0a 6f   ┆am;  out_integer( offset_1 );  o┆
0x083280…0832a0             75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 78 64 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f   ┆ut_opcode( op_reaxd );  out_opco┆
0x0832a0…0832c0             64 65 28 20 6f 70 5f 72 65 61 73 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b   ┆de( op_reasd ); out_start_param;┆
0x0832c0…0832e0             20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 31 20 29 3b 0a 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e   ┆  out_integer( 1 );  if token <>┆
0x0832e0…083300             20 78 74 65 6d 70 6f 69 6e 74 65 72 20 74 68 65 6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64   ┆ xtempointer then error(pass4cod┆
0x083300…083320             65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 66 66 73 65 74 5f 32 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65   ┆e_error);  offset_2 := in_intege┆
0x083320…083340             72 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 6c 61 20 29 3b 0a 6f 75 74 5f   ┆r;  out_opcode( op_stvla ); out_┆
0x083340…083360             73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f 66 66 73 65   ┆start_param;  out_integer( offse┆
0x083360…083380             74 5f 32 20 29 3b 0a 0a 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 63 2e 73 74 61 63 6b 5f 73 69   ┆t_2 );  stack_size := c.stack_si┆
0x083380…0833a0             7a 65 3b 0a 0a 66 69 6e 64 5f 61 72 67 6c 69 73 74 28 20 70 72 65 64 28 6f 70 65 6e 5f 63 61 6c   ┆ze;  find_arglist( pred(open_cal┆
0x0833a0…0833c0             6c 29 20 28 2a 20 63 6c 6f 73 65 64 20 6f 62 6a 65 63 74 20 2a 29 2c 20 73 69 7a 65 5f 6f 66 5f   ┆l) (* closed object *), size_of_┆
0x0833c0…0833e0             66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 29 3b 0a 0a 70 61 72 61 6d 5f 6c 65 6e 67 74 68   ┆function_result );  param_length┆
0x0833e0…083400             20 3a 3d 20 63 2e 73 74 61 63 6b 5f 73 69 7a 65 20 2d 20 73 74 61 63 6b 5f 73 69 7a 65 3b 0a 0a   ┆ := c.stack_size - stack_size;  ┆
0x083400…083420 (35, 0, 1)  69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 61 72 67 6c 69 73 74 73 69 7a 65 20 74 68 65 6e 20 65 72   ┆if token <> xarglistsize then er┆
0x083420…083440             72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 66 66 73 65 74 5f 33 20   ┆ror(pass4code_error);  offset_3 ┆
0x083440…083460             3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72   ┆:= in_integer;  out_opcode( op_r┆
0x083460…083480             65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e   ┆echw ); out_start_param;  out_in┆
0x083480…0834a0             74 65 67 65 72 28 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f   ┆teger( param_length );  out_opco┆
0x0834a0…0834c0             64 65 28 20 6f 70 5f 73 74 76 6c 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b   ┆de( op_stvlw ); out_start_param;┆
0x0834c0…0834e0             20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f 66 66 73 65 74 5f 33 20 29 3b 0a 6f 75 74 5f 63   ┆  out_integer( offset_3 ); out_c┆
0x0834e0…083500             6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d   ┆omment( '   end of process param┆
0x083500…083520             2e 20 6c 69 73 74 20 2e 20 27 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 63 61 73 65 20 74   ┆. list . ' );  get_token; case t┆
0x083520…083540             6f 6b 65 6e 20 6f 66 0a 78 70 72 6f 63 63 61 6c 6c 2c 0a 78 65 78 74 70 72 6f 63 63 61 6c 6c 3a   ┆oken of xproccall, xextproccall:┆
0x083540…083560             0a 66 69 6e 64 5f 70 72 6f 63 5f 63 61 6c 6c 28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f   ┆ find_proc_call( size_of_functio┆
0x083560…083580             6e 5f 72 65 73 75 6c 74 20 29 3b 0a 78 66 75 6e 63 63 61 6c 6c 2c 0a 78 65 78 74 66 75 6e 63 63   ┆n_result ); xfunccall, xextfuncc┆
0x083580…0835a0             61 6c 6c 3a 0a 62 65 67 69 6e 0a 0a 66 69 6e 64 5f 63 61 6c 6c 28 20 73 69 7a 65 5f 6f 66 5f 66   ┆all: begin  find_call( size_of_f┆
0x0835a0…0835c0             75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 29 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 66   ┆unction_result ); skip_token (xf┆
0x0835c0…0835e0             63 61 6c 6c 29 3b 0a 65 6e 64 3b 0a 78 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 0a 66 69 6e 64 5f   ┆call); end; xprocessparam: find_┆
0x0835e0…083600             70 72 6f 63 65 73 73 70 61 72 61 6d 28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72   ┆processparam( size_of_function_r┆
0x083600…083620 (35, 0, 2)  65 73 75 6c 74 20 29 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72   ┆esult ); else error(pass4code_er┆
0x083620…083640             72 6f 72 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f   ┆ror); end;  if size_of_function_┆
0x083640…083660             72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 20 28 2a 20 6d 75 73 74 20 62 65 20 32 20 6f 72   ┆result <> 0 then (* must be 2 or┆
0x083660…083680             20 34 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 5b 6c 2c 63 6f 6e 76 5f 74   ┆ 4 *) out_op_int(op_stv[l,conv_t┆
0x083680…0836a0             79 70 65 5b 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 5d 5d 2c 6f 66   ┆ype[size_of_function_result]],of┆
0x0836a0…0836c0             66 73 65 74 5f 32 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 74 6e 68 62   ┆fset_2); out_specopcode(op_stnhb┆
0x0836c0…0836e0             2c 2d 70 61 72 61 6d 5f 6c 65 6e 67 74 68 29 3b 0a 0a 69 66 20 73 69 7a 65 5f 6f 66 5f 66 75 6e   ┆,-param_length);  if size_of_fun┆
0x0836e0…083700             63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 28 2a 20 6c 6f 61 64 20 74   ┆ction_result <> 0 then (* load t┆
0x083700…083720             68 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 73 75 6c 74 20 61 67 61 69 6e 20 2a 29 0a 6f 75 74 5f   ┆he function result again *) out_┆
0x083720…083740             6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 5b 6c 2c 63 6f 6e 76 5f 74 79 70 65 5b 73 69 7a 65 5f 6f   ┆op_int(op_rev[l,conv_type[size_o┆
0x083740…083760             66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 5d 5d 2c 6f 66 66 73 65 74 5f 32 29 3b 0a 0a   ┆f_function_result]],offset_2);  ┆
0x083760…083780             0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 70 72 6f 63 65 73 73 70 61 72 61 6d 29 3b 0a   ┆ skip_token (xendprocessparam); ┆
0x083780…0837a0             0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 20 20 2a 29 3b   ┆ end  (*  find_processparam  *);┆
0x0837a0…0837c0             0a 0a 0a 0a 0a 0a 28 2a 20 20 20 20 20 20 20 62 6f 64 79 20 6f 66 20 70 61 73 73 35 3a 20 20 20   ┆      (*       body of pass5:   ┆
0x0837c0…0837e0             20 20 20 2a 29 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65   ┆   *)  begin  (*  initialize the┆
0x0837e0…083800             20 73 65 74 20 6f 66 20 68 61 72 64 20 65 78 63 65 70 74 69 6f 6e 73 20 3a 20 20 2a 29 0a 0a 65   ┆ set of hard exceptions :  *)  e┆
0x083800…083820 (35, 0, 3)  78 63 5f 68 61 72 64 20 3a 3d 20 5b 20 30 20 2e 2e 20 63 5f 65 78 63 5f 6d 61 78 20 5d 3b 0a 0a   ┆xc_hard := [ 0 .. c_exc_max ];  ┆
0x083820…083840             28 2a 20 20 20 20 20 69 6e 69 74 69 61 6c 69 7a 65 20 70 61 73 73 35 20 6f 70 74 69 6f 6e 73 20   ┆(*     initialize pass5 options ┆
0x083840…083860             74 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 73 20 3a 20 20 20 2a 29 0a 0a 70 72   ┆to the default values :   *)  pr┆
0x083860…083880             65 73 65 72 76 65 5f 6f 70 74 69 6f 6e 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 70 72 65 73 65 72   ┆eserve_option:= false; (* preser┆
0x083880…0838a0             76 65 2e 6e 6f 2c 20 69 2e 65 2e 20 72 65 6d 6f 76 65 20 70 61 73 73 34 63 6f 64 65 20 61 66 74   ┆ve.no, i.e. remove pass4code aft┆
0x0838a0…0838c0             65 72 20 75 73 65 20 2a 29 0a 70 72 6f 6c 6f 67 5f 79 65 73 20 3a 3d 20 74 72 75 65 3b 0a 65 70   ┆er use *) prolog_yes := true; ep┆
0x0838c0…0838e0             69 6c 6f 67 5f 79 65 73 20 3a 3d 20 74 72 75 65 3b 0a 63 6f 6d 70 72 65 73 73 5f 79 65 73 20 3a   ┆ilog_yes := true; compress_yes :┆
0x0838e0…083900             3d 20 74 72 75 65 3b 0a 63 61 6c 6c 70 61 73 73 36 5f 79 65 73 20 3a 3d 20 74 72 75 65 3b 0a 73   ┆= true; callpass6_yes := true; s┆
0x083900…083920             74 61 74 61 63 63 5f 79 65 73 20 3a 3d 20 66 61 6c 73 65 3b 0a 6d 65 61 73 75 72 65 6d 65 6e 74   ┆tatacc_yes := false; measurement┆
0x083920…083940             5f 79 65 73 20 3a 3d 20 66 61 6c 73 65 3b 0a 73 75 6d 6d 61 72 79 5f 79 65 73 20 3a 3d 20 66 61   ┆_yes := false; summary_yes := fa┆
0x083940…083960             6c 73 65 3b 0a 65 6e 66 6f 72 63 65 64 5f 65 78 63 65 70 74 69 6f 6e 5f 61 70 70 20 3a 3d 20 2d   ┆lse; enforced_exception_app := -┆
0x083960…083980             31 3b 20 28 2a 20 75 73 65 20 73 79 6d 62 6f 6c 69 63 20 76 61 6c 75 65 20 66 72 6f 6d 20 6c 61   ┆1; (* use symbolic value from la┆
0x083980…0839a0             6d 62 64 61 65 6e 76 20 2a 29 0a 65 6e 66 6f 72 63 65 64 5f 63 72 65 61 74 65 5f 73 69 7a 65 20   ┆mbdaenv *) enforced_create_size ┆
0x0839a0…0839c0             3a 3d 20 30 3b 20 28 2a 20 69 2e 65 2e 20 75 73 65 20 63 6f 6d 70 75 74 65 64 20 76 61 6c 75 65   ┆:= 0; (* i.e. use computed value┆
0x0839c0…0839e0             20 2a 29 0a 68 65 61 70 5f 69 6e 69 74 3a 3d 20 66 61 6c 73 65 3b 0a 6f 70 65 6e 72 6f 75 74 69   ┆ *) heap_init:= false; openrouti┆
0x0839e0…083a00             6e 65 5f 79 65 73 20 3a 3d 20 74 72 75 65 3b 0a 64 79 6e 5f 65 76 61 6c 5f 73 74 61 63 6b 3a 3d   ┆ne_yes := true; dyn_eval_stack:=┆
0x083a00…083a20 (35, 0, 4)  20 66 61 6c 73 65 3b 0a 0a 28 2a 20 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 70 73 65 75   ┆ false;  (*  initialize the pseu┆
0x083a20…083a40             64 6f 20 63 6c 61 73 73 65 73 3a 20 20 2a 29 0a 0a 6d 65 73 73 5f 73 75 6d 6d 5f 73 74 61 74 65   ┆do classes:  *)  mess_summ_state┆
0x083a40…083a60             20 3a 3d 20 30 3b 20 20 28 2a 20 62 65 66 6f 72 65 20 68 65 61 64 69 6e 67 20 2a 29 0a 6f 75 74   ┆ := 0;  (* before heading *) out┆
0x083a60…083a80             5f 69 6e 69 74 3b 0a 69 6e 5f 69 6e 69 74 3b 0a 65 78 74 5f 69 6e 69 74 3b 0a 20 20 73 74 61 74   ┆_init; in_init; ext_init;   stat┆
0x083a80…083aa0             5f 72 65 73 65 74 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 66 72 65 65 20 6c 69 73 74   ┆_reset;  (* initialize free list┆
0x083aa0…083ac0             20 6f 66 20 63 61 73 65 20 74 61 62 6c 65 20 65 6e 74 72 79 20 6e 6f 64 65 73 20 2a 29 0a 63 61   ┆ of case table entry nodes *) ca┆
0x083ac0…083ae0             73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3a 3d 20 6e 69 6c 3b 0a 0a 0a 28 2a 20 20 20 20 20   ┆se_tab_freelist:= nil;   (*     ┆
0x083ae0…083b00             20 67 65 6e 65 72 61 74 65 20 63 6f 64 65 20 66 6f 72 20 6f 6e 65 20 70 72 6f 67 72 61 6d 3a 20   ┆ generate code for one program: ┆
0x083b00…083b20             20 20 20 20 20 2a 29 0a 0a 66 69 6e 64 5f 70 72 6f 67 72 61 6d 3b 0a 0a 28 2a 20 20 20 20 20 74   ┆     *)  find_program;  (*     t┆
0x083b20…083b40             65 72 6d 69 6e 61 74 65 20 74 68 65 20 70 73 65 75 64 6f 20 63 6c 61 73 73 65 73 3a 20 20 20 20   ┆erminate the pseudo classes:    ┆
0x083b40…083b60             20 20 20 20 2a 29 0a 69 66 20 73 74 61 74 61 63 63 5f 79 65 73 20 74 68 65 6e 20 73 74 61 74 5f   ┆    *) if statacc_yes then stat_┆
0x083b60…083b80             70 72 69 6e 74 3b 0a 0a 0a 31 3a 20 20 20 20 20 20 28 2a 20 20 20 20 20 65 78 69 74 20 66 72 6f   ┆print;   1:      (*     exit fro┆
0x083b80…083ba0             6d 20 66 61 74 61 6c 20 65 72 72 6f 72 73 20 20 20 20 20 20 2a 29 0a 0a 70 61 73 73 35 5f 6f 6b   ┆m fatal errors      *)  pass5_ok┆
0x083ba0…083bc0             20 3a 3d 20 70 61 73 73 35 5f 6f 6b 20 61 6e 64 20 63 61 6c 6c 70 61 73 73 36 5f 79 65 73 3b 0a   ┆ := pass5_ok and callpass6_yes; ┆
0x083bc0…083be0             65 6f 6d 3b 0a 0a 69 66 20 73 75 6d 6d 61 72 79 5f 79 65 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆eom;  if summary_yes then begin ┆
0x083be0…083c00             77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 68 65 61 70 66 72 65 65 20 3a 3d 20 6d 65 6d   ┆writeln(output); heapfree := mem┆
0x083c00…083c20 (35, 0, 5)  61 76 61 69 6c 3b 0a 72 65 6c 65 61 73 65 28 68 65 61 70 6f 72 67 29 3b 0a 77 72 69 74 65 6c 6e   ┆avail; release(heaporg); writeln┆
0x083c20…083c40             28 6f 75 74 70 75 74 2c 20 27 48 65 65 70 20 73 70 61 63 65 20 75 73 65 64 20 69 6e 20 62 79 74   ┆(output, 'Heep space used in byt┆
0x083c40…083c60             65 73 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 0a 20 20 20 20 20 20   ┆es:                    ',       ┆
0x083c60…083c80             20 20 20 20 20 20 20 20 20 20 6d 65 6d 61 76 61 69 6c 20 2d 20 68 65 61 70 66 72 65 65 29 3b 0a   ┆          memavail - heapfree); ┆
0x083c80…083ca0             77 72 69 74 65 6c 6e 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 20 20 20 20 20 28 2a 20 20 70 61 73 73 35   ┆writeln; end;  end     (*  pass5┆
0x083ca0…083cc0             20 20 2a 29 3b 0a 0a 62 65 67 69 6e 0a 6e 65 65 64 65 64 5f 73 69 7a 65 20 3a 3d 20 65 78 74 5f   ┆  *);  begin needed_size := ext_┆
0x083cc0…083ce0             74 61 62 5f 6d 61 78 3b 0a 6e 65 65 64 65 64 5f 73 69 7a 65 20 3a 3d 20 6e 65 65 64 65 64 5f 73   ┆tab_max; needed_size := needed_s┆
0x083ce0…083d00             69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 65 78 74 5f 64 65 73 63 72 29 3b 0a 69 66 20 6d 61 78 61   ┆ize * sizeof(ext_descr); if maxa┆
0x083d00…083d20             76 61 69 6c 20 3e 3d 20 6f 72 64 28 6e 65 65 64 65 64 5f 73 69 7a 65 29 20 74 68 65 6e 0a 62 65   ┆vail >= ord(needed_size) then be┆
0x083d20…083d40             67 69 6e 0a 67 65 74 6d 65 6d 28 70 5f 65 78 74 5f 74 61 62 2c 20 6e 65 65 64 65 64 5f 73 69 7a   ┆gin getmem(p_ext_tab, needed_siz┆
0x083d40…083d60             65 29 3b 0a 70 61 73 73 35 28 70 5f 65 78 74 5f 74 61 62 5e 2c 20 70 61 73 73 35 5f 6f 6b 29 3b   ┆e); pass5(p_ext_tab^, pass5_ok);┆
0x083d60…083d80             0a 65 6e 64 20 65 6c 73 65 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20   ┆ end else begin writeln(output, ┆
0x083d80…083da0             27 74 6f 6f 20 6d 61 6e 79 20 65 78 74 65 72 6e 61 6c 73 20 27 2c 20 65 78 74 5f 74 61 62 5f 6d   ┆'too many externals ', ext_tab_m┆
0x083da0…083dc0             61 78 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 20 20 20 20 20 61 76 61 69 6c   ┆ax); writeln(output, '     avail┆
0x083dc0…083de0             61 62 6c 65 20 20 20 20 20 27 2c 20 6d 61 78 61 76 61 69 6c 20 64 69 76 20 73 69 7a 65 6f 66 28   ┆able     ', maxavail div sizeof(┆
0x083de0…083e00             65 78 74 5f 64 65 73 63 72 29 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 65 65 20 3a 3d 20 6d 65 6d   ┆ext_descr)); end; end; ee := mem┆
0x083e00…083e20 (35, 0, 6)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 73 2e 70 35 70 72 6f 63 2e 70 61 73 00 00   ┆../sw2103/src/rtp/s.p5proc.pas  ┆
0x083e20…083e40             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x083e60…083e80             00 00 00 00 20 20 20 34 34 34 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       444     255     146      ┆
0x083e80…083ea0             20 31 36 36 34 36 30 20 20 35 32 36 36 37 37 30 31 32 32 20 20 31 31 31 34 32 00 20 00 00 00 00   ┆ 166460  5266770122  11142      ┆
0x083ea0…083ec0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x084000…084020 (35, 0, 7)  01 68 36 34 35 36 34 0a 01 73 20 30 33 31 34 36 2f 30 30 30 30 30 2f 30 30 30 30 30 0a 01 64 20   ┆ h64564  s 03146/00000/00000  d ┆
0x084020…084040             44 20 31 2e 31 20 39 32 2f 31 30 2f 31 34 20 31 31 3a 30 32 3a 35 38 20 73 77 32 31 30 33 20 31   ┆D 1.1 92/10/14 11:02:58 sw2103 1┆
0x084040…084060             20 30 0a 01 63 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2c 20 73 6f 75 72 63 65   ┆ 0  c SCCS and UNIX used, source┆
0x084060…084080             20 66 69 6c 65 20 39 32 2e 30 34 2e 30 39 2e 0a 01 65 0a 01 75 0a 01 55 0a 01 74 0a 01 54 0a 01   ┆ file 92.04.09.  e  u  U  t  T  ┆
0x084080…0840a0             49 20 31 0a 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆I 1  (*-------------------------┆
0x0840a0…0840c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0840c0…0840e0             2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39   ┆-------- -- -- (C) Copyrigth 199┆
0x0840e0…084100             32 20 20 44 41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 35 50 52 4f 43 2e 50 41 53 0a 2d 2d 0a 2d 2d   ┆2  DANOSI -- -- P5PROC.PAS -- --┆
0x084100…084120             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
                            […0x1…]
0x084140…084160             2d 0a 2d 2d 0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆- -- -- Revisions -- -----------┆
0x084160…084180             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20   ┆--------------------- --        ┆
0x084180…0841a0             39 32 2e 30 34 2e 30 39 20 20 42 42 20 20 20 20 53 63 61 6e 6e 69 6e 67 20 6f 66 20 6f 70 65 6e   ┆92.04.09  BB    Scanning of open┆
0x0841a0…0841c0             20 6c 69 62 20 63 6f 72 72 65 63 74 65 64 2c 20 75 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20   ┆ lib corrected, used in release ┆
0x0841c0…0841e0             31 2e 31 32 0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53   ┆1.12 --  1.1   92.10.14  HEJ   S┆
0x0841e0…084200             43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆CCS and UNIX used. -- ----------┆
0x084200…084220 (35, 0, 8)  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x084220…084240             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43   ┆------------------------- -- SCC┆
0x084240…084260             53 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d   ┆S information -- File   :  %P% -┆
0x084260…084280             2d 09 4d 6f 64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25   ┆- Module :  %M% -- Version:  %I%┆
0x084280…0842a0             0a 2d 2d 09 44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Date   :  %E%  %U% ---------┆
0x0842a0…0842c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0842c0…0842e0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 70   ┆-------------------------- *)  p┆
0x0842e0…084300             72 6f 63 65 64 75 72 65 20 63 6f 64 65 5f 73 65 74 5f 6d 61 78 73 74 61 63 6b 20 28 72 65 73 65   ┆rocedure code_set_maxstack (rese┆
0x084300…084320             72 76 61 74 69 6f 6e 20 3a 20 69 64 65 6e 74 69 66 69 65 72 29 3b 0a 63 6f 6e 73 74 20 6c 6d 5f   ┆rvation : identifier); const lm_┆
0x084320…084340             72 65 67 6e 6f 20 3d 20 2d 32 3b 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f   ┆regno = -2;  begin  out_op_id (o┆
0x084340…084360             70 5f 72 65 76 67 77 2c 20 69 64 5f 6d 61 78 73 74 61 63 6b 29 3b 0a 20 28 2a 20 64 65 63 72 65   ┆p_revgw, id_maxstack);  (* decre┆
0x084360…084380             61 73 65 20 6d 61 78 73 74 61 63 6b 20 62 79 20 3c 72 65 73 65 72 76 61 74 69 6f 6e 3e 20 2a 29   ┆ase maxstack by <reservation> *)┆
0x084380…0843a0             0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 72 65 63 68 77 29 3b 0a 0a 69 66 20 72 65 73 65   ┆ out_opcode (op_rechw);  if rese┆
0x0843a0…0843c0             72 76 61 74 69 6f 6e 20 3d 20 69 64 5f 65 78 69 74 61 70 70 65 74 69 74 65 20 74 68 65 6e 0a 6f   ┆rvation = id_exitappetite then o┆
0x0843c0…0843e0             75 74 5f 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 5f 65 78 69 74 61 70 70 65 74 69 74 65 29 0a   ┆ut_identifier (id_exitappetite) ┆
0x0843e0…084400             65 6c 73 65 0a 28 2a 20 72 65 73 65 72 76 61 74 69 6f 6e 20 3d 20 69 64 5f 62 6f 6e 61 70 70 65   ┆else (* reservation = id_bonappe┆
0x084400…084420 (35, 0, 9)  74 69 74 65 20 2a 29 0a 69 66 20 65 6e 66 6f 72 63 65 64 5f 65 78 63 65 70 74 69 6f 6e 5f 61 70   ┆tite *) if enforced_exception_ap┆
0x084420…084440             70 20 3c 20 30 20 74 68 65 6e 0a 6f 75 74 5f 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 5f 62 6f   ┆p < 0 then out_identifier (id_bo┆
0x084440…084460             6e 61 70 70 65 74 69 74 65 29 0a 65 6c 73 65 0a 6f 75 74 5f 65 78 70 72 28 20 69 64 5f 65 78 69   ┆nappetite) else out_expr( id_exi┆
0x084460…084480             74 61 70 70 65 74 69 74 65 2c 20 28 39 20 28 2a 77 6f 72 64 73 20 66 6f 72 20 68 77 73 74 61 63   ┆tappetite, (9 (*words for hwstac┆
0x084480…0844a0             6b 20 61 6e 64 20 63 6f 75 6e 74 2a 29 20 2b 20 31 20 28 2a 77 6f 72 64 20 66 6f 72 20 70 61 72   ┆k and count*) + 1 (*word for par┆
0x0844a0…0844c0             61 6d 65 74 65 72 2a 29 0a 2b 20 65 6e 66 6f 72 63 65 64 5f 65 78 63 65 70 74 69 6f 6e 5f 61 70   ┆ameter*) + enforced_exception_ap┆
0x0844c0…0844e0             70 29 20 2a 20 32 29 3b 20 28 2a 69 6e 20 62 79 74 65 73 2a 29 0a 0a 6f 75 74 5f 6f 70 63 6f 64   ┆p) * 2); (*in bytes*)  out_opcod┆
0x0844e0…084500             65 20 28 6f 70 5f 75 73 75 62 29 3b 0a 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 63 67   ┆e (op_usub);   out_opcode (op_cg┆
0x084500…084520             72 65 67 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 75 61 64 68 77 2c 20 6c 6d 5f 72   ┆reg); out_op_int (op_uadhw, lm_r┆
0x084520…084540             65 67 6e 6f 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 63 72 70 75 74 29 3b 0a 65   ┆egno);  out_opcode (op_crput); e┆
0x084540…084560             6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 5f 65 78 69 74 3b 0a 0a 76 61 72 0a   ┆nd;   procedure code_exit;  var ┆
0x084560…084580             6b 65 79 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 63 6f 64 65 5f 63 61 6c 6c   ┆key : integer;  begin  code_call┆
0x084580…0845a0             5f 70 72 6f 63 20 28 73 79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 20 28 6b 65 79 2c   ┆_proc (sys_use, ext_lookup (key,┆
0x0845a0…0845c0             20 27 5f 5f 5f 65 78 69 74 5f 5f 5f 72 63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76   ┆ '___exit___rc'), key, const_niv┆
0x0845c0…0845e0             5f 30 2c 20 30 2c 20 30 2c 30 29 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 63   ┆_0, 0, 0,0); end; (* procedure c┆
0x0845e0…084600             6f 64 65 5f 65 78 69 74 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 69 6e   ┆ode_exit *)   procedure  code_in┆
0x084600…084620 (35, 0, 10) 69 74 76 61 72 28 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 74 79 70 65 5f 6f 20 3a 20 69 6e   ┆itvar( kind, offset, type_o : in┆
0x084620…084640             74 65 67 65 72 3b 0a 20 20 76 61 72 20 72 65 66 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72   ┆teger;   var ref_count : integer┆
0x084640…084660             3b 20 76 61 72 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 29 3b 0a 28   ┆; var shadow_count : integer); (┆
0x084660…084680             2a 20 6f 75 74 70 75 74 73 20 74 68 65 20 63 6f 64 65 20 66 6f 72 20 69 6e 69 74 69 61 6c 69 7a   ┆* outputs the code for initializ┆
0x084680…0846a0             69 6e 67 20 76 61 72 69 61 62 6c 65 73 20 6f 66 20 74 79 70 65 3a 20 70 6f 69 6e 74 65 72 2c 20   ┆ing variables of type: pointer, ┆
0x0846a0…0846c0             73 65 6d 61 70 68 6f 72 65 2c 0a 72 65 66 65 72 65 6e 63 65 20 6f 72 20 73 68 61 64 6f 77 20 2a   ┆semaphore, reference or shadow *┆
0x0846c0…0846e0             29 0a 0a 76 61 72 0a 6f 5f 69 2c 20 6f 5f 63 20 3a 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 6b 65   ┆)  var o_i, o_c : identifier; ke┆
0x0846e0…084700             79 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20   ┆y: integer;  begin shadow_count ┆
0x084700…084720             3a 3d 20 30 3b 0a 0a 72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 30 3b 0a 0a 0a 63 61 73 65 20 74 79   ┆:= 0;  ref_count := 0;   case ty┆
0x084720…084740             70 65 5f 6f 20 6f 66 0a 73 68 61 64 6f 77 5f 74 79 70 3a 20 62 65 67 69 6e 0a 69 66 20 6b 69 6e   ┆pe_o of shadow_typ: begin if kin┆
0x084740…084760             64 3d 31 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 6c 64 2c 20 6f 66   ┆d=1 then out_op_int(op_reald, of┆
0x084760…084780             66 73 65 74 29 0a 65 6c 73 65 0a 69 66 20 6f 66 66 73 65 74 3c 3e 30 20 74 68 65 6e 20 0a 6f 75   ┆fset) else if offset<>0 then  ou┆
0x084780…0847a0             74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c 20 6f 66 66 73 65 74 29 3b 0a 0a 69 66 20   ┆t_op_int(op_reasd, offset);  if ┆
0x0847a0…0847c0             68 65 61 70 5f 69 6e 69 74 20 74 68 65 6e 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79   ┆heap_init then code_call_proc(sy┆
0x0847c0…0847e0             73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 68 65 61 70 73 68 5f   ┆s_use, ext_lookup(key, '_heapsh_┆
0x0847e0…084800             5f 5f 72 63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 34 2c 20   ┆__rc'), key, const_niv_0, 0, 4, ┆
0x084800…084820 (35, 0, 11) 30 29 0a 65 6c 73 65 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75 73 65 2c 20   ┆0) else code_call_proc(sys_use, ┆
0x084820…084840             65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 69 6e 69 74 73 68 5f 5f 5f 72 63 27 29 2c   ┆ext_lookup(key, '_initsh___rc'),┆
0x084840…084860             20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 34 2c 20 30 29 3b 0a 6f 75 74   ┆ key, const_niv_0, 0, 4, 0); out┆
0x084860…084880             5f 63 6f 6d 6d 65 6e 74 28 27 20 69 6e 69 74 69 61 6c 69 7a 65 20 73 68 61 64 6f 77 20 6f 62 6a   ┆_comment(' initialize shadow obj┆
0x084880…0848a0             65 63 74 20 27 29 3b 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74 3a 3d 20 31 3b 0a 65 6e 64 3b 0a 0a   ┆ect '); shadow_count:= 1; end;  ┆
0x0848a0…0848c0             70 6f 69 6e 74 65 72 5f 74 79 70 3a 0a 62 65 67 69 6e 0a 69 66 20 68 65 61 70 5f 69 6e 69 74 20   ┆pointer_typ: begin if heap_init ┆
0x0848c0…0848e0             74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 74 65 73 74 20 66 6f 72 20 65 6e 6f 75 67 68 20 6d 65   ┆then begin (* test for enough me┆
0x0848e0…084900             6d 6f 72 79 20 66 6f 72 20 74 68 65 20 4e 45 57 20 63 61 6c 6c 20 20 20 2a 29 0a 20 20 20 20 20   ┆mory for the NEW call   *)      ┆
0x084900…084920             20 28 2a 20 62 65 66 6f 72 65 20 69 6e 69 74 69 61 6c 69 7a 69 6e 67 20 74 68 65 20 70 6f 69 6e   ┆ (* before initializing the poin┆
0x084920…084940             74 65 72 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 29 0a 20 20 20 20 20 20 28 2a 20 54 68 65 20 61 64   ┆ter component *)       (* The ad┆
0x084940…084960             64 72 65 73 73 20 6f 66 20 74 68 65 20 68 65 61 70 20 65 6c 65 6d 65 6e 74 20 69 73 20 6f 6e 20   ┆dress of the heap element is on ┆
0x084960…084980             74 68 65 20 73 74 61 63 6b 2c 20 6b 69 6e 64 20 3d 20 32 20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f   ┆the stack, kind = 2 *) out_nl; o┆
0x084980…0849a0             75 74 5f 74 6f 6b 65 6e 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 28 69 64 5f 6e 69   ┆ut_token(zbegin); out_p_id(id_ni┆
0x0849a0…0849c0             6c 5f 65 6c 65 6d 65 6e 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 28 69 64 5f 65 6e 64 5f 6e 69 6c 5f   ┆l_element); out_p_id(id_end_nil_┆
0x0849c0…0849e0             74 65 73 74 29 3b 20 28 2a 20 69 6e 73 65 72 74 65 64 20 62 79 20 42 42 20 39 32 30 34 30 39 20   ┆test); (* inserted by BB 920409 ┆
0x0849e0…084a00             2a 29 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d   ┆*) out_token(zendlist); out_comm┆
0x084a00…084a20 (35, 0, 12) 65 6e 74 28 27 74 65 73 74 20 72 65 73 75 6c 74 3c 3e 6e 69 6c 27 29 3b 0a 6f 75 74 5f 6f 70 63   ┆ent('test result<>nil'); out_opc┆
0x084a20…084a40             6f 64 65 28 6f 70 5f 72 65 61 78 64 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61   ┆ode(op_reaxd); out_op_int(op_rea┆
0x084a40…084a60             73 64 2c 20 2d 32 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 74 6e 69 6c 6c 29 3b 0a 6f   ┆sd, -2); out_opcode(op_tnill); o┆
0x084a60…084a80             75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 7a 6e 65 2c 20 69 64 5f 6e 69 6c 5f 65 6c 65 6d 65 6e   ┆ut_op_id(op_jmzne, id_nil_elemen┆
0x084a80…084aa0             74 29 3b 0a 65 6e 64 3b 20 28 2a 20 68 65 61 70 69 6e 69 74 20 2a 29 0a 0a 28 2a 70 75 73 68 20   ┆t); end; (* heapinit *)  (*push ┆
0x084aa0…084ac0             6e 69 6c 76 61 6c 75 65 20 6f 6e 20 73 74 61 63 6b 2e 20 73 74 6f 72 65 20 62 61 73 65 5f 62 79   ┆nilvalue on stack. store base_by┆
0x084ac0…084ae0             74 65 20 69 6e 20 61 64 64 72 65 73 73 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72   ┆te in address *) out_op_int(op_r┆
0x084ae0…084b00             65 63 68 77 2c 63 6f 6e 73 74 5f 6e 69 6c 5f 76 61 72 29 3b 0a 69 66 20 6b 69 6e 64 3d 31 20 74   ┆echw,const_nil_var); if kind=1 t┆
0x084b00…084b20             68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 6c 62 2c 6f 66 66 73 65 74 29 0a   ┆hen out_op_int(op_stvlb,offset) ┆
0x084b20…084b40             65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 73 62 2c 20 6f 66 66 73 65 74   ┆else out_op_int(op_stvsb, offset┆
0x084b40…084b60             29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 69 6e 69 74 69 61 6c 69 7a 65 20 70 6f 69 6e   ┆); out_comment(' initialize poin┆
0x084b60…084b80             74 65 72 20 6f 62 6a 65 63 74 20 27 29 3b 0a 69 66 20 68 65 61 70 5f 69 6e 69 74 20 74 68 65 6e   ┆ter object '); if heap_init then┆
0x084b80…084ba0             0a 62 65 67 69 6e 20 28 2a 20 70 75 74 20 6c 61 62 65 6c 20 66 6f 72 20 6e 69 6c 20 74 65 73 74   ┆ begin (* put label for nil test┆
0x084ba0…084bc0             20 69 6e 64 69 63 61 74 69 6f 6e 20 6e 6f 20 6d 65 6d 6f 72 79 20 2a 29 0a 6f 75 74 5f 6f 70 5f   ┆ indication no memory *) out_op_┆
0x084bc0…084be0             69 64 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 65 6e 64 5f 6e 69 6c 5f 74 65 73 74 29 3b 0a 6f   ┆id(op_jmprw, id_end_nil_test); o┆
0x084be0…084c00             75 74 5f 6c 61 62 65 6c 28 69 64 5f 6e 69 6c 5f 65 6c 65 6d 65 6e 74 29 3b 0a 6f 75 74 5f 6f 70   ┆ut_label(id_nil_element); out_op┆
0x084c00…084c20 (35, 0, 13) 5f 69 6e 74 28 6f 70 5f 73 74 6e 68 62 2c 20 34 29 3b 20 28 2a 20 6e 6f 20 63 6f 6e 74 65 78 74   ┆_int(op_stnhb, 4); (* no context┆
0x084c20…084c40             20 65 76 61 6c 20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 65 6e   ┆ eval *) out_nl; out_label(id_en┆
0x084c40…084c60             64 5f 6e 69 6c 5f 74 65 73 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a   ┆d_nil_test); out_nl; out_token(z┆
0x084c60…084c80             65 6e 64 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 70 6f 69 6e 74 65 72 20 2a 29 0a 0a 73   ┆end); end; end; (* pointer *)  s┆
0x084c80…084ca0             65 6d 5f 74 79 70 3a 20 62 65 67 69 6e 0a 69 66 20 6b 69 6e 64 3d 31 20 74 68 65 6e 0a 6f 75 74   ┆em_typ: begin if kind=1 then out┆
0x084ca0…084cc0             5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 6c 64 2c 20 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 69   ┆_op_int(op_reald, offset) else i┆
0x084cc0…084ce0             66 20 6f 66 66 73 65 74 3c 3e 30 20 74 68 65 6e 20 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f   ┆f offset<>0 then  out_op_int(op_┆
0x084ce0…084d00             72 65 61 73 64 2c 20 6f 66 66 73 65 74 29 3b 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73   ┆reasd, offset); code_call_proc(s┆
0x084d00…084d20             79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 69 6e 69 74 73 65   ┆ys_use, ext_lookup(key, '_initse┆
0x084d20…084d40             6d 5f 5f 72 63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 34 2c   ┆m__rc'), key, const_niv_0, 0, 4,┆
0x084d40…084d60             20 30 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 69 6e 69 74 69 61 6c 69 7a 65 20 73 65   ┆ 0); out_comment(' initialize se┆
0x084d60…084d80             6d 61 70 68 6f 72 65 20 6f 62 6a 65 63 74 20 27 29 3b 0a 65 6e 64 3b 0a 0a 72 65 66 5f 74 79 70   ┆maphore object '); end;  ref_typ┆
0x084d80…084da0             3a 0a 62 65 67 69 6e 0a 69 66 20 6b 69 6e 64 3d 31 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e   ┆: begin if kind=1 then out_op_in┆
0x084da0…084dc0             74 28 6f 70 5f 72 65 61 6c 64 2c 20 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 69 66 20 6f 66 66 73   ┆t(op_reald, offset) else if offs┆
0x084dc0…084de0             65 74 3c 3e 30 20 74 68 65 6e 20 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c   ┆et<>0 then  out_op_int(op_reasd,┆
0x084de0…084e00             20 6f 66 66 73 65 74 29 3b 0a 69 66 20 68 65 61 70 5f 69 6e 69 74 20 74 68 65 6e 0a 63 6f 64 65   ┆ offset); if heap_init then code┆
0x084e00…084e20 (35, 0, 14) 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b   ┆_call_proc(sys_use, ext_lookup(k┆
0x084e20…084e40             65 79 2c 20 27 5f 68 65 61 70 72 65 66 5f 5f 72 63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f   ┆ey, '_heapref__rc'), key, const_┆
0x084e40…084e60             6e 69 76 5f 30 2c 20 30 2c 20 34 2c 20 30 29 0a 65 6c 73 65 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70   ┆niv_0, 0, 4, 0) else code_call_p┆
0x084e60…084e80             72 6f 63 28 73 79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 69   ┆roc(sys_use, ext_lookup(key, '_i┆
0x084e80…084ea0             6e 69 74 72 65 66 5f 5f 72 63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20   ┆nitref__rc'), key, const_niv_0, ┆
0x084ea0…084ec0             30 2c 20 34 2c 20 30 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 69 6e 69 74 69 61 6c 69   ┆0, 4, 0); out_comment(' initiali┆
0x084ec0…084ee0             7a 65 20 72 65 66 65 72 65 6e 63 65 20 6f 62 6a 65 63 74 20 27 29 3b 0a 72 65 66 5f 63 6f 75 6e   ┆ze reference object '); ref_coun┆
0x084ee0…084f00             74 3a 3d 20 31 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65   ┆t:= 1; end; else error(pass4code┆
0x084f00…084f20             5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 63 6f 64 65 5f 69 6e 69   ┆_error); end;  end  (*  code_ini┆
0x084f20…084f40             74 76 61 72 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 73 74 61   ┆tvar  *);    procedure  code_sta┆
0x084f40…084f60             74 5f 74 6f 5f 64 79 6e 28 20 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 62 65 67   ┆t_to_dyn( size : integer );  beg┆
0x084f60…084f80             69 6e 0a 0a 28 2a 20 20 74 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 6d 6f 76 65 73 20 28 20 63   ┆in  (*  this procedure moves ( c┆
0x084f80…084fa0             6f 6e 63 65 70 74 75 61 6c 6c 79 20 21 21 20 29 20 61 20 62 6c 6f 63 6b 20 6f 66 20 27 73 69 7a   ┆onceptually !! ) a block of 'siz┆
0x084fa0…084fc0             65 27 20 62 79 74 65 73 0a 28 20 77 68 69 63 68 20 6d 75 73 74 20 62 65 20 6f 6e 65 20 6f 72 20   ┆e' bytes ( which must be one or ┆
0x084fc0…084fe0             6d 6f 72 65 20 73 65 74 73 20 29 20 66 72 6f 6d 20 74 68 65 20 73 74 61 74 69 63 20 70 61 72 74   ┆more sets ) from the static part┆
0x084fe0…085000             20 6f 66 20 74 68 65 20 0a 65 76 61 6c 75 61 74 69 6f 6e 20 73 74 61 63 6b 2c 20 74 6f 20 74 68   ┆ of the  evaluation stack, to th┆
0x085000…085020 (35, 0, 15) 65 20 64 79 6e 61 6d 69 63 20 70 61 72 74 2e 20 20 2a 29 0a 0a 63 6f 6e 74 65 78 74 5f 65 76 61   ┆e dynamic part.  *)  context_eva┆
0x085020…085040             6c 28 20 2d 73 69 7a 65 20 29 0a 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f   ┆l( -size )  end;   procedure  co┆
0x085040…085060             64 65 5f 64 79 6e 5f 74 6f 5f 73 74 61 74 28 20 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 20 29   ┆de_dyn_to_stat( size : integer )┆
0x085060…085080             3b 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 74 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 68 61 73 20   ┆;  begin  (* this procedure has ┆
0x085080…0850a0             74 68 65 20 6f 70 70 6f 73 69 74 65 20 65 66 66 65 63 74 20 61 73 20 27 63 6f 64 65 5f 73 74 61   ┆the opposite effect as 'code_sta┆
0x0850a0…0850c0             74 5f 74 6f 5f 64 79 6e 27 20 2a 29 0a 0a 63 6f 6e 74 65 78 74 5f 65 76 61 6c 28 20 73 69 7a 65   ┆t_to_dyn' *)  context_eval( size┆
0x0850c0…0850e0             20 29 0a 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 5f 65 78 63 65 70 74 69   ┆ )  end;  procedure code_excepti┆
0x0850e0…085100             6f 6e 3b 0a 63 6f 6e 73 74 0a 68 61 72 64 5f 73 69 7a 65 5f 6d 61 78 20 3d 20 32 30 3b 0a 0a 76   ┆on; const hard_size_max = 20;  v┆
0x085100…085120             61 72 0a 6b 65 79 2c 20 69 2c 20 6a 2c 20 70 2c 20 72 2c 20 77 2c 20 68 61 72 64 5f 73 69 7a 65   ┆ar key, i, j, p, r, w, hard_size┆
0x085120…085140             2c 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 2c 6f 6c 64 5f 68 77 5f 73 69 7a 65 20 3a 20 69 6e   ┆,number_of_elem,old_hw_size : in┆
0x085140…085160             74 65 67 65 72 3b 0a 68 61 72 64 5f 73 65 74 20 3a 20 61 72 72 61 79 20 5b 20 30 20 2e 2e 20 68   ┆teger; hard_set : array [ 0 .. h┆
0x085160…085180             61 72 64 5f 73 69 7a 65 5f 6d 61 78 20 5d 20 6f 66 20 69 6e 74 65 67 65 72 3b 0a 63 61 6c 6c 6b   ┆ard_size_max ] of integer; callk┆
0x085180…0851a0             69 6e 64 20 3a 20 63 61 6c 6c 6d 6f 64 65 73 3b 0a 0a 62 65 67 69 6e 0a 0a 69 66 28 20 65 78 63   ┆ind : callmodes;  begin  if( exc┆
0x0851a0…0851c0             5f 64 65 73 63 72 2e 73 74 61 74 65 20 3d 20 31 20 29 20 61 6e 64 20 28 20 65 70 69 6c 6f 67 5f   ┆_descr.state = 1 ) and ( epilog_┆
0x0851c0…0851e0             79 65 73 20 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 6c 64 5f 68 77 5f 73 69 7a 65 20 3a 3d 20   ┆yes ) then begin old_hw_size := ┆
0x0851e0…085200             68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 74 73   ┆hw_stack_size; out_opcode(op_sts┆
0x085200…085220 (35, 1, 1)  74 63 29 3b 0a 69 66 20 6d 65 61 73 75 72 65 6d 65 6e 74 5f 79 65 73 20 74 68 65 6e 0a 63 6f 64   ┆tc); if measurement_yes then cod┆
0x085220…085240             65 5f 63 61 6c 6c 5f 70 72 6f 63 28 20 73 79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70   ┆e_call_proc( sys_use, ext_lookup┆
0x085240…085260             28 20 6b 65 79 2c 20 27 74 72 61 70 5f 63 6f 64 65 5f 72 63 27 20 29 2c 20 0a 20 20 6b 65 79 2c   ┆( key, 'trap_code_rc' ),    key,┆
0x085260…085280             20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 30 20 2c 30 29 3b 0a 0a 28 2a 64 75 6d 70 20   ┆ const_niv_0, 0, 0 ,0);  (*dump ┆
0x085280…0852a0             74 68 65 20 68 77 5f 73 74 61 63 6b 20 61 6e 64 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20 68 77   ┆the hw_stack and remember the hw┆
0x0852a0…0852c0             73 74 61 63 6b 73 69 7a 65 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 61 61 64 2c   ┆stacksize*)  out_op_id(op_reaad,┆
0x0852c0…0852e0             69 64 5f 65 78 69 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 73 74 76 67 61 2c 69 64 5f   ┆id_exit); out_op_id(op_stvga,id_┆
0x0852e0…085300             65 78 70 6f 69 6e 74 29 3b 0a 0a 28 2a 6f 75 74 70 75 74 20 63 6f 64 65 20 74 6f 20 64 65 63 72   ┆expoint);  (*output code to decr┆
0x085300…085320             65 61 73 65 20 6c 6d 20 28 69 6e 20 74 68 65 20 72 65 67 2e 20 73 65 74 29 20 62 79 20 65 78 69   ┆ease lm (in the reg. set) by exi┆
0x085320…085340             74 61 70 70 65 74 69 74 65 20 2a 29 0a 0a 63 6f 64 65 5f 73 65 74 5f 6d 61 78 73 74 61 63 6b 28   ┆tappetite *)  code_set_maxstack(┆
0x085340…085360             69 64 5f 65 78 69 74 61 70 70 65 74 69 74 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72   ┆id_exitappetite); out_op_id(op_r┆
0x085360…085380             65 76 67 77 2c 69 64 5f 65 78 63 6f 64 65 29 3b 0a 0a 77 69 74 68 20 65 78 63 5f 64 65 73 63 72   ┆evgw,id_excode);  with exc_descr┆
0x085380…0853a0             20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 69 6e 74 65 72 6e 61 6c 20 74 68 65 6e 0a 63 61 6c 6c 6b   ┆ do begin if internal then callk┆
0x0853a0…0853c0             69 6e 64 20 3a 3d 20 69 6e 74 5f 63 61 6c 6c 0a 65 6c 73 65 0a 63 61 6c 6c 6b 69 6e 64 20 3a 3d   ┆ind := int_call else callkind :=┆
0x0853c0…0853e0             20 67 65 74 6b 69 6e 64 20 28 6b 65 79 29 3b 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 20 28   ┆ getkind (key); code_call_proc (┆
0x0853e0…085400             67 65 6e 65 72 61 6c 5f 75 73 65 2c 20 63 61 6c 6c 6b 69 6e 64 2c 20 6b 65 79 2c 20 63 2e 6e 69   ┆general_use, callkind, key, c.ni┆
0x085400…085420 (35, 1, 2)  76 2c 20 6c 69 78 2c 20 32 2c 30 29 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 20 63 61 6c 63 75 6c 61 74   ┆v, lix, 2,0); end;  (*  calculat┆
0x085420…085440             65 20 3a 20 20 68 61 72 64 5f 73 65 74 5b 20 30 20 2e 2e 20 68 61 72 64 5f 73 69 7a 65 20 5d 20   ┆e :  hard_set[ 0 .. hard_size ] ┆
0x085440…085460             20 20 20 20 20 20 2a 29 0a 0a 69 66 20 28 20 63 5f 65 78 63 5f 6d 61 78 20 64 69 76 20 31 36 20   ┆      *)  if ( c_exc_max div 16 ┆
0x085460…085480             29 20 3e 20 68 61 72 64 5f 73 69 7a 65 5f 6d 61 78 20 74 68 65 6e 0a 65 72 72 6f 72 28 63 6f 6d   ┆) > hard_size_max then error(com┆
0x085480…0854a0             70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 66 6f 72 20 69 20 3a 3d 20 30 20 74 6f 20 68 61 72   ┆piler_error);  for i := 0 to har┆
0x0854a0…0854c0             64 5f 73 69 7a 65 5f 6d 61 78 20 64 6f 20 20 68 61 72 64 5f 73 65 74 5b 20 69 20 5d 20 3a 3d 20   ┆d_size_max do  hard_set[ i ] := ┆
0x0854c0…0854e0             30 3b 0a 0a 66 6f 72 20 69 20 3a 3d 20 30 20 74 6f 20 63 5f 65 78 63 5f 6d 61 78 20 64 6f 0a 69   ┆0;  for i := 0 to c_exc_max do i┆
0x0854e0…085500             66 20 69 20 69 6e 20 65 78 63 5f 68 61 72 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 77 20 3a 3d   ┆f i in exc_hard then begin  w :=┆
0x085500…085520             20 69 20 64 69 76 20 31 36 3b 20 20 70 20 3a 3d 20 69 20 6d 6f 64 20 31 36 3b 0a 72 20 3a 3d 20   ┆ i div 16;  p := i mod 16; r := ┆
0x085520…085540             31 3b 20 20 66 6f 72 20 6a 20 3a 3d 20 70 20 74 6f 20 31 34 20 64 6f 20 72 20 3a 3d 20 72 2a 32   ┆1;  for j := p to 14 do r := r*2┆
0x085540…085560             3b 0a 68 61 72 64 5f 73 65 74 5b 20 77 20 5d 20 3a 3d 20 68 61 72 64 5f 73 65 74 5b 20 77 20 5d   ┆; hard_set[ w ] := hard_set[ w ]┆
0x085560…085580             20 2b 20 72 0a 0a 65 6e 64 3b 0a 0a 68 61 72 64 5f 73 69 7a 65 20 3a 3d 20 68 61 72 64 5f 73 69   ┆ + r  end;  hard_size := hard_si┆
0x085580…0855a0             7a 65 5f 6d 61 78 3b 0a 77 68 69 6c 65 20 28 20 68 61 72 64 5f 73 65 74 5b 20 68 61 72 64 5f 73   ┆ze_max; while ( hard_set[ hard_s┆
0x0855a0…0855c0             69 7a 65 20 5d 20 3d 20 30 20 29 20 61 6e 64 20 28 20 68 61 72 64 5f 73 69 7a 65 20 3e 20 30 20   ┆ize ] = 0 ) and ( hard_size > 0 ┆
0x0855c0…0855e0             29 20 64 6f 0a 68 61 72 64 5f 73 69 7a 65 20 3a 3d 20 68 61 72 64 5f 73 69 7a 65 20 2d 20 31 3b   ┆) do hard_size := hard_size - 1;┆
0x0855e0…085600             0a 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 20 3a 3d 20 68 61 72 64 5f 73 69 7a 65 20 2b 20 31   ┆ number_of_elem := hard_size + 1┆
0x085600…085620 (35, 1, 3)  3b 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a   ┆;  out_nl;  out_nl; out_token (z┆
0x085620…085640             62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 68 61 72 64 73 65 74 29 3b 0a 6f   ┆begin); out_p_id (id_hardset); o┆
0x085640…085660             75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 0a 28 2a   ┆ut_token (zendlist); out_nl;  (*┆
0x085660…085680             63 6f 64 65 20 66 6f 72 20 74 65 73 74 69 6e 67 20 69 66 20 69 74 20 77 61 73 20 61 20 68 61 72   ┆code for testing if it was a har┆
0x085680…0856a0             64 20 65 78 65 63 70 74 69 6f 6e 20 6f 72 20 6e 6f 74 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 28   ┆d execption or not *) out_op_id(┆
0x0856a0…0856c0             6f 70 5f 72 65 76 67 77 2c 69 64 5f 65 78 63 6f 64 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f   ┆op_revgw,id_excode); out_op_id(o┆
0x0856c0…0856e0             70 5f 72 65 61 61 64 2c 69 64 5f 68 61 72 64 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28   ┆p_reaad,id_hardset); out_op_int(┆
0x0856e0…085700             6f 70 5f 72 65 63 68 77 2c 77 6f 72 64 5f 6c 65 6e 67 74 68 20 2a 20 6e 75 6d 62 65 72 5f 6f 66   ┆op_rechw,word_length * number_of┆
0x085700…085720             5f 65 6c 65 6d 20 2b 20 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 28 2a 6d 6f 76 65 20 68 61 72   ┆_elem + word_length); (*move har┆
0x085720…085740             64 73 65 74 20 74 6f 20 74 68 65 20 73 74 61 63 6b 2a 29 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f   ┆dset to the stack*) out_specopco┆
0x085740…085760             64 65 28 6f 70 5f 72 65 76 73 6d 2c 77 6f 72 64 5f 6c 65 6e 67 74 68 20 2a 20 6e 75 6d 62 65 72   ┆de(op_revsm,word_length * number┆
0x085760…085780             5f 6f 66 5f 65 6c 65 6d 20 2b 20 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 28 2a 74 65 73 74 20   ┆_of_elem + word_length); (*test ┆
0x085780…0857a0             6d 65 6d 62 65 72 73 68 69 70 20 6f 66 20 68 61 72 64 73 65 74 2a 29 0a 6f 75 74 5f 73 70 65 63   ┆membership of hardset*) out_spec┆
0x0857a0…0857c0             6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 74 6d 2c 2d 28 77 6f 72 64 5f 6c 65 6e 67 74 68 20 2a 20   ┆opcode(op_settm,-(word_length * ┆
0x0857c0…0857e0             6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 20 2b 20 77 6f 72 64 5f 6c 65 6e 67 74 68 29 29 3b 0a   ┆number_of_elem + word_length)); ┆
0x0857e0…085800             0a 28 2a 6a 75 6d 70 20 74 6f 20 65 78 69 74 20 70 6f 69 6e 74 20 69 66 20 68 61 72 64 20 65 78   ┆ (*jump to exit point if hard ex┆
0x085800…085820 (35, 1, 4)  63 65 70 74 69 6f 6e 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 7a 67 74 2c 69 64   ┆ception *) out_op_id(op_jmzgt,id┆
0x085820…085840             5f 65 78 69 74 29 3b 0a 0a 28 2a 69 66 20 6e 6f 74 20 68 61 72 64 20 65 78 63 65 70 74 69 6f 6e   ┆_exit);  (*if not hard exception┆
0x085840…085860             20 74 68 65 6e 2a 29 0a 28 2a 72 65 65 73 74 61 62 6c 69 73 68 20 6d 61 78 73 74 61 63 6b 2a 29   ┆ then*) (*reestablish maxstack*)┆
0x085860…085880             0a 63 6f 64 65 5f 73 65 74 5f 6d 61 78 73 74 61 63 6b 28 69 64 5f 62 6f 6e 61 70 70 65 74 69 74   ┆ code_set_maxstack(id_bonappetit┆
0x085880…0858a0             65 29 3b 0a 28 2a 72 65 73 74 6f 72 65 20 65 78 63 65 70 74 69 6f 6e 70 6f 69 6e 74 2a 29 0a 6f   ┆e); (*restore exceptionpoint*) o┆
0x0858a0…0858c0             75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 61 61 64 2c 69 64 5f 65 78 63 65 70 74 69 6f 6e 29 3b   ┆ut_op_id(op_reaad,id_exception);┆
0x0858c0…0858e0             0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 73 74 76 67 61 2c 69 64 5f 65 78 70 6f 69 6e 74 29 3b   ┆ out_op_id(op_stvga,id_expoint);┆
0x0858e0…085900             0a 28 2a 72 65 65 73 74 61 62 6c 69 73 68 20 68 77 5f 73 74 61 63 6b 2a 29 0a 6f 75 74 5f 6f 70   ┆ (*reestablish hw_stack*) out_op┆
0x085900…085920             63 6f 64 65 28 6f 70 5f 72 65 73 74 63 29 3b 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d   ┆code(op_restc); hw_stack_size :=┆
0x085920…085940             20 6f 6c 64 5f 68 77 5f 73 69 7a 65 3b 0a 28 2a 6a 75 6d 70 20 74 6f 20 70 6f 69 6e 74 20 77 68   ┆ old_hw_size; (*jump to point wh┆
0x085940…085960             65 72 65 20 65 78 63 65 70 74 69 6f 6e 20 6f 63 63 75 72 65 64 2a 29 0a 6f 75 74 5f 6f 70 5f 69   ┆ere exception occured*) out_op_i┆
0x085960…085980             64 28 6f 70 5f 6a 6d 70 67 61 2c 69 64 5f 65 78 69 63 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 6f   ┆d(op_jmpga,id_exic);  out_nl;  o┆
0x085980…0859a0             75 74 5f 6e 6c 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 68 61 72 64 73 65 74 20 29 3b   ┆ut_nl;  out_label( id_hardset );┆
0x0859a0…0859c0             0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 63 6f 6e 73 74 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28   ┆ out_token(zconst); out_integer(┆
0x0859c0…0859e0             6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 20 2a 20 77 6f 72 64 5f 6c 65 6e 67 74 68 20 2b 20 77   ┆number_of_elem * word_length + w┆
0x0859e0…085a00             6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 0a 66 6f 72 20 69 20 3a 3d 20 30 20 74 6f 20 68 61 72 64   ┆ord_length);  for i := 0 to hard┆
0x085a00…085a20 (35, 1, 5)  5f 73 69 7a 65 20 64 6f 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 61 62 28 20   ┆_size do begin out_nl; out_tab( ┆
0x085a20…085a40             31 35 20 29 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 68 61 72 64 5f 73 65 74 5b 20 69 20   ┆15 );  out_integer( hard_set[ i ┆
0x085a40…085a60             5d 20 29 0a 65 6e 64 3b 0a 28 2a 6f 75 74 70 75 74 20 73 69 7a 65 20 6f 66 20 68 61 72 64 73 65   ┆] ) end; (*output size of hardse┆
0x085a60…085a80             74 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 61 62 28 31 35 29 3b 20 6f 75 74 5f 69 6e 74   ┆t*) out_nl; out_tab(15); out_int┆
0x085a80…085aa0             65 67 65 72 28 77 6f 72 64 5f 6c 65 6e 67 74 68 2a 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 29   ┆eger(word_length*number_of_elem)┆
0x085aa0…085ac0             3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 20 20 28 2a   ┆;  out_nl; out_token (zend);  (*┆
0x085ac0…085ae0             20 65 6e 64 20 6f 66 20 63 6f 6e 73 74 20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b   ┆ end of const *) out_nl; out_tok┆
0x085ae0…085b00             65 6e 20 28 7a 65 6e 64 29 3b 20 20 28 2a 20 65 6e 64 20 6f 66 20 62 6c 6f 63 6b 20 2a 29 0a 6f   ┆en (zend);  (* end of block *) o┆
0x085b00…085b20             75 74 5f 6e 6c 3b 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 69 66 20 65 70 69 6c   ┆ut_nl;  end  else begin  if epil┆
0x085b20…085b40             6f 67 5f 79 65 73 20 74 68 65 6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f   ┆og_yes then error(pass4code_erro┆
0x085b40…085b60             72 29 3b 20 28 2a 20 65 78 63 65 70 74 69 6f 6e 6e 6f 74 20 64 65 66 69 6e 65 64 20 2a 29 3b 0a   ┆r); (* exceptionnot defined *); ┆
0x085b60…085b80             0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 65 78 63 65 70 74 69   ┆ out_op_id (op_jmprw, id_excepti┆
0x085b80…085ba0             6f 6e 29 3b 0a 0a 65 6e 64 0a 0a 65 6e 64 20 28 2a 20 63 6f 64 65 5f 65 78 63 65 70 74 69 6f 6e   ┆on);  end  end (* code_exception┆
0x085ba0…085bc0             20 20 2a 29 3b 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 72 65 6d 6f 76 65 28 63 6f 75   ┆  *); procedure  code_remove(cou┆
0x085bc0…085be0             6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 64 79 6e 61 6d 69 63 73 20 3a 20 62 6f 6f 6c 65 61 6e   ┆nt : integer; dynamics : boolean┆
0x085be0…085c00             3b 20 74 79 70 65 5f 6f 20 3a 20 69 6e 74 65 67 65 72 29 3b 0a 0a 76 61 72 0a 77 6f 72 6b 5f 73   ┆; type_o : integer);  var work_s┆
0x085c00…085c20 (35, 1, 6)  69 7a 65 20 20 20 20 2c 0a 63 6f 6e 74 5f 68 77 5f 73 69 7a 65 20 2c 0a 72 65 70 5f 68 77 5f 73   ┆ize    , cont_hw_size , rep_hw_s┆
0x085c20…085c40             69 7a 65 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6a 75 6d 70 20 20 20 20 20 20 20 20 20 3a 20 6f   ┆ize  : integer; jump         : o┆
0x085c40…085c60             70 63 6f 64 65 3b 0a 0a 62 65 67 69 6e 0a 28 2a 20 69 66 20 6e 6f 74 20 64 79 6e 61 6d 69 63 73   ┆pcode;  begin (* if not dynamics┆
0x085c60…085c80             20 74 68 65 6e 0a 72 65 6d 6f 76 65 20 28 20 61 6e 64 20 63 68 65 63 6b 20 3d 20 4e 49 4c 20 29   ┆ then remove ( and check = NIL )┆
0x085c80…085ca0             20 27 63 6f 75 6e 74 27 20 76 61 72 69 61 62 6c 65 73 0a 66 72 6f 6d 20 74 68 65 20 63 68 61 69   ┆ 'count' variables from the chai┆
0x085ca0…085cc0             6e 20 6f 66 20 73 68 61 64 6f 77 73 20 6f 72 20 72 65 66 65 72 65 6e 63 65 73 0a 65 6c 73 65 20   ┆n of shadows or references else ┆
0x085cc0…085ce0             0a 72 65 6d 6f 76 65 20 61 6c 6c 20 73 68 61 64 6f 77 20 6f 72 20 72 65 66 65 72 65 6e 63 65 20   ┆ remove all shadow or reference ┆
0x085ce0…085d00             76 61 72 69 61 62 6c 65 73 20 6f 66 20 6c 6f 63 61 6c 20 66 72 61 6d 65 20 66 72 6f 6d 20 74 68   ┆variables of local frame from th┆
0x085d00…085d20             65 20 63 68 61 69 6e 20 0a 2a 29 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28   ┆e chain  *)  out_nl; out_token (┆
0x085d20…085d40             7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 20 28 69 64 5f 72 65 70 29 3b 0a 6f 75 74   ┆zbegin); out_p_id  (id_rep); out┆
0x085d40…085d60             5f 70 5f 69 64 20 20 28 69 64 5f 63 6f 6e 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 20 28 69 64 5f   ┆_p_id  (id_cont); out_p_id  (id_┆
0x085d60…085d80             65 6e 64 72 65 70 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 69   ┆endrep); out_token (zendlist); i┆
0x085d80…085da0             66 20 74 79 70 65 5f 6f 20 3d 20 73 68 61 64 6f 77 5f 74 79 70 20 74 68 65 6e 0a 6f 75 74 5f 63   ┆f type_o = shadow_typ then out_c┆
0x085da0…085dc0             6f 6d 6d 65 6e 74 28 20 27 20 20 20 72 65 6d 6f 76 65 20 61 6e 64 20 63 68 65 63 6b 20 73 68 61   ┆omment( '   remove and check sha┆
0x085dc0…085de0             64 6f 77 20 76 61 72 69 61 62 6c 65 73 2e 27 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 63 6f 6d 6d 65   ┆dow variables.' ) else out_comme┆
0x085de0…085e00             6e 74 28 20 27 20 20 20 72 65 6d 6f 76 65 20 61 6e 64 20 63 68 65 63 6b 20 72 65 66 65 72 65 6e   ┆nt( '   remove and check referen┆
0x085e00…085e20 (35, 1, 7)  63 65 20 76 61 72 69 61 62 6c 65 73 2e 27 20 29 3b 0a 0a 69 66 20 64 79 6e 61 6d 69 63 73 20 74   ┆ce variables.' );  if dynamics t┆
0x085e20…085e40             68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 72 65 61 6c 64 2c 20   ┆hen begin out_op_int (op_reald, ┆
0x085e40…085e60             2d 31 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27 20 67 65 74 20 6c 66 20 27 29 3b 0a 77   ┆-1); out_comment (' get lf '); w┆
0x085e60…085e80             6f 72 6b 5f 73 69 7a 65 20 3a 3d 20 36 3b 0a 6a 75 6d 70 20 20 20 20 20 20 3a 3d 20 6f 70 5f 6a   ┆ork_size := 6; jump      := op_j┆
0x085e80…085ea0             6d 70 72 77 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 66 20 63 6f 75 6e 74 20 3e 20 31 20 74 68 65 6e   ┆mprw; end else if count > 1 then┆
0x085ea0…085ec0             0a 62 65 67 69 6e 0a 77 6f 72 6b 5f 73 69 7a 65 20 3a 3d 20 32 3b 0a 6a 75 6d 70 20 20 20 20 20   ┆ begin work_size := 2; jump     ┆
0x085ec0…085ee0             20 3a 3d 20 6f 70 5f 6a 6d 7a 6e 65 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 72 65 63   ┆ := op_jmzne; out_op_int (op_rec┆
0x085ee0…085f00             68 77 2c 20 63 6f 75 6e 74 29 3b 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f   ┆hw, count); end;  out_label (id_┆
0x085f00…085f20             72 65 70 29 3b 0a 72 65 70 5f 68 77 5f 73 69 7a 65 20 3a 3d 20 68 77 5f 73 74 61 63 6b 5f 73 69   ┆rep); rep_hw_size := hw_stack_si┆
0x085f20…085f40             7a 65 3b 0a 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 68 61 64 6f 77 5f 74 79 70 20 74 68 65 6e   ┆ze;  if type_o = shadow_typ then┆
0x085f40…085f60             0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 72 65 76 67 61 2c 20 69 64 5f 73 68 61 64 6f 77   ┆ out_op_id  (op_revga, id_shadow┆
0x085f60…085f80             63 68 61 69 6e 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 72 65 76 67 61   ┆chain) else out_op_id  (op_revga┆
0x085f80…085fa0             2c 20 69 64 5f 72 65 66 63 68 61 69 6e 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 20 6f 70   ┆, id_refchain);  out_opcode ( op┆
0x085fa0…085fc0             5f 72 65 76 70 64 20 29 3b 0a 0a 69 66 20 64 79 6e 61 6d 69 63 73 20 74 68 65 6e 0a 62 65 67 69   ┆_revpd );  if dynamics then begi┆
0x085fc0…085fe0             6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 20 28 6f 70 5f 72 65 61 78 64 29 3b 0a 6f 75 74 5f 6f 70   ┆n out_opcode  (op_reaxd); out_op┆
0x085fe0…086000             5f 69 6e 74 20 20 28 6f 70 5f 72 65 76 73 77 2c 20 2d 39 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e   ┆_int  (op_revsw, -9); out_commen┆
0x086000…086020 (35, 1, 8)  74 20 28 27 20 70 75 73 68 20 6c 66 2e 64 69 73 70 20 27 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆t (' push lf.disp '); out_opcode┆
0x086020…086040             20 20 28 6f 70 5f 75 6c 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 20 28 6f 70 5f 6a 6d 7a 6e   ┆  (op_ult); out_op_id   (op_jmzn┆
0x086040…086060             65 2c 20 69 64 5f 65 6e 64 72 65 70 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 20 28 6f 70 5f 73   ┆e, id_endrep); out_op_int  (op_s┆
0x086060…086080             74 6e 68 62 2c 20 32 29 3b 20 28 2a 20 6e 6f 20 63 6f 6e 74 65 78 74 20 65 76 61 6c 20 68 65 72   ┆tnhb, 2); (* no context eval her┆
0x086080…0860a0             65 20 21 21 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 20 28 6f 70 5f 72 65 76 70 64 29 3b 0a   ┆e !! *) out_opcode  (op_revpd); ┆
0x0860a0…0860c0             65 6e 64 3b 0a 0a 28 2a 66 69 65 6c 64 20 64 65 73 63 72 69 70 74 6f 72 20 6f 6e 20 74 6f 70 20   ┆end;  (*field descriptor on top ┆
0x0860c0…0860e0             6f 66 20 73 74 61 63 6b 2a 29 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 68 61 64 6f 77 5f 74 79   ┆of stack*) if type_o = shadow_ty┆
0x0860e0…086100             70 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 72 65 63 68 77 2c 20 63 5f 73   ┆p then out_op_int (op_rechw, c_s┆
0x086100…086120             68 61 64 6f 77 5f 66 69 65 6c 64 5f 6e 69 6c 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆hadow_field_nil) else out_op_int┆
0x086120…086140             20 28 6f 70 5f 72 65 63 68 77 2c 20 63 5f 72 65 66 5f 66 69 65 6c 64 5f 6e 69 6c 29 3b 0a 6f 75   ┆ (op_rechw, c_ref_field_nil); ou┆
0x086140…086160             74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 72 65 76 73 66 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20   ┆t_opcode (op_revsf); out_op_id  ┆
0x086160…086180             28 6f 70 5f 6a 6d 7a 6e 65 2c 20 69 64 5f 63 6f 6e 74 29 3b 0a 63 6f 6e 74 5f 68 77 5f 73 69 7a   ┆(op_jmzne, id_cont); cont_hw_siz┆
0x086180…0861a0             65 20 3a 3d 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 3b 0a 0a 69 66 20 74 79 70 65 5f 6f 20 3d   ┆e := hw_stack_size;  if type_o =┆
0x0861a0…0861c0             20 73 68 61 64 6f 77 5f 74 79 70 20 74 68 65 6e 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65   ┆ shadow_typ then code_exc_trigge┆
0x0861c0…0861e0             72 20 28 63 5f 65 78 63 5f 73 68 61 64 6f 77 29 0a 65 6c 73 65 0a 63 6f 64 65 5f 65 78 63 5f 74   ┆r (c_exc_shadow) else code_exc_t┆
0x0861e0…086200             72 69 67 67 65 72 20 28 63 5f 65 78 63 5f 72 65 66 29 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 20 28   ┆rigger (c_exc_ref);  out_label (┆
0x086200…086220 (35, 1, 9)  69 64 5f 63 6f 6e 74 29 3b 0a 69 66 20 63 6f 6e 74 5f 68 77 5f 73 69 7a 65 20 3c 3e 20 68 77 5f   ┆id_cont); if cont_hw_size <> hw_┆
0x086220…086240             73 74 61 63 6b 5f 73 69 7a 65 20 74 68 65 6e 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 68 61 64   ┆stack_size then if type_o = shad┆
0x086240…086260             6f 77 5f 74 79 70 20 74 68 65 6e 0a 68 77 5f 73 74 61 63 6b 5f 65 72 72 6f 72 20 28 73 68 61 64   ┆ow_typ then hw_stack_error (shad┆
0x086260…086280             6f 77 5f 72 65 6d 6f 76 61 6c 29 0a 65 6c 73 65 0a 68 77 5f 73 74 61 63 6b 5f 65 72 72 6f 72 20   ┆ow_removal) else hw_stack_error ┆
0x086280…0862a0             28 72 65 66 5f 72 65 6d 6f 76 61 6c 29 3b 0a 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 68 61 64   ┆(ref_removal);  if type_o = shad┆
0x0862a0…0862c0             6f 77 5f 74 79 70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70   ┆ow_typ then begin out_op_id  (op┆
0x0862c0…0862e0             5f 72 65 76 73 61 2c 20 69 64 5f 6f 73 68 61 64 6f 77 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20   ┆_revsa, id_oshadow); out_op_id  ┆
0x0862e0…086300             28 6f 70 5f 73 74 76 67 61 2c 20 69 64 5f 73 68 61 64 6f 77 63 68 61 69 6e 29 3b 0a 65 6e 64 0a   ┆(op_stvga, id_shadowchain); end ┆
0x086300…086320             65 6c 73 65 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 72 65 76 73 61 2c   ┆else begin out_op_id  (op_revsa,┆
0x086320…086340             20 69 64 5f 6f 72 65 66 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 73 74 76 67 61 2c   ┆ id_oref); out_op_id  (op_stvga,┆
0x086340…086360             20 69 64 5f 72 65 66 63 68 61 69 6e 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6e 6f 74 20 64 79 6e 61   ┆ id_refchain); end;  if not dyna┆
0x086360…086380             6d 69 63 73 20 74 68 65 6e 0a 69 66 20 63 6f 75 6e 74 20 3e 20 31 20 74 68 65 6e 0a 62 65 67 69   ┆mics then if count > 1 then begi┆
0x086380…0863a0             6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 75 61 64 68 77 2c 20 2d 31 29 3b 0a 6f 75 74   ┆n out_op_int (op_uadhw, -1); out┆
0x0863a0…0863c0             5f 6f 70 63 6f 64 65 20 28 6f 70 5f 72 65 76 70 77 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 28 63 6f   ┆_opcode (op_revpw); end;  if (co┆
0x0863c0…0863e0             75 6e 74 20 3e 20 31 29 20 6f 72 20 64 79 6e 61 6d 69 63 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆unt > 1) or dynamics then begin ┆
0x0863e0…086400             77 69 74 68 20 6f 70 5f 74 61 62 6c 65 20 5b 6a 75 6d 70 5d 20 64 6f 0a 69 66 20 68 77 5f 73 74   ┆with op_table [jump] do if hw_st┆
0x086400…086420 (35, 1, 10) 61 63 6b 5f 73 69 7a 65 20 3c 3e 20 28 72 65 70 5f 68 77 5f 73 69 7a 65 20 2b 20 61 62 73 28 6f   ┆ack_size <> (rep_hw_size + abs(o┆
0x086420…086440             70 61 70 70 65 74 69 74 65 29 29 20 74 68 65 6e 0a 6f 75 74 5f 72 65 73 74 61 28 72 65 70 5f 68   ┆pappetite)) then out_resta(rep_h┆
0x086440…086460             77 5f 73 69 7a 65 20 2b 20 61 62 73 28 6f 70 61 70 70 65 74 69 74 65 29 29 3b 0a 6f 75 74 5f 6f   ┆w_size + abs(opappetite)); out_o┆
0x086460…086480             70 5f 69 64 20 28 6a 75 6d 70 2c 20 69 64 5f 72 65 70 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28   ┆p_id (jump, id_rep); out_label (┆
0x086480…0864a0             69 64 5f 65 6e 64 72 65 70 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 20 28 6f 70 5f 73   ┆id_endrep); out_specopcode (op_s┆
0x0864a0…0864c0             74 6e 68 62 2c 20 2d 77 6f 72 6b 5f 73 69 7a 65 29 3b 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6e 6c 3b   ┆tnhb, -work_size); end;  out_nl;┆
0x0864c0…0864e0             0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 0a 65 6e 64 20   ┆ out_token (zend); out_nl;  end ┆
0x0864e0…086500             20 28 2a 20 63 6f 64 65 5f 72 65 6d 6f 76 65 20 20 2a 29 3b 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75   ┆ (* code_remove  *);     procedu┆
0x086500…086520             72 65 20 20 63 6f 64 65 5f 6c 69 6e 65 5f 74 61 62 5f 68 65 61 64 65 72 28 20 6e 61 6d 65 20 3a   ┆re  code_line_tab_header( name :┆
0x086520…086540             20 69 64 65 6e 74 69 66 69 65 72 20 29 3b 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 74 6f 6b 65 6e 20   ┆ identifier );  begin out_token ┆
0x086540…086560             28 7a 6e 61 6d 65 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 6e 61 6d 65 29 3b 0a 6f 75 74 5f 6e 6c   ┆(zname); out_p_id (name); out_nl┆
0x086560…086580             3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 63 6f   ┆; out_token (zend);  end  (*  co┆
0x086580…0865a0             64 65 5f 6c 69 6e 65 5f 74 61 62 5f 68 65 61 64 65 72 20 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65 64   ┆de_line_tab_header  *);   proced┆
0x0865a0…0865c0             75 72 65 20 20 73 74 61 74 5f 72 65 73 65 74 3b 0a 0a 76 61 72 0a 69 3a 20 61 64 64 72 5f 6b 69   ┆ure  stat_reset;  var i: addr_ki┆
0x0865c0…0865e0             6e 64 5f 74 79 70 65 3b 0a 6a 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 77 69   ┆nd_type; j : integer;  begin  wi┆
0x0865e0…086600             74 68 20 73 74 61 74 5f 61 63 63 2e 61 73 73 69 67 6e 20 64 6f 0a 62 65 67 69 6e 0a 0a 66 6f 72   ┆th stat_acc.assign do begin  for┆
0x086600…086620 (35, 1, 11) 20 69 20 3a 3d 20 61 64 64 72 20 74 6f 20 70 61 63 6b 65 64 5f 61 72 72 20 64 6f 0a 66 6f 72 20   ┆ i := addr to packed_arr do for ┆
0x086620…086640             6a 20 3a 3d 20 30 20 74 6f 20 36 20 64 6f 20 20 6b 69 6e 64 5f 74 79 70 65 5b 20 69 2c 20 6a 20   ┆j := 0 to 6 do  kind_type[ i, j ┆
0x086640…086660             5d 20 3a 3d 20 30 3b 0a 0a 66 6f 72 20 6a 20 3a 3d 20 30 20 74 6f 20 31 35 20 64 6f 20 73 69 7a   ┆] := 0;  for j := 0 to 15 do siz┆
0x086660…086680             65 5b 20 6a 20 5d 20 3a 3d 20 30 0a 0a 65 6e 64 3b 0a 74 72 61 70 5f 6e 72 5f 74 61 62 6c 65 20   ┆e[ j ] := 0  end; trap_nr_table ┆
0x086680…0866a0             3a 3d 20 6e 69 6c 3b 0a 0a 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 73 74 61 74   ┆:= nil;   end;   procedure  stat┆
0x0866a0…0866c0             5f 70 72 69 6e 74 3b 0a 0a 76 61 72 0a 69 3a 20 61 64 64 72 5f 6b 69 6e 64 5f 74 79 70 65 3b 0a   ┆_print;  var i: addr_kind_type; ┆
0x0866c0…0866e0             6a 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 77 72 69 74 65 6c 6e 3b 20 20 77   ┆j : integer;  begin  writeln;  w┆
0x0866e0…086700             72 69 74 65 6c 6e 3b 0a 77 72 69 74 65 6c 6e 28 20 27 20 20 20 73 74 61 74 69 73 74 69 63 73 20   ┆riteln; writeln( '   statistics ┆
0x086700…086720             66 72 6f 6d 20 70 61 73 73 35 3a 20 27 20 29 3b 0a 77 72 69 74 65 6c 6e 3b 0a 0a 77 72 69 74 65   ┆from pass5: ' ); writeln;  write┆
0x086720…086740             6c 6e 28 20 27 20 20 20 20 20 61 73 73 69 67 6e 6d 65 6e 74 3a 20 27 20 29 3b 0a 77 72 69 74 65   ┆ln( '     assignment: ' ); write┆
0x086740…086760             6c 6e 3b 0a 77 69 74 68 20 73 74 61 74 5f 61 63 63 2e 61 73 73 69 67 6e 20 64 6f 0a 62 65 67 69   ┆ln; with stat_acc.assign do begi┆
0x086760…086780             6e 0a 0a 66 6f 72 20 69 20 3a 3d 61 64 64 72 20 74 6f 20 70 61 63 6b 65 64 5f 61 72 72 20 64 6f   ┆n  for i :=addr to packed_arr do┆
0x086780…0867a0             0a 62 65 67 69 6e 0a 66 6f 72 20 6a 20 3a 3d 20 30 20 74 6f 20 36 20 64 6f 20 77 72 69 74 65 28   ┆ begin for j := 0 to 6 do write(┆
0x0867a0…0867c0             20 6b 69 6e 64 5f 74 79 70 65 5b 20 69 2c 20 6a 20 5d 20 29 3b 0a 77 72 69 74 65 6c 6e 0a 65 6e   ┆ kind_type[ i, j ] ); writeln en┆
0x0867c0…0867e0             64 3b 0a 77 72 69 74 65 6c 6e 3b 0a 0a 66 6f 72 20 6a 20 3a 3d 20 30 20 74 6f 20 37 20 64 6f 20   ┆d; writeln;  for j := 0 to 7 do ┆
0x0867e0…086800             77 72 69 74 65 28 20 73 69 7a 65 5b 20 6a 20 5d 20 29 3b 0a 77 72 69 74 65 6c 6e 3b 0a 66 6f 72   ┆write( size[ j ] ); writeln; for┆
0x086800…086820 (35, 1, 12) 20 6a 20 3a 3d 20 38 20 74 6f 20 31 35 20 64 6f 20 77 72 69 74 65 28 20 73 69 7a 65 5b 20 6a 20   ┆ j := 8 to 15 do write( size[ j ┆
0x086820…086840             5d 20 29 3b 0a 77 72 69 74 65 6c 6e 3b 0a 0a 65 6e 64 3b 0a 0a 77 72 69 74 65 6c 6e 0a 0a 65 6e   ┆] ); writeln;  end;  writeln  en┆
0x086840…086860             64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 73 74 61 74 5f 61 73 73 69 67 6e 28 20 6c 5f   ┆d;    procedure  stat_assign( l_┆
0x086860…086880             76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 20 6c 5f 74 79 70 65 2c 20 6c 5f 73 69 7a   ┆v : varaddr_descr; l_type, l_siz┆
0x086880…0868a0             65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 20 20 20 20 20 20 72 5f 76 20 3a 20 76 61 72 76 61 6c 75   ┆e : integer;       r_v : varvalu┆
0x0868a0…0868c0             65 5f 64 65 73 63 72 20 29 3b 0a 0a 76 61 72 0a 69 5f 6b 69 6e 64 20 3a 20 61 64 64 72 5f 6b 69   ┆e_descr );  var i_kind : addr_ki┆
0x0868c0…0868e0             6e 64 5f 74 79 70 65 3b 0a 69 5f 74 79 70 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69   ┆nd_type; i_type : integer;  begi┆
0x0868e0…086900             6e 0a 0a 69 66 20 73 74 61 74 61 63 63 5f 79 65 73 20 74 68 65 6e 0a 77 69 74 68 20 20 73 74 61   ┆n  if statacc_yes then with  sta┆
0x086900…086920             74 5f 61 63 63 2e 61 73 73 69 67 6e 20 64 6f 0a 62 65 67 69 6e 0a 0a 69 5f 6b 69 6e 64 20 3a 3d   ┆t_acc.assign do begin  i_kind :=┆
0x086920…086940             20 6c 5f 76 2e 6b 69 6e 64 3b 0a 0a 69 5f 74 79 70 65 20 3a 3d 20 6c 5f 74 79 70 65 3b 0a 69 66   ┆ l_v.kind;  i_type := l_type; if┆
0x086940…086960             20 28 20 69 5f 74 79 70 65 20 3e 20 73 65 74 5f 74 79 70 20 29 20 6f 72 20 28 20 69 5f 74 79 70   ┆ ( i_type > set_typ ) or ( i_typ┆
0x086960…086980             65 20 3c 20 30 20 29 20 74 68 65 6e 20 69 5f 74 79 70 65 20 3a 3d 20 30 3b 0a 0a 6b 69 6e 64 5f   ┆e < 0 ) then i_type := 0;  kind_┆
0x086980…0869a0             74 79 70 65 5b 20 69 5f 6b 69 6e 64 2c 20 69 5f 74 79 70 65 5d 20 3a 3d 20 6b 69 6e 64 5f 74 79   ┆type[ i_kind, i_type] := kind_ty┆
0x0869a0…0869c0             70 65 5b 20 69 5f 6b 69 6e 64 2c 20 69 5f 74 79 70 65 20 5d 20 2b 20 31 3b 0a 0a 69 66 20 28 20   ┆pe[ i_kind, i_type ] + 1;  if ( ┆
0x0869c0…0869e0             6c 5f 74 79 70 65 20 3d 20 61 64 64 72 5f 74 79 70 20 29 20 6f 72 20 28 20 6c 5f 74 79 70 65 20   ┆l_type = addr_typ ) or ( l_type ┆
0x0869e0…086a00             3d 20 73 65 74 5f 74 79 70 20 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 66 20 28 20 6c 5f 73   ┆= set_typ ) then begin  if ( l_s┆
0x086a00…086a20 (35, 1, 13) 69 7a 65 20 3c 20 30 20 29 20 6f 72 20 28 20 6c 5f 73 69 7a 65 20 3e 20 31 35 20 29 20 74 68 65   ┆ize < 0 ) or ( l_size > 15 ) the┆
0x086a20…086a40             6e 0a 73 69 7a 65 5b 20 30 20 5d 20 3a 3d 20 73 69 7a 65 5b 20 30 20 5d 20 2b 20 31 0a 65 6c 73   ┆n size[ 0 ] := size[ 0 ] + 1 els┆
0x086a40…086a60             65 0a 73 69 7a 65 5b 20 6c 5f 73 69 7a 65 20 5d 20 3a 3d 20 73 69 7a 65 5b 20 6c 5f 73 69 7a 65   ┆e size[ l_size ] := size[ l_size┆
0x086a60…086a80             20 5d 20 2b 20 31 0a 0a 65 6e 64 0a 0a 65 6e 64 0a 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72   ┆ ] + 1  end  end  end;  procedur┆
0x086a80…086aa0             65 20 20 20 66 69 6e 64 5f 65 78 70 72 73 28 20 76 61 72 20 20 76 3a 20 76 61 72 76 61 6c 75 65   ┆e   find_exprs( var  v: varvalue┆
0x086aa0…086ac0             5f 64 65 73 63 72 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 20   ┆_descr); forward;   procedure   ┆
0x086ac0…086ae0             66 69 6e 64 5f 6f 70 65 72 61 6e 64 28 20 76 61 72 20 76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65   ┆find_operand( var v: varvalue_de┆
0x086ae0…086b00             73 63 72 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 20 0a 20 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69   ┆scr); forward;     procedure  fi┆
0x086b00…086b20             6e 64 5f 66 75 6e 63 5f 63 61 6c 6c 28 20 76 61 72 20 76 20 3a 20 76 61 72 76 61 6c 75 65 5f 64   ┆nd_func_call( var v : varvalue_d┆
0x086b20…086b40             65 73 63 72 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e   ┆escr); forward;   procedure  fin┆
0x086b40…086b60             64 5f 63 61 6c 6c 28 20 76 61 72 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73   ┆d_call( var size_of_function_res┆
0x086b60…086b80             75 6c 74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72 6f 63   ┆ult : integer ); forward;   proc┆
0x086b80…086ba0             65 64 75 72 65 20 20 66 69 6e 64 5f 63 6f 6e 73 74 61 6e 74 73 3b 0a 66 6f 72 77 61 72 64 3b 0a   ┆edure  find_constants; forward; ┆
0x086ba0…086bc0             0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 73 74 64 5f 63 61 6c 6c 28 76 61 72 20 76   ┆  procedure  find_std_call(var v┆
0x086bc0…086be0             3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 70 72   ┆: varvalue_descr); forward;   pr┆
0x086be0…086c00             6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 61 72 67 6c 69 73 74 28 20 63 61 6c 6c 5f 6d 6f 64 65   ┆ocedure  find_arglist( call_mode┆
0x086c00…086c20 (35, 1, 14) 20 3a 20 63 61 6c 6c 6d 6f 64 65 73 3b 20 76 61 72 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69   ┆ : callmodes; var size_of_functi┆
0x086c20…086c40             6f 6e 5f 72 65 73 75 6c 74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 66 6f 72 77 61 72 64 3b 0a   ┆on_result : integer ); forward; ┆
0x086c40…086c60             0a 70 72 6f 63 65 64 75 72 65 20 20 20 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 66 6f 72   ┆ procedure   find_statement; for┆
0x086c60…086c80             77 61 72 64 3b 0a 70 72 6f 63 65 64 75 72 65 20 20 20 66 69 6e 64 5f 76 61 72 76 61 6c 75 65 28   ┆ward; procedure   find_varvalue(┆
0x086c80…086ca0             20 76 61 72 20 20 76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 66 6f 72 77 61 72   ┆ var  v: varvalue_descr); forwar┆
0x086ca0…086cc0             64 3b 0a 70 72 6f 63 65 64 75 72 65 20 20 20 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 61 72   ┆d; procedure   find_varaddr( var┆
0x086cc0…086ce0             20 20 76 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a   ┆  v: varaddr_descr); forward;   ┆
0x086ce0…086d00             70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 69 6e 69 74 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a   ┆procedure find_init; forward;   ┆
0x086d00…086d20             70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 28 20 76 61 72   ┆procedure find_processparam( var┆
0x086d20…086d40             20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3a 20 69 6e 74 65 67   ┆ size_of_function_result : integ┆
0x086d40…086d60             65 72 20 29 3b 0a 66 6f 72 77 61 72 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 20 66 69   ┆er ); forward;    procedure   fi┆
0x086d60…086d80             6e 64 5f 61 73 73 69 67 6e 3b 0a 0a 0a 76 61 72 20 20 20 20 6c 5f 76 20 20 2c 20 6c 5f 76 5f 73   ┆nd_assign;   var    l_v  , l_v_s┆
0x086d80…086da0             74 61 74 2c 20 74 65 6d 70 6c 5f 76 20 3a 20 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 20   ┆tat, templ_v :  varaddr_descr;  ┆
0x086da0…086dc0             20 20 20 20 20 20 72 5f 76 20 20 3a 20 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 20 20   ┆      r_v  :  varvalue_descr;   ┆
0x086dc0…086de0             20 20 20 20 20 6c 5f 74 79 70 65 2c 20 6c 5f 66 69 72 73 74 2c 20 6c 5f 6e 75 6d 62 65 72 2c 20   ┆     l_type, l_first, l_number, ┆
0x086de0…086e00             6c 5f 73 69 7a 65 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 0a 62 65 67 69 6e 0a 67 65 74 5f 74   ┆l_size  : integer;   begin get_t┆
0x086e00…086e20 (35, 1, 15) 6f 6b 65 6e 3b 0a 0a 20 20 20 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 6c 5f 76 29 3b 20 20 20   ┆oken;     find_varaddr( l_v);   ┆
0x086e20…086e40             20 20 20 6c 5f 76 5f 73 74 61 74 20 3a 3d 20 6c 5f 76 3b 20 20 0a 69 66 20 74 6f 6b 65 6e 20 3c   ┆   l_v_stat := l_v;   if token <┆
0x086e40…086e60             3e 20 78 6c 65 66 74 20 74 68 65 6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72   ┆> xleft then error(pass4code_err┆
0x086e60…086e80             6f 72 29 3b 0a 0a 20 20 20 6c 5f 74 79 70 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a   ┆or);     l_type := in_integer;  ┆
0x086e80…086ea0             20 20 20 69 66 20 6c 5f 74 79 70 65 20 3d 20 66 69 65 6c 64 5f 74 79 70 20 74 68 65 6e 0a 20 20   ┆   if l_type = field_typ then   ┆
0x086ea0…086ec0             20 62 65 67 69 6e 0a 6c 5f 66 69 72 73 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 6c   ┆ begin l_first := in_integer;  l┆
0x086ec0…086ee0             5f 6e 75 6d 62 65 72 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 6c 5f 6e 75 6d 62   ┆_number := in_integer; if l_numb┆
0x086ee0…086f00             65 72 20 3d 20 38 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 70 74 69 6d 69 7a 65 20 38 2d   ┆er = 8 then begin (* optimize 8-┆
0x086f00…086f20             62 69 74 20 66 69 65 6c 64 73 20 61 73 20 62 79 74 65 73 20 2a 29 0a 69 66 20 6c 5f 66 69 72 73   ┆bit fields as bytes *) if l_firs┆
0x086f20…086f40             74 20 3d 20 30 20 74 68 65 6e 0a 6c 5f 74 79 70 65 20 3a 3d 20 62 79 74 65 5f 74 79 70 20 20 20   ┆t = 0 then l_type := byte_typ   ┆
0x086f40…086f60             28 2a 20 6c 65 66 74 20 62 79 74 65 2c 20 64 6f 6e 27 74 20 63 68 61 6e 67 65 20 6f 66 66 73 65   ┆(* left byte, don't change offse┆
0x086f60…086f80             74 20 2a 29 0a 65 6c 73 65 0a 69 66 20 6c 5f 66 69 72 73 74 20 3d 20 38 20 74 68 65 6e 0a 62 65   ┆t *) else if l_first = 8 then be┆
0x086f80…086fa0             67 69 6e 20 28 2a 20 72 69 67 74 68 20 62 79 74 65 2c 20 61 64 64 20 6f 6e 65 20 74 6f 20 6f 66   ┆gin (* rigth byte, add one to of┆
0x086fa0…086fc0             66 73 65 74 20 2a 29 0a 6c 5f 76 2e 6f 66 66 73 65 74 20 3a 3d 20 6c 5f 76 2e 6f 66 66 73 65 74   ┆fset *) l_v.offset := l_v.offset┆
0x086fc0…086fe0             20 2b 20 31 3b 0a 6c 5f 74 79 70 65 20 3a 3d 20 62 79 74 65 5f 74 79 70 3b 0a 65 6e 64 3b 0a 65   ┆ + 1; l_type := byte_typ; end; e┆
0x086fe0…087000             6e 64 3b 0a 20 20 20 65 6e 64 0a 20 20 20 65 6c 73 65 0a 20 20 20 69 66 20 28 20 6c 5f 74 79 70   ┆nd;    end    else    if ( l_typ┆
0x087000…087020 (36, 0, 1)  65 20 3d 20 61 64 64 72 5f 74 79 70 20 29 20 20 6f 72 20 20 28 20 6c 5f 74 79 70 65 20 3d 20 73   ┆e = addr_typ )  or  ( l_type = s┆
0x087020…087040             65 74 5f 74 79 70 20 29 20 74 68 65 6e 20 20 6c 5f 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65   ┆et_typ ) then  l_size := in_inte┆
0x087040…087060             67 65 72 0a 65 6c 73 65 0a 69 66 20 6c 5f 74 79 70 65 20 3d 20 64 79 6e 5f 74 79 70 20 74 68 65   ┆ger else if l_type = dyn_typ the┆
0x087060…087080             6e 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 74 65 6d 70 6c 5f 76 20 29 3b 0a 0a 69 66   ┆n get_niv_offset( templ_v );  if┆
0x087080…0870a0             20 6c 5f 76 2e 6b 69 6e 64 20 3d 20 70 61 63 6b 65 64 5f 61 72 72 20 74 68 65 6e 0a 62 65 67 69   ┆ l_v.kind = packed_arr then begi┆
0x0870a0…0870c0             6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 69 6e 74 70 61 29 3b 0a 6f 75 74 5f 6f 70 63 6f   ┆n out_opcode(op_intpa); out_opco┆
0x0870c0…0870e0             64 65 28 6f 70 5f 69 6e 70 64 76 29 3b 0a 65 6e 64 0a 65 6c 73 65 20 28 2a 6e 6f 74 20 70 61 63   ┆de(op_inpdv); end else (*not pac┆
0x0870e0…087100             6b 65 64 20 61 72 72 61 79 2a 29 0a 69 66 20 6c 5f 74 79 70 65 20 3d 20 66 69 65 6c 64 5f 74 79   ┆ked array*) if l_type = field_ty┆
0x087100…087120             70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 28 6c 5f 76 2c 74 72   ┆p then begin load_address(l_v,tr┆
0x087120…087140             75 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 6c 5f 66 69 72 73 74   ┆ue); out_op_int(op_rechw,l_first┆
0x087140…087160             2a 32 35 36 20 2b 20 6c 5f 66 69 72 73 74 20 2b 6c 5f 6e 75 6d 62 65 72 20 2d 20 31 29 3b 0a 65   ┆*256 + l_first +l_number - 1); e┆
0x087160…087180             6e 64 20 28 2a 66 69 65 6c 64 5f 74 79 70 2a 29 0a 65 6c 73 65 0a 69 66 20 28 6c 5f 74 79 70 65   ┆nd (*field_typ*) else if (l_type┆
0x087180…0871a0             20 20 3d 20 61 64 64 72 5f 74 79 70 29 20 6f 72 20 28 6c 5f 74 79 70 65 20 3d 20 20 73 65 74 5f   ┆  = addr_typ) or (l_type =  set_┆
0x0871a0…0871c0             74 79 70 29 20 6f 72 0a 28 6c 5f 74 79 70 65 20 3d 20 64 79 6e 5f 74 79 70 29 20 6f 72 20 28 6c   ┆typ) or (l_type = dyn_typ) or (l┆
0x0871c0…0871e0             5f 76 2e 61 63 63 65 73 73 20 3d 20 20 69 5f 66 72 61 6d 65 29 20 74 68 65 6e 0a 6c 6f 61 64 5f   ┆_v.access =  i_frame) then load_┆
0x0871e0…087200             61 64 64 72 65 73 73 28 6c 5f 76 2c 74 72 75 65 29 3b 0a 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a   ┆address(l_v,true);   get_token; ┆
0x087200…087220 (36, 0, 2)  66 69 6e 64 5f 65 78 70 72 73 28 20 72 5f 76 29 3b 0a 0a 0a 28 2a 20 68 65 72 65 2c 20 74 65 73   ┆find_exprs( r_v);   (* here, tes┆
0x087220…087240             74 73 20 63 61 6e 20 62 65 20 69 6e 73 65 72 74 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63   ┆ts can be inserted in order to c┆
0x087240…087260             68 65 63 6b 20 74 68 65 20 0a 63 6f 6e 73 69 73 74 65 6e 63 79 20 6f 66 20 20 22 72 5f 76 22 2c   ┆heck the  consistency of  "r_v",┆
0x087260…087280             20 22 6c 5f 76 22 20 61 6e 64 20 22 6c 5f 74 79 70 65 22 2e 20 2a 29 0a 0a 69 66 20 73 74 61 74   ┆ "l_v" and "l_type". *)  if stat┆
0x087280…0872a0             61 63 63 5f 79 65 73 20 74 68 65 6e 0a 73 74 61 74 5f 61 73 73 69 67 6e 28 20 6c 5f 76 5f 73 74   ┆acc_yes then stat_assign( l_v_st┆
0x0872a0…0872c0             61 74 2c 20 6c 5f 74 79 70 65 2c 20 6c 5f 73 69 7a 65 2c 20 72 5f 76 20 29 3b 20 20 0a 0a 73 6b   ┆at, l_type, l_size, r_v );    sk┆
0x0872c0…0872e0             69 70 5f 74 6f 6b 65 6e 20 28 78 61 73 73 69 67 6e 29 3b 0a 0a 20 20 20 63 61 73 65 20 6c 5f 76   ┆ip_token (xassign);     case l_v┆
0x0872e0…087300             2e 6b 69 6e 64 20 6f 66 0a 61 64 64 72 3a 20 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76   ┆.kind of addr: out_op_int(op_stv┆
0x087300…087320             5b 63 6f 6e 76 5f 66 72 61 6d 65 5b 6c 5f 76 2e 61 63 63 65 73 73 5d 2c 63 6f 6e 76 5f 74 79 70   ┆[conv_frame[l_v.access],conv_typ┆
0x087320…087340             65 5b 6c 5f 74 79 70 65 5d 5d 2c 6c 5f 76 2e 6f 66 66 73 65 74 29 3b 0a 0a 73 74 61 63 6b 5f 61   ┆e[l_type]],l_v.offset);  stack_a┆
0x087340…087360             64 64 72 3a 0a 20 20 20 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 69 66 20 6c 5f 74 79 70 65 20 3d   ┆ddr:    begin        if l_type =┆
0x087360…087380             20 73 65 74 5f 74 79 70 20 74 68 65 6e 20 28 2a 20 73 65 74 20 2a 29 0a 20 20 20 20 20 20 62 65   ┆ set_typ then (* set *)       be┆
0x087380…0873a0             67 69 6e 0a 0a 69 66 20 72 5f 76 2e 6b 69 6e 64 20 3c 3e 20 31 20 74 68 65 6e 20 20 65 72 72 6f   ┆gin  if r_v.kind <> 1 then  erro┆
0x0873a0…0873c0             72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 69 66 20 72 5f 76 2e 73 69 7a 65   ┆r(pass4code_error);  if r_v.size┆
0x0873c0…0873e0             20 3c 3e 20 28 20 6c 5f 73 69 7a 65 20 2b 20 32 20 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69   ┆ <> ( l_size + 2 ) then begin  i┆
0x0873e0…087400             66 20 72 5f 76 2e 73 69 7a 65 20 3e 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 63 6f 64 65 5f   ┆f r_v.size > 0 then begin  code_┆
0x087400…087420 (36, 0, 3)  73 74 61 74 5f 74 6f 5f 64 79 6e 28 20 72 5f 76 2e 73 69 7a 65 20 29 3b 0a 0a 72 5f 76 2e 73 69   ┆stat_to_dyn( r_v.size );  r_v.si┆
0x087420…087440             7a 65 20 3a 3d 20 30 0a 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65   ┆ze := 0  end;  out_opcode( op_re┆
0x087440…087460             63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74   ┆chw ); out_start_param;  out_int┆
0x087460…087480             65 67 65 72 28 20 6c 5f 73 69 7a 65 20 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f   ┆eger( l_size ); out_specopcode(o┆
0x087480…0874a0             70 5f 73 65 74 61 64 2c 6c 5f 73 69 7a 65 20 2b 20 32 20 29 3b 0a 0a 65 6e 64 3b 0a 6f 75 74 5f   ┆p_setad,l_size + 2 );  end; out_┆
0x0874a0…0874c0             73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 73 74 2c 2d 20 6c 5f 73 69 7a 65 29 3b 0a 0a   ┆specopcode(op_setst,- l_size);  ┆
0x0874c0…0874e0             20 20 20 20 20 20 65 6e 64 20 20 28 2a 20 6c 5f 74 79 70 65 20 3d 20 73 65 74 5f 74 79 70 20 2a   ┆      end  (* l_type = set_typ *┆
0x0874e0…087500             29 0a 0a 20 20 20 20 20 20 65 6c 73 65 0a 0a 20 20 20 20 20 20 69 66 20 6c 5f 74 79 70 65 20 3d   ┆)        else        if l_type =┆
0x087500…087520             20 61 64 64 72 5f 74 79 70 20 74 68 65 6e 20 28 2a 20 73 74 61 74 69 63 20 73 74 72 75 63 74 75   ┆ addr_typ then (* static structu┆
0x087520…087540             72 65 20 2a 29 0a 20 20 20 20 20 20 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 20 20 20 6f 75 74 5f   ┆re *)       begin           out_┆
0x087540…087560             6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 20 20 20 20 20 20 20 20 20 6f 75 74   ┆opcode( op_rechw );          out┆
0x087560…087580             5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6c 5f 73   ┆_start_param;   out_integer( l_s┆
0x087580…0875a0             69 7a 65 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 6d 6f 76 65 67 29 0a 0a 20 20   ┆ize ); out_opcode (op_moveg)    ┆
0x0875a0…0875c0             20 20 20 20 65 6e 64 20 20 28 2a 20 6c 5f 74 79 70 65 20 3d 20 61 64 64 72 5f 74 79 70 20 2a 29   ┆    end  (* l_type = addr_typ *)┆
0x0875c0…0875e0             0a 0a 65 6c 73 65 0a 0a 69 66 20 6c 5f 74 79 70 65 20 3d 20 64 79 6e 5f 74 79 70 20 74 68 65 6e   ┆  else  if l_type = dyn_typ then┆
0x0875e0…087600             0a 62 65 67 69 6e 20 28 2a 20 64 79 6e 61 6d 69 63 20 73 74 72 75 63 74 75 72 65 20 2a 29 0a 77   ┆ begin (* dynamic structure *) w┆
0x087600…087620 (36, 0, 4)  69 74 68 20 74 65 6d 70 6c 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65   ┆ith templ_v do out_op_rev__(acce┆
0x087620…087640             73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 6f   ┆ss,word_typ,c.niv-niv,offset); o┆
0x087640…087660             75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6d 6f 76 65 67 20 29 3b 0a 65 6e 64 20 28 2a 20 6c 5f   ┆ut_opcode( op_moveg ); end (* l_┆
0x087660…087680             74 79 70 65 20 3d 20 64 79 6e 5f 74 79 70 20 2a 29 0a 0a 20 20 20 20 20 20 65 6c 73 65 0a 0a 20   ┆type = dyn_typ *)        else   ┆
0x087680…0876a0             20 20 20 20 20 62 65 67 69 6e 0a 28 2a 20 20 20 20 6c 5f 74 79 70 65 20 3d 20 62 79 74 65 2c 77   ┆     begin (*    l_type = byte,w┆
0x0876a0…0876c0             6f 72 64 2c 66 69 65 6c 64 20 6f 72 20 64 6f 75 62 6c 65 20 20 20 20 2a 29 0a 69 66 20 6c 5f 74   ┆ord,field or double    *) if l_t┆
0x0876c0…0876e0             79 70 65 20 3c 3e 20 66 69 65 6c 64 5f 74 79 70 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆ype <> field_typ then out_op_int┆
0x0876e0…087700             28 6f 70 5f 73 74 76 5b 73 2c 63 6f 6e 76 5f 74 79 70 65 5b 6c 5f 74 79 70 65 5d 5d 2c 6c 5f 76   ┆(op_stv[s,conv_type[l_type]],l_v┆
0x087700…087720             2e 6f 66 66 73 65 74 29 0a 65 6c 73 65 20 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 74 76   ┆.offset) else  out_opcode(op_stv┆
0x087720…087740             73 66 29 3b 0a 0a 20 20 20 20 20 20 65 6e 64 0a 0a 65 6e 64 3b 0a 0a 70 61 63 6b 65 64 5f 61 72   ┆sf);        end  end;  packed_ar┆
0x087740…087760             72 3a 0a 20 20 20 62 65 67 69 6e 0a 0a 69 66 28 20 72 5f 76 2e 6b 69 6e 64 20 3c 3e 20 31 20 29   ┆r:    begin  if( r_v.kind <> 1 )┆
0x087760…087780             20 6f 72 20 28 20 28 20 72 5f 76 2e 73 69 7a 65 20 3c 3e 20 30 20 29 20 61 6e 64 20 28 20 72 5f   ┆ or ( ( r_v.size <> 0 ) and ( r_┆
0x087780…0877a0             76 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 29 0a 20 20 20 20 20 20 20 20 20 74 68 65 6e 20 20 20   ┆v.size <> 2 ) )          then   ┆
0x0877a0…0877c0             65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 6f 75 74 5f 6f 70 63 6f   ┆error(pass4code_error); out_opco┆
0x0877c0…0877e0             64 65 28 6f 70 5f 73 74 76 73 66 29 3b 0a 0a 65 6e 64 3b 0a 0a 20 20 20 65 6e 64 20 20 28 2a 20   ┆de(op_stvsf);  end;     end  (* ┆
0x0877e0…087800             20 63 61 73 65 20 6c 5f 76 2e 6b 69 6e 64 20 6f 66 2e 2e 2e 20 20 2a 29 0a 0a 65 6e 64 20 20 28   ┆ case l_v.kind of...  *)  end  (┆
0x087800…087820 (36, 0, 5)  2a 20 20 66 69 6e 64 5f 61 73 73 69 67 6e 20 20 2a 29 3b 0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75   ┆*  find_assign  *);      procedu┆
0x087820…087840             72 65 20 20 66 69 6e 64 5f 65 78 70 72 28 20 76 61 72 20 20 76 20 3a 20 76 61 72 76 61 6c 75 65   ┆re  find_expr( var  v : varvalue┆
0x087840…087860             5f 64 65 73 63 72 29 3b 0a 0a 63 6f 6e 73 74 0a 0a 6d 61 78 5f 76 5f 73 74 61 63 6b 20 3d 20 31   ┆_descr);  const  max_v_stack = 1┆
0x087860…087880             30 3b 0a 0a 76 61 72 0a 0a 28 2a 20 2e 2e 2e 2e 20 66 6f 72 20 74 68 65 20 53 74 61 63 6b 20 6d   ┆0;  var  (* .... for the Stack m┆
0x087880…0878a0             6f 64 75 6c 65 20 3a 20 20 20 20 2a 29 0a 0a 76 5f 73 74 61 63 6b 20 3a 20 61 72 72 61 79 20 5b   ┆odule :    *)  v_stack : array [┆
0x0878a0…0878c0             20 31 20 2e 2e 20 6d 61 78 5f 76 5f 73 74 61 63 6b 20 5d 20 6f 66 20 76 61 72 76 61 6c 75 65 5f   ┆ 1 .. max_v_stack ] of varvalue_┆
0x0878c0…0878e0             64 65 73 63 72 3b 0a 0a 74 6f 70 5f 76 5f 73 74 61 63 6b 2c 0a 73 74 61 74 65 5f 76 5f 73 74 61   ┆descr;  top_v_stack, state_v_sta┆
0x0878e0…087900             63 6b 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 28 2a 20 2e 2e 2e 2e 20 66 6f 72 20 74 68 65 20 72   ┆ck : integer;  (* .... for the r┆
0x087900…087920             65 73 74 20 6f 66 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 20 3a 20 20 20 20 2a 29 0a 0a 76 5f   ┆est of the procedure :    *)  v_┆
0x087920…087940             6f 31 2c 20 76 5f 6f 32 2c 20 76 5f 72 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a   ┆o1, v_o2, v_r : varvalue_descr; ┆
0x087940…087960             0a 65 6e 64 5f 65 78 70 72 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6b 65 79 2c 0a 74 79 70 65 5f 6f   ┆ end_expr : boolean; key, type_o┆
0x087960…087980             2c 20 63 6f 6d 70 2c 20 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 74 65 6d 70 6c 61 74   ┆, comp, size : integer;  templat┆
0x087980…0879a0             65 5f 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65   ┆e_v : varaddr_descr;   procedure┆
0x0879a0…0879c0             20 20 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73   ┆  push_v_stack( v : varvalue_des┆
0x0879c0…0879e0             63 72 20 29 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 74 6f 70 5f 76 5f 73 74 61 63 6b 20 3e 3d 20 6d   ┆cr );  begin if top_v_stack >= m┆
0x0879e0…087a00             61 78 5f 76 5f 73 74 61 63 6b 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 76 5f 73 74 61 63 6b 5f 73   ┆ax_v_stack then error (v_stack_s┆
0x087a00…087a20 (36, 0, 6)  69 7a 65 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 74 6f 70 5f 76 5f 73 74 61 63 6b 20 3a 3d 20 74   ┆ize) else begin top_v_stack := t┆
0x087a20…087a40             6f 70 5f 76 5f 73 74 61 63 6b 20 2b 20 31 3b 0a 76 5f 73 74 61 63 6b 5b 20 74 6f 70 5f 76 5f 73   ┆op_v_stack + 1; v_stack[ top_v_s┆
0x087a40…087a60             74 61 63 6b 20 5d 20 3a 3d 20 76 0a 65 6e 64 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65   ┆tack ] := v end end;   procedure┆
0x087a60…087a80             20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 61 72 20 20 76 20 3a 20 76 61 72 76 61 6c 75 65   ┆  pop_v_stack( var  v : varvalue┆
0x087a80…087aa0             5f 64 65 73 63 72 20 29 3b 0a 0a 62 65 67 69 6e 0a 69 66 20 74 6f 70 5f 76 5f 73 74 61 63 6b 20   ┆_descr );  begin if top_v_stack ┆
0x087aa0…087ac0             3c 3d 20 30 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b   ┆<= 0 then error(compiler_error);┆
0x087ac0…087ae0             0a 69 66 20 73 74 61 74 65 5f 76 5f 73 74 61 63 6b 20 3d 20 31 20 74 68 65 6e 0a 62 65 67 69 6e   ┆ if state_v_stack = 1 then begin┆
0x087ae0…087b00             0a 76 2e 6b 69 6e 64 20 3a 3d 20 30 3b 0a 76 2e 73 69 7a 65 20 3a 3d 20 30 0a 65 6e 64 0a 65 6c   ┆ v.kind := 0; v.size := 0 end el┆
0x087b00…087b20             73 65 0a 62 65 67 69 6e 0a 76 20 3a 3d 20 76 5f 73 74 61 63 6b 5b 20 74 6f 70 5f 76 5f 73 74 61   ┆se begin v := v_stack[ top_v_sta┆
0x087b20…087b40             63 6b 20 5d 3b 0a 74 6f 70 5f 76 5f 73 74 61 63 6b 20 3a 3d 20 74 6f 70 5f 76 5f 73 74 61 63 6b   ┆ck ]; top_v_stack := top_v_stack┆
0x087b40…087b60             20 2d 20 31 0a 65 6e 64 0a 65 6e 64 3b 0a 0a 0a 62 65 67 69 6e 0a 0a 0a 74 6f 70 5f 76 5f 73 74   ┆ - 1 end end;   begin   top_v_st┆
0x087b60…087b80             61 63 6b 20 20 20 3a 3d 20 30 3b 0a 73 74 61 74 65 5f 76 5f 73 74 61 63 6b 20 3a 3d 20 30 3b 0a   ┆ack   := 0; state_v_stack := 0; ┆
0x087b80…087ba0             0a 65 6e 64 5f 65 78 70 72 20 20 20 20 20 20 3a 3d 20 66 61 6c 73 65 3b 0a 0a 6f 70 65 72 61 6e   ┆ end_expr      := false;  operan┆
0x087ba0…087bc0             64 5f 73 69 74 75 61 74 69 6f 6e 20 3a 3d 20 62 65 66 6f 72 65 5f 6f 70 61 6e 64 73 3b 0a 69 6e   ┆d_situation := before_opands; in┆
0x087bc0…087be0             5f 6b 69 6e 64 20 3a 3d 20 73 65 74 74 6d 3b 20 28 2a 69 6e 73 74 72 75 63 74 69 6f 6e 20 73 65   ┆_kind := settm; (*instruction se┆
0x087be0…087c00             74 74 6d 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 69 6e 20 69 73 20 6d 65 74 2a 29 0a   ┆ttm to be used when in is met*) ┆
0x087c00…087c20 (36, 0, 7)  0a 72 65 70 65 61 74 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 78 63 6f 6e 73 74 2c 0a   ┆ repeat  case token of  xconst, ┆
0x087c20…087c40             78 6c 63 6f 6e 73 74 2c 0a 78 66 75 6e 63 63 61 6c 6c 2c 0a 78 65 78 74 66 75 6e 63 63 61 6c 6c   ┆xlconst, xfunccall, xextfunccall┆
0x087c40…087c60             2c 0a 78 73 74 64 66 75 6e 63 63 61 6c 6c 2c 0a 78 70 72 6f 63 65 73 73 70 61 72 61 6d 2c 0a 78   ┆, xstdfunccall, xprocessparam, x┆
0x087c60…087c80             73 65 74 63 6f 6e 73 74 2c 0a 78 73 65 74 2c 0a 78 61 64 64 72 2c 0a 78 63 61 64 64 72 3a 0a 62   ┆setconst, xset, xaddr, xcaddr: b┆
0x087c80…087ca0             65 67 69 6e 0a 0a 28 2a 20 20 20 74 68 65 20 6e 65 78 74 20 69 74 65 6d 20 6f 6e 20 69 6e 70 75   ┆egin  (*   the next item on inpu┆
0x087ca0…087cc0             74 20 69 73 20 61 6e 20 6f 70 65 72 61 6e 64 2e 0a 20 20 20 20 20 66 69 6e 64 20 74 68 65 20 6f   ┆t is an operand.      find the o┆
0x087cc0…087ce0             70 65 72 61 6e 64 2c 20 61 6e 64 20 70 75 73 68 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 20   ┆perand, and push the descriptor ┆
0x087ce0…087d00             6f 6e 0a 20 20 20 20 20 74 68 65 20 76 5f 73 74 61 63 6b 20 3a 0a 2a 29 0a 0a 69 66 20 6f 70 65   ┆on      the v_stack : *)  if ope┆
0x087d00…087d20             72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 61 66 74 65 72 5f 73 68 6f 72 74 5f 63 6f 6e   ┆rand_situation = after_short_con┆
0x087d20…087d40             73 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 72 65 63   ┆st then begin out_opcode (op_rec┆
0x087d40…087d60             68 77 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67   ┆hw); out_start_param;  out_integ┆
0x087d60…087d80             65 72 20 28 76 5f 72 2e 76 61 6c 29 3b 0a 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20   ┆er (v_r.val); operand_situation ┆
0x087d80…087da0             3a 3d 20 61 66 74 65 72 5f 6f 70 61 6e 64 73 3b 0a 65 6e 64 3b 0a 0a 66 69 6e 64 5f 6f 70 65 72   ┆:= after_opands; end;  find_oper┆
0x087da0…087dc0             61 6e 64 20 28 76 5f 72 29 3b 0a 0a 69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e   ┆and (v_r);  if operand_situation┆
0x087dc0…087de0             20 3d 20 62 65 66 6f 72 65 5f 6f 70 61 6e 64 73 20 74 68 65 6e 0a 6f 70 65 72 61 6e 64 5f 73 69   ┆ = before_opands then operand_si┆
0x087de0…087e00             74 75 61 74 69 6f 6e 20 3a 3d 20 61 66 74 65 72 5f 6f 70 61 6e 64 73 3b 0a 0a 70 75 73 68 5f 76   ┆tuation := after_opands;  push_v┆
0x087e00…087e20 (36, 0, 8)  5f 73 74 61 63 6b 28 20 76 5f 72 20 29 0a 65 6e 64 3b 0a 0a 28 2a 20 20 20 63 68 65 63 6b 20 74   ┆_stack( v_r ) end;  (*   check t┆
0x087e20…087e40             68 65 20 6e 65 78 74 20 69 74 65 6d 20 74 6f 20 73 65 65 20 69 66 20 69 74 20 69 73 20 61 6e 20   ┆he next item to see if it is an ┆
0x087e40…087e60             6f 70 65 72 61 74 6f 72 2e 0a 20 20 20 20 20 67 65 6e 65 72 61 74 65 20 74 68 65 20 70 72 6f 70   ┆operator.      generate the prop┆
0x087e60…087e80             65 72 20 62 69 73 2d 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6f 70 65 72   ┆er bis-instructions for the oper┆
0x087e80…087ea0             61 74 6f 72 2e 0a 20 20 20 20 20 74 61 6b 65 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 73 20   ┆ator.      take the descriptors ┆
0x087ea0…087ec0             66 6f 72 20 74 68 65 20 6f 70 65 72 61 6e 64 73 20 66 72 6f 6d 20 74 68 65 20 76 5f 73 74 61 63   ┆for the operands from the v_stac┆
0x087ec0…087ee0             6b 2c 0a 20 20 20 20 20 61 6e 64 20 73 74 6f 72 65 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72   ┆k,      and store the descriptor┆
0x087ee0…087f00             20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f 6e 20 74 68 65 20 76 5f 73 74 61 63 6b 20 3a 0a   ┆ of the result on the v_stack : ┆
0x087f00…087f20             2a 29 0a 0a 78 6e 6f 74 20 3a 0a 0a 62 65 67 69 6e 0a 74 79 70 65 5f 6f 20 3a 3d 20 69 6e 5f 69   ┆*)  xnot :  begin type_o := in_i┆
0x087f20…087f40             6e 74 65 67 65 72 3b 0a 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 62 6f 6f 6c 5f 74 79 70 20 74 68   ┆nteger;  if type_o = bool_typ th┆
0x087f40…087f60             65 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6e 6f 74 20 29 0a 65 6c 73 65 20 28 2a   ┆en  out_opcode( op_not ) else (*┆
0x087f60…087f80             20 69 6e 74 65 67 65 72 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 63 6f 6d 70 6c   ┆ integer *) out_opcode( op_compl┆
0x087f80…087fa0             20 29 3b 0a 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20   ┆ );   pop_v_stack( v_o1 ); if ( ┆
0x087fa0…087fc0             76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20   ┆v_o1.kind <> 1 ) or ( v_o1.size ┆
0x087fc0…087fe0             3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72   ┆<> 2 ) then error(compiler_error┆
0x087fe0…088000             29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d   ┆);  v_r.kind := 1;   v_r.size :=┆
0x088000…088020 (36, 0, 9)  20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 20 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f   ┆ 2; push_v_stack ( v_r ); get_to┆
0x088020…088040             6b 65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a 78 6e 65 67 20 3a 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f   ┆ken;  end;   xneg :  begin  out_┆
0x088040…088060             6f 70 63 6f 64 65 28 20 6f 70 5f 6e 65 67 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20   ┆opcode( op_neg );  pop_v_stack( ┆
0x088060…088080             76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72   ┆v_o1 ); if ( v_o1.kind <> 1 ) or┆
0x088080…0880a0             20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63   ┆ ( v_o1.size <> 2 ) then error(c┆
0x0880a0…0880c0             6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20   ┆ompiler_error);  v_r.kind := 1; ┆
0x0880c0…0880e0             20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f   ┆ v_r.size := 2; push_v_stack( v_┆
0x0880e0…088100             72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 78 63 6f 6d 70 61 72   ┆r ); get_token;  end;    xcompar┆
0x088100…088120             65 20 3a 0a 0a 62 65 67 69 6e 0a 0a 63 6f 6d 70 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a   ┆e :  begin  comp := in_integer; ┆
0x088120…088140             0a 69 66 20 28 20 63 6f 6d 70 20 3e 3d 20 31 20 29 20 61 6e 64 20 28 20 63 6f 6d 70 20 3c 3d 20   ┆ if ( comp >= 1 ) and ( comp <= ┆
0x088140…088160             37 20 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 63   ┆7 ) then begin  out_opcode( op_c┆
0x088160…088180             6f 6d 70 5b 20 63 6f 6d 70 20 5d 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f   ┆omp[ comp ] );  pop_v_stack( v_o┆
0x088180…0881a0             32 20 29 3b 20 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28   ┆2 );   pop_v_stack( v_o1 ); if (┆
0x0881a0…0881c0             20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65   ┆ v_o1.kind <> 1 ) or ( v_o1.size┆
0x0881c0…0881e0             20 3c 3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29   ┆ <> 2 ) or    ( v_o2.kind <> 1 )┆
0x0881e0…088200             20 6f 72 20 28 20 76 5f 6f 32 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f   ┆ or ( v_o2.size <> 2 ) then erro┆
0x088200…088220 (36, 0, 10) 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20   ┆r(compiler_error);  v_r.kind := ┆
0x088220…088240             31 3b 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28   ┆1;  v_r.size := 2; push_v_stack(┆
0x088240…088260             20 76 5f 72 20 29 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 0a 69 66 20 28 20 63 6f 6d 70 20 3e 3d 20   ┆ v_r )  end  else  if ( comp >= ┆
0x088260…088280             38 20 29 20 61 6e 64 20 28 20 63 6f 6d 70 20 3c 3d 20 31 31 20 29 20 74 68 65 6e 0a 62 65 67 69   ┆8 ) and ( comp <= 11 ) then begi┆
0x088280…0882a0             6e 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b 20 20 70 6f 70 5f 76 5f 73   ┆n  pop_v_stack( v_o2 );  pop_v_s┆
0x0882a0…0882c0             74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20   ┆tack( v_o1 ); if ( v_o1.kind <> ┆
0x0882c0…0882e0             31 29 20 6f 72 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 74 68 65 6e 20 65 72   ┆1) or ( v_o2.kind <> 1 ) then er┆
0x0882e0…088300             72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 63 6f 64 65 5f 73 74 61 74 5f   ┆ror(compiler_error);  code_stat_┆
0x088300…088320             74 6f 5f 64 79 6e 28 20 76 5f 6f 31 2e 73 69 7a 65 20 2b 20 76 5f 6f 32 2e 73 69 7a 65 20 29 3b   ┆to_dyn( v_o1.size + v_o2.size );┆
0x088320…088340             0a 28 2a 6e 6f 74 65 21 20 62 65 63 61 75 73 65 20 61 20 6c 6f 6f 6b 61 68 65 61 64 20 77 61 73   ┆ (*note! because a lookahead was┆
0x088340…088360             20 75 73 65 64 20 74 6f 20 64 65 73 69 64 65 20 77 65 74 68 65 72 20 61 20 73 65 74 65 78 70 72   ┆ used to deside wether a setexpr┆
0x088360…088380             65 73 73 69 6f 6e 0a 6f 72 20 61 20 73 69 6d 70 6c 65 20 73 65 74 76 61 72 69 61 62 6c 65 20 77   ┆ession or a simple setvariable w┆
0x088380…0883a0             61 73 20 6d 65 74 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 64 65 73 69 64 65 20 77 65 74 68 65 72   ┆as met in order to deside wether┆
0x0883a0…0883c0             20 61 20 73 65 74 72 65 20 6f 72 20 61 0a 73 65 74 61 74 6d 20 69 6e 73 74 72 75 63 74 69 6f 6e   ┆ a setre or a setatm instruction┆
0x0883c0…0883e0             20 73 68 6f 6c 64 20 62 65 20 67 65 6e 65 72 61 74 65 64 20 77 68 65 6e 20 74 68 65 20 63 6f 6d   ┆ shold be generated when the com┆
0x0883e0…088400             70 61 72 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e 2c 0a 74 68 65 6e 20 74 68 65 20 73 65   ┆pare function is in, then the se┆
0x088400…088420 (36, 0, 11) 74 72 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 66 6f 72 20 6f 74 68 65 72 20 73 65 74 63 6f 6d   ┆tre instruction for other setcom┆
0x088420…088440             70 61 72 65 66 75 6e 63 74 69 6f 6e 73 20 77 61 73 20 61 6c 73 6f 20 6e 6f 74 0a 67 65 6e 65 72   ┆parefunctions was also not gener┆
0x088440…088460             61 74 65 64 2e 20 54 68 65 72 65 66 6f 72 65 20 69 74 20 68 61 73 20 74 6f 20 62 65 20 67 65 6e   ┆ated. Therefore it has to be gen┆
0x088460…088480             65 72 61 74 65 64 20 42 45 46 4f 52 45 20 74 68 65 20 63 6f 6d 70 61 72 65 20 69 6e 73 74 72 75   ┆erated BEFORE the compare instru┆
0x088480…0884a0             63 74 69 6f 6e 2a 29 0a 69 66 20 69 6e 5f 6b 69 6e 64 20 3d 20 73 65 74 61 74 6d 20 74 68 65 6e   ┆ction*) if in_kind = setatm then┆
0x0884a0…0884c0             20 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 72 65 2c 76 5f 6f 32 2e 73 69   ┆ out_specopcode(op_setre,v_o2.si┆
0x0884c0…0884e0             7a 65 20 2d 20 77 6f 72 64 5f 6c 65 6e 67 74 68 20 29 3b 0a 28 2a 6e 6f 74 65 20 74 68 61 74 20   ┆ze - word_length ); (*note that ┆
0x0884e0…088500             74 68 65 20 76 5f 6f 32 2e 73 69 7a 65 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 6c 65 6e 67 74   ┆the v_o2.size includes the lengt┆
0x088500…088520             68 77 6f 72 64 2e 20 74 68 65 72 65 66 6f 72 65 20 74 68 65 20 73 69 7a 65 20 68 61 73 0a 74 6f   ┆hword. therefore the size has to┆
0x088520…088540             20 62 65 20 64 65 63 72 65 6d 65 6e 74 65 64 20 62 79 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74   ┆ be decremented by the size of t┆
0x088540…088560             68 65 20 6c 65 6e 67 74 68 77 6f 72 64 2a 29 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f   ┆he lengthword*)  out_opcode( op_┆
0x088560…088580             63 6f 6d 70 5b 20 63 6f 6d 70 20 5d 20 29 3b 0a 69 66 20 63 6f 6d 70 20 3d 20 39 20 74 68 65 6e   ┆comp[ comp ] ); if comp = 9 then┆
0x088580…0885a0             20 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6e 6f 74 20 29 3b 0a 0a 76 5f 72 2e 6b 69 6e   ┆  out_opcode( op_not );  v_r.kin┆
0x0885a0…0885c0             64 20 3a 3d 20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 0a 70 75 73 68 5f 76 5f   ┆d := 1;  v_r.size := 2;  push_v_┆
0x0885c0…0885e0             73 74 61 63 6b 28 20 76 5f 72 20 29 0a 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 0a 69 66 20 63 6f 6d   ┆stack( v_r )   end  else  if com┆
0x0885e0…088600             70 20 3d 20 31 32 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20   ┆p = 12 then begin  pop_v_stack( ┆
0x088600…088620 (36, 0, 12) 76 5f 6f 32 20 29 3b 20 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69   ┆v_o2 );   pop_v_stack( v_o1 ); i┆
0x088620…088640             66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73   ┆f ( v_o1.kind <> 1 ) or ( v_o1.s┆
0x088640…088660             69 7a 65 20 3c 3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20   ┆ize <> 2 ) or    ( v_o2.kind <> ┆
0x088660…088680             31 20 29 20 20 20 74 68 65 6e 20 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72   ┆1 )   then  error(compiler_error┆
0x088680…0886a0             29 3b 0a 28 2a 69 66 20 6f 6e 6c 79 20 61 20 73 65 74 76 61 72 69 61 62 6c 65 20 6d 65 74 20 74   ┆); (*if only a setvariable met t┆
0x0886a0…0886c0             68 65 6e 20 75 73 65 20 73 65 74 61 74 6d 20 65 6c 73 65 20 75 73 65 20 73 65 74 74 6d 2a 29 0a   ┆hen use setatm else use settm*) ┆
0x0886c0…0886e0             69 66 20 69 6e 5f 6b 69 6e 64 20 3d 20 73 65 74 61 74 6d 20 74 68 65 6e 20 0a 6f 75 74 5f 6f 70   ┆if in_kind = setatm then  out_op┆
0x0886e0…088700             63 6f 64 65 28 6f 70 5f 73 65 74 61 74 6d 29 0a 65 6c 73 65 20 6f 75 74 5f 73 70 65 63 6f 70 63   ┆code(op_setatm) else out_specopc┆
0x088700…088720             6f 64 65 28 6f 70 5f 73 65 74 74 6d 2c 2d 76 5f 6f 32 2e 73 69 7a 65 29 3b 0a 0a 76 5f 72 2e 6b   ┆ode(op_settm,-v_o2.size);  v_r.k┆
0x088720…088740             69 6e 64 20 3a 3d 20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76   ┆ind := 1;  v_r.size := 2; push_v┆
0x088740…088760             5f 73 74 61 63 6b 28 20 76 5f 72 20 29 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 65 72 72 6f 72 28 70   ┆_stack( v_r )  end  else error(p┆
0x088760…088780             61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64   ┆ass4code_error); get_token;  end┆
0x088780…0887a0             3b 0a 0a 0a 78 63 6f 6d 70 73 74 72 75 63 20 3a 0a 0a 62 65 67 69 6e 0a 0a 63 6f 6d 70 20 3a 3d   ┆;   xcompstruc :  begin  comp :=┆
0x0887a0…0887c0             20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 20 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65   ┆ in_integer;   size := in_intege┆
0x0887c0…0887e0             72 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 20 28 76 5f 6f 32 29 3b 20 20 70 6f 70 5f 76 5f 73   ┆r;  pop_v_stack (v_o2);  pop_v_s┆
0x0887e0…088800             74 61 63 6b 20 28 76 5f 6f 31 29 3b 0a 69 66 20 28 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 76 5f   ┆tack (v_o1); if (v_o1.kind <> v_┆
0x088800…088820 (36, 0, 13) 6f 32 2e 6b 69 6e 64 29 20 6f 72 0a 28 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 76 5f 6f 32 2e 73   ┆o2.kind) or (v_o1.size <> v_o2.s┆
0x088820…088840             69 7a 65 29 20 6f 72 0a 28 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 73 69 7a 65 29 20 74 68 65 6e   ┆ize) or (v_o1.size <> size) then┆
0x088840…088860             0a 65 72 72 6f 72 20 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 69 66 20 76 5f 6f   ┆ error (compiler_error);  if v_o┆
0x088860…088880             31 2e 6b 69 6e 64 20 3d 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 63 6f 6d 70 61 72 65   ┆1.kind = 2 then begin (* compare┆
0x088880…0888a0             20 61 72 72 61 79 73 20 6f 72 20 72 65 63 6f 72 64 73 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆ arrays or records *) out_opcode┆
0x0888a0…0888c0             28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20   ┆( op_rechw ); out_start_param;  ┆
0x0888c0…0888e0             20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆ out_integer( size ); out_opcode┆
0x0888e0…088900             28 6f 70 5f 73 74 63 65 61 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c   ┆(op_stcea); out_op_int(op_rechw,┆
0x088900…088920             30 29 3b 0a 69 66 20 63 6f 6d 70 20 3d 20 78 6e 65 5f 73 74 72 75 63 20 74 68 65 6e 20 6f 75 74   ┆0); if comp = xne_struc then out┆
0x088920…088940             5f 6f 70 63 6f 64 65 28 6f 70 5f 6e 65 29 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 20 3d 20 78 65   ┆_opcode(op_ne) else if comp = xe┆
0x088940…088960             71 5f 73 74 72 75 63 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 65 71 29 0a 65   ┆q_struc then out_opcode(op_eq) e┆
0x088960…088980             6c 73 65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 0a   ┆lse error(pass4code_error); end ┆
0x088980…0889a0             65 6c 73 65 20 28 2a 20 63 6f 6d 70 61 72 65 20 70 6f 69 6e 74 65 72 73 20 2a 29 0a 62 65 67 69   ┆else (* compare pointers *) begi┆
0x0889a0…0889c0             6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 74 65 71 61 64 29 3b 0a 69 66 20 63 6f 6d 70 20   ┆n out_opcode(op_teqad); if comp ┆
0x0889c0…0889e0             3d 20 78 6e 65 5f 73 74 72 75 63 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 6e   ┆= xne_struc then out_opcode(op_n┆
0x0889e0…088a00             6f 74 29 0a 65 6c 73 65 0a 69 66 20 63 6f 6d 70 20 3c 3e 20 78 65 71 5f 73 74 72 75 63 20 74 68   ┆ot) else if comp <> xeq_struc th┆
0x088a00…088a20 (36, 0, 14) 65 6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a   ┆en error(pass4code_error); end; ┆
0x088a20…088a40             0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32   ┆  v_r.kind := 1;   v_r.size := 2┆
0x088a40…088a60             3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e   ┆; push_v_stack( v_r ); get_token┆
0x088a60…088a80             3b 0a 0a 65 6e 64 3b 0a 0a 0a 78 63 6f 6d 70 64 79 6e 73 74 72 75 63 20 3a 0a 0a 62 65 67 69 6e   ┆;  end;   xcompdynstruc :  begin┆
0x088a80…088aa0             0a 0a 63 6f 6d 70 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 67 65 74 5f 6e 69 76 5f 6f   ┆  comp := in_integer;  get_niv_o┆
0x088aa0…088ac0             66 66 73 65 74 28 20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63   ┆ffset( template_v );  pop_v_stac┆
0x088ac0…088ae0             6b 20 28 20 76 5f 6f 32 20 29 3b 20 70 6f 70 5f 76 5f 73 74 61 63 6b 20 28 20 76 5f 6f 31 20 29   ┆k ( v_o2 ); pop_v_stack ( v_o1 )┆
0x088ae0…088b00             3b 0a 0a 69 66 20 76 5f 6f 31 2e 6b 69 6e 64 20 3d 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 20 28   ┆;  if v_o1.kind = 2 then begin (┆
0x088b00…088b20             2a 20 63 6f 6d 70 61 72 65 20 61 72 72 61 79 73 20 6f 72 20 72 65 63 6f 72 64 73 20 2a 29 0a 77   ┆* compare arrays or records *) w┆
0x088b20…088b40             69 74 68 20 74 65 6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61   ┆ith template_v do out_op_rev__(a┆
0x088b40…088b60             63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29   ┆ccess,word_typ,c.niv-niv,offset)┆
0x088b60…088b80             3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 74 63 65 61 29 3b 0a 6f 75 74 5f 6f 70 5f 69   ┆; out_opcode(op_stcea); out_op_i┆
0x088b80…088ba0             6e 74 28 6f 70 5f 72 65 63 68 77 2c 30 29 3b 0a 69 66 20 63 6f 6d 70 20 3d 20 78 6e 65 5f 73 74   ┆nt(op_rechw,0); if comp = xne_st┆
0x088ba0…088bc0             72 75 63 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 6e 65 29 0a 65 6c 73 65 0a   ┆ruc then out_opcode(op_ne) else ┆
0x088bc0…088be0             69 66 20 63 6f 6d 70 20 3d 20 78 65 71 5f 73 74 72 75 63 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63   ┆if comp = xeq_struc then out_opc┆
0x088be0…088c00             6f 64 65 28 6f 70 5f 65 71 29 0a 65 6c 73 65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f   ┆ode(op_eq) else error(pass4code_┆
0x088c00…088c20 (36, 0, 15) 65 72 72 6f 72 29 3b 0a 0a 65 6e 64 0a 65 6c 73 65 0a 65 72 72 6f 72 28 20 70 61 73 73 34 63 6f   ┆error);  end else error( pass4co┆
0x088c20…088c40             64 65 5f 65 72 72 6f 72 20 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 76 5f 72 2e   ┆de_error );  v_r.kind := 1; v_r.┆
0x088c40…088c60             73 69 7a 65 20 3a 3d 20 32 3b 0a 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 20 28 20 76 5f 72 20 29   ┆size := 2;  push_v_stack ( v_r )┆
0x088c60…088c80             3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 63 6f 6d 70 20 64 79 6e 20   ┆;  get_token;  end; (* comp dyn ┆
0x088c80…088ca0             73 74 72 75 63 20 2a 29 0a 0a 0a 78 64 69 76 20 3a 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70   ┆struc *)   xdiv :  begin  out_op┆
0x088ca0…088cc0             63 6f 64 65 28 20 6f 70 5f 64 69 76 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f   ┆code( op_div );  pop_v_stack( v_┆
0x088cc0…088ce0             6f 32 20 29 3b 20 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20   ┆o2 );   pop_v_stack( v_o1 ); if ┆
0x088ce0…088d00             28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a   ┆( v_o1.kind <> 1 ) or ( v_o1.siz┆
0x088d00…088d20             65 20 3c 3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20   ┆e <> 2 ) or    ( v_o2.kind <> 1 ┆
0x088d20…088d40             29 20 6f 72 20 28 20 76 5f 6f 32 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72   ┆) or ( v_o2.size <> 2 ) then err┆
0x088d40…088d60             6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d   ┆or(compiler_error);  v_r.kind :=┆
0x088d60…088d80             20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b   ┆ 1;  v_r.size := 2; push_v_stack┆
0x088d80…088da0             28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a 78 73 68 69   ┆( v_r ); get_token;  end;   xshi┆
0x088da0…088dc0             66 74 3a 0a 62 65 67 69 6e 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75 73 65   ┆ft: begin code_call_proc(sys_use┆
0x088dc0…088de0             2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 73 68 69 66 74 5f 5f 5f 5f 72 63 27   ┆, ext_lookup(key, '_shift____rc'┆
0x088de0…088e00             29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 32 2c 20 32 29 3b 0a 6f   ┆), key, const_niv_0, 0, 2, 2); o┆
0x088e00…088e20 (36, 1, 1)  75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 73 68 69 66 74 20 27 29 3b 0a 70 6f 70 5f 76 5f 73 74 61   ┆ut_comment(' shift '); pop_v_sta┆
0x088e20…088e40             63 6b 28 20 76 5f 6f 32 20 29 3b 20 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20   ┆ck( v_o2 );   pop_v_stack( v_o1 ┆
0x088e40…088e60             29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f   ┆); if ( v_o1.kind <> 1 ) or ( v_┆
0x088e60…088e80             6f 31 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64   ┆o1.size <> 2 ) or    ( v_o2.kind┆
0x088e80…088ea0             20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 32 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68   ┆ <> 1 ) or ( v_o2.size <> 2 ) th┆
0x088ea0…088ec0             65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b   ┆en error(compiler_error);  v_r.k┆
0x088ec0…088ee0             69 6e 64 20 3a 3d 20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76   ┆ind := 1;  v_r.size := 2; push_v┆
0x088ee0…088f00             5f 73 74 61 63 6b 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 0a   ┆_stack( v_r ); get_token; end;  ┆
0x088f00…088f20             78 72 6f 74 61 74 65 3a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 68 63   ┆xrotate: begin out_opcode(op_shc┆
0x088f20…088f40             29 3b 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b 20 20 20 70 6f 70 5f 76 5f   ┆); pop_v_stack( v_o2 );   pop_v_┆
0x088f40…088f60             73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e   ┆stack( v_o1 ); if ( v_o1.kind <>┆
0x088f60…088f80             20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 6f 72 0a 20 20   ┆ 1 ) or ( v_o1.size <> 2 ) or   ┆
0x088f80…088fa0             20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 32 2e 73 69   ┆ ( v_o2.kind <> 1 ) or ( v_o2.si┆
0x088fa0…088fc0             7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72   ┆ze <> 2 ) then error(compiler_er┆
0x088fc0…088fe0             72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20   ┆ror);  v_r.kind := 1;  v_r.size ┆
0x088fe0…089000             3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74   ┆:= 2; push_v_stack( v_r ); get_t┆
0x089000…089020 (36, 1, 2)  6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 0a 78 61 64 64 2c 0a 78 73 75 62 2c 0a 78 6d 75 6c 20 3a 0a 0a   ┆oken; end;  xadd, xsub, xmul :  ┆
0x089020…089040             62 65 67 69 6e 0a 0a 74 79 70 65 5f 6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20   ┆begin  type_o := in_integer; if ┆
0x089040…089060             74 79 70 65 5f 6f 20 3d 20 72 65 61 6c 5f 74 79 70 20 74 68 65 6e 0a 65 72 72 6f 72 28 63 6f 6d   ┆type_o = real_typ then error(com┆
0x089060…089080             70 69 6c 65 72 5f 65 72 72 6f 72 29 0a 65 6c 73 65 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 69 6e   ┆piler_error) else if type_o = in┆
0x089080…0890a0             74 5f 74 79 70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 61 64   ┆t_typ then begin  if token = xad┆
0x0890a0…0890c0             64 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 61 64 64 20 29 0a 65 6c 73 65   ┆d then out_opcode( op_add ) else┆
0x0890c0…0890e0             0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 73 75 62 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65   ┆ if token = xsub then out_opcode┆
0x0890e0…089100             28 20 6f 70 5f 73 75 62 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6d   ┆( op_sub ) else out_opcode( op_m┆
0x089100…089120             75 6c 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b 20 20 20 70 6f   ┆ul );  pop_v_stack( v_o2 );   po┆
0x089120…089140             70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e   ┆p_v_stack( v_o1 ); if ( v_o1.kin┆
0x089140…089160             64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 6f   ┆d <> 1 ) or ( v_o1.size <> 2 ) o┆
0x089160…089180             72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f   ┆r    ( v_o2.kind <> 1 ) or ( v_o┆
0x089180…0891a0             32 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65   ┆2.size <> 2 ) then error(compile┆
0x0891a0…0891c0             72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 76 5f 72 2e 73   ┆r_error);  v_r.kind := 1;  v_r.s┆
0x0891c0…0891e0             69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 0a 0a 65   ┆ize := 2; push_v_stack( v_r )  e┆
0x0891e0…089200             6e 64 0a 0a 65 6c 73 65 0a 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 73 65 74 6f 66 5f 74 79 70 20   ┆nd  else  if type_o = setof_typ ┆
0x089200…089220 (36, 1, 3)  74 68 65 6e 0a 62 65 67 69 6e 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b   ┆then begin  pop_v_stack( v_o2 );┆
0x089220…089240             20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31   ┆  pop_v_stack( v_o1 ); if ( v_o1┆
0x089240…089260             2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31   ┆.kind <> 1 ) or ( v_o2.kind <> 1┆
0x089260…089280             20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a   ┆ ) then error(compiler_error);  ┆
0x089280…0892a0             63 6f 64 65 5f 73 74 61 74 5f 74 6f 5f 64 79 6e 28 20 76 5f 6f 31 2e 73 69 7a 65 20 2b 20 76 5f   ┆code_stat_to_dyn( v_o1.size + v_┆
0x0892a0…0892c0             6f 32 2e 73 69 7a 65 20 29 3b 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 61 64 64 20 74 68 65 6e   ┆o2.size );  if token = xadd then┆
0x0892c0…0892e0             20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 65 74 75 6e 20 29 0a 65 6c 73 65 0a 69 66 20   ┆ out_opcode( op_setun ) else if ┆
0x0892e0…089300             74 6f 6b 65 6e 20 3d 20 78 73 75 62 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70   ┆token = xsub then out_opcode( op┆
0x089300…089320             5f 73 65 74 64 69 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 65 74   ┆_setdi ) else out_opcode( op_set┆
0x089320…089340             69 6e 20 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 20 76 5f 72 2e 73 69 7a 65   ┆in );  v_r.kind := 1;   v_r.size┆
0x089340…089360             20 3a 3d 20 30 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 0a 0a 65 6e 64 0a   ┆ := 0; push_v_stack( v_r )  end ┆
0x089360…089380             0a 65 6c 73 65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 67 65   ┆ else error(pass4code_error); ge┆
0x089380…0893a0             74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a 78 6f 72 5f 2c 0a 78 78 6f 72 2c 0a 78 61 6e   ┆t_token;  end;   xor_, xxor, xan┆
0x0893a0…0893c0             64 20 3a 0a 62 65 67 69 6e 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 6f 72 5f 20 74 68 65 6e 20   ┆d : begin  if token = xor_ then ┆
0x0893c0…0893e0             6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6f 72 20 29 0a 65 6c 73 65 0a 69 66 20 74 6f 6b 65   ┆out_opcode( op_or ) else if toke┆
0x0893e0…089400             6e 20 3d 20 78 78 6f 72 20 74 68 65 6e 20 6f 75 74 5f 6f 70 63 6f 64 65 20 28 20 6f 70 5f 78 6f   ┆n = xxor then out_opcode ( op_xo┆
0x089400…089420 (36, 1, 4)  72 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 61 6e 64 20 29 3b 0a 0a   ┆r ) else out_opcode( op_and );  ┆
0x089420…089440             70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 32 20 29 3b 20 20 20 70 6f 70 5f 76 5f 73 74 61   ┆pop_v_stack( v_o2 );   pop_v_sta┆
0x089440…089460             63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66 20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20   ┆ck( v_o1 ); if ( v_o1.kind <> 1 ┆
0x089460…089480             29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20   ┆) or ( v_o1.size <> 2 ) or    ( ┆
0x089480…0894a0             76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69 7a 65 20   ┆v_o2.kind <> 1 ) or ( v_o1.size ┆
0x0894a0…0894c0             3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72   ┆<> 2 ) then error(compiler_error┆
0x0894c0…0894e0             29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d   ┆);  v_r.kind := 1;   v_r.size :=┆
0x0894e0…089500             20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63 6b 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b   ┆ 2; push_v_stack( v_r ); get_tok┆
0x089500…089520             65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a 78 6d 6f 64 20 3a 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f   ┆en;  end;   xmod :  begin  out_o┆
0x089520…089540             70 63 6f 64 65 28 20 6f 70 5f 6d 6f 64 20 29 3b 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76   ┆pcode( op_mod );  pop_v_stack( v┆
0x089540…089560             5f 6f 32 20 29 20 3b 20 20 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 5f 6f 31 20 29 3b 0a 69 66   ┆_o2 ) ;  pop_v_stack( v_o1 ); if┆
0x089560…089580             20 28 20 76 5f 6f 31 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20 76 5f 6f 31 2e 73 69   ┆ ( v_o1.kind <> 1 ) or ( v_o1.si┆
0x089580…0895a0             7a 65 20 3c 3e 20 32 20 29 20 6f 72 0a 20 20 20 28 20 76 5f 6f 32 2e 6b 69 6e 64 20 3c 3e 20 31   ┆ze <> 2 ) or    ( v_o2.kind <> 1┆
0x0895a0…0895c0             20 29 20 6f 72 20 28 20 76 5f 6f 32 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 74 68 65 6e 20 65 72   ┆ ) or ( v_o2.size <> 2 ) then er┆
0x0895c0…0895e0             72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65 72 72 6f 72 29 3b 0a 0a 76 5f 72 2e 6b 69 6e 64 20 3a   ┆ror(compiler_error);  v_r.kind :┆
0x0895e0…089600             3d 20 31 3b 20 20 76 5f 72 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 70 75 73 68 5f 76 5f 73 74 61 63   ┆= 1;  v_r.size := 2; push_v_stac┆
0x089600…089620 (36, 1, 5)  6b 28 20 76 5f 72 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 0a 0a 0a 78 72 61   ┆k( v_r ); get_token;  end;   xra┆
0x089620…089640             6e 67 65 74 65 73 74 20 3a 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70   ┆ngetest :  begin  out_opcode( op┆
0x089640…089660             5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f   ┆_reaad ); out_start_param;  out_┆
0x089660…089680             6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a 0a 6f 75 74 5f 6f   ┆lix (c_name, in_integer);  out_o┆
0x089680…0896a0             70 63 6f 64 65 28 20 6f 70 5f 69 6e 74 72 73 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65   ┆pcode( op_intrs ); get_token;  e┆
0x0896a0…0896c0             6e 64 3b 0a 0a 78 72 61 6e 67 65 6d 61 78 20 3a 20 20 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70   ┆nd;  xrangemax :    begin out_op┆
0x0896c0…0896e0             5f 69 6e 74 28 6f 70 5f 69 6e 74 68 30 2c 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a 67 65 74 5f 74   ┆_int(op_inth0,in_integer); get_t┆
0x0896e0…089700             6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 0a 0a 0a 0a 78 64 79 6e 72 61 6e 67 65 74 65 73 74 20 3a 0a 0a   ┆oken; end;     xdynrangetest :  ┆
0x089700…089720             62 65 67 69 6e 0a 0a 69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 61 66   ┆begin  if operand_situation = af┆
0x089720…089740             74 65 72 5f 73 68 6f 72 74 5f 63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f   ┆ter_short_const then begin out_o┆
0x089740…089760             70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 76 5f 72 2e 76 61 6c 29 3b 0a 6f 70 65 72 61   ┆p_int( op_rechw, v_r.val); opera┆
0x089760…089780             6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3a 3d 20 61 66 74 65 72 5f 6f 70 61 6e 64 73 3b 0a 65 6e   ┆nd_situation := after_opands; en┆
0x089780…0897a0             64 3b 0a 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 20 28 20 74 65 6d 70 6c 61 74 65 5f 76 20   ┆d;  get_niv_offset ( template_v ┆
0x0897a0…0897c0             29 3b 0a 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 28 20 74 65 6d 70 6c 61 74 65 5f 76 2c 20 74 72   ┆);  load_address( template_v, tr┆
0x0897c0…0897e0             75 65 20 29 3b 20 20 20 28 2a 20 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f   ┆ue );   (* ?????????????????????┆
0x0897e0…089800             3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 20 2a 29 0a 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70   ┆????????????? *)  out_opcode( op┆
0x089800…089820 (36, 1, 6)  5f 69 6e 74 72 73 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 0a 65 6e 64 3b 20 28 2a 20   ┆_intrs );  get_token;   end; (* ┆
0x089820…089840             64 79 6e 20 72 61 6e 67 65 20 74 65 73 74 20 2a 29 0a 0a 0a 78 73 75 62 64 65 66 3a 20 28 2a 20   ┆dyn range test *)   xsubdef: (* ┆
0x089840…089860             70 6f 70 20 74 68 65 20 73 74 61 63 6b 20 2a 29 0a 62 65 67 69 6e 0a 0a 70 6f 70 5f 76 5f 73 74   ┆pop the stack *) begin  pop_v_st┆
0x089860…089880             61 63 6b 28 20 76 5f 6f 32 20 29 3b 0a 0a 65 6e 64 5f 65 78 70 72 20 3a 3d 20 74 72 75 65 3b 0a   ┆ack( v_o2 );  end_expr := true; ┆
0x089880…0898a0             0a 65 6e 64 3b 0a 0a 0a 0a 0a 65 6c 73 65 0a 0a 28 2a 20 20 74 68 65 20 69 6e 70 75 74 20 69 74   ┆ end;     else  (*  the input it┆
0x0898a0…0898c0             65 6d 20 69 73 20 6e 65 69 74 68 65 72 20 61 6e 20 6f 70 65 72 61 6e 64 20 6e 6f 72 20 61 6e 20   ┆em is neither an operand nor an ┆
0x0898c0…0898e0             6f 70 65 72 61 74 6f 72 2e 0a 20 20 20 20 74 68 69 73 20 73 69 67 6e 61 6c 73 20 74 68 65 20 65   ┆operator.     this signals the e┆
0x0898e0…089900             6e 64 20 6f 66 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 2a 29 0a 0a 65 6e 64 5f 65 78 70   ┆nd of an expression. *)  end_exp┆
0x089900…089920             72 20 3a 3d 20 74 72 75 65 0a 0a 65 6e 64 3b 20 20 28 2a 20 20 63 61 73 65 20 20 74 6f 6b 65 6e   ┆r := true  end;  (*  case  token┆
0x089920…089940             20 6f 66 20 2e 2e 2e 2e 2e 2e 20 20 2a 29 0a 0a 75 6e 74 69 6c 20 20 0a 65 6e 64 5f 65 78 70 72   ┆ of ......  *)  until   end_expr┆
0x089940…089960             3b 0a 0a 0a 70 6f 70 5f 76 5f 73 74 61 63 6b 28 20 76 20 29 3b 0a 0a 69 66 20 74 6f 70 5f 76 5f   ┆;   pop_v_stack( v );  if top_v_┆
0x089960…089980             73 74 61 63 6b 20 3c 3e 20 30 20 74 68 65 6e 20 65 72 72 6f 72 28 63 6f 6d 70 69 6c 65 72 5f 65   ┆stack <> 0 then error(compiler_e┆
0x089980…0899a0             72 72 6f 72 29 0a 0a 0a 65 6e 64 3b 20 20 28 2a 20 20 66 69 6e 64 5f 65 78 70 72 73 20 20 2a 29   ┆rror)   end;  (*  find_exprs  *)┆
0x0899a0…0899c0             0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 6f 70 65 72 61 6e   ┆          procedure  find_operan┆
0x0899c0…0899e0             64 28 20 76 61 72 20 76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 0a 76 61 72 20   ┆d( var v: varvalue_descr);  var ┆
0x0899e0…089a00             20 20 73 69 7a 65 2c 20 76 61 6c 20 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 5f 63 20 3a 20 76   ┆  size, val   : integer; v_c : v┆
0x089a00…089a20 (36, 1, 7)  61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 66 69 72 73 74 5f 73 65 74 20 3a 20 62 6f 6f 6c 65   ┆arvalue_descr; first_set : boole┆
0x089a20…089a40             61 6e 3b 0a 0a 0a 62 65 67 69 6e 0a 0a 20 20 20 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 20   ┆an;   begin     case token of   ┆
0x089a40…089a60             78 63 6f 6e 73 74 3a 0a 20 20 20 62 65 67 69 6e 0a 76 61 6c 20 3a 3d 20 69 6e 5f 69 6e 74 65 67   ┆xconst:    begin val := in_integ┆
0x089a60…089a80             65 72 3b 0a 69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 62 65 66 6f 72   ┆er; if operand_situation = befor┆
0x089a80…089aa0             65 5f 6f 70 61 6e 64 73 20 74 68 65 6e 0a 62 65 67 69 6e 0a 76 2e 76 61 6c 20 3a 3d 20 76 61 6c   ┆e_opands then begin v.val := val┆
0x089aa0…089ac0             3b 0a 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3a 3d 20 61 66 74 65 72 5f 73 68 6f   ┆; operand_situation := after_sho┆
0x089ac0…089ae0             72 74 5f 63 6f 6e 73 74 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63   ┆rt_const; end else begin out_opc┆
0x089ae0…089b00             6f 64 65 20 28 6f 70 5f 72 65 63 68 77 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b   ┆ode (op_rechw); out_start_param;┆
0x089b00…089b20             20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 76 61 6c 29 3b 0a 65 6e 64 3b 0a 0a 20 20 20 20 20   ┆  out_integer (val); end;       ┆
0x089b20…089b40             20 76 2e 6b 69 6e 64 20 3a 3d 20 31 3b 0a 20 20 20 20 20 20 76 2e 73 69 7a 65 20 3a 3d 20 32 3b   ┆ v.kind := 1;       v.size := 2;┆
0x089b40…089b60             0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 20 20 20 65 6e 64 20 20 28 2a 20 74 5f 63 6f 6e 73 74 20   ┆ get_token;     end  (* t_const ┆
0x089b60…089b80             2a 29 3b 0a 0a 20 78 6c 63 6f 6e 73 74 3a 0a 20 20 20 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 6f   ┆*);   xlconst:    begin        o┆
0x089b80…089ba0             75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74   ┆ut_opcode( op_reaad ); out_start┆
0x089ba0…089bc0             5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 69 6e 5f 69 6e 74   ┆_param;  out_lix (c_name, in_int┆
0x089bc0…089be0             65 67 65 72 29 3b 0a 0a 20 20 20 20 20 20 76 2e 6b 69 6e 64 20 3a 3d 20 32 3b 0a 20 20 20 20 20   ┆eger);        v.kind := 2;      ┆
0x089be0…089c00             20 76 2e 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 67 65 74 5f 74 6f 6b 65 6e   ┆ v.size := in_integer; get_token┆
0x089c00…089c20 (36, 1, 8)  3b 0a 0a 20 20 20 65 6e 64 20 20 28 2a 20 74 5f 6c 63 6f 6e 73 74 20 2a 29 3b 0a 0a 78 66 75 6e   ┆;     end  (* t_lconst *);  xfun┆
0x089c20…089c40             63 63 61 6c 6c 2c 0a 78 65 78 74 66 75 6e 63 63 61 6c 6c 2c 0a 78 73 74 64 66 75 6e 63 63 61 6c   ┆ccall, xextfunccall, xstdfunccal┆
0x089c40…089c60             6c 2c 0a 78 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 0a 62 65 67 69 6e 0a 0a 66 69 6e 64 5f 66 75   ┆l, xprocessparam: begin  find_fu┆
0x089c60…089c80             6e 63 5f 63 61 6c 6c 28 20 76 29 0a 0a 65 6e 64 20 20 28 2a 20 20 66 75 6e 63 20 63 61 6c 6c 20   ┆nc_call( v)  end  (*  func call ┆
0x089c80…089ca0             20 2a 29 3b 0a 0a 78 73 65 74 63 6f 6e 73 74 20 3a 0a 62 65 67 69 6e 0a 76 61 6c 20 20 3a 3d 20   ┆ *);  xsetconst : begin val  := ┆
0x089ca0…089cc0             69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 6c 69 78 20 66 6f 72 20 74 68 65 20 63 6f 6e 73   ┆in_integer;  (* lix for the cons┆
0x089cc0…089ce0             74 61 6e 74 20 2a 29 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74   ┆tant *) size := in_integer;  out┆
0x089ce0…089d00             5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70   ┆_opcode( op_reaad ); out_start_p┆
0x089d00…089d20             61 72 61 6d 3b 20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 76 61 6c 29 3b 0a 0a 6f   ┆aram;  out_lix (c_name, val);  o┆
0x089d20…089d40             75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74   ┆ut_opcode( op_rechw ); out_start┆
0x089d40…089d60             5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 20 29 3b 0a 0a 76   ┆_param;  out_integer( size );  v┆
0x089d60…089d80             2e 6b 69 6e 64 20 3a 3d 20 31 3b 0a 76 2e 73 69 7a 65 20 3a 3d 20 73 69 7a 65 20 2b 20 32 3b 0a   ┆.kind := 1; v.size := size + 2; ┆
0x089d80…089da0             67 65 74 5f 74 6f 6b 65 6e 3b 0a 28 2a 69 66 20 73 65 74 65 78 70 72 65 73 73 69 6f 6e 20 74 68   ┆get_token; (*if setexpression th┆
0x089da0…089dc0             65 6e 20 6f 75 74 70 75 74 20 73 65 74 72 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 65 6c 73 65   ┆en output setre instruction else┆
0x089dc0…089de0             20 6e 6f 74 65 20 74 68 61 74 20 73 65 74 61 74 6d 20 73 68 61 6c 6c 20 62 65 20 75 73 65 64 2a   ┆ note that setatm shall be used*┆
0x089de0…089e00             29 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 63 6f 6d 70 61 72 65 20 74 68 65 6e 20 69 6e 5f 6b 69   ┆) if token = xcompare then in_ki┆
0x089e00…089e20 (36, 1, 9)  6e 64 3a 3d 73 65 74 61 74 6d 0a 65 6c 73 65 20 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f   ┆nd:=setatm else out_specopcode(o┆
0x089e20…089e40             70 5f 73 65 74 72 65 2c 73 69 7a 65 29 3b 0a 0a 65 6e 64 3b 0a 0a 78 73 65 74 20 3a 0a 62 65 67   ┆p_setre,size);  end;  xset : beg┆
0x089e40…089e60             69 6e 0a 0a 66 69 72 73 74 5f 73 65 74 20 3a 3d 20 74 72 75 65 3b 0a 67 65 74 5f 74 6f 6b 65 6e   ┆in  first_set := true; get_token┆
0x089e60…089e80             3b 0a 0a 72 65 70 65 61 74 0a 62 65 67 69 6e 0a 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 65 6e   ┆;  repeat begin  if token <> xen┆
0x089e80…089ea0             64 73 65 74 20 74 68 65 6e 0a 66 69 6e 64 5f 65 78 70 72 73 20 28 76 5f 63 29 3b 0a 0a 63 61 73   ┆dset then find_exprs (v_c);  cas┆
0x089ea0…089ec0             65 20 74 6f 6b 65 6e 20 6f 66 0a 78 65 6e 64 73 65 74 3a 0a 62 65 67 69 6e 0a 28 2a 20 73 69 6d   ┆e token of xendset: begin (* sim┆
0x089ec0…089ee0             75 6c 61 74 65 20 65 6d 70 74 79 20 73 65 74 20 61 73 3a 20 20 28 2e 20 31 20 2e 2e 20 30 20 2e   ┆ulate empty set as:  (. 1 .. 0 .┆
0x089ee0…089f00             29 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 72 65 63 68 64 29 3b 0a 6f 75 74 5f   ┆) *) out_opcode (op_rechd); out_┆
0x089f00…089f20             73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 31 29 3b 0a 6f   ┆start_param;  out_integer (1); o┆
0x089f20…089f40             75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 30 29   ┆ut_start_param;  out_integer (0)┆
0x089f40…089f60             3b 0a 65 6e 64 3b 0a 78 69 6e 63 6c 75 64 65 3a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 63 6f 64   ┆; end; xinclude: begin out_opcod┆
0x089f60…089f80             65 20 28 6f 70 5f 72 65 76 70 77 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 78 73   ┆e (op_revpw); get_token; end; xs┆
0x089f80…089fa0             65 74 65 78 70 72 3a 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78   ┆etexpr: begin get_token; find_ex┆
0x089fa0…089fc0             70 72 73 20 28 76 5f 63 29 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 69 6e 63 6c 75 64 65 69   ┆prs (v_c); skip_token (xincludei┆
0x089fc0…089fe0             6e 74 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65   ┆nt); end; else error(pass4code_e┆
0x089fe0…08a000             72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 65 74 63   ┆rror); end;  out_opcode( op_setc┆
0x08a000…08a020 (36, 1, 10) 72 20 29 3b 0a 28 2a 20 66 6f 72 63 65 20 64 79 6e 61 6d 69 63 20 6d 61 72 6b 69 6e 67 20 6f 66   ┆r ); (* force dynamic marking of┆
0x08a020…08a040             20 72 6f 75 74 69 6e 65 20 61 70 70 65 74 69 74 65 20 2a 29 0a 64 79 6e 5f 65 76 61 6c 5f 73 74   ┆ routine appetite *) dyn_eval_st┆
0x08a040…08a060             61 63 6b 3a 3d 20 74 72 75 65 3b 0a 0a 69 66 20 6e 6f 74 28 20 66 69 72 73 74 5f 73 65 74 20 29   ┆ack:= true;  if not( first_set )┆
0x08a060…08a080             20 74 68 65 6e 20 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 65 74 75 6e 20 29 3b 0a 0a   ┆ then  out_opcode( op_setun );  ┆
0x08a080…08a0a0             66 69 72 73 74 5f 73 65 74 20 3a 3d 20 66 61 6c 73 65 0a 0a 65 6e 64 0a 0a 75 6e 74 69 6c 20 74   ┆first_set := false  end  until t┆
0x08a0a0…08a0c0             6f 6b 65 6e 20 3d 20 78 65 6e 64 73 65 74 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 76 2e 6b   ┆oken = xendset;  get_token;  v.k┆
0x08a0c0…08a0e0             69 6e 64 20 3a 3d 20 31 3b 0a 76 2e 73 69 7a 65 20 3a 3d 20 30 0a 65 6e 64 3b 0a 0a 0a 65 6c 73   ┆ind := 1; v.size := 0 end;   els┆
0x08a0e0…08a100             65 0a 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 20 20 20 66 69 6e 64 5f 76 61 72 76 61 6c 75 65 28   ┆e begin           find_varvalue(┆
0x08a100…08a120             20 76 29 0a 0a 20 20 20 20 20 20 65 6e 64 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 74 6f 6b 65   ┆ v)        end end; (* case toke┆
0x08a120…08a140             6e 20 2a 29 0a 0a 0a 65 6e 64 20 20 28 2a 20 20 20 66 69 6e 64 5f 6f 70 65 72 61 6e 64 20 20 20   ┆n *)   end  (*   find_operand   ┆
0x08a140…08a160             2a 29 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 65 78 70 72 73 20 28 76 61 72 20   ┆*);   procedure find_exprs (var ┆
0x08a160…08a180             76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 28 2a 20 73 69 6d 69 6c 61 72 20 74   ┆v: varvalue_descr); (* similar t┆
0x08a180…08a1a0             6f 20 66 69 6e 64 5f 65 78 70 72 2c 20 62 75 74 20 61 6c 77 61 79 73 20 64 65 6c 69 76 65 72 73   ┆o find_expr, but always delivers┆
0x08a1a0…08a1c0             20 72 65 73 75 6c 74 20 6f 6e 20 73 74 61 63 6b 20 2a 29 0a 62 65 67 69 6e 0a 66 69 6e 64 5f 65   ┆ result on stack *) begin find_e┆
0x08a1c0…08a1e0             78 70 72 20 28 76 29 3b 0a 69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20   ┆xpr (v); if operand_situation = ┆
0x08a1e0…08a200             61 66 74 65 72 5f 73 68 6f 72 74 5f 63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74   ┆after_short_const then begin out┆
0x08a200…08a220 (36, 1, 11) 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 72 65 63 68 77 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61   ┆_opcode (op_rechw); out_start_pa┆
0x08a220…08a240             72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 76 2e 76 61 6c 29 3b 0a 6f 70 65 72 61   ┆ram;  out_integer (v.val); opera┆
0x08a240…08a260             6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3a 3d 20 61 66 74 65 72 5f 6f 70 61 6e 64 73 3b 0a 65 6e   ┆nd_situation := after_opands; en┆
0x08a260…08a280             64 3b 0a 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69   ┆d; end;            procedure  fi┆
0x08a280…08a2a0             6e 64 5f 66 75 6e 63 5f 63 61 6c 6c 28 20 76 61 72 20 76 20 3a 20 76 61 72 76 61 6c 75 65 5f 64   ┆nd_func_call( var v : varvalue_d┆
0x08a2a0…08a2c0             65 73 63 72 29 3b 0a 0a 76 61 72 0a 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73   ┆escr);  var size_of_function_res┆
0x08a2c0…08a2e0             75 6c 74 2c 20 20 28 2a 20 75 73 65 64 20 62 79 20 66 69 6e 64 20 70 72 6f 63 65 73 73 20 70 61   ┆ult,  (* used by find process pa┆
0x08a2e0…08a300             72 61 6d 20 2a 29 0a 76 61 6c 75 65 5f 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 20 28 2a 20   ┆ram *) value_size : integer; (* ┆
0x08a300…08a320             73 69 7a 65 20 6f 66 20 72 65 73 75 6c 74 20 69 66 20 6e 6f 74 20 79 6f 79 6f 20 2a 29 0a 0a 62   ┆size of result if not yoyo *)  b┆
0x08a320…08a340             65 67 69 6e 0a 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3a 3d 20   ┆egin size_of_function_result := ┆
0x08a340…08a360             30 3b 0a 28 2a 20 75 73 65 64 20 62 79 20 66 69 6e 64 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d   ┆0; (* used by find process param┆
0x08a360…08a380             2c 20 63 68 61 6e 67 65 64 20 62 79 20 66 69 6e 64 5f 61 72 67 6c 69 73 74 20 2a 29 0a 0a 69 66   ┆, changed by find_arglist *)  if┆
0x08a380…08a3a0             20 74 6f 6b 65 6e 20 3d 20 78 70 72 6f 63 65 73 73 70 61 72 61 6d 20 74 68 65 6e 0a 66 69 6e 64   ┆ token = xprocessparam then find┆
0x08a3a0…08a3c0             5f 70 72 6f 63 65 73 73 70 61 72 61 6d 28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f   ┆_processparam( size_of_function_┆
0x08a3c0…08a3e0             72 65 73 75 6c 74 20 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78   ┆result ) else begin if token = x┆
0x08a3e0…08a400             73 74 64 66 75 6e 63 63 61 6c 6c 20 74 68 65 6e 0a 66 69 6e 64 5f 73 74 64 5f 63 61 6c 6c 20 28   ┆stdfunccall then find_std_call (┆
0x08a400…08a420 (36, 1, 12) 76 29 0a 65 6c 73 65 0a 66 69 6e 64 5f 63 61 6c 6c 28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74   ┆v) else find_call( size_of_funct┆
0x08a420…08a440             69 6f 6e 5f 72 65 73 75 6c 74 20 29 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 66 63 61 6c 6c   ┆ion_result ); skip_token (xfcall┆
0x08a440…08a460             29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 65 6e 64 66 75 6e 63 63 61 6c   ┆); end;  if token <> xendfunccal┆
0x08a460…08a480             6c 20 74 68 65 6e 0a 66 69 6e 64 5f 76 61 72 76 61 6c 75 65 20 28 76 29 20 20 28 2a 20 72 65 74   ┆l then find_varvalue (v)  (* ret┆
0x08a480…08a4a0             72 69 65 76 65 20 72 65 73 75 6c 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 2d 63 61 6c 6c 20 2a 29   ┆rieve result of function-call *)┆
0x08a4a0…08a4c0             0a 0a 65 6c 73 65 0a 69 66 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c   ┆  else if size_of_function_resul┆
0x08a4c0…08a4e0             74 20 3c 3e 20 30 20 74 68 65 6e 0a 77 69 74 68 20 76 20 64 6f 0a 62 65 67 69 6e 0a 6b 69 6e 64   ┆t <> 0 then with v do begin kind┆
0x08a4e0…08a500             20 3a 3d 20 31 3b 20 20 28 2a 20 6f 6e 20 73 74 61 63 6b 20 74 6f 70 20 2a 29 0a 73 69 7a 65 20   ┆ := 1;  (* on stack top *) size ┆
0x08a500…08a520             3a 3d 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 3b 0a 65 6e 64 3b   ┆:= size_of_function_result; end;┆
0x08a520…08a540             20 28 2a 20 77 69 74 68 20 76 20 2a 29 0a 0a 76 61 6c 75 65 5f 73 69 7a 65 20 3a 3d 20 69 6e 5f   ┆ (* with v *)  value_size := in_┆
0x08a540…08a560             69 6e 74 65 67 65 72 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 20 28 2a 20 20 66 69 6e   ┆integer; get_token;  end (*  fin┆
0x08a560…08a580             64 5f 66 75 6e 63 5f 63 61 6c 6c 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66   ┆d_func_call  *);    procedure  f┆
0x08a580…08a5a0             69 6e 64 5f 70 72 6f 63 5f 63 61 6c 6c 28 20 76 61 72 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74   ┆ind_proc_call( var size_of_funct┆
0x08a5a0…08a5c0             69 6f 6e 5f 72 65 73 75 6c 74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 62 65 67 69 6e 0a 0a   ┆ion_result : integer );  begin  ┆
0x08a5c0…08a5e0             69 66 20 74 6f 6b 65 6e 20 3d 20 78 70 72 6f 63 65 73 73 70 61 72 61 6d 20 74 68 65 6e 0a 66 69   ┆if token = xprocessparam then fi┆
0x08a5e0…08a600             6e 64 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f   ┆nd_processparam( size_of_functio┆
0x08a600…08a620 (36, 1, 13) 6e 5f 72 65 73 75 6c 74 20 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 66 69 6e 64 5f 63 61 6c 6c   ┆n_result ) else begin  find_call┆
0x08a620…08a640             28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 29 3b 0a 0a 73 6b   ┆( size_of_function_result );  sk┆
0x08a640…08a660             69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 70 63 61 6c 6c 29 3b 0a 0a 65 6e 64 0a 0a 65 6e 64 20   ┆ip_token (xendpcall);  end  end ┆
0x08a660…08a680             20 28 2a 20 20 66 69 6e 64 5f 70 72 6f 63 5f 63 61 6c 6c 20 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65   ┆ (*  find_proc_call  *);   proce┆
0x08a680…08a6a0             64 75 72 65 20 66 69 6e 64 5f 73 79 73 5f 69 6e 69 74 28 20 76 61 72 20 72 65 66 5f 63 6f 75 6e   ┆dure find_sys_init( var ref_coun┆
0x08a6a0…08a6c0             74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61 72 20 64 79 6e 5f 72 65 66 73 20 3a 20 62 6f 6f 6c   ┆t : integer; var dyn_refs : bool┆
0x08a6c0…08a6e0             65 61 6e 20 3b 0a 76 61 72 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72   ┆ean ; var shadow_count : integer┆
0x08a6e0…08a700             3b 20 76 61 72 20 64 79 6e 5f 73 68 61 64 6f 77 73 20 3a 20 62 6f 6f 6c 65 61 6e 29 3b 0a 66 6f   ┆; var dyn_shadows : boolean); fo┆
0x08a700…08a720             72 77 61 72 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 73 74 64 5f 70 72 6f 63 63   ┆rward;  procedure find_std_procc┆
0x08a720…08a740             61 6c 6c 3b 0a 76 61 72 0a 64 75 6d 6d 79 5f 72 65 66 73 2c 20 64 75 6d 6d 79 5f 73 68 61 64 6f   ┆all; var dummy_refs, dummy_shado┆
0x08a740…08a760             77 73 2c 20 28 2a 20 66 6f 72 20 73 79 73 74 65 6d 20 69 6e 69 74 20 6f 66 20 68 65 61 70 20 65   ┆ws, (* for system init of heap e┆
0x08a760…08a780             6c 65 6d 65 6e 74 73 20 2a 29 0a 73 69 7a 65 5f 6f 66 5f 72 65 73 75 6c 74 2c 20 6b 65 79 3a 20   ┆lements *) size_of_result, key: ┆
0x08a780…08a7a0             69 6e 74 65 67 65 72 3b 20 0a 64 75 6d 6d 79 5f 64 79 6e 5f 72 65 66 73 2c 20 64 75 6d 6d 79 5f   ┆integer;  dummy_dyn_refs, dummy_┆
0x08a7a0…08a7c0             64 79 6e 5f 73 68 61 64 6f 77 73 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 69 66 20 69   ┆dyn_shadows: boolean; begin if i┆
0x08a7c0…08a7e0             6e 5f 69 6e 74 65 67 65 72 3c 3e 78 6e 65 77 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34   ┆n_integer<>xnew then error(pass4┆
0x08a7e0…08a800             63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e   ┆code_error);  out_nl; out_commen┆
0x08a800…08a820 (36, 1, 14) 74 28 27 20 6e 65 77 20 63 61 6c 6c 20 27 29 3b 0a 66 69 6e 64 5f 61 72 67 6c 69 73 74 28 65 78   ┆t(' new call '); find_arglist(ex┆
0x08a820…08a840             74 5f 63 61 6c 6c 2c 20 73 69 7a 65 5f 6f 66 5f 72 65 73 75 6c 74 29 3b 0a 73 6b 69 70 5f 74 6f   ┆t_call, size_of_result); skip_to┆
0x08a840…08a860             6b 65 6e 28 78 65 6e 64 6e 65 77 63 61 6c 6c 29 3b 0a 0a 28 2a 20 65 6e 64 20 6f 66 20 6e 65 77   ┆ken(xendnewcall);  (* end of new┆
0x08a860…08a880             20 63 61 6c 6c 2c 20 6d 61 6b 65 20 63 6f 64 65 20 74 6f 20 74 65 73 74 20 69 66 20 65 6e 6f 75   ┆ call, make code to test if enou┆
0x08a880…08a8a0             67 68 20 6d 65 6d 6f 72 79 20 28 72 65 73 75 6c 74 3c 3e 6e 69 6c 29 2c 0a 69 6e 69 74 69 61 6c   ┆gh memory (result<>nil), initial┆
0x08a8a0…08a8c0             69 7a 65 20 70 6f 73 73 69 62 6c 65 20 73 79 73 74 65 6d 20 63 6f 6d 70 6f 6e 65 6e 74 73 2c 20   ┆ize possible system components, ┆
0x08a8c0…08a8e0             61 6e 64 20 61 73 69 67 6e 20 74 68 65 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 70 6f 69 6e   ┆and asign the result to the poin┆
0x08a8e0…08a900             74 65 72 20 76 61 72 69 61 62 6c 65 20 20 2a 29 0a 28 2a 20 73 74 61 63 6b 20 70 69 63 74 75 72   ┆ter variable  *) (* stack pictur┆
0x08a900…08a920             65 3a 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d   ┆e:                        ------┆
0x08a920…08a940             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20   ┆-------------------------       ┆
0x08a940…08a960             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 72 65 73 20 6f 66 20 70 6f 69 6e 74 65 72   ┆               addres of pointer┆
0x08a960…08a980             20 76 61 72 69 61 62 6c 65 20 28 61 63 74 75 61 6c 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 6e   ┆ variable (actual parameter of n┆
0x08a980…08a9a0             65 77 20 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d   ┆ew call)                    ----┆
0x08a9a0…08a9c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20   ┆---------------------------     ┆
0x08a9c0…08a9e0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f 6d 20 66 6f 72 20 61 64 64 72 65 73   ┆                 room for addres┆
0x08a9e0…08aa00             73 20 6f 66 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20   ┆s of allocated memory           ┆
0x08aa00…08aa20 (36, 1, 15) 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆         -----------------------┆
0x08aa20…08aa40             2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61   ┆--------                      wa┆
0x08aa40…08aa60             6e 74 65 64 20 73 69 7a 65 20 69 6e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆nted size in bytes              ┆
0x08aa60…08aa80             20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆      --------------------------┆
0x08aa80…08aaa0             2d 2d 2d 2d 2d 0a 20 20 20 20 74 6f 70 2d 3e 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 69 67   ┆-----     top->            allig┆
0x08aaa0…08aac0             6e 20 28 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆n (boolean value)               ┆
0x08aac0…08aae0             20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆     ---------------------------┆
0x08aae0…08ab00             2d 2d 2d 2d 0a 2a 29 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75 73 65 2c 20   ┆---- *) code_call_proc(sys_use, ┆
0x08ab00…08ab20             65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 5f 5f 6e 65 77 5f 5f 5f 5f 72 63 27 29 2c   ┆ext_lookup(key, '___new____rc'),┆
0x08ab20…08ab40             20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 0a 30 2c 20 32 2b 32 20 28 2a 20 70 61 72   ┆ key, const_niv_0, 0, 2+2 (* par┆
0x08ab40…08ab60             61 6d 65 74 65 72 20 6c 65 6e 67 74 68 20 2a 29 2c 20 34 29 3b 0a 0a 28 2a 20 73 74 61 63 6b 20   ┆ameter length *), 4);  (* stack ┆
0x08ab60…08ab80             70 69 63 74 75 72 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d   ┆picture:                    ----┆
0x08ab80…08aba0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20   ┆---------------------------     ┆
0x08aba0…08abc0             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 72 65 73 73 20 6f 66 20 70 6f 69 6e   ┆                 address of poin┆
0x08abc0…08abe0             74 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ter                    ---------┆
0x08abe0…08ac00             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 74 6f 70 20 2d 3e   ┆----------------------    top ->┆
0x08ac00…08ac20 (37, 0, 1)  20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 72 65 73 73 20 6f 66 20 61 6c 6c 6f 63 61 74 65 64   ┆            address of allocated┆
0x08ac20…08ac40             20 6d 65 6d 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d   ┆ memory                    -----┆
0x08ac40…08ac60             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 28 2a   ┆-------------------------- *) (*┆
0x08ac60…08ac80             6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70   ┆out_nl; out_token(zbegin); out_p┆
0x08ac80…08aca0             5f 69 64 28 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 6c   ┆_id(id_size_ok); out_token(zendl┆
0x08aca0…08acc0             69 73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 74 65 73 74 20 72 65 73 75 6c 74 20   ┆ist); out_comment(' test result ┆
0x08acc0…08ace0             3c 3e 20 6e 69 6c 27 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 61 78 64 29 3b 0a   ┆<> nil'); out_opcode(op_reaxd); ┆
0x08ace0…08ad00             6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c 20 2d 32 29 3b 0a 6f 75 74 5f 6f 70   ┆out_op_int(op_reasd, -2); out_op┆
0x08ad00…08ad20             63 6f 64 65 28 6f 70 5f 74 6e 69 6c 6c 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 7a   ┆code(op_tnill); out_op_id(op_jmz┆
0x08ad20…08ad40             6e 65 2c 20 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65   ┆ne, id_size_ok); code_exc_trigge┆
0x08ad40…08ad60             72 28 63 5f 65 78 63 5f 6e 65 77 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 73 69 7a 65 5f   ┆r(c_exc_new); out_label(id_size_┆
0x08ad60…08ad80             6f 6b 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 29 3b 0a 2a 29   ┆ok); out_nl; out_token(zend); *)┆
0x08ad80…08ada0             0a 0a 69 66 20 74 6f 6b 65 6e 3d 78 73 79 73 6e 65 77 69 6e 69 74 20 74 68 65 6e 0a 62 65 67 69   ┆  if token=xsysnewinit then begi┆
0x08ada0…08adc0             6e 0a 68 65 61 70 5f 69 6e 69 74 3a 3d 20 74 72 75 65 3b 20 28 2a 20 66 6c 61 67 20 73 70 65 63   ┆n heap_init:= true; (* flag spec┆
0x08adc0…08ade0             69 61 6c 20 63 68 61 69 6e 69 6e 67 20 6f 66 20 70 6f 73 73 69 62 6c 65 20 72 65 66 65 72 65 6e   ┆ial chaining of possible referen┆
0x08ade0…08ae00             63 65 73 20 61 6e 64 2f 6f 72 20 73 68 61 64 6f 77 73 20 2a 29 0a 66 69 6e 64 5f 73 79 73 5f 69   ┆ces and/or shadows *) find_sys_i┆
0x08ae00…08ae20 (37, 0, 2)  6e 69 74 28 64 75 6d 6d 79 5f 72 65 66 73 2c 20 64 75 6d 6d 79 5f 64 79 6e 5f 72 65 66 73 2c 20   ┆nit(dummy_refs, dummy_dyn_refs, ┆
0x08ae20…08ae40             64 75 6d 6d 79 5f 73 68 61 64 6f 77 73 2c 20 64 75 6d 6d 79 5f 64 79 6e 5f 73 68 61 64 6f 77 73   ┆dummy_shadows, dummy_dyn_shadows┆
0x08ae40…08ae60             29 3b 0a 68 65 61 70 5f 69 6e 69 74 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 0a 6f 75 74 5f   ┆); heap_init:= false; end;  out_┆
0x08ae60…08ae80             6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 73 61 2c 20 30 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74   ┆op_int(op_stvsa, 0); out_comment┆
0x08ae80…08aea0             28 27 20 65 6e 64 20 6e 65 77 20 63 61 6c 6c 20 27 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 66 69 6e   ┆(' end new call ');  end; (* fin┆
0x08aea0…08aec0             64 20 73 74 64 20 70 72 6f 63 63 61 6c 6c 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66   ┆d std proccall *)   procedure  f┆
0x08aec0…08aee0             69 6e 64 5f 63 61 6c 6c 28 20 76 61 72 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72   ┆ind_call( var size_of_function_r┆
0x08aee0…08af00             65 73 75 6c 74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 76 61 72 0a 6e 69 76 2c 20 6c 69 78   ┆esult : integer );  var niv, lix┆
0x08af00…08af20             2c 20 70 61 72 61 6d 6c 65 6e 67 74 68 2c 20 61 70 70 65 74 69 74 65 2c 20 6b 65 79 20 3a 20 69   ┆, paramlength, appetite, key : i┆
0x08af20…08af40             6e 74 65 67 65 72 3b 0a 63 61 6c 6c 6b 69 6e 64 20 3a 20 63 61 6c 6c 6d 6f 64 65 73 3b 0a 6e 61   ┆nteger; callkind : callmodes; na┆
0x08af40…08af60             6d 65 2c 20 69 64 20 3a 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 63 61 73   ┆me, id : identifier;  begin  cas┆
0x08af60…08af80             65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 78 70 72 6f 63 63 61 6c 6c 2c 0a 78 66 75 6e 63 63 61 6c 6c   ┆e token of  xproccall, xfunccall┆
0x08af80…08afa0             3a 0a 62 65 67 69 6e 20 28 2a 20 69 6e 74 65 72 6e 61 6c 20 72 6f 75 74 69 6e 65 20 2a 29 0a 0a   ┆: begin (* internal routine *)  ┆
0x08afa0…08afc0             6e 69 76 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 69 78 20 3a 3d 20 69 6e 5f 69 6e 74   ┆niv := in_integer; lix := in_int┆
0x08afc0…08afe0             65 67 65 72 3b 0a 0a 63 61 6c 6c 6b 69 6e 64 20 3a 3d 20 69 6e 74 5f 63 61 6c 6c 3b 0a 65 6e 64   ┆eger;  callkind := int_call; end┆
0x08afe0…08b000             3b 0a 78 65 78 74 70 72 6f 63 63 61 6c 6c 2c 0a 78 65 78 74 66 75 6e 63 63 61 6c 6c 3a 0a 62 65   ┆; xextproccall, xextfunccall: be┆
0x08b000…08b020 (37, 0, 3)  67 69 6e 20 28 2a 20 65 78 74 65 72 6e 61 6c 20 72 6f 75 74 69 6e 65 20 2a 29 0a 6b 65 79 20 3a   ┆gin (* external routine *) key :┆
0x08b020…08b040             3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6e 69 76 20 3a 3d 20 63 6f 6e 73 74 5f 6e 69 76 5f 30   ┆= in_integer; niv := const_niv_0┆
0x08b040…08b060             3b 0a 63 61 6c 6c 6b 69 6e 64 20 3a 3d 20 67 65 74 6b 69 6e 64 20 28 6b 65 79 29 3b 0a 65 6e 64   ┆; callkind := getkind (key); end┆
0x08b060…08b080             3b 0a 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a   ┆;  else error(pass4code_error); ┆
0x08b080…08b0a0             65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2a 29 0a 0a 70 61 72 61 6d 6c 65 6e 67 74 68 20 3a 3d 20   ┆end; (* case *)  paramlength := ┆
0x08b0a0…08b0c0             69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 66 69 6e 64 5f 61 72 67 6c 69 73 74 28 20 63 61 6c 6c 6b   ┆in_integer;  find_arglist( callk┆
0x08b0c0…08b0e0             69 6e 64 20 20 2c 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 29   ┆ind  , size_of_function_result )┆
0x08b0e0…08b100             3b 0a 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 20 28 67 65 6e 65 72 61 6c 5f 75 73 65 2c 20   ┆;  code_call_proc (general_use, ┆
0x08b100…08b120             63 61 6c 6c 6b 69 6e 64 2c 20 6b 65 79 2c 20 6e 69 76 2c 20 6c 69 78 2c 20 70 61 72 61 6d 6c 65   ┆callkind, key, niv, lix, paramle┆
0x08b120…08b140             6e 67 74 68 2c 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 29 3b 0a 0a   ┆ngth,size_of_function_result);  ┆
0x08b140…08b160             0a 65 6e 64 20 28 2a 20 20 66 69 6e 64 5f 63 61 6c 6c 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65   ┆ end (*  find_call  *);    proce┆
0x08b160…08b180             64 75 72 65 20 20 66 69 6e 64 5f 63 6f 6e 73 74 61 6e 74 73 3b 0a 0a 76 61 72 0a 6e 2c 20 70 2c   ┆dure  find_constants;  var n, p,┆
0x08b180…08b1a0             20 69 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b   ┆ i : integer;  begin  get_token;┆
0x08b1a0…08b1c0             0a 77 68 69 6c 65 20 74 6f 6b 65 6e 20 3d 20 78 64 65 66 6c 69 78 20 64 6f 0a 62 65 67 69 6e 0a   ┆ while token = xdeflix do begin ┆
0x08b1c0…08b1e0             0a 6f 75 74 5f 6c 69 78 5f 6c 61 62 65 6c 20 28 63 5f 6e 61 6d 65 2c 20 69 6e 5f 69 6e 74 65 67   ┆ out_lix_label (c_name, in_integ┆
0x08b1e0…08b200             65 72 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 20 20 28 2a 20 73 6b 69 70 3a 20 78 69 6e 69 74   ┆er);  get_token;  (* skip: xinit┆
0x08b200…08b220 (37, 0, 4)  63 6f 6e 73 74 20 2a 29 0a 0a 6e 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f   ┆const *)  n := in_integer;  out_┆
0x08b220…08b240             74 61 62 28 20 31 35 20 29 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 63 6f 6e 73 74 29 3b 20 20   ┆tab( 15 ); out_token (zconst);  ┆
0x08b240…08b260             6f 75 74 5f 69 6e 74 65 67 65 72 28 20 32 2a 6e 20 29 3b 0a 0a 70 20 3a 3d 20 30 3b 0a 66 6f 72   ┆out_integer( 2*n );  p := 0; for┆
0x08b260…08b280             20 69 20 3a 3d 20 31 20 74 6f 20 6e 20 64 6f 0a 62 65 67 69 6e 0a 69 66 20 70 20 6d 6f 64 20 35   ┆ i := 1 to n do begin if p mod 5┆
0x08b280…08b2a0             20 3d 20 30 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 20 20 20 6f 75 74 5f 74 61   ┆ = 0 then begin out_nl;   out_ta┆
0x08b2a0…08b2c0             62 28 20 32 30 20 29 0a 65 6e 64 0a 65 6c 73 65 0a 6f 75 74 5f 63 68 61 72 20 28 27 2c 27 29 3b   ┆b( 20 ) end else out_char (',');┆
0x08b2c0…08b2e0             0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 69 6e 5f 69 6e 74 65 67 65 72 20 29 3b 0a 70 20 3a 3d   ┆ out_integer( in_integer ); p :=┆
0x08b2e0…08b300             20 70 20 2b 20 31 0a 65 6e 64 3b 20 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 61 62 28 20 31   ┆ p + 1 end;   out_nl; out_tab( 1┆
0x08b300…08b320             35 20 29 3b 20 20 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 6e 6c 3b   ┆5 );   out_token (zend); out_nl;┆
0x08b320…08b340             0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 65 6e 64 20 28 2a 20 20 66 69 6e 64 5f 63   ┆  get_token; end; end (*  find_c┆
0x08b340…08b360             6f 6e 73 74 61 6e 74 73 20 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 6f 75 74 5f 6d 61   ┆onstants  *);   procedure out_ma┆
0x08b360…08b380             6b 65 5f 74 6f 70 5f 65 76 65 6e 3b 0a 28 2a 20 6d 61 6b 65 20 74 6f 70 20 6f 66 20 73 74 61 63   ┆ke_top_even; (* make top of stac┆
0x08b380…08b3a0             6b 20 76 61 72 69 61 62 6c 65 20 65 76 65 6e 2c 20 69 2e 65 2e 20 72 6f 75 6e 64 20 75 70 20 2a   ┆k variable even, i.e. round up *┆
0x08b3a0…08b3c0             29 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29   ┆)  begin  out_opcode( op_revpw )┆
0x08b3c0…08b3e0             3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 31 20 29 3b 0a 6f 75 74   ┆; out_op_int( op_rechw, 1 ); out┆
0x08b3e0…08b400             5f 6f 70 63 6f 64 65 28 20 6f 70 5f 61 6e 64 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f   ┆_opcode( op_and ); out_opcode( o┆
0x08b400…08b420 (37, 0, 5)  70 5f 75 61 64 64 20 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 6d 70   ┆p_uadd );  end;   procedure comp┆
0x08b420…08b440             75 74 65 5f 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 65 6e 74 73 20 28 20 64 6f 70 65 5f 73 74   ┆ute_number_of_elements ( dope_st┆
0x08b440…08b460             61 72 74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 0a 28 2a 20 64 6f 70 65 5f 73 74 61 72 74 20   ┆art : integer );  (* dope_start ┆
0x08b460…08b480             3d 20 5e 20 72 65 63 6f 72 64 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73   ┆= ^ record .                   s┆
0x08b480…08b4a0             69 7a 65 2c 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 72 73 74 5f 69   ┆ize, .                   first_i┆
0x08b4a0…08b4c0             6e 64 65 78 2c 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 69   ┆ndex, .                   last_i┆
0x08b4c0…08b4e0             6e 64 65 78 2c 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e   ┆ndex, .                   elemen┆
0x08b4e0…08b500             74 5f 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 2e 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆t_size : integer; .             ┆
0x08b500…08b520             20 20 20 20 65 6e 64 0a 0a 2a 29 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f   ┆    end  *)  begin  out_nl; out_┆
0x08b520…08b540             74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 20 6f 75 74 5f 70 5f 69 64 28 20 69 64 5f 65 6c 65   ┆token (zbegin); out_p_id( id_ele┆
0x08b540…08b560             6d 73 5f 72 65 61 64 79 20 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29   ┆ms_ready ); out_token (zendlist)┆
0x08b560…08b580             3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 63 6f 6d 70 75 74 65 20 6e 75 6d 62 65 72   ┆; out_comment( '  compute number┆
0x08b580…08b5a0             20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 27 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f   ┆ of elements ' );  out_op_int( o┆
0x08b5a0…08b5c0             70 5f 72 65 76 6c 64 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 32 20 29 3b 0a 6f 75 74 5f 6f   ┆p_revld, dope_start + 2 ); out_o┆
0x08b5c0…08b5e0             70 63 6f 64 65 28 20 6f 70 5f 6c 65 20 29 3b 20 28 2a 20 30 3a 20 66 69 72 73 74 20 3e 20 6c 61   ┆pcode( op_le ); (* 0: first > la┆
0x08b5e0…08b600             73 74 2c 20 69 2e 65 2e 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 3d 20 30 20   ┆st, i.e. number of elements = 0 ┆
0x08b600…08b620 (37, 0, 6)  2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 6f 75 74 5f 6f   ┆*) out_opcode( op_revpw ); out_o┆
0x08b620…08b640             70 5f 69 64 20 28 20 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 65 6c 65 6d 73 5f 72 65 61 64 79 20   ┆p_id ( op_jmzeq, id_elems_ready ┆
0x08b640…08b660             29 3b 20 28 2a 20 69 66 20 66 69 72 73 74 20 3e 20 6c 61 73 74 20 74 68 65 6e 20 6e 6f 5f 6f 66   ┆); (* if first > last then no_of┆
0x08b660…08b680             5f 65 6c 65 6d 73 20 3a 3d 20 30 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65   ┆_elems := 0 *) out_op_int( op_re┆
0x08b680…08b6a0             76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 34 20 29 3b 20 28 2a 20 20 65 6c 73 65 20   ┆vlw, dope_start + 4 ); (*  else ┆
0x08b6a0…08b6c0             20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 76 6c 77 2c 20 64 6f 70 65 5f 73   ┆ *) out_op_int( op_revlw, dope_s┆
0x08b6c0…08b6e0             74 61 72 74 20 2b 20 32 20 29 3b 20 28 2a 20 6e 6f 5f 6f 66 5f 65 6c 65 6d 73 20 3a 3d 20 20 20   ┆tart + 2 ); (* no_of_elems :=   ┆
0x08b6e0…08b700             20 20 20 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 6d 73 75 62 20 29 3b 20 20 20   ┆    *) out_opcode( op_msub );   ┆
0x08b700…08b720             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 20 6c 61 73 74 20 2d 20 66 69 72 73 74 20   ┆               (*  last - first ┆
0x08b720…08b740             20 20 20 20 20 20 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64 64 20 29 3b   ┆       *) out_opcode( op_uadd );┆
0x08b740…08b760             20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 20 20 20 20 2b 20 31 20 20 20 20   ┆                  (*     + 1    ┆
0x08b760…08b780             20 20 20 20 20 20 20 20 20 20 2a 29 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 20 69 64 5f 65 6c 65 6d   ┆          *) out_label ( id_elem┆
0x08b780…08b7a0             73 5f 72 65 61 64 79 20 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65   ┆s_ready ); out_nl; out_token (ze┆
0x08b7a0…08b7c0             6e 64 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 6c 61 73 74 20 2d 20 66 69 72 73 74 20   ┆nd); out_comment(' last - first ┆
0x08b7c0…08b7e0             2b 20 31 20 27 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 64 79 6e 5f 74   ┆+ 1 ');  end;    procedure dyn_t┆
0x08b7e0…08b800             79 70 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 76 61 72 0a 74 65 6d 70 6c 61 74 65 5f 76   ┆ype_declaration;  var template_v┆
0x08b800…08b820 (37, 0, 7)  2c 20 74 65 6d 70 6c 61 74 65 31 5f 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 73   ┆, template1_v : varaddr_descr; s┆
0x08b820…08b840             69 7a 65 2c 20 66 69 72 73 74 2c 20 6c 61 73 74 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 3a 20 69   ┆ize, first, last, dope_start : i┆
0x08b840…08b860             6e 74 65 67 65 72 3b 0a 65 6c 65 6d 65 6e 74 5f 73 69 7a 65 2c 20 66 69 65 6c 64 73 5f 70 72 5f   ┆nteger; element_size, fields_pr_┆
0x08b860…08b880             77 6f 72 64 2c 20 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 20 3a 20 69 6e 74 65 67 65 72 3b 0a 61   ┆word, bits_pr_field : integer; a┆
0x08b880…08b8a0             6c 6c 69 67 6e 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 76 61 72 5f 76 61 6c 5f 76 20 3a 20 76 61 72   ┆llign : boolean; var_val_v : var┆
0x08b8a0…08b8c0             76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20   ┆value_descr;  begin  case token ┆
0x08b8c0…08b8e0             6f 66 0a 78 61 72 72 61 79 31 74 65 6d 70 6c 61 74 65 2c 0a 78 61 72 72 61 79 32 74 65 6d 70 6c   ┆of xarray1template, xarray2templ┆
0x08b8e0…08b900             61 74 65 2c 0a 78 61 72 72 61 79 33 74 65 6d 70 6c 61 74 65 20 3a 20 62 65 67 69 6e 0a 0a 64 6f   ┆ate, xarray3template : begin  do┆
0x08b900…08b920             70 65 5f 73 74 61 72 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 67 65 74 5f 6e 69 76 5f   ┆pe_start := in_integer; get_niv_┆
0x08b920…08b940             6f 66 66 73 65 74 28 20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 63 61 73 65 20 74 6f 6b 65 6e   ┆offset( template_v ); case token┆
0x08b940…08b960             20 6f 66 0a 78 61 72 72 61 79 31 74 65 6d 70 6c 61 74 65 3a 20 62 65 67 69 6e 20 28 2a 20 64 79   ┆ of xarray1template: begin (* dy┆
0x08b960…08b980             6e 61 6d 69 63 20 69 6e 64 65 78 20 72 61 6e 67 65 2c 20 73 74 61 74 69 63 20 63 6f 6d 70 20 2a   ┆namic index range, static comp *┆
0x08b980…08b9a0             29 0a 65 6c 65 6d 65 6e 74 5f 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 66 69   ┆) element_size := in_integer; fi┆
0x08b9a0…08b9c0             65 6c 64 73 5f 70 72 5f 77 6f 72 64 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 62 69 74 73   ┆elds_pr_word := in_integer; bits┆
0x08b9c0…08b9e0             5f 70 72 5f 66 69 65 6c 64 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 77 69 74 68 20 74   ┆_pr_field := in_integer;  with t┆
0x08b9e0…08ba00             65 6d 70 6c 61 74 65 5f 76 20 64 6f 0a 28 2a 6c 6f 61 64 20 28 66 69 72 73 74 2c 20 6c 61 73 74   ┆emplate_v do (*load (first, last┆
0x08ba00…08ba20 (37, 0, 8)  29 20 2a 29 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 64 6f 75 62 6c 65 5f   ┆) *) out_op_rev__(access,double_┆
0x08ba20…08ba40             74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 2b 32 29 3b 0a 6f 75 74 5f 6f 70 5f   ┆typ,c.niv-niv,offset+2); out_op_┆
0x08ba40…08ba60             69 6e 74 28 20 6f 70 5f 73 74 76 6c 64 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 32 20 29 3b   ┆int( op_stvld, dope_start + 2 );┆
0x08ba60…08ba80             0a 0a 69 66 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 20 3d 20 31 20 74 68 65 6e 20 0a 62 65   ┆  if fields_pr_word = 1 then  be┆
0x08ba80…08baa0             67 69 6e 20 28 2a 20 75 6e 70 61 63 6b 65 64 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20   ┆gin (* unpacked *)  out_op_int( ┆
0x08baa0…08bac0             6f 70 5f 72 65 63 68 77 2c 20 65 6c 65 6d 65 6e 74 5f 73 69 7a 65 20 29 3b 0a 6f 75 74 5f 63 6f   ┆op_rechw, element_size ); out_co┆
0x08bac0…08bae0             6d 6d 65 6e 74 28 20 27 20 75 6e 70 61 63 6b 65 64 20 64 79 6e 20 61 72 72 61 79 2c 20 73 74 61   ┆mment( ' unpacked dyn array, sta┆
0x08bae0…08bb00             74 69 63 20 63 6f 6d 70 20 27 20 29 3b 0a 69 66 20 65 6c 65 6d 65 6e 74 5f 73 69 7a 65 20 3e 20   ┆tic comp ' ); if element_size > ┆
0x08bb00…08bb20             32 20 74 68 65 6e 20 28 2a 20 70 72 65 70 61 72 65 20 6d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e   ┆2 then (* prepare multiplication┆
0x08bb20…08bb40             20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 6f 75 74 5f   ┆ *) out_opcode( op_revpw ); out_┆
0x08bb40…08bb60             6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 36   ┆op_int( op_stvlw, dope_start + 6┆
0x08bb60…08bb80             20 29 3b 0a 0a 28 2a 20 63 6f 6d 70 75 74 65 20 74 68 65 20 73 69 7a 65 20 2a 29 0a 63 6f 6d 70   ┆ );  (* compute the size *) comp┆
0x08bb80…08bba0             75 74 65 5f 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 65 6e 74 73 20 28 20 64 6f 70 65 5f 73 74   ┆ute_number_of_elements ( dope_st┆
0x08bba0…08bbc0             61 72 74 20 29 3b 0a 69 66 20 65 6c 65 6d 65 6e 74 5f 73 69 7a 65 20 3e 20 32 20 74 68 65 6e 0a   ┆art ); if element_size > 2 then ┆
0x08bbc0…08bbe0             6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 6d 75 6c 20 29 0a 65 6c 73 65 0a 69 66 20 65 6c   ┆out_opcode( op_umul ) else if el┆
0x08bbe0…08bc00             65 6d 65 6e 74 5f 73 69 7a 65 20 3d 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70   ┆ement_size = 2 then begin out_op┆
0x08bc00…08bc20 (37, 0, 9)  63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27   ┆code( op_revpw ); out_comment( '┆
0x08bc20…08bc40             20 2a 20 32 20 28 65 6c 65 6d 65 6e 74 20 73 69 7a 65 29 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 63   ┆ * 2 (element size) ' ); out_opc┆
0x08bc40…08bc60             6f 64 65 28 20 6f 70 5f 75 61 64 64 20 20 29 3b 0a 65 6e 64 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆ode( op_uadd  ); end; out_op_int┆
0x08bc60…08bc80             28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 29 3b 0a 0a 65 6e 64 0a 0a   ┆( op_stvlw, dope_start );  end  ┆
0x08bc80…08bca0             65 6c 73 65 0a 0a 62 65 67 69 6e 20 28 2a 20 70 61 63 6b 65 64 20 61 72 72 61 79 20 2a 29 0a 0a   ┆else  begin (* packed array *)  ┆
0x08bca0…08bcc0             6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 66 69 65 6c 64 73 5f 70 72 5f   ┆out_op_int( op_rechw, fields_pr_┆
0x08bcc0…08bce0             77 6f 72 64 20 2a 20 32 35 36 20 2b 20 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 20 29 3b 0a 6f 75   ┆word * 256 + bits_pr_field ); ou┆
0x08bce0…08bd00             74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 70 61 63 6b 65 64 20 64 79 6e 20 61 72 72 61 79 2c 20 73   ┆t_comment( ' packed dyn array, s┆
0x08bd00…08bd20             74 61 74 69 63 20 63 6f 6d 70 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73   ┆tatic comp ' ); out_op_int( op_s┆
0x08bd20…08bd40             74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 36 20 29 3b 0a 0a 63 6f 6d 70 75 74 65   ┆tvlw, dope_start + 6 );  compute┆
0x08bd40…08bd60             5f 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 65 6e 74 73 28 20 64 6f 70 65 5f 73 74 61 72 74 20   ┆_number_of_elements( dope_start ┆
0x08bd60…08bd80             29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 0a 6f 75 74 5f   ┆); out_opcode( op_revpw );  out_┆
0x08bd80…08bda0             6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64   ┆op_int( op_rechw, fields_pr_word┆
0x08bda0…08bdc0             20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 64 69 76 20 29 3b 0a 6f 75 74 5f 6f   ┆ ); out_opcode( op_udiv ); out_o┆
0x08bdc0…08bde0             70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20   ┆pcode( op_revpw ); out_comment( ┆
0x08bde0…08be00             27 20 2a 20 32 20 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64 64 20   ┆' * 2  ' ); out_opcode( op_uadd ┆
0x08be00…08be20 (37, 0, 10) 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 78 64 20 29 3b 20 20 28 2a 20   ┆);  out_opcode( op_reaxd );  (* ┆
0x08be20…08be40             67 65 74 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 2a 29 0a 6f 75 74 5f 6f 70   ┆get number of elements *) out_op┆
0x08be40…08be60             5f 69 6e 74 28 20 6f 70 5f 72 65 76 73 77 2c 20 2d 33 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 6e   ┆_int( op_revsw, -3 );  out_op_in┆
0x08be60…08be80             74 28 20 6f 70 5f 72 65 63 68 77 2c 20 66 69 65 6c 64 73 5f 70 72 5f 77 6f 72 64 20 29 3b 0a 6f   ┆t( op_rechw, fields_pr_word ); o┆
0x08be80…08bea0             75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 6d 6f 64 20 29 3b 0a 69 66 20 62 69 74 73 5f 70 72   ┆ut_opcode( op_umod ); if bits_pr┆
0x08bea0…08bec0             5f 66 69 65 6c 64 20 3e 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆_field > 2 then begin out_op_int┆
0x08bec0…08bee0             28 20 6f 70 5f 72 65 63 68 77 2c 20 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 20 29 3b 0a 0a 6f 75   ┆( op_rechw, bits_pr_field );  ou┆
0x08bee0…08bf00             74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 6d 75 6c 20 29 3b 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74   ┆t_opcode( op_umul ); out_comment┆
0x08bf00…08bf20             28 20 27 20 2a 20 62 69 74 73 20 70 65 72 20 66 69 65 6c 64 20 27 20 29 3b 0a 65 6e 64 0a 65 6c   ┆( ' * bits per field ' ); end el┆
0x08bf20…08bf40             73 65 0a 69 66 20 62 69 74 73 5f 70 72 5f 66 69 65 6c 64 20 3d 20 32 20 74 68 65 6e 0a 62 65 67   ┆se if bits_pr_field = 2 then beg┆
0x08bf40…08bf60             69 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 20 6f 75 74 5f 63   ┆in out_opcode( op_revpw ); out_c┆
0x08bf60…08bf80             6f 6d 6d 65 6e 74 28 20 27 20 2a 20 62 69 74 73 20 70 65 72 20 66 69 65 6c 64 20 20 28 3d 20 32   ┆omment( ' * bits per field  (= 2┆
0x08bf80…08bfa0             20 29 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64 64 20 29 3b 0a 65   ┆ ) ' ); out_opcode( op_uadd ); e┆
0x08bfa0…08bfc0             6e 64 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 75 61 64 68 77 2c 20 37 20 29 3b 0a 6f   ┆nd; out_op_int( op_uadhw, 7 ); o┆
0x08bfc0…08bfe0             75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 38 20 29 3b 0a 6f 75 74 5f 6f 70   ┆ut_op_int( op_rechw, 8 ); out_op┆
0x08bfe0…08c000             63 6f 64 65 28 20 6f 70 5f 75 64 69 76 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70   ┆code( op_udiv );  out_opcode( op┆
0x08c000…08c020 (37, 0, 11) 5f 75 61 64 64 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20   ┆_uadd );  out_op_int( op_stvlw, ┆
0x08c020…08c040             64 6f 70 65 5f 73 74 61 72 74 20 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f   ┆dope_start ); out_specopcode(op_┆
0x08c040…08c060             73 74 6e 68 62 2c 2d 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 70 61   ┆stnhb,-word_length);  end; (* pa┆
0x08c060…08c080             63 6b 65 64 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 61 72 72 61 79 31 20 74 65 6d 70 6c 61 74 65   ┆cked *)  end; (* array1 template┆
0x08c080…08c0a0             20 2a 29 0a 0a 78 61 72 72 61 79 32 74 65 6d 70 6c 61 74 65 3a 20 28 2a 20 73 74 61 74 69 63 20   ┆ *)  xarray2template: (* static ┆
0x08c0a0…08c0c0             69 6e 64 65 78 2c 20 64 79 6e 61 6d 69 63 20 63 6f 6d 70 20 2a 29 0a 62 65 67 69 6e 0a 0a 66 69   ┆index, dynamic comp *) begin  fi┆
0x08c0c0…08c0e0             72 73 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 61 73 74 20 20 3a 3d 20 69 6e 5f 69   ┆rst := in_integer; last  := in_i┆
0x08c0e0…08c100             6e 74 65 67 65 72 3b 0a 61 6c 6c 69 67 6e 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 20 3d 20 31   ┆nteger; allign := in_integer = 1┆
0x08c100…08c120             3b 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 66 69 72 73 74 20 29   ┆;  out_op_int( op_rechw, first )┆
0x08c120…08c140             3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 6c 61 73 74 20 20 29 3b   ┆; out_op_int( op_rechw, last  );┆
0x08c140…08c160             0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 64 2c 20 64 6f 70 65 5f 73 74 61 72   ┆ out_op_int( op_stvld, dope_star┆
0x08c160…08c180             74 20 2b 20 32 20 29 3b 0a 0a 77 69 74 68 20 74 65 6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74   ┆t + 2 );  with template_v do out┆
0x08c180…08c1a0             5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d   ┆_op_rev__(access,word_typ,c.niv-┆
0x08c1a0…08c1c0             6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 0a 69 66 20 61 6c 6c 69 67 6e 20 74 68 65 6e 20 6f 75 74   ┆niv,offset);  if allign then out┆
0x08c1c0…08c1e0             5f 6d 61 6b 65 5f 74 6f 70 5f 65 76 65 6e 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f   ┆_make_top_even;  out_opcode( op_┆
0x08c1e0…08c200             72 65 76 70 77 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64   ┆revpw ); out_op_int( op_stvlw, d┆
0x08c200…08c220 (37, 0, 12) 6f 70 65 5f 73 74 61 72 74 20 2b 20 36 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70   ┆ope_start + 6 );  out_op_int( op┆
0x08c220…08c240             5f 72 65 63 68 77 2c 20 6c 61 73 74 20 2d 20 66 69 72 73 74 20 2b 20 31 20 29 3b 0a 6f 75 74 5f   ┆_rechw, last - first + 1 ); out_┆
0x08c240…08c260             6f 70 63 6f 64 65 28 20 6f 70 5f 75 6d 75 6c 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f   ┆opcode( op_umul ); out_op_int( o┆
0x08c260…08c280             70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20   ┆p_stvlw, dope_start );  end; (* ┆
0x08c280…08c2a0             61 72 72 61 79 32 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 0a 78 61 72 72 61 79 33 74 65 6d 70 6c   ┆array2 template *)  xarray3templ┆
0x08c2a0…08c2c0             61 74 65 3a 20 28 2a 20 64 79 6e 61 6d 69 63 20 69 6e 64 65 78 2c 20 64 79 6e 61 6d 69 63 20 63   ┆ate: (* dynamic index, dynamic c┆
0x08c2c0…08c2e0             6f 6d 70 20 2a 29 0a 62 65 67 69 6e 0a 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 74 65   ┆omp *) begin  get_niv_offset( te┆
0x08c2e0…08c300             6d 70 6c 61 74 65 31 5f 76 20 29 3b 0a 61 6c 6c 69 67 6e 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65   ┆mplate1_v ); allign := in_intege┆
0x08c300…08c320             72 20 3d 20 31 3b 0a 0a 77 69 74 68 20 74 65 6d 70 6c 61 74 65 31 5f 76 20 64 6f 0a 6f 75 74 5f   ┆r = 1;  with template1_v do out_┆
0x08c320…08c340             6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 64 6f 75 62 6c 65 5f 74 79 70 2c 63 2e 6e 69 76   ┆op_rev__(access,double_typ,c.niv┆
0x08c340…08c360             2d 6e 69 76 2c 6f 66 66 73 65 74 20 2b 20 32 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70   ┆-niv,offset + 2); out_op_int( op┆
0x08c360…08c380             5f 73 74 76 6c 64 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 32 20 29 3b 0a 0a 77 69 74 68 20   ┆_stvld, dope_start + 2 );  with ┆
0x08c380…08c3a0             74 65 6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73   ┆template_v do out_op_rev__(acces┆
0x08c3a0…08c3c0             73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 69 66   ┆s,word_typ,c.niv-niv,offset); if┆
0x08c3c0…08c3e0             20 61 6c 6c 69 67 6e 20 74 68 65 6e 20 6f 75 74 5f 6d 61 6b 65 5f 74 6f 70 5f 65 76 65 6e 3b 0a   ┆ allign then out_make_top_even; ┆
0x08c3e0…08c400             6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69   ┆out_opcode( op_revpw ); out_op_i┆
0x08c400…08c420 (37, 0, 13) 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61 72 74 20 2b 20 36 20 29 3b 0a   ┆nt( op_stvlw, dope_start + 6 ); ┆
0x08c420…08c440             0a 63 6f 6d 70 75 74 65 5f 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c 65 6d 65 6e 74 73 28 20 64 6f 70   ┆ compute_number_of_elements( dop┆
0x08c440…08c460             65 5f 73 74 61 72 74 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 6d 75 6c 20 29   ┆e_start ); out_opcode( op_umul )┆
0x08c460…08c480             3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61   ┆; out_op_int( op_stvlw, dope_sta┆
0x08c480…08c4a0             72 74 20 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 61 72 72 61 79 33 20 74 65 6d 70 6c 61 74 65 20 2a   ┆rt );  end; (* array3 template *┆
0x08c4a0…08c4c0             29 0a 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 20 2a 29 0a 0a 67 65 74   ┆)  end; (* case token of *)  get┆
0x08c4c0…08c4e0             5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 61 72 72 61 79 20 31 2c 20 32 2c 20 33 20 74   ┆_token;  end; (* array 1, 2, 3 t┆
0x08c4e0…08c500             65 6d 70 6c 61 74 65 20 2a 29 0a 0a 0a 78 72 65 63 6f 72 64 74 65 6d 70 6c 61 74 65 20 3a 0a 62   ┆emplate *)   xrecordtemplate : b┆
0x08c500…08c520             65 67 69 6e 0a 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 28 2a 20 73 69 7a   ┆egin  size := in_integer; (* siz┆
0x08c520…08c540             65 20 6f 66 20 73 74 61 74 69 63 20 70 61 72 74 20 2a 29 0a 0a 67 65 74 5f 6e 69 76 5f 6f 66 66   ┆e of static part *)  get_niv_off┆
0x08c540…08c560             73 65 74 28 20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 69 66 20 73 69 7a 65 20 3c 3e 20 30 20   ┆set( template_v ); if size <> 0 ┆
0x08c560…08c580             74 68 65 6e 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 73 69 7a 65   ┆then  out_op_int( op_rechw, size┆
0x08c580…08c5a0             20 29 3b 0a 77 69 74 68 20 74 65 6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65   ┆ ); with template_v do out_op_re┆
0x08c5a0…08c5c0             76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66   ┆v__(access,word_typ,c.niv-niv,of┆
0x08c5c0…08c5e0             66 73 65 74 29 3b 0a 69 66 20 73 69 7a 65 20 3c 3e 20 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63   ┆fset); if size <> 0 then out_opc┆
0x08c5e0…08c600             6f 64 65 28 20 6f 70 5f 75 61 64 64 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 77 68 69   ┆ode( op_uadd );  get_token;  whi┆
0x08c600…08c620 (37, 0, 14) 6c 65 20 74 6f 6b 65 6e 20 3c 3e 20 78 65 6e 64 74 65 6d 70 6c 61 74 65 20 64 6f 0a 62 65 67 69   ┆le token <> xendtemplate do begi┆
0x08c620…08c640             6e 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 78 69 6e 63 66 69 65 6c 64 3a 20 62 65 67   ┆n  case token of  xincfield: beg┆
0x08c640…08c660             69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 75 61 64 68 77 2c 20 31 20 29 3b 0a 67 65   ┆in out_op_int( op_uadhw, 1 ); ge┆
0x08c660…08c680             74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 20 28 2a 20 69 6e 63 66 69 65 6c 64 20 2a 29 0a 0a 78 66   ┆t_token; end; (* incfield *)  xf┆
0x08c680…08c6a0             69 65 6c 64 73 69 7a 65 2c 20 78 64 79 6e 66 69 65 6c 64 73 69 7a 65 20 3a 0a 62 65 67 69 6e 0a   ┆ieldsize, xdynfieldsize : begin ┆
0x08c6a0…08c6c0             0a 61 6c 6c 69 67 6e 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 20 3d 20 31 3b 0a 64 6f 70 65 5f   ┆ allign := in_integer = 1; dope_┆
0x08c6c0…08c6e0             73 74 61 72 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 66 69 65 6c 64 20 74   ┆start := in_integer;  (* field t┆
0x08c6e0…08c700             65 6d 70 6c 61 74 65 20 2a 29 0a 0a 69 66 20 61 6c 6c 69 67 6e 20 74 68 65 6e 20 6f 75 74 5f 6d   ┆emplate *)  if allign then out_m┆
0x08c700…08c720             61 6b 65 5f 74 6f 70 5f 65 76 65 6e 3b 0a 28 2a 20 61 73 73 69 67 6e 20 74 6f 20 66 69 65 6c 64   ┆ake_top_even; (* assign to field┆
0x08c720…08c740             20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70   ┆ template *) out_opcode( op_revp┆
0x08c740…08c760             77 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f   ┆w ); out_op_int( op_stvlw, dope_┆
0x08c760…08c780             73 74 61 72 74 20 29 3b 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 66 69 65 6c 64 73 69 7a 65 20   ┆start );  if token = xfieldsize ┆
0x08c780…08c7a0             74 68 65 6e 0a 62 65 67 69 6e 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69   ┆then begin size := in_integer; i┆
0x08c7a0…08c7c0             66 20 73 69 7a 65 20 3c 3e 20 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f   ┆f size <> 0 then out_op_int( op_┆
0x08c7c0…08c7e0             72 65 63 68 77 2c 20 73 69 7a 65 20 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 73 69   ┆rechw, size ); end else begin si┆
0x08c7e0…08c800             7a 65 20 3a 3d 20 2d 31 3b 20 20 28 2a 20 3c 3e 20 30 20 21 21 21 20 2a 29 0a 0a 67 65 74 5f 6e   ┆ze := -1;  (* <> 0 !!! *)  get_n┆
0x08c800…08c820 (37, 0, 15) 69 76 5f 6f 66 66 73 65 74 28 20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 77 69 74 68 20 74 65   ┆iv_offset( template_v ); with te┆
0x08c820…08c840             6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c   ┆mplate_v do out_op_rev__(access,┆
0x08c840…08c860             77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 65 6e 64 3b   ┆word_typ,c.niv-niv,offset); end;┆
0x08c860…08c880             0a 0a 69 66 20 73 69 7a 65 20 3c 3e 20 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20   ┆  if size <> 0 then out_opcode( ┆
0x08c880…08c8a0             6f 70 5f 75 61 64 64 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 20 3b 20 28 2a   ┆op_uadd );  get_token;  end ; (*┆
0x08c8a0…08c8c0             20 66 69 65 6c 64 20 73 69 7a 65 2c 20 64 79 6e 20 66 69 65 6c 64 20 73 69 7a 65 20 2a 29 0a 65   ┆ field size, dyn field size *) e┆
0x08c8c0…08c8e0             6c 73 65 0a 0a 0a 64 79 6e 5f 74 79 70 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 65 6e 64 3b   ┆lse   dyn_type_declaration; end;┆
0x08c8e0…08c900             0a 0a 65 6e 64 3b 20 28 2a 20 77 68 69 6c 65 20 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28   ┆  end; (* while  *)  out_op_int(┆
0x08c900…08c920             20 6f 70 5f 73 74 76 6c 77 2c 20 69 6e 5f 69 6e 74 65 67 65 72 20 29 3b 20 20 20 28 2a 20 72 65   ┆ op_stvlw, in_integer );   (* re┆
0x08c920…08c940             63 6f 72 64 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64   ┆cord template *) get_token;  end┆
0x08c940…08c960             3b 20 28 2a 20 72 65 63 6f 72 64 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 0a 65 6c 73 65 0a 69 66   ┆; (* record template *)  else if┆
0x08c960…08c980             20 74 6f 6b 65 6e 20 3c 3e 20 78 65 6e 64 64 65 63 6c 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a   ┆ token <> xenddecl then begin (*┆
0x08c980…08c9a0             20 6d 75 73 74 20 62 65 20 64 79 6e 61 6d 69 63 20 73 75 62 72 61 6e 67 65 20 74 79 70 65 20 64   ┆ must be dynamic subrange type d┆
0x08c9a0…08c9c0             65 66 69 6e 69 74 69 6f 6e 20 2a 29 0a 28 2a 20 2d 2d 2d 3e 20 65 78 70 72 20 2d 2d 2d 3e 20 65   ┆efinition *) (* ---> expr ---> e┆
0x08c9c0…08c9e0             78 70 72 20 2d 2d 2d 3e 20 73 75 62 64 65 66 28 20 6f 66 66 73 65 74 20 29 20 20 2d 2d 2d 2d 3e   ┆xpr ---> subdef( offset )  ---->┆
0x08c9e0…08ca00             20 20 20 2a 29 0a 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 20 28 2a 20 6c 6f 61 64 20 65 78 70 72   ┆   *)  find_exprs(  (* load expr┆
0x08ca00…08ca20 (37, 1, 1)  31 20 61 6e 64 20 65 78 70 72 32 20 20 2a 29 20 76 61 72 5f 76 61 6c 5f 76 20 29 3b 0a 0a 28 2a   ┆1 and expr2  *) var_val_v );  (*┆
0x08ca20…08ca40             20 69 6e 69 74 69 61 6c 69 7a 65 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69   ┆ initialize template *) out_op_i┆
0x08ca40…08ca60             6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 32 20 29 3b 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78   ┆nt( op_rechw, 2 ); if token <> x┆
0x08ca60…08ca80             73 75 62 64 65 66 20 74 68 65 6e 20 65 72 72 6f 72 20 28 20 70 61 73 73 34 63 6f 64 65 5f 65 72   ┆subdef then error ( pass4code_er┆
0x08ca80…08caa0             72 6f 72 20 29 3b 0a 64 6f 70 65 5f 73 74 61 72 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b   ┆ror ); dope_start := in_integer;┆
0x08caa0…08cac0             0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 77 2c 20 64 6f 70 65 5f 73 74 61   ┆  out_op_int( op_stvlw, dope_sta┆
0x08cac0…08cae0             72 74 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 64 2c 20 64 6f 70 65   ┆rt ); out_op_int( op_stvld, dope┆
0x08cae0…08cb00             5f 73 74 61 72 74 20 2b 20 32 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28   ┆_start + 2 ); get_token;  end; (┆
0x08cb00…08cb20             2a 20 73 75 62 64 65 66 20 2e 2e 2e 2e 20 2a 29 0a 65 6e 64 3b 0a 0a 65 6e 64 20 3b 20 28 2a 20   ┆* subdef .... *) end;  end ; (* ┆
0x08cb20…08cb40             64 79 6e 20 74 79 70 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 2a 29 0a 0a 70 72 6f 63 65 64 75   ┆dyn type declaration *)  procedu┆
0x08cb40…08cb60             72 65 20 6f 75 74 5f 70 61 72 61 6d 73 3b 0a 28 2a 20 20 63 6f 70 79 20 74 68 65 20 70 72 6f 63   ┆re out_params; (*  copy the proc┆
0x08cb60…08cb80             65 73 73 20 70 61 72 61 6d 65 74 65 72 20 64 65 73 63 72 69 70 74 69 6f 6e 20 69 6e 74 6f 20 61   ┆ess parameter description into a┆
0x08cb80…08cba0             20 63 6f 6e 73 74 61 6e 74 20 62 6c 6f 63 6b 3a 20 20 2a 29 0a 76 61 72 0a 73 74 65 70 2c 20 70   ┆ constant block:  *) var step, p┆
0x08cba0…08cbc0             61 72 61 6d 5f 63 6f 75 6e 74 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 70 61 72 61   ┆aram_count: integer;  begin para┆
0x08cbc0…08cbe0             6d 5f 63 6f 75 6e 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6f 75 74 5f 6c 61 62 65 6c   ┆m_count := in_integer; out_label┆
0x08cbe0…08cc00             20 28 69 64 5f 70 61 72 61 6d 29 3b 0a 6f 75 74 5f 74 61 62 20 28 31 35 29 3b 20 6f 75 74 5f 74   ┆ (id_param); out_tab (15); out_t┆
0x08cc00…08cc20 (37, 1, 2)  6f 6b 65 6e 20 28 7a 63 6f 6e 73 74 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 34 20 2a 20   ┆oken (zconst); out_integer( 4 * ┆
0x08cc20…08cc40             70 61 72 61 6d 5f 63 6f 75 6e 74 20 2b 20 32 20 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 20 6f 75 74   ┆param_count + 2 ); out_nl;   out┆
0x08cc40…08cc60             5f 74 61 62 28 20 32 30 20 29 3b 20 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 70 61 72 61 6d   ┆_tab( 20 );   out_integer( param┆
0x08cc60…08cc80             5f 63 6f 75 6e 74 20 29 3b 0a 0a 66 6f 72 20 73 74 65 70 20 3a 3d 20 31 20 74 6f 20 70 61 72 61   ┆_count );  for step := 1 to para┆
0x08cc80…08cca0             6d 5f 63 6f 75 6e 74 20 64 6f 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 20 20 28 2a 20   ┆m_count do begin get_token;  (* ┆
0x08cca0…08ccc0             73 6b 69 70 3a 20 78 70 61 72 61 6d 74 79 70 65 20 2a 29 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 20 6f   ┆skip: xparamtype *)  out_nl;   o┆
0x08ccc0…08cce0             75 74 5f 74 61 62 28 20 32 30 20 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 69 6e 5f 69 6e   ┆ut_tab( 20 ); out_integer( in_in┆
0x08cce0…08cd00             74 65 67 65 72 20 29 3b 0a 6f 75 74 5f 63 68 61 72 20 28 27 2c 27 29 3b 0a 6f 75 74 5f 69 6e 74   ┆teger ); out_char (','); out_int┆
0x08cd00…08cd20             65 67 65 72 28 20 69 6e 5f 69 6e 74 65 67 65 72 20 29 0a 0a 65 6e 64 3b 0a 0a 6f 75 74 5f 6e 6c   ┆eger( in_integer )  end;  out_nl┆
0x08cd20…08cd40             3b 0a 6f 75 74 5f 74 61 62 20 28 31 35 29 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29   ┆; out_tab (15); out_token (zend)┆
0x08cd40…08cd60             3b 0a 6f 75 74 5f 6e 6c 3b 0a 65 6e 64 3b 20 28 2a 20 6f 75 74 20 70 61 72 61 6d 73 20 2a 29 0a   ┆; out_nl; end; (* out params *) ┆
0x08cd60…08cd80             0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 64 65 5f 70 72 6f 63 65 73 73 5f 69 6e 69 74 28 6b 69   ┆  procedure code_process_init(ki┆
0x08cd80…08cda0             6e 64 2c 20 6f 66 66 73 65 74 5f 70 64 3a 20 69 6e 74 65 67 65 72 3b 20 65 78 74 65 72 6e 61 6c   ┆nd, offset_pd: integer; external┆
0x08cda0…08cdc0             5f 70 72 3a 20 62 6f 6f 6c 65 61 6e 29 3b 0a 76 61 72 0a 6b 65 79 2c 20 73 74 65 70 3a 20 69 6e   ┆_pr: boolean); var key, step: in┆
0x08cdc0…08cde0             74 65 67 65 72 3b 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 69   ┆teger;  begin out_comment( '   i┆
0x08cde0…08ce00             6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 66 69 65 6c 64 73 20 69 6e 20 74 68 65 20 50 72 6f 63   ┆nitialize the fields in the Proc┆
0x08ce00…08ce20 (37, 1, 3)  65 73 73 20 44 65 73 63 72 69 70 74 6f 72 2e 20 27 20 29 3b 0a 69 66 20 65 78 74 65 72 6e 61 6c   ┆ess Descriptor. ' ); if external┆
0x08ce20…08ce40             5f 70 72 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 63 61 6c 6c 20 5f 69 6e 69 74 70 72 6f 63   ┆_pr then begin (* call _initproc┆
0x08ce40…08ce60             5f 72 63 20 2a 29 0a 69 66 20 6b 69 6e 64 3d 31 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆_rc *) if kind=1 then out_op_int┆
0x08ce60…08ce80             28 6f 70 5f 72 65 61 67 64 2c 20 6f 66 66 73 65 74 5f 70 64 29 0a 65 6c 73 65 0a 69 66 20 6f 66   ┆(op_reagd, offset_pd) else if of┆
0x08ce80…08cea0             66 73 65 74 5f 70 64 3c 3e 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65   ┆fset_pd<>0 then out_op_int(op_re┆
0x08cea0…08cec0             61 73 64 2c 20 6f 66 66 73 65 74 5f 70 64 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65   ┆asd, offset_pd); out_op_id(op_re┆
0x08cec0…08cee0             61 61 64 2c 20 69 64 5f 70 61 72 61 6d 29 3b 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73   ┆aad, id_param); code_call_proc(s┆
0x08cee0…08cf00             79 73 5f 75 73 65 2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 69 6e 69 74 70 72   ┆ys_use, ext_lookup(key, '_initpr┆
0x08cf00…08cf20             6f 63 5f 72 63 27 29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 20 38 2c   ┆oc_rc'), key, const_niv_0, 0, 8,┆
0x08cf20…08cf40             20 30 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 69 6e 69 74 69 61 6c 69 7a 65 20 70 72   ┆ 0); out_comment(' initialize pr┆
0x08cf40…08cf60             6f 63 65 73 73 20 6f 62 6a 65 63 74 20 27 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a   ┆ocess object '); end else begin ┆
0x08cf60…08cf80             0a 28 2a 20 69 6e 63 61 72 6e 61 74 69 6f 6e 20 63 6f 75 6e 74 20 3d 20 30 20 2a 29 0a 6f 75 74   ┆ (* incarnation count = 0 *) out┆
0x08cf80…08cfa0             5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 30 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28   ┆_op_int(op_rechw,0); out_opcode(┆
0x08cfa0…08cfc0             6f 70 5f 73 74 76 67 77 29 3b 0a 6f 75 74 5f 65 78 70 72 28 69 64 5f 6f 70 64 5f 63 6f 75 6e 74   ┆op_stvgw); out_expr(id_opd_count┆
0x08cfc0…08cfe0             2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 0a 28 2a 20 70 61 72 61 6d 20 64 65 73 63 72 20 72 65 66   ┆,offset_pd);  (* param descr ref┆
0x08cfe0…08d000             20 3d 61 64 64 72 65 73 73 20 6f 66 20 66 6f 72 6d 61 6c 20 70 61 72 61 6d 65 74 65 72 73 20 2a   ┆ =address of formal parameters *┆
0x08d000…08d020 (37, 1, 4)  29 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 61 61 64 2c 69 64 5f 70 61 72 61 6d 29 3b 0a   ┆) out_op_id(op_reaad,id_param); ┆
0x08d020…08d040             6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 74 76 67 61 29 3b 0a 6f 75 74 5f 65 78 70 72 28 69   ┆out_opcode(op_stvga); out_expr(i┆
0x08d040…08d060             64 5f 6f 70 64 5f 70 61 72 61 6d 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 0a 28 2a 20 6c 69 6e 6b   ┆d_opd_param,offset_pd);  (* link┆
0x08d060…08d080             73 74 61 74 65 3a 20 20 30 3d 75 6e 6c 69 6e 6b 65 64 2c 20 31 3d 69 6e 74 65 72 6e 61 6c 20 6c   ┆state:  0=unlinked, 1=internal l┆
0x08d080…08d0a0             69 6e 6b 65 64 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 31 29   ┆inked *)  out_op_int(op_rechw,1)┆
0x08d0a0…08d0c0             3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 73 74 76 67 77 29 3b 0a 6f 75 74 5f 65 78 70 72   ┆; out_opcode(op_stvgw); out_expr┆
0x08d0c0…08d0e0             28 69 64 5f 6f 70 64 5f 6c 69 6e 6b 65 64 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 0a 28 2a 20 70   ┆(id_opd_linked,offset_pd);  (* p┆
0x08d0e0…08d100             72 6f 63 65 73 73 69 6e 66 20 72 65 66 20 3a 20 70 6f 69 6e 74 65 72 20 74 6f 20 70 72 6f 63 65   ┆rocessinf ref : pointer to proce┆
0x08d100…08d120             73 73 69 6e 66 20 69 66 20 69 6e 74 65 72 6e 61 6c 20 6c 69 6e 6b 65 64 20 2a 29 0a 0a 6f 75 74   ┆ssinf if internal linked *)  out┆
0x08d120…08d140             5f 6f 70 5f 69 64 28 6f 70 5f 72 65 61 61 64 2c 69 64 5f 70 72 6f 63 69 6e 66 29 3b 0a 6f 75 74   ┆_op_id(op_reaad,id_procinf); out┆
0x08d140…08d160             5f 6f 70 63 6f 64 65 28 6f 70 5f 73 74 76 67 61 29 3b 20 6f 75 74 5f 65 78 70 72 28 69 64 5f 6f   ┆_opcode(op_stvga); out_expr(id_o┆
0x08d160…08d180             70 64 5f 70 72 6f 63 69 6e 66 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 0a 28 2a 20 6e 61 6d 65 20   ┆pd_procinf,offset_pd);  (* name ┆
0x08d180…08d1a0             2c 20 38 36 2e 30 39 2e 30 38 3a 20 6e 61 6d 65 20 66 69 65 6c 64 20 6e 6f 74 20 69 6e 69 74 69   ┆, 86.09.08: name field not initi┆
0x08d1a0…08d1c0             61 6c 69 7a 65 64 20 61 6e 79 20 6d 6f 72 65 20 21 21 21 0a 20 20 20 20 20 20 20 20 20 20 20 20   ┆alized any more !!!             ┆
0x08d1c0…08d1e0             20 20 20 20 20 20 20 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 20 69 73 20 61 6c 73 6f 20 72 65 6d   ┆        the constant is also rem┆
0x08d1e0…08d200             6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 64 65 2c 20 28 66 69 6e 64 5f 62 6c 6f 63 6b 29   ┆oved from the code, (find_block)┆
0x08d200…08d220 (37, 1, 5)  0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 61 67 64 29 3b 20 6f 75 74 5f 65 78 70 72   ┆  out_opcode(op_reagd); out_expr┆
0x08d220…08d240             28 69 64 5f 6f 70 64 5f 6e 61 6d 65 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 6f 75 74 5f 6f 70 5f   ┆(id_opd_name,offset_pd); out_op_┆
0x08d240…08d260             69 64 28 6f 70 5f 72 65 61 61 64 2c 69 64 5f 6e 61 6d 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28   ┆id(op_reaad,id_name); out_op_id(┆
0x08d260…08d280             6f 70 5f 72 65 63 68 77 2c 69 64 5f 61 6c 66 61 6c 65 6e 67 74 68 29 3b 0a 6f 75 74 5f 6f 70 63   ┆op_rechw,id_alfalength); out_opc┆
0x08d280…08d2a0             6f 64 65 28 6f 70 5f 6d 6f 76 65 67 29 3b 0a 28 2a 20 65 6e 64 20 6f 66 20 6e 61 6d 65 20 66 69   ┆ode(op_moveg); (* end of name fi┆
0x08d2a0…08d2c0             65 6c 64 20 69 6e 69 74 20 2a 29 0a 0a 28 2a 70 72 6f 63 65 73 73 64 65 73 63 72 69 70 74 6f 72   ┆eld init *)  (*processdescriptor┆
0x08d2c0…08d2e0             20 69 6e 20 72 65 6d 6f 76 65 20 63 68 61 69 6e 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f   ┆ in remove chain*) out_op_id(op_┆
0x08d2e0…08d300             72 65 76 67 61 2c 69 64 5f 70 72 6f 63 65 73 73 63 68 61 69 6e 29 3b 0a 6f 75 74 5f 6f 70 63 6f   ┆revga,id_processchain); out_opco┆
0x08d300…08d320             64 65 28 6f 70 5f 73 74 76 67 61 29 3b 0a 6f 75 74 5f 65 78 70 72 28 69 64 5f 6f 70 64 5f 70 72   ┆de(op_stvga); out_expr(id_opd_pr┆
0x08d320…08d340             6f 63 65 73 73 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f   ┆ocess,offset_pd); out_op_int(op_┆
0x08d340…08d360             72 65 61 6c 64 2c 6f 66 66 73 65 74 5f 70 64 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 73   ┆reald,offset_pd); out_op_id(op_s┆
0x08d360…08d380             74 76 67 61 2c 69 64 5f 70 72 6f 63 65 73 73 63 68 61 69 6e 29 3b 0a 65 6e 64 3b 20 28 2a 20 69   ┆tvga,id_processchain); end; (* i┆
0x08d380…08d3a0             6e 74 65 72 6e 61 6c 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 63 6f 64 65 20 70 72 6f 63 65 73 73 20   ┆nternal *) end; (* code process ┆
0x08d3a0…08d3c0             69 6e 69 74 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 73 79 73 5f 69 6e 69   ┆init *)   procedure find_sys_ini┆
0x08d3c0…08d3e0             74 28 20 76 61 72 20 72 65 66 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61 72 20   ┆t( var ref_count : integer; var ┆
0x08d3e0…08d400             64 79 6e 5f 72 65 66 73 20 3a 20 62 6f 6f 6c 65 61 6e 20 3b 0a 76 61 72 20 73 68 61 64 6f 77 5f   ┆dyn_refs : boolean ; var shadow_┆
0x08d400…08d420 (37, 1, 6)  63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61 72 20 64 79 6e 5f 73 68 61 64 6f 77 73   ┆count : integer; var dyn_shadows┆
0x08d420…08d440             20 3a 20 62 6f 6f 6c 65 61 6e 29 3b 0a 0a 0a 76 61 72 20 0a 74 79 70 65 5f 6f 20 3a 20 69 6e 74   ┆ : boolean);   var  type_o : int┆
0x08d440…08d460             65 67 65 72 3b 0a 6b 69 6e 64 2c 20 77 5f 6f 66 66 73 65 74 2c 20 6f 66 66 73 65 74 2c 20 6e 75   ┆eger; kind, w_offset, offset, nu┆
0x08d460…08d480             6d 62 65 72 2c 20 73 69 7a 65 2c 20 6c 6f 77 65 72 2c 20 75 70 70 65 72 20 3a 20 69 6e 74 65 67   ┆mber, size, lower, upper : integ┆
0x08d480…08d4a0             65 72 3b 0a 73 74 61 63 6b 5f 73 61 76 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 61 2c 20 64 6f   ┆er; stack_save : integer; va, do┆
0x08d4a0…08d4c0             70 65 5f 76 2c 20 74 65 6d 70 6c 61 74 65 5f 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72   ┆pe_v, template_v : varaddr_descr┆
0x08d4c0…08d4e0             3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 63 6f 6d 70 6f 6e 65 6e 74 5f 69 6e 69 74 28 20 6b 69   ┆;   procedure component_init( ki┆
0x08d4e0…08d500             6e 64 2c 20 6f 66 66 73 65 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61 72 20 72 65 66 5f 63 6f   ┆nd, offset : integer; var ref_co┆
0x08d500…08d520             75 6e 74 20 3a 20 69 6e 74 65 67 65 72 20 3b 0a 76 61 72 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74   ┆unt : integer ; var shadow_count┆
0x08d520…08d540             20 3a 20 69 6e 74 65 67 65 72 29 3b 0a 0a 28 2a 20 6b 69 6e 64 20 3d 20 31 20 3c 3d 3e 20 6f 66   ┆ : integer);  (* kind = 1 <=> of┆
0x08d540…08d560             66 73 65 74 20 69 73 20 6c 6f 63 61 6c 20 66 72 61 6d 65 20 61 64 64 72 65 73 73 20 6f 66 20 76   ┆fset is local frame address of v┆
0x08d560…08d580             61 72 69 61 62 6c 65 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 2c 0a 6b 69 6e 64 20 3d 20 32 20   ┆ariable to initialize, kind = 2 ┆
0x08d580…08d5a0             20 3c 3d 3e 20 28 6f 66 66 73 65 74 20 3d 20 30 29 20 61 6e 64 20 61 64 64 72 65 73 73 20 6f 6e   ┆ <=> (offset = 0) and address on┆
0x08d5a0…08d5c0             20 74 6f 70 20 6f 66 20 73 74 61 63 6b 20 20 2a 29 0a 0a 76 61 72 0a 6e 65 77 5f 6b 69 6e 64 2c   ┆ top of stack  *)  var new_kind,┆
0x08d5c0…08d5e0             20 6e 65 77 5f 6f 66 66 73 65 74 2c 20 72 65 66 73 2c 20 73 68 61 64 6f 77 73 20 3a 20 69 6e 74   ┆ new_offset, refs, shadows : int┆
0x08d5e0…08d600             65 67 65 72 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 63 6f 64 65 5f 61 72 72 61 79 5f 69 6e   ┆eger;   procedure  code_array_in┆
0x08d600…08d620 (37, 1, 7)  69 74 28 64 79 6e 61 6d 69 63 20 3a 20 62 6f 6f 6c 65 61 6e 3b 20 6b 69 6e 64 2c 20 6f 66 66 73   ┆it(dynamic : boolean; kind, offs┆
0x08d620…08d640             65 74 2c 20 77 5f 6f 66 66 73 65 74 2c 20 6c 6f 77 65 72 2c 20 75 70 70 65 72 2c 20 73 69 7a 65   ┆et, w_offset, lower, upper, size┆
0x08d640…08d660             20 3a 20 69 6e 74 65 67 65 72 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆ : integer;                     ┆
0x08d660…08d680             20 20 20 20 76 61 72 20 72 65 66 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 76 61 72   ┆    var ref_count : integer; var┆
0x08d680…08d6a0             20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 20 69 6e 74 65 67 65 72 3b 20 74 65 6d 70 6c 5f 76   ┆ shadow_count : integer; templ_v┆
0x08d6a0…08d6c0             20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 20 29 3b 0a 0a 76 61 72 0a 72 65 66 73 2c 73 68   ┆ : varaddr_descr );  var refs,sh┆
0x08d6c0…08d6e0             61 64 6f 77 73 2c 69 78 73 74 6f 72 65 5f 68 77 2c 61 72 72 61 79 72 65 70 5f 68 77 20 3a 20 69   ┆adows,ixstore_hw,arrayrep_hw : i┆
0x08d6e0…08d700             6e 74 65 67 65 72 3b 0a 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 6e 6c   ┆nteger;   begin  out_nl;  out_nl┆
0x08d700…08d720             3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28   ┆; out_token (zbegin); out_p_id (┆
0x08d720…08d740             69 64 5f 61 72 72 61 79 72 65 70 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 69 6e 64 65 78   ┆id_arrayrep); out_p_id (id_index┆
0x08d740…08d760             5f 73 74 6f 72 65 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 72 65 70 5f 65 78 69 74 29 3b   ┆_store); out_p_id (id_rep_exit);┆
0x08d760…08d780             0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65   ┆ out_token (zendlist); out_comme┆
0x08d780…08d7a0             6e 74 28 20 27 20 20 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 6e 20 61 72 72 61 79 2e 20 27 20 29   ┆nt( '   initialize an array. ' )┆
0x08d7a0…08d7c0             3b 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 6e 6c 3b 0a 0a 69 66 20 6b 69 6e 64 20 3d 20 31 20   ┆; out_nl;  out_nl;  if kind = 1 ┆
0x08d7c0…08d7e0             74 68 65 6e 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 6c 64   ┆then begin  out_opcode( op_reald┆
0x08d7e0…08d800             20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65   ┆ ); out_start_param;  out_intege┆
0x08d800…08d820 (37, 1, 8)  72 28 20 6f 66 66 73 65 74 20 29 3b 0a 6b 69 6e 64 20 3a 3d 20 32 3b 20 6f 66 66 73 65 74 20 3a   ┆r( offset ); kind := 2; offset :┆
0x08d820…08d840             3d 20 30 3b 0a 0a 0a 65 6e 64 3b 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e 0a 28 2a 6c 6f   ┆= 0;   end; if dynamic then (*lo┆
0x08d840…08d860             61 64 20 6c 6f 77 65 72 20 62 6f 75 6e 64 20 66 72 6f 6d 20 74 65 6d 70 6c 61 74 65 2a 29 0a 77   ┆ad lower bound from template*) w┆
0x08d860…08d880             69 74 68 20 74 65 6d 70 6c 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65   ┆ith templ_v do out_op_rev__(acce┆
0x08d880…08d8a0             73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 20 2b 20 32   ┆ss,word_typ,c.niv-niv,offset + 2┆
0x08d8a0…08d8c0             28 2a 6c 6f 77 65 72 20 62 6f 75 6e 64 2a 29 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 6f 75 74   ┆(*lower bound*)) else begin  out┆
0x08d8c0…08d8e0             5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70   ┆_opcode( op_rechw ); out_start_p┆
0x08d8e0…08d900             61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6c 6f 77 65 72 20 29 3b 0a 65 6e 64   ┆aram;  out_integer( lower ); end┆
0x08d900…08d920             3b 0a 0a 28 2a 20 74 65 73 74 20 66 6f 72 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 61 72 72 61   ┆;  (* test for at least one arra┆
0x08d920…08d940             79 20 65 6c 65 6d 65 6e 74 20 2a 29 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 76 70 77   ┆y element *) out_opcode(op_revpw┆
0x08d940…08d960             29 3b 20 28 2a 20 6c 6f 77 65 72 20 62 6f 75 6e 64 20 2a 29 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74   ┆); (* lower bound *) out_comment┆
0x08d960…08d980             28 27 74 65 73 74 20 66 6f 72 20 6e 6f 6e 2d 65 6d 70 74 79 20 61 72 72 61 79 27 29 3b 0a 69 66   ┆('test for non-empty array'); if┆
0x08d980…08d9a0             20 64 79 6e 61 6d 69 63 20 74 68 65 6e 0a 28 2a 20 6c 6f 61 64 20 75 70 70 65 72 20 62 6f 75 6e   ┆ dynamic then (* load upper boun┆
0x08d9a0…08d9c0             64 20 66 72 6f 6d 20 74 65 6d 70 6c 61 74 65 20 2a 29 0a 77 69 74 68 20 74 65 6d 70 6c 5f 76 20   ┆d from template *) with templ_v ┆
0x08d9c0…08d9e0             64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 20 77 6f 72 64 5f 74 79 70   ┆do out_op_rev__(access, word_typ┆
0x08d9e0…08da00             2c 20 63 2e 6e 69 76 2d 6e 69 76 2c 20 6f 66 66 73 65 74 2b 34 29 20 28 2a 20 75 70 70 65 72 20   ┆, c.niv-niv, offset+4) (* upper ┆
0x08da00…08da20 (37, 1, 9)  62 6f 75 6e 64 20 2a 29 0a 65 6c 73 65 0a 28 2a 20 6c 6f 61 64 20 74 68 65 20 63 6f 6e 73 74 61   ┆bound *) else (* load the consta┆
0x08da20…08da40             6e 74 20 75 70 70 65 72 20 62 6f 75 6e 64 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f   ┆nt upper bound *) out_op_int(op_┆
0x08da40…08da60             72 65 63 68 77 2c 20 75 70 70 65 72 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 67 74 29   ┆rechw, upper); out_opcode(op_gt)┆
0x08da60…08da80             3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 6c 6f 77 65 72 3e 75 70 70 65 72 20 3f 27 29 3b 0a   ┆; out_comment('lower>upper ?'); ┆
0x08da80…08daa0             6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 69 6e 64 65 78 5f 73 74 6f   ┆out_op_id(op_jmzeq, id_index_sto┆
0x08daa0…08dac0             72 65 29 3b 20 28 2a 20 64 6f 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 66 69 72 73 74 20 74   ┆re); (* do not count the first t┆
0x08dac0…08dae0             69 6d 65 20 2a 29 0a 0a 28 2a 6d 61 6b 65 20 73 70 61 63 65 20 61 74 20 73 74 61 63 6b 20 74 6f   ┆ime *)  (*make space at stack to┆
0x08dae0…08db00             20 64 6f 20 6a 6d 7a 65 71 20 61 72 72 61 79 72 65 70 20 20 69 66 20 73 74 61 63 6b 20 69 73 20   ┆ do jmzeq arrayrep  if stack is ┆
0x08db00…08db20             66 75 6c 6c 20 61 74 20 6c 61 62 65 6c 2a 29 0a 69 66 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65   ┆full at label*) if hw_stack_size┆
0x08db20…08db40             20 3d 20 6d 61 78 5f 68 77 5f 73 74 61 63 6b 20 74 68 65 6e 0a 6f 75 74 5f 72 65 73 74 61 28 6d   ┆ = max_hw_stack then out_resta(m┆
0x08db40…08db60             61 78 5f 68 77 5f 73 74 61 63 6b 20 2d 20 61 62 73 28 6f 70 5f 74 61 62 6c 65 5b 6f 70 5f 6a 6d   ┆ax_hw_stack - abs(op_table[op_jm┆
0x08db60…08db80             7a 65 71 5d 2e 6f 70 61 70 70 65 74 69 74 65 29 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 64 28 20 6f   ┆zeq].opappetite));  out_op_id( o┆
0x08db80…08dba0             70 5f 6a 6d 70 72 77 2c 20 69 64 5f 72 65 70 5f 65 78 69 74 20 29 3b 0a 6f 75 74 5f 63 6f 6d 6d   ┆p_jmprw, id_rep_exit ); out_comm┆
0x08dba0…08dbc0             65 6e 74 28 27 69 66 20 6c 6f 77 65 72 3e 75 70 70 65 72 20 74 68 65 6e 20 65 78 69 74 20 61 72   ┆ent('if lower>upper then exit ar┆
0x08dbc0…08dbe0             72 61 79 20 72 65 70 27 29 3b 0a 69 78 73 74 6f 72 65 5f 68 77 3a 3d 20 68 77 5f 73 74 61 63 6b   ┆ray rep'); ixstore_hw:= hw_stack┆
0x08dbe0…08dc00             5f 73 69 7a 65 3b 0a 61 72 72 61 79 72 65 70 5f 68 77 20 3a 3d 20 68 77 5f 73 74 61 63 6b 5f 73   ┆_size; arrayrep_hw := hw_stack_s┆
0x08dc00…08dc20 (37, 1, 10) 69 7a 65 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 61 72 72 61 79 72 65 70 20 29 3b 0a   ┆ize;  out_label( id_arrayrep ); ┆
0x08dc20…08dc40             0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 75 61 64 68 77 2c 20 31 20 29 3b 0a 6f 75 74 5f   ┆ out_op_int( op_uadhw, 1 ); out_┆
0x08dc40…08dc60             6c 61 62 65 6c 28 20 69 64 5f 69 6e 64 65 78 5f 73 74 6f 72 65 20 29 3b 0a 69 66 20 69 78 73 74   ┆label( id_index_store ); if ixst┆
0x08dc60…08dc80             6f 72 65 5f 68 77 20 3c 3e 20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 74 68 65 6e 20 68 77 5f   ┆ore_hw <> hw_stack_size then hw_┆
0x08dc80…08dca0             73 74 61 63 6b 5f 65 72 72 6f 72 28 61 72 72 61 79 5f 69 6e 69 74 29 3b 0a 0a 0a 6f 75 74 5f 6f   ┆stack_error(array_init);   out_o┆
0x08dca0…08dcc0             70 63 6f 64 65 20 28 6f 70 5f 73 74 76 6c 77 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61   ┆pcode (op_stvlw); out_start_para┆
0x08dcc0…08dce0             6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 77 5f 6f 66 66 73 65 74 29 3b 0a 0a 6f 75 74   ┆m;  out_integer (w_offset);  out┆
0x08dce0…08dd00             5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 64 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a   ┆_opcode( op_revpd ); get_token; ┆
0x08dd00…08dd20             0a 63 6f 6d 70 6f 6e 65 6e 74 5f 69 6e 69 74 28 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 72   ┆ component_init( kind, offset, r┆
0x08dd20…08dd40             65 66 73 2c 20 73 68 61 64 6f 77 73 20 29 3b 0a 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e   ┆efs, shadows );  if dynamic then┆
0x08dd40…08dd60             0a 62 65 67 69 6e 0a 28 2a 6c 6f 61 64 20 73 69 7a 65 20 66 72 6f 6d 20 74 65 6d 70 6c 61 74 65   ┆ begin (*load size from template┆
0x08dd60…08dd80             2a 29 0a 77 69 74 68 20 74 65 6d 70 6c 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28   ┆*) with templ_v do out_op_rev__(┆
0x08dd80…08dda0             61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74   ┆access,word_typ,c.niv-niv,offset┆
0x08dda0…08ddc0             20 2b 20 36 28 2a 73 69 7a 65 2a 29 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61   ┆ + 6(*size*)); out_opcode( op_ua┆
0x08ddc0…08dde0             64 64 20 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆dd ); end else begin  out_opcode┆
0x08dde0…08de00             28 20 6f 70 5f 72 65 61 73 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20   ┆( op_reasd ); out_start_param;  ┆
0x08de00…08de20 (37, 1, 11) 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 20 29 3b 0a 65 6e 64 3b 0a 6f 75 74 5f 63 6f   ┆out_integer( size ); end; out_co┆
0x08de20…08de40             6d 6d 65 6e 74 28 20 27 20 20 20 61 64 64 72 20 3a 3d 20 61 64 64 72 20 2b 20 73 69 7a 65 20 20   ┆mment( '   addr := addr + size  ┆
0x08de40…08de60             2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 6c 77 20 29 3b 0a   ┆. ' );  out_opcode( op_revlw ); ┆
0x08de60…08de80             6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 77   ┆out_start_param;  out_integer (w┆
0x08de80…08dea0             5f 6f 66 66 73 65 74 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20   ┆_offset);  out_opcode( op_revpw ┆
0x08dea0…08dec0             29 3b 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e 0a 28 2a 6c 6f 61 64 20 75 70 70 65 72 20   ┆); if dynamic then (*load upper ┆
0x08dec0…08dee0             62 6f 75 6e 64 20 66 72 6f 6d 20 74 65 6d 70 6c 61 74 65 2a 29 0a 77 69 74 68 20 74 65 6d 70 6c   ┆bound from template*) with templ┆
0x08dee0…08df00             5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64 5f 74   ┆_v do out_op_rev__(access,word_t┆
0x08df00…08df20             79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 20 2b 20 34 28 2a 75 70 70 65 72 20 62   ┆yp,c.niv-niv,offset + 4(*upper b┆
0x08df20…08df40             6f 75 6e 64 2a 29 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68   ┆ound*)) else out_op_int( op_rech┆
0x08df40…08df60             77 2c 20 75 70 70 65 72 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 67 65 20 29   ┆w, upper );  out_opcode( op_ge )┆
0x08df60…08df80             3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 6c 6f 77 65 72 3e 3d 75 70 70 65 72 20 3f 20 27 20   ┆; out_comment('lower>=upper ? ' ┆
0x08df80…08dfa0             29 3b 0a 77 69 74 68 20 6f 70 5f 74 61 62 6c 65 5b 6f 70 5f 6a 6d 7a 65 71 5d 20 64 6f 0a 69 66   ┆); with op_table[op_jmzeq] do if┆
0x08dfa0…08dfc0             20 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3c 3e 20 28 61 72 72 61 79 72 65 70 5f 68 77 20 2b   ┆ hw_stack_size <> (arrayrep_hw +┆
0x08dfc0…08dfe0             20 61 62 73 28 6f 70 61 70 70 65 74 69 74 65 29 29 20 74 68 65 6e 0a 6f 75 74 5f 72 65 73 74 61   ┆ abs(opappetite)) then out_resta┆
0x08dfe0…08e000             28 61 72 72 61 79 72 65 70 5f 68 77 20 2b 20 61 62 73 28 6f 70 61 70 70 65 74 69 74 65 29 29 3b   ┆(arrayrep_hw + abs(opappetite));┆
0x08e000…08e020 (37, 1, 12) 0a 0a 6f 75 74 5f 6f 70 5f 69 64 28 20 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 61 72 72 61 79 72   ┆  out_op_id( op_jmzeq, id_arrayr┆
0x08e020…08e040             65 70 20 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 69 66 20 6c 6f 77 65 72 3c 75 70 70   ┆ep ); out_comment(' if lower<upp┆
0x08e040…08e060             65 72 20 74 68 65 6e 20 67 6f 74 6f 20 61 72 72 61 79 72 65 70 20 27 20 29 3b 0a 6f 75 74 5f 6c   ┆er then goto arrayrep ' ); out_l┆
0x08e060…08e080             61 62 65 6c 28 69 64 5f 72 65 70 5f 65 78 69 74 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64   ┆abel(id_rep_exit); out_specopcod┆
0x08e080…08e0a0             65 28 6f 70 5f 73 74 6e 68 62 2c 2d 33 2a 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 0a 6f 75 74   ┆e(op_stnhb,-3*word_length);  out┆
0x08e0a0…08e0c0             5f 6e 6c 3b 20 20 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a   ┆_nl;  out_nl; out_token (zend); ┆
0x08e0c0…08e0e0             6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 6e 6c 3b 0a 69 66 20 64 79 6e 61 6d 69 63 20 74 68 65 6e   ┆out_nl;  out_nl; if dynamic then┆
0x08e0e0…08e100             0a 62 65 67 69 6e 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77 73 3b 0a   ┆ begin shadow_count := shadows; ┆
0x08e100…08e120             72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 72 65 66 73 20 20 28 2a 20 3c 3e 20 30 20 69 66 20 72 65   ┆ref_count := refs  (* <> 0 if re┆
0x08e120…08e140             66 73 20 64 65 66 69 6e 65 64 20 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 73 68   ┆fs defined  *) end else begin sh┆
0x08e140…08e160             61 64 6f 77 5f 63 6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77 73 20 2a 20 28 75 70 70 65 72 20 2d   ┆adow_count := shadows * (upper -┆
0x08e160…08e180             20 6c 6f 77 65 72 20 2b 20 31 29 3b 0a 0a 72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 20 72 65 66 73   ┆ lower + 1);  ref_count :=  refs┆
0x08e180…08e1a0             20 2a 20 28 20 75 70 70 65 72 20 2d 20 6c 6f 77 65 72 20 2b 20 31 20 29 0a 65 6e 64 0a 0a 0a 65   ┆ * ( upper - lower + 1 ) end   e┆
0x08e1a0…08e1c0             6e 64 20 20 28 2a 20 63 6f 64 65 20 61 72 72 61 79 20 69 6e 69 74 20 20 20 2a 29 3b 0a 0a 62 65   ┆nd  (* code array init   *);  be┆
0x08e1c0…08e1e0             67 69 6e 20 28 2a 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 6e 69 74 20 2a 29 0a 73 68 61 64 6f 77 5f   ┆gin (* component init *) shadow_┆
0x08e1e0…08e200             63 6f 75 6e 74 20 3a 3d 20 30 3b 0a 0a 72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 30 3b 0a 0a 63 61   ┆count := 0;  ref_count := 0;  ca┆
0x08e200…08e220 (37, 1, 13) 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 78 76 61 72 69 6e 69 74 20 3a 0a 62 65 67 69 6e 0a 0a 74   ┆se token of  xvarinit : begin  t┆
0x08e220…08e240             79 70 65 5f 6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 63 6f 64 65 5f 69 6e 69 74 76 61   ┆ype_o := in_integer; code_initva┆
0x08e240…08e260             72 28 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 74 79 70 65 5f 6f 2c 20 72 65 66 5f 63 6f 75   ┆r( kind, offset, type_o, ref_cou┆
0x08e260…08e280             6e 74 2c 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a   ┆nt, shadow_count ); get_token;  ┆
0x08e280…08e2a0             65 6e 64 3b 20 28 2a 20 76 61 72 20 69 6e 69 74 20 2a 29 0a 0a 0a 78 65 78 74 70 72 6f 63 65 73   ┆end; (* var init *)   xextproces┆
0x08e2a0…08e2c0             73 3a 0a 62 65 67 69 6e 0a 28 2a 20 64 65 63 6c 61 72 65 20 6c 61 62 65 6c 73 20 66 6f 72 20 70   ┆s: begin (* declare labels for p┆
0x08e2c0…08e2e0             72 6f 63 65 73 73 20 64 65 73 63 72 69 70 74 6f 72 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e   ┆rocess descriptor initialization┆
0x08e2e0…08e300             20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 62 65 67 69 6e 29 3b 0a 6f   ┆ *) out_nl; out_token(zbegin); o┆
0x08e300…08e320             75 74 5f 70 5f 69 64 28 69 64 5f 70 61 72 61 6d 29 3b 0a 6f 75 74 5f 70 5f 69 64 28 69 64 5f 63   ┆ut_p_id(id_param); out_p_id(id_c┆
0x08e320…08e340             6f 6e 74 69 6e 75 65 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 0a   ┆ontinue); out_token(zendlist);  ┆
0x08e340…08e360             6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 63 6f 6e 74 69 6e 75 65 29   ┆out_op_id(op_jmprw, id_continue)┆
0x08e360…08e380             3b 20 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 20 20 6a 75 6d 70 20 61 63 72 6f 73 73 20 74   ┆;  out_comment('   jump across t┆
0x08e380…08e3a0             68 65 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 65 74 65 72 73 20 27 29 3b 0a 6f 75 74 5f 6e 6c   ┆he process parameters '); out_nl┆
0x08e3a0…08e3c0             3b 20 6f 75 74 5f 6e 6c 3b 0a 0a 28 2a 20 6f 75 74 70 75 74 20 74 68 65 20 70 72 6f 63 65 73 73   ┆; out_nl;  (* output the process┆
0x08e3c0…08e3e0             20 70 61 72 61 6d 65 74 65 72 73 20 2a 29 0a 6f 75 74 5f 70 61 72 61 6d 73 3b 0a 0a 6f 75 74 5f   ┆ parameters *) out_params;  out_┆
0x08e3e0…08e400             6c 61 62 65 6c 28 69 64 5f 63 6f 6e 74 69 6e 75 65 29 3b 0a 0a 28 2a 20 67 65 6e 65 72 61 74 65   ┆label(id_continue);  (* generate┆
0x08e400…08e420 (37, 1, 14) 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20   ┆ code for the initialization of ┆
0x08e420…08e440             74 68 65 20 66 69 65 6c 64 73 20 69 6e 20 74 68 65 20 70 72 6f 63 65 73 73 20 64 65 73 63 72 69   ┆the fields in the process descri┆
0x08e440…08e460             70 74 6f 72 20 2a 29 0a 63 6f 64 65 5f 70 72 6f 63 65 73 73 5f 69 6e 69 74 28 6b 69 6e 64 2c 20   ┆ptor *) code_process_init(kind, ┆
0x08e460…08e480             6f 66 66 73 65 74 2c 20 74 72 75 65 20 28 2a 20 65 78 74 65 72 6e 61 6c 20 2a 29 29 3b 0a 0a 6f   ┆offset, true (* external *));  o┆
0x08e480…08e4a0             75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 29 3b 20 6f 75 74 5f 63 6f 6d 6d   ┆ut_nl; out_token(zend); out_comm┆
0x08e4a0…08e4c0             65 6e 74 28 27 65 6e 64 20 6f 66 20 65 78 74 65 72 6e 61 6c 20 70 72 6f 63 65 73 73 20 69 6e 69   ┆ent('end of external process ini┆
0x08e4c0…08e4e0             74 27 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 20 28 2a 20   ┆t'); out_nl; get_token; end; (* ┆
0x08e4e0…08e500             65 78 74 70 72 6f 63 65 73 73 20 2a 29 0a 0a 78 70 6f 6f 6c 69 6e 69 74 20 3a 0a 62 65 67 69 6e   ┆extprocess *)  xpoolinit : begin┆
0x08e500…08e520             0a 0a 6e 75 6d 62 65 72 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 73 69 7a 65 20 3a 3d 20   ┆  number := in_integer; size := ┆
0x08e520…08e540             69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 63 6f 64 65 5f 61 6c 6c 6f 63 70 6f 6f 6c 20 28 20 6b 69   ┆in_integer;  code_allocpool ( ki┆
0x08e540…08e560             6e 64 2c 20 6f 66 66 73 65 74 2c 20 6e 75 6d 62 65 72 2c 20 73 69 7a 65 20 29 3b 0a 67 65 74 5f   ┆nd, offset, number, size ); get_┆
0x08e560…08e580             74 6f 6b 65 6e 3b 0a 20 0a 65 6e 64 3b 20 28 2a 20 70 6f 6f 6c 20 69 6e 69 74 20 2a 29 0a 0a 78   ┆token;   end; (* pool init *)  x┆
0x08e580…08e5a0             66 69 65 6c 64 69 6e 69 74 2c 0a 78 64 79 6e 66 69 65 6c 64 69 6e 69 74 20 3a 20 62 65 67 69 6e   ┆fieldinit, xdynfieldinit : begin┆
0x08e5a0…08e5c0             0a 72 65 70 65 61 74 0a 69 66 20 6b 69 6e 64 20 3d 20 32 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63   ┆ repeat if kind = 2 then out_opc┆
0x08e5c0…08e5e0             6f 64 65 28 20 6f 70 5f 72 65 76 70 64 20 29 3b 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a   ┆ode( op_revpd );  case token of ┆
0x08e5e0…08e600             0a 78 66 69 65 6c 64 69 6e 69 74 20 3a 0a 62 65 67 69 6e 0a 6e 65 77 5f 6f 66 66 73 65 74 20 3a   ┆ xfieldinit : begin new_offset :┆
0x08e600…08e620 (37, 1, 15) 3d 20 6f 66 66 73 65 74 20 2b 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6e 65 77 5f 6b 69 6e 64 20   ┆= offset + in_integer; new_kind ┆
0x08e620…08e640             3a 3d 20 6b 69 6e 64 3b 0a 0a 65 6e 64 3b 20 28 2a 20 66 69 65 6c 64 20 69 6e 69 74 20 2a 29 0a   ┆:= kind;  end; (* field init *) ┆
0x08e640…08e660             0a 78 64 79 6e 66 69 65 6c 64 69 6e 69 74 20 3a 0a 62 65 67 69 6e 0a 0a 69 66 20 6b 69 6e 64 20   ┆ xdynfieldinit : begin  if kind ┆
0x08e660…08e680             3d 20 31 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65   ┆= 1 then begin out_op_int( op_re┆
0x08e680…08e6a0             61 6c 64 2c 20 6f 66 66 73 65 74 20 29 3b 0a 6e 65 77 5f 6b 69 6e 64 20 3a 3d 20 32 3b 20 6e 65   ┆ald, offset ); new_kind := 2; ne┆
0x08e6a0…08e6c0             77 5f 6f 66 66 73 65 74 20 3a 3d 20 30 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 0a 6e   ┆w_offset := 0; end else begin  n┆
0x08e6c0…08e6e0             65 77 5f 6b 69 6e 64 20 3a 3d 20 6b 69 6e 64 3b 20 6e 65 77 5f 6f 66 66 73 65 74 20 3a 3d 20 6f   ┆ew_kind := kind; new_offset := o┆
0x08e6e0…08e700             66 66 73 65 74 3b 0a 65 6e 64 3b 20 28 2a 20 6b 69 6e 64 20 3d 20 32 20 2a 29 0a 67 65 74 5f 6e   ┆ffset; end; (* kind = 2 *) get_n┆
0x08e700…08e720             69 76 5f 6f 66 66 73 65 74 28 20 74 65 6d 70 6c 61 74 65 5f 76 20 29 3b 0a 77 69 74 68 20 74 65   ┆iv_offset( template_v ); with te┆
0x08e720…08e740             6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c   ┆mplate_v do out_op_rev__(access,┆
0x08e740…08e760             77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f   ┆word_typ,c.niv-niv,offset); out_┆
0x08e760…08e780             6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64 64 20 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 64 79 6e 20   ┆opcode( op_uadd );  end; (* dyn ┆
0x08e780…08e7a0             66 69 65 6c 64 20 69 6e 69 74 20 2a 29 0a 65 6c 73 65 0a 65 72 72 6f 72 20 28 20 70 61 73 73 34   ┆field init *) else error ( pass4┆
0x08e7a0…08e7c0             63 6f 64 65 5f 65 72 72 6f 72 20 29 3b 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 2e 2e 2e 20 2a   ┆code_error ); end; (* case ... *┆
0x08e7c0…08e7e0             29 0a 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 63 6f 6d 70 6f 6e 65 6e 74 5f 69 6e 69 74 28 20 6e   ┆)   get_token; component_init( n┆
0x08e7e0…08e800             65 77 5f 6b 69 6e 64 2c 20 6e 65 77 5f 6f 66 66 73 65 74 2c 20 72 65 66 73 2c 20 73 68 61 64 6f   ┆ew_kind, new_offset, refs, shado┆
0x08e800…08e820 (38, 0, 1)  77 73 20 29 3b 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77 5f 63 6f 75   ┆ws ); shadow_count := shadow_cou┆
0x08e820…08e840             6e 74 20 2b 20 73 68 61 64 6f 77 73 3b 0a 72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 72 65 66 5f 63   ┆nt + shadows; ref_count := ref_c┆
0x08e840…08e860             6f 75 6e 74 20 2b 20 72 65 66 73 3b 0a 0a 75 6e 74 69 6c 20 74 6f 6b 65 6e 20 3d 20 78 65 6e 64   ┆ount + refs;  until token = xend┆
0x08e860…08e880             69 6e 69 74 66 69 65 6c 64 73 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 69 66 20 6b 69 6e 64 20   ┆initfields;  get_token; if kind ┆
0x08e880…08e8a0             3d 20 32 20 74 68 65 6e 20 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 74 6e 68 62   ┆= 2 then out_specopcode(op_stnhb┆
0x08e8a0…08e8c0             2c 2d 32 2a 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 0a 0a 65 6e 64 3b 20 28 2a 20 66 69 65 6c   ┆,-2*word_length);   end; (* fiel┆
0x08e8c0…08e8e0             64 20 69 6e 69 74 20 61 6e 64 20 64 79 6e 20 66 69 65 6c 64 20 69 6e 69 74 20 2a 29 0a 0a 0a 78   ┆d init and dyn field init *)   x┆
0x08e8e0…08e900             61 72 72 61 79 69 6e 69 74 20 3a 0a 62 65 67 69 6e 0a 0a 77 5f 6f 66 66 73 65 74 20 3a 3d 20 69   ┆arrayinit : begin  w_offset := i┆
0x08e900…08e920             6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 6f 77 65 72 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a   ┆n_integer; lower := in_integer; ┆
0x08e920…08e940             75 70 70 65 72 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f   ┆upper := in_integer; size := in_┆
0x08e940…08e960             69 6e 74 65 67 65 72 3b 0a 0a 63 6f 64 65 5f 61 72 72 61 79 5f 69 6e 69 74 28 20 74 6f 6b 65 6e   ┆integer;  code_array_init( token┆
0x08e960…08e980             20 3d 20 78 61 72 72 61 79 64 79 6e 69 6e 69 74 2c 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20   ┆ = xarraydyninit, kind, offset, ┆
0x08e980…08e9a0             77 5f 6f 66 66 73 65 74 2c 20 6c 6f 77 65 72 2c 20 75 70 70 65 72 2c 20 73 69 7a 65 2c 0a 20 72   ┆w_offset, lower, upper, size,  r┆
0x08e9a0…08e9c0             65 66 73 2c 20 73 68 61 64 6f 77 73 2c 20 64 6f 70 65 5f 76 20 29 3b 0a 73 68 61 64 6f 77 5f 63   ┆efs, shadows, dope_v ); shadow_c┆
0x08e9c0…08e9e0             6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 2b 20 73 68 61 64 6f 77 73 3b 0a   ┆ount := shadow_count + shadows; ┆
0x08e9e0…08ea00             72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 72 65 66 5f 63 6f 75 6e 74 20 2b 20 72 65 66 73 3b 0a 0a   ┆ref_count := ref_count + refs;  ┆
0x08ea00…08ea20 (38, 0, 2)  65 6e 64 3b 20 28 2a 20 61 72 72 61 79 20 69 6e 69 74 20 2a 29 0a 0a 0a 78 61 72 72 61 79 64 79   ┆end; (* array init *)   xarraydy┆
0x08ea20…08ea40             6e 69 6e 69 74 20 3a 0a 62 65 67 69 6e 0a 0a 77 5f 6f 66 66 73 65 74 20 3a 3d 20 69 6e 5f 69 6e   ┆ninit : begin  w_offset := in_in┆
0x08ea40…08ea60             74 65 67 65 72 3b 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 64 6f 70 65 5f 76 20 29 3b   ┆teger; get_niv_offset( dope_v );┆
0x08ea60…08ea80             0a 63 6f 64 65 5f 61 72 72 61 79 5f 69 6e 69 74 28 20 74 6f 6b 65 6e 20 3d 20 78 61 72 72 61 79   ┆ code_array_init( token = xarray┆
0x08ea80…08eaa0             64 79 6e 69 6e 69 74 2c 20 6b 69 6e 64 2c 20 6f 66 66 73 65 74 2c 20 77 5f 6f 66 66 73 65 74 2c   ┆dyninit, kind, offset, w_offset,┆
0x08eaa0…08eac0             20 30 2c 20 30 2c 20 30 2c 20 0a 72 65 66 73 2c 20 73 68 61 64 6f 77 73 2c 20 64 6f 70 65 5f 76   ┆ 0, 0, 0,  refs, shadows, dope_v┆
0x08eac0…08eae0             29 3b 0a 72 65 66 5f 63 6f 75 6e 74 20 3a 3d 20 72 65 66 5f 63 6f 75 6e 74 20 2b 20 72 65 66 73   ┆); ref_count := ref_count + refs┆
0x08eae0…08eb00             3b 0a 64 79 6e 5f 72 65 66 73 20 3a 3d 20 64 79 6e 5f 72 65 66 73 20 6f 72 20 28 20 72 65 66 73   ┆; dyn_refs := dyn_refs or ( refs┆
0x08eb00…08eb20             20 3e 20 30 20 29 3b 0a 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77 5f 63   ┆ > 0 ); shadow_count := shadow_c┆
0x08eb20…08eb40             6f 75 6e 74 20 2b 20 73 68 61 64 6f 77 73 3b 0a 64 79 6e 5f 73 68 61 64 6f 77 73 20 20 3a 3d 20   ┆ount + shadows; dyn_shadows  := ┆
0x08eb40…08eb60             64 79 6e 5f 73 68 61 64 6f 77 73 20 6f 72 20 28 73 68 61 64 6f 77 73 20 3e 20 30 29 3b 0a 0a 65   ┆dyn_shadows or (shadows > 0);  e┆
0x08eb60…08eb80             6e 64 3b 20 28 2a 20 61 72 72 61 79 20 64 79 6e 20 69 6e 69 74 20 2a 29 0a 0a 65 6c 73 65 20 20   ┆nd; (* array dyn init *)  else  ┆
0x08eb80…08eba0             65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 20 29 3b 0a 65 6e 64 3b 20 28 2a   ┆error(pass4code_error ); end; (*┆
0x08eba0…08ebc0             20 63 61 73 65 20 2a 29 0a 0a 0a 65 6e 64 3b 20 28 2a 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 6e 69   ┆ case *)   end; (* component ini┆
0x08ebc0…08ebe0             74 20 2a 29 0a 0a 0a 0a 0a 0a 62 65 67 69 6e 20 28 2a 20 73 74 61 72 74 20 6f 66 3a 20 66 69 6e   ┆t *)      begin (* start of: fin┆
0x08ebe0…08ec00             64 20 73 79 73 20 69 6e 69 74 20 2a 29 0a 69 66 20 74 6f 6b 65 6e 3c 3e 78 73 79 73 6e 65 77 69   ┆d sys init *) if token<>xsysnewi┆
0x08ec00…08ec20 (38, 0, 3)  6e 69 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 66 66 73 65 74 20 3a 3d 20 69 6e 5f 69 6e 74 65   ┆nit then begin offset := in_inte┆
0x08ec20…08ec40             67 65 72 3b 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 73 79 73 69 6e 69 74 20 74 68 65 6e 20 0a 62   ┆ger; if token = xsysinit then  b┆
0x08ec40…08ec60             65 67 69 6e 0a 6b 69 6e 64 20 3a 3d 20 31 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 6f   ┆egin kind := 1; end else begin o┆
0x08ec60…08ec80             75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 76 6c 61 2c 20 6f 66 66 73 65 74 20 29 3b 0a 6b   ┆ut_op_int( op_revla, offset ); k┆
0x08ec80…08eca0             69 6e 64 20 3a 3d 20 32 3b 0a 6f 66 66 73 65 74 20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 65 6e 64 0a   ┆ind := 2; offset := 0; end; end ┆
0x08eca0…08ecc0             65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 68 65 61 70 20 69 6e 69 74 2c 20 6a 75 73 74 20 61 66   ┆else begin (* heap init, just af┆
0x08ecc0…08ece0             74 65 72 20 6e 65 77 20 63 61 6c 6c 2c 20 69 2e 65 2e 20 74 68 65 20 6f 62 6a 65 63 74 20 61 64   ┆ter new call, i.e. the object ad┆
0x08ece0…08ed00             64 72 65 73 73 20 69 73 20 6f 6e 20 74 6f 70 20 6f 66 20 73 74 61 63 6b 20 2a 29 0a 6f 75 74 5f   ┆dress is on top of stack *) out_┆
0x08ed00…08ed20             6f 70 63 6f 64 65 28 6f 70 5f 72 65 76 70 64 29 3b 0a 6b 69 6e 64 3a 3d 20 32 3b 0a 6f 66 66 73   ┆opcode(op_revpd); kind:= 2; offs┆
0x08ed20…08ed40             65 74 3a 3d 20 30 0a 65 6e 64 3b 20 28 2a 20 68 65 61 70 20 69 6e 69 74 20 2a 29 0a 67 65 74 5f   ┆et:= 0 end; (* heap init *) get_┆
0x08ed40…08ed60             74 6f 6b 65 6e 3b 0a 63 6f 6d 70 6f 6e 65 6e 74 5f 69 6e 69 74 28 20 6b 69 6e 64 2c 20 6f 66 66   ┆token; component_init( kind, off┆
0x08ed60…08ed80             73 65 74 2c 20 72 65 66 5f 63 6f 75 6e 74 2c 20 73 68 61 64 6f 77 5f 63 6f 75 6e 74 20 29 3b 0a   ┆set, ref_count, shadow_count ); ┆
0x08ed80…08eda0             69 66 20 6e 6f 74 20 68 65 61 70 5f 69 6e 69 74 20 74 68 65 6e 0a 69 66 20 28 68 77 5f 73 74 61   ┆if not heap_init then if (hw_sta┆
0x08eda0…08edc0             63 6b 5f 73 69 7a 65 20 3c 3e 20 30 29 20 6f 72 20 28 63 2e 73 74 61 63 6b 5f 73 69 7a 65 20 3c   ┆ck_size <> 0) or (c.stack_size <┆
0x08edc0…08ede0             3e 20 30 29 20 74 68 65 6e 20 65 76 61 6c 73 74 61 63 6b 5f 65 72 72 6f 72 3b 0a 0a 65 6e 64 3b   ┆> 0) then evalstack_error;  end;┆
0x08ede0…08ee00             20 28 2a 20 66 69 6e 64 20 73 79 73 20 69 6e 69 74 20 2a 29 0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64   ┆ (* find sys init *)      proced┆
0x08ee00…08ee20 (38, 0, 4)  75 72 65 20 20 66 69 6e 64 5f 62 6c 6f 63 6b 20 28 6f 75 74 65 72 6d 6f 73 74 5f 6c 65 76 65 6c   ┆ure  find_block (outermost_level┆
0x08ee20…08ee40             3a 20 62 6f 6f 6c 65 61 6e 3b 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 3a 20 69 6e 74 65 67 65   ┆: boolean; param_length : intege┆
0x08ee40…08ee60             72 3b 20 6e 61 6d 65 20 3a 20 69 64 65 6e 74 69 66 69 65 72 20 29 3b 0a 74 79 70 65 0a 73 6b 69   ┆r; name : identifier ); type ski┆
0x08ee60…08ee80             70 5f 6d 6f 64 65 73 20 3d 20 28 73 6b 69 70 2c 20 64 6f 6e 74 5f 73 6b 69 70 2c 20 65 6e 64 5f   ┆p_modes = (skip, dont_skip, end_┆
0x08ee80…08eea0             73 6b 69 70 2c 20 65 6e 64 5f 73 6b 69 70 5f 62 6c 6f 63 6b 29 3b 0a 0a 76 61 72 0a 69 2c 20 72   ┆skip, end_skip_block);  var i, r┆
0x08eea0…08eec0             65 66 63 6f 75 6e 74 2c 20 72 65 66 73 2c 20 73 68 61 64 6f 77 63 6f 75 6e 74 2c 20 73 68 61 64   ┆efcount, refs, shadowcount, shad┆
0x08eec0…08eee0             6f 77 73 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 61 72 5f 6c 65 6e 67 74 68 2c 20 70 72 6f 63 5f   ┆ows : integer; var_length, proc_┆
0x08eee0…08ef00             70 61 72 6c 65 6e 67 74 68 2c 20 70 61 72 61 6d 5f 63 6f 75 6e 74 2c 0a 72 6f 75 6c 69 78 2c 20   ┆parlength, param_count, roulix, ┆
0x08ef00…08ef20             72 6f 75 6e 69 76 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6e 69 76 5f 70 64 2c 20 6f 66 66 73 65 74   ┆rouniv : integer; niv_pd, offset┆
0x08ef20…08ef40             5f 70 64 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6f 6c 64 5f 64 65 66 61 75 6c 74 5f 61 70 70 65 74   ┆_pd : integer; old_default_appet┆
0x08ef40…08ef60             69 74 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6f 6c 64 5f 63 20 3a 20 63 6f 6e 74 65 78 74 3b 0a   ┆ite : integer; old_c : context; ┆
0x08ef60…08ef80             65 78 74 65 72 6e 61 6c 5f 70 72 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6e 61 6d 65 5f 70 64 20 3a   ┆external_pr : boolean; name_pd :┆
0x08ef80…08efa0             20 69 64 65 6e 74 69 66 69 65 72 3b 0a 6c 69 6e 65 5f 6e 6f 20 3a 20 69 6e 74 65 67 65 72 3b 0a   ┆ identifier; line_no : integer; ┆
0x08efa0…08efc0             6c 6f 63 61 6c 5f 64 79 6e 5f 72 65 66 73 2c 0a 6c 6f 63 61 6c 5f 64 79 6e 5f 73 68 61 64 6f 77   ┆local_dyn_refs, local_dyn_shadow┆
0x08efc0…08efe0             73 2c 0a 65 6e 64 5f 69 6e 69 74 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 5f 6c 69 6e 65   ┆s, end_init: boolean; begin_line┆
0x08efe0…08f000             20 3a 20 69 6e 74 65 67 65 72 3b 0a 6a 75 6d 70 5f 73 74 61 74 65 20 3a 20 73 6b 69 70 5f 6d 6f   ┆ : integer; jump_state : skip_mo┆
0x08f000…08f020 (38, 0, 5)  64 65 73 3b 20 28 2a 20 64 65 66 69 6e 65 73 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 2a 29   ┆des; (* defines current state *)┆
0x08f020…08f040             0a 73 6b 69 70 5f 62 6c 6f 63 6b 20 3a 20 62 6f 6f 6c 65 61 6e 3b 20 28 2a 20 74 72 75 65 20 77   ┆ skip_block : boolean; (* true w┆
0x08f040…08f060             68 65 6e 20 6a 75 6d 70 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 2a 29 0a 70 65 6e 64 69 6e 67 5f   ┆hen jump to continue *) pending_┆
0x08f060…08f080             65 6e 74 72 79 3a 20 62 6f 6f 6c 65 61 6e 3b 20 28 2a 20 74 72 75 65 2c 20 77 68 65 6e 20 65 6e   ┆entry: boolean; (* true, when en┆
0x08f080…08f0a0             74 72 79 2d 70 6f 69 6e 74 20 6e 6f 74 20 64 65 66 69 6e 65 64 20 79 65 74 20 2a 29 0a 74 65 6d   ┆try-point not defined yet *) tem┆
0x08f0a0…08f0c0             70 6c 61 74 65 5f 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 64 79 6e 5f 76 61 72   ┆plate_v : varaddr_descr; dyn_var┆
0x08f0c0…08f0e0             5f 6f 66 66 73 65 74 20 3a 20 69 6e 74 65 67 65 72 3b 0a 64 79 6e 5f 79 65 73 5f 6f 72 5f 6e 6f   ┆_offset : integer; dyn_yes_or_no┆
0x08f0e0…08f100             20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 73 6b 69 70 5f 61 72 6f 75   ┆ : boolean;  procedure skip_arou┆
0x08f100…08f120             6e 64 20 28 6a 75 6d 70 3a 20 73 6b 69 70 5f 6d 6f 64 65 73 29 3b 0a 62 65 67 69 6e 0a 69 66 20   ┆nd (jump: skip_modes); begin if ┆
0x08f120…08f140             6a 75 6d 70 20 3c 3e 20 6a 75 6d 70 5f 73 74 61 74 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66   ┆jump <> jump_state then begin if┆
0x08f140…08f160             20 6a 75 6d 70 20 3d 20 73 6b 69 70 20 74 68 65 6e 0a 62 65 67 69 6e 0a 73 6b 69 70 5f 62 6c 6f   ┆ jump = skip then begin skip_blo┆
0x08f160…08f180             63 6b 3a 3d 74 72 75 65 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65   ┆ck:=true; out_nl; out_token (zbe┆
0x08f180…08f1a0             67 69 6e 29 3b 0a 6f 75 74 5f 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 5f 63 6f 6e 74 69 6e 75   ┆gin); out_identifier (id_continu┆
0x08f1a0…08f1c0             65 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 6f 70   ┆e); out_token (zendlist); out_op┆
0x08f1c0…08f1e0             5f 69 64 20 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 63 6f 6e 74 69 6e 75 65 29 3b 0a 65 6e 64   ┆_id (op_jmprw, id_continue); end┆
0x08f1e0…08f200             0a 65 6c 73 65 0a 69 66 20 70 65 6e 64 69 6e 67 5f 65 6e 74 72 79 20 74 68 65 6e 0a 62 65 67 69   ┆ else if pending_entry then begi┆
0x08f200…08f220 (38, 0, 6)  6e 0a 70 65 6e 64 69 6e 67 5f 65 6e 74 72 79 20 3a 3d 20 66 61 6c 73 65 3b 0a 28 2a 20 64 65 66   ┆n pending_entry := false; (* def┆
0x08f220…08f240             69 6e 65 20 74 68 65 20 65 6e 74 72 79 2d 70 6f 69 6e 74 20 2a 29 0a 69 66 20 6f 75 74 65 72 6d   ┆ine the entry-point *) if outerm┆
0x08f240…08f260             6f 73 74 5f 6c 65 76 65 6c 20 6f 72 20 28 72 6f 75 6c 69 78 20 3d 20 2d 31 29 20 74 68 65 6e 0a   ┆ost_level or (roulix = -1) then ┆
0x08f260…08f280             6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 65 6e 74 72 79 29 3b 0a 69 66 20 72 6f 75 6c 69 78 20   ┆out_label (id_entry); if roulix ┆
0x08f280…08f2a0             3c 3e 20 2d 31 20 74 68 65 6e 0a 6f 75 74 5f 6c 69 78 5f 6c 61 62 65 6c 20 28 72 5f 6e 61 6d 65   ┆<> -1 then out_lix_label (r_name┆
0x08f2a0…08f2c0             2c 20 72 6f 75 6c 69 78 29 3b 0a 0a 28 2a 20 67 65 6e 65 72 61 74 65 20 61 20 70 72 6f 6c 6f 67   ┆, roulix);  (* generate a prolog┆
0x08f2c0…08f2e0             20 66 6f 72 20 74 68 65 20 62 6f 64 79 20 2a 29 0a 69 66 20 70 72 6f 6c 6f 67 5f 79 65 73 20 6f   ┆ for the body *) if prolog_yes o┆
0x08f2e0…08f300             72 20 28 72 6f 75 6c 69 78 20 3c 3e 20 2d 31 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 63 6f 6e 74   ┆r (roulix <> -1) then begin cont┆
0x08f300…08f320             65 78 74 5f 65 76 61 6c 28 2d 34 29 3b 20 28 2a 74 68 65 20 6c 69 6e 65 69 6e 66 6f 72 6d 61 74   ┆ext_eval(-4); (*the lineinformat┆
0x08f320…08f340             69 6f 6e 20 69 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 61 63 74 69 76 61 74 69 6f 6e 20 72 65   ┆ion is part of the activation re┆
0x08f340…08f360             63 6f 72 64 2a 29 0a 28 2a 67 65 6e 65 72 61 74 65 20 6c 69 6e 6b 20 74 6f 20 6c 69 6e 65 74 61   ┆cord*) (*generate link to lineta┆
0x08f360…08f380             62 6c 65 2c 20 62 75 74 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 69 73 20 6e 65 76 65 72 20 63 61   ┆ble, but instruction is never ca┆
0x08f380…08f3a0             72 72 69 65 64 20 6f 75 74 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 61 61 64 2c   ┆rried out *) out_op_id(op_reaad,┆
0x08f3a0…08f3c0             69 64 5f 6c 69 6e 65 74 61 62 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 69 6e 73 74 72 75   ┆id_linetab); out_comment('instru┆
0x08f3c0…08f3e0             63 74 69 6f 6e 20 6e 65 76 65 72 20 65 78 65 63 75 74 65 64 27 29 3b 0a 28 2a 20 69 6e 69 74 69   ┆ction never executed'); (* initi┆
0x08f3e0…08f400             61 6c 69 7a 65 20 6d 61 78 2d 73 74 61 63 6b 20 72 65 67 69 73 74 65 72 20 2a 29 0a 69 66 20 72   ┆alize max-stack register *) if r┆
0x08f400…08f420 (38, 0, 7)  6f 75 6c 69 78 20 3d 20 2d 31 20 74 68 65 6e 20 28 2a 20 70 72 6f 63 65 73 73 20 62 6f 64 79 20   ┆oulix = -1 then (* process body ┆
0x08f420…08f440             2a 29 0a 63 6f 64 65 5f 73 65 74 5f 6d 61 78 73 74 61 63 6b 20 28 69 64 5f 62 6f 6e 61 70 70 65   ┆*) code_set_maxstack (id_bonappe┆
0x08f440…08f460             74 69 74 65 29 3b 0a 28 2a 20 61 6c 6c 6f 63 61 74 65 20 72 6f 6f 6d 20 66 6f 72 20 6c 6f 63 61   ┆tite); (* allocate room for loca┆
0x08f460…08f480             6c 20 76 61 72 69 61 62 6c 65 73 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f 72 65 6e   ┆l variables *) out_op_id (op_ren┆
0x08f480…08f4a0             68 62 2c 20 69 64 5f 61 70 70 73 74 61 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 65 6e 64 3b 20 28 2a   ┆hb, id_appstat); out_nl; end; (*┆
0x08f4a0…08f4c0             20 70 72 6f 6c 6f 67 20 2a 29 0a 65 6e 64 20 28 2a 20 70 65 6e 64 69 6e 67 20 65 6e 74 72 79 20   ┆ prolog *) end (* pending entry ┆
0x08f4c0…08f4e0             2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 6a 75 6d 70 20 3c 3e 20 65 6e 64 5f 73 6b 69   ┆*) else begin if jump <> end_ski┆
0x08f4e0…08f500             70 5f 62 6c 6f 63 6b 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64   ┆p_block then begin out_label (id┆
0x08f500…08f520             5f 63 6f 6e 74 69 6e 75 65 29 3b 0a 69 66 20 6a 75 6d 70 20 3c 3e 20 65 6e 64 5f 73 6b 69 70 20   ┆_continue); if jump <> end_skip ┆
0x08f520…08f540             74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65   ┆then begin out_nl; out_token (ze┆
0x08f540…08f560             6e 64 29 3b 0a 65 6e 64 3b 0a 65 6e 64 20 65 6c 73 65 0a 62 65 67 69 6e 0a 69 66 20 73 6b 69 70   ┆nd); end; end else begin if skip┆
0x08f560…08f580             5f 62 6c 6f 63 6b 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f   ┆_block then begin out_nl; out_to┆
0x08f580…08f5a0             6b 65 6e 28 7a 65 6e 64 29 3b 0a 73 6b 69 70 5f 62 6c 6f 63 6b 3a 3d 66 61 6c 73 65 3b 0a 65 6e   ┆ken(zend); skip_block:=false; en┆
0x08f5a0…08f5c0             64 3b 0a 6a 75 6d 70 3a 3d 64 6f 6e 74 5f 73 6b 69 70 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 6a   ┆d; jump:=dont_skip; end; end;  j┆
0x08f5c0…08f5e0             75 6d 70 5f 73 74 61 74 65 20 3a 3d 20 6a 75 6d 70 3b 0a 65 6e 64 3b 20 28 2a 20 63 68 61 6e 67   ┆ump_state := jump; end; (* chang┆
0x08f5e0…08f600             65 20 6f 66 20 6a 75 6d 70 73 74 61 74 65 20 2a 29 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64   ┆e of jumpstate *) end; (* proced┆
0x08f600…08f620 (38, 0, 8)  75 72 65 20 73 6b 69 70 2d 61 72 6f 75 6e 64 20 2a 29 0a 0a 62 65 67 69 6e 20 28 2a 20 62 6f 64   ┆ure skip-around *)  begin (* bod┆
0x08f620…08f640             79 20 6f 66 20 66 69 6e 64 20 62 6c 6f 63 6b 20 2a 29 0a 0a 69 66 20 28 74 6f 6b 65 6e 20 3d 20   ┆y of find block *)  if (token = ┆
0x08f640…08f660             78 66 75 6e 63 29 20 6f 72 20 28 74 6f 6b 65 6e 20 3d 20 78 70 72 6f 63 29 20 74 68 65 6e 0a 62   ┆xfunc) or (token = xproc) then b┆
0x08f660…08f680             65 67 69 6e 0a 72 6f 75 6c 69 78 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 6e 5f 69 64   ┆egin roulix := in_integer; in_id┆
0x08f680…08f6a0             65 6e 74 69 66 69 65 72 20 28 6e 61 6d 65 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 69 66 20 6f   ┆entifier (name); get_token; if o┆
0x08f6a0…08f6c0             75 74 65 72 6d 6f 73 74 5f 6c 65 76 65 6c 20 74 68 65 6e 0a 77 69 74 68 20 64 65 73 63 72 20 64   ┆utermost_level then with descr d┆
0x08f6c0…08f6e0             6f 0a 62 65 67 69 6e 0a 65 78 63 65 70 74 69 6f 6e 5f 70 6f 69 6e 74 20 3a 3d 20 27 30 20 20 20   ┆o begin exception_point := '0   ┆
0x08f6e0…08f700             20 20 20 20 20 20 20 20 27 3b 0a 65 6e 64 3b 0a 65 6e 64 0a 65 6c 73 65 0a 72 6f 75 6c 69 78 20   ┆        '; end; end else roulix ┆
0x08f700…08f720             3a 3d 20 2d 31 3b 20 20 28 2a 20 69 2e 65 2e 20 70 72 6f 63 65 73 73 20 2a 29 0a 69 66 20 74 6f   ┆:= -1;  (* i.e. process *) if to┆
0x08f720…08f740             6b 65 6e 20 3c 3e 20 78 62 6c 6f 63 6b 20 74 68 65 6e 20 65 72 72 6f 72 20 28 70 61 73 73 34 63   ┆ken <> xblock then error (pass4c┆
0x08f740…08f760             6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6c 69 6e 65 5f 6e 6f 20 3a 3d 20 69 6e 5f 6c 69 6e 65 5f   ┆ode_error);  line_no := in_line_┆
0x08f760…08f780             6e 6f 3b 0a 72 6f 75 6e 69 76 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 67 65 74 5f 74 6f   ┆no; rouniv := in_integer; get_to┆
0x08f780…08f7a0             6b 65 6e 3b 0a 0a 28 2a 20 64 65 63 6c 61 72 65 20 67 6c 6f 62 61 6c 2d 6c 61 62 65 6c 73 2c 20   ┆ken;  (* declare global-labels, ┆
0x08f7a0…08f7c0             61 74 20 6f 75 74 65 72 6d 6f 73 74 20 6c 65 76 65 6c 20 2a 29 0a 69 66 20 6f 75 74 65 72 6d 6f   ┆at outermost level *) if outermo┆
0x08f7c0…08f7e0             73 74 5f 6c 65 76 65 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a   ┆st_level then begin out_token (z┆
0x08f7e0…08f800             62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 65 6e 74 72 79 29 3b 0a 6f 75 74   ┆begin); out_p_id (id_entry); out┆
0x08f800…08f820 (38, 0, 9)  5f 70 5f 69 64 20 28 69 64 5f 65 78 69 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 65 78   ┆_p_id (id_exit); out_p_id (id_ex┆
0x08f820…08f840             63 65 70 74 69 6f 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 63 31 32 5f 6e 61 6d 65 29 3b 20 6f   ┆ception); out_p_id (c12_name); o┆
0x08f840…08f860             75 74 5f 63 68 61 72 20 28 27 23 27 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 65 31 32 5f 6e 61 6d   ┆ut_char ('#'); out_p_id (e12_nam┆
0x08f860…08f880             65 29 3b 20 6f 75 74 5f 63 68 61 72 20 28 27 23 27 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 72 31   ┆e); out_char ('#'); out_p_id (r1┆
0x08f880…08f8a0             32 5f 6e 61 6d 65 29 3b 20 6f 75 74 5f 63 68 61 72 20 28 27 23 27 29 3b 0a 6f 75 74 5f 70 5f 69   ┆2_name); out_char ('#'); out_p_i┆
0x08f8a0…08f8c0             64 20 28 6c 31 32 5f 6e 61 6d 65 29 3b 20 6f 75 74 5f 63 68 61 72 20 28 27 23 27 29 3b 0a 6f 75   ┆d (l12_name); out_char ('#'); ou┆
0x08f8c0…08f8e0             74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 65 6e 64 3b   ┆t_token (zendlist); out_nl; end;┆
0x08f8e0…08f900             0a 0a 28 2a 20 74 77 6f 20 63 6f 6d 70 6c 65 74 65 20 64 69 66 66 65 72 65 6e 74 20 62 6f 64 69   ┆  (* two complete different bodi┆
0x08f900…08f920             65 73 20 61 72 65 20 72 65 63 6f 67 6e 69 7a 65 64 3a 20 2a 29 0a 28 2a 20 20 20 31 2e 20 63 6f   ┆es are recognized: *) (*   1. co┆
0x08f920…08f940             64 65 2d 62 6f 64 69 65 73 2c 20 69 2e 65 2e 20 27 62 65 67 69 6e 62 6f 64 79 27 20 20 20 20 20   ┆de-bodies, i.e. 'beginbody'     ┆
0x08f940…08f960             20 20 20 20 20 20 20 2a 29 0a 28 2a 20 20 20 32 2e 20 6e 6f 72 6d 61 6c 2d 62 6f 64 69 65 73 2c   ┆       *) (*   2. normal-bodies,┆
0x08f960…08f980             20 69 2e 65 2e 20 70 61 73 63 61 6c 38 30 2d 67 65 6e 65 72 61 74 65 64 20 20 20 2a 29 0a 0a 69   ┆ i.e. pascal80-generated   *)  i┆
0x08f980…08f9a0             66 20 74 6f 6b 65 6e 20 3d 20 78 62 65 67 69 6e 63 6f 64 65 20 74 68 65 6e 0a 62 65 67 69 6e 20   ┆f token = xbegincode then begin ┆
0x08f9a0…08f9c0             28 2a 20 63 6f 64 65 2d 62 6f 64 79 20 2a 29 0a 28 2a 20 6d 61 6b 65 20 70 72 6f 70 65 72 20 63   ┆(* code-body *) (* make proper c┆
0x08f9c0…08f9e0             68 61 6e 67 65 73 20 74 6f 20 27 64 65 73 63 72 27 20 2a 29 0a 69 20 3a 3d 20 69 6e 5f 69 6e 74   ┆hanges to 'descr' *) i := in_int┆
0x08f9e0…08fa00             65 67 65 72 3b 0a 69 66 20 72 6f 75 6c 69 78 20 3c 3e 20 2d 31 20 74 68 65 6e 20 28 2a 20 6f 6e   ┆eger; if roulix <> -1 then (* on┆
0x08fa00…08fa20 (38, 0, 10) 6c 79 20 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 20 70 72 6f 63 65 64 75 72 65 73 20 6d 61 79 20   ┆ly functions and procedures may ┆
0x08fa20…08fa40             62 65 20 6f 70 65 6e 2d 72 6f 75 74 69 6e 65 73 20 2a 29 0a 69 66 20 6f 75 74 65 72 6d 6f 73 74   ┆be open-routines *) if outermost┆
0x08fa40…08fa60             5f 6c 65 76 65 6c 20 61 6e 64 20 6f 70 65 6e 72 6f 75 74 69 6e 65 5f 79 65 73 20 74 68 65 6e 0a   ┆_level and openroutine_yes then ┆
0x08fa60…08fa80             77 69 74 68 20 64 65 73 63 72 20 64 6f 0a 62 65 67 69 6e 0a 65 6e 74 72 79 5f 70 6f 69 6e 74 20   ┆with descr do begin entry_point ┆
0x08fa80…08faa0             3a 3d 20 27 30 20 20 20 20 20 20 20 20 20 20 20 27 3b 0a 6c 61 73 74 5f 70 61 72 61 6d 5f 6f 66   ┆:= '0           '; last_param_of┆
0x08faa0…08fac0             66 73 65 74 20 20 20 20 3a 3d 20 69 3b 0a 69 66 20 6b 69 6e 64 20 3d 20 32 20 74 68 65 6e 20 6b   ┆fset    := i; if kind = 2 then k┆
0x08fac0…08fae0             69 6e 64 20 3a 3d 20 34 0a 65 6c 73 65 20 69 66 20 6b 69 6e 64 20 3d 20 33 20 74 68 65 6e 20 6b   ┆ind := 4 else if kind = 3 then k┆
0x08fae0…08fb00             69 6e 64 20 3a 3d 20 35 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 6f 70   ┆ind := 5; out_nl; out_token (zop┆
0x08fb00…08fb20             74 69 6f 6e 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 36 29 3b 20 20 28 2a 20 70 61 73 73   ┆tion); out_integer (6);  (* pass┆
0x08fb20…08fb40             20 6e 6f 20 2a 29 0a 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 31 32 29 3b 20 28 2a 20 6f 70 74 69   ┆ no *) out_integer (12); (* opti┆
0x08fb40…08fb60             6f 6e 20 3d 20 63 6c 6f 73 65 64 20 6f 72 20 6f 70 65 6e 20 62 6f 64 79 20 2a 29 0a 6f 75 74 5f   ┆on = closed or open body *) out_┆
0x08fb60…08fb80             69 6e 74 65 67 65 72 20 28 30 29 3b 20 20 28 2a 20 76 61 6c 75 65 20 3d 20 6f 70 65 6e 20 62 6f   ┆integer (0);  (* value = open bo┆
0x08fb80…08fba0             64 79 20 2a 29 0a 6f 75 74 5f 63 68 61 72 28 27 2e 27 29 3b 20 20 20 20 28 2a 20 65 6e 64 20 6f   ┆dy *) out_char('.');    (* end o┆
0x08fba0…08fbc0             66 20 6f 70 74 69 6f 6e 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 63 6f   ┆f option *) end else begin (* co┆
0x08fbc0…08fbe0             64 65 72 6f 75 74 69 6e 65 20 6d 75 73 74 20 62 65 20 63 6c 6f 73 65 64 20 61 6e 79 77 61 79 20   ┆deroutine must be closed anyway ┆
0x08fbe0…08fc00             2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 6c 69 78 5f 6c 61 62 65 6c 20 28 72 5f 6e 61 6d 65   ┆*) out_nl; out_lix_label (r_name┆
0x08fc00…08fc20 (38, 0, 11) 2c 20 72 6f 75 6c 69 78 29 3b 0a 65 6e 64 3b 0a 28 2a 20 63 6f 70 79 20 74 68 65 20 63 6f 64 65   ┆, roulix); end; (* copy the code┆
0x08fc20…08fc40             20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 77 68 69 6c 65 20 74 6f 6b   ┆ *) out_nl; get_token; while tok┆
0x08fc40…08fc60             65 6e 20 3d 20 78 63 6f 64 65 6c 69 6e 65 20 64 6f 0a 62 65 67 69 6e 0a 66 6f 72 20 69 20 3a 3d   ┆en = xcodeline do begin for i :=┆
0x08fc60…08fc80             20 69 6e 5f 69 6e 74 65 67 65 72 20 64 6f 77 6e 74 6f 20 31 20 64 6f 20 6f 75 74 5f 63 68 61 72   ┆ in_integer downto 1 do out_char┆
0x08fc80…08fca0             20 28 63 68 72 28 69 6e 5f 69 6e 74 65 67 65 72 29 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 67 65 74 5f   ┆ (chr(in_integer)); out_nl; get_┆
0x08fca0…08fcc0             74 6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 63 6f 64 65   ┆token; end; skip_token (xendcode┆
0x08fcc0…08fce0             29 3b 0a 65 6e 64 20 28 2a 20 63 6f 64 65 2d 62 6f 64 79 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69   ┆); end (* code-body *) else begi┆
0x08fce0…08fd00             6e 20 28 2a 20 6e 6f 72 6d 61 6c 2d 62 6f 64 79 20 2a 29 0a 0a 6f 6c 64 5f 63 20 3a 3d 20 63 3b   ┆n (* normal-body *)  old_c := c;┆
0x08fd00…08fd20             0a 0a 77 69 74 68 20 63 20 64 6f 0a 62 65 67 69 6e 0a 0a 6e 69 76 20 3a 3d 20 72 6f 75 6e 69 76   ┆  with c do begin  niv := rouniv┆
0x08fd20…08fd40             3b 0a 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 30 3b 0a 6d 61 78 5f 73 74 61 63 6b 5f 73 69 7a   ┆; stack_size := 0; max_stack_siz┆
0x08fd40…08fd60             65 20 3a 3d 20 30 3b 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 30 3b 0a 0a 65 6e 64   ┆e := 0; hw_stack_size := 0;  end┆
0x08fd60…08fd80             3b 0a 0a 28 2a 20 64 65 63 6c 61 72 65 20 72 6f 75 74 69 6e 65 2d 6c 61 62 65 6c 73 20 2a 29 0a   ┆;  (* declare routine-labels *) ┆
0x08fd80…08fda0             6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f   ┆out_nl; out_token (zbegin); out_┆
0x08fda0…08fdc0             70 5f 69 64 20 28 69 64 5f 61 70 70 65 76 61 6c 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f   ┆p_id (id_appeval); out_p_id (id_┆
0x08fdc0…08fde0             61 70 70 73 74 61 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 77 6f 72 6b 29 3b 0a 6f 75   ┆appstat); out_p_id (id_work); ou┆
0x08fde0…08fe00             74 5f 70 5f 69 64 20 28 69 64 5f 6c 69 6e 65 74 61 62 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69   ┆t_p_id (id_linetab); out_p_id (i┆
0x08fe00…08fe20 (38, 0, 12) 64 5f 62 6c 6f 63 6b 65 78 69 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73   ┆d_blockexit); out_token (zendlis┆
0x08fe20…08fe40             74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 0a 72 65 66 63 6f 75 6e 74 20 3a 3d 20 30 3b 0a 6c 6f 63 61   ┆t); out_nl;  refcount := 0; loca┆
0x08fe40…08fe60             6c 5f 64 79 6e 5f 72 65 66 73 20 3a 3d 20 66 61 6c 73 65 3b 0a 73 68 61 64 6f 77 63 6f 75 6e 74   ┆l_dyn_refs := false; shadowcount┆
0x08fe60…08fe80             20 3a 3d 20 30 3b 0a 6c 6f 63 61 6c 5f 64 79 6e 5f 73 68 61 64 6f 77 73 20 3a 3d 20 66 61 6c 73   ┆ := 0; local_dyn_shadows := fals┆
0x08fe80…08fea0             65 3b 0a 64 79 6e 5f 79 65 73 5f 6f 72 5f 6e 6f 20 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 5f 69   ┆e; dyn_yes_or_no := false; end_i┆
0x08fea0…08fec0             6e 69 74 20 3a 3d 20 66 61 6c 73 65 3b 0a 6a 75 6d 70 5f 73 74 61 74 65 20 3a 3d 20 73 6b 69 70   ┆nit := false; jump_state := skip┆
0x08fec0…08fee0             3b 0a 73 6b 69 70 5f 62 6c 6f 63 6b 20 3a 3d 20 66 61 6c 73 65 3b 0a 70 65 6e 64 69 6e 67 5f 65   ┆; skip_block := false; pending_e┆
0x08fee0…08ff00             6e 74 72 79 20 3a 3d 20 74 72 75 65 3b 0a 0a 69 66 20 6f 75 74 65 72 6d 6f 73 74 5f 6c 65 76 65   ┆ntry := true;  if outermost_leve┆
0x08ff00…08ff20             6c 20 61 6e 64 20 28 72 6f 75 6c 69 78 20 3d 20 2d 31 29 20 74 68 65 6e 0a 73 6b 69 70 5f 61 72   ┆l and (roulix = -1) then skip_ar┆
0x08ff20…08ff40             6f 75 6e 64 20 28 64 6f 6e 74 5f 73 6b 69 70 29 3b 20 20 28 2a 20 6f 75 74 65 72 6d 6f 73 74 20   ┆ound (dont_skip);  (* outermost ┆
0x08ff40…08ff60             70 72 6f 63 65 73 73 20 6d 75 73 74 20 73 74 61 72 74 20 69 6d 6d 65 64 69 61 74 6c 79 20 2a 29   ┆process must start immediatly *)┆
0x08ff60…08ff80             0a 0a 72 65 70 65 61 74 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 65 78 74 70 72 6f 63 2c   ┆  repeat case token of xextproc,┆
0x08ff80…08ffa0             0a 78 65 78 74 66 75 6e 63 3a 0a 66 69 6e 64 5f 65 78 74 5f 72 6f 75 74 69 6e 65 3b 0a 78 70 72   ┆ xextfunc: find_ext_routine; xpr┆
0x08ffa0…08ffc0             6f 63 2c 0a 78 66 75 6e 63 3a 0a 62 65 67 69 6e 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 20 28 73 6b   ┆oc, xfunc: begin skip_around (sk┆
0x08ffc0…08ffe0             69 70 29 3b 0a 66 69 6e 64 5f 62 6c 6f 63 6b 20 28 66 61 6c 73 65 2c 20 30 2d 30 2d 30 2c 20 27   ┆ip); find_block (false, 0-0-0, '┆
0x08ffe0…090000             2a 2a 2a 2a 2a 2a 20 20 20 20 20 20 27 29 3b 0a 65 6e 64 3b 0a 0a 78 69 6e 69 74 69 61 6c 69 7a   ┆******      '); end;  xinitializ┆
0x090000…090020 (38, 0, 13) 65 2c 0a 78 65 78 74 65 78 63 65 70 74 69 6f 6e 2c 0a 78 65 78 63 65 70 74 69 6f 6e 20 3a 0a 62   ┆e, xextexception, xexception : b┆
0x090020…090040             65 67 69 6e 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 20 28 64 6f 6e 74 5f 73 6b 69 70 29 3b 0a 66 69   ┆egin skip_around (dont_skip); fi┆
0x090040…090060             6e 64 5f 69 6e 69 74 3b 0a 65 6e 64 3b 0a 0a 0a 78 73 79 73 69 6e 69 74 2c 0a 78 73 79 73 64 79   ┆nd_init; end;   xsysinit, xsysdy┆
0x090060…090080             6e 69 6e 69 74 3a 0a 62 65 67 69 6e 0a 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 28 20 64 6f 6e 74 5f   ┆ninit: begin  skip_around( dont_┆
0x090080…0900a0             73 6b 69 70 20 29 3b 0a 66 69 6e 64 5f 73 79 73 5f 69 6e 69 74 28 20 72 65 66 73 2c 20 6c 6f 63   ┆skip ); find_sys_init( refs, loc┆
0x0900a0…0900c0             61 6c 5f 64 79 6e 5f 72 65 66 73 2c 20 73 68 61 64 6f 77 73 2c 20 6c 6f 63 61 6c 5f 64 79 6e 5f   ┆al_dyn_refs, shadows, local_dyn_┆
0x0900c0…0900e0             73 68 61 64 6f 77 73 20 29 3b 0a 73 68 61 64 6f 77 63 6f 75 6e 74 20 3a 3d 20 73 68 61 64 6f 77   ┆shadows ); shadowcount := shadow┆
0x0900e0…090100             63 6f 75 6e 74 20 2b 20 73 68 61 64 6f 77 73 3b 0a 72 65 66 63 6f 75 6e 74 20 3a 3d 20 72 65 66   ┆count + shadows; refcount := ref┆
0x090100…090120             63 6f 75 6e 74 20 2b 20 72 65 66 73 3b 0a 0a 65 6e 64 3b 20 28 2a 20 73 79 73 69 6e 69 74 20 61   ┆count + refs;  end; (* sysinit a┆
0x090120…090140             6e 64 20 73 79 73 64 79 6e 69 6e 69 74 20 2a 29 0a 0a 0a 0a 78 70 72 6f 63 65 73 73 3a 0a 62 65   ┆nd sysdyninit *)    xprocess: be┆
0x090140…090160             67 69 6e 0a 0a 28 2a 20 64 65 63 6c 61 72 65 20 69 6e 74 65 72 2d 70 72 6f 63 65 73 73 20 6c 61   ┆gin  (* declare inter-process la┆
0x090160…090180             62 65 6c 73 20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69   ┆bels *) out_nl; out_token (zbegi┆
0x090180…0901a0             6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 70 61 72 61 6d 29 3b 0a 6f 75 74 5f 70 5f 69   ┆n); out_p_id (id_param); out_p_i┆
0x0901a0…0901c0             64 20 28 69 64 5f 70 72 6f 63 69 6e 66 29 3b 0a 6f 75 74 5f 70 5f 69 64 28 20 69 64 5f 64 65 66   ┆d (id_procinf); out_p_id( id_def┆
0x0901c0…0901e0             61 75 6c 74 5f 61 70 70 65 74 69 74 65 20 29 3b 0a 28 2a 20 6f 75 74 5f 70 5f 69 64 20 28 69 64   ┆ault_appetite ); (* out_p_id (id┆
0x0901e0…090200             5f 6e 61 6d 65 29 3b 20 20 38 36 2e 30 39 2e 30 38 20 6e 6f 74 20 75 73 65 64 20 61 6e 79 20 6d   ┆_name);  86.09.08 not used any m┆
0x090200…090220 (38, 0, 14) 6f 72 65 20 2a 29 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 0a 73 6b   ┆ore *) out_token (zendlist);  sk┆
0x090220…090240             69 70 5f 61 72 6f 75 6e 64 20 28 73 6b 69 70 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27   ┆ip_around (skip); out_comment( '┆
0x090240…090260             20 20 20 6a 75 6d 70 20 61 63 72 6f 73 73 20 74 68 65 20 70 72 6f 63 65 73 73 20 64 65 63 6c 61   ┆   jump across the process decla┆
0x090260…090280             72 61 74 69 6f 6e 2e 20 27 20 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 20 6f 75 74 5f 6e 6c 3b 0a 0a   ┆ration. ' ); out_nl;   out_nl;  ┆
0x090280…0902a0             6f 66 66 73 65 74 5f 70 64 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 69 6e 5f 69 64 65   ┆offset_pd := in_integer;  in_ide┆
0x0902a0…0902c0             6e 74 69 66 69 65 72 28 20 6e 61 6d 65 5f 70 64 20 29 3b 0a 0a 70 72 6f 63 5f 70 61 72 6c 65 6e   ┆ntifier( name_pd );  proc_parlen┆
0x0902c0…0902e0             67 74 68 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f 70 61 72 61 6d 73 3b 0a   ┆gth := in_integer;  out_params; ┆
0x0902e0…090300             0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69   ┆ out_token (zbegin); out_p_id (i┆
0x090300…090320             64 5f 65 6e 74 72 79 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 65 78 63 65 70 74 69 6f 6e   ┆d_entry); out_p_id (id_exception┆
0x090320…090340             29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 65 78 69 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e   ┆); out_p_id (id_exit); out_token┆
0x090340…090360             20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 70 72 6f 63 69   ┆ (zendlist); out_label (id_proci┆
0x090360…090380             6e 66 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 63 6f 6e 73 74 29 3b 20 6f 75 74 5f 69 6e 74   ┆nf); out_token (zconst); out_int┆
0x090380…0903a0             65 67 65 72 20 28 32 20 2a 20 70 6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 20 2b 20 32 20 2a 20 77   ┆eger (2 * pointer_length + 2 * w┆
0x0903a0…0903c0             6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 74 6f 6b 65 6e 20   ┆ord_length); out_nl;  out_token ┆
0x0903c0…0903e0             28 64 6f 6c 6c 61 72 5f 61 29 3b 20 20 6f 75 74 5f 65 78 70 72 28 69 64 5f 65 6e 74 72 79 2c 6a   ┆(dollar_a);  out_expr(id_entry,j┆
0x0903e0…090400             75 6d 70 5f 61 63 72 6f 73 73 5f 66 69 72 73 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f   ┆ump_across_first); out_nl;  out_┆
0x090400…090420 (38, 0, 15) 74 6f 6b 65 6e 20 28 64 6f 6c 6c 61 72 5f 61 29 3b 20 20 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f   ┆token (dollar_a);  out_p_id (id_┆
0x090420…090440             65 78 63 65 70 74 69 6f 6e 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 74 6f 6b 65 6e 20 28   ┆exception); out_nl;  out_token (┆
0x090440…090460             64 6f 6c 6c 61 72 5f 69 29 3b 20 20 6f 75 74 5f 70 5f 69 64 28 20 69 64 5f 64 65 66 61 75 6c 74   ┆dollar_i);  out_p_id( id_default┆
0x090460…090480             5f 61 70 70 65 74 69 74 65 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 74 6f 6b 65 6e 20 28   ┆_appetite); out_nl;  out_token (┆
0x090480…0904a0             64 6f 6c 6c 61 72 5f 69 29 3b 20 20 6f 75 74 5f 70 5f 69 6e 74 20 28 70 72 6f 63 5f 70 61 72 6c   ┆dollar_i);  out_p_int (proc_parl┆
0x0904a0…0904c0             65 6e 67 74 68 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29   ┆ength); out_nl; out_token (zend)┆
0x0904c0…0904e0             3b 0a 6f 75 74 5f 6e 6c 3b 0a 20 20 0a 28 2a 20 38 36 2e 30 39 2e 30 38 20 6e 61 6d 65 20 6e 6f   ┆; out_nl;    (* 86.09.08 name no┆
0x0904e0…090500             74 20 75 73 65 64 20 61 6e 79 20 6d 6f 72 65 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 6e 61   ┆t used any more out_label (id_na┆
0x090500…090520             6d 65 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 63 6f 6e 73 74 29 3b 20 20 6f 75 74 5f 70 5f   ┆me); out_token (zconst);  out_p_┆
0x090520…090540             69 6e 74 20 28 31 32 29 3b 0a 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 31 32 20 64 6f 0a 62   ┆int (12);  for i := 1 to 12 do b┆
0x090540…090560             65 67 69 6e 0a 0a 69 66 20 28 20 69 20 6d 6f 64 20 32 20 29 20 3d 20 31 20 74 68 65 6e 0a 62 65   ┆egin  if ( i mod 2 ) = 1 then be┆
0x090560…090580             67 69 6e 0a 6f 75 74 5f 6e 6c 3b 20 20 20 6f 75 74 5f 74 61 62 28 20 32 30 20 29 0a 65 6e 64 0a   ┆gin out_nl;   out_tab( 20 ) end ┆
0x090580…0905a0             65 6c 73 65 0a 6f 75 74 5f 63 68 61 72 20 28 27 2c 27 29 3b 0a 0a 6f 75 74 5f 74 6f 6b 65 6e 20   ┆else out_char (',');  out_token ┆
0x0905a0…0905c0             28 64 6f 6c 6c 61 72 5f 62 29 3b 0a 0a 69 66 20 69 20 3c 3d 20 63 5f 73 69 7a 65 5f 69 64 65 6e   ┆(dollar_b);  if i <= c_size_iden┆
0x0905c0…0905e0             74 69 66 69 65 72 20 74 68 65 6e 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f 72 64 28 20 6e 61   ┆tifier then out_integer( ord( na┆
0x0905e0…090600             6d 65 5f 70 64 5b 20 69 20 5d 20 29 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28   ┆me_pd[ i ] ) ) else out_integer(┆
0x090600…090620 (38, 1, 1)  20 6f 72 64 28 20 27 20 27 20 29 20 29 0a 0a 65 6e 64 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f   ┆ ord( ' ' ) )  end; out_nl; out_┆
0x090620…090640             74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 28 2a 20 65 6e 64 20 6f 66 20   ┆token (zend); out_nl; (* end of ┆
0x090640…090660             6e 61 6d 65 20 2a 29 0a 0a 28 2a 20 20 69 6e 73 65 72 74 20 74 68 65 20 62 6f 64 79 20 6f 66 20   ┆name *)  (*  insert the body of ┆
0x090660…090680             74 68 65 20 70 72 6f 63 65 73 73 20 64 65 63 6c 61 72 61 74 69 6f 6e 3a 20 20 2a 29 0a 0a 67 65   ┆the process declaration:  *)  ge┆
0x090680…0906a0             74 5f 74 6f 6b 65 6e 3b 0a 0a 6f 6c 64 5f 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 20 3a   ┆t_token;  old_default_appetite :┆
0x0906a0…0906c0             3d 20 64 65 73 63 72 2e 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 3b 0a 64 65 73 63 72 2e   ┆= descr.default_appetite; descr.┆
0x0906c0…0906e0             64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 20 3a 3d 20 30 3b 0a 66 69 6e 64 5f 62 6c 6f 63   ┆default_appetite := 0; find_bloc┆
0x0906e0…090700             6b 20 28 66 61 6c 73 65 2c 20 70 72 6f 63 5f 70 61 72 6c 65 6e 67 74 68 2c 20 6e 61 6d 65 5f 70   ┆k (false, proc_parlength, name_p┆
0x090700…090720             64 29 3b 0a 6f 75 74 5f 64 65 66 28 20 69 64 5f 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65   ┆d); out_def( id_default_appetite┆
0x090720…090740             20 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 64 65 73 63 72 20 2e 20 64 65 66 61 75 6c 74   ┆ ); out_integer( descr . default┆
0x090740…090760             5f 61 70 70 65 74 69 74 65 20 29 3b 0a 0a 64 65 73 63 72 20 2e 20 64 65 66 61 75 6c 74 5f 61 70   ┆_appetite );  descr . default_ap┆
0x090760…090780             70 65 74 69 74 65 20 3a 3d 20 6f 6c 64 5f 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 3b 0a   ┆petite := old_default_appetite; ┆
0x090780…0907a0             6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 20 20 6f 75 74 5f 63   ┆out_nl; out_token (zend);  out_c┆
0x0907a0…0907c0             6f 6d 6d 65 6e 74 20 28 27 65 6e 64 20 6f 66 20 69 6e 74 65 72 6e 61 6c 20 70 72 6f 63 65 73 73   ┆omment ('end of internal process┆
0x0907c0…0907e0             20 62 6f 64 79 27 29 3b 0a 0a 28 2a 20 20 67 65 6e 65 72 61 74 65 20 63 6f 64 65 20 66 6f 72 20   ┆ body');  (*  generate code for ┆
0x0907e0…090800             74 68 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 50 72 6f 63 65 73   ┆the initialization of the Proces┆
0x090800…090820 (38, 1, 2)  73 20 44 65 73 63 72 69 70 74 6f 72 3a 20 20 2a 29 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 20 28 65   ┆s Descriptor:  *) skip_around (e┆
0x090820…090840             6e 64 5f 73 6b 69 70 29 3b 0a 0a 63 6f 64 65 5f 70 72 6f 63 65 73 73 5f 69 6e 69 74 28 31 20 28   ┆nd_skip);  code_process_init(1 (┆
0x090840…090860             2a 20 6b 69 6e 64 20 64 69 72 65 63 74 20 61 64 64 72 65 73 73 61 62 6c 65 20 2a 29 2c 20 6f 66   ┆* kind direct addressable *), of┆
0x090860…090880             66 73 65 74 5f 70 64 2c 20 66 61 6c 73 65 28 2a 20 6e 6f 74 20 65 78 74 65 72 6e 61 6c 20 2a 29   ┆fset_pd, false(* not external *)┆
0x090880…0908a0             29 3b 0a 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 20 28 65 6e 64 5f 73 6b 69 70 5f 62 6c 6f 63 6b 29   ┆);  skip_around (end_skip_block)┆
0x0908a0…0908c0             3b 20 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27 65 6e 64 20 2e 2e 63 6f 6e 74 69 6e 75 65 2e   ┆;  out_comment ('end ..continue.┆
0x0908c0…0908e0             2e 20 62 6c 6f 63 6b 27 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65   ┆. block'); out_nl; out_token (ze┆
0x0908e0…090900             6e 64 29 3b 20 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27 65 6e 64 20 6f 66 20 69 6e 74 65 72   ┆nd);  out_comment ('end of inter┆
0x090900…090920             6e 61 6c 20 70 72 6f 63 65 73 73 20 69 6e 69 74 27 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 0a 74 72 61   ┆nal process init'); out_nl;  tra┆
0x090920…090940             70 5f 63 6f 64 65 20 3a 3d 20 6d 65 61 73 75 72 65 6d 65 6e 74 5f 79 65 73 3b 0a 63 75 72 72 65   ┆p_code := measurement_yes; curre┆
0x090940…090960             6e 74 5f 74 72 61 70 5f 6e 72 20 3a 3d 20 30 3b 20 28 2a 20 72 65 74 75 72 6e 20 74 6f 20 73 75   ┆nt_trap_nr := 0; (* return to su┆
0x090960…090980             72 72 6f 75 6e 64 69 6e 67 20 6d 61 69 6e 20 62 6c 6f 63 6b 20 2a 29 0a 0a 0a 65 6e 64 3b 0a 0a   ┆rrounding main block *)   end;  ┆
0x090980…0909a0             0a 78 61 72 72 61 79 31 74 65 6d 70 6c 61 74 65 2c 20 78 61 72 72 61 79 32 74 65 6d 70 6c 61 74   ┆ xarray1template, xarray2templat┆
0x0909a0…0909c0             65 2c 20 78 61 72 72 61 79 33 74 65 6d 70 6c 61 74 65 2c 0a 78 72 65 63 6f 72 64 74 65 6d 70 6c   ┆e, xarray3template, xrecordtempl┆
0x0909c0…0909e0             61 74 65 20 3a 0a 62 65 67 69 6e 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 28 20 64 6f 6e 74 5f 73 6b   ┆ate : begin skip_around( dont_sk┆
0x0909e0…090a00             69 70 20 29 3b 0a 20 64 79 6e 5f 74 79 70 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 65 6e 64   ┆ip );  dyn_type_declaration; end┆
0x090a00…090a20 (38, 1, 3)  3b 0a 0a 0a 78 61 6c 6c 6f 63 64 79 6e 76 61 72 20 3a 0a 62 65 67 69 6e 0a 73 6b 69 70 5f 61 72   ┆;   xallocdynvar : begin skip_ar┆
0x090a20…090a40             6f 75 6e 64 28 20 64 6f 6e 74 5f 73 6b 69 70 20 29 3b 0a 0a 64 79 6e 5f 76 61 72 5f 6f 66 66 73   ┆ound( dont_skip );  dyn_var_offs┆
0x090a40…090a60             65 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 6c 6f 63 61 6c 20 66 72 61 6d   ┆et := in_integer;  (* local fram┆
0x090a60…090a80             65 20 61 64 72 65 73 73 20 6f 66 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 76 61 72 69 61   ┆e adress of pointer to the varia┆
0x090a80…090aa0             62 6c 65 20 2a 29 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 78 64 20 29 3b 20   ┆ble *)  out_opcode( op_reaxd ); ┆
0x090aa0…090ac0             20 28 2a 20 67 65 74 20 6c 61 73 74 20 75 73 65 64 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28   ┆ (* get last used *) out_op_int(┆
0x090ac0…090ae0             20 6f 70 5f 72 65 61 73 64 2c 20 31 20 29 3b 20 28 2a 20 65 76 65 6e 20 73 74 61 72 74 20 61 64   ┆ op_reasd, 1 ); (* even start ad┆
0x090ae0…090b00             64 72 65 73 73 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 73 74 76 6c 61 2c 20   ┆dress *)  out_op_int( op_stvla, ┆
0x090b00…090b20             64 79 6e 5f 76 61 72 5f 6f 66 66 73 65 74 20 29 3b 20 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20   ┆dyn_var_offset ); (* initialize ┆
0x090b20…090b40             74 68 65 20 70 6f 69 6e 74 65 72 20 2a 29 0a 0a 28 2a 20 72 65 73 65 72 76 65 20 73 74 61 63 6b   ┆the pointer *)  (* reserve stack┆
0x090b40…090b60             20 73 70 61 63 65 20 2a 29 0a 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 74 65 6d 70 6c   ┆ space *)  get_niv_offset( templ┆
0x090b60…090b80             61 74 65 5f 76 20 29 3b 0a 77 69 74 68 20 74 65 6d 70 6c 61 74 65 5f 76 20 64 6f 0a 6f 75 74 5f   ┆ate_v ); with template_v do out_┆
0x090b80…090ba0             6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e   ┆op_rev__(access,word_typ,c.niv-n┆
0x090ba0…090bc0             69 76 2c 6f 66 66 73 65 74 29 3b 0a 0a 6f 75 74 5f 6d 61 6b 65 5f 74 6f 70 5f 65 76 65 6e 3b 0a   ┆iv,offset);  out_make_top_even; ┆
0x090bc0…090be0             6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 6e 70 62 20 29 3b 0a 64 79 6e 5f 79 65 73 5f   ┆out_opcode( op_renpb ); dyn_yes_┆
0x090be0…090c00             6f 72 5f 6e 6f 20 3a 3d 20 74 72 75 65 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b   ┆or_no := true;  get_token;  end;┆
0x090c00…090c20 (38, 1, 4)  20 28 2a 20 61 6c 6c 6f 63 20 64 79 6e 20 76 61 72 20 2a 29 0a 0a 0a 0a 0a 0a 65 6c 73 65 0a 69   ┆ (* alloc dyn var *)      else i┆
0x090c20…090c40             66 20 74 6f 6b 65 6e 20 3c 3e 20 78 65 6e 64 64 65 63 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 73   ┆f token <> xenddecl then begin s┆
0x090c40…090c60             6b 69 70 5f 61 72 6f 75 6e 64 28 20 64 6f 6e 74 5f 73 6b 69 70 20 29 3b 0a 64 79 6e 5f 74 79 70   ┆kip_around( dont_skip ); dyn_typ┆
0x090c60…090c80             65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 65 6e 64 0a 65 6c 73 65 0a 65 6e 64 5f 69 6e 69 74   ┆e_declaration; end else end_init┆
0x090c80…090ca0             20 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 20 28 2a 20 20 63 61 73 65 20 69 6e 5f 74 6f 6b 65 6e   ┆ := true; end; (*  case in_token┆
0x090ca0…090cc0             20 6f 66 20 2e 2e 2e 2e 2e 2e 20 20 2a 29 0a 0a 75 6e 74 69 6c 20 65 6e 64 5f 69 6e 69 74 3b 0a   ┆ of ......  *)  until end_init; ┆
0x090cc0…090ce0             0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 64 65 63 6c 29 3b 0a 0a 69 66 20 74 72 61 70   ┆ skip_token (xenddecl);  if trap┆
0x090ce0…090d00             5f 63 6f 64 65 20 74 68 65 6e 0a 69 66 20 72 6f 75 6c 69 78 20 3c 3e 20 2d 31 20 74 68 65 6e 0a   ┆_code then if roulix <> -1 then ┆
0x090d00…090d20             63 75 72 72 65 6e 74 5f 74 72 61 70 5f 6e 72 20 3a 3d 20 6e 65 77 5f 74 72 61 70 5f 65 6e 74 72   ┆current_trap_nr := new_trap_entr┆
0x090d20…090d40             79 28 20 72 6f 75 6c 69 78 20 29 0a 65 6c 73 65 0a 63 75 72 72 65 6e 74 5f 74 72 61 70 5f 6e 72   ┆y( roulix ) else current_trap_nr┆
0x090d40…090d60             20 3a 3d 20 30 3b 20 28 2a 20 6d 61 69 6e 20 2a 29 0a 0a 0a 28 2a 20 20 66 69 6e 64 20 73 74 61   ┆ := 0; (* main *)   (*  find sta┆
0x090d60…090d80             74 65 6d 65 6e 74 73 3a 20 20 2a 29 0a 0a 62 65 67 69 6e 5f 6c 69 6e 65 20 3a 3d 20 69 6e 5f 6c   ┆tements:  *)  begin_line := in_l┆
0x090d80…090da0             69 6e 65 5f 6e 6f 3b 0a 0a 73 6b 69 70 5f 61 72 6f 75 6e 64 20 28 64 6f 6e 74 5f 73 6b 69 70 29   ┆ine_no;  skip_around (dont_skip)┆
0x090da0…090dc0             3b 0a 69 66 20 72 6f 75 6c 69 78 20 3d 20 2d 31 20 74 68 65 6e 20 28 2a 70 72 6f 63 65 73 73 2a   ┆; if roulix = -1 then (*process*┆
0x090dc0…090de0             29 0a 62 65 67 69 6e 0a 28 2a 65 78 6f 70 63 6f 64 65 20 62 79 74 65 20 73 65 74 20 74 6f 20 30   ┆) begin (*exopcode byte set to 0┆
0x090de0…090e00             2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 30 29 3b 0a 6f 75 74 5f 6f   ┆*) out_op_int(op_rechw,0); out_o┆
0x090e00…090e20 (38, 1, 5)  70 5f 69 64 28 6f 70 5f 73 74 76 67 62 2c 69 64 5f 65 78 6f 70 63 6f 64 65 29 3b 0a 65 6e 64 3b   ┆p_id(op_stvgb,id_exopcode); end;┆
0x090e20…090e40             0a 64 79 6e 5f 65 76 61 6c 5f 73 74 61 63 6b 3a 3d 20 66 61 6c 73 65 3b 0a 66 69 6e 64 5f 73 74   ┆ dyn_eval_stack:= false; find_st┆
0x090e40…090e60             61 74 65 6d 65 6e 74 3b 0a 64 79 6e 5f 79 65 73 5f 6f 72 5f 6e 6f 3a 3d 20 64 79 6e 5f 79 65 73   ┆atement; dyn_yes_or_no:= dyn_yes┆
0x090e60…090e80             5f 6f 72 5f 6e 6f 20 6f 72 20 64 79 6e 5f 65 76 61 6c 5f 73 74 61 63 6b 3b 0a 6f 75 74 5f 6c 61   ┆_or_no or dyn_eval_stack; out_la┆
0x090e80…090ea0             62 65 6c 28 69 64 5f 62 6c 6f 63 6b 65 78 69 74 29 3b 0a 0a 28 2a 20 20 66 69 6e 64 20 74 68 65   ┆bel(id_blockexit);  (*  find the┆
0x090ea0…090ec0             20 61 70 70 65 74 69 74 65 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 3a 20 20 2a 29 0a 0a 76 61 72   ┆ appetite of the block:  *)  var┆
0x090ec0…090ee0             5f 6c 65 6e 67 74 68 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 70 61 72 61 6d 5f 6c 65   ┆_length := in_integer;  param_le┆
0x090ee0…090f00             6e 67 74 68 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 0a 28 2a 20 20 67 65 6e 65 72 61   ┆ngth := in_integer;   (*  genera┆
0x090f00…090f20             74 65 20 74 68 65 20 65 70 69 6c 6f 67 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 2c 20 64 65 70 65   ┆te the epilog of the block, depe┆
0x090f20…090f40             6e 64 69 6e 67 20 6f 6e 20 70 72 6f 63 65 73 73 20 6f 72 20 6e 6f 74 3a 20 20 2a 29 0a 0a 69 66   ┆nding on process or not:  *)  if┆
0x090f40…090f60             20 72 6f 75 6c 69 78 20 3c 3e 20 2d 31 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 66 75 6e 63   ┆ roulix <> -1 then begin (* func┆
0x090f60…090f80             74 69 6f 6e 20 6f 72 20 70 72 6f 63 65 64 75 72 65 20 2a 29 0a 69 66 20 6c 6f 63 61 6c 5f 64 79   ┆tion or procedure *) if local_dy┆
0x090f80…090fa0             6e 5f 72 65 66 73 20 6f 72 20 28 72 65 66 63 6f 75 6e 74 20 3e 20 30 29 20 74 68 65 6e 0a 63 6f   ┆n_refs or (refcount > 0) then co┆
0x090fa0…090fc0             64 65 5f 72 65 6d 6f 76 65 20 28 72 65 66 63 6f 75 6e 74 2c 20 6c 6f 63 61 6c 5f 64 79 6e 5f 72   ┆de_remove (refcount, local_dyn_r┆
0x090fc0…090fe0             65 66 73 2c 20 72 65 66 5f 74 79 70 29 3b 0a 69 66 20 6c 6f 63 61 6c 5f 64 79 6e 5f 73 68 61 64   ┆efs, ref_typ); if local_dyn_shad┆
0x090fe0…091000             6f 77 73 20 6f 72 20 28 73 68 61 64 6f 77 63 6f 75 6e 74 3e 30 29 20 74 68 65 6e 0a 63 6f 64 65   ┆ows or (shadowcount>0) then code┆
0x091000…091020 (38, 1, 6)  5f 72 65 6d 6f 76 65 20 28 73 68 61 64 6f 77 63 6f 75 6e 74 2c 20 6c 6f 63 61 6c 5f 64 79 6e 5f   ┆_remove (shadowcount, local_dyn_┆
0x091020…091040             73 68 61 64 6f 77 73 2c 20 73 68 61 64 6f 77 5f 74 79 70 29 3b 0a 69 66 20 74 72 61 70 5f 63 6f   ┆shadows, shadow_typ); if trap_co┆
0x091040…091060             64 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 6d 74 72 68   ┆de then begin out_op_int(op_mtrh┆
0x091060…091080             2c 74 72 61 70 72 65 74 75 72 6e 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 0a 6f   ┆,trapreturn); out_start_param; o┆
0x091080…0910a0             75 74 5f 69 6e 74 65 67 65 72 28 63 75 72 72 65 6e 74 5f 74 72 61 70 5f 6e 72 29 3b 0a 65 6e 64   ┆ut_integer(current_trap_nr); end┆
0x0910a0…0910c0             3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 70 65 78 69 74 2c 20 70 61 72 61 6d 5f 6c 65   ┆; out_op_int (op_pexit, param_le┆
0x0910c0…0910e0             6e 67 74 68 20 2b 20 31 20 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 70 72   ┆ngth + 1 ); end else begin (* pr┆
0x0910e0…091100             6f 63 65 73 73 20 2a 29 0a 0a 74 72 61 70 5f 63 6f 64 65 20 3a 3d 20 66 61 6c 73 65 3b 20 28 2a   ┆ocess *)  trap_code := false; (*┆
0x091100…091120             20 64 6f 20 6e 6f 74 20 67 65 6e 65 72 61 74 65 20 6d 65 61 73 75 72 65 6d 65 6e 74 20 63 6f 64   ┆ do not generate measurement cod┆
0x091120…091140             65 20 61 66 74 65 72 20 65 78 69 74 20 70 6f 69 6e 74 20 2a 29 0a 0a 0a 6f 75 74 5f 6e 6c 3b 20   ┆e after exit point *)   out_nl; ┆
0x091140…091160             20 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 65 78 69 74 20 29 3b 0a 0a 69 66 20 65 70 69 6c 6f   ┆ out_label( id_exit );  if epilo┆
0x091160…091180             67 5f 79 65 73 20 74 68 65 6e 20 63 6f 64 65 5f 65 78 69 74 3b 0a 0a 6f 75 74 5f 6e 6c 3b 20 20   ┆g_yes then code_exit;  out_nl;  ┆
0x091180…0911a0             6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 65 78 63 65 70 74 69 6f 6e 20 29 3b 0a 0a 63 6f 64 65   ┆out_label( id_exception );  code┆
0x0911a0…0911c0             5f 65 78 63 65 70 74 69 6f 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 65 70 69 6c 6f 67 20 6f 66 20 70   ┆_exception;  end; (* epilog of p┆
0x0911c0…0911e0             72 6f 63 65 73 73 20 2a 29 0a 0a 28 2a 20 20 64 65 66 69 6e 65 20 27 77 6f 72 6b 27 20 61 6e 64   ┆rocess *)  (*  define 'work' and┆
0x0911e0…091200             20 74 68 65 20 61 70 70 65 74 69 74 65 20 73 79 6d 62 6f 6c 73 20 6f 66 20 74 68 65 20 62 6c 6f   ┆ the appetite symbols of the blo┆
0x091200…091220 (38, 1, 7)  63 6b 3a 20 20 2a 29 0a 0a 6f 75 74 5f 64 65 66 28 20 69 64 5f 77 6f 72 6b 20 29 3b 20 20 6f 75   ┆ck:  *)  out_def( id_work );  ou┆
0x091220…091240             74 5f 69 6e 74 65 67 65 72 28 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 2b 20 76 61 72 5f 6c 65   ┆t_integer( param_length + var_le┆
0x091240…091260             6e 67 74 68 20 2d 20 31 20 29 3b 0a 0a 6f 75 74 5f 64 65 66 28 20 69 64 5f 61 70 70 73 74 61 74   ┆ngth - 1 );  out_def( id_appstat┆
0x091260…091280             20 29 3b 0a 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 76 61 72 5f 6c 65 6e 67 74 68 20 29 3b 0a 0a   ┆ ); out_integer( var_length );  ┆
0x091280…0912a0             6f 75 74 5f 64 65 66 28 20 69 64 5f 61 70 70 65 76 61 6c 20 29 3b 0a 6f 75 74 5f 69 6e 74 65 67   ┆out_def( id_appeval ); out_integ┆
0x0912a0…0912c0             65 72 28 20 63 2e 6d 61 78 5f 73 74 61 63 6b 5f 73 69 7a 65 20 29 3b 0a 0a 28 2a 20 20 70 72 69   ┆er( c.max_stack_size );  (*  pri┆
0x0912c0…0912e0             6e 74 20 61 20 6c 69 6e 65 20 69 6e 20 74 68 65 20 73 75 6d 6d 61 72 79 20 3a 20 20 2a 29 0a 0a   ┆nt a line in the summary :  *)  ┆
0x0912e0…091300             69 66 20 72 6f 75 6c 69 78 20 3c 3e 20 2d 31 20 74 68 65 6e 0a 70 61 72 61 6d 5f 6c 65 6e 67 74   ┆if roulix <> -1 then param_lengt┆
0x091300…091320             68 20 3a 3d 20 73 69 7a 65 5f 6f 66 5f 72 65 74 75 72 6e 5f 70 6f 69 6e 74 3b 20 28 2a 20 69 6e   ┆h := size_of_return_point; (* in┆
0x091320…091340             63 6c 75 64 65 20 72 6f 6f 6d 20 66 6f 72 20 64 69 73 70 6c 61 79 20 69 6e 20 74 68 65 20 61 70   ┆clude room for display in the ap┆
0x091340…091360             70 65 74 69 74 65 20 2a 29 0a 0a 77 69 74 68 20 64 65 73 63 72 20 64 6f 0a 64 65 66 61 75 6c 74   ┆petite *)  with descr do default┆
0x091360…091380             5f 61 70 70 65 74 69 74 65 20 3a 3d 20 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 20 2b 20   ┆_appetite := default_appetite + ┆
0x091380…0913a0             28 20 76 61 72 5f 6c 65 6e 67 74 68 20 2b 20 0a 20 20 63 2e 6d 61 78 5f 73 74 61 63 6b 5f 73 69   ┆( var_length +    c.max_stack_si┆
0x0913a0…0913c0             7a 65 20 2b 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 29 20 64 69 76 20 32 3b 20 20 28 2a 20 77   ┆ze + param_length ) div 2;  (* w┆
0x0913c0…0913e0             6f 72 64 73 20 21 21 20 2a 29 0a 0a 69 66 20 72 6f 75 6c 69 78 20 3d 20 2d 31 20 74 68 65 6e 20   ┆ords !! *)  if roulix = -1 then ┆
0x0913e0…091400             28 2a 20 70 72 6f 63 65 73 73 20 6c 65 76 65 6c 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 6f 75 74   ┆(* process level *) begin if out┆
0x091400…091420 (38, 1, 8)  65 72 6d 6f 73 74 5f 6c 65 76 65 6c 20 61 6e 64 20 28 65 6e 66 6f 72 63 65 64 5f 63 72 65 61 74   ┆ermost_level and (enforced_creat┆
0x091420…091440             65 5f 73 69 7a 65 20 3c 3e 20 30 29 20 74 68 65 6e 0a 69 20 3a 3d 20 65 6e 66 6f 72 63 65 64 5f   ┆e_size <> 0) then i := enforced_┆
0x091440…091460             63 72 65 61 74 65 5f 73 69 7a 65 0a 65 6c 73 65 0a 69 20 3a 3d 20 64 65 73 63 72 20 2e 20 64 65   ┆create_size else i := descr . de┆
0x091460…091480             66 61 75 6c 74 5f 61 70 70 65 74 69 74 65 3b 0a 65 6e 64 0a 65 6c 73 65 0a 69 20 3a 3d 20 30 3b   ┆fault_appetite; end else i := 0;┆
0x091480…0914a0             20 28 2a 20 73 75 70 70 72 65 73 73 20 70 72 69 6e 74 69 6e 67 20 6f 66 20 63 72 65 61 74 65 20   ┆ (* suppress printing of create ┆
0x0914a0…0914c0             73 69 7a 65 20 2a 29 0a 0a 6d 65 73 73 5f 73 75 6d 6d 61 72 79 5f 6c 69 6e 65 28 20 6e 61 6d 65   ┆size *)  mess_summary_line( name┆
0x0914c0…0914e0             2c 20 6c 69 6e 65 5f 6e 6f 2c 20 62 65 67 69 6e 5f 6c 69 6e 65 2c 20 69 6e 5f 6c 69 6e 65 5f 6e   ┆, line_no, begin_line, in_line_n┆
0x0914e0…091500             6f 2c 0a 20 76 61 72 5f 6c 65 6e 67 74 68 20 2b 20 63 2e 6d 61 78 5f 73 74 61 63 6b 5f 73 69 7a   ┆o,  var_length + c.max_stack_siz┆
0x091500…091520             65 20 2b 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 2c 20 64 79 6e 5f 79 65 73 5f 6f 72 5f 6e 6f 2c   ┆e + param_length, dyn_yes_or_no,┆
0x091520…091540             20 69 20 29 3b 0a 0a 0a 28 2a 20 20 67 65 6e 65 72 61 74 65 20 74 68 65 20 63 6f 6e 73 74 61 6e   ┆ i );   (*  generate the constan┆
0x091540…091560             74 20 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 3a 20 20 2a 29 0a 0a 66 69 6e   ┆t section of the block:  *)  fin┆
0x091560…091580             64 5f 63 6f 6e 73 74 61 6e 74 73 3b 0a 0a 28 2a 20 20 67 65 6e 65 72 61 74 65 20 74 68 65 20 6c   ┆d_constants;  (*  generate the l┆
0x091580…0915a0             69 6e 65 20 74 61 62 2e 20 68 65 61 64 65 72 20 3a 20 20 2a 29 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f   ┆ine tab. header :  *)  out_nl; o┆
0x0915a0…0915c0             75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 6c 69 6e 65 74 61 62 20 29 3b 0a 63 6f 64 65 5f 6c 69 6e   ┆ut_label( id_linetab ); code_lin┆
0x0915c0…0915e0             65 5f 74 61 62 5f 68 65 61 64 65 72 28 20 6e 61 6d 65 20 29 3b 0a 28 2a 20 6f 75 74 70 75 74 20   ┆e_tab_header( name ); (* output ┆
0x0915e0…091600             61 6e 20 65 6e 64 2d 6f 66 2d 62 6c 6f 63 6b 20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74   ┆an end-of-block *) out_nl; out_t┆
0x091600…091620 (38, 1, 9)  6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 20 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27 65 6e 64 20   ┆oken (zend);  out_comment ('end ┆
0x091620…091640             6f 66 20 62 6f 64 79 27 29 3b 0a 69 66 20 28 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 20 3c 3e 20   ┆of body'); if (hw_stack_size <> ┆
0x091640…091660             30 29 20 6f 72 20 28 63 2e 73 74 61 63 6b 5f 73 69 7a 65 20 3c 3e 20 30 29 20 74 68 65 6e 20 65   ┆0) or (c.stack_size <> 0) then e┆
0x091660…091680             76 61 6c 73 74 61 63 6b 5f 65 72 72 6f 72 3b 0a 0a 63 20 3a 3d 20 6f 6c 64 5f 63 3b 0a 0a 65 6e   ┆valstack_error;  c := old_c;  en┆
0x091680…0916a0             64 3b 20 28 2a 20 63 6c 6f 73 65 64 20 72 6f 75 74 69 6e 65 20 2a 29 0a 0a 69 66 20 6f 75 74 65   ┆d; (* closed routine *)  if oute┆
0x0916a0…0916c0             72 6d 6f 73 74 5f 6c 65 76 65 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 64   ┆rmost_level then begin out_nl; d┆
0x0916c0…0916e0             65 73 63 72 5f 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 73 6b 69 70 20 65 6e 64 62 6c 6f 63 6b   ┆escr_end; end;  (* skip endblock┆
0x0916e0…091700             2d 70 61 72 61 6d 65 74 65 72 73 20 2a 29 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 65 6e 64 62   ┆-parameters *) if token <> xendb┆
0x091700…091720             6c 6f 63 6b 20 74 68 65 6e 20 65 72 72 6f 72 20 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72   ┆lock then error (pass4code_error┆
0x091720…091740             29 3b 0a 69 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 20 3a 3d 20 69 6e 5f 69 6e 74 65   ┆); i := in_integer; i := in_inte┆
0x091740…091760             67 65 72 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 5f 62 6c   ┆ger; get_token;  end; (* find_bl┆
0x091760…091780             6f 63 6b 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 70 72 6f 67 72 61 6d   ┆ock *)    procedure find_program┆
0x091780…0917a0             3b 0a 0a 76 61 72 0a 70 2c 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 3a 20 69 6e 74 65 67 65 72   ┆;  var p, param_length : integer┆
0x0917a0…0917c0             3b 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 73 6b 69 70 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2d 64 65   ┆;  begin  (* skip environment-de┆
0x0917c0…0917e0             63 6c 61 72 61 74 69 6f 6e 73 20 2a 29 0a 77 68 69 6c 65 20 28 74 6f 6b 65 6e 20 3d 20 78 65 78   ┆clarations *) while (token = xex┆
0x0917e0…091800             74 70 72 6f 63 29 20 6f 72 20 28 74 6f 6b 65 6e 20 3d 20 78 65 78 74 66 75 6e 63 29 20 64 6f 0a   ┆tproc) or (token = xextfunc) do ┆
0x091800…091820 (38, 1, 10) 66 69 6e 64 5f 65 78 74 5f 72 6f 75 74 69 6e 65 3b 0a 0a 72 65 70 65 61 74 0a 0a 63 61 73 65 20   ┆find_ext_routine;  repeat  case ┆
0x091820…091840             74 6f 6b 65 6e 20 6f 66 0a 78 6d 6f 64 75 6c 65 3a 0a 62 65 67 69 6e 0a 69 6e 5f 69 64 65 6e 74   ┆token of xmodule: begin in_ident┆
0x091840…091860             69 66 69 65 72 20 28 64 65 73 63 72 2e 6e 61 6d 65 29 3b 0a 70 61 72 61 6d 5f 6c 65 6e 67 74 68   ┆ifier (descr.name); param_length┆
0x091860…091880             20 3a 3d 20 30 3b 0a 74 72 61 70 5f 63 6f 64 65 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 78   ┆ := 0; trap_code:= false; end; x┆
0x091880…0918a0             70 72 6f 63 65 73 73 3a 0a 62 65 67 69 6e 0a 28 2a 20 73 6b 69 70 3a 20 6f 66 66 73 65 74 20 2a   ┆process: begin (* skip: offset *┆
0x0918a0…0918c0             29 0a 70 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 6e 5f 69 64 65 6e 74 69 66 69 65 72   ┆) p := in_integer; in_identifier┆
0x0918c0…0918e0             20 28 64 65 73 63 72 2e 6e 61 6d 65 29 3b 0a 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 3a 3d 20 69   ┆ (descr.name); param_length := i┆
0x0918e0…091900             6e 5f 69 6e 74 65 67 65 72 3b 0a 74 72 61 70 5f 63 6f 64 65 20 3a 3d 20 6d 65 61 73 75 72 65 6d   ┆n_integer; trap_code := measurem┆
0x091900…091920             65 6e 74 5f 79 65 73 3b 0a 69 66 20 74 72 61 70 5f 63 6f 64 65 20 74 68 65 6e 20 69 6e 69 74 5f   ┆ent_yes; if trap_code then init_┆
0x091920…091940             74 72 61 70 5f 74 61 62 6c 65 3b 0a 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 20 28 70 61   ┆trap_table;  end; else error (pa┆
0x091940…091960             73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 28 2a 20 69 6e 70 75 74 20 61 6e   ┆ss4code_error); end; (* input an┆
0x091960…091980             64 20 73 74 6f 72 65 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 2a 29 0a 64 65   ┆d store the parameter list *) de┆
0x091980…0919a0             73 63 72 2e 6e 6f 5f 6f 66 5f 70 61 72 61 6d 73 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a   ┆scr.no_of_params := in_integer; ┆
0x0919a0…0919c0             69 66 20 64 65 73 63 72 2e 6e 6f 5f 6f 66 5f 70 61 72 61 6d 73 20 3e 20 64 65 73 63 72 5f 6d 61   ┆if descr.no_of_params > descr_ma┆
0x0919c0…0919e0             78 5f 70 61 72 61 6d 20 74 68 65 6e 0a 65 72 72 6f 72 20 28 70 61 72 61 6d 5f 6e 75 6d 62 65 72   ┆x_param then error (param_number┆
0x0919e0…091a00             29 3b 0a 66 6f 72 20 70 20 3a 3d 20 31 20 74 6f 20 64 65 73 63 72 2e 6e 6f 5f 6f 66 5f 70 61 72   ┆); for p := 1 to descr.no_of_par┆
0x091a00…091a20 (38, 1, 11) 61 6d 73 20 64 6f 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 69 66 20 74 6f 6b 65 6e   ┆ams do begin get_token; if token┆
0x091a20…091a40             20 3c 3e 20 78 70 61 72 61 6d 74 79 70 65 20 74 68 65 6e 20 65 72 72 6f 72 20 28 70 61 73 73 34   ┆ <> xparamtype then error (pass4┆
0x091a40…091a60             63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 77 69 74 68 20 64 65 73 63 72 2e 70 61 72 61 6d 20 5b 20   ┆code_error); with descr.param [ ┆
0x091a60…091a80             70 20 5d 20 64 6f 0a 62 65 67 69 6e 0a 6b 69 6e 64 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b   ┆p ] do begin kind := in_integer;┆
0x091a80…091aa0             0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a   ┆ size := in_integer; end; end;  ┆
0x091aa0…091ac0             77 69 74 68 20 64 65 73 63 72 20 64 6f 0a 62 65 67 69 6e 0a 65 6e 74 72 79 5f 70 6f 69 6e 74 20   ┆with descr do begin entry_point ┆
0x091ac0…091ae0             20 20 20 20 3a 3d 20 69 64 5f 65 6e 74 72 79 3b 0a 65 78 63 65 70 74 69 6f 6e 5f 70 6f 69 6e 74   ┆    := id_entry; exception_point┆
0x091ae0…091b00             20 3a 3d 20 69 64 5f 65 78 63 65 70 74 69 6f 6e 3b 0a 64 65 66 61 75 6c 74 5f 61 70 70 65 74 69   ┆ := id_exception; default_appeti┆
0x091b00…091b20             74 65 20 3a 3d 20 30 3b 0a 6c 61 73 74 5f 70 61 72 61 6d 5f 6f 66 66 73 65 74 20 20 20 20 20 20   ┆te := 0; last_param_offset      ┆
0x091b20…091b40             20 20 3a 3d 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 3b 0a 66 6f 72 20 70 20 3a 3d 20 20 31 20 74   ┆  := param_length; for p :=  1 t┆
0x091b40…091b60             6f 20 64 65 73 63 72 5f 66 72 65 65 5f 77 6f 72 64 73 20 64 6f 20 66 72 65 65 5f 77 6f 72 64 73   ┆o descr_free_words do free_words┆
0x091b60…091b80             5b 70 5d 20 3a 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 63 61 73 65 20   ┆[p] := 0; end;  get_token; case ┆
0x091b80…091ba0             74 6f 6b 65 6e 20 6f 66 0a 78 70 72 6f 63 3a 0a 64 65 73 63 72 2e 6b 69 6e 64 20 3a 3d 20 32 3b   ┆token of xproc: descr.kind := 2;┆
0x091ba0…091bc0             0a 78 66 75 6e 63 3a 0a 64 65 73 63 72 2e 6b 69 6e 64 20 3a 3d 20 33 3b 0a 65 6c 73 65 20 64 65   ┆ xfunc: descr.kind := 3; else de┆
0x091bc0…091be0             73 63 72 2e 6b 69 6e 64 20 3a 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 66 69 6e 64 5f 62 6c 6f 63 6b 20   ┆scr.kind := 1; end;  find_block ┆
0x091be0…091c00             28 74 72 75 65 2c 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 2c 20 64 65 73 63 72 2e 6e 61 6d 65 29   ┆(true, param_length, descr.name)┆
0x091c00…091c20 (38, 1, 12) 3b 0a 0a 75 6e 74 69 6c 20 74 6f 6b 65 6e 20 3d 20 78 65 6f 6d 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a   ┆;  until token = xeom;  out_nl; ┆
0x091c20…091c40             6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 5f   ┆out_token (zend);  end; (* find_┆
0x091c40…091c60             70 72 6f 67 72 61 6d 20 2a 29 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 73   ┆program *)     procedure  find_s┆
0x091c60…091c80             74 64 5f 63 61 6c 6c 20 28 76 61 72 20 76 3a 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a   ┆td_call (var v:varvalue_descr); ┆
0x091c80…091ca0             0a 76 61 72 0a 69 2c 20 6e 6f 2c 20 6c 69 6d 69 74 20 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 62 65   ┆ var i, no, limit : integer;  be┆
0x091ca0…091cc0             67 69 6e 0a 0a 6e 6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 69 66 20 28 20 6e 6f 20   ┆gin  no := in_integer;  if ( no ┆
0x091cc0…091ce0             3d 20 78 73 75 63 63 20 29 20 6f 72 20 28 20 6e 6f 20 3d 20 78 70 72 65 64 20 29 20 74 68 65 6e   ┆= xsucc ) or ( no = xpred ) then┆
0x091ce0…091d00             0a 6c 69 6d 69 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 66 69 6e 64 5f 61 72 67 6c   ┆ limit := in_integer;  find_argl┆
0x091d00…091d20             69 73 74 28 20 73 74 64 5f 63 61 6c 6c 2c 20 69 20 28 2a 20 73 69 7a 65 20 6f 66 20 66 75 6e 63   ┆ist( std_call, i (* size of func┆
0x091d20…091d40             74 69 6f 6e 20 72 65 73 75 6c 74 20 2a 29 29 3b 0a 0a 0a 0a 63 61 73 65 20 6e 6f 20 6f 66 0a 78   ┆tion result *));    case no of x┆
0x091d40…091d60             6f 72 64 2c 0a 78 63 68 72 3a 20 3b 0a 0a 78 6e 69 6c 2c 20 78 6e 69 6c 72 65 66 3a 0a 62 65 67   ┆ord, xchr: ;  xnil, xnilref: beg┆
0x091d60…091d80             69 6e 0a 28 2a 20 69 66 20 6e 69 6c 72 65 66 20 74 68 65 6e 20 73 6b 69 70 20 74 68 65 20 63 6f   ┆in (* if nilref then skip the co┆
0x091d80…091da0             75 6e 74 20 62 79 74 65 2c 20 69 2e 65 2e 20 69 6e 63 72 65 61 73 65 20 61 64 64 72 65 73 73 20   ┆unt byte, i.e. increase address ┆
0x091da0…091dc0             2a 29 0a 69 66 20 6e 6f 20 3d 20 78 6e 69 6c 72 65 66 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69   ┆*) if no = xnilref then out_op_i┆
0x091dc0…091de0             6e 74 28 20 6f 70 5f 75 61 64 68 77 2c 20 31 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20   ┆nt( op_uadhw, 1 );  out_opcode( ┆
0x091de0…091e00             6f 70 5f 74 6e 69 6c 6c 20 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 20 73 74 64 2e 20   ┆op_tnill ); out_comment('  std. ┆
0x091e00…091e20 (38, 1, 13) 66 75 6e 63 74 69 6f 6e 20 3a 20 6e 69 6c 20 27 29 3b 0a 65 6e 64 3b 0a 0a 0a 78 73 75 63 63 2c   ┆function : nil '); end;   xsucc,┆
0x091e20…091e40             0a 78 70 72 65 64 3a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6e 6c 3b 20 20 6f 75 74 5f 6e 6c 3b 0a   ┆ xpred: begin  out_nl;  out_nl; ┆
0x091e40…091e60             6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64   ┆out_token (zbegin); out_p_id (id┆
0x091e60…091e80             5f 73 75 63 70 72 65 64 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b   ┆_sucpred); out_token (zendlist);┆
0x091e80…091ea0             0a 0a 69 66 20 6e 6f 20 3d 20 78 73 75 63 63 20 74 68 65 6e 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74   ┆  if no = xsucc then out_comment┆
0x091ea0…091ec0             28 20 27 20 20 20 73 74 61 72 74 20 6f 66 20 73 74 64 2e 20 66 75 6e 63 74 69 6f 6e 20 3a 20 20   ┆( '   start of std. function :  ┆
0x091ec0…091ee0             73 75 63 63 20 2e 20 27 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20   ┆succ . ' ) else out_comment( '  ┆
0x091ee0…091f00             20 73 74 61 72 74 20 6f 66 20 73 74 64 2e 20 66 75 6e 63 74 69 6f 6e 20 3a 20 20 70 72 65 64 20   ┆ start of std. function :  pred ┆
0x091f00…091f20             2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a   ┆. ' );  out_opcode( op_revpw ); ┆
0x091f20…091f40             0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61   ┆ out_opcode( op_rechw ); out_sta┆
0x091f40…091f60             72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6c 69 6d 69 74 20 29 3b   ┆rt_param;  out_integer( limit );┆
0x091f60…091f80             0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 65 71 20 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69   ┆  out_opcode( op_eq );  out_op_i┆
0x091f80…091fa0             64 20 20 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 73 75 63 70 72 65 64 29 3b 0a 0a 69 66 20 6e   ┆d  (op_jmzeq, id_sucpred);  if n┆
0x091fa0…091fc0             6f 20 3d 20 78 73 75 63 63 20 74 68 65 6e 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65 72 28   ┆o = xsucc then code_exc_trigger(┆
0x091fc0…091fe0             20 63 5f 65 78 63 5f 73 75 63 63 29 0a 65 6c 73 65 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67   ┆ c_exc_succ) else code_exc_trigg┆
0x091fe0…092000             65 72 28 20 63 5f 65 78 63 5f 70 72 65 64 29 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f   ┆er( c_exc_pred);  out_label (id_┆
0x092000…092020 (38, 1, 14) 73 75 63 70 72 65 64 29 3b 0a 69 66 20 6e 6f 20 3d 20 78 73 75 63 63 20 74 68 65 6e 0a 6f 75 74   ┆sucpred); if no = xsucc then out┆
0x092020…092040             5f 6f 70 5f 69 6e 74 20 28 6f 70 5f 75 61 64 68 77 2c 20 31 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f   ┆_op_int (op_uadhw, 1) else out_o┆
0x092040…092060             70 5f 69 6e 74 20 28 6f 70 5f 75 61 64 68 77 2c 2d 31 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75   ┆p_int (op_uadhw,-1);  out_nl; ou┆
0x092060…092080             74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28   ┆t_token (zend); end; else error(┆
0x092080…0920a0             70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 28 2a 20 74 68 65 20 76 61   ┆pass4code_error); end; (* the va┆
0x0920a0…0920c0             6c 75 65 20 64 65 73 63 72 69 70 74 6f 72 20 76 20 6d 75 73 74 20 64 65 73 63 72 69 62 65 20 74   ┆lue descriptor v must describe t┆
0x0920c0…0920e0             68 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 73 75 6c 74 2c 20 69 2e 65 2e 20 2a 29 0a 77 69 74 68   ┆he function result, i.e. *) with┆
0x0920e0…092100             20 76 20 64 6f 0a 62 65 67 69 6e 0a 6b 69 6e 64 20 3a 3d 20 31 3b 20 73 69 7a 65 20 3a 3d 20 69   ┆ v do begin kind := 1; size := i┆
0x092100…092120             20 28 2a 20 73 69 7a 65 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 72 65 73 75 6c 74 20 61 73 20 73   ┆ (* size of function result as s┆
0x092120…092140             65 74 20 62 79 20 66 69 6e 64 20 61 72 67 6c 69 73 74 20 2a 29 0a 65 6e 64 3b 0a 0a 65 6e 64 20   ┆et by find arglist *) end;  end ┆
0x092140…092160             28 2a 20 20 66 69 6e 64 5f 73 74 64 5f 63 61 6c 6c 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64   ┆(*  find_std_call  *);    proced┆
0x092160…092180             75 72 65 20 20 66 69 6e 64 5f 61 72 67 6c 69 73 74 28 20 63 61 6c 6c 5f 6d 6f 64 65 20 3a 20 63   ┆ure  find_arglist( call_mode : c┆
0x092180…0921a0             61 6c 6c 6d 6f 64 65 73 3b 20 76 61 72 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72   ┆allmodes; var size_of_function_r┆
0x0921a0…0921c0             65 73 75 6c 74 20 3a 20 69 6e 74 65 67 65 72 20 29 3b 0a 28 2a 20 6e 6f 74 65 3a 20 74 6f 6b 65   ┆esult : integer ); (* note: toke┆
0x0921c0…0921e0             6e 20 75 6e 64 65 66 20 61 74 20 65 6e 74 72 79 20 21 21 20 2a 29 0a 0a 76 61 72 0a 74 79 70 65   ┆n undef at entry !! *)  var type┆
0x0921e0…092200             5f 6c 2c 20 73 69 7a 65 5f 6c 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 5f 72 20 3a 20 76 61 72 76   ┆_l, size_l : integer; v_r : varv┆
0x092200…092220 (38, 1, 15) 61 6c 75 65 5f 64 65 73 63 72 3b 0a 76 5f 6c 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 20   ┆alue_descr; v_l : varaddr_descr ┆
0x092220…092240             3b 0a 65 6e 64 5f 61 72 67 6c 69 73 74 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 62 65 67 69 6e 0a   ┆; end_arglist : boolean;  begin ┆
0x092240…092260             0a 65 6e 64 5f 61 72 67 6c 69 73 74 20 3a 3d 20 66 61 6c 73 65 3b 0a 67 65 74 5f 74 6f 6b 65 6e   ┆ end_arglist := false; get_token┆
0x092260…092280             3b 0a 72 65 70 65 61 74 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 76 61 6c 75 65 70 61 72   ┆; repeat case token of xvaluepar┆
0x092280…0922a0             61 6d 3a 0a 62 65 67 69 6e 0a 0a 74 79 70 65 5f 6c 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b   ┆am: begin  type_l := in_integer;┆
0x0922a0…0922c0             0a 0a 69 66 20 28 20 74 79 70 65 5f 6c 20 3d 20 61 64 64 72 5f 74 79 70 20 29 20 6f 72 20 28 20   ┆  if ( type_l = addr_typ ) or ( ┆
0x0922c0…0922e0             74 79 70 65 5f 6c 20 3d 20 73 65 74 5f 74 79 70 20 29 20 74 68 65 6e 0a 73 69 7a 65 5f 6c 20 3a   ┆type_l = set_typ ) then size_l :┆
0x0922e0…092300             3d 20 69 6e 5f 69 6e 74 65 67 65 72 0a 65 6c 73 65 0a 69 66 20 74 79 70 65 5f 6c 20 3d 20 70 6f   ┆= in_integer else if type_l = po┆
0x092300…092320             69 6e 74 5f 74 79 70 20 74 68 65 6e 20 20 73 69 7a 65 5f 6c 20 3a 3d 20 34 20 65 6c 73 65 20 73   ┆int_typ then  size_l := 4 else s┆
0x092320…092340             69 7a 65 5f 6c 20 3a 3d 20 32 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70   ┆ize_l := 2;  get_token; find_exp┆
0x092340…092360             72 73 28 20 76 5f 72 29 3b 0a 0a 69 66 20 76 5f 72 2e 6b 69 6e 64 20 3d 20 32 20 74 68 65 6e 0a   ┆rs( v_r);  if v_r.kind = 2 then ┆
0x092360…092380             62 65 67 69 6e 0a 0a 69 66 20 74 79 70 65 5f 6c 20 3c 3e 20 61 64 64 72 5f 74 79 70 20 74 68 65   ┆begin  if type_l <> addr_typ the┆
0x092380…0923a0             6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 69 66 20 6f 64   ┆n error(pass4code_error);  if od┆
0x0923a0…0923c0             64 28 20 73 69 7a 65 5f 6c 20 29 20 74 68 65 6e 20 73 69 7a 65 5f 6c 20 3a 3d 20 73 69 7a 65 5f   ┆d( size_l ) then size_l := size_┆
0x0923c0…0923e0             6c 20 2b 20 31 3b 0a 0a 69 66 20 73 69 7a 65 5f 6c 20 3c 3d 20 34 20 74 68 65 6e 0a 6f 75 74 5f   ┆l + 1;  if size_l <= 4 then out_┆
0x0923e0…092400             6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 5b 73 2c 63 6f 6e 76 5f 74 79 70 65 5b 73 69 7a 65 5f 6c   ┆op_int(op_rev[s,conv_type[size_l┆
0x092400…092420 (39, 0, 1)  5d 5d 2c 30 29 0a 0a 65 6c 73 65 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20   ┆]],0)  else  begin  out_opcode( ┆
0x092420…092440             6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75   ┆op_rechw ); out_start_param;  ou┆
0x092440…092460             74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 5f 6c 20 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63   ┆t_integer( size_l ); out_specopc┆
0x092460…092480             6f 64 65 28 6f 70 5f 72 65 76 73 6d 2c 73 69 7a 65 5f 6c 29 3b 0a 0a 65 6e 64 3b 0a 0a 65 6e 64   ┆ode(op_revsm,size_l);  end;  end┆
0x092480…0924a0             0a 0a 65 6c 73 65 0a 69 66 20 74 79 70 65 5f 6c 20 3d 20 73 65 74 5f 74 79 70 20 74 68 65 6e 0a   ┆  else if type_l = set_typ then ┆
0x0924a0…0924c0             62 65 67 69 6e 0a 0a 69 66 20 76 5f 72 2e 73 69 7a 65 20 3c 3e 20 28 20 73 69 7a 65 5f 6c 20 2b   ┆begin  if v_r.size <> ( size_l +┆
0x0924c0…0924e0             20 32 20 29 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 66 20 76 5f 72 2e 73 69 7a 65 20 3e 20 30   ┆ 2 ) then begin  if v_r.size > 0┆
0x0924e0…092500             20 74 68 65 6e 0a 63 6f 64 65 5f 73 74 61 74 5f 74 6f 5f 64 79 6e 28 20 76 5f 72 2e 73 69 7a 65   ┆ then code_stat_to_dyn( v_r.size┆
0x092500…092520             20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74   ┆ );  out_opcode( op_rechw ); out┆
0x092520…092540             5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65   ┆_start_param;  out_integer( size┆
0x092540…092560             5f 6c 20 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 61 64 2c 73 69   ┆_l ); out_specopcode(op_setad,si┆
0x092560…092580             7a 65 5f 6c 20 2b 20 32 29 3b 0a 0a 65 6e 64 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28   ┆ze_l + 2);  end; out_specopcode(┆
0x092580…0925a0             6f 70 5f 73 74 6e 68 62 2c 2d 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 0a 0a 65 6e 64 0a 0a 65 6c   ┆op_stnhb,-word_length);  end  el┆
0x0925a0…0925c0             73 65 0a 69 66 20 76 5f 72 2e 73 69 7a 65 20 3c 3e 20 73 69 7a 65 5f 6c 20 74 68 65 6e 0a 65 72   ┆se if v_r.size <> size_l then er┆
0x0925c0…0925e0             72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 78 76 61 72 70   ┆ror(pass4code_error); end; xvarp┆
0x0925e0…092600             61 72 61 6d 3a 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 76 61 72 61   ┆aram: begin get_token; find_vara┆
0x092600…092620 (39, 0, 2)  64 64 72 20 28 76 5f 6c 29 3b 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 20 28 76 5f 6c 2c 20 74 72   ┆ddr (v_l); load_address (v_l, tr┆
0x092620…092640             75 65 29 3b 0a 65 6e 64 3b 0a 0a 78 72 65 74 75 72 6e 70 61 72 61 6d 3a 20 28 2a 20 72 65 73 65   ┆ue); end;  xreturnparam: (* rese┆
0x092640…092660             72 76 65 20 73 74 61 63 6b 20 73 70 61 63 65 20 66 6f 72 20 66 75 6e 63 74 69 6f 6e 20 72 65 73   ┆rve stack space for function res┆
0x092660…092680             75 6c 74 20 2a 29 0a 62 65 67 69 6e 0a 73 69 7a 65 5f 6c 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65   ┆ult *) begin size_l := in_intege┆
0x092680…0926a0             72 3b 0a 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3a 3d 20 73 69   ┆r; size_of_function_result := si┆
0x0926a0…0926c0             7a 65 5f 6c 3b 20 28 2a 20 72 65 6d 65 6d 62 65 72 20 73 69 7a 65 20 69 6e 20 63 61 73 65 20 6f   ┆ze_l; (* remember size in case o┆
0x0926c0…0926e0             66 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 73 20 2a 29 0a 69 66 20 28 63 61 6c 6c 5f 6d 6f 64   ┆f process params *) if (call_mod┆
0x0926e0…092700             65 20 3c 3e 20 6f 70 65 6e 5f 63 61 6c 6c 29 20 61 6e 64 20 28 63 61 6c 6c 5f 6d 6f 64 65 20 3c   ┆e <> open_call) and (call_mode <┆
0x092700…092720             3e 20 73 74 64 5f 63 61 6c 6c 29 20 74 68 65 6e 0a 28 2a 20 63 6c 6f 73 65 64 20 72 6f 75 74 69   ┆> std_call) then (* closed routi┆
0x092720…092740             6e 65 20 2a 29 0a 62 65 67 69 6e 0a 69 66 20 73 69 7a 65 5f 6c 20 3d 20 32 20 74 68 65 6e 0a 6f   ┆ne *) begin if size_l = 2 then o┆
0x092740…092760             75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 30 20 29 20 28 2a 20 61 73 73 75   ┆ut_op_int( op_rechw, 0 ) (* assu┆
0x092760…092780             72 65 20 6c 65 66 74 20 62 79 74 65 20 3d 20 30 20 69 6e 20 63 61 73 65 20 6f 66 20 62 79 74 65   ┆re left byte = 0 in case of byte┆
0x092780…0927a0             20 72 65 73 75 6c 74 20 21 21 20 2a 29 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f   ┆ result !! *) else begin out_op_┆
0x0927a0…0927c0             69 6e 74 28 6f 70 5f 72 65 63 68 64 20 28 2a 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 73   ┆int(op_rechd (* the function res┆
0x0927c0…0927e0             75 6c 74 20 6d 75 73 74 20 62 65 20 61 6e 20 61 64 64 72 65 73 73 20 2a 29 2c 20 63 6f 6e 73 74   ┆ult must be an address *), const┆
0x0927e0…092800             5f 6e 69 6c 5f 76 61 72 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 0a 6f 75 74 5f   ┆_nil_var); out_start_param; out_┆
0x092800…092820 (39, 0, 3)  69 6e 74 65 67 65 72 28 30 29 3b 0a 65 6e 64 3b 0a 73 69 7a 65 5f 6c 20 3a 3d 20 30 3b 20 28 2a   ┆integer(0); end; size_l := 0; (*┆
0x092820…092840             20 63 6f 6e 74 65 78 74 20 65 76 61 6c 20 28 32 20 6f 72 20 34 29 20 68 61 73 20 62 65 65 6e 20   ┆ context eval (2 or 4) has been ┆
0x092840…092860             64 6f 6e 65 20 2a 29 0a 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 72 6f 6f 6d 20 66 6f 72   ┆done *)  out_comment( ' room for┆
0x092860…092880             20 66 75 6e 63 74 69 6f 6e 20 72 65 73 75 6c 74 20 27 20 29 3b 0a 0a 28 2a 20 73 74 64 20 72 6f   ┆ function result ' );  (* std ro┆
0x092880…0928a0             75 74 69 6e 65 73 20 61 72 65 20 6a 75 73 74 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 20 69 6e   ┆utines are just a sequence of in┆
0x0928a0…0928c0             73 74 72 75 63 74 69 6f 6e 73 2c 20 74 68 65 72 65 66 6f 72 65 20 74 68 65 0a 6d 6f 76 65 6d 65   ┆structions, therefore the moveme┆
0x0928c0…0928e0             6e 74 73 20 6f 6e 20 74 68 65 20 65 76 61 6c 75 61 74 69 6f 6e 20 73 74 61 63 6b 20 69 73 20 6d   ┆nts on the evaluation stack is m┆
0x0928e0…092900             61 64 65 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 63 6f 64 65 0a 67 65 6e 65 72 61 74 69   ┆ade as part of the code generati┆
0x092900…092920             6f 6e 2c 20 61 6e 64 20 61 20 63 61 6c 6c 20 6f 66 20 63 6f 6e 74 65 78 74 5f 65 76 61 6c 20 69   ┆on, and a call of context_eval i┆
0x092920…092940             73 20 6e 6f 74 20 6e 65 65 64 65 64 20 2a 29 0a 0a 28 2a 66 6f 72 20 20 6f 70 65 6e 20 72 6f 75   ┆s not needed *)  (*for  open rou┆
0x092940…092960             74 69 6e 65 73 20 73 74 61 63 6b 6d 6f 76 65 6d 65 6e 74 20 69 73 20 74 61 6b 65 6e 20 63 61 72   ┆tines stackmovement is taken car┆
0x092960…092980             65 20 6f 66 20 62 79 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 20 61 66 74 65 72 20 20 63 61   ┆e of by code_call_proc after  ca┆
0x092980…0929a0             6c 6c 20 6f 66 20 6f 70 65 6e 72 6f 75 74 69 6e 65 20 2a 29 0a 63 6f 6e 74 65 78 74 5f 65 76 61   ┆ll of openroutine *) context_eva┆
0x0929a0…0929c0             6c 28 20 73 69 7a 65 5f 6c 20 29 3b 0a 65 6e 64 3b 20 28 2a 20 69 66 20 63 6c 6f 73 65 64 20 72   ┆l( size_l ); end; (* if closed r┆
0x0929c0…0929e0             6f 75 74 69 6e 65 20 2a 29 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 0a 0a 0a 65 6c 73 65   ┆outine *) get_token; end;   else┆
0x0929e0…092a00             20 65 6e 64 5f 61 72 67 6c 69 73 74 20 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 75 6e 74 69 6c   ┆ end_arglist := true; end; until┆
0x092a00…092a20 (39, 0, 4)  20 65 6e 64 5f 61 72 67 6c 69 73 74 3b 0a 0a 65 6e 64 20 20 28 2a 20 66 69 6e 64 5f 61 72 67 6c   ┆ end_arglist;  end  (* find_argl┆
0x092a20…092a40             69 73 74 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 77 68 69 6c 65   ┆ist *);    procedure  find_while┆
0x092a40…092a60             3b 0a 0a 76 61 72 20 20 76 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69   ┆;  var  v: varvalue_descr;  begi┆
0x092a60…092a80             6e 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f   ┆n  out_nl; out_token (zbegin); o┆
0x092a80…092aa0             75 74 5f 70 5f 69 64 20 28 69 64 5f 77 68 72 65 70 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64   ┆ut_p_id (id_whrep); out_p_id (id┆
0x092aa0…092ac0             5f 77 68 65 78 69 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a   ┆_whexit); out_token (zendlist); ┆
0x092ac0…092ae0             6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 74 61 72 74 20 6f 66 20 77 68 69 6c 65 5f   ┆out_comment( '   start of while_┆
0x092ae0…092b00             73 74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 77   ┆statement. ' );  out_label( id_w┆
0x092b00…092b20             68 72 65 70 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 28 20 76   ┆hrep );  get_token; find_expr( v┆
0x092b20…092b40             29 3b 0a 69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 61 66 74 65 72 5f   ┆); if operand_situation = after_┆
0x092b40…092b60             73 68 6f 72 74 5f 63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 70 74 69 6d 69   ┆short_const then begin (* optimi┆
0x092b60…092b80             7a 65 20 6f 6e 20 27 77 68 69 6c 65 20 74 72 75 65 27 20 2a 29 0a 69 66 20 76 2e 76 61 6c 20 3d   ┆ze on 'while true' *) if v.val =┆
0x092b80…092ba0             20 76 61 6c 75 65 5f 66 61 6c 73 65 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f   ┆ value_false then out_op_id (op_┆
0x092ba0…092bc0             6a 6d 70 72 77 2c 20 69 64 5f 77 68 65 78 69 74 29 3b 20 28 2a 20 73 6b 69 70 20 6f 6e 3a 20 27   ┆jmprw, id_whexit); (* skip on: '┆
0x092bc0…092be0             77 68 69 6c 65 20 66 61 6c 73 65 27 20 2a 29 0a 28 2a 20 64 6f 6e 27 74 20 74 65 73 74 20 6f 6e   ┆while false' *) (* don't test on┆
0x092be0…092c00             3a 20 27 77 68 69 6c 65 20 74 72 75 65 27 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 6f 75 74 5f 6f   ┆: 'while true' *) end else out_o┆
0x092c00…092c20 (39, 0, 5)  70 5f 69 64 20 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 77 68 65 78 69 74 29 3b 0a 6f 75 74 5f   ┆p_id (op_jmzeq, id_whexit); out_┆
0x092c20…092c40             63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 78 69 74 20 66 72 6f 6d 20 77 68 69 6c 65 5f 73 74 61   ┆comment( '   exit from while_sta┆
0x092c40…092c60             74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 77 68 69 6c 65   ┆tement. ' );  skip_token (xwhile┆
0x092c60…092c80             65 78 70 72 29 3b 0a 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 73 6b 69 70 5f 74 6f 6b 65   ┆expr); find_statement; skip_toke┆
0x092c80…092ca0             6e 20 28 78 65 6e 64 77 68 69 6c 65 29 3b 0a 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f 6a 6d   ┆n (xendwhile);  out_op_id (op_jm┆
0x092ca0…092cc0             70 72 77 2c 20 69 64 5f 77 68 72 65 70 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 77 68   ┆prw, id_whrep); out_label (id_wh┆
0x092cc0…092ce0             65 78 69 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b   ┆exit); out_nl; out_token (zend);┆
0x092ce0…092d00             0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 77 68 69 6c 65 5f 73   ┆ out_comment( '   end of while_s┆
0x092d00…092d20             74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 0a 65 6e 64 20 20 28 2a 20 66 69 6e 64 5f 77 68   ┆tatement. ' );   end  (* find_wh┆
0x092d20…092d40             69 6c 65 20 2a 29 20 3b 0a 0a 0a 01 45 20 31 0a 74 75 61 74 69 6f 6e 20 3d 20 61 66 74 65 72 5f   ┆ile *) ;    E 1 tuation = after_┆
0x092d40…092d60             73 68 6f 72 74 5f 63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 70 74 69 6d 69   ┆short_const then begin (* optimi┆
0x092d60…092d80             7a 65 20 6f 6e 20 27 77 68 69 6c 65 20 74 72 75 65 27 20 2a 29 0a 69 66 20 76 2e 76 61 6c 20 3d   ┆ze on 'while true' *) if v.val =┆
0x092d80…092da0             20 76 61 6c 75 65 5f 66 61 6c 73 65 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f   ┆ value_false then out_op_id (op_┆
0x092da0…092dc0             6a 6d 70 72 77 2c 20 69 64 5f 77 68 65 78 69 74 29 3b 20 28 2a 20 73 6b 69 70 20 6f 6e 3a 20 27   ┆jmprw, id_whexit); (* skip on: '┆
0x092dc0…092de0             77 68 69 6c 65 20 66 61 6c 73 65 27 20 2a 29 0a 28 2a 20 64 6f 6e 27 74 20 74 65 73 74 20 6f 6e   ┆while false' *) (* don't test on┆
0x092de0…092e00             3a 20 27 77 68 69 6c 65 20 74 72 75 65 27 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 6f 75 74 5f 6f   ┆: 'while true' *) end else out_o┆
0x092e00…092e20 (39, 0, 6)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 73 2e 70 35 65 78 69 74 2e 70 61 73 00 00   ┆../sw2103/src/rtp/s.p5exit.pas  ┆
0x092e20…092e40             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x092e60…092e80             00 00 00 00 20 20 20 34 34 34 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       444     255     146      ┆
0x092e80…092ea0             20 20 37 30 32 30 30 20 20 35 32 36 36 37 37 30 32 36 35 20 20 31 31 31 32 32 00 20 00 00 00 00   ┆  70200  5266770265  11122      ┆
0x092ea0…092ec0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x093000…093020 (39, 0, 7)  01 68 35 36 31 37 31 0a 01 73 20 30 31 35 30 30 2f 30 30 30 30 30 2f 30 30 30 30 30 0a 01 64 20   ┆ h56171  s 01500/00000/00000  d ┆
0x093020…093040             44 20 31 2e 31 20 39 32 2f 31 30 2f 31 34 20 31 31 3a 30 34 3a 33 37 20 73 77 32 31 30 33 20 31   ┆D 1.1 92/10/14 11:04:37 sw2103 1┆
0x093040…093060             20 30 0a 01 63 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2c 20 73 6f 75 72 63 65   ┆ 0  c SCCS and UNIX used, source┆
0x093060…093080             20 66 69 6c 65 20 38 39 2e 30 36 2e 32 39 2e 0a 01 65 0a 01 75 0a 01 55 0a 01 74 0a 01 54 0a 01   ┆ file 89.06.29.  e  u  U  t  T  ┆
0x093080…0930a0             49 20 31 0a 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆I 1  (*-------------------------┆
0x0930a0…0930c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0930c0…0930e0             2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39   ┆-------- -- -- (C) Copyrigth 199┆
0x0930e0…093100             32 20 20 44 41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 50 35 45 58 49 54 2e 50 41 53 0a 2d 2d 0a 2d 2d   ┆2  DANOSI -- -- P5EXIT.PAS -- --┆
0x093100…093120             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
                            […0x1…]
0x093140…093160             2d 0a 2d 2d 0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆- -- -- Revisions -- -----------┆
0x093160…093180             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20   ┆--------------------- --        ┆
0x093180…0931a0             38 39 2e 30 36 2e 32 39 20 20 45 42 4b 20 20 20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20   ┆89.06.29  EBK   Used in release ┆
0x0931a0…0931c0             31 2e 31 32 0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53   ┆1.12 --  1.1   92.10.14  HEJ   S┆
0x0931c0…0931e0             43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆CCS and UNIX used. -- ----------┆
0x0931e0…093200             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x093200…093220 (39, 0, 8)  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43   ┆------------------------- -- SCC┆
0x093220…093240             53 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d   ┆S information -- File   :  %P% -┆
0x093240…093260             2d 09 4d 6f 64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25   ┆- Module :  %M% -- Version:  %I%┆
0x093260…093280             0a 2d 2d 09 44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -- Date   :  %E%  %U% ---------┆
0x093280…0932a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x0932a0…0932c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 70   ┆-------------------------- *)  p┆
0x0932c0…0932e0             72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 6c 6f 63 6b 3b 0a 0a 76 61 72 0a 76 20 3a 20 76 61   ┆rocedure  find_lock;  var v : va┆
0x0932e0…093300             72 61 64 64 72 5f 64 65 73 63 72 3b 0a 6c 6f 63 6b 5f 6f 66 66 73 65 74 2c 20 73 69 7a 65 20 3a   ┆raddr_descr; lock_offset, size :┆
0x093300…093320             20 69 6e 74 65 67 65 72 3b 0a 6c 6f 63 6b 6d 65 73 73 74 61 74 3a 20 62 6f 6f 6c 65 61 6e 3b 0a   ┆ integer; lockmesstat: boolean; ┆
0x093320…093340             0a 62 65 67 69 6e 0a 6c 6f 63 6b 6d 65 73 73 74 61 74 3a 3d 20 74 6f 6b 65 6e 3d 78 6c 6f 63 6b   ┆ begin lockmesstat:= token=xlock┆
0x093340…093360             6d 65 73 73 74 61 74 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 20 28 27 73   ┆messtat; out_nl; out_comment ('s┆
0x093360…093380             74 61 72 74 20 6f 66 20 6c 6f 63 6b 20 73 74 61 74 65 6d 65 6e 74 27 29 3b 0a 67 65 74 5f 74 6f   ┆tart of lock statement'); get_to┆
0x093380…0933a0             6b 65 6e 3b 0a 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 29 3b 0a 6c 6f 61 64 5f 61 64 64   ┆ken;  find_varaddr( v); load_add┆
0x0933a0…0933c0             72 65 73 73 28 20 76 2c 20 74 72 75 65 29 3b 0a 77 68 69 6c 65 20 28 74 6f 6b 65 6e 20 3c 3e 20   ┆ress( v, true); while (token <> ┆
0x0933c0…0933e0             78 6c 6f 63 6b 76 61 72 29 20 61 6e 64 20 28 74 6f 6b 65 6e 20 3c 3e 20 78 6c 6f 63 6b 64 79 6e   ┆xlockvar) and (token <> xlockdyn┆
0x0933e0…093400             76 61 72 29 20 64 6f 0a 64 79 6e 5f 74 79 70 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 69   ┆var) do dyn_type_declaration;  i┆
0x093400…093420 (39, 0, 9)  66 20 74 6f 6b 65 6e 20 3d 20 78 6c 6f 63 6b 76 61 72 20 74 68 65 6e 0a 73 69 7a 65 20 3a 3d 20   ┆f token = xlockvar then size := ┆
0x093420…093440             69 6e 5f 69 6e 74 65 67 65 72 0a 65 6c 73 65 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20   ┆in_integer else get_niv_offset( ┆
0x093440…093460             76 20 29 3b 0a 6c 6f 63 6b 5f 6f 66 66 73 65 74 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a   ┆v ); lock_offset:= in_integer;  ┆
0x093460…093480             69 66 20 6c 6f 63 6b 6d 65 73 73 74 61 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 69 6e 69   ┆if lockmesstat then begin (* ini┆
0x093480…0934a0             74 69 61 6c 69 7a 65 20 61 6e 6f 6e 79 6d 6f 75 73 20 6f 62 6a 65 63 74 20 69 6e 20 63 6f 6e 6a   ┆tialize anonymous object in conj┆
0x0934a0…0934c0             75 6e 63 74 69 6f 6e 20 77 69 74 68 20 6c 6f 63 6b 6d 65 73 73 74 61 74 20 2a 29 0a 0a 6f 75 74   ┆unction with lockmesstat *)  out┆
0x0934c0…0934e0             5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69   ┆_nl; out_token (zbegin); out_p_i┆
0x0934e0…093500             64 20 28 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c   ┆d (id_size_ok); out_token (zendl┆
0x093500…093520             69 73 74 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 76 70 64 29 3b 0a 6f 75 74 5f   ┆ist); out_opcode(op_revpd); out_┆
0x093520…093540             63 6f 6d 6d 65 6e 74 28 27 20 20 20 6c 6f 63 6b 6d 65 73 5f 73 74 61 74 65 6d 65 6e 74 20 64 65   ┆comment('   lockmes_statement de┆
0x093540…093560             73 63 72 69 70 74 6f 72 2e 27 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 73 61   ┆scriptor.'); out_op_int(op_revsa┆
0x093560…093580             2c 20 31 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 76 73 64 2c 20 69 64 5f 6d 73 74   ┆, 1); out_op_id(op_revsd, id_mst┆
0x093580…0935a0             61 72 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 72 65 76 73 64 2c 20 69 64 5f 6d 66 69   ┆art); out_op_id(op_revsd, id_mfi┆
0x0935a0…0935c0             72 73 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 75 61 64 68 77 2c 20 31 29 3b 0a 6f   ┆rst); out_op_int(op_uadhw, 1); o┆
0x0935c0…0935e0             75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 6c 64 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b   ┆ut_op_int(op_stvld, lock_offset+┆
0x0935e0…093600             6c 6f 63 6b 6d 65 73 5f 66 69 72 73 74 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65   ┆lockmes_first_offset); out_comme┆
0x093600…093620 (39, 0, 10) 6e 74 28 27 20 73 61 76 65 20 28 66 69 72 73 74 2c 20 6c 61 73 74 2b 31 29 20 27 29 3b 0a 6f 75   ┆nt(' save (first, last+1) '); ou┆
0x093620…093640             74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 6c 77 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c   ┆t_op_int(op_revlw, lock_offset+l┆
0x093640…093660             6f 63 6b 6d 65 73 5f 66 69 72 73 74 5f 6f 66 66 73 65 74 29 3b 0a 69 66 20 74 6f 6b 65 6e 3d 78   ┆ockmes_first_offset); if token=x┆
0x093660…093680             6c 6f 63 6b 76 61 72 20 74 68 65 6e 20 28 2a 20 73 74 61 74 69 63 20 73 69 7a 65 64 20 74 79 70   ┆lockvar then (* static sized typ┆
0x093680…0936a0             65 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 75 61 64 68 77 2c 20 73 69 7a 65 29 0a   ┆e *) out_op_int(op_uadhw, size) ┆
0x0936a0…0936c0             65 6c 73 65 0a 62 65 67 69 6e 0a 77 69 74 68 20 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f   ┆else begin with v do out_op_rev_┆
0x0936c0…0936e0             5f 28 61 63 63 65 73 73 2c 20 77 6f 72 64 5f 74 79 70 2c 20 63 2e 6e 69 76 2d 6e 69 76 2c 20 6f   ┆_(access, word_typ, c.niv-niv, o┆
0x0936e0…093700             66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 75 61 64 64 29 3b 0a 65 6e 64   ┆ffset); out_opcode(op_uadd); end┆
0x093700…093720             3b 20 28 2a 20 64 79 6e 61 6d 69 63 20 73 69 7a 65 64 20 62 75 66 66 65 72 20 74 79 70 65 20 2a   ┆; (* dynamic sized buffer type *┆
0x093720…093740             29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 6c 77 2c 20 6c 6f 63 6b 5f 6f 66 66 73   ┆) out_op_int(op_stvlw, lock_offs┆
0x093740…093760             65 74 2b 6c 6f 63 6b 6d 65 73 5f 74 6f 70 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d   ┆et+lockmes_top_offset); out_comm┆
0x093760…093780             65 6e 74 28 27 20 73 61 76 65 20 63 6f 6d 70 75 74 65 64 20 74 6f 70 20 27 29 3b 0a 6f 75 74 5f   ┆ent(' save computed top '); out_┆
0x093780…0937a0             6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 6c 64 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c 6f 63   ┆op_int(op_revld, lock_offset+loc┆
0x0937a0…0937c0             6b 6d 65 73 5f 6c 61 73 74 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27   ┆kmes_last_offset); out_comment('┆
0x0937c0…0937e0             20 73 69 7a 65 20 74 65 73 74 2c 20 74 6f 70 20 69 6e 73 69 64 65 20 62 75 66 66 65 72 20 61 72   ┆ size test, top inside buffer ar┆
0x0937e0…093800             65 61 20 27 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 75 6c 74 29 3b 0a 6f 75 74 5f 6f   ┆ea '); out_opcode(op_ult); out_o┆
0x093800…093820 (39, 0, 11) 70 5f 69 64 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75 74 5f   ┆p_id(op_jmzeq, id_size_ok); out_┆
0x093820…093840             6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 6c 77 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c 6f 63   ┆op_int(op_revlw, lock_offset+loc┆
0x093840…093860             6b 6d 65 73 5f 74 6f 70 5f 6f 66 66 73 65 74 29 3b 20 28 2a 20 65 78 74 72 61 20 70 61 72 61 6d   ┆kmes_top_offset); (* extra param┆
0x093860…093880             65 74 65 72 20 66 6f 72 20 70 72 69 6e 74 20 65 78 63 65 70 74 69 6f 6e 20 2a 29 0a 63 6f 6e 74   ┆eter for print exception *) cont┆
0x093880…0938a0             65 78 74 5f 65 76 61 6c 28 2d 77 6f 72 64 5f 6c 65 6e 67 74 68 29 3b 20 28 2a 20 72 65 6d 6f 76   ┆ext_eval(-word_length); (* remov┆
0x0938a0…0938c0             65 20 66 72 6f 6d 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 63 6b 20 73 69 7a 65 20 63 6f 6d 70 75   ┆e from internal stack size compu┆
0x0938c0…0938e0             74 61 74 69 6f 6e 20 2a 29 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 3a 3d 20 68 77 5f 73 74 61   ┆tation *) hw_stack_size:= hw_sta┆
0x0938e0…093900             63 6b 5f 73 69 7a 65 2d 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 20 28 2a 20 61 64 6a 75 73 74 20 68   ┆ck_size-word_length; (* adjust h┆
0x093900…093920             77 5f 73 74 61 63 6b 20 2a 29 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65 72 28 63 5f 65 78   ┆w_stack *) code_exc_trigger(c_ex┆
0x093920…093940             63 5f 6c 6f 63 6b 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a   ┆c_lock); out_label(id_size_ok); ┆
0x093940…093960             6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 6c 77 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74   ┆out_op_int(op_revlw, lock_offset┆
0x093960…093980             2b 6c 6f 63 6b 6d 65 73 5f 74 6f 70 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74   ┆+lockmes_top_offset); out_op_int┆
0x093980…0939a0             28 6f 70 5f 75 61 64 68 77 2c 20 31 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63   ┆(op_uadhw, 1); out_op_int(op_rec┆
0x0939a0…0939c0             68 77 2c 20 32 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 75 64 69 76 29 3b 20 28 2a 20   ┆hw, 2); out_opcode(op_udiv); (* ┆
0x0939c0…0939e0             63 6f 6e 76 65 72 74 20 73 69 7a 65 20 66 72 6f 6d 20 62 79 74 65 73 20 74 6f 20 77 6f 72 64 73   ┆convert size from bytes to words┆
0x0939e0…093a00             20 2a 29 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 29 3b 0a 6f 75 74   ┆ *) out_nl; out_token(zend); out┆
0x093a00…093a20 (39, 0, 12) 5f 63 6f 6d 6d 65 6e 74 28 27 20 65 6e 64 20 6f 66 20 6c 6f 63 6b 6d 65 73 20 64 65 73 63 72 69   ┆_comment(' end of lockmes descri┆
0x093a20…093a40             70 74 6f 72 20 69 6e 69 74 20 27 29 3b 0a 65 6e 64 20 28 2a 20 6c 6f 63 6b 6d 65 73 73 74 61 74   ┆ptor init '); end (* lockmesstat┆
0x093a40…093a60             20 2a 29 0a 65 6c 73 65 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 6c 6f 63 6b 76 61 72 20 74 68 65   ┆ *) else if token = xlockvar the┆
0x093a60…093a80             6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20 28 73 69 7a 65 20 2b 20   ┆n out_op_int( op_rechw, (size + ┆
0x093a80…093aa0             31 29 20 64 69 76 20 32 20 29 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 64 79 6e 20 6c 6f 63   ┆1) div 2 ) else begin (* dyn loc┆
0x093aa0…093ac0             6b 20 76 61 72 20 2a 29 0a 77 69 74 68 20 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28   ┆k var *) with v do out_op_rev__(┆
0x093ac0…093ae0             61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74   ┆access,word_typ,c.niv-niv,offset┆
0x093ae0…093b00             29 3b 0a 28 2a 20 63 6f 6e 76 65 72 74 20 73 69 7a 65 20 66 72 6f 6d 20 62 79 74 65 73 20 74 6f   ┆); (* convert size from bytes to┆
0x093b00…093b20             20 77 6f 72 64 73 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 75 61 64 68 77 2c 20   ┆ words *) out_op_int( op_uadhw, ┆
0x093b20…093b40             31 20 29 3b 20 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 63 6f 6e 76 65 72 74 20 74 6f 20 77   ┆1 ); out_comment( ' convert to w┆
0x093b40…093b60             6f 72 64 73 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 20 6f 70 5f 72 65 63 68 77 2c 20   ┆ords ' ); out_op_int( op_rechw, ┆
0x093b60…093b80             32 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 64 69 76 20 29 3b 0a 65 6e 64 3b   ┆2 ); out_opcode( op_udiv ); end;┆
0x093b80…093ba0             20 28 2a 20 64 79 6e 20 6c 6f 63 6b 20 76 61 72 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 6e 74 20   ┆ (* dyn lock var *)  out_op_int ┆
0x093ba0…093bc0             28 6f 70 5f 6c 6c 6f 63 6b 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 63   ┆(op_llock, lock_offset); out_opc┆
0x093bc0…093be0             6f 64 65 28 6f 70 5f 72 65 76 70 64 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 6c 72   ┆ode(op_revpd); out_opcode (op_lr┆
0x093be0…093c00             65 73 65 29 3b 0a 6f 75 74 5f 72 65 73 74 61 20 28 30 29 3b 0a 69 66 20 6c 6f 63 6b 6d 65 73 73   ┆ese); out_resta (0); if lockmess┆
0x093c00…093c20 (39, 0, 13) 74 61 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76   ┆tat then begin out_op_int(op_rev┆
0x093c20…093c40             6c 61 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f   ┆la, lock_offset); out_op_int(op_┆
0x093c40…093c60             72 65 76 6c 77 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 2b 6c 6f 63 6b 6d 65 73 5f 66 69 72 73 74   ┆revlw, lock_offset+lockmes_first┆
0x093c60…093c80             5f 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 75 61 64 64 29 3b 20 0a   ┆_offset); out_opcode(op_uadd);  ┆
0x093c80…093ca0             6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 63 6f 6d 70 75 74 65 20 73 74 61 72 74 20 61 64 64 72   ┆out_comment(' compute start addr┆
0x093ca0…093cc0             65 73 73 20 6f 66 20 76 69 73 69 62 6c 65 20 62 75 66 66 65 72 20 70 61 72 74 20 27 29 3b 0a 6f   ┆ess of visible buffer part '); o┆
0x093cc0…093ce0             75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 6c 61 2c 20 6c 6f 63 6b 5f 6f 66 66 73 65 74 29   ┆ut_op_int(op_stvla, lock_offset)┆
0x093ce0…093d00             3b 0a 65 6e 64 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e   ┆; end;  get_token; find_statemen┆
0x093d00…093d20             74 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 6c 6f 63 6b 29 3b 0a 6f 75 74 5f 6f 70   ┆t; skip_token (xendlock); out_op┆
0x093d20…093d40             63 6f 64 65 28 6f 70 5f 6c 72 65 6c 65 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20   ┆code(op_lrele); out_comment( '  ┆
0x093d40…093d60             20 65 6e 64 20 6f 66 20 61 20 6c 6f 63 6b 5f 73 74 61 74 65 6d 65 6e 74 2e 27 20 29 3b 0a 0a 65   ┆ end of a lock_statement.' );  e┆
0x093d60…093d80             6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 6c 6f 63 6b 20 20 2a 29 3b 0a 0a 70 72 6f 63 65 64 75 72   ┆nd  (*  find_lock  *);  procedur┆
0x093d80…093da0             65 20 66 69 6e 64 5f 65 78 69 74 6c 6f 63 6b 3b 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e   ┆e find_exitlock; begin get_token┆
0x093da0…093dc0             3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 6c 72 65 6c 65 29 3b 0a 63 6f 6e 74 65 78 74 5f   ┆; out_opcode(op_lrele); context_┆
0x093dc0…093de0             65 76 61 6c 28 2d 6f 70 5f 74 61 62 6c 65 5b 6f 70 5f 6c 72 65 6c 65 5d 2e 6f 70 61 70 70 65 74   ┆eval(-op_table[op_lrele].opappet┆
0x093de0…093e00             69 74 65 29 3b 20 28 2a 20 75 6e 64 6f 20 73 74 61 63 6b 20 6d 6f 76 65 6d 65 6e 74 20 65 66 66   ┆ite); (* undo stack movement eff┆
0x093e00…093e20 (39, 0, 14) 65 63 74 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 2a 29 0a 69 66 20 74 6f 6b 65 6e   ┆ect of the operation *) if token┆
0x093e20…093e40             3d 78 63 68 61 6e 6e 65 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74   ┆=xchannel then begin out_comment┆
0x093e40…093e60             28 27 20 66 6f 72 63 65 64 20 65 78 69 74 20 6f 66 20 63 68 61 6e 6e 65 6c 20 73 74 61 74 65 6d   ┆(' forced exit of channel statem┆
0x093e60…093e80             65 6e 74 20 27 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 63 73 65 6c 6c 29 3b 0a 63 6f   ┆ent '); out_opcode(op_csell); co┆
0x093e80…093ea0             6e 74 65 78 74 5f 65 76 61 6c 28 2d 6f 70 5f 74 61 62 6c 65 5b 6f 70 5f 63 73 65 6c 6c 5d 2e 6f   ┆ntext_eval(-op_table[op_csell].o┆
0x093ea0…093ec0             70 61 70 70 65 74 69 74 65 29 3b 20 28 2a 20 75 6e 64 6f 20 73 74 61 63 6b 20 6d 6f 76 65 6d 65   ┆pappetite); (* undo stack moveme┆
0x093ec0…093ee0             6e 74 20 65 66 66 65 63 74 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 2a 29 0a 65 6e   ┆nt effect of the operation *) en┆
0x093ee0…093f00             64 0a 65 6c 73 65 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 66 6f 72 63 65 64 20 65 78 69 74   ┆d else out_comment(' forced exit┆
0x093f00…093f20             20 6f 66 20 6c 6f 63 6b 20 73 74 61 74 65 6d 65 6e 74 27 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b   ┆ of lock statement'); get_token;┆
0x093f20…093f40             0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 20 65 78 69 74 6c 6f 63 6b 2f 65 78 69 74 63 68 61 6e 6e   ┆ end; (* find exitlock/exitchann┆
0x093f40…093f60             65 6c 20 2a 29 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 77 69 74 68 3b 0a 0a   ┆el *)    procedure  find_with;  ┆
0x093f60…093f80             76 61 72 0a 76 2c 20 76 31 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 6f 66 66 73 65   ┆var v, v1 : varaddr_descr; offse┆
0x093f80…093fa0             74 2c 20 73 69 7a 65 2c 20 6e 65 77 5f 73 69 7a 65 3a 20 69 6e 74 65 67 65 72 3b 0a 73 74 61 74   ┆t, size, new_size: integer; stat┆
0x093fa0…093fc0             69 63 5f 6f 62 6a 65 63 74 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 0a 62 65 67 69 6e 0a 67 65 74 5f 74   ┆ic_object: boolean;  begin get_t┆
0x093fc0…093fe0             6f 6b 65 6e 3b 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 76 31 29 3b 0a 0a 69 66 20 74 6f 6b 65   ┆oken; find_varaddr(v1);  if toke┆
0x093fe0…094000             6e 3d 78 77 69 74 68 76 61 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 73 69 7a 65 3a 3d 20 69 6e 5f   ┆n=xwithvar then begin size:= in_┆
0x094000…094020 (39, 0, 15) 69 6e 74 65 67 65 72 3b 0a 73 74 61 74 69 63 5f 6f 62 6a 65 63 74 3a 3d 20 74 72 75 65 3b 0a 65   ┆integer; static_object:= true; e┆
0x094020…094040             6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 64 79 6e 61 6d 69 63 20 73 69 7a 65 64 20 6f   ┆nd else begin (* dynamic sized o┆
0x094040…094060             62 6a 65 63 74 20 2a 29 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 76 29 3b 0a 73 74 61 74   ┆bject *) get_niv_offset(v); stat┆
0x094060…094080             69 63 5f 6f 62 6a 65 63 74 3a 3d 20 66 61 6c 73 65 3b 0a 65 6e 64 3b 0a 6f 66 66 73 65 74 3a 3d   ┆ic_object:= false; end; offset:=┆
0x094080…0940a0             20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 69 66 20 6f 66 66 73   ┆ in_integer;  get_token; if offs┆
0x0940a0…0940c0             65 74 3c 3e 30 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 74 65 6d 70 6f 72 61 72 79 20 77 69   ┆et<>0 then begin (* temporary wi┆
0x0940c0…0940e0             74 68 20 61 64 64 72 65 73 73 20 6e 65 63 65 73 73 61 72 79 20 2a 29 0a 6c 6f 61 64 5f 61 64 64   ┆th address necessary *) load_add┆
0x0940e0…094100             72 65 73 73 28 76 31 2c 20 74 72 75 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74   ┆ress(v1, true); out_op_int(op_st┆
0x094100…094120             76 6c 61 2c 20 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73   ┆vla, offset); out_comment( '   s┆
0x094120…094140             61 76 65 20 74 68 65 20 77 69 74 68 5f 61 64 64 72 2e 20 27 20 29 3b 0a 65 6e 64 3b 0a 0a 77 68   ┆ave the with_addr. ' ); end;  wh┆
0x094140…094160             69 6c 65 20 28 74 6f 6b 65 6e 3c 3e 78 6e 6f 72 65 74 79 70 65 29 20 61 6e 64 20 28 74 6f 6b 65   ┆ile (token<>xnoretype) and (toke┆
0x094160…094180             6e 3c 3e 78 72 65 74 79 70 65 29 20 61 6e 64 20 28 74 6f 6b 65 6e 3c 3e 78 64 79 6e 72 65 74 79   ┆n<>xretype) and (token<>xdynrety┆
0x094180…0941a0             70 65 29 20 64 6f 0a 64 79 6e 5f 74 79 70 65 5f 64 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 0a 69 66   ┆pe) do dyn_type_declaration;  if┆
0x0941a0…0941c0             20 74 6f 6b 65 6e 3c 3e 78 6e 6f 72 65 74 79 70 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74   ┆ token<>xnoretype then begin out┆
0x0941c0…0941e0             5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69   ┆_nl; out_token (zbegin); out_p_i┆
0x0941e0…094200             64 20 28 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c   ┆d (id_size_ok); out_token (zendl┆
0x094200…094220 (39, 1, 1)  69 73 74 29 3b 0a 69 66 20 73 74 61 74 69 63 5f 6f 62 6a 65 63 74 20 74 68 65 6e 0a 6f 75 74 5f   ┆ist); if static_object then out_┆
0x094220…094240             6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 20 73 69 7a 65 29 0a 65 6c 73 65 0a 77 69 74 68   ┆op_int(op_rechw, size) else with┆
0x094240…094260             20 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 20 77 6f 72 64 5f   ┆ v do out_op_rev__(access, word_┆
0x094260…094280             74 79 70 2c 20 63 2e 6e 69 76 2d 6e 69 76 2c 20 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d   ┆typ, c.niv-niv, offset); out_com┆
0x094280…0942a0             6d 65 6e 74 28 27 20 63 6f 6d 70 61 72 65 20 73 69 7a 65 73 20 6f 66 20 74 79 70 65 73 2e 27 29   ┆ment(' compare sizes of types.')┆
0x0942a0…0942c0             3b 0a 69 66 20 74 6f 6b 65 6e 3d 78 72 65 74 79 70 65 20 74 68 65 6e 20 28 2a 20 73 74 61 74 69   ┆; if token=xretype then (* stati┆
0x0942c0…0942e0             63 20 72 65 74 79 70 69 6e 67 20 74 79 70 65 20 2a 29 0a 62 65 67 69 6e 0a 6e 65 77 5f 73 69 7a   ┆c retyping type *) begin new_siz┆
0x0942e0…094300             65 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65   ┆e:= in_integer; out_op_int(op_re┆
0x094300…094320             63 68 77 2c 20 6e 65 77 5f 73 69 7a 65 29 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 67   ┆chw, new_size); end else begin g┆
0x094320…094340             65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 76 31 29 3b 0a 77 69 74 68 20 76 31 20 64 6f 0a 6f 75   ┆et_niv_offset(v1); with v1 do ou┆
0x094340…094360             74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 20 77 6f 72 64 5f 74 79 70 2c 20 63 2e 6e   ┆t_op_rev__(access, word_typ, c.n┆
0x094360…094380             69 76 2d 6e 69 76 2c 20 6f 66 66 73 65 74 29 3b 0a 65 6e 64 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆iv-niv, offset); end; out_opcode┆
0x094380…0943a0             28 6f 70 5f 75 6c 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64   ┆(op_ult); out_op_id(op_jmzeq, id┆
0x0943a0…0943c0             5f 73 69 7a 65 5f 6f 6b 29 3b 0a 28 2a 20 6c 6f 61 64 20 73 69 7a 65 20 76 61 6c 75 65 73 20 66   ┆_size_ok); (* load size values f┆
0x0943c0…0943e0             6f 72 20 70 72 69 6e 74 20 65 78 63 65 70 74 69 6f 6e 20 2a 29 0a 69 66 20 73 74 61 74 69 63 5f   ┆or print exception *) if static_┆
0x0943e0…094400             6f 62 6a 65 63 74 20 74 68 65 6e 20 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77   ┆object then  out_op_int(op_rechw┆
0x094400…094420 (39, 1, 2)  2c 20 73 69 7a 65 29 0a 65 6c 73 65 0a 77 69 74 68 20 76 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65   ┆, size) else with v do out_op_re┆
0x094420…094440             76 5f 5f 28 61 63 63 65 73 73 2c 20 77 6f 72 64 5f 74 79 70 2c 20 63 2e 6e 69 76 2d 6e 69 76 2c   ┆v__(access, word_typ, c.niv-niv,┆
0x094440…094460             20 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 73 69 7a 65 20 6f 66 20   ┆ offset); out_comment(' size of ┆
0x094460…094480             77 69 74 68 20 6f 62 6a 65 63 74 2e 27 29 3b 0a 69 66 20 74 6f 6b 65 6e 3d 78 72 65 74 79 70 65   ┆with object.'); if token=xretype┆
0x094480…0944a0             20 74 68 65 6e 20 28 2a 20 73 74 61 74 69 63 20 72 65 74 79 70 69 6e 67 20 74 79 70 65 20 2a 29   ┆ then (* static retyping type *)┆
0x0944a0…0944c0             0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 63 68 77 2c 20 6e 65 77 5f 73 69 7a 65 29 0a   ┆ out_op_int(op_rechw, new_size) ┆
0x0944c0…0944e0             65 6c 73 65 0a 77 69 74 68 20 76 31 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63   ┆else with v1 do out_op_rev__(acc┆
0x0944e0…094500             65 73 73 2c 20 77 6f 72 64 5f 74 79 70 2c 20 63 2e 6e 69 76 2d 6e 69 76 2c 20 6f 66 66 73 65 74   ┆ess, word_typ, c.niv-niv, offset┆
0x094500…094520             29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 73 69 7a 65 20 6f 66 20 72 65 74 79 70 65 64   ┆); out_comment(' size of retyped┆
0x094520…094540             20 6f 62 6a 65 63 74 2e 27 29 3b 0a 63 6f 6e 74 65 78 74 5f 65 76 61 6c 28 2d 32 2a 77 6f 72 64   ┆ object.'); context_eval(-2*word┆
0x094540…094560             5f 6c 65 6e 67 74 68 29 3b 20 28 2a 20 61 64 6a 75 73 74 20 69 6e 74 65 72 6e 61 6c 20 73 74 61   ┆_length); (* adjust internal sta┆
0x094560…094580             63 6b 20 73 69 7a 65 2c 20 73 69 7a 65 20 76 61 6c 75 65 73 20 6e 6f 74 20 75 6e 73 74 61 63 6b   ┆ck size, size values not unstack┆
0x094580…0945a0             65 64 20 2a 29 0a 68 77 5f 73 74 61 63 6b 5f 73 69 7a 65 3a 3d 20 68 77 5f 73 74 61 63 6b 5f 73   ┆ed *) hw_stack_size:= hw_stack_s┆
0x0945a0…0945c0             69 7a 65 2d 32 2a 77 6f 72 64 5f 6c 65 6e 67 74 68 3b 20 28 2a 20 61 64 6a 75 73 74 20 68 77 5f   ┆ize-2*word_length; (* adjust hw_┆
0x0945c0…0945e0             73 74 61 63 6b 20 2a 29 0a 63 6f 64 65 5f 65 78 63 5f 74 72 69 67 67 65 72 28 63 5f 65 78 63 5f   ┆stack *) code_exc_trigger(c_exc_┆
0x0945e0…094600             77 69 74 68 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 73 69 7a 65 5f 6f 6b 29 3b 0a 6f 75   ┆with); out_label(id_size_ok); ou┆
0x094600…094620 (39, 1, 3)  74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 65 6e 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 74   ┆t_nl; out_token(zend); end; (* t┆
0x094620…094640             6f 6b 65 6e 3c 3e 6e 6f 72 65 74 79 70 65 20 2a 29 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69   ┆oken<>noretype *)  get_token; fi┆
0x094640…094660             6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 77 69   ┆nd_statement; skip_token (xendwi┆
0x094660…094680             74 68 29 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 77 69 74 68 20 20 2a 29 3b 0a 0a 70   ┆th);  end  (*  find_with  *);  p┆
0x094680…0946a0             72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 65 78 63 68 61 6e 67 65 3b 0a 0a 76 61 72 0a 74 79 70   ┆rocedure find_exchange;  var typ┆
0x0946a0…0946c0             65 5f 6f 2c 20 6b 65 79 2c 20 73 69 7a 65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 31 2c 20 76 32   ┆e_o, key, size : integer; v1, v2┆
0x0946c0…0946e0             20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b   ┆ : varaddr_descr;  begin get_tok┆
0x0946e0…094700             65 6e 3b 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 31 29 3b 0a 6c 6f 61 64 5f 61 64 64 72   ┆en; find_varaddr( v1); load_addr┆
0x094700…094720             65 73 73 20 28 76 31 2c 20 74 72 75 65 29 3b 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 6c 65 66   ┆ess (v1, true); if token <> xlef┆
0x094720…094740             74 20 74 68 65 6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a   ┆t then error(pass4code_error);  ┆
0x094740…094760             74 79 70 65 5f 6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 28 74 79 70 65 5f 6f   ┆type_o := in_integer; if (type_o┆
0x094760…094780             3c 3e 72 65 66 5f 74 79 70 29 20 61 6e 64 20 28 74 79 70 65 5f 6f 3c 3e 73 68 61 64 6f 77 5f 74   ┆<>ref_typ) and (type_o<>shadow_t┆
0x094780…0947a0             79 70 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b   ┆yp) then error(pass4code_error);┆
0x0947a0…0947c0             0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 32 29 3b 0a 6c   ┆ get_token; find_varaddr( v2); l┆
0x0947c0…0947e0             6f 61 64 5f 61 64 64 72 65 73 73 20 28 76 32 2c 20 74 72 75 65 29 3b 0a 73 6b 69 70 5f 74 6f 6b   ┆oad_address (v2, true); skip_tok┆
0x0947e0…094800             65 6e 20 28 78 65 78 63 68 61 6e 67 65 29 3b 0a 69 66 20 74 79 70 65 5f 6f 3d 73 68 61 64 6f 77   ┆en (xexchange); if type_o=shadow┆
0x094800…094820 (39, 1, 4)  5f 74 79 70 20 74 68 65 6e 0a 63 6f 64 65 5f 63 61 6c 6c 5f 70 72 6f 63 28 73 79 73 5f 75 73 65   ┆_typ then code_call_proc(sys_use┆
0x094820…094840             2c 20 65 78 74 5f 6c 6f 6f 6b 75 70 28 6b 65 79 2c 20 27 5f 65 78 63 68 61 6e 67 65 5f 72 63 27   ┆, ext_lookup(key, '_exchange_rc'┆
0x094840…094860             29 2c 20 6b 65 79 2c 20 63 6f 6e 73 74 5f 6e 69 76 5f 30 2c 20 30 2c 0a 34 20 28 2a 20 6c 65 66   ┆), key, const_niv_0, 0, 4 (* lef┆
0x094860…094880             74 20 68 61 6e 64 20 61 64 64 72 65 73 73 20 2a 29 20 2b 20 34 20 28 2a 20 72 69 67 68 74 20 68   ┆t hand address *) + 4 (* right h┆
0x094880…0948a0             61 6e 64 20 61 64 64 72 65 73 73 20 2a 29 2c 20 30 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 63 6f   ┆and address *), 0) else out_opco┆
0x0948a0…0948c0             64 65 20 28 6f 70 5f 63 65 78 63 68 29 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 65 78   ┆de (op_cexch);  end  (*  find_ex┆
0x0948c0…0948e0             63 68 61 6e 67 65 20 20 2a 29 3b 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f   ┆change  *);     procedure  find_┆
0x0948e0…094900             6c 61 62 65 6c 3b 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6c 69 78 5f 6c 61 62 65 6c 20 28 6c 5f 6e   ┆label;  begin out_lix_label (l_n┆
0x094900…094920             61 6d 65 2c 20 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65 6e   ┆ame, in_integer); get_token;  en┆
0x094920…094940             64 20 20 28 2a 20 66 69 6e 64 5f 6c 61 62 65 6c 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65   ┆d  (* find_label *);   procedure┆
0x094940…094960             20 20 66 69 6e 64 5f 67 6f 74 6f 3b 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28   ┆  find_goto;  begin  out_opcode(┆
0x094960…094980             20 6f 70 5f 6a 6d 70 72 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f   ┆ op_jmprw ); out_start_param;  o┆
0x094980…0949a0             75 74 5f 6c 69 78 20 28 6c 5f 6e 61 6d 65 2c 20 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a 67 65 74   ┆ut_lix (l_name, in_integer); get┆
0x0949a0…0949c0             5f 74 6f 6b 65 6e 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 67 6f 74 6f 20 20 2a 29 3b   ┆_token;  end  (*  find_goto  *);┆
0x0949c0…0949e0             0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 69 66 3b 0a 0a 76 61 72 20 0a 76 20 3a   ┆   procedure  find_if;  var  v :┆
0x0949e0…094a00             20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a   ┆ varvalue_descr;  begin out_nl; ┆
0x094a00…094a20 (39, 1, 5)  6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64   ┆out_token (zbegin); out_p_id (id┆
0x094a20…094a40             5f 69 66 65 6c 73 65 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 69 66 65 78 69 74 29 3b 0a   ┆_ifelse); out_p_id (id_ifexit); ┆
0x094a40…094a60             6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e   ┆out_token (zendlist); out_commen┆
0x094a60…094a80             74 28 20 27 20 20 20 73 74 61 72 74 20 6f 66 20 69 66 5f 73 74 61 74 65 6d 65 6e 74 2e 20 27 20   ┆t( '   start of if_statement. ' ┆
0x094a80…094aa0             29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 76 29 3b 0a 0a   ┆);  get_token; find_exprs( v);  ┆
0x094aa0…094ac0             69 66 20 28 20 76 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 0a 20 20 20 28 20 28 20 76 2e 73   ┆if ( v.kind <> 1 ) or    ( ( v.s┆
0x094ac0…094ae0             69 7a 65 20 3e 3d 20 30 20 29 20 61 6e 64 20 28 20 76 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 29   ┆ize >= 0 ) and ( v.size <> 2 ) )┆
0x094ae0…094b00             20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 6f 75   ┆ then error(pass4code_error); ou┆
0x094b00…094b20             74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 69 66 65 6c 73 65 29 3b 0a   ┆t_op_id  (op_jmzeq, id_ifelse); ┆
0x094b20…094b40             0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 69 66 65 78 70 72 29 3b 0a 66 69 6e 64 5f 73 74 61 74   ┆ skip_token (xifexpr); find_stat┆
0x094b40…094b60             65 6d 65 6e 74 3b 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 65 6c 73 65 20 74 68 65 6e 0a 62 65   ┆ement;  if token = xelse then be┆
0x094b60…094b80             67 69 6e 0a 28 2a 20 20 20 20 65 6c 73 65 5f 70 61 72 74 20 3a 20 20 2a 29 0a 6f 75 74 5f 6f 70   ┆gin (*    else_part :  *) out_op┆
0x094b80…094ba0             5f 69 64 20 20 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 69 66 65 78 69 74 29 3b 0a 6f 75 74 5f   ┆_id  (op_jmprw, id_ifexit); out_┆
0x094ba0…094bc0             6c 61 62 65 6c 20 28 69 64 5f 69 66 65 6c 73 65 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66   ┆label (id_ifelse);  get_token; f┆
0x094bc0…094be0             69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 69 66   ┆ind_statement;  out_label( id_if┆
0x094be0…094c00             65 78 69 74 20 29 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 0a 62 65 67 69 6e 0a 28 2a 20 20 20 20 6e   ┆exit )  end  else  begin (*    n┆
0x094c00…094c20 (39, 1, 6)  6f 20 65 6c 73 65 5f 70 61 72 74 20 20 20 2a 29 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 69   ┆o else_part   *) out_label (id_i┆
0x094c20…094c40             66 65 6c 73 65 29 3b 0a 65 6e 64 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28   ┆felse); end; out_nl; out_token (┆
0x094c40…094c60             7a 65 6e 64 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 69   ┆zend); out_comment( '   end of i┆
0x094c60…094c80             66 5f 73 74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78   ┆f_statement. ' );  skip_token (x┆
0x094c80…094ca0             69 66 29 3b 0a 0a 65 6e 64 20 28 2a 20 20 66 69 6e 64 5f 69 66 20 20 2a 29 3b 0a 0a 0a 0a 70 72   ┆if);  end (*  find_if  *);    pr┆
0x094ca0…094cc0             6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 72 65 70 65 61 74 3b 0a 0a 76 61 72 0a 76 20 3a 20 76   ┆ocedure  find_repeat;  var v : v┆
0x094cc0…094ce0             61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75   ┆arvalue_descr;  begin out_nl; ou┆
0x094ce0…094d00             74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 72   ┆t_token (zbegin); out_p_id (id_r┆
0x094d00…094d20             70 72 65 70 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 72 70 63 6f 6e 74 29 3b 0a 6f 75 74   ┆prep); out_p_id (id_rpcont); out┆
0x094d20…094d40             5f 70 5f 69 64 20 28 69 64 5f 72 70 65 78 69 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65   ┆_p_id (id_rpexit); out_token (ze┆
0x094d40…094d60             6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 74 61 72 74 20   ┆ndlist); out_comment( '   start ┆
0x094d60…094d80             6f 66 20 72 65 70 65 61 74 5f 73 74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6c   ┆of repeat_statement. ' );  out_l┆
0x094d80…094da0             61 62 65 6c 28 20 69 64 5f 72 70 72 65 70 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69   ┆abel( id_rprep );  get_token; fi┆
0x094da0…094dc0             6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 72 70 63 6f   ┆nd_statement;  out_label(id_rpco┆
0x094dc0…094de0             6e 74 29 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 28 78 75 6e 74 69 6c 29 3b 0a 66 69 6e 64 5f 65 78   ┆nt); skip_token(xuntil); find_ex┆
0x094de0…094e00             70 72 28 20 76 29 3b 0a 0a 69 66 20 28 20 76 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 0a 20   ┆pr( v);  if ( v.kind <> 1 ) or  ┆
0x094e00…094e20 (39, 1, 7)  20 20 28 20 28 20 76 2e 73 69 7a 65 20 3e 3d 20 30 20 29 20 61 6e 64 20 28 20 76 2e 73 69 7a 65   ┆  ( ( v.size >= 0 ) and ( v.size┆
0x094e20…094e40             20 3c 3e 20 32 20 29 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65   ┆ <> 2 ) ) then error(pass4code_e┆
0x094e40…094e60             72 72 6f 72 29 3b 0a 69 66 20 6f 70 65 72 61 6e 64 5f 73 69 74 75 61 74 69 6f 6e 20 3d 20 61 66   ┆rror); if operand_situation = af┆
0x094e60…094e80             74 65 72 5f 73 68 6f 72 74 5f 63 6f 6e 73 74 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 70   ┆ter_short_const then begin (* op┆
0x094e80…094ea0             74 69 6d 69 7a 65 20 6f 6e 20 27 72 65 70 65 61 74 20 2e 2e 2e 20 75 6e 74 69 6c 20 66 61 6c 73   ┆timize on 'repeat ... until fals┆
0x094ea0…094ec0             65 27 20 2a 29 0a 69 66 20 76 2e 76 61 6c 20 3d 20 76 61 6c 75 65 5f 66 61 6c 73 65 20 74 68 65   ┆e' *) if v.val = value_false the┆
0x094ec0…094ee0             6e 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 72 70 72 65 70 29   ┆n out_op_id (op_jmprw, id_rprep)┆
0x094ee0…094f00             3b 20 28 2a 20 64 6f 6e 27 74 20 74 65 73 74 20 6f 6e 3a 20 27 2e 2e 2e 20 75 6e 74 69 6c 20 66   ┆; (* don't test on: '... until f┆
0x094f00…094f20             61 6c 73 65 27 20 2a 29 0a 28 2a 20 65 78 69 74 20 69 6d 6d 65 64 69 61 74 6c 79 20 6f 6e 20 27   ┆alse' *) (* exit immediatly on '┆
0x094f20…094f40             20 2e 2e 2e 20 75 6e 74 69 6c 20 74 72 75 65 27 20 2a 29 0a 65 6e 64 0a 65 6c 73 65 0a 6f 75 74   ┆ ... until true' *) end else out┆
0x094f40…094f60             5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 7a 65 71 2c 20 69 64 5f 72 70 72 65 70 29 3b 0a 0a 6f   ┆_op_id  (op_jmzeq, id_rprep);  o┆
0x094f60…094f80             75 74 5f 6c 61 62 65 6c 28 69 64 5f 72 70 65 78 69 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74   ┆ut_label(id_rpexit); out_nl; out┆
0x094f80…094fa0             5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20   ┆_token (zend); out_comment( '   ┆
0x094fa0…094fc0             65 6e 64 20 6f 66 20 72 65 70 65 61 74 5f 73 74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 73   ┆end of repeat_statement. ' );  s┆
0x094fc0…094fe0             6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 72 65 70 65 61 74 29 3b 0a 0a 65 6e 64 20 20 28 2a   ┆kip_token (xendrepeat);  end  (*┆
0x094fe0…095000             20 20 66 69 6e 64 5f 72 65 70 65 61 74 20 20 2a 29 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66   ┆  find_repeat  *);   procedure f┆
0x095000…095020 (39, 1, 8)  69 6e 64 5f 6c 6f 6f 70 3b 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65   ┆ind_loop; begin out_nl; out_toke┆
0x095020…095040             6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 6c 6f 6f 70 29 3b 0a   ┆n (zbegin); out_p_id (id_loop); ┆
0x095040…095060             6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 6c 6f 6f 70 65 78 69 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65   ┆out_p_id (id_loopexit); out_toke┆
0x095060…095080             6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73   ┆n (zendlist); out_comment( '   s┆
0x095080…0950a0             74 61 72 74 20 6f 66 20 6c 6f 6f 70 5f 73 74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 6f 75   ┆tart of loop_statement. ' );  ou┆
0x0950a0…0950c0             74 5f 6c 61 62 65 6c 28 20 69 64 5f 6c 6f 6f 70 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a   ┆t_label( id_loop );  get_token; ┆
0x0950c0…0950e0             66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e 28 78 65 6e 64   ┆find_statement;  skip_token(xend┆
0x0950e0…095100             6c 6f 6f 70 73 74 61 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 70 72 77 2c   ┆loopstat); out_op_id  (op_jmprw,┆
0x095100…095120             20 69 64 5f 6c 6f 6f 70 29 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 6c 6f 6f 70 65 78 69   ┆ id_loop);  out_label(id_loopexi┆
0x095120…095140             74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29 3b 0a 6f 75   ┆t); out_nl; out_token (zend); ou┆
0x095140…095160             74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 6c 6f 6f 70 5f 73 74 61 74 65   ┆t_comment( '   end of loop_state┆
0x095160…095180             6d 65 6e 74 2e 20 27 20 29 3b 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 20 6c 6f 6f 70 20 2a 29 0a   ┆ment. ' ); end; (* find loop *) ┆
0x095180…0951a0             0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 6c 6f 6f 70 5f 67 6f 74 6f 28 63 6f 6e 74 5f 6f   ┆ procedure find_loop_goto(cont_o┆
0x0951a0…0951c0             72 5f 65 78 69 74 3a 20 70 61 73 73 34 63 6f 64 65 73 29 3b 0a 76 61 72 0a 64 65 73 74 69 6e 61   ┆r_exit: pass4codes); var destina┆
0x0951c0…0951e0             74 69 6f 6e 3a 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65   ┆tion: identifier; begin get_toke┆
0x0951e0…095200             6e 3b 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 66 6f 72 73 74 61 74 3a 20 69 66 20 63 6f   ┆n; case token of xforstat: if co┆
0x095200…095220 (39, 1, 9)  6e 74 5f 6f 72 5f 65 78 69 74 3d 78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 20 74 68 65 6e 0a 64 65   ┆nt_or_exit=xcontloopstat then de┆
0x095220…095240             73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 66 6f 72 63 6f 6e 74 0a 65 6c 73 65 0a 64 65 73 74   ┆stination:= id_forcont else dest┆
0x095240…095260             69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 6c 6f 6f 70 65 78 69 74 3b 0a 78 77 68 69 6c 65 3a 20 69   ┆ination:= id_loopexit; xwhile: i┆
0x095260…095280             66 20 63 6f 6e 74 5f 6f 72 5f 65 78 69 74 3d 78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 20 74 68 65   ┆f cont_or_exit=xcontloopstat the┆
0x095280…0952a0             6e 0a 64 65 73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 77 68 72 65 70 0a 65 6c 73 65 0a 64 65   ┆n destination:= id_whrep else de┆
0x0952a0…0952c0             73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 77 68 65 78 69 74 3b 0a 78 72 65 70 65 61 74 3a 20   ┆stination:= id_whexit; xrepeat: ┆
0x0952c0…0952e0             69 66 20 63 6f 6e 74 5f 6f 72 5f 65 78 69 74 3d 78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 20 74 68   ┆if cont_or_exit=xcontloopstat th┆
0x0952e0…095300             65 6e 0a 64 65 73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 72 70 63 6f 6e 74 0a 65 6c 73 65 0a   ┆en destination:= id_rpcont else ┆
0x095300…095320             64 65 73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 72 70 65 78 69 74 3b 0a 78 6c 6f 6f 70 73 74   ┆destination:= id_rpexit; xloopst┆
0x095320…095340             61 74 3a 20 69 66 20 63 6f 6e 74 5f 6f 72 5f 65 78 69 74 3d 78 63 6f 6e 74 6c 6f 6f 70 73 74 61   ┆at: if cont_or_exit=xcontloopsta┆
0x095340…095360             74 20 74 68 65 6e 0a 64 65 73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 6c 6f 6f 70 0a 65 6c 73   ┆t then destination:= id_loop els┆
0x095360…095380             65 0a 64 65 73 74 69 6e 61 74 69 6f 6e 3a 3d 20 69 64 5f 6c 6f 6f 70 65 78 69 74 3b 0a 65 6c 73   ┆e destination:= id_loopexit; els┆
0x095380…0953a0             65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 20 28   ┆e error(pass4code_error); end; (┆
0x0953a0…0953c0             2a 20 63 61 73 65 20 2a 29 0a 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 70 72 77 2c 20 64   ┆* case *)  out_op_id(op_jmprw, d┆
0x0953c0…0953e0             65 73 74 69 6e 61 74 69 6f 6e 29 3b 0a 69 66 20 63 6f 6e 74 5f 6f 72 5f 65 78 69 74 3d 78 63 6f   ┆estination); if cont_or_exit=xco┆
0x0953e0…095400             6e 74 6c 6f 6f 70 73 74 61 74 20 74 68 65 6e 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 63 6f   ┆ntloopstat then out_comment(' co┆
0x095400…095420 (39, 1, 10) 6e 74 69 6e 75 65 6c 6f 6f 70 20 73 74 61 74 65 6d 65 6e 74 20 27 29 0a 65 6c 73 65 0a 6f 75 74   ┆ntinueloop statement ') else out┆
0x095420…095440             5f 63 6f 6d 6d 65 6e 74 28 27 20 65 78 69 74 6c 6f 6f 70 20 73 74 61 74 65 6d 65 6e 74 27 29 3b   ┆_comment(' exitloop statement');┆
0x095440…095460             0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 20 6c 6f 6f 70 20 67 6f   ┆ get_token; end; (* find loop go┆
0x095460…095480             74 6f 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 65 78 69 74 3b 0a 62 65 67   ┆to *)   procedure find_exit; beg┆
0x095480…0954a0             69 6e 0a 6f 75 74 5f 6f 70 5f 69 64 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 62 6c 6f 63 6b 65   ┆in out_op_id(op_jmprw, id_blocke┆
0x0954a0…0954c0             78 69 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 27 20 65 78 69 74 20 73 74 61 74 65 6d 65   ┆xit); out_comment(' exit stateme┆
0x0954c0…0954e0             6e 74 20 27 29 3b 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 65 6e 64 3b 20 28 2a 20 66 69 6e 64 20 65   ┆nt '); get_token; end; (* find e┆
0x0954e0…095500             78 69 74 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 66 6f 72 3b 0a 0a 76   ┆xit *)   procedure  find_for;  v┆
0x095500…095520             61 72 0a 76 5f 6c 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 76 5f 72 20 3a 20 76 61   ┆ar v_l : varaddr_descr; v_r : va┆
0x095520…095540             72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 6f 66 66 73 65 74 2c 20 74 79 70 65 5f 76 2c 20 6d 6f   ┆rvalue_descr; offset, type_v, mo┆
0x095540…095560             64 65 2c 20 77 5f 6f 66 66 73 65 74 2c 20 72 65 6d 61 69 6e 64 65 72 20 3a 20 69 6e 74 65 67 65   ┆de, w_offset, remainder : intege┆
0x095560…095580             72 3b 0a 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74   ┆r;  begin get_token; out_nl; out┆
0x095580…0955a0             5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 66 6f   ┆_token (zbegin); out_p_id (id_fo┆
0x0955a0…0955c0             72 72 65 70 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 66 6f 72 73 74 6f 72 65 29 3b 0a 6f   ┆rrep); out_p_id (id_forstore); o┆
0x0955c0…0955e0             75 74 5f 70 5f 69 64 28 69 64 5f 66 6f 72 63 6f 6e 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69   ┆ut_p_id(id_forcont); out_p_id (i┆
0x0955e0…095600             64 5f 66 6f 72 65 78 69 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 6c 6f 6f 70 65 78 69   ┆d_forexit); out_p_id (id_loopexi┆
0x095600…095620 (39, 1, 11) 74 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73 74 29 3b 0a 0a 66 69 6e 64 5f   ┆t); out_token (zendlist);  find_┆
0x095620…095640             76 61 72 61 64 64 72 28 20 76 5f 6c 29 3b 0a 28 2a 20 6c 65 74 20 69 6e 74 65 72 6d 69 64 69 61   ┆varaddr( v_l); (* let intermidia┆
0x095640…095660             74 65 5f 66 72 61 6d 65 20 62 65 20 69 6e 64 69 72 65 63 74 2d 61 64 64 72 65 73 73 65 64 20 2a   ┆te_frame be indirect-addressed *┆
0x095660…095680             29 0a 69 66 20 76 5f 6c 2e 61 63 63 65 73 73 20 3d 20 69 5f 66 72 61 6d 65 20 74 68 65 6e 0a 6c   ┆) if v_l.access = i_frame then l┆
0x095680…0956a0             6f 61 64 5f 61 64 64 72 65 73 73 28 20 76 5f 6c 2c 20 74 72 75 65 29 3b 0a 0a 6f 66 66 73 65 74   ┆oad_address( v_l, true);  offset┆
0x0956a0…0956c0             20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 20 77 5f 6f 66 66 73 65 74 20 3a 3d 20 69 6e   ┆ := in_integer;   w_offset := in┆
0x0956c0…0956e0             5f 69 6e 74 65 67 65 72 3b 20 20 20 74 79 70 65 5f 76 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72   ┆_integer;   type_v := in_integer┆
0x0956e0…095700             3b 0a 0a 69 66 20 28 20 74 79 70 65 5f 76 20 3c 3e 20 62 79 74 65 5f 74 79 70 20 29 20 61 6e 64   ┆;  if ( type_v <> byte_typ ) and┆
0x095700…095720             20 28 20 74 79 70 65 5f 76 20 3c 3e 20 77 6f 72 64 5f 74 79 70 20 29 20 74 68 65 6e 0a 65 72 72   ┆ ( type_v <> word_typ ) then err┆
0x095720…095740             6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 69 66 20 76 5f 6c 2e 6b 69 6e   ┆or(pass4code_error);  if v_l.kin┆
0x095740…095760             64 20 3c 3e 20 61 64 64 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 28 2a 20 6e 65 69 74 68 65 72 20   ┆d <> addr then begin (* neither ┆
0x095760…095780             67 6c 6f 62 61 6c 20 6e 6f 72 20 6c 6f 63 61 6c 20 66 72 61 6d 20 2a 29 0a 0a 6f 75 74 5f 6f 70   ┆global nor local fram *)  out_op┆
0x095780…0957a0             63 6f 64 65 28 20 6f 70 5f 72 65 76 70 64 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f   ┆code( op_revpd );  out_opcode( o┆
0x0957a0…0957c0             70 5f 73 74 76 6c 61 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 20 6f 75   ┆p_stvla ); out_start_param;   ou┆
0x0957c0…0957e0             74 5f 69 6e 74 65 67 65 72 28 20 6f 66 66 73 65 74 20 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74   ┆t_integer( offset ); out_comment┆
0x0957e0…095800             28 20 27 20 20 20 73 74 6f 72 65 20 61 64 64 72 2e 20 6f 66 20 74 68 65 20 63 6f 6e 74 72 2e 20   ┆( '   store addr. of the contr. ┆
0x095800…095820 (39, 1, 12) 76 61 72 2e 20 27 20 29 3b 0a 65 6e 64 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f   ┆var. ' ); end;  get_token; find_┆
0x095820…095840             65 78 70 72 73 28 20 76 5f 72 29 3b 0a 69 66 20 28 20 76 5f 72 2e 6b 69 6e 64 20 3c 3e 20 31 20   ┆exprs( v_r); if ( v_r.kind <> 1 ┆
0x095840…095860             29 20 6f 72 20 28 20 28 20 76 5f 72 2e 73 69 7a 65 20 3e 3d 20 30 20 29 20 61 6e 64 20 28 20 76   ┆) or ( ( v_r.size >= 0 ) and ( v┆
0x095860…095880             5f 72 2e 73 69 7a 65 20 3c 3e 20 32 20 29 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73   ┆_r.size <> 2 ) ) then error(pass┆
0x095880…0958a0             34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65   ┆4code_error);  out_opcode( op_re┆
0x0958a0…0958c0             76 70 77 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 76   ┆vpw );  get_token; find_exprs( v┆
0x0958c0…0958e0             5f 72 29 3b 0a 0a 69 66 20 28 20 76 5f 72 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 20 28 20   ┆_r);  if ( v_r.kind <> 1 ) or ( ┆
0x0958e0…095900             28 20 76 5f 72 2e 73 69 7a 65 20 3e 3d 20 30 20 29 20 61 6e 64 20 28 20 76 5f 72 2e 73 69 7a 65   ┆( v_r.size >= 0 ) and ( v_r.size┆
0x095900…095920             20 3c 3e 20 32 20 29 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65   ┆ <> 2 ) ) then error(pass4code_e┆
0x095920…095940             72 72 6f 72 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a   ┆rror);  out_opcode( op_revpw ); ┆
0x095940…095960             0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 6c 77 20 29 3b 0a 6f 75 74 5f 73 74 61   ┆ out_opcode( op_stvlw ); out_sta┆
0x095960…095980             72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 77 5f 6f 66 66 73 65 74 29   ┆rt_param;  out_integer(w_offset)┆
0x095980…0959a0             3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 61 76 65 20 74 68 65 20 6c 69 6d 69   ┆; out_comment( '   save the limi┆
0x0959a0…0959c0             74 20 76 61 6c 75 65 2e 20 27 20 29 3b 0a 28 2a 20 70 72 65 63 69 73 65 6c 79 20 33 20 77 6f 72   ┆t value. ' ); (* precisely 3 wor┆
0x0959c0…0959e0             64 73 20 6d 75 73 74 20 62 65 20 6f 6e 20 74 68 65 20 72 65 67 69 73 74 65 72 73 74 61 63 6b 20   ┆ds must be on the registerstack ┆
0x0959e0…095a00             2a 29 0a 28 2a 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 20 2a 29 0a 68 77 5f 73 74 61 63 6b 5f   ┆*) (* at this point *) hw_stack_┆
0x095a00…095a20 (39, 1, 13) 61 64 6a 75 73 74 20 28 36 2c 20 30 29 3b 0a 0a 0a 6d 6f 64 65 20 3a 3d 20 69 6e 5f 69 6e 74 65   ┆adjust (6, 0);   mode := in_inte┆
0x095a20…095a40             67 65 72 3b 0a 69 66 20 28 20 6d 6f 64 65 20 3c 3e 20 31 20 29 20 61 6e 64 20 28 20 6d 6f 64 65   ┆ger; if ( mode <> 1 ) and ( mode┆
0x095a40…095a60             20 3c 3e 20 32 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72   ┆ <> 2 ) then error(pass4code_err┆
0x095a60…095a80             6f 72 29 3b 0a 0a 69 66 20 6d 6f 64 65 20 3d 20 31 20 74 68 65 6e 20 20 6f 75 74 5f 6f 70 63 6f   ┆or);  if mode = 1 then  out_opco┆
0x095a80…095aa0             64 65 28 20 6f 70 5f 6c 65 20 29 20 65 6c 73 65 20 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70   ┆de( op_le ) else  out_opcode( op┆
0x095aa0…095ac0             5f 67 65 20 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 63 6f 6d 70 61 72 65 20   ┆_ge ); out_comment( '   compare ┆
0x095ac0…095ae0             74 68 65 20 6c 69 6d 69 74 20 77 69 74 68 20 74 68 65 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65   ┆the limit with the initial value┆
0x095ae0…095b00             20 2e 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 7a 67 74 2c 20 69 64   ┆ . ' ); out_op_id  (op_jmzgt, id┆
0x095b00…095b20             5f 66 6f 72 73 74 6f 72 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 70 72 77   ┆_forstore); out_op_id  (op_jmprw┆
0x095b20…095b40             2c 20 69 64 5f 66 6f 72 65 78 69 74 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 66 6f 72   ┆, id_forexit); out_label (id_for┆
0x095b40…095b60             72 65 70 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 20 6f 70 5f 75 61 64 68 77 20 29 3b 20   ┆rep);  out_opcode ( op_uadhw ); ┆
0x095b60…095b80             20 28 2a 20 69 6e 63 72 65 61 73 65 20 6f 72 20 64 65 63 72 65 61 73 65 20 2a 29 0a 6f 75 74 5f   ┆ (* increase or decrease *) out_┆
0x095b80…095ba0             73 74 61 72 74 5f 70 61 72 61 6d 3b 0a 69 66 20 6d 6f 64 65 20 3d 20 31 20 74 68 65 6e 20 6f 75   ┆start_param; if mode = 1 then ou┆
0x095ba0…095bc0             74 5f 69 6e 74 65 67 65 72 20 28 31 29 0a 65 6c 73 65 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28   ┆t_integer (1) else out_integer (┆
0x095bc0…095be0             2d 31 29 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 66 6f 72 73 74 6f 72 65 29 3b 0a 28   ┆-1);  out_label (id_forstore); (┆
0x095be0…095c00             2a 74 79 70 65 5f 76 20 3d 20 62 79 74 65 5f 74 79 70 20 6f 72 20 77 6f 72 64 5f 74 79 70 2a 29   ┆*type_v = byte_typ or word_typ*)┆
0x095c00…095c20 (39, 1, 14) 0a 77 69 74 68 20 76 5f 6c 20 64 6f 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 5b 63   ┆ with v_l do out_op_int(op_stv[c┆
0x095c20…095c40             6f 6e 76 5f 66 72 61 6d 65 5b 61 63 63 65 73 73 5d 2c 63 6f 6e 76 5f 74 79 70 65 5b 74 79 70 65   ┆onv_frame[access],conv_type[type┆
0x095c40…095c60             5f 76 5d 5d 2c 6f 66 66 73 65 74 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 73   ┆_v]],offset);  get_token; find_s┆
0x095c60…095c80             74 61 74 65 6d 65 6e 74 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 66 6f 72 29 3b 0a   ┆tatement; skip_token (xendfor); ┆
0x095c80…095ca0             6f 75 74 5f 6c 61 62 65 6c 28 69 64 5f 66 6f 72 63 6f 6e 74 29 3b 0a 0a 69 66 20 76 5f 6c 2e 61   ┆out_label(id_forcont);  if v_l.a┆
0x095ca0…095cc0             63 63 65 73 73 20 3d 20 73 5f 66 72 61 6d 65 20 74 68 65 6e 0a 0a 62 65 67 69 6e 0a 0a 6f 75 74   ┆ccess = s_frame then  begin  out┆
0x095cc0…095ce0             5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 6c 61 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70   ┆_opcode( op_revla ); out_start_p┆
0x095ce0…095d00             61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f 66 66 73 65 74 20 29 3b 0a 6f 75   ┆aram;  out_integer( offset ); ou┆
0x095d00…095d20             74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 63 6f 6e   ┆t_comment( '   increment the con┆
0x095d20…095d40             74 72 2e 20 76 61 72 2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65   ┆tr. var. ' );  out_opcode( op_re┆
0x095d40…095d60             76 70 64 20 29 3b 0a 0a 65 6e 64 3b 0a 28 2a 74 79 70 65 5f 76 20 69 73 20 65 69 74 68 65 72 20   ┆vpd );  end; (*type_v is either ┆
0x095d60…095d80             62 79 74 65 5f 74 79 70 20 6f 72 20 77 6f 72 64 5f 74 79 70 2a 29 0a 77 69 74 68 20 76 5f 6c 20   ┆byte_typ or word_typ*) with v_l ┆
0x095d80…095da0             64 6f 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 5b 63 6f 6e 76 5f 66 72 61 6d 65 5b   ┆do out_op_int(op_rev[conv_frame[┆
0x095da0…095dc0             61 63 63 65 73 73 5d 2c 63 6f 6e 76 5f 74 79 70 65 5b 74 79 70 65 5f 76 5d 5d 2c 6f 66 66 73 65   ┆access],conv_type[type_v]],offse┆
0x095dc0…095de0             74 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 70 77 20 29 3b 0a 0a 6f 75   ┆t);  out_opcode( op_revpw );  ou┆
0x095de0…095e00             74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 76 6c 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f   ┆t_opcode( op_revlw ); out_start_┆
0x095e00…095e20 (39, 1, 15) 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 77 5f 6f 66 66 73 65 74 29 3b 0a 69   ┆param;  out_integer(w_offset); i┆
0x095e20…095e40             66 20 6d 6f 64 65 20 3d 20 31 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 20 6f 70 5f   ┆f mode = 1 then out_opcode ( op_┆
0x095e40…095e60             6c 74 20 29 0a 65 6c 73 65 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 20 6f 70 5f 67 74 20 29 3b 0a   ┆lt ) else out_opcode ( op_gt ); ┆
0x095e60…095e80             6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 63 68 65 63 6b 20 69 66 20 6c 69 6d 69 74 20   ┆out_comment( '   check if limit ┆
0x095e80…095ea0             69 73 20 72 65 61 63 68 65 64 2e 20 27 20 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f   ┆is reached. ' ); out_op_id  (op_┆
0x095ea0…095ec0             6a 6d 7a 67 74 2c 20 69 64 5f 66 6f 72 72 65 70 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64   ┆jmzgt, id_forrep); out_label (id┆
0x095ec0…095ee0             5f 66 6f 72 65 78 69 74 29 3b 0a 0a 69 66 20 76 5f 6c 2e 61 63 63 65 73 73 20 3c 3e 20 73 5f 66   ┆_forexit);  if v_l.access <> s_f┆
0x095ee0…095f00             72 61 6d 65 20 74 68 65 6e 0a 72 65 6d 61 69 6e 64 65 72 20 3a 3d 20 32 0a 65 6c 73 65 0a 72 65   ┆rame then remainder := 2 else re┆
0x095f00…095f20             6d 61 69 6e 64 65 72 20 3a 3d 20 36 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f   ┆mainder := 6; out_specopcode(op_┆
0x095f20…095f40             73 74 6e 68 62 2c 2d 72 65 6d 61 69 6e 64 65 72 29 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64   ┆stnhb,-remainder); out_label (id┆
0x095f40…095f60             5f 6c 6f 6f 70 65 78 69 74 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28   ┆_loopexit);  out_nl; out_token (┆
0x095f60…095f80             7a 65 6e 64 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 66   ┆zend); out_comment( '   end of f┆
0x095f80…095fa0             6f 72 5f 73 74 61 74 65 6d 65 6e 74 2e 20 27 20 29 3b 0a 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69   ┆or_statement. ' );   end  (*  fi┆
0x095fa0…095fc0             6e 64 5f 66 6f 72 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 63   ┆nd_for  *);    procedure  find_c┆
0x095fc0…095fe0             68 61 6e 6e 65 6c 3b 0a 0a 76 61 72 0a 76 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a   ┆hannel;  var v : varaddr_descr; ┆
0x095fe0…096000             0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 28 6f 70 5f   ┆ begin get_token; out_op_id (op_┆
0x096000…096020 (40, 0, 1)  72 65 76 67 62 2c 20 69 64 5f 6c 65 76 65 6c 29 3b 20 20 28 2a 20 73 61 76 65 20 6f 6c 64 6c 65   ┆revgb, id_level);  (* save oldle┆
0x096020…096040             76 65 6c 20 2a 29 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 29 3b 0a 6c 6f 61 64 5f 61 64   ┆vel *) find_varaddr( v); load_ad┆
0x096040…096060             64 72 65 73 73 20 28 76 2c 20 74 72 75 65 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72   ┆dress (v, true); out_opcode(op_r┆
0x096060…096080             65 76 70 64 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 6c 72 65 73 65 29 3b 0a 6f 75   ┆evpd); out_opcode (op_lrese); ou┆
0x096080…0960a0             74 5f 6f 70 63 6f 64 65 20 28 6f 70 5f 72 65 76 70 64 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65   ┆t_opcode (op_revpd);  out_opcode┆
0x0960a0…0960c0             28 20 6f 70 5f 69 6f 63 64 61 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 63 73   ┆( op_iocda );  out_opcode( op_cs┆
0x0960c0…0960e0             65 6c 6c 20 29 3b 0a 20 20 20 6f 75 74 5f 72 65 73 74 61 20 28 30 29 3b 0a 0a 73 6b 69 70 5f 74   ┆ell );    out_resta (0);  skip_t┆
0x0960e0…096100             6f 6b 65 6e 20 28 78 63 68 61 6e 76 61 72 29 3b 0a 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b   ┆oken (xchanvar); find_statement;┆
0x096100…096120             0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 63 68 61 6e 6e 65 6c 29 3b 0a 6f 75 74 5f 6f   ┆ skip_token (xendchannel); out_o┆
0x096120…096140             70 63 6f 64 65 28 6f 70 5f 6c 72 65 6c 65 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70   ┆pcode(op_lrele);  out_opcode( op┆
0x096140…096160             5f 63 73 65 6c 6c 20 29 3b 20 20 28 2a 20 72 65 73 74 6f 72 65 20 6f 6c 64 6c 65 76 65 6c 20 2a   ┆_csell );  (* restore oldlevel *┆
0x096160…096180             29 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 63 68 61 6e 6e 65 6c 20 20 2a 29 3b 0a 0a 0a   ┆)  end  (*  find_channel  *);   ┆
0x096180…0961a0             0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 63 61 73 65 3b 0a 0a 76 61 72 0a 66 69 72   ┆  procedure  find_case;  var fir┆
0x0961a0…0961c0             73 74 5f 65 6e 74 72 79 2c 20 6c 61 73 74 5f 65 6e 74 72 79 3a 20 63 61 73 65 5f 74 61 62 6c 65   ┆st_entry, last_entry: case_table┆
0x0961c0…0961e0             5f 70 74 72 3b 20 28 2a 20 6c 69 73 74 20 6f 66 20 63 61 73 65 20 74 61 62 6c 65 20 65 6e 74 72   ┆_ptr; (* list of case table entr┆
0x0961e0…096200             69 65 73 20 2a 29 0a 76 5f 72 20 3a 20 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 3b 0a 66 69 72   ┆ies *) v_r : varvalue_descr; fir┆
0x096200…096220 (40, 0, 2)  73 74 2c 20 6c 61 73 74 20 2c 20 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 20 3a 20 69   ┆st, last , contents_of_table : i┆
0x096220…096240             6e 74 65 67 65 72 3b 0a 6f 74 68 65 72 77 69 73 65 5f 66 6f 75 6e 64 20 3a 20 62 6f 6f 6c 65 61   ┆nteger; otherwise_found : boolea┆
0x096240…096260             6e 3b 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 61 64 64 5f 74 6f 5f 74 61 62 6c 65 28 20 66 2c   ┆n;   procedure  add_to_table( f,┆
0x096260…096280             20 6c 20 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 0a 69 2c 6a 20 3a 20 69 6e 74 65 67 65 72   ┆ l : integer); var i,j : integer┆
0x096280…0962a0             3b 0a 63 75 72 5f 65 6e 74 72 79 2c 20 68 65 6c 70 5f 65 6e 74 72 79 3a 20 63 61 73 65 5f 74 61   ┆; cur_entry, help_entry: case_ta┆
0x0962a0…0962c0             62 6c 65 5f 70 74 72 3b 0a 62 65 67 69 6e 0a 63 75 72 5f 65 6e 74 72 79 3a 3d 20 6c 61 73 74 5f   ┆ble_ptr; begin cur_entry:= last_┆
0x0962c0…0962e0             65 6e 74 72 79 3b 0a 69 3a 3d 20 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 3b 20 28 2a   ┆entry; i:= contents_of_table; (*┆
0x0962e0…096300             20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 2a 29 0a 0a 28 2a 20 63 72 65 61 74   ┆ number of elements *)  (* creat┆
0x096300…096320             65 20 72 61 6e 67 65 20 64 65 73 63 72 69 70 74 6f 72 20 61 6e 64 20 69 6e 73 65 72 74 20 69 74   ┆e range descriptor and insert it┆
0x096320…096340             20 69 6e 74 6f 20 74 68 65 20 73 6f 72 74 65 64 20 6c 69 73 74 20 6f 66 20 63 61 73 65 20 74 61   ┆ into the sorted list of case ta┆
0x096340…096360             62 6c 65 20 65 6e 74 72 69 65 73 20 2a 29 0a 77 68 69 6c 65 20 28 69 3e 30 29 20 61 6e 64 20 28   ┆ble entries *) while (i>0) and (┆
0x096360…096380             63 75 72 5f 65 6e 74 72 79 5e 2e 6c 61 73 74 3e 66 29 20 64 6f 20 28 2a 20 73 65 61 72 63 68 20   ┆cur_entry^.last>f) do (* search ┆
0x096380…0963a0             66 72 6f 6d 20 68 69 67 68 20 65 6e 64 20 2a 29 0a 62 65 67 69 6e 20 0a 69 3a 3d 20 69 2d 31 3b   ┆from high end *) begin  i:= i-1;┆
0x0963a0…0963c0             0a 63 75 72 5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e 74 72 79 5e 2e 66 6f 72 6d 65 72 5f 65   ┆ cur_entry:= cur_entry^.former_e┆
0x0963c0…0963e0             6e 74 72 79 3b 0a 65 6e 64 3b 0a 0a 69 66 20 28 63 75 72 5f 65 6e 74 72 79 3d 6e 69 6c 29 20 61   ┆ntry; end;  if (cur_entry=nil) a┆
0x0963e0…096400             6e 64 20 28 66 69 72 73 74 5f 65 6e 74 72 79 3c 3e 6e 69 6c 29 20 61 6e 64 20 28 66 69 72 73 74   ┆nd (first_entry<>nil) and (first┆
0x096400…096420 (40, 0, 3)  5f 65 6e 74 72 79 5e 2e 66 69 72 73 74 3c 3d 6c 29 20 6f 72 0a 28 63 75 72 5f 65 6e 74 72 79 3c   ┆_entry^.first<=l) or (cur_entry<┆
0x096420…096440             3e 6e 69 6c 29 20 61 6e 64 20 28 28 63 75 72 5f 65 6e 74 72 79 5e 2e 6c 61 73 74 3d 66 29 20 6f   ┆>nil) and ((cur_entry^.last=f) o┆
0x096440…096460             72 0a 28 63 75 72 5f 65 6e 74 72 79 3c 3e 6c 61 73 74 5f 65 6e 74 72 79 29 20 61 6e 64 20 28 63   ┆r (cur_entry<>last_entry) and (c┆
0x096460…096480             75 72 5f 65 6e 74 72 79 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 5e 2e 66 69 72 73 74 3c 3d 6c 29 29   ┆ur_entry^.next_entry^.first<=l))┆
0x096480…0964a0             20 74 68 65 6e 0a 65 72 72 6f 72 20 28 63 61 73 65 5f 6c 61 62 65 6c 5f 65 72 72 6f 72 29 0a 65   ┆ then error (case_label_error) e┆
0x0964a0…0964c0             6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 74 68 65 20 65 6e 74 72 79 20 69 73 20 6f 6b 20 2a 29 0a   ┆lse begin (* the entry is ok *) ┆
0x0964c0…0964e0             28 2a 20 6e 6f 77 20 69 6e 73 65 72 74 20 61 20 6e 65 77 20 65 6e 74 72 79 20 61 66 74 65 72 20   ┆(* now insert a new entry after ┆
0x0964e0…096500             63 75 72 5f 65 6e 74 72 79 20 2a 29 0a 69 66 20 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73   ┆cur_entry *) if case_tab_freelis┆
0x096500…096520             74 3d 6e 69 6c 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 61 6c 6c 6f 63 61 74 65 20 61 6e 20   ┆t=nil then begin (* allocate an ┆
0x096520…096540             65 6c 65 6d 65 6e 74 20 74 6f 20 74 68 65 20 66 72 65 65 20 6c 69 73 74 20 2a 29 0a 6e 65 77 28   ┆element to the free list *) new(┆
0x096540…096560             63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 29 3b 0a 63 61 73 65 5f 74 61 62 5f 66 72 65   ┆case_tab_freelist); case_tab_fre┆
0x096560…096580             65 6c 69 73 74 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3a 3d 20 6e 69 6c 3b 0a 65 6e 64 3b 0a 0a 69   ┆elist^.next_entry:= nil; end;  i┆
0x096580…0965a0             66 20 63 75 72 5f 65 6e 74 72 79 3d 6e 69 6c 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 69 6e   ┆f cur_entry=nil then begin (* in┆
0x0965a0…0965c0             73 65 72 74 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 6c 69 73 74 20 2a 29 0a 63 75 72 5f 65 6e 74   ┆sert in front of list *) cur_ent┆
0x0965c0…0965e0             72 79 3a 3d 20 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3b 0a 63 61 73 65 5f 74 61 62   ┆ry:= case_tab_freelist; case_tab┆
0x0965e0…096600             5f 66 72 65 65 6c 69 73 74 3a 3d 20 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 5e 2e 6e   ┆_freelist:= case_tab_freelist^.n┆
0x096600…096620 (40, 0, 4)  65 78 74 5f 65 6e 74 72 79 3b 0a 63 75 72 5f 65 6e 74 72 79 5e 2e 6e 65 78 74 5f 65 6e 74 72 79   ┆ext_entry; cur_entry^.next_entry┆
0x096620…096640             3a 3d 20 66 69 72 73 74 5f 65 6e 74 72 79 3b 0a 69 66 20 66 69 72 73 74 5f 65 6e 74 72 79 3d 6e   ┆:= first_entry; if first_entry=n┆
0x096640…096660             69 6c 20 74 68 65 6e 20 20 28 2a 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 2a 29 0a 62 65 67   ┆il then  (* first element *) beg┆
0x096660…096680             69 6e 0a 6c 61 73 74 5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e 74 72 79 3b 0a 6c 61 73 74 5f   ┆in last_entry:= cur_entry; last_┆
0x096680…0966a0             65 6e 74 72 79 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3a 3d 20 6e 69 6c 3b 0a 65 6e 64 0a 65 6c 73   ┆entry^.next_entry:= nil; end els┆
0x0966a0…0966c0             65 0a 66 69 72 73 74 5f 65 6e 74 72 79 5e 2e 66 6f 72 6d 65 72 5f 65 6e 74 72 79 3a 3d 20 63 75   ┆e first_entry^.former_entry:= cu┆
0x0966c0…0966e0             72 5f 65 6e 74 72 79 3b 0a 66 69 72 73 74 5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e 74 72 79   ┆r_entry; first_entry:= cur_entry┆
0x0966e0…096700             3b 0a 63 75 72 5f 65 6e 74 72 79 5e 2e 66 6f 72 6d 65 72 5f 65 6e 74 72 79 3a 3d 20 6e 69 6c 3b   ┆; cur_entry^.former_entry:= nil;┆
0x096700…096720             0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e 20 28 2a 20 6e 6f 74 20 69 6e 20 66 72 6f 6e 74 20   ┆ end else begin (* not in front ┆
0x096720…096740             6f 66 20 6c 69 73 74 20 2a 29 0a 68 65 6c 70 5f 65 6e 74 72 79 3a 3d 20 63 61 73 65 5f 74 61 62   ┆of list *) help_entry:= case_tab┆
0x096740…096760             5f 66 72 65 65 6c 69 73 74 3b 0a 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3a 3d 20 63   ┆_freelist; case_tab_freelist:= c┆
0x096760…096780             61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3b 0a 68 65   ┆ase_tab_freelist^.next_entry; he┆
0x096780…0967a0             6c 70 5f 65 6e 74 72 79 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e 74 72 79   ┆lp_entry^.next_entry:= cur_entry┆
0x0967a0…0967c0             5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3b 0a 63 75 72 5f 65 6e 74 72 79 5e 2e 6e 65 78 74 5f 65 6e   ┆^.next_entry; cur_entry^.next_en┆
0x0967c0…0967e0             74 72 79 3a 3d 20 68 65 6c 70 5f 65 6e 74 72 79 3b 0a 68 65 6c 70 5f 65 6e 74 72 79 5e 2e 66 6f   ┆try:= help_entry; help_entry^.fo┆
0x0967e0…096800             72 6d 65 72 5f 65 6e 74 72 79 3a 3d 20 63 75 72 5f 65 6e 74 72 79 3b 0a 69 66 20 63 75 72 5f 65   ┆rmer_entry:= cur_entry; if cur_e┆
0x096800…096820 (40, 0, 5)  6e 74 72 79 3d 6c 61 73 74 5f 65 6e 74 72 79 20 74 68 65 6e 0a 6c 61 73 74 5f 65 6e 74 72 79 3a   ┆ntry=last_entry then last_entry:┆
0x096820…096840             3d 20 68 65 6c 70 5f 65 6e 74 72 79 0a 65 6c 73 65 0a 68 65 6c 70 5f 65 6e 74 72 79 5e 2e 6e 65   ┆= help_entry else help_entry^.ne┆
0x096840…096860             78 74 5f 65 6e 74 72 79 5e 2e 66 6f 72 6d 65 72 5f 65 6e 74 72 79 3a 3d 20 68 65 6c 70 5f 65 6e   ┆xt_entry^.former_entry:= help_en┆
0x096860…096880             74 72 79 3b 0a 63 75 72 5f 65 6e 74 72 79 3a 3d 20 68 65 6c 70 5f 65 6e 74 72 79 3b 0a 65 6e 64   ┆try; cur_entry:= help_entry; end┆
0x096880…0968a0             3b 0a 0a 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 20 3a 3d 20 63 6f 6e 74 65 6e 74 73   ┆;  contents_of_table := contents┆
0x0968a0…0968c0             5f 6f 66 5f 74 61 62 6c 65 20 2b 20 31 3b 0a 77 69 74 68 20 63 75 72 5f 65 6e 74 72 79 5e 20 64   ┆_of_table + 1; with cur_entry^ d┆
0x0968c0…0968e0             6f 0a 62 65 67 69 6e 0a 66 69 72 73 74 20 3a 3d 20 66 3b 0a 6c 61 73 74 20 20 3a 3d 20 6c 3b 0a   ┆o begin first := f; last  := l; ┆
0x0968e0…096900             78 5f 69 6e 64 65 78 20 3a 3d 20 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 3b 0a 65 6e   ┆x_index := contents_of_table; en┆
0x096900…096920             64 3b 0a 6f 75 74 5f 6c 69 78 5f 6c 61 62 65 6c 20 28 78 5f 6e 61 6d 65 2c 20 63 6f 6e 74 65 6e   ┆d; out_lix_label (x_name, conten┆
0x096920…096940             74 73 5f 6f 66 5f 74 61 62 6c 65 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65   ┆ts_of_table); end; end; (* proce┆
0x096940…096960             64 75 72 65 20 61 64 64 2d 74 6f 2d 74 61 62 6c 65 20 2a 29 0a 0a 0a 70 72 6f 63 65 64 75 72 65   ┆dure add-to-table *)   procedure┆
0x096960…096980             20 20 6f 75 74 5f 74 61 62 6c 65 3b 0a 0a 76 61 72 0a 63 75 72 5f 65 6e 74 72 79 3a 20 63 61 73   ┆  out_table;  var cur_entry: cas┆
0x096980…0969a0             65 5f 74 61 62 6c 65 5f 70 74 72 3b 0a 69 2c 20 6a 2c 20 6d 69 6e 2c 20 6d 61 78 2c 20 6e 65 78   ┆e_table_ptr; i, j, min, max, nex┆
0x0969a0…0969c0             74 20 3a 20 69 6e 74 65 67 65 72 3b 0a 70 6f 73 69 74 69 6f 6e 5f 66 6f 75 6e 64 20 3a 20 62 6f   ┆t : integer; position_found : bo┆
0x0969c0…0969e0             6f 6c 65 61 6e 3b 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 20 6f 75 74 70 75 74 20 74 68 65 20 73 6f   ┆olean;  begin  (*  output the so┆
0x0969e0…096a00             72 74 65 64 20 74 61 62 6c 65 20 61 73 20 61 20 73 69 6e 67 6c 65 20 63 6f 6e 73 74 61 6e 74 20   ┆rted table as a single constant ┆
0x096a00…096a20 (40, 0, 6)  3a 20 20 2a 29 0a 69 66 20 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 20 3c 3d 20 30 20   ┆:  *) if contents_of_table <= 0 ┆
0x096a20…096a40             74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 65 6d 70 74 79 20 63 61 73 65 2d 74 61 62 6c 65 2c 20   ┆then begin (* empty case-table, ┆
0x096a40…096a60             73 69 6d 75 6c 61 74 65 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 20 63 61 73 65 2d 72 61 6e 67 65   ┆simulate inconsistent case-range┆
0x096a60…096a80             21 20 2a 29 0a 6d 69 6e 20 3a 3d 20 31 3b 0a 6d 61 78 20 3a 3d 20 30 3b 0a 65 6e 64 0a 65 6c 73   ┆! *) min := 1; max := 0; end els┆
0x096a80…096aa0             65 0a 62 65 67 69 6e 0a 6d 69 6e 20 3a 3d 20 66 69 72 73 74 5f 65 6e 74 72 79 5e 2e 66 69 72 73   ┆e begin min := first_entry^.firs┆
0x096aa0…096ac0             74 3b 0a 6d 61 78 20 3a 3d 20 6c 61 73 74 5f 65 6e 74 72 79 5e 2e 6c 61 73 74 3b 0a 65 6e 64 3b   ┆t; max := last_entry^.last; end;┆
0x096ac0…096ae0             0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 63 61 73 65 74 61 62 20 29 3b 20 20 20 6f 75 74   ┆  out_label( id_casetab );   out┆
0x096ae0…096b00             5f 74 61 62 28 20 31 35 20 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 28 7a 63 6f 6e 73 74 29 3b 0a 6f   ┆_tab( 15 ); out_token(zconst); o┆
0x096b00…096b20             75 74 5f 69 6e 74 65 67 65 72 28 20 28 6d 61 78 20 2d 20 6d 69 6e 20 2b 20 31 29 20 2a 20 70 6f   ┆ut_integer( (max - min + 1) * po┆
0x096b20…096b40             69 6e 74 65 72 5f 6c 65 6e 67 74 68 20 2b 20 32 2a 77 6f 72 64 5f 6c 65 6e 67 74 68 20 2b 20 70   ┆inter_length + 2*word_length + p┆
0x096b40…096b60             6f 69 6e 74 65 72 5f 6c 65 6e 67 74 68 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20   ┆ointer_length); out_comment( '  ┆
0x096b60…096b80             20 73 74 61 72 74 20 6f 66 20 63 61 73 65 5f 6a 75 6d 70 20 74 61 62 6c 65 2e 20 27 20 29 3b 0a   ┆ start of case_jump table. ' ); ┆
0x096b80…096ba0             6f 75 74 5f 6e 6c 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 64 6f 6c 6c 61 72 5f 69 29 3b 20 6f 75   ┆out_nl; out_token (dollar_i); ou┆
0x096ba0…096bc0             74 5f 69 6e 74 65 67 65 72 20 28 6d 69 6e 29 3b 0a 6f 75 74 5f 6e 6c 3b 20 6f 75 74 5f 74 6f 6b   ┆t_integer (min); out_nl; out_tok┆
0x096bc0…096be0             65 6e 20 28 64 6f 6c 6c 61 72 5f 69 29 3b 20 6f 75 74 5f 69 6e 74 65 67 65 72 20 28 6d 61 78 29   ┆en (dollar_i); out_integer (max)┆
0x096be0…096c00             3b 0a 6f 75 74 5f 6e 6c 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 64 6f 6c 6c 61 72 5f 61 29 3b 20   ┆; out_nl; out_token (dollar_a); ┆
0x096c00…096c20 (40, 0, 7)  6f 75 74 5f 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 5f 6f 74 68 65 72 77 69 73 65 29 3b 0a 0a   ┆out_identifier (id_otherwise);  ┆
0x096c20…096c40             0a 6e 65 78 74 20 3a 3d 20 6d 69 6e 3b 0a 63 75 72 5f 65 6e 74 72 79 3a 3d 20 66 69 72 73 74 5f   ┆ next := min; cur_entry:= first_┆
0x096c40…096c60             65 6e 74 72 79 3b 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 63 6f 6e 74 65 6e 74 73 5f 6f 66   ┆entry; for i := 1 to contents_of┆
0x096c60…096c80             5f 74 61 62 6c 65 20 64 6f 0a 77 69 74 68 20 63 75 72 5f 65 6e 74 72 79 5e 20 64 6f 0a 62 65 67   ┆_table do with cur_entry^ do beg┆
0x096c80…096ca0             69 6e 0a 0a 77 68 69 6c 65 20 6e 65 78 74 20 3c 20 66 69 72 73 74 20 64 6f 0a 62 65 67 69 6e 0a   ┆in  while next < first do begin ┆
0x096ca0…096cc0             6f 75 74 5f 6e 6c 3b 20 6f 75 74 5f 74 6f 6b 65 6e 20 28 64 6f 6c 6c 61 72 5f 61 29 3b 20 6f 75   ┆out_nl; out_token (dollar_a); ou┆
0x096cc0…096ce0             74 5f 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 5f 6f 74 68 65 72 77 69 73 65 29 3b 0a 6e 65 78   ┆t_identifier (id_otherwise); nex┆
0x096ce0…096d00             74 20 3a 3d 20 6e 65 78 74 20 2b 20 31 0a 0a 65 6e 64 3b 0a 0a 77 68 69 6c 65 20 6e 65 78 74 20   ┆t := next + 1  end;  while next ┆
0x096d00…096d20             3c 3d 20 6c 61 73 74 20 64 6f 0a 62 65 67 69 6e 0a 6f 75 74 5f 6e 6c 3b 20 6f 75 74 5f 74 6f 6b   ┆<= last do begin out_nl; out_tok┆
0x096d20…096d40             65 6e 20 28 64 6f 6c 6c 61 72 5f 61 29 3b 20 6f 75 74 5f 6c 69 78 20 28 78 5f 6e 61 6d 65 2c 20   ┆en (dollar_a); out_lix (x_name, ┆
0x096d40…096d60             78 5f 69 6e 64 65 78 29 3b 0a 6e 65 78 74 20 3a 3d 20 6e 65 78 74 20 2b 20 31 0a 0a 65 6e 64 3b   ┆x_index); next := next + 1  end;┆
0x096d60…096d80             0a 63 75 72 5f 65 6e 74 72 79 3a 3d 20 6e 65 78 74 5f 65 6e 74 72 79 3b 0a 65 6e 64 3b 20 28 2a   ┆ cur_entry:= next_entry; end; (*┆
0x096d80…096da0             20 66 6f 72 20 69 20 2e 2e 2e 20 77 69 74 68 20 63 75 72 20 2e 2e 2e 20 2a 29 0a 0a 6f 75 74 5f   ┆ for i ... with cur ... *)  out_┆
0x096da0…096dc0             6e 6c 3b 20 20 20 6f 75 74 5f 74 61 62 28 20 31 35 20 29 3b 20 20 20 6f 75 74 5f 74 6f 6b 65 6e   ┆nl;   out_tab( 15 );   out_token┆
0x096dc0…096de0             20 28 7a 65 6e 64 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66   ┆ (zend); out_comment( '   end of┆
0x096de0…096e00             20 63 61 73 65 5f 6a 75 6d 70 20 74 61 62 6c 65 2e 20 27 20 29 3b 0a 0a 6f 75 74 5f 6e 6c 3b 0a   ┆ case_jump table. ' );  out_nl; ┆
0x096e00…096e20 (40, 0, 8)  0a 28 2a 20 72 65 74 75 72 6e 20 63 61 73 65 20 65 6e 74 72 79 20 64 65 73 63 72 69 70 74 6f 72   ┆ (* return case entry descriptor┆
0x096e20…096e40             73 20 74 6f 20 63 61 73 65 20 74 61 62 20 66 72 65 65 6c 69 73 74 20 2a 29 0a 69 66 20 66 69 72   ┆s to case tab freelist *) if fir┆
0x096e40…096e60             73 74 5f 65 6e 74 72 79 3c 3e 6e 69 6c 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c 61 73 74 5f 65 6e   ┆st_entry<>nil then begin last_en┆
0x096e60…096e80             74 72 79 5e 2e 6e 65 78 74 5f 65 6e 74 72 79 3a 3d 20 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c   ┆try^.next_entry:= case_tab_freel┆
0x096e80…096ea0             69 73 74 3b 0a 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3a 3d 20 66 69 72 73 74 5f 65   ┆ist; case_tab_freelist:= first_e┆
0x096ea0…096ec0             6e 74 72 79 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 20 28 2a 20 6f 75 74 20 74 61 62 6c 65 20 2a 29 0a   ┆ntry; end; end; (* out table *) ┆
0x096ec0…096ee0             0a 62 65 67 69 6e 0a 0a 63 6f 6e 74 65 6e 74 73 5f 6f 66 5f 74 61 62 6c 65 20 3a 3d 20 30 3b 0a   ┆ begin  contents_of_table := 0; ┆
0x096ee0…096f00             66 69 72 73 74 5f 65 6e 74 72 79 3a 3d 20 6e 69 6c 3b 0a 6c 61 73 74 5f 65 6e 74 72 79 3a 3d 20   ┆first_entry:= nil; last_entry:= ┆
0x096f00…096f20             6e 69 6c 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 62 65 67 69 6e 29 3b   ┆nil; out_nl; out_token (zbegin);┆
0x096f20…096f40             0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 63 61 73 65 74 61 62 29 3b 0a 6f 75 74 5f 70 5f 69 64   ┆ out_p_id (id_casetab); out_p_id┆
0x096f40…096f60             20 28 69 64 5f 6f 74 68 65 72 77 69 73 65 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 69 64 5f 63 61   ┆ (id_otherwise); out_p_id (id_ca┆
0x096f60…096f80             73 65 65 78 69 74 29 3b 0a 6f 75 74 5f 70 5f 69 64 20 28 78 31 32 5f 6e 61 6d 65 29 3b 20 20 6f   ┆seexit); out_p_id (x12_name);  o┆
0x096f80…096fa0             75 74 5f 63 68 61 72 28 27 23 27 29 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 6c 69 73   ┆ut_char('#'); out_token (zendlis┆
0x096fa0…096fc0             74 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 76 5f 72 29   ┆t);  get_token; find_exprs( v_r)┆
0x096fc0…096fe0             3b 0a 0a 69 66 20 28 20 76 5f 72 2e 6b 69 6e 64 20 3c 3e 20 31 20 29 20 6f 72 0a 20 20 20 28 20   ┆;  if ( v_r.kind <> 1 ) or    ( ┆
0x096fe0…097000             28 20 76 5f 72 2e 73 69 7a 65 20 3e 3d 20 30 20 29 20 61 6e 64 20 28 20 76 5f 72 2e 73 69 7a 65   ┆( v_r.size >= 0 ) and ( v_r.size┆
0x097000…097020 (40, 0, 9)  20 3c 3e 20 32 20 29 20 29 20 74 68 65 6e 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65   ┆ <> 2 ) ) then error(pass4code_e┆
0x097020…097040             72 72 6f 72 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 63 68 74 2c 20 69 64 5f   ┆rror); out_op_id  (op_jmcht, id_┆
0x097040…097060             63 61 73 65 74 61 62 29 3b 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 63 61 73 65 29 3b 0a 0a   ┆casetab);  skip_token (xcase);  ┆
0x097060…097080             6f 74 68 65 72 77 69 73 65 5f 66 6f 75 6e 64 20 3a 3d 20 66 61 6c 73 65 3b 0a 0a 77 68 69 6c 65   ┆otherwise_found := false;  while┆
0x097080…0970a0             20 20 74 6f 6b 65 6e 20 3c 3e 20 78 65 6e 64 63 61 73 65 20 64 6f 0a 62 65 67 69 6e 0a 0a 72 65   ┆  token <> xendcase do begin  re┆
0x0970a0…0970c0             70 65 61 74 20 0a 0a 63 61 73 65 20 20 74 6f 6b 65 6e 20 20 6f 66 0a 0a 78 63 61 73 65 6c 61 62   ┆peat   case  token  of  xcaselab┆
0x0970c0…0970e0             65 6c 20 3a 0a 62 65 67 69 6e 0a 0a 66 69 72 73 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b   ┆el : begin  first := in_integer;┆
0x0970e0…097100             0a 6c 61 73 74 20 3a 3d 20 66 69 72 73 74 3b 0a 0a 61 64 64 5f 74 6f 5f 74 61 62 6c 65 28 20 66   ┆ last := first;  add_to_table( f┆
0x097100…097120             69 72 73 74 2c 20 6c 61 73 74 29 3b 0a 0a 65 6e 64 3b 0a 0a 78 63 61 73 65 72 61 6e 67 65 20 3a   ┆irst, last);  end;  xcaserange :┆
0x097120…097140             0a 62 65 67 69 6e 0a 0a 66 69 72 73 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 61 73   ┆ begin  first := in_integer; las┆
0x097140…097160             74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 69 66 20 6c 61 73 74 20 3c 20 66 69 72 73   ┆t := in_integer;  if last < firs┆
0x097160…097180             74 20 74 68 65 6e 20 20 65 72 72 6f 72 28 63 61 73 65 5f 6c 61 62 65 6c 5f 65 72 72 6f 72 29 3b   ┆t then  error(case_label_error);┆
0x097180…0971a0             0a 0a 61 64 64 5f 74 6f 5f 74 61 62 6c 65 28 20 66 69 72 73 74 2c 20 6c 61 73 74 29 3b 0a 0a 65   ┆  add_to_table( first, last);  e┆
0x0971a0…0971c0             6e 64 3b 0a 0a 78 6f 74 68 65 72 77 69 73 65 20 3a 0a 62 65 67 69 6e 0a 0a 69 66 20 6f 74 68 65   ┆nd;  xotherwise : begin  if othe┆
0x0971c0…0971e0             72 77 69 73 65 5f 66 6f 75 6e 64 20 74 68 65 6e 20 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64   ┆rwise_found then  error(pass4cod┆
0x0971e0…097200             65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 74 68 65 72 77 69 73 65 5f 66 6f 75 6e 64 20 3a 3d 20 74 72   ┆e_error);  otherwise_found := tr┆
0x097200…097220 (40, 0, 10) 75 65 3b 0a 0a 6f 75 74 5f 6c 61 62 65 6c 28 20 69 64 5f 6f 74 68 65 72 77 69 73 65 20 29 3b 0a   ┆ue;  out_label( id_otherwise ); ┆
0x097220…097240             0a 65 6e 64 3b 0a 0a 65 6c 73 65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f   ┆ end;  else error(pass4code_erro┆
0x097240…097260             72 29 3b 0a 0a 65 6e 64 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 75 6e 74 69 6c 20 28 20 74   ┆r);  end;  get_token;  until ( t┆
0x097260…097280             6f 6b 65 6e 20 3d 20 78 65 6e 64 63 61 73 65 6c 69 73 74 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65   ┆oken = xendcaselist );  get_toke┆
0x097280…0972a0             6e 3b 0a 66 69 6e 64 5f 73 74 61 74 65 6d 65 6e 74 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78   ┆n; find_statement; skip_token (x┆
0x0972a0…0972c0             65 6e 64 63 61 73 65 73 74 61 74 29 3b 0a 6f 75 74 5f 6f 70 5f 69 64 20 20 28 6f 70 5f 6a 6d 70   ┆endcasestat); out_op_id  (op_jmp┆
0x0972c0…0972e0             72 77 2c 20 69 64 5f 63 61 73 65 65 78 69 74 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 6f 74   ┆rw, id_caseexit);  end;   if not┆
0x0972e0…097300             20 6f 74 68 65 72 77 69 73 65 5f 66 6f 75 6e 64 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 6f 75 74   ┆ otherwise_found then begin  out┆
0x097300…097320             5f 6c 61 62 65 6c 28 20 69 64 5f 6f 74 68 65 72 77 69 73 65 20 29 3b 0a 0a 63 6f 64 65 5f 65 78   ┆_label( id_otherwise );  code_ex┆
0x097320…097340             63 5f 74 72 69 67 67 65 72 28 20 63 5f 65 78 63 5f 63 61 73 65 29 3b 0a 6f 75 74 5f 6f 70 5f 69   ┆c_trigger( c_exc_case); out_op_i┆
0x097340…097360             64 20 20 28 6f 70 5f 6a 6d 70 72 77 2c 20 69 64 5f 63 61 73 65 65 78 69 74 29 3b 0a 0a 65 6e 64   ┆d  (op_jmprw, id_caseexit);  end┆
0x097360…097380             3b 0a 0a 0a 6f 75 74 5f 74 61 62 6c 65 3b 0a 6f 75 74 5f 6c 61 62 65 6c 20 28 69 64 5f 63 61 73   ┆;   out_table; out_label (id_cas┆
0x097380…0973a0             65 65 78 69 74 29 3b 0a 6f 75 74 5f 6e 6c 3b 0a 6f 75 74 5f 74 6f 6b 65 6e 20 28 7a 65 6e 64 29   ┆eexit); out_nl; out_token (zend)┆
0x0973a0…0973c0             3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 63 61   ┆;  get_token;   end  (*  find_ca┆
0x0973c0…0973e0             73 65 20 20 2a 29 3b 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 66 69 6e 64 5f 73 74 61 74 65 6d   ┆se  *);    procedure find_statem┆
0x0973e0…097400             65 6e 74 3b 0a 76 61 72 0a 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74   ┆ent; var size_of_function_result┆
0x097400…097420 (40, 0, 11) 2c 20 6f 6c 64 73 74 61 63 6b 20 3a 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64 5f 73 74 61 74 20 3a   ┆, oldstack : integer; end_stat :┆
0x097420…097440             20 62 6f 6f 6c 65 61 6e 3b 0a 62 65 67 69 6e 0a 0a 65 6e 64 5f 73 74 61 74 20 3a 3d 20 66 61 6c   ┆ boolean; begin  end_stat := fal┆
0x097440…097460             73 65 3b 0a 72 65 70 65 61 74 0a 6f 6c 64 73 74 61 63 6b 20 3a 3d 20 63 2e 73 74 61 63 6b 5f 73   ┆se; repeat oldstack := c.stack_s┆
0x097460…097480             69 7a 65 3b 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 61 73 73 69 67 6e 73 74 61 74 3a 20   ┆ize; case token of xassignstat: ┆
0x097480…0974a0             20 20 66 69 6e 64 5f 61 73 73 69 67 6e 3b 0a 78 77 68 69 6c 65 3a 20 20 20 20 20 20 20 20 66 69   ┆  find_assign; xwhile:        fi┆
0x0974a0…0974c0             6e 64 5f 77 68 69 6c 65 3b 0a 78 70 72 6f 63 63 61 6c 6c 2c 0a 78 65 78 74 70 72 6f 63 63 61 6c   ┆nd_while; xproccall, xextproccal┆
0x0974c0…0974e0             6c 2c 0a 78 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 20 62 65 67 69 6e 0a 73 69 7a 65 5f 6f 66 5f   ┆l, xprocessparam: begin size_of_┆
0x0974e0…097500             66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3a 3d 20 30 3b 0a 28 2a 20 75 73 65 64 20 62 79   ┆function_result := 0; (* used by┆
0x097500…097520             20 66 69 6e 64 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 2c 20 63 68 61 6e 67 65 64 20 62 79 20   ┆ find process param, changed by ┆
0x097520…097540             66 69 6e 64 20 61 72 67 6c 69 73 74 20 2a 29 0a 20 66 69 6e 64 5f 70 72 6f 63 5f 63 61 6c 6c 28   ┆find arglist *)  find_proc_call(┆
0x097540…097560             73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 29 3b 0a 65 6e 64 3b 0a 78   ┆size_of_function_result); end; x┆
0x097560…097580             73 74 64 70 72 6f 63 63 61 6c 6c 3a 20 20 66 69 6e 64 5f 73 74 64 5f 70 72 6f 63 63 61 6c 6c 3b   ┆stdproccall:  find_std_proccall;┆
0x097580…0975a0             0a 78 6c 6f 63 6b 6d 65 73 73 74 61 74 2c 0a 78 6c 6f 63 6b 73 74 61 74 3a 20 20 20 20 20 66 69   ┆ xlockmesstat, xlockstat:     fi┆
0x0975a0…0975c0             6e 64 5f 6c 6f 63 6b 3b 0a 78 77 69 74 68 73 74 61 74 3a 20 20 20 20 20 66 69 6e 64 5f 77 69 74   ┆nd_lock; xwithstat:     find_wit┆
0x0975c0…0975e0             68 3b 0a 78 65 78 63 68 73 74 61 74 3a 20 20 20 20 20 66 69 6e 64 5f 65 78 63 68 61 6e 67 65 3b   ┆h; xexchstat:     find_exchange;┆
0x0975e0…097600             0a 78 64 65 66 6c 69 78 3a 20 20 20 20 20 20 20 66 69 6e 64 5f 6c 61 62 65 6c 3b 0a 78 67 6f 74   ┆ xdeflix:       find_label; xgot┆
0x097600…097620 (40, 0, 12) 6f 3a 20 20 20 20 20 20 20 20 20 66 69 6e 64 5f 67 6f 74 6f 3b 0a 78 69 66 73 74 61 74 3a 20 20   ┆o:         find_goto; xifstat:  ┆
0x097620…097640             20 20 20 20 20 66 69 6e 64 5f 69 66 3b 0a 78 72 65 70 65 61 74 3a 20 20 20 20 20 20 20 66 69 6e   ┆     find_if; xrepeat:       fin┆
0x097640…097660             64 5f 72 65 70 65 61 74 3b 0a 78 6c 6f 6f 70 73 74 61 74 3a 20 20 20 20 20 66 69 6e 64 5f 6c 6f   ┆d_repeat; xloopstat:     find_lo┆
0x097660…097680             6f 70 3b 0a 78 63 6f 6e 74 6c 6f 6f 70 73 74 61 74 2c 0a 78 65 78 69 74 6c 6f 6f 70 73 74 61 74   ┆op; xcontloopstat, xexitloopstat┆
0x097680…0976a0             3a 20 66 69 6e 64 5f 6c 6f 6f 70 5f 67 6f 74 6f 28 74 6f 6b 65 6e 29 3b 0a 78 65 78 69 74 6c 6f   ┆: find_loop_goto(token); xexitlo┆
0x0976a0…0976c0             63 6b 3a 20 20 20 20 20 66 69 6e 64 5f 65 78 69 74 6c 6f 63 6b 3b 0a 78 65 78 69 74 73 74 61 74   ┆ck:     find_exitlock; xexitstat┆
0x0976c0…0976e0             3a 20 20 20 20 20 66 69 6e 64 5f 65 78 69 74 3b 0a 78 66 6f 72 73 74 61 74 3a 20 20 20 20 20 20   ┆:     find_exit; xforstat:      ┆
0x0976e0…097700             66 69 6e 64 5f 66 6f 72 3b 0a 78 63 68 61 6e 6e 65 6c 3a 20 20 20 20 20 20 66 69 6e 64 5f 63 68   ┆find_for; xchannel:      find_ch┆
0x097700…097720             61 6e 6e 65 6c 3b 0a 78 63 61 73 65 73 74 61 74 3a 20 20 20 20 20 66 69 6e 64 5f 63 61 73 65 3b   ┆annel; xcasestat:     find_case;┆
0x097720…097740             0a 65 6c 73 65 20 65 6e 64 5f 73 74 61 74 20 3a 3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 69 66 20   ┆ else end_stat := true; end; if ┆
0x097740…097760             63 2e 73 74 61 63 6b 5f 73 69 7a 65 20 3c 3e 20 6f 6c 64 73 74 61 63 6b 20 74 68 65 6e 20 65 76   ┆c.stack_size <> oldstack then ev┆
0x097760…097780             61 6c 73 74 61 63 6b 5f 65 72 72 6f 72 3b 0a 75 6e 74 69 6c 20 65 6e 64 5f 73 74 61 74 3b 0a 65   ┆alstack_error; until end_stat; e┆
0x097780…0977a0             6e 64 3b 0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20 66 69 6e 64 5f 76 61 72 76 61 6c 75   ┆nd;      procedure  find_varvalu┆
0x0977a0…0977c0             65 28 20 76 61 72 20 20 76 3a 76 61 72 76 61 6c 75 65 5f 64 65 73 63 72 29 3b 0a 0a 76 61 72 20   ┆e( var  v:varvalue_descr);  var ┆
0x0977c0…0977e0             20 74 79 70 65 5f 76 2c 20 66 69 72 73 74 2c 20 6e 75 6d 62 65 72 2c 20 73 69 7a 65 2c 20 6e 69   ┆ type_v, first, number, size, ni┆
0x0977e0…097800             76 2c 20 6f 66 66 73 65 74 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 61 63 63 65 73 73 20 3a 20 66   ┆v, offset  : integer; access : f┆
0x097800…097820 (40, 0, 13) 72 61 6d 65 5f 6b 69 6e 64 3b 0a 20 20 20 20 20 74 65 6d 70 6c 5f 76 2c 20 76 61 20 20 3a 20 76   ┆rame_kind;      templ_v, va  : v┆
0x097820…097840             61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 66 69 6e 64   ┆araddr_descr;  begin        find┆
0x097840…097860             5f 76 61 72 61 64 64 72 28 20 76 61 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 76 61 2e 6b 69 6e 64   ┆_varaddr( va);        if va.kind┆
0x097860…097880             20 3d 20 70 61 63 6b 65 64 5f 61 72 72 20 74 68 65 6e 0a 20 20 20 20 20 20 62 65 67 69 6e 0a 20   ┆ = packed_arr then       begin  ┆
0x097880…0978a0             20 20 20 20 20 20 20 20 28 2a 20 20 70 75 73 68 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 61 6e   ┆        (*  push the value of an┆
0x0978a0…0978c0             20 65 6c 65 6d 65 6e 74 20 69 6e 20 61 20 70 61 63 6b 65 64 20 61 72 72 61 79 20 3a 20 20 2a 29   ┆ element in a packed array :  *)┆
0x0978c0…0978e0             0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 69 6e 74 70 61 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64   ┆ out_opcode(op_intpa); out_opcod┆
0x0978e0…097900             65 28 6f 70 5f 69 6e 70 64 76 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 76 73 66   ┆e(op_inpdv); out_opcode(op_revsf┆
0x097900…097920             29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 76 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20 20 76 2e 73 69   ┆);            v.kind := 1;  v.si┆
0x097920…097940             7a 65 20 3a 3d 20 32 0a 0a 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20   ┆ze := 2        end              ┆
0x097940…097960             65 6c 73 65 0a 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 69 6e 64 76 61 72 20 74 68 65 6e 0a 20 20   ┆else  if token = xindvar then   ┆
0x097960…097980             20 20 20 20 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 20 20 20 74 79 70 65 5f 76 20 3a 3d 20 69 6e   ┆    begin           type_v := in┆
0x097980…0979a0             5f 69 6e 74 65 67 65 72 3b 0a 0a 20 20 20 20 20 20 20 20 20 69 66 20 74 79 70 65 5f 76 20 3d 20   ┆_integer;           if type_v = ┆
0x0979a0…0979c0             66 69 65 6c 64 5f 74 79 70 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 62 65 67 69 6e 0a 66 69   ┆field_typ then          begin fi┆
0x0979c0…0979e0             72 73 74 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 6e 75 6d 62 65 72 20 3a 3d 20 69 6e   ┆rst := in_integer;  number := in┆
0x0979e0…097a00             5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 6e 75 6d 62 65 72 20 3d 20 38 20 74 68 65 6e 0a 62 65 67   ┆_integer; if number = 8 then beg┆
0x097a00…097a20 (40, 0, 14) 69 6e 20 28 2a 20 6f 70 74 69 6d 69 7a 65 20 38 2d 62 69 74 20 66 69 65 6c 64 73 20 61 73 20 62   ┆in (* optimize 8-bit fields as b┆
0x097a20…097a40             79 74 65 73 20 2a 29 0a 69 66 20 66 69 72 73 74 20 3d 20 30 20 74 68 65 6e 0a 74 79 70 65 5f 76   ┆ytes *) if first = 0 then type_v┆
0x097a40…097a60             20 3a 3d 20 62 79 74 65 5f 74 79 70 20 20 28 2a 20 6c 65 66 74 20 62 79 74 65 2c 20 64 6f 6e 27   ┆ := byte_typ  (* left byte, don'┆
0x097a60…097a80             74 20 63 68 61 6e 67 65 20 6f 66 66 73 65 74 20 2a 29 0a 65 6c 73 65 0a 69 66 20 66 69 72 73 74   ┆t change offset *) else if first┆
0x097a80…097aa0             20 3d 20 38 20 74 68 65 6e 0a 62 65 67 69 6e 20 20 28 2a 20 72 69 67 74 68 20 62 79 74 65 2c 20   ┆ = 8 then begin  (* rigth byte, ┆
0x097aa0…097ac0             61 64 64 20 6f 6e 65 20 74 6f 20 6f 66 66 73 65 74 20 2a 29 0a 76 61 2e 6f 66 66 73 65 74 20 3a   ┆add one to offset *) va.offset :┆
0x097ac0…097ae0             3d 20 76 61 2e 6f 66 66 73 65 74 20 2b 20 31 3b 0a 74 79 70 65 5f 76 20 3a 3d 20 62 79 74 65 5f   ┆= va.offset + 1; type_v := byte_┆
0x097ae0…097b00             74 79 70 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20   ┆typ; end; end;          end     ┆
0x097b00…097b20             20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 69 66 28 20 74 79 70 65 5f 76 20 3d 20   ┆     else          if( type_v = ┆
0x097b20…097b40             61 64 64 72 5f 74 79 70 20 29 20 6f 72 20 28 20 74 79 70 65 5f 76 20 3d 20 73 65 74 5f 74 79 70   ┆addr_typ ) or ( type_v = set_typ┆
0x097b40…097b60             20 29 20 74 68 65 6e 20 20 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 0a 0a 65 6c 73   ┆ ) then  size := in_integer  els┆
0x097b60…097b80             65 0a 69 66 20 74 79 70 65 5f 76 20 3d 20 64 79 6e 5f 74 79 70 20 74 68 65 6e 0a 62 65 67 69 6e   ┆e if type_v = dyn_typ then begin┆
0x097b80…097ba0             0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74 28 20 74 65 6d 70 6c 5f 76 20 29 3b 0a 73 69 7a 65   ┆ get_niv_offset( templ_v ); size┆
0x097ba0…097bc0             20 3a 3d 20 30 3b 20 20 28 2a 20 6e 6f 74 20 75 73 65 64 20 21 21 21 20 2a 29 0a 65 6e 64 3b 0a   ┆ := 0;  (* not used !!! *) end; ┆
0x097bc0…097be0             0a 20 20 20 20 20 20 20 20 20 63 61 73 65 20 74 79 70 65 5f 76 20 6f 66 0a 62 79 74 65 5f 74 79   ┆          case type_v of byte_ty┆
0x097be0…097c00             70 2c 0a 77 6f 72 64 5f 74 79 70 2c 0a 70 6f 69 6e 74 5f 74 79 70 3a 0a 62 65 67 69 6e 0a 77 69   ┆p, word_typ, point_typ: begin wi┆
0x097c00…097c20 (40, 0, 15) 74 68 20 76 61 20 64 6f 0a 6f 75 74 5f 6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 74 79 70   ┆th va do out_op_rev__(access,typ┆
0x097c20…097c40             65 5f 76 2c 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 0a 76 2e 6b 69 6e 64 20 3a   ┆e_v,c.niv-niv,offset);  v.kind :┆
0x097c40…097c60             3d 20 31 3b 0a 69 66 20 74 79 70 65 5f 76 20 3d 20 70 6f 69 6e 74 5f 74 79 70 20 74 68 65 6e 20   ┆= 1; if type_v = point_typ then ┆
0x097c60…097c80             76 2e 73 69 7a 65 20 3a 3d 20 34 20 65 6c 73 65 20 76 2e 73 69 7a 65 20 3a 3d 20 32 0a 0a 65 6e   ┆v.size := 4 else v.size := 2  en┆
0x097c80…097ca0             64 3b 0a 66 69 65 6c 64 5f 74 79 70 3a 0a 62 65 67 69 6e 0a 0a 28 2a 61 64 64 72 65 73 73 20 6f   ┆d; field_typ: begin  (*address o┆
0x097ca0…097cc0             6e 20 74 6f 70 20 6f 66 20 73 74 61 63 6b 2a 29 0a 77 69 74 68 20 76 61 20 64 6f 0a 63 61 73 65   ┆n top of stack*) with va do case┆
0x097cc0…097ce0             20 61 63 63 65 73 73 20 6f 66 0a 67 5f 66 72 61 6d 65 3a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70   ┆ access of g_frame:out_op_int(op┆
0x097ce0…097d00             5f 72 65 61 67 64 2c 6f 66 66 73 65 74 29 3b 0a 6c 5f 66 72 61 6d 65 3a 6f 75 74 5f 6f 70 5f 69   ┆_reagd,offset); l_frame:out_op_i┆
0x097d00…097d20             6e 74 28 6f 70 5f 72 65 61 6c 64 2c 6f 66 66 73 65 74 29 3b 0a 73 5f 66 72 61 6d 65 3a 6f 75 74   ┆nt(op_reald,offset); s_frame:out┆
0x097d20…097d40             5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c 6f 66 66 73 65 74 29 3b 0a 69 5f 66 72 61 6d   ┆_op_int(op_reasd,offset); i_fram┆
0x097d40…097d60             65 3a 6f 75 74 5f 6f 70 5f 72 65 61 28 63 2e 6e 69 76 2d 6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a   ┆e:out_op_rea(c.niv-niv,offset); ┆
0x097d60…097d80             65 6e 64 3b 20 28 2a 63 61 73 65 2a 29 0a 28 2a 66 69 65 6c 64 20 64 65 73 63 72 69 70 74 6f 72   ┆end; (*case*) (*field descriptor┆
0x097d80…097da0             20 6f 6e 20 74 6f 70 20 6f 66 20 73 74 61 63 6b 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70   ┆ on top of stack*) out_op_int(op┆
0x097da0…097dc0             5f 72 65 63 68 77 2c 66 69 72 73 74 2a 32 35 36 20 2b 20 66 69 72 73 74 20 2b 20 6e 75 6d 62 65   ┆_rechw,first*256 + first + numbe┆
0x097dc0…097de0             72 20 2d 31 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 76 73 66 29 3b 0a 76 2e 6b   ┆r -1); out_opcode(op_revsf); v.k┆
0x097de0…097e00             69 6e 64 20 3a 3d 20 31 3b 0a 76 2e 73 69 7a 65 20 3a 3d 20 32 3b 0a 65 6e 64 3b 0a 61 64 64 72   ┆ind := 1; v.size := 2; end; addr┆
0x097e00…097e20 (40, 1, 1)  5f 74 79 70 2c 0a 64 79 6e 5f 74 79 70 3a 0a 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 20 20 20 20   ┆_typ, dyn_typ: begin            ┆
0x097e20…097e40             20 20 6c 6f 61 64 5f 61 64 64 72 65 73 73 28 20 76 61 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 20   ┆  load_address( va, true);      ┆
0x097e40…097e60             20 20 20 20 20 20 20 76 2e 6b 69 6e 64 20 3a 3d 20 32 3b 20 20 76 2e 73 69 7a 65 20 3a 3d 20 73   ┆       v.kind := 2;  v.size := s┆
0x097e60…097e80             69 7a 65 0a 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 0a 20 20 20 73 65 74 5f 74 79 70 3a 20   ┆ize           end;     set_typ: ┆
0x097e80…097ea0             20 20 20 62 65 67 69 6e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 61 64 5f 61 64 64 72 65   ┆   begin              load_addre┆
0x097ea0…097ec0             73 73 28 20 76 61 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 5f 6f   ┆ss( va, true);             out_o┆
0x097ec0…097ee0             70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f   ┆pcode( op_rechw );             o┆
0x097ee0…097f00             75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69   ┆ut_start_param;  out_integer( si┆
0x097f00…097f20             7a 65 20 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 2e 6b 69 6e 64 20 3a 3d 20 31 3b 20   ┆ze );              v.kind := 1; ┆
0x097f20…097f40             20 20 76 2e 73 69 7a 65 20 3a 3d 20 73 69 7a 65 20 2b 20 32 0a 0a 20 20 20 20 20 20 20 20 20 65   ┆  v.size := size + 2           e┆
0x097f40…097f60             6e 64 0a 65 6e 64 3b 20 28 2a 20 63 61 73 65 20 74 79 70 65 5f 76 20 2a 29 0a 67 65 74 5f 74 6f   ┆nd end; (* case type_v *) get_to┆
0x097f60…097f80             6b 65 6e 3b 0a 69 66 20 28 74 79 70 65 5f 76 20 3d 20 73 65 74 5f 74 79 70 29 20 20 74 68 65 6e   ┆ken; if (type_v = set_typ)  then┆
0x097f80…097fa0             0a 62 65 67 69 6e 20 28 2a 20 69 66 20 61 20 73 69 6e 67 6c 65 20 73 65 74 76 61 72 69 61 62 6c   ┆ begin (* if a single setvariabl┆
0x097fa0…097fc0             65 20 6d 65 74 20 74 68 65 6e 20 6e 6f 74 65 20 73 65 74 61 74 6d 2a 29 0a 20 20 20 20 20 20 28   ┆e met then note setatm*)       (┆
0x097fc0…097fe0             2a 20 69 66 20 61 20 73 65 74 65 78 70 72 65 73 73 69 6f 6e 20 6d 65 74 20 74 68 65 6e 20 6f 75   ┆* if a setexpression met then ou┆
0x097fe0…098000             74 70 75 74 20 73 65 74 72 65 2a 29 0a 69 66 20 74 6f 6b 65 6e 20 3d 20 78 63 6f 6d 70 61 72 65   ┆tput setre*) if token = xcompare┆
0x098000…098020 (40, 1, 2)  20 74 68 65 6e 20 69 6e 5f 6b 69 6e 64 3a 3d 20 73 65 74 61 74 6d 0a 65 6c 73 65 20 6f 75 74 5f   ┆ then in_kind:= setatm else out_┆
0x098020…098040             73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 72 65 2c 73 69 7a 65 29 3b 0a 65 6e 64 3b 0a   ┆specopcode(op_setre,size); end; ┆
0x098040…098060             0a 65 6e 64 3b 20 28 2a 20 78 69 6e 64 76 61 72 20 2a 29 0a 0a 0a 65 6e 64 20 20 28 2a 20 20 66   ┆ end; (* xindvar *)   end  (*  f┆
0x098060…098080             69 6e 64 5f 76 61 72 76 61 6c 75 65 20 20 2a 29 3b 0a 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65   ┆ind_varvalue  *);      procedure┆
0x098080…0980a0             20 20 20 66 69 6e 64 5f 76 61 72 61 64 64 72 28 20 76 61 72 20 20 76 3a 20 76 61 72 61 64 64 72   ┆   find_varaddr( var  v: varaddr┆
0x0980a0…0980c0             5f 64 65 73 63 72 29 3b 0a 76 61 72 0a 20 20 20 20 20 72 5f 76 3a 20 76 61 72 76 61 6c 75 65 5f   ┆_descr); var      r_v: varvalue_┆
0x0980c0…0980e0             64 65 73 63 72 3b 0a 20 20 20 20 20 64 6f 70 65 5f 76 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63   ┆descr;      dope_v: varaddr_desc┆
0x0980e0…098100             72 3b 0a 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 2c 20 65 6e 64 5f 61 64 64 72 20 3a 20 62 6f   ┆r; get_next_token, end_addr : bo┆
0x098100…098120             6f 6c 65 61 6e 3b 0a 6d 69 6e 2c 6d 61 78 2c 6c 65 6e 67 74 68 3a 69 6e 74 65 67 65 72 3b 0a 0a   ┆olean; min,max,length:integer;  ┆
0x098120…098140             0a 62 65 67 69 6e 0a 0a 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 20 3a 3d 20 74 72 75 65 3b 0a   ┆ begin  get_next_token := true; ┆
0x098140…098160             0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 61 64 64 72 3a 0a 67 65 74 5f 6e 69 76 5f 6f   ┆  case token of xaddr: get_niv_o┆
0x098160…098180             66 66 73 65 74 20 28 76 29 3b 0a 78 63 61 64 64 72 3a 0a 20 20 20 62 65 67 69 6e 0a 20 20 20 20   ┆ffset (v); xcaddr:    begin     ┆
0x098180…0981a0             20 20 76 2e 6b 69 6e 64 20 3a 3d 20 73 74 61 63 6b 5f 61 64 64 72 3b 20 20 20 20 76 2e 6f 66 66   ┆  v.kind := stack_addr;    v.off┆
0x0981a0…0981c0             73 65 74 20 3a 3d 20 30 3b 20 20 20 20 76 2e 61 63 63 65 73 73 20 3a 3d 20 73 5f 66 72 61 6d 65   ┆set := 0;    v.access := s_frame┆
0x0981c0…0981e0             3b 0a 20 20 20 20 20 20 76 2e 73 69 7a 65 20 3a 3d 20 30 3b 0a 0a 20 20 20 20 20 20 6f 75 74 5f   ┆;       v.size := 0;        out_┆
0x0981e0…098200             6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61   ┆opcode( op_reaad ); out_start_pa┆
0x098200…098220 (40, 1, 3)  72 61 6d 3b 20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 69 6e 5f 69 6e 74 65 67 65   ┆ram;  out_lix (c_name, in_intege┆
0x098220…098240             72 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 67 65 74 5f 6e 65 78 74 5f 74 6f 6b   ┆r); end; else begin get_next_tok┆
0x098240…098260             65 6e 20 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 61 66 74 65 72 20 66 63 61 6c 6c 20 2a 29 0a 28   ┆en := false; (* after fcall *) (┆
0x098260…098280             2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 76 20 61 73 20 61 64 64 72 65 73 73 20 6f 6e 20 73 74 61   ┆* initialize v as address on sta┆
0x098280…0982a0             63 6b 20 2a 29 0a 77 69 74 68 20 76 20 64 6f 0a 62 65 67 69 6e 0a 6b 69 6e 64 20 3a 3d 20 73 74   ┆ck *) with v do begin kind := st┆
0x0982a0…0982c0             61 63 6b 5f 61 64 64 72 3b 20 6f 66 66 73 65 74 20 3a 3d 20 30 3b 20 61 63 63 65 73 73 20 3a 3d   ┆ack_addr; offset := 0; access :=┆
0x0982c0…0982e0             20 73 5f 66 72 61 6d 65 3b 0a 73 69 7a 65 20 3a 3d 20 30 3b 0a 65 6e 64 3b 20 28 2a 20 77 69 74   ┆ s_frame; size := 0; end; (* wit┆
0x0982e0…098300             68 20 2a 29 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 5f 61 64 64 72 20 3a 3d 20 66 61 6c 73   ┆h *) end; end;  end_addr := fals┆
0x098300…098320             65 3b 0a 72 65 70 65 61 74 0a 69 66 20 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 20 74 68 65 6e   ┆e; repeat if get_next_token then┆
0x098320…098340             0a 67 65 74 5f 74 6f 6b 65 6e 0a 65 6c 73 65 0a 67 65 74 5f 6e 65 78 74 5f 74 6f 6b 65 6e 20 3a   ┆ get_token else get_next_token :┆
0x098340…098360             3d 20 74 72 75 65 3b 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 20 78 66 69 65 6c 64 3a   ┆= true;  case token of   xfield:┆
0x098360…098380             0a 0a 20 20 20 20 20 20 62 65 67 69 6e 0a 20 20 20 20 20 20 20 20 20 76 2e 6f 66 66 73 65 74 20   ┆        begin          v.offset ┆
0x098380…0983a0             3a 3d 20 76 2e 6f 66 66 73 65 74 20 2b 20 69 6e 5f 69 6e 74 65 67 65 72 0a 20 20 20 20 20 20 65   ┆:= v.offset + in_integer       e┆
0x0983a0…0983c0             6e 64 3b 0a 0a 0a 78 64 79 6e 66 69 65 6c 64 20 3a 0a 62 65 67 69 6e 0a 0a 6c 6f 61 64 5f 61 64   ┆nd;   xdynfield : begin  load_ad┆
0x0983c0…0983e0             64 72 65 73 73 28 20 76 2c 20 74 72 75 65 20 29 3b 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74   ┆dress( v, true ); get_niv_offset┆
0x0983e0…098400             28 20 64 6f 70 65 5f 76 20 29 3b 0a 0a 77 69 74 68 20 64 6f 70 65 5f 76 20 64 6f 0a 6f 75 74 5f   ┆( dope_v );  with dope_v do out_┆
0x098400…098420 (40, 1, 4)  6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 77 6f 72 64 5f 74 79 70 2c 63 2e 6e 69 76 2d 6e   ┆op_rev__(access,word_typ,c.niv-n┆
0x098420…098440             69 76 2c 6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 75 61 64 64 20   ┆iv,offset); out_opcode( op_uadd ┆
0x098440…098460             29 3b 0a 0a 65 6e 64 3b 20 28 2a 20 64 79 6e 20 66 69 65 6c 64 20 2a 29 0a 0a 0a 20 78 69 6e 64   ┆);  end; (* dyn field *)    xind┆
0x098460…098480             65 78 65 78 70 72 3a 0a 0a 20 20 20 20 20 20 62 65 67 69 6e 0a 6c 6f 61 64 5f 61 64 64 72 65 73   ┆exexpr:        begin load_addres┆
0x098480…0984a0             73 20 28 76 2c 20 66 61 6c 73 65 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 67 65 74 5f 74 6f 6b 65   ┆s (v, false);           get_toke┆
0x0984a0…0984c0             6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 72 5f 76 29 3b 0a 0a 63 61 73 65 20 74 6f 6b 65 6e   ┆n; find_exprs( r_v);  case token┆
0x0984c0…0984e0             20 6f 66 0a 78 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 67 65 74 5f 6e 69 76 5f 6f 66 66 73 65 74   ┆ of xindex: begin get_niv_offset┆
0x0984e0…098500             20 28 64 6f 70 65 5f 76 29 3b 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 20 28 64 6f 70 65 5f 76 2c   ┆ (dope_v); load_address (dope_v,┆
0x098500…098520             20 74 72 75 65 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 69 6e 64 65 78 29 3b 0a 65 6e   ┆ true); out_opcode(op_index); en┆
0x098520…098540             64 3b 0a 78 63 69 6e 64 65 78 3a 0a 20 20 20 20 20 20 20 20 20 62 65 67 69 6e 0a 0a 20 20 20 20   ┆d; xcindex:          begin      ┆
0x098540…098560             20 20 20 20 20 20 20 20 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a   ┆        out_opcode( op_reaad ); ┆
0x098560…098580             6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d   ┆out_start_param;  out_lix (c_nam┆
0x098580…0985a0             65 2c 20 69 6e 5f 69 6e 74 65 67 65 72 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 6f 70 5f 69 6e   ┆e, in_integer); out_opcode(op_in┆
0x0985a0…0985c0             64 65 78 29 3b 0a 65 6e 64 3b 0a 78 68 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 6d 69 6e 20 3a 3d   ┆dex); end; xhindex: begin min :=┆
0x0985c0…0985e0             20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6d 61 78 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a   ┆ in_integer; max := in_integer; ┆
0x0985e0…098600             6c 65 6e 67 74 68 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 6c 65 6e 67 74 68 20   ┆length := in_integer; if length ┆
0x098600…098620 (40, 1, 5)  3e 20 32 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 69 6e 64   ┆> 2 then begin out_op_int(op_ind┆
0x098620…098640             68 5b 6d 69 6e 2c 30 5d 2c 6d 61 78 29 3b 0a 6f 75 74 5f 70 5f 69 6e 74 28 6c 65 6e 67 74 68 29   ┆h[min,0],max); out_p_int(length)┆
0x098640…098660             3b 0a 65 6e 64 20 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 69 6e 64 68 5b 6d 69   ┆; end else out_op_int(op_indh[mi┆
0x098660…098680             6e 2c 6c 65 6e 67 74 68 5d 2c 6d 61 78 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28   ┆n,length],max); end; else error(┆
0x098680…0986a0             70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 0a 20 20 20 20 20 20 20 20   ┆pass4code_error); end;          ┆
0x0986a0…0986c0             0a 20 20 20 20 20 20 65 6e 64 20 20 28 2a 20 20 74 5f 69 6e 64 65 78 65 78 70 72 20 20 2a 29 3b   ┆       end  (*  t_indexexpr  *);┆
0x0986c0…0986e0             0a 0a 78 69 6e 64 61 64 64 72 3a 0a 77 69 74 68 20 76 20 64 6f 0a 62 65 67 69 6e 0a 6f 75 74 5f   ┆  xindaddr: with v do begin out_┆
0x0986e0…098700             6f 70 5f 72 65 76 5f 5f 28 61 63 63 65 73 73 2c 70 6f 69 6e 74 5f 74 79 70 2c 63 2e 6e 69 76 2d   ┆op_rev__(access,point_typ,c.niv-┆
0x098700…098720             6e 69 76 2c 6f 66 66 73 65 74 29 3b 0a 6b 69 6e 64 20 3a 3d 20 73 74 61 63 6b 5f 61 64 64 72 3b   ┆niv,offset); kind := stack_addr;┆
0x098720…098740             0a 6f 66 66 73 65 74 3a 3d 20 30 3b 0a 61 63 63 65 73 73 3a 3d 73 5f 66 72 61 6d 65 3b 0a 65 6e   ┆ offset:= 0; access:=s_frame; en┆
0x098740…098760             64 20 28 2a 77 69 74 68 20 76 20 64 6f 2a 29 0a 0a 65 6c 73 65 20 65 6e 64 5f 61 64 64 72 20 3a   ┆d (*with v do*)  else end_addr :┆
0x098760…098780             3d 20 74 72 75 65 3b 0a 65 6e 64 3b 0a 75 6e 74 69 6c 20 65 6e 64 5f 61 64 64 72 3b 0a 0a 69 66   ┆= true; end; until end_addr;  if┆
0x098780…0987a0             20 74 6f 6b 65 6e 20 3d 20 78 70 61 63 6b 65 64 61 72 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 6c   ┆ token = xpackedarr then begin l┆
0x0987a0…0987c0             6f 61 64 5f 61 64 64 72 65 73 73 20 28 76 2c 20 74 72 75 65 29 3b 0a 0a 20 20 20 20 20 20 67 65   ┆oad_address (v, true);        ge┆
0x0987c0…0987e0             74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 65 78 70 72 73 28 20 72 5f 76 29 3b 0a 63 61 73 65 20   ┆t_token; find_exprs( r_v); case ┆
0x0987e0…098800             74 6f 6b 65 6e 20 6f 66 0a 78 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 67 65 74 5f 6e 69 76 5f 6f   ┆token of xindex: begin get_niv_o┆
0x098800…098820 (40, 1, 6)  66 66 73 65 74 28 64 6f 70 65 5f 76 29 3b 0a 6c 6f 61 64 5f 61 64 64 72 65 73 73 28 64 6f 70 65   ┆ffset(dope_v); load_address(dope┆
0x098820…098840             5f 76 2c 74 72 75 65 29 3b 0a 65 6e 64 3b 0a 78 63 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 6f 75   ┆_v,true); end; xcindex: begin ou┆
0x098840…098860             74 5f 6f 70 63 6f 64 65 28 6f 70 5f 72 65 61 61 64 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61   ┆t_opcode(op_reaad); out_start_pa┆
0x098860…098880             72 61 6d 3b 0a 6f 75 74 5f 6c 69 78 28 63 5f 6e 61 6d 65 2c 69 6e 5f 69 6e 74 65 67 65 72 29 3b   ┆ram; out_lix(c_name,in_integer);┆
0x098880…0988a0             0a 65 6e 64 3b 0a 78 68 69 6e 64 65 78 3a 0a 62 65 67 69 6e 0a 6d 69 6e 20 3a 3d 20 69 6e 5f 69   ┆ end; xhindex: begin min := in_i┆
0x0988a0…0988c0             6e 74 65 67 65 72 3b 0a 6d 61 78 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 6c 65 6e 67 74   ┆nteger; max := in_integer; lengt┆
0x0988c0…0988e0             68 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 66 20 6c 65 6e 67 74 68 20 3e 20 32 20 74   ┆h := in_integer; if length > 2 t┆
0x0988e0…098900             68 65 6e 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 69 6e 64 68 5b 6d 69 6e   ┆hen begin out_op_int(op_indh[min┆
0x098900…098920             2c 30 5d 2c 6d 61 78 29 3b 0a 6f 75 74 5f 70 5f 69 6e 74 28 6c 65 6e 67 74 68 29 3b 0a 65 6e 64   ┆,0],max); out_p_int(length); end┆
0x098920…098940             20 65 6c 73 65 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 69 6e 64 68 5b 6d 69 6e 2c 6c 65 6e   ┆ else out_op_int(op_indh[min,len┆
0x098940…098960             67 74 68 5d 2c 6d 61 78 29 3b 0a 65 6e 64 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73 34   ┆gth],max); end; else error(pass4┆
0x098960…098980             63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 0a 20 20 20 20 20 20 76 2e 6b 69 6e 64 20   ┆code_error); end;        v.kind ┆
0x098980…0989a0             3a 3d 20 70 61 63 6b 65 64 5f 61 72 72 3b 20 20 20 76 2e 73 69 7a 65 20 3a 3d 20 30 3b 0a 0a 67   ┆:= packed_arr;   v.size := 0;  g┆
0x0989a0…0989c0             65 74 5f 74 6f 6b 65 6e 3b 0a 0a 20 20 20 65 6e 64 0a 0a 0a 65 6e 64 20 20 20 28 2a 20 20 66 69   ┆et_token;     end   end   (*  fi┆
0x0989c0…0989e0             6e 64 5f 76 61 72 61 64 64 72 20 20 2a 29 20 3b 0a 0a 0a 0a 0a 70 72 6f 63 65 64 75 72 65 20 20   ┆nd_varaddr  *) ;     procedure  ┆
0x0989e0…098a00             66 69 6e 64 5f 69 6e 69 74 3b 0a 0a 76 61 72 0a 74 79 70 65 5f 6f 20 3a 20 69 6e 74 65 67 65 72   ┆find_init;  var type_o : integer┆
0x098a00…098a20 (40, 1, 7)  3b 0a 69 20 3a 20 69 6e 74 65 67 65 72 3b 0a 77 5f 6f 66 66 73 65 74 2c 20 6f 66 66 73 65 74 2c   ┆; i : integer; w_offset, offset,┆
0x098a20…098a40             20 6e 75 6d 62 65 72 2c 20 73 69 7a 65 2c 20 73 69 7a 65 5f 6c 2c 20 73 69 7a 65 5f 63 2c 20 6c   ┆ number, size, size_l, size_c, l┆
0x098a40…098a60             6f 77 65 72 2c 20 75 70 70 65 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 73 74 61 63 6b 5f 73 61 76   ┆ower, upper : integer; stack_sav┆
0x098a60…098a80             65 20 3a 20 69 6e 74 65 67 65 72 3b 0a 76 61 20 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b   ┆e : integer; va : varaddr_descr;┆
0x098a80…098aa0             0a 0a 0a 0a 62 65 67 69 6e 0a 0a 73 74 61 63 6b 5f 73 61 76 65 20 3a 3d 20 63 2e 73 74 61 63 6b   ┆    begin  stack_save := c.stack┆
0x098aa0…098ac0             5f 73 69 7a 65 3b 0a 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 0a 78 69 6e 69 74 69 61 6c 69   ┆_size;  case token of  xinitiali┆
0x098ac0…098ae0             7a 65 20 3a 0a 62 65 67 69 6e 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 66 69 6e 64 5f 76 61 72 61 64   ┆ze : begin get_token; find_varad┆
0x098ae0…098b00             64 72 28 20 76 61 29 3b 0a 63 61 73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 73 74 72 75 63 69 6e 69   ┆dr( va); case token of xstrucini┆
0x098b00…098b20             74 3a 0a 62 65 67 69 6e 0a 0a 73 69 7a 65 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 20   ┆t: begin  size := in_integer; i ┆
0x098b20…098b40             20 20 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 28 2a 20 6c 69 78 20 2a 29 0a 0a 6c 6f   ┆   := in_integer;  (* lix *)  lo┆
0x098b40…098b60             61 64 5f 61 64 64 72 65 73 73 28 20 76 61 2c 20 74 72 75 65 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f   ┆ad_address( va, true);  out_opco┆
0x098b60…098b80             64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b   ┆de( op_reaad ); out_start_param;┆
0x098b80…098ba0             20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c 20 69 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f   ┆  out_lix (c_name, i);  out_opco┆
0x098ba0…098bc0             64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b   ┆de( op_rechw ); out_start_param;┆
0x098bc0…098be0             20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a 65 20 29 3b 0a 6f 75 74 5f 6f 70 63 6f 64   ┆  out_integer( size ); out_opcod┆
0x098be0…098c00             65 20 28 6f 70 5f 6d 6f 76 65 67 29 0a 65 6e 64 3b 0a 78 73 69 6d 70 6c 65 69 6e 69 74 3a 0a 62   ┆e (op_moveg) end; xsimpleinit: b┆
0x098c00…098c20 (40, 1, 8)  65 67 69 6e 0a 0a 74 79 70 65 5f 6f 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 20 3a 3d   ┆egin  type_o := in_integer; i :=┆
0x098c20…098c40             20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63   ┆ in_integer;  out_opcode( op_rec┆
0x098c40…098c60             68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65   ┆hw ); out_start_param;  out_inte┆
0x098c60…098c80             67 65 72 28 20 69 20 29 3b 0a 0a 69 66 20 76 61 2e 6b 69 6e 64 20 3d 20 61 64 64 72 20 74 68 65   ┆ger( i );  if va.kind = addr the┆
0x098c80…098ca0             6e 0a 62 65 67 69 6e 0a 0a 69 66 20 76 61 2e 6e 69 76 20 3c 3e 20 63 2e 6e 69 76 20 74 68 65 6e   ┆n begin  if va.niv <> c.niv then┆
0x098ca0…098cc0             20 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 69 66 20 28 20   ┆  error(pass4code_error);  if ( ┆
0x098cc0…098ce0             74 79 70 65 5f 6f 20 3d 20 73 63 61 6c 61 72 5f 74 79 70 20 29 20 6f 72 20 28 20 74 79 70 65 5f   ┆type_o = scalar_typ ) or ( type_┆
0x098ce0…098d00             6f 20 3d 20 62 6f 6f 6c 5f 74 79 70 20 29 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20   ┆o = bool_typ ) then out_opcode( ┆
0x098d00…098d20             6f 70 5f 73 74 76 6c 62 20 29 0a 65 6c 73 65 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 69 6e 74 5f   ┆op_stvlb ) else if type_o = int_┆
0x098d20…098d40             74 79 70 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 6c 77 20 29 0a   ┆typ then out_opcode( op_stvlw ) ┆
0x098d40…098d60             65 6c 73 65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 75   ┆else error(pass4code_error);  ou┆
0x098d60…098d80             74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 76 61 2e   ┆t_start_param;  out_integer( va.┆
0x098d80…098da0             6f 66 66 73 65 74 20 29 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 69 66 20 76 61 2e 6b 69 6e 64 20 3d   ┆offset )  end  else if va.kind =┆
0x098da0…098dc0             20 73 74 61 63 6b 5f 61 64 64 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 0a 69 66 20 28 20 74 79 70   ┆ stack_addr then begin  if ( typ┆
0x098dc0…098de0             65 5f 6f 20 3d 20 73 63 61 6c 61 72 5f 74 79 70 20 29 20 6f 72 20 28 20 74 79 70 65 5f 6f 20 3d   ┆e_o = scalar_typ ) or ( type_o =┆
0x098de0…098e00             20 62 6f 6f 6c 5f 74 79 70 20 29 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f   ┆ bool_typ ) then out_opcode( op_┆
0x098e00…098e20 (40, 1, 9)  73 74 76 73 62 20 29 0a 65 6c 73 65 0a 69 66 20 74 79 70 65 5f 6f 20 3d 20 69 6e 74 5f 74 79 70   ┆stvsb ) else if type_o = int_typ┆
0x098e20…098e40             20 74 68 65 6e 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 73 77 20 29 0a 65 6c 73   ┆ then out_opcode( op_stvsw ) els┆
0x098e40…098e60             65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 75 74 5f 73   ┆e error(pass4code_error);  out_s┆
0x098e60…098e80             74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 76 61 2e 6f 66 66   ┆tart_param;  out_integer( va.off┆
0x098e80…098ea0             73 65 74 20 29 0a 0a 65 6e 64 0a 0a 65 6c 73 65 0a 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65   ┆set )  end  else error(pass4code┆
0x098ea0…098ec0             5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 78 73 65 74 69 6e 69 74 3a 0a 62 65 67 69 6e 0a 0a 6c   ┆_error); end; xsetinit: begin  l┆
0x098ec0…098ee0             6f 61 64 5f 61 64 64 72 65 73 73 28 20 76 61 2c 20 74 72 75 65 29 3b 0a 0a 73 69 7a 65 5f 6c 20   ┆oad_address( va, true);  size_l ┆
0x098ee0…098f00             3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 69 20 20 20 20 20 20 3a 3d 20 69 6e 5f 69 6e 74 65   ┆:= in_integer; i      := in_inte┆
0x098f00…098f20             67 65 72 3b 20 20 28 2a 6c 69 78 20 2a 29 0a 73 69 7a 65 5f 63 20 3a 3d 20 69 6e 5f 69 6e 74 65   ┆ger;  (*lix *) size_c := in_inte┆
0x098f20…098f40             67 65 72 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 61 64 20 29 3b 0a 6f 75   ┆ger;  out_opcode( op_reaad ); ou┆
0x098f40…098f60             74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 6c 69 78 20 28 63 5f 6e 61 6d 65 2c   ┆t_start_param;  out_lix (c_name,┆
0x098f60…098f80             20 69 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75   ┆ i);  out_opcode( op_rechw ); ou┆
0x098f80…098fa0             74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 73 69 7a   ┆t_start_param;  out_integer( siz┆
0x098fa0…098fc0             65 5f 63 20 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74 72 65 2c 73   ┆e_c ); out_specopcode(op_setre,s┆
0x098fc0…098fe0             69 7a 65 5f 63 29 3b 0a 0a 69 66 20 73 69 7a 65 5f 6c 20 3c 3e 20 73 69 7a 65 5f 63 20 74 68 65   ┆ize_c);  if size_l <> size_c the┆
0x098fe0…099000             6e 0a 62 65 67 69 6e 0a 0a 63 6f 64 65 5f 73 74 61 74 5f 74 6f 5f 64 79 6e 28 20 73 69 7a 65 5f   ┆n begin  code_stat_to_dyn( size_┆
0x099000…099020 (40, 1, 10) 63 20 2b 20 32 20 29 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 63 68 77 20 29   ┆c + 2 );  out_opcode( op_rechw )┆
0x099020…099040             3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28   ┆; out_start_param;  out_integer(┆
0x099040…099060             20 73 69 7a 65 5f 6c 20 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73 65 74   ┆ size_l ); out_specopcode(op_set┆
0x099060…099080             61 64 2c 73 69 7a 65 5f 6c 20 2b 20 32 29 3b 0a 0a 65 6e 64 3b 0a 6f 75 74 5f 73 70 65 63 6f 70   ┆ad,size_l + 2);  end; out_specop┆
0x099080…0990a0             63 6f 64 65 28 6f 70 5f 73 65 74 73 74 2c 2d 73 69 7a 65 5f 6c 29 3b 0a 65 6e 64 3b 0a 65 6c 73   ┆code(op_setst,-size_l); end; els┆
0x0990a0…0990c0             65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 65   ┆e error(pass4code_error); end; e┆
0x0990c0…0990e0             6e 64 3b 0a 0a 78 65 78 74 65 78 63 65 70 74 69 6f 6e 3a 0a 77 69 74 68 20 65 78 63 5f 64 65 73   ┆nd;  xextexception: with exc_des┆
0x0990e0…099100             63 72 20 64 6f 0a 62 65 67 69 6e 0a 0a 73 74 61 74 65 20 3a 3d 20 31 3b 0a 69 6e 74 65 72 6e 61   ┆cr do begin  state := 1; interna┆
0x099100…099120             6c 20 3a 3d 20 66 61 6c 73 65 3b 0a 6b 65 79 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a   ┆l := false; key := in_integer;  ┆
0x099120…099140             65 6e 64 3b 0a 0a 78 65 78 63 65 70 74 69 6f 6e 20 3a 0a 77 69 74 68 20 65 78 63 5f 64 65 73 63   ┆end;  xexception : with exc_desc┆
0x099140…099160             72 20 64 6f 0a 62 65 67 69 6e 0a 0a 73 74 61 74 65 20 3a 3d 20 31 3b 0a 69 6e 74 65 72 6e 61 6c   ┆r do begin  state := 1; internal┆
0x099160…099180             20 3a 3d 20 74 72 75 65 3b 0a 6e 69 76 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 20 20 20 6c   ┆ := true; niv := in_integer;   l┆
0x099180…0991a0             69 78 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 0a 0a 65 6e 64 3b 0a 0a 0a 65 6c 73 65 0a 65 72   ┆ix := in_integer  end;   else er┆
0x0991a0…0991c0             72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 20 20 28 2a 20 20   ┆ror(pass4code_error); end;  (*  ┆
0x0991c0…0991e0             63 61 73 65 20 20 74 6f 6b 65 6e 20 20 6f 66 20 2e 2e 2e 2e 2e 2e 2e 20 20 2a 29 0a 0a 69 66 20   ┆case  token  of .......  *)  if ┆
0x0991e0…099200             73 74 61 63 6b 5f 73 61 76 65 20 3c 3e 20 63 2e 73 74 61 63 6b 5f 73 69 7a 65 20 74 68 65 6e 20   ┆stack_save <> c.stack_size then ┆
0x099200…099220 (40, 1, 11) 20 65 76 61 6c 73 74 61 63 6b 5f 65 72 72 6f 72 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 0a 65   ┆ evalstack_error;  get_token;  e┆
0x099220…099240             6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 69 6e 69 74 20 20 2a 29 3b 0a 0a 0a 0a 0a 70 72 6f 63 65   ┆nd  (*  find_init  *);     proce┆
0x099240…099260             64 75 72 65 20 20 66 69 6e 64 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 28 20 76 61 72 20 73 69 7a   ┆dure  find_processparam( var siz┆
0x099260…099280             65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3a 20 69 6e 74 65 67 65 72 20 29   ┆e_of_function_result : integer )┆
0x099280…0992a0             3b 0a 0a 76 61 72 0a 6f 66 66 73 65 74 5f 31 2c 20 6f 66 66 73 65 74 5f 32 2c 20 6f 66 66 73 65   ┆;  var offset_1, offset_2, offse┆
0x0992a0…0992c0             74 5f 33 2c 0a 73 74 61 63 6b 5f 73 69 7a 65 2c 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 3a 20   ┆t_3, stack_size, param_length : ┆
0x0992c0…0992e0             69 6e 74 65 67 65 72 3b 0a 76 3a 20 76 61 72 61 64 64 72 5f 64 65 73 63 72 3b 0a 0a 62 65 67 69   ┆integer; v: varaddr_descr;  begi┆
0x0992e0…099300             6e 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 20 20 28 2a 20 73 6b 69 70 3a 20 78 70 72 6f 63 65 73 73   ┆n  get_token;  (* skip: xprocess┆
0x099300…099320             70 61 72 61 6d 20 2a 29 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 76 61 72 70 6f 69 6e 74 65 72   ┆param *) if token <> xvarpointer┆
0x099320…099340             20 74 68 65 6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f   ┆ then error(pass4code_error);  o┆
0x099340…099360             66 66 73 65 74 5f 31 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 67 65 74 5f 74 6f 6b 65   ┆ffset_1 := in_integer;  get_toke┆
0x099360…099380             6e 3b 0a 66 69 6e 64 5f 76 61 72 61 64 64 72 28 76 29 3b 0a 77 69 74 68 20 76 20 64 6f 0a 69 66   ┆n; find_varaddr(v); with v do if┆
0x099380…0993a0             20 6b 69 6e 64 3d 61 64 64 72 20 74 68 65 6e 0a 62 65 67 69 6e 0a 69 66 20 6e 69 76 20 3d 20 63   ┆ kind=addr then begin if niv = c┆
0x0993a0…0993c0             6f 6e 73 74 5f 6e 69 76 5f 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65   ┆onst_niv_0 then out_op_int(op_re┆
0x0993c0…0993e0             61 67 64 2c 6f 66 66 73 65 74 29 0a 65 6c 73 65 0a 69 66 20 6e 69 76 20 3d 20 63 2e 6e 69 76 20   ┆agd,offset) else if niv = c.niv ┆
0x0993e0…099400             74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 6c 64 2c 6f 66 66 73 65 74 29   ┆then out_op_int(op_reald,offset)┆
0x099400…099420 (40, 1, 12) 0a 65 6c 73 65 0a 62 65 67 69 6e 0a 6f 75 74 5f 6f 70 5f 72 65 61 28 63 2e 6e 69 76 2d 6e 69 76   ┆ else begin out_op_rea(c.niv-niv┆
0x099420…099440             2c 6f 66 66 73 65 74 29 3b 0a 65 6e 64 3b 0a 65 6e 64 20 28 2a 20 6b 69 6e 64 3d 61 64 64 72 20   ┆,offset); end; end (* kind=addr ┆
0x099440…099460             2a 29 0a 65 6c 73 65 20 28 2a 20 73 74 61 63 6b 5f 61 64 64 72 20 2a 29 0a 69 66 20 6f 66 66 73   ┆*) else (* stack_addr *) if offs┆
0x099460…099480             65 74 3c 3e 30 20 74 68 65 6e 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 61 73 64 2c 20   ┆et<>0 then out_op_int(op_reasd, ┆
0x099480…0994a0             6f 66 66 73 65 74 29 3b 0a 6f 75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 73 74 61 72 74 20   ┆offset); out_comment( '   start ┆
0x0994a0…0994c0             6f 66 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 2e 20 6c 69 73 74 20 2e 20 27 20 29 3b 0a 0a 6f   ┆of process param. list . ' );  o┆
0x0994c0…0994e0             75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 6c 61 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74   ┆ut_opcode( op_stvla ); out_start┆
0x0994e0…099500             5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f 66 66 73 65 74 5f 31 20 29   ┆_param;  out_integer( offset_1 )┆
0x099500…099520             3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 78 64 20 29 3b 0a 0a 6f 75 74 5f   ┆;  out_opcode( op_reaxd );  out_┆
0x099520…099540             6f 70 63 6f 64 65 28 20 6f 70 5f 72 65 61 73 64 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61   ┆opcode( op_reasd ); out_start_pa┆
0x099540…099560             72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 31 20 29 3b 0a 0a 69 66 20 74 6f 6b 65   ┆ram;  out_integer( 1 );  if toke┆
0x099560…099580             6e 20 3c 3e 20 78 74 65 6d 70 6f 69 6e 74 65 72 20 74 68 65 6e 20 65 72 72 6f 72 28 70 61 73 73   ┆n <> xtempointer then error(pass┆
0x099580…0995a0             34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 66 66 73 65 74 5f 32 20 3a 3d 20 69 6e 5f 69 6e   ┆4code_error);  offset_2 := in_in┆
0x0995a0…0995c0             74 65 67 65 72 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 6c 61 20 29 3b 0a   ┆teger;  out_opcode( op_stvla ); ┆
0x0995c0…0995e0             6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f   ┆out_start_param;  out_integer( o┆
0x0995e0…099600             66 66 73 65 74 5f 32 20 29 3b 0a 0a 73 74 61 63 6b 5f 73 69 7a 65 20 3a 3d 20 63 2e 73 74 61 63   ┆ffset_2 );  stack_size := c.stac┆
0x099600…099620 (40, 1, 13) 6b 5f 73 69 7a 65 3b 0a 0a 66 69 6e 64 5f 61 72 67 6c 69 73 74 28 20 70 72 65 64 28 6f 70 65 6e   ┆k_size;  find_arglist( pred(open┆
0x099620…099640             5f 63 61 6c 6c 29 20 28 2a 20 63 6c 6f 73 65 64 20 6f 62 6a 65 63 74 20 2a 29 2c 20 73 69 7a 65   ┆_call) (* closed object *), size┆
0x099640…099660             5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 29 3b 0a 0a 70 61 72 61 6d 5f 6c 65   ┆_of_function_result );  param_le┆
0x099660…099680             6e 67 74 68 20 3a 3d 20 63 2e 73 74 61 63 6b 5f 73 69 7a 65 20 2d 20 73 74 61 63 6b 5f 73 69 7a   ┆ngth := c.stack_size - stack_siz┆
0x099680…0996a0             65 3b 0a 0a 69 66 20 74 6f 6b 65 6e 20 3c 3e 20 78 61 72 67 6c 69 73 74 73 69 7a 65 20 74 68 65   ┆e;  if token <> xarglistsize the┆
0x0996a0…0996c0             6e 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64 65 5f 65 72 72 6f 72 29 3b 0a 0a 6f 66 66 73 65   ┆n error(pass4code_error);  offse┆
0x0996c0…0996e0             74 5f 33 20 3a 3d 20 69 6e 5f 69 6e 74 65 67 65 72 3b 0a 0a 6f 75 74 5f 6f 70 63 6f 64 65 28 20   ┆t_3 := in_integer;  out_opcode( ┆
0x0996e0…099700             6f 70 5f 72 65 63 68 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61 72 61 6d 3b 20 20 6f 75   ┆op_rechw ); out_start_param;  ou┆
0x099700…099720             74 5f 69 6e 74 65 67 65 72 28 20 70 61 72 61 6d 5f 6c 65 6e 67 74 68 20 29 3b 0a 0a 6f 75 74 5f   ┆t_integer( param_length );  out_┆
0x099720…099740             6f 70 63 6f 64 65 28 20 6f 70 5f 73 74 76 6c 77 20 29 3b 0a 6f 75 74 5f 73 74 61 72 74 5f 70 61   ┆opcode( op_stvlw ); out_start_pa┆
0x099740…099760             72 61 6d 3b 20 20 6f 75 74 5f 69 6e 74 65 67 65 72 28 20 6f 66 66 73 65 74 5f 33 20 29 3b 0a 6f   ┆ram;  out_integer( offset_3 ); o┆
0x099760…099780             75 74 5f 63 6f 6d 6d 65 6e 74 28 20 27 20 20 20 65 6e 64 20 6f 66 20 70 72 6f 63 65 73 73 20 70   ┆ut_comment( '   end of process p┆
0x099780…0997a0             61 72 61 6d 2e 20 6c 69 73 74 20 2e 20 27 20 29 3b 0a 0a 67 65 74 5f 74 6f 6b 65 6e 3b 0a 63 61   ┆aram. list . ' );  get_token; ca┆
0x0997a0…0997c0             73 65 20 74 6f 6b 65 6e 20 6f 66 0a 78 70 72 6f 63 63 61 6c 6c 2c 0a 78 65 78 74 70 72 6f 63 63   ┆se token of xproccall, xextprocc┆
0x0997c0…0997e0             61 6c 6c 3a 0a 66 69 6e 64 5f 70 72 6f 63 5f 63 61 6c 6c 28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e   ┆all: find_proc_call( size_of_fun┆
0x0997e0…099800             63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 29 3b 0a 78 66 75 6e 63 63 61 6c 6c 2c 0a 78 65 78 74 66   ┆ction_result ); xfunccall, xextf┆
0x099800…099820 (40, 1, 14) 75 6e 63 63 61 6c 6c 3a 0a 62 65 67 69 6e 0a 0a 66 69 6e 64 5f 63 61 6c 6c 28 20 73 69 7a 65 5f   ┆unccall: begin  find_call( size_┆
0x099820…099840             6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 29 3b 0a 73 6b 69 70 5f 74 6f 6b 65 6e   ┆of_function_result ); skip_token┆
0x099840…099860             20 28 78 66 63 61 6c 6c 29 3b 0a 65 6e 64 3b 0a 78 70 72 6f 63 65 73 73 70 61 72 61 6d 3a 0a 66   ┆ (xfcall); end; xprocessparam: f┆
0x099860…099880             69 6e 64 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 28 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69   ┆ind_processparam( size_of_functi┆
0x099880…0998a0             6f 6e 5f 72 65 73 75 6c 74 20 29 3b 0a 65 6c 73 65 20 65 72 72 6f 72 28 70 61 73 73 34 63 6f 64   ┆on_result ); else error(pass4cod┆
0x0998a0…0998c0             65 5f 65 72 72 6f 72 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74   ┆e_error); end;  if size_of_funct┆
0x0998c0…0998e0             69 6f 6e 5f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 20 28 2a 20 6d 75 73 74 20 62 65 20   ┆ion_result <> 0 then (* must be ┆
0x0998e0…099900             32 20 6f 72 20 34 20 2a 29 0a 6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 73 74 76 5b 6c 2c 63 6f   ┆2 or 4 *) out_op_int(op_stv[l,co┆
0x099900…099920             6e 76 5f 74 79 70 65 5b 73 69 7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 5d   ┆nv_type[size_of_function_result]┆
0x099920…099940             5d 2c 6f 66 66 73 65 74 5f 32 29 3b 0a 6f 75 74 5f 73 70 65 63 6f 70 63 6f 64 65 28 6f 70 5f 73   ┆],offset_2); out_specopcode(op_s┆
0x099940…099960             74 6e 68 62 2c 2d 70 61 72 61 6d 5f 6c 65 6e 67 74 68 29 3b 0a 0a 69 66 20 73 69 7a 65 5f 6f 66   ┆tnhb,-param_length);  if size_of┆
0x099960…099980             5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 20 3c 3e 20 30 20 74 68 65 6e 0a 28 2a 20 6c 6f   ┆_function_result <> 0 then (* lo┆
0x099980…0999a0             61 64 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 73 75 6c 74 20 61 67 61 69 6e 20 2a 29 0a   ┆ad the function result again *) ┆
0x0999a0…0999c0             6f 75 74 5f 6f 70 5f 69 6e 74 28 6f 70 5f 72 65 76 5b 6c 2c 63 6f 6e 76 5f 74 79 70 65 5b 73 69   ┆out_op_int(op_rev[l,conv_type[si┆
0x0999c0…0999e0             7a 65 5f 6f 66 5f 66 75 6e 63 74 69 6f 6e 5f 72 65 73 75 6c 74 5d 5d 2c 6f 66 66 73 65 74 5f 32   ┆ze_of_function_result]],offset_2┆
0x0999e0…099a00             29 3b 0a 0a 0a 73 6b 69 70 5f 74 6f 6b 65 6e 20 28 78 65 6e 64 70 72 6f 63 65 73 73 70 61 72 61   ┆);   skip_token (xendprocesspara┆
0x099a00…099a20 (40, 1, 15) 6d 29 3b 0a 0a 65 6e 64 20 20 28 2a 20 20 66 69 6e 64 5f 70 72 6f 63 65 73 73 70 61 72 61 6d 20   ┆m);  end  (*  find_processparam ┆
0x099a20…099a40             20 2a 29 3b 0a 0a 0a 0a 0a 0a 28 2a 20 20 20 20 20 20 20 62 6f 64 79 20 6f 66 20 70 61 73 73 35   ┆ *);      (*       body of pass5┆
0x099a40…099a60             3a 20 20 20 20 20 20 2a 29 0a 0a 62 65 67 69 6e 0a 0a 28 2a 20 20 69 6e 69 74 69 61 6c 69 7a 65   ┆:      *)  begin  (*  initialize┆
0x099a60…099a80             20 74 68 65 20 73 65 74 20 6f 66 20 68 61 72 64 20 65 78 63 65 70 74 69 6f 6e 73 20 3a 20 20 2a   ┆ the set of hard exceptions :  *┆
0x099a80…099aa0             29 0a 0a 65 78 63 5f 68 61 72 64 20 3a 3d 20 5b 20 30 20 2e 2e 20 63 5f 65 78 63 5f 6d 61 78 20   ┆)  exc_hard := [ 0 .. c_exc_max ┆
0x099aa0…099ac0             5d 3b 0a 0a 28 2a 20 20 20 20 20 69 6e 69 74 69 61 6c 69 7a 65 20 70 61 73 73 35 20 6f 70 74 69   ┆];  (*     initialize pass5 opti┆
0x099ac0…099ae0             6f 6e 73 20 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 73 20 3a 20 20 20 2a 29   ┆ons to the default values :   *)┆
0x099ae0…099b00             0a 0a 70 72 65 73 65 72 76 65 5f 6f 70 74 69 6f 6e 3a 3d 20 66 61 6c 73 65 3b 20 28 2a 20 70 72   ┆  preserve_option:= false; (* pr┆
0x099b00…099b20             65 73 65 72 76 65 2e 6e 6f 2c 20 69 2e 65 2e 20 72 65 6d 6f 76 65 20 70 61 73 73 34 63 6f 64 65   ┆eserve.no, i.e. remove pass4code┆
0x099b20…099b40             20 61 66 74 65 72 20 75 73 65 20 2a 29 0a 70 72 6f 6c 6f 67 5f 79 65 73 20 3a 3d 20 74 72 75 65   ┆ after use *) prolog_yes := true┆
0x099b40…099b60             3b 0a 65 70 69 6c 6f 67 5f 79 65 73 20 3a 3d 20 74 72 75 65 3b 0a 63 6f 6d 70 72 65 73 73 5f 79   ┆; epilog_yes := true; compress_y┆
0x099b60…099b80             65 73 20 3a 3d 20 74 72 75 65 3b 0a 63 61 6c 6c 70 61 73 73 36 5f 79 65 73 20 3a 3d 20 74 72 75   ┆es := true; callpass6_yes := tru┆
0x099b80…099ba0             65 3b 0a 73 74 61 74 61 63 63 5f 79 65 73 20 3a 3d 20 66 61 6c 73 65 3b 0a 6d 65 61 73 75 72 65   ┆e; statacc_yes := false; measure┆
0x099ba0…099bc0             6d 65 6e 74 5f 79 65 73 20 3a 3d 20 66 61 6c 73 65 3b 0a 73 75 6d 6d 61 72 79 5f 79 65 73 20 3a   ┆ment_yes := false; summary_yes :┆
0x099bc0…099be0             3d 20 66 61 6c 73 65 3b 0a 65 6e 66 6f 72 63 65 64 5f 65 78 63 65 70 74 69 6f 6e 5f 61 70 70 20   ┆= false; enforced_exception_app ┆
0x099be0…099c00             3a 3d 20 2d 31 3b 20 28 2a 20 75 73 65 20 73 79 6d 62 6f 6c 69 63 20 76 61 6c 75 65 20 66 72 6f   ┆:= -1; (* use symbolic value fro┆
0x099c00…099c20 (41, 0, 1)  6d 20 6c 61 6d 62 64 61 65 6e 76 20 2a 29 0a 65 6e 66 6f 72 63 65 64 5f 63 72 65 61 74 65 5f 73   ┆m lambdaenv *) enforced_create_s┆
0x099c20…099c40             69 7a 65 20 3a 3d 20 30 3b 20 28 2a 20 69 2e 65 2e 20 75 73 65 20 63 6f 6d 70 75 74 65 64 20 76   ┆ize := 0; (* i.e. use computed v┆
0x099c40…099c60             61 6c 75 65 20 2a 29 0a 68 65 61 70 5f 69 6e 69 74 3a 3d 20 66 61 6c 73 65 3b 0a 6f 70 65 6e 72   ┆alue *) heap_init:= false; openr┆
0x099c60…099c80             6f 75 74 69 6e 65 5f 79 65 73 20 3a 3d 20 74 72 75 65 3b 0a 64 79 6e 5f 65 76 61 6c 5f 73 74 61   ┆outine_yes := true; dyn_eval_sta┆
0x099c80…099ca0             63 6b 3a 3d 20 66 61 6c 73 65 3b 0a 0a 28 2a 20 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20   ┆ck:= false;  (*  initialize the ┆
0x099ca0…099cc0             70 73 65 75 64 6f 20 63 6c 61 73 73 65 73 3a 20 20 2a 29 0a 0a 6d 65 73 73 5f 73 75 6d 6d 5f 73   ┆pseudo classes:  *)  mess_summ_s┆
0x099cc0…099ce0             74 61 74 65 20 3a 3d 20 30 3b 20 20 28 2a 20 62 65 66 6f 72 65 20 68 65 61 64 69 6e 67 20 2a 29   ┆tate := 0;  (* before heading *)┆
0x099ce0…099d00             0a 6f 75 74 5f 69 6e 69 74 3b 0a 69 6e 5f 69 6e 69 74 3b 0a 65 78 74 5f 69 6e 69 74 3b 0a 20 20   ┆ out_init; in_init; ext_init;   ┆
0x099d00…099d20             73 74 61 74 5f 72 65 73 65 74 3b 0a 0a 28 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 66 72 65 65 20   ┆stat_reset;  (* initialize free ┆
0x099d20…099d40             6c 69 73 74 20 6f 66 20 63 61 73 65 20 74 61 62 6c 65 20 65 6e 74 72 79 20 6e 6f 64 65 73 20 2a   ┆list of case table entry nodes *┆
0x099d40…099d60             29 0a 63 61 73 65 5f 74 61 62 5f 66 72 65 65 6c 69 73 74 3a 3d 20 6e 69 6c 3b 0a 0a 0a 28 2a 20   ┆) case_tab_freelist:= nil;   (* ┆
0x099d60…099d80             20 20 20 20 20 67 65 6e 65 72 61 74 65 20 63 6f 64 65 20 66 6f 72 20 6f 6e 65 20 70 72 6f 67 72   ┆     generate code for one progr┆
0x099d80…099da0             61 6d 3a 20 20 20 20 20 20 2a 29 0a 0a 66 69 6e 64 5f 70 72 6f 67 72 61 6d 3b 0a 0a 28 2a 20 20   ┆am:      *)  find_program;  (*  ┆
0x099da0…099dc0             20 20 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65 20 70 73 65 75 64 6f 20 63 6c 61 73 73 65 73 3a   ┆   terminate the pseudo classes:┆
0x099dc0…099de0             20 20 20 20 20 20 20 20 2a 29 0a 69 66 20 73 74 61 74 61 63 63 5f 79 65 73 20 74 68 65 6e 20 73   ┆        *) if statacc_yes then s┆
0x099de0…099e00             74 61 74 5f 70 72 69 6e 74 3b 0a 0a 0a 31 3a 20 20 20 20 20 20 28 2a 20 20 20 20 20 65 78 69 74   ┆tat_print;   1:      (*     exit┆
0x099e00…099e20 (41, 0, 2)  20 66 72 6f 6d 20 66 61 74 61 6c 20 65 72 72 6f 72 73 20 20 20 20 20 20 2a 29 0a 0a 70 61 73 73   ┆ from fatal errors      *)  pass┆
0x099e20…099e40             35 5f 6f 6b 20 3a 3d 20 70 61 73 73 35 5f 6f 6b 20 61 6e 64 20 63 61 6c 6c 70 61 73 73 36 5f 79   ┆5_ok := pass5_ok and callpass6_y┆
0x099e40…099e60             65 73 3b 0a 65 6f 6d 3b 0a 0a 69 66 20 73 75 6d 6d 61 72 79 5f 79 65 73 20 74 68 65 6e 0a 62 65   ┆es; eom;  if summary_yes then be┆
0x099e60…099e80             67 69 6e 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29 3b 0a 68 65 61 70 66 72 65 65 20 3a 3d   ┆gin writeln(output); heapfree :=┆
0x099e80…099ea0             20 6d 65 6d 61 76 61 69 6c 3b 0a 72 65 6c 65 61 73 65 28 68 65 61 70 6f 72 67 29 3b 0a 77 72 69   ┆ memavail; release(heaporg); wri┆
0x099ea0…099ec0             74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 48 65 65 70 20 73 70 61 63 65 20 75 73 65 64 20 69 6e   ┆teln(output, 'Heep space used in┆
0x099ec0…099ee0             20 62 79 74 65 73 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 0a 20 20   ┆ bytes:                    ',   ┆
0x099ee0…099f00             20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 61 76 61 69 6c 20 2d 20 68 65 61 70 66 72 65   ┆              memavail - heapfre┆
0x099f00…099f20             65 29 3b 0a 77 72 69 74 65 6c 6e 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 20 20 20 20 20 28 2a 20 20 70   ┆e); writeln; end;  end     (*  p┆
0x099f20…099f40             61 73 73 35 20 20 2a 29 3b 0a 0a 62 65 67 69 6e 0a 6e 65 65 64 65 64 5f 73 69 7a 65 20 3a 3d 20   ┆ass5  *);  begin needed_size := ┆
0x099f40…099f60             65 78 74 5f 74 61 62 5f 6d 61 78 3b 0a 6e 65 65 64 65 64 5f 73 69 7a 65 20 3a 3d 20 6e 65 65 64   ┆ext_tab_max; needed_size := need┆
0x099f60…099f80             65 64 5f 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 65 78 74 5f 64 65 73 63 72 29 3b 0a 69 66 20   ┆ed_size * sizeof(ext_descr); if ┆
0x099f80…099fa0             6d 61 78 61 76 61 69 6c 20 3e 3d 20 6f 72 64 28 6e 65 65 64 65 64 5f 73 69 7a 65 29 20 74 68 65   ┆maxavail >= ord(needed_size) the┆
0x099fa0…099fc0             6e 0a 62 65 67 69 6e 0a 67 65 74 6d 65 6d 28 70 5f 65 78 74 5f 74 61 62 2c 20 6e 65 65 64 65 64   ┆n begin getmem(p_ext_tab, needed┆
0x099fc0…099fe0             5f 73 69 7a 65 29 3b 0a 70 61 73 73 35 28 70 5f 65 78 74 5f 74 61 62 5e 2c 20 70 61 73 73 35 5f   ┆_size); pass5(p_ext_tab^, pass5_┆
0x099fe0…09a000             6f 6b 29 3b 0a 65 6e 64 20 65 6c 73 65 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70   ┆ok); end else begin writeln(outp┆
0x09a000…09a020 (41, 0, 3)  75 74 2c 20 27 74 6f 6f 20 6d 61 6e 79 20 65 78 74 65 72 6e 61 6c 73 20 27 2c 20 65 78 74 5f 74   ┆ut, 'too many externals ', ext_t┆
0x09a020…09a040             61 62 5f 6d 61 78 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 20 20 20 20 20 61   ┆ab_max); writeln(output, '     a┆
0x09a040…09a060             76 61 69 6c 61 62 6c 65 20 20 20 20 20 27 2c 20 6d 61 78 61 76 61 69 6c 20 64 69 76 20 73 69 7a   ┆vailable     ', maxavail div siz┆
0x09a060…09a080             65 6f 66 28 65 78 74 5f 64 65 73 63 72 29 29 3b 0a 65 6e 64 3b 0a 65 6e 64 3b 0a 01 45 20 31 0a   ┆eof(ext_descr)); end; end;  E 1 ┆
0x09a080…09a0a0             20 6d 65 6d 61 76 61 69 6c 3b 0a 72 65 6c 65 61 73 65 28 68 65 61 70 6f 72 67 29 3b 0a 77 72 69   ┆ memavail; release(heaporg); wri┆
0x09a0a0…09a0c0             74 65 6c 6e 28 6f 75 74 70 75 74 2c 20 27 48 65 65 70 20 73 70 61 63 65 20 75 73 65 64 20 69 6e   ┆teln(output, 'Heep space used in┆
0x09a0c0…09a0e0             20 62 79 74 65 73 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 0a 20 20   ┆ bytes:                    ',   ┆
0x09a0e0…09a100             20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 61 76 61 69 6c 20 2d 20 68 65 61 70 66 72 65   ┆              memavail - heapfre┆
0x09a100…09a120             65 29 3b 0a 77 72 69 74 65 6c 6e 3b 0a 65 6e 64 3b 0a 0a 65 6e 64 20 20 20 20 20 28 2a 20 20 70   ┆e); writeln; end;  end     (*  p┆
0x09a120…09a140             61 73 73 35 20 20 2a 29 3b 0a 0a 62 65 67 69 6e 0a 6e 65 65 64 65 64 5f 73 69 7a 65 20 3a 3d 20   ┆ass5  *);  begin needed_size := ┆
0x09a140…09a160             65 78 74 5f 74 61 62 5f 6d 61 78 3b 0a 6e 65 65 64 65 64 5f 73 69 7a 65 20 3a 3d 20 6e 65 65 64   ┆ext_tab_max; needed_size := need┆
0x09a160…09a180             65 64 5f 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 65 78 74 5f 64 65 73 63 72 29 3b 0a 69 66 20   ┆ed_size * sizeof(ext_descr); if ┆
0x09a180…09a1a0             6d 61 78 61 76 61 69 6c 20 3e 3d 20 6f 72 64 28 6e 65 65 64 65 64 5f 73 69 7a 65 29 20 74 68 65   ┆maxavail >= ord(needed_size) the┆
0x09a1a0…09a1c0             6e 0a 62 65 67 69 6e 0a 67 65 74 6d 65 6d 28 70 5f 65 78 74 5f 74 61 62 2c 20 6e 65 65 64 65 64   ┆n begin getmem(p_ext_tab, needed┆
0x09a1c0…09a1e0             5f 73 69 7a 65 29 3b 0a 70 61 73 73 35 28 70 5f 65 78 74 5f 74 61 62 5e 2c 20 70 61 73 73 35 5f   ┆_size); pass5(p_ext_tab^, pass5_┆
0x09a1e0…09a200             6f 6b 29 3b 0a 65 6e 64 20 65 6c 73 65 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70   ┆ok); end else begin writeln(outp┆
0x09a200…09a220 (41, 0, 4)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 72 74 70 2f 78 72 65 6c 65 61 73 65 00 00 00 00 00 00   ┆../sw2103/src/rtp/xrelease      ┆
0x09a220…09a240             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x09a260…09a280             00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       644     255     146      ┆
0x09a280…09a2a0             20 20 20 31 37 32 31 20 20 35 33 30 37 30 36 32 36 30 32 20 20 31 30 34 33 36 00 20 00 00 00 00   ┆   1721  5307062602  10436      ┆
0x09a2a0…09a2c0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x09a400…09a420 (41, 0, 5)  28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆(*------------------------------┆
0x09a420…09a440             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09a440…09a460             2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39 32 20 20 44 41   ┆--- -- -- (C) Copyrigth 1992  DA┆
0x09a460…09a480             4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 52 45 4c 45 41 53 45 2e 50 41 53 09 43 6f 6e 74 61 69 6e 73 20   ┆NOSI -- -- RELEASE.PAS Contains ┆
0x09a480…09a4a0             69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 72 65 6c 65 61 73 65 20 6e 6f 20 61 6e 64   ┆information about release no and┆
0x09a4a0…09a4c0             20 64 61 74 65 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ date -- -----------------------┆
0x09a4c0…09a4e0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09a4e0…09a500             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09   ┆------------ -- -- Revisions -- ┆
0x09a500…09a520             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09a520…09a540             0a 2d 2d 20 20 31 2e 31 32 20 20 39 32 2e 30 35 2e 32 31 20 20 48 45 4a 20 20 20 44 65 73 63 72   ┆ --  1.12  92.05.21  HEJ   Descr┆
0x09a540…09a560             69 70 74 69 6f 6e 20 6f 66 20 72 65 6c 65 61 73 65 20 31 2e 31 32 2e 0a 2d 2d 20 20 31 2e 31 33   ┆iption of release 1.12. --  1.13┆
0x09a560…09a580             20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20 69 6e 66 6f 20 75 73 65 64   ┆  92.10.14  HEJ   SCCS info used┆
0x09a580…09a5a0             2c 20 72 65 6c 65 61 73 65 2e 70 61 73 20 75 73 65 64 20 69 6e 20 61 6c 6c 20 70 61 73 73 65 73   ┆, release.pas used in all passes┆
0x09a5a0…09a5c0             2e 0a 2d 2d 20 20 31 2e 31 34 20 20 39 32 2e 31 32 2e 30 32 20 20 48 45 4a 20 20 20 50 61 74 68   ┆. --  1.14  92.12.02  HEJ   Path┆
0x09a5c0…09a5e0             6c 65 6e 67 74 68 20 63 68 61 6e 67 65 64 20 33 30 20 2d 3e 20 38 30 20 28 46 52 20 39 32 31 31   ┆length changed 30 -> 80 (FR 9211┆
0x09a5e0…09a600             32 36 2e 31 29 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆26.1). -- ----------------------┆
0x09a600…09a620 (41, 0, 6)  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09a620…09a640             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e 66 6f 72 6d 61 74 69 6f   ┆------------- -- SCCS informatio┆
0x09a640…09a660             6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f 64 75 6c 65 20 3a 20 20   ┆n -- File   :  %P% -- Module :  ┆
0x09a660…09a680             25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09 44 61 74 65 20 20 20 3a   ┆%M% -- Version:  %I% -- Date   :┆
0x09a680…09a6a0             20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆  %E%  %U% ---------------------┆
0x09a6a0…09a6c0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09a6c0…09a6e0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 20 43 6f 6e 73 74 0a 0a 20 20 20 72 65   ┆-------------- *)   Const     re┆
0x09a6e0…09a700             6c 65 61 73 65 5f 64 61 74 65 09 3d 20 20 27 39 32 2e 31 32 2e 30 32 27 20 3b 0a 20 20 20 72 65   ┆lease_date =  '92.12.02' ;    re┆
0x09a700…09a720             6c 65 61 73 65 5f 74 65 78 74 09 3d 20 20 27 25 52 25 2e 25 4c 25 27 20 3b 0a 20 20 20 63 6f 6d   ┆lease_text =  '%R%.%L%' ;    com┆
0x09a720…09a740             70 69 6c 65 72 5f 69 64 65 6e 74 20 3d 20 33 20 2a 20 38 31 39 32 20 2b 20 25 52 25 20 2a 20 32   ┆piler_ident = 3 * 8192 + %R% * 2┆
0x09a740…09a760             35 36 20 2b 20 25 4c 25 20 3b 0a 0a 20 20 20 28 2a 20 20 33 20 69 73 20 70 61 63 6b 65 74 20 69   ┆56 + %L% ;     (*  3 is packet i┆
0x09a760…09a780             64 20 66 6f 72 20 53 57 32 31 30 33 20 20 20 20 20 20 20 20 2a 29 0a 20 20 20 28 2a 20 20 52 20   ┆d for SW2103        *)    (*  R ┆
0x09a780…09a7a0             3d 20 76 65 72 73 69 6f 6e 20 6d 75 73 74 20 62 65 20 69 6e 20 31 20 2e 2e 20 33 31 20 20 20 2a   ┆= version must be in 1 .. 31   *┆
0x09a7a0…09a7c0             29 0a 20 20 20 28 2a 20 20 4c 20 3d 20 69 73 73 75 65 20 20 20 6d 75 73 74 20 62 65 20 69 6e 20   ┆)    (*  L = issue   must be in ┆
0x09a7c0…09a7e0             31 20 2e 2e 20 32 35 35 20 20 2a 29 0a 20 20 20 0a 20 2d 3e 20 38 30 20 28 46 52 20 39 32 31 31   ┆1 .. 255  *)      -> 80 (FR 9211┆
0x09a7e0…09a800             32 36 2e 31 29 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆26.1). -- ----------------------┆
0x09a800…09a820 (41, 0, 7)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 64 65 62 75 67 2f 73 2e 65 78 74 65 6e 64 2e 70 61 73   ┆../sw2103/src/debug/s.extend.pas┆
0x09a820…09a840             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x09a860…09a880             00 00 00 00 20 20 20 34 34 34 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       444     255     146      ┆
0x09a880…09a8a0             20 20 31 30 35 35 37 20 20 35 32 36 36 37 34 34 35 32 36 20 20 31 31 34 36 36 00 20 00 00 00 00   ┆  10557  5266744526  11466      ┆
0x09a8a0…09a8c0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x09aa00…09aa20 (41, 0, 8)  01 68 31 37 38 34 34 0a 01 73 20 30 30 32 30 38 2f 30 30 30 30 30 2f 30 30 30 30 30 0a 01 64 20   ┆ h17844  s 00208/00000/00000  d ┆
0x09aa20…09aa40             44 20 31 2e 31 20 39 32 2f 31 30 2f 31 34 20 30 38 3a 31 36 3a 33 38 20 73 77 32 31 30 33 20 31   ┆D 1.1 92/10/14 08:16:38 sw2103 1┆
0x09aa40…09aa60             20 30 0a 01 63 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2c 20 73 6f 75 72 63 65   ┆ 0  c SCCS and UNIX used, source┆
0x09aa60…09aa80             20 66 69 6c 65 20 38 39 2e 30 33 2e 31 39 0a 01 65 0a 01 75 0a 01 55 0a 01 74 0a 01 54 0a 01 49   ┆ file 89.03.19  e  u  U  t  T  I┆
0x09aa80…09aaa0             20 31 0a 70 72 6f 67 72 61 6d 20 65 78 74 65 6e 64 3b 0a 75 73 65 73 20 64 6f 73 2c 20 72 74 70   ┆ 1 program extend; uses dos, rtp┆
0x09aaa0…09aac0             75 6e 69 74 3b 0a 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆unit;  (*-----------------------┆
0x09aac0…09aae0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09aae0…09ab00             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31   ┆---------- -- -- (C) Copyrigth 1┆
0x09ab00…09ab20             39 39 32 20 20 44 41 4e 4f 53 49 0a 2d 2d 0a 2d 2d 09 45 78 74 65 6e 64 20 62 69 6e 61 72 79 20   ┆992  DANOSI -- -- Extend binary ┆
0x09ab20…09ab40             66 69 6c 65 73 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 32   ┆files to contain a multiple of 2┆
0x09ab40…09ab60             35 36 20 62 79 74 65 73 0a 2d 2d 09 62 79 20 65 78 74 65 6e 64 69 6e 67 20 77 69 74 68 20 6e 75   ┆56 bytes -- by extending with nu┆
0x09ab60…09ab80             6c 6c 73 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆lls. -- ------------------------┆
0x09ab80…09aba0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09aba0…09abc0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d   ┆----------- -- -- Revisions -- -┆
0x09abc0…09abe0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a   ┆------------------------------- ┆
0x09abe0…09ac00             2d 2d 20 20 20 20 20 20 20 20 38 39 2e 30 33 2e 31 39 20 20 45 42 4b 20 20 20 55 73 65 64 20 69   ┆--        89.03.19  EBK   Used i┆
0x09ac00…09ac20 (41, 0, 9)  6e 20 72 65 6c 65 61 73 65 20 31 2e 31 32 0a 2d 2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31   ┆n release 1.12 --  1.1   92.10.1┆
0x09ac20…09ac40             34 20 20 48 45 4a 20 20 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a   ┆4  HEJ   SCCS and UNIX used. -- ┆
0x09ac40…09ac60             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
                            […0x1…]
0x09ac80…09aca0             2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20   ┆--- -- SCCS information -- File ┆
0x09aca0…09acc0             20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f 64 75 6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72   ┆  :  %P% -- Module :  %M% -- Ver┆
0x09acc0…09ace0             73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09 44 61 74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25   ┆sion:  %I% -- Date   :  %E%  %U%┆
0x09ace0…09ad00             0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆ -------------------------------┆
0x09ad00…09ad20             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09ad20…09ad40             2d 2d 2d 2d 0a 2a 29 0a 0a 0a 63 6f 6e 73 74 0a 66 69 6c 6d 61 78 20 3d 20 32 35 36 3b 0a 74 79   ┆---- *)   const filmax = 256; ty┆
0x09ad40…09ad60             70 65 0a 66 69 6c 72 65 63 20 3d 20 61 72 72 61 79 5b 31 2e 2e 66 69 6c 6d 61 78 5d 20 6f 66 20   ┆pe filrec = array[1..filmax] of ┆
0x09ad60…09ad80             69 6e 74 65 67 65 72 3b 0a 76 61 72 0a 66 69 6c 31 2c 20 66 69 6c 32 20 3a 20 66 69 6c 65 3b 0a   ┆integer; var fil1, fil2 : file; ┆
0x09ad80…09ada0             66 69 6c 31 5f 69 78 20 20 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 66 69 6c 31 5f 72 65 63 20 20   ┆fil1_ix    : integer; fil1_rec  ┆
0x09ada0…09adc0             20 3a 20 69 6e 74 65 67 65 72 3b 0a 66 69 6c 31 5f 70 74 72 20 20 20 3a 20 5e 66 69 6c 72 65 63   ┆ : integer; fil1_ptr   : ^filrec┆
0x09adc0…09ade0             3b 0a 66 69 6c 32 5f 69 78 20 20 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 66 69 6c 32 5f 72 65 63   ┆; fil2_ix    : integer; fil2_rec┆
0x09ade0…09ae00             20 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 66 69 6c 32 5f 70 74 72 20 20 20 3a 20 5e 66 69 6c 72   ┆   : integer; fil2_ptr   : ^filr┆
0x09ae00…09ae20 (41, 0, 10) 65 63 3b 0a 69 2c 20 73 65 70 2c 20 70 61 72 61 6d 6e 6f 2c 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e   ┆ec; i, sep, paramno, call_line_n┆
0x09ae20…09ae40             75 6d 62 65 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6f 6b 2c 20 65 6f 66 31 2c 20 73 77 61 70 31   ┆umber : integer; ok, eof1, swap1┆
0x09ae40…09ae60             20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6d 61 78 31 5f 6c 61 73 74 2c 20 6d 61 78 31 5f 72 65 63 3a   ┆ : boolean; max1_last, max1_rec:┆
0x09ae60…09ae80             20 69 6e 74 65 67 65 72 3b 0a 68 65 6c 70 5f 6c 6f 6e 67 3a 20 6c 6f 6e 67 69 6e 74 3b 0a 0a 63   ┆ integer; help_long: longint;  c┆
0x09ae80…09aea0             61 6c 6c 5f 6c 69 6e 65 5f 6e 61 6d 65 3a 20 61 6c 66 61 3b 0a 6f 75 74 70 75 74 5f 66 69 6c 65   ┆all_line_name: alfa; output_file┆
0x09aea0…09aec0             5f 6e 61 6d 65 2c 20 66 69 6c 31 5f 6e 61 6d 65 2c 20 66 69 6c 32 5f 6e 61 6d 65 3a 20 61 6c 66   ┆_name, fil1_name, fil2_name: alf┆
0x09aec0…09aee0             61 3b 0a 0a 63 6f 6e 73 74 0a 0a 28 2a 20 63 6f 6e 73 74 61 6e 74 73 20 61 6e 64 20 76 61 72 69   ┆a;  const  (* constants and vari┆
0x09aee0…09af00             61 62 6c 65 73 20 63 6f 6e 63 65 72 6e 69 6e 67 20 63 61 6c 6c 20 70 61 72 61 6d 65 74 65 72 20   ┆ables concerning call parameter ┆
0x09af00…09af20             72 65 61 64 69 6e 67 20 2a 29 0a 65 71 75 61 6c 20 3d 20 36 3b 20 73 70 61 63 65 20 3d 20 34 3b   ┆reading *) equal = 6; space = 4;┆
0x09af20…09af40             20 64 6f 74 20 3d 20 38 3b 0a 6e 61 6d 65 20 20 3d 20 31 30 3b 20 69 6e 74 20 3d 20 34 3b 0a 70   ┆ dot = 8; name  = 10; int = 4; p┆
0x09af40…09af60             6f 77 65 72 38 20 3d 20 32 35 36 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 5f 66 69 6c 31 28   ┆ower8 = 256;  procedure in_fil1(┆
0x09af60…09af80             76 61 72 20 70 3a 20 69 6e 74 65 67 65 72 29 3b 0a 76 61 72 20 63 6f 75 6e 74 3a 20 69 6e 74 65   ┆var p: integer); var count: inte┆
0x09af80…09afa0             67 65 72 3b 0a 62 65 67 69 6e 0a 20 20 66 69 6c 31 5f 69 78 20 3a 3d 20 66 69 6c 31 5f 69 78 20   ┆ger; begin   fil1_ix := fil1_ix ┆
0x09afa0…09afc0             2b 20 31 3b 0a 20 20 69 66 20 66 69 6c 31 5f 69 78 20 3e 20 66 69 6c 6d 61 78 20 74 68 65 6e 0a   ┆+ 1;   if fil1_ix > filmax then ┆
0x09afc0…09afe0             20 20 62 65 67 69 6e 0a 20 20 20 20 66 69 6c 31 5f 72 65 63 20 3a 3d 20 66 69 6c 31 5f 72 65 63   ┆  begin     fil1_rec := fil1_rec┆
0x09afe0…09b000             20 2b 20 31 3b 0a 20 20 20 20 66 69 6c 31 5f 69 78 20 3a 3d 20 31 3b 0a 20 20 20 20 69 66 20 66   ┆ + 1;     fil1_ix := 1;     if f┆
0x09b000…09b020 (41, 0, 11) 69 6c 31 5f 72 65 63 20 3c 20 6d 61 78 31 5f 72 65 63 20 74 68 65 6e 20 63 6f 75 6e 74 20 3a 3d   ┆il1_rec < max1_rec then count :=┆
0x09b020…09b040             20 66 69 6c 6d 61 78 20 65 6c 73 65 20 63 6f 75 6e 74 20 3a 3d 20 6d 61 78 31 5f 6c 61 73 74 3b   ┆ filmax else count := max1_last;┆
0x09b040…09b060             0a 20 20 20 20 62 6c 6f 63 6b 72 65 61 64 28 66 69 6c 31 2c 20 66 69 6c 31 5f 70 74 72 5e 2c 20   ┆     blockread(fil1, fil1_ptr^, ┆
0x09b060…09b080             63 6f 75 6e 74 29 3b 0a 20 20 65 6e 64 3b 0a 20 20 70 20 3a 3d 20 66 69 6c 31 5f 70 74 72 5e 5b   ┆count);   end;   p := fil1_ptr^[┆
0x09b080…09b0a0             66 69 6c 31 5f 69 78 5d 3b 0a 28 2a 24 52 2d 2a 29 0a 20 20 69 66 20 73 77 61 70 31 20 74 68 65   ┆fil1_ix]; (*$R-*)   if swap1 the┆
0x09b0a0…09b0c0             6e 20 70 20 3a 3d 20 73 77 61 70 28 70 29 3b 0a 28 2a 24 52 2b 2a 29 0a 20 20 65 6f 66 31 20 3a   ┆n p := swap(p); (*$R+*)   eof1 :┆
0x09b0c0…09b0e0             3d 20 28 66 69 6c 31 5f 69 78 20 3d 20 6d 61 78 31 5f 6c 61 73 74 29 20 61 6e 64 20 28 66 69 6c   ┆= (fil1_ix = max1_last) and (fil┆
0x09b0e0…09b100             31 5f 72 65 63 20 3d 20 6d 61 78 31 5f 72 65 63 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 72 6f 63 65 64   ┆1_rec = max1_rec); end;   proced┆
0x09b100…09b120             75 72 65 20 6f 75 74 5f 66 69 6c 32 28 70 3a 20 69 6e 74 65 67 65 72 29 3b 0a 62 65 67 69 6e 0a   ┆ure out_fil2(p: integer); begin ┆
0x09b120…09b140             20 20 66 69 6c 32 5f 69 78 20 3a 3d 20 66 69 6c 32 5f 69 78 20 2b 20 31 3b 0a 20 20 69 66 20 66   ┆  fil2_ix := fil2_ix + 1;   if f┆
0x09b140…09b160             69 6c 32 5f 69 78 20 3e 20 66 69 6c 6d 61 78 20 74 68 65 6e 0a 20 20 62 65 67 69 6e 0a 20 20 20   ┆il2_ix > filmax then   begin    ┆
0x09b160…09b180             20 66 69 6c 32 5f 69 78 20 3a 3d 20 31 3b 0a 20 20 20 20 62 6c 6f 63 6b 77 72 69 74 65 28 66 69   ┆ fil2_ix := 1;     blockwrite(fi┆
0x09b180…09b1a0             6c 32 2c 20 66 69 6c 32 5f 70 74 72 5e 2c 20 66 69 6c 6d 61 78 29 3b 0a 20 20 65 6e 64 3b 0a 20   ┆l2, fil2_ptr^, filmax);   end;  ┆
0x09b1a0…09b1c0             20 66 69 6c 32 5f 70 74 72 5e 5b 66 69 6c 32 5f 69 78 5d 20 3a 3d 20 70 3b 0a 65 6e 64 3b 0a 0a   ┆ fil2_ptr^[fil2_ix] := p; end;  ┆
0x09b1c0…09b1e0             70 72 6f 63 65 64 75 72 65 20 70 61 72 61 6d 65 72 72 6f 72 28 70 6c 61 63 65 3a 20 69 6e 74 65   ┆procedure paramerror(place: inte┆
0x09b1e0…09b200             67 65 72 29 3b 0a 62 65 67 69 6e 0a 77 72 69 74 65 28 6f 75 74 70 75 74 2c 27 2a 2a 2a 20 63 6f   ┆ger); begin write(output,'*** co┆
0x09b200…09b220 (41, 0, 12) 6d 70 61 72 65 2c 20 65 72 72 6f 72 20 69 6e 20 63 61 6c 6c 28 27 2c 70 6c 61 63 65 3a 31 2c 70   ┆mpare, error in call(',place:1,p┆
0x09b220…09b240             61 72 61 6d 6e 6f 3a 31 2c 27 29 3a 20 27 29 3b 0a 69 66 20 73 65 70 3d 30 20 74 68 65 6e 0a 77   ┆aramno:1,'): '); if sep=0 then w┆
0x09b240…09b260             72 69 74 65 28 6f 75 74 70 75 74 2c 20 27 6d 69 73 73 69 6e 67 20 70 61 72 61 6d 65 74 65 72 27   ┆rite(output, 'missing parameter'┆
0x09b260…09b280             29 0a 65 6c 73 65 0a 72 65 70 65 61 74 0a 69 66 20 73 65 70 20 64 69 76 20 70 6f 77 65 72 38 20   ┆) else repeat if sep div power8 ┆
0x09b280…09b2a0             3d 20 73 70 61 63 65 20 74 68 65 6e 0a 77 72 69 74 65 28 6f 75 74 70 75 74 2c 27 20 27 29 0a 65   ┆= space then write(output,' ') e┆
0x09b2a0…09b2c0             6c 73 65 0a 77 72 69 74 65 28 6f 75 74 70 75 74 2c 27 2d 27 29 3b 0a 69 66 20 73 65 70 20 6d 6f   ┆lse write(output,'-'); if sep mo┆
0x09b2c0…09b2e0             64 20 70 6f 77 65 72 38 20 3d 20 6e 61 6d 65 20 74 68 65 6e 0a 77 72 69 74 65 28 6f 75 74 70 75   ┆d power8 = name then write(outpu┆
0x09b2e0…09b300             74 2c 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 61 6d 65 29 0a 65 6c 73 65 0a 77 72 69 74 65 28 6f 75 74   ┆t,call_line_name) else write(out┆
0x09b300…09b320             70 75 74 2c 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 3a 31 29 3b 0a 70 61 72 61 6d 6e 6f   ┆put,call_line_number:1); paramno┆
0x09b320…09b340             3a 3d 20 70 61 72 61 6d 6e 6f 20 2b 20 31 3b 0a 73 65 70 3a 3d 20 70 61 72 61 6d 72 65 61 64 20   ┆:= paramno + 1; sep:= paramread ┆
0x09b340…09b360             28 70 61 72 61 6d 6e 6f 2c 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 2c 20 63 61 6c 6c   ┆(paramno, call_line_number, call┆
0x09b360…09b380             5f 6c 69 6e 65 5f 6e 61 6d 65 29 3b 0a 69 66 20 73 65 70 20 3d 20 30 20 74 68 65 6e 20 73 65 70   ┆_line_name); if sep = 0 then sep┆
0x09b380…09b3a0             3a 3d 20 73 70 61 63 65 20 2a 20 70 6f 77 65 72 38 3b 0a 75 6e 74 69 6c 20 73 65 70 20 64 69 76   ┆:= space * power8; until sep div┆
0x09b3a0…09b3c0             20 70 6f 77 65 72 38 20 3d 20 73 70 61 63 65 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 29   ┆ power8 = space; writeln(output)┆
0x09b3c0…09b3e0             3b 0a 6f 6b 3a 3d 20 66 61 6c 73 65 3b 0a 70 61 72 61 6d 6e 6f 3a 3d 20 70 61 72 61 6d 6e 6f 20   ┆; ok:= false; paramno:= paramno ┆
0x09b3e0…09b400             2d 20 31 3b 0a 65 6e 64 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 67 65 74 69 6e 74 20 3a 20 69 6e 74   ┆- 1; end;  function getint : int┆
0x09b400…09b420 (41, 0, 13) 65 67 65 72 3b 0a 76 61 72 0a 70 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a 70 3a 3d 20   ┆eger; var p: integer; begin p:= ┆
0x09b420…09b440             70 61 72 61 6d 72 65 61 64 20 28 70 61 72 61 6d 6e 6f 20 2b 20 31 2c 20 63 61 6c 6c 5f 6c 69 6e   ┆paramread (paramno + 1, call_lin┆
0x09b440…09b460             65 5f 6e 75 6d 62 65 72 2c 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 61 6d 65 29 3b 0a 69 66 20 70 20   ┆e_number, call_line_name); if p ┆
0x09b460…09b480             3d 20 64 6f 74 20 2a 20 70 6f 77 65 72 38 20 2b 20 69 6e 74 20 74 68 65 6e 0a 62 65 67 69 6e 0a   ┆= dot * power8 + int then begin ┆
0x09b480…09b4a0             67 65 74 69 6e 74 3a 3d 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 3b 0a 70 61 72 61 6d   ┆getint:= call_line_number; param┆
0x09b4a0…09b4c0             6e 6f 3a 3d 20 70 61 72 61 6d 6e 6f 20 2b 20 31 3b 0a 65 6e 64 0a 65 6c 73 65 0a 62 65 67 69 6e   ┆no:= paramno + 1; end else begin┆
0x09b4c0…09b4e0             0a 70 61 72 61 6d 65 72 72 6f 72 28 30 29 3b 0a 67 65 74 69 6e 74 3a 3d 20 30 3b 0a 65 6e 64 3b   ┆ paramerror(0); getint:= 0; end;┆
0x09b4e0…09b500             0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 67 65 74 5f 70 61 72 61 6d 65 74 65 72 73 3b   ┆ end;  procedure get_parameters;┆
0x09b500…09b520             0a 0a 62 65 67 69 6e 20 28 2a 20 62 6f 64 79 20 6f 66 20 67 65 74 70 61 72 61 6d 73 20 2a 29 0a   ┆  begin (* body of getparams *) ┆
0x09b520…09b540             6f 6b 3a 3d 20 74 72 75 65 3b 0a 73 65 70 3a 3d 20 70 61 72 61 6d 72 65 61 64 20 28 31 2c 20 63   ┆ok:= true; sep:= paramread (1, c┆
0x09b540…09b560             61 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 2c 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 61 6d 65 29   ┆all_line_number, call_line_name)┆
0x09b560…09b580             3b 0a 69 66 20 73 65 70 20 64 69 76 20 70 6f 77 65 72 38 20 3d 20 65 71 75 61 6c 20 74 68 65 6e   ┆; if sep div power8 = equal then┆
0x09b580…09b5a0             0a 62 65 67 69 6e 0a 73 65 70 3a 3d 20 70 61 72 61 6d 72 65 61 64 20 28 30 2c 20 63 61 6c 6c 5f   ┆ begin sep:= paramread (0, call_┆
0x09b5a0…09b5c0             6c 69 6e 65 5f 6e 75 6d 62 65 72 2c 20 6f 75 74 70 75 74 5f 66 69 6c 65 5f 6e 61 6d 65 29 3b 0a   ┆line_number, output_file_name); ┆
0x09b5c0…09b5e0             70 61 72 61 6d 6e 6f 3a 3d 20 32 3b 0a 65 6e 64 0a 65 6c 73 65 0a 70 61 72 61 6d 6e 6f 3a 3d 20   ┆paramno:= 2; end else paramno:= ┆
0x09b5e0…09b600             31 3b 0a 0a 73 65 70 3a 3d 20 70 61 72 61 6d 72 65 61 64 20 28 70 61 72 61 6d 6e 6f 2c 20 63 61   ┆1;  sep:= paramread (paramno, ca┆
0x09b600…09b620 (41, 0, 14) 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 2c 20 66 69 6c 31 5f 6e 61 6d 65 29 3b 0a 69 66 20 73   ┆ll_line_number, fil1_name); if s┆
0x09b620…09b640             65 70 20 3c 3e 20 73 70 61 63 65 20 2a 20 70 6f 77 65 72 38 20 2b 20 6e 61 6d 65 20 74 68 65 6e   ┆ep <> space * power8 + name then┆
0x09b640…09b660             0a 70 61 72 61 6d 65 72 72 6f 72 28 31 29 3b 0a 70 61 72 61 6d 6e 6f 3a 3d 20 70 61 72 61 6d 6e   ┆ paramerror(1); paramno:= paramn┆
0x09b660…09b680             6f 20 2b 20 31 3b 0a 73 65 70 3a 3d 20 70 61 72 61 6d 72 65 61 64 20 28 70 61 72 61 6d 6e 6f 2c   ┆o + 1; sep:= paramread (paramno,┆
0x09b680…09b6a0             20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 2c 20 66 69 6c 32 5f 6e 61 6d 65 29 3b 0a 69   ┆ call_line_number, fil2_name); i┆
0x09b6a0…09b6c0             66 20 73 65 70 20 3d 20 64 6f 74 20 2a 20 70 6f 77 65 72 38 20 2b 20 6e 61 6d 65 20 74 68 65 6e   ┆f sep = dot * power8 + name then┆
0x09b6c0…09b6e0             0a 62 65 67 69 6e 0a 20 20 69 66 20 66 69 6c 32 5f 6e 61 6d 65 20 3d 20 27 73 77 61 70 27 20 74   ┆ begin   if fil2_name = 'swap' t┆
0x09b6e0…09b700             68 65 6e 20 73 77 61 70 31 20 3a 3d 20 74 72 75 65 3b 0a 20 20 70 61 72 61 6d 6e 6f 20 3a 3d 20   ┆hen swap1 := true;   paramno := ┆
0x09b700…09b720             70 61 72 61 6d 6e 6f 20 2b 20 31 3b 0a 65 6e 64 3b 0a 0a 73 65 70 20 3a 3d 20 70 61 72 61 6d 72   ┆paramno + 1; end;  sep := paramr┆
0x09b720…09b740             65 61 64 28 70 61 72 61 6d 6e 6f 2c 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 2c 20 66   ┆ead(paramno, call_line_number, f┆
0x09b740…09b760             69 6c 32 5f 6e 61 6d 65 29 3b 0a 69 66 20 73 65 70 20 3c 3e 20 73 70 61 63 65 20 2a 20 70 6f 77   ┆il2_name); if sep <> space * pow┆
0x09b760…09b780             65 72 38 20 2b 20 6e 61 6d 65 20 74 68 65 6e 0a 70 61 72 61 6d 65 72 72 6f 72 28 32 29 3b 0a 70   ┆er8 + name then paramerror(2); p┆
0x09b780…09b7a0             61 72 61 6d 6e 6f 3a 3d 20 70 61 72 61 6d 6e 6f 20 2b 20 31 3b 0a 73 65 70 20 3a 3d 20 70 61 72   ┆aramno:= paramno + 1; sep := par┆
0x09b7a0…09b7c0             61 6d 72 65 61 64 28 70 61 72 61 6d 6e 6f 2c 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72   ┆amread(paramno, call_line_number┆
0x09b7c0…09b7e0             2c 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 61 6d 65 29 3b 0a 69 66 20 73 65 70 20 3d 20 64 6f 74 20   ┆, call_line_name); if sep = dot ┆
0x09b7e0…09b800             2a 20 70 6f 77 65 72 38 20 2b 20 6e 61 6d 65 20 74 68 65 6e 0a 62 65 67 69 6e 0a 20 20 70 61 72   ┆* power8 + name then begin   par┆
0x09b800…09b820 (41, 0, 15) 61 6d 6e 6f 20 3a 3d 20 70 61 72 61 6d 6e 6f 20 2b 20 31 3b 0a 20 20 73 65 70 3a 3d 20 70 61 72   ┆amno := paramno + 1;   sep:= par┆
0x09b820…09b840             61 6d 72 65 61 64 20 28 70 61 72 61 6d 6e 6f 2c 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65   ┆amread (paramno, call_line_numbe┆
0x09b840…09b860             72 2c 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 61 6d 65 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6e 6f 74   ┆r, call_line_name); end;  if not┆
0x09b860…09b880             20 6f 6b 20 74 68 65 6e 0a 62 65 67 69 6e 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75 74 2c 27 20   ┆ ok then begin writeln(output,' ┆
0x09b880…09b8a0             63 61 6c 6c 20 73 79 6e 74 61 78 20 69 73 3a 27 29 3b 0a 77 72 69 74 65 6c 6e 28 6f 75 74 70 75   ┆call syntax is:'); writeln(outpu┆
0x09b8a0…09b8c0             74 2c 0a 27 65 78 74 65 6e 64 20 3c 69 6e 66 69 6c 28 2d 73 77 61 70 29 3e 20 3c 6f 75 74 66 69   ┆t, 'extend <infil(-swap)> <outfi┆
0x09b8c0…09b8e0             6c 3e 27 29 3b 0a 72 74 70 68 61 6c 74 28 66 61 6c 73 65 29 3b 0a 65 6e 64 3b 20 28 2a 20 6e 6f   ┆l>'); rtphalt(false); end; (* no┆
0x09b8e0…09b900             74 20 6f 6b 20 2a 29 0a 65 6e 64 3b 0a 0a 62 65 67 69 6e 0a 0a 73 65 70 20 20 20 20 20 20 20 20   ┆t ok *) end;  begin  sep        ┆
0x09b900…09b920             20 20 20 20 20 20 3a 3d 20 30 3b 0a 70 61 72 61 6d 6e 6f 20 20 20 20 20 20 20 20 20 20 3a 3d 20   ┆      := 0; paramno          := ┆
0x09b920…09b940             30 3b 0a 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 20 3a 3d 20 30 3b 0a 6f 6b 20 20 20 20   ┆0; call_line_number := 0; ok    ┆
0x09b940…09b960             20 20 20 20 20 20 20 20 20 20 20 3a 3d 20 74 72 75 65 3b 0a 0a 73 77 61 70 31 20 20 20 20 20 20   ┆           := true;  swap1      ┆
0x09b960…09b980             20 20 20 20 20 20 3a 3d 20 66 61 6c 73 65 3b 0a 0a 66 69 6c 31 5f 72 65 63 20 20 20 20 20 20 20   ┆      := false;  fil1_rec       ┆
0x09b980…09b9a0             20 20 3a 3d 20 2d 31 3b 0a 66 69 6c 32 5f 72 65 63 20 20 20 20 20 20 20 20 20 3a 3d 20 2d 31 3b   ┆  := -1; fil2_rec         := -1;┆
0x09b9a0…09b9c0             0a 66 69 6c 31 5f 69 78 20 20 20 20 20 20 20 20 20 20 3a 3d 20 66 69 6c 6d 61 78 3b 0a 66 69 6c   ┆ fil1_ix          := filmax; fil┆
0x09b9c0…09b9e0             32 5f 69 78 20 20 20 20 20 20 20 20 20 20 3a 3d 20 30 3b 0a 6e 65 77 28 66 69 6c 31 5f 70 74 72   ┆2_ix          := 0; new(fil1_ptr┆
0x09b9e0…09ba00             29 3b 0a 6e 65 77 28 66 69 6c 32 5f 70 74 72 29 3b 0a 0a 67 65 74 5f 70 61 72 61 6d 65 74 65 72   ┆); new(fil2_ptr);  get_parameter┆
0x09ba00…09ba20 (41, 1, 1)  73 3b 0a 0a 61 73 73 69 67 6e 28 66 69 6c 31 2c 20 66 69 6c 31 5f 6e 61 6d 65 29 3b 0a 72 65 73   ┆s;  assign(fil1, fil1_name); res┆
0x09ba20…09ba40             65 74 28 66 69 6c 31 2c 20 32 29 3b 0a 61 73 73 69 67 6e 28 66 69 6c 32 2c 20 66 69 6c 32 5f 6e   ┆et(fil1, 2); assign(fil2, fil2_n┆
0x09ba40…09ba60             61 6d 65 29 3b 0a 72 65 77 72 69 74 65 28 66 69 6c 32 2c 20 32 29 3b 0a 0a 68 65 6c 70 5f 6c 6f   ┆ame); rewrite(fil2, 2);  help_lo┆
0x09ba60…09ba80             6e 67 20 3a 3d 20 66 69 6c 65 73 69 7a 65 28 66 69 6c 31 29 3b 0a 6d 61 78 31 5f 72 65 63 20 20   ┆ng := filesize(fil1); max1_rec  ┆
0x09ba80…09baa0             3a 3d 20 28 68 65 6c 70 5f 6c 6f 6e 67 2d 31 29 20 64 69 76 20 66 69 6c 6d 61 78 3b 0a 6d 61 78   ┆:= (help_long-1) div filmax; max┆
0x09baa0…09bac0             31 5f 6c 61 73 74 20 3a 3d 20 68 65 6c 70 5f 6c 6f 6e 67 20 2d 20 6d 61 78 31 5f 72 65 63 2a 66   ┆1_last := help_long - max1_rec*f┆
0x09bac0…09bae0             69 6c 6d 61 78 3b 0a 65 6f 66 31 20 20 20 20 20 20 3a 3d 20 68 65 6c 70 5f 6c 6f 6e 67 20 3d 20   ┆ilmax; eof1      := help_long = ┆
0x09bae0…09bb00             30 3b 0a 0a 77 68 69 6c 65 20 6e 6f 74 20 65 6f 66 31 20 64 6f 0a 62 65 67 69 6e 0a 20 20 69 6e   ┆0;  while not eof1 do begin   in┆
0x09bb00…09bb20             5f 66 69 6c 31 28 69 29 3b 0a 20 20 6f 75 74 5f 66 69 6c 32 28 69 29 3b 0a 65 6e 64 3b 0a 0a 66   ┆_fil1(i);   out_fil2(i); end;  f┆
0x09bb20…09bb40             6f 72 20 69 20 3a 3d 20 66 69 6c 32 5f 69 78 20 74 6f 20 66 69 6c 6d 61 78 20 64 6f 20 6f 75 74   ┆or i := fil2_ix to filmax do out┆
0x09bb40…09bb60             5f 66 69 6c 32 28 30 29 3b 0a 0a 63 6c 6f 73 65 28 66 69 6c 31 29 3b 0a 63 6c 6f 73 65 28 66 69   ┆_fil2(0);  close(fil1); close(fi┆
0x09bb60…09bb80             6c 32 29 3b 0a 65 6e 64 2e 0a 01 45 20 31 0a 0a 0a 66 69 6c 31 5f 72 65 63 20 20 20 20 20 20 20   ┆l2); end.  E 1   fil1_rec       ┆
0x09bb80…09bba0             20 20 3a 3d 20 2d 31 3b 0a 66 69 6c 32 5f 72 65 63 20 20 20 20 20 20 20 20 20 3a 3d 20 2d 31 3b   ┆  := -1; fil2_rec         := -1;┆
0x09bba0…09bbc0             0a 66 69 6c 31 5f 69 78 20 20 20 20 20 20 20 20 20 20 3a 3d 20 66 69 6c 6d 61 78 3b 0a 66 69 6c   ┆ fil1_ix          := filmax; fil┆
0x09bbc0…09bbe0             32 5f 69 78 20 20 20 20 20 20 20 20 20 20 3a 3d 20 30 3b 0a 6e 65 77 28 66 69 6c 31 5f 70 74 72   ┆2_ix          := 0; new(fil1_ptr┆
0x09bbe0…09bc00             29 3b 0a 6e 65 77 28 66 69 6c 32 5f 70 74 72 29 3b 0a 0a 67 65 74 5f 70 61 72 61 6d 65 74 65 72   ┆); new(fil2_ptr);  get_parameter┆
0x09bc00…09bc20 (41, 1, 2)  2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 64 65 62 75 67 2f 73 2e 65 78 74 73 63 61 6e 2e 70 61   ┆../sw2103/src/debug/s.extscan.pa┆
0x09bc20…09bc40             73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆s                               ┆
0x09bc40…09bc60             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
0x09bc60…09bc80             00 00 00 00 20 20 20 34 34 34 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       444     255     146      ┆
0x09bc80…09bca0             20 20 31 30 32 30 37 20 20 35 32 36 36 37 34 35 30 36 35 20 20 31 31 36 33 33 00 20 00 00 00 00   ┆  10207  5266745065  11633      ┆
0x09bca0…09bcc0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x09be00…09be20 (41, 1, 3)  01 68 30 39 35 33 30 0a 01 73 20 30 30 31 36 30 2f 30 30 30 30 30 2f 30 30 30 30 30 0a 01 64 20   ┆ h09530  s 00160/00000/00000  d ┆
0x09be20…09be40             44 20 31 2e 31 20 39 32 2f 31 30 2f 31 34 20 30 38 3a 32 30 3a 32 31 20 73 77 32 31 30 33 20 31   ┆D 1.1 92/10/14 08:20:21 sw2103 1┆
0x09be40…09be60             20 30 0a 01 63 20 53 43 43 53 20 61 6e 64 20 55 4e 49 58 20 75 73 65 64 2c 20 73 6f 75 72 63 65   ┆ 0  c SCCS and UNIX used, source┆
0x09be60…09be80             20 66 69 6c 65 20 38 39 2e 30 32 2e 30 34 0a 01 65 0a 01 75 0a 01 55 0a 01 74 0a 01 54 0a 01 49   ┆ file 89.02.04  e  u  U  t  T  I┆
0x09be80…09bea0             20 31 0a 70 72 6f 67 72 61 6d 20 65 78 74 73 63 61 6e 3b 0a 0a 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d   ┆ 1 program extscan;   (*--------┆
0x09bea0…09bec0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09bec0…09bee0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20   ┆------------------------- -- -- ┆
0x09bee0…09bf00             28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39 32 20 20 44 41 4e 4f 53 49 0a 2d 2d 0a 2d 2d   ┆(C) Copyrigth 1992  DANOSI -- --┆
0x09bf00…09bf20             09 50 72 6f 67 72 61 6d 20 66 6f 72 20 69 6e 76 65 73 74 69 67 61 74 69 6f 6e 20 6f 66 20 74 68   ┆ Program for investigation of th┆
0x09bf20…09bf40             65 20 52 54 50 33 35 30 32 32 2e 4c 49 42 20 66 69 6c 65 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d   ┆e RTP35022.LIB file. -- --------┆
0x09bf40…09bf60             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09bf60…09bf80             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d   ┆--------------------------- -- -┆
0x09bf80…09bfa0             2d 09 52 65 76 69 73 69 6f 6e 73 0a 2d 2d 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆- Revisions -- -----------------┆
0x09bfa0…09bfc0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 20 20 20 20 20 20 20 20 38 39 2e 30 32 2e   ┆--------------- --        89.02.┆
0x09bfc0…09bfe0             30 34 20 20 45 42 4b 20 20 20 55 73 65 64 20 69 6e 20 72 65 6c 65 61 73 65 20 31 2e 31 32 0a 2d   ┆04  EBK   Used in release 1.12 -┆
0x09bfe0…09c000             2d 20 20 31 2e 31 20 20 20 39 32 2e 31 30 2e 31 34 20 20 48 45 4a 20 20 20 53 43 43 53 20 61 6e   ┆-  1.1   92.10.14  HEJ   SCCS an┆
0x09c000…09c020 (41, 1, 4)  64 20 55 4e 49 58 20 75 73 65 64 2e 0a 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆d UNIX used. -- ----------------┆
0x09c020…09c040             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09c040…09c060             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e 66 6f   ┆------------------- -- SCCS info┆
0x09c060…09c080             72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f 64 75   ┆rmation -- File   :  %P% -- Modu┆
0x09c080…09c0a0             6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09 44 61   ┆le :  %M% -- Version:  %I% -- Da┆
0x09c0a0…09c0c0             74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆te   :  %E%  %U% ---------------┆
0x09c0c0…09c0e0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09c0e0…09c100             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 63 6f 6e 73 74 0a 65   ┆-------------------- *)  const e┆
0x09c100…09c120             78 74 5f 6d 61 78 5f 72 6f 75 74 69 6e 65 20 3d 20 31 35 30 3b 20 28 2a 20 6d 61 78 20 6e 6f 20   ┆xt_max_routine = 150; (* max no ┆
0x09c120…09c140             6f 66 20 77 6f 72 64 73 20 28 6f 66 20 32 20 63 68 61 72 73 20 65 61 63 68 29 20 70 72 20 69 6e   ┆of words (of 2 chars each) pr in┆
0x09c140…09c160             6c 69 6e 65 20 72 6f 75 74 69 6e 65 20 2a 29 0a 65 78 74 5f 6d 61 78 5f 63 68 61 72 62 75 66 20   ┆line routine *) ext_max_charbuf ┆
0x09c160…09c180             3d 20 35 30 30 30 3b 20 28 2a 20 6e 75 6d 62 65 72 20 6f 66 20 77 6f 72 64 73 20 69 6e 20 63 68   ┆= 5000; (* number of words in ch┆
0x09c180…09c1a0             61 72 62 75 66 20 2a 29 0a 64 65 73 63 72 5f 6d 61 78 5f 70 61 72 61 6d 3d 20 33 30 3b 20 28 2a   ┆arbuf *) descr_max_param= 30; (*┆
0x09c1a0…09c1c0             20 6d 61 78 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 61 20 6d   ┆ max number of parameters of a m┆
0x09c1c0…09c1e0             6f 64 75 6c 65 20 2a 29 0a 63 5f 73 69 7a 65 5f 69 64 65 6e 74 69 66 69 65 72 3d 20 31 32 3b 0a   ┆odule *) c_size_identifier= 12; ┆
0x09c1e0…09c200             64 65 73 63 72 5f 66 72 65 65 5f 77 6f 72 64 73 20 3d 20 34 3b 20 28 2a 6e 75 6d 62 65 72 20 6f   ┆descr_free_words = 4; (*number o┆
0x09c200…09c220 (41, 1, 5)  66 20 75 6e 75 73 65 64 20 77 6f 72 64 73 20 69 6e 20 64 65 73 63 72 2a 29 0a 0a 76 61 72 20 65   ┆f unused words in descr*)  var e┆
0x09c220…09c240             78 74 5f 70 61 73 73 35 3a 20 66 69 6c 65 20 6f 66 20 69 6e 74 65 67 65 72 3b 0a 20 20 20 20 66   ┆xt_pass5: file of integer;     f┆
0x09c240…09c260             69 6c 65 5f 70 6f 73 69 74 69 6f 6e 2c 20 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 20 3a 20 69 6e 74   ┆ile_position, not_resolved : int┆
0x09c260…09c280             65 67 65 72 3b 0a 0a 65 78 74 5f 6f 70 65 6e 5f 63 6f 64 65 73 3a 0a 72 65 63 6f 72 64 0a 63 75   ┆eger;  ext_open_codes: record cu┆
0x09c280…09c2a0             72 5f 77 6f 72 64 5f 70 74 72 20 3a 20 69 6e 74 65 67 65 72 3b 20 28 2a 20 70 6f 69 6e 74 73 20   ┆r_word_ptr : integer; (* points ┆
0x09c2a0…09c2c0             61 74 20 66 69 72 73 74 20 66 72 65 65 20 77 6f 72 64 20 69 6e 20 63 68 61 72 62 75 66 20 2a 29   ┆at first free word in charbuf *)┆
0x09c2c0…09c2e0             0a 63 68 61 72 62 75 66 20 3a 20 61 72 72 61 79 20 5b 20 31 20 2e 2e 20 65 78 74 5f 6d 61 78 5f   ┆ charbuf : array [ 1 .. ext_max_┆
0x09c2e0…09c300             63 68 61 72 62 75 66 20 5d 20 6f 66 20 69 6e 74 65 67 65 72 3b 0a 65 6e 64 3b 0a 0a 0a 74 79 70   ┆charbuf ] of integer; end;   typ┆
0x09c300…09c320             65 0a 0a 69 64 65 6e 74 69 66 69 65 72 3d 20 70 61 63 6b 65 64 20 61 72 72 61 79 20 5b 20 31 2e   ┆e  identifier= packed array [ 1.┆
0x09c320…09c340             2e 63 5f 73 69 7a 65 5f 69 64 65 6e 74 69 66 69 65 72 20 5d 20 6f 66 20 63 68 61 72 3b 0a 28 2a   ┆.c_size_identifier ] of char; (*┆
0x09c340…09c360             20 20 20 20 74 79 70 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 66 72 6f 6d 20 6d 6f 64 75 6c 65   ┆    type definitions from module┆
0x09c360…09c380             73 3a 20 20 20 20 20 2a 29 0a 0a 65 78 74 5f 73 74 61 74 65 73 20 3d 20 28 65 78 74 5f 75 6e 75   ┆s:     *)  ext_states = (ext_unu┆
0x09c380…09c3a0             73 65 64 2c 20 65 78 74 5f 64 65 63 6c 61 72 65 64 2c 20 65 78 74 5f 6f 70 65 6e 2c 20 65 78 74   ┆sed, ext_declared, ext_open, ext┆
0x09c3a0…09c3c0             5f 63 6c 6f 73 65 64 29 3b 0a 0a 70 61 72 61 6d 5f 70 74 72 3d 20 5e 20 70 61 72 61 6d 5f 64 65   ┆_closed);  param_ptr= ^ param_de┆
0x09c3c0…09c3e0             73 63 72 3b 0a 0a 70 61 72 61 6d 5f 64 65 73 63 72 20 3d 20 72 65 63 6f 72 64 0a 6e 65 78 74 5f   ┆scr;  param_descr = record next_┆
0x09c3e0…09c400             70 61 72 61 6d 3a 20 70 61 72 61 6d 5f 70 74 72 3b 0a 6b 69 6e 64 2c 0a 73 69 7a 65 20 3a 20 69   ┆param: param_ptr; kind, size : i┆
0x09c400…09c420 (41, 1, 6)  6e 74 65 67 65 72 3b 0a 65 6e 64 3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 65 78 74 5f 73 63 61 6e   ┆nteger; end;  procedure ext_scan┆
0x09c420…09c440             3b 0a 63 6f 6e 73 74 0a 73 69 7a 65 5f 6f 66 5f 63 6f 64 65 64 65 73 63 72 20 3d 20 38 3b 20 28   ┆; const size_of_codedescr = 8; (┆
0x09c440…09c460             2a 20 6e 6f 20 6f 66 20 77 6f 72 64 73 20 69 6e 20 64 65 73 63 72 2c 20 63 6f 6e 74 61 69 6e 69   ┆* no of words in descr, containi┆
0x09c460…09c480             6e 67 20 64 61 74 65 20 65 74 63 20 2a 29 0a 76 61 72 0a 69 2c 20 6a 2c 20 63 6f 64 65 77 6f 72   ┆ng date etc *) var i, j, codewor┆
0x09c480…09c4a0             64 73 2c 20 73 6b 69 70 77 6f 72 64 73 2c 20 63 6f 64 65 70 6f 73 2c 0a 64 65 73 63 72 5f 6c 65   ┆ds, skipwords, codepos, descr_le┆
0x09c4a0…09c4c0             6e 67 74 68 2c 20 6e 6f 5f 6f 66 5f 70 61 67 65 73 2c 20 73 69 7a 65 5f 6f 66 5f 70 61 67 65 2c   ┆ngth, no_of_pages, size_of_page,┆
0x09c4c0…09c4e0             20 62 79 74 65 73 5f 6f 6e 5f 6c 61 73 74 5f 70 61 67 65 2c 20 6b 69 6e 64 5f 6f 66 5f 6f 62 6a   ┆ bytes_on_last_page, kind_of_obj┆
0x09c4e0…09c500             2c 0a 61 70 70 2c 20 70 6e 6f 2c 20 6e 65 78 74 5f 77 6f 72 64 2c 0a 63 75 72 6b 65 79 2c 20 70   ┆, app, pno, next_word, curkey, p┆
0x09c500…09c520             72 65 76 6b 65 79 20 3a 20 69 6e 74 65 67 65 72 3b 0a 69 64 65 6e 74 20 3a 20 69 64 65 6e 74 69   ┆revkey : integer; ident : identi┆
0x09c520…09c540             66 69 65 72 3b 0a 70 61 72 61 6d 74 61 62 20 3a 20 61 72 72 61 79 20 5b 20 31 20 2e 2e 20 64 65   ┆fier; paramtab : array [ 1 .. de┆
0x09c540…09c560             73 63 72 5f 6d 61 78 5f 70 61 72 61 6d 20 5d 20 6f 66 20 70 61 72 61 6d 5f 64 65 73 63 72 3b 0a   ┆scr_max_param ] of param_descr; ┆
0x09c560…09c580             66 6f 75 6e 64 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 70 61 72 61 6d 5f 70 3a 20 70 61 72 61 6d 5f   ┆found : boolean; param_p: param_┆
0x09c580…09c5a0             70 74 72 3b 0a 0a 62 65 67 69 6e 0a 0a 72 65 73 65 74 20 28 65 78 74 5f 70 61 73 73 35 29 3b 0a   ┆ptr;  begin  reset (ext_pass5); ┆
0x09c5a0…09c5c0             72 65 61 64 28 65 78 74 5f 70 61 73 73 35 2c 20 6e 65 78 74 5f 77 6f 72 64 29 3b 0a 66 69 6c 65   ┆read(ext_pass5, next_word); file┆
0x09c5c0…09c5e0             5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 30 3b 0a 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 20 20 3a 3d   ┆_position := 0; not_resolved  :=┆
0x09c5e0…09c600             20 31 3b 0a 0a 77 69 74 68 20 65 78 74 5f 6f 70 65 6e 5f 63 6f 64 65 73 20 64 6f 0a 77 68 69 6c   ┆ 1;  with ext_open_codes do whil┆
0x09c600…09c620 (41, 1, 7)  65 20 6e 6f 74 20 65 6f 66 28 65 78 74 5f 70 61 73 73 35 29 20 61 6e 64 20 28 6e 65 78 74 5f 77   ┆e not eof(ext_pass5) and (next_w┆
0x09c620…09c640             6f 72 64 20 3e 20 30 29 20 61 6e 64 20 28 6e 6f 74 5f 72 65 73 6f 6c 76 65 64 20 3e 20 30 29 20   ┆ord > 0) and (not_resolved > 0) ┆
0x09c640…09c660             64 6f 0a 62 65 67 69 6e 0a 64 65 73 63 72 5f 6c 65 6e 67 74 68 20 3a 3d 20 6e 65 78 74 5f 77 6f   ┆do begin descr_length := next_wo┆
0x09c660…09c680             72 64 3b 0a 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 0a 6e 6f 5f 6f 66 5f 70 61 67 65 73   ┆rd; read (ext_pass5, no_of_pages┆
0x09c680…09c6a0             2c 0a 73 69 7a 65 5f 6f 66 5f 70 61 67 65 2c 0a 62 79 74 65 73 5f 6f 6e 5f 6c 61 73 74 5f 70 61   ┆, size_of_page, bytes_on_last_pa┆
0x09c6a0…09c6c0             67 65 2c 0a 6b 69 6e 64 5f 6f 66 5f 6f 62 6a 29 3b 0a 0a 28 2a 20 72 65 61 64 20 6e 61 6d 65 20   ┆ge, kind_of_obj);  (* read name ┆
0x09c6c0…09c6e0             2a 29 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 36 20 64 6f 0a 62 65 67 69 6e 0a 72 65 61 64   ┆*) for i := 1 to 6 do begin read┆
0x09c6e0…09c700             20 28 65 78 74 5f 70 61 73 73 35 2c 20 61 70 70 29 3b 0a 69 64 65 6e 74 20 5b 20 69 2a 32 2d 31   ┆ (ext_pass5, app); ident [ i*2-1┆
0x09c700…09c720             20 5d 20 3a 3d 20 63 68 72 20 28 61 70 70 20 64 69 76 20 32 35 36 29 3b 0a 69 64 65 6e 74 20 5b   ┆ ] := chr (app div 256); ident [┆
0x09c720…09c740             20 69 2a 32 20 20 20 5d 20 3a 3d 20 63 68 72 20 28 61 70 70 20 6d 6f 64 20 32 35 36 29 3b 0a 65   ┆ i*2   ] := chr (app mod 256); e┆
0x09c740…09c760             6e 64 3b 0a 66 6f 72 20 69 20 3a 3d 20 31 33 20 74 6f 20 63 5f 73 69 7a 65 5f 69 64 65 6e 74 69   ┆nd; for i := 13 to c_size_identi┆
0x09c760…09c780             66 69 65 72 20 64 6f 20 69 64 65 6e 74 20 5b 20 69 20 5d 20 3a 3d 20 27 20 27 3b 0a 77 72 69 74   ┆fier do ident [ i ] := ' '; writ┆
0x09c780…09c7a0             65 6c 6e 28 27 69 64 65 6e 74 69 66 69 65 72 3a 20 27 2c 20 69 64 65 6e 74 29 3b 0a 0a 28 2a 20   ┆eln('identifier: ', ident);  (* ┆
0x09c7a0…09c7c0             73 6b 69 70 20 65 6e 74 72 79 20 70 6f 69 6e 74 73 20 65 74 63 20 2a 29 0a 66 6f 72 20 69 20 3a   ┆skip entry points etc *) for i :┆
0x09c7c0…09c7e0             3d 20 31 20 74 6f 20 35 20 64 6f 20 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 6e 65 78   ┆= 1 to 5 do read (ext_pass5, nex┆
0x09c7e0…09c800             74 5f 77 6f 72 64 29 3b 0a 28 2a 72 65 61 64 20 6c 61 73 74 20 70 61 72 61 6d 20 6f 66 66 73 65   ┆t_word); (*read last param offse┆
0x09c800…09c820 (41, 1, 8)  74 2a 29 0a 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 61 70 70 29 3b 0a 0a 28 2a 73 6b 69   ┆t*) read (ext_pass5,app);  (*ski┆
0x09c820…09c840             70 20 74 68 65 20 66 72 65 65 20 77 6f 72 64 73 2a 29 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f   ┆p the free words*) for i := 1 to┆
0x09c840…09c860             20 64 65 73 63 72 5f 66 72 65 65 5f 77 6f 72 64 73 20 64 6f 20 72 65 61 64 28 65 78 74 5f 70 61   ┆ descr_free_words do read(ext_pa┆
0x09c860…09c880             73 73 35 2c 20 6e 65 78 74 5f 77 6f 72 64 29 3b 0a 0a 28 2a 72 65 61 64 20 6e 75 6d 62 65 72 20   ┆ss5, next_word);  (*read number ┆
0x09c880…09c8a0             6f 66 20 70 61 72 61 6d 73 20 2a 29 0a 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 70 6e 6f   ┆of params *) read (ext_pass5,pno┆
0x09c8a0…09c8c0             29 3b 0a 77 72 69 74 65 6c 6e 28 27 70 61 72 61 6d 73 3a 20 27 2c 70 6e 6f 29 3b 0a 0a 69 66 20   ┆); writeln('params: ',pno);  if ┆
0x09c8c0…09c8e0             70 6e 6f 20 3e 20 64 65 73 63 72 5f 6d 61 78 5f 70 61 72 61 6d 20 74 68 65 6e 20 77 72 69 74 65   ┆pno > descr_max_param then write┆
0x09c8e0…09c900             6c 6e 28 27 65 72 72 6f 72 2d 65 78 74 5f 70 61 72 61 6d 5f 6e 75 6d 62 65 72 27 29 3b 0a 66 6f   ┆ln('error-ext_param_number'); fo┆
0x09c900…09c920             72 20 69 20 3a 3d 20 31 20 74 6f 20 70 6e 6f 20 64 6f 0a 77 69 74 68 20 70 61 72 61 6d 74 61 62   ┆r i := 1 to pno do with paramtab┆
0x09c920…09c940             5b 20 69 20 5d 20 64 6f 0a 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 6b 69 6e 64 2c 20   ┆[ i ] do read (ext_pass5, kind, ┆
0x09c940…09c960             73 69 7a 65 29 3b 0a 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 64 65 73 63 72 5f 6c   ┆size);  file_position := descr_l┆
0x09c960…09c980             65 6e 67 74 68 20 64 69 76 20 32 20 2b 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 3b 0a 63 6f 64   ┆ength div 2 + file_position; cod┆
0x09c980…09c9a0             65 77 6f 72 64 73 20 3a 3d 20 28 28 6e 6f 5f 6f 66 5f 70 61 67 65 73 20 2d 20 31 29 20 2a 20 73   ┆ewords := ((no_of_pages - 1) * s┆
0x09c9a0…09c9c0             69 7a 65 5f 6f 66 5f 70 61 67 65 20 2b 20 62 79 74 65 73 5f 6f 6e 5f 6c 61 73 74 5f 70 61 67 65   ┆ize_of_page + bytes_on_last_page┆
0x09c9c0…09c9e0             20 2b 20 31 29 20 64 69 76 20 32 3b 0a 73 6b 69 70 77 6f 72 64 73 20 3a 3d 20 63 6f 64 65 77 6f   ┆ + 1) div 2; skipwords := codewo┆
0x09c9e0…09ca00             72 64 73 3b 0a 77 72 69 74 65 6c 6e 28 27 63 6f 64 65 20 3a 20 27 2c 20 63 6f 64 65 77 6f 72 64   ┆rds; writeln('code : ', codeword┆
0x09ca00…09ca20 (41, 1, 9)  73 29 3b 0a 0a 69 66 20 28 6b 69 6e 64 5f 6f 66 5f 6f 62 6a 20 3d 20 34 29 20 6f 72 20 28 6b 69   ┆s);  if (kind_of_obj = 4) or (ki┆
0x09ca20…09ca40             6e 64 5f 6f 66 5f 6f 62 6a 20 3d 20 35 29 20 74 68 65 6e 0a 62 65 67 69 6e 20 28 2a 20 6f 70 65   ┆nd_of_obj = 5) then begin (* ope┆
0x09ca40…09ca60             6e 20 72 6f 75 74 69 6e 65 20 69 6e 20 6c 69 62 72 61 72 79 20 2a 29 0a 0a 77 72 69 74 65 6c 6e   ┆n routine in library *)  writeln┆
0x09ca60…09ca80             28 27 6f 70 65 6e 20 2d 20 72 6f 75 74 69 6e 65 27 29 3b 0a 65 6e 64 3b 0a 0a 28 2a 20 73 6b 69   ┆('open - routine'); end;  (* ski┆
0x09ca80…09caa0             70 20 61 6e 79 20 72 65 6d 61 69 6e 69 6e 67 20 70 61 72 74 20 6f 66 20 63 6f 64 65 2d 62 6f 64   ┆p any remaining part of code-bod┆
0x09caa0…09cac0             79 20 2a 29 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 73 6b 69 70 77 6f 72 64 73 20 64 6f 20   ┆y *) for i := 1 to skipwords do ┆
0x09cac0…09cae0             72 65 61 64 28 65 78 74 5f 70 61 73 73 35 2c 20 6e 65 78 74 5f 77 6f 72 64 29 3b 0a 66 69 6c 65   ┆read(ext_pass5, next_word); file┆
0x09cae0…09cb00             5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 2b 20 63 6f 64   ┆_position := file_position + cod┆
0x09cb00…09cb20             65 77 6f 72 64 73 3b 0a 28 2a 20 73 6b 69 70 20 65 78 74 65 72 6e 61 6c 20 6c 69 6e 6b 20 70 61   ┆ewords; (* skip external link pa┆
0x09cb20…09cb40             72 74 20 2a 29 0a 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 70 6e 6f 29 3b 0a 66 69 6c   ┆rt *) read (ext_pass5, pno); fil┆
0x09cb40…09cb60             65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 2b 20 31 3b   ┆e_position := file_position + 1;┆
0x09cb60…09cb80             0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 70 6e 6f 20 64 6f 0a 62 65 67 69 6e 0a 28 2a 20 73   ┆ for i := 1 to pno do begin (* s┆
0x09cb80…09cba0             6b 69 70 20 65 78 74 65 72 6e 61 6c 20 6e 61 6d 65 20 2a 29 0a 66 6f 72 20 6a 20 3a 3d 20 31 20   ┆kip external name *) for j := 1 ┆
0x09cba0…09cbc0             74 6f 20 36 20 64 6f 20 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 6e 65 78 74 5f 77 6f   ┆to 6 do read (ext_pass5, next_wo┆
0x09cbc0…09cbe0             72 64 29 3b 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74   ┆rd); file_position := file_posit┆
0x09cbe0…09cc00             69 6f 6e 20 2b 20 36 3b 0a 28 2a 20 73 6b 69 70 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20   ┆ion + 6; (* skip parameter list ┆
0x09cc00…09cc20 (41, 1, 10) 2a 29 0a 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 6a 29 3b 20 28 2a 20 6e 75 6d 62 65   ┆*) read (ext_pass5, j); (* numbe┆
0x09cc20…09cc40             72 20 6f 66 20 70 61 72 61 6d 73 20 2a 29 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20   ┆r of params *) file_position := ┆
0x09cc40…09cc60             66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 2b 20 32 2a 6a 20 2b 20 31 3b 0a 66 6f 72 20 6a 20 3a   ┆file_position + 2*j + 1; for j :┆
0x09cc60…09cc80             3d 20 32 2a 6a 20 64 6f 77 6e 74 6f 20 31 20 64 6f 20 72 65 61 64 20 28 65 78 74 5f 70 61 73 73   ┆= 2*j downto 1 do read (ext_pass┆
0x09cc80…09cca0             35 2c 20 6e 65 78 74 5f 77 6f 72 64 29 3b 0a 28 2a 20 73 6b 69 70 20 6e 75 6d 62 65 72 20 6f 66   ┆5, next_word); (* skip number of┆
0x09cca0…09ccc0             20 75 73 65 73 20 2a 29 0a 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 6e 65 78 74 5f 77   ┆ uses *) read (ext_pass5, next_w┆
0x09ccc0…09cce0             6f 72 64 29 3b 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69   ┆ord); file_position := file_posi┆
0x09cce0…09cd00             74 69 6f 6e 20 2b 20 31 3b 0a 65 6e 64 3b 0a 28 2a 20 73 6b 69 70 20 69 6e 74 65 72 6e 61 6c 20   ┆tion + 1; end; (* skip internal ┆
0x09cd00…09cd20             6c 69 6e 6b 20 70 61 72 74 20 2a 29 0a 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 70 6e   ┆link part *) read (ext_pass5, pn┆
0x09cd20…09cd40             6f 29 3b 0a 70 6e 6f 20 3a 3d 20 70 6e 6f 20 2a 20 34 3b 20 28 2a 20 66 6f 75 72 20 77 6f 72 64   ┆o); pno := pno * 4; (* four word┆
0x09cd40…09cd60             73 20 70 65 72 20 65 6e 74 72 79 20 2a 29 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 70 6e 6f   ┆s per entry *) for i := 1 to pno┆
0x09cd60…09cd80             20 64 6f 20 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 6e 65 78 74 5f 77 6f 72 64 29 3b   ┆ do read (ext_pass5, next_word);┆
0x09cd80…09cda0             0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20   ┆ file_position := file_position ┆
0x09cda0…09cdc0             2b 20 70 6e 6f 20 2b 20 31 3b 0a 0a 28 2a 20 6e 6f 77 20 74 68 65 20 6c 69 62 72 61 72 79 66 69   ┆+ pno + 1;  (* now the libraryfi┆
0x09cdc0…09cde0             6c 65 20 69 73 20 70 6f 73 69 74 69 6f 6e 65 64 20 61 74 20 73 74 61 72 74 20 6f 66 20 6e 65 78   ┆le is positioned at start of nex┆
0x09cde0…09ce00             74 20 65 6e 74 72 79 20 2a 29 0a 72 65 61 64 28 65 78 74 5f 70 61 73 73 35 2c 20 6e 65 78 74 5f   ┆t entry *) read(ext_pass5, next_┆
0x09ce00…09ce20 (41, 1, 11) 77 6f 72 64 29 3b 0a 65 6e 64 3b 20 28 2a 20 73 63 61 6e 20 6f 66 20 6c 69 62 72 61 72 79 20 66   ┆word); end; (* scan of library f┆
0x09ce20…09ce40             69 6c 65 20 2a 29 0a 0a 65 6e 64 3b 20 28 2a 20 70 72 6f 63 65 64 75 72 65 20 65 78 74 73 63 61   ┆ile *)  end; (* procedure extsca┆
0x09ce40…09ce60             6e 20 2a 29 0a 0a 62 65 67 69 6e 0a 20 20 61 73 73 69 67 6e 28 65 78 74 5f 70 61 73 73 35 2c 20   ┆n *)  begin   assign(ext_pass5, ┆
0x09ce60…09ce80             27 72 74 70 33 35 30 32 32 2e 6c 69 62 27 29 3b 0a 20 20 65 78 74 5f 73 63 61 6e 3b 0a 65 6e 64   ┆'rtp35022.lib');   ext_scan; end┆
0x09ce80…09cea0             2e 0a 01 45 20 31 0a 5f 77 6f 72 64 29 3b 0a 28 2a 20 73 6b 69 70 20 6e 75 6d 62 65 72 20 6f 66   ┆.  E 1 _word); (* skip number of┆
0x09cea0…09cec0             20 75 73 65 73 20 2a 29 0a 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 6e 65 78 74 5f 77   ┆ uses *) read (ext_pass5, next_w┆
0x09cec0…09cee0             6f 72 64 29 3b 0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69   ┆ord); file_position := file_posi┆
0x09cee0…09cf00             74 69 6f 6e 20 2b 20 31 3b 0a 65 6e 64 3b 0a 28 2a 20 73 6b 69 70 20 69 6e 74 65 72 6e 61 6c 20   ┆tion + 1; end; (* skip internal ┆
0x09cf00…09cf20             6c 69 6e 6b 20 70 61 72 74 20 2a 29 0a 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 70 6e   ┆link part *) read (ext_pass5, pn┆
0x09cf20…09cf40             6f 29 3b 0a 70 6e 6f 20 3a 3d 20 70 6e 6f 20 2a 20 34 3b 20 28 2a 20 66 6f 75 72 20 77 6f 72 64   ┆o); pno := pno * 4; (* four word┆
0x09cf40…09cf60             73 20 70 65 72 20 65 6e 74 72 79 20 2a 29 0a 66 6f 72 20 69 20 3a 3d 20 31 20 74 6f 20 70 6e 6f   ┆s per entry *) for i := 1 to pno┆
0x09cf60…09cf80             20 64 6f 20 72 65 61 64 20 28 65 78 74 5f 70 61 73 73 35 2c 20 6e 65 78 74 5f 77 6f 72 64 29 3b   ┆ do read (ext_pass5, next_word);┆
0x09cf80…09cfa0             0a 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20 3a 3d 20 66 69 6c 65 5f 70 6f 73 69 74 69 6f 6e 20   ┆ file_position := file_position ┆
0x09cfa0…09cfc0             2b 20 70 6e 6f 20 2b 20 31 3b 0a 0a 28 2a 20 6e 6f 77 20 74 68 65 20 6c 69 62 72 61 72 79 66 69   ┆+ pno + 1;  (* now the libraryfi┆
0x09cfc0…09cfe0             6c 65 20 69 73 20 70 6f 73 69 74 69 6f 6e 65 64 20 61 74 20 73 74 61 72 74 20 6f 66 20 6e 65 78   ┆le is positioned at start of nex┆
0x09cfe0…09d000             74 20 65 6e 74 72 79 20 2a 29 0a 72 65 61 64 28 65 78 74 5f 70 61 73 73 35 2c 20 6e 65 78 74 5f   ┆t entry *) read(ext_pass5, next_┆
0x09d000…09d020 (41, 1, 12) 2e 2e 2f 73 77 32 31 30 33 2f 73 72 63 2f 64 65 62 75 67 2f 78 63 6f 6d 70 61 72 65 00 00 00 00   ┆../sw2103/src/debug/xcompare    ┆
0x09d020…09d040             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0x1…]
0x09d060…09d080             00 00 00 00 20 20 20 37 35 35 20 00 20 20 20 32 35 35 20 00 20 20 20 31 34 36 20 00 20 20 20 20   ┆       755     255     146      ┆
0x09d080…09d0a0             20 20 32 30 32 33 30 20 20 35 32 36 36 35 35 37 36 34 32 20 20 31 30 37 36 35 00 20 00 00 00 00   ┆  20230  5266557642  10765      ┆
0x09d0a0…09d0c0             00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
                            […0xa…]
0x09d200…09d220 (41, 1, 13) 70 72 6f 67 72 61 6d 20 63 6f 6d 70 61 72 65 3b 0a 75 73 65 73 20 64 6f 73 2c 20 72 74 70 75 6e   ┆program compare; uses dos, rtpun┆
0x09d220…09d240             69 74 3b 0a 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆it;  (*-------------------------┆
0x09d240…09d260             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09d260…09d280             2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 0a 2d 2d 20 28 43 29 20 43 6f 70 79 72 69 67 74 68 20 31 39 39   ┆-------- -- -- (C) Copyrigth 199┆
0x09d280…09d2a0             32 20 20 44 41 4e 4f 53 49 0a 2d 2d 0a 28 2a 20 78 78 78 78 78 78 20 6a 61 62 61 20 31 2e 31 20   ┆2  DANOSI -- (* xxxxxx jaba 1.1 ┆
0x09d2a0…09d2c0             46 69 72 73 74 20 76 65 72 73 69 6f 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆First version                   ┆
0x09d2c0…09d2e0             20 20 20 20 2a 29 0a 28 2a 20 38 37 30 36 30 39 20 62 62 20 20 20 31 2e 32 20 43 6f 6e 76 65 72   ┆    *) (* 870609 bb   1.2 Conver┆
0x09d2e0…09d300             74 65 64 20 74 6f 20 6c 66 33 35 30 32 20 61 6e 64 20 66 70 33 35 30 32 20 20 20 20 20 20 2a 29   ┆ted to lf3502 and fp3502      *)┆
0x09d300…09d320             0a 28 2a 20 38 39 30 31 32 30 20 62 62 20 20 20 31 2e 33 20 43 6f 6e 63 65 70 74 20 27 70 61 67   ┆ (* 890120 bb   1.3 Concept 'pag┆
0x09d320…09d340             65 27 20 69 6e 73 74 65 61 64 20 6f 66 20 27 73 65 67 6d 65 6e 74 27 2e 2a 29 0a 28 2a 20 20 20   ┆e' instead of 'segment'.*) (*   ┆
0x09d340…09d360             20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 63 6f 6e 27 20 73 75 62 73 74 69 74 75 74 65 64 20   ┆              'con' substituted ┆
0x09d360…09d380             77 69 74 68 20 6c 66 5f 63 6f 6e 6e 61 6d 65 2e 20 20 2a 29 0a 28 2a 20 38 39 30 32 31 36 20 65   ┆with lf_conname.  *) (* 890216 e┆
0x09d380…09d3a0             62 6b 20 20 31 2e 34 20 43 6f 6e 76 65 72 74 65 64 20 74 6f 20 54 55 52 42 4f 20 20 20 20 20 20   ┆bk  1.4 Converted to TURBO      ┆
0x09d3a0…09d3c0             20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0a 0a 28 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆            *)  (*--------------┆
0x09d3c0…09d3e0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09d3e0…09d400             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2d 2d 09 53 43 43 53 20 69 6e 66 6f   ┆------------------- -- SCCS info┆
0x09d400…09d420 (41, 1, 14) 72 6d 61 74 69 6f 6e 0a 2d 2d 09 46 69 6c 65 20 20 20 3a 20 20 25 50 25 0a 2d 2d 09 4d 6f 64 75   ┆rmation -- File   :  %P% -- Modu┆
0x09d420…09d440             6c 65 20 3a 20 20 25 4d 25 0a 2d 2d 09 56 65 72 73 69 6f 6e 3a 20 20 25 49 25 0a 2d 2d 09 44 61   ┆le :  %M% -- Version:  %I% -- Da┆
0x09d440…09d460             74 65 20 20 20 3a 20 20 25 45 25 20 20 25 55 25 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆te   :  %E%  %U% ---------------┆
0x09d460…09d480             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ┆--------------------------------┆
0x09d480…09d4a0             2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 29 0a 0a 0a 63 6f 6e 73 74 0a   ┆-------------------- *)   const ┆
0x09d4a0…09d4c0             74 65 73 74 5f 6f 75 74 3d 20 66 61 6c 73 65 3b 0a 66 69 6c 6d 61 78 20 3d 20 32 35 36 3b 0a 0a   ┆test_out= false; filmax = 256;  ┆
0x09d4c0…09d4e0             74 79 70 65 0a 66 69 6c 65 72 65 63 20 3d 20 61 72 72 61 79 5b 31 2e 2e 66 69 6c 6d 61 78 5d 20   ┆type filerec = array[1..filmax] ┆
0x09d4e0…09d500             6f 66 20 69 6e 74 65 67 65 72 3b 0a 0a 76 61 72 0a 73 61 76 65 65 78 69 74 20 20 20 3a 20 70 6f   ┆of integer;  var saveexit   : po┆
0x09d500…09d520             69 6e 74 65 72 3b 0a 0a 66 69 6c 31 2c 20 66 69 6c 32 20 3a 20 66 69 6c 65 3b 0a 66 69 6c 31 5f   ┆inter;  fil1, fil2 : file; fil1_┆
0x09d520…09d540             69 78 20 20 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 66 69 6c 31 5f 72 65 63 20 20 20 3a 20 69 6e   ┆ix    : integer; fil1_rec   : in┆
0x09d540…09d560             74 65 67 65 72 3b 0a 66 69 6c 31 5f 70 74 72 20 20 20 3a 20 5e 66 69 6c 65 72 65 63 3b 0a 66 69   ┆teger; fil1_ptr   : ^filerec; fi┆
0x09d560…09d580             6c 32 5f 69 78 20 20 20 20 3a 20 69 6e 74 65 67 65 72 3b 0a 66 69 6c 32 5f 72 65 63 20 20 20 3a   ┆l2_ix    : integer; fil2_rec   :┆
0x09d580…09d5a0             20 69 6e 74 65 67 65 72 3b 0a 66 69 6c 32 5f 70 74 72 20 20 20 3a 20 5e 66 69 6c 65 72 65 63 3b   ┆ integer; fil2_ptr   : ^filerec;┆
0x09d5a0…09d5c0             0a 0a 66 69 72 73 74 5f 70 61 67 65 2c 20 6c 61 73 74 5f 70 61 67 65 2c 20 70 61 67 65 63 6f 75   ┆  first_page, last_page, pagecou┆
0x09d5c0…09d5e0             6e 74 2c 0a 77 63 6f 75 6e 74 2c 20 69 6e 74 76 61 6c 31 2c 20 69 6e 74 76 61 6c 32 2c 20 73 6b   ┆nt, wcount, intval1, intval2, sk┆
0x09d5e0…09d600             69 70 31 2c 20 73 6b 69 70 32 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6d 61 78 5f 64 69 66 73 2c 20   ┆ip1, skip2 : integer; max_difs, ┆
0x09d600…09d620 (41, 1, 15) 64 69 66 5f 63 6f 75 6e 74 3a 20 69 6e 74 65 67 65 72 3b 0a 0a 73 65 70 2c 20 70 61 72 61 6d 6e   ┆dif_count: integer;  sep, paramn┆
0x09d620…09d640             6f 2c 20 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 75 6d 62 65 72 20 3a 20 69 6e 74 65 67 65 72 3b 0a 6f   ┆o, call_line_number : integer; o┆
0x09d640…09d660             6b 2c 20 65 6f 66 31 2c 20 65 6f 66 32 2c 20 73 77 61 70 31 2c 20 73 77 61 70 32 2c 20 61 6c 6c   ┆k, eof1, eof2, swap1, swap2, all┆
0x09d660…09d680             5f 64 69 66 66 2c 20 73 74 6f 70 31 2c 20 73 74 6f 70 32 20 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 6d   ┆_diff, stop1, stop2 : boolean; m┆
0x09d680…09d6a0             61 78 31 5f 6c 61 73 74 2c 20 6d 61 78 31 5f 72 65 63 2c 20 6d 61 78 32 5f 6c 61 73 74 2c 20 6d   ┆ax1_last, max1_rec, max2_last, m┆
0x09d6a0…09d6c0             61 78 32 5f 72 65 63 3a 20 69 6e 74 65 67 65 72 3b 0a 68 65 6c 70 5f 6c 6f 6e 67 3a 20 6c 6f 6e   ┆ax2_rec: integer; help_long: lon┆
0x09d6c0…09d6e0             67 69 6e 74 3b 0a 0a 62 79 74 31 2c 20 62 79 74 32 3a 20 62 79 74 65 3b 0a 63 68 31 2c 20 63 68   ┆gint;  byt1, byt2: byte; ch1, ch┆
0x09d6e0…09d700             32 3a 20 63 68 61 72 3b 0a 0a 63 61 6c 6c 5f 6c 69 6e 65 5f 6e 61 6d 65 3a 20 61 6c 66 61 3b 0a   ┆2: char;  call_line_name: alfa; ┆
0x09d700…09d720             6f 75 74 70 75 74 5f 66 69 6c 65 5f 6e 61 6d 65 2c 20 66 69 6c 31 5f 6e 61 6d 65 2c 20 66 69 6c   ┆output_file_name, fil1_name, fil┆
0x09d720…09d740             32 5f 6e 61 6d 65 3a 20 61 6c 66 61 3b 0a 0a 63 6f 6e 73 74 0a 0a 28 2a 20 63 6f 6e 73 74 61 6e   ┆2_name: alfa;  const  (* constan┆
0x09d740…09d760             74 73 20 61 6e 64 20 76 61 72 69 61 62 6c 65 73 20 63 6f 6e 63 65 72 6e 69 6e 67 20 63 61 6c 6c   ┆ts and variables concerning call┆
0x09d760…09d780             20 70 61 72 61 6d 65 74 65 72 20 72 65 61 64 69 6e 67 20 2a 29 0a 65 71 75 61 6c 20 3d 20 36 3b   ┆ parameter reading *) equal = 6;┆
0x09d780…09d7a0             20 73 70 61 63 65 20 3d 20 34 3b 20 64 6f 74 20 3d 20 38 3b 0a 6e 61 6d 65 20 20 3d 20 31 30 3b   ┆ space = 4; dot = 8; name  = 10;┆
0x09d7a0…09d7c0             20 69 6e 74 20 3d 20 34 3b 0a 70 6f 77 65 72 38 20 3d 20 32 35 36 3b 0a 0a 0a 28 2a 24 46 2b 2a   ┆ int = 4; power8 = 256;   (*$F+*┆
0x09d7c0…09d7e0             29 20 70 72 6f 63 65 64 75 72 65 20 65 78 63 65 70 74 69 6f 6e 3b 20 28 2a 24 46 2d 2a 29 0a 62   ┆) procedure exception; (*$F-*) b┆
0x09d7e0…09d800             65 67 69 6e 0a 65 78 69 74 70 72 6f 63 20 3a 3d 20 73 61 76 65 65 78 69 74 3b 0a 0a 72 75 6e 74   ┆egin exitproc := saveexit;  runt┆
0x09d800…09d820 (42, 0, 1)  69 6d 65 5f 65 72 72 6f 72 28 27 45 6e 64 20 6f 66 20 63 6f 6d 70 61 72 65 27 29 3b 0a 65 6e 64   ┆ime_error('End of compare'); end┆
0x09d820…09d840             3b 0a 0a 70 72 6f 63 65 64 75 72 65 20 69 6e 5f 66 69 6c 31 28 76 61 72 20 70 3a 20 69 6e 74 65   ┆;  procedure in_fil1(var p: inte┆
0x09d840…09d860             67 65 72 29 3b 0a 76 61 72 20 63 6f 75 6e 74 3a 20 69 6e 74 65 67 65 72 3b 0a 62 65 67 69 6e 0a   ┆ger); var count: integer; begin ┆
0x09d860…09d880             20 20 66 69 6c 31 5f 69 78 20 3a 3d 20 66 69 6c 31 5f 69 78 20 2b 20 31 3b 0a 20 20 69 66 20 66   ┆  fil1_ix := fil1_ix + 1;   if f┆
0x09d880…09d8a0             69 6c 31 5f 69 78 20 3e 20 66 69 6c 6d 61 78 20 74 68 65 6e 0a 20 20 62 65 67 69 6e 0a 20 20 20   ┆il1_ix > filmax then   begin    ┆
0x09d8a0…09d8c0             20 66 69 6c 31 5f 72 65 63 20 3a 3d 20 66 69 6c 31 5f 72 65 63 20 2b 20 31 3b 0a 20 20 20 20 66   ┆ fil1_rec := fil1_rec + 1;     f┆
0x09d8c0…09d8e0             69 6c 31 5f 69 78 20 3a 3d 20 31 3b 0a 20 20 20 20 69 66 20 66 69 6c 31 5f 72 65 63 20 3c 20 6d   ┆il1_ix := 1;     if fil1_rec < m┆
0x09d8e0…09d900             61 78 31 5f 72 65 63 20 74 68 65 6e 20 63 6f 75 6e 74 20 3a 3d 20 66 69 6c 6d 61 78 20 65 6c 73   ┆ax1_rec then count := filmax els┆
0x09d900…09d920             65 20 63 6f 75 6e 74 20 3a 3d 20 6d 61 78 31 5f 6c 61 73 74 3b 0a 20 20 20 20 62 6c 6f 63 6b 72   ┆e count := max1_last;     blockr┆
[…truncated at 20000 lines…]