Diff for /np2/io/pit.c between versions 1.5 and 1.6

version 1.5, 2003/11/12 20:02:54 version 1.6, 2003/11/21 06:51:11
Line 44  static void setsystimerevent(BOOL absolu Line 44  static void setsystimerevent(BOOL absolu
   
 void systimer(NEVENTITEM item) {  void systimer(NEVENTITEM item) {
   
           if (pit.intr[0]) {
                   pit.intr[0] = 0;
                   pic_setirq(0);
   //              TRACEOUT(("int-08 [%.2x]", pit.mode[0]));
           }
         if (item->flag & NEVENT_SETEVENT) {          if (item->flag & NEVENT_SETEVENT) {
                 if ((pit.mode[0] & 0x0c) == 0x04) {                  if ((pit.mode[0] & 0x0c) == 0x04) {
                         // レートジェネレータ                          // レートジェネレータ
                         setsystimerevent(NEVENT_RELATIVE);                          pit.intr[0] = 1;
                 }  
                 else {  
                         setsystimerevent_noint(NEVENT_RELATIVE);  
                 }                  }
                   setsystimerevent(NEVENT_RELATIVE);
         }          }
         pic_setirq(0);  
 }  }
   
   
Line 215  BYTE itimer_getcount(int ch) { Line 217  BYTE itimer_getcount(int ch) {
 // system timer  // system timer
 static void IOOUTCALL pit_o71(UINT port, BYTE dat) {  static void IOOUTCALL pit_o71(UINT port, BYTE dat) {
   
 //      TRACEOUT(("pic71: %d", dat));  //      TRACEOUT(("pic o71: %x [%.4x %.4x]", dat, I286_CS, I286_IP));
         if (itimer_setcount(0, dat)) {          if (itimer_setcount(0, dat)) {
                 return;                  return;
         }          }
         pic.pi[0].irr &= (~1);          pic.pi[0].irr &= (~1);
           pit.intr[0] = 1;
         setsystimerevent(NEVENT_ABSOLUTE);          setsystimerevent(NEVENT_ABSOLUTE);
         (void)port;          (void)port;
 }  }
Line 256  static void IOOUTCALL pit_o77(UINT port, Line 259  static void IOOUTCALL pit_o77(UINT port,
   
         int             ch;          int             ch;
   
 //      TRACEOUT(("pic77: %x", dat));  //      TRACEOUT(("pic o77: %x", dat));
         ch = (dat >> 6) & 3;          ch = (dat >> 6) & 3;
         if (ch != 3) {          if (ch != 3) {
                 itimer_setflag(ch, dat);                  itimer_setflag(ch, dat);
                 if (ch == 0) {                  // 書込みで itimerのirrがリセットされる…                  if (ch == 0) {                  // 書込みで itimerのirrがリセットされる…
                         pic.pi[0].irr &= (~1);                          pic.pi[0].irr &= (~1);
                         if (dat & 0x30) {       // 一応ラッチ時は割り込みをセットしない  //                      if (dat & 0x30) {       // 一応ラッチ時は割り込みをセットしない
                                 setsystimerevent(NEVENT_ABSOLUTE);                                  pit.intr[0] = 1;
                         }  //                              setsystimerevent(NEVENT_ABSOLUTE);
   //                      }
                 }                  }
                 if (ch == 1) {                  if (ch == 1) {
                         beep_modeset();                          beep_modeset();
Line 275  static void IOOUTCALL pit_o77(UINT port, Line 279  static void IOOUTCALL pit_o77(UINT port,
   
 static BYTE IOINPCALL pit_i71(UINT port) {  static BYTE IOINPCALL pit_i71(UINT port) {
   
           if (port == 0x71) {
                   BYTE x;
                   x = itimer_getcount((port >> 1) & 3);
   //              TRACEOUT(("pic i71 %x [%.4x %.4x]", x, I286_CS, I286_IP));
                   return(x);
           }
         return(itimer_getcount((port >> 1) & 3));          return(itimer_getcount((port >> 1) & 3));
 }  }
   

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


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