2 CASIO FP-200 Emulator 'eFP-200'
4 Author : Takeda.Toshiya
14 #include "../../emu.h"
15 #include "../device.h"
22 class IO : public DEVICE
25 DEVICE *d_cpu, *d_drec, *d_rtc;
31 uint8_t screen[64][160];
39 int lcd_status, lcd_addr;
45 bool cmt_play_ready, cmt_play_signal, cmt_rec_ready;
47 bool cmt_rec, cmt_is_wav;
48 _TCHAR cmt_rec_file_path[_MAX_PATH];
50 uint8_t cmt_buffer[0x10000];
51 void cmt_write_buffer(uint8_t value, int samples);
56 bool in_d, in_ck, in_s, in_r;
64 } else if(in_s && !in_r) {
67 } else if(!in_s && !in_r) {
68 out_q = out_nq = true; // undetermined
69 } else if(!tmp_ck && in_ck) {
75 } b16_1, b16_2, g21_1, g21_2;
77 bool in_d0, in_d1, in_d2, in_d3, in_d4, in_d5, in_d6, in_d7;
78 bool in_a, in_b, in_c, in_s;
84 } else if(!in_a && !in_b && !in_c) {
86 } else if( in_a && !in_b && !in_c) {
88 } else if(!in_a && in_b && !in_c) {
90 } else if( in_a && in_b && !in_c) {
92 } else if(!in_a && !in_b && in_c) {
94 } else if( in_a && !in_b && in_c) {
96 } else if(!in_a && in_b && in_c) {
98 } else if( in_a && in_b && in_c) {
105 bool in_a, in_b, in_rc1, in_rc2;
106 bool out_qa, out_qb, out_qc;
108 uint8_t counter_a, counter_b;
111 if(in_rc1 && in_rc2) {
112 counter_a = counter_b = 0;
123 out_qa = ((counter_a & 1) != 0);
124 out_qb = ((counter_b & 1) != 0);
125 out_qc = ((counter_b & 2) != 0);
137 } else if(tmp_ck && !in_ck) {
141 out_q5 = ((counter & 0x10) != 0);
142 out_q6 = ((counter & 0x20) != 0);
148 const uint8_t* key_stat;
153 IO(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
155 set_device_name(_T("I/O Bus"));
163 void write_io8(uint32_t addr, uint32_t data);
164 uint32_t read_io8(uint32_t addr);
165 void write_io8w(uint32_t addr, uint32_t data, int* wait);
166 uint32_t read_io8w(uint32_t addr, int* wait);
167 void write_signal(int id, uint32_t data, uint32_t mask);
168 void event_callback(int event_id, int err);
170 void save_state(FILEIO* state_fio);
171 bool load_state(FILEIO* state_fio);
174 void set_context_cpu(DEVICE* device)
178 void set_context_drec(DEVICE* device)
182 void set_context_rtc(DEVICE* device)
186 void key_down(int code);
188 void rec_tape(const _TCHAR* file_path);
190 bool is_tape_inserted()
194 bool is_tape_playing()
198 bool is_tape_recording()
202 int get_tape_position()