2017-09-25 20:47:58 -04:00
|
|
|
/*
|
|
|
|
|
* 86Box A hypervisor and IBM PC system emulator that specializes in
|
|
|
|
|
* running old operating systems and software designed for IBM
|
|
|
|
|
* PC systems and compatibles from 1981 through fairly recent
|
|
|
|
|
* system designs based on the PCI bus.
|
|
|
|
|
*
|
|
|
|
|
* This file is part of the 86Box distribution.
|
|
|
|
|
*
|
|
|
|
|
* Definitions for the ROM image handler.
|
|
|
|
|
*
|
2018-03-02 19:33:02 +01:00
|
|
|
* Version: @(#)rom.h 1.0.14 2018/03/02
|
2017-09-25 20:47:58 -04:00
|
|
|
*
|
|
|
|
|
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
2018-01-01 02:57:39 +01:00
|
|
|
* Copyright 2018 Fred N. van Kempen.
|
2017-09-25 20:47:58 -04:00
|
|
|
*/
|
2017-09-25 04:31:20 -04:00
|
|
|
#ifndef EMU_ROM_H
|
|
|
|
|
# define EMU_ROM_H
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define PCJR (romset==ROM_IBMPCJR)
|
2018-01-25 22:36:24 +01:00
|
|
|
#if defined(DEV_BRANCH) && defined(USE_GREENB)
|
2017-09-25 04:31:20 -04:00
|
|
|
#define AMIBIOS (romset==ROM_AMI386SX || \
|
|
|
|
|
romset==ROM_AMI486 || \
|
2017-12-22 06:18:12 +01:00
|
|
|
romset==ROM_WIN486 || \
|
|
|
|
|
romset==ROM_4GPV31)
|
2017-12-25 17:59:55 +01:00
|
|
|
#else
|
|
|
|
|
#define AMIBIOS (romset==ROM_AMI386SX || \
|
|
|
|
|
romset==ROM_AMI486 || \
|
|
|
|
|
romset==ROM_WIN486)
|
|
|
|
|
#endif
|
2017-09-25 04:31:20 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
uint8_t *rom;
|
|
|
|
|
uint32_t mask;
|
|
|
|
|
mem_mapping_t mapping;
|
2016-06-26 00:34:39 +02:00
|
|
|
} rom_t;
|
|
|
|
|
|
2017-07-15 12:46:44 +02:00
|
|
|
|
2017-09-25 04:31:20 -04:00
|
|
|
enum {
|
|
|
|
|
ROM_IBMPC = 0, /* 301 keyboard error, 131 cassette (!!!) error */
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_AMIXT, /* XT Clone with AMI BIOS */
|
|
|
|
|
ROM_DTKXT,
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_IBMXT, /* 301 keyboard error */
|
|
|
|
|
ROM_GENXT, /* 'Generic XT BIOS' */
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_JUKOPC,
|
|
|
|
|
ROM_PORTABLE,
|
|
|
|
|
ROM_PXXT,
|
2018-01-28 17:56:32 +01:00
|
|
|
#if defined(DEV_BRANCH) && defined(USE_LASERXT)
|
|
|
|
|
ROM_LTXT,
|
2018-01-25 22:36:24 +01:00
|
|
|
|
|
|
|
|
ROM_LXT3,
|
2018-01-28 17:56:32 +01:00
|
|
|
#endif
|
2018-01-25 22:36:24 +01:00
|
|
|
|
2018-03-02 19:33:02 +01:00
|
|
|
ROM_T1000,
|
|
|
|
|
ROM_T1200,
|
|
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_IBMPCJR,
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_TANDY,
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_TANDY1000HX,
|
|
|
|
|
ROM_EUROPC,
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_PC1512,
|
|
|
|
|
ROM_PC1640,
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_PC200,
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_PC2086,
|
|
|
|
|
ROM_PC3086,
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_OLIM24,
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_TANDY1000SL2,
|
2018-03-02 19:33:02 +01:00
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_T3100E,
|
|
|
|
|
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_AMI286,
|
|
|
|
|
ROM_AWARD286,
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_CMDPC30,
|
|
|
|
|
ROM_PORTABLEII,
|
|
|
|
|
#if defined(DEV_BRANCH) && defined(USE_PORTABLE3)
|
|
|
|
|
ROM_PORTABLEIII,
|
|
|
|
|
#endif
|
|
|
|
|
ROM_SUPER286TR, /* Hyundai Super-286TR/SCAT/Award */
|
|
|
|
|
ROM_IBMAT,
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_IBMPS1_2011,
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_IBMPS2_M30_286,
|
2017-10-14 07:03:19 +02:00
|
|
|
ROM_IBMXT286,
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_SPC4200P, /* Samsung SPC-4200P/SCAT/Phoenix */
|
|
|
|
|
#ifdef WALTJE
|
|
|
|
|
ROM_OPENAT, /* PC/AT clone with Open BIOS */
|
2018-01-01 02:57:39 +01:00
|
|
|
#endif
|
2018-01-25 22:36:24 +01:00
|
|
|
|
|
|
|
|
ROM_IBMPS2_M50,
|
|
|
|
|
|
|
|
|
|
ROM_AMI386SX,
|
|
|
|
|
ROM_MEGAPC,
|
|
|
|
|
ROM_AWARD386SX_OPTI495,
|
|
|
|
|
#if defined(DEV_BRANCH) && defined(USE_PORTABLE3)
|
|
|
|
|
ROM_DESKPRO_386,
|
2017-12-31 21:59:27 +01:00
|
|
|
#endif
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_DTK386,
|
|
|
|
|
ROM_IBMPS1_2121,
|
|
|
|
|
ROM_IBMPS1_2121_ISA,/* IBM PS/1 Model 2121 with ISA expansion bus */
|
|
|
|
|
#if defined(DEV_BRANCH) && defined(USE_PORTABLE3)
|
2017-11-11 01:37:23 -05:00
|
|
|
ROM_PORTABLEIII386,
|
2018-01-01 02:57:39 +01:00
|
|
|
#endif
|
2018-01-25 22:36:24 +01:00
|
|
|
|
|
|
|
|
ROM_IBMPS2_M55SX,
|
2017-09-25 04:31:20 -04:00
|
|
|
|
|
|
|
|
ROM_AMI386DX_OPTI495,
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_MEGAPCDX, /* 386DX mdl - Note: documentation (in German) clearly says such a model exists */
|
|
|
|
|
ROM_AWARD386DX_OPTI495,
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_MR386DX_OPTI495,
|
|
|
|
|
|
|
|
|
|
ROM_IBMPS2_M80,
|
|
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_AMI486,
|
|
|
|
|
ROM_WIN486,
|
2017-12-25 17:57:05 +01:00
|
|
|
#ifdef UNIMPLEMENTED_MACHINES
|
2017-10-15 02:43:13 +02:00
|
|
|
ROM_VLI486SV2G, /* ASUS VL/I-486SV2G/SiS 471/Award/SiS 85C471 */ /* 51 */
|
2017-12-25 17:57:05 +01:00
|
|
|
#endif
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_AWARD486_OPTI495,
|
|
|
|
|
ROM_DTK486, /* DTK PKM-0038S E-2/SiS 471/Award/SiS 85C471 */
|
|
|
|
|
#if defined(DEV_BRANCH) && defined(USE_GREENB)
|
|
|
|
|
ROM_4GPV31, /* Green-B 4GPV3.1 ISA/VLB 486/Pentium, AMI */
|
2017-12-25 17:57:05 +01:00
|
|
|
#endif
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_IBMPS1_2133,
|
2017-10-15 02:43:13 +02:00
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
#ifdef WALTJE
|
|
|
|
|
ROM_IBMPS2_M80_486,
|
2018-01-01 02:57:39 +01:00
|
|
|
#endif
|
2017-09-25 04:31:20 -04:00
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_R418, /* Rise Computer R418/SiS 496/497/Award/SMC FDC37C665 */
|
2017-09-25 04:31:20 -04:00
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_REVENGE, /* Intel Premiere/PCI I/430LX/AMI/SMC FDC37C665 */
|
2017-09-25 04:31:20 -04:00
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_PLATO, /* Intel Premiere/PCI II/430NX/AMI/SMC FDC37C665 */
|
2017-09-25 04:31:20 -04:00
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_P54TP4XE, /* ASUS P/I-P55TP4XE/430FX/Award/SMC FDC37C665 */
|
|
|
|
|
ROM_ENDEAVOR, /* Intel Advanced_EV/430FX/AMI/NS PC87306 */
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_ZAPPA, /* Intel Advanced_ZP/430FX/AMI/NS PC87306 */
|
2018-01-25 22:36:24 +01:00
|
|
|
#ifdef UNIMPLEMENTED_MACHINES
|
|
|
|
|
ROM_POWERMATE_V, /* NEC PowerMate V/430FX/Phoenix/SMC FDC37C66 5*/
|
2018-01-01 02:57:39 +01:00
|
|
|
#endif
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_MB500N, /* PC Partner MB500N/430FX/Award/SMC FDC37C665 */
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_PRESIDENT, /* President Award 430FX PCI/430FX/Award/Unknown SIO */
|
2017-12-04 14:50:41 -05:00
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_THOR, /* Intel Advanced_ATX/430FX/AMI/NS PC87306 */
|
|
|
|
|
ROM_MRTHOR, /* Intel Advanced_ATX/430FX/MR.BIOS/NS PC87306 */
|
2017-12-04 14:50:41 -05:00
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_ACERM3A, /* Acer M3A/430HX/Acer/SMC FDC37C932FR */
|
|
|
|
|
ROM_ACERV35N, /* Acer V35N/430HX/Acer/SMC FDC37C932FR */
|
|
|
|
|
ROM_AP53, /* AOpen AP53/430HX/AMI/SMC FDC37C665/669 */
|
|
|
|
|
ROM_P55T2P4, /* ASUS P/I-P55T2P4/430HX/Award/Winbond W8387F*/
|
|
|
|
|
ROM_P55T2S, /* ASUS P/I-P55T2S/430HX/AMI/NS PC87306 */
|
2017-09-25 04:31:20 -04:00
|
|
|
|
2018-01-25 22:36:24 +01:00
|
|
|
ROM_P55TVP4, /* ASUS P/I-P55TVP4/430HX/Award/Winbond W8387F*/
|
|
|
|
|
ROM_430VX, /* Award 430VX PCI/430VX/Award/UMC UM8669F*/
|
|
|
|
|
ROM_P55VA, /* Epox P55-VA/430VX/Award/SMC FDC37C932FR*/
|
|
|
|
|
|
|
|
|
|
#if defined(DEV_BRANCH) && defined(USE_I686)
|
|
|
|
|
ROM_440FX, /* Tyan Titan-Pro AT/440FX/Award BIOS/SMC FDC37C665 */
|
|
|
|
|
ROM_S1668, /* Tyan Titan-Pro ATX/440FX/AMI/SMC FDC37C669 */
|
|
|
|
|
#endif
|
2017-12-31 06:37:19 +01:00
|
|
|
|
2017-09-25 04:31:20 -04:00
|
|
|
ROM_MAX
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern int romspresent[ROM_MAX];
|
|
|
|
|
|
|
|
|
|
extern uint8_t rom_read(uint32_t addr, void *p);
|
|
|
|
|
extern uint16_t rom_readw(uint32_t addr, void *p);
|
|
|
|
|
extern uint32_t rom_readl(uint32_t addr, void *p);
|
|
|
|
|
|
|
|
|
|
extern FILE *rom_fopen(wchar_t *fn, wchar_t *mode);
|
|
|
|
|
extern int rom_getfile(wchar_t *fn, wchar_t *s, int size);
|
|
|
|
|
extern int rom_present(wchar_t *fn);
|
|
|
|
|
|
2017-09-25 20:47:58 -04:00
|
|
|
extern int rom_load_linear(wchar_t *fn, uint32_t addr, int sz,
|
|
|
|
|
int off, uint8_t *ptr);
|
|
|
|
|
extern int rom_load_interleaved(wchar_t *fnl, wchar_t *fnh, uint32_t addr,
|
|
|
|
|
int sz, int off, uint8_t *ptr);
|
|
|
|
|
|
2017-09-25 04:31:20 -04:00
|
|
|
extern int rom_init(rom_t *rom, wchar_t *fn, uint32_t address, int size,
|
|
|
|
|
int mask, int file_offset, uint32_t flags);
|
|
|
|
|
extern int rom_init_interleaved(rom_t *rom, wchar_t *fn_low,
|
|
|
|
|
wchar_t *fn_high, uint32_t address,
|
|
|
|
|
int size, int mask, int file_offset,
|
|
|
|
|
uint32_t flags);
|
|
|
|
|
|
|
|
|
|
extern int rom_load_bios(int rom_id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif /*EMU_ROM_H*/
|