|
|
DataMuseum.dkPresents historical artifacts from the history of: DANOSI |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DANOSI Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics
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
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…]