summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/pps41/mm76.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/pps41/mm76.h')
-rw-r--r--src/devices/cpu/pps41/mm76.h56
1 files changed, 53 insertions, 3 deletions
diff --git a/src/devices/cpu/pps41/mm76.h b/src/devices/cpu/pps41/mm76.h
index 8df0866f80a..2bc3c7af670 100644
--- a/src/devices/cpu/pps41/mm76.h
+++ b/src/devices/cpu/pps41/mm76.h
@@ -16,7 +16,28 @@
// pinout reference
/*
-...
+ ____ ____ ____ ____
+ A 1 |* \_/ | 42 BP BP 1 |* \_/ | 40 A
+ EXCLK 2 | | 41 DIO9 VC 2 | | 39 DIO9
+ CLKIN 3 | | 40 DIO8 XTLIN 3 | | 38 DIO8
+ VC 4 | | 39 N/C XTLOUT 4 | | 37 DIO7
+ Vdd 5 | | 38 DIO7 Vdd 5 | | 36 DIO6
+ Vss 6 | | 37 DIO6 PI2 6 | | 35 DIO5
+ TEST 7 | | 36 DIO5 TEST 7 | | 34 DIO4
+ PI2 8 | | 35 DIO4 PI6 8 | | 33 DIO3
+ PI6 9 | | 34 DIO3 PI1 9 | | 32 DIO2
+ PI1 10 | MM76 | 33 DIO2 PI5 10 | MM76L | 31 DIO1
+ PI5 11 | MM76E | 32 DIO1 PI7 11 | MM76EL | 30 DIO0
+ PI7 12 | | 31 DIO0 PI3 12 | | 29 CLOCK
+ PI3 13 | | 30 CLOCK PI8 13 | | 28 DATAO
+ PI8 14 | | 29 DATAO PI4 14 | | 27 DATAI
+ PI4 15 | | 28 DATAI PO 15 | | 26 RIO4
+ Vdd 16 | | 27 RIO4 INT0 16 | | 25 RIO3
+ PO 17 | | 26 RIO3 INT1 17 | | 24 RIO2
+ INT0 18 | | 25 RIO2 RIO5 18 | | 23 RIO1
+ INT1 19 | | 24 RIO1 RIO6 19 | | 22 RIO8
+ RIO5 20 | | 23 RIO8 Vss 20 |___________| 21 RIO7
+ RIO6 21 |___________| 22 RIO7
*/
@@ -26,6 +47,8 @@ public:
mm76_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
protected:
+ mm76_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -37,8 +60,8 @@ protected:
// device_execute_interface overrides
virtual void execute_one() override;
- void data_map(address_map &map);
- void program_map(address_map &map);
+ void data_48x4(address_map &map);
+ void program_0_6k(address_map &map);
// opcode helpers
u8 ram_r();
@@ -51,9 +74,36 @@ protected:
// opcode handlers
void op_nop();
+ virtual void op_ios();
+};
+
+class mm76l_device : public mm76_device
+{
+public:
+ mm76l_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+};
+
+class mm76e_device : public mm76_device
+{
+public:
+ mm76e_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+protected:
+ mm76e_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
+ void program_1k(address_map &map);
+};
+
+class mm76el_device : public mm76e_device
+{
+public:
+ mm76el_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
DECLARE_DEVICE_TYPE(MM76, mm76_device)
+DECLARE_DEVICE_TYPE(MM76L, mm76l_device)
+DECLARE_DEVICE_TYPE(MM76E, mm76e_device)
+DECLARE_DEVICE_TYPE(MM76EL, mm76el_device)
#endif // MAME_CPU_PPS41_MM76_H