;Library Name: ARRAYLIB ;Module Name: USENDR ;Author: Al Hawley ;Date: 31 Mar 1987 ;Version number: 1.0c ;Version History: ;Program Function: ARRAYLIB is a collection of subroutines which ; implement the management of byte arrays in programs written ; for Z80 or HD64180 based computers. This module is one of the ; set, and may require the presence of others. ;*************************************************** ; COPYRIGHT NOTICE ;ARRAYLIB is copyright by A. E. Hawley on March 4, 1987. ;It may be freely distributed, but it must not be sold ;either separately or as part of a package without the ;written consent of the author. The author may be reached ;via electronic mail at the Ladera Z-Node in Los Angeles, ;213-670-9465, or by Voice Phone at: 213-649-3575 ; ;*************************************************** MACLIB ARRHDR name usendr ;This module contains the following routines: public arrndrdu ;..and uses the following external routines: ext arrfr0$e,arxltbit,arrxltrc,arsetbit ext getndre,gtnxtdu arrndrdu: ;initialize a 64 byte array from the drive-user ;assignments in the system named directory ;the array must have been previously defined by ;a call to ARRAYDEF. only those bit positions in the ;array are set which correspond to d/u entries ;found in the current ndr. all others are reset. xor a ;make null for... call arrfr0$e ;init array to nulls ret c ;ret if error, code in A call getndre ;return pointer to NDR in HL ret c ;ret if error, code in A ld (curloc),hl ;pass it to NDR access routine ndrdu1: call gtnxtdu ;retrieve next DU from NDR ret z ;return if no more entries dec b ;convert drive(1-16) to Row(0-15) call arxltbit ;->row, col, offset in e ret c ;ret if error, code in A call arrxltrc ;r,c -> addr in hl ret c ;ret if error, code in A ld a,e ;get bit offset call arsetbit ;set the bit for drv/user jr ndrdu1 ;continue 'til no more entries ;********************************************** IF ZAS COMMON ;common block for ZAS ELSE COMMON /ADATA/ ;common block for M80, SLR ENDIF ;COMMON data area - contains default values for a 64 ;byte array useful for disk/user bitmapping. bitmap: ds 2 ;..filled in by ARRAYDEF hicol: ds 2 ;default is 4 columns: 0,1,2,3 hirow: ds 2 ;default is 16 rows (0....15) dumaplen: ds 2 ;default is (3+1)*(15+1) maxdu: ds 2 ;transient d/u data curloc: ds 2 ;NDR entry pointer ;********************************************** end