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 >
Wrap
Text File
|
1989-10-25
|
1KB
|
68 lines
; FGETC f}r Turbo-ARC, TR 251089
; benutzt Unterprogramme aus Turbo-Library! (nur f}r Turbo-3.00A)
.z80
extrn f,idummy
ld de,(f)
ld hl,109h
add hl,de ; Zeiger auf FEOF
bit 0,(hl)
ld hl,0
ret nz ; FEOF=true --> FGETC:=0
ld hl,104h
add hl,de ; Zeiger auf ACTPOS
ld a,(hl)
or a
jr nz,noread ; ACTPOS.B0>0 : nichts lesen
ld hl,idummy
ld (0E6h),hl ; Zeiger f}r Result setzen
ld hl,109h
add hl,de ; Zeiger auf FEOF, DE zeigt auf BUFF
ld bc,2 ; 2 Sektoren versuchen zu lesen
ld a,21h ; File-I/O-Funktion
call 1AFDh ; Turbo-LIB : BLOCKREAD
call 201Bh ; Turbo-LIB : I/O-ERROR ?
ld de,(f) ; DE zeigt wieder auf F
noread: ld hl,104h
add hl,de ; Zeiger auf ACTPOS
push hl
ld l,(hl)
ld h,0 ; ACTPOS.B0 in HL
add hl,de
ld l,(hl)
ld h,0 ; Pufferinhalt in HL
ex (sp),hl ; retten, ^ACTPOS in HL
inc (hl)
jr nz,incok
inc hl
inc (hl)
jr nz,incok
inc hl
inc (hl) ; 24-Bit Increment
incok: ld hl,104h
add hl,de
ld b,h
ld c,l ; BC = ^ACTPOS
ld hl,100h
add hl,de ; HL = ^FSIZE
ld a,(bc)
sub (hl)
inc bc
inc hl
ld a,(bc)
sbc a,(hl)
inc bc
inc hl
ld a,(bc)
sbc a,(hl) ; CY=1 wenn ACTPOS < FSIZE
ccf ; CY=1 wenn ACTPOS >= FSIZE
ld a,0
rla ; A = (ACTPOS>=FSIZE)
ld hl,108h
add hl,de
ld (hl),a ; FEOF speichern
pop hl ; Ergebnis (Byte aus Puffer) in HL
ret
end