summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/archimds.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/archimds.h')
-rw-r--r--src/mame/includes/archimds.h168
1 files changed, 0 insertions, 168 deletions
diff --git a/src/mame/includes/archimds.h b/src/mame/includes/archimds.h
deleted file mode 100644
index fd97d8414a3..00000000000
--- a/src/mame/includes/archimds.h
+++ /dev/null
@@ -1,168 +0,0 @@
-// license:LGPL-2.1+
-// copyright-holders:Angelo Salese, R. Belmont, Juergen Buchmueller
-/******************************************************************************
- *
- * Acorn Archimedes custom chips (IOC, MEMC, VIDC)
- *
- *****************************************************************************/
-
-#ifndef MAME_INCLUDES_ARCHIMEDES_H
-#define MAME_INCLUDES_ARCHIMEDES_H
-
-#include "cpu/arm/arm.h"
-#include "imagedev/floppy.h"
-#include "machine/aakart.h"
-#include "machine/pcf8583.h"
-#include "machine/wd_fdc.h"
-#include "machine/acorn_vidc.h"
-
-// interrupt definitions. these are for the real Archimedes computer - arcade
-// and gambling knockoffs likely are a bit different.
-
-#define ARCHIMEDES_IRQA_PRINTER_BUSY (0x01)
-#define ARCHIMEDES_IRQA_SERIAL_RING (0x02)
-#define ARCHIMEDES_IRQA_PRINTER_ACK (0x04)
-#define ARCHIMEDES_IRQA_VBL (0x08)
-#define ARCHIMEDES_IRQA_RESET (0x10)
-#define ARCHIMEDES_IRQA_TIMER0 (0x20)
-#define ARCHIMEDES_IRQA_TIMER1 (0x40)
-#define ARCHIMEDES_IRQA_FORCE (0x80)
-
-#define ARCHIMEDES_IRQB_PODULE_FIQ (0x01)
-#define ARCHIMEDES_IRQB_SOUND_EMPTY (0x02)
-#define ARCHIMEDES_IRQB_SERIAL (0x04)
-#define ARCHIMEDES_IRQB_HDD (0x08)
-#define ARCHIMEDES_IRQB_DISC_CHANGE (0x10)
-#define ARCHIMEDES_IRQB_PODULE_IRQ (0x20)
-#define ARCHIMEDES_IRQB_KBD_XMIT_EMPTY (0x40)
-#define ARCHIMEDES_IRQB_KBD_RECV_FULL (0x80)
-
-#define ARCHIMEDES_FIQ_FLOPPY_DRQ (0x01)
-#define ARCHIMEDES_FIQ_FLOPPY (0x02)
-#define ARCHIMEDES_FIQ_ECONET (0x04)
-#define ARCHIMEDES_FIQ_PODULE (0x40)
-#define ARCHIMEDES_FIQ_FORCE (0x80)
-
-class archimedes_state : public driver_device
-{
-public:
- archimedes_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_kart(*this, "kart"),
- m_maincpu(*this, "maincpu"),
- m_rtc(*this, "i2cmem"),
- m_vidc(*this, "vidc"),
- m_fdc(*this, "fdc"),
- m_floppy0(*this, "fdc:0"),
- m_floppy1(*this, "fdc:1"),
- m_region_maincpu(*this, "maincpu"),
- m_joy(*this, "joy_p%u",1)
- { }
-
- optional_device<aakart_device> m_kart;
- void archimedes_init();
- void archimedes_reset();
- void archimedes_driver_init();
-
- void archimedes_request_irq_a(int mask);
- void archimedes_request_irq_b(int mask);
- void archimedes_request_fiq(int mask);
- void archimedes_clear_irq_a(int mask);
- void archimedes_clear_irq_b(int mask);
- void archimedes_clear_fiq(int mask);
-
- uint32_t aristmk5_drame_memc_logical_r(offs_t offset);
- uint32_t archimedes_memc_logical_r(offs_t offset);
- void archimedes_memc_logical_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- void archimedes_memc_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- void archimedes_memc_page_w(uint32_t data);
- uint32_t archimedes_ioc_r(offs_t offset, uint32_t mem_mask = ~0);
- void archimedes_ioc_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- DECLARE_WRITE_LINE_MEMBER( a310_kart_rx_w );
- DECLARE_WRITE_LINE_MEMBER( a310_kart_tx_w );
-
- uint8_t m_i2c_clk;
- int16_t m_memc_pages[0x2000]; // the logical RAM area is 32 megs, and the smallest page size is 4k
- uint8_t m_ioc_regs[0x80/4];
-
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
-protected:
- required_device<arm_cpu_device> m_maincpu;
- optional_device<pcf8583_device> m_rtc;
- required_device<acorn_vidc10_device> m_vidc;
- optional_device<wd1772_device> m_fdc;
- optional_device<floppy_connector> m_floppy0;
- optional_device<floppy_connector> m_floppy1;
- required_memory_region m_region_maincpu;
- optional_ioport_array<2> m_joy;
-
- DECLARE_WRITE_LINE_MEMBER( vblank_irq );
- DECLARE_WRITE_LINE_MEMBER( sound_drq );
-
-private:
-
- static const device_timer_id TIMER_IOC = 3;
-
-// void vidc_vblank();
- void vidc_video_tick();
- void vidc_audio_tick();
- void ioc_timer(int param);
-
- void latch_timer_cnt(int tmr);
- void a310_set_timer(int tmr);
- uint32_t ioc_ctrl_r(offs_t offset);
- void ioc_ctrl_w(offs_t offset, uint32_t data);
-
- uint32_t *m_archimedes_memc_physmem;
- uint32_t m_memc_pagesize;
- int m_memc_latchrom;
- uint32_t m_ioc_timercnt[4], m_ioc_timerout[4];
- uint32_t m_vidc_vidstart, m_vidc_vidend, m_vidc_vidinit, m_vidc_vidcur, m_vidc_cinit;
- uint32_t m_vidc_sndstart, m_vidc_sndend, m_vidc_sndcur, m_vidc_sndendcur;
- uint8_t m_video_dma_on,m_audio_dma_on;
- bool m_cursor_enabled;
- emu_timer *m_timer[4];
- uint8_t m_floppy_select;
- bool check_floppy_ready();
- uint8_t m_joy_serial_data;
-};
-
-/* IOC registers */
-
-#define CONTROL 0x00/4
-#define KART 0x04/4 // Keyboard Asynchronous Receiver Transmitter
-
-#define IRQ_STATUS_A 0x10/4
-#define IRQ_REQUEST_A 0x14/4
-#define IRQ_MASK_A 0x18/4
-#define IRQ_STATUS_B 0x20/4
-#define IRQ_REQUEST_B 0x24/4
-#define IRQ_MASK_B 0x28/4
-
-#define FIQ_STATUS 0x30/4
-#define FIQ_REQUEST 0x34/4
-#define FIQ_MASK 0x38/4
-
-#define T0_LATCH_LO 0x40/4
-#define T0_LATCH_HI 0x44/4
-#define T0_GO 0x48/4
-#define T0_LATCH 0x4c/4
-
-#define T1_LATCH_LO 0x50/4
-#define T1_LATCH_HI 0x54/4
-#define T1_GO 0x58/4
-#define T1_LATCH 0x5c/4
-
-#define T2_LATCH_LO 0x60/4
-#define T2_LATCH_HI 0x64/4
-#define T2_GO 0x68/4
-#define T2_LATCH 0x6c/4
-
-#define T3_LATCH_LO 0x70/4
-#define T3_LATCH_HI 0x74/4
-#define T3_GO 0x78/4
-#define T3_LATCH 0x7c/4
-
-#endif // MAME_INCLUDES_ARCHIMEDES_H