A method of controlling a first-in-first-out (FIFO) buffer circuit to manage the bi-directional transfer of data blocks between first and second asynchronous data handling systems, the FIFO buffer circuit including a FIFO buffer, a read-pointer register, a write-pointer register, and a buffer status register, the FIFO buffer circuit being coupled with the first and the second asynchronous systems, the FIFO buffer being further coupled with a bank of FIFO buffer address registers, the bank of FIFO buffer address registers including a first pair and a second pair of registers, the first pair of registers having a first start-write register and a first end-write register, the second pair of registers having a second start-write register and a second end-write register, the method comprising the steps of:
- A. enabling the first asynchronous system to write a first data block to the FIFO buffer;
- B. enabling a first read/write process control circuit for permitting a data segment of the first data block to be written to the FIFO buffer;
- C. determining if there is space available in the FIFO buffer for the data of the first data block to be written;
- D. saving a start-write address associated with the beginning of the first data block written to the FIFO buffer;
- E. writing the first data block to the FIFO buffer;
- F. incrementing the write-pointer address register as each data segment of the first data block is written to the FIFO buffer;
- G. detecting and saving an end-write address associated with the ending of the first data block written to the FIFO buffer, wherein the start-write address and the end-write address define the beginning and ending addresses of the first data block written to the FIFO buffer for enabling the FIFO buffer to accommodate more data blocks than the first data block simultaneously without data overlap;
- and
- H. determining if the first asynchronous system is being commanded to write another data block to the FIFO buffer, and if so, then repeating steps A through F, and if not, then ending.