~ubuntu-branches/debian/sid/mame/sid

« back to all changes in this revision

Viewing changes to src/emu/cpu/mcs48/mcs48.c

  • Committer: Bazaar Package Importer
  • Author(s): Jordi Mallach, Emmanuel Kasper, Félix Arreola Rodríguez, Jordi Mallach
  • Date: 2011-05-11 21:06:50 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20110511210650-jizvh8a6x117y9hr
Tags: 0.142-1
[ Emmanuel Kasper ]
* New upstream release
* Set NOWERROR=1 to allow compiling with gcc-4.6
* Remove fix_powerpc_build.patch, as upstream has taken it in this release
* Add gnome-video-arcade front end as a suggested package

[ Félix Arreola Rodríguez ]
* Add kfreebsd-build.patch to quilt series, to fix build on kfreebsd

[ Jordi Mallach ]
* Remove unneeded and bogus addition of --with-quilt to the dh invocation.
* Add Cesare Falco (long time Ubuntu maintainer) to Uploaders, and wrap
  them into multiple lines.

Show diffs side-by-side

added added

removed removed

Lines of Context:
175
175
    MACROS
176
176
***************************************************************************/
177
177
 
178
 
/* ROM is mapped to ADDRESS_SPACE_PROGRAM */
 
178
/* ROM is mapped to AS_PROGRAM */
179
179
#define program_r(a)    cpustate->program->read_byte(a)
180
180
 
181
 
/* RAM is mapped to ADDRESS_SPACE_DATA */
 
181
/* RAM is mapped to AS_DATA */
182
182
#define ram_r(a)                cpustate->data->read_byte(a)
183
183
#define ram_w(a,V)              cpustate->data->write_byte(a, V)
184
184
 
185
 
/* ports are mapped to ADDRESS_SPACE_IO */
 
185
/* ports are mapped to AS_IO */
186
186
#define ext_r(a)                cpustate->io->read_byte(a)
187
187
#define ext_w(a,V)              cpustate->io->write_byte(a, V)
188
188
#define port_r(a)               cpustate->io->read_byte(MCS48_PORT_P0 + a)
897
897
        /* ensure that regptr is valid before get_info gets called */
898
898
        update_regptr(cpustate);
899
899
 
900
 
        state_save_register_device_item(device, 0, cpustate->prevpc);
901
 
        state_save_register_device_item(device, 0, cpustate->pc);
902
 
 
903
 
        state_save_register_device_item(device, 0, cpustate->a);
904
 
        state_save_register_device_item(device, 0, cpustate->psw);
905
 
        state_save_register_device_item(device, 0, cpustate->p1);
906
 
        state_save_register_device_item(device, 0, cpustate->p2);
907
 
        state_save_register_device_item(device, 0, cpustate->ea);
908
 
        state_save_register_device_item(device, 0, cpustate->timer);
909
 
        state_save_register_device_item(device, 0, cpustate->prescaler);
910
 
        state_save_register_device_item(device, 0, cpustate->t1_history);
911
 
        state_save_register_device_item(device, 0, cpustate->sts);
912
 
        state_save_register_device_item(device, 0, cpustate->dbbi);
913
 
        state_save_register_device_item(device, 0, cpustate->dbbo);
914
 
 
915
 
        state_save_register_device_item(device, 0, cpustate->irq_state);
916
 
        state_save_register_device_item(device, 0, cpustate->irq_in_progress);
917
 
        state_save_register_device_item(device, 0, cpustate->timer_overflow);
918
 
        state_save_register_device_item(device, 0, cpustate->timer_flag);
919
 
        state_save_register_device_item(device, 0, cpustate->tirq_enabled);
920
 
        state_save_register_device_item(device, 0, cpustate->xirq_enabled);
921
 
        state_save_register_device_item(device, 0, cpustate->timecount_enabled);
922
 
        state_save_register_device_item(device, 0, cpustate->flags_enabled);
923
 
        state_save_register_device_item(device, 0, cpustate->dma_enabled);
924
 
 
925
 
        state_save_register_device_item(device, 0, cpustate->a11);
 
900
        device->save_item(NAME(cpustate->prevpc));
 
901
        device->save_item(NAME(cpustate->pc));
 
902
 
 
903
        device->save_item(NAME(cpustate->a));
 
904
        device->save_item(NAME(cpustate->psw));
 
905
        device->save_item(NAME(cpustate->p1));
 
906
        device->save_item(NAME(cpustate->p2));
 
907
        device->save_item(NAME(cpustate->ea));
 
908
        device->save_item(NAME(cpustate->timer));
 
909
        device->save_item(NAME(cpustate->prescaler));
 
910
        device->save_item(NAME(cpustate->t1_history));
 
911
        device->save_item(NAME(cpustate->sts));
 
912
        device->save_item(NAME(cpustate->dbbi));
 
913
        device->save_item(NAME(cpustate->dbbo));
 
914
 
 
915
        device->save_item(NAME(cpustate->irq_state));
 
916
        device->save_item(NAME(cpustate->irq_in_progress));
 
917
        device->save_item(NAME(cpustate->timer_overflow));
 
918
        device->save_item(NAME(cpustate->timer_flag));
 
919
        device->save_item(NAME(cpustate->tirq_enabled));
 
920
        device->save_item(NAME(cpustate->xirq_enabled));
 
921
        device->save_item(NAME(cpustate->timecount_enabled));
 
922
        device->save_item(NAME(cpustate->flags_enabled));
 
923
        device->save_item(NAME(cpustate->dma_enabled));
 
924
 
 
925
        device->save_item(NAME(cpustate->a11));
926
926
}
927
927
 
928
928
 
1215
1215
void upi41_master_w(device_t *_device, UINT8 a0, UINT8 data)
1216
1216
{
1217
1217
        legacy_cpu_device *device = downcast<legacy_cpu_device *>(_device);
1218
 
        timer_call_after_resynch(device->machine, (void *)device, (a0 << 8) | data, master_callback);
 
1218
        device->machine().scheduler().synchronize(FUNC(master_callback), (a0 << 8) | data, (void *)device);
1219
1219
}
1220
1220
 
1221
1221
 
1225
1225
***************************************************************************/
1226
1226
 
1227
1227
/* FIXME: the memory maps should probably support rom banking for EA */
1228
 
static ADDRESS_MAP_START(program_10bit, ADDRESS_SPACE_PROGRAM, 8)
 
1228
static ADDRESS_MAP_START(program_10bit, AS_PROGRAM, 8)
1229
1229
        AM_RANGE(0x000, 0x3ff) AM_ROM
1230
1230
ADDRESS_MAP_END
1231
1231
 
1232
 
static ADDRESS_MAP_START(program_11bit, ADDRESS_SPACE_PROGRAM, 8)
 
1232
static ADDRESS_MAP_START(program_11bit, AS_PROGRAM, 8)
1233
1233
        AM_RANGE(0x000, 0x7ff) AM_ROM
1234
1234
ADDRESS_MAP_END
1235
1235
 
1236
 
static ADDRESS_MAP_START(program_12bit, ADDRESS_SPACE_PROGRAM, 8)
 
1236
static ADDRESS_MAP_START(program_12bit, AS_PROGRAM, 8)
1237
1237
        AM_RANGE(0x000, 0xfff) AM_ROM
1238
1238
ADDRESS_MAP_END
1239
1239
 
1240
 
static ADDRESS_MAP_START(data_6bit, ADDRESS_SPACE_DATA, 8)
 
1240
static ADDRESS_MAP_START(data_6bit, AS_DATA, 8)
1241
1241
        AM_RANGE(0x00, 0x3f) AM_RAM
1242
1242
ADDRESS_MAP_END
1243
1243
 
1244
 
static ADDRESS_MAP_START(data_7bit, ADDRESS_SPACE_DATA, 8)
 
1244
static ADDRESS_MAP_START(data_7bit, AS_DATA, 8)
1245
1245
        AM_RANGE(0x00, 0x7f) AM_RAM
1246
1246
ADDRESS_MAP_END
1247
1247
 
1248
 
static ADDRESS_MAP_START(data_8bit, ADDRESS_SPACE_DATA, 8)
 
1248
static ADDRESS_MAP_START(data_8bit, AS_DATA, 8)
1249
1249
        AM_RANGE(0x00, 0xff) AM_RAM
1250
1250
ADDRESS_MAP_END
1251
1251
 
1375
1375
                case CPUINFO_INT_MIN_CYCLES:                                    info->i = 1;                                                    break;
1376
1376
                case CPUINFO_INT_MAX_CYCLES:                                    info->i = 3;                                                    break;
1377
1377
 
1378
 
                case DEVINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM:                 info->i = 8;                                                    break;
1379
 
                case DEVINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM:                 info->i = 12;                                                   break;
1380
 
                case DEVINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM:                 info->i = 0;                                                    break;
1381
 
                case DEVINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA:                    info->i = 8;                                                    break;
1382
 
                case DEVINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA:                    /*info->i = 6 or 7 or 8;*/                              break;
1383
 
                case DEVINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA:                    info->i = 0;                                                    break;
1384
 
                case DEVINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO:                              info->i = 8;                                                    break;
1385
 
                case DEVINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO:                              info->i = 9;                                                    break;
1386
 
                case DEVINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO:                              info->i = 0;                                                    break;
 
1378
                case DEVINFO_INT_DATABUS_WIDTH + AS_PROGRAM:                    info->i = 8;                                                    break;
 
1379
                case DEVINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM:            info->i = 12;                                                   break;
 
1380
                case DEVINFO_INT_ADDRBUS_SHIFT + AS_PROGRAM:                    info->i = 0;                                                    break;
 
1381
                case DEVINFO_INT_DATABUS_WIDTH + AS_DATA:                       info->i = 8;                                                    break;
 
1382
                case DEVINFO_INT_ADDRBUS_WIDTH + AS_DATA:                       /*info->i = 6 or 7 or 8;*/                              break;
 
1383
                case DEVINFO_INT_ADDRBUS_SHIFT + AS_DATA:                       info->i = 0;                                                    break;
 
1384
                case DEVINFO_INT_DATABUS_WIDTH + AS_IO:                         info->i = 8;                                                    break;
 
1385
                case DEVINFO_INT_ADDRBUS_WIDTH + AS_IO:                         info->i = 9;                                                    break;
 
1386
                case DEVINFO_INT_ADDRBUS_SHIFT + AS_IO:                         info->i = 0;                                                    break;
1387
1387
 
1388
1388
                case CPUINFO_INT_INPUT_STATE + MCS48_INPUT_IRQ: info->i = cpustate->irq_state ? ASSERT_LINE : CLEAR_LINE; break;
1389
1389
                case CPUINFO_INT_INPUT_STATE + MCS48_INPUT_EA:  info->i = cpustate->ea;                                 break;
1400
1400
 
1401
1401
                /* --- the following bits of info are returned as pointers --- */
1402
1402
                case CPUINFO_PTR_INSTRUCTION_COUNTER:                   info->icount = &cpustate->icount;               break;
1403
 
                case DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM:   /* set per-core */                                              break;
1404
 
                case DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA:              /* set per-core */                                              break;
 
1403
                case DEVINFO_PTR_INTERNAL_MEMORY_MAP + AS_PROGRAM:      /* set per-core */                                              break;
 
1404
                case DEVINFO_PTR_INTERNAL_MEMORY_MAP + AS_DATA:         /* set per-core */                                              break;
1405
1405
 
1406
1406
                /* --- the following bits of info are returned as NULL-terminated strings --- */
1407
1407
                case DEVINFO_STR_NAME:                                                  /* set per-core */                                              break;
1423
1423
        switch (state)
1424
1424
        {
1425
1425
                /* --- the following bits of info are returned as 64-bit signed integers --- */
1426
 
                case DEVINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA:
 
1426
                case DEVINFO_INT_ADDRBUS_WIDTH + AS_DATA:
1427
1427
                        if (ramsize == 64)
1428
1428
                                info->i = 6;
1429
1429
                        else if (ramsize == 128)
1456
1456
                        break;
1457
1457
 
1458
1458
                /* --- the following bits of info are returned as pointers --- */
1459
 
                case DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM:
 
1459
                case DEVINFO_PTR_INTERNAL_MEMORY_MAP + AS_PROGRAM:
1460
1460
                        if (romsize == 0)
1461
1461
                                info->internal_map8 = NULL;
1462
1462
                        else if (romsize == 1024)
1469
1469
                                fatalerror("mcs48_generic_get_info: Invalid RAM size");
1470
1470
                        break;
1471
1471
 
1472
 
                case DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA:
 
1472
                case DEVINFO_PTR_INTERNAL_MEMORY_MAP + AS_DATA:
1473
1473
                        if (ramsize == 64)
1474
1474
                                info->internal_map8 = ADDRESS_MAP_NAME(data_6bit);
1475
1475
                        else if (ramsize == 128)