Exemple #1
0
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);
	        }
	}
}
Exemple #3
0
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;
}
Exemple #4
0
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;
}
Exemple #5
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);
        }
}
Exemple #6
0
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;
}
Exemple #7
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);
}
Exemple #9
0
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;
}
Exemple #11
0
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);
}
Exemple #12
0
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();
}
Exemple #13
0
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;
}