diff options
Diffstat (limited to 'src/devices/cpu/sm510/sm500.h')
-rw-r--r-- | src/devices/cpu/sm510/sm500.h | 85 |
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 |