/* Functions using drive context. */ void wd1770d_init(drive_context_t *drv) { if (wd1770_log == LOG_ERR) { wd1770_log = log_open("WD1770"); } drv->wd1770 = lib_calloc(1, sizeof(wd1770_t)); drv->wd1770->fdd = fdd_init(0, drv->drive); drv->wd1770->cpu_clk_ptr = drv->clk_ptr; drv->wd1770->is1772 = 0; drv->wd1770->clock_frequency = 2; clk_guard_add_callback(drv->cpu->clk_guard, clk_overflow_callback, drv->wd1770); }
void pc8477_setup_context(drive_context_t *drv) { int i; drv->pc8477 = lib_calloc(1, sizeof(pc8477_t)); drv->pc8477->myname = lib_msprintf("PC8477_%d", drv->mynumber); for (i = 0; i < 4; i++) { drv->pc8477->fdds[i].num = i; drv->pc8477->fdds[i].fdd = NULL; drv->pc8477->fdds[i].motor_on = NULL; drv->pc8477->fdds[i].motor_on_data = NULL; } drv->pc8477->fdds[0].motor_on = (pc8477_motor_on_callback_t)drivesync_set_4000; drv->pc8477->fdds[0].motor_on_data = (void *)drv; drv->pc8477->fdds[1].fdd = fdd_init(1, drv->drive); drv->pc8477->fdds[1].motor_on = (pc8477_motor_on_callback_t)fdd_set_motor; drv->pc8477->fdds[1].motor_on_data = (void *)drv->pc8477->fdds[1].fdd; drv->pc8477->mycontext = drv; }
static int didaktik80_init( void *context ) { int i; fdd_t *d; didaktik_fdc = wd_fdc_alloc_fdc( WD2797, 0, WD_FLAG_DRQ | WD_FLAG_RDY ); for( i = 0; i < DIDAKTIK80_NUM_DRIVES; i++ ) { d = &didaktik_drives[ i ]; fdd_init( d, FDD_SHUGART, NULL, 0 ); /* drive geometry 'autodetect' */ d->disk.flag = DISK_FLAG_NONE; } didaktik_fdc->current_drive = &didaktik_drives[ 0 ]; fdd_select( &didaktik_drives[ 0 ], 1 ); didaktik_fdc->extra_signal = 1; didaktik_fdc->dden = 1; didaktik_fdc->set_intrq = didaktik_set_intrq; didaktik_fdc->reset_intrq = NULL; didaktik_fdc->set_datarq = didaktik_set_datarq; didaktik_fdc->reset_datarq = NULL; module_register( &didaktik_module_info ); didaktik_rom_memory_source = memory_source_register( "Didaktik 80 ROM" ); didaktik_ram_memory_source = memory_source_register( "Didaktik 80 RAM" ); for( i = 0; i < MEMORY_PAGES_IN_14K; i++ ) didaktik_memory_map_romcs_rom[i].source = didaktik_rom_memory_source; for( i = 0; i < MEMORY_PAGES_IN_2K; i++ ) didaktik_memory_map_romcs_ram[i].source = didaktik_ram_memory_source; periph_register( PERIPH_TYPE_DIDAKTIK80, &didaktik_periph ); for( i = 0; i < DIDAKTIK80_NUM_DRIVES; i++ ) { didaktik_ui_drives[ i ].fdd = &didaktik_drives[ i ]; ui_media_drive_register( &didaktik_ui_drives[ i ] ); } periph_register_paging_events( event_type_string, &page_event, &unpage_event ); return 0; }
void opus_init( void ) { int i; fdd_t *d; opus_fdc = wd_fdc_alloc_fdc( WD1770, 0, WD_FLAG_DRQ ); for( i = 0; i < OPUS_NUM_DRIVES; i++ ) { d = &opus_drives[ i ]; fdd_init( d, FDD_SHUGART, NULL, 0 ); /* drive geometry 'autodetect' */ d->disk.flag = DISK_FLAG_NONE; } opus_fdc->current_drive = &opus_drives[ 0 ]; fdd_select( &opus_drives[ 0 ], 1 ); opus_fdc->dden = 1; opus_fdc->set_intrq = NULL; opus_fdc->reset_intrq = NULL; opus_fdc->set_datarq = opus_set_datarq; opus_fdc->reset_datarq = NULL; module_register( &opus_module_info ); opus_rom_memory_source = memory_source_register( "Opus ROM" ); opus_ram_memory_source = memory_source_register( "Opus RAM" ); for( i = 0; i < MEMORY_PAGES_IN_8K; i++ ) opus_memory_map_romcs_rom[i].source = opus_rom_memory_source; for( i = 0; i < MEMORY_PAGES_IN_2K; i++ ) opus_memory_map_romcs_ram[i].source = opus_ram_memory_source; periph_register( PERIPH_TYPE_OPUS, &opus_periph ); for( i = 0; i < OPUS_NUM_DRIVES; i++ ) { opus_ui_drives[ i ].fdd = &opus_drives[ i ]; ui_media_drive_register( &opus_ui_drives[ i ] ); } }
void plusd_init( void ) { int i; fdd_t *d; plusd_fdc = wd_fdc_alloc_fdc( WD1770, 0, WD_FLAG_NONE ); for( i = 0; i < PLUSD_NUM_DRIVES; i++ ) { d = &plusd_drives[ i ]; fdd_init( d, FDD_SHUGART, NULL, 0 ); d->disk.flag = DISK_FLAG_NONE; } plusd_fdc->current_drive = &plusd_drives[ 0 ]; fdd_select( &plusd_drives[ 0 ], 1 ); plusd_fdc->dden = 1; plusd_fdc->set_intrq = NULL; plusd_fdc->reset_intrq = NULL; plusd_fdc->set_datarq = NULL; plusd_fdc->reset_datarq = NULL; module_register( &plusd_module_info ); plusd_memory_source = memory_source_register( "PlusD" ); for( i = 0; i < MEMORY_PAGES_IN_8K; i++ ) plusd_memory_map_romcs_rom[ i ].source = plusd_memory_source; for( i = 0; i < MEMORY_PAGES_IN_8K; i++ ) plusd_memory_map_romcs_ram[ i ].source = plusd_memory_source; periph_register( PERIPH_TYPE_PLUSD, &plusd_periph ); for( i = 0; i < PLUSD_NUM_DRIVES; i++ ) { plusd_ui_drives[ i ].fdd = &plusd_drives[ i ]; ui_media_drive_register( &plusd_ui_drives[ i ] ); } }
void initpc() { char *p; // allegro_init(); get_executable_name(pcempath,511); pclog("executable_name = %s\n", pcempath); p=get_filename(pcempath); *p=0; pclog("path = %s\n", pcempath); fdd_init(); keyboard_init(); mouse_init(); joystick_init(); midi_init(); loadconfig(NULL); pclog("Config loaded\n"); loadfont("mda.rom", 0, cga_fontdat, cga_fontdatm); loadfont("roms/pc1512/40078.ic127", 0, pc1512_fontdat, pc1512_fontdatm); loadfont("roms/pc200/40109.bin", 0, pc200_fontdat, pc200_fontdatm); codegen_init(); cpuspeed2=(AT)?2:1; // cpuspeed2=cpuspeed; atfullspeed=0; device_init(); initvideo(); mem_init(); loadbios(); mem_add_bios(); timer_reset(); sound_reset(); fdc_init(); // #ifdef USE_NETWORKING vlan_reset(); //NETWORK network_card_init(network_card_current); // #endif loaddisc(0,discfns[0]); loaddisc(1,discfns[1]); //loadfont(); loadnvr(); sound_init(); resetide(); #if __unix if (cdrom_drive == -1) cdrom_null_open(cdrom_drive); else #endif ioctl_open(cdrom_drive); pit_reset(); /* if (romset==ROM_AMI386 || romset==ROM_AMI486) */fullspeed(); ali1429_reset(); // CPUID=(is486 && (cpuspeed==7 || cpuspeed>=9)); // pclog("Init - CPUID %i %i\n",CPUID,cpuspeed); shadowbios=0; #if __unix if (cdrom_drive == -1) cdrom_null_reset(); else #endif ioctl_reset(); }