Diff for /xmil/io/dmac.h between versions 1.5 and 1.7

version 1.5, 2004/08/14 12:16:17 version 1.7, 2008/06/02 20:07:31
Line 1 Line 1
   
   #define DMAS_STOIC
   
 #if defined(BYTESEX_LITTLE)  #if defined(BYTESEX_LITTLE)
 typedef union {  typedef union {
         struct {          struct {
                 UINT8   l;                  UINT8   flag;
                 UINT8   h;                  UINT8   padding;
         }               b;                  UINT8   addrl;
         UINT16  w;                  UINT8   addrh;
 } DMAPAIR;          }       b;
           struct {
                   UINT8   flag;
                   UINT8   padding;
                   UINT16  addr;
           }       w;
   } DMACNT;
   
   typedef union {
           struct {
                   UINT8   ll;
                   UINT8   lh;
                   UINT8   nl;
                   UINT8   nh;
           }       b;
           struct {
                   UINT16  l;
                   UINT16  n;
           }       w;
   } DMALENG;
   
   typedef union {
           struct {
                   UINT8   al;
                   UINT8   ah;
                   UINT8   bl;
                   UINT8   bh;
           }       b;
           struct {
                   UINT16  a;
                   UINT16  b;
           }       w;
   } DMAADDR;
 #else  #else
 typedef union {  typedef union {
         struct {          struct {
                 UINT8   h;                  UINT8   flag;
                 UINT8   l;                  UINT8   padding;
         }               b;                  UINT8   addrh;
         UINT16  w;                  UINT8   addrl;
 } DMAPAIR;          }       b;
           struct {
                   UINT8   flag;
                   UINT8   padding;
                   UINT16  addr;
           }       w;
   } DMACNT;
   
   typedef union {
           struct {
                   UINT8   lh;
                   UINT8   ll;
                   UINT8   nh;
                   UINT8   nl;
           }       b;
           struct {
                   UINT16  l;
                   UINT16  n;
           }       w;
   } DMALENG;
   typedef union {
           struct {
                   UINT8   ah;
                   UINT8   al;
                   UINT8   bh;
                   UINT8   bl;
           }       b;
           struct {
                   UINT16  a;
                   UINT16  b;
           }       w;
   } DMAADDR;
 #endif  #endif
   
   
   #if defined(DMAS_STOIC)
   
   enum {
           DMAF_WORKING            = 0x01,
           DMAF_INCREMENT          = 0x08,
           DMAF_MACH                       = 0x10,
           DMAF_ENDB                       = 0x20
   };
   
   typedef struct {
           UINT8   flag;
           UINT8   WR0;
           UINT8   mode;                           /* DMA_MODE */
           UINT8   INT_ENBL;
   
           UINT8   WR4;
           UINT8   WR5;
           UINT8   MASK_BYT;
           UINT8   MACH_BYT;
   
           DMACNT  cnt_a;
           DMACNT  cnt_b;
   
           DMALENG leng;
           DMAADDR addr;
   
           UINT8   enable;                         /* DMA_ENBL */
           UINT8   ready;                          /* DMA_REDY */
           UINT8   RR_MSK;
           UINT8   RR;
   
           UINT8   INT_FLG;
           UINT8   INT_PLS;
           UINT8   INT_VCT;
           UINT8   dummydat;
   
           UINT    wcnt;
           UINT    wptr;
           UINT    rcnt;
           UINT    rptr;
           UINT8   wtbl[8];
           UINT8   rtbl[8];
   } DMAC;
   
   #else
   
 typedef struct {  typedef struct {
         UINT8   working;          UINT8   working;
         UINT8   increment;          UINT8   increment;
   
         UINT8   enable;                         // DMA_ENBL          UINT8   mode;                           /* DMA_MODE */
         UINT8   ready;                          // DMA_REDY          UINT8   __cmd;                          /* DMA_CMND */
         UINT8   mode;                           // DMA_MODE  
         UINT8   cmd;                            // DMA_CMND          UINT8   enable;                         /* DMA_ENBL */
           UINT8   ready;                          /* DMA_REDY */
   
         UINT8   INT_ENBL;          UINT8   INT_ENBL;
         UINT8   INT_FLG;          UINT8   INT_FLG;
Line 39  typedef struct { Line 152  typedef struct {
         UINT8   RR_MSK;          UINT8   RR_MSK;
         UINT8   RR;          UINT8   RR;
   
           UINT8   WR0;
   #if 0
           UINT8   WR1;
           UINT8   WR2;
           UINT8   WR3;
   #endif  /* 0 */
           UINT8   WR4;
           UINT8   WR5;
         UINT8   dummydat;          UINT8   dummydat;
         UINT8   padding[3];  #if 0
           UINT8   padding;
         DMAPAIR ADR_A;  #endif  /* 0 */
         DMAPAIR ADR_B;  
         DMAPAIR BYT_L;          DMACNT  cnt_a;
           DMACNT  cnt_b;
         DMAPAIR CNT_A;  
         DMAPAIR CNT_B;          DMALENG leng;
         DMAPAIR BYT_N;          DMAADDR addr;
   
         UINT8   WR[8];          UINT    wcnt;
           UINT    wptr;
         UINT    WR_CNT;          UINT    rcnt;
         UINT    WR_OFF;          UINT    rptr;
         UINT    RR_CNT;          UINT8   wtbl[8];
         UINT    RR_OFF;          UINT8   rtbl[8];
         UINT8   WR_TBL[16];  
         UINT8   RR_TBL[16];  
 } DMAC;  } DMAC;
   
   #endif
   
   
 #ifdef __cplusplus  #ifdef __cplusplus
 extern "C" {  extern "C" {
Line 68  extern "C" { Line 189  extern "C" {
 void dmac_sendready(BRESULT ready);  void dmac_sendready(BRESULT ready);
 BRESULT ieitem_dmac(UINT id);  BRESULT ieitem_dmac(UINT id);
   
 void IOOUTCALL dmac_o(UINT port, REG8 dat);                     // x1_dma_w  void IOOUTCALL dmac_o(UINT port, REG8 dat);
 REG8 IOINPCALL dmac_i(UINT port);                                       // x1_dma_r  REG8 IOINPCALL dmac_i(UINT port);
   
 void dmac_reset(void);  void dmac_reset(void);
   

Removed from v.1.5  
changed lines
  Added in v.1.7


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