1 hour ago, m00dawg said:
I've been wondering about this - and perhaps should try to test this on my own, but since it's a buffer, bytes effectively "go away" right? As in, I can't just load the FIFO with 4kb one time and just keep triggering it (to play the same data)?
I haven't tested it, but on the information in the VERA Programmer Reference, it is indeed the case. It seems like it is a circular FIFO buffer, along the lines two indices without overflow, with he top index pointing to the first free slot, the bottom index pointing to the next slot to be consumed, if the two indices are equal, the buffer full bit is set and writes to the buffer are disallowed. The same subtraction result that tests for the two indices equal may also be tested for a difference of 1K bytes, which would trigger the low buffer interrupt if it is set.
IIUC, allowing the data to be re-used wouldn't be of much use anyway, even at quarter speed and with mono, 8-bit sound, so one byte per pulse, quarter speed is 12,207Hz, so 4K is about 1/3 of a second.
(Now, if there was a J1 in VERA, it could easily be programmed to play samples out of VERA's video RAM, but contention with the J1 for FPGA RAM access was why they dropped the original video FPGA in favor of the VERA design.)