Пример #1
0
float 
ReSID::readData()
{
	float value;
    
    /*
    static unsigned debugcnt = 0;
    if (debugcnt++ % 100 == 0)
        printf("ReSID::readData Ringbuffer: 0 | ... | r:%ld | ... | w->%ld | ... | %d\n",
               readBuffer - ringBuffer, writeBuffer - ringBuffer, bufferSize);
    */
    
    if (readBuffer == writeBuffer) {
        // fprintf(stderr, "SID RINGBUFFER UNDERFLOW (%ld)\n", readBuffer - ringBuffer);
        handleBufferException();
    }
    
    value = *readBuffer;
    
    if (readBuffer == endBuffer)
        readBuffer = ringBuffer;
    else 
        readBuffer++;

	return value;
}
Пример #2
0
void 
ReSID::writeData(float data)
{
    if (readBuffer == writeBuffer) {
        // fprintf(stderr, "SID RINGBUFFER OVERFLOW (%d)\n", writeBuffer - ringBuffer);
        handleBufferException();
    }

    *writeBuffer = data;
    
    if (writeBuffer == endBuffer)
        writeBuffer = ringBuffer;
    else 
        writeBuffer++;
}
Пример #3
0
float 
ReSID::readData()
{	
	float value;
    
    if (readBuffer == writeBuffer) {
        // fprintf(stderr, "SID RINGBUFFER UNDERFLOW (%d)\n", readBuffer - ringBuffer);
        handleBufferException();
    }

    value = *readBuffer;
    
    if (readBuffer == endBuffer)
        readBuffer = ringBuffer;
    else 
        readBuffer++;

	return value;
}
Пример #4
0
void 
ReSID::run()
{
    handleBufferException();
}