trunk/src/mess/machine/cs4031.c
r24625 | r24626 | |
38 | 38 | #define LOG_REGISTER 1 |
39 | 39 | #define LOG_MEMORY 1 |
40 | 40 | #define LOG_IO 1 |
| 41 | #define LOG_KEYBOARD 0 |
41 | 42 | |
42 | 43 | |
43 | 44 | //************************************************************************** |
r24625 | r24626 | |
210 | 211 | m_refresh_toggle(0), |
211 | 212 | m_iochck(1), |
212 | 213 | m_nmi_mask(1), |
213 | | m_sysctrl(0), |
214 | 214 | m_cpureset(0), |
215 | 215 | m_kbrst(1), |
216 | 216 | m_ext_gatea20(0), |
r24625 | r24626 | |
718 | 718 | |
719 | 719 | READ8_MEMBER( cs4031_device::keyb_status_r ) |
720 | 720 | { |
| 721 | if (LOG_KEYBOARD) |
| 722 | logerror("cs4031_device::keyb_status_r\n"); |
| 723 | |
721 | 724 | return m_keybc->status_r(space, 0); |
722 | 725 | } |
723 | 726 | |
724 | 727 | WRITE8_MEMBER( cs4031_device::keyb_command_w ) |
725 | 728 | { |
726 | | if (0) |
| 729 | if (LOG_KEYBOARD) |
727 | 730 | logerror("cs4031_device::keyb_command_w: %02x\n", data); |
728 | 731 | |
729 | 732 | m_keybc->command_w(space, 0, data); |
r24625 | r24626 | |
731 | 734 | |
732 | 735 | READ8_MEMBER( cs4031_device::keyb_data_r ) |
733 | 736 | { |
734 | | if (0) |
| 737 | if (LOG_KEYBOARD) |
735 | 738 | logerror("cs4031_device::keyb_data_r\n"); |
736 | 739 | |
737 | 740 | return m_keybc->data_r(space, 0); |
r24625 | r24626 | |
739 | 742 | |
740 | 743 | WRITE8_MEMBER( cs4031_device::keyb_data_w ) |
741 | 744 | { |
742 | | if (0) |
| 745 | if (LOG_KEYBOARD) |
743 | 746 | logerror("cs4031_device::keyb_data_w: %02x\n", data); |
744 | 747 | |
745 | 748 | m_keybc->data_w(space, 0, data); |
r24625 | r24626 | |
747 | 750 | |
748 | 751 | WRITE_LINE_MEMBER( cs4031_device::gatea20_w ) |
749 | 752 | { |
750 | | if (LOG_IO) |
| 753 | if (LOG_KEYBOARD) |
751 | 754 | logerror("cs4031_device::gatea20_w: %u\n", state); |
752 | 755 | |
753 | 756 | if (m_ext_gatea20 != state) |
r24625 | r24626 | |
759 | 762 | |
760 | 763 | WRITE_LINE_MEMBER( cs4031_device::kbrst_w ) |
761 | 764 | { |
762 | | if (LOG_IO) |
| 765 | if (LOG_KEYBOARD) |
763 | 766 | logerror("cs4031_device::kbrst_w: %u\n", state); |
764 | 767 | |
765 | 768 | // active low signal |
r24625 | r24626 | |
786 | 789 | if (LOG_IO) |
787 | 790 | logerror("cs4031_device::sysctrl_w: %u\n", data); |
788 | 791 | |
789 | | m_sysctrl = data; |
790 | | |
791 | 792 | m_fast_gatea20 = BIT(data, 1); |
792 | 793 | a20m(); |
793 | 794 | |
r24625 | r24626 | |
803 | 804 | |
804 | 805 | READ8_MEMBER( cs4031_device::sysctrl_r ) |
805 | 806 | { |
| 807 | UINT8 result = 0; // reserved bits read as 0? |
| 808 | |
| 809 | result |= m_cpureset << 0; |
| 810 | result |= m_fast_gatea20 << 1; |
| 811 | |
806 | 812 | if (LOG_IO) |
807 | | logerror("cs4031_device::sysctrl_r: %u\n", m_sysctrl); |
| 813 | logerror("cs4031_device::sysctrl_r: %u\n", result); |
808 | 814 | |
809 | | return m_sysctrl; |
| 815 | return result; |
810 | 816 | } |
811 | 817 | |
| 818 | |
812 | 819 | //************************************************************************** |
813 | 820 | // MISCELLANEOUS |
814 | 821 | //************************************************************************** |