2 EPSON HC-80 Emulator 'eHC-80'
4 Author : Takeda.Toshiya
14 #include "../../emu.h"
15 #include "../device.h"
17 #define SIG_IO_RXRDY 0
18 #define SIG_IO_BARCODE 1
23 class IO : public DEVICE
26 DEVICE *d_cpu, *d_mem, *d_sio, *d_beep, *d_tf20;
39 void send_to_7508(uint8_t val);
40 uint8_t rec_from_7508();
41 FIFO *cmd7508_buf, *rsp7508_buf;
43 dll_cur_time_t cur_time;
45 bool onesec_intr, onesec_intr_enb;
46 bool alarm_intr, alarm_intr_enb;
49 void update_key(int code);
52 bool kb_rep_enb, kb_caps;
53 uint8_t kb_rep_spd1, kb_rep_spd2;
57 bool res_z80, res_7508;
61 uint8_t get_point(int x, int y);
62 void draw_point(int x, int y, uint16_t dot);
63 void draw_line(int sx, int sy, int ex, int ey, uint16_t ope);
65 FIFO *cmd6303_buf, *rsp6303_buf;
67 uint8_t basic[0x8000];
69 uint16_t cs_addr; // character screen starting address
70 uint16_t gs_addr; // graphics screen starting address
71 uint8_t lcd_on; // lcd on/off (0=off, others=on)
72 uint8_t scr_mode; // screen mode (0=graph, others=char)
73 uint16_t scr_ptr; // screen pointer (8000h-97ffh)
74 uint8_t num_lines; // number of lines
75 uint8_t curs_mode; // cursor mode
76 uint8_t curs_x; // cursor position
78 uint8_t wnd_ptr_x; // window pointer
80 uint8_t flash_block; // block flashing
81 uint8_t cs_blocks; // for character screen
82 uint8_t cs_block[40][3];
83 uint8_t gs_blocks; // for graphics screen
84 uint8_t gs_block[144][3];
86 uint8_t udgc[256][255+2];
88 uint8_t lcd[SCREEN_HEIGHT][SCREEN_WIDTH];
102 // intelligent ram disk
103 void iramdisk_write_data(uint8_t val);
104 void iramdisk_write_cmd(uint8_t val);
105 uint8_t iramdisk_read_data();
106 uint8_t iramdisk_read_stat();
107 uint8_t iramdisk_sectors[15][64][128];
108 uint8_t iramdisk_cmd;
109 int iramdisk_count,iramdisk_dest;
110 uint8_t iramdisk_buf[130];
111 uint8_t *iramdisk_ptr;
113 int tmp_iramdisk_size;
115 IO(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
117 set_device_name(_T("I/O Bus"));
126 void write_signal(int id, uint32_t data, uint32_t mask);
128 void event_callback(int event_id, int err);
129 void write_io8(uint32_t addr, uint32_t data);
130 uint32_t read_io8(uint32_t addr);
131 uint32_t get_intr_ack();
133 void save_state(FILEIO* state_fio);
134 bool load_state(FILEIO* state_fio);
137 void set_context_cpu(DEVICE* device)
141 void set_context_mem(DEVICE* device)
145 void set_context_sio(DEVICE* device)
149 void set_context_beep(DEVICE* device)
153 void set_context_tf20(DEVICE* device)
158 void key_down(int code);
159 void key_up(int code);