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 ram[0x8000]; // 0000h-7fffh
42 uint8 rom[0x8000]; // 8000h-ffffh (internal)
43 uint8 ext[0x4000]; // 8000h-bfffh
47 bool special_cmd_masked;
48 uint8 slave_mem[0x10000];
59 double tone_table[57];
61 uint8 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 cmt_buffer[CMT_BUFFER_SIZE];
77 scrntype lcd_render[32][120];
79 uint8 lcd_select, lcd_data;
86 void update_keyboard();
88 void send_to_slave(uint8 val);
89 void send_to_main(uint8 val);
92 MEMORY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}
99 void write_data8(uint32 addr, uint32 data);
100 uint32 read_data8(uint32 addr);
101 void write_signal(int id, uint32 data, uint32 mask);
102 void event_callback(int event_id, int err);
103 void save_state(FILEIO* state_fio);
104 bool load_state(FILEIO* state_fio);
107 void set_context_beep(BEEP* device)
111 void set_context_cpu(DEVICE* device)
115 void set_context_rtc(DEVICE* device)
119 void set_context_sio_tf20(DEVICE* device)
123 void notify_power_off();
124 void key_down(int code);
125 void key_up(int code);
126 void play_tape(_TCHAR* file_path);
127 void rec_tape(_TCHAR* file_path);
131 return (cmt_play || cmt_rec);
133 int get_tape_ptr(void);