102
102
static char *h8_get_ccr_str(h83xx_state *h8)
106
memset(res, 0, sizeof(res));
107
107
if(h8->h8iflag) strcat(res, "I"); else strcat(res, "i");
108
108
if(h8->h8uiflag)strcat(res, "U"); else strcat(res, "u");
109
109
if(h8->h8hflag) strcat(res, "H"); else strcat(res, "h");
224
224
h8->direct = &h8->program->direct();
225
225
h8->io = device->space(AS_IO);
227
state_save_register_device_item(device, 0, h8->h8err);
228
state_save_register_device_item_array(device, 0, h8->regs);
229
state_save_register_device_item(device, 0, h8->pc);
230
state_save_register_device_item(device, 0, h8->ppc);
231
state_save_register_device_item(device, 0, h8->h8_IRQrequestH);
232
state_save_register_device_item(device, 0, h8->h8_IRQrequestL);
233
state_save_register_device_item(device, 0, h8->ccr);
234
state_save_register_device_item(device, 0, h8->mode_8bit);
236
state_save_register_device_item_array(device, 0, h8->per_regs);
237
state_save_register_device_item(device, 0, h8->h8TSTR);
238
state_save_register_device_item_array(device, 0, h8->h8TCNT);
240
state_save_register_postload(device->machine, h8_onstateload, h8);
227
device->save_item(NAME(h8->h8err));
228
device->save_item(NAME(h8->regs));
229
device->save_item(NAME(h8->pc));
230
device->save_item(NAME(h8->ppc));
231
device->save_item(NAME(h8->h8_IRQrequestH));
232
device->save_item(NAME(h8->h8_IRQrequestL));
233
device->save_item(NAME(h8->ccr));
234
device->save_item(NAME(h8->mode_8bit));
236
device->save_item(NAME(h8->per_regs));
237
device->save_item(NAME(h8->h8TSTR));
238
device->save_item(NAME(h8->h8TCNT));
240
device->machine().state().register_postload(h8_onstateload, h8);
552
552
// On-board RAM and peripherals
553
static ADDRESS_MAP_START( h8_3002_internal_map, ADDRESS_SPACE_PROGRAM, 16 )
553
static ADDRESS_MAP_START( h8_3002_internal_map, AS_PROGRAM, 16 )
555
555
AM_RANGE(0xfffd10, 0xffff0f) AM_RAM
556
556
AM_RANGE(0xffff10, 0xffffff) AM_READWRITE( h8_itu_r, h8_itu_w )
559
static ADDRESS_MAP_START( h8_3044_internal_map, ADDRESS_SPACE_PROGRAM, 16 )
559
static ADDRESS_MAP_START( h8_3044_internal_map, AS_PROGRAM, 16 )
560
560
// 32k ROM, 2k RAM
561
561
AM_RANGE(0xfff710, 0xffff0f) AM_RAM
562
562
AM_RANGE(0xffff1c, 0xffffff) AM_READWRITE( h8_itu_r, h8_itu_w )
565
static ADDRESS_MAP_START( h8_3007_internal_map, ADDRESS_SPACE_PROGRAM, 16 )
565
static ADDRESS_MAP_START( h8_3007_internal_map, AS_PROGRAM, 16 )
566
566
// ROM-less, 4k RAM
567
567
AM_RANGE(0xfee000, 0xfee0ff) AM_READWRITE( h8_3007_itu1_r, h8_3007_itu1_w )
568
568
AM_RANGE(0xffef20, 0xffff1f) AM_RAM
588
588
case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 10; break;
591
case DEVINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break;
592
case DEVINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 24; break;
593
case DEVINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break;
594
case DEVINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break;
595
case DEVINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break;
596
case DEVINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break;
597
case DEVINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 8; break;
598
case DEVINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 16; break;
599
case DEVINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break;
591
case DEVINFO_INT_DATABUS_WIDTH + AS_PROGRAM: info->i = 16; break;
592
case DEVINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM: info->i = 24; break;
593
case DEVINFO_INT_ADDRBUS_SHIFT + AS_PROGRAM: info->i = 0; break;
594
case DEVINFO_INT_DATABUS_WIDTH + AS_DATA: info->i = 0; break;
595
case DEVINFO_INT_ADDRBUS_WIDTH + AS_DATA: info->i = 0; break;
596
case DEVINFO_INT_ADDRBUS_SHIFT + AS_DATA: info->i = 0; break;
597
case DEVINFO_INT_DATABUS_WIDTH + AS_IO: info->i = 8; break;
598
case DEVINFO_INT_ADDRBUS_WIDTH + AS_IO: info->i = 16; break;
599
case DEVINFO_INT_ADDRBUS_SHIFT + AS_IO: info->i = 0; break;
602
case DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = ADDRESS_MAP_NAME(h8_3002_internal_map); break;
603
case DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map16 = NULL; break;
604
case DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map16 = NULL; break;
602
case DEVINFO_PTR_INTERNAL_MEMORY_MAP + AS_PROGRAM: info->internal_map16 = ADDRESS_MAP_NAME(h8_3002_internal_map); break;
603
case DEVINFO_PTR_INTERNAL_MEMORY_MAP + AS_DATA: info->internal_map16 = NULL; break;
604
case DEVINFO_PTR_INTERNAL_MEMORY_MAP + AS_IO: info->internal_map16 = NULL; break;
606
606
// CPU misc parameters
607
607
case DEVINFO_STR_NAME: strcpy(info->s, "H8/3002"); break;
651
case DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = ADDRESS_MAP_NAME(h8_3044_internal_map); break;
651
case DEVINFO_PTR_INTERNAL_MEMORY_MAP + AS_PROGRAM: info->internal_map16 = ADDRESS_MAP_NAME(h8_3044_internal_map); break;
652
652
case CPUINFO_FCT_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(h8_24); break;
653
653
case DEVINFO_STR_NAME: strcpy(info->s, "H8/3044"); break;
663
case DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = ADDRESS_MAP_NAME(h8_3007_internal_map); break;
663
case DEVINFO_PTR_INTERNAL_MEMORY_MAP + AS_PROGRAM: info->internal_map16 = ADDRESS_MAP_NAME(h8_3007_internal_map); break;
664
664
case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(h8_3007); break;
665
665
case DEVINFO_STR_NAME: strcpy(info->s, "H8/3007"); break;