program t28; var g : integer ; unused : integer ; (* Seventy parameters, laid out the way TP3 lays them out: the LAST declared one sits at BP+4 and each earlier parameter is 2 bytes farther from BP, so p1 is at +142 and p8 at +128 -- the first offsets an 8-bit displacement cannot represent -- and their accesses must use the 4-byte mod=10 form; that is what check_framedisp.py asserts. A call caps at 16 arguments, so p1..p54 are never passed and reading them returns stack garbage. `unused' takes that sum and is never printed, so the point of the fixture is the ENCODING and the printed value must stay deterministic. The 16 arguments that ARE passed land on p55..p70, which is why `g' reads those two: p55 is where the FIRST argument goes and p70 is where the LAST one goes, so p55 + p70 = 1 + 16. Do not read any of this as a claim that a 70-argument call works. *) procedure far (p1 : integer, p2 : integer, p3 : integer, p4 : integer, p5 : integer, p6 : integer, p7 : integer, p8 : integer, p9 : integer, p10 : integer, p11 : integer, p12 : integer, p13 : integer, p14 : integer, p15 : integer, p16 : integer, p17 : integer, p18 : integer, p19 : integer, p20 : integer, p21 : integer, p22 : integer, p23 : integer, p24 : integer, p25 : integer, p26 : integer, p27 : integer, p28 : integer, p29 : integer, p30 : integer, p31 : integer, p32 : integer, p33 : integer, p34 : integer, p35 : integer, p36 : integer, p37 : integer, p38 : integer, p39 : integer, p40 : integer, p41 : integer, p42 : integer, p43 : integer, p44 : integer, p45 : integer, p46 : integer, p47 : integer, p48 : integer, p49 : integer, p50 : integer, p51 : integer, p52 : integer, p53 : integer, p54 : integer, p55 : integer, p56 : integer, p57 : integer, p58 : integer, p59 : integer, p60 : integer, p61 : integer, p62 : integer, p63 : integer, p64 : integer, p65 : integer, p66 : integer, p67 : integer, p68 : integer, p69 : integer, p70 : integer) ; begin g := p55 + p70 ; unused := p8 + p1 end ; begin far (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) ; writeln (g) end.