Diff for /xmil/io/ppi.c between versions 1.18 and 1.19

version 1.18, 2005/02/04 06:42:11 version 1.19, 2008/06/02 20:07:31
Line 4 Line 4
 #include        "iocore.h"  #include        "iocore.h"
   
   
 // ---- 8255 PPI〜  /* 8255 PPI〜 */
   
 static REG8 getportb(void) {  static REG8 getportb(void) {
   
Line 14  static REG8 getportb(void) { Line 14  static REG8 getportb(void) {
         SINT32  clock;          SINT32  clock;
 #endif  #endif
   
 //      if (subcpu.IBF) {  #if 0
 //              subcpu.IBF = 0;          if (subcpu.IBF) {
 //              ret |= 0x40;                                            // 1:SUB-CPU BUSY                  subcpu.IBF = 0;
 //      }                  ret |= 0x40;                                            /* 1:SUB-CPU BUSY */
 //      if (subcpu.OBF) {          }
 //              ret |= 0x20;                                            // 1:SUB-CPU Data empty          if (subcpu.OBF) {
 //      }                  ret |= 0x20;                                            /* 1:SUB-CPU Data empty */
           }
   #endif  /* 0 */
   
         ppib = iocore.s.ppib;          ppib = iocore.s.ppib;
         ret = ppib;          ret = ppib;
   
 //      ret |= cmt_test();                                              // THUNDER BALL          /* ret |= cmt_test(); */                                /* THUNDER BALL */
 //      /* -> */ ppib |= 0x01;  
   
         iocore.s.ppib = (UINT8)((ppib & (~0x40)) | 0x01);          iocore.s.ppib = (UINT8)((ppib & (~0x40)) | 0x01);
   
 //      ret |= cmt_read();          /* ret |= cmt_read(); */
   
 #if defined(MAINFRAMES_OLD)  #if defined(MAINFRAMES_OLD)
         clock = CPU_CLOCKCOUNT - iocore.e.framestartclock;          clock = CPU_CLOCKCOUNT - iocore.e.framestartclock;
         if (clock < iocore.e.dispclock) {          if (clock < iocore.e.dispclock) {
                 ret |= 0x80;                                            // 1:DISP                  ret |= 0x80;                                            /* 1:DISP */
         }          }
   
         // 実機の動きを見ると どうも 読み込んだらリセットされるようだ?          /* 実機の動きを見ると どうも 読み込んだらリセットされるようだ? */
         // 有効範囲が絞れるならそうすべき(VSYNCを取りこぼすソフトがある          /* 有効範囲が絞れるならそうすべき(VSYNCを取りこぼすソフトがある) */
         clock -= iocore.e.vsyncstart;          clock -= iocore.e.vsyncstart;
         if ((clock >= 0) && (clock < iocore.e.vpulseclock)) {          if ((clock >= 0) && (clock < iocore.e.vpulseclock)) {
                 ret |= 0x04;                                            // 1:V-SYNC                  ret |= 0x04;                                            /* 1:V-SYNC */
         }          }
 #endif  #endif
         return(ret);          return(ret);
Line 54  static void setportc(REG8 dat) { Line 55  static void setportc(REG8 dat) {
   
         modify = ppi.portc ^ dat;          modify = ppi.portc ^ dat;
         ppi.portc = dat;          ppi.portc = dat;
 //      cmt_write((REG8)(dat & 1));          /* cmt_write((REG8)(dat & 1)); */
         if ((modify & 0x20) && (!(dat & 0x20))) {          if ((modify & 0x20) && (!(dat & 0x20))) {
                 iocore.s.mode = 1;                  iocore.s.mode = 1;
 //              TRACEOUT(("iocore.s.mode = 1"));                  /* TRACEOUT(("iocore.s.mode = 1")); */
         }          }
         if (modify & 0x40) {          if (modify & 0x40) {
                 crtc_setwidth((REG8)(dat & 0x40));                  crtc_setwidth((REG8)(dat & 0x40));
Line 65  static void setportc(REG8 dat) { Line 66  static void setportc(REG8 dat) {
 }  }
   
   
 // ----  /* ---- */
   
 void IOOUTCALL ppi_o(UINT port, REG8 value) {  void IOOUTCALL ppi_o(UINT port, REG8 value) {
   
Line 106  REG8 IOINPCALL ppi_i(UINT port) { Line 107  REG8 IOINPCALL ppi_i(UINT port) {
   
         switch(port & 0x0f) {          switch(port & 0x0f) {
                 case 0:                  case 0:
                 //      if (!(ppi.mode & 0x10)) {  #if 0
                 //              return(ppi.porta);                          if (!(ppi.mode & 0x10)) {
                 //      }                                  return(ppi.porta);
                           }
   #endif  /* 0 */
                         return(ppi.porta);                          return(ppi.porta);
   
                 case 1:                  case 1:
Line 118  REG8 IOINPCALL ppi_i(UINT port) { Line 121  REG8 IOINPCALL ppi_i(UINT port) {
                         return(getportb());                          return(getportb());
   
                 case 2:                  case 2:
                 // mode?                          /* mode? */
                         return(ppi.portc);                          return(ppi.portc);
   
                 case 3:                  case 3:
Line 128  REG8 IOINPCALL ppi_i(UINT port) { Line 131  REG8 IOINPCALL ppi_i(UINT port) {
 }  }
   
   
 // ----  /* initialize & reset */
   
 void ppi_initialize(void) {  void ppi_initialize(void) {
   

Removed from v.1.18  
changed lines
  Added in v.1.19


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