42800 #include "rundecs.h" 42810 (* COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER *) 42820 (**) 42830 (**) 42840 PROCEDURE GARBAGE (ANOBJECT: OBJECTP); EXTERN ; 42850 (**) 42860 (**) 42870 PROCEDURE RANGEXT; 42880 (*PRANGEXT*) 42890 (*+01() EXTERN; ()+01*) 42900 (*+05() EXTERN; ()+05*) 42910 (*-01() (*-05() 42920 VAR LASTRG: PRANGE; 42930 IDP: PIDBLK ; 42940 PP: OBJECTPP ; 42950 I, J: INTEGER; 42960 BEGIN 42970 WITH FIRSTRG.RIBOFFSET^ DO 42980 WITH FIRSTW DO 42990 BEGIN 43000 IDP := RGIDBLK ; 43010 IF FIRSTRG.RIBOFFSET^.RIBOFFSET = FIRSTRG.RIBOFFSET THEN (*PARAMS*) 43020 (*-41() PP := INCPTR(RGNEXTFREE, -PROCBL^.PARAMS) ()-41*) 43030 (*+41() PP := INCPTR(RGLASTUSED, +PROCBL^.PARAMS) ()+41*) 43040 ELSE 43050 (*-41() PP := INCPTR ( FIRSTRG.RIBOFFSET , RGCONST ) ; ()-41*) 43060 (*+41() PP := ASPTR ( ORD( FIRSTRG.RIBOFFSET ) ) ; ()+41*) 43070 FIRSTRG.RIBOFFSET := RIBOFFSET ; 43080 (*-41() WHILE ORD (PP) < ORD (RGNEXTFREE) DO ()-41*) 43090 (*+41() WHILE ORD (PP) > ORD (RGLASTUSED) DO ()+41*) 43100 BEGIN 43110 IDP := INCPTR (IDP , -SZIDBLOCK) ; 43120 WITH IDP^ DO 43130 BEGIN 43140 IF IDSIZE = 0 THEN 43150 BEGIN 43160 (*+41() PP := INCPTR( PP , - SZADDR ) ; ()+41*) 43170 WITH PP^^ DO 43180 BEGIN 43190 FDEC; 43200 IF FTST THEN GARBAGE (PP^) 43210 END ; 43220 (*-41() PP := INCPTR( PP , SZADDR ) ()-41*) 43230 END 43240 ELSE PP := INCPTR( PP , (*+41() - ()+41*) IDSIZE ) 43250 END 43260 END 43270 END 43280 END; 43290 (**) 43300 (**) 43310 FUNCTION RANGXTP(ANOBJECT: OBJECTP): OBJECTP; 43320 (*PRANGEXT+2*) 43330 BEGIN 43340 WITH ANOBJECT^ DO FINC; 43350 RANGEXT; 43360 WITH ANOBJECT^ DO FDEC; 43370 RANGXTP := ANOBJECT; 43380 END; 43390 ()-05*) ()-01*) 43400 (**) 43410 (**) 43420 (*-02() 43430 BEGIN 43440 END ; 43450 ()-02*) 43460 (*+01() 43470 BEGIN (*OF MAIN PROGRAM*) 43480 END (*OF EVERYTHING*). 43490 ()+01*)