From: ceriel Date: Wed, 28 Oct 1987 16:10:02 +0000 (+0000) Subject: sets now allowed for all subranges X-Git-Tag: release-5-5~3779 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=3c63f1b6565806cf06693d087abc0d423b0583a6;p=ack.git sets now allowed for all subranges --- diff --git a/lang/m2/libm2/LtoUset.e b/lang/m2/libm2/LtoUset.e index bd7e823f0..595747240 100644 --- a/lang/m2/libm2/LtoUset.e +++ b/lang/m2/libm2/LtoUset.e @@ -2,14 +2,16 @@ mes 2,EM_WSIZE,EM_PSIZE ; _LtoUset is called for set displays containing { expr1 .. expr2 }. - ; It has five parameters, of which the caller must pop four: + ; It has six parameters, of which the caller must pop five: ; - The set in which bits must be set. + ; - the lower bound of the set type. ; - The set size in bytes. ; - The upper bound of set elements, specified by the set-type. ; - "expr2", the upper bound ; - "expr1", the lower bound -#define SETBASE 4*EM_WSIZE +#define SETBASE 5*EM_WSIZE +#define SETLOW 4*EM_WSIZE #define SETSIZE 3*EM_WSIZE #define USETSIZ 2*EM_WSIZE #define LWB EM_WSIZE @@ -19,16 +21,28 @@ lal SETBASE ; address of initial set lol SETSIZE los EM_WSIZE ; load initial set -1 lol LWB ; low bound + lol SETLOW + sbu EM_WSIZE + stl LWB lol UPB ; high bound - bgt *2 ; while low <= high + lol SETLOW + sbu EM_WSIZE + stl UPB +1 + lol LWB + lol UPB + cmu EM_WSIZE + zgt *2 ; while low <= high lol LWB lol SETSIZE set ? ; create [low] lol SETSIZE ior ? ; merge with initial set - inl LWB ; increment low bound + lol LWB + loc 1 + adu EM_WSIZE + stl LWB bra *1 ; loop back 2 lal SETBASE