2 EPSON HC-20 Emulator 'eHC-20'
4 Author : Takeda.Toshiya
14 #include "../../emu.h"
15 #include "../device.h"
17 #define SIG_MEMORY_PORT_2 0
18 #define SIG_MEMORY_PORT_3 1
19 #define SIG_MEMORY_PORT_4 2
20 #define SIG_MEMORY_SIO_MAIN 3
21 #define SIG_MEMORY_SIO_TF20 4
22 #define SIG_MEMORY_RTC_IRQ 5
24 #define CMT_BUFFER_SIZE 0x40000
29 class MEMORY : public DEVICE
33 DEVICE *d_cpu, *d_rtc, *d_sio_tf20;
40 // memory with expansion unit
41 uint8_t ram[0x8000]; // 0000h-7fffh
42 uint8_t rom[0x8000]; // 8000h-ffffh (internal)
43 uint8_t ext[0x4000]; // 8000h-bfffh
47 bool special_cmd_masked;
48 uint8_t slave_mem[0x10000];
59 double tone_table[57];
61 uint8_t key_stat[256], key_flag[256];
62 int key_data, key_strobe, key_intmask;
65 bool cmt_play, cmt_rec;
66 _TCHAR cmt_file_path[_MAX_PATH];
68 uint8_t cmt_buffer[CMT_BUFFER_SIZE];
77 scrntype_t lcd_render[32][120];
79 uint8_t lcd_select, lcd_data;
85 bool tmp_wbank_is_ext;
86 bool tmp_rbank_is_ext;
89 void update_keyboard();
91 void send_to_slave(uint8_t val);
92 void send_to_main(uint8_t val);
95 MEMORY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
97 set_device_name(_T("Memory Bus"));
105 void write_data8(uint32_t addr, uint32_t data);
106 uint32_t read_data8(uint32_t addr);
107 void write_signal(int id, uint32_t data, uint32_t mask);
108 void event_callback(int event_id, int err);
110 void save_state(FILEIO* state_fio);
111 bool load_state(FILEIO* state_fio);
114 void set_context_beep(BEEP* device)
118 void set_context_cpu(DEVICE* device)
122 void set_context_rtc(DEVICE* device)
126 void set_context_sio_tf20(DEVICE* device)
130 void notify_power_off();
131 void key_down(int code);
132 void key_up(int code);
133 void play_tape(const _TCHAR* file_path);
134 void rec_tape(const _TCHAR* file_path);
136 bool is_tape_inserted()
138 return (cmt_play || cmt_rec);