#define EVENT_1SEC 1
#define EVENT_6303 2
+namespace HC80 {
+
static const int key_tbl[256] = {
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x56,0x57,0xff,0xff,0xff,0x71,0xff,0xff,
0xb3,0xb2,0xff,0x10,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,
DLL_PREFIX_I struct cur_time_s cur_time;
#endif
-void HC80_IO::initialize()
+void IO::initialize()
{
// config
device_type = config.device_type;
register_event_by_clock(this, EVENT_6303, 100, true, NULL);
}
-void HC80_IO::release()
+void IO::release()
{
// save external ram disk
FILEIO* fio = new FILEIO();
delete key_buf;
}
-void HC80_IO::reset()
+void IO::reset()
{
// reset gapnit
bcr = slbcr = isr = ier = ioctlr = 0;
iramdisk_ptr = iramdisk_buf;
}
-void HC80_IO::sysreset()
+void IO::sysreset()
{
// reset 7508
onesec_intr = alarm_intr = false;
res_7508 = true;
}
-void HC80_IO::write_signal(int id, uint32_t data, uint32_t mask)
+void IO::write_signal(int id, uint32_t data, uint32_t mask)
{
if(id == SIG_IO_RXRDY) {
// notify rxrdy is changed from i8251
}
}
-void HC80_IO::event_frame()
+void IO::event_frame()
{
d_beep->write_signal(SIG_BEEP_ON, beep ? 1 : 0, 1);
beep = false;
blink++;
}
-void HC80_IO::event_callback(int event_id, int err)
+void IO::event_callback(int event_id, int err)
{
if(event_id == EVENT_FRC) {
// FRC overflow event
}
}
-void HC80_IO::write_io8(uint32_t addr, uint32_t data)
+void IO::write_io8(uint32_t addr, uint32_t data)
{
//this->out_debug_log(_T("OUT %2x,%2x\n"), addr & 0xff, data);
switch(addr & 0xff) {
}
}
-uint32_t HC80_IO::read_io8(uint32_t addr)
+uint32_t IO::read_io8(uint32_t addr)
{
uint32_t val = 0xff;
// this->out_debug_log(_T("IN %2x\n"), addr & 0xff);
return 0xff;
}
-uint32_t HC80_IO::get_intr_ack()
+uint32_t IO::get_intr_ack()
{
if(isr & BIT_7508) {
isr &= ~BIT_7508;
return 0xff;
}
-void HC80_IO::update_intr()
+void IO::update_intr()
{
// set int signal
bool next = ((isr & ier & 0x3f) != 0);
// 7508
// ----------------------------------------------------------------------------
-void HC80_IO::send_to_7508(uint8_t val)
+void IO::send_to_7508(uint8_t val)
{
int res;
}
}
-uint8_t HC80_IO::rec_from_7508()
+uint8_t IO::rec_from_7508()
{
return rsp7508_buf->read();
}
-void HC80_IO::key_down(int code)
+void IO::key_down(int code)
{
if(code == 0x14) {
// toggle caps lock
}
}
-void HC80_IO::key_up(int code)
+void IO::key_up(int code)
{
if(code == 0x10) {
update_key(0xa3); // break shift
}
}
-void HC80_IO::update_key(int code)
+void IO::update_key(int code)
{
if(code != 0xff) {
// add to buffer
// 6303
// ----------------------------------------------------------------------------
-void HC80_IO::process_6303()
+void IO::process_6303()
{
switch(cmd6303) {
case 0x00:
}
}
-uint8_t HC80_IO::get_point(int x, int y)
+uint8_t IO::get_point(int x, int y)
{
if(0 <= x && x < 480 && 0 <= y && y < 64) {
uint8_t bit = dot_tbl[x & 7];
return 0;
}
-void HC80_IO::draw_point(int x, int y, uint16_t dot)
+void IO::draw_point(int x, int y, uint16_t dot)
{
if(0 <= x && x < 480 && 0 <= y && y < 64) {
uint8_t bit = dot_tbl[x & 7];
}
}
-void HC80_IO::draw_line(int sx, int sy, int ex, int ey, uint16_t ope)
+void IO::draw_line(int sx, int sy, int ex, int ey, uint16_t ope)
{
int next_x = sx, next_y = sy;
int delta_x = abs(ex - sx) * 2;
BANK: 1 or 2
*/
-void HC80_IO::iramdisk_write_data(uint8_t val)
+void IO::iramdisk_write_data(uint8_t val)
{
if(iramdisk_dest == IRAMDISK_IN && iramdisk_count) {
*(iramdisk_ptr++) = val;
}
}
-void HC80_IO::iramdisk_write_cmd(uint8_t val)
+void IO::iramdisk_write_cmd(uint8_t val)
{
iramdisk_cmd = val;
iramdisk_count = 0;
}
}
-uint8_t HC80_IO::iramdisk_read_data()
+uint8_t IO::iramdisk_read_data()
{
if(iramdisk_dest == IRAMDISK_OUT) {
if(iramdisk_count) {
return 0;
}
-uint8_t HC80_IO::iramdisk_read_stat()
+uint8_t IO::iramdisk_read_stat()
{
if(iramdisk_dest == IRAMDISK_OUT) {
return IRAMDISK_WAIT;
// ----------------------------------------------------------------------------
-void HC80_IO::draw_screen()
+void IO::draw_screen()
{
if(lcd_on) {
memset(lcd, 0, sizeof(lcd));
#define STATE_VERSION 1
-bool HC80_IO::process_state(FILEIO* state_fio, bool loading)
+bool IO::process_state(FILEIO* state_fio, bool loading)
{
if(!state_fio->StateCheckUint32(STATE_VERSION)) {
return false;
}
return true;
}
+
+}