home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / jsage / znode3 / z3util / array10b.lbr / ARRAY5.ZZ0 / ARRAY5.Z80
Encoding:
Text File  |  1993-06-07  |  2.8 KB  |  86 lines

  1. ;Library Name: ARRAYLIB
  2. ;Module Name: USENDR
  3. ;Author: Al Hawley
  4. ;Date: 06 Mar 1987
  5. ;Version number: 1.0a
  6. ;Previous version: 1.0 dated 4 March 1987
  7.  
  8. ;Version History:
  9.     
  10. ;Program Function: ARRAYLIB is a collection of subroutines which
  11. ;    implement the management of byte arrays in programs written
  12. ;    for Z80 or HD64180 based computers. This module is one of the
  13. ;    set, and may require the presence of others.
  14.  
  15. ;***************************************************
  16. ;        COPYRIGHT NOTICE
  17. ;ARRAYLIB is copyright by A. E. Hawley on March 4, 1987.
  18. ;It may be freely distributed, but it must not be sold 
  19. ;either separately or as part of a package without the 
  20. ;written consent of the author.  The author may be reached 
  21. ;via electronic mail at the Ladera Z-Node in Los Angeles,
  22. ;213-670-9465, or by U.S. Mail at:
  23. ;
  24. ;    6032 Chariton Ave.
  25. ;    Los Angeles, CA. 90056
  26. ;    Voice Phone: 213-649-3575
  27. ;
  28. ;        RELEASE NOTICE
  29. ;ARRAYLIB is released for beta test through the Z-system 
  30. ;users group Z-SIG.  It may be reached through the 
  31. ;Lillipute Z-Node in Chicago, 312-649-1730.
  32.  
  33. ;***************************************************
  34.  
  35.     name usendr
  36. ;This module contains the following routines:
  37.     public arrndrdu
  38. ;..and uses the following external routines:
  39.     ext arrfr0$e,arxltbit,arrxltrc,arsetbit
  40.     ext getndre,gtnxtdu
  41.  
  42. arrndrdu:
  43. ;initialize a 64 byte array from the drive-user
  44. ;assignments in the system named directory
  45. ;the array must have been previously defined by
  46. ;a call to ARRAYDEF. only those bit positions in the
  47. ;array are set which correspond to d/u entries
  48. ;found in the current ndr. all others are reset.
  49.  
  50.     xor    a        ;make null for...
  51.     call    arrfr0$e    ;init array to nulls
  52.     ret    c        ;ret if error, code in A
  53.     call    getndre        ;return pointer to NDR in HL
  54.     ret    c        ;ret if error, code in A
  55.     ld    (curloc),hl    ;pass it to NDR access routine
  56.  
  57. ndrdu1:    call    gtnxtdu        ;retrieve next DU from NDR
  58.     ret    z        ;return if no more entries
  59.     dec    b        ;convert drive(1-16) to Row(0-15)
  60.  
  61.     call    arxltbit    ;->row, col, offset in e
  62.     ret    c        ;ret if error, code in A
  63.     call    arrxltrc    ;r,c -> addr in hl
  64.     ret    c        ;ret if error, code in A
  65.     ld    a,e        ;get bit offset
  66.     call    arsetbit    ;set the bit for drv/user
  67.     jr    ndrdu1        ;continue 'til no more entries
  68.  
  69. ;**********************************************
  70.     COMMON /ARDAT/
  71.  
  72. ;COMMON data area - contains default values for a 64
  73. ;byte array useful for disk/user bitmapping.
  74. bitmap:    dw    0    ;..filled in by ARRAYDEF
  75. hicol:    dw    3    ;4 columns: 0,1,2,3
  76. hirow:    dw    15    ;16 rows (0....15)
  77. dumaplen:
  78.     dw    64    ;(3+1)*(15+1)
  79.  
  80. maxdu:    dw    0    ;transient d/u data
  81. curloc:    dw    0    ;NDR entry pointer
  82.  
  83. ;**********************************************
  84.  
  85.     end
  86.