57 lines
1.1 KiB
Plaintext
57 lines
1.1 KiB
Plaintext
#
|
|
; $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 ?
|