void *tandy_rom_init() { FILE *f, *ff; int c; tandy_rom = malloc(0x80000); f = romfopen(L"roms/tandy1000sl2/8079047.hu1", L"rb"); ff = romfopen(L"roms/tandy1000sl2/8079048.hu2", L"rb"); for (c = 0x0000; c < 0x80000; c += 2) { tandy_rom[c] = getc(f); tandy_rom[c + 1] = getc(ff); } fclose(ff); fclose(f); mem_mapping_add(&tandy_rom_mapping, 0xe0000, 0x10000, tandy_read_rom, tandy_read_romw, tandy_read_roml, NULL, NULL, NULL, tandy_rom, MEM_MAPPING_EXTERNAL, NULL); io_sethandler(0xffe8, 0x0008, tandy_rom_bank_read, NULL, NULL, tandy_rom_bank_write, NULL, NULL, NULL); return tandy_rom; }
void flash_1mbit_readfiles() { FILE *f; int is_ami = ((romset == ROM_REVENGE) || (romset == ROM_PLATO) || (romset == ROM_ENDEAVOR)); int has_dmi = ((romset == ROM_430HX) || (romset == ROM_430VX) || (romset == ROM_430TX) || (romset == ROM_440FX) || (romset == ROM_KN97)); int is_bxb = ((romset == ROM_ACERV35N) || (romset == ROM_ACERV12LC)); memset(&rom[is_ami ? 0xd000 : (is_bxb ? 0x2000 : 0x1d000)], 0xFF, 0x1000); configure_path(); fn = (char *) malloc(255); strcpy(fn, path); strcat(fn, "escd.bin"); f = romfopen(fn, "rb"); if (f) { fread(&rom[is_ami ? 0xd000 : (is_bxb ? 0x2000 : 0x1d000)], 0x1000, 1, f); fclose(f); } if (has_dmi || is_bxb) { strcpy(fn, path); strcat(fn, "dmi.bin"); f = romfopen(fn, "rb"); if (f) { fread(&rom[is_bxb ? 0x3000 : 0x1c000], 0x1000, 1, f); fclose(f); } } }
void *tandy_eeprom_init() { tandy_eeprom_t *eeprom = malloc(sizeof(tandy_eeprom_t)); FILE *f; memset(eeprom, 0, sizeof(tandy_eeprom_t)); eeprom->romset = romset; switch (romset) { case ROM_TANDY1000HX: f = romfopen("nvr/tandy1000hx.bin" ,"rb"); break; case ROM_TANDY1000SL2: f = romfopen("nvr/tandy1000sl2.bin" ,"rb"); break; } if (f) { fread(eeprom->store, 128, 1, f); fclose(f); } else memset(eeprom->store, 0, 128); io_sethandler(0x037c, 0x0001, NULL, NULL, NULL, tandy_eeprom_write, NULL, NULL, eeprom); return eeprom; }
int rom_init_interleaved(rom_t *rom, char *fn_low, char *fn_high, uint32_t address, int size, int mask, int file_offset, uint32_t flags) { FILE *f_low = romfopen(fn_low, "rb"); FILE *f_high = romfopen(fn_high, "rb"); int c; if (!f_low || !f_high) { #ifndef RELEASE_BUILD if (!f_low) pclog("ROM image not found : %s\n", fn_low); else #else if (f_low) #endif fclose(f_low); #ifndef RELEASE_BUILD if (!f_high) pclog("ROM image not found : %s\n", fn_high); else #else if (f_high) #endif fclose(f_high); return -1; } rom->rom = malloc(size); fseek(f_low, file_offset, SEEK_SET); fseek(f_high, file_offset, SEEK_SET); for (c = 0; c < size; c += 2) { rom->rom[c] = getc(f_low); rom->rom[c + 1] = getc(f_high); } fclose(f_high); fclose(f_low); rom->mask = mask; mem_mapping_add(&rom->mapping, address, size, rom_read, rom_readw, rom_readl, mem_write_null, mem_write_nullw, mem_write_nulll, rom->rom, flags, rom); return 0; }
void flash_1mbit_readfiles() { FILE *f; int q = ((romset == ROM_REVENGE) || (romset == ROM_ENDEAVOR)); memset(&rom[q ? 0xd000 : 0x1d000], 0xFF, 0x1000); configure_path(); fn = (char *) malloc(255); /* strcpy(fn, path); strcat(fn, "oemlogo.bin"); f = romfopen(fn, "rb"); if (f) { fread(&rom[0x1c000], 0x1000, 1, f); fclose(f); } */ strcpy(fn, path); strcat(fn, "escd.bin"); f = romfopen(fn, "rb"); if (f) { fread(&rom[q ? 0xd000 : 0x1d000], 0x1000, 1, f); fclose(f); } }
int rom_init(rom_t *rom, char *fn, uint32_t address, int size, int mask, int file_offset, uint32_t flags) { FILE *f = romfopen(fn, "rb"); if (!f) { #ifndef RELEASE_BUILD pclog("ROM image not found : %s\n", fn); #endif return -1; } rom->rom = malloc(size); fseek(f, file_offset, SEEK_SET); fread(rom->rom, size, 1, f); fclose(f); rom->mask = mask; mem_mapping_add(&rom->mapping, address, size, rom_read, rom_readw, rom_readl, mem_write_null, mem_write_nullw, mem_write_nulll, rom->rom, flags, rom); return 0; }
void tandy_eeprom_close(void *p) { tandy_eeprom_t *eeprom = (tandy_eeprom_t *)p; FILE *f; switch (eeprom->romset) { case ROM_TANDY1000HX: f = romfopen("nvr/tandy1000hx.bin" ,"wb"); break; case ROM_TANDY1000SL2: f = romfopen("nvr/tandy1000sl2.bin" ,"wb"); break; } fwrite(eeprom->store, 128, 1, f); fclose(f); free(eeprom); }
void intel_flash_close(void *p) { FILE *f; flash_t *flash = (flash_t *)p; int is_ami = ((romset == ROM_REVENGE) || (romset == ROM_PLATO) || (romset == ROM_ENDEAVOR)); int has_dmi = ((romset == ROM_430HX) || (romset == ROM_430VX) || (romset == ROM_430TX) || (romset == ROM_440FX) || (romset == ROM_KN97)); int is_bxb = ((romset == ROM_ACERV35N) || (romset == ROM_ACERV12LC)); if (closed) return; configure_path(); fn = (char *) malloc(255); strcpy(fn, path); strcat(fn, "escd.bin"); f = romfopen(fn, "wb"); fwrite(&rom[is_ami ? 0xd000 : (is_bxb ? 0x2000 : 0x1d000)], 0x1000, 1, f); fclose(f); #if 0 f = romfopen("romkek.$$$", "wb"); fwrite(&rom[0], 0x20000, 1, f); fclose(f); #endif if (has_dmi || is_bxb) { strcpy(fn, path); strcat(fn, "dmi.bin"); f = romfopen(fn, "wb"); if (f) { fwrite(&rom[is_bxb ? 0x3000 : 0x1c000], 0x1000, 1, f); fclose(f); } } closed = 1; free(flash); }
void intel_flash_close(void *p) { FILE *f; flash_t *flash = (flash_t *)p; int q = ((romset == ROM_REVENGE) || (romset == ROM_ENDEAVOR)); configure_path(); fn = (char *) malloc(255); /* strcpy(fn, path); strcat(fn, "oemlogo.bin"); f = romfopen(fn, "wb"); fwrite(&rom[0x1c000], 0x1000, 1, f); fclose(f); */ strcpy(fn, path); strcat(fn, "escd.bin"); f = romfopen(fn, "wb"); fwrite(&rom[q ? 0xd000 : 0x1d000], 0x1000, 1, f); fclose(f); free(flash); }
void *intel_flash_init() { FILE *f; flash_t *flash = malloc(sizeof(flash_t)); int is_ami = ((romset == ROM_REVENGE) || (romset == ROM_PLATO) || (romset == ROM_ENDEAVOR)); int has_dmi = ((romset == ROM_430HX) || (romset == ROM_430VX) || (romset == ROM_430TX) || (romset == ROM_440FX) || (romset == ROM_KN97)); int is_bxb = ((romset == ROM_ACERV35N) || (romset == ROM_ACERV12LC)); memset(flash, 0, sizeof(flash_t)); mem_mapping_add(&flash->read_mapping, 0xe0000, 0x20000, flash_read, NULL, NULL, NULL, NULL, NULL, NULL, MEM_MAPPING_EXTERNAL, (void *)flash); mem_mapping_add(&flash->write_mapping, 0xe0000, 0x20000, NULL, NULL, NULL, flash_write, NULL, NULL, NULL, MEM_MAPPING_EXTERNAL, (void *)flash); mem_mapping_add(&ext_read_mapping, 0xfffe0000, 0x20000, flash_read, NULL, NULL, NULL, NULL, NULL, NULL, MEM_MAPPING_EXTERNAL, (void *)flash); mem_mapping_add(&ext_write_mapping, 0xfffe0000, 0x20000, NULL, NULL, NULL, flash_write, NULL, NULL, NULL, MEM_MAPPING_EXTERNAL, (void *)flash); mem_mapping_disable(&flash->read_mapping); mem_mapping_disable(&ext_read_mapping); if (!is_ami) { /* Non-AMI BIOS'es talk to the flash in high RAM. */ if (romset != ROM_440FX) { mem_mapping_disable(&flash->write_mapping); } else { mem_mapping_set_addr(&flash->write_mapping, 0xf0000, 0x10000); } mem_mapping_enable(&ext_write_mapping); } else { /* AMI BIOS'es talk to the flash in low RAM. */ mem_mapping_enable(&flash->write_mapping); mem_mapping_set_addr(&flash->write_mapping, 0xe0000, 0x20000); mem_mapping_disable(&ext_write_mapping); } flash->command = CMD_READ_ARRAY; flash->status = 0; memset(&rom[is_ami ? 0xd000 : (is_bxb ? 0x2000 : 0x1d000)], 0xFF, 0x1000); configure_path(); fn = (char *) malloc(255); strcpy(fn, path); strcat(fn, "escd.bin"); f = romfopen(fn, "rb"); if (f) { fread(&rom[is_ami ? 0xd000 : (is_bxb ? 0x2000 : 0x1d000)], 0x1000, 1, f); fclose(f); } if (has_dmi || is_bxb) { strcpy(fn, path); strcat(fn, "dmi.bin"); f = romfopen(fn, "rb"); if (f) { fread(&rom[is_bxb ? 0x3000 : 0x1c000], 0x1000, 1, f); fclose(f); } } closed = 0; return flash; }
void savenvr() { FILE *f; switch (oldromset) { case ROM_PC1512: f = romfopen("pc1512.nvr", "wb"); break; case ROM_PC1640: f = romfopen("pc1640.nvr", "wb"); break; case ROM_PC200: f = romfopen("pc200.nvr", "wb"); break; case ROM_PC2086: f = romfopen("pc2086.nvr", "wb"); break; case ROM_PC3086: f = romfopen("pc3086.nvr", "wb"); break; case ROM_IBMAT: f = romfopen("at.nvr", "wb"); break; case ROM_IBMPS1_2011: f = romfopen("ibmps1_2011.nvr", "wb"); break; case ROM_CMDPC30: f = romfopen("cmdpc30.nvr", "wb"); break; case ROM_AMI286: f = romfopen("ami286.nvr", "wb"); break; case ROM_DELL200: f = romfopen("dell200.nvr", "wb"); break; case ROM_IBMAT386: f = romfopen("at386.nvr", "wb"); break; case ROM_DESKPRO_386: f = romfopen("deskpro386.nvr", "wb"); break; case ROM_ACER386: f = romfopen("acer386.nvr", "wb"); break; case ROM_MEGAPC: f = romfopen("megapc.nvr", "wb"); break; case ROM_AMI386: f = romfopen("ami386.nvr", "wb"); break; case ROM_AMI486: f = romfopen("ami486.nvr", "wb"); break; case ROM_WIN486: f = romfopen("win486.nvr", "wb"); break; case ROM_PCI486: f = romfopen("hot-433.nvr", "wb"); break; case ROM_SIS496: f = romfopen("sis496.nvr", "wb"); break; case ROM_430VX: f = romfopen("430vx.nvr", "wb"); break; case ROM_REVENGE: f = romfopen("revenge.nvr", "wb"); break; case ROM_ENDEAVOR: f = romfopen("endeavor.nvr", "wb"); break; case ROM_PX386: f = romfopen("px386.nvr", "wb"); break; case ROM_DTK386: f = romfopen("dtk386.nvr", "wb"); break; case ROM_DTK486: f = romfopen("dtk486.nvr", "wb"); break; case ROM_R418: f = romfopen("r418.nvr", "wb"); break; case ROM_PLATO: f = romfopen("plato.nvr", "wb"); break; case ROM_MB500N: f = romfopen("mb500n.nvr", "wb"); break; case ROM_ACERM3A: f = romfopen("acerm3a.nvr", "wb"); break; case ROM_ACERV35N: f = romfopen("acerv35n.nvr", "wb"); break; case ROM_P55T2P4: f = romfopen("p55t2p4.nvr", "wb"); break; case ROM_P55VA: f = romfopen("p55va.nvr", "wb"); break; default: return; } /* If sync is disabled, save internal clock to registers. */ if (!enable_sync) set_registers(); fwrite(nvrram,128,1,f); fclose(f); }
void loadnvr() { FILE *f; int c; nvrmask=63; oldromset=romset; switch (romset) { case ROM_PC1512: f = romfopen("pc1512.nvr", "rb"); break; case ROM_PC1640: f = romfopen("pc1640.nvr", "rb"); break; case ROM_PC200: f = romfopen("pc200.nvr", "rb"); break; case ROM_PC2086: f = romfopen("pc2086.nvr", "rb"); break; case ROM_PC3086: f = romfopen("pc3086.nvr", "rb"); break; case ROM_IBMAT: f = romfopen("at.nvr", "rb"); break; case ROM_IBMPS1_2011: f = romfopen("ibmps1_2011.nvr", "rb"); /*nvrmask = 127; */break; case ROM_CMDPC30: f = romfopen("cmdpc30.nvr", "rb"); nvrmask = 127; break; case ROM_AMI286: f = romfopen("ami286.nvr", "rb"); nvrmask = 127; break; case ROM_DELL200: f = romfopen("dell200.nvr", "rb"); nvrmask = 127; break; case ROM_IBMAT386: f = romfopen("at386.nvr", "rb"); nvrmask = 127; break; case ROM_DESKPRO_386: f = romfopen("deskpro386.nvr", "rb"); break; case ROM_ACER386: f = romfopen("acer386.nvr", "rb"); nvrmask = 127; break; case ROM_MEGAPC: f = romfopen("megapc.nvr", "rb"); nvrmask = 127; break; case ROM_AMI386: f = romfopen("ami386.nvr", "rb"); nvrmask = 127; break; case ROM_AMI486: f = romfopen("ami486.nvr", "rb"); nvrmask = 127; break; case ROM_WIN486: f = romfopen("win486.nvr", "rb"); nvrmask = 127; break; case ROM_PCI486: f = romfopen("hot-433.nvr", "rb"); nvrmask = 127; break; case ROM_SIS496: f = romfopen("sis496.nvr", "rb"); nvrmask = 127; break; case ROM_430VX: f = romfopen("430vx.nvr", "rb"); nvrmask = 127; break; case ROM_REVENGE: f = romfopen("revenge.nvr", "rb"); nvrmask = 127; break; case ROM_ENDEAVOR: f = romfopen("endeavor.nvr", "rb"); nvrmask = 127; break; case ROM_PX386: f = romfopen("px386.nvr", "rb"); nvrmask = 127; break; case ROM_DTK386: f = romfopen("dtk386.nvr", "rb"); nvrmask = 127; break; case ROM_DTK486: f = romfopen("dtk486.nvr", "rb"); nvrmask = 127; break; case ROM_R418: f = romfopen("r418.nvr", "rb"); nvrmask = 127; break; case ROM_PLATO: f = romfopen("plato.nvr", "rb"); nvrmask = 127; break; case ROM_MB500N: f = romfopen("mb500n.nvr", "rb"); nvrmask = 127; break; case ROM_ACERM3A: f = romfopen("acerm3a.nvr", "rb"); nvrmask = 127; break; case ROM_ACERV35N: f = romfopen("acerv35n.nvr", "rb"); nvrmask = 127; break; case ROM_P55T2P4: f = romfopen("p55t2p4.nvr", "rb"); nvrmask = 127; break; case ROM_P55VA: f = romfopen("p55va.nvr", "rb"); nvrmask = 127; break; default: return; } if (!f) { memset(nvrram,0xFF,128); return; } fread(nvrram,128,1,f); fclose(f); nvrram[0xA]=6; nvrram[0xB]=0; c=1<<((6&0xF)-1); rtctime += (int)(RTCCONST * c * (1 << TIMER_SHIFT)); /* If sync is disabled, load internal clock from registers. */ if (!enable_sync) get_registers(); }
void *intel_flash_init() { FILE *f; flash_t *flash = malloc(sizeof(flash_t)); int q = ((romset == ROM_REVENGE) || (romset == ROM_ENDEAVOR)); memset(flash, 0, sizeof(flash_t)); /* if (romset == ROM_440BX) { mem_mapping_add(&flash->read_mapping, 0x80000, 0x20000, flash_read, NULL, NULL, NULL, NULL, NULL, NULL, MEM_MAPPING_EXTERNAL, (void *)flash); mem_mapping_add(&flash->write_mapping, 0x80000, 0x20000, NULL, NULL, NULL, flash_write, NULL, NULL, NULL, MEM_MAPPING_EXTERNAL, (void *)flash); } */ mem_mapping_add(&flash->read_mapping, 0xe0000, 0x20000, flash_read, NULL, NULL, NULL, NULL, NULL, NULL, MEM_MAPPING_EXTERNAL, (void *)flash); mem_mapping_add(&flash->write_mapping, 0xe0000, 0x20000, NULL, NULL, NULL, flash_write, NULL, NULL, NULL, MEM_MAPPING_EXTERNAL, (void *)flash); mem_mapping_disable(&flash->read_mapping); flash->command = CMD_READ_ARRAY; flash->status = 0; memset(&rom[q ? 0xd000 : 0x1d000], 0xFF, 0x1000); configure_path(); fn = (char *) malloc(255); /* strcpy(fn, path); strcat(fn, "oemlogo.bin"); f = romfopen(fn, "rb"); if (f) { fread(&rom[0x1c000], 0x1000, 1, f); fclose(f); } */ strcpy(fn, path); strcat(fn, "escd.bin"); f = romfopen(fn, "rb"); if (f) { fread(&rom[q ? 0xd000 : 0x1d000], 0x1000, 1, f); fclose(f); } return flash; }