Previous 199869 Revisions Next

r26854 Wednesday 1st January, 2014 at 13:24:24 UTC by smf
removed runtime via device lookups, removed ca1, cb1, ca2, cb2 callbacks from configuration as the values are pushed already [smf]
[src/mess/drivers]bbc.c
[src/mess/includes]bbc.h
[src/mess/machine]bbc.c

trunk/src/mess/machine/bbc.c
r26853r26854
572572
573573   if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */
574574   {
575      via6522_device *via_0 = machine().device<via6522_device>("via6522_0");
576      via6522_device *via_1 = machine().device<via6522_device>("via6522_1");
577
578575      myo = offset-0x200;
579576      if ((myo>=0x00) && (myo<=0x07)) return bbc_6845_r(space, myo-0x00);     /* Video Controller */
580577      if ((myo>=0x08) && (myo<=0x0f))
r26853r26854
592589      if ((myo>=0x30) && (myo<=0x33)) return 0xfe;                                /* page select */
593590      if ((myo>=0x34) && (myo<=0x37)) return bbcm_ACCCON_read(space, myo-0x34);   /* ACCCON */
594591      if ((myo>=0x38) && (myo<=0x3f)) return 0xfe;                                /* NC ?? */
595      if ((myo>=0x40) && (myo<=0x5f)) return via_0->read(space, myo-0x40);
596      if ((myo>=0x60) && (myo<=0x7f)) return via_1->read(space, myo-0x60);
592      if ((myo>=0x40) && (myo<=0x5f)) return m_via6522_0->read(space, myo-0x40);
593      if ((myo>=0x60) && (myo<=0x7f)) return m_via6522_1->read(space, myo-0x60);
597594      if ((myo>=0x80) && (myo<=0x9f)) return 0xfe;
598595      if ((myo>=0xa0) && (myo<=0xbf)) return m_adlc->read(space, myo & 0x03);
599596      if ((myo>=0xc0) && (myo<=0xdf)) return 0xfe;
r26853r26854
609606
610607   if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */
611608   {
612      via6522_device *via_0 = machine().device<via6522_device>("via6522_0");
613      via6522_device *via_1 = machine().device<via6522_device>("via6522_1");
614
615609      myo=offset-0x200;
616610      if ((myo>=0x00) && (myo<=0x07)) bbc_6845_w(space, myo-0x00, data);           /* Video Controller */
617611      if ((myo>=0x08) && (myo<=0x0f))
r26853r26854
629623      if ((myo>=0x30) && (myo<=0x33)) page_selectbm_w(space, myo-0x30, data);     /* page select */
630624      if ((myo>=0x34) && (myo<=0x37)) bbcm_ACCCON_write(space, myo-0x34, data);   /* ACCCON */
631625      //if ((myo>=0x38) && (myo<=0x3f))                                           /* NC ?? */
632      if ((myo>=0x40) && (myo<=0x5f)) via_0->write(space, myo-0x40, data);
633      if ((myo>=0x60) && (myo<=0x7f)) via_1->write(space, myo-0x60, data);
626      if ((myo>=0x40) && (myo<=0x5f)) m_via6522_0->write(space, myo-0x40, data);
627      if ((myo>=0x60) && (myo<=0x7f)) m_via6522_1->write(space, myo-0x60, data);
634628      //if ((myo>=0x80) && (myo<=0x9f))
635629      if ((myo>=0xa0) && (myo<=0xbf)) m_adlc->write(space, myo & 0x03, data);
636630      //if ((myo>=0xc0) && (myo<=0xdf))
r26853r26854
744738      "COL0", "COL1", "COL2", "COL3", "COL4",
745739      "COL5", "COL6", "COL7", "COL8", "COL9"
746740   };
747   via6522_device *via_0 = machine().device<via6522_device>("via6522_0");
748741
749742   /* only do auto scan if keyboard is not enabled */
750743   if (m_b3_keyboard == 1)
r26853r26854
760753              being pressed on the selected m_column */
761754         if ((ioport(colnames[m_column])->read() | 0x01) != 0xff)
762755         {
763            via_0->write_ca2(1);
756            m_via6522_0->write_ca2(1);
764757         }
765758         else
766759         {
767            via_0->write_ca2(0);
760            m_via6522_0->write_ca2(0);
768761         }
769762      }
770763      else
771764      {
772         via_0->write_ca2(0);
765         m_via6522_0->write_ca2(0);
773766      }
774767   }
775768}
r26853r26854
781774      "COL0", "COL1", "COL2", "COL3", "COL4",
782775      "COL5", "COL6", "COL7", "COL8", "COL9"
783776   };
784   via6522_device *via_0 = machine().device<via6522_device>("via6522_0");
785777
786778   /* only do auto scan if keyboard is not enabled */
787779   if (m_b3_keyboard == 1)
r26853r26854
799791              being pressed on the selected m_column */
800792         if ((ioport(colnames[m_column])->read() | 0x01) != 0xff)
801793         {
802            via_0->write_ca2(1);
794            m_via6522_0->write_ca2(1);
803795         }
804796         else
805797         {
806            via_0->write_ca2(0);
798            m_via6522_0->write_ca2(0);
807799         }
808800      }
809801      else
810802      {
811         via_0->write_ca2(0);
803         m_via6522_0->write_ca2(0);
812804      }
813805   }
814806}
r26853r26854
824816      "COL0", "COL1", "COL2", "COL3", "COL4",
825817      "COL5", "COL6", "COL7", "COL8", "COL9"
826818   };
827   via6522_device *via_0 = space.machine().device<via6522_device>("via6522_0");
828819
829820   m_column = data & 0x0f;
830821   row = (data>>4) & 0x07;
r26853r26854
848839
849840   if ((res | 1) != 0xff)
850841   {
851      via_0->write_ca2(1);
842      m_via6522_0->write_ca2(1);
852843   }
853844   else
854845   {
855      via_0->write_ca2(0);
846      m_via6522_0->write_ca2(0);
856847   }
857848
858849   return (data & 0x7f) | (bit<<7);
r26853r26854
11571148}
11581149
11591150
1160/* vertical sync pulse from video circuit */
1161READ_LINE_MEMBER(bbc_state::bbcb_via_system_read_ca1)
1162{
1163   return 0x01;
1164}
1165
1166
1167/* joystick EOC */
1168READ_LINE_MEMBER(bbc_state::bbcb_via_system_read_cb1)
1169{
1170   return uPD7002_EOC_r(machine().device("upd7002"), generic_space(), 0);
1171}
1172
1173
1174/* keyboard pressed detect */
1175READ_LINE_MEMBER(bbc_state::bbcb_via_system_read_ca2)
1176{
1177   return 0x01;
1178}
1179
1180
1181/* light pen strobe detect (not emulated) */
1182READ_LINE_MEMBER(bbc_state::bbcb_via_system_read_cb2)
1183{
1184   return 0x01;
1185}
1186
1187
11881151WRITE_LINE_MEMBER(bbc_state::bbcb_via_system_irq_w)
11891152{
11901153   m_via_system_irq = state;
r26853r26854
21602123   m_serproc_data = 0;
21612124   m_cass_out_enabled = 0;
21622125   m_tape_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(bbc_state::bbc_tape_timer_cb),this));
2126
2127   /* vertical sync pulse from video circuit */
2128   m_via6522_0->write_ca1(1);
2129
2130   /* light pen strobe detect (not emulated) */
2131   m_via6522_0->write_cb2(1);
21632132}
21642133
21652134DRIVER_INIT_MEMBER(bbc_state,bbcm)
r26853r26854
21702139   m_serproc_data = 0;
21712140   m_cass_out_enabled = 0;
21722141   m_tape_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(bbc_state::bbc_tape_timer_cb),this));
2142
2143   /* vertical sync pulse from video circuit */
2144   m_via6522_0->write_ca1(1);
2145
2146   /* light pen strobe detect (not emulated) */
2147   m_via6522_0->write_cb2(1);
21732148}
21742149
21752150MACHINE_START_MEMBER(bbc_state,bbca)
trunk/src/mess/includes/bbc.h
r26853r26854
4242      m_cassette(*this, "cassette"),
4343      m_acia(*this, "acia6850"),
4444      m_rs232(*this, RS232_TAG),
45      m_via6522_0(*this, "via6522_0"),
46      m_via6522_1(*this, "via6522_1"),
4547      m_ACCCON_IRR(CLEAR_LINE),
4648      m_via_system_irq(CLEAR_LINE),
4749      m_via_user_irq(CLEAR_LINE),
r26853r26854
6870   optional_device<cassette_image_device> m_cassette;
6971   optional_device<acia6850_device> m_acia;
7072   optional_device<rs232_port_device> m_rs232;
73   required_device<via6522_device> m_via6522_0;
74   optional_device<via6522_device> m_via6522_1;
7175
76
7277   void check_interrupts();
7378
7479   int m_DFSType;          // this stores the DIP switch setting for the DFS type being used
r26853r26854
332337   DECLARE_WRITE8_MEMBER(bbcb_via_system_write_portb);
333338   DECLARE_READ8_MEMBER(bbcb_via_system_read_porta);
334339   DECLARE_READ8_MEMBER(bbcb_via_system_read_portb);
335   DECLARE_READ_LINE_MEMBER(bbcb_via_system_read_ca1);
336   DECLARE_READ_LINE_MEMBER(bbcb_via_system_read_cb1);
337   DECLARE_READ_LINE_MEMBER(bbcb_via_system_read_ca2);
338   DECLARE_READ_LINE_MEMBER(bbcb_via_system_read_cb2);
339340   DECLARE_WRITE_LINE_MEMBER(bbcb_via_system_irq_w);
340341   DECLARE_READ8_MEMBER(bbcb_via_user_read_portb);
341342   DECLARE_WRITE8_MEMBER(bbcb_via_user_write_portb);
trunk/src/mess/drivers/bbc.c
r26853r26854
701701   MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000)
702702   MCFG_VIA6522_READPA_HANDLER(READ8(bbc_state, bbcb_via_system_read_porta))
703703   MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_system_read_portb))
704   MCFG_VIA6522_READCA1_HANDLER(READLINE(bbc_state, bbcb_via_system_read_ca1))
705   MCFG_VIA6522_READCB1_HANDLER(READLINE(bbc_state, bbcb_via_system_read_cb1))
706   MCFG_VIA6522_READCA2_HANDLER(READLINE(bbc_state, bbcb_via_system_read_ca2))
707   MCFG_VIA6522_READCB2_HANDLER(READLINE(bbc_state, bbcb_via_system_read_cb2))
708704   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_porta))
709705   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_portb))
710706   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_system_irq_w))
r26853r26854
913909   MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000)
914910   MCFG_VIA6522_READPA_HANDLER(READ8(bbc_state, bbcb_via_system_read_porta))
915911   MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_system_read_portb))
916   MCFG_VIA6522_READCA1_HANDLER(READLINE(bbc_state, bbcb_via_system_read_ca1))
917   MCFG_VIA6522_READCB1_HANDLER(READLINE(bbc_state, bbcb_via_system_read_cb1))
918   MCFG_VIA6522_READCA2_HANDLER(READLINE(bbc_state, bbcb_via_system_read_ca2))
919   MCFG_VIA6522_READCB2_HANDLER(READLINE(bbc_state, bbcb_via_system_read_cb2))
920912   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_porta))
921913   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_portb))
922914   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_system_irq_w))

Previous 199869 Revisions Next


© 1997-2024 The MAME Team