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

  1. ;Library Name: ARRAYLIB
  2. ;Module Name: NDRACCESS
  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 ndraccess
  36. ;This module contains the following routines:
  37.     public getndre,gtnxtdu
  38. ;..and uses the following external routines:
  39.     ext getndr
  40.  
  41. ;**********************************************
  42.  
  43. getndre:
  44. ;get address of system NDR with error checking
  45.     call    getndr
  46.     or    a,a
  47.     ld    a,4    ;error code - No NDR
  48.     scf        ;in case of error
  49.     ret    z    ;..null return is error
  50.     ld    a,(HL)    ;bet 1st byte of NDR
  51.     or    a,a    ;if null, NDR is empty
  52.     ld    a,5    ;error code - empty NDR
  53.     scf        ;indicate error
  54.     ret    z    ;return with error code, Cy set
  55.     xor    a    ;else, reset cy
  56.     ret        ;normal return, no error
  57.  
  58. ;**********************************************
  59.  
  60. gtnxtdu:
  61. ;get and return in BC the word at the address
  62. ;in curloc:, then increment that address by 18.
  63. ;The addresses are presumed to be pointers into
  64. ;a system named directory structure. 
  65. ;curloc must be initialized on entry.
  66. ;on normal exit,
  67. ;    A > 0, Flags = NZ,NC
  68. ;    BC = Disk, User from NDR
  69. ;    HL = pointer to next NDR entry
  70. ;on exit with pointer beyond valid NDR entries,
  71. ;    A = 0, Flags = Z,NC
  72. ;    BC = 0,(undefined)
  73. ;    HL = undefined
  74. ;Error exit:
  75. ;    A = 0, Flags = Z, C
  76. ;    HL = address of curloc:
  77. ;registers affected: AF, BC, HL
  78.  
  79.     ld    hl,(curloc)    ;pick up pointer to data
  80.     ld    a,h
  81.     or    a,a        ;unititilized of null
  82.     jr    z,uninit
  83.  
  84.     push    de
  85.     ld    b,(hl)        ;get drive (1..16)
  86.     ld    a,b
  87.     or    a,a        ;test for null
  88.     jr    z,nomore
  89.  
  90.     inc    hl
  91.     ld    c,(hl)        ;get user number(0..31)
  92.     ld    de,17        ;distance to next entry
  93.     add    hl,de
  94.     ld    (curloc),hl    ;ready for next call
  95.     pop    de
  96.     ret
  97.  
  98. nomore:
  99.     ld    a,(curloc+1)    ;mark curloc invalid
  100.     pop    de
  101.     ret
  102.  
  103. uninit:    ld    hl,curloc    ;return place to store pointer
  104.     scf            ;set Cy to show error
  105.     ret
  106.  
  107. ;**********************************************
  108.     COMMON /ARDAT/
  109.  
  110. ;COMMON data area - contains default values for a 64
  111. ;byte array useful for disk/user bitmapping.
  112. bitmap:    dw    0    ;..filled in by ARRAYDEF
  113. hicol:    dw    3    ;4 columns: 0,1,2,3
  114. hirow:    dw    15    ;16 rows (0....15)
  115. dumaplen:
  116.     dw    64    ;(3+1)*(15+1)
  117.  
  118. maxdu:    dw    0    ;transient d/u data
  119. curloc:    dw    0    ;NDR entry pointer
  120.  
  121. ;**********************************************
  122.  
  123.     end
  124.