|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 79104 (0x13500) Types: TextFile Names: »algpass63tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code └─⟦75ff9bef3⟧ └─⟦this⟧ »algpass63tx «
; rc 11.1.1971 algol 6, pass 6, page ...0... ; pass 6 makes a type and kind check on all operands and outputs the ; text in reverse polish notation. some operators are deleted after ; the type check (e.g. pos) - other operators are added (e.g. convert ; top etc.). two stacks are used: ; operator stack: entries consist of double words beginning with the ; first free double word after pass 6 and continuing ; higher in the store as needed. ; operand stack : entries consist of words beginning with the last free ; word accessible by pass 6 and continuing lower in ; the store as needed. operand kinds and types are ; designated as follows: ; bit 7 = 1<16 : expression ; - 8 = 1<15 : variable ; - 9 = 1<14 : formal procedure ; - 10 = 1<13 : no parameter procedure ; - 11 = 1<12 : parameter procedure ; - 12 = 1<11 : array ; - 13 = 1<10 : zone array ; - 14 = 1<9 : zone ; - 15 = 1<8 : field ; - 16 = 1<7 : array field ; - 17 = 1<6 : no type ; - 18 = 1<5 : label ; - 19 = 1<4 : string ; - 20 = 1<3 : integer ; - 21 = 1<2 : real ; - 22 = 1<1 : long ; - 23 = 1<0 : boolean ; briefly, the action proceeds as follows: a byte is input and used to ; index an entry in the input table. this entry is stored in the control ; word and also compared to operator stack(top). if the priority of ope- ; rator stack(top) is greater than the priority of the control word, ope- ; rator stack pointer is decreased and the new operator stack top is com- ; pared to the control word. eventually, if not initially, the priority ; of the control word will be greater than that of operator stack top and ; the input actions will ensue. frequently required tasks such as stacking ; and outputing are accomplished within the central logic, while special ; actions requiring entry addresses stored in input and operator table en- ; tries are jumped to from the central logic. often special actions by-pass ; the priority check which results in simply calling a new input byte. ; errors encountered in the pass and error identification bytes from previ- ; ous passes cause the output of error messages. usually such messages are ; accompanied by the transmission of the trouble byte to pass 7. cascading ; effects of errors are surpressed. ; the pass terminates when end pass (or end external and the subsequent ; standard procedure information bytes have been copied from input to output. \f ; rc 1977.11.03 algol 6, pass 6, page ...0.1... s. a35, b27, c70, d35, f49, g11, h54, j3, i6 w. k = e0 ; list of slang-names in global block and pages, where defined: ; a0 5, a5 5, a10 7, a15 19, a20 3, a25 , a30 20 ; a1 4, a6 16, a11 10, a16 18, a21 18, a26 , a31 12 ; a2 4, a7 5, a12 , a17 19, a22 15, a27 17, a32 12 ; a3 5, a8 5, a13 14, a18 15, a23 16, a28 17, a33 8 ; a4 5, a9 7, a14 11, a19 21, a24 18, a29 4, a34 8 ; a35 13, ; b0 , b4 , b8 , b12 , b16 , b20 5, b24 ; b1 , b5 , b9 , b13 , b17 , b21 15, b25 20 ; b2 , b6 , b10 , b14 , b18 , b22 15, b26 20 ; b3 , b7 , b11 , b15 , b19 5, b23 15, b27 20 ; c0 4, c10 10, c20 9, c30 8, c40 14, c50 21, c60 20 ; c1 7, c11 9, c21 12, c31 8, c41 14, c51 3, c61 20 ; c2 8, c12 11, c22 14, c32 8, c42 15, c52 3, c62 20 ; c3 8, c13 10, c23 12, c33 8, c43 17, c53 7, c63 11 ; c4 8, c14 7, c24 12, c34 13, c44 8, c54 9, c64 11 ; c5 9, c15 11, c25 12, c35 13, c45 18, c55 9, c65 11 ; c6 9, c16 11, c26 14, c36 13, c46 18, c56 20, c66 12 ; c7 9, c17 11, c27 13, c37 8, c47 11, c57 20, c67 11 ; c8 10, c18 11, c28 12, c38 13, c48 19, c58 20, c68 7 ; c9 10, c19 9, c29 13, c39 13, c49 21, c59 20, c69 13, c70 3 ; d0 4, d6 14, d12 14, d18 17, d24 21, d30 21 ; d1 4, d7 6, d13 16, d19 17, d25 21, d31 17 ; d2 4, d8 11, d14 16, d20 , d26 21, d32 9 ; d3 5, d9 11, d15 17, d21 18, d27 21, d33 9 ; d4 , d10 14, d16 17, d22 18, d28 21, d34 11 ; d5 15, d11 14, d17 17, d23 21, d29 21, d35 7 ; f0 1, f7 1, f14 21, f21 1, f28 , f35 1, f42 1, f49 1 ; f1 1, f8 1, f15 , f22 , f29 , f36 1, f43 1 ; f2 1, f9 1, f16 1, f23 , f30 1, f37 1, f44 1 ; f3 1, f10 , f17 , f24 , f31 1, f38 1, f45 1 ; f4 1, f11 1, f18 , f25 , f32 1, f39 1, f46 1 ; f5 1, f12 , f19 , f26 , f33 1, f40 1, f47 1 ; f6 1, f13 21, f20 , f27 , f34 1, f41 1, f48 1 ; g0 , g2 24, g4 33, g6 33, g8 26, g10 23 ; g1 27, g3 , g5 33, g7 26, g9 26, g11 ; h0 , h7 2, h14 2, h21 2, h28 , h35 2, h42 , h49 2 ; h1 , h8 2, h15 , h22 2, h29 , h36 2, h43 2, h50 2 ; h2 , h9 2, h16 2, h23 2, h30 , h37 2, h44 2, h51 2 ; h3 2, h10 2, h17 2, h24 , h31 2, h38 2, h45 2, h52 2 ; h4 2, h11 2, h18 2, h25 , h32 , h39 2, h46 2, h53 2 ; h5 2, h12 2, h19 2, h26 , h33 2, h40 2, h47 2, h54 2 ; h6 2, h13 , h20 2, h27 , h34 , h41 2, h48 2, ; i0 6, i1 6, i2 6, i3 6, i4 20, i5 20, i6 20 ; j0 1, j1 6, j2 6, j3 6 \f ; rc 23.1.1971 algol 6, pass 6, page ...1... j0: g5 ; no of byes in pass 6 h. d0, 6<1 + 0 ; entry , passno<1 + scan direction w. ; 0<12 + 0 ; control word (part 0 and 1) f0: 0<12 + 0 ; control word (part 2 and 3) f1: 0 ; operator stack pointer f2: 0 ; operand stack pointer f3: 0 ; pseudo stack pointer f30=1<0 ; boolean f31=1<1 ; long f32=1<2 ; real f33=1<3 ; integer f34=1<4 ; string f35=1<5 ; label f36=1<6 ; no type f37=1<7 ; array field f38=1<8 ; field f39=1<9 ; zone f40=1<10 ; zone array f45=127 ; all types f46= 15 ; all declarable types f4: 1<17-1 ; undefined operand, standard operand mask f6: 127 ; all type mask f7: 1<16 ; expression mask f8: f32+f34 ; real-string mask f9: 1<15 ; variable mask f11: 47<9 ; begin list mask f16: 0 ; f5: 0<12 + 0 ; no.operands in line, no.zones specs f21: 1<15+f33 ; variable and integer f41: 1<11 ; array f42: 1<12 ; parameter procedure f43: 1<13 ; no parameter procedure f44: 1<14 ; formal procedure f47: f46 ; all declarable types f48: -1<14 ; formal proc and undefined operand f49: f39+f32 ; zone and real \f ; rc 15.2.1971 algol 6, pass 6, page ...2... h3 = 0 ; output base for operators h4 = h3 + 107 ; call no param output value h5 = h3 + 38 ; not (-,) output value h6 = 145 ; if operator table value h7 = 146 ; while elem do operator table value h8 = h3 + 99 ; begin param output value h9 = h3 + 106 ; end call output value h10 = h3 + 100 ; end subscripts one output value h11 = h3 + 101 ; end subscripts more output value h12 = h3 + 105 ; zone indexing output value h14 = 336 ; no.zones error spec operator table index h16 = h3 + 118 ; trouble output value h17 = 144 ; output base for operands h18 = h3 + 102 ; first comma output value h19 = 148 ; then - of ex operator table index h20 = h3 + 113 ; end zone decl output value h21 = h3 + 97 ; end value param output value h22 = h3 + 96 ; end name param output value h23 = h3 + 98 ; end addr param output value h31 = h3 + 127 ; convert top real to int output value h33 = h3 + 128 ; convert top real to long output value h35 = h3 + 124 ; convert top int to real output value h36 = h3 + 130 ; convert nexttop int to real output value h37 = h3 + 123 ; convert top int to long output value h38 = h3 + 129 ; convert nexttop int to long output value h39 = h3 + 126 ; convert top long to real output value h40 = h3 + 131 ; convert nexttop long to real output value h41 = h3 + 125 ; convert top long to int output value h43 = h3 + 132 ; field boolean output value h44 = h3 + 134 ; field long output value h45 = h3 + 135 ; field real output value h46 = h3 + 133 ; field integer output value h47 = h3 + 136 ; array field boolean output value h48 = h3 + 138 ; array field long output value h49 = h3 + 139 ; array field real output value h50 = h3 + 137 ; array field integer output value h51 = h3 + 140 ; field subscr boolean output value h52 = h3 + 142 ; field subscr long output value h53 = h3 + 143 ; field subscr real output value h54 = h3 + 141 ; field subscr integer output value \f ; rc 15.3.1971 algol 6, pass 6, page ...3... c51: al w1 0 ; end external: bytes out := 0; jl. a20. ; goto end bytes; c52: al w1 4 ; end pass: bytes out := 4; a20: jl. w3 e2. ; endbytes: al w0 x2 ; for w1 := bytes out step 1 until 6 do jl. w3 e3. ; outbyte(inbyte); al w1 x1+1 ; se w1 6 ; jl. a20. ; sn w2 0 ; if last inbyte = 0 then goto next pass; jl. e7. ; ls w2 1 ; wm w2 2 ; rs. w2 f0. ; control word := 12*no.stdprocs; al w1 0 ; a21: jl. w3 e2. ; for w1 := 1 step 1 until controlword do al w0 x2 ; outbyte(inbyte); jl. w3 e3. ; al w1 x1+1 ; se. w1 (f0.) ; jl. a21. ; jl. e7. ; goto next pass; c70: rl. w0 f0.-2 ; delete call: rl. w1 (f2.) ; w0:=part 1(control word); sl w1 f45+1 ; w1:=top(operand stack); jl. w3 d3. ; if kind <> 0 then bz. w0 f0. ; check operand; jl. w3 e3. ; outbyte(part 3(control word)); jl. c28. ; goto decrease operand stack; \f ; jz 1979.06.22 algol 8, pass 6, page ...4... w. d0 = k - j0 ; entry pass 6 al. w2 g2. ; start pass 6: al w2 x2+g6 ; rs. w2 f1. ; operator stack pointer := bottom; rl. w0 e9.+4 ; rs. w0 f2. ; operand stack pointer := bottom; jl. w3 e2. ; al w0 x2 ; inbyte(no of own bytes); jl. w3 e3. ; outbyte; c0: jl. w3 e2. ; inbyte: al w2 x2-198 ; byte := inbyte - 198; ls w2 2 ; get table index: dl. w3 x2+g1. ; control word := ds. w3 f0. ; input table ( byte*4); d1: dl. w1 (f1.) ; priority check: sl w0 x2 ; if priority(operator stack top) > priority(contr.word) jl. a0. ; then goto unstacking actions; d2: bz w0 7 ; test control word: so w0 1<2 ; if stack bit(control word) = 1 then jl. a1. ; begin rl. w1 f1. ; operator stack pointer := al w1 x1+4 ; operator stack pointer + 4; sl. w1 (f2.) ; if operator stack and operand stack collide jl. d23. ; then goto stack overflow; rs. w1 f1. ; bz. w2 f0. ; operator stack(top) := dl. w3 x2+g2. ; operator table(part 3(control word)); ds w3 x1 ; end; a1: so w0 1<1 ; if output bit(control word) = 1 then jl. a2. ; begin bz. w0 f0.-1 ; byte := output part(control word); jl. w3 e3. ; outbyte; ; end; a2: bz. w2 f0.+1 ; action no := part 4(control word); a29: ls w2 -5 ; jump: action no := action no shift (-5); bl. w2 x2+g10. ; action := action table(action no); jl. x2+c0. ; switch to action; \f ; rc 15.04.1971 algol 6, pass 6, page ...5... a0: am. (f1.) ; unstacking actions: bz w0 1 ; bits := part 4(operator stack(top)); so w0 1<4 ; if typecheckbit <> 1 then jl. a4. ; goto action jump; rl. w2 f2. ; w2 := operand stack pointer; so w0 1<3 ; if (top+1) bit = 1 then jl. a3. ; begin al w2 x2+2 ; w1 := top(operand stack); rs. w2 f2. ; operand stack pointer := am -2 ; operand stack pointer + 2; a3: rl w1 x2 ; end am. (f1.) ; else w1 := top(operand stack); rl w0 -2 ; w0 := top(operator stack); jl. w3 d3. ; check operand; sn. w1 (f4.) ; if operand = undef then rs. w1 (f2.) ; top(operand stack):= undef; a4: am. (f1.) ; action jump: bz w2 1 ; action no := part 4(operator stack top); jl. a29. ; goto jump; ; procedure check operand; ; call: w0=mask; w1=operand; jl. w3 d3. ; exit: w1=kind and type(may be undef after error) d3: rs. w3 b19. ; check operand: save return; sn. w1 (f4.) ; if operand = undef then jl x3 ; return; la w1 0 ; w1 := mask and operand; sz w1 f45 ; if type correct then goto kind check; jl. a5. ; a8: jl. w2 d25. ; type error: type error; rl. w1 f4. ; w1 := undef; jl. (b19.) ; return; a5: sh w1 f45 ; kind check: jl. a8. ; if kind incorrect then goto type error; sz. w1 (b20.) ; if no parproc or formal proc jl. a7. ; then goto convert operand; jl. (b19.) ; return; a7: al w0 h4 ; convert operand: jl. w3 e3. ; outbyte(call no param); la. w1 f6. ; w1 := w1 and all type; wa. w1 f7. ; w1 := w1+expression; jl. (b19.) ; return; b19: 0 ; saved return b20: 1<13+1<14 ; mask (no parproc or formal proc) \f ; rc 18.1.1971 algol 6, pass 6, page ...6... ; procedure arith pair; ; call: w0=left operand; w1=right operand; ; jl. w2 d7. ; exit: w1=type of result; ; the procedure may output a convert (top or nexttop) operator; d7: la. w0 i2. ; arith pair: la. w1 i2. ; comment: w0=left op.; w1=right op.; ns w0 1 ; compute table index: bl w0 1 ; normalize(left operand and arith type mask); ba. w0 j3. ; wm. w0 i3. ; row := (exponent+21)*no.arith types; ns w1 3 ; normalize(right operand and arith type mask); bl w1 3 ; column := exponent; am (0) ; j3 = k + 1 ; 21 ; al w1 x1+21 ; index := row + column + 21; bl. w0 x1+i0. ; byte := convert operand(index); bz. w1 x1+i1. ; arith pair := arith pair result(index); se w0 -1 ; if operand types not the same jl. w3 e3. ; then outbyte; jl x2 ; return; ; in the following two matrix-tables, the row-index is the left operand ; and the column-index the right operand ; convert operator table(output value): h. ; long real integer ; i0: -1, h40, h37 ; long h39, -1, h35 ; real j1: h38, h36, -1 ; integer j2 = k - j1 ; arith pair result table: ; long real integer ; i1: f31, f32, f31 ; long f32, f32, f32 ; real f31, f32, f33 ; integer w. i2: f31+f32+f33 ; arith type mask i3: j2 ; no of arith types \f ; rc 11.3.1971 algol 6, pass 6, page ...7... c53: rl. w1 f4. ; load undefined operand: w1 := undef; c14: rs. w1 (f2.) ; store operand: operand stack(top) := operand; c1: am. (f1.) ; bit actions: bz w1 1 ; bits := part 4(operator stack top); so w1 1<2 ; test no result: jl. a9. ; if no result bit = 1 then rl. w2 f2. ; unstack operand: al w2 x2+2 ; operand stack pointer := rs. w2 f2. ; operand stack pointer + 2; a9: so w1 1<1 ; output self: jl. a10. ; if output self bit = 1 then bz. w0 (f1.) ; begin byte := part 3(operator stack top); jl. w3 e3. ; outbyte; ; end; a10: rl. w2 f1. ; unstack operator: al w2 x2-4 ; operator stack pointer := rs. w2 f1. ; operator stack pointer - 4; dl. w3 f0. ; (w2,w3) := control word; so w1 1<0 ; if terminate unstack bit = 0 then jl. d1. ; goto priority check; jl. d2. ; goto test control word; d35: rx. w1 f1. ; stack operator: al w1 x1+4 ; operator stack pointer := sl. w1 (f2.) ; operator stack pointer + 4; jl. d23. ; if operator stack and operand stack collide ds w0 x1 ; then goto stack overflow; rx. w1 f1. ; top(operator stack) := (w3,w0); jl x2 ; return; c68: al w0 2 ; end else ex: end case ex: rl. w1 (f2.) ; type:=2; operand:=top(operand stack); sz w1 f30+f33 ; if operand=boo or int then al w0 0 ; type:=0; sz w1 f32+f33 ; if operand=real or integer then ba. w0 1 ; type := type+1; jl. w3 e3. ; outbyte(type); jl. c0. ; goto inbyte; \f ; rc 18.1.1971 algol 6, pass 6, page ...8... a33: rl. w1 f2. ; stack and output operand: al w1 x1-2 ; operand stack pointer := sh. w1 (f1.) ; operand stack pointer - 2; jl. d23. ; if operand stack and operator stack collide rs. w1 f2. ; then goto stack overflow; rl. w0 f0.-2 ; stack operand: la. w0 f4. ; item := first word(control word) and standard; rs w0 x1 ; top(operand stack) := item; bz. w1 f5. ; count operands: al w1 x1+1 ; no.operands in line := hs. w1 f5. ; no.operands in line + 1; a34: bz. w0 f0. ; output operand: jl. e3. ; outbyte(part 3(control word)); return; c31: jl. w3 e2. ; inout 4: al w0 x2 ; jl. w3 e3. ; outbyte(inbyte); c33: jl. w3 e2. ; inout 3: al w0 x2 ; jl. w3 e3. ; outbyte(inbyte); c30: jl. w3 e2. ; inout 2: al w0 x2 ; jl. w3 e3. ; outbyte(inbyte); c32: jl. w3 e2. ; inout 1: al w0 x2 ; jl. w3 e3. ; outbyte(inbyte); jl. c0. ; goto inbyte; c2: rl. w1 f1. ; parproc: rs. w1 f3. ; pseudotop := operator stack pointer; c3: am c30-c31 ; operand and word literal: set return(inout 2) else c37: am c31-c32 ; double word literals: set return(inout 4) else c44: al. w3 c32. ; boolean literal: set return(inout 1); jl. a33. ; goto stack and output operand; c4: al. w3 c31. ; string next: set return(inout 4); jl. a34. ; goto output operand; \f ; rc 21.1.1971 algol 6, pass 6, page ...9... c11: al w0 h5 ; imply: jl. w3 e3. ; outbyte(-,); c5: rl. w1 (f2.) ; diadic input: rl. w0 f0.-2 ; w1 := top(operand stack); jl. w3 d3. ; w0 := first word(control word); la. w1 f6. ; check operand; wa. w1 f7. ; top(operand stack top) := rs. w1 (f2.) ; type bits + expression; jl. c0. ; goto inbyte; c54: rl. w1 f1. ; then expression: bz w0 x1-1 ; se w0 h6 ; if top(operator stack )= if jl. c55. ; then am h19 ; dl. w3 g2. ; top(operator stack) := ds w3 x1 ; then-of-expression; c55: rl. w0 f0.-2 ; monadic input: rl. w1 (f2.) ; w0 := part 1(control word); jl. w3 d3. ; w1 := top(operand stack); bz. w0 f0. ; check operand; jl. w3 e3. ; outbyte(part 3(control word)); jl. c28. ; goto decrease operand stack; c6: rl. w0 (f2.) ; arith operator: sn. w0 (f4.) ; if top(operand stack) = undef jl. c1. ; then goto bit actions; jl. w2 d7. ; arith pair; lo. w1 f7. ; top(operand stack) := rs. w1 (f2.) ; arith pair result + expression; jl. c1. ; goto bit actions; c7: al w3 f33 ; extract: wa. w3 f7. ; top(operand stack) := rs. w3 (f2.) ; integer + expression; c19: al. w3 c1. ; round top: set return(bit actions); d32: sz w1 f33 ; round: if operand = integer then return; jl x3 ; byte := convert top(long to integer); al w0 h41 ; if operand = real then sz w1 f32 ; byte := convert top(real to integer); al w0 h31 ; outbyte(byte); jl. e3. ; return; c20: al. w3 c1. ; float top: set return(bit actions); d33: sz w1 f32 ; float: if operand = real then return; jl x3 ; byte := convert top(long to real); al w0 h39 ; if operand = integer then sz w1 f33 ; byte := convert top(integer to real); al w0 h35 ; outbyte(byte); jl. e3. ; return; \f ; rc 05.04.1971 algol 6, pass 6, page ...10... c8: rl. w1 (f2.) ; divide-exponentiation: rl. w0 f0.-2 ; w1 := operand; w0 := mask; jl. w3 d3. ; check operand; jl. w3 d33. ; float; al w1 f32 ; wa. w1 f7. ; top(operand stack) := rs. w1 (f2.) ; real + expression; jl. c0. ; goto inbyte; c13: la. w1 f6. ; abs-neg: wa. w1 f7. ; top(operand stack):= rs. w1 (f2.) ; type + expression; c9: sz w1 f33 ; modify output: jl. c1. ; if operand = integer then bz. w3 (f1.) ; goto bit actions; so w1 f31 ; if operand = long then am 1 ; incr := 1 else incr := 2; al w3 x3+1 ; part 3(operator stack top) := hs. w3 (f1.) ; part 3(operator stack top) + incr; jl. c1. ; goto bit actions; c10: rl. w0 (f2.) ; rel pair: sn. w0 (f4.) ; if top(operand stack) = undef jl. c1. ; then goto bit actions; jl. w2 d7. ; arith pair; al w1 f30 ; wa. w1 f7. ; top(operand stack) := rs. w1 (f2.) ; boolean + expression; bz. w0 f0.+1 ; get relation variant: so w0 1<0 ; if (while elem,do) bit of control word = 0 jl. c1. ; then goto bit actions; am. (f1.) ; bz w1 -4 ; al w0 6 ; relation variant := 6; sn w1 h6 ; if nexttop(operator stack) = <if,else> jl. a11. ; then goto store variant; se w1 h7 ; if nexttop(operator stack) <> <while> jl. c1. ; then goto bit actions; al w0 12 ; relation variant := 12; a11: ba. w0 (f1.) ; store variant: se w1 h6 ; part 3(control word) := am -1 ; part 3(operator stack top) + relation variant; hs. w0 f0. ; al w1 0 ; jl. a10. ; goto unstack operator; \f ; rc 21.1.1971 algol 6, pass 6, page ...11... c12: am f33-f32 ; entier: type := integer; goto set operand; c15: am f32-f34 ; real: type := real; goto set operand; c63: am f34-f31 ; string: type := string; goto set operand; c64: al w1 f31 ; long: type := long; wa. w1 f7. ; set operand: operand := type + expression; jl. c14. ; goto store operand; c16: rl. w1 (f2.) ; first assign: sz w1 f46 ; if operand type = declarable jl. a14. ; then goto variable check; d9: jl. w2 d25. ; assign error: rl. w1 f4. ; type error; operand := undef; d8: rs. w1 (f2.) ; restore assign variable: jl. c0. ; top(operand stack) := operand; goto inbyte; a14: sz. w1 (f9.) ; variable check: jl. c0. ; if operand kind = variable then goto inbyte; jl. d9. ; goto assign error; c17: am. (f2.) ; assign: rl w1 2 ; w1 := nexttop(operand stack); sn. w1 (f4.) ; if w1 = undef then jl. d8. ; goto restore assign variable; rl. w0 (f2.) ; w0 := top(operand stack); sn w0 x1 ; if w0 = w1 then jl. c0. ; goto inbyte; jl. d9. ; goto assign error; c18: bz. w2 f0. ; prep assign: index := prep assign boolean; rl. w0 (f2.) ; operand := top(operand stack); sz w0 f31+f33 ; if operand = long or operand = integer al w2 x2+4 ; then index := index + 4; sz w0 f31+f32 ; if operand = long or operand = real al w2 x2+8 ; then index := index + 8; sn. w0 (f4.) ; if operand = undef al w2 x2+4 ; then index := index + 4; dl. w0 x2+g2. ; check operator := operator table(index); jl. w2 d35. ; stack operator(check operator); jl. c0. ; goto inbyte; c67: al w3 f31 ; extend: wa. w3 f7. ; top(operand stack) := rs. w3 (f2.) ; long + expression; c65: al. w3 c1. ; long top: set return(bit actions); d34: sz w1 f31 ; long: jl x3 ; if operand = long then return; al w0 h33 ; byte := convert top(real to long); sz w1 f33 ; if operand = integer then al w0 h37 ; byte := convert top(integer to long); jl. e3. ; outbyte(byte); return; c47: al w3 f33 ; round: wa. w3 f7. ; top(operandstack) := rs. w3 (f2.) ; integer + expression; jl. c19. ; goto round top; \f ; rc 17.3.1971 algol 6, pass 6, page ...12... c21: rl. w1 f2. ; else ex - case comma: al w1 x1+2 ; operand := top(operand stack); rs. w1 f2. ; unstack operand; rl w1 x1-2 ; la. w1 f6. ; get check operator: ns w1 3 ; bl w1 3 ; al w1 x1+22 ; index := ls w1 2 ; typebit*4; dl. w0 x1+g3. ; check operator := operator table(index+checkbase); jl. w2 d35. ; stack operator; jl. c0. ; goto inbyte; c23: jl. w3 d33. ; real check operator: float; al w1 f32 ; operand := real; jl. a31. ; goto add expr bit; c66: so w1 f32 ; long check operator: al w1 f31 ; if operand <> real then operand := long; la. w1 f6. ; operand := operand and standard type mask; a31: wa. w1 f7. ; add expr bit: operand := operand + expression; jl. c14. ; goto store operand; c24: rl. w2 (f2.) ; integer div - mod: sn. w2 (f4.) ; if top(operand stack) = undef jl. c1. ; then goto bitactions; al w0 h38 ; byte := convert nexttop(integer to long); sz w2 f33 ; if nexttop(operand stack) = integer jl. w3 e3. ; then outbyte; al w3 0 ; get variant: variant := 0; sz w1 f31 ; if top(operand stack) <> long then jl. a32. ; begin so w2 f31 ; if nexttop(operand stack) = long then am 1 ; variant := 1 else variant := 2; al w3 1 ; end; a32: al w1 f31 ; modify nexttop operand: sn w3 2 ; operand := long; al w1 f33 ; if variant = 2 then operand := integer; ba. w3 (f1.) ; part 3(top(operator stack)) := hs. w3 (f1.) ; part 3(top(operator stack)) + variant; jl. a31. ; goto add expr bit; c25: rl. w1 f1. ; decrease operator stack: al w1 x1-4 ; operator stack pointer := rs. w1 f1. ; operator stack pointer - 4; jl. c0. ; goto inbyte; c28: rl. w1 f2. ; decrease operand stack: al w1 x1+2 ; operand stack pointer := rs. w1 f2. ; operand stack pointer + 2; jl. c0. ; goto inbyte; \f ; rc 1977.11.03 algol 6, pass 6, page ...13... c27: rl. w0 (f2.) ; for pair: sn. w0 (f4.) ; if operand = undef jl. c1. ; then goto bit actions; sz w0 f31 ; if top(operand stack) = long then jl. c65. ; goto long top; sz w0 f32 ; if top(operand stack) = real then jl. c20. ; goto float top; jl. c19. ; goto round top; c29: rl. w1 (f2.) ; goto: so w1 f35 ; if top(operand stack) <> label jl. w2 d25. ; then type error; jl. c28. ; goto decrease operand stack; c34: am 2 ; vanished operand: increment := 1 else c35: al w1 -1 ; internal operand: increment := -1; a35: ; count operand: ba. w1 f5. ; no.operands in line := hs. w1 f5. ; no.operands in line + increment; jl. c0. ; goto inbyte; c36: al w1 0 ; newline: hs. w1 f5. ; no.operands in line := 0; jl. w3 e1. ; carret; jl. c0. ; goto inbyte; c38: jl. w3 e2. ; dope description: al w0 x2 ; jl. w3 e3. ; outbyte(inbyte); jl. w3 e2. ; rs. w2 f3. ; no.array elements := inbyte; al w0 x2 ; jl. w3 e3. ; outbyte(no.array elements); jl. c0. ; goto inbyte; c39: rl. w1 f3. ; specifications input: al w1 x1+4 ; pseudo top := pseudo top + 4; sl. w1 (f2.) ; if pseudo top >= operand stack pointer jl. d23. ; then goto stack overflow; rs. w1 f3. ; stack spec operator: bz. w2 f0. ; operator stack(pseudo top) := dl. w3 x2+g2. ; operator table(part 3(control word)); ds w3 x1 ; jl. c0. ; goto inbyte; c69: rl. w0 (f2.) ; until: se. w0 (f4.) ; if operand <> undef jl. w2 d7. ; then arith pair; jl. c1. ; goto bit actions; \f ; rc 05.04.1971 algol 6, pass 6, page ...14... c22: al w1 h23 ; spec addr general: rl. w0 (f2.) ; param := end addr param; sz. w0 (f9.) ; if param = variable then jl. a13. ; goto store end param; al w1 h22 ; param := end name param; so. w0 (f7.) ; if param <> expression then jl. a13. ; goto store end param; so w0 f34 ; if param <> string then al w1 h21 ; param := end value param; a13: hs. w1 (f1.) ; store end param: end param := param; c41: bz. w0 f0.-1 ; spec general: se w0 h10 ; if inbyte = end subscr one sn w0 h11 ; or inbyte = end subscr more jl. c40. ; then goto spec; al. w0 d5. ; operand proc addr := rs. w0 b21. ; check name operand addr; rl. w2 f1. ; w2 := operator stack pointer; jl. d12. ; goto save end param; c26: al. w0 d3. ; spec value: jl. d10. ; operand proc addr := check operand addr else c40: al. w0 d5. ; spec: d10: rs. w0 b21. ; operand proc addr := rl. w2 f1. ; check name operand addr; al w1 x2-4 ; operator stack pointer := rs. w1 f1. ; operator stack pointer-4; d12: bz w0 x2 ; save end param: rs. w0 b22. ; end param := part 3(oldtop(operator stack)); rl. w1 (f2.) ; sn. w1 (f4.) ; if top(operand stack) = undef jl. d6. ; then goto no type param; rl w0 x2-2 ; w0 := first word(top(operator stack)); jl. w3 (b21.) ; operand proc; la. w1 f6. ; type := w1 and all type mask; sn. w1 (f6.) ; if type = undef then d6: al w1 0 ; no type param: type := 0; d11: rl. w0 b22. ; out end param: jl. w3 e3. ; outbyte(end param); sz w1 f36 ; if type = no type then al w1 0 ; type := 0; \f ; rc 2.1.1971 algol 6, pass 6, page ...15... sh w1 4 ; if type <= 4 then jl. a18. ; goto output parameter type; ls w1 -2 ; type := al w1 x1+1 ; type//4 + 1; a18: bz. w0 x1+b23. ; output parameter type: jl. w3 e3. ; outbyte(newtype(type)); al w0 h8 ; output begin param or end call: bz. w1 f0.-1 ; byte := begin param; se w1 h10 ; if inbyte = end subscr one sn w1 h11 ; or inbyte = end subscr more al w0 h9 ; then byte := end call; jl. w3 e3. ; outbyte(byte); jl. c28. ; goto decrease operand stack; b21: 0 ; operand proc addr b22: 0 ; end param ; newtype table: b23: 0<12 + 1<0 ; no type , boolean 4<12 + 2<0 ; long , integer 3<12 + 0 ; real , string 0<12 + 0 ; not used , not used 0<12 + 7<0 ; not used , label d5: la w1 0 ; check name operand: sh w1 f45 ; if kind incorrect then jl. a22. ; goto param error; la. w1 f6. ; type check: sn. w1 (f6.) ; if type = undef then jl. d6. ; goto no type param; se w1 0 ; if type correct then jl. d11. ; goto out end param; a22: jl. w2 d25. ; param error: type error; jl. d6. ; goto no type param; c42: jl. w3 e2. ; begin list: rl. w0 (f2.) ; w2 := no.elements; rl w1 0 ; w0 := w1 := top(operand stack); sn. w0 (f4.) ; if operand = undef then jl. a23. ; goto output begin call; la. w1 f11. ; operand kind := w1 and begin list mask; la. w0 f6. ; operand type := w0 and all type mask; sz. w1 (f41.) ; if kind = array then jl. d13. ; goto array; sz w1 f39 ; if kind = zone then jl. d14. ; goto zone; sz w1 f40 ; if kind = zone array then jl. d15. ; goto zone array; \f ; rc 15.3.1971 algol 6, pass 6, page ...16... so w0 f36 ; procedure call: if type = no type wa. w0 f7. ; then kind:=0 else kind := expr; rs. w0 (f2.) ; top(operand stack) := kind + type; a23: bz. w0 f0.-1 ; output begin call: jl. w3 e3. ; outbyte(begin call); al w0 x2 ; jl. w3 e3. ; outbyte(no of parameters); al w0 h8 ; jl. w3 e3. ; outbyte(begin param); sz. w1 (f48.) ; if kind = formal proc or undef jl. d18. ; then goto begin call formal; sn w1 0 ; if kind = 0 then jl. d17. ; goto begin call error; rl. w1 (f2.) ; sz w1 f35 ; if top(operand stack) = label jl. d16. ; then goto switch; rl. w1 f3. ; check no of parameters: rl w0 2 ; w1 := pseudo top; ws. w0 f1. ; ls w0 -2 ; no.specs := (pseudo top - top)//4; sn w0 x2 ; if no.specs = no.parameters then jl. a6. ; goto store pseudo top; sl w0 x2 ; if no.specs >= no.parameters then jl. d17. ; goto begin call error; am. (f1.) ; bl w0 5 ; w0 := part 4(top(operator stack)); sn w0 g7 ; if spec general then jl. a6. ; goto store pseudo top; se w0 g8 ; if -,spec addr general then jl. d17. ; goto begin call error; a6: rs. w1 f1. ; store pseudo top: jl. c0. ; operator stack pointer := pseudo top; ; goto inbyte; d13: wa. w0 f9. ; array: rs. w0 (f2.) ; top(operand stack) := variable + type; se. w2 (f3.) ; if no.elements <> no.subscripts jl. w2 d27. ; then subscript error; al w1 4 ; addr incr := 4; jl. d19. ; goto stack begin element; d14: wa. w0 f9. ; zone: rs. w0 (f2.) ; top(operand stack) := variable+type; se w2 1 ; if no.elements then jl. w2 d28. ; zone error; al w1 8 ; addr incr := 8; jl. d19. ; goto stack begin element; \f ; rc 5.1.1971 algol 6, pass 6, page ...17... d15: rl. w1 f9. ; zone array: operand := variable; sn w2 1 ; if no.elements = 1 then al w1 f39 ; operand := zone; al w1 x1+f32 ; operand := operand + real; rs. w1 (f2.) ; top(operand stack) := operand; sl w2 3 ; if no.elements >= 3 then jl. w2 d28. ; zone error; al w1 12 ; addr incr := 12; jl. d19. ; goto stack begin element; d16: al w1 16 ; switch: addr incr := 16; sn w2 1 ; if no.elements = 1 then jl. d19. ; goto stack begin element; d17: jl. w2 d26. ; begin call error: call error; d18: al w1 0 ; begin call formal: addr incr := 0; d19: ba. w1 f0. ; stack begin element: d31: dl. w0 x1+g2. ; index := addr incr + part 3(control word); jl. w2 d35. ; stack operator(operator table(index)); jl. c0. ; goto inbyte; c43: rl. w1 (f2.) ; zone subscripts: am. (f1.) ; w1 := top(operand stack); rl w0 -2 ; w0 := first word(top(operator stack)); jl. w3 d3. ; check operand; jl. w3 d32. ; round; bz. w1 f0.-1 ; bz. w0 (f1.) ; w0 := part 3(operator stack top); sn w1 h10 ; if list one jl. a27. ; then goto unstack zone list; sn w1 h18 ; if first comma then jl. a28. ; goto out list delimiter; al w0 h12 ; w0 := end record; se w1 h11 ; if -,end list more then jl. a28. ; goto out list delimiter; a27: rl. w1 f1. ; unstack zone list: al w1 x1-4 ; operator stack pointer := rs. w1 f1. ; operator stack pointer - 4; a28: jl. w3 e3. ; out list delimiter: jl. c28. ; outbyte(w0); goto decrease operand stack; \f ; rc 2.1.1971 algol 6, pass 6, page ...18... c45: jl. w3 e2. ; decl zone: hs. w2 f5.+1 ; save no.commas := inbyte; jl. w3 e2. ; al w0 x2 ; no.zones := inbyte; jl. w3 e3. ; outbyte(no.zones); jl. w3 e2. ; al w0 x2 ; bl.rel := inbyte; jl. w3 e3. ; outbyte(bl.rel); bz. w1 f5.+1 ; sn w1 2 ; if no.commas = 2 then jl. d21. ; goto stack pseudospecs 1; jl. w2 d29. ; zone decl. error; al w2 h14+4 ; w2 := first zone comma error spec addr; a16: bz. w1 f5.+1 ; zone error: sn w1 0 ; if no.commas = 0 then goto inbyte; jl. c0. ; no.commas := 0; al w0 0 ; hs. w0 f5.+1 ; jl. d22. ; goto stack pseudospecs 2; c46: jl. w3 e2. ; decl zone array: hs. w2 f5.+1 ; no.commas := inbyte; jl. w3 e2. ; al w0 x2 ; no.zones := inbyte; jl. w3 e3. ; outbyte(no.zones); bz. w1 f5.+1 ; sn w1 3 ; if no.commas = 3 then jl. d21. ; goto stack pseudospec 1; jl. w2 d29. ; zone decl. error; al w2 h14 ; w2 := no.zones error spec addr; jl. a16. ; goto zone error; d21: bz. w2 f0. ; stack pseudospecs 1: w2 := spec addr; d22: ls w1 2 ; stack pseudospecs 2: wa. w1 f1. ; pseudo top := stackref := sl. w1 (f2.) ; 4*(no.commas) + operatos stack pointer; jl. d23. ; if pseudo top >= operand stack top then rs. w1 f3. ; goto stack overflow; a24: dl. w0 x2+g2. ; stack pseudospec: ds w0 x1 ; operator stack(stack ref) := operator table(w2); al w1 x1-4 ; stackref := stackref - 4; sh w2 h14+8 ; if w2 <=error spec + 4 then al w2 x2+4 ; w2 := w2 + 4; se. w1 (f1.) ; if stackref <> operator stack pointer jl. a24. ; then goto stack pseudo spec; rl. w1 f3. ; reset top: rs. w1 f1. ; operator stack pointer := pseudo top; jl. c0. ; goto inbyte; \f ; rc 2.1.1971 algol 6, pass 6, page ...19... c48: bz. w0 f5.+1 ; zone block proc: sn w0 0 ; if no.commas = 0 jl. c1. ; then goto bitactions; rl. w0 (f2.) ; sn. w0 (f4.) ; if top(operand stack) = undef jl. c1. ; then goto bit actions; am. (f1.) ; check kind and type: la w0 -2 ; kind-type := operand and operator mask; so w0 f36 ; if type <> no type then jl. a15. ; goto block proc error; sz. w0 (f42.) ; if kind = parameter procedure then jl. a17. ; goto block proc spec check; so. w0 (f44.) ; if kind <> formal proc then a15: jl. w2 d30. ; block proc error: block proc; jl. c1. ; goto bit actions; a17: rl. w0 f3. ; block proc spec check: ws. w0 f1. ; se w0 12 ; if no.specs <> 3 then jl. a15. ; goto block proc error; rl. w1 f1. ; bz w0 x1+3 ; so w0 f33 ; if third param <> integer jl. a15. ; then goto block proc error; bz w0 x1+7 ; so w0 f33 ; if second param <> integer jl. a15. ; then goto block proc error; bz w0 x1+11 ; so. w0 (f49.) ; if first param <> real zone jl. a15. ; then goto block proc error; jl. c1. ; goto bit actions; \f ; rc 11.1.1971 algol 6, pass 6, page ...20... ; field operands and operators: b25 = k + 1 ; outside field c56: rl. w0 f21. ; field operand: if outside field rs. w0 f0.-2 ; then begin kind(control word) := variable; jl. c3. ; type(control word) := integer; ; end; goto stack and output operand; c58: jl. w3 e2. ; begin list field input: skip(no of list elements); am f21-f0+2 ; outside field := true else c57: al w3 f0-2-b25+1; first point input: outside field:=false; hs. w3 b25. ; not first point input: c59: rl. w1 (f2.) ; w1 := top(operand stack); rl. w0 f0.-2 ; w0 := kind-type(control word); jl. w3 d3. ; check operand; jl. c0. ; goto inbyte; c60: dl. w3 g9. ; begin list field: am. (f1.) ; nexttop(operator stack) := ds w3 -4 ; check operator(array field subscr); al w2 -1<5 ; remove bits from control word: la. w2 f0. ; bz. w3 f0.-1 ; se w3 h10 ; if latest inbyte = end list one sn w3 h11 ; or latest inbyte = end list more rs. w2 f0. ; then bits(control word) := 0; jl. c19. ; goto round top; c61: al. w3 i6. ; array field subscript: field operator:=field subscr; jl. a30. ; goto modify top operand; c62: al. w3 i4. ; first point: field operator := field; so w1 f38 ; if kind <> simple field then am f41-f9 ; kind := array else a30: rl. w0 f9. ; modify top operand: la. w1 f47. ; kind := variable; lo w0 2 ; type := operand and declarable type mask; rs. w0 (f2.) ; top(operand stack) := kind + type; ; output field operator: ns. w1 b26. ; type no := normalize(kind-type and all type mask); so. w0 (f9.) ; if kind <> variable then am b27 ; type index := type no b26 = k + 1 ; type no ; else al w3 x3 ; type index := type index + 22; bz w0 x3+22 ; byte := field operator(type index); jl. w3 e3. ; outbyte; al w3 f21-b25+1 ; hs. w3 b25. ; outside field := true; jl. c1. ; goto bit actions; h. ; field operators (output values): i4: h43, h44, h45, h46; simple field: boolean, long, real, integer i5: h47, h48, h49, h50; array field : boolean, long, real, integer i6: h51, h52, h53, h54; field subscr: boolean, long, real, integer b27 = i5 - i4 ; field arr incr w. ; action on not first point is: c14 (store operand) \f ; fgs.jz 1986.02.18 algol 8, pass 6, page ...21... f13: <:.:> f14: <: :> d23: al. w1 e10. ; stack overflow: jl. e5. ; goto pass 0 alarm (<:stack:>); c50: al w0 h16 ; undeclared: jl. w3 e3. ; outbyte(trouble); jl. c3. ; goto stack and output operand; c49: jl. w3 e2. ; error: bl w1 5 ; increment := signed byte; sh w1 0 ; if increment <=0 then jl. a35. ; goto count operand; ls w2 1 ; rl. w1 x2+g4. ; w1 := error text address; al. w1 x1+g11. ; al. w2 c0. ; set return(inbyte); sz w1 1 ; if bit(23,text addr table) = 1 then jl. a19. ; goto output error messages; d24: al w0 h16 ; trouble: jl. w3 e3. ; outbyte(trouble); a19: rs. w1 f16. ; output error messages: al. w1 f13. ; jl. w3 e4. ; message(<:operand:>); bz. w0 f5. ; jl. w3 e14. ; write integer(no.operands in line); 32<12 + 3 ; al. w1 f14. ; jl. w3 e13. ; writespace; rl. w1 f16. ; jl. w3 e13. ; writetext(error identification); al w0 1<10 ; set warning bit: lo. w0 e29. ; modebit(warning) := true; rs. w0 e29. ; comment: pass 0 variable; jl x2 ; return; d25: jl. w1 d24. ; type error: <:type:> ; d26: jl. w1 d24. ; call error: <:call:> ; d27: jl. w1 d24. ; subscript error: <:subscripts:> ; d28: jl. w1 d24. ; zone error: <:zone:> ; d29: jl. w1 d24. ; zone decl. error: <:zone declaration:>; d30: jl. w1 d24. ; block proc: <:block proc:> ; \f ; jz 1979.09.27 algol 8, pass 6, page ...22... b. a70, b16, i17, j26 ; begin block tables w. ; ; types: i0 = 1<0 ; boolean i1 = 1<1 ; long i2 = 1<2 ; real i3 = 1<3 ; integer i4 = 1<4 ; string i5 = 1<5 ; label i6 = 1<6 ; no type i7 = 7<1 ; all arith types i8 = 63 ; all except no type i9 = 127 ; all types i10= i9-i5 ; all types except label i11= i1+i3 ; long and integer i12= i9-i6-i5 ; all types except label and no type i13= i0+i1+i2+i3 ; all declarable types i14= i2+i4 ; real and string i15= i1+i4 ; long and string i16= i1+i2 ; long and real i17= i2+i3 ; real and integer ; kinds: j7 = 1<7 ; array field j8 = 1<8 ; field j9 = 1<9 ; zone j10= 1<10 ; zone array j11= 1<11 ; array j12= 1<12 ; parameter procedure j13= 1<13 ; no parameter procedure j14= 1<14 ; formal procedure j15= 1<15 ; variable j16= 1<16 ; expression j17= j13+j14+j15+j16 ; no param proc, formal proc, variable, expression j18= j12+j14+j16 ; parameter procedure, formal procedure, expression j19= j13+j14 ; no param proc, formal proc j20= j18-j14 ; param procedure, expression j21= j7+j8 ; array field, field j22= j9+j11 ; zone, array j23= 1023<7 ; all kinds j24= j12+j13+j14 ; all procedures j25= j12+j14 ; param proc, formal proc j26= j12+j16 ; param proc, expression \f ; rc 15.3.1971 algol 6, pass 6, page ...23... ; priority: b0 = 0<18, b1 = 1<18, b2 = 2<18, b3 = 3<18, b4 = 4<18, b5 = 5<18 b6 = 6<18, b7 = 7<18, b8 = 8<18, b9 = 9<18, b10=10<18, b11=11<18 b12=12<18, b13=13<18, b14=14<18, b15=15<18, b16=16<18 ; action: a0 = 0<5, a1 = 1<5, a2 = 2<5, a3 = 3<5, a4 = 4<5 a5 = 5<5, a6 = 6<5, a7 = 7<5, a8 = 8<5, a9 = 9<5 a10=10<5, a11=11<5, a12=12<5, a13=13<5, a14=14<5 a15=15<5, a16=16<5, a17=17<5, a18=18<5, a19=19<5 a20=20<5, a21=21<5, a22=22<5, a23=23<5, a24=24<5 a25=25<5, a26=26<5, a27=27<5, a28=28<5, a29=29<5 a30=30<5, a31=31<5, a32=32<5, a33=33<5, a34=34<5 a35=35<5, a36=36<5, a37=37<5, a38=38<5, a39=39<5 a40=40<5, a41=41<5, a42=42<5, a43=43<5, a44=44<5 a45=45<5, a46=46<5, a47=47<5, a48=48<5, a49=49<5 a50=50<5, a51=51<5, a52=52<5, a53=53<5, a54=54<5 a55=55<5, a56=56<5, a57=57<5, a58=58<5, a59=59<5 a60=60<5, a61=61<5, a62=62<5, a63=63<5, a64=64<5 a65=65<5, a66=66<5, a67=67<5, a68=68<5, a69=69<5 a70=70<5 ; action table: h. g10: c0 - c0, c1 - c0, c2 - c0, c3 - c0, c4 - c0 c5 - c0, c6 - c0, c7 - c0, c8 - c0, c9 - c0 c10- c0, c11- c0, c12- c0, c13- c0, c14- c0 c15- c0, c16- c0, c17- c0, c18- c0, c19- c0 c20- c0, c21- c0, c22- c0, c23- c0, c24- c0 c25- c0, c26- c0, c27- c0, c28- c0, c29- c0 c30- c0, c31- c0, c32- c0, c33- c0, c34- c0 c35- c0, c36- c0, c37- c0, c38- c0, c39- c0 c40- c0, c41- c0, c42- c0, c43- c0, c44- c0 c45- c0, c46- c0, c47- c0, c48- c0, c49- c0 c50 -c0, c51- c0, c52- c0, c53- c0, c54- c0 c55- c0, c56- c0, c57- c0, c58- c0, c59- c0 c60- c0, c61- c0, c62- c0, c63- c0, c64- c0 c65- c0, c66- c0, c67- c0, c68- c0, c69- c0 c70- c0 \f ; rc 15.2.1971 algol 6, pass 6, page ...24... ; operator table (1): ; table format: ; 1. word: <18: priority ; <7 : kind ; <0 : type ; 2. word: <12: output value ; <5 : action no ; <0 : bits: typecheck<4 + (top+1 check)<3 + noresult<2 ; + outputself<1 + terminateunstack<0 w. g2 = k + 2 ; <18 <7 <0 <12 <5 <0 ; table index w. b11 + j17 + i7 ,h. h3+0 , a19 + 2.11010 ; 0 add w. b11 + j17 + i7 ,h. h3+1 , a7 + 2.11010 ; 4 extract w. b11 + j17 + i7 ,h. h3+2 , a19 + 2.11010 ; 8 shift w. b9 + j17 + i7 ,h. h3+44 , a9 + 2.11010 ; 12 ** w. b7 + j17 + i7 ,h. h3+5 , a6 + 2.11010 ; 16 * w. b7 + j17 + i7 ,h. h3+6 , a6 + 2.11010 ; 20 / w. b7 + j17 + i11 ,h. h3+32 , a24 + 2.11010 ; 24 // w. b7 + j17 + i11 ,h. h3+35 , a24 + 2.11010 ; 28 mod w. b5 + j17 + i7 ,h. h3+9 , a6 + 2.11010 ; 32 + w. b5 + j17 + i7 ,h. h3+10 , a6 + 2.11010 ; 36 - w. b3 + j17 + i7 ,h. h3+11 , a10 + 2.11010 ; 40 < w. b3 + j17 + i7 ,h. h3+12 , a10 + 2.11010 ; 44 <= w. b3 + j17 + i7 ,h. h3+13 , a10 + 2.11010 ; 48 = w. b3 + j17 + i7 ,h. h3+14 , a10 + 2.11010 ; 52 >= w. b3 + j17 + i7 ,h. h3+15 , a10 + 2.11010 ; 56 > w. b3 + j17 + i7 ,h. h3+16 , a10 + 2.11010 ; 60 <> w. -b1 + j17 + i0 ,h. h3+29 , a1 + 2.11010 ; 64 and w. -b3 + j17 + i0 ,h. h3+30 , a1 + 2.11010 ; 68 or w. -b5 + j17 + i0 ,h. h3+31 , a1 + 2.11010 ; 72 == w. b11 + j17 + i2 ,h. h3+53 , a12 + 2.10010 ; 76 entier w. b11 + j17 + i16 ,h. 0 , a47 + 2.10000 ; 80 round w. b11 + j17 + i7 ,h. h3+50 , a13 + 2.10010 ; 84 abs w. b5 + j17 + i7 ,h. h3+47 , a13 + 2.10010 ; 88 neg w. b5 + j17 + i7 ,h. 0 , a14 + 2.10000 ; 92 pos w. b1 + j17 + i0 ,h. h3+38 , a14 + 2.10010 ; 96 -, w. b11 + j17 + i3 ,h. 0 , a67 + 2.10000 ; 100 extend w. b11 + j17 + i14 ,h. h3+120 , a64 + 2.10010 ; 104 oplong w. b11 + j17 + i15 ,h. h3+121 , a15 + 2.10010 ; 108 opreal w. b11 + j17 + i16 ,h. h3+122 , a63 + 2.10010 ; 112 opstring w. -b9 + 0 ,h. h3+40 , a1 + 2.00111 ; 116 first:= w. -b9 + 0 ,h. h3+40 , a1 + 2.00110 ; 120 := w. -b9 + j17 + i0 ,h. h3+41 , a1 + 2.10110 ; 124 prep:=boolean w. -b9 + j17 + i7 ,h. h3+41 , a19 + 2.10110 ; 128 prep:=integer w. -b9 + j17 + i7 ,h. h3+41 , a20 + 2.10110 ; 132 prep:=real w. -b9 + j17 + i7 ,h. h3+41 , a65 + 2.10110 ; 136 prep:=long w. -b9 + 0 ,h. h3+41 , a1 + 2.00110 ; 140 prep:=notype \f ; jz 1981.02.25 algol 8, pass 6, page ...25... ; operator table (2): ; table format: ; 1. word: <18: priority ; <7 : kind ; <0 : type ; 2. word: <12: output value ; <5 : action no ; <0 : bits: typecheck<4 + (top+1 check)<3 + noresult<2 ; + outputself<1 + terminateunstack<0 ; <18 <7 <0 <12 <5 <0 ; table index w. -b9 + h6 ,h. h6 , a1 + 2.00001 ; 144 if; else st w. -b9 + j17 + i8 ,h. 0 , a14 + 2.10001 ; 148 then ex; of ex w. -b9 + j17 + i7 ,h. 0 , a19 + 2.10101 ; 152 case w. -b9 + j20 + i5 ,h. 0 , a1 + 2.10001 ; 156 of switch w. -b9 + j15 + i7 ,h. 0 , a1 + 2.10001 ; 160 for w. -b9 + j17 + i7 ,h. 0 , a27 + 2.11001 ; 164 for elements w. -b9 + j17 + i0 ,h. h7 , a1 + 2.11001 ; 168 while w. -b9 + 0 ,h. 0 , a1 + 2.00001 ; 172 (subex w. -b9 + j17 + i7 ,h. 0 , a19 + 2.10101 ; 176 bound elements w. b13 + j21 + i13 ,h. 0 , a62 + 2.11000 ; 180 first point w. b15 + j21 + i13 ,h. h3+9 , a14 + 2.11010 ; 184 not first point w. -b9 + j17 + i7 ,h. 0 , a60 + 2.11001 ; 188 begin list field w. -b9 + j17 + i3 ,h. h3+96 , a40 + 2.00000 ; 192 spec integer w. -b9 + j17 + i2 ,h. h3+96 , a40 + 2.00000 ; 196 spec real w. -b9 + j17 + i1 ,h. h3+96 , a40 + 2.00000 ; 200 spec long w. -b9 + j17 + i0 ,h. h3+96 , a40 + 2.00000 ; 204 spec boolean w. -b9 + j9 + i2 ,h. h3+96 , a40 + 2.00000 ; 208 spec zone w. -b9 + j16 + i4 ,h. h3+96 , a40 + 2.00000 ; 212 spec string w. -b9 + j16 + i5 ,h. h3+96 , a40 + 2.00000 ; 216 spec label w. -b9 + j17 + i7 ,h. h3+97 , a26 + 2.00000 ; 220 spec value real, int, long w. -b9 + j17 + i0 ,h. h3+97 , a26 + 2.00000 ; 224 spec value boolean w. -b9 + j11 + i3 ,h. h3+96 , a40 + 2.00000 ; 228 spec array integer w. -b9 + j22 + i2 ,h. h3+96 , a40 + 2.00000 ; 232 spec array real w. -b9 + j11 + i1 ,h. h3+96 , a40 + 2.00000 ; 236 spec array long w. -b9 + j11 + i0 ,h. h3+96 , a40 + 2.00000 ; 240 spec array boolean w. -b9 + j10 + i2 ,h. h3+96 , a40 + 2.00000 ; 244 spec zone array w. -b9 + j24 + i6 ,h. h3+96 , a40 + 2.00000 ; 248 spec proc no type w. -b9 + j24 + i3 ,h. h3+96 , a40 + 2.00000 ; 252 spec proc integer w. -b9 + j24 + i2 ,h. h3+96 , a40 + 2.00000 ; 256 spec proc real w. -b9 + j24 + i1 ,h. h3+96 , a40 + 2.00000 ; 260 spec proc long w. -b9 + j24 + i0 ,h. h3+96 , a40 + 2.00000 ; 264 spec proc boolean w. -b9 + j12 + i5 ,h. h3+96 , a40 + 2.00000 ; 268 spec switch w. -b9 + j23 + i9 ,h. h3+96 , a40 + 2.00000 ; 272 spec undef (one param) w. -b9 + j23 + i9 ,h. h3+96 , a41 + 2.00000 ; 276 spec general \f ; jz 1980.02.25 algol 8, pass 6, page ...26... ; operator table (3): ; table format: ; 1. word: <18: priority ; <7 : kind ; <0 : type ; 2. word: <12: output value ; <5 : action no ; <0 : bits: typecheck<4 + (top+1 check)<3 + noresult<2 ; + outputself<1 + terminateunstack<0 ; <18 <7 <0 <12 <5 <0 ; table index w. -b9 + j17 + i3 ,h. h3+98 , a40 + 2.00000 ; 280 spec addr integer w. -b9 + j17 + i2 ,h. h3+98 , a40 + 2.00000 ; 284 spec addr real w. -b9 + j17 + i1 ,h. h3+98 , a40 + 2.00000 ; 288 spec addr long w. -b9 + j17 + i0 ,h. h3+98 , a40 + 2.00000 ; 292 spec addr boolean w. -b9 + j23 + i9 ,h. h3+98 , a22 + 2.00000 ; 296 spec addr general w. -b9 + 0 ,h. h3+96 , a40 + 2.00000 ; 300 spec unacceptable w. -b9 + j23 + i9 ,h. h3+96 , a41 + 2.00000 ; 304 spec repeat general w. -b9 + j17 + i7 ,h. 0 , a19 + 2.10101 ; 308 begin list array w. -b9 + j17 + i7 ,h. h3+105 , a43 + 2.00111 ; 312 begin list zone w. -b9 + j17 + i7 ,h. h3+104 , a43 + 2.00111 ; 316 begin list zone array w. -b9 + j17 + i7 ,h. h3+97 , a40 + 2.00000 ; 320 begin list switch w. -b9 + j17 + i3 ,h. h3+110 , a1 + 2.10111 ; 324 no.zones pseudospec w. -b9 + j17 + i3 ,h. h3+111 , a1 + 2.10111 ; 328 1st comma pseudospec w. -b9 + j17 + i3 ,h. h3+112 , a1 + 2.10111 ; 332 2nd comma pseudospec w. -b9 + 0 ,h. h3+110 , a1 + 2.00111 ; 336 no.zones error spec w. -b9 + 0 ,h. h3+111 , a1 + 2.00111 ; 340 1st comma error spec w. -b9 + 0 ,h. h3+112 , a1 + 2.00111 ; 344 2nd comma error spec w. -b9 + j25 + i6 ,h. h3+113 , a48 + 2.00111 ; 348 end zone local g3 = k + 2 ; check operators w. -b9 + j17 + i0 ,h. h6 , a14 + 2.10001 ; 352 boolean w. -b9 + j17 + i7 ,h. h6 , a66 + 2.10001 ; 356 long w. -b9 + j17 + i7 ,h. h6 , a23 + 2.10001 ; 360 real w. -b9 + j17 + i7 ,h. h6 , a14 + 2.10001 ; 364 integer w. -b9 + j16 + i4 ,h. h6 , a1 + 2.10001 ; 368 string w. -b9 + j26 + i5 ,h. h6 , a1 + 2.10001 ; 372 label w. -b9 + 0 ,h. h6 , a53 + 2.00001 ; 376 no type w. b13 + j21 + i13 ,h. 0 , a61 + 2.11000 ; 380 array field subscript g9 = k - 2 w. -b9 + j17 + i7 ,h. 0 , a69 + 2.11001 ; 384 until g7 = a41 + 2.00000 g8 = a22 + 2.00000 \f ; jz 1980.02.25 algol 6, pass 6, page ...27... ; input table: operators (1): ; table format: ; 1. word: <18: priority ; <7 : kind or empty ; <0 : type or output value or empty ; 2. word: <12: output value or operator table index or empty ; <5 : action no ; <0 : bits: stack<2 + output<1 + (then,while elem do)<0 g1 = k + 2 ; <18 <7 <0 <12 <5 <0 ; input value w. b14 + h17+31 ,h. 0 , a0 + 2.010 ; 198 disable w. b14 + h17+32 ,h. 0 , a0 + 2.010 ; 199 enable w. b14 + j19 + i9 ,h. h3+94 , a55 + 2.000 ; 200 proc; w. b14 + h3+42 ,h. 144 , a0 + 2.110 ; 201 if w. -b8 + j17 + i0 ,h. h3+43 , a54 + 2.001 ; 202 thenex w. -b10 + h3+3 ,h. 0 , a21 + 2.010 ; 203 elseex w. b14 + j18 + i10 ,h. h3+95 , a70 + 2.000 ; 204 delete call w. -b10 + h3+4 ,h. 0 , a68 + 2.010 ; 205 end else ex w. -b10 + h3+55 ,h. 0 , a0 + 2.010 ; 206 end else st w. -b10 + h3+55 ,h. 0 , a0 + 2.010 ; 207 end then st w. b14 + h3+74 ,h. 0 , a29 + 2.010 ; 208 end goto w. b14 + h3+59 ,h. 160 , a0 + 2.110 ; 209 for w. -b10 + h3+62 ,h. 164 , a0 + 2.110 ; 210 step w. -b10 + h3+63 ,h. 384 , a0 + 2.110 ; 211 until w. b6 + j17 + i11 ,h. 28 , a5 + 2.100 ; 212 mod w. b4 + j17 + i7 ,h. 32 , a5 + 2.100 ; 213 + w. b4 + j17 + i7 ,h. 36 , a5 + 2.100 ; 214 - w. b6 + j17 + i7 ,h. 16 , a5 + 2.100 ; 215 * w. b6 + j17 + i7 ,h. 20 , a8 + 2.100 ; 216 / w. b6 + j17 + i11 ,h. 24 , a5 + 2.100 ; 217 // w. b8 + j17 + i7 ,h. 12 , a8 + 2.100 ; 218 ** w. b10 + j17 + i12 ,h. 8 , a5 + 2.100 ; 219 shift w. b10 + j17 + i12 ,h. 4 , a5 + 2.100 ; 220 extract w. b10 + j17 + i12 ,h. 0 , a5 + 2.100 ; 221 add w. -b10 + h3+88 ,h. 176 , a0 + 2.110 ; 222 first bound w. -b10 + h3+89 ,h. 176 , a0 + 2.110 ; 223 not first bound w. -b10 + h3+58 ,h. 156 , a0 + 2.110 ; 224 of switch w. -b10 + h3+119 ,h. 0 , a28 + 2.010 ; 225 end switch w. -b2 + j17 + i0 ,h. 64 , a5 + 2.100 ; 226 and w. -b4 + j17 + i0 ,h. 68 , a5 + 2.100 ; 227 or w. -b4 + j17 + i0 ,h. 68 , a11 + 2.100 ; 228 imply w. -b6 + j17 + i0 ,h. 72 , a5 + 2.100 ; 229 == w. b14 + 0 ,h. 172 , a0 + 2.100 ; 230 (subex w. -b10 + 0 ,h. 0 , a0 + 2.000 ; 231 )subex w. -b10 + h3+67 ,h. 0 , a28 + 2.010 ; 232 simple for do w. -b10 + h3+68 ,h. 0 , a28 + 2.010 ; 233 step elem do w. -b10 + h3+69 ,h. 0 , a28 + 2.011 ; 234 while elem do \f ; rc 22.1.1971 algol 6, pass 6, page ...28... ; input table: operators (2): ; table format: ; 1. word: <18: priority ; <7 : kind or empty ; <0 : type or output value or empty ; 2. word: <12: output value or operator table index or empty ; <5 : action no ; <0 : bits: stack<2 + output<1 + (then,while elem do)<0 ; <18 <7 <0 <12 <5 <0 ; input value w. b14 + h3+79 ,h. 152 , a0 + 2.110 ; 235 case w. -b10 + h3+80 ,h. 148 , a0 + 2.110 ; 236 of ex w. -b10 + h3+8 ,h. 0 , a68 + 2.010 ; 237 end case ex w. -b10 + h3+7 ,h. 0 , a21 + 2.010 ; 238 case comma w. b14 + h3+56 ,h. 0 , a0 + 2.010 ; 239 case semicolon w. b14 + 0 ,h. 0 , a34 + 2.000 ; 240 vanished operand w. b14 + 0 ,h. 0 , a35 + 2.000 ; 241 internal operand w. b2 + j17 + i7 ,h. 40 , a5 + 2.100 ; 242 < w. b2 + j17 + i7 ,h. 44 , a5 + 2.100 ; 243 <= w. b2 + j17 + i7 ,h. 48 , a5 + 2.100 ; 244 = w. b2 + j17 + i7 ,h. 52 , a5 + 2.100 ; 245 >= w. b2 + j17 + i7 ,h. 56 , a5 + 2.100 ; 246 > w. b2 + j17 + i7 ,h. 60 , a5 + 2.100 ; 247 <> w. b0 + 0 ,h. 96 , a0 + 2.100 ; 248 -, w. b12 + 0 ,h. 76 , a0 + 2.100 ; 249 entier w. b4 + 0 ,h. 92 , a0 + 2.100 ; 250 pos w. b4 + 0 ,h. 88 , a0 + 2.100 ; 251 neg w. b12 + 0 ,h. 84 , a0 + 2.100 ; 252 abs w. b12 + 0 ,h. 80 , a0 + 2.100 ; 253 round w. b12 + 0 ,h. 100 , a0 + 2.100 ; 254 extend w. b12 + 0 ,h. 104 , a0 + 2.100 ; 255 oplong w. b12 + 0 ,h. 108 , a0 + 2.100 ; 256 opreal w. b12 + 0 ,h. 112 , a0 + 2.100 ; 257 opstring w. -b8 + j17 + i0 ,h. h3+43 , a55 + 2.001 ; 258 then st w. -b10 + h3+54 ,h. 144 , a0 + 2.110 ; 259 else st w. -b10 + h3+80 ,h. 0 , a0 + 2.010 ; 260 of st w. b14 + h3+57 ,h. 0 , a0 + 2.010 ; 261 end case st w. -b10 + h3+100 ,h. 0 , a0 + 2.010 ; 262 end list one w. -b10 + h3+101 ,h. 0 , a0 + 2.010 ; 263 end list more w. -b10 + h3+102 ,h. 308 , a0 + 2.110 ; 264 first comma w. -b10 + h3+103 ,h. 308 , a0 + 2.110 ; 265 not first comma w. b12 + j22 + i13 ,h. 180 , a57 + 2.100 ; 266 first point w. b14 + j7 + i13 ,h. 184 , a59 + 2.100 ; 267 not first point w. -b10 + 0 ,h. 0 , a0 + 2.000 ; 268 zone comma w. -b10 + 0 ,h. 176 , a0 + 2.100 ; 269 bound colon w. -b10 + h3+61 ,h. 164 , a0 + 2.110 ; 270 simple for elem \f ; rc 1976.08.17 algol 6, pass 6, page ...29... ; input table: operators (3): ; table format: ; 1. word: <18: priority ; <7 : kind or empty ; <0 : type or output value or empty ; 2. word: <12: output value or operator table index or empty ; <5 : action no ; <0 : bits: stack<2 + output<1 + (then,while elem do)<0 ; <18 <7 <0 <12 <5 <0 ; input value w. -b10 + h3+60 ,h. 164 , a0 + 2.110 ; 271 :=for w. -b10 + h3+64 ,h. 164 , a0 + 2.110 ; 272 step elem w. -b10 + h3+66 ,h. 164 , a0 + 2.110 ; 273 while elem w. -b10 + h3+65 ,h. 168 , a0 + 2.111 ; 274 while w. -b10 + 0 ,h. 0 , a0 + 2.000 ; 275 end assign w. b12 + h3+39 ,h. 120 , a17 + 2.110 ; 276 := w. b12 + h3+39 ,h. 116 , a16 + 2.110 ; 277 first:= w. b14 + h3+83 ,h. 0 , a0 + 2.010 ; 278 end block w. b14 + h3+93 ,h. 0 , a0 + 2.010 ; 279 end zone block w. b14 + h3+116 ,h. 0 , a0 + 2.010 ; 280 while label w. b14 + 0 ,h. 124 , a18 + 2.000 ; 281 prep assign w. b14 + h3+72 ,h. 0 , a0 + 2.010 ; 282 goto bypass label w. b14 + h3+73 ,h. 0 , a0 + 2.010 ; 283 bypass label w. b14 + 0 ,h. 348 , a0 + 2.100 ; 284 end zone local w. b14 + 0 ,h. 0 , a0 + 2.000 ; 285 do w. b14 + h3+70 ,h. 0 , a0 + 2.010 ; 286 end do w. b14 + h3+71 ,h. 0 , a0 + 2.010 ; 287 end single do w. b16 + h3+117 ,h. 0 , a36 + 2.010 ; 288 new line w. b14 + h3+81 ,h. 0 , a0 + 2.010 ; 289 beg external w. b14 + h3+82 ,h. 0 , a32 + 2.010 ; 290 beg block w. b14 + h3+92 ,h. 0 , a30 + 2.010 ; 291 beg proc w. b14 + h3+76 ,h. 0 , a30 + 2.010 ; 292 take array w. b14 + h3+77 ,h. 0 , a0 + 2.010 ; 293 take zone array w. b14 + h3+78 ,h. 0 , a28 + 2.010 ; 294 take value w. b14 + h3+90 ,h. 0 , a25 + 2.010 ; 295 end bounds w. -b10 + 0 ,h. 0 , a0 + 2.000 ; 296 end zone decl w. b14 + h3+84 ,h. 0 , a0 + 2.010 ; 297 exit block w. b14 + h3+115 ,h. 0 , a51 + 2.010 ; 298 end external w. b14 + h3+85 ,h. 0 , a0 + 2.010 ; 299 exit proc not w. b14 + h3+86 ,h. 0 , a0 + 2.010 ; 300 exit type proc w. b14 + h3+75 ,h. 0 , a32 + 2.010 ; 301 label colon w. b14 + h3+91 ,h. 304 , a42 + 2.000 ; 302 begin list w. b14 + j7 + i13 ,h. 188 , a58 + 2.100 ; 303 begin list field w. b14 + h3+87 ,h. 176 , a33 + 2.110 ; 304 begin bounds w. b14 + h3+108 ,h. 328 , a45 + 2.010 ; 305 begin zone w. b14 + h3+109 ,h. 324 , a46 + 2.010 ; 306 begin zone array w. b14 + 0 ,h. 0 , a49 + 2.000 ; 307 error w. b14 + h3+114 ,h. 0 , a52 + 2.010 ; 308 end pass \f ; rc 15.2.1971 algol 6, pass 6, page ...30... ; input table: operands (1): ; table format: ; 1. word: <18: priority ; <7 : kind ; <0 : type ; 2. word: <12: output value ; <5 : action no ; <18 <7 <0 <12 <5 ; input value w. b16 + j23 + i9 ,h. h17+5 , a50 ; 309 undeclared w. b16 + j16 + i5 ,h. h17+28 , a3 ; 310 label w. b16 + j12 + i5 ,h. h17+18 , a3 ; 311 switch w. b16 + j16 + i5 ,h. h17+10 , a3 ; 312 formal label w. b16 + j12 + i5 ,h. h17+18 , a3 ; 313 formal switch w. b16 + j13 + i3 ,h. h17+21 , a3 ; 314 proc no par integer w. b16 + j13 + i2 ,h. h17+23 , a3 ; 315 proc no par real w. b16 + j13 + i1 ,h. h17+22 , a3 ; 316 proc no par long w. b16 + j13 + i0 ,h. h17+20 , a3 ; 317 proc no par boolean w. b16 + j13 + i6 ,h. h17+24 , a3 ; 318 proc no par not w. b16 + j12 + i3 ,h. h17+17 , a2 ; 319 proc par integer w. b16 + j12 + i2 ,h. h17+19 , a2 ; 320 proc par real w. b16 + j12 + i1 ,h. h17+18 , a2 ; 321 proc par long w. b16 + j12 + i0 ,h. h17+16 , a2 ; 322 proc par boolean w. b16 + j12 + i6 ,h. h17+24 , a2 ; 323 proc par not w. b16 + j15 + i3 ,h. h17+5 , a3 ; 324 simple integer w. b16 + j15 + i2 ,h. h17+7 , a3 ; 325 simple real w. b16 + j15 + i1 ,h. h17+6 , a3 ; 326 simple long w. b16 + j15 + i0 ,h. h17+4 , a3 ; 327 simple boolean w. b16 + j8 + i3 ,h. h17+5 , a56 ; 328 integer field w. b16 + j8 + i2 ,h. h17+5 , a56 ; 329 real field w. b16 + j8 + i1 ,h. h17+5 , a56 ; 330 long field w. b16 + j8 + i0 ,h. h17+5 , a56 ; 331 boolean field w. b16 + j7 + i3 ,h. h17+5 , a56 ; 332 integer array field w. b16 + j7 + i2 ,h. h17+5 , a56 ; 333 real array field w. b16 + j7 + i1 ,h. h17+5 , a56 ; 334 long array field w. b16 + j7 + i0 ,h. h17+5 , a56 ; 335 boolean array field w. b16 + j9 + i2 ,h. h17+25 , a3 ; 336 zone w. b16 + j11 + i3 ,h. h17+13 , a3 ; 337 integer array w. b16 + j11 + i2 ,h. h17+15 , a3 ; 338 real array w. b16 + j11 + i1 ,h. h17+14 , a3 ; 339 long array w. b16 + j11 + i0 ,h. h17+12 , a3 ; 340 boolean array w. b16 + 0 ,h. 0 , a38 ; 341 dope description w. b16 + j10 + i2 ,h. h17+27 , a3 ; 342 zone array \f ; rc 15.2.1971 algol 6, pass 6, page ...31... ; input table: operands (2): ; table format: ; 1. word: <18: priority ; <7 : kind ; <0 : type ; 2. word: <12: output value ; <5 : action no ; <18 <7 <0 <12 <5 ; input value w. b16 + j14 + i3 ,h. h17+17 ,a3 ; 343 formal proc integer w. b16 + j14 + i2 ,h. h17+19 ,a3 ; 344 formal proc real w. b16 + j14 + i1 ,h. h17+18 ,a3 ; 345 formal proc long w. b16 + j14 + i0 ,h. h17+16 ,a3 ; 346 formal proc boolean w. b16 + j14 + i6 ,h. h17+24 ,a3 ; 347 formal proc not w. b16 + j15 + i3 ,h. h17+9 ,a3 ; 348 formal simple integer w. b16 + j15 + i2 ,h. h17+11 ,a3 ; 349 formal simple real w. b16 + j15 + i1 ,h. h17+10 ,a3 ; 350 formal simple long w. b16 + j15 + i0 ,h. h17+8 ,a3 ; 351 formal simple boolean w. b16 + j8 + i3 ,h. h17+9 ,a56 ; 352 formal integer field w. b16 + j8 + i2 ,h. h17+9 ,a56 ; 353 formal real field w. b16 + j8 + i1 ,h. h17+9 ,a56 ; 354 formal long field w. b16 + j8 + i0 ,h. h17+9 ,a56 ; 355 formal boolean field w. b16 + j7 + i3 ,h. h17+9 ,a56 ; 356 formal int array field w. b16 + j7 + i2 ,h. h17+9 ,a56 ; 357 formal real array field w. b16 + j7 + i1 ,h. h17+9 ,a56 ; 358 formal long array field w. b16 + j7 + i0 ,h. h17+9 ,a56 ; 359 formal boo array field w. b16 + j16 + i4 ,h. h17+10 ,a3 ; 360 formal string w. b16 + j11 + i3 ,h. h17+9 ,a3 ; 361 anonymous array integer w. b16 + j11 + i2 ,h. h17+11 ,a3 ; 362 anonymous array real w. b16 + j11 + i1 ,h. h17+10 ,a3 ; 363 anonymous array long w. b16 + j11 + i0 ,h. h17+8 ,a3 ; 364 anonymous array boolean w. b16 + j9 + i2 ,h. h17+26 ,a3 ; 365 formal zone w. b16 + j16 + i3 ,h. h17+1 ,a3 ; 366 integer literal w. b16 + j16 + i2 ,h. h17+3 ,a37 ; 367 real literal w. b16 + j16 + i1 ,h. h17+2 ,a37 ; 368 long literal w. b16 + j16 + i0 ,h. h17+0 ,a44 ; 369 boolean literal w. b16 + j16 + i4 ,h. h17+29 ,a37 ; 370 string first w. b16 + 0 ,h. h17+30 ,a4 ; 371 string next \f ; jz 1980.02.15 algol 8, pass 6, page ...32... ; input table: specifications: ; table format: ; 1. word: <18: priority ; rest unused ; 2. word: <12: operator table index ; <5 : action no ; rest unused ; <18 <12 <5 ; input value w. b16 ,h. 204 , a39; 372 spec simple boolean w. b16 ,h. 192 , a39; 373 spec simple integer w. b16 ,h. 196 , a39; 374 spec simple real w. b16 ,h. 200 , a39; 375 spec simple long w. b16 ,h. 300 , a39; 376 spec simple long real w. b16 ,h. 300 , a39; 377 spec complex w. b16 ,h. 208 , a39; 378 spec zone w. b16 ,h. 212 , a39; 379 spec string w. b16 ,h. 216 , a39; 380 spec label w. 0 ,h. 0 , 0 ; 381 not possible w. b16 ,h. 224 , a39; 382 spec value boolean w. b16 ,h. 220 , a39; 383 spec value integer w. b16 ,h. 220 , a39; 384 spec value real w. b16 ,h. 220 , a39; 385 spec value long w. b16 ,h. 300 , a39; 386 spec value long real w. b16 ,h. 300 , a39; 387 spec value complex w. b16 ,h. 292 , a39; 388 spec address boolean w. b16 ,h. 280 , a39; 389 spec address integer w. b16 ,h. 284 , a39; 390 spec address real w. b16 ,h. 288 , a39; 391 spec address long w. b16 ,h. 300 , a39; 392 spec address long real w. b16 ,h. 300 , a39; 393 spec address complex w. b16 ,h. 240 , a39; 394 spec array boolean w. b16 ,h. 228 , a39; 395 spec array integer w. b16 ,h. 232 , a39; 396 spec array real w. b16 ,h. 236 , a39; 397 spec array long w. b16 ,h. 300 , a39; 398 spec array long real w. b16 ,h. 300 , a39; 399 spec array complex w. b16 ,h. 244 , a39; 400 spec zone array w. b16 ,h. 248 , a39; 401 spec proc no type w. b16 ,h. 264 , a39; 402 spec proc boolean w. b16 ,h. 252 , a39; 403 spec proc integer w. b16 ,h. 256 , a39; 404 spec proc real w. b16 ,h. 260 , a39; 405 spec proc long w. b16 ,h. 300 , a39; 406 spec proc long real w. b16 ,h. 300 , a39; 407 spec proc complex w. b16 ,h. 268 , a39; 408 spec switch w. b16 ,h. 276 , a39; 409 spec general w. b16 ,h. 296 , a39; 410 spec address general w. b16 ,h. 272 , a39; 411 spec undefined i. ; id list e. ; end block tables \f ; jz.fgs.1981.03.02 algol 8, pass 6, page ...33... b. b24 ; begin block error texts w. ; g11: b0: <:-delimiter:> b1: <:delimiter:>,0 b2: <:-operand:> b3: <:operand:> b4: <:termination:> b5: <:head:> b6: <:external:> b7: <:char or illegal:>,0 b9: <:comment:> b10: <:layout:>,0 b11: <:right par improper:>,0 b12: <:begin ends:> b14: <:undeclared:> b15: <:+declaration<0>:> b16: <:for label:>,0 b17: <:local:> b18: <:constant:> b19: <:text:> b20: <:context label<0>:> b21: <:context zone<0>:> b22: <:context proc<0>:> b23: <:case elements<0>:> b24: <:compiler directive syntax:> ; error text address table: g4 = k - 2 b0-b0 , b1 -b0 , b2 -b0 , b3 -b0 , b4-b0 ; 1- 5 b5 -b0 , b6 -b0 , b7 -b0+1 , 0 , b9-b0 ; 6-10 b10-b0 , b11-b0 , b12-b0 , 0 , b14-b0+1 ; 11-15 b15-b0+1 , b16-b0 , b17-b0 , b18-b0 , b19-b0 ; 16-20 b20-b0 , b21-b0 , b22-b0 , b23-b0 , b24-b0 ; 21-25 g0 = k + 2 ; operator stack bottom: -11<19 ; g5 = (:k-j0:) e30=e30+g5 g6 = (:g0-g2:) i. ; id list e. ; end block error texts i. ; id list e. ; end pass 6 m. jz 1986.02.27 algol 8, pass 6 \f ▶EOF◀