Updated ROM BIOS handling to use the external loader.
Several cleanups and fixes here and there. Updated (Windows) UI to properly handle resets and changes in Settings. Updated to no longer scan for roms at startup.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Driver for the ESDI controller (WD1007-vse1) for PC/AT.
|
||||
*
|
||||
* Version: @(#)hdc_esdi_at.c 1.0.1 2018/02/14
|
||||
* Version: @(#)hdc_esdi_at.c 1.0.2 2018/02/26
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
|
||||
#define HDC_TIME (TIMER_USEC*10LL)
|
||||
#define BIOS_FILE L"roms/hdd/esdi_at/62-000279-061.bin"
|
||||
#define ESDI_BIOS_FILE L"roms/hdd/esdi_at/62-000279-061.bin"
|
||||
|
||||
#define STAT_ERR 0x01
|
||||
#define STAT_INDEX 0x02
|
||||
@@ -808,7 +808,7 @@ wd1007vse1_init(device_t *info)
|
||||
esdi->error = 1;
|
||||
|
||||
rom_init(&esdi->bios_rom,
|
||||
BIOS_FILE, 0xc8000, 0x4000, 0x3fff, 0, MEM_MAPPING_EXTERNAL);
|
||||
ESDI_BIOS_FILE, 0xc8000, 0x4000, 0x3fff, 0, MEM_MAPPING_EXTERNAL);
|
||||
|
||||
io_sethandler(0x01f0, 1,
|
||||
esdi_read, esdi_readw, NULL,
|
||||
@@ -849,7 +849,7 @@ wd1007vse1_close(void *priv)
|
||||
static int
|
||||
wd1007vse1_available(void)
|
||||
{
|
||||
return(rom_present(BIOS_FILE));
|
||||
return(rom_present(ESDI_BIOS_FILE));
|
||||
}
|
||||
|
||||
|
||||
|
||||
14
src/emu.h
14
src/emu.h
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Main include file for the application.
|
||||
*
|
||||
* Version: @(#)emu.h 1.0.1 2018/02/14
|
||||
* Version: @(#)emu.h 1.0.3 2018/02/28
|
||||
*
|
||||
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
*
|
||||
@@ -61,10 +61,15 @@
|
||||
#define EMU_VERSION_W L"0.1.0"
|
||||
|
||||
/* Filename and pathname info. */
|
||||
#define CONFIG_FILE L"varcem.cfg"
|
||||
#define NVR_PATH L"nvr"
|
||||
#define NVR_PATH L"nvr"
|
||||
#define ROMS_PATH L"roms"
|
||||
#define MACHINES_PATH L"machines"
|
||||
#define VIDEO_PATH L"machines"
|
||||
#define SCREENSHOT_PATH L"screenshots"
|
||||
|
||||
#define CONFIG_FILE L"varcem.cfg"
|
||||
#define BIOS_FILE L"bios.txt"
|
||||
|
||||
|
||||
/*FIXME: move to where it's needed (ui) */
|
||||
#if defined(ENABLE_BUSLOGIC_LOG) || \
|
||||
@@ -180,9 +185,6 @@ extern void pc_reset_hard(void);
|
||||
extern void pc_reset(int hard);
|
||||
extern void pc_full_speed(void);
|
||||
extern void pc_speed_changed(void);
|
||||
extern void pc_send_cad(void);
|
||||
extern void pc_send_cae(void);
|
||||
extern void pc_send_cab(void);
|
||||
extern void pc_thread(void *param);
|
||||
extern void pc_start(void);
|
||||
extern void pc_onesec(void);
|
||||
|
||||
135
src/keyboard.c
135
src/keyboard.c
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* General keyboard driver interface.
|
||||
*
|
||||
* Version: @(#)keyboard.c 1.0.1 2018/02/14
|
||||
* Version: @(#)keyboard.c 1.0.2 2018/02/28
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -99,9 +99,10 @@ fake_shift_needed(uint16_t scan)
|
||||
case 0x151:
|
||||
case 0x152:
|
||||
case 0x153:
|
||||
return 1;
|
||||
return(1);
|
||||
|
||||
default:
|
||||
return 0;
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,18 +166,23 @@ keyboard_input(int down, uint16_t scan)
|
||||
case 0x01c: /* Left Ctrl */
|
||||
shift |= 0x01;
|
||||
break;
|
||||
|
||||
case 0x11c: /* Right Ctrl */
|
||||
shift |= 0x10;
|
||||
break;
|
||||
|
||||
case 0x02a: /* Left Shift */
|
||||
shift |= 0x02;
|
||||
break;
|
||||
|
||||
case 0x036: /* Right Shift */
|
||||
shift |= 0x20;
|
||||
break;
|
||||
|
||||
case 0x038: /* Left Alt */
|
||||
shift |= 0x03;
|
||||
break;
|
||||
|
||||
case 0x138: /* Right Alt */
|
||||
shift |= 0x30;
|
||||
break;
|
||||
@@ -186,27 +192,35 @@ keyboard_input(int down, uint16_t scan)
|
||||
case 0x01c: /* Left Ctrl */
|
||||
shift &= ~0x01;
|
||||
break;
|
||||
|
||||
case 0x11c: /* Right Ctrl */
|
||||
shift &= ~0x10;
|
||||
break;
|
||||
|
||||
case 0x02a: /* Left Shift */
|
||||
shift &= ~0x02;
|
||||
break;
|
||||
|
||||
case 0x036: /* Right Shift */
|
||||
shift &= ~0x20;
|
||||
break;
|
||||
|
||||
case 0x038: /* Left Alt */
|
||||
shift &= ~0x03;
|
||||
break;
|
||||
|
||||
case 0x138: /* Right Alt */
|
||||
shift &= ~0x30;
|
||||
break;
|
||||
|
||||
case 0x03a: /* Caps Lock */
|
||||
caps_lock ^= 1;
|
||||
break;
|
||||
|
||||
case 0x045:
|
||||
num_lock ^= 1;
|
||||
break;
|
||||
|
||||
case 0x046:
|
||||
scroll_lock ^= 1;
|
||||
break;
|
||||
@@ -214,11 +228,19 @@ keyboard_input(int down, uint16_t scan)
|
||||
}
|
||||
}
|
||||
|
||||
/* NOTE: Shouldn't this be some sort of bit shift? An array of 8 unsigned 64-bit integers
|
||||
should be enough. */
|
||||
/* recv_key[scan >> 6] |= ((uint64_t) down << ((uint64_t) scan & 0x3fLL)); */
|
||||
/*
|
||||
* NOTE: Shouldn't this be some sort of bit shift?
|
||||
* An array of 8 unsigned 64-bit integers should be enough.
|
||||
*/
|
||||
#if 0
|
||||
recv_key[scan >> 6] |= ((uint64_t) down << ((uint64_t) scan & 0x3fLL));
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
pclog("Received scan code: %03X (%s)\n",
|
||||
scan & 0x1ff, down ? "down" : "up");
|
||||
#endif
|
||||
|
||||
/* pclog("Received scan code: %03X (%s)\n", scan & 0x1ff, down ? "down" : "up"); */
|
||||
recv_key[scan & 0x1ff] = down;
|
||||
|
||||
key_process(scan & 0x1ff, down);
|
||||
@@ -231,49 +253,54 @@ keyboard_do_break(uint16_t scan)
|
||||
scancode *codes = scan_table;
|
||||
|
||||
if (AT && ((keyboard_mode & 3) == 3)) {
|
||||
if (!keyboard_set3_all_break &&
|
||||
!recv_key[scan] &&
|
||||
if (!keyboard_set3_all_break && !recv_key[scan] &&
|
||||
!(keyboard_set3_flags[codes[scan].mk[0]] & 2))
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
} else
|
||||
return 1;
|
||||
return(0);
|
||||
else
|
||||
return(1);
|
||||
}
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* Also called by the emulated keyboard controller to update the states of
|
||||
Caps Lock, Num Lock, and Scroll Lock when receving the "Set keyboard LEDs"
|
||||
command. */
|
||||
/*
|
||||
* Also called by the emulated keyboard controller to update the states
|
||||
* of Caps Lock, Num Lock, and Scroll Lock when receving the "Set LEDs"
|
||||
* keyboard command.
|
||||
*/
|
||||
void
|
||||
keyboard_update_states(uint8_t cl, uint8_t nl, uint8_t sl)
|
||||
{
|
||||
caps_lock = cl;
|
||||
num_lock = nl;
|
||||
scroll_lock = sl;
|
||||
caps_lock = cl;
|
||||
num_lock = nl;
|
||||
scroll_lock = sl;
|
||||
}
|
||||
|
||||
|
||||
uint8_t
|
||||
keyboard_get_shift(void)
|
||||
{
|
||||
return shift;
|
||||
return(shift);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
keyboard_get_states(uint8_t *cl, uint8_t *nl, uint8_t *sl)
|
||||
{
|
||||
if (cl)
|
||||
*cl = caps_lock;
|
||||
if (nl)
|
||||
*nl = num_lock;
|
||||
if (sl)
|
||||
*sl = scroll_lock;
|
||||
if (cl)
|
||||
*cl = caps_lock;
|
||||
if (nl)
|
||||
*nl = num_lock;
|
||||
if (sl)
|
||||
*sl = scroll_lock;
|
||||
}
|
||||
|
||||
|
||||
/* Called by the UI to update the states of Caps Lock, Num Lock, and Scroll Lock. */
|
||||
/*
|
||||
* Called by the UI to update the states of Caps Lock,
|
||||
* Num Lock, and Scroll Lock.
|
||||
*/
|
||||
void
|
||||
keyboard_set_states(uint8_t cl, uint8_t nl, uint8_t sl)
|
||||
{
|
||||
@@ -321,7 +348,57 @@ keyboard_set_states(uint8_t cl, uint8_t nl, uint8_t sl)
|
||||
int
|
||||
keyboard_recv(uint16_t key)
|
||||
{
|
||||
return recv_key[key];
|
||||
return(recv_key[key]);
|
||||
}
|
||||
|
||||
|
||||
/* Insert keystrokes into the machine's keyboard buffer. */
|
||||
void
|
||||
keyboard_send_scan(uint8_t val)
|
||||
{
|
||||
if (AT)
|
||||
keyboard_at_adddata_keyboard_raw(val);
|
||||
else
|
||||
keyboard_send(val);
|
||||
}
|
||||
|
||||
|
||||
/* Send the machine a Control-Alt-DEL sequence. */
|
||||
void
|
||||
keyboard_send_cad(void)
|
||||
{
|
||||
keyboard_send_scan(29); /* Ctrl key pressed */
|
||||
keyboard_send_scan(56); /* Alt key pressed */
|
||||
keyboard_send_scan(83); /* Delete key pressed */
|
||||
keyboard_send_scan(157); /* Ctrl key released */
|
||||
keyboard_send_scan(184); /* Alt key released */
|
||||
keyboard_send_scan(211); /* Delete key released */
|
||||
}
|
||||
|
||||
|
||||
/* Send the machine a Control-Alt-ESC sequence. */
|
||||
void
|
||||
keyboard_send_cae(void)
|
||||
{
|
||||
keyboard_send_scan(29); /* Ctrl key pressed */
|
||||
keyboard_send_scan(56); /* Alt key pressed */
|
||||
keyboard_send_scan(1); /* Esc key pressed */
|
||||
keyboard_send_scan(129); /* Esc key released */
|
||||
keyboard_send_scan(184); /* Alt key released */
|
||||
keyboard_send_scan(157); /* Ctrl key released */
|
||||
}
|
||||
|
||||
|
||||
/* Send the machine a Control-Alt-Break sequence. */
|
||||
void
|
||||
keyboard_send_cab(void)
|
||||
{
|
||||
keyboard_send_scan(29); /* Ctrl key pressed */
|
||||
keyboard_send_scan(56); /* Alt key pressed */
|
||||
keyboard_send_scan(1); /* Esc key pressed */
|
||||
keyboard_send_scan(157); /* Ctrl key released */
|
||||
keyboard_send_scan(184); /* Alt key released */
|
||||
keyboard_send_scan(129); /* Esc key released */
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Definitions for the keyboard interface.
|
||||
*
|
||||
* Version: @(#)keyboard.h 1.0.1 2018/02/14
|
||||
* Version: @(#)keyboard.h 1.0.2 2018/02/28
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -101,6 +101,10 @@ extern uint8_t keyboard_get_shift(void);
|
||||
extern void keyboard_get_states(uint8_t *cl, uint8_t *nl, uint8_t *sl);
|
||||
extern void keyboard_set_states(uint8_t cl, uint8_t nl, uint8_t sl);
|
||||
extern int keyboard_recv(uint16_t key);
|
||||
extern void keyboard_send_scan(uint8_t val);
|
||||
extern void keyboard_send_cad(void);
|
||||
extern void keyboard_send_cae(void);
|
||||
extern void keyboard_send_cab(void);
|
||||
extern int keyboard_isfsexit(void);
|
||||
extern int keyboard_ismsexit(void);
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
*
|
||||
* NOTE: FIXME: Strings 2176 and 2193 are same.
|
||||
*
|
||||
* Version: @(#)language.h 1.0.2 2018/02/24
|
||||
* Version: @(#)language.h 1.0.3 2018/03/01
|
||||
*
|
||||
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
*
|
||||
@@ -51,9 +51,9 @@
|
||||
|
||||
|
||||
/* String IDs. */
|
||||
#define IDS_STRINGS 2048 // "VARCem"
|
||||
#define IDS_2049 2049 // "Error"
|
||||
#define IDS_2050 2050 // "Fatal Error"
|
||||
#define IDS_2048 2048 // "Error"
|
||||
#define IDS_2049 2049 // "Fatal Error"
|
||||
#define IDS_2050 2050 // "Configuration Error"
|
||||
#define IDS_2051 2051 // "This will reset the emulator.."
|
||||
#define IDS_2052 2052 // "DirectDraw Screenshot Error"
|
||||
#define IDS_2053 2053 // "Invalid number of sectors.."
|
||||
@@ -65,7 +65,7 @@
|
||||
#define IDS_2059 2059 // "(Turbo)"
|
||||
#define IDS_2060 2060 // "On"
|
||||
#define IDS_2061 2061 // "Off"
|
||||
#define IDS_2062 2062 // "VARCem was unable to find any.."
|
||||
#define IDS_2062 2062 // "Changes saved, please restart.."
|
||||
#define IDS_2063 2063 // "Configured ROM set not avai.."
|
||||
#define IDS_2064 2064 // "Configured video BIOS not.."
|
||||
#define IDS_2065 2065 // "Machine"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Handling of the emulated machines.
|
||||
*
|
||||
* Version: @(#)machine.c 1.0.2 2018/02/24
|
||||
* Version: @(#)machine.c 1.0.3 2018/03/01
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -55,9 +55,6 @@
|
||||
#include "machine.h"
|
||||
|
||||
|
||||
#define PATH_ROM_BIOS "roms/machines"
|
||||
|
||||
|
||||
int romset;
|
||||
int machine;
|
||||
int AT, PCI;
|
||||
@@ -66,8 +63,7 @@ int AT, PCI;
|
||||
void
|
||||
machine_init(void)
|
||||
{
|
||||
char temp[1024];
|
||||
int i;
|
||||
wchar_t temp[1024];
|
||||
|
||||
pclog("Initializing as \"%s\"\n", machine_getname());
|
||||
|
||||
@@ -78,19 +74,10 @@ machine_init(void)
|
||||
PCI = IS_ARCH(machine, MACHINE_PCI);
|
||||
|
||||
/* Load the machine's ROM BIOS. */
|
||||
#if 0
|
||||
strcpy(temp, PATH_ROM_BIOS);
|
||||
i = strlen(temp);
|
||||
#ifdef _WIN32
|
||||
temp[i++] = '\\';
|
||||
#else
|
||||
temp[i++] = '/';
|
||||
#endif
|
||||
strcpy(&temp[i], machines[machine].bios_path);
|
||||
rom_load_bios(temp);
|
||||
#else
|
||||
rom_load_bios(romset);
|
||||
#endif
|
||||
wcscpy(temp, MACHINES_PATH);
|
||||
plat_path_slash(temp);
|
||||
wcscat(temp, machines[machine].bios_path);
|
||||
(void)rom_load_bios(temp, 0);
|
||||
|
||||
/* Activate the ROM BIOS. */
|
||||
mem_add_bios();
|
||||
@@ -100,6 +87,48 @@ machine_init(void)
|
||||
}
|
||||
|
||||
|
||||
/* Check if the machine's ROM files are present. */
|
||||
int
|
||||
machine_available(int id)
|
||||
{
|
||||
wchar_t temp[1024];
|
||||
int i;
|
||||
|
||||
wcscpy(temp, MACHINES_PATH);
|
||||
plat_path_slash(temp);
|
||||
wcscat(temp, machines[id].bios_path);
|
||||
i = rom_load_bios(temp, 1);
|
||||
|
||||
return(i);
|
||||
}
|
||||
|
||||
|
||||
/* Check for the availability of all the defined machines. */
|
||||
int
|
||||
machine_detect(void)
|
||||
{
|
||||
int c, i;
|
||||
|
||||
pclog("Scanning for ROM images:\n");
|
||||
|
||||
c = 0;
|
||||
for (i=0; i<ROM_MAX; i++) {
|
||||
romspresent[i] = machine_available(i);
|
||||
c += romspresent[i];
|
||||
}
|
||||
|
||||
if (c == 0) {
|
||||
/* No usable ROMs found, aborting. */
|
||||
pclog("No usable machines have been found.\n");
|
||||
return(0);
|
||||
}
|
||||
|
||||
pclog("A total of %d machines are available.\n", c);
|
||||
|
||||
return(c);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
machine_common_init(machine_t *model)
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Handling of the emulated machines.
|
||||
*
|
||||
* Version: @(#)machine.h 1.0.3 2018/02/24
|
||||
* Version: @(#)machine.h 1.0.5 2018/03/01
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -63,7 +63,7 @@ typedef struct _machine_ {
|
||||
const char *name;
|
||||
int id;
|
||||
const char *internal_name;
|
||||
const char *bios_path;
|
||||
const wchar_t *bios_path;
|
||||
struct {
|
||||
const char *name;
|
||||
#ifdef EMU_CPU_H
|
||||
@@ -101,6 +101,8 @@ extern int machine_getmachine(int romset);
|
||||
extern char *machine_getname(void);
|
||||
extern char *machine_get_internal_name(void);
|
||||
extern int machine_get_machine_from_internal_name(char *s);
|
||||
extern int machine_available(int id);
|
||||
extern int machine_detect(void);
|
||||
extern void machine_init(void);
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern device_t *machine_getdevice(int machine);
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* NOTES: OpenAT wip for 286-class machine with open BIOS.
|
||||
* PS2_M80-486 wip, pending receipt of TRM's for machine.
|
||||
*
|
||||
* Version: @(#)machine_table.c 1.0.2 2018/02/22
|
||||
* Version: @(#)machine_table.c 1.0.3 2018/02/26
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -53,139 +53,139 @@
|
||||
|
||||
|
||||
machine_t machines[] = {
|
||||
{ "[8088] AMI XT clone", ROM_AMIXT, "amixt", "generic/ami/amixt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] Compaq Portable", ROM_PORTABLE, "portable", "compaq/portable", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VIDEO, 128, 640, 128, 0, machine_xt_compaq_init, NULL, NULL },
|
||||
{ "[8088] DTK XT clone", ROM_DTKXT, "dtk", "dtk/dtk", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] IBM PC", ROM_IBMPC, "ibmpc", "ibm/ibmpc", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 32, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] IBM PCjr", ROM_IBMPCJR, "ibmpcjr", "ibm/ibmpcjr", {{"", cpus_pcjr}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO, 128, 640, 128, 0, machine_pcjr_init, pcjr_get_device, NULL },
|
||||
{ "[8088] IBM XT", ROM_IBMXT, "ibmxt", "ibm/ibmxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] Generic XT clone", ROM_GENXT, "genxt", "generic/genxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] Juko XT clone", ROM_JUKOPC, "jukopc", "juko/jukopc", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] Phoenix XT clone", ROM_PXXT, "pxxt", "generic/phoenix/pxxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] Schneider EuroPC", ROM_EUROPC, "europc", "schneider/europc", {{"Siemens",cpus_europc}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_HDC | MACHINE_VIDEO | MACHINE_MOUSE, 512, 640, 128, 0, machine_europc_init, NULL, NULL },
|
||||
{ "[8088] Tandy 1000", ROM_TANDY, "tandy", "tandy/tandy", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 128, 640, 128, 0, machine_tandy1k_init, tandy1k_get_device, NULL },
|
||||
{ "[8088] Tandy 1000 HX", ROM_TANDY1000HX, "tandy1000hx", "tandy/tandy1000hx", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 256, 640, 128, 0, machine_tandy1k_init, tandy1k_hx_get_device, NULL },
|
||||
{ "[8088] AMI XT clone", ROM_AMIXT, "amixt", L"generic/ami/amixt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] Compaq Portable", ROM_PORTABLE, "portable", L"compaq/portable", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VIDEO, 128, 640, 128, 0, machine_xt_compaq_init, NULL, NULL },
|
||||
{ "[8088] DTK XT clone", ROM_DTKXT, "dtk", L"dtk/dtk", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] IBM PC", ROM_IBMPC, "ibmpc", L"ibm/ibmpc", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 32, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] IBM PCjr", ROM_IBMPCJR, "ibmpcjr", L"ibm/ibmpcjr", {{"", cpus_pcjr}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO, 128, 640, 128, 0, machine_pcjr_init, pcjr_get_device, NULL },
|
||||
{ "[8088] IBM XT", ROM_IBMXT, "ibmxt", L"ibm/ibmxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] Generic XT clone", ROM_GENXT, "genxt", L"generic/genxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] Juko XT clone", ROM_JUKOPC, "jukopc", L"juko/jukopc", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] Phoenix XT clone", ROM_PXXT, "pxxt", L"generic/phoenix/pxxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL, NULL },
|
||||
{ "[8088] Schneider EuroPC", ROM_EUROPC, "europc", L"schneider/europc", {{"Siemens", cpus_europc}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_HDC | MACHINE_VIDEO | MACHINE_MOUSE, 512, 640, 128, 0, machine_europc_init, NULL, NULL },
|
||||
{ "[8088] Tandy 1000", ROM_TANDY, "tandy", L"tandy/tandy", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 128, 640, 128, 0, machine_tandy1k_init, tandy1k_get_device, NULL },
|
||||
{ "[8088] Tandy 1000 HX", ROM_TANDY1000HX, "tandy1000hx", L"tandy/tandy1000hx", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 256, 640, 128, 0, machine_tandy1k_init, tandy1k_hx_get_device, NULL },
|
||||
#if defined(DEV_BRANCH) && defined(USE_LASERXT)
|
||||
{ "[8088] VTech Laser Turbo XT", ROM_LTXT, "ltxt", "vtech/ltxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 512, 512, 256, 0, machine_xt_laserxt_init, NULL, NULL },
|
||||
{ "[8088] VTech Laser Turbo XT", ROM_LTXT, "ltxt", L"vtech/ltxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 512, 512, 256, 0, machine_xt_laserxt_init, NULL, NULL },
|
||||
#endif
|
||||
|
||||
{ "[8086] Amstrad PC1512", ROM_PC1512, "pc1512", "amstrad/pc1512", {{"", cpus_pc1512}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 512, 640, 128, 63, machine_amstrad_init, NULL, nvr_at_close },
|
||||
{ "[8086] Amstrad PC1640", ROM_PC1640, "pc1640", "amstrad/pc1640", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 640, 640, 0, 63, machine_amstrad_init, NULL, nvr_at_close },
|
||||
{ "[8086] Amstrad PC2086", ROM_PC2086, "pc2086", "amstrad/pc2086", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 640, 640, 0, 63, machine_amstrad_init, NULL, nvr_at_close },
|
||||
{ "[8086] Amstrad PC3086", ROM_PC3086, "pc3086", "amstrad/pc3086", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 640, 640, 0, 63, machine_amstrad_init, NULL, nvr_at_close },
|
||||
{ "[8086] Amstrad PC20(0)", ROM_PC200, "pc200", "amstrad/pc200", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 512, 640, 128, 63, machine_amstrad_init, NULL, nvr_at_close },
|
||||
{ "[8086] Olivetti M24", ROM_OLIM24, "olivetti_m24", "olivetti/olivetti_m24", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 128, 640, 128, 0, machine_olim24_init, NULL, NULL },
|
||||
{ "[8086] Tandy 1000 SL/2", ROM_TANDY1000SL2, "tandy1000sl2", "tandy/tandy1000sl2", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 512, 768, 128, 0, machine_tandy1k_init, NULL, NULL },
|
||||
{ "[8086] Amstrad PC1512", ROM_PC1512, "pc1512", L"amstrad/pc1512", {{"", cpus_pc1512}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 512, 640, 128, 63, machine_amstrad_init, NULL, nvr_at_close },
|
||||
{ "[8086] Amstrad PC1640", ROM_PC1640, "pc1640", L"amstrad/pc1640", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 640, 640, 0, 63, machine_amstrad_init, NULL, nvr_at_close },
|
||||
{ "[8086] Amstrad PC2086", ROM_PC2086, "pc2086", L"amstrad/pc2086", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 640, 640, 0, 63, machine_amstrad_init, NULL, nvr_at_close },
|
||||
{ "[8086] Amstrad PC3086", ROM_PC3086, "pc3086", L"amstrad/pc3086", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 640, 640, 0, 63, machine_amstrad_init, NULL, nvr_at_close },
|
||||
{ "[8086] Amstrad PC20(0)", ROM_PC200, "pc200", L"amstrad/pc200", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 512, 640, 128, 63, machine_amstrad_init, NULL, nvr_at_close },
|
||||
{ "[8086] Olivetti M24", ROM_OLIM24, "olivetti_m24", L"olivetti/olivetti_m24", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 128, 640, 128, 0, machine_olim24_init, NULL, NULL },
|
||||
{ "[8086] Tandy 1000 SL/2", ROM_TANDY1000SL2, "tandy1000sl2", L"tandy/tandy1000sl2", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 512, 768, 128, 0, machine_tandy1k_init, NULL, NULL },
|
||||
#if defined(DEV_BRANCH) && defined(USE_LASERXT)
|
||||
{ "[8086] VTech Laser XT3", ROM_LXT3, "lxt3", "vtech/lxt3", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 256, 512, 256, 0, machine_xt_laserxt_init, NULL, NULL },
|
||||
{ "[8086] VTech Laser XT3", ROM_LXT3, "lxt3", L"vtech/lxt3", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 256, 512, 256, 0, machine_xt_laserxt_init, NULL, NULL },
|
||||
#endif
|
||||
|
||||
{ "[286 ISA] AMI 286 clone", ROM_AMI286, "ami286", "generic/ami/ami286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_neat_ami_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Award 286 clone", ROM_AWARD286, "award286", "generic/award/award286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_scat_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Commodore PC 30 III", ROM_CMDPC30, "cmdpc30", "commodore/cmdpc30", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 640,16384, 128, 127, machine_at_cmdpc_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Compaq Portable II", ROM_PORTABLEII, "portableii", "compaq/portableii", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 640,16384, 128, 127, machine_at_compaq_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] AMI 286 clone", ROM_AMI286, "ami286", L"generic/ami/ami286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_neat_ami_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Award 286 clone", ROM_AWARD286, "award286", L"generic/award/award286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_scat_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Commodore PC 30 III", ROM_CMDPC30, "cmdpc30", L"commodore/cmdpc30", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 640,16384, 128, 127, machine_at_cmdpc_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Compaq Portable II", ROM_PORTABLEII, "portableii", L"compaq/portableii", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 640,16384, 128, 127, machine_at_compaq_init, NULL, nvr_at_close },
|
||||
#if defined(DEV_BRANCH) && defined(USE_PORTABLE3)
|
||||
{ "[286 ISA] Compaq Portable III", ROM_PORTABLEIII, "portableiii", "compaq/portableiii", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_VIDEO, 640,16384, 128, 127, machine_at_compaq_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Compaq Portable III", ROM_PORTABLEIII, "portableiii", L"compaq/portableiii", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_VIDEO, 640,16384, 128, 127, machine_at_compaq_init, NULL, nvr_at_close },
|
||||
#endif
|
||||
{ "[286 ISA] Hyundai Super-286TR", ROM_SUPER286TR, "super286tr", "hyundai/super286tr", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_scat_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] IBM AT", ROM_IBMAT, "ibmat", "ibm/ibmat", {{"", cpus_ibmat}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 63, machine_at_ibm_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] IBM PS/1 model 2011", ROM_IBMPS1_2011, "ibmps1es", "ibm/ibmps1es", {{"", cpus_ps1_m2011}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 512,16384, 512, 127, machine_ps1_m2011_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] IBM PS/2 model 30-286", ROM_IBMPS2_M30_286, "ibmps2_m30_286", "ibm/ibmps2_m30_286", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 16, 1, 127, machine_ps2_m30_286_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] IBM XT Model 286", ROM_IBMXT286, "ibmxt286", "ibm/ibmxt286", {{"", cpus_ibmxt286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 63, machine_at_ibm_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Samsung SPC-4200P", ROM_SPC4200P, "spc4200p", "samsung/spc4200p", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_PS2, 512, 2048, 128, 127, machine_at_scat_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Hyundai Super-286TR", ROM_SUPER286TR, "super286tr", L"hyundai/super286tr", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_scat_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] IBM AT", ROM_IBMAT, "ibmat", L"ibm/ibmat", {{"", cpus_ibmat}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 63, machine_at_ibm_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] IBM PS/1 model 2011", ROM_IBMPS1_2011, "ibmps1es", L"ibm/ibmps1es", {{"", cpus_ps1_m2011}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 512,16384, 512, 127, machine_ps1_m2011_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] IBM PS/2 model 30-286", ROM_IBMPS2_M30_286, "ibmps2_m30_286", L"ibm/ibmps2_m30_286", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 16, 1, 127, machine_ps2_m30_286_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] IBM XT Model 286", ROM_IBMXT286, "ibmxt286", L"ibm/ibmxt286", {{"", cpus_ibmxt286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 63, machine_at_ibm_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Samsung SPC-4200P", ROM_SPC4200P, "spc4200p", L"samsung/spc4200p", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_PS2, 512, 2048, 128, 127, machine_at_scat_init, NULL, nvr_at_close },
|
||||
#ifdef WALTJE
|
||||
{ "[286 ISA] OpenAT 286", ROM_OPENAT, "open_at", "generic/open_at", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512, 4096, 128, 127, machine_at_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] OpenAT 286", ROM_OPENAT, "open_at", L"generic/open_at", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512, 4096, 128, 127, machine_at_init, NULL, nvr_at_close },
|
||||
#endif
|
||||
{ "[286 ISA] Toshiba 3100e", ROM_T3100E, "t3100e", "toshiba/t3100e", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1024, 5120, 256, 63, machine_at_t3100e_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Toshiba 3100e", ROM_T3100E, "t3100e", L"toshiba/t3100e", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1024, 5120, 256, 63, machine_at_t3100e_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[286 MCA] IBM PS/2 model 50", ROM_IBMPS2_M50, "ibmps2_m50", "ibm/ibmps2_m50", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 10, 1, 63, machine_ps2_model_50_init, NULL, nvr_at_close },
|
||||
{ "[286 MCA] IBM PS/2 model 50", ROM_IBMPS2_M50, "ibmps2_m50", L"ibm/ibmps2_m50", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 10, 1, 63, machine_ps2_model_50_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[386SX ISA] AMI 386SX clone", ROM_AMI386SX, "ami386", "generic/ami/ami386", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 512,16384, 128, 127, machine_at_headland_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] Amstrad MegaPC", ROM_MEGAPC, "megapc", "amstrad/megapc", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_VIDEO | MACHINE_HDC, 1, 16, 1, 127, machine_at_wd76c10_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] Award 386SX clone", ROM_AWARD386SX_OPTI495, "award386sx", "generic/award/award495", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] DTK 386SX clone", ROM_DTK386, "dtk386", "dtk/dtk386", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 512,16384, 128, 127, machine_at_neat_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] IBM PS/1 model 2121", ROM_IBMPS1_2121, "ibmps1_2121", "ibm/ibmps1_2121", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 1, 6, 1, 127, machine_ps1_m2121_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] IBM PS/1 m.2121+ISA", ROM_IBMPS1_2121_ISA, "ibmps1_2121_isa", "ibm/ibmps1_2121", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 1, 6, 1, 127, machine_ps1_m2121_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] AMI 386SX clone", ROM_AMI386SX, "ami386", L"generic/ami/ami386", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 512,16384, 128, 127, machine_at_headland_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] Amstrad MegaPC", ROM_MEGAPC, "megapc", L"amstrad/megapc", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_VIDEO | MACHINE_HDC, 1, 16, 1, 127, machine_at_wd76c10_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] Award 386SX clone", ROM_AWARD386SX_OPTI495, "award386sx", L"generic/award/award495", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] DTK 386SX clone", ROM_DTK386, "dtk386", L"dtk/dtk386", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 512,16384, 128, 127, machine_at_neat_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] IBM PS/1 model 2121", ROM_IBMPS1_2121, "ibmps1_2121", L"ibm/ibmps1_2121", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 1, 6, 1, 127, machine_ps1_m2121_init, NULL, nvr_at_close },
|
||||
{ "[386SX ISA] IBM PS/1 m.2121+ISA", ROM_IBMPS1_2121_ISA, "ibmps1_2121_isa", L"ibm/ibmps1_2121", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 1, 6, 1, 127, machine_ps1_m2121_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[386SX MCA] IBM PS/2 model 55SX", ROM_IBMPS2_M55SX, "ibmps2_m55sx", "ibm/ibmps2_m55sx", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 8, 1, 63, machine_ps2_model_55sx_init, NULL, nvr_at_close },
|
||||
{ "[386SX MCA] IBM PS/2 model 55SX", ROM_IBMPS2_M55SX, "ibmps2_m55sx", L"ibm/ibmps2_m55sx", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 8, 1, 63, machine_ps2_model_55sx_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[386DX ISA] AMI 386DX clone", ROM_AMI386DX_OPTI495, "ami386dx", "generic/ami/ami386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_ami_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] Amstrad MegaPC 386DX", ROM_MEGAPCDX, "megapcdx", "amstrad/megapc", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 1, 32, 1, 127, machine_at_wd76c10_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] Award 386DX clone", ROM_AWARD386DX_OPTI495, "award386dx", "generic/award/award495", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] MR 386DX clone", ROM_MR386DX_OPTI495, "mr386dx", "generic/microid/mr386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_ami_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] AMI 386DX clone", ROM_AMI386DX_OPTI495, "ami386dx", L"generic/ami/ami386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_ami_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] Amstrad MegaPC 386DX", ROM_MEGAPCDX, "megapcdx", L"amstrad/megapc", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 1, 32, 1, 127, machine_at_wd76c10_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] Award 386DX clone", ROM_AWARD386DX_OPTI495, "award386dx", L"generic/award/award495", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] MR 386DX clone", ROM_MR386DX_OPTI495, "mr386dx", L"generic/microid/mr386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_ami_init, NULL, nvr_at_close },
|
||||
#if defined(DEV_BRANCH) && defined(USE_PORTABLE3)
|
||||
{ "[386DX ISA] Compaq Portable III (386)", ROM_PORTABLEIII386, "portableiii386", "compaq/deskpro386", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_HDC | MACHINE_VIDEO, 1, 14, 1, 127, machine_at_compaq_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] Compaq Portable III (386)", ROM_PORTABLEIII386, "portableiii386", L"compaq/deskpro386", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_HDC | MACHINE_VIDEO, 1, 14, 1, 127, machine_at_compaq_init, NULL, nvr_at_close },
|
||||
#endif
|
||||
|
||||
{ "[386DX MCA] IBM PS/2 model 80", ROM_IBMPS2_M80, "ibmps2_m80", "ibm/ibmps2_m80", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 12, 1, 63, machine_ps2_model_80_init, NULL, nvr_at_close },
|
||||
{ "[386DX MCA] IBM PS/2 model 80", ROM_IBMPS2_M80, "ibmps2_m80", L"ibm/ibmps2_m80", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 12, 1, 63, machine_ps2_model_80_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[486 ISA] AMI 486 clone", ROM_AMI486, "ami486", "generic/ami/ami486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_ali1429_init, NULL, nvr_at_close },
|
||||
{ "[486 ISA] AMI WinBIOS 486", ROM_WIN486, "win486", "generic/ami/win486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_ali1429_init, NULL, nvr_at_close },
|
||||
{ "[486 ISA] Award 486 clone", ROM_AWARD486_OPTI495, "award486", "generic/award/award495", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL, nvr_at_close },
|
||||
{ "[486 ISA] DTK PKM-0038S E-2", ROM_DTK486, "dtk486", "dtk/dtk486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 1, 128, 1, 127, machine_at_dtk486_init, NULL, nvr_at_close },
|
||||
{ "[486 ISA] IBM PS/1 model 2133", ROM_IBMPS1_2133, "ibmps1_2133", "ibm/ibmps1_2133", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 1, 64, 1, 127, machine_ps1_m2133_init, NULL, nvr_at_close },
|
||||
{ "[486 ISA] AMI 486 clone", ROM_AMI486, "ami486", L"generic/ami/ami486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_ali1429_init, NULL, nvr_at_close },
|
||||
{ "[486 ISA] AMI WinBIOS 486", ROM_WIN486, "win486", L"generic/ami/win486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_ali1429_init, NULL, nvr_at_close },
|
||||
{ "[486 ISA] Award 486 clone", ROM_AWARD486_OPTI495, "award486", L"generic/award/award495", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL, nvr_at_close },
|
||||
{ "[486 ISA] DTK PKM-0038S E-2", ROM_DTK486, "dtk486", L"dtk/dtk486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 1, 128, 1, 127, machine_at_dtk486_init, NULL, nvr_at_close },
|
||||
{ "[486 ISA] IBM PS/1 model 2133", ROM_IBMPS1_2133, "ibmps1_2133", L"ibm/ibmps1_2133", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 1, 64, 1, 127, machine_ps1_m2133_init, NULL, nvr_at_close },
|
||||
|
||||
#ifdef WALTJE
|
||||
{ "[486 MCA] IBM PS/2 model 80-486", ROM_IBMPS2_M80_486, "ibmps2_m80-486", "ibm/ibmps2_m80", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 32, 1, 63, machine_ps2_model_80_486_init, NULL, nvr_at_close },
|
||||
{ "[486 MCA] IBM PS/2 model 80-486", ROM_IBMPS2_M80_486, "ibmps2_m80-486", L"ibm/ibmps2_m80", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 32, 1, 63, machine_ps2_model_80_486_init, NULL, nvr_at_close },
|
||||
#endif
|
||||
|
||||
{ "[486 PCI] Rise Computer R418", ROM_R418, "r418", "rise/r418", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 1, 255, 1, 127, machine_at_r418_init, NULL, nvr_at_close },
|
||||
{ "[486 PCI] Rise Computer R418", ROM_R418, "r418", L"rise/r418", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 1, 255, 1, 127, machine_at_r418_init, NULL, nvr_at_close },
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_GREENB)
|
||||
{ "[486 VLB] Green-B 4GP V3.1", ROM_4GPV31, "4gpv31", "addtech/green-b", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT, 1, 128, 1, 127, machine_at_4gpv31_init, NULL, nvr_at_close },
|
||||
{ "[486 VLB] Green-B 4GP V3.1", ROM_4GPV31, "4gpv31", L"addtech/green-b", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VLB | MACHINE_AT, 1, 128, 1, 127, machine_at_4gpv31_init, NULL, nvr_at_close },
|
||||
#endif
|
||||
|
||||
{ "[Socket 4 LX] Intel Premiere/PCI", ROM_REVENGE, "revenge", "intel/revenge", {{"Intel", cpus_Pentium5V}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 2, 128, 2, 127, machine_at_batman_init, NULL, nvr_at_close },
|
||||
{ "[Socket 4 LX] Intel Premiere/PCI", ROM_REVENGE, "revenge", L"intel/revenge", {{"Intel", cpus_Pentium5V}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 2, 128, 2, 127, machine_at_batman_init, NULL, nvr_at_close },
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_AMD_K)
|
||||
{ "[Socket 5 NX] Intel Premiere/PCI II", ROM_PLATO, "plato", "intel/plato", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 2, 128, 2, 127, machine_at_plato_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 NX] Intel Premiere/PCI II", ROM_PLATO, "plato", L"intel/plato", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 2, 128, 2, 127, machine_at_plato_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[Socket 5 FX] ASUS P/I-P54TP4XE", ROM_P54TP4XE, "p54tp4xe", "asus/p54tp4xe", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_p54tp4xe_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] Intel Advanced/EV", ROM_ENDEAVOR, "endeavor", "intel/endeavor", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_endeavor_init, at_endeavor_get_device, nvr_at_close },
|
||||
{ "[Socket 5 FX] Intel Advanced/ZP", ROM_ZAPPA, "zappa", "intel/zappa", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_zappa_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] PC Partner MB500N", ROM_MB500N, "mb500n", "pcpartner/mb500n", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_mb500n_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] President Award 430FX PCI",ROM_PRESIDENT, "president", "president/president", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_president_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] ASUS P/I-P54TP4XE", ROM_P54TP4XE, "p54tp4xe", L"asus/p54tp4xe", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_p54tp4xe_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] Intel Advanced/EV", ROM_ENDEAVOR, "endeavor", L"intel/endeavor", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_endeavor_init, at_endeavor_get_device, nvr_at_close },
|
||||
{ "[Socket 5 FX] Intel Advanced/ZP", ROM_ZAPPA, "zappa", L"intel/zappa", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_zappa_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] PC Partner MB500N", ROM_MB500N, "mb500n", L"pcpartner/mb500n", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_mb500n_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] President Award 430FX PCI",ROM_PRESIDENT, "president", L"president/president", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_president_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[Socket 7 FX] Intel Advanced/ATX", ROM_THOR, "thor", "intel/thor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_thor_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 FX] MR Intel Advanced/ATX", ROM_MRTHOR, "mrthor", "intel/mrthor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_thor_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 FX] Intel Advanced/ATX", ROM_THOR, "thor", L"intel/thor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_thor_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 FX] MR Intel Advanced/ATX", ROM_MRTHOR, "mrthor", L"intel/mrthor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_thor_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[Socket 7 HX] Acer M3a", ROM_ACERM3A, "acerm3a", "acer/acerm3a", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 192, 8, 127, machine_at_acerm3a_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] Acer V35n", ROM_ACERV35N, "acerv35n", "acer/acerv35n", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 192, 8, 127, machine_at_acerv35n_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] AOpen AP53", ROM_AP53, "ap53", "aopen/ap53", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 512, 8, 127, machine_at_ap53_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] ASUS P/I-P55T2P4", ROM_P55T2P4, "p55t2p4", "asus/p55t2p4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 512, 8, 127, machine_at_p55t2p4_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] SuperMicro Super P55T2S", ROM_P55T2S, "p55t2s", "supermicro/p55t2s", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 768, 8, 127, machine_at_p55t2s_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] Acer M3a", ROM_ACERM3A, "acerm3a", L"acer/acerm3a", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 192, 8, 127, machine_at_acerm3a_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] Acer V35n", ROM_ACERV35N, "acerv35n", L"acer/acerv35n", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 192, 8, 127, machine_at_acerv35n_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] AOpen AP53", ROM_AP53, "ap53", L"aopen/ap53", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 512, 8, 127, machine_at_ap53_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] ASUS P/I-P55T2P4", ROM_P55T2P4, "p55t2p4", L"asus/p55t2p4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 512, 8, 127, machine_at_p55t2p4_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] SuperMicro Super P55T2S", ROM_P55T2S, "p55t2s", L"supermicro/p55t2s", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 768, 8, 127, machine_at_p55t2s_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[Socket 7 VX] ASUS P/I-P55TVP4", ROM_P55TVP4, "p55tvp4", "asus/p55tvp4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_p55tvp4_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 VX] Award 430VX PCI", ROM_430VX, "430vx", "generic/award/430vx", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_i430vx_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 VX] Epox P55-VA", ROM_P55VA, "p55va", "epox/p55va", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_p55va_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 VX] ASUS P/I-P55TVP4", ROM_P55TVP4, "p55tvp4", L"asus/p55tvp4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_p55tvp4_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 VX] Award 430VX PCI", ROM_430VX, "430vx", L"generic/award/430vx", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_i430vx_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 VX] Epox P55-VA", ROM_P55VA, "p55va", L"epox/p55va", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_p55va_init, NULL, nvr_at_close },
|
||||
#else
|
||||
{ "[Socket 5 NX] Intel Premiere/PCI II", ROM_PLATO, "plato", "intel/plato", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 2, 128, 2, 127, machine_at_plato_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 NX] Intel Premiere/PCI II", ROM_PLATO, "plato", L"intel/plato", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 2, 128, 2, 127, machine_at_plato_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[Socket 5 FX] ASUS P/I-P54TP4XE", ROM_P54TP4XE, "p54tp4xe", "asus/p54tp4xe", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_p54tp4xe_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] Intel Advanced/EV", ROM_ENDEAVOR, "endeavor", "intel/endeavor", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_endeavor_init, at_endeavor_get_device, nvr_at_close },
|
||||
{ "[Socket 5 FX] Intel Advanced/ZP", ROM_ZAPPA, "zappa", "intel/zappa", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_zappa_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] PC Partner MB500N", ROM_MB500N, "mb500n", "pcpartner/mb500n", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_mb500n_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] President Award 430FX PCI",ROM_PRESIDENT, "president", "president/president", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_president_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] ASUS P/I-P54TP4XE", ROM_P54TP4XE, "p54tp4xe", L"asus/p54tp4xe", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_p54tp4xe_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] Intel Advanced/EV", ROM_ENDEAVOR, "endeavor", L"intel/endeavor", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_endeavor_init, at_endeavor_get_device, nvr_at_close },
|
||||
{ "[Socket 5 FX] Intel Advanced/ZP", ROM_ZAPPA, "zappa", L"intel/zappa", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_zappa_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] PC Partner MB500N", ROM_MB500N, "mb500n", L"pcpartner/mb500n", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_mb500n_init, NULL, nvr_at_close },
|
||||
{ "[Socket 5 FX] President Award 430FX PCI",ROM_PRESIDENT, "president", L"president/president", {{"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HDC, 8, 128, 8, 127, machine_at_president_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[Socket 7 FX] Intel Advanced/ATX", ROM_THOR, "thor", "intel/thor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_thor_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 FX] MR Intel Advanced/ATX", ROM_MRTHOR, "mrthor", "intel/mrthor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_thor_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 FX] Intel Advanced/ATX", ROM_THOR, "thor", L"intel/thor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_thor_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 FX] MR Intel Advanced/ATX", ROM_MRTHOR, "mrthor", L"intel/mrthor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_thor_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[Socket 7 HX] Acer M3a", ROM_ACERM3A, "acerm3a", "acer/acerm3a", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 192, 8, 127, machine_at_acerm3a_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] Acer V35n", ROM_ACERV35N, "acerv35n", "acer/acerv35n", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 192, 8, 127, machine_at_acerv35n_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] AOpen AP53", ROM_AP53, "ap53", "aopen/ap53", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 512, 8, 127, machine_at_ap53_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] ASUS P/I-P55T2P4", ROM_P55T2P4, "p55t2p4", "asus/p55t2p4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 512, 8, 127, machine_at_p55t2p4_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] SuperMicro Super P55T2S", ROM_P55T2S, "p55t2s", "supermicro/p55t2s", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 768, 8, 127, machine_at_p55t2s_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] Acer M3a", ROM_ACERM3A, "acerm3a", L"acer/acerm3a", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 192, 8, 127, machine_at_acerm3a_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] Acer V35n", ROM_ACERV35N, "acerv35n", L"acer/acerv35n", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 192, 8, 127, machine_at_acerv35n_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] AOpen AP53", ROM_AP53, "ap53", L"aopen/ap53", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 512, 8, 127, machine_at_ap53_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] ASUS P/I-P55T2P4", ROM_P55T2P4, "p55t2p4", L"asus/p55t2p4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 512, 8, 127, machine_at_p55t2p4_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 HX] SuperMicro Super P55T2S", ROM_P55T2S, "p55t2s", L"supermicro/p55t2s", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 768, 8, 127, machine_at_p55t2s_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[Socket 7 VX] ASUS P/I-P55TVP4", ROM_P55TVP4, "p55tvp4", "asus/p55tvp4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_p55tvp4_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 VX] Award 430VX PCI", ROM_430VX, "430vx", "generic/award/430vx", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_i430vx_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 VX] Epox P55-VA", ROM_P55VA, "p55va", "epox/p55va", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_p55va_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 VX] ASUS P/I-P55TVP4", ROM_P55TVP4, "p55tvp4", L"asus/p55tvp4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_p55tvp4_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 VX] Award 430VX PCI", ROM_430VX, "430vx", L"generic/award/430vx", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_i430vx_init, NULL, nvr_at_close },
|
||||
{ "[Socket 7 VX] Epox P55-VA", ROM_P55VA, "p55va", L"epox/p55va", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 128, 8, 127, machine_at_p55va_init, NULL, nvr_at_close },
|
||||
#endif
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_I686)
|
||||
{ "[Socket 8 FX] Tyan Titan-Pro AT", ROM_440FX, "440fx", "tyan/440fx", {{"Intel", cpus_PentiumPro}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 1024, 8, 127, machine_at_i440fx_init, NULL, nvr_at_close },
|
||||
{ "[Socket 8 FX] Tyan Titan-Pro ATX", ROM_S1668, "tpatx", "tyan/tpatx", {{"Intel", cpus_PentiumPro}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 1024, 8, 127, machine_at_s1668_init, NULL, nvr_at_close },
|
||||
{ "[Socket 8 FX] Tyan Titan-Pro AT", ROM_440FX, "440fx", L"tyan/440fx", {{"Intel", cpus_PentiumPro}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 1024, 8, 127, machine_at_i440fx_init, NULL, nvr_at_close },
|
||||
{ "[Socket 8 FX] Tyan Titan-Pro ATX", ROM_S1668, "tpatx", L"tyan/tpatx", {{"Intel", cpus_PentiumPro}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 8, 1024, 8, 127, machine_at_s1668_init, NULL, nvr_at_close },
|
||||
#endif
|
||||
{ "", -1, "", NULL, {{"", 0}, {"", 0}, {"", 0}}, 0,0,0,0, 0 }
|
||||
{ "", -1, "", NULL, {{"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
* - Realtek RTL8019AS (ISA 16-bit, PnP);
|
||||
* - Realtek RTL8029AS (PCI).
|
||||
*
|
||||
* Version: @(#)net_ne2000.c 1.0.1 2018/02/14
|
||||
* Version: @(#)net_ne2000.c 1.0.2 2018/02/26
|
||||
*
|
||||
* Based on @(#)ne2k.cc v1.56.2.1 2004/02/02 22:37:22 cbothamy
|
||||
*
|
||||
@@ -2348,7 +2348,7 @@ nic_rom_init(nic_t *dev, wchar_t *s)
|
||||
|
||||
if (dev->bios_addr == 0) return;
|
||||
|
||||
if ((f = rom_fopen(s, L"rb")) != NULL) {
|
||||
if ((f = rom_fopen(s)) != NULL) {
|
||||
fseek(f, 0L, SEEK_END);
|
||||
temp = ftell(f);
|
||||
fclose(f);
|
||||
|
||||
138
src/pc.c
138
src/pc.c
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Main emulator module where most things are controlled.
|
||||
*
|
||||
* Version: @(#)pc.c 1.0.2 2018/02/24
|
||||
* Version: @(#)pc.c 1.0.3 2018/03/01
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -299,7 +299,7 @@ fatal(const char *fmt, ...)
|
||||
int
|
||||
pc_init(int argc, wchar_t *argv[])
|
||||
{
|
||||
wchar_t path[2048];
|
||||
wchar_t path[1024];
|
||||
wchar_t *cfg = NULL, *p;
|
||||
char temp[128];
|
||||
struct tm *info;
|
||||
@@ -587,7 +587,6 @@ pc_reload(wchar_t *fn)
|
||||
fdd_load(3, floppyfns[3]);
|
||||
|
||||
mem_resize();
|
||||
rom_load_bios(romset);
|
||||
network_init();
|
||||
|
||||
pc_reset_hard_init();
|
||||
@@ -598,67 +597,42 @@ pc_reload(wchar_t *fn)
|
||||
int
|
||||
pc_init_modules(void)
|
||||
{
|
||||
int c, i;
|
||||
|
||||
pclog("Scanning for ROM images:\n");
|
||||
for (c=0,i=0; i<ROM_MAX; i++) {
|
||||
romspresent[i] = rom_load_bios(i);
|
||||
c += romspresent[i];
|
||||
}
|
||||
if (c == 0) {
|
||||
/* No usable ROMs found, aborting. */
|
||||
return(0);
|
||||
}
|
||||
pclog("A total of %d ROM sets have been loaded.\n", c);
|
||||
wchar_t temp[1024];
|
||||
wchar_t name[128];
|
||||
wchar_t *str;
|
||||
|
||||
/* Load the ROMs for the selected machine. */
|
||||
again:
|
||||
if (! rom_load_bios(romset)) {
|
||||
/* Whoops, ROMs not found. */
|
||||
if (romset != -1)
|
||||
ui_msgbox(MBX_INFO, (wchar_t *)IDS_2063);
|
||||
if (! machine_available(machine)) {
|
||||
/* Whoops, selected machine not available. */
|
||||
str = plat_get_string(IDS_2063);
|
||||
mbstowcs(name, machine_getname(), sizeof_w(name));
|
||||
swprintf(temp, sizeof_w(temp), str, name);
|
||||
|
||||
/*
|
||||
* Select another machine to use.
|
||||
*
|
||||
* FIXME:
|
||||
* We should not do that here. If something turns out
|
||||
* to be wrong with the configuration (such as missing
|
||||
* ROM images, we should just display a fatal message
|
||||
* in the render window's center, let them click OK,
|
||||
* and then exit so they can remedy the situation.
|
||||
*/
|
||||
for (c=0; c<ROM_MAX; c++) {
|
||||
if (romspresent[c]) {
|
||||
romset = c;
|
||||
machine = machine_getmachine(romset);
|
||||
config_save();
|
||||
/* Show the messagebox, and abort if 'No' was selected. */
|
||||
if (ui_msgbox(MBX_CONFIG, temp) == 1) return(0);
|
||||
|
||||
/* This can loop if all ROMs are now bad.. */
|
||||
goto again;
|
||||
}
|
||||
}
|
||||
/* OK, user wants to (re-)configure.. */
|
||||
return(2);
|
||||
}
|
||||
|
||||
/* Make sure we have a usable video card. */
|
||||
for (c=0; c<GFX_MAX; c++)
|
||||
gfx_present[c] = video_card_available(video_old_to_new(c));
|
||||
again2:
|
||||
if (! video_card_available(video_old_to_new(gfxcard))) {
|
||||
if (romset != -1) {
|
||||
ui_msgbox(MBX_INFO, (wchar_t *)IDS_2064);
|
||||
}
|
||||
for (c=GFX_MAX-1; c>=0; c--) {
|
||||
if (gfx_present[c]) {
|
||||
gfxcard = c;
|
||||
config_save();
|
||||
/* Whoops, selected video not available. */
|
||||
str = plat_get_string(IDS_2064);
|
||||
mbstowcs(name, machine_getname(), sizeof_w(name));
|
||||
swprintf(temp, sizeof_w(temp), str, name);
|
||||
|
||||
/* This can loop if all cards now bad.. */
|
||||
goto again2;
|
||||
}
|
||||
}
|
||||
/* Show the messagebox, and abort if 'No' was selected. */
|
||||
if (ui_msgbox(MBX_CONFIG, temp) == 1) return(0);
|
||||
|
||||
/* OK, user wants to (re-)configure.. */
|
||||
return(2);
|
||||
}
|
||||
|
||||
/*
|
||||
* At this point, we know that the selected machine and
|
||||
* video card are available, so we can proceed with the
|
||||
* initialization of things.
|
||||
*/
|
||||
cpuspeed2 = (AT) ? 2 : 1;
|
||||
atfullspeed = 0;
|
||||
|
||||
@@ -708,60 +682,6 @@ again2:
|
||||
}
|
||||
|
||||
|
||||
/* Insert keystrokes into the machine's keyboard buffer. */
|
||||
// FIXME: move to keyboard.c */
|
||||
static void
|
||||
pc_keyboard_send(uint8_t val)
|
||||
{
|
||||
if (AT)
|
||||
keyboard_at_adddata_keyboard_raw(val);
|
||||
else
|
||||
keyboard_send(val);
|
||||
}
|
||||
|
||||
|
||||
/* Send the machine a Control-Alt-DEL sequence. */
|
||||
// FIXME: move to keyboard.c */
|
||||
void
|
||||
pc_send_cad(void)
|
||||
{
|
||||
pc_keyboard_send(29); /* Ctrl key pressed */
|
||||
pc_keyboard_send(56); /* Alt key pressed */
|
||||
pc_keyboard_send(83); /* Delete key pressed */
|
||||
pc_keyboard_send(157); /* Ctrl key released */
|
||||
pc_keyboard_send(184); /* Alt key released */
|
||||
pc_keyboard_send(211); /* Delete key released */
|
||||
}
|
||||
|
||||
|
||||
/* Send the machine a Control-Alt-ESC sequence. */
|
||||
// FIXME: move to keyboard.c */
|
||||
void
|
||||
pc_send_cae(void)
|
||||
{
|
||||
pc_keyboard_send(29); /* Ctrl key pressed */
|
||||
pc_keyboard_send(56); /* Alt key pressed */
|
||||
pc_keyboard_send(1); /* Esc key pressed */
|
||||
pc_keyboard_send(129); /* Esc key released */
|
||||
pc_keyboard_send(184); /* Alt key released */
|
||||
pc_keyboard_send(157); /* Ctrl key released */
|
||||
}
|
||||
|
||||
|
||||
/* Send the machine a Control-Alt-Break sequence. */
|
||||
// FIXME: move to keyboard.c */
|
||||
void
|
||||
pc_send_cab(void)
|
||||
{
|
||||
pc_keyboard_send(29); /* Ctrl key pressed */
|
||||
pc_keyboard_send(56); /* Alt key pressed */
|
||||
pc_keyboard_send(1); /* Esc key pressed */
|
||||
pc_keyboard_send(157); /* Ctrl key released */
|
||||
pc_keyboard_send(184); /* Alt key released */
|
||||
pc_keyboard_send(129); /* Esc key released */
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
pc_reset_hard_close(void)
|
||||
{
|
||||
@@ -936,7 +856,7 @@ pc_reset(int hard)
|
||||
if (hard)
|
||||
pc_reset_hard();
|
||||
else
|
||||
pc_send_cad();
|
||||
keyboard_send_cad();
|
||||
|
||||
plat_pause(0);
|
||||
}
|
||||
|
||||
611
src/rom.c
611
src/rom.c
@@ -13,7 +13,7 @@
|
||||
* - c386sx16 BIOS fails checksum
|
||||
* - the loadfont() calls should be done elsewhere
|
||||
*
|
||||
* Version: @(#)rom.c 1.0.3 2018/02/22
|
||||
* Version: @(#)rom.c 1.0.4 2018/02/26
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -59,7 +59,7 @@ int romspresent[ROM_MAX];
|
||||
|
||||
|
||||
FILE *
|
||||
rom_fopen(wchar_t *fn, wchar_t *mode)
|
||||
rom_fopen(wchar_t *fn)
|
||||
{
|
||||
wchar_t temp[1024];
|
||||
|
||||
@@ -67,7 +67,7 @@ rom_fopen(wchar_t *fn, wchar_t *mode)
|
||||
plat_put_backslash(temp);
|
||||
wcscat(temp, fn);
|
||||
|
||||
return(plat_fopen(temp, mode));
|
||||
return(plat_fopen(temp, L"rb"));
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ rom_present(wchar_t *fn)
|
||||
{
|
||||
FILE *f;
|
||||
|
||||
f = rom_fopen(fn, L"rb");
|
||||
f = rom_fopen(fn);
|
||||
if (f != NULL) {
|
||||
(void)fclose(f);
|
||||
return(1);
|
||||
@@ -105,6 +105,7 @@ rom_present(wchar_t *fn)
|
||||
}
|
||||
|
||||
|
||||
/* Read a byte from some area in ROM. */
|
||||
uint8_t
|
||||
rom_read(uint32_t addr, void *priv)
|
||||
{
|
||||
@@ -119,6 +120,7 @@ rom_read(uint32_t addr, void *priv)
|
||||
}
|
||||
|
||||
|
||||
/* Read a word from some area in ROM. */
|
||||
uint16_t
|
||||
rom_readw(uint32_t addr, void *priv)
|
||||
{
|
||||
@@ -133,6 +135,7 @@ rom_readw(uint32_t addr, void *priv)
|
||||
}
|
||||
|
||||
|
||||
/* Read a double-word from some area in ROM. */
|
||||
uint32_t
|
||||
rom_readl(uint32_t addr, void *priv)
|
||||
{
|
||||
@@ -151,7 +154,7 @@ rom_readl(uint32_t addr, void *priv)
|
||||
int
|
||||
rom_load_linear(wchar_t *fn, uint32_t addr, int sz, int off, uint8_t *ptr)
|
||||
{
|
||||
FILE *f = rom_fopen(fn, L"rb");
|
||||
FILE *f = rom_fopen(fn);
|
||||
|
||||
if (f == NULL) {
|
||||
pclog("ROM: image '%ls' not found\n", fn);
|
||||
@@ -160,13 +163,9 @@ rom_load_linear(wchar_t *fn, uint32_t addr, int sz, int off, uint8_t *ptr)
|
||||
|
||||
/* Make sure we only look at the base-256K offset. */
|
||||
if (addr >= 0x40000)
|
||||
{
|
||||
addr = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
else
|
||||
addr &= 0x03ffff;
|
||||
}
|
||||
|
||||
(void)fseek(f, off, SEEK_SET);
|
||||
(void)fread(ptr+addr, sz, 1, f);
|
||||
@@ -180,8 +179,8 @@ rom_load_linear(wchar_t *fn, uint32_t addr, int sz, int off, uint8_t *ptr)
|
||||
int
|
||||
rom_load_interleaved(wchar_t *fnl, wchar_t *fnh, uint32_t addr, int sz, int off, uint8_t *ptr)
|
||||
{
|
||||
FILE *fl = rom_fopen(fnl, L"rb");
|
||||
FILE *fh = rom_fopen(fnh, L"rb");
|
||||
FILE *fl = rom_fopen(fnl);
|
||||
FILE *fh = rom_fopen(fnh);
|
||||
int c;
|
||||
|
||||
if (fl == NULL || fh == NULL) {
|
||||
@@ -212,6 +211,7 @@ rom_load_interleaved(wchar_t *fnl, wchar_t *fnh, uint32_t addr, int sz, int off,
|
||||
}
|
||||
|
||||
|
||||
/* Read and initialize an option ROM. */
|
||||
int
|
||||
rom_init(rom_t *rom, wchar_t *fn, uint32_t addr, int sz, int mask, int off, uint32_t flags)
|
||||
{
|
||||
@@ -264,590 +264,3 @@ rom_init_interleaved(rom_t *rom, wchar_t *fnl, wchar_t *fnh, uint32_t addr, int
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
/* Load the ROM BIOS image(s) for the selected machine into memory. */
|
||||
int
|
||||
rom_load_bios(int rom_id)
|
||||
{
|
||||
FILE *f;
|
||||
|
||||
/* If not done yet, allocate a 128KB buffer for the BIOS ROM. */
|
||||
if (rom == NULL)
|
||||
rom = (uint8_t *)malloc(131072);
|
||||
memset(rom, 0xff, 131072);
|
||||
|
||||
/* Default to a 64K ROM BIOS image. */
|
||||
biosmask = 0xffff;
|
||||
|
||||
/* Zap the BIOS ROM EXTENSION area. */
|
||||
memset(romext, 0xff, 0x8000);
|
||||
mem_mapping_disable(&romext_mapping);
|
||||
|
||||
switch (rom_id) {
|
||||
case ROM_IBMPC: /* IBM PC */
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/ibm/ibmpc/pc102782.bin",
|
||||
0x00e000, 8192, 0, rom)) break;
|
||||
|
||||
/* Try to load the (full) BASIC ROM. */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/ibm/ibmpc/ibm-basic-1.10.rom",
|
||||
0x006000, 32768, 0, rom)) return(1);
|
||||
|
||||
/* Nope. Try to load the first BASIC ROM image. */
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/ibm/ibmpc/basicc11.f6",
|
||||
0x006000, 8192, 0, rom)) return(1); /* nope */
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/ibm/ibmpc/basicc11.f8",
|
||||
0x008000, 8192, 0, rom)) break; /* nope */
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/ibm/ibmpc/basicc11.fa",
|
||||
0x00a000, 8192, 0, rom)) break; /* nope */
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/ibm/ibmpc/basicc11.fc",
|
||||
0x00c000, 8192, 0, rom)) break; /* nope */
|
||||
return(1);
|
||||
|
||||
case ROM_IBMXT: /* IBM PX-XT */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/ibm/ibmxt/xt.rom",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/ibm/ibmxt/5000027.u19",
|
||||
0x000000, 32768, 0, rom)) break;
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/ibm/ibmxt/1501512.u18",
|
||||
0x008000, 32768, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_IBMXT286: /* IBM PX-XT 286 */
|
||||
if (rom_load_interleaved(
|
||||
L"roms/machines/ibm/ibmxt286/bios_5162_21apr86_u34_78x7460_27256.bin",
|
||||
L"roms/machines/ibm/ibmxt286/bios_5162_21apr86_u35_78x7461_27256.bin",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_IBMPCJR: /* IBM PCjr */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/ibm/ibmpcjr/bios.rom",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_IBMAT: /* IBM PC-AT */
|
||||
if (rom_load_interleaved(
|
||||
L"roms/machines/ibm/ibmat/62x0820.u27",
|
||||
L"roms/machines/ibm/ibmat/62x0821.u47",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
#ifdef WALTJE
|
||||
case ROM_OPENAT: /* PC/AT clone with OpenBIOS */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/open_at/bios.bin",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case ROM_GENXT: /* Generic PC-XT clone */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/genxt/pcxt.rom",
|
||||
0x00e000, 8192, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_PC1512: /* Amstrad PC-1512 */
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/amstrad/pc1512/40044v2.ic132",
|
||||
L"roms/machines/amstrad/pc1512/40043v2.ic129",
|
||||
0x00c000, 16384, 0, rom)) break;
|
||||
f = rom_fopen(L"roms/machines/amstrad/pc1512/40078.ic127", L"rb");
|
||||
if (f == NULL) break;
|
||||
(void)fclose(f);
|
||||
return(1);
|
||||
|
||||
case ROM_PC1640: /* Amstrad PC-1640 */
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/amstrad/pc1640/40044.v3",
|
||||
L"roms/machines/amstrad/pc1640/40043.v3",
|
||||
0x00c000, 16384, 0, rom)) break;
|
||||
f = rom_fopen(L"roms/machines/amstrad/pc1640/40100", L"rb");
|
||||
if (f == NULL) break;
|
||||
(void)fclose(f);
|
||||
return(1);
|
||||
|
||||
case ROM_PC200:
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/amstrad/pc200/pc20v2.1",
|
||||
L"roms/machines/amstrad/pc200/pc20v2.0",
|
||||
0x00c000, 16384, 0, rom)) break;
|
||||
f = rom_fopen(L"roms/machines/amstrad/pc200/40109", L"rb");
|
||||
if (f == NULL) break;
|
||||
(void)fclose(f);
|
||||
return(1);
|
||||
|
||||
case ROM_TANDY:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/tandy/tandy/tandy1t1.020",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_TANDY1000HX:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/tandy/tandy1000hx/v020000.u12",
|
||||
0x000000, 0x20000, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_TANDY1000SL2:
|
||||
if (rom_load_interleaved(
|
||||
L"roms/machines/tandy/tandy1000sl2/8079047.hu1",
|
||||
L"roms/machines/tandy/tandy1000sl2/8079048.hu2",
|
||||
0x000000, 65536, 0x30000/2, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_PORTABLE:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/compaq/portable/compaq portable plus 100666-001 rev c u47.bin",
|
||||
0x00e000, 8192, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_PORTABLEII:
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/compaq/portableii/109740-001.rom",
|
||||
L"roms/machines/compaq/portableii/109739-001.rom",
|
||||
0x008000, 32768, 0, rom)) break;
|
||||
biosmask = 0x7fff;
|
||||
return(1);
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_PORTABLE3)
|
||||
case ROM_PORTABLEIII:
|
||||
case ROM_PORTABLEIII386:
|
||||
if (rom_load_interleaved(
|
||||
L"roms/machines/compaq/portableiii/109738-002.bin",
|
||||
L"roms/machines/compaq/portableiii/109737-002.bin",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case ROM_DTKXT:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/dtk/dtk/dtk_erso_2.42_2764.bin",
|
||||
0x00e000, 8192, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_OLIM24:
|
||||
if (rom_load_interleaved(
|
||||
L"roms/machines/olivetti/olivetti_m24/olivetti_m24_version_1.43_low.bin",
|
||||
L"roms/machines/olivetti/olivetti_m24/olivetti_m24_version_1.43_high.bin",
|
||||
0x00c000, 16384, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_PC2086:
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/amstrad/pc2086/40179.ic129",
|
||||
L"roms/machines/amstrad/pc2086/40180.ic132",
|
||||
0x000000, 16384, 0, rom)) break;
|
||||
f = rom_fopen(L"roms/machines/amstrad/pc2086/40186.ic171", L"rb");
|
||||
if (f == NULL) break;
|
||||
(void)fclose(f);
|
||||
biosmask = 0x3fff;
|
||||
return(1);
|
||||
|
||||
case ROM_PC3086:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/amstrad/pc3086/fc00.bin",
|
||||
0x000000, 16384, 0, rom)) break;
|
||||
f = rom_fopen(L"roms/machines/amstrad/pc3086/c000.bin", L"rb");
|
||||
if (f == NULL) break;
|
||||
(void)fclose(f);
|
||||
biosmask = 0x3fff;
|
||||
return(1);
|
||||
|
||||
case ROM_CMDPC30:
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/commodore/cmdpc30/commodore pc 30 iii even.bin",
|
||||
L"roms/machines/commodore/cmdpc30/commodore pc 30 iii odd.bin",
|
||||
0x000000, 32768, 0, rom)) break;
|
||||
biosmask = 0x7fff;
|
||||
return(1);
|
||||
|
||||
case ROM_AMI386SX:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/ami/ami386/ami386.bin",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_AMI386DX_OPTI495: /* uses the OPTi 82C495 chipset */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/ami/ami386dx/opt495sx.ami",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_MR386DX_OPTI495: /* uses the OPTi 82C495 chipset */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/microid/mr386dx/opt495sx.mr",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_AWARD386SX_OPTI495: /* uses the OPTi 82C495 chipset */
|
||||
case ROM_AWARD386DX_OPTI495: /* uses the OPTi 82C495 chipset */
|
||||
case ROM_AWARD486_OPTI495: /* uses the OPTi 82C495 chipset */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/award/award495/opt495s.awa",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_AMI286:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/ami/ami286/amic206.bin",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_AWARD286:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/award/award286/award.bin",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_EUROPC:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/schneider/europc/50145",
|
||||
0x008000, 32768, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_MEGAPC:
|
||||
case ROM_MEGAPCDX:
|
||||
if (rom_load_interleaved(
|
||||
L"roms/machines/amstrad/megapc/41651-bios lo.u18",
|
||||
L"roms/machines/amstrad/megapc/211253-bios hi.u19",
|
||||
0x000000, 65536, 0x08000, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_AMI486:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/ami/ami486/ami486.bin",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_WIN486:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/ami/win486/ali1429g.amw",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_430VX:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/generic/award/430vx/55xwuq0e.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_REVENGE:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/revenge/1009af2_.bio",
|
||||
0x010000, 65536, 128, rom)) break;
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/revenge/1009af2_.bi1",
|
||||
0x000000, 0x00c000, 128, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_ENDEAVOR:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/endeavor/1006cb0_.bio",
|
||||
0x010000, 65536, 128, rom)) break;
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/endeavor/1006cb0_.bi1",
|
||||
0x000000, 0x00d000, 128, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_IBMPS1_2011:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/ibm/ibmps1es/f80000.bin",
|
||||
0x000000, 131072, 0x60000, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_IBMPS1_2121:
|
||||
case ROM_IBMPS1_2121_ISA:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/ibm/ibmps1_2121/fc0000.bin",
|
||||
0x000000, 131072, 0x20000, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_IBMPS1_2133:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/ibm/ibmps1_2133/ps1_2133_52g2974_rom.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_PORTABLE3)
|
||||
case ROM_DESKPRO_386:
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/compaq/deskpro386/109592-005.u11.bin",
|
||||
L"roms/machines/compaq/deskpro386/109591-005.u13.bin",
|
||||
0x000000, 32768, 0, rom)) break;
|
||||
biosmask = 0x7fff;
|
||||
return(1);
|
||||
#endif
|
||||
|
||||
case ROM_AMIXT:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/ami/amixt/ami_8088_bios_31jan89.bin",
|
||||
0x00e000, 8192, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_LASERXT)
|
||||
case ROM_LTXT:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/vtech/ltxt/27c64.bin",
|
||||
0x00e000, 8192, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_LXT3:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/vtech/lxt3/27c64d.bin",
|
||||
0x00e000, 8192, 0, rom)) return(1);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case ROM_SPC4200P: /* Samsung SPC-4200P */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/samsung/spc4200p/u8.01",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_SUPER286TR: /* Hyundai Super-286TR */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/hyundai/super286tr/hyundai_award286.bin",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_DTK386: /* uses NEAT chipset */
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/dtk/dtk386/3cto001.bin",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_PXXT:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/generic/phoenix/pxxt/000p001.bin",
|
||||
0x00e000, 8192, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_JUKOPC:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/juko/jukopc/000o001.bin",
|
||||
0x00e000, 8192, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_IBMPS2_M30_286:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/ibm/ibmps2_m30_286/33f5381a.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_DTK486:
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/dtk/dtk486/4siw005.bin",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
case ROM_R418:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/rise/r418/r418i.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
#if 0
|
||||
case ROM_586MC1:
|
||||
/* FIXME: no ROM? --FvK */
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/586mc1/is.34",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
#endif
|
||||
|
||||
case ROM_PLATO:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/plato/1016ax1_.bio",
|
||||
0x010000, 65536, 128, rom)) break;
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/plato/1016ax1_.bi1",
|
||||
0x000000, 0x00d000, 128, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_MB500N:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/pcpartner/mb500n/031396s.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_AP53:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/aopen/ap53/ap53r2c0.rom",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_P55T2S:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/supermicro/p55t2s/s6y08t.rom",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_PRESIDENT:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/president/president/bios.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_P54TP4XE:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/asus/p54tp4xe/t15i0302.awd",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_ACERM3A:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/acer/acerm3a/r01-b3.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_ACERV35N:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/acer/acerv35n/v35nd1s1.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_P55VA:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/epox/p55va/va021297.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_P55T2P4:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/asus/p55t2p4/0207_j2.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_P55TVP4:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/asus/p55tvp4/tv5i0204.awd",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_I686)
|
||||
case ROM_440FX: /* working Tyan BIOS */
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/tyan/440fx/ntmaw501.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_S1668: /* working Tyan BIOS */
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/tyan/tpatx/s1668p.rom",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
#endif
|
||||
|
||||
case ROM_THOR:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/thor/1006cn0_.bio",
|
||||
0x010000, 65536, 128, rom)) break;
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/thor/1006cn0_.bi1",
|
||||
0x000000, 65536, 128, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_MRTHOR:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/mrthor/mr_atx.bio",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_ZAPPA:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/zappa/1006bs0_.bio",
|
||||
0x010000, 65536, 128, rom)) break;
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/intel/zappa/1006bs0_.bi1",
|
||||
0x000000, 65536, 128, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_IBMPS2_M50:
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/ibm/ibmps2_m50/90x7423.zm14",
|
||||
L"roms/machines/ibm/ibmps2_m50/90x7426.zm16",
|
||||
0x000000, 65536, 0, rom)) break;
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/ibm/ibmps2_m50/90x7420.zm13",
|
||||
L"roms/machines/ibm/ibmps2_m50/90x7429.zm18",
|
||||
0x010000, 65536, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_IBMPS2_M55SX:
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/ibm/ibmps2_m55sx/33f8146.zm41",
|
||||
L"roms/machines/ibm/ibmps2_m55sx/33f8145.zm40",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
case ROM_IBMPS2_M80:
|
||||
#ifdef WALTJE
|
||||
case ROM_IBMPS2_M80_486:
|
||||
#endif
|
||||
if (! rom_load_interleaved(
|
||||
L"roms/machines/ibm/ibmps2_m80/15f6637.bin",
|
||||
L"roms/machines/ibm/ibmps2_m80/15f6639.bin",
|
||||
0x000000, 131072, 0, rom)) break;
|
||||
biosmask = 0x1ffff;
|
||||
return(1);
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_GREENB)
|
||||
case ROM_4GPV31:
|
||||
if (! rom_load_linear(
|
||||
L"roms/machines/addtech/green-b/4gpv31-ami-1993-8273517.bin",
|
||||
0x000000, 65536, 0, rom)) break;
|
||||
return(1);
|
||||
#endif
|
||||
|
||||
case ROM_T3100E:
|
||||
loadfont(L"roms/machines/toshiba/t3100e/t3100e_font.bin", 5);
|
||||
if (rom_load_linear(
|
||||
L"roms/machines/toshiba/t3100e/t3100e.rom",
|
||||
0x000000, 65536, 0, rom)) return(1);
|
||||
break;
|
||||
|
||||
default:
|
||||
pclog("ROM: don't know how to handle ROM set %d !\n", rom_id);
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Definitions for the ROM image handler.
|
||||
*
|
||||
* Version: @(#)rom.h 1.0.2 2018/02/23
|
||||
* Version: @(#)rom.h 1.0.3 2018/02/28
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
*
|
||||
@@ -75,7 +75,7 @@ typedef struct {
|
||||
uint32_t offset;
|
||||
uint32_t total;
|
||||
struct romfile {
|
||||
char path[1024];
|
||||
wchar_t path[1024];
|
||||
int mode;
|
||||
uint32_t offset;
|
||||
uint32_t skip;
|
||||
@@ -211,7 +211,7 @@ 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 FILE *rom_fopen(wchar_t *fn);
|
||||
extern int rom_getfile(wchar_t *fn, wchar_t *s, int size);
|
||||
extern int rom_present(wchar_t *fn);
|
||||
|
||||
@@ -227,7 +227,7 @@ extern int rom_init_interleaved(rom_t *rom, wchar_t *fn_low,
|
||||
int size, int mask, int file_offset,
|
||||
uint32_t flags);
|
||||
|
||||
extern int rom_load_bios(int romset);
|
||||
extern int rom_load_bios(wchar_t *fn, int test_only);
|
||||
|
||||
|
||||
#endif /*EMU_ROM_H*/
|
||||
|
||||
402
src/rom_load.c
Normal file
402
src/rom_load.c
Normal file
@@ -0,0 +1,402 @@
|
||||
/*
|
||||
* VARCem Virtual Archaelogical Computer EMulator.
|
||||
* An emulator of (mostly) x86-based PC systems and devices,
|
||||
* using the ISA,EISA,VLB,MCA and PCI system buses, roughly
|
||||
* spanning the era between 1981 and 1995.
|
||||
*
|
||||
* This file is part of the VARCem Project.
|
||||
*
|
||||
* Implement the external ROM loader.
|
||||
* This loader defines a 'ROM set' to be one or more images
|
||||
* of ROM chip(s), where all properties of these defined in
|
||||
* a single 'ROM definition' (text) file.
|
||||
*
|
||||
* NOTE: This file uses a fairly generic script parser, which can
|
||||
* be re-used for others parts. This would mean passing the
|
||||
* 'parser' function a pointer to either a command handler,
|
||||
* or to use a generic handler, and then pass it a pointer
|
||||
* to a command table. For now, we don't.
|
||||
*
|
||||
* Version: @(#)rom_load.c 1.0.2 2018/03/01
|
||||
*
|
||||
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
*
|
||||
* Copyright 2018 Fred N. van Kempen.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with
|
||||
* or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the entire
|
||||
* above notice, this list of conditions and the following
|
||||
* disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the
|
||||
* following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of the copyright holder nor the names
|
||||
* of its contributors may be used to endorse or promote
|
||||
* products derived from this software without specific
|
||||
* prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <wchar.h>
|
||||
#include <ctype.h>
|
||||
#include "emu.h"
|
||||
#include "mem.h"
|
||||
#include "rom.h"
|
||||
#include "plat.h"
|
||||
|
||||
|
||||
#define PATH_BIOS "bios.txt" /* name of the script we run */
|
||||
#define MAX_ARGS 16 /* max number of arguments */
|
||||
|
||||
|
||||
/* Process a single (logical) command line. */
|
||||
static int
|
||||
process(int ln, int argc, char **argv, romdef_t *r)
|
||||
{
|
||||
if (! strcmp(argv[0], "size")) {
|
||||
sscanf(argv[1], "%i", &r->total);
|
||||
} else if (! strcmp(argv[0], "offset")) {
|
||||
if (sscanf(argv[1], "0x%lx", (long unsigned int *)&r->offset) == 0)
|
||||
sscanf(argv[1], "%i", &r->offset);
|
||||
} else if (! strcmp(argv[0], "mode")) {
|
||||
if (! strcmp(argv[1], "linear"))
|
||||
r->mode = 0;
|
||||
else if (! strcmp(argv[1], "interleaved"))
|
||||
r->mode = 1;
|
||||
else {
|
||||
pclog("ROM: invalid mode '%s' on line %d.\n", argv[1], ln);
|
||||
return(0);
|
||||
}
|
||||
} else if (! strcmp(argv[0], "file")) {
|
||||
mbstowcs(r->files[r->nfiles].path, argv[1],
|
||||
sizeof_w(r->files[r->nfiles].path));
|
||||
if (argc >= 3)
|
||||
sscanf(argv[2], "%i", &r->files[r->nfiles].skip);
|
||||
else
|
||||
r->files[r->nfiles].skip = 0;
|
||||
if (argc == 4) {
|
||||
if (sscanf(argv[3], "0x%lx", (long unsigned int *)&r->files[r->nfiles].offset) == 0)
|
||||
sscanf(argv[3], "%i", &r->files[r->nfiles].offset);
|
||||
} else
|
||||
r->files[r->nfiles].offset = r->offset;
|
||||
r->nfiles++;
|
||||
} else {
|
||||
pclog("ROM: invalid command '%s' on line %d.\n", argv[0], ln);
|
||||
return(0);
|
||||
}
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* Parse a script file, and call the command handler for each command. */
|
||||
static int
|
||||
parser(FILE *fp, romdef_t *r)
|
||||
{
|
||||
char line[1024];
|
||||
char *args[MAX_ARGS];
|
||||
int doskip, doquot;
|
||||
int skipnl, dolit;
|
||||
int a, c, l;
|
||||
char *sp;
|
||||
|
||||
/* Initialize the parser and run. */
|
||||
l = 0;
|
||||
for (;;) {
|
||||
/* Clear the per-line stuff. */
|
||||
skipnl = dolit = doquot = 0;
|
||||
doskip = 1;
|
||||
for (a=0; a<MAX_ARGS; a++)
|
||||
args[a] = NULL;
|
||||
a = 0;
|
||||
sp = line;
|
||||
|
||||
/* Catch the first argument. */
|
||||
args[a] = sp;
|
||||
|
||||
/*
|
||||
* Get the next logical line from the configuration file.
|
||||
* This is not trivial, since we allow for a fairly standard
|
||||
* Unix-style ASCII-based text file, including the usual line
|
||||
* extenders and character escapes.
|
||||
*/
|
||||
while ((c = fgetc(fp)) != EOF) {
|
||||
/* Literals come first... */
|
||||
if (dolit) {
|
||||
switch(c) {
|
||||
case '\r': /* raw CR, ignore it */
|
||||
continue;
|
||||
|
||||
case '\n': /* line continuation! */
|
||||
l++;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
*sp++ = '\n';
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
*sp++ = '\r';
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
*sp++ = '\b';
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
*sp++ = 27;
|
||||
break;
|
||||
|
||||
case '"':
|
||||
*sp++ = '"';
|
||||
break;
|
||||
|
||||
case '#':
|
||||
*sp++ = '#';
|
||||
break;
|
||||
|
||||
case '!':
|
||||
*sp++ = '!';
|
||||
break;
|
||||
|
||||
case '\\':
|
||||
*sp++ = '\\';
|
||||
break;
|
||||
|
||||
default:
|
||||
pclog("ROM: syntax error: escape '\\%c'", c);
|
||||
*sp++ = '\\';
|
||||
*sp++ = (char)c;
|
||||
}
|
||||
dolit = 0;
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
/* Are we in a comment? */
|
||||
if (skipnl) {
|
||||
if (c == '}')
|
||||
skipnl--; /* nested comment closed */
|
||||
|
||||
if (c == '\n')
|
||||
skipnl = 0; /* end of line! */
|
||||
|
||||
if (skipnl == 0)
|
||||
break;
|
||||
|
||||
continue; /* skip more... */
|
||||
}
|
||||
|
||||
/* Are we starting a comment? */
|
||||
if ((c == '{') || (c == ';') || (c == '#')) {
|
||||
skipnl++;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Are we starting a literal character? */
|
||||
if (c == '\\') {
|
||||
dolit = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Are we starting a quote? */
|
||||
if (c == '"') {
|
||||
doquot = (1 - doquot);
|
||||
if (doskip) {
|
||||
args[a++] = sp;
|
||||
doskip = 0;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Quoting means raw insertion. */
|
||||
if (doquot) {
|
||||
/* We are quoting, so insert as is. */
|
||||
if (c == '\n') pclog("ROM: syntax error: unexpected newline, expected (\")\n");
|
||||
*sp++ = (char)c;
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Everything else, normal character insertion.
|
||||
* This means, we process each character as if it
|
||||
* was typed in. We assume the usual rules for
|
||||
* skipping whitespace, blank lines and so forth.
|
||||
*/
|
||||
/* Ignore raw CRs, they are common in DOS-originated files. */
|
||||
if (c == '\r')
|
||||
continue;
|
||||
|
||||
/* A raw newline terminates the logical line. */
|
||||
if (c == '\n') break;
|
||||
|
||||
/* See if this is some word breaker. */
|
||||
if (c == ',') {
|
||||
/* Terminate current word. */
|
||||
*sp++ = '\0';
|
||||
|
||||
/* ... and start new word. */
|
||||
args[a] = sp;
|
||||
doskip = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Is it regular whitespace? */
|
||||
if ((c == ' ') || (c == '\t')) {
|
||||
/* Are we skipping whitespace? */
|
||||
if (! doskip) {
|
||||
/* Nope, Start a new argument. */
|
||||
*sp++ = '\0';
|
||||
doskip = 1;
|
||||
}
|
||||
|
||||
/* Yes, skip it. */
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Just a regular thingie. Store it. */
|
||||
if (isupper(c))
|
||||
c = tolower(c);
|
||||
|
||||
/* If we are skipping space, we now hit the end of that. */
|
||||
if (doskip)
|
||||
args[a++] = sp;
|
||||
*sp++ = (char)c;
|
||||
doskip = 0;
|
||||
}
|
||||
*sp = '\0';
|
||||
if (feof(fp)) break;
|
||||
if (ferror(fp)) {
|
||||
pclog("ROM: Read Error on line '%s'\n", l);
|
||||
return(0);
|
||||
}
|
||||
l++;
|
||||
|
||||
/* Ignore comment lines and empty lines. */
|
||||
if (*args[0] == '\0') continue;
|
||||
|
||||
/* Process this line. */
|
||||
if (! process(l, a, args, r)) return(0);
|
||||
}
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* Load a BIOS ROM image into memory. */
|
||||
int
|
||||
rom_load_bios(wchar_t *fn, int test_only)
|
||||
{
|
||||
wchar_t path[1024], script[1024];
|
||||
wchar_t temp[1024];
|
||||
romdef_t r;
|
||||
FILE *fp;
|
||||
int c, i;
|
||||
|
||||
/* Generate the full script pathname. */
|
||||
wcscpy(script, ROMS_PATH); plat_path_slash(script);
|
||||
wcscat(script, fn); plat_path_slash(script);
|
||||
wcscpy(path, script);
|
||||
wcscat(script, BIOS_FILE);
|
||||
|
||||
if (! test_only) {
|
||||
pclog("ROM: loading script '%ls'\n", fn);
|
||||
|
||||
/* If not done yet, allocate a 128KB buffer for the BIOS ROM. */
|
||||
if (rom == NULL)
|
||||
rom = (uint8_t *)malloc(131072);
|
||||
memset(rom, 0xff, 131072);
|
||||
|
||||
/* Default to a 64K ROM BIOS image. */
|
||||
biosmask = 0xffff;
|
||||
|
||||
/* Zap the BIOS ROM EXTENSION area. */
|
||||
memset(romext, 0xff, 0x8000);
|
||||
mem_mapping_disable(&romext_mapping);
|
||||
}
|
||||
|
||||
/* Open the script file. */
|
||||
if ((fp = rom_fopen(script)) == NULL) {
|
||||
pclog("ROM: unable to open '%ls'\n", script);
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* Clear ROM definition. */
|
||||
memset(&r, 0x00, sizeof(r));
|
||||
|
||||
/* Parse and process the file. */
|
||||
i = parser(fp, &r);
|
||||
|
||||
(void)fclose(fp);
|
||||
|
||||
/* Show the resulting data. */
|
||||
if (! test_only) {
|
||||
pclog("Size : %lu\n", r.total);
|
||||
pclog("Offset : 0x%06lx (%lu)\n", r.offset, r.offset);
|
||||
pclog("Mode : %s\n", (r.mode == 1)?"interleaved":"linear");
|
||||
pclog("Files : %d\n", r.nfiles);
|
||||
for (c=0; c<r.nfiles; c++) {
|
||||
pclog(" [%d] : '%ls', %d, 0x%06lx\n", c+1,
|
||||
r.files[c].path, r.files[c].skip, r.files[c].offset);
|
||||
}
|
||||
|
||||
/* Actually perform the work. */
|
||||
switch(r.mode) {
|
||||
case 0: /* linear file(s) */
|
||||
/* We loop on all files. */
|
||||
for (c=0; c<r.nfiles; c++) {
|
||||
wcscpy(script, path);
|
||||
wcscat(script, r.files[c].path);
|
||||
i = rom_load_linear(script,
|
||||
r.files[c].offset,
|
||||
r.total,
|
||||
r.files[c].skip, rom);
|
||||
if (i != 0) break;
|
||||
}
|
||||
if (r.total >= 0x010000)
|
||||
biosmask = (r.total - 1);
|
||||
break;
|
||||
|
||||
case 1: /* interleaved file(s) */
|
||||
/* We loop on all files. */
|
||||
for (c=0; c<r.nfiles/2; c+=2) {
|
||||
wcscpy(script, path);
|
||||
wcscat(script, r.files[c].path);
|
||||
wcscpy(temp, path);
|
||||
wcscat(temp, r.files[c+1].path);
|
||||
i = rom_load_interleaved(script, temp,
|
||||
r.files[c].offset,
|
||||
r.total,
|
||||
r.files[c].skip, rom);
|
||||
if (i != 0) break;
|
||||
}
|
||||
if (r.total >= 0x010000)
|
||||
biosmask = (r.total - 1);
|
||||
break;
|
||||
}
|
||||
|
||||
pclog("ROM: status %d, tot %u, mask 0x%06lx\n", i, r.total, biosmask);
|
||||
}
|
||||
|
||||
return(i);
|
||||
}
|
||||
@@ -10,7 +10,7 @@
|
||||
* made by Adaptec, Inc. These controllers were designed for
|
||||
* the ISA bus.
|
||||
*
|
||||
* Version: @(#)scsi_aha154x.c 1.0.1 2018/02/14
|
||||
* Version: @(#)scsi_aha154x.c 1.0.2 2018/02/26
|
||||
*
|
||||
* Based on original code from TheCollector1995 and Miran Grca.
|
||||
*
|
||||
@@ -626,7 +626,7 @@ aha_setbios(x54x_t *dev)
|
||||
|
||||
/* Open the BIOS image file and make sure it exists. */
|
||||
aha_log("%s: loading BIOS from '%ls'\n", dev->name, dev->bios_path);
|
||||
if ((f = rom_fopen(dev->bios_path, L"rb")) == NULL) {
|
||||
if ((f = rom_fopen(dev->bios_path)) == NULL) {
|
||||
aha_log("%s: BIOS ROM not found!\n", dev->name);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* 1 - BT-545S ISA;
|
||||
* 2 - BT-958D PCI
|
||||
*
|
||||
* Version: @(#)scsi_buslogic.c 1.0.3 2018/02/22
|
||||
* Version: @(#)scsi_buslogic.c 1.0.4 2018/02/26
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -1620,7 +1620,7 @@ buslogic_init(device_t *info)
|
||||
rom_init(&bl->bios, bios_rom_name, bios_rom_addr, bios_rom_size, bios_rom_mask, 0, MEM_MAPPING_EXTERNAL);
|
||||
|
||||
if (has_autoscsi_rom) {
|
||||
f = rom_fopen(autoscsi_rom_name, L"rb");
|
||||
f = rom_fopen(autoscsi_rom_name);
|
||||
if (f) {
|
||||
fread(bl->AutoSCSIROM, 1, autoscsi_rom_size, f);
|
||||
fclose(f);
|
||||
@@ -1629,7 +1629,7 @@ buslogic_init(device_t *info)
|
||||
}
|
||||
|
||||
if (has_scam_rom) {
|
||||
f = rom_fopen(scam_rom_name, L"rb");
|
||||
f = rom_fopen(scam_rom_name);
|
||||
if (f) {
|
||||
fread(bl->SCAMData, 1, scam_rom_size, f);
|
||||
fclose(f);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Implementation of Emu8000 emulator.
|
||||
*
|
||||
* Version: @(#)snd_emu8k.c 1.0.1 2018/02/14
|
||||
* Version: @(#)snd_emu8k.c 1.0.2 2018/02/26
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -2176,7 +2176,7 @@ void emu8k_init(emu8k_t *emu8k, uint16_t emu_addr, int onboard_ram)
|
||||
int c;
|
||||
double out;
|
||||
|
||||
f = rom_fopen(L"roms/sound/awe32.raw", L"rb");
|
||||
f = rom_fopen(L"roms/sound/awe32.raw");
|
||||
if (!f)
|
||||
fatal("AWE32.RAW not found\n");
|
||||
|
||||
|
||||
3
src/ui.h
3
src/ui.h
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Define the various UI functions.
|
||||
*
|
||||
* Version: @(#)ui.h 1.0.1 2018/02/14
|
||||
* Version: @(#)ui.h 1.0.2 2018/03/01
|
||||
*
|
||||
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
*
|
||||
@@ -61,6 +61,7 @@ extern "C" {
|
||||
#define MBX_INFO 1
|
||||
#define MBX_ERROR 2
|
||||
#define MBX_QUESTION 3
|
||||
#define MBX_CONFIG 4
|
||||
#define MBX_FATAL 0x20
|
||||
#define MBX_ANSI 0x80
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Define all known video cards.
|
||||
*
|
||||
* Version: @(#)vid_table.c 1.0.3 2018/02/22
|
||||
* Version: @(#)vid_table.c 1.0.4 2018/03/01
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -167,6 +167,22 @@ video_cards[] = {
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
video_detect(void)
|
||||
{
|
||||
int c, i;
|
||||
|
||||
/* Make sure we have a usable video card. */
|
||||
c = 0;
|
||||
for (i=0; i<GFX_MAX; i++) {
|
||||
gfx_present[i] = video_card_available(video_old_to_new(i));
|
||||
c += gfx_present[i];
|
||||
}
|
||||
|
||||
return(c);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
video_reset(int card)
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Emulation of the 3DFX Voodoo Graphics controller.
|
||||
*
|
||||
* Version: @(#)vid_voodoo.c 1.0.2 2018/02/21
|
||||
* Version: @(#)vid_voodoo.c 1.0.3 2018/02/26
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -54,7 +54,7 @@
|
||||
#include "../device.h"
|
||||
#include "../mem.h"
|
||||
#include "../pci.h"
|
||||
#include "../rom.h"
|
||||
#include "../nvr.h"
|
||||
#include "../timer.h"
|
||||
#include "../device.h"
|
||||
#include "../plat.h"
|
||||
@@ -7844,12 +7844,12 @@ void voodoo_card_close(voodoo_t *voodoo)
|
||||
int c;
|
||||
|
||||
#ifndef RELEASE_BUILD
|
||||
f = rom_fopen(L"texram.dmp", L"wb");
|
||||
f = nvr_fopen(L"texram.dmp", L"wb");
|
||||
fwrite(voodoo->tex_mem[0], voodoo->texture_size*1024*1024, 1, f);
|
||||
fclose(f);
|
||||
if (voodoo->dual_tmus)
|
||||
{
|
||||
f = rom_fopen(L"texram2.dmp", L"wb");
|
||||
f = nvr_fopen(L"texram2.dmp", L"wb");
|
||||
fwrite(voodoo->tex_mem[1], voodoo->texture_size*1024*1024, 1, f);
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
* W = 3 bus clocks
|
||||
* L = 4 bus clocks
|
||||
*
|
||||
* Version: @(#)video.c 1.0.1 2018/02/14
|
||||
* Version: @(#)video.c 1.0.2 2018/02/26
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -690,7 +690,7 @@ loadfont(wchar_t *s, int format)
|
||||
FILE *f;
|
||||
int c,d;
|
||||
|
||||
f = rom_fopen(s, L"rb");
|
||||
f = rom_fopen(s);
|
||||
if (f == NULL) {
|
||||
pclog("VIDEO: cannot load font '%ls', fmt=%d\n", s, format);
|
||||
return;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Definitions for the video controller module.
|
||||
*
|
||||
* Version: @(#)video.h 1.0.2 2018/02/22
|
||||
* Version: @(#)video.h 1.0.3 2018/03/01
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -218,6 +218,7 @@ extern void (*video_recalctimings)(void);
|
||||
|
||||
/* Table functions. */
|
||||
extern int video_card_available(int card);
|
||||
extern int video_detect(void);
|
||||
extern char *video_card_getname(int card);
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern device_t *video_card_getdevice(int card);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#
|
||||
# Makefile for Windows systems using the MinGW32 environment.
|
||||
#
|
||||
# Version: @(#)Makefile.mingw 1.0.5 2018/02/25
|
||||
# Version: @(#)Makefile.mingw 1.0.6 2018/03/02
|
||||
#
|
||||
# Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
#
|
||||
@@ -234,7 +234,7 @@ else
|
||||
endif
|
||||
WINDRES := windres
|
||||
|
||||
SYSINC :=
|
||||
SYSINC := -Iwin/mingw/include
|
||||
SYSLIB :=
|
||||
endif
|
||||
|
||||
@@ -437,7 +437,8 @@ CXXFLAGS := $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
|
||||
#########################################################################
|
||||
MAINOBJ := pc.o config.o random.o timer.o io.o dma.o nmi.o pic.o \
|
||||
pit.o ppi.o pci.o mca.o mcr.o mem.o memregs.o rom.o \
|
||||
device.o nvr.o nvr_at.o nvr_ps2.o $(VNCOBJ) $(RDPOBJ)
|
||||
rom_load.o device.o nvr.o nvr_at.o nvr_ps2.o \
|
||||
$(VNCOBJ) $(RDPOBJ)
|
||||
|
||||
INTELOBJ := intel.o \
|
||||
intel_flash.o \
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Application resource script for Windows.
|
||||
*
|
||||
* Version: @(#)VARCem.rc 1.0.3 2018/02/24
|
||||
* Version: @(#)VARCem.rc 1.0.4 2018/03/01
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -820,10 +820,10 @@ END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
2048 "VARCem"
|
||||
IDS_2049 "Error"
|
||||
IDS_2050 "Fatal Error"
|
||||
IDS_2051 "This will reset the emulator.\nAre you sure you want to save the settings?"
|
||||
IDS_2048 "Error"
|
||||
IDS_2049 "Fatal Error"
|
||||
IDS_2050 "Configuration Error"
|
||||
IDS_2051 "Are you sure you want to save these settings?\n\n(A restart may be needed...)"
|
||||
IDS_2052 "DirectDraw Screenshot Error"
|
||||
IDS_2053 "Invalid number of sectors (valid values are between 1 and 63)"
|
||||
IDS_2054 "Invalid number of heads (valid values are between 1 and 16)"
|
||||
@@ -834,13 +834,13 @@ BEGIN
|
||||
IDS_2059 "Turbo"
|
||||
IDS_2060 "On"
|
||||
IDS_2061 "Off"
|
||||
IDS_2062 "The emulator was unable to find any ROMs.\nAt least one ROM set is required to run."
|
||||
IDS_2063 "Configured ROM set not available.\nDefaulting to an available ROM set."
|
||||
IDS_2062 "Changes saved, please restart the emulator!"
|
||||
IDS_2063 "The configured machine:\n\n %ls\n\nis not available.\n\nWould you like to enter the Settings menu?"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2064 "Configured video BIOS not available.\nDefaulting to an available video BIOS."
|
||||
IDS_2064 "Configured video card:\n\n %ls\n\nis not available.\n\nWould you like to enter the Settings menu?"
|
||||
IDS_2065 "Machine"
|
||||
IDS_2066 "Display"
|
||||
IDS_2067 "Input devices"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Windows resource defines.
|
||||
*
|
||||
* Version: @(#)resource.h 1.0.2 2018/02/21
|
||||
* Version: @(#)resource.h 1.0.3 2018/03/01
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Platform main support module for Windows.
|
||||
*
|
||||
* Version: @(#)win.c 1.0.1 2018/02/14
|
||||
* Version: @(#)win.c 1.0.2 2018/03/02
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -269,22 +269,58 @@ CreateConsole(int init)
|
||||
/* Not logging to file, attach to console. */
|
||||
if (! AttachConsole(ATTACH_PARENT_PROCESS)) {
|
||||
/* Parent has no console, create one. */
|
||||
AllocConsole();
|
||||
if (! AllocConsole()) {
|
||||
#ifdef DEBUG
|
||||
fp = fopen("error.txt", "w");
|
||||
fprintf(fp, "AllocConsole failed: %lu\n", GetLastError());
|
||||
fclose(fp);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
h = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
if ((h = GetStdHandle(STD_OUTPUT_HANDLE)) == NULL) {
|
||||
#ifdef DEBUG
|
||||
fp = fopen("error.txt", "w");
|
||||
fprintf(fp, "GetStdHandle(OUT) failed: %lu\n", GetLastError());
|
||||
fclose(fp);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
i = _open_osfhandle((intptr_t)h, _O_TEXT);
|
||||
fp = _fdopen(i, "w");
|
||||
setvbuf(fp, NULL, _IONBF, 1);
|
||||
*stdout = *fp;
|
||||
if (i != -1) {
|
||||
fp = _fdopen(i, "w");
|
||||
if (fp == NULL) {
|
||||
#ifdef DEBUG
|
||||
fp = fopen("error.txt", "w");
|
||||
fprintf(fp, "FdOpen(%i) failed: %lu\n", i, GetLastError());
|
||||
fclose(fp);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
setvbuf(fp, NULL, _IONBF, 1);
|
||||
*stdout = *fp;
|
||||
} else {
|
||||
#ifdef DEBUG
|
||||
fp = fopen("error.txt", "w");
|
||||
fprintf(fp, "GetOSfHandle(%p) failed: %lu\n", h, GetLastError());
|
||||
fclose(fp);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if NOTUSED
|
||||
h = GetStdHandle(STD_ERROR_HANDLE);
|
||||
i = _open_osfhandle((intptr_t)h, _O_TEXT);
|
||||
fp = _fdopen(i, "w");
|
||||
setvbuf(fp, NULL, _IONBF, 1);
|
||||
*stderr = *fp;
|
||||
if (h != NULL) {
|
||||
i = _open_osfhandle((intptr_t)h, _O_TEXT);
|
||||
if (i != -1) {
|
||||
fp = _fdopen(i, "w");
|
||||
if (fp != NULL) {
|
||||
setvbuf(fp, NULL, _IONBF, 1);
|
||||
*stderr = *fp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* Set up stdin as well. */
|
||||
h = GetStdHandle(STD_INPUT_HANDLE);
|
||||
i = _open_osfhandle((intptr_t)h, _O_TEXT);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Platform support defintions for Win32.
|
||||
*
|
||||
* Version: @(#)win.h 1.0.2 2018/02/21
|
||||
* Version: @(#)win.h 1.0.3 2018/03/01
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -117,7 +117,7 @@ extern uint8_t joystickconfig_open(HWND hwnd, int joy_nr, int type);
|
||||
extern int getfile(HWND hwnd, char *f, char *fn);
|
||||
extern int getsfile(HWND hwnd, char *f, char *fn);
|
||||
|
||||
extern void win_settings_open(HWND hwnd);
|
||||
extern int win_settings_open(HWND hwnd, int ask);
|
||||
|
||||
extern void hard_disk_add_open(HWND hwnd, int is_existing);
|
||||
extern int hard_disk_was_added(void);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Implementation of server several dialogs.
|
||||
*
|
||||
* Version: @(#)win_dialog.c 1.0.1 2018/02/14
|
||||
* Version: @(#)win_dialog.c 1.0.2 2018/03/01
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -110,22 +110,27 @@ ui_msgbox(int flags, void *arg)
|
||||
switch(flags & 0x1f) {
|
||||
case MBX_INFO: /* just an informational message */
|
||||
fl = (MB_OK | MB_ICONINFORMATION);
|
||||
cap = plat_get_string(IDS_STRINGS); /* "VARCem" */
|
||||
cap = EMU_NAME_W;
|
||||
break;
|
||||
|
||||
case MBX_ERROR: /* error message */
|
||||
if (flags & MBX_FATAL) {
|
||||
fl = (MB_OK | MB_ICONERROR);
|
||||
cap = plat_get_string(IDS_2050); /* "Fatal Error"*/
|
||||
cap = plat_get_string(IDS_2049); /* "Fatal Error"*/
|
||||
} else {
|
||||
fl = (MB_OK | MB_ICONWARNING);
|
||||
cap = plat_get_string(IDS_2049); /* "Error" */
|
||||
cap = plat_get_string(IDS_2048); /* "Error" */
|
||||
}
|
||||
break;
|
||||
|
||||
case MBX_QUESTION: /* question */
|
||||
fl = (MB_YESNOCANCEL | MB_ICONQUESTION);
|
||||
cap = plat_get_string(IDS_STRINGS); /* "VARCem" */
|
||||
cap = EMU_NAME_W;
|
||||
break;
|
||||
|
||||
case MBX_CONFIG: /* configuration */
|
||||
fl = (MB_YESNO | MB_ICONERROR);
|
||||
cap = EMU_NAME_W;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -160,9 +165,17 @@ ui_msgbox(int flags, void *arg)
|
||||
fl);
|
||||
|
||||
/* Convert return values to generic ones. */
|
||||
if (fl == IDNO) fl = 1;
|
||||
else if (fl == IDCANCEL) fl = -1;
|
||||
else fl = 0;
|
||||
switch(fl) {
|
||||
case IDNO:
|
||||
fl = 1; break;
|
||||
|
||||
case IDYES:
|
||||
case IDOK:
|
||||
fl = 0; break;
|
||||
|
||||
case IDCANCEL:
|
||||
fl = -1; break;
|
||||
}
|
||||
|
||||
return(fl);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Implement the user Interface module.
|
||||
*
|
||||
* Version: @(#)win_ui.c 1.0.2 2018/02/21
|
||||
* Version: @(#)win_ui.c 1.0.3 2018/03/02
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -328,7 +328,7 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
break;
|
||||
|
||||
case IDM_ACTION_CTRL_ALT_ESC:
|
||||
pc_send_cae();
|
||||
keyboard_send_cae();
|
||||
break;
|
||||
|
||||
case IDM_ACTION_RCTRL_IS_LALT:
|
||||
@@ -343,7 +343,10 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
break;
|
||||
|
||||
case IDM_CONFIG:
|
||||
win_settings_open(hwnd);
|
||||
plat_pause(1);
|
||||
if (win_settings_open(hwnd, 1) == 2)
|
||||
pc_reset_hard_init();
|
||||
plat_pause(0);
|
||||
break;
|
||||
|
||||
case IDM_ABOUT:
|
||||
@@ -724,7 +727,10 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
break;
|
||||
|
||||
case WM_SHOWSETTINGS:
|
||||
win_settings_open(hwnd);
|
||||
plat_pause(1);
|
||||
if (win_settings_open(hwnd, 1) == 2)
|
||||
pc_reset_hard_init();
|
||||
plat_pause(0);
|
||||
break;
|
||||
|
||||
case WM_PAUSE:
|
||||
@@ -763,9 +769,9 @@ ui_init(int nCmdShow)
|
||||
WCHAR title[200];
|
||||
WNDCLASSEX wincl; /* buffer for main window's class */
|
||||
MSG messages; /* received-messages buffer */
|
||||
HWND hwnd = 0; /* handle for our window */
|
||||
HWND hwnd = 0; /* handle for our window */
|
||||
HACCEL haccel; /* handle to accelerator table */
|
||||
int bRet;
|
||||
int ret;
|
||||
|
||||
#if 0
|
||||
/* We should have an application-wide at_exit catcher. */
|
||||
@@ -782,7 +788,7 @@ ui_init(int nCmdShow)
|
||||
return(6);
|
||||
}
|
||||
|
||||
win_settings_open(NULL);
|
||||
win_settings_open(NULL, 0);
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -887,14 +893,26 @@ ui_init(int nCmdShow)
|
||||
0, 0, 1, 1, hwnd, NULL, hinstance, NULL);
|
||||
MoveWindow(hwndRender, 0, 0, scrnsz_x, scrnsz_y, TRUE);
|
||||
|
||||
/* All done, fire up the actual emulated machine. */
|
||||
if (! pc_init_modules()) {
|
||||
/* Dang, no ROMs found at all! */
|
||||
MessageBox(hwnd,
|
||||
plat_get_string(IDS_2056),
|
||||
plat_get_string(IDS_2050),
|
||||
MB_OK | MB_ICONERROR);
|
||||
return(6);
|
||||
/* That looks good, now continue setting up the machine. */
|
||||
switch (pc_init_modules()) {
|
||||
case -1: /* General failure during init, give up. */
|
||||
return(6);
|
||||
|
||||
case 0: /* Configuration error, user wants to exit. */
|
||||
return(0);
|
||||
|
||||
case 1: /* All good. */
|
||||
break;
|
||||
|
||||
case 2: /* Configuration error, user wants to re-config. */
|
||||
if (win_settings_open(NULL, 0)) {
|
||||
/* Save the new configuration to file. */
|
||||
config_save();
|
||||
|
||||
/* Remind them to restart. */
|
||||
ui_msgbox(MBX_INFO, (wchar_t *)IDS_2062);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* Initialize the configured Video API. */
|
||||
@@ -936,11 +954,11 @@ ui_init(int nCmdShow)
|
||||
|
||||
/* Run the message loop. It will run until GetMessage() returns 0 */
|
||||
while (! quited) {
|
||||
bRet = GetMessage(&messages, NULL, 0, 0);
|
||||
if ((bRet == 0) || quited) break;
|
||||
ret = GetMessage(&messages, NULL, 0, 0);
|
||||
if ((ret == 0) || quited) break;
|
||||
|
||||
if (bRet == -1) {
|
||||
fatal("bRet is -1\n");
|
||||
if (ret == -1) {
|
||||
fatal("ret is -1\n");
|
||||
}
|
||||
|
||||
if (messages.message == WM_QUIT) {
|
||||
|
||||
Reference in New Issue
Block a user