Previous 199869 Revisions Next

r33253 Friday 7th November, 2014 at 04:00:57 UTC by Ramiro Polla
upd7810: ECNT clear control happens after capture control
[src/emu/cpu/upd7810]upd7810.c

trunk/src/emu/cpu/upd7810/upd7810.c
r241764r241765
13131313            IRR |= INTFE0;
13141314         if (ETM1 == ECNT)
13151315            IRR |= INTFE1;
1316         /* How and When ECNT is Cleared */
1317         switch (ETMM & 0x0c)
1318         {
1319         case 0x00:              /* clear ECNT */
1320            break;
1321         case 0x04:              /* free running */
1322            if (0 == ECNT)
1323               ITF |= INTOV;   /* set overflow flag if counter wrapped */
1324            break;
1325         case 0x08:              /* reset at falling edge of CI or TO */
1326            break;
1327         case 0x0c:              /* reset if ECNT == ETM1 */
1328            if (ETM1 == ECNT)
1329               ECNT = 0;
1330            break;
1331         }
13321316         /* Conditions When ECNT Causes a CO0 Output Change */
13331317         if (((0x00 == (ETMM & 0x30)) && (ETM0 == ECNT)) || /* set CO0 if ECNT == ETM0 */
13341318          /* ((0x10 == (ETMM & 0x30)) prohibited */
r241764r241765
13671351               break;
13681352            }
13691353         }
1354         /* How and When ECNT is Cleared */
1355         switch (ETMM & 0x0c)
1356         {
1357         case 0x00:              /* clear ECNT */
1358            break;
1359         case 0x04:              /* free running */
1360            if (0 == ECNT)
1361               ITF |= INTOV;   /* set overflow flag if counter wrapped */
1362            break;
1363         case 0x08:              /* reset at falling edge of CI or TO */
1364            break;
1365         case 0x0c:              /* reset if ECNT == ETM1 */
1366            if (ETM1 == ECNT)
1367               ECNT = 0;
1368            break;
1369         }
13701370      }
13711371   }
13721372


Previous 199869 Revisions Next


© 1997-2024 The MAME Team