Previous 199869 Revisions Next

r29315 Saturday 5th April, 2014 at 13:59:06 UTC by Curt Coder
(MESS) tandy2k: WIP. (nw)
[src/mess/drivers]tandy2k.c
[src/mess/includes]tandy2k.h

trunk/src/mess/includes/tandy2k.h
r29314r29315
9595      m_centronics_perror(0),
9696      m_centronics_busy(0)
9797   {
98      for (int i = 0; i < 4; i++)
99      {
100         m_busdmarq[i] = CLEAR_LINE;
101      }
98102   }
99103
100104   required_device<i80186_cpu_device> m_maincpu;
r29314r29315
122126
123127   virtual void machine_start();
124128
129   void update_drq();
130   void dma_request(int line, int state);
125131   void speaker_update();
126   void dma_request(int line, int state);
127132
128133   DECLARE_READ8_MEMBER( char_ram_r );
129134   DECLARE_WRITE8_MEMBER( char_ram_w );
r29314r29315
173178
174179   /* DMA state */
175180   UINT8 m_dma_mux;
181   int m_busdmarq[4];
176182
177183   /* keyboard state */
178184   int m_kbdclk;
trunk/src/mess/drivers/tandy2k.c
r29314r29315
1212
1313    TODO:
1414
15   - video
15   - video (video RAM is at memory top - 0x1400, i.e. 0x1ec00)
16    - DMA
17    - floppy
1618    - keyboard ROM
1719    - hires graphics board
18    - floppy 720K DSQD
19    - DMA
2020    - WD1010
2121    - hard disk
2222    - mouse
r29314r29315
2727
2828// Read/Write Handlers
2929
30void tandy2k_state::update_drq()
31{
32   int drq0 = CLEAR_LINE;
33   int drq1 = CLEAR_LINE;
34
35   for (int i = 0; i < 4; i++)
36   {
37      if (BIT(m_dma_mux, 0 + i))
38      {
39         if (BIT(m_dma_mux, 4 + i))
40            drq1 |= m_busdmarq[i];
41         else
42            drq0 |= m_busdmarq[i];
43      }
44   }
45
46   m_maincpu->drq0_w(drq0);
47   m_maincpu->drq1_w(drq1);
48}
49
3050void tandy2k_state::dma_request(int line, int state)
3151{
52   m_busdmarq[line] = state;
53   update_drq();
3254}
3355
3456void tandy2k_state::speaker_update()
r29314r29315
165187   int dme = (drq0 > 2) || (drq1 > 2);
166188
167189   m_pic1->ir6_w(dme);
190   
191   update_drq();
168192}
169193
170194READ8_MEMBER( tandy2k_state::kbint_clr_r )
r29314r29315
656680
657681void tandy2k_state::machine_start()
658682{
659   // memory banking
660683   address_space &program = m_maincpu->space(AS_PROGRAM);
661684   UINT8 *ram = m_ram->pointer();
662685   int ram_size = m_ram->size();
r29314r29315
665688
666689   m_char_ram.allocate(0x1000);
667690
691   // HACK these should be connected to FDC HLD output
692   m_floppy0->mon_w(0);
693   m_floppy1->mon_w(0);
694
668695   // register for state saving
669696   save_item(NAME(m_dma_mux));
670697   save_item(NAME(m_kbdclk));
r29314r29315
704731   MCFG_DEVICE_ADDRESS_MAP(AS_0, vpac_mem)
705732   MCFG_CRT9007_CHARACTER_WIDTH(10)
706733   MCFG_CRT9007_INT_CALLBACK(DEVWRITELINE(I8259A_1_TAG, pic8259_device, ir1_w))
707   //MCFG_CRT9007_DMAR_CALLBACK(80186 HOLD)
708734   MCFG_CRT9007_VS_CALLBACK(DEVWRITELINE(CRT9021B_TAG, crt9021_t, vsync_w))
709735   MCFG_CRT9007_VLT_CALLBACK(WRITELINE(tandy2k_state, vpac_vlt_w))
710736   MCFG_CRT9007_CURS_CALLBACK(DEVWRITELINE(CRT9021B_TAG, crt9021_t, cursor_w))
r29314r29315
758784   MCFG_PIC8259_ADD(I8259A_0_TAG, DEVWRITELINE(I80186_TAG, i80186_cpu_device, int0_w), VCC, NULL)
759785   MCFG_PIC8259_ADD(I8259A_1_TAG, DEVWRITELINE(I80186_TAG, i80186_cpu_device, int1_w), VCC, NULL)
760786   MCFG_I8272A_ADD(I8272A_TAG, true)
787   downcast<i8272a_device *>(device)->set_select_lines_connected(true);
761788   MCFG_UPD765_INTRQ_CALLBACK(DEVWRITELINE(I8259A_0_TAG, pic8259_device, ir4_w))
762789   MCFG_UPD765_DRQ_CALLBACK(WRITELINE(tandy2k_state, fdc_drq))
763790   MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":0", tandy2k_floppies, "525qd", floppy_image_device::default_floppy_formats)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team