Previous 199869 Revisions Next

r33087 Thursday 30th October, 2014 at 15:45:23 UTC by Ramiro Polla
upd7810: remove code duplication in ETIMER
[src/emu/cpu/upd7810]upd7810.c

trunk/src/emu/cpu/upd7810/upd7810.c
r241598r241599
13151315               ECNT = 0;
13161316            break;
13171317         }
1318         switch (ETMM & 0x30)
1318         /* Conditions When ECNT Causes a CO0 Output Change */
1319         if (((0x00 == (ETMM & 0x30)) && (ETM0 == ECNT)) || /* set CO0 if ECNT == ETM0 */
1320          /* ((0x10 == (ETMM & 0x30)) prohibited */
1321             ((0x20 == (ETMM & 0x30)) && (ETM0 == ECNT)) || /* set CO0 if ECNT == ETM0 or at falling CI input */
1322             ((0x30 == (ETMM & 0x30)) && (ETM0 == ECNT || ETM1 == ECNT))) /* latch CO0 if ECNT == ETM0 or ECNT == ETM1 */
13191323         {
1320         case 0x00:  /* set CO0 if ECNT == ETM0 */
1321            if (ETM0 == ECNT)
1324            switch (EOM & 0x0e)
13221325            {
1323               switch (EOM & 0x0e)
1324               {
1325               case 0x02:  /* toggle CO0 */
1326                  CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
1327                  break;
1328               case 0x04:  /* reset CO0 */
1329                  CO0 = 0;
1330                  break;
1331               case 0x08:  /* set CO0 */
1332                  CO0 = 1;
1333                  break;
1334               }
1326            case 0x02:  /* toggle CO0 */
1327               CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
1328               break;
1329            case 0x04:  /* reset CO0 */
1330               CO0 = 0;
1331               break;
1332            case 0x08:  /* set CO0 */
1333               CO0 = 1;
1334               break;
13351335            }
1336            break;
1337         case 0x10:  /* prohibited */
1338            break;
1339         case 0x20:  /* set CO0 if ECNT == ETM0 or at falling CI input */
1340            if (ETM0 == ECNT)
1341            {
1342               switch (EOM & 0x0e)
1343               {
1344               case 0x02:  /* toggle CO0 */
1345                  CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
1346                  break;
1347               case 0x04:  /* reset CO0 */
1348                  CO0 = 0;
1349                  break;
1350               case 0x08:  /* set CO0 */
1351                  CO0 = 1;
1352                  break;
1353               }
1354            }
1355            break;
1356         case 0x30:  /* latch CO0 if ECNT == ETM0 or ECNT == ETM1 */
1357            if (ETM0 == ECNT || ETM1 == ECNT)
1358            {
1359               switch (EOM & 0x0e)
1360               {
1361               case 0x02:  /* toggle CO0 */
1362                  CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
1363                  break;
1364               case 0x04:  /* reset CO0 */
1365                  CO0 = 0;
1366                  break;
1367               case 0x08:  /* set CO0 */
1368                  CO0 = 1;
1369                  break;
1370               }
1371            }
1372            break;
13731336         }
1374         switch (ETMM & 0xc0)
1337         /* Conditions When ECNT Causes a CO1 Output Change */
1338         if (((0x00 == (ETMM & 0xc0)) && (ETM0 == ECNT)) || /* set CO1 if ECNT == ETM0 */
1339          /* ((0x40 == (ETMM & 0xc0)) prohibited */
1340             ((0x80 == (ETMM & 0xc0)) && (ETM0 == ECNT)) || /* set CO1 if ECNT == ETM0 or at falling CI input */
1341             ((0xc0 == (ETMM & 0xc0)) && (ETM0 == ECNT || ETM1 == ECNT))) /* latch CO1 if ECNT == ETM0 or ECNT == ETM1 */
13751342         {
1376         case 0x00:  /* lacth CO1 if ECNT == ETM1 */
1377            if (ETM1 == ECNT)
1343            switch (EOM & 0xe0)
13781344            {
1379               switch (EOM & 0xe0)
1380               {
1381               case 0x20:  /* toggle CO1 */
1382                  CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
1383                  break;
1384               case 0x40:  /* reset CO1 */
1385                  CO1 = 0;
1386                  break;
1387               case 0x80:  /* set CO1 */
1388                  CO1 = 1;
1389                  break;
1390               }
1345            case 0x20:  /* toggle CO1 */
1346               CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
1347               break;
1348            case 0x40:  /* reset CO1 */
1349               CO1 = 0;
1350               break;
1351            case 0x80:  /* set CO1 */
1352               CO1 = 1;
1353               break;
13911354            }
1392            break;
1393         case 0x40:  /* prohibited */
1394            break;
1395         case 0x80:  /* latch CO1 if ECNT == ETM1 or falling edge of CI input */
1396            if (ETM1 == ECNT)
1397            {
1398               switch (EOM & 0xe0)
1399               {
1400               case 0x20:  /* toggle CO1 */
1401                  CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
1402                  break;
1403               case 0x40:  /* reset CO1 */
1404                  CO1 = 0;
1405                  break;
1406               case 0x80:  /* set CO1 */
1407                  CO1 = 1;
1408                  break;
1409               }
1410            }
1411            break;
1412         case 0xc0:  /* latch CO1 if ECNT == ETM0 or ECNT == ETM1 */
1413            if (ETM0 == ECNT || ETM1 == ECNT)
1414            {
1415               switch (EOM & 0xe0)
1416               {
1417               case 0x20:  /* toggle CO1 */
1418                  CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
1419                  break;
1420               case 0x40:  /* reset CO1 */
1421                  CO1 = 0;
1422                  break;
1423               case 0x80:  /* set CO1 */
1424                  CO1 = 1;
1425                  break;
1426               }
1427            }
1428            break;
14291355         }
14301356      }
14311357   }


Previous 199869 Revisions Next


© 1997-2024 The MAME Team