Previous 199869 Revisions Next

r19117 Friday 23rd November, 2012 at 18:57:52 UTC by Curt Coder
(MESS) v1050: Fixed FDC clock, now tries to load stuff but always fails at track 2 sector 1. (nw)
[src/mess/drivers]v1050.c
[src/mess/includes]v1050.h

trunk/src/mess/drivers/v1050.c
r19116r19117
769769
770770   // floppy interrupt enable
771771   m_f_int_enb = BIT(data, 1);
772   update_fdc();
772773
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
779774   // baud select
780775   int baud_sel = (data >> 2) & 0x03;
781776
r19116r19117
945940
946941// MB8877 Interface
947942
948static SLOT_INTERFACE_START( v1050_floppies )
949   SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) // Teac FD-55F
950SLOT_INTERFACE_END
951
952void v1050_state::fdc_intrq_w(bool state)
943void v1050_state::update_fdc()
953944{
954945   if (m_f_int_enb)
955946   {
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);
957949   }
958950   else
959951   {
960952      set_interrupt(INT_FLOPPY, 0);
953      m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
961954   }
962955}
963956
957static SLOT_INTERFACE_START( v1050_floppies )
958   SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) // Teac FD-55F
959SLOT_INTERFACE_END
960
961void v1050_state::fdc_intrq_w(bool state)
962{
963   m_fdc_irq = state;
964
965   update_fdc();
966}
967
964968void v1050_state::fdc_drq_w(bool state)
965969{
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();
974973}
975974
976975/*
r19116r19117
10431042   save_item(NAME(m_int_mask));
10441043   save_item(NAME(m_int_state));
10451044   save_item(NAME(m_f_int_enb));
1045   save_item(NAME(m_fdc_irq));
1046   save_item(NAME(m_fdc_drq));
10461047   save_item(NAME(m_keylatch));
10471048   save_item(NAME(m_keydata));
10481049   save_item(NAME(m_keyavail));
r19116r19117
10551056void v1050_state::machine_reset()
10561057{
10571058   m_bank = 0;
1058
10591059   bankswitch();
10601060
10611061   m_timer_sio->adjust(attotime::zero, 0, attotime::from_hz((double)XTAL_16MHz/4/13/16));
1062
1063   m_fdc->reset();
10621064}
10631065
10641066// Machine Driver
r19116r19117
10891091   MCFG_I8255A_ADD(I8255A_M6502_TAG, m6502_ppi_intf)
10901092   MCFG_I8251_ADD(I8251A_KB_TAG, /*XTAL_16MHz/8,*/ kb_8251_intf)
10911093   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)
10931095   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":0", v1050_floppies, "525dd", NULL, floppy_image_device::default_floppy_formats)
10941096   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":1", v1050_floppies, "525dd", NULL, floppy_image_device::default_floppy_formats)
10951097   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":2", v1050_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
trunk/src/mess/includes/v1050.h
r19116r19117
138138   DECLARE_WRITE8_MEMBER( sasi_ctrl_w );
139139
140140   void bankswitch();
141   void update_fdc();
141142   void set_interrupt(UINT8 mask, int state);
142143   void scan_keyboard();
143144
r19116r19117
145146   UINT8 m_int_mask;         // interrupt mask
146147   UINT8 m_int_state;         // interrupt status
147148   int m_f_int_enb;         // floppy interrupt enable
149   bool m_fdc_irq;
150   bool m_fdc_drq;
148151
149152   // keyboard state
150153   UINT8 m_keylatch;         // keyboard row select

Previous 199869 Revisions Next


© 1997-2024 The MAME Team