static int load_capslib (void) { if ((CAPS_MsgPort = CreateMsgPort ())) { if ((CAPS_IOReq = CreateIORequest (CAPS_MsgPort, sizeof(struct IORequest)))) { if (!OpenDevice(CAPS_NAME, 0, CAPS_IOReq, 0)) { CapsImageBase = CAPS_IOReq->io_Device; if (CapsImageBase->dd_Library.lib_Version >= 2) { if (CAPSInit () == imgeOk) { atexit (unload_capslib); return 1; } } else write_log ("CAPS: Please install capsimage.device version 2 or newer.\n"); CloseDevice (CAPS_IOReq); } DeleteIORequest (CAPS_IOReq); } DeleteMsgPort (CAPS_MsgPort); } return 0; }
BOOL CCAPSImgApp::InitInstance() { CAPSInit(); return CWinApp::InitInstance(); }
/* * Init the FDC and the drives used to handle IPF images */ bool IPF_Init ( void ) { #ifndef HAVE_CAPSIMAGE return true; #else int i; struct CapsVersionInfo caps_vi; fprintf ( stderr , "IPF : IPF_Init\n" ); if ( CAPSInit() != imgeOk ) { fprintf ( stderr , "IPF : Could not initialize the capsimage library\n" ); return false; } if ( CAPSGetVersionInfo ( &caps_vi , 0 ) != imgeOk ) { fprintf ( stderr , "IPF : CAPSVersionInfo failed\n" ); return false; } fprintf ( stderr , "IPF : capsimage library version release=%d revision=%d\n" , (int)caps_vi.release , (int)caps_vi.revision ); IPF_State.CapsLibRelease = caps_vi.release; IPF_State.CapsLibRevision = caps_vi.revision; /* Default values for each physical drive */ memset ( IPF_State.Drive , 0 , sizeof ( IPF_State.Drive ) ); for ( i=0 ; i < MAX_FLOPPYDRIVES ; i++ ) { IPF_State.Drive[ i ].type = sizeof ( struct CapsDrive ); IPF_State.Drive[ i ].rpm = CAPSDRIVE_35DD_RPM; IPF_State.Drive[ i ].maxtrack = CAPSDRIVE_35DD_HST; IPF_State.Rev_Track[ i ] = -1; IPF_State.Rev_Side[ i ] = -1; IPF_State.DriveEnabled[ i ] = true; IPF_State.DoubleSided[ i ] = true; } /* Init FDC with 2 physical drives */ memset ( &IPF_State.Fdc , 0 , sizeof ( IPF_State.Fdc ) ); IPF_State.Fdc.type = sizeof( struct CapsFdc ); IPF_State.Fdc.model = cfdcmWD1772; IPF_State.Fdc.drive = IPF_State.Drive; IPF_State.Fdc.drivecnt = MAX_FLOPPYDRIVES; if ( CAPSFdcInit ( &IPF_State.Fdc ) != imgeOk) { fprintf ( stderr , "IPF : CAPSFdcInit failed\n" ); return false; } /* 2 drives by default */ IPF_State.Fdc.drivemax = MAX_FLOPPYDRIVES; /* Update drives' state in case we have some drives ON or OFF in config or parameters */ IPF_Drive_Update_Enable_Side (); /* FDC clock */ IPF_State.Fdc.clockfrq = 8000000; /* Set callback functions */ IPF_State.Fdc.cbirq = IPF_CallBack_Irq; IPF_State.Fdc.cbdrq = IPF_CallBack_Drq; IPF_State.Fdc.cbtrk = IPF_CallBack_Trk; CAPSFdcReset ( &IPF_State.Fdc ); return true; #endif }