/* Copyright holders: Sarah Walker see COPYING for more details */ #include "ibm.h" uint8_t dac,dac2; uint8_t dacctrl; int lptfifo; uint8_t dssbuffer[16]; int dssstart=0,dssend=0; int dssmode=0; void writedac(uint16_t addr, uint8_t val) { if (dssmode) dac2=val; else dac=val; } void writedacctrl(uint16_t addr, uint8_t val) { // printf("Write DAC ctrl %02X %i\n",val,lptfifo); if (dacctrl&8 && !(val&8) && (lptfifo!=16)) { // dac=dac2; dssbuffer[dssend++]=dac2; dssend&=15; lptfifo++; } dacctrl=val; } uint8_t readdacfifo() { if (lptfifo==16) return 0x40; return 0; } void pollss() { if (lptfifo) { dac=dssbuffer[dssstart++]; dssstart&=15; lptfifo--; } } int16_t dacbuffer[SOUNDBUFLEN+20]; int dacbufferpos=0; void getdacsamp() { if (dacbufferposSOUNDBUFLEN) dacbufferpos=SOUNDBUFLEN; for (c=0;c