These are the primary tool of space banks{(p2,bank)}. All calls to range keys {including sever} are as prompt as the space being accessed.

- Each page range key PRANGE defines an injective function
f from the non-negative integers less than N to coded disk
addresses. N is some constant number that depends on the
range key. {You learn this number from the provider of the
key.}

- f is an injective function iff For all x For all y If
f(x) = f(y) then x = y.

PRANGE(5,((4,rcda)); ==> c;K) is the same as order code 0 except that if the page is not on any mounted disk, c is 2.

{ni}PRANGE(?,((4,n),(4,m));==>c;PR) returns a new page range key PR whose range is a subrange of the range of PRANGE if n+m is less than the size of the range of PRANGE {otherwise c will be -1 and no key will be returned}. f(0) for the new key will be f(n) for the old key. The new key will be for m CDA's.

If (K is not a page key with RO off or there exists no number x such that f(x) is K's CDA) and 1 <= n <= 4 or n=6 then PRANGE(n;K==>-1;). If K is a page key with RO off and there exists a {unique} integer x such that the coded disk address of the page is f(x), then:

- PRANGE(1;K==>c,((4,x));) returns
that x and returns (if page is gratis then 1 else 0) in
c.

PRANGE(2;K==>0;) {"sever"} changes all slots holding keys to the page designated by K to hold DK(0). Fine print: If the page being severed is the parameter page of the sever operation, the effect is unpredictable.

PRANGE(6;K==>0;) {"sever and zero"} is like sever {(sever)} but clears the page to zeros as well.

PRANGE(3;K==>0;) makes the page gratis.

PRANGE(4;K==>0;) makes the page non-gratis.

- It might be useful to have a call that copied the data
from page A to page B. This could be optimized by not reading
B from the disk. Unfortunately the CDA of B would still
be required from the disk.

With FBA disks we can get the CDA cheap without the rest of the page.

These keys are restricted merely because we wish to keep for a while longer the freedom to change their architecture and we think there is no great need to spread them widely.

Applications can use range keys directly if rescinding is done by abandoning a range of CDAs. This is feasible with six byte CDAs (the current size). This requires reformating packs in order to ensure that the application or its assignees can no longer access the disk.

- {Same as above, substituting NRANGE for PRANGE and "node"
for "page". Also, under "NRANGE(2,...)", if there is a
process in the node the process disappears leaving the node
busy.} Fine print: if, in a sever operation, the node being
severed is part of the domain to which control is returned
after the operation, the effect is unpredictable.

- If K designates a page or key and R is a range key which
can produce a node key or page key to that node or page
then there is a call on R that returns the relative cda
of the node or page along with all of the other information
within the key K. {Including, perhaps, whether there is
a process in the indicated node.} {This is tantamount to
removing the clause "with RO off" in the operation described
at (getcda).}

See (p3,scrut).