Diff for /np2/cbus/cs4231io.c between versions 1.1 and 1.8

version 1.1, 2003/10/16 17:58:01 version 1.8, 2004/06/02 11:02:53
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "memory.h"  #include        "cpucore.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
 #include        "cs4231io.h"  #include        "cs4231io.h"
Line 7 Line 7
 #include        "fmboard.h"  #include        "fmboard.h"
   
   
 static void IOOUTCALL csctrl_oc24(UINT port, BYTE dat) {  static const UINT8 cs4231dma[] = {0xff,0x00,0x01,0x03,0xff,0xff,0xff,0xff};
   static const UINT8 cs4231irq[] = {0xff,0x03,0x06,0x0a,0x0c,0xff,0xff,0xff};
   
   
   static void IOOUTCALL csctrl_oc24(UINT port, REG8 dat) {
   
         cs4231.portctrl = dat;          cs4231.portctrl = dat;
         (void)port;          (void)port;
 }  }
   
 static void IOOUTCALL csctrl_oc2b(UINT port, BYTE dat) {  static void IOOUTCALL csctrl_oc2b(UINT port, REG8 dat) {
   
         if ((cs4231.portctrl & 0x2f) == 0x20) {          if ((cs4231.portctrl & 0x2f) == 0x20) {
                 cs4231.port &= 0xff00;                  cs4231.port &= 0xff00;
Line 22  static void IOOUTCALL csctrl_oc2b(UINT p Line 26  static void IOOUTCALL csctrl_oc2b(UINT p
         (void)port;          (void)port;
 }  }
   
 static void IOOUTCALL csctrl_oc2d(UINT port, BYTE dat) {  static void IOOUTCALL csctrl_oc2d(UINT port, REG8 dat) {
   
         if ((cs4231.portctrl & 0x2f) == 0x20) {          if ((cs4231.portctrl & 0x2f) == 0x20) {
                 cs4231.port &= 0x00ff;                  cs4231.port &= 0x00ff;
Line 31  static void IOOUTCALL csctrl_oc2d(UINT p Line 35  static void IOOUTCALL csctrl_oc2d(UINT p
         (void)port;          (void)port;
 }  }
   
 static BYTE IOINPCALL csctrl_ic24(UINT port) {  static REG8 IOINPCALL csctrl_ic24(UINT port) {
   
         (void)port;          (void)port;
         return(0x80 | cs4231.portctrl);          return(0x80 | cs4231.portctrl);
 }  }
   
 static BYTE IOINPCALL csctrl_ic2b(UINT port) {  static REG8 IOINPCALL csctrl_ic2b(UINT port) {
   
         switch(cs4231.portctrl & 0x0f) {          switch(cs4231.portctrl & 0x0f) {
                 case 0x00:                  case 0x00:
Line 53  static BYTE IOINPCALL csctrl_ic2b(UINT p Line 57  static BYTE IOINPCALL csctrl_ic2b(UINT p
         return(0xff);          return(0xff);
 }  }
   
 static BYTE IOINPCALL csctrl_ic2d(UINT port) {  static REG8 IOINPCALL csctrl_ic2d(UINT port) {
   
         switch(cs4231.portctrl & 0x0f) {          switch(cs4231.portctrl & 0x0f) {
                 case 0x00:                  case 0x00:
Line 74  static BYTE IOINPCALL csctrl_ic2d(UINT p Line 78  static BYTE IOINPCALL csctrl_ic2d(UINT p
   
 void cs4231io_reset(void) {  void cs4231io_reset(void) {
   
         cs4231.enable = 0;          cs4231.enable = 1;
         cs4231.port = 0xffff;          cs4231.port = 0xf40;
           cs4231.adrs = 0x22;
           cs4231.dmairq = cs4231irq[(cs4231.adrs >> 3) & 7];
           cs4231.dmach = cs4231dma[cs4231.adrs & 7];
           if (cs4231.dmach != 0xff) {
                   dmac_attach(DMADEV_CS4231, cs4231.dmach);
           }
           TRACEOUT(("CS4231 - IRQ = %d", cs4231.dmairq));
           TRACEOUT(("CS4231 - DMA channel = %d", cs4231.dmach));
 }  }
   
 void cs4231io_bind(void) {  void cs4231io_bind(void) {
   
         cs4231.enable = 1;  
         cs4231.port = 0xf40;  
         cs4231.adrs = 0x21;  
         cs4231.dmach = 0;  
         cs4231.dmairq = 0x0c;  
         cs4231.step = 22050;  
         sound_streamregist(&cs4231, (SOUNDCB)cs4231_getpcm);          sound_streamregist(&cs4231, (SOUNDCB)cs4231_getpcm);
   
         iocore_attachout(0xc24, csctrl_oc24);          iocore_attachout(0xc24, csctrl_oc24);
         iocore_attachout(0xc2b, csctrl_oc2b);          iocore_attachout(0xc2b, csctrl_oc2b);
         iocore_attachout(0xc2d, csctrl_oc2d);          iocore_attachout(0xc2d, csctrl_oc2d);
Line 96  void cs4231io_bind(void) { Line 101  void cs4231io_bind(void) {
         iocore_attachinp(0xc2d, csctrl_ic2d);          iocore_attachinp(0xc2d, csctrl_ic2d);
 }  }
   
 void IOOUTCALL cs4231io_w8(UINT port, BYTE value) {  void IOOUTCALL cs4231io_w8(UINT port, REG8 value) {
   
         switch(port & 0x0f) {          switch(port & 0x0f) {
                 case 0:                  case 0:
 #if 0  
                         cs4231.adrs = value;                          cs4231.adrs = value;
                         cs4231.dmairq = dmairq[(value >> 3) & 3];                          cs4231.dmairq = cs4231irq[(value >> 3) & 7];
                         cs4231.dmach = dmach[value & 7];                          cs4231.dmach = cs4231dma[value & 7];
                           dmac_detach(DMADEV_CS4231);
                           if (cs4231.dmach != 0xff) {
                                   dmac_attach(DMADEV_CS4231, cs4231.dmach);
   #if 0
                                   if (cs4231.sdc_enable) {
                                           dmac.dmach[cs4231.dmach].ready = 1;
                                           dmac_check();
                                   }
 #endif  #endif
                           }
                         break;                          break;
   
                 case 4:                  case 4:
Line 118  void IOOUTCALL cs4231io_w8(UINT port, BY Line 131  void IOOUTCALL cs4231io_w8(UINT port, BY
                 case 6:                  case 6:
                         cs4231.intflag = 0;                          cs4231.intflag = 0;
                         break;                          break;
   
                   case 7:
                           cs4231_datasend(value);
                           break;
         }          }
 }  }
   
 BYTE IOINPCALL cs4231io_r8(UINT port) {  REG8 IOINPCALL cs4231io_r8(UINT port) {
   
         switch(port & 0x0f) {          switch(port & 0x0f) {
                 case 0:                  case 0:

Removed from v.1.1  
changed lines
  Added in v.1.8


RetroPC.NET-CVS <cvs@retropc.net>