%begin
%externalroutinespec phex(%integer x)
%externalintegerfnspec heapget(%integer size)
%externalroutinespec mark
%externalroutinespec release
%externalroutinespec heapswop(%integer depth)

%routine show(%integer x)
  phex(x); space
  phex(integer(x-4)); space
  phex(integer(x)); space
  phex(integer(x+4)); newline
%end

%routine get(%integername a)
  a = heapget(8); integer(a) = -1; integer(a+4) = 0
%end

%integer a,b,c,d
  mark; get(a); mark; get(b); get(c); mark; get(d)
  show(a); show(b); show(c); show(d); newline
  heapswop(1)
  show(a); show(b); show(c); show(d); newline
  release
  show(a); show(b); show(c); show(d); newline
%end
