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 val);
40 uint8 rec_from_7508();
41 FIFO *cmd7508_buf, *rsp7508_buf;
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 kb_rep_spd1, kb_rep_spd2;
57 bool res_z80, res_7508;
61 uint8 get_point(int x, int y);
62 void draw_point(int x, int y, uint16 dot);
63 void draw_line(int sx, int sy, int ex, int ey, uint16 ope);
65 FIFO *cmd6303_buf, *rsp6303_buf;
69 uint16 cs_addr; // character screen starting address
70 uint16 gs_addr; // graphics screen starting address
71 uint8 lcd_on; // lcd on/off (0=off, others=on)
72 uint8 scr_mode; // screen mode (0=graph, others=char)
73 uint16 scr_ptr; // screen pointer (8000h-97ffh)
74 uint8 num_lines; // number of lines
75 uint8 curs_mode; // cursor mode
76 uint8 curs_x; // cursor position
78 uint8 wnd_ptr_x; // window pointer
80 uint8 flash_block; // block flashing
81 uint8 cs_blocks; // for character screen
82 uint8 cs_block[40][3];
83 uint8 gs_blocks; // for graphics screen
84 uint8 gs_block[144][3];
86 uint8 udgc[256][255+2];
88 uint8 lcd[SCREEN_HEIGHT][SCREEN_WIDTH];
102 // intelligent ram disk
103 void iramdisk_write_data(uint8 val);
104 void iramdisk_write_cmd(uint8 val);
105 uint8 iramdisk_read_data();
106 uint8 iramdisk_read_stat();
107 uint8 iramdisk_sectors[15][64][128];
109 int iramdisk_count,iramdisk_dest;
110 uint8 iramdisk_buf[130];
114 IO(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}
122 void write_signal(int id, uint32 data, uint32 mask);
124 void event_callback(int event_id, int err);
125 void write_io8(uint32 addr, uint32 data);
126 uint32 read_io8(uint32 addr);
128 void save_state(FILEIO* state_fio);
129 bool load_state(FILEIO* state_fio);
132 void set_context_cpu(DEVICE* device)
136 void set_context_mem(DEVICE* device)
140 void set_context_sio(DEVICE* device)
144 void set_context_beep(DEVICE* device)
148 void set_context_tf20(DEVICE* device)
153 void key_down(int code);
154 void key_up(int code);