lpile(type
, p1
, p2
) int type
, p1
, p2
; {
int bi
, hi
, i
, gap
, h
, b
, nlist
, nlist2
, mid
;
eht
[yyval
] = h
+ (nlist
-1)*gap
;
for( i
=p2
-1; i
>mid
; i
-- )
ebase
[yyval
] = (nlist
%2) ? b
+ ebase
[lp
[mid
]]
printf(".\tS%d <- %c pile of:", yyval
, type
);
printf(";h=%d b=%d\n", eht
[yyval
], ebase
[yyval
]);
nrwid(lp
[p1
], ps
, lp
[p1
]);
printf(".nr %d \\n(%d\n", yyval
, lp
[p1
]);
for( i
= p1
+1; i
<p2
; i
++ ) {
printf(".if \\n(%d>\\n(%d .nr %d \\n(%d\n",
lp
[i
], yyval
, yyval
, lp
[i
]);
printf(".ds %d \\v'%du'\\h'%du*\\n(%du'\\\n", yyval
, ebase
[yyval
],
type
=='R' ? 1 : 0, yyval
);
for(i
= p2
-1; i
>=p1
; i
--) {
printf("\\v'%du'\\*(%d\\h'-\\n(%du'\\v'0-%du'\\\n",
-bi
, lp
[i
], lp
[i
], hi
-bi
+gap
);
printf("\\v'%du'\\h'-\\n(%du'\\*(%d\\v'0-%du'\\\n",
-bi
, lp
[i
], lp
[i
], hi
-bi
+gap
);
printf("\\v'%du'\\h'\\n(%du-\\n(%du/2u'\\*(%d",
-bi
, yyval
, lp
[i
], lp
[i
]);
printf("\\h'-\\n(%du-\\n(%du/2u'\\v'0-%du'\\\n",
yyval
, lp
[i
], hi
-bi
+gap
);
printf("\\v'%du'\\h'%du*\\n(%du'\n", eht
[yyval
]-ebase
[yyval
]+gap
,
type
!='R' ? 1 : 0, yyval
);
lfont
[yyval
] = rfont
[yyval
] = 0;