home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ZSYS / SIMTEL20 / SYSLIB / SLIB2.LBR / SLUREAD.Z80 < prev   
Text File  |  2000-06-30  |  1KB  |  66 lines

  1. ;
  2. ; LULIB Module: LUREAD
  3. ; Author: Richard Conn
  4. ; Date: 8 August 85
  5. ; LULIB Version: 1.0
  6. ; LULIB Module Version: 1.0
  7. ;
  8.     public    luread
  9.  
  10. ;
  11. ;    LUREAD reads the next block from the file opened by LUOPEN
  12. ; within the current library.
  13. ;    On input, DE = ptr to LUD
  14. ;    On output, A is return code
  15. ;        0    OK
  16. ;        0FFH    End of File
  17. ;
  18. ;    Note: DMA Address may be set for reads
  19. ;
  20.     ext    r$read
  21.  
  22.     .in    luddef
  23.  
  24. luread:
  25.     push    hl        ; save regs
  26.     push    de
  27.     push    bc
  28.     ld    hl,ludcnt    ; pt to count in LUD
  29.     add    hl,de
  30.     ld    c,(hl)        ; get length
  31.     inc    hl
  32.     ld    b,(hl)
  33.     ld    a,c        ; check for zero
  34.     or    b
  35.     jr    z,eof
  36.     dec    bc        ; decrement
  37.     ld    (hl),b        ; replace
  38.     dec    hl
  39.     ld    (hl),c
  40.     dec    hl        ; pt to index
  41.     ld    b,(hl)        ; get index into BC
  42.     dec    hl
  43.     ld    c,(hl)
  44.     push    bc        ; save index
  45.     inc    bc        ; increment index for next read
  46.     ld    (hl),c        ; save new index
  47.     inc    hl
  48.     ld    (hl),b
  49.     ld    de,11+3        ; pt to FCB
  50.     add    hl,de
  51.     ex    de,hl        ; DE = FCB
  52.     pop    hl        ; HL = index
  53.     call    r$read        ; read block
  54.     jr    nz,eof        ; any error?  if not, A=0
  55. done:
  56.     pop    bc        ; restore regs
  57.     pop    de
  58.     pop    hl
  59.     or    a        ; set flags
  60.     ret
  61. eof:
  62.     or    0ffh        ; set 0
  63.     jr    done
  64.  
  65.     end
  66.