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 0x10000
29 class MEMORY : public DEVICE
33 DEVICE *d_cpu, *d_rtc, *d_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];
60 double tone_table[57];
62 uint8 key_stat[256], key_flag[256];
63 int key_data, key_strobe, key_intmask;
65 uint8 cmt_buffer[CMT_BUFFER_SIZE];
67 bool cmt_play, cmt_rec;
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);
105 void set_context_beep(BEEP* device)
109 void set_context_cpu(DEVICE* device)
113 void set_context_rtc(DEVICE* device)
117 void set_context_tf20(DEVICE* device)
121 void notify_power_off();
122 void key_down(int code);
123 void key_up(int code);
124 void play_tape(_TCHAR* file_path);
125 void rec_tape(_TCHAR* file_path);
129 return (cmt_play || cmt_rec);