ARRTSTDU -- Return the state of the bit for Disk/User (BC) in reg A
ARRSETDU -- Set or reset the bit for Disk/User (in BC) 
ARTSTDSK -- Return logical OR of all elements in row (b)
ARXLTBIT -- Translate a bit address into a column address and bit number
ARFRC1$2 -- Write (A) into (BC) through (DE), B,D = row and C,E = col
ARRXLTRC -- Translate row-column in BC into an absolute address in HL
ARVISITI -- Define function to perform on array element(s)
ARDOBLOK -- Perform a function on elements from r1c1 through r2c2
:Return the state of the bit for Disk/User (BC) in reg A

     Routine:  ARRTSTDU

     Function:  Return the bit corresponding to disk(1-16) and
user(0-31) in register a.

     Inputs:
	B = disk, (1..16)	C = user, (0..31)

     Outputs:
	AF = 0,Z if bit was 0
	AF = 0ffh,NZ if bit was 1

     Registers Affected: HL, DE are destroyed.

     Error Conditions:
on error: AF returns with carry set and error code in A
	A = 1 if bitmap not yet defined
	A = 2 if address is out of range
	A = 3 if ending address < starting address
:Set or reset the bit for Disk/User (in BC) 

     Routine:  ARRSETDU

     Function: Set the bit corresponding to disk/user to 0
or 1, according to the value in reg a.

     Inputs:
	A = 00 or >0
	B = disk(1..16),	C = user(0..31)

     Outputs:
	bit at du is set(1) if reg A was non-zero
	bit at du is reset(0) if reg A was zero

     Registers Affected: All registers are destroyed

     Error Conditions:
on error: AF returns with carry set and error code in A
	A = 1 if bitmap not yet defined
	A = 2 if address is out of range
	A = 3 if ending address < starting address
:Return logical OR of all elements in row (b)

     Routine:  ARTSTDSK

     Function: Test a row in the array for existance of bits that
are set. If none are found, return with A = 0. If any are found, return
with A = 0ffh. The row to be tested is that corresponding to the DISK
number in register B on input.

     Inputs:	B = disk(1..16) for which test is intended

     Outputs:
        if row is->	empty:		non-empty:
        then:	a =	  0		  0ffh
        	e =	  0		  0ffh
        	flgs	z,nc		nz,nc

(Continued on next screen)


     Registers Affected: AF, E

     Error Conditions:
on error: AF returns with carry set and error code in A
	A = 1 if bitmap not yet defined
	A = 2 if address is out of range
	A = 3 if ending address < starting address
:Translate a bit address into a column address and bit number

     Routine:  ARXLTBIT

     Function: Translates a row,bit address to a row,column address
and a bit position. The row number is unchanged.

     Inputs:
	B = row number
	C = bit number (0...max allowed)

     Outputs:
	B = row number,	C = column number
	E = bit position (0-7) in column (C)
	A = E,	flags = NC (no error)

     Registers Affected: A, C, E

     Error Conditions:
Returns with CY set if bit number is too large.
:-- Write (A) into (BC) through (DE), B,D = row and C,E = col

     Routine:  ARFRC1$2

     Function: Write the contents of A into contiguous array
locations starting with row B, column C and ending with row D, column E.


     Inputs:
	A = value with which to fill array
	B = starting row number
	C = starting column number
	D = ending row number
	E = ending column number

     Outputs: AF = Completion status. 0, Z, NC = normal return.

     Registers Affected:  AF, AF',BC,DE,HL

     Error Conditions:
on error: AF returns with carry set and error code in A
	A = 1 if bitmap not yet defined
	A = 2 if address is out of range
	A = 3 if ending address < starting address
:Translate row-column in BC into an absolute address in HL

     Routine:  ARRXLTRC

     Function: Translate row/column input data to the absolute
address of the byte being specified.

     Inputs:
	B = row number
	C = column number

     Outputs:
	HL = address of the byte
	no error: A = 0, F = Z, NC

     Registers Affected: BC and DE are preserved

     Error Conditions:
on error: AF returns with carry set and error code in A
	A = 1 if bitmap not yet defined
	A = 2 if address is out of range
:Define function to perform on array element(s)

     Routine:  ARVISITI

     Function: Stores the address of a subroutine to perform
on array elements. The subroutine should preserve all registers.
Note that a Library subroutine may be referenced symbolically, as
in 'ld hl,arsetbit'. In this case, the linker supplies the address.

     Inputs: HL = subroutine address

     Outputs: NONE

     Registers Affected: all registers preserved

     Error Conditions: None
:Perform a function on elements from r1c1 through r2c2

     Routine:  ARDOBLOK

     Function: visit a rectangular block of array elements
performing a function that has been defined by a call to ARVISITI:

     Inputs:
	B = first row in block
	C = first column in block
	D = last row in block
	E = last column in block

     Outputs: normal return: carry flag = NC, A = 0

     Registers Affected: AF, B, HL

     Error Conditions:
on error: AF returns with carry set and error code in A
	A = 1 if bitmap not yet defined
	A = 2 if address is out of range
	A = 3 if ending address < starting address
