.PAGE 'REL1'
;***********************************
;*
;*     ROUTINE: NXTREC
;*
;*
;*
;*
;*
;***********************************
NXTREC
 LDA #GETFLG+OVRFLO
 JSR CLRFLG
;
 LDA #LRF
 JSR TSTFLG
 BNE NXTR40
;
 LDX LINDX
 INC RECL,X ; GOTO NEXT RECORD #
 BNE NXTR15
 INC RECH,X
;
NXTR15
 LDX LINDX
 LDA NR,X
 BEQ NXTR45 ;THERE IS A NR
;
 JSR GETPNT ; GET POINTER
 LDX LINDX ;TEST IF SAME BUFFER
 CMP NR,X
 BCC NXTR20 ; YES, BT<NR
;
 JSR NRBUF ; NO,NEXT BUFFER
;
NXTR20 LDX LINDX
 LDA NR,X
 JSR SETPNT ;ADVANCE TO NEXT REC
 LDA (BUFTAB,X) ;READ 1ST DAT BYTE
;
 STA DATA ;SAVE FOR READ CHANNEL
 LDA #GETFLG+OVRFLO
 JSR CLRFLG ; CLEAR GETFLG AND
 ; THE OVERFLOW FLAG
 JSR ADDNR ;ADVANCE NR
NXOUT
 PHA
 BCC NXTR30 ;NO BLOCK BOUNDARY
;
 LDA #0
 JSR DRDBYT ;CHECK TRACK LINK
 BNE NXTR30 ;NOT LAST BLOCK
;
 PLA
 CMP #2
 BEQ NXTR50
NXTR45
 LDA #LRF
 JSR SETFLG
NXTR40
 JSR GETPRE
 LDA BUFTAB,X
 STA LSTCHR,Y
 LDA #CR
 STA DATA
 RTS
;
NXTR50
 JSR NXTR35
 LDX LINDX
 LDA #0
 STA NR,X
 RTS
NXTR30
 PLA
NXTR35
 LDX LINDX
;*
 STA NR,X
 JMP SETLST
;*
;*
;**********************************
;*
;*
;*  NRBUF
;*
;*
;********************************
;*
;*
NRBUF ;READ TRK,SEC LINK
 JSR SETDRN
 JSR RDLNK
;
;
 JSR GAFLGS ; TEST IF DIRTY
 BVC NRBU50 ;CLEAN, DONT WRITE OUT
;
 JSR WRTOUT ;DIRTY, WRITE OUT
 JSR DBLBUF ;TOGGLE ACTIVE BUFFER
;
 LDA #2
 JSR SETPNT
 JSR TSTWRT ;TEST IF LSTJOB IS WRT
 BNE NRBU20 ;NOT A WRITE,BUFFER OK
;
 JSR RDAB ;READ IN NEEDED BUFFER
 JMP WATJOB ;WAIT AROUND TILL DONE
;
NRBU50 JSR DBLBUF ;TOGGLE ACT BUF
 JSR TSTWRT ;WAS LSTJOB A WRT?
 BNE NRBU70 ;NOT A WRITE
;
 JSR RDAB ;READ IN NEEDED BUFFER
 JSR WATJOB ;WAIT TILL DONE
;
NRBU70 ;READ TRK,SEC LINK
 JSR RDLNK ; TO DO A READ AHEAD
;
 LDA TRACK ;TEST IF LAST BUFFER
 BEQ NRBU20 ;YES,NO DBL BUFF TODO
;
 JSR DBLBUF ;START READ JOB ON THE
 JSR RDAB ;INACTIVE BUFFER
 JSR DBLBUF
;
NRBU20 RTS
;
 .END
