program t28; var g : integer ; unused : integer ; (* Seventy parameters. p63 and p70 sit at +128 and +142, the first offsets an 8-bit displacement cannot represent, so their accesses must use the 4-byte mod=10 form -- that is what check_framedisp.py asserts. A call caps at 16 arguments, so p17..p70 are never passed and reading them returns stack garbage. `unused' takes that sum and is never printed: the point of the fixture is the ENCODING, and the printed value must stay deterministic. Do not read 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 := p16 + p1 ; unused := p63 + p70 end ; begin far (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) ; writeln (g) end.