@@ -492,8 +492,7 @@ static inline void _m6569_io_update_border_rsel(m6569_border_unit_t* b, uint8_t
492
492
// RSEL 1: 25 rows
493
493
b -> top = _M6569_RSEL1_BORDER_TOP ;
494
494
b -> bottom = _M6569_RSEL1_BORDER_BOTTOM ;
495
- }
496
- else {
495
+ } else {
497
496
// RSEL 0: 24 rows
498
497
b -> top = _M6569_RSEL0_BORDER_TOP ;
499
498
b -> bottom = _M6569_RSEL0_BORDER_BOTTOM ;
@@ -506,8 +505,7 @@ static inline void _m6569_io_update_border_csel(m6569_border_unit_t* b, uint8_t
506
505
// CSEL 1: 40 columns
507
506
b -> left = _M6569_CSEL1_BORDER_LEFT ;
508
507
b -> right = _M6569_CSEL1_BORDER_RIGHT ;
509
- }
510
- else {
508
+ } else {
511
509
// CSEL 0: 38 columns
512
510
b -> left = _M6569_CSEL0_BORDER_LEFT ;
513
511
b -> right = _M6569_CSEL0_BORDER_RIGHT ;
@@ -729,8 +727,7 @@ static inline void _m6569_gunit_tick(m6569_t* vic, uint8_t g_data) {
729
727
vic -> gunit .count = 7 ;
730
728
vic -> gunit .shift |= g_data ;
731
729
vic -> gunit .c_data = vic -> gunit .enabled ? vic -> vm .line [vic -> vm .vmli ] : 0 ;
732
- }
733
- else {
730
+ } else {
734
731
vic -> gunit .count -- ;
735
732
}
736
733
vic -> gunit .outp = vic -> gunit .shift ;
@@ -754,8 +751,7 @@ static inline uint16_t _m6569_gunit_decode_mode0(m6569_t* vic) {
754
751
if (vic -> gunit .outp & 0x80 ) {
755
752
// foreground color (top bits set)
756
753
return 0xFF00 | ((vic -> gunit .c_data >>8 ) & 0xF );
757
- }
758
- else {
754
+ } else {
759
755
// background color (top bits clear)
760
756
return vic -> gunit .bg [0 ];
761
757
}
@@ -777,19 +773,16 @@ static inline uint16_t _m6569_gunit_decode_mode1(m6569_t* vic) {
777
773
if (bits == 3 ) {
778
774
// special case '11'
779
775
return 0xFF00 | fg ;
780
- }
781
- else {
776
+ } else {
782
777
// one of the 3 background colors (top bits already pre-set)
783
778
return vic -> gunit .bg [bits ];
784
779
}
785
- }
786
- else {
780
+ } else {
787
781
// standard text mode char, but with only 7 foreground colors
788
782
if (vic -> gunit .outp & 0x80 ) {
789
783
// foreground color (top bits set)
790
784
return 0xFF00 | fg ;
791
- }
792
- else {
785
+ } else {
793
786
// background color (top bits already pre-set to 0)
794
787
return vic -> gunit .bg [0 ];
795
788
}
@@ -800,8 +793,7 @@ static inline uint16_t _m6569_gunit_decode_mode2(m6569_t* vic) {
800
793
if (vic -> gunit .outp & 0x80 ) {
801
794
// foreground pixel (top 8 bits set)
802
795
return 0xFF00 | ((vic -> gunit .c_data >> 4 ) & 0xF );
803
- }
804
- else {
796
+ } else {
805
797
// background pixel (top bits clear for multiplexer)
806
798
return vic -> gunit .c_data & 0xF ;
807
799
}
@@ -830,8 +822,7 @@ static inline uint16_t _m6569_gunit_decode_mode4(m6569_t* vic) {
830
822
if (vic -> gunit .outp & 0x80 ) {
831
823
// foreground color as usual bits 8..11 of c_data
832
824
return 0xFF00 | ((vic -> gunit .c_data >>8 ) & 0xF );
833
- }
834
- else {
825
+ } else {
835
826
// bg color selected by bits 6 and 7 of c_data
836
827
/* FIXME: is the foreground/background selection right?
837
828
values 00 and 01 would return as background color,
@@ -947,17 +938,17 @@ static inline void _m6569_sunit_dma_disp_disable(m6569_t* vic) {
947
938
}
948
939
}
949
940
950
- // set the BA pin if a sprite's DMA is enabled
951
- static inline uint64_t _m6569_sunit_dma_ba (m6569_t * vic , uint32_t s_index , uint64_t pins ) {
952
- if (vic -> sunit .dma_enabled & ( 1 << s_index ) ) {
941
+ // set the BA pin if one or multiple sprite's DMA is enabled
942
+ static inline uint64_t _m6569_sunit_dma_ba (m6569_t * vic , uint8_t mask , uint64_t pins ) {
943
+ if (vic -> sunit .dma_enabled & mask ) {
953
944
pins |= M6569_BA ;
954
945
}
955
946
return pins ;
956
947
}
957
948
958
- // set the AEC pin if a sprite's DMA is enabled
959
- static inline uint64_t _m6569_sunit_dma_aec (m6569_t * vic , uint32_t s_index , uint64_t pins ) {
960
- if (vic -> sunit .dma_enabled & ( 1 << s_index ) ) {
949
+ // set the AEC pin one or multiple sprite's DMA are enabled
950
+ static inline uint64_t _m6569_sunit_dma_aec (m6569_t * vic , uint8_t mask , uint64_t pins ) {
951
+ if (vic -> sunit .dma_enabled & mask ) {
961
952
pins |= M6569_AEC ;
962
953
}
963
954
return pins ;
@@ -1230,8 +1221,7 @@ static inline void _m6569_rs_update_badline(m6569_t* vic) {
1230
1221
*/
1231
1222
bool yscroll_match = ((vic -> rs .v_count & 7 ) == (vic -> reg .ctrl_1 & 7 ));
1232
1223
vic -> rs .badline = vic -> rs .frame_badlines_enabled && yscroll_match ;
1233
- }
1234
- else {
1224
+ } else {
1235
1225
vic -> rs .frame_badlines_enabled = false;
1236
1226
vic -> rs .badline = false;
1237
1227
}
@@ -1285,8 +1275,7 @@ static inline void _m6569_crt_next_crtline(m6569_t* vic) {
1285
1275
vic -> crt .x = 0 ;
1286
1276
if (vic -> rs .v_count == _M6569_VRETRACEPOS ) {
1287
1277
vic -> crt .y = 0 ;
1288
- }
1289
- else {
1278
+ } else {
1290
1279
vic -> crt .y ++ ;
1291
1280
}
1292
1281
}
@@ -1359,17 +1348,15 @@ static inline uint8_t _m6569_g_i_access(m6569_t* vic) {
1359
1348
// bitmap mode: addr=|CB13|VC9|VC8|VC7|VC6|VC5|VC4|VC3|VC2|VC1|VC0|RC2|RC1|RC0|
1360
1349
addr = vic -> rs .vc <<3 | vic -> rs .rc ;
1361
1350
addr = (addr | (vic -> mem .g_addr_or & (1 <<13 ))) & vic -> mem .g_addr_and ;
1362
- }
1363
- else {
1351
+ } else {
1364
1352
// text mode: addr=|CB13|CB12|CB11|D7|D6|D5|D4|D3|D2|D1|D0|RC2|RC1|RC0|
1365
1353
addr = ((vic -> vm .line [vic -> vm .vmli ]& 0xFF )<<3 ) | vic -> rs .rc ;
1366
1354
addr = (addr | vic -> mem .g_addr_or ) & vic -> mem .g_addr_and ;
1367
1355
}
1368
1356
vic -> rs .vc = (vic -> rs .vc + 1 ) & 0x3FF ; // VC is a 10-bit counter
1369
1357
vic -> vm .next_vmli = (vic -> vm .vmli + 1 ) & 0x3F ; // VMLI is a 6-bit counter
1370
1358
return (uint8_t ) vic -> mem .fetch_cb (addr , vic -> mem .user_data );
1371
- }
1372
- else {
1359
+ } else {
1373
1360
return _m6569_i_access (vic );
1374
1361
}
1375
1362
}
@@ -1399,8 +1386,7 @@ static inline uint8_t _m6569_s_i_access(m6569_t* vic, uint32_t s_index) {
1399
1386
su -> shift [s_index ] = (su -> shift [s_index ]<<8 ) | (s_data <<8 );
1400
1387
su -> mc [s_index ] = (su -> mc [s_index ] + 1 ) & 0x3F ;
1401
1388
return 0 ;
1402
- }
1403
- else {
1389
+ } else {
1404
1390
return _m6569_i_access (vic );
1405
1391
}
1406
1392
}
@@ -1431,74 +1417,63 @@ static uint64_t _m6569_tick(m6569_t* vic, uint64_t pins) {
1431
1417
case 1 :
1432
1418
_m6569_p_access (vic , 3 );
1433
1419
_m6569_s_access (vic , 3 );
1434
- pins = _m6569_sunit_dma_aec (vic , 3 , pins );
1435
- pins = _m6569_sunit_dma_ba (vic , 3 , pins );
1436
- pins = _m6569_sunit_dma_ba (vic , 4 , pins );
1420
+ pins = _m6569_sunit_dma_aec (vic , (1 <<3 ), pins );
1421
+ pins = _m6569_sunit_dma_ba (vic , (1 <<3 )|(1 <<4 ), pins );
1437
1422
break ;
1438
1423
case 2 :
1439
1424
g_data = _m6569_s_i_access (vic , 3 );
1440
1425
_m6569_s_access (vic , 3 );
1441
- pins = _m6569_sunit_dma_aec (vic , 3 , pins );
1442
- pins = _m6569_sunit_dma_ba (vic , 3 , pins );
1443
- pins = _m6569_sunit_dma_ba (vic , 4 , pins );
1444
- pins = _m6569_sunit_dma_ba (vic , 5 , pins );
1426
+ pins = _m6569_sunit_dma_aec (vic , (1 <<3 ), pins );
1427
+ pins = _m6569_sunit_dma_ba (vic , (1 <<3 )|(1 <<4 )|(1 <<5 ), pins );
1445
1428
break ;
1446
1429
case 3 :
1447
1430
_m6569_p_access (vic , 4 );
1448
1431
_m6569_s_access (vic , 4 );
1449
- pins = _m6569_sunit_dma_aec (vic , 4 , pins );
1450
- pins = _m6569_sunit_dma_ba (vic , 4 , pins );
1451
- pins = _m6569_sunit_dma_ba (vic , 5 , pins );
1432
+ pins = _m6569_sunit_dma_aec (vic , (1 <<4 ), pins );
1433
+ pins = _m6569_sunit_dma_ba (vic , (1 <<4 )|(1 <<5 ), pins );
1452
1434
break ;
1453
1435
case 4 :
1454
1436
_m6569_crt_next_crtline (vic );
1455
1437
g_data = _m6569_s_i_access (vic , 4 );
1456
1438
_m6569_s_access (vic , 4 );
1457
- pins = _m6569_sunit_dma_aec (vic , 4 , pins );
1458
- pins = _m6569_sunit_dma_ba (vic , 4 , pins );
1459
- pins = _m6569_sunit_dma_ba (vic , 5 , pins );
1460
- pins = _m6569_sunit_dma_ba (vic , 6 , pins );
1439
+ pins = _m6569_sunit_dma_aec (vic , (1 <<4 ), pins );
1440
+ pins = _m6569_sunit_dma_ba (vic , (1 <<4 )|(1 <<5 )|(1 <<6 ), pins );
1461
1441
break ;
1462
1442
case 5 :
1463
1443
_m6569_p_access (vic , 5 );
1464
1444
_m6569_s_access (vic , 5 );
1465
- pins = _m6569_sunit_dma_aec (vic , 5 , pins );
1466
- pins = _m6569_sunit_dma_ba (vic , 5 , pins );
1467
- pins = _m6569_sunit_dma_ba (vic , 6 , pins );
1445
+ pins = _m6569_sunit_dma_aec (vic , (1 <<5 ), pins );
1446
+ pins = _m6569_sunit_dma_ba (vic , (1 <<5 )|(1 <<6 ), pins );
1468
1447
break ;
1469
1448
case 6 :
1470
1449
g_data = _m6569_s_i_access (vic , 5 );
1471
1450
_m6569_s_access (vic , 5 );
1472
- pins = _m6569_sunit_dma_aec (vic , 5 , pins );
1473
- pins = _m6569_sunit_dma_ba (vic , 5 , pins );
1474
- pins = _m6569_sunit_dma_ba (vic , 6 , pins );
1475
- pins = _m6569_sunit_dma_ba (vic , 7 , pins );
1451
+ pins = _m6569_sunit_dma_aec (vic , (1 <<5 ), pins );
1452
+ pins = _m6569_sunit_dma_ba (vic , (1 <<5 )|(1 <<6 )|(1 <<7 ), pins );
1476
1453
break ;
1477
1454
case 7 :
1478
1455
_m6569_p_access (vic , 6 );
1479
1456
_m6569_s_access (vic , 6 );
1480
- pins = _m6569_sunit_dma_aec (vic , 6 , pins );
1481
- pins = _m6569_sunit_dma_ba (vic , 6 , pins );
1482
- pins = _m6569_sunit_dma_ba (vic , 7 , pins );
1457
+ pins = _m6569_sunit_dma_aec (vic , (1 <<6 ), pins );
1458
+ pins = _m6569_sunit_dma_ba (vic , (1 <<6 )|(1 <<7 ), pins );
1483
1459
break ;
1484
1460
case 8 :
1485
1461
g_data = _m6569_s_i_access (vic , 6 );
1486
1462
_m6569_s_access (vic , 6 );
1487
- pins = _m6569_sunit_dma_aec (vic , 6 , pins );
1488
- pins = _m6569_sunit_dma_ba (vic , 6 , pins );
1489
- pins = _m6569_sunit_dma_ba (vic , 7 , pins );
1463
+ pins = _m6569_sunit_dma_aec (vic , (1 <<6 ), pins );
1464
+ pins = _m6569_sunit_dma_ba (vic , (1 <<6 )|(1 <<7 ), pins );
1490
1465
break ;
1491
1466
case 9 :
1492
1467
_m6569_p_access (vic , 7 );
1493
1468
_m6569_s_access (vic , 7 );
1494
- pins = _m6569_sunit_dma_aec (vic , 7 , pins );
1495
- pins = _m6569_sunit_dma_ba (vic , 7 , pins );
1469
+ pins = _m6569_sunit_dma_aec (vic , ( 1 << 7 ) , pins );
1470
+ pins = _m6569_sunit_dma_ba (vic , ( 1 << 7 ) , pins );
1496
1471
break ;
1497
1472
case 10 :
1498
1473
g_data = _m6569_s_i_access (vic , 7 );
1499
1474
_m6569_s_access (vic , 7 );
1500
- pins = _m6569_sunit_dma_aec (vic , 7 , pins );
1501
- pins = _m6569_sunit_dma_ba (vic , 7 , pins );
1475
+ pins = _m6569_sunit_dma_aec (vic , ( 1 << 7 ) , pins );
1476
+ pins = _m6569_sunit_dma_ba (vic , ( 1 << 7 ) , pins );
1502
1477
break ;
1503
1478
case 11 :
1504
1479
break ;
@@ -1547,78 +1522,67 @@ static uint64_t _m6569_tick(m6569_t* vic, uint64_t pins) {
1547
1522
vic -> gunit .enabled = vic -> rs .display_state ;
1548
1523
_m6569_c_access (vic );
1549
1524
g_data = _m6569_g_i_access (vic );
1550
- pins = _m6569_sunit_dma_ba (vic , 0 , pins );
1525
+ pins = _m6569_sunit_dma_ba (vic , ( 1 << 0 ) , pins );
1551
1526
_m6569_bunit_right (vic , 55 );
1552
1527
break ;
1553
1528
case 56 :
1554
1529
vic -> gunit .enabled = false;
1555
1530
_m6569_sunit_start (vic );
1556
1531
g_data = _m6569_i_access (vic );
1557
- pins = _m6569_sunit_dma_ba (vic , 0 , pins );
1532
+ pins = _m6569_sunit_dma_ba (vic , ( 1 << 0 ) , pins );
1558
1533
_m6569_bunit_right (vic , 56 );
1559
1534
break ;
1560
1535
case 57 :
1561
1536
g_data = _m6569_i_access (vic );
1562
- pins = _m6569_sunit_dma_ba (vic , 0 , pins );
1563
- pins = _m6569_sunit_dma_ba (vic , 1 , pins );
1537
+ pins = _m6569_sunit_dma_ba (vic , (1 <<0 )|(1 <<1 ), pins );
1564
1538
break ;
1565
1539
case 58 :
1566
1540
_m6569_sunit_update_mc_disp_enable (vic );
1567
1541
_m6569_p_access (vic , 0 );
1568
1542
_m6569_s_access (vic , 0 );
1569
- pins = _m6569_sunit_dma_aec (vic , 0 , pins );
1570
- pins = _m6569_sunit_dma_ba (vic , 0 , pins );
1571
- pins = _m6569_sunit_dma_ba (vic , 1 , pins );
1543
+ pins = _m6569_sunit_dma_aec (vic , (1 <<0 ), pins );
1544
+ pins = _m6569_sunit_dma_ba (vic , (1 <<0 )|(1 <<1 ), pins );
1572
1545
break ;
1573
1546
case 59 :
1574
1547
_m6569_rs_update_display_state (vic );
1575
1548
g_data = _m6569_s_i_access (vic , 0 );
1576
1549
_m6569_s_access (vic , 0 );
1577
- pins = _m6569_sunit_dma_aec (vic , 0 , pins );
1578
- pins = _m6569_sunit_dma_ba (vic , 0 , pins );
1579
- pins = _m6569_sunit_dma_ba (vic , 1 , pins );
1580
- pins = _m6569_sunit_dma_ba (vic , 2 , pins );
1550
+ pins = _m6569_sunit_dma_aec (vic , (1 <<0 ), pins );
1551
+ pins = _m6569_sunit_dma_ba (vic , (1 <<0 )|(1 <<1 )|(1 <<2 ), pins );
1581
1552
break ;
1582
1553
case 60 :
1583
1554
_m6569_p_access (vic , 1 );
1584
1555
_m6569_s_access (vic , 1 );
1585
- pins = _m6569_sunit_dma_aec (vic , 1 , pins );
1586
- pins = _m6569_sunit_dma_ba (vic , 1 , pins );
1587
- pins = _m6569_sunit_dma_ba (vic , 2 , pins );
1556
+ pins = _m6569_sunit_dma_aec (vic , (1 <<1 ), pins );
1557
+ pins = _m6569_sunit_dma_ba (vic , (1 <<1 )|(1 <<2 ), pins );
1588
1558
break ;
1589
1559
case 61 :
1590
1560
g_data = _m6569_s_i_access (vic , 1 );
1591
1561
_m6569_s_access (vic , 1 );
1592
- pins = _m6569_sunit_dma_aec (vic , 1 , pins );
1593
- pins = _m6569_sunit_dma_ba (vic , 1 , pins );
1594
- pins = _m6569_sunit_dma_ba (vic , 2 , pins );
1595
- pins = _m6569_sunit_dma_ba (vic , 3 , pins );
1562
+ pins = _m6569_sunit_dma_aec (vic , (1 <<1 ), pins );
1563
+ pins = _m6569_sunit_dma_ba (vic , (1 <<1 )|(1 <<2 )|(1 <<3 ), pins );
1596
1564
break ;
1597
1565
case 62 :
1598
1566
_m6569_p_access (vic , 2 );
1599
1567
_m6569_s_access (vic , 2 );
1600
- pins = _m6569_sunit_dma_aec (vic , 2 , pins );
1601
- pins = _m6569_sunit_dma_ba (vic , 2 , pins );
1602
- pins = _m6569_sunit_dma_ba (vic , 3 , pins );
1568
+ pins = _m6569_sunit_dma_aec (vic , (1 <<2 ), pins );
1569
+ pins = _m6569_sunit_dma_ba (vic , (1 <<2 )|(1 <<3 ), pins );
1603
1570
break ;
1604
1571
case 63 : /* HTOTAL */
1605
1572
_m6569_rs_next_rasterline (vic );
1606
1573
_m6569_rs_check_irq (vic );
1607
1574
g_data = _m6569_s_i_access (vic , 2 );
1608
1575
_m6569_s_access (vic , 2 );
1609
- pins = _m6569_sunit_dma_aec (vic , 2 , pins );
1610
- pins = _m6569_sunit_dma_ba (vic , 2 , pins );
1611
- pins = _m6569_sunit_dma_ba (vic , 3 , pins );
1612
- pins = _m6569_sunit_dma_ba (vic , 4 , pins );
1576
+ pins = _m6569_sunit_dma_aec (vic , (1 <<2 ), pins );
1577
+ pins = _m6569_sunit_dma_ba (vic , (1 <<2 )|(1 <<3 )|(1 <<4 ), pins );
1613
1578
_m6569_bunit_end (vic );
1614
1579
break ;
1615
1580
default : _M6569_UNREACHABLE ;
1616
1581
}
1617
1582
//-- main interrupt bit
1618
1583
if (vic -> reg .int_latch & vic -> reg .int_mask & 0x0F ) {
1619
1584
vic -> reg .int_latch |= M6569_INT_IRQ ;
1620
- }
1621
- else {
1585
+ } else {
1622
1586
vic -> reg .int_latch &= ~M6569_INT_IRQ ;
1623
1587
}
1624
1588
if (vic -> reg .int_latch & M6569_INT_IRQ ) {
@@ -1653,8 +1617,7 @@ uint64_t m6569_tick(m6569_t* vic, uint64_t pins) {
1653
1617
if (pins & M6569_CS ) {
1654
1618
if (pins & M6569_RW ) {
1655
1619
pins = _m6569_read (vic , pins );
1656
- }
1657
- else {
1620
+ } else {
1658
1621
_m6569_write (vic , pins );
1659
1622
}
1660
1623
}
0 commit comments