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 / ENTERPRS / CPM / UTILS / A / ARC20.ARC / ARCMACS.ARC / FGETC.MAC < prev    next >
Text File  |  1989-10-25  |  1KB  |  68 lines

  1. ; FGETC f}r Turbo-ARC, TR 251089
  2. ; benutzt Unterprogramme aus Turbo-Library! (nur f}r Turbo-3.00A)
  3.     .z80
  4.     extrn    f,idummy
  5.  
  6.     ld    de,(f)
  7.     ld    hl,109h
  8.     add    hl,de        ; Zeiger auf FEOF
  9.     bit    0,(hl)
  10.     ld    hl,0
  11.     ret    nz        ; FEOF=true --> FGETC:=0
  12.     ld    hl,104h
  13.     add    hl,de        ; Zeiger auf ACTPOS
  14.     ld    a,(hl)
  15.     or    a
  16.     jr    nz,noread    ; ACTPOS.B0>0 : nichts lesen
  17.     ld    hl,idummy
  18.     ld    (0E6h),hl    ; Zeiger f}r Result setzen
  19.     ld    hl,109h
  20.     add    hl,de        ; Zeiger auf FEOF, DE zeigt auf BUFF
  21.     ld    bc,2        ; 2 Sektoren versuchen zu lesen
  22.     ld    a,21h        ; File-I/O-Funktion
  23.     call    1AFDh        ; Turbo-LIB : BLOCKREAD
  24.     call    201Bh        ; Turbo-LIB : I/O-ERROR ?
  25.     ld    de,(f)        ; DE zeigt wieder auf F
  26. noread:    ld    hl,104h
  27.     add    hl,de        ; Zeiger auf ACTPOS
  28.     push    hl
  29.     ld    l,(hl)
  30.     ld    h,0        ; ACTPOS.B0 in HL
  31.     add    hl,de
  32.     ld    l,(hl)
  33.     ld    h,0        ; Pufferinhalt in HL
  34.     ex    (sp),hl        ; retten, ^ACTPOS in HL
  35.     inc    (hl)
  36.     jr    nz,incok
  37.     inc    hl
  38.     inc    (hl)
  39.     jr    nz,incok
  40.     inc    hl
  41.     inc    (hl)        ; 24-Bit Increment
  42. incok:    ld    hl,104h
  43.     add    hl,de
  44.     ld    b,h
  45.     ld    c,l        ; BC = ^ACTPOS
  46.     ld    hl,100h
  47.     add    hl,de        ; HL = ^FSIZE
  48.     ld    a,(bc)
  49.     sub    (hl)
  50.     inc    bc
  51.     inc    hl
  52.     ld    a,(bc)
  53.     sbc    a,(hl)
  54.     inc    bc
  55.     inc    hl
  56.     ld    a,(bc)
  57.     sbc    a,(hl)        ; CY=1 wenn ACTPOS < FSIZE
  58.     ccf            ; CY=1 wenn ACTPOS >= FSIZE
  59.     ld    a,0
  60.     rla            ; A = (ACTPOS>=FSIZE)
  61.     ld    hl,108h
  62.     add    hl,de
  63.     ld    (hl),a        ; FEOF speichern
  64.     pop    hl        ; Ergebnis (Byte aus Puffer) in HL
  65.     ret
  66.  
  67.     end
  68.