trunk/src/mess/drivers/v1050.c
| r19116 | r19117 | |
| 769 | 769 | |
| 770 | 770 | // floppy interrupt enable |
| 771 | 771 | m_f_int_enb = BIT(data, 1); |
| 772 | update_fdc(); |
| 772 | 773 | |
| 773 | | if (!m_f_int_enb) |
| 774 | | { |
| 775 | | set_interrupt(INT_FLOPPY, 0); |
| 776 | | m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); |
| 777 | | } |
| 778 | | |
| 779 | 774 | // baud select |
| 780 | 775 | int baud_sel = (data >> 2) & 0x03; |
| 781 | 776 | |
| r19116 | r19117 | |
| 945 | 940 | |
| 946 | 941 | // MB8877 Interface |
| 947 | 942 | |
| 948 | | static SLOT_INTERFACE_START( v1050_floppies ) |
| 949 | | SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) // Teac FD-55F |
| 950 | | SLOT_INTERFACE_END |
| 951 | | |
| 952 | | void v1050_state::fdc_intrq_w(bool state) |
| 943 | void v1050_state::update_fdc() |
| 953 | 944 | { |
| 954 | 945 | if (m_f_int_enb) |
| 955 | 946 | { |
| 956 | | set_interrupt(INT_FLOPPY, state ? 1 : 0); |
| 947 | set_interrupt(INT_FLOPPY, m_fdc_irq ? 1 : 0); |
| 948 | m_maincpu->set_input_line(INPUT_LINE_NMI, m_fdc_drq ? ASSERT_LINE : CLEAR_LINE); |
| 957 | 949 | } |
| 958 | 950 | else |
| 959 | 951 | { |
| 960 | 952 | set_interrupt(INT_FLOPPY, 0); |
| 953 | m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); |
| 961 | 954 | } |
| 962 | 955 | } |
| 963 | 956 | |
| 957 | static SLOT_INTERFACE_START( v1050_floppies ) |
| 958 | SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) // Teac FD-55F |
| 959 | SLOT_INTERFACE_END |
| 960 | |
| 961 | void v1050_state::fdc_intrq_w(bool state) |
| 962 | { |
| 963 | m_fdc_irq = state; |
| 964 | |
| 965 | update_fdc(); |
| 966 | } |
| 967 | |
| 964 | 968 | void v1050_state::fdc_drq_w(bool state) |
| 965 | 969 | { |
| 966 | | if (m_f_int_enb) |
| 967 | | { |
| 968 | | m_maincpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE); |
| 969 | | } |
| 970 | | else |
| 971 | | { |
| 972 | | m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); |
| 973 | | } |
| 970 | m_fdc_drq = state; |
| 971 | |
| 972 | update_fdc(); |
| 974 | 973 | } |
| 975 | 974 | |
| 976 | 975 | /* |
| r19116 | r19117 | |
| 1043 | 1042 | save_item(NAME(m_int_mask)); |
| 1044 | 1043 | save_item(NAME(m_int_state)); |
| 1045 | 1044 | save_item(NAME(m_f_int_enb)); |
| 1045 | save_item(NAME(m_fdc_irq)); |
| 1046 | save_item(NAME(m_fdc_drq)); |
| 1046 | 1047 | save_item(NAME(m_keylatch)); |
| 1047 | 1048 | save_item(NAME(m_keydata)); |
| 1048 | 1049 | save_item(NAME(m_keyavail)); |
| r19116 | r19117 | |
| 1055 | 1056 | void v1050_state::machine_reset() |
| 1056 | 1057 | { |
| 1057 | 1058 | m_bank = 0; |
| 1058 | | |
| 1059 | 1059 | bankswitch(); |
| 1060 | 1060 | |
| 1061 | 1061 | m_timer_sio->adjust(attotime::zero, 0, attotime::from_hz((double)XTAL_16MHz/4/13/16)); |
| 1062 | |
| 1063 | m_fdc->reset(); |
| 1062 | 1064 | } |
| 1063 | 1065 | |
| 1064 | 1066 | // Machine Driver |
| r19116 | r19117 | |
| 1089 | 1091 | MCFG_I8255A_ADD(I8255A_M6502_TAG, m6502_ppi_intf) |
| 1090 | 1092 | MCFG_I8251_ADD(I8251A_KB_TAG, /*XTAL_16MHz/8,*/ kb_8251_intf) |
| 1091 | 1093 | MCFG_I8251_ADD(I8251A_SIO_TAG, /*XTAL_16MHz/8,*/ sio_8251_intf) |
| 1092 | | MCFG_FD1793x_ADD(MB8877_TAG, XTAL_16MHz/16) |
| 1094 | MCFG_FD1793x_ADD(MB8877_TAG, XTAL_16MHz/2) |
| 1093 | 1095 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":0", v1050_floppies, "525dd", NULL, floppy_image_device::default_floppy_formats) |
| 1094 | 1096 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":1", v1050_floppies, "525dd", NULL, floppy_image_device::default_floppy_formats) |
| 1095 | 1097 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":2", v1050_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) |