| Zeile 92: | Zeile 92: | ||
|} | |} | ||
| − | * IOC (Interrupt On Completion): Wenn gesetzt, so sendet das Gerät ein Interrupt, wenn dieser Buffer abgespielt wurde | + | * IOC (Interrupt On Completion): Wenn gesetzt, so sendet das Gerät ein Interrupt, wenn dieser Buffer abgespielt wurde. |
* BUP (Buffer Underrun Policy): Dieses Bit wird dann wichtig, wenn dieser Buffer der letzte abzuspielende oder der nächste Buffer noch nicht bereit ist: Ist das Bit dann nicht gesetzt, so wird nach dem Abspielen das letzte Sample dieses Buffers gehalten, ist es gesetzt, so wird "0" gesendet. Typischerweise ist es beim letzten abzuspielenden Buffer gesetzt. | * BUP (Buffer Underrun Policy): Dieses Bit wird dann wichtig, wenn dieser Buffer der letzte abzuspielende oder der nächste Buffer noch nicht bereit ist: Ist das Bit dann nicht gesetzt, so wird nach dem Abspielen das letzte Sample dieses Buffers gehalten, ist es gesetzt, so wird "0" gesendet. Typischerweise ist es beim letzten abzuspielenden Buffer gesetzt. | ||
| Zeile 139: | Zeile 139: | ||
outl(nabmbar + PORT_NABM_POBDBAR, (uint32_t)/*Physische Adresse von BufDescList*/); | outl(nabmbar + PORT_NABM_POBDBAR, (uint32_t)/*Physische Adresse von BufDescList*/); | ||
outb(nabmbar + PORT_NABM_POLVI, final); | outb(nabmbar + PORT_NABM_POLVI, final); | ||
| − | outb(nabmbar + PORT_NABM_POCONTROL, | + | outb(nabmbar + PORT_NABM_POCONTROL, 0x15); //Abspielen, und danach auch Interrupt generieren!</c> |
Funktioniert unter QEMU 0.10.0 und VirtualBox 2.1.4... Im Speicher müssen, wie oben gesagt, 16-Bit-Stereosamples mit einer Samplerate von 44,1 kHz (oder was ihr auch immer eingestellt habt), stehen. | Funktioniert unter QEMU 0.10.0 und VirtualBox 2.1.4... Im Speicher müssen, wie oben gesagt, 16-Bit-Stereosamples mit einer Samplerate von 44,1 kHz (oder was ihr auch immer eingestellt habt), stehen. | ||