SunriseIde* sunriseIdeCreate(int hdId) { SunriseIde* ide = malloc(sizeof(SunriseIde)); ide->hdide[0] = harddiskIdeCreate(diskGetHdDriveId(hdId, 0)); ide->hdide[1] = harddiskIdeCreate(diskGetHdDriveId(hdId, 1)); sunriseIdeReset(ide); return ide; }
int romMapperSvi328RsIdeCreate(int hdId) { DeviceCallbacks callbacks = { destroy, reset, saveState, loadState }; DebugCallbacks dbgCallbacks = { getDebugInfo, NULL, NULL, NULL }; RomMapperRsIde* rm; rm = malloc(sizeof(RomMapperRsIde)); rm->deviceHandle = deviceManagerRegister(ROM_SVI328RSIDE, &callbacks, rm); rm->debugHandle = debugDeviceRegister(DBGTYPE_PORT, langDbgDevIdeSviRs(), &dbgCallbacks, rm); rm->i8255 = i8255Create( NULL, NULL, writeA, NULL, readB, writeB, NULL, readCLo, writeCLo, NULL, readCHi, writeCHi, rm); ioPortRegister(0x14, i8255Read, i8255Write, rm->i8255); // PPI Port A ioPortRegister(0x15, i8255Read, i8255Write, rm->i8255); // PPI Port B ioPortRegister(0x16, i8255Read, i8255Write, rm->i8255); // PPI Port C ioPortRegister(0x17, i8255Read, i8255Write, rm->i8255); // PPI Mode rm->hdide = harddiskIdeCreate(diskGetHdDriveId(hdId, 0)); reset(rm); return 1; }
int romMapperGIdeCreate(int hdId) { DeviceCallbacks callbacks = { (DeviceCallback)destroy, (DeviceCallback)reset, (DeviceCallback)saveState, (DeviceCallback)loadState }; DebugCallbacks dbgCallbacks = { (void(*)(void*,DbgDevice*))getDebugInfo, NULL, NULL, NULL }; RomMapperGIde* rm; int portBase; rm = malloc(sizeof(RomMapperGIde)); rm->deviceHandle = deviceManagerRegister(ROM_GIDE, &callbacks, rm); rm->debugHandle = debugDeviceRegister(DBGTYPE_PORT, langDbgDevIdeGide(), &dbgCallbacks, rm); portBase = (boardGetType() == BOARD_SVI) ? 0x40:0x60; ioPortRegister(portBase | 0x04, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x05, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x06, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x07, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x08, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x09, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x0a, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x0b, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x0c, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x0d, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x0e, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); ioPortRegister(portBase | 0x0f, (IoPortRead)readIo, (IoPortWrite)writeIo, rm); rm->hdide = harddiskIdeCreate(diskGetHdDriveId(hdId, 0)); reset(rm); return 1; }