Diff for /xmil/io/ppi.c between versions 1.14 and 1.17

version 1.14, 2004/08/13 02:16:33 version 1.17, 2004/08/18 08:08:13
Line 21  static REG8 getportb(void) { Line 21  static REG8 getportb(void) {
         if (clock < crtc.e.dispclock) {          if (clock < crtc.e.dispclock) {
                 ret |= 0x80;                                            // 1:DISP                  ret |= 0x80;                                            // 1:DISP
         }          }
   
           // 実機の動きを見ると どうも 読み込んだらリセットされるようだ?
           // 有効範囲が絞れるならそうすべき(VSYNCを取りこぼすソフトがある
         clock -= crtc.e.vsyncstart;          clock -= crtc.e.vsyncstart;
         if ((clock >= 0) && (clock < crtc.e.vpulseclock)) {          if ((clock >= 0) && (clock < crtc.e.vpulseclock)) {
                 ret |= 0x04;                                            // 1:V-SYNC                  ret |= 0x04;                                            // 1:V-SYNC
Line 41  static REG8 getportb(void) { Line 44  static REG8 getportb(void) {
   
 static void setportc(REG8 dat) {  static void setportc(REG8 dat) {
   
         REG8    oldc;          REG8    modify;
         UINT8   xl;  
   
         oldc = ppi.portc;          modify = ppi.portc ^ dat;
         if (crtc.s.reg[CRTCREG_HDISP] == 40) {  
                 oldc |= 0x40;  
         }  
         else {  
                 oldc &= ~0x40;  
         }  
         ppi.portc = dat;          ppi.portc = dat;
   
 //      cmt_write((REG8)(dat & 1));  //      cmt_write((REG8)(dat & 1));
         if ((oldc & 0x20) && (!(dat & 0x20))) {          if ((modify & 0x20) && (!(dat & 0x20))) {
                 iocore.s.mode = 1;                  iocore.s.mode = 1;
         }          }
           if (modify & 0x40) {
                   crtc_setwidth((REG8)(dat & 0x40));
           }
   #if 0
         xl = ((dat & 0x40)?40:80);          xl = ((dat & 0x40)?40:80);
         if (crtc.s.reg[CRTCREG_HDISP] != xl) {          if (crtc.s.reg[CRTCREG_HDISP] != xl) {
                 crtc.s.reg[CRTCREG_HDISP] = (UINT8)xl;                  crtc.s.reg[CRTCREG_HDISP] = (UINT8)xl;
                 crtc_bankupdate();                  crtc_bankupdate();
                 scrnallflash = 1;                  scrnallflash = 1;
         }          }
   #endif
 }  }
   
   
Line 119  REG8 IOINPCALL ppi_i(UINT port) { Line 119  REG8 IOINPCALL ppi_i(UINT port) {
                         return(getportb());                          return(getportb());
   
                 case 2:                  case 2:
 #if 1                  // mode?
                         if (crtc.s.reg[CRTCREG_HDISP] == 40) {  
                                 ppi.portc |= 0x40;  
                         }  
                         else {  
                                 ppi.portc &= ~0x40;  
                         }  
 #endif  
                         return(ppi.portc);                          return(ppi.portc);
   
                 case 3:                  case 3:

Removed from v.1.14  
changed lines
  Added in v.1.17


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