summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/sm510/sm500.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/sm510/sm500.h')
-rw-r--r--src/devices/cpu/sm510/sm500.h85
1 files changed, 19 insertions, 66 deletions
diff --git a/src/devices/cpu/sm510/sm500.h b/src/devices/cpu/sm510/sm500.h
index 6514a6e1b78..04cc902e90f 100644
--- a/src/devices/cpu/sm510/sm500.h
+++ b/src/devices/cpu/sm510/sm500.h
@@ -11,7 +11,7 @@
#pragma once
-#include "sm510.h"
+#include "sm510base.h"
// pinout reference
@@ -23,46 +23,32 @@
________________________________________________
| |
O23 37 | | 24 OS2
+ | |
O13 38 | | 23 OS3
+ | |
O44 39 | | 22 OS4
+ | |
O34 40 | | 21 H1
+ | |
O24 41 | | 20 H2
-O14 42 | SM500 | 19 Vm
+ | |
+O14 42 | | 19 Vm
+ | SM500 |
O45 43 | | 18 OSCin
+ | |
O35 44 | | 17 OSCout
+ | |
O25 45 | | 16 Vdd
+ | |
O15 46 | | 15 K4
+ | |
O46 47 | | 14 K3
-O36 48 | * | 13 K2
+ | |
+O36 48 | * | 13 K2
|________________________________________________/
- 1 2 3 4 5 6 7 8 9 10 11 12
- O26 O16 R4 R3 R2 R1 GND _T bt al ACL K1 note: bt = beta symbol, al = alpha symbol
-
-
- OS2 OS3 OS4 K4 K3 K2 K1 GND al bt ACL _R1 _Tp NC NC note: on SM5L, pin 31=V1, 32=V2, 33=NC
- 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31
- ____________________________________________________________
- | |
-OS1 46 | | 30 H1
-O41 47 | | 29 H2
-O31 48 | | 28 Vm
-O21 49 | | 27 Vdd
-O11 50 | | 26 _R2
-O42 51 | | 25 _R3
-O32 52 | SM5A | 24 _R4
-O22 53 | SM5L | 23 OSCin
-O12 54 | | 22 OSCout
-O43 55 | | 21 _T2
-O33 56 | | 20 _T1
-O23 57 | | 19 O18
-O13 58 | | 18 O28
-O44 59 | | 17 O38
-O34 60 | * | 16 O48
- |____________________________________________________________/
-
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- O24 O14 O45 O35 O25 O15 O46 GND O36 O26 O16 O47 O37 O27 O17
+ 1 2 3 4 5 6 7 8 9 10 11 12
+ O26 O16 R4 R3 R2 R1 GND _T β α ACL K1
*/
class sm500_device : public sm510_base_device
@@ -80,7 +66,7 @@ protected:
virtual void device_reset() override;
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
virtual void execute_one() override;
- virtual void get_opcode_param() override;
+ virtual bool op_argument() override;
virtual void clock_melody() override;
virtual void reset_vector() override { do_branch(0, 0xf, 0); }
@@ -92,7 +78,6 @@ protected:
int m_o_pins; // number of 4-bit O pins
u8 m_ox[9]; // W' latch, max 9
u8 m_o[9]; // W latch
- u8 m_cn;
u8 m_mx;
u8 m_cb;
@@ -101,11 +86,12 @@ protected:
void shift_w();
u8 get_digit();
+
+ // opcode handlers
void set_su(u8 su) { m_stack[0] = (m_stack[0] & ~0x3c0) | (su << 6 & 0x3c0); }
u8 get_su() { return m_stack[0] >> 6 & 0xf; }
virtual int get_trs_field() { return 0; }
- // opcode handlers
virtual void op_lb() override;
virtual void op_incb() override;
virtual void op_sbm() override;
@@ -117,7 +103,6 @@ protected:
virtual void op_tr();
virtual void op_trs();
- virtual void op_atbp() override;
virtual void op_ptw() override;
virtual void op_tw();
virtual void op_pdtw();
@@ -137,38 +122,6 @@ protected:
};
-class sm5a_device : public sm500_device
-{
-public:
- sm5a_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 32768);
-
-protected:
- sm5a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int o_pins, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
-
- void program_1_8k(address_map &map);
- void data_5x13x4(address_map &map);
-
- virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
- virtual void execute_one() override;
- virtual int get_trs_field() override { return 1; }
-};
-
-class sm5l_device : public sm5a_device
-{
-public:
- sm5l_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 32768);
-};
-
-class kb1013vk12_device : public sm5a_device
-{
-public:
- kb1013vk12_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 32768);
-};
-
-
DECLARE_DEVICE_TYPE(SM500, sm500_device)
-DECLARE_DEVICE_TYPE(SM5A, sm5a_device)
-DECLARE_DEVICE_TYPE(SM5L, sm5l_device)
-DECLARE_DEVICE_TYPE(KB1013VK12, kb1013vk12_device)
#endif // MAME_CPU_SM510_SM500_H