#
; $Header$
;
; (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
;
;          This product is part of the Amsterdam Compiler Kit.
;
; Permission to use, sell, duplicate or disclose this software must be
; obtained in writing. Requests for such permissions may be sent to
;
;      Dr. Andrew S. Tanenbaum
;      Wiskundig Seminarium
;      Vrije Universiteit
;      Postbox 7161
;      1007 MC Amsterdam
;      The Netherlands
;
; 

; Author: J.W. Stevenson */

 mes 2,EM_WSIZE,EM_PSIZE

#define	SIZE	0
#define	HIGH	EM_WSIZE
#define	LOWB	2*EM_WSIZE
#define	BASE	3*EM_WSIZE

; _bts is called with four parameters:
;	- the initial set (BASE)
;	- low bound of range of bits (LOWB)
;	- high bound of range of bits (HIGH)
;	- set size in bytes (SIZE)

 exp $_bts
 pro $_bts,0
 lal BASE	; address of initial set
 lol SIZE
 los EM_WSIZE	; load initial set
1
 lol LOWB	; low bound
 lol HIGH	; high bound
 bgt *2		; while low <= high
 lol LOWB
 lol SIZE
 set ?		; create [low]
 lol SIZE
 ior ?		; merge with initial set
 inl LOWB	; increment low bound
 bra *1		; loop back
2
 lal BASE
 lol SIZE
 sts EM_WSIZE	; store result over initial set
 ret 0
 end ?