         .OUTPI ALFRES
         .ENTRY REACHR,IOEXIT
         .VIRT8 AX,IPTR
;Read_Char gets a data byte from the file. Carry set if eof
;
REACHR   LDA INBUFL ;Any data left ?
         ORA INBUFL+1
         BNE REA004  ;Yes, so just extract it
         LDA IEOF    ;Eof on file ?
         BPL REA002
REA001   SEC         ;Signal end of file
         RTS
REA002   LDA INBUFF
         STA ADR
         LDA INBUFF+1
         STA ADR+1
         LDA MAXBUF
         STA LEN
         LDA MAXBUF+1
         STA LEN+1
         LDX #D
         JSR BGET
         BPL REA003
         STY IEOF    ;Save error flag
         CPY #$88    ;Just eof?
         BNE REA008  ;Fatal I/O error
         LDA LEN
         ORA LEN+1   ;Get any data ?
         BEQ REA001  ;No, so exit
REA003   LDA LEN                ;SAVE NEW BUFFER LENGTH
         STA INBUFL
         LDA LEN+1
         STA INBUFL+1
         LDA LEN                ;UPDATE HEADER BLOCK
         CLC
         ADC LENGTH
         STA LENGTH
         LDA LEN+1
         ADC LENGTH+1
         STA LENGTH+1
         LDA #0
         ADC LENGTH+2
         STA LENGTH+2
         LDA INBUFF
         STA IPTR
         LDA INBUFF+1
         STA IPTR+1
REA004   LDY #0
         LDA (IPTR),Y
         STA AX
         CLC
         ADC CRC
         STA CRC
         LDA #0
         ADC CRC+1
         STA CRC+1
         LDA INBUFL
         BNE REA006
         DEC INBUFL+1
REA006   DEC INBUFL
         INC IPTR
         BNE REA007
         INC IPTR+1
REA007   CLC
         RTS
REA008   LDX #.LO.ERRM03
         LDY #.HI.ERRM03
         JSR SCRPRT
IOEXIT   PLA
         PLA
         PLA
         PLA
         JMP ALFXIT
