1. A method for operating a system, the system comprising: a data processor, the data processor having at least one arithmetic-logic unit and at least one cache; a bus system connecting the data processor to a receiver, the receiver comprising at least one of an external memory and an external peripheral; the bus system comprising a buffer memory; the buffer memory having three associated pointers: i. a first pointer to point to the buffer from which data is output from the buffer; ii. a second pointer to point the buffer location to which data is input to the buffer; and iii. a third pointer to store the value of the first pointer at the start of a data transfer; wherein the method of operations comprises: a. storing transfer data in the buffer memory; b. transmitting data to the receiver; c. the receiver transmitting information as to whether a data transfer was successful or has failed; d. if the transfer has failed, repeating the transfer of data from the buffer position indicated by the third associated pointer by resetting the first pointer with the value of the third.