Mercurial > repos > blastem
comparison genesis.c @ 1215:cf69a179aeaf
Basic implementation of serial IO registers, but without actual serial IO support. Needed to run a certain software check cartridge that is floating around.
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 01 Feb 2017 21:19:35 -0800 |
parents | 95f5253e75c7 |
children | 1e7977460d18 |
comparison
equal
deleted
inserted
replaced
1214:afa3d0a227ae | 1215:cf69a179aeaf |
---|---|
514 case 0x5: | 514 case 0x5: |
515 gen->io.ports[1].control = value; | 515 gen->io.ports[1].control = value; |
516 break; | 516 break; |
517 case 0x6: | 517 case 0x6: |
518 gen->io.ports[2].control = value; | 518 gen->io.ports[2].control = value; |
519 break; | |
520 case 0x7: | |
521 gen->io.ports[0].serial_out = value; | |
522 break; | |
523 case 0x8: | |
524 case 0xB: | |
525 case 0xE: | |
526 //serial input port is not writeable | |
527 break; | |
528 case 0x9: | |
529 gen->io.ports[0].serial_ctrl = value; | |
530 break; | |
531 case 0xA: | |
532 gen->io.ports[1].serial_out = value; | |
533 break; | |
534 case 0xC: | |
535 gen->io.ports[1].serial_ctrl = value; | |
536 break; | |
537 case 0xD: | |
538 gen->io.ports[2].serial_out = value; | |
539 break; | |
540 case 0xF: | |
541 gen->io.ports[2].serial_ctrl = value; | |
519 break; | 542 break; |
520 } | 543 } |
521 } else { | 544 } else { |
522 if (location == 0x1100) { | 545 if (location == 0x1100) { |
523 if (value & 1) { | 546 if (value & 1) { |
626 value = gen->io.ports[1].control; | 649 value = gen->io.ports[1].control; |
627 break; | 650 break; |
628 case 0x6: | 651 case 0x6: |
629 value = gen->io.ports[2].control; | 652 value = gen->io.ports[2].control; |
630 break; | 653 break; |
654 case 0x7: | |
655 value = gen->io.ports[0].serial_out; | |
656 break; | |
657 case 0x8: | |
658 value = gen->io.ports[0].serial_in; | |
659 break; | |
660 case 0x9: | |
661 value = gen->io.ports[0].serial_ctrl; | |
662 break; | |
663 case 0xA: | |
664 value = gen->io.ports[1].serial_out; | |
665 break; | |
666 case 0xB: | |
667 value = gen->io.ports[1].serial_in; | |
668 break; | |
669 case 0xC: | |
670 value = gen->io.ports[1].serial_ctrl; | |
671 break; | |
672 case 0xD: | |
673 value = gen->io.ports[2].serial_out; | |
674 break; | |
675 case 0xE: | |
676 value = gen->io.ports[2].serial_in; | |
677 break; | |
678 case 0xF: | |
679 value = gen->io.ports[2].serial_ctrl; | |
680 break; | |
631 default: | 681 default: |
632 value = 0xFF; | 682 value = 0xFF; |
633 } | 683 } |
634 } else { | 684 } else { |
635 if (location == 0x1100) { | 685 if (location == 0x1100) { |