static int zxcf_init( void *context ) { int error, i; last_memctl = 0x00; zxcf_idechn = libspectrum_ide_alloc( LIBSPECTRUM_IDE_DATA16 ); ui_menu_activate( UI_MENU_ITEM_MEDIA_IDE_ZXCF_EJECT, 0 ); if( settings_current.zxcf_pri_file ) { error = libspectrum_ide_insert( zxcf_idechn, LIBSPECTRUM_IDE_MASTER, settings_current.zxcf_pri_file ); if( error ) return error; ui_menu_activate( UI_MENU_ITEM_MEDIA_IDE_ZXCF_EJECT, 1 ); } module_register( &zxcf_module_info ); zxcf_memory_source = memory_source_register( "ZXCF" ); for( i = 0; i < MEMORY_PAGES_IN_16K; i++ ) zxcf_memory_map_romcs[i].source = zxcf_memory_source; periph_register( PERIPH_TYPE_ZXCF, &zxcf_periph ); periph_register_paging_events( event_type_string, &page_event, &unpage_event ); return 0; }
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; }
static int spectranet_init( void *context ) { module_register( &spectranet_module_info ); spectranet_source = memory_source_register( "Spectranet" ); periph_register( PERIPH_TYPE_SPECTRANET, &spectranet_periph ); periph_register_paging_events( event_type_string, &page_event, &unpage_event ); w5100 = nic_w5100_alloc(); flash_rom = flash_am29f010_alloc(); 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 ] ); } }
static int usource_init( void *context ) { int i; module_register( &usource_module_info ); usource_memory_source = memory_source_register( "uSource" ); for( i = 0; i < MEMORY_PAGES_IN_8K; i++ ) usource_memory_map_romcs[i].source = usource_memory_source; periph_register( PERIPH_TYPE_USOURCE, &usource_periph ); return 0; }
void speccyboot_init( void ) { int i; nic = nic_enc28j60_alloc(); module_register( &speccyboot_module_info ); speccyboot_memory_source = memory_source_register( "SpeccyBoot" ); for( i = 0; i < MEMORY_PAGES_IN_8K; i++ ) speccyboot_memory_map_romcs[i].source = speccyboot_memory_source; periph_register( PERIPH_TYPE_SPECCYBOOT, &speccyboot_periph ); }
static int speccyboot_init( void *context ) { int i; nic = nic_enc28j60_alloc(); module_register( &speccyboot_module_info ); speccyboot_memory_source = memory_source_register( "SpeccyBoot" ); for( i = 0; i < MEMORY_PAGES_IN_8K; i++ ) speccyboot_memory_map_romcs[i].source = speccyboot_memory_source; periph_register( PERIPH_TYPE_SPECCYBOOT, &speccyboot_periph ); periph_register_paging_events( event_type_string, &page_event, &unpage_event ); return 0; }
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 ] ); } }
/* Set up the information about the normal page mappings. Memory contention and usable pages vary from machine to machine and must be set in the appropriate _reset function */ static int memory_init( void *context ) { size_t i, j; memory_sources = g_array_new( FALSE, FALSE, sizeof( const char* ) ); memory_source_rom = memory_source_register( "ROM" ); memory_source_ram = memory_source_register( "RAM" ); memory_source_dock = memory_source_register( "Timex Dock" ); memory_source_exrom = memory_source_register( "Timex EXROM" ); memory_source_any = memory_source_register( "Absolute address" ); memory_source_none = memory_source_register( "None" ); /* Nothing in the memory pool as yet */ pool = NULL; for( i = 0; i < SPECTRUM_ROM_PAGES; i++ ) for( j = 0; j < MEMORY_PAGES_IN_16K; j++ ) { memory_page *page = &memory_map_rom[i * MEMORY_PAGES_IN_16K + j]; page->writable = 0; page->contended = 0; page->source = memory_source_rom; } for( i = 0; i < SPECTRUM_RAM_PAGES; i++ ) for( j = 0; j < MEMORY_PAGES_IN_16K; j++ ) { memory_page *page = &memory_map_ram[i * MEMORY_PAGES_IN_16K + j]; page->page = &RAM[i][j * MEMORY_PAGE_SIZE]; page->page_num = i; page->offset = j * MEMORY_PAGE_SIZE; page->writable = 1; page->source = memory_source_ram; } module_register( &memory_module_info ); return 0; }