2 CASIO FP-1100 Emulator 'eFP-1100'
4 Author : Takeda.Toshiya
14 #include "../../emu.h"
15 #include "../device.h"
17 #define SIG_SUB_INT2 0
18 #define SIG_SUB_COMM 1
19 #define SIG_SUB_HSYNC 2
25 class SUB : public DEVICE
40 uint8_t *wbank[0x200];
41 uint8_t *rbank[0x200];
46 uint8_t vram_b[0x4000];
47 uint8_t vram_r[0x4000];
48 uint8_t vram_g[0x4000];
61 bool in_d, in_ck, in_s, in_r;
69 } else if(in_s && !in_r) {
72 } else if(!in_s && !in_r) {
73 out_q = out_nq = true; // undetermined
74 } else if(!tmp_ck && in_ck) {
80 } b16_1, b16_2, g21_1, g21_2;
84 bool in_d0, in_d1, in_d2, in_d3, in_d4, in_d5, in_d6, in_d7;
85 bool in_a, in_b, in_c, in_s;
91 } else if(!in_a && !in_b && !in_c) {
93 } else if( in_a && !in_b && !in_c) {
95 } else if(!in_a && in_b && !in_c) {
97 } else if( in_a && in_b && !in_c) {
99 } else if(!in_a && !in_b && in_c) {
101 } else if( in_a && !in_b && in_c) {
103 } else if(!in_a && in_b && in_c) {
105 } else if( in_a && in_b && in_c) {
114 bool in_a, in_b, in_rc1, in_rc2;
115 bool out_qa, out_qb, out_qc;
117 uint8_t counter_a, counter_b;
120 if(in_rc1 && in_rc2) {
121 counter_a = counter_b = 0;
132 out_qa = ((counter_a & 1) != 0);
133 out_qb = ((counter_b & 1) != 0);
134 out_qc = ((counter_b & 2) != 0);
148 } else if(tmp_ck && !in_ck) {
152 out_q5 = ((counter & 0x10) != 0);
153 out_q6 = ((counter & 0x20) != 0);
159 const uint8_t *key_stat;
160 uint8_t key_sel, key_data;
165 uint8_t screen[400][640];
166 scrntype_t palette_pc[8];
171 SUB(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
173 set_device_name(_T("Sub CPU Bus"));
180 void write_data8(uint32_t addr, uint32_t data);
181 uint32_t read_data8(uint32_t addr);
182 void write_io8(uint32_t addr, uint32_t data);
183 uint32_t read_io8(uint32_t addr);
184 void write_signal(int id, uint32_t data, uint32_t mask);
186 void event_callback(int event_id, int err);
187 bool process_state(FILEIO* state_fio, bool loading);
190 void set_context_cpu(DEVICE *device)
194 void set_context_main(DEVICE *device)
198 void set_context_beep(DEVICE *device)
202 void set_context_drec(DEVICE *device)
206 void set_context_crtc(HD46505 *device, uint8_t *ptr)
211 void key_down(int code);
212 void key_up(int code);