static vsf_err_t vsfusbd_MSCBOT_class_init(uint8_t iface, struct vsfusbd_device_t *device) { struct interface_usbd_t *drv = device->drv; struct vsfusbd_config_t *config = &device->config[device->configuration]; struct vsfusbd_MSCBOT_param_t *param = (struct vsfusbd_MSCBOT_param_t *)config->iface[iface].protocol_param; uint8_t i; if ((NULL == param) || // minium ep size of MSCBOT is 32 bytes, // so that CBW and CSW can be transfered in one package (drv->ep.get_IN_epsize(param->ep_in) < 32) || (drv->ep.get_OUT_epsize(param->ep_in) < 32) || vsfusbd_set_IN_handler(device, param->ep_in, vsfusbd_MSCBOT_IN_hanlder) || vsfusbd_set_OUT_handler(device, param->ep_out, vsfusbd_MSCBOT_OUT_hanlder) || drv->ep.enable_OUT(param->ep_out)) { return VSFERR_FAIL; } param->idle = true; param->poll = false; param->bot_status = VSFUSBD_MSCBOT_STATUS_IDLE; for (i = 0; i <= param->max_lun; i++) { SCSI_Init(¶m->lun_info[i]); } return VSFERR_NONE; }
int WinX68k_Reset(void) { OPM_Reset(); #ifdef CYCLONE m68000_reset(); m68000_set_reg(M68K_A7, (IPL[0x30001]<<24)|(IPL[0x30000]<<16)|(IPL[0x30003]<<8)|IPL[0x30002]); m68000_set_reg(M68K_PC, (IPL[0x30005]<<24)|(IPL[0x30004]<<16)|(IPL[0x30007]<<8)|IPL[0x30006]); #else C68k_Reset(&C68K); /* C68k_Set_Reg(&C68K, C68K_A7, (IPL[0x30001]<<24)|(IPL[0x30000]<<16)|(IPL[0x30003]<<8)|IPL[0x30002]); C68k_Set_Reg(&C68K, C68K_PC, (IPL[0x30005]<<24)|(IPL[0x30004]<<16)|(IPL[0x30007]<<8)|IPL[0x30006]); */ C68k_Set_AReg(&C68K, 7, (IPL[0x30001]<<24)|(IPL[0x30000]<<16)|(IPL[0x30003]<<8)|IPL[0x30002]); C68k_Set_PC(&C68K, (IPL[0x30005]<<24)|(IPL[0x30004]<<16)|(IPL[0x30007]<<8)|IPL[0x30006]); #endif Memory_Init(); CRTC_Init(); DMA_Init(); MFP_Init(); FDC_Init(); FDD_Reset(); SASI_Init(); SCSI_Init(); IOC_Init(); SCC_Init(); PIA_Init(); RTC_Init(); TVRAM_Init(); GVRAM_Init(); BG_Init(); Pal_Init(); IRQH_Init(); MIDI_Init(); //WinDrv_Init(); //C68K.ICount = 0; m68000_ICountBk = 0; ICount = 0; DSound_Stop(); SRAM_VirusCheck(); //CDROM_Init(); DSound_Play(); return TRUE; }