Merge pull request #2522 from jriwanek-forks/master-up

Clang format in src/machine, src/win and a few other places
This commit is contained in:
Miran Grča
2022-07-28 01:42:35 +02:00
committed by GitHub
120 changed files with 29910 additions and 31560 deletions

View File

@@ -32,10 +32,9 @@
typedef struct
{
uint8_t regs[8];
uint8_t regs[8];
} ibm_5161_t;
static void
ibm_5161_out(uint16_t port, uint8_t val, void *priv)
{
@@ -44,47 +43,45 @@ ibm_5161_out(uint16_t port, uint8_t val, void *priv)
dev->regs[port & 0x0007] = val;
}
static uint8_t
ibm_5161_in(uint16_t port, void *priv)
{
ibm_5161_t *dev = (ibm_5161_t *) priv;
uint8_t ret = 0xff;
uint8_t ret = 0xff;
ret = dev->regs[port & 0x0007];
switch (port) {
case 0x210: /* Write to latch expansion bus data (ED0-ED7) */
/* Read to verify expansion bus data (ED0-ED7) */
break;
case 0x214: /* Write to latch data bus bits (DO - 07) */
/* Read data bus bits (DO - D7) */
break;
case 0x211: /* Read high-order address bits (A8 - A 15) */
case 0x215: /* Read high-order address bits (A8 - A 15) */
ret = (get_last_addr() >> 8) & 0xff;
break;
case 0x212: /* Read low-order address bits (A0 - A7) */
case 0x216: /* Read low-order address bits (A0 - A7) */
ret = get_last_addr() & 0xff;
break;
case 0x213: /* Write 00 to disable expansion unit */
/* Write 01 to enable expansion unit */
/* Read status of expansion unit
00 = enable/disable
01 = wait-state request flag
02-03 = not used
04-07 = switch position
1 = Off
0 =On */
ret = dev->regs[3] & 0x01;
break;
case 0x210: /* Write to latch expansion bus data (ED0-ED7) */
/* Read to verify expansion bus data (ED0-ED7) */
break;
case 0x214: /* Write to latch data bus bits (DO - 07) */
/* Read data bus bits (DO - D7) */
break;
case 0x211: /* Read high-order address bits (A8 - A 15) */
case 0x215: /* Read high-order address bits (A8 - A 15) */
ret = (get_last_addr() >> 8) & 0xff;
break;
case 0x212: /* Read low-order address bits (A0 - A7) */
case 0x216: /* Read low-order address bits (A0 - A7) */
ret = get_last_addr() & 0xff;
break;
case 0x213: /* Write 00 to disable expansion unit */
/* Write 01 to enable expansion unit */
/* Read status of expansion unit
00 = enable/disable
01 = wait-state request flag
02-03 = not used
04-07 = switch position
1 = Off
0 =On */
ret = dev->regs[3] & 0x01;
break;
}
return ret;
}
static void
ibm_5161_close(void *p)
{
@@ -93,7 +90,6 @@ ibm_5161_close(void *p)
free(dev);
}
static void *
ibm_5161_init(const device_t *info)
{
@@ -102,25 +98,25 @@ ibm_5161_init(const device_t *info)
/* Extender Card Registers */
io_sethandler(0x0210, 0x0004,
ibm_5161_in, NULL, NULL, ibm_5161_out, NULL, NULL, dev);
ibm_5161_in, NULL, NULL, ibm_5161_out, NULL, NULL, dev);
/* Receiver Card Registers */
io_sethandler(0x0214, 0x0003,
ibm_5161_in, NULL, NULL, ibm_5161_out, NULL, NULL, dev);
ibm_5161_in, NULL, NULL, ibm_5161_out, NULL, NULL, dev);
return dev;
}
const device_t ibm_5161_device = {
.name = "IBM Expansion Unit (5161)",
.name = "IBM Expansion Unit (5161)",
.internal_name = "ibm_5161",
.flags = DEVICE_ISA,
.local = 0,
.init = ibm_5161_init,
.close = ibm_5161_close,
.reset = NULL,
.flags = DEVICE_ISA,
.local = 0,
.init = ibm_5161_init,
.close = ibm_5161_close,
.reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
.force_redraw = NULL,
.config = NULL
.force_redraw = NULL,
.config = NULL
};

File diff suppressed because it is too large Load Diff

View File

@@ -18,183 +18,178 @@
* Copyright 2021 Laci bá'
*/
#ifndef EMU_86BOX_H
# define EMU_86BOX_H
#define EMU_86BOX_H
/* Configuration values. */
#define SERIAL_MAX 4
#define PARALLEL_MAX 4
#define SCREEN_RES_X 640
#define SCREEN_RES_Y 480
#define SERIAL_MAX 4
#define PARALLEL_MAX 4
#define SCREEN_RES_X 640
#define SCREEN_RES_Y 480
/* Filename and pathname info. */
#define CONFIG_FILE "86box.cfg"
#define CONFIG_FILE "86box.cfg"
#define NVR_PATH "nvr"
#define SCREENSHOT_PATH "screenshots"
/* Default language 0xFFFF = from system, 0x409 = en-US */
#define DEFAULT_LANGUAGE 0x0409
#ifdef MIN
#undef MIN
# undef MIN
#endif
#ifdef MAX
#undef MAX
# undef MAX
#endif
#ifdef ABS
#undef ABS
# undef ABS
#endif
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define ABS(x) ((x) > 0 ? (x) : -(x))
#define BCD8(x) ((((x) / 10) << 4) | ((x) % 10))
#define BCD16(x) ((((x) / 1000) << 12) | (((x) / 100) << 8) | BCD8(x))
#define BCD32(x) ((((x) / 10000000) << 28) | (((x) / 1000000) << 24) | (((x) / 100000) << 20) | (((x) / 10000) << 16) | BCD16(x))
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define ABS(x) ((x) > 0 ? (x) : -(x))
#define BCD8(x) ((((x) / 10) << 4) | ((x) % 10))
#define BCD16(x) ((((x) / 1000) << 12) | (((x) / 100) << 8) | BCD8(x))
#define BCD32(x) ((((x) / 10000000) << 28) | (((x) / 1000000) << 24) | (((x) / 100000) << 20) | (((x) / 10000) << 16) | BCD16(x))
#ifdef __cplusplus
extern "C" {
#endif
/* Global variables. */
extern uint32_t lang_sys; /* (-) system language code */
extern uint32_t lang_sys; /* (-) system language code */
extern int dump_on_exit; /* (O) dump regs on exit*/
extern int do_dump_config; /* (O) dump cfg after load */
extern int start_in_fullscreen; /* (O) start in fullscreen */
extern int dump_on_exit; /* (O) dump regs on exit*/
extern int do_dump_config; /* (O) dump cfg after load */
extern int start_in_fullscreen; /* (O) start in fullscreen */
#ifdef _WIN32
extern int force_debug; /* (O) force debug output */
extern int force_debug; /* (O) force debug output */
#endif
#ifdef USE_WX
extern int video_fps; /* (O) render speed in fps */
extern int video_fps; /* (O) render speed in fps */
#endif
extern int settings_only; /* (O) show only the settings dialog */
extern int confirm_exit_cmdl; /* (O) do not ask for confirmation on quit if set to 0 */
extern int settings_only; /* (O) show only the settings dialog */
extern int confirm_exit_cmdl; /* (O) do not ask for confirmation on quit if set to 0 */
#ifdef _WIN32
extern uint64_t unique_id;
extern uint64_t source_hwnd;
extern uint64_t unique_id;
extern uint64_t source_hwnd;
#endif
extern char rom_path[1024]; /* (O) full path to ROMs */
extern char log_path[1024]; /* (O) full path of logfile */
extern char vm_name[1024]; /* (O) display name of the VM */
extern char rom_path[1024]; /* (O) full path to ROMs */
extern char log_path[1024]; /* (O) full path of logfile */
extern char vm_name[1024]; /* (O) display name of the VM */
#define window_x monitor_settings[0].mon_window_x
#define window_y monitor_settings[0].mon_window_y
#define window_w monitor_settings[0].mon_window_w
#define window_h monitor_settings[0].mon_window_h
extern int window_remember,
vid_resize, /* (C) allow resizing */
invert_display, /* (C) invert the display */
suppress_overscan; /* (C) suppress overscans */
extern uint32_t lang_id; /* (C) language code identifier */
extern char icon_set[256]; /* (C) iconset identifier */
extern int scale; /* (C) screen scale factor */
extern int dpi_scale; /* (C) DPI scaling of the emulated screen */
extern int vid_api; /* (C) video renderer */
extern int vid_cga_contrast, /* (C) video */
video_fullscreen, /* (C) video */
video_fullscreen_first, /* (C) video */
video_fullscreen_scale, /* (C) video */
enable_overscan, /* (C) video */
force_43, /* (C) video */
video_filter_method, /* (C) video */
video_vsync, /* (C) video */
video_framerate, /* (C) video */
gfxcard; /* (C) graphics/video card */
extern char video_shader[512]; /* (C) video */
extern int serial_enabled[], /* (C) enable serial ports */
bugger_enabled, /* (C) enable ISAbugger */
postcard_enabled, /* (C) enable POST card */
isamem_type[], /* (C) enable ISA mem cards */
isartc_type; /* (C) enable ISA RTC card */
extern int sound_is_float, /* (C) sound uses FP values */
GAMEBLASTER, /* (C) sound option */
GUS, GUSMAX, /* (C) sound option */
SSI2001, /* (C) sound option */
voodoo_enabled, /* (C) video option */
ibm8514_enabled, /* (C) video option */
xga_enabled; /* (C) video option */
extern uint32_t mem_size; /* (C) memory size (Installed on system board) */
extern uint32_t isa_mem_size; /* (C) memory size (ISA Memory Cards) */
extern int cpu, /* (C) cpu type */
cpu_use_dynarec, /* (C) cpu uses/needs Dyna */
fpu_type; /* (C) fpu type */
extern int time_sync; /* (C) enable time sync */
extern int network_type; /* (C) net provider type */
extern int network_card; /* (C) net interface num */
extern char network_host[522]; /* (C) host network intf */
extern int hdd_format_type; /* (C) hard disk file format */
extern int confirm_reset, /* (C) enable reset confirmation */
confirm_exit, /* (C) enable exit confirmation */
confirm_save; /* (C) enable save confirmation */
extern int enable_discord; /* (C) enable Discord integration */
extern int window_remember,
vid_resize, /* (C) allow resizing */
invert_display, /* (C) invert the display */
suppress_overscan; /* (C) suppress overscans */
extern uint32_t lang_id; /* (C) language code identifier */
extern char icon_set[256]; /* (C) iconset identifier */
extern int scale; /* (C) screen scale factor */
extern int dpi_scale; /* (C) DPI scaling of the emulated screen */
extern int vid_api; /* (C) video renderer */
extern int vid_cga_contrast, /* (C) video */
video_fullscreen, /* (C) video */
video_fullscreen_first, /* (C) video */
video_fullscreen_scale, /* (C) video */
enable_overscan, /* (C) video */
force_43, /* (C) video */
video_filter_method, /* (C) video */
video_vsync, /* (C) video */
video_framerate, /* (C) video */
gfxcard; /* (C) graphics/video card */
extern char video_shader[512]; /* (C) video */
extern int serial_enabled[], /* (C) enable serial ports */
bugger_enabled, /* (C) enable ISAbugger */
postcard_enabled, /* (C) enable POST card */
isamem_type[], /* (C) enable ISA mem cards */
isartc_type; /* (C) enable ISA RTC card */
extern int sound_is_float, /* (C) sound uses FP values */
GAMEBLASTER, /* (C) sound option */
GUS, GUSMAX, /* (C) sound option */
SSI2001, /* (C) sound option */
voodoo_enabled, /* (C) video option */
ibm8514_enabled, /* (C) video option */
xga_enabled; /* (C) video option */
extern uint32_t mem_size; /* (C) memory size (Installed on system board) */
extern uint32_t isa_mem_size; /* (C) memory size (ISA Memory Cards) */
extern int cpu, /* (C) cpu type */
cpu_use_dynarec, /* (C) cpu uses/needs Dyna */
fpu_type; /* (C) fpu type */
extern int time_sync; /* (C) enable time sync */
extern int network_type; /* (C) net provider type */
extern int network_card; /* (C) net interface num */
extern char network_host[522]; /* (C) host network intf */
extern int hdd_format_type; /* (C) hard disk file format */
extern int confirm_reset, /* (C) enable reset confirmation */
confirm_exit, /* (C) enable exit confirmation */
confirm_save; /* (C) enable save confirmation */
extern int enable_discord; /* (C) enable Discord integration */
extern int is_pentium; /* TODO: Move back to cpu/cpu.h when it's figured out,
how to remove that hack from the ET4000/W32p. */
extern int fixed_size_x, fixed_size_y;
extern int is_pentium; /* TODO: Move back to cpu/cpu.h when it's figured out,
how to remove that hack from the ET4000/W32p. */
extern int fixed_size_x, fixed_size_y;
extern double mouse_sensitivity; /* (C) Mouse sensitivity scale */
extern int pit_mode; /* (C) force setting PIT mode */
extern int fm_driver; /* (C) select FM sound driver */
extern int pit_mode; /* (C) force setting PIT mode */
extern int fm_driver; /* (C) select FM sound driver */
extern char exe_path[2048]; /* path (dir) of executable */
extern char usr_path[1024]; /* path (dir) of user data */
extern char cfg_path[1024]; /* full path of config file */
extern char exe_path[2048]; /* path (dir) of executable */
extern char usr_path[1024]; /* path (dir) of user data */
extern char cfg_path[1024]; /* full path of config file */
#ifndef USE_NEW_DYNAREC
extern FILE *stdlog; /* file to log output to */
extern FILE *stdlog; /* file to log output to */
#endif
extern int config_changed; /* config has changed */
extern int config_changed; /* config has changed */
/* Function prototypes. */
#ifdef HAVE_STDARG_H
extern void pclog_ex(const char *fmt, va_list);
extern void fatal_ex(const char *fmt, va_list);
extern void pclog_ex(const char *fmt, va_list);
extern void fatal_ex(const char *fmt, va_list);
#endif
extern void pclog_toggle_suppr(void);
extern void pclog(const char *fmt, ...);
extern void fatal(const char *fmt, ...);
extern void set_screen_size(int x, int y);
extern void set_screen_size_monitor(int x, int y, int monitor_index);
extern void reset_screen_size(void);
extern void reset_screen_size_monitor(int monitor_index);
extern void set_screen_size_natural(void);
extern void pclog_toggle_suppr(void);
extern void pclog(const char *fmt, ...);
extern void fatal(const char *fmt, ...);
extern void set_screen_size(int x, int y);
extern void set_screen_size_monitor(int x, int y, int monitor_index);
extern void reset_screen_size(void);
extern void reset_screen_size_monitor(int monitor_index);
extern void set_screen_size_natural(void);
extern void update_mouse_msg();
#if 0
extern void pc_reload(wchar_t *fn);
#endif
extern int pc_init_modules(void);
extern int pc_init(int argc, char *argv[]);
extern void pc_close(void *threadid);
extern void pc_reset_hard_close(void);
extern void pc_reset_hard_init(void);
extern void pc_reset_hard(void);
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_run(void);
extern void pc_start(void);
extern void pc_onesec(void);
extern int pc_init_modules(void);
extern int pc_init(int argc, char *argv[]);
extern void pc_close(void *threadid);
extern void pc_reset_hard_close(void);
extern void pc_reset_hard_init(void);
extern void pc_reset_hard(void);
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_run(void);
extern void pc_start(void);
extern void pc_onesec(void);
extern uint16_t get_last_addr(void);
extern uint16_t get_last_addr(void);
/* This is for external subtraction of cycles;
should be in cpu.c but I put it here to avoid
having to include cpu.c everywhere. */
extern void sub_cycles(int c);
extern void resub_cycles(int old_cycles);
extern void sub_cycles(int c);
extern void resub_cycles(int old_cycles);
extern double isa_timing;
extern int io_delay, framecountx;
extern double isa_timing;
extern int io_delay, framecountx;
extern volatile int cpu_thread_run;
extern volatile int cpu_thread_run;
#ifdef __cplusplus
}
#endif
#endif /*EMU_86BOX_H*/
#endif /*EMU_86BOX_H*/

View File

@@ -20,8 +20,7 @@
* Copyright 2017 Fred N. van Kempen.
*/
#ifndef EMU_CONFIG_H
# define EMU_CONFIG_H
#define EMU_CONFIG_H
#ifdef __cplusplus
extern "C" {
@@ -69,16 +68,16 @@ typedef struct {
window_x,
window_y,
sound_gain; /* Sound gain */
#ifdef USE_LANGUAGE
# ifdef USE_LANGUAGE
uint16_t language_id; /* Language ID (0x0409 = English (US)) */
#endif
# endif
/* Machine cateogory */
int machine, /* Machine */
cpu, /* CPU */
#ifdef USE_DYNAREC
# ifdef USE_DYNAREC
cpu_use_dynarec, /* CPU recompiler enabled */
#endif
# endif
wait_states, /* CPU wait states */
enable_external_fpu, /* FPU enabled */
time_sync; /* Time sync enabled */
@@ -109,9 +108,9 @@ typedef struct {
/* Ports category */
char parallel_devices[PARALLEL_MAX][32]; /* LPT device names */
#ifdef USE_SERIAL_DEVICES
# ifdef USE_SERIAL_DEVICES
char serial_devices[SERIAL_MAX][32]; /* Serial device names */
#endif
# endif
int serial_enabled[SERIAL_MAX], /* Serial ports 1, 2, 3, 4 enabled */
parallel_enabled[PARALLEL_MAX]; /* LPT1, LPT2, LPT3, LPT4 enabled */
@@ -137,33 +136,32 @@ typedef struct {
} config_t;
#endif
extern void config_load(void);
extern void config_save(void);
extern void config_write(char *fn);
extern void config_dump(void);
extern void config_load(void);
extern void config_save(void);
extern void config_write(char *fn);
extern void config_dump(void);
extern void config_delete_var(char *head, char *name);
extern int config_get_int(char *head, char *name, int def);
extern double config_get_double(char *head, char *name, double def);
extern int config_get_hex16(char *head, char *name, int def);
extern int config_get_hex20(char *head, char *name, int def);
extern int config_get_mac(char *head, char *name, int def);
extern char *config_get_string(char *head, char *name, char *def);
extern wchar_t *config_get_wstring(char *head, char *name, wchar_t *def);
extern void config_set_int(char *head, char *name, int val);
extern void config_set_double(char *head, char *name, double val);
extern void config_set_hex16(char *head, char *name, int val);
extern void config_set_hex20(char *head, char *name, int val);
extern void config_set_mac(char *head, char *name, int val);
extern void config_set_string(char *head, char *name, char *val);
extern void config_set_wstring(char *head, char *name, wchar_t *val);
extern void config_delete_var(char *head, char *name);
extern int config_get_int(char *head, char *name, int def);
extern double config_get_double(char *head, char *name, double def);
extern int config_get_hex16(char *head, char *name, int def);
extern int config_get_hex20(char *head, char *name, int def);
extern int config_get_mac(char *head, char *name, int def);
extern char *config_get_string(char *head, char *name, char *def);
extern wchar_t *config_get_wstring(char *head, char *name, wchar_t *def);
extern void config_set_int(char *head, char *name, int val);
extern void config_set_double(char *head, char *name, double val);
extern void config_set_hex16(char *head, char *name, int val);
extern void config_set_hex20(char *head, char *name, int val);
extern void config_set_mac(char *head, char *name, int val);
extern void config_set_string(char *head, char *name, char *val);
extern void config_set_wstring(char *head, char *name, wchar_t *val);
extern void * config_find_section(char *name);
extern void config_rename_section(void *priv, char *name);
extern void *config_find_section(char *name);
extern void config_rename_section(void *priv, char *name);
#ifdef __cplusplus
}
#endif
#endif /*EMU_CONFIG_H*/
#endif /*EMU_CONFIG_H*/

View File

@@ -37,52 +37,49 @@
* USA.
*/
#ifndef EMU_DEVICE_H
# define EMU_DEVICE_H
#define CONFIG_END -1
#define CONFIG_STRING 0
#define CONFIG_INT 1
#define CONFIG_BINARY 2
#define CONFIG_SELECTION 3
#define CONFIG_MIDI_OUT 4
#define CONFIG_FNAME 5
#define CONFIG_SPINNER 6
#define CONFIG_HEX16 7
#define CONFIG_HEX20 8
#define CONFIG_MAC 9
#define CONFIG_MIDI_IN 10
#define CONFIG_BIOS 11
#define EMU_DEVICE_H
#define CONFIG_END -1
#define CONFIG_STRING 0
#define CONFIG_INT 1
#define CONFIG_BINARY 2
#define CONFIG_SELECTION 3
#define CONFIG_MIDI_OUT 4
#define CONFIG_FNAME 5
#define CONFIG_SPINNER 6
#define CONFIG_HEX16 7
#define CONFIG_HEX20 8
#define CONFIG_MAC 9
#define CONFIG_MIDI_IN 10
#define CONFIG_BIOS 11
enum {
DEVICE_NOT_WORKING = 1, /* does not currently work correctly and will be disabled in a release build */
DEVICE_PCJR = 2, /* requires an IBM PCjr */
DEVICE_AT = 4, /* requires an AT-compatible system */
DEVICE_PS2 = 8, /* requires a PS/1 or PS/2 system */
DEVICE_ISA = 0x10, /* requires the ISA bus */
DEVICE_CBUS = 0x20, /* requires the C-BUS bus */
DEVICE_MCA = 0x40, /* requires the MCA bus */
DEVICE_EISA = 0x80, /* requires the EISA bus */
DEVICE_VLB = 0x100, /* requires the PCI bus */
DEVICE_PCI = 0x200, /* requires the VLB bus */
DEVICE_AGP = 0x400, /* requires the AGP bus */
DEVICE_AC97 = 0x800, /* requires the AC'97 bus */
DEVICE_COM = 0x1000, /* requires a serial port */
DEVICE_LPT = 0x2000 /* requires a parallel port */
DEVICE_NOT_WORKING = 1, /* does not currently work correctly and will be disabled in a release build */
DEVICE_PCJR = 2, /* requires an IBM PCjr */
DEVICE_AT = 4, /* requires an AT-compatible system */
DEVICE_PS2 = 8, /* requires a PS/1 or PS/2 system */
DEVICE_ISA = 0x10, /* requires the ISA bus */
DEVICE_CBUS = 0x20, /* requires the C-BUS bus */
DEVICE_MCA = 0x40, /* requires the MCA bus */
DEVICE_EISA = 0x80, /* requires the EISA bus */
DEVICE_VLB = 0x100, /* requires the PCI bus */
DEVICE_PCI = 0x200, /* requires the VLB bus */
DEVICE_AGP = 0x400, /* requires the AGP bus */
DEVICE_AC97 = 0x800, /* requires the AC'97 bus */
DEVICE_COM = 0x1000, /* requires a serial port */
DEVICE_LPT = 0x2000 /* requires a parallel port */
};
typedef struct {
const char *description;
int value;
int value;
} device_config_selection_t;
typedef struct {
const char *name;
const char *internal_name;
int bios_type;
int files_no;
const char *name;
const char *internal_name;
int bios_type;
int files_no;
const char **files;
} device_config_bios_t;
@@ -93,94 +90,92 @@ typedef struct {
} device_config_spinner_t;
typedef struct {
const char *name;
const char *description;
int type;
const char *default_string;
int default_int;
const char *file_filter;
const device_config_spinner_t spinner;
const char *name;
const char *description;
int type;
const char *default_string;
int default_int;
const char *file_filter;
const device_config_spinner_t spinner;
const device_config_selection_t selection[16];
const device_config_bios_t *bios;
const device_config_bios_t *bios;
} device_config_t;
typedef struct _device_ {
const char *name;
const char *name;
const char *internal_name;
uint32_t flags; /* system flags */
uint32_t local; /* flags local to device */
uint32_t flags; /* system flags */
uint32_t local; /* flags local to device */
void *(*init)(const struct _device_ *);
void (*close)(void *priv);
void (*reset)(void *priv);
void *(*init)(const struct _device_ *);
void (*close)(void *priv);
void (*reset)(void *priv);
union {
int (*available)(void);
int (*poll)(int x, int y, int z, int b, void *priv);
void (*register_pci_slot)(int device, int type, int inta, int intb, int intc, int intd, void *priv);
int (*available)(void);
int (*poll)(int x, int y, int z, int b, void *priv);
void (*register_pci_slot)(int device, int type, int inta, int intb, int intc, int intd, void *priv);
};
void (*speed_changed)(void *priv);
void (*force_redraw)(void *priv);
void (*speed_changed)(void *priv);
void (*force_redraw)(void *priv);
const device_config_t *config;
} device_t;
typedef struct {
const device_t *dev;
char name[2048];
const device_t *dev;
char name[2048];
} device_context_t;
#ifdef __cplusplus
extern "C" {
#endif
extern void device_init(void);
extern void device_set_context(device_context_t *c, const device_t *d, int inst);
extern void device_context(const device_t *d);
extern void device_context_inst(const device_t *d, int inst);
extern void device_context_restore(void);
extern void *device_add(const device_t *d);
extern void device_add_ex(const device_t *d, void *priv);
extern void *device_add_inst(const device_t *d, int inst);
extern void device_add_inst_ex(const device_t *d, void *priv, int inst);
extern void *device_cadd(const device_t *d, const device_t *cd);
extern void device_cadd_ex(const device_t *d, const device_t *cd, void *priv);
extern void *device_cadd_inst(const device_t *d, const device_t *cd, int inst);
extern void device_cadd_inst_ex(const device_t *d, const device_t *cd, void *priv, int inst);
extern void device_close_all(void);
extern void device_reset_all(void);
extern void device_reset_all_pci(void);
extern void *device_get_priv(const device_t *d);
extern int device_available(const device_t *d);
extern int device_poll(const device_t *d, int x, int y, int z, int b);
extern void device_register_pci_slot(const device_t *d, int device, int type, int inta, int intb, int intc, int intd);
extern void device_speed_changed(void);
extern void device_force_redraw(void);
extern void device_get_name(const device_t *d, int bus, char *name);
extern int device_has_config(const device_t *d);
extern void device_init(void);
extern void device_set_context(device_context_t *c, const device_t *d, int inst);
extern void device_context(const device_t *d);
extern void device_context_inst(const device_t *d, int inst);
extern void device_context_restore(void);
extern void *device_add(const device_t *d);
extern void device_add_ex(const device_t *d, void *priv);
extern void *device_add_inst(const device_t *d, int inst);
extern void device_add_inst_ex(const device_t *d, void *priv, int inst);
extern void *device_cadd(const device_t *d, const device_t *cd);
extern void device_cadd_ex(const device_t *d, const device_t *cd, void *priv);
extern void *device_cadd_inst(const device_t *d, const device_t *cd, int inst);
extern void device_cadd_inst_ex(const device_t *d, const device_t *cd, void *priv, int inst);
extern void device_close_all(void);
extern void device_reset_all(void);
extern void device_reset_all_pci(void);
extern void *device_get_priv(const device_t *d);
extern int device_available(const device_t *d);
extern int device_poll(const device_t *d, int x, int y, int z, int b);
extern void device_register_pci_slot(const device_t *d, int device, int type, int inta, int intb, int intc, int intd);
extern void device_speed_changed(void);
extern void device_force_redraw(void);
extern void device_get_name(const device_t *d, int bus, char *name);
extern int device_has_config(const device_t *d);
extern int device_is_valid(const device_t *, int m);
extern int device_is_valid(const device_t *, int m);
extern int device_get_config_int(const char *name);
extern int device_get_config_int_ex(const char *s, int dflt_int);
extern int device_get_config_hex16(const char *name);
extern int device_get_config_hex20(const char *name);
extern int device_get_config_mac(const char *name, int dflt_int);
extern void device_set_config_int(const char *s, int val);
extern void device_set_config_hex16(const char *s, int val);
extern void device_set_config_hex20(const char *s, int val);
extern void device_set_config_mac(const char *s, int val);
extern const char *device_get_config_string(const char *name);
#define device_get_config_bios device_get_config_string
extern int device_get_config_int(const char *name);
extern int device_get_config_int_ex(const char *s, int dflt_int);
extern int device_get_config_hex16(const char *name);
extern int device_get_config_hex20(const char *name);
extern int device_get_config_mac(const char *name, int dflt_int);
extern void device_set_config_int(const char *s, int val);
extern void device_set_config_hex16(const char *s, int val);
extern void device_set_config_hex20(const char *s, int val);
extern void device_set_config_mac(const char *s, int val);
extern const char *device_get_config_string(const char *name);
#define device_get_config_bios device_get_config_string
extern char * device_get_internal_name(const device_t *d);
extern char *device_get_internal_name(const device_t *d);
extern int machine_get_config_int(char *s);
extern char *machine_get_config_string(char *s);
extern int machine_get_config_int(char *s);
extern char *machine_get_config_string(char *s);
#ifdef __cplusplus
}
#endif
#endif /*EMU_DEVICE_H*/
#endif /*EMU_DEVICE_H*/

View File

@@ -1,15 +1,15 @@
#ifndef EMU_LPT_H
# define EMU_LPT_H
#define EMU_LPT_H
#define LPT1_ADDR 0x0378
#define LPT1_IRQ 7
#define LPT2_ADDR 0x0278
#define LPT2_IRQ 5
#define LPT1_ADDR 0x0378
#define LPT1_IRQ 7
#define LPT2_ADDR 0x0278
#define LPT2_IRQ 5
// LPT 1 on machines when installed
#define LPT_MDA_ADDR 0x03bc
#define LPT_MDA_IRQ 7
#define LPT4_ADDR 0x0268
#define LPT4_IRQ 5
#define LPT_MDA_ADDR 0x03bc
#define LPT_MDA_IRQ 7
#define LPT4_ADDR 0x0268
#define LPT4_IRQ 5
/*
#define LPT5_ADDR 0x027c
#define LPT5_IRQ 7
@@ -22,37 +22,36 @@ typedef struct
const char *name;
const char *internal_name;
void * (*init)(void *lpt);
void (*close)(void *p);
void (*write_data)(uint8_t val, void *p);
void (*write_ctrl)(uint8_t val, void *p);
uint8_t (*read_data)(void *p);
uint8_t (*read_status)(void *p);
uint8_t (*read_ctrl)(void *p);
void *(*init)(void *lpt);
void (*close)(void *p);
void (*write_data)(uint8_t val, void *p);
void (*write_ctrl)(uint8_t val, void *p);
uint8_t (*read_data)(void *p);
uint8_t (*read_status)(void *p);
uint8_t (*read_ctrl)(void *p);
} lpt_device_t;
extern void lpt_init(void);
extern void lpt_port_init(int i, uint16_t port);
extern void lpt_port_irq(int i, uint8_t irq);
extern void lpt_port_remove(int i);
extern void lpt1_remove_ams(void);
#define lpt1_init(a) lpt_port_init(0, a)
#define lpt1_irq(a) lpt_port_irq(0, a)
#define lpt1_remove() lpt_port_remove(0)
#define lpt1_init(a) lpt_port_init(0, a)
#define lpt1_irq(a) lpt_port_irq(0, a)
#define lpt1_remove() lpt_port_remove(0)
#define lpt2_init(a) lpt_port_init(1, a)
#define lpt2_irq(a) lpt_port_irq(1, a)
#define lpt2_remove() lpt_port_remove(1)
#define lpt2_init(a) lpt_port_init(1, a)
#define lpt2_irq(a) lpt_port_irq(1, a)
#define lpt2_remove() lpt_port_remove(1)
#define lpt3_init(a) lpt_port_init(2, a)
#define lpt3_irq(a) lpt_port_irq(2, a)
#define lpt3_remove() lpt_port_remove(2)
#define lpt3_init(a) lpt_port_init(2, a)
#define lpt3_irq(a) lpt_port_irq(2, a)
#define lpt3_remove() lpt_port_remove(2)
#define lpt4_init(a) lpt_port_init(3, a)
#define lpt4_irq(a) lpt_port_irq(3, a)
#define lpt4_remove() lpt_port_remove(3)
#define lpt4_init(a) lpt_port_init(3, a)
#define lpt4_irq(a) lpt_port_irq(3, a)
#define lpt4_remove() lpt_port_remove(3)
/*
#define lpt5_init(a) lpt_port_init(4, a)
@@ -64,31 +63,29 @@ extern void lpt1_remove_ams(void);
#define lpt6_remove() lpt_port_remove(5)
*/
void lpt_devices_init(void);
void lpt_devices_close(void);
typedef struct {
uint8_t enabled, irq,
dat, ctrl;
uint16_t addr, pad0;
int device, enable_irq;
lpt_device_t * dt;
void * priv;
uint8_t enabled, irq,
dat, ctrl;
uint16_t addr, pad0;
int device, enable_irq;
lpt_device_t *dt;
void *priv;
} lpt_port_t;
extern lpt_port_t lpt_ports[PARALLEL_MAX];
extern lpt_port_t lpt_ports[PARALLEL_MAX];
extern void lpt_write(uint16_t port, uint8_t val, void *priv);
extern uint8_t lpt_read(uint16_t port, void *priv);
extern void lpt_write(uint16_t port, uint8_t val, void *priv);
extern uint8_t lpt_read(uint16_t port, void *priv);
extern void lpt_irq(void *priv, int raise);
extern void lpt_irq(void *priv, int raise);
extern char * lpt_device_get_name(int id);
extern char * lpt_device_get_internal_name(int id);
extern char *lpt_device_get_name(int id);
extern char *lpt_device_get_internal_name(int id);
extern int lpt_device_get_from_internal_name(char *s);
extern int lpt_device_get_from_internal_name(char *s);
extern const lpt_device_t lpt_dac_device;
extern const lpt_device_t lpt_dac_stereo_device;

View File

@@ -18,12 +18,11 @@
*/
#ifndef MACHINE_AMSTRAD_H
# define MACHINE_AMSTRAD_H
#define MACHINE_AMSTRAD_H
extern int amstrad_latch;
enum
{
enum {
AMSTRAD_NOLATCH,
AMSTRAD_SW9,
AMSTRAD_SW10

View File

@@ -38,22 +38,19 @@
*/
#ifndef MACHINE_T3100E_H
# define MACHINE_T3100E_H
#define MACHINE_T3100E_H
extern const device_t t3100e_device;
extern void t3100e_notify_set(uint8_t value);
extern void t3100e_display_set(uint8_t value);
extern uint8_t t3100e_display_get(void);
extern uint8_t t3100e_config_get(void);
extern void t3100e_turbo_set(uint8_t value);
extern uint8_t t3100e_mono_get(void);
extern void t3100e_mono_set(uint8_t value);
extern void t3100e_notify_set(uint8_t value);
extern void t3100e_display_set(uint8_t value);
extern uint8_t t3100e_display_get(void);
extern uint8_t t3100e_config_get(void);
extern void t3100e_turbo_set(uint8_t value);
extern uint8_t t3100e_mono_get(void);
extern void t3100e_mono_set(uint8_t value);
extern void t3100e_video_options_set(uint8_t options);
extern void t3100e_display_set(uint8_t internal);
extern void t3100e_video_options_set(uint8_t options);
extern void t3100e_display_set(uint8_t internal);
#endif /*MACHINE_T3100E_H*/
#endif /*MACHINE_T3100E_H*/

View File

@@ -38,24 +38,21 @@
*/
#ifndef MACHINE_T1000_H
# define MACHINE_T1000_H
#define MACHINE_T1000_H
extern const device_t t1000_video_device;
extern const device_t t1200_video_device;
extern void t1000_video_options_set(uint8_t options);
extern void t1000_video_options_set(uint8_t options);
extern void t1000_video_enable(uint8_t enabled);
extern void t1000_display_set(uint8_t internal);
extern void t1000_display_set(uint8_t internal);
extern void t1000_syskey(uint8_t amask, uint8_t omask, uint8_t xmask);
extern void t1000_syskey(uint8_t amask, uint8_t omask, uint8_t xmask);
extern void t1000_nvr_load(void);
extern void t1000_nvr_save(void);
extern void t1000_nvr_load(void);
extern void t1000_nvr_save(void);
extern void t1200_nvr_load(void);
extern void t1200_nvr_save(void);
extern void t1200_nvr_load(void);
extern void t1200_nvr_save(void);
#endif /*MACHINE_T1000_H*/
#endif /*MACHINE_T1000_H*/

View File

@@ -1,13 +1,13 @@
#ifndef MACHINE_XI80888_H
# define MACHINE_XI80888_H
#define MACHINE_XI80888_H
#include <86box/device.h>
extern const device_t xi8088_device;
uint8_t xi8088_turbo_get();
void xi8088_turbo_set(uint8_t value);
void xi8088_bios_128kb_set(int val);
int xi8088_bios_128kb();
void xi8088_turbo_set(uint8_t value);
void xi8088_bios_128kb_set(int val);
int xi8088_bios_128kb();
#endif /*MACHINE_XI80888_H*/

View File

@@ -20,7 +20,7 @@
*/
#ifndef EMU_MACHINE_H
# define EMU_MACHINE_H
#define EMU_MACHINE_H
/* Machine feature flags. */
#define MACHINE_BUS_NONE 0x00000000 /* sys has no bus */
@@ -250,78 +250,78 @@ enum {
};
typedef struct _machine_filter_ {
const char *name;
const char *name;
const char id;
} machine_filter_t;
typedef struct _machine_cpu_ {
uint32_t package;
const uint8_t *block;
uint32_t min_bus;
uint32_t max_bus;
uint16_t min_voltage;
uint16_t max_voltage;
float min_multi;
float max_multi;
uint32_t package;
const uint8_t *block;
uint32_t min_bus;
uint32_t max_bus;
uint16_t min_voltage;
uint16_t max_voltage;
float min_multi;
float max_multi;
} machine_cpu_t;
typedef struct _machine_memory_ {
uint32_t min, max;
int step;
uint32_t min, max;
int step;
} machine_memory_t;
typedef struct _machine_ {
const char *name;
const char *internal_name;
uint32_t type;
uint32_t chipset;
int (*init)(const struct _machine_ *);
uintptr_t pad, pad0, pad1, pad2;
const machine_cpu_t cpu;
uintptr_t bus_flags;
uintptr_t flags;
const char *name;
const char *internal_name;
uint32_t type;
uint32_t chipset;
int (*init)(const struct _machine_ *);
uintptr_t pad, pad0, pad1, pad2;
const machine_cpu_t cpu;
uintptr_t bus_flags;
uintptr_t flags;
const machine_memory_t ram;
int ram_granularity;
int nvrmask;
uint16_t kbc;
int ram_granularity;
int nvrmask;
uint16_t kbc;
/* Bits:
7-0 Set bits are forced set on P1 (no forced set = 0x00);
15-8 Clear bits are forced clear on P1 (no foced clear = 0xff). */
uint16_t kbc_p1;
uint32_t gpio;
uint32_t gpio_acpi;
7-0 Set bits are forced set on P1 (no forced set = 0x00);
15-8 Clear bits are forced clear on P1 (no foced clear = 0xff). */
uint16_t kbc_p1;
uint32_t gpio;
uint32_t gpio_acpi;
#ifdef EMU_DEVICE_H
const device_t *device;
const device_t *vid_device;
const device_t *snd_device;
const device_t *net_device;
#else
void *device;
void *vid_device;
void *snd_device;
void *net_device;
void *device;
void *vid_device;
void *snd_device;
void *net_device;
#endif
} machine_t;
/* Global variables. */
extern const machine_filter_t machine_types[],
machine_chipsets[];
extern const machine_t machines[];
extern int bios_only;
extern int machine;
machine_chipsets[];
extern const machine_t machines[];
extern int bios_only;
extern int machine;
/* Core functions. */
extern int machine_count(void);
extern int machine_available(int m);
extern char *machine_getname(void);
extern char *machine_getname_ex(int m);
extern char *machine_get_internal_name(void);
extern int machine_get_machine_from_internal_name(char *s);
extern void machine_init(void);
extern int machine_count(void);
extern int machine_available(int m);
extern char *machine_getname(void);
extern char *machine_getname_ex(int m);
extern char *machine_get_internal_name(void);
extern int machine_get_machine_from_internal_name(char *s);
extern void machine_init(void);
#ifdef EMU_DEVICE_H
extern const device_t *machine_getdevice(int m);
extern const device_t *machine_getdevice(int m);
#endif
extern char *machine_get_internal_name_ex(int m);
extern char *machine_get_internal_name_ex(int m);
extern int machine_get_nvrmask(int m);
extern int machine_has_flags(int m, int flags);
extern int machine_has_bus(int m, int bus_flags);
@@ -335,476 +335,474 @@ extern void machine_close(void);
extern uint8_t machine_get_p1(void);
extern void machine_load_p1(int m);
extern uint32_t machine_get_gpi(void);
extern void machine_load_gpi(int m);
extern void machine_load_gpi(int m);
extern void machine_set_gpi(uint32_t gpi);
/* Initialization functions for boards and systems. */
extern void machine_common_init(const machine_t *);
extern void machine_common_init(const machine_t *);
/* m_amstrad.c */
extern int machine_pc1512_init(const machine_t *);
extern int machine_pc1640_init(const machine_t *);
extern int machine_pc200_init(const machine_t *);
extern int machine_ppc512_init(const machine_t *);
extern int machine_pc2086_init(const machine_t *);
extern int machine_pc3086_init(const machine_t *);
extern int machine_pc1512_init(const machine_t *);
extern int machine_pc1640_init(const machine_t *);
extern int machine_pc200_init(const machine_t *);
extern int machine_ppc512_init(const machine_t *);
extern int machine_pc2086_init(const machine_t *);
extern int machine_pc3086_init(const machine_t *);
/* m_at.c */
extern void machine_at_common_init_ex(const machine_t *, int type);
extern void machine_at_common_init(const machine_t *);
extern void machine_at_init(const machine_t *);
extern void machine_at_ps2_init(const machine_t *);
extern void machine_at_common_ide_init(const machine_t *);
extern void machine_at_ibm_common_ide_init(const machine_t *);
extern void machine_at_ide_init(const machine_t *);
extern void machine_at_ps2_ide_init(const machine_t *);
extern void machine_at_common_init_ex(const machine_t *, int type);
extern void machine_at_common_init(const machine_t *);
extern void machine_at_init(const machine_t *);
extern void machine_at_ps2_init(const machine_t *);
extern void machine_at_common_ide_init(const machine_t *);
extern void machine_at_ibm_common_ide_init(const machine_t *);
extern void machine_at_ide_init(const machine_t *);
extern void machine_at_ps2_ide_init(const machine_t *);
extern int machine_at_ibm_init(const machine_t *);
extern int machine_at_ibm_init(const machine_t *);
//IBM AT with custom BIOS
extern int machine_at_ibmatami_init(const machine_t *); // IBM AT with AMI BIOS
extern int machine_at_ibmatpx_init(const machine_t *); //IBM AT with Phoenix BIOS
extern int machine_at_ibmatquadtel_init(const machine_t *); // IBM AT with Quadtel BIOS
// IBM AT with custom BIOS
extern int machine_at_ibmatami_init(const machine_t *); // IBM AT with AMI BIOS
extern int machine_at_ibmatpx_init(const machine_t *); // IBM AT with Phoenix BIOS
extern int machine_at_ibmatquadtel_init(const machine_t *); // IBM AT with Quadtel BIOS
extern int machine_at_ibmxt286_init(const machine_t *);
extern int machine_at_ibmxt286_init(const machine_t *);
extern int machine_at_siemens_init(const machine_t *); //Siemens PCD-2L. N82330 discrete machine. It segfaults in some places
extern int machine_at_siemens_init(const machine_t *); // Siemens PCD-2L. N82330 discrete machine. It segfaults in some places
#if defined(DEV_BRANCH) && defined(USE_OPEN_AT)
extern int machine_at_openat_init(const machine_t *);
extern int machine_at_openat_init(const machine_t *);
#endif
/* m_at_286_386sx.c */
extern int machine_at_tg286m_init(const machine_t *);
extern int machine_at_ama932j_init(const machine_t *);
extern int machine_at_px286_init(const machine_t *);
extern int machine_at_quadt286_init(const machine_t *);
extern int machine_at_mr286_init(const machine_t *);
extern int machine_at_tg286m_init(const machine_t *);
extern int machine_at_ama932j_init(const machine_t *);
extern int machine_at_px286_init(const machine_t *);
extern int machine_at_quadt286_init(const machine_t *);
extern int machine_at_mr286_init(const machine_t *);
extern int machine_at_neat_init(const machine_t *);
extern int machine_at_neat_ami_init(const machine_t *);
extern int machine_at_neat_init(const machine_t *);
extern int machine_at_neat_ami_init(const machine_t *);
extern int machine_at_quadt386sx_init(const machine_t *);
extern int machine_at_quadt386sx_init(const machine_t *);
extern int machine_at_award286_init(const machine_t *);
extern int machine_at_gdc212m_init(const machine_t *);
extern int machine_at_gw286ct_init(const machine_t *);
extern int machine_at_super286tr_init(const machine_t *);
extern int machine_at_spc4200p_init(const machine_t *);
extern int machine_at_spc4216p_init(const machine_t *);
extern int machine_at_spc4620p_init(const machine_t *);
extern int machine_at_kmxc02_init(const machine_t *);
extern int machine_at_deskmaster286_init(const machine_t *);
extern int machine_at_award286_init(const machine_t *);
extern int machine_at_gdc212m_init(const machine_t *);
extern int machine_at_gw286ct_init(const machine_t *);
extern int machine_at_super286tr_init(const machine_t *);
extern int machine_at_spc4200p_init(const machine_t *);
extern int machine_at_spc4216p_init(const machine_t *);
extern int machine_at_spc4620p_init(const machine_t *);
extern int machine_at_kmxc02_init(const machine_t *);
extern int machine_at_deskmaster286_init(const machine_t *);
extern int machine_at_pc8_init(const machine_t *);
extern int machine_at_3302_init(const machine_t *);
extern int machine_at_pc8_init(const machine_t *);
extern int machine_at_3302_init(const machine_t *);
#if defined(DEV_BRANCH) && defined(USE_OLIVETTI)
extern int machine_at_m290_init(const machine_t *);
extern int machine_at_m290_init(const machine_t *);
#endif
extern int machine_at_shuttle386sx_init(const machine_t *);
extern int machine_at_adi386sx_init(const machine_t *);
extern int machine_at_cmdsl386sx16_init(const machine_t *);
extern int machine_at_cmdsl386sx25_init(const machine_t *);
extern int machine_at_dataexpert386sx_init(const machine_t *);
extern int machine_at_spc6033p_init(const machine_t *);
extern int machine_at_wd76c10_init(const machine_t *);
extern int machine_at_arb1374_init(const machine_t *);
extern int machine_at_sbc350a_init(const machine_t *);
extern int machine_at_flytech386_init(const machine_t *);
extern int machine_at_mr1217_init(const machine_t *);
extern int machine_at_pja511m_init(const machine_t *);
extern int machine_at_prox1332_init(const machine_t *);
extern int machine_at_shuttle386sx_init(const machine_t *);
extern int machine_at_adi386sx_init(const machine_t *);
extern int machine_at_cmdsl386sx16_init(const machine_t *);
extern int machine_at_cmdsl386sx25_init(const machine_t *);
extern int machine_at_dataexpert386sx_init(const machine_t *);
extern int machine_at_spc6033p_init(const machine_t *);
extern int machine_at_wd76c10_init(const machine_t *);
extern int machine_at_arb1374_init(const machine_t *);
extern int machine_at_sbc350a_init(const machine_t *);
extern int machine_at_flytech386_init(const machine_t *);
extern int machine_at_mr1217_init(const machine_t *);
extern int machine_at_pja511m_init(const machine_t *);
extern int machine_at_prox1332_init(const machine_t *);
extern int machine_at_awardsx_init(const machine_t *);
extern int machine_at_awardsx_init(const machine_t *);
extern int machine_at_pc916sx_init(const machine_t *);
extern int machine_at_pc916sx_init(const machine_t *);
/* m_at_386dx_486.c */
extern int machine_at_acc386_init(const machine_t *);
extern int machine_at_asus386_init(const machine_t *);
extern int machine_at_ecs386_init(const machine_t *);
extern int machine_at_spc6000a_init(const machine_t *);
extern int machine_at_micronics386_init(const machine_t *);
extern int machine_at_acc386_init(const machine_t *);
extern int machine_at_asus386_init(const machine_t *);
extern int machine_at_ecs386_init(const machine_t *);
extern int machine_at_spc6000a_init(const machine_t *);
extern int machine_at_micronics386_init(const machine_t *);
extern int machine_at_rycleopardlx_init(const machine_t *);
extern int machine_at_rycleopardlx_init(const machine_t *);
extern int machine_at_486vchd_init(const machine_t *);
extern int machine_at_486vchd_init(const machine_t *);
extern int machine_at_cs4031_init(const machine_t *);
extern int machine_at_cs4031_init(const machine_t *);
extern int machine_at_pb410a_init(const machine_t *);
extern int machine_at_pb410a_init(const machine_t *);
extern int machine_at_decpclpv_init(const machine_t *);
extern int machine_at_acerv10_init(const machine_t *);
extern int machine_at_decpclpv_init(const machine_t *);
extern int machine_at_acerv10_init(const machine_t *);
extern int machine_at_acera1g_init(const machine_t *);
extern int machine_at_ali1429_init(const machine_t *);
extern int machine_at_winbios1429_init(const machine_t *);
extern int machine_at_acera1g_init(const machine_t *);
extern int machine_at_ali1429_init(const machine_t *);
extern int machine_at_winbios1429_init(const machine_t *);
extern int machine_at_opti495_init(const machine_t *);
extern int machine_at_opti495_ami_init(const machine_t *);
extern int machine_at_opti495_mr_init(const machine_t *);
extern int machine_at_opti495_init(const machine_t *);
extern int machine_at_opti495_ami_init(const machine_t *);
extern int machine_at_opti495_mr_init(const machine_t *);
extern int machine_at_vect486vl_init(const machine_t *);
extern int machine_at_d824_init(const machine_t *);
extern int machine_at_vect486vl_init(const machine_t *);
extern int machine_at_d824_init(const machine_t *);
extern int machine_at_403tg_init(const machine_t *);
extern int machine_at_403tg_d_init(const machine_t *);
extern int machine_at_403tg_d_mr_init(const machine_t *);
extern int machine_at_pc330_6573_init(const machine_t *);
extern int machine_at_mvi486_init(const machine_t *);
extern int machine_at_403tg_init(const machine_t *);
extern int machine_at_403tg_d_init(const machine_t *);
extern int machine_at_403tg_d_mr_init(const machine_t *);
extern int machine_at_pc330_6573_init(const machine_t *);
extern int machine_at_mvi486_init(const machine_t *);
extern int machine_at_sis401_init(const machine_t *);
extern int machine_at_isa486_init(const machine_t *);
extern int machine_at_av4_init(const machine_t *);
extern int machine_at_valuepoint433_init(const machine_t *);
extern int machine_at_sis401_init(const machine_t *);
extern int machine_at_isa486_init(const machine_t *);
extern int machine_at_av4_init(const machine_t *);
extern int machine_at_valuepoint433_init(const machine_t *);
extern int machine_at_vli486sv2g_init(const machine_t *);
extern int machine_at_ami471_init(const machine_t *);
extern int machine_at_dtk486_init(const machine_t *);
extern int machine_at_px471_init(const machine_t *);
extern int machine_at_win471_init(const machine_t *);
extern int machine_at_vi15g_init(const machine_t *);
extern int machine_at_greenb_init(const machine_t *);
extern int machine_at_vli486sv2g_init(const machine_t *);
extern int machine_at_ami471_init(const machine_t *);
extern int machine_at_dtk486_init(const machine_t *);
extern int machine_at_px471_init(const machine_t *);
extern int machine_at_win471_init(const machine_t *);
extern int machine_at_vi15g_init(const machine_t *);
extern int machine_at_greenb_init(const machine_t *);
extern int machine_at_r418_init(const machine_t *);
extern int machine_at_ls486e_init(const machine_t *);
extern int machine_at_4dps_init(const machine_t *);
extern int machine_at_4saw2_init(const machine_t *);
extern int machine_at_m4li_init(const machine_t *);
extern int machine_at_alfredo_init(const machine_t *);
extern int machine_at_ninja_init(const machine_t *);
extern int machine_at_486sp3_init(const machine_t *);
extern int machine_at_486sp3c_init(const machine_t *);
extern int machine_at_486sp3g_init(const machine_t *);
extern int machine_at_486ap4_init(const machine_t *);
extern int machine_at_g486vpa_init(const machine_t *);
extern int machine_at_486vipio2_init(const machine_t *);
extern int machine_at_abpb4_init(const machine_t *);
extern int machine_at_win486pci_init(const machine_t *);
extern int machine_at_ms4145_init(const machine_t *);
extern int machine_at_sbc490_init(const machine_t *);
extern int machine_at_tf486_init(const machine_t *);
extern int machine_at_r418_init(const machine_t *);
extern int machine_at_ls486e_init(const machine_t *);
extern int machine_at_4dps_init(const machine_t *);
extern int machine_at_4saw2_init(const machine_t *);
extern int machine_at_m4li_init(const machine_t *);
extern int machine_at_alfredo_init(const machine_t *);
extern int machine_at_ninja_init(const machine_t *);
extern int machine_at_486sp3_init(const machine_t *);
extern int machine_at_486sp3c_init(const machine_t *);
extern int machine_at_486sp3g_init(const machine_t *);
extern int machine_at_486ap4_init(const machine_t *);
extern int machine_at_g486vpa_init(const machine_t *);
extern int machine_at_486vipio2_init(const machine_t *);
extern int machine_at_abpb4_init(const machine_t *);
extern int machine_at_win486pci_init(const machine_t *);
extern int machine_at_ms4145_init(const machine_t *);
extern int machine_at_sbc490_init(const machine_t *);
extern int machine_at_tf486_init(const machine_t *);
extern int machine_at_pci400cb_init(const machine_t *);
extern int machine_at_g486ip_init(const machine_t *);
extern int machine_at_pci400cb_init(const machine_t *);
extern int machine_at_g486ip_init(const machine_t *);
extern int machine_at_itoxstar_init(const machine_t *);
extern int machine_at_arb1423c_init(const machine_t *);
extern int machine_at_arb1479_init(const machine_t *);
extern int machine_at_pcm9340_init(const machine_t *);
extern int machine_at_pcm5330_init(const machine_t *);
extern int machine_at_itoxstar_init(const machine_t *);
extern int machine_at_arb1423c_init(const machine_t *);
extern int machine_at_arb1479_init(const machine_t *);
extern int machine_at_pcm9340_init(const machine_t *);
extern int machine_at_pcm5330_init(const machine_t *);
extern int machine_at_ecs486_init(const machine_t *);
extern int machine_at_hot433_init(const machine_t *);
extern int machine_at_atc1415_init(const machine_t *);
extern int machine_at_actionpc2600_init(const machine_t *);
extern int machine_at_m919_init(const machine_t *);
extern int machine_at_spc7700plw_init(const machine_t *);
extern int machine_at_ecs486_init(const machine_t *);
extern int machine_at_hot433_init(const machine_t *);
extern int machine_at_atc1415_init(const machine_t *);
extern int machine_at_actionpc2600_init(const machine_t *);
extern int machine_at_m919_init(const machine_t *);
extern int machine_at_spc7700plw_init(const machine_t *);
/* m_at_commodore.c */
extern int machine_at_cmdpc_init(const machine_t *);
extern int machine_at_cmdpc_init(const machine_t *);
/* m_at_compaq.c */
extern int machine_at_portableii_init(const machine_t *);
extern int machine_at_portableiii_init(const machine_t *);
extern int machine_at_portableiii386_init(const machine_t *);
extern int machine_at_portableii_init(const machine_t *);
extern int machine_at_portableiii_init(const machine_t *);
extern int machine_at_portableiii386_init(const machine_t *);
#if defined(DEV_BRANCH) && defined(USE_DESKPRO386)
extern int machine_at_deskpro386_init(const machine_t *);
extern int machine_at_deskpro386_init(const machine_t *);
#endif
/* m_at_socket4.c */
extern void machine_at_premiere_common_init(const machine_t *, int);
extern void machine_at_award_common_init(const machine_t *);
extern void machine_at_premiere_common_init(const machine_t *, int);
extern void machine_at_award_common_init(const machine_t *);
extern void machine_at_sp4_common_init(const machine_t *model);
extern void machine_at_sp4_common_init(const machine_t *model);
extern int machine_at_excaliburpci_init(const machine_t *);
extern int machine_at_p5mp3_init(const machine_t *);
extern int machine_at_dellxp60_init(const machine_t *);
extern int machine_at_opti560l_init(const machine_t *);
extern int machine_at_ambradp60_init(const machine_t *);
extern int machine_at_valuepointp60_init(const machine_t *);
extern int machine_at_revenge_init(const machine_t *);
extern int machine_at_586mc1_init(const machine_t *);
extern int machine_at_pb520r_init(const machine_t *);
extern int machine_at_excaliburpci_init(const machine_t *);
extern int machine_at_p5mp3_init(const machine_t *);
extern int machine_at_dellxp60_init(const machine_t *);
extern int machine_at_opti560l_init(const machine_t *);
extern int machine_at_ambradp60_init(const machine_t *);
extern int machine_at_valuepointp60_init(const machine_t *);
extern int machine_at_revenge_init(const machine_t *);
extern int machine_at_586mc1_init(const machine_t *);
extern int machine_at_pb520r_init(const machine_t *);
extern int machine_at_excalibur_init(const machine_t *);
extern int machine_at_excalibur_init(const machine_t *);
extern int machine_at_p5vl_init(const machine_t *);
extern int machine_at_p5vl_init(const machine_t *);
extern int machine_at_excaliburpci2_init(const machine_t *);
extern int machine_at_p5sp4_init(const machine_t *);
extern int machine_at_excaliburpci2_init(const machine_t *);
extern int machine_at_p5sp4_init(const machine_t *);
/* m_at_socket5.c */
extern int machine_at_plato_init(const machine_t *);
extern int machine_at_ambradp90_init(const machine_t *);
extern int machine_at_430nx_init(const machine_t *);
extern int machine_at_plato_init(const machine_t *);
extern int machine_at_ambradp90_init(const machine_t *);
extern int machine_at_430nx_init(const machine_t *);
extern int machine_at_acerv30_init(const machine_t *);
extern int machine_at_apollo_init(const machine_t *);
extern int machine_at_exp8551_init(const machine_t *);
extern int machine_at_zappa_init(const machine_t *);
extern int machine_at_powermatev_init(const machine_t *);
extern int machine_at_mb500n_init(const machine_t *);
extern int machine_at_hawk_init(const machine_t *);
extern int machine_at_acerv30_init(const machine_t *);
extern int machine_at_apollo_init(const machine_t *);
extern int machine_at_exp8551_init(const machine_t *);
extern int machine_at_zappa_init(const machine_t *);
extern int machine_at_powermatev_init(const machine_t *);
extern int machine_at_mb500n_init(const machine_t *);
extern int machine_at_hawk_init(const machine_t *);
extern int machine_at_pat54pv_init(const machine_t *);
extern int machine_at_pat54pv_init(const machine_t *);
extern int machine_at_hot543_init(const machine_t *);
extern int machine_at_p54sp4_init(const machine_t *);
extern int machine_at_sq588_init(const machine_t *);
extern int machine_at_hot543_init(const machine_t *);
extern int machine_at_p54sp4_init(const machine_t *);
extern int machine_at_sq588_init(const machine_t *);
/* m_at_socket7_3v.c */
extern int machine_at_p54tp4xe_init(const machine_t *);
extern int machine_at_p54tp4xe_mr_init(const machine_t *);
extern int machine_at_gw2katx_init(const machine_t *);
extern int machine_at_thor_init(const machine_t *);
extern int machine_at_mrthor_init(const machine_t *);
extern int machine_at_endeavor_init(const machine_t *);
extern int machine_at_ms5119_init(const machine_t *);
extern int machine_at_pb640_init(const machine_t *);
extern int machine_at_fmb_init(const machine_t *);
extern int machine_at_p54tp4xe_init(const machine_t *);
extern int machine_at_p54tp4xe_mr_init(const machine_t *);
extern int machine_at_gw2katx_init(const machine_t *);
extern int machine_at_thor_init(const machine_t *);
extern int machine_at_mrthor_init(const machine_t *);
extern int machine_at_endeavor_init(const machine_t *);
extern int machine_at_ms5119_init(const machine_t *);
extern int machine_at_pb640_init(const machine_t *);
extern int machine_at_fmb_init(const machine_t *);
extern int machine_at_acerm3a_init(const machine_t *);
extern int machine_at_ap53_init(const machine_t *);
extern int machine_at_8500tuc_init(const machine_t *);
extern int machine_at_p55t2s_init(const machine_t *);
extern int machine_at_acerm3a_init(const machine_t *);
extern int machine_at_ap53_init(const machine_t *);
extern int machine_at_8500tuc_init(const machine_t *);
extern int machine_at_p55t2s_init(const machine_t *);
extern int machine_at_p5vxb_init(const machine_t *);
extern int machine_at_gw2kte_init(const machine_t *);
extern int machine_at_p5vxb_init(const machine_t *);
extern int machine_at_gw2kte_init(const machine_t *);
extern int machine_at_ap5s_init(const machine_t *);
extern int machine_at_vectra54_init(const machine_t *);
extern int machine_at_ap5s_init(const machine_t *);
extern int machine_at_vectra54_init(const machine_t *);
/* m_at_socket7.c */
extern int machine_at_acerv35n_init(const machine_t *);
extern int machine_at_p55t2p4_init(const machine_t *);
extern int machine_at_m7shi_init(const machine_t *);
extern int machine_at_tc430hx_init(const machine_t *);
extern int machine_at_equium5200_init(const machine_t *);
extern int machine_at_pcv90_init(const machine_t *);
extern int machine_at_p65up5_cp55t2d_init(const machine_t *);
extern int machine_at_acerv35n_init(const machine_t *);
extern int machine_at_p55t2p4_init(const machine_t *);
extern int machine_at_m7shi_init(const machine_t *);
extern int machine_at_tc430hx_init(const machine_t *);
extern int machine_at_equium5200_init(const machine_t *);
extern int machine_at_pcv90_init(const machine_t *);
extern int machine_at_p65up5_cp55t2d_init(const machine_t *);
extern int machine_at_ap5vm_init(const machine_t *);
extern int machine_at_p55tvp4_init(const machine_t *);
extern int machine_at_5ivg_init(const machine_t *);
extern int machine_at_8500tvxa_init(const machine_t *);
extern int machine_at_presario2240_init(const machine_t *);
extern int machine_at_presario4500_init(const machine_t *);
extern int machine_at_p55va_init(const machine_t *);
extern int machine_at_brio80xx_init(const machine_t *);
extern int machine_at_pb680_init(const machine_t *);
extern int machine_at_mb520n_init(const machine_t *);
extern int machine_at_i430vx_init(const machine_t *);
extern int machine_at_ap5vm_init(const machine_t *);
extern int machine_at_p55tvp4_init(const machine_t *);
extern int machine_at_5ivg_init(const machine_t *);
extern int machine_at_8500tvxa_init(const machine_t *);
extern int machine_at_presario2240_init(const machine_t *);
extern int machine_at_presario4500_init(const machine_t *);
extern int machine_at_p55va_init(const machine_t *);
extern int machine_at_brio80xx_init(const machine_t *);
extern int machine_at_pb680_init(const machine_t *);
extern int machine_at_mb520n_init(const machine_t *);
extern int machine_at_i430vx_init(const machine_t *);
extern int machine_at_nupro592_init(const machine_t *);
extern int machine_at_tx97_init(const machine_t *);
extern int machine_at_nupro592_init(const machine_t *);
extern int machine_at_tx97_init(const machine_t *);
#if defined(DEV_BRANCH) && defined(USE_AN430TX)
extern int machine_at_an430tx_init(const machine_t *);
extern int machine_at_an430tx_init(const machine_t *);
#endif
extern int machine_at_ym430tx_init(const machine_t *);
extern int machine_at_mb540n_init(const machine_t *);
extern int machine_at_56a5_init(const machine_t *);
extern int machine_at_p5mms98_init(const machine_t *);
extern int machine_at_ym430tx_init(const machine_t *);
extern int machine_at_mb540n_init(const machine_t *);
extern int machine_at_56a5_init(const machine_t *);
extern int machine_at_p5mms98_init(const machine_t *);
extern int machine_at_ficva502_init(const machine_t *);
extern int machine_at_ficva502_init(const machine_t *);
extern int machine_at_ficpa2012_init(const machine_t *);
extern int machine_at_ficpa2012_init(const machine_t *);
extern int machine_at_r534f_init(const machine_t *);
extern int machine_at_ms5146_init(const machine_t *);
extern int machine_at_r534f_init(const machine_t *);
extern int machine_at_ms5146_init(const machine_t *);
extern int machine_at_m560_init(const machine_t *);
extern int machine_at_ms5164_init(const machine_t *);
extern int machine_at_m560_init(const machine_t *);
extern int machine_at_ms5164_init(const machine_t *);
/* m_at_sockets7.c */
extern int machine_at_p5a_init(const machine_t *);
extern int machine_at_m579_init(const machine_t *);
extern int machine_at_5aa_init(const machine_t *);
extern int machine_at_5ax_init(const machine_t *);
extern int machine_at_p5a_init(const machine_t *);
extern int machine_at_m579_init(const machine_t *);
extern int machine_at_5aa_init(const machine_t *);
extern int machine_at_5ax_init(const machine_t *);
extern int machine_at_ax59pro_init(const machine_t *);
extern int machine_at_mvp3_init(const machine_t *);
extern int machine_at_ficva503a_init(const machine_t *);
extern int machine_at_5emapro_init(const machine_t *);
extern int machine_at_ax59pro_init(const machine_t *);
extern int machine_at_mvp3_init(const machine_t *);
extern int machine_at_ficva503a_init(const machine_t *);
extern int machine_at_5emapro_init(const machine_t *);
/* m_at_socket8.c */
extern int machine_at_p6rp4_init(const machine_t *);
extern int machine_at_aurora_init(const machine_t *);
extern int machine_at_p6rp4_init(const machine_t *);
extern int machine_at_aurora_init(const machine_t *);
extern int machine_at_686nx_init(const machine_t *);
extern int machine_at_acerv60n_init(const machine_t *);
extern int machine_at_vs440fx_init(const machine_t *);
extern int machine_at_ap440fx_init(const machine_t *);
extern int machine_at_mb600n_init(const machine_t *);
extern int machine_at_8600ttc_init(const machine_t *);
extern int machine_at_m6mi_init(const machine_t *);
extern int machine_at_686nx_init(const machine_t *);
extern int machine_at_acerv60n_init(const machine_t *);
extern int machine_at_vs440fx_init(const machine_t *);
extern int machine_at_ap440fx_init(const machine_t *);
extern int machine_at_mb600n_init(const machine_t *);
extern int machine_at_8600ttc_init(const machine_t *);
extern int machine_at_m6mi_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern void machine_at_p65up5_common_init(const machine_t *, const device_t *northbridge);
extern void machine_at_p65up5_common_init(const machine_t *, const device_t *northbridge);
#endif
extern int machine_at_p65up5_cp6nd_init(const machine_t *);
extern int machine_at_p65up5_cp6nd_init(const machine_t *);
/* m_at_slot1.c */
extern int machine_at_m729_init(const machine_t *);
extern int machine_at_m729_init(const machine_t *);
extern int machine_at_p65up5_cpknd_init(const machine_t *);
extern int machine_at_kn97_init(const machine_t *);
extern int machine_at_p65up5_cpknd_init(const machine_t *);
extern int machine_at_kn97_init(const machine_t *);
extern int machine_at_lx6_init(const machine_t *);
extern int machine_at_spitfire_init(const machine_t *);
extern int machine_at_lx6_init(const machine_t *);
extern int machine_at_spitfire_init(const machine_t *);
extern int machine_at_p6i440e2_init(const machine_t *);
extern int machine_at_p6i440e2_init(const machine_t *);
extern int machine_at_p2bls_init(const machine_t *);
extern int machine_at_p3bf_init(const machine_t *);
extern int machine_at_bf6_init(const machine_t *);
extern int machine_at_ax6bc_init(const machine_t *);
extern int machine_at_atc6310bxii_init(const machine_t *);
extern int machine_at_686bx_init(const machine_t *);
extern int machine_at_s1846_init(const machine_t *);
extern int machine_at_p6sba_init(const machine_t *);
extern int machine_at_ficka6130_init(const machine_t *);
extern int machine_at_p3v133_init(const machine_t *);
extern int machine_at_p3v4x_init(const machine_t *);
extern int machine_at_p2bls_init(const machine_t *);
extern int machine_at_p3bf_init(const machine_t *);
extern int machine_at_bf6_init(const machine_t *);
extern int machine_at_ax6bc_init(const machine_t *);
extern int machine_at_atc6310bxii_init(const machine_t *);
extern int machine_at_686bx_init(const machine_t *);
extern int machine_at_s1846_init(const machine_t *);
extern int machine_at_p6sba_init(const machine_t *);
extern int machine_at_ficka6130_init(const machine_t *);
extern int machine_at_p3v133_init(const machine_t *);
extern int machine_at_p3v4x_init(const machine_t *);
extern int machine_at_vei8_init(const machine_t *);
extern int machine_at_vei8_init(const machine_t *);
extern int machine_at_borapro_init(const machine_t *);
extern int machine_at_ms6168_init(const machine_t *);
extern int machine_at_borapro_init(const machine_t *);
extern int machine_at_ms6168_init(const machine_t *);
/* m_at_slot2.c */
extern int machine_at_6gxu_init(const machine_t *);
extern int machine_at_s2dge_init(const machine_t *);
extern int machine_at_fw6400gx_init(const machine_t *);
extern int machine_at_6gxu_init(const machine_t *);
extern int machine_at_s2dge_init(const machine_t *);
extern int machine_at_fw6400gx_init(const machine_t *);
/* m_at_socket370.c */
extern int machine_at_s370slm_init(const machine_t *);
extern int machine_at_s370slm_init(const machine_t *);
extern int machine_at_cubx_init(const machine_t *);
extern int machine_at_atc7020bxii_init(const machine_t *);
extern int machine_at_ambx133_init(const machine_t *);
extern int machine_at_awo671r_init(const machine_t *);
extern int machine_at_63a1_init(const machine_t *);
extern int machine_at_s370sba_init(const machine_t *);
extern int machine_at_apas3_init(const machine_t *);
extern int machine_at_gt694va_init(const machine_t *);
extern int machine_at_cuv4xls_init(const machine_t *);
extern int machine_at_6via90ap_init(const machine_t *);
extern int machine_at_s1857_init(const machine_t *);
extern int machine_at_p6bap_init(const machine_t *);
extern int machine_at_cubx_init(const machine_t *);
extern int machine_at_atc7020bxii_init(const machine_t *);
extern int machine_at_ambx133_init(const machine_t *);
extern int machine_at_awo671r_init(const machine_t *);
extern int machine_at_63a1_init(const machine_t *);
extern int machine_at_s370sba_init(const machine_t *);
extern int machine_at_apas3_init(const machine_t *);
extern int machine_at_gt694va_init(const machine_t *);
extern int machine_at_cuv4xls_init(const machine_t *);
extern int machine_at_6via90ap_init(const machine_t *);
extern int machine_at_s1857_init(const machine_t *);
extern int machine_at_p6bap_init(const machine_t *);
/* m_at_misc.c */
extern int machine_at_vpc2007_init(const machine_t *);
extern int machine_at_vpc2007_init(const machine_t *);
/* m_at_t3100e.c */
extern int machine_at_t3100e_init(const machine_t *);
extern int machine_at_t3100e_init(const machine_t *);
/* m_europc.c */
extern int machine_europc_init(const machine_t *);
extern int machine_europc_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t europc_device;
#endif
/* m_xt_olivetti.c */
extern int machine_xt_m24_init(const machine_t *);
extern int machine_xt_m240_init(const machine_t *);
extern int machine_xt_m19_init(const machine_t *);
extern int machine_xt_m24_init(const machine_t *);
extern int machine_xt_m240_init(const machine_t *);
extern int machine_xt_m19_init(const machine_t *);
/* m_pcjr.c */
extern int machine_pcjr_init(const machine_t *);
extern int machine_pcjr_init(const machine_t *);
/* m_ps1.c */
extern int machine_ps1_m2011_init(const machine_t *);
extern int machine_ps1_m2121_init(const machine_t *);
extern int machine_ps1_m2011_init(const machine_t *);
extern int machine_ps1_m2121_init(const machine_t *);
/* m_ps1_hdc.c */
#ifdef EMU_DEVICE_H
extern void ps1_hdc_inform(void *, uint8_t *);
extern void ps1_hdc_inform(void *, uint8_t *);
extern const device_t ps1_hdc_device;
#endif
/* m_ps2_isa.c */
extern int machine_ps2_m30_286_init(const machine_t *);
extern int machine_ps2_m30_286_init(const machine_t *);
/* m_ps2_mca.c */
extern int machine_ps2_model_50_init(const machine_t *);
extern int machine_ps2_model_60_init(const machine_t *);
extern int machine_ps2_model_55sx_init(const machine_t *);
extern int machine_ps2_model_65sx_init(const machine_t *);
extern int machine_ps2_model_70_type3_init(const machine_t *);
extern int machine_ps2_model_80_init(const machine_t *);
extern int machine_ps2_model_80_axx_init(const machine_t *);
extern int machine_ps2_model_50_init(const machine_t *);
extern int machine_ps2_model_60_init(const machine_t *);
extern int machine_ps2_model_55sx_init(const machine_t *);
extern int machine_ps2_model_65sx_init(const machine_t *);
extern int machine_ps2_model_70_type3_init(const machine_t *);
extern int machine_ps2_model_80_init(const machine_t *);
extern int machine_ps2_model_80_axx_init(const machine_t *);
/* m_tandy.c */
extern int tandy1k_eeprom_read(void);
extern int machine_tandy_init(const machine_t *);
extern int machine_tandy1000hx_init(const machine_t *);
extern int machine_tandy1000sl2_init(const machine_t *);
extern int tandy1k_eeprom_read(void);
extern int machine_tandy_init(const machine_t *);
extern int machine_tandy1000hx_init(const machine_t *);
extern int machine_tandy1000sl2_init(const machine_t *);
/* m_v86p.c */
extern int machine_v86p_init(const machine_t *);
extern int machine_v86p_init(const machine_t *);
/* m_xt.c */
extern int machine_pc_init(const machine_t *);
extern int machine_pc82_init(const machine_t *);
extern int machine_pc_init(const machine_t *);
extern int machine_pc82_init(const machine_t *);
extern int machine_xt_init(const machine_t *);
extern int machine_genxt_init(const machine_t *);
extern int machine_xt_init(const machine_t *);
extern int machine_genxt_init(const machine_t *);
extern int machine_xt86_init(const machine_t *);
extern int machine_xt86_init(const machine_t *);
extern int machine_xt_americxt_init(const machine_t *);
extern int machine_xt_amixt_init(const machine_t *);
extern int machine_xt_dtk_init(const machine_t *);
extern int machine_xt_jukopc_init(const machine_t *);
extern int machine_xt_openxt_init(const machine_t *);
extern int machine_xt_pcxt_init(const machine_t *);
extern int machine_xt_pxxt_init(const machine_t *);
extern int machine_xt_pc4i_init(const machine_t *);
extern int machine_xt_mpc1600_init(const machine_t *);
extern int machine_xt_pcspirit_init(const machine_t *);
extern int machine_xt_pc700_init(const machine_t *);
extern int machine_xt_pc500_init(const machine_t *);
extern int machine_xt_vendex_init(const machine_t *);
extern int machine_xt_znic_init(const machine_t *);
extern int machine_xt_super16t_init(const machine_t *);
extern int machine_xt_super16te_init(const machine_t *);
extern int machine_xt_top88_init(const machine_t *);
extern int machine_xt_kaypropc_init(const machine_t *);
extern int machine_xt_sansx16_init(const machine_t *);
extern int machine_xt_bw230_init(const machine_t *);
extern int machine_xt_americxt_init(const machine_t *);
extern int machine_xt_amixt_init(const machine_t *);
extern int machine_xt_dtk_init(const machine_t *);
extern int machine_xt_jukopc_init(const machine_t *);
extern int machine_xt_openxt_init(const machine_t *);
extern int machine_xt_pcxt_init(const machine_t *);
extern int machine_xt_pxxt_init(const machine_t *);
extern int machine_xt_pc4i_init(const machine_t *);
extern int machine_xt_mpc1600_init(const machine_t *);
extern int machine_xt_pcspirit_init(const machine_t *);
extern int machine_xt_pc700_init(const machine_t *);
extern int machine_xt_pc500_init(const machine_t *);
extern int machine_xt_vendex_init(const machine_t *);
extern int machine_xt_znic_init(const machine_t *);
extern int machine_xt_super16t_init(const machine_t *);
extern int machine_xt_super16te_init(const machine_t *);
extern int machine_xt_top88_init(const machine_t *);
extern int machine_xt_kaypropc_init(const machine_t *);
extern int machine_xt_sansx16_init(const machine_t *);
extern int machine_xt_bw230_init(const machine_t *);
extern int machine_xt_iskra3104_init(const machine_t *);
extern int machine_xt_iskra3104_init(const machine_t *);
/* m_xt_compaq.c */
extern int machine_xt_compaq_deskpro_init(const machine_t *);
extern int machine_xt_compaq_portable_init(const machine_t *);
extern int machine_xt_compaq_deskpro_init(const machine_t *);
extern int machine_xt_compaq_portable_init(const machine_t *);
/* m_xt_laserxt.c */
#if defined(DEV_BRANCH) && defined(USE_LASERXT)
extern int machine_xt_laserxt_init(const machine_t *);
extern int machine_xt_lxt3_init(const machine_t *);
extern int machine_xt_laserxt_init(const machine_t *);
extern int machine_xt_lxt3_init(const machine_t *);
#endif
/* m_xt_philips.c */
extern int machine_xt_p3105_init(const machine_t *);
extern int machine_xt_p3120_init(const machine_t *);
extern int machine_xt_p3105_init(const machine_t *);
extern int machine_xt_p3120_init(const machine_t *);
/* m_xt_t1000.c */
extern int machine_xt_t1000_init(const machine_t *);
extern int machine_xt_t1200_init(const machine_t *);
extern int machine_xt_t1000_init(const machine_t *);
extern int machine_xt_t1200_init(const machine_t *);
/* m_xt_zenith.c */
extern int machine_xt_z184_init(const machine_t *);
extern int machine_xt_z151_init(const machine_t *);
extern int machine_xt_z159_init(const machine_t *);
extern int machine_xt_z184_init(const machine_t *);
extern int machine_xt_z151_init(const machine_t *);
extern int machine_xt_z159_init(const machine_t *);
/* m_xt_xi8088.c */
extern int machine_xt_xi8088_init(const machine_t *);
extern int machine_xt_xi8088_init(const machine_t *);
#endif /*EMU_MACHINE_H*/
#endif /*EMU_MACHINE_H*/

View File

@@ -18,75 +18,71 @@
*/
#ifndef EMU_MOUSE_H
# define EMU_MOUSE_H
#define EMU_MOUSE_H
#define MOUSE_TYPE_NONE 0 /* no mouse configured */
#define MOUSE_TYPE_INTERNAL 1 /* machine has internal mouse */
#define MOUSE_TYPE_LOGIBUS 2 /* Logitech/ATI Bus Mouse */
#define MOUSE_TYPE_INPORT 3 /* Microsoft InPort Mouse */
#define MOUSE_TYPE_NONE 0 /* no mouse configured */
#define MOUSE_TYPE_INTERNAL 1 /* machine has internal mouse */
#define MOUSE_TYPE_LOGIBUS 2 /* Logitech/ATI Bus Mouse */
#define MOUSE_TYPE_INPORT 3 /* Microsoft InPort Mouse */
#if 0
# define MOUSE_TYPE_GENIBUS 4 /* Genius Bus Mouse */
# define MOUSE_TYPE_GENIBUS 4 /* Genius Bus Mouse */
#endif
#define MOUSE_TYPE_MSYSTEMS 5 /* Mouse Systems mouse */
#define MOUSE_TYPE_MICROSOFT 6 /* Microsoft 2-button Serial Mouse */
#define MOUSE_TYPE_MS3BUTTON 7 /* Microsoft 3-button Serial Mouse */
#define MOUSE_TYPE_MSWHEEL 8 /* Microsoft Serial Wheel Mouse */
#define MOUSE_TYPE_LOGITECH 9 /* Logitech 2-button Serial Mouse */
#define MOUSE_TYPE_LT3BUTTON 10 /* Logitech 3-button Serial Mouse */
#define MOUSE_TYPE_PS2 11 /* PS/2 series Bus Mouse */
#define MOUSE_TYPE_ONBOARD 0x80 /* Mouse is an on-board version of one of the above. */
#define MOUSE_TYPE_MSYSTEMS 5 /* Mouse Systems mouse */
#define MOUSE_TYPE_MICROSOFT 6 /* Microsoft 2-button Serial Mouse */
#define MOUSE_TYPE_MS3BUTTON 7 /* Microsoft 3-button Serial Mouse */
#define MOUSE_TYPE_MSWHEEL 8 /* Microsoft Serial Wheel Mouse */
#define MOUSE_TYPE_LOGITECH 9 /* Logitech 2-button Serial Mouse */
#define MOUSE_TYPE_LT3BUTTON 10 /* Logitech 3-button Serial Mouse */
#define MOUSE_TYPE_PS2 11 /* PS/2 series Bus Mouse */
#define MOUSE_TYPE_ONBOARD 0x80 /* Mouse is an on-board version of one of the above. */
#ifdef __cplusplus
extern "C" {
#endif
extern int mouse_type;
extern int mouse_x, mouse_y, mouse_z;
extern int mouse_buttons;
extern int mouse_type;
extern int mouse_x, mouse_y, mouse_z;
extern int mouse_buttons;
#ifdef EMU_DEVICE_H
extern const device_t *mouse_get_device(int mouse);
extern void *mouse_ps2_init(const device_t *);
extern const device_t *mouse_get_device(int mouse);
extern void *mouse_ps2_init(const device_t *);
extern const device_t mouse_logibus_device;
extern const device_t mouse_logibus_onboard_device;
extern const device_t mouse_msinport_device;
#if 0
extern const device_t mouse_logibus_device;
extern const device_t mouse_logibus_onboard_device;
extern const device_t mouse_msinport_device;
# if 0
extern const device_t mouse_genibus_device;
#endif
extern const device_t mouse_mssystems_device;
extern const device_t mouse_msserial_device;
extern const device_t mouse_ltserial_device;
extern const device_t mouse_ps2_device;
# endif
extern const device_t mouse_mssystems_device;
extern const device_t mouse_msserial_device;
extern const device_t mouse_ltserial_device;
extern const device_t mouse_ps2_device;
#endif
extern void mouse_init(void);
extern void mouse_close(void);
extern void mouse_reset(void);
extern void mouse_set_buttons(int buttons);
extern void mouse_process(void);
extern void mouse_set_poll(int (*f)(int,int,int,int,void *), void *);
extern void mouse_poll(void);
extern void mouse_init(void);
extern void mouse_close(void);
extern void mouse_reset(void);
extern void mouse_set_buttons(int buttons);
extern void mouse_process(void);
extern void mouse_set_poll(int (*f)(int, int, int, int, void *), void *);
extern void mouse_poll(void);
extern void mouse_bus_set_irq(void *priv, int irq);
extern void mouse_bus_set_irq(void *priv, int irq);
extern char *mouse_get_name(int mouse);
extern char *mouse_get_internal_name(int mouse);
extern int mouse_get_from_internal_name(char *s);
extern int mouse_has_config(int mouse);
extern int mouse_get_type(int mouse);
extern int mouse_get_ndev(void);
extern int mouse_get_buttons(void);
extern char *mouse_get_name(int mouse);
extern char *mouse_get_internal_name(int mouse);
extern int mouse_get_from_internal_name(char *s);
extern int mouse_has_config(int mouse);
extern int mouse_get_type(int mouse);
extern int mouse_get_ndev(void);
extern int mouse_get_buttons(void);
extern void mouse_clear_data(void *priv);
extern void mouse_clear_data(void *priv);
#ifdef __cplusplus
}
#endif
#endif /*EMU_MOUSE_H*/
#endif /*EMU_MOUSE_H*/

View File

@@ -21,84 +21,80 @@
*/
#ifndef EMU_SERIAL_H
# define EMU_SERIAL_H
#define EMU_SERIAL_H
#define SERIAL_8250 0
#define SERIAL_8250_PCJR 1
#define SERIAL_16450 2
#define SERIAL_16550 3
#define SERIAL_16650 4
#define SERIAL_16750 5
#define SERIAL_16850 6
#define SERIAL_16950 7
#define SERIAL_8250 0
#define SERIAL_8250_PCJR 1
#define SERIAL_16450 2
#define SERIAL_16550 3
#define SERIAL_16650 4
#define SERIAL_16750 5
#define SERIAL_16850 6
#define SERIAL_16950 7
#define SERIAL_FIFO_SIZE 16
#define SERIAL_FIFO_SIZE 16
/* Default settings for the standard ports. */
#define COM1_ADDR 0x03f8
#define COM1_IRQ 4
#define COM2_ADDR 0x02f8
#define COM2_IRQ 3
#define COM3_ADDR 0x03e8
#define COM3_IRQ 4
#define COM4_ADDR 0x02e8
#define COM4_IRQ 3
#define COM1_ADDR 0x03f8
#define COM1_IRQ 4
#define COM2_ADDR 0x02f8
#define COM2_IRQ 3
#define COM3_ADDR 0x03e8
#define COM3_IRQ 4
#define COM4_ADDR 0x02e8
#define COM4_IRQ 3
struct serial_device_s;
struct serial_s;
typedef struct serial_s
{
typedef struct serial_s {
uint8_t lsr, thr, mctrl, rcr,
iir, ier, lcr, msr,
dat, int_status, scratch, fcr,
irq, type, inst, transmit_enabled,
fifo_enabled, rcvr_fifo_len, bits, data_bits,
baud_cycles, rcvr_fifo_full, txsr, pad;
iir, ier, lcr, msr,
dat, int_status, scratch, fcr,
irq, type, inst, transmit_enabled,
fifo_enabled, rcvr_fifo_len, bits, data_bits,
baud_cycles, rcvr_fifo_full, txsr, pad;
uint16_t dlab, base_address;
uint8_t rcvr_fifo_pos, xmit_fifo_pos,
pad0, pad1,
rcvr_fifo[SERIAL_FIFO_SIZE], xmit_fifo[SERIAL_FIFO_SIZE];
pad0, pad1,
rcvr_fifo[SERIAL_FIFO_SIZE], xmit_fifo[SERIAL_FIFO_SIZE];
pc_timer_t transmit_timer, timeout_timer;
double clock_src, transmit_period;
double clock_src, transmit_period;
struct serial_device_s *sd;
struct serial_device_s *sd;
} serial_t;
typedef struct serial_device_s
{
typedef struct serial_device_s {
void (*rcr_callback)(struct serial_s *serial, void *p);
void (*dev_write)(struct serial_s *serial, void *p, uint8_t data);
void *priv;
void *priv;
serial_t *serial;
} serial_device_t;
extern serial_t *serial_attach(int port,
void (*rcr_callback)(struct serial_s *serial, void *p),
void (*dev_write)(struct serial_s *serial, void *p, uint8_t data),
void *priv);
extern void serial_remove(serial_t *dev);
extern void serial_set_type(serial_t *dev, int type);
extern void serial_setup(serial_t *dev, uint16_t addr, uint8_t irq);
extern void serial_clear_fifo(serial_t *dev);
extern void serial_write_fifo(serial_t *dev, uint8_t dat);
extern void serial_set_next_inst(int ni);
extern void serial_standalone_init(void);
extern void serial_set_clock_src(serial_t *dev, double clock_src);
extern void serial_reset_port(serial_t *dev);
extern serial_t * serial_attach(int port,
void (*rcr_callback)(struct serial_s *serial, void *p),
void (*dev_write)(struct serial_s *serial, void *p, uint8_t data),
void *priv);
extern void serial_remove(serial_t *dev);
extern void serial_set_type(serial_t *dev, int type);
extern void serial_setup(serial_t *dev, uint16_t addr, uint8_t irq);
extern void serial_clear_fifo(serial_t *dev);
extern void serial_write_fifo(serial_t *dev, uint8_t dat);
extern void serial_set_next_inst(int ni);
extern void serial_standalone_init(void);
extern void serial_set_clock_src(serial_t *dev, double clock_src);
extern void serial_reset_port(serial_t *dev);
extern const device_t ns8250_device;
extern const device_t ns8250_pcjr_device;
extern const device_t ns16450_device;
extern const device_t ns16550_device;
extern const device_t ns16650_device;
extern const device_t ns16750_device;
extern const device_t ns16850_device;
extern const device_t ns16950_device;
extern const device_t ns8250_device;
extern const device_t ns8250_pcjr_device;
extern const device_t ns16450_device;
extern const device_t ns16550_device;
extern const device_t ns16650_device;
extern const device_t ns16750_device;
extern const device_t ns16850_device;
extern const device_t ns16950_device;
#endif /*EMU_SERIAL_H*/
#endif /*EMU_SERIAL_H*/

View File

@@ -31,12 +31,12 @@ enum fm_driver {
};
typedef struct {
uint8_t (*read)(uint16_t port, void *priv);
void (*write)(uint16_t port, uint8_t val, void *priv);
int32_t * (*update)(void *priv);
uint8_t (*read)(uint16_t port, void *priv);
void (*write)(uint16_t port, uint8_t val, void *priv);
int32_t *(*update)(void *priv);
void (*reset_buffer)(void *priv);
void (*set_do_cycles)(void *priv, int8_t do_cycles);
void *priv;
void (*set_do_cycles)(void *priv, int8_t do_cycles);
void *priv;
} fm_drv_t;
extern uint8_t fm_driver_get(int chip_id, fm_drv_t *drv);

View File

@@ -20,5 +20,4 @@
#ifndef SOUND_OPL_NUKED_H
#define SOUND_OPL_NUKED_H
#endif /*SOUND_OPL_NUKED_H*/

View File

@@ -121,14 +121,14 @@ typedef struct sb_ct1745_mixer_t {
uint8_t index;
uint8_t regs[256];
int output_filter; /* for clones */
int output_filter; /* for clones */
} sb_ct1745_mixer_t;
typedef struct sb_t {
uint8_t cms_enabled,
opl_enabled,
mixer_enabled;
cms_t cms;
cms_t cms;
fm_drv_t opl,
opl2;
sb_dsp_t dsp;
@@ -153,9 +153,9 @@ extern void sb_ct1345_mixer_write(uint16_t addr, uint8_t val, void *p);
extern uint8_t sb_ct1345_mixer_read(uint16_t addr, void *p);
extern void sb_ct1345_mixer_reset(sb_t *sb);
extern void sb_ct1745_mixer_write(uint16_t addr, uint8_t val, void *p);
extern void sb_ct1745_mixer_write(uint16_t addr, uint8_t val, void *p);
extern uint8_t sb_ct1745_mixer_read(uint16_t addr, void *p);
extern void sb_ct1745_mixer_reset(sb_t* sb);
extern void sb_ct1745_mixer_reset(sb_t *sb);
extern void sb_get_buffer_sbpro(int32_t *buffer, int len, void *p);
extern void sbpro_filter_cd_audio(int channel, double *buffer, void *p);

View File

@@ -42,7 +42,7 @@ typedef struct sb_dsp_t {
int sb_irqnum;
void (*irq_update)(void *priv, int set),
*irq_priv;
*irq_priv;
uint8_t sbe2;
int sbe2count;

View File

@@ -17,10 +17,9 @@
*/
#ifndef VIDEO_8514A_H
# define VIDEO_8514A_H
#define VIDEO_8514A_H
typedef struct ibm8514_t
{
typedef struct ibm8514_t {
uint8_t pos_regs[8];
int force_old_addr;
@@ -29,21 +28,21 @@ typedef struct ibm8514_t
uint32_t vram_size;
uint32_t vram_mask;
PALETTE vgapal;
uint8_t dac_mask, dac_status;
PALETTE vgapal;
uint8_t dac_mask, dac_status;
uint32_t *map8;
int dac_addr, dac_pos, dac_r, dac_g;
int dac_addr, dac_pos, dac_r, dac_g;
struct {
uint16_t subsys_cntl;
uint16_t setup_md;
uint8_t advfunc_cntl, ext_advfunc_cntl;
uint8_t advfunc_cntl, ext_advfunc_cntl;
uint16_t cur_y, cur_y_bitres;
uint16_t cur_x, cur_x_bitres;
int16_t desty_axstp;
int16_t destx_distp;
int16_t err_term;
int16_t maj_axis_pcnt;
int16_t desty_axstp;
int16_t destx_distp;
int16_t err_term;
int16_t maj_axis_pcnt;
uint16_t cmd, cmd_back;
uint16_t short_stroke;
uint16_t bkgd_color;
@@ -55,58 +54,58 @@ typedef struct ibm8514_t
uint16_t frgd_mix;
uint16_t multifunc_cntl;
uint16_t multifunc[16];
int16_t clip_left, clip_top;
uint8_t pix_trans[2];
int poly_draw;
int ssv_state;
int x1, x2, y1, y2;
int sys_cnt, sys_cnt2;
int temp_cnt;
int16_t cx, cy, oldcy;
int16_t sx, sy;
int16_t dx, dy;
int16_t err;
int16_t clip_left, clip_top;
uint8_t pix_trans[2];
int poly_draw;
int ssv_state;
int x1, x2, y1, y2;
int sys_cnt, sys_cnt2;
int temp_cnt;
int16_t cx, cy, oldcy;
int16_t sx, sy;
int16_t dx, dy;
int16_t err;
uint32_t src, dest;
uint32_t newsrc_blt, newdest_blt;
uint32_t newdest_in, newdest_out;
uint8_t *writemono, *nibbleset;
int x_count, xx_count, y_count;
int input, output;
int x_count, xx_count, y_count;
int input, output;
uint16_t cur_x_bit12, cur_y_bit12;
int ssv_len;
uint8_t ssv_dir;
uint8_t ssv_draw;
int odd_in, odd_out;
int ssv_len;
uint8_t ssv_dir;
uint8_t ssv_draw;
int odd_in, odd_out;
uint16_t scratch;
int fill_state, xdir, ydir;
int fill_state, xdir, ydir;
} accel;
uint16_t test;
int v_total, dispend, v_syncstart, split,
h_disp, h_disp_old, h_total, h_disp_time, rowoffset,
dispon, hdisp_on, linecountff,
vc, linepos, oddeven, cursoron, blink, scrollcache,
firstline, lastline, firstline_draw, lastline_draw,
displine, fullchange, x_add, y_add;
uint32_t ma, maback;
h_disp, h_disp_old, h_total, h_disp_time, rowoffset,
dispon, hdisp_on, linecountff,
vc, linepos, oddeven, cursoron, blink, scrollcache,
firstline, lastline, firstline_draw, lastline_draw,
displine, fullchange, x_add, y_add;
uint32_t ma, maback;
uint8_t *vram, *changedvram, linedbl;
uint8_t data_available, data_available2;
uint8_t scanmodulos, rowcount;
int htotal, hdisp, vtadj, vdadj, vsadj, sc,
int htotal, hdisp, vtadj, vdadj, vsadj, sc,
vtb, vdb, vsb, vsyncstart, vsyncwidth;
int vtotal, vdisp;
int disp_cntl, interlace;
int vtotal, vdisp;
int disp_cntl, interlace;
uint8_t subsys_cntl, subsys_stat;
volatile int force_busy, force_busy2;
int blitter_busy;
int blitter_busy;
uint64_t blitter_time;
uint64_t status_time;
} ibm8514_t;
#endif /*VIDEO_8514A_H*/
#endif /*VIDEO_8514A_H*/

View File

@@ -1,54 +1,49 @@
#ifndef VIDEO_ATI_EEPROM_H
# define VIDEO_ATI_EEPROM_H
#define VIDEO_ATI_EEPROM_H
/* Copyright holders: Sarah Walker
see COPYING for more details
*/
enum
{
EEPROM_IDLE,
EEPROM_WAIT,
EEPROM_OPCODE,
EEPROM_INPUT,
EEPROM_OUTPUT
enum {
EEPROM_IDLE,
EEPROM_WAIT,
EEPROM_OPCODE,
EEPROM_INPUT,
EEPROM_OUTPUT
};
enum
{
EEPROM_OP_EW = 4,
EEPROM_OP_WRITE = 5,
EEPROM_OP_READ = 6,
EEPROM_OP_ERASE = 7,
enum {
EEPROM_OP_EW = 4,
EEPROM_OP_WRITE = 5,
EEPROM_OP_READ = 6,
EEPROM_OP_ERASE = 7,
EEPROM_OP_WRALMAIN = -1
EEPROM_OP_WRALMAIN = -1
};
enum
{
EEPROM_OP_EWDS = 0,
EEPROM_OP_WRAL = 1,
EEPROM_OP_ERAL = 2,
EEPROM_OP_EWEN = 3
enum {
EEPROM_OP_EWDS = 0,
EEPROM_OP_WRAL = 1,
EEPROM_OP_ERAL = 2,
EEPROM_OP_EWEN = 3
};
typedef struct ati_eeprom_t {
uint16_t data[256];
typedef struct ati_eeprom_t
{
uint16_t data[256];
int oldclk, oldena;
int opcode, state, count, out;
int wp;
uint32_t dat;
int type;
int address;
int oldclk, oldena;
int opcode, state, count, out;
int wp;
uint32_t dat;
int type;
int address;
char fn[256];
char fn[256];
} ati_eeprom_t;
void ati_eeprom_load(ati_eeprom_t *eeprom, char *fn, int type);
void ati_eeprom_write(ati_eeprom_t *eeprom, int ena, int clk, int dat);
int ati_eeprom_read(ati_eeprom_t *eeprom);
int ati_eeprom_read(ati_eeprom_t *eeprom);
#endif /*VIDEO_ATI_EEPROM_H*/

View File

@@ -17,45 +17,44 @@
*/
#ifndef VIDEO_CGA_H
# define VIDEO_CGA_H
#define VIDEO_CGA_H
typedef struct cga_t
{
mem_mapping_t mapping;
typedef struct cga_t {
mem_mapping_t mapping;
int crtcreg;
uint8_t crtc[32];
int crtcreg;
uint8_t crtc[32];
uint8_t cgastat;
uint8_t cgastat;
uint8_t cgamode, cgacol;
uint8_t cgamode, cgacol;
int fontbase;
int linepos, displine;
int sc, vc;
int cgadispon;
int con, coff, cursoron, cgablink;
int vsynctime, vadj;
uint16_t ma, maback;
int oddeven;
int fontbase;
int linepos, displine;
int sc, vc;
int cgadispon;
int con, coff, cursoron, cgablink;
int vsynctime, vadj;
uint16_t ma, maback;
int oddeven;
uint64_t dispontime, dispofftime;
pc_timer_t timer;
uint64_t dispontime, dispofftime;
pc_timer_t timer;
int firstline, lastline;
int firstline, lastline;
int drawcursor;
int drawcursor;
int fullchange;
int fullchange;
uint8_t *vram;
uint8_t *vram;
uint8_t charbuffer[256];
uint8_t charbuffer[256];
int revision;
int composite;
int snow_enabled;
int rgb_type;
int revision;
int composite;
int snow_enabled;
int rgb_type;
} cga_t;
void cga_init(cga_t *cga);
@@ -68,7 +67,7 @@ void cga_poll(void *p);
#ifdef EMU_DEVICE_H
extern const device_config_t cga_config[];
extern const device_t cga_device;
extern const device_t cga_device;
#endif
#endif /*VIDEO_CGA_H*/
#endif /*VIDEO_CGA_H*/

View File

@@ -18,15 +18,15 @@
*/
#ifndef VIDEO_CGA_COMP_H
# define VIDEO_CGA_COMP_H
#define VIDEO_CGA_COMP_H
#define Bit8u uint8_t
#define Bit8u uint8_t
#define Bit32u uint32_t
#define Bitu unsigned int
#define Bitu unsigned int
#define bool uint8_t
void update_cga16_color(uint8_t cgamode);
void cga_comp_init(int revision);
Bit32u * Composite_Process(uint8_t cgamode, Bit8u border, Bit32u blocks/*, bool doublewidth*/, Bit32u *TempLine);
void update_cga16_color(uint8_t cgamode);
void cga_comp_init(int revision);
Bit32u *Composite_Process(uint8_t cgamode, Bit8u border, Bit32u blocks /*, bool doublewidth*/, Bit32u *TempLine);
#endif /*VIDEO_CGA_COMP_H*/
#endif /*VIDEO_CGA_COMP_H*/

View File

@@ -1,10 +1,9 @@
#ifndef VIDEO_COLORPLUS_H
# define VIDEO_COLORPLUS_H
#define VIDEO_COLORPLUS_H
typedef struct colorplus_t
{
cga_t cga;
uint8_t control;
typedef struct colorplus_t {
cga_t cga;
uint8_t control;
} colorplus_t;
void colorplus_init(colorplus_t *colorplus);

View File

@@ -18,9 +18,9 @@
*/
#ifndef EMU_VID_DDC_H
# define EMU_VID_DDC_H
#define EMU_VID_DDC_H
extern void *ddc_init(void *i2c);
extern void ddc_close(void *eeprom);
extern void *ddc_init(void *i2c);
extern void ddc_close(void *eeprom);
#endif /*EMU_VID_DDC_H*/
#endif /*EMU_VID_DDC_H*/

View File

@@ -19,8 +19,7 @@
*/
#ifndef VIDEO_EGA_H
# define VIDEO_EGA_H
#define VIDEO_EGA_H
#if defined(EMU_MEM_H) && defined(EMU_ROM_H)
typedef struct ega_t {
@@ -29,10 +28,10 @@ typedef struct ega_t {
rom_t bios_rom;
uint8_t crtcreg, gdcaddr, attraddr, attrff,
attr_palette_enable, seqaddr, miscout,
writemask, la, lb, lc, ld,
stat, colourcompare, colournocare, scrblank,
plane_mask, pad, pad0, pad1;
attr_palette_enable, seqaddr, miscout,
writemask, la, lb, lc, ld,
stat, colourcompare, colournocare, scrblank,
plane_mask, pad, pad0, pad1;
uint8_t crtc[32];
uint8_t gdcreg[16];
uint8_t attrregs[32];
@@ -43,30 +42,30 @@ typedef struct ega_t {
uint8_t *vram;
int vidclock, fast, extvram, vres,
readmode, writemode, readplane, vrammask,
chain4, chain2_read, chain2_write, con,
oddeven_page, oddeven_chain, vc, sc,
dispon, hdisp_on, cursoron, blink, fullchange,
linepos, vslines, linecountff, oddeven,
lowres, interlace, linedbl, lindebl, rowcount,
vtotal, dispend, vsyncstart, split,
hdisp, hdisp_old, htotal, hdisp_time, rowoffset,
vblankstart, scrollcache, firstline, lastline,
firstline_draw, lastline_draw, x_add, y_add,
displine, res_x, res_y, bpp, index;
readmode, writemode, readplane, vrammask,
chain4, chain2_read, chain2_write, con,
oddeven_page, oddeven_chain, vc, sc,
dispon, hdisp_on, cursoron, blink, fullchange,
linepos, vslines, linecountff, oddeven,
lowres, interlace, linedbl, lindebl, rowcount,
vtotal, dispend, vsyncstart, split,
hdisp, hdisp_old, htotal, hdisp_time, rowoffset,
vblankstart, scrollcache, firstline, lastline,
firstline_draw, lastline_draw, x_add, y_add,
displine, res_x, res_y, bpp, index;
uint32_t charseta, charsetb, ma_latch, ma,
maback, ca, vram_limit, overscan_color;
maback, ca, vram_limit, overscan_color;
uint32_t *pallook;
uint64_t dispontime, dispofftime;
pc_timer_t timer;
uint64_t dispontime, dispofftime;
pc_timer_t timer;
double clock;
int remap_required;
uint32_t (*remap_func)(struct ega_t *ega, uint32_t in_addr);
int remap_required;
uint32_t (*remap_func)(struct ega_t *ega, uint32_t in_addr);
void (*render)(struct ega_t *svga);
@@ -74,7 +73,6 @@ typedef struct ega_t {
} ega_t;
#endif
#ifdef EMU_DEVICE_H
extern const device_t ega_device;
extern const device_t cpqega_device;
@@ -86,33 +84,31 @@ extern const device_t et2000_device;
extern int update_overscan;
#define DISPLAY_RGB 0
#define DISPLAY_COMPOSITE 1
#define DISPLAY_RGB 0
#define DISPLAY_COMPOSITE 1
#define DISPLAY_RGB_NO_BROWN 2
#define DISPLAY_GREEN 3
#define DISPLAY_AMBER 4
#define DISPLAY_WHITE 5
#define DISPLAY_GREEN 3
#define DISPLAY_AMBER 4
#define DISPLAY_WHITE 5
#if defined(EMU_MEM_H) && defined(EMU_ROM_H)
extern void ega_init(ega_t *ega, int monitor_type, int is_mono);
extern void ega_recalctimings(struct ega_t *ega);
extern void ega_init(ega_t *ega, int monitor_type, int is_mono);
extern void ega_recalctimings(struct ega_t *ega);
extern void ega_recalc_remap_func(struct ega_t *ega);
#endif
extern void ega_out(uint16_t addr, uint8_t val, void *p);
extern uint8_t ega_in(uint16_t addr, void *p);
extern void ega_poll(void *p);
extern void ega_write(uint32_t addr, uint8_t val, void *p);
extern uint8_t ega_read(uint32_t addr, void *p);
extern void ega_out(uint16_t addr, uint8_t val, void *p);
extern uint8_t ega_in(uint16_t addr, void *p);
extern void ega_poll(void *p);
extern void ega_write(uint32_t addr, uint8_t val, void *p);
extern uint8_t ega_read(uint32_t addr, void *p);
extern int firstline_draw, lastline_draw;
extern int displine;
extern int sc;
extern uint32_t ma, ca;
extern int con, cursoron, cgablink;
extern int con, cursoron, cgablink;
extern int scrollcache;
@@ -134,4 +130,4 @@ void ega_render_4bpp_lowres(ega_t *ega);
void ega_render_4bpp_highres(ega_t *ega);
#endif
#endif /*VIDEO_EGA_H*/
#endif /*VIDEO_EGA_H*/

View File

@@ -1,5 +1,5 @@
#ifndef VIDEO_EGA_RENDER_REMAP_H
# define VIDEO_EGA_RENDER_REMAP_H
#define VIDEO_EGA_RENDER_REMAP_H
#define VAR_BYTE_MODE (0 << 0)
#define VAR_WORD_MODE_MA13 (1 << 0)
@@ -9,44 +9,35 @@
#define VAR_ROW0_MA13 (1 << 2)
#define VAR_ROW1_MA14 (1 << 3)
#define ADDRESS_REMAP_FUNC(nr) \
static uint32_t address_remap_func_ ## nr(ega_t *ega, uint32_t in_addr) \
{ \
uint32_t out_addr; \
\
switch (nr & VAR_MODE_MASK) \
{ \
case VAR_BYTE_MODE: \
out_addr = in_addr; \
break; \
\
case VAR_WORD_MODE_MA13: \
out_addr = ((in_addr << 1) & 0x1fff8) | \
((in_addr >> 13) & 0x4) | \
(in_addr & ~0x1ffff); \
break; \
\
case VAR_WORD_MODE_MA15: \
out_addr = ((in_addr << 1) & 0x1fff8) | \
((in_addr >> 15) & 0x4) | \
(in_addr & ~0x1ffff); \
break; \
\
case VAR_DWORD_MODE: \
out_addr = ((in_addr << 2) & 0x3fff0) | \
((in_addr >> 14) & 0xc) | \
(in_addr & ~0x3ffff); \
break; \
} \
\
if (nr & VAR_ROW0_MA13) \
out_addr = (out_addr & ~0x8000) | \
((ega->sc & 1) ? 0x8000 : 0); \
if (nr & VAR_ROW1_MA14) \
out_addr = (out_addr & ~0x10000) | \
((ega->sc & 2) ? 0x10000 : 0); \
\
return out_addr; \
#define ADDRESS_REMAP_FUNC(nr) \
static uint32_t address_remap_func_##nr(ega_t *ega, uint32_t in_addr) \
{ \
uint32_t out_addr; \
\
switch (nr & VAR_MODE_MASK) { \
case VAR_BYTE_MODE: \
out_addr = in_addr; \
break; \
\
case VAR_WORD_MODE_MA13: \
out_addr = ((in_addr << 1) & 0x1fff8) | ((in_addr >> 13) & 0x4) | (in_addr & ~0x1ffff); \
break; \
\
case VAR_WORD_MODE_MA15: \
out_addr = ((in_addr << 1) & 0x1fff8) | ((in_addr >> 15) & 0x4) | (in_addr & ~0x1ffff); \
break; \
\
case VAR_DWORD_MODE: \
out_addr = ((in_addr << 2) & 0x3fff0) | ((in_addr >> 14) & 0xc) | (in_addr & ~0x3ffff); \
break; \
} \
\
if (nr & VAR_ROW0_MA13) \
out_addr = (out_addr & ~0x8000) | ((ega->sc & 1) ? 0x8000 : 0); \
if (nr & VAR_ROW1_MA14) \
out_addr = (out_addr & ~0x10000) | ((ega->sc & 2) ? 0x10000 : 0); \
\
return out_addr; \
}
ADDRESS_REMAP_FUNC(0)
@@ -66,8 +57,7 @@ ADDRESS_REMAP_FUNC(13)
ADDRESS_REMAP_FUNC(14)
ADDRESS_REMAP_FUNC(15)
static uint32_t (*address_remap_funcs[16])(ega_t *ega, uint32_t in_addr) =
{
static uint32_t (*address_remap_funcs[16])(ega_t *ega, uint32_t in_addr) = {
address_remap_func_0,
address_remap_func_1,
address_remap_func_2,
@@ -86,7 +76,8 @@ static uint32_t (*address_remap_funcs[16])(ega_t *ega, uint32_t in_addr) =
address_remap_func_15
};
void ega_recalc_remap_func(ega_t *ega)
void
ega_recalc_remap_func(ega_t *ega)
{
int func_nr;
@@ -105,7 +96,7 @@ void ega_recalc_remap_func(ega_t *ega)
func_nr |= VAR_ROW1_MA14;
ega->remap_required = (func_nr != 0);
ega->remap_func = address_remap_funcs[func_nr];
ega->remap_func = address_remap_funcs[func_nr];
}
#endif /*VIDEO_RENDER_REMAP_H*/

View File

@@ -18,51 +18,58 @@
*/
#ifndef VIDEO_HERCULES_H
# define VIDEO_HERCULES_H
#define VIDEO_HERCULES_H
typedef struct {
mem_mapping_t mapping;
mem_mapping_t mapping;
uint8_t crtc[32], charbuffer[4096];
int crtcreg;
uint8_t crtc[32], charbuffer[4096];
int crtcreg;
uint8_t ctrl,
ctrl2,
stat;
uint8_t ctrl,
ctrl2,
stat;
uint64_t dispontime,
dispofftime;
pc_timer_t timer;
uint64_t dispontime,
dispofftime;
pc_timer_t timer;
int firstline,
lastline;
int firstline,
lastline;
int linepos,
displine;
int vc,
sc;
uint16_t ma,
maback;
int con, coff,
cursoron;
int dispon,
blink;
int vsynctime;
int vadj;
int linepos,
displine;
int vc,
sc;
uint16_t ma,
maback;
int con, coff,
cursoron;
int dispon,
blink;
int vsynctime;
int vadj;
int lp_ff;
int fullchange;
int lp_ff;
int fullchange;
int cols[256][2][2];
int cols[256][2][2];
uint8_t *vram;
int monitor_index;
int prev_monitor_index;
uint8_t *vram;
int monitor_index;
int prev_monitor_index;
} hercules_t;
#define VIDEO_MONITOR_PROLOGUE() { dev->prev_monitor_index = monitor_index_global; monitor_index_global = dev->monitor_index; }
#define VIDEO_MONITOR_EPILOGUE() { monitor_index_global = dev->prev_monitor_index; }
#define VIDEO_MONITOR_PROLOGUE() \
{ \
dev->prev_monitor_index = monitor_index_global; \
monitor_index_global = dev->monitor_index; \
}
#define VIDEO_MONITOR_EPILOGUE() \
{ \
monitor_index_global = dev->prev_monitor_index; \
}
static void *hercules_init(const device_t *info);
#endif /*VIDEO_HERCULES_H*/
#endif /*VIDEO_HERCULES_H*/

View File

@@ -3,40 +3,46 @@
*/
#ifndef VIDEO_MDA_H
# define VIDEO_MDA_H
#define VIDEO_MDA_H
typedef struct mda_t
{
mem_mapping_t mapping;
typedef struct mda_t {
mem_mapping_t mapping;
uint8_t crtc[32];
int crtcreg;
uint8_t crtc[32];
int crtcreg;
uint8_t ctrl, stat;
uint8_t ctrl, stat;
uint64_t dispontime, dispofftime;
pc_timer_t timer;
uint64_t dispontime, dispofftime;
pc_timer_t timer;
int firstline, lastline;
int firstline, lastline;
int linepos, displine;
int vc, sc;
uint16_t ma, maback;
int con, coff, cursoron;
int dispon, blink;
int vsynctime;
int vadj;
int monitor_index;
int prev_monitor_index;
int linepos, displine;
int vc, sc;
uint16_t ma, maback;
int con, coff, cursoron;
int dispon, blink;
int vsynctime;
int vadj;
int monitor_index;
int prev_monitor_index;
uint8_t *vram;
uint8_t *vram;
} mda_t;
#define VIDEO_MONITOR_PROLOGUE() { mda->prev_monitor_index = monitor_index_global; monitor_index_global = mda->monitor_index; }
#define VIDEO_MONITOR_EPILOGUE() { monitor_index_global = mda->prev_monitor_index; }
#define VIDEO_MONITOR_PROLOGUE() \
{ \
mda->prev_monitor_index = monitor_index_global; \
monitor_index_global = mda->monitor_index; \
}
#define VIDEO_MONITOR_EPILOGUE() \
{ \
monitor_index_global = mda->prev_monitor_index; \
}
void mda_init(mda_t *mda);
void mda_setcol(int chr, int blink, int fg, uint8_t cga_ink);
void mda_setcol(int chr, int blink, int fg, uint8_t cga_ink);
void mda_out(uint16_t addr, uint8_t val, void *p);
uint8_t mda_in(uint16_t addr, void *p);
void mda_write(uint32_t addr, uint8_t val, void *p);

View File

@@ -23,15 +23,15 @@
*/
#ifndef VIDEO_NGA_H
# define VIDEO_NGA_H
#define VIDEO_NGA_H
typedef struct nga_t {
cga_t cga;
/* unused in OGC, required for M19 video card structure idiom */
uint32_t base;
int lineff;
int page;
uint8_t *vram_64k;
/* unused in OGC, required for M19 video card structure idiom */
uint32_t base;
int lineff;
int page;
uint8_t *vram_64k;
mem_mapping_t mapping_64k;
} nga_t;
@@ -44,10 +44,9 @@ void nga_poll(void *priv);
void nga_close(void *priv);
void nga_mdaattr_rebuild();
#ifdef EMU_DEVICE_H
extern const device_config_t nga_config[];
extern const device_t nga_device;
extern const device_t nga_device;
#endif
#endif /*VIDEO_NGA_H*/

View File

@@ -23,16 +23,16 @@
*/
#ifndef VIDEO_OGC_H
# define VIDEO_OGC_H
#define VIDEO_OGC_H
typedef struct ogc_t {
cga_t cga;
/* unused in OGC, required for M19 video card structure idiom */
uint8_t ctrl_3dd;
uint8_t ctrl_3de;
uint32_t base;
int lineff;
int mono_display;
/* unused in OGC, required for M19 video card structure idiom */
uint8_t ctrl_3dd;
uint8_t ctrl_3de;
uint32_t base;
int lineff;
int mono_display;
} ogc_t;
void ogc_recalctimings(ogc_t *ogc);
@@ -44,10 +44,9 @@ void ogc_poll(void *priv);
void ogc_close(void *priv);
void ogc_mdaattr_rebuild();
#ifdef EMU_DEVICE_H
extern const device_config_t ogc_config[];
extern const device_t ogc_device;
extern const device_t ogc_device;
#endif
#endif /*VIDEO_OGC_H*/

View File

@@ -17,7 +17,7 @@
* Copyright 2019 John Elliott.
*/
#ifndef VID_PGC_H
# define VID_PGC_H
#define VID_PGC_H
#define PGC_ERROR_RANGE 0x01
#define PGC_ERROR_INTEGER 0x02
@@ -31,153 +31,151 @@
#define PGC_ERROR_AREA 0x0A
#define PGC_ERROR_MISSING 0x0B
struct pgc;
typedef struct pgc_cl {
uint8_t *list;
uint32_t listmax;
uint32_t wrptr;
uint32_t rdptr;
uint32_t repeat;
uint8_t *list;
uint32_t listmax;
uint32_t wrptr;
uint32_t rdptr;
uint32_t repeat;
struct pgc_cl *chain;
} pgc_cl_t;
typedef struct pgc_cmd {
char ascii[6];
uint8_t hex;
void (*handler)(struct pgc *);
int (*parser) (struct pgc *, pgc_cl_t *, int);
char ascii[6];
uint8_t hex;
void (*handler)(struct pgc *);
int (*parser)(struct pgc *, pgc_cl_t *, int);
int p;
} pgc_cmd_t;
typedef struct pgc {
int8_t type; /* board type */
int8_t cga_enabled;
int8_t cga_selected;
volatile int8_t stopped;
int8_t type; /* board type */
int8_t cga_enabled;
int8_t cga_selected;
volatile int8_t stopped;
mem_mapping_t mapping;
mem_mapping_t cga_mapping;
mem_mapping_t mapping;
mem_mapping_t cga_mapping;
pgc_cl_t *clist,
*clcur;
pgc_cl_t *clist,
*clcur;
const pgc_cmd_t *master,
*commands;
*commands;
uint8_t mapram[2048]; /* host <> PGC communication buffer */
uint8_t *cga_vram;
uint8_t *vram;
char asc_command[7];
uint8_t hex_command;
uint32_t palette[256];
uint32_t userpal[256];
uint32_t maxw, maxh; /* maximum framebuffer size */
uint32_t visw, vish; /* maximum screen size */
uint32_t screenw, screenh;
int16_t pan_x, pan_y;
uint16_t win_x1, win_x2, win_y1, win_y2;
uint16_t vp_x1, vp_x2, vp_y1, vp_y2;
int16_t fill_pattern[16];
int16_t line_pattern;
uint8_t draw_mode;
uint8_t fill_mode;
uint8_t color;
uint8_t tjust_h; /* hor alignment 1=left 2=ctr 3=right*/
uint8_t tjust_v; /* vert alignment 1=bottom 2=ctr 3=top*/
int32_t tsize; /* horizontal spacing */
uint8_t mapram[2048]; /* host <> PGC communication buffer */
uint8_t *cga_vram;
uint8_t *vram;
char asc_command[7];
uint8_t hex_command;
uint32_t palette[256];
uint32_t userpal[256];
uint32_t maxw, maxh; /* maximum framebuffer size */
uint32_t visw, vish; /* maximum screen size */
uint32_t screenw, screenh;
int16_t pan_x, pan_y;
uint16_t win_x1, win_x2, win_y1, win_y2;
uint16_t vp_x1, vp_x2, vp_y1, vp_y2;
int16_t fill_pattern[16];
int16_t line_pattern;
uint8_t draw_mode;
uint8_t fill_mode;
uint8_t color;
uint8_t tjust_h; /* hor alignment 1=left 2=ctr 3=right*/
uint8_t tjust_v; /* vert alignment 1=bottom 2=ctr 3=top*/
int32_t tsize; /* horizontal spacing */
int32_t x, y, z; /* drawing position */
int32_t x, y, z; /* drawing position */
thread_t *pgc_thread;
event_t *pgc_wake_thread;
pc_timer_t wake_timer;
thread_t *pgc_thread;
event_t *pgc_wake_thread;
pc_timer_t wake_timer;
int waiting_input_fifo;
int waiting_output_fifo;
int waiting_error_fifo;
int ascii_mode;
int result_count;
int waiting_input_fifo;
int waiting_output_fifo;
int waiting_error_fifo;
int ascii_mode;
int result_count;
int fontbase;
int linepos,
displine;
int vc;
int cgadispon;
int con, coff, cursoron, cgablink;
int vsynctime, vadj;
uint16_t ma, maback;
int oddeven;
int fontbase;
int linepos,
displine;
int vc;
int cgadispon;
int con, coff, cursoron, cgablink;
int vsynctime, vadj;
uint16_t ma, maback;
int oddeven;
uint64_t dispontime,
dispofftime;
pc_timer_t timer;
double native_pixel_clock;
uint64_t dispontime,
dispofftime;
pc_timer_t timer;
double native_pixel_clock;
int drawcursor;
int drawcursor;
int (*inputbyte)(struct pgc *, uint8_t *result);
int (*inputbyte)(struct pgc *, uint8_t *result);
} pgc_t;
/* I/O functions and worker thread handlers. */
extern void pgc_out(uint16_t addr, uint8_t val, void *priv);
extern uint8_t pgc_in(uint16_t addr, void *priv);
extern void pgc_write(uint32_t addr, uint8_t val, void *priv);
extern uint8_t pgc_read(uint32_t addr, void *priv);
extern void pgc_recalctimings(pgc_t *);
extern void pgc_poll(void *priv);
extern void pgc_reset(pgc_t *);
extern void pgc_wake(pgc_t *);
extern void pgc_sleep(pgc_t *);
extern void pgc_setdisplay(pgc_t *, int cga);
extern void pgc_speed_changed(void *priv);
extern void pgc_close_common(void *priv);
extern void pgc_close(void *priv);
extern void pgc_init(pgc_t *,
int maxw, int maxh, int visw, int vish,
int (*inpbyte)(pgc_t *, uint8_t *), double npc);
extern void pgc_out(uint16_t addr, uint8_t val, void *priv);
extern uint8_t pgc_in(uint16_t addr, void *priv);
extern void pgc_write(uint32_t addr, uint8_t val, void *priv);
extern uint8_t pgc_read(uint32_t addr, void *priv);
extern void pgc_recalctimings(pgc_t *);
extern void pgc_poll(void *priv);
extern void pgc_reset(pgc_t *);
extern void pgc_wake(pgc_t *);
extern void pgc_sleep(pgc_t *);
extern void pgc_setdisplay(pgc_t *, int cga);
extern void pgc_speed_changed(void *priv);
extern void pgc_close_common(void *priv);
extern void pgc_close(void *priv);
extern void pgc_init(pgc_t *,
int maxw, int maxh, int visw, int vish,
int (*inpbyte)(pgc_t *, uint8_t *), double npc);
/* Misc support functions. */
extern void pgc_sto_raster(pgc_t *, int16_t *x, int16_t *y);
extern void pgc_ito_raster(pgc_t *, int32_t *x, int32_t *y);
extern void pgc_dto_raster(pgc_t *, double *x, double *y);
//extern int pgc_input_byte(pgc_t *, uint8_t *val);
//extern int pgc_output_byte(pgc_t *, uint8_t val);
extern int pgc_output_string(pgc_t *, const char *val);
//extern int pgc_error_byte(pgc_t *, uint8_t val);
extern int pgc_error_string(pgc_t *, const char *val);
extern int pgc_error(pgc_t *, int err);
extern void pgc_sto_raster(pgc_t *, int16_t *x, int16_t *y);
extern void pgc_ito_raster(pgc_t *, int32_t *x, int32_t *y);
extern void pgc_dto_raster(pgc_t *, double *x, double *y);
// extern int pgc_input_byte(pgc_t *, uint8_t *val);
// extern int pgc_output_byte(pgc_t *, uint8_t val);
extern int pgc_output_string(pgc_t *, const char *val);
// extern int pgc_error_byte(pgc_t *, uint8_t val);
extern int pgc_error_string(pgc_t *, const char *val);
extern int pgc_error(pgc_t *, int err);
/* Graphics functions. */
extern uint8_t *pgc_vram_addr(pgc_t *, int16_t x, int16_t y);
extern void pgc_write_pixel(pgc_t *, uint16_t x, uint16_t y, uint8_t ink);
extern uint8_t pgc_read_pixel(pgc_t *, uint16_t x, uint16_t y);
extern void pgc_plot(pgc_t *, uint16_t x, uint16_t y);
extern uint16_t pgc_draw_line_r(pgc_t *, int32_t x1, int32_t y1,
int32_t x2, int32_t y2, uint16_t linemask);
extern void pgc_fill_line_r(pgc_t *, int32_t x0, int32_t x1, int32_t y);
extern uint16_t pgc_draw_line(pgc_t *, int32_t x1, int32_t y1,
int32_t x2, int32_t y2, uint16_t linemask);
extern void pgc_draw_ellipse(pgc_t *, int32_t x, int32_t y);
extern void pgc_fill_polygon(pgc_t *,
unsigned corners, int32_t *x, int32_t *y);
extern uint8_t *pgc_vram_addr(pgc_t *, int16_t x, int16_t y);
extern void pgc_write_pixel(pgc_t *, uint16_t x, uint16_t y, uint8_t ink);
extern uint8_t pgc_read_pixel(pgc_t *, uint16_t x, uint16_t y);
extern void pgc_plot(pgc_t *, uint16_t x, uint16_t y);
extern uint16_t pgc_draw_line_r(pgc_t *, int32_t x1, int32_t y1,
int32_t x2, int32_t y2, uint16_t linemask);
extern void pgc_fill_line_r(pgc_t *, int32_t x0, int32_t x1, int32_t y);
extern uint16_t pgc_draw_line(pgc_t *, int32_t x1, int32_t y1,
int32_t x2, int32_t y2, uint16_t linemask);
extern void pgc_draw_ellipse(pgc_t *, int32_t x, int32_t y);
extern void pgc_fill_polygon(pgc_t *,
unsigned corners, int32_t *x, int32_t *y);
/* Command and parameter handling functions. */
extern int pgc_clist_byte(pgc_t *, uint8_t *val);
extern int pgc_cl_append(pgc_cl_t *, uint8_t v);
extern int pgc_parse_bytes(pgc_t *, pgc_cl_t *, int p);
extern int pgc_parse_words(pgc_t *, pgc_cl_t *, int p);
extern int pgc_parse_coords(pgc_t *, pgc_cl_t *, int p);
extern int pgc_param_byte(pgc_t *, uint8_t *val);
extern int pgc_param_word(pgc_t *, int16_t *val);
extern int pgc_param_coord(pgc_t *, int32_t *val);
extern int pgc_result_byte(pgc_t *, uint8_t val);
extern int pgc_result_word(pgc_t *, int16_t val);
extern int pgc_result_coord(pgc_t *, int32_t val);
extern int pgc_clist_byte(pgc_t *, uint8_t *val);
extern int pgc_cl_append(pgc_cl_t *, uint8_t v);
extern int pgc_parse_bytes(pgc_t *, pgc_cl_t *, int p);
extern int pgc_parse_words(pgc_t *, pgc_cl_t *, int p);
extern int pgc_parse_coords(pgc_t *, pgc_cl_t *, int p);
extern int pgc_param_byte(pgc_t *, uint8_t *val);
extern int pgc_param_word(pgc_t *, int16_t *val);
extern int pgc_param_coord(pgc_t *, int32_t *val);
extern int pgc_result_byte(pgc_t *, uint8_t val);
extern int pgc_result_word(pgc_t *, int16_t val);
extern int pgc_result_coord(pgc_t *, int32_t val);
/* Special overload functions for non-IBM implementations. */
extern void pgc_hndl_lut8(pgc_t *);
extern void pgc_hndl_lut8rd(pgc_t *);
extern void pgc_hndl_lut8(pgc_t *);
extern void pgc_hndl_lut8rd(pgc_t *);
#endif /*VID_PGC_H*/
#endif /*VID_PGC_H*/

File diff suppressed because it is too large Load Diff

View File

@@ -22,56 +22,55 @@
#include <86box/vid_xga.h>
#ifndef VIDEO_SVGA_H
# define VIDEO_SVGA_H
# define VIDEO_SVGA_H
#define FLAG_EXTRA_BANKS 1
#define FLAG_ADDR_BY8 2
#define FLAG_EXT_WRITE 4
#define FLAG_LATCH8 8
#define FLAG_NOSKEW 16
#define FLAG_ADDR_BY16 32
#define FLAG_RAMDAC_SHIFT 64
#define FLAG_128K_MASK 128
# define FLAG_EXTRA_BANKS 1
# define FLAG_ADDR_BY8 2
# define FLAG_EXT_WRITE 4
# define FLAG_LATCH8 8
# define FLAG_NOSKEW 16
# define FLAG_ADDR_BY16 32
# define FLAG_RAMDAC_SHIFT 64
# define FLAG_128K_MASK 128
typedef struct {
int ena,
x, y, xoff, yoff, cur_xsize, cur_ysize,
v_acc, h_acc;
x, y, xoff, yoff, cur_xsize, cur_ysize,
v_acc, h_acc;
uint32_t addr, pitch;
} hwcursor_t;
typedef union {
uint64_t q;
uint32_t d[2];
uint16_t w[4];
uint8_t b[8];
uint64_t q;
uint32_t d[2];
uint16_t w[4];
uint8_t b[8];
} latch_t;
typedef struct svga_t
{
ibm8514_t dev8514;
xga_t xga;
typedef struct svga_t {
ibm8514_t dev8514;
xga_t xga;
mem_mapping_t mapping;
uint8_t fast, chain4, chain2_write, chain2_read,
ext_overscan, bus_size,
lowres, interlace, linedbl, rowcount,
set_reset_disabled, bpp, ramdac_type, fb_only,
readmode, writemode, readplane,
hwcursor_oddeven, dac_hwcursor_oddeven, overlay_oddeven,
fcr, hblank_overscan;
ext_overscan, bus_size,
lowres, interlace, linedbl, rowcount,
set_reset_disabled, bpp, ramdac_type, fb_only,
readmode, writemode, readplane,
hwcursor_oddeven, dac_hwcursor_oddeven, overlay_oddeven,
fcr, hblank_overscan;
int dac_addr, dac_pos, dac_r, dac_g,
vtotal, dispend, vsyncstart, split, vblankstart,
hdisp, hdisp_old, htotal, hdisp_time, rowoffset,
dispon, hdisp_on,
vc, sc, linepos, vslines, linecountff, oddeven,
con, cursoron, blink, scrollcache, char_width,
firstline, lastline, firstline_draw, lastline_draw,
displine, fullchange, x_add, y_add, pan,
vram_display_mask, vidclock, dots_per_clock, hblank_ext,
hwcursor_on, dac_hwcursor_on, overlay_on, set_override,
hblankstart, hblankend, hblank_sub, hblank_end_val, hblank_end_len;
vtotal, dispend, vsyncstart, split, vblankstart,
hdisp, hdisp_old, htotal, hdisp_time, rowoffset,
dispon, hdisp_on,
vc, sc, linepos, vslines, linecountff, oddeven,
con, cursoron, blink, scrollcache, char_width,
firstline, lastline, firstline_draw, lastline_draw,
displine, fullchange, x_add, y_add, pan,
vram_display_mask, vidclock, dots_per_clock, hblank_ext,
hwcursor_on, dac_hwcursor_on, overlay_on, set_override,
hblankstart, hblankend, hblank_sub, hblank_end_val, hblank_end_len;
/*The three variables below allow us to implement memory maps like that seen on a 1MB Trio64 :
0MB-1MB - VRAM
@@ -83,34 +82,34 @@ typedef struct svga_t
(present video memory only responds to first 2MB), vram_mask would be 1MB-1 (video memory wraps at 1MB)
*/
uint32_t decode_mask, vram_max,
vram_mask,
charseta, charsetb,
adv_flags, ma_latch,
ca_adj, ma, maback,
write_bank, read_bank,
extra_banks[2],
banked_mask,
ca, overscan_color,
*map8, pallook[512];
vram_mask,
charseta, charsetb,
adv_flags, ma_latch,
ca_adj, ma, maback,
write_bank, read_bank,
extra_banks[2],
banked_mask,
ca, overscan_color,
*map8, pallook[512];
PALETTE vgapal;
uint64_t dispontime, dispofftime;
latch_t latch;
latch_t latch;
pc_timer_t timer;
double clock;
hwcursor_t hwcursor, hwcursor_latch,
dac_hwcursor, dac_hwcursor_latch,
overlay, overlay_latch;
dac_hwcursor, dac_hwcursor_latch,
overlay, overlay_latch;
void (*render)(struct svga_t *svga);
void (*recalctimings_ex)(struct svga_t *svga);
void (*video_out)(uint16_t addr, uint8_t val, void *p);
uint8_t (*video_in) (uint16_t addr, void *p);
void (*video_out)(uint16_t addr, uint8_t val, void *p);
uint8_t (*video_in)(uint16_t addr, void *p);
void (*hwcursor_draw)(struct svga_t *svga, int displine);
@@ -134,23 +133,23 @@ typedef struct svga_t
uint32_t (*translate_address)(uint32_t addr, void *p);
/*If set then another device is driving the monitor output and the SVGA
card should not attempt to display anything */
int override;
int override;
void *p;
uint8_t crtc[256], gdcreg[256], attrregs[32], seqregs[256],
egapal[16],
*vram, *changedvram;
egapal[16],
*vram, *changedvram;
uint8_t crtcreg, gdcaddr,
attrff, attr_palette_enable, attraddr, seqaddr,
miscout, cgastat, scrblank,
plane_mask, writemask,
colourcompare, colournocare,
dac_mask, dac_status,
dpms, dpms_ui,
ksc5601_sbyte_mask, ksc5601_udc_area_msb[2];
attrff, attr_palette_enable, attraddr, seqaddr,
miscout, cgastat, scrblank,
plane_mask, writemask,
colourcompare, colournocare,
dac_mask, dac_status,
dpms, dpms_ui,
ksc5601_sbyte_mask, ksc5601_udc_area_msb[2];
int ksc5601_swap_mode;
int ksc5601_swap_mode;
uint16_t ksc5601_english_font_type;
int vertical_linedbl;
@@ -158,17 +157,17 @@ typedef struct svga_t
/*Used to implement CRTC[0x17] bit 2 hsync divisor*/
int hsync_divisor;
/*Tseng-style chain4 mode - CRTC dword mode is the same as byte mode, chain4
addresses are shifted to match*/
int packed_chain4;
/*Tseng-style chain4 mode - CRTC dword mode is the same as byte mode, chain4
addresses are shifted to match*/
int packed_chain4;
/*Force CRTC to dword mode, regardless of CR14/CR17. Required for S3 enhanced mode*/
int force_dword_mode;
/*Force CRTC to dword mode, regardless of CR14/CR17. Required for S3 enhanced mode*/
int force_dword_mode;
int force_old_addr;
int force_old_addr;
int remap_required;
uint32_t (*remap_func)(struct svga_t *svga, uint32_t in_addr);
int remap_required;
uint32_t (*remap_func)(struct svga_t *svga, uint32_t in_addr);
void *ramdac, *clock_gen;
} svga_t;
@@ -181,118 +180,116 @@ extern void ibm8514_recalctimings(svga_t *svga);
extern void xga_poll(xga_t *xga, svga_t *svga);
extern void xga_recalctimings(svga_t *svga);
extern int svga_init(const device_t *info, svga_t *svga, void *p, int memsize,
void (*recalctimings_ex)(struct svga_t *svga),
uint8_t (*video_in) (uint16_t addr, void *p),
void (*video_out)(uint16_t addr, uint8_t val, void *p),
void (*hwcursor_draw)(struct svga_t *svga, int displine),
void (*overlay_draw)(struct svga_t *svga, int displine));
extern void svga_recalctimings(svga_t *svga);
extern void svga_close(svga_t *svga);
extern int svga_init(const device_t *info, svga_t *svga, void *p, int memsize,
void (*recalctimings_ex)(struct svga_t *svga),
uint8_t (*video_in)(uint16_t addr, void *p),
void (*video_out)(uint16_t addr, uint8_t val, void *p),
void (*hwcursor_draw)(struct svga_t *svga, int displine),
void (*overlay_draw)(struct svga_t *svga, int displine));
extern void svga_recalctimings(svga_t *svga);
extern void svga_close(svga_t *svga);
uint8_t svga_read(uint32_t addr, void *p);
uint16_t svga_readw(uint32_t addr, void *p);
uint32_t svga_readl(uint32_t addr, void *p);
void svga_write(uint32_t addr, uint8_t val, void *p);
void svga_writew(uint32_t addr, uint16_t val, void *p);
void svga_writel(uint32_t addr, uint32_t val, void *p);
uint8_t svga_read_linear(uint32_t addr, void *p);
uint8_t svga_readb_linear(uint32_t addr, void *p);
uint16_t svga_readw_linear(uint32_t addr, void *p);
uint32_t svga_readl_linear(uint32_t addr, void *p);
void svga_write_linear(uint32_t addr, uint8_t val, void *p);
void svga_writeb_linear(uint32_t addr, uint8_t val, void *p);
void svga_writew_linear(uint32_t addr, uint16_t val, void *p);
void svga_writel_linear(uint32_t addr, uint32_t val, void *p);
uint8_t svga_read(uint32_t addr, void *p);
uint16_t svga_readw(uint32_t addr, void *p);
uint32_t svga_readl(uint32_t addr, void *p);
void svga_write(uint32_t addr, uint8_t val, void *p);
void svga_writew(uint32_t addr, uint16_t val, void *p);
void svga_writel(uint32_t addr, uint32_t val, void *p);
uint8_t svga_read_linear(uint32_t addr, void *p);
uint8_t svga_readb_linear(uint32_t addr, void *p);
uint16_t svga_readw_linear(uint32_t addr, void *p);
uint32_t svga_readl_linear(uint32_t addr, void *p);
void svga_write_linear(uint32_t addr, uint8_t val, void *p);
void svga_writeb_linear(uint32_t addr, uint8_t val, void *p);
void svga_writew_linear(uint32_t addr, uint16_t val, void *p);
void svga_writel_linear(uint32_t addr, uint32_t val, void *p);
void svga_add_status_info(char *s, int max_len, void *p);
void svga_add_status_info(char *s, int max_len, void *p);
extern uint8_t svga_rotate[8][256];
extern uint8_t svga_rotate[8][256];
void svga_out(uint16_t addr, uint8_t val, void *p);
uint8_t svga_in(uint16_t addr, void *p);
void svga_out(uint16_t addr, uint8_t val, void *p);
uint8_t svga_in(uint16_t addr, void *p);
svga_t *svga_get_pri();
void svga_set_override(svga_t *svga, int val);
svga_t *svga_get_pri();
void svga_set_override(svga_t *svga, int val);
void svga_set_ramdac_type(svga_t *svga, int type);
void svga_close(svga_t *svga);
void svga_set_ramdac_type(svga_t *svga, int type);
void svga_close(svga_t *svga);
uint32_t svga_mask_addr(uint32_t addr, svga_t *svga);
uint32_t svga_mask_changedaddr(uint32_t addr, svga_t *svga);
void svga_doblit(int wx, int wy, svga_t *svga);
uint32_t svga_mask_addr(uint32_t addr, svga_t *svga);
uint32_t svga_mask_changedaddr(uint32_t addr, svga_t *svga);
void svga_doblit(int wx, int wy, svga_t *svga);
enum {
RAMDAC_6BIT = 0,
RAMDAC_8BIT
};
/* We need a way to add a device with a pointer to a parent device so it can attach itself to it, and
possibly also a second ATi 68860 RAM DAC type that auto-sets SVGA render on RAM DAC render change. */
extern void ati68860_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
extern uint8_t ati68860_ramdac_in(uint16_t addr, void *p, svga_t *svga);
extern void ati68860_set_ramdac_type(void *p, int type);
extern void ati68860_ramdac_set_render(void *p, svga_t *svga);
extern void ati68860_ramdac_set_pallook(void *p, int i, uint32_t col);
extern void ati68860_hwcursor_draw(svga_t *svga, int displine);
extern void ati68860_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
extern uint8_t ati68860_ramdac_in(uint16_t addr, void *p, svga_t *svga);
extern void ati68860_set_ramdac_type(void *p, int type);
extern void ati68860_ramdac_set_render(void *p, svga_t *svga);
extern void ati68860_ramdac_set_pallook(void *p, int i, uint32_t col);
extern void ati68860_hwcursor_draw(svga_t *svga, int displine);
extern void att49x_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
extern uint8_t att49x_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
extern void att49x_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
extern uint8_t att49x_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
extern void att498_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
extern uint8_t att498_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
extern float av9194_getclock(int clock, void *p);
extern void att498_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
extern uint8_t att498_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
extern float av9194_getclock(int clock, void *p);
extern void bt48x_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *p, svga_t *svga);
extern uint8_t bt48x_ramdac_in(uint16_t addr, int rs2, int rs3, void *p, svga_t *svga);
extern void bt48x_recalctimings(void *p, svga_t *svga);
extern void bt48x_hwcursor_draw(svga_t *svga, int displine);
extern void bt48x_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *p, svga_t *svga);
extern uint8_t bt48x_ramdac_in(uint16_t addr, int rs2, int rs3, void *p, svga_t *svga);
extern void bt48x_recalctimings(void *p, svga_t *svga);
extern void bt48x_hwcursor_draw(svga_t *svga, int displine);
extern void ibm_rgb528_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
extern uint8_t ibm_rgb528_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
extern void ibm_rgb528_recalctimings(void *p, svga_t *svga);
extern void ibm_rgb528_hwcursor_draw(svga_t *svga, int displine);
extern void ibm_rgb528_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
extern uint8_t ibm_rgb528_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
extern void ibm_rgb528_recalctimings(void *p, svga_t *svga);
extern void ibm_rgb528_hwcursor_draw(svga_t *svga, int displine);
extern void icd2061_write(void *p, int val);
extern float icd2061_getclock(int clock, void *p);
extern void icd2061_write(void *p, int val);
extern float icd2061_getclock(int clock, void *p);
/* The code is the same, the #define's are so that the correct name can be used. */
#define ics9161_write icd2061_write
#define ics9161_getclock icd2061_getclock
# define ics9161_write icd2061_write
# define ics9161_getclock icd2061_getclock
extern float ics2494_getclock(int clock, void *p);
extern float ics2494_getclock(int clock, void *p);
extern void ics2595_write(void *p, int strobe, int dat);
extern double ics2595_getclock(void *p);
extern void ics2595_setclock(void *p, double clock);
extern void ics2595_write(void *p, int strobe, int dat);
extern double ics2595_getclock(void *p);
extern void ics2595_setclock(void *p, double clock);
extern void sc1148x_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
extern uint8_t sc1148x_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
extern void sc1148x_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
extern uint8_t sc1148x_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
extern void sc1502x_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
extern uint8_t sc1502x_ramdac_in(uint16_t addr, void *p, svga_t *svga);
extern void sc1502x_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
extern uint8_t sc1502x_ramdac_in(uint16_t addr, void *p, svga_t *svga);
extern void sdac_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
extern uint8_t sdac_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
extern float sdac_getclock(int clock, void *p);
extern void sdac_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
extern uint8_t sdac_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
extern float sdac_getclock(int clock, void *p);
extern void stg_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
extern uint8_t stg_ramdac_in(uint16_t addr, void *p, svga_t *svga);
extern float stg_getclock(int clock, void *p);
extern void stg_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
extern uint8_t stg_ramdac_in(uint16_t addr, void *p, svga_t *svga);
extern float stg_getclock(int clock, void *p);
extern void tkd8001_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
extern uint8_t tkd8001_ramdac_in(uint16_t addr, void *p, svga_t *svga);
extern void tkd8001_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
extern uint8_t tkd8001_ramdac_in(uint16_t addr, void *p, svga_t *svga);
extern void tvp3026_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *p, svga_t *svga);
extern void tvp3026_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *p, svga_t *svga);
extern uint8_t tvp3026_ramdac_in(uint16_t addr, int rs2, int rs3, void *p, svga_t *svga);
extern void tvp3026_recalctimings(void *p, svga_t *svga);
extern void tvp3026_hwcursor_draw(svga_t *svga, int displine);
extern float tvp3026_getclock(int clock, void *p);
extern void tvp3026_recalctimings(void *p, svga_t *svga);
extern void tvp3026_hwcursor_draw(svga_t *svga, int displine);
extern float tvp3026_getclock(int clock, void *p);
#ifdef EMU_DEVICE_H
# ifdef EMU_DEVICE_H
extern const device_t ati68860_ramdac_device;
extern const device_t att490_ramdac_device;
extern const device_t att491_ramdac_device;
@@ -321,6 +318,6 @@ extern const device_t tkd8001_ramdac_device;
extern const device_t tseng_ics5301_ramdac_device;
extern const device_t tseng_ics5341_ramdac_device;
extern const device_t tvp3026_ramdac_device;
#endif
# endif
#endif /*VIDEO_SVGA_H*/
#endif /*VIDEO_SVGA_H*/

View File

@@ -17,14 +17,14 @@
*/
#ifndef VIDEO_SVGA_RENDER_H
# define VIDEO_SVGA_RENDER_H
#define VIDEO_SVGA_RENDER_H
extern int firstline_draw, lastline_draw;
extern int displine;
extern int sc;
extern uint32_t ma, ca;
extern int con, cursoron, cgablink;
extern int con, cursoron, cgablink;
extern int scrollcache;

View File

@@ -7,14 +7,14 @@
*/
#ifndef VIDEO_SVGA_RENDER_REMAP_H
# define VIDEO_SVGA_RENDER_REMAP_H
#define VIDEO_SVGA_RENDER_REMAP_H
//S3 - enhanced mode mappings CR31.3 can force doubleword mode
//Cirrus Logic handles SVGA writes seperately
//S3, CL, TGUI blitters need checking
// S3 - enhanced mode mappings CR31.3 can force doubleword mode
// Cirrus Logic handles SVGA writes seperately
// S3, CL, TGUI blitters need checking
//CL, S3, Mach64, ET4000, Banshee, TGUI all okay
//Still to check - ViRGE, HT216
// CL, S3, Mach64, ET4000, Banshee, TGUI all okay
// Still to check - ViRGE, HT216
#define VAR_BYTE_MODE (0 << 0)
#define VAR_WORD_MODE_MA13 (1 << 0)
#define VAR_WORD_MODE_MA15 (2 << 0)
@@ -23,45 +23,36 @@
#define VAR_ROW0_MA13 (1 << 2)
#define VAR_ROW1_MA14 (1 << 3)
#define ADDRESS_REMAP_FUNC(nr) \
static uint32_t address_remap_func_ ## nr(svga_t *svga, uint32_t in_addr) \
{ \
uint32_t out_addr; \
\
switch (nr & VAR_MODE_MASK) \
{ \
case VAR_BYTE_MODE: \
out_addr = in_addr; \
break; \
\
case VAR_WORD_MODE_MA13: \
out_addr = ((in_addr << 1) & 0x1fff8) | \
((in_addr >> 13) & 0x4) | \
(in_addr & ~0x1ffff); \
break; \
\
case VAR_WORD_MODE_MA15: \
out_addr = ((in_addr << 1) & 0x1fff8) | \
((in_addr >> 15) & 0x4) | \
(in_addr & ~0x1ffff); \
break; \
\
case VAR_DWORD_MODE: \
out_addr = ((in_addr << 2) & 0x3fff0) | \
((in_addr >> 14) & 0xc) | \
(in_addr & ~0x3ffff); \
break; \
} \
\
if (nr & VAR_ROW0_MA13) \
out_addr = (out_addr & ~0x8000) | \
((svga->sc & 1) ? 0x8000 : 0); \
if (nr & VAR_ROW1_MA14) \
out_addr = (out_addr & ~0x10000) | \
((svga->sc & 2) ? 0x10000 : 0); \
\
return out_addr; \
}
#define ADDRESS_REMAP_FUNC(nr) \
static uint32_t address_remap_func_##nr(svga_t *svga, uint32_t in_addr) \
{ \
uint32_t out_addr; \
\
switch (nr & VAR_MODE_MASK) { \
case VAR_BYTE_MODE: \
out_addr = in_addr; \
break; \
\
case VAR_WORD_MODE_MA13: \
out_addr = ((in_addr << 1) & 0x1fff8) | ((in_addr >> 13) & 0x4) | (in_addr & ~0x1ffff); \
break; \
\
case VAR_WORD_MODE_MA15: \
out_addr = ((in_addr << 1) & 0x1fff8) | ((in_addr >> 15) & 0x4) | (in_addr & ~0x1ffff); \
break; \
\
case VAR_DWORD_MODE: \
out_addr = ((in_addr << 2) & 0x3fff0) | ((in_addr >> 14) & 0xc) | (in_addr & ~0x3ffff); \
break; \
} \
\
if (nr & VAR_ROW0_MA13) \
out_addr = (out_addr & ~0x8000) | ((svga->sc & 1) ? 0x8000 : 0); \
if (nr & VAR_ROW1_MA14) \
out_addr = (out_addr & ~0x10000) | ((svga->sc & 2) ? 0x10000 : 0); \
\
return out_addr; \
}
ADDRESS_REMAP_FUNC(0)
ADDRESS_REMAP_FUNC(1)
@@ -80,52 +71,52 @@ ADDRESS_REMAP_FUNC(13)
ADDRESS_REMAP_FUNC(14)
ADDRESS_REMAP_FUNC(15)
static uint32_t (*address_remap_funcs[16])(svga_t *svga, uint32_t in_addr) =
{
address_remap_func_0,
address_remap_func_1,
address_remap_func_2,
address_remap_func_3,
address_remap_func_4,
address_remap_func_5,
address_remap_func_6,
address_remap_func_7,
address_remap_func_8,
address_remap_func_9,
address_remap_func_10,
address_remap_func_11,
address_remap_func_12,
address_remap_func_13,
address_remap_func_14,
address_remap_func_15
static uint32_t (*address_remap_funcs[16])(svga_t *svga, uint32_t in_addr) = {
address_remap_func_0,
address_remap_func_1,
address_remap_func_2,
address_remap_func_3,
address_remap_func_4,
address_remap_func_5,
address_remap_func_6,
address_remap_func_7,
address_remap_func_8,
address_remap_func_9,
address_remap_func_10,
address_remap_func_11,
address_remap_func_12,
address_remap_func_13,
address_remap_func_14,
address_remap_func_15
};
void svga_recalc_remap_func(svga_t *svga)
void
svga_recalc_remap_func(svga_t *svga)
{
int func_nr;
int func_nr;
if (svga->fb_only)
func_nr = 0;
else {
if (svga->force_dword_mode)
func_nr = VAR_DWORD_MODE;
else if (svga->crtc[0x14] & 0x40)
func_nr = svga->packed_chain4 ? VAR_BYTE_MODE : VAR_DWORD_MODE;
else if (svga->crtc[0x17] & 0x40)
func_nr = VAR_BYTE_MODE;
else if (svga->crtc[0x17] & 0x20)
func_nr = VAR_WORD_MODE_MA15;
else
func_nr = VAR_WORD_MODE_MA13;
if (svga->fb_only)
func_nr = 0;
else {
if (svga->force_dword_mode)
func_nr = VAR_DWORD_MODE;
else if (svga->crtc[0x14] & 0x40)
func_nr = svga->packed_chain4 ? VAR_BYTE_MODE : VAR_DWORD_MODE;
else if (svga->crtc[0x17] & 0x40)
func_nr = VAR_BYTE_MODE;
else if (svga->crtc[0x17] & 0x20)
func_nr = VAR_WORD_MODE_MA15;
else
func_nr = VAR_WORD_MODE_MA13;
if (!(svga->crtc[0x17] & 0x01))
func_nr |= VAR_ROW0_MA13;
if (!(svga->crtc[0x17] & 0x02))
func_nr |= VAR_ROW1_MA14;
}
if (!(svga->crtc[0x17] & 0x01))
func_nr |= VAR_ROW0_MA13;
if (!(svga->crtc[0x17] & 0x02))
func_nr |= VAR_ROW1_MA14;
}
svga->remap_required = (func_nr != 0);
svga->remap_func = address_remap_funcs[func_nr];
svga->remap_required = (func_nr != 0);
svga->remap_func = address_remap_funcs[func_nr];
}
#endif /*VIDEO_RENDER_REMAP_H*/

View File

@@ -18,18 +18,17 @@
*/
#ifndef VIDEO_VGA_H
# define VIDEO_VGA_H
#define VIDEO_VGA_H
typedef struct vga_t
{
svga_t svga;
typedef struct vga_t {
svga_t svga;
rom_t bios_rom;
rom_t bios_rom;
} vga_t;
static video_timings_t timing_vga = {VIDEO_ISA, 8, 16, 32, 8, 16, 32};
static video_timings_t timing_vga = { VIDEO_ISA, 8, 16, 32, 8, 16, 32 };
void vga_out(uint16_t addr, uint8_t val, void *p);
void vga_out(uint16_t addr, uint8_t val, void *p);
uint8_t vga_in(uint16_t addr, void *p);
#endif /*VIDEO_VGA_H*/
#endif /*VIDEO_VGA_H*/

View File

@@ -16,7 +16,7 @@
*/
#ifndef VIDEO_VOODOO_BANSHEE_H
# define VIDEO_VOODOO_BANSHEE_H
#define VIDEO_VOODOO_BANSHEE_H
void banshee_set_overlay_addr(void *p, uint32_t addr);

View File

@@ -16,7 +16,7 @@
*/
#ifndef VIDEO_VOODOO_BANSHEE_BLITTER_H
# define VIDEO_VOODOO_BANSHEE_BLITTER_H
#define VIDEO_VOODOO_BANSHEE_BLITTER_H
void voodoo_2d_reg_writel(voodoo_t *voodoo, uint32_t addr, uint32_t val);

View File

@@ -16,7 +16,7 @@
*/
#ifndef VIDEO_VOODOO_BLITTER_H
# define VIDEO_VOODOO_BLITTER_H
#define VIDEO_VOODOO_BLITTER_H
void voodoo_v2_blit_start(voodoo_t *voodoo);
void voodoo_v2_blit_data(voodoo_t *voodoo, uint32_t data);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -17,79 +17,72 @@
*/
#ifndef VIDEO_VOODOO_COMMON_H
# define VIDEO_VOODOO_COMMON_H
#define VIDEO_VOODOO_COMMON_H
#ifdef CLAMP
#undef CLAMP
# undef CLAMP
#endif
#define CLAMP(x) (((x) < 0) ? 0 : (((x) > 0xff) ? 0xff : (x)))
#define CLAMP16(x) (((x) < 0) ? 0 : (((x) > 0xffff) ? 0xffff : (x)))
#define CLAMP(x) (((x) < 0) ? 0 : (((x) > 0xff) ? 0xff : (x)))
#define CLAMP16(x) (((x) < 0) ? 0 : (((x) > 0xffff) ? 0xffff : (x)))
#define LOD_MAX 8
#define LOD_MAX 8
#define TEX_DIRTY_SHIFT 10
#define TEX_CACHE_MAX 64
#define TEX_CACHE_MAX 64
enum
{
VOODOO_1 = 0,
VOODOO_SB50,
VOODOO_2,
VOODOO_BANSHEE,
VOODOO_3
enum {
VOODOO_1 = 0,
VOODOO_SB50,
VOODOO_2,
VOODOO_BANSHEE,
VOODOO_3
};
typedef union int_float
{
uint32_t i;
float f;
typedef union int_float {
uint32_t i;
float f;
} int_float;
typedef struct rgbvoodoo_t
{
uint8_t b, g, r;
uint8_t pad;
typedef struct rgbvoodoo_t {
uint8_t b, g, r;
uint8_t pad;
} rgbvoodoo_t;
typedef struct rgba8_t
{
uint8_t b, g, r, a;
typedef struct rgba8_t {
uint8_t b, g, r, a;
} rgba8_t;
typedef union rgba_u
{
struct
{
uint8_t b, g, r, a;
} rgba;
uint32_t u;
typedef union rgba_u {
struct
{
uint8_t b, g, r, a;
} rgba;
uint32_t u;
} rgba_u;
#define FIFO_SIZE 65536
#define FIFO_MASK (FIFO_SIZE - 1)
#define FIFO_SIZE 65536
#define FIFO_MASK (FIFO_SIZE - 1)
#define FIFO_ENTRY_SIZE (1 << 31)
#define FIFO_ENTRIES (voodoo->fifo_write_idx - voodoo->fifo_read_idx)
#define FIFO_FULL ((voodoo->fifo_write_idx - voodoo->fifo_read_idx) >= FIFO_SIZE-4)
#define FIFO_EMPTY (voodoo->fifo_read_idx == voodoo->fifo_write_idx)
#define FIFO_ENTRIES (voodoo->fifo_write_idx - voodoo->fifo_read_idx)
#define FIFO_FULL ((voodoo->fifo_write_idx - voodoo->fifo_read_idx) >= FIFO_SIZE - 4)
#define FIFO_EMPTY (voodoo->fifo_read_idx == voodoo->fifo_write_idx)
#define FIFO_TYPE 0xff000000
#define FIFO_ADDR 0x00ffffff
#define FIFO_TYPE 0xff000000
#define FIFO_ADDR 0x00ffffff
enum
{
FIFO_INVALID = (0x00 << 24),
FIFO_WRITEL_REG = (0x01 << 24),
FIFO_WRITEW_FB = (0x02 << 24),
FIFO_WRITEL_FB = (0x03 << 24),
FIFO_WRITEL_TEX = (0x04 << 24),
FIFO_WRITEL_2DREG = (0x05 << 24)
enum {
FIFO_INVALID = (0x00 << 24),
FIFO_WRITEL_REG = (0x01 << 24),
FIFO_WRITEW_FB = (0x02 << 24),
FIFO_WRITEL_FB = (0x03 << 24),
FIFO_WRITEL_TEX = (0x04 << 24),
FIFO_WRITEL_2DREG = (0x05 << 24)
};
#define PARAM_SIZE 1024
#define PARAM_MASK (PARAM_SIZE - 1)
#define PARAM_SIZE 1024
#define PARAM_MASK (PARAM_SIZE - 1)
#define PARAM_ENTRY_SIZE (1 << 31)
#define PARAM_ENTRIES(x) (voodoo->params_write_idx - voodoo->params_read_idx[x])
@@ -98,438 +91,430 @@ enum
typedef struct
{
uint32_t addr_type;
uint32_t val;
uint32_t addr_type;
uint32_t val;
} fifo_entry_t;
typedef struct voodoo_params_t
{
int command;
typedef struct voodoo_params_t {
int command;
int32_t vertexAx, vertexAy, vertexBx, vertexBy, vertexCx, vertexCy;
int32_t vertexAx, vertexAy, vertexBx, vertexBy, vertexCx, vertexCy;
uint32_t startR, startG, startB, startZ, startA;
uint32_t startR, startG, startB, startZ, startA;
int32_t dBdX, dGdX, dRdX, dAdX, dZdX;
int32_t dBdX, dGdX, dRdX, dAdX, dZdX;
int32_t dBdY, dGdY, dRdY, dAdY, dZdY;
int32_t dBdY, dGdY, dRdY, dAdY, dZdY;
int64_t startW, dWdX, dWdY;
int64_t startW, dWdX, dWdY;
struct
{
int64_t startS, startT, startW, p1;
int64_t dSdX, dTdX, dWdX, p2;
int64_t dSdY, dTdY, dWdY, p3;
} tmu[2];
struct
{
int64_t startS, startT, startW, p1;
int64_t dSdX, dTdX, dWdX, p2;
int64_t dSdY, dTdY, dWdY, p3;
} tmu[2];
uint32_t color0, color1;
uint32_t color0, color1;
uint32_t fbzMode;
uint32_t fbzColorPath;
uint32_t fbzMode;
uint32_t fbzColorPath;
uint32_t fogMode;
rgbvoodoo_t fogColor;
struct
{
uint8_t fog, dfog;
} fogTable[64];
uint32_t fogMode;
rgbvoodoo_t fogColor;
struct
{
uint8_t fog, dfog;
} fogTable[64];
uint32_t alphaMode;
uint32_t alphaMode;
uint32_t zaColor;
uint32_t zaColor;
int chromaKey_r, chromaKey_g, chromaKey_b;
uint32_t chromaKey;
int chromaKey_r, chromaKey_g, chromaKey_b;
uint32_t chromaKey;
uint32_t textureMode[2];
uint32_t tLOD[2];
uint32_t textureMode[2];
uint32_t tLOD[2];
uint32_t texBaseAddr[2], texBaseAddr1[2], texBaseAddr2[2], texBaseAddr38[2];
uint32_t texBaseAddr[2], texBaseAddr1[2], texBaseAddr2[2], texBaseAddr38[2];
uint32_t tex_base[2][LOD_MAX+2];
uint32_t tex_end[2][LOD_MAX+2];
int tex_width[2];
int tex_w_mask[2][LOD_MAX+2];
int tex_w_nmask[2][LOD_MAX+2];
int tex_h_mask[2][LOD_MAX+2];
int tex_shift[2][LOD_MAX+2];
int tex_lod[2][LOD_MAX+2];
int tex_entry[2];
int detail_max[2], detail_bias[2], detail_scale[2];
uint32_t tex_base[2][LOD_MAX + 2];
uint32_t tex_end[2][LOD_MAX + 2];
int tex_width[2];
int tex_w_mask[2][LOD_MAX + 2];
int tex_w_nmask[2][LOD_MAX + 2];
int tex_h_mask[2][LOD_MAX + 2];
int tex_shift[2][LOD_MAX + 2];
int tex_lod[2][LOD_MAX + 2];
int tex_entry[2];
int detail_max[2], detail_bias[2], detail_scale[2];
uint32_t draw_offset, aux_offset;
uint32_t draw_offset, aux_offset;
int tformat[2];
int tformat[2];
int clipLeft, clipRight, clipLowY, clipHighY;
int clipLeft1, clipRight1, clipLowY1, clipHighY1;
int clipLeft, clipRight, clipLowY, clipHighY;
int clipLeft1, clipRight1, clipLowY1, clipHighY1;
int sign;
int sign;
uint32_t front_offset;
uint32_t front_offset;
uint32_t swapbufferCMD;
uint32_t swapbufferCMD;
uint32_t stipple;
uint32_t stipple;
int col_tiled, aux_tiled;
int row_width, aux_row_width;
int col_tiled, aux_tiled;
int row_width, aux_row_width;
} voodoo_params_t;
typedef struct texture_t
{
uint32_t base;
uint32_t tLOD;
volatile int refcount, refcount_r[4];
int is16;
uint32_t palette_checksum;
uint32_t addr_start[4], addr_end[4];
uint32_t *data;
typedef struct texture_t {
uint32_t base;
uint32_t tLOD;
volatile int refcount, refcount_r[4];
int is16;
uint32_t palette_checksum;
uint32_t addr_start[4], addr_end[4];
uint32_t *data;
} texture_t;
typedef struct vert_t
{
float sVx, sVy;
float sRed, sGreen, sBlue, sAlpha;
float sVz, sWb;
float sW0, sS0, sT0;
float sW1, sS1, sT1;
typedef struct vert_t {
float sVx, sVy;
float sRed, sGreen, sBlue, sAlpha;
float sVz, sWb;
float sW0, sS0, sT0;
float sW1, sS1, sT1;
} vert_t;
typedef struct clip_t
{
int x_min, x_max;
int y_min, y_max;
typedef struct clip_t {
int x_min, x_max;
int y_min, y_max;
} clip_t;
typedef struct voodoo_t
{
mem_mapping_t mapping;
typedef struct voodoo_t {
mem_mapping_t mapping;
int pci_enable;
int pci_enable;
uint8_t dac_data[8];
int dac_reg, dac_reg_ff;
uint8_t dac_readdata;
uint16_t dac_pll_regs[16];
uint8_t dac_data[8];
int dac_reg, dac_reg_ff;
uint8_t dac_readdata;
uint16_t dac_pll_regs[16];
float pixel_clock;
uint64_t line_time;
float pixel_clock;
uint64_t line_time;
voodoo_params_t params;
voodoo_params_t params;
uint32_t fbiInit0, fbiInit1, fbiInit2, fbiInit3, fbiInit4;
uint32_t fbiInit5, fbiInit6, fbiInit7; /*Voodoo 2*/
uint32_t fbiInit0, fbiInit1, fbiInit2, fbiInit3, fbiInit4;
uint32_t fbiInit5, fbiInit6, fbiInit7; /*Voodoo 2*/
uint32_t initEnable;
uint32_t initEnable;
uint32_t lfbMode;
uint32_t lfbMode;
uint32_t memBaseAddr;
uint32_t memBaseAddr;
int_float fvertexAx, fvertexAy, fvertexBx, fvertexBy, fvertexCx, fvertexCy;
int_float fvertexAx, fvertexAy, fvertexBx, fvertexBy, fvertexCx, fvertexCy;
uint32_t front_offset, back_offset;
uint32_t front_offset, back_offset;
uint32_t fb_read_offset, fb_write_offset;
uint32_t fb_read_offset, fb_write_offset;
int row_width, aux_row_width;
int block_width;
int row_width, aux_row_width;
int block_width;
int col_tiled, aux_tiled;
int col_tiled, aux_tiled;
uint8_t *fb_mem, *tex_mem[2];
uint16_t *tex_mem_w[2];
uint8_t *fb_mem, *tex_mem[2];
uint16_t *tex_mem_w[2];
int rgb_sel;
int rgb_sel;
uint32_t trexInit1[2];
uint32_t trexInit1[2];
uint32_t tmuConfig;
uint32_t tmuConfig;
mutex_t *swap_mutex;
int swap_count;
mutex_t *swap_mutex;
int swap_count;
int disp_buffer, draw_buffer;
pc_timer_t timer;
int disp_buffer, draw_buffer;
pc_timer_t timer;
int line;
svga_t *svga;
int line;
svga_t *svga;
uint32_t backPorch;
uint32_t videoDimensions;
uint32_t hSync, vSync;
uint32_t backPorch;
uint32_t videoDimensions;
uint32_t hSync, vSync;
int h_total, v_total, v_disp;
int h_disp;
int v_retrace;
int h_total, v_total, v_disp;
int h_disp;
int v_retrace;
struct
{
uint32_t y[4], i[4], q[4];
} nccTable[2][2];
struct
{
uint32_t y[4], i[4], q[4];
} nccTable[2][2];
rgba_u palette[2][256];
rgba_u palette[2][256];
rgba_u ncc_lookup[2][2][256];
int ncc_dirty[2];
rgba_u ncc_lookup[2][2][256];
int ncc_dirty[2];
thread_t *fifo_thread;
thread_t *render_thread[4];
event_t *wake_fifo_thread;
event_t *wake_main_thread;
event_t *fifo_not_full_event;
event_t *render_not_full_event[4];
event_t *wake_render_thread[4];
thread_t *fifo_thread;
thread_t *render_thread[4];
event_t *wake_fifo_thread;
event_t *wake_main_thread;
event_t *fifo_not_full_event;
event_t *render_not_full_event[4];
event_t *wake_render_thread[4];
int voodoo_busy;
int render_voodoo_busy[4];
int voodoo_busy;
int render_voodoo_busy[4];
int render_threads;
int odd_even_mask;
int render_threads;
int odd_even_mask;
int pixel_count[4], texel_count[4], tri_count, frame_count;
int pixel_count_old[4], texel_count_old[4];
int wr_count, rd_count, tex_count;
int pixel_count[4], texel_count[4], tri_count, frame_count;
int pixel_count_old[4], texel_count_old[4];
int wr_count, rd_count, tex_count;
int retrace_count;
int swap_interval;
uint32_t swap_offset;
int swap_pending;
int retrace_count;
int swap_interval;
uint32_t swap_offset;
int swap_pending;
int bilinear_enabled;
int dithersub_enabled;
int bilinear_enabled;
int dithersub_enabled;
int fb_size;
uint32_t fb_mask;
int fb_size;
uint32_t fb_mask;
int texture_size;
uint32_t texture_mask;
int texture_size;
uint32_t texture_mask;
int dual_tmus;
int type;
fifo_entry_t fifo[FIFO_SIZE];
volatile int fifo_read_idx, fifo_write_idx;
volatile int cmd_read, cmd_written, cmd_written_fifo;
voodoo_params_t params_buffer[PARAM_SIZE];
volatile int params_read_idx[4], params_write_idx;
uint32_t cmdfifo_base, cmdfifo_end, cmdfifo_size;
int cmdfifo_rp, cmdfifo_ret_addr;
int cmdfifo_in_sub;
volatile int cmdfifo_depth_rd, cmdfifo_depth_wr;
volatile int cmdfifo_enabled;
uint32_t cmdfifo_amin, cmdfifo_amax;
int cmdfifo_holecount;
uint32_t sSetupMode;
vert_t verts[4];
unsigned int vertex_ages[3];
unsigned int vertex_next_age;
int num_verticies;
int cull_pingpong;
int flush;
int scrfilter;
int scrfilterEnabled;
int scrfilterThreshold;
int scrfilterThresholdOld;
uint32_t last_write_addr;
uint32_t fbiPixelsIn;
uint32_t fbiChromaFail;
uint32_t fbiZFuncFail;
uint32_t fbiAFuncFail;
uint32_t fbiPixelsOut;
uint32_t bltSrcBaseAddr;
uint32_t bltDstBaseAddr;
int bltSrcXYStride, bltDstXYStride;
uint32_t bltSrcChromaRange, bltDstChromaRange;
int bltSrcChromaMinR, bltSrcChromaMinG, bltSrcChromaMinB;
int bltSrcChromaMaxR, bltSrcChromaMaxG, bltSrcChromaMaxB;
int bltDstChromaMinR, bltDstChromaMinG, bltDstChromaMinB;
int bltDstChromaMaxR, bltDstChromaMaxG, bltDstChromaMaxB;
int bltClipRight, bltClipLeft;
int bltClipHighY, bltClipLowY;
int bltSrcX, bltSrcY;
int bltDstX, bltDstY;
int bltSizeX, bltSizeY;
int bltRop[4];
uint16_t bltColorFg, bltColorBg;
uint32_t bltCommand;
uint32_t leftOverlayBuf;
struct
{
int dst_x, dst_y;
int cur_x;
int size_x, size_y;
int x_dir, y_dir;
int dst_stride;
} blt;
struct
{
uint32_t bresError0, bresError1;
uint32_t clip0Min, clip0Max;
uint32_t clip1Min, clip1Max;
uint32_t colorBack, colorFore;
uint32_t command, commandExtra;
uint32_t dstBaseAddr;
uint32_t dstFormat;
uint32_t dstSize;
uint32_t dstXY;
uint32_t lineStipple;
uint32_t lineStyle;
uint32_t rop;
uint32_t srcBaseAddr;
uint32_t srcFormat;
uint32_t srcSize;
uint32_t srcXY;
uint32_t colorPattern[64];
int bres_error_0, bres_error_1;
uint32_t colorPattern8[64], colorPattern16[64], colorPattern24[64];
int cur_x, cur_y;
uint32_t dstBaseAddr_tiled;
uint32_t dstColorkeyMin, dstColorkeyMax;
int dstSizeX, dstSizeY;
int dstX, dstY;
int dst_stride;
int patoff_x, patoff_y;
uint8_t rops[4];
uint32_t srcBaseAddr_tiled;
uint32_t srcColorkeyMin, srcColorkeyMax;
int srcSizeX, srcSizeY;
int srcX, srcY;
int src_stride;
int old_srcX;
/*Used for handling packed 24bpp host data*/
int host_data_remainder;
uint32_t old_host_data;
/*Polyfill coordinates*/
int lx[2], rx[2];
int ly[2], ry[2];
/*Polyfill state*/
int error[2];
int dx[2], dy[2];
int x_inc[2]; /*y_inc is always 1 for polyfill*/
int lx_cur, rx_cur;
clip_t clip[2];
uint8_t host_data[16384];
int host_data_count;
int host_data_size_src, host_data_size_dest;
int src_stride_src, src_stride_dest;
int src_bpp;
int line_pix_pos, line_bit_pos;
int line_rep_cnt, line_bit_mask_size;
} banshee_blt;
struct
{
uint32_t vidOverlayStartCoords;
uint32_t vidOverlayEndScreenCoords;
uint32_t vidOverlayDudx, vidOverlayDudxOffsetSrcWidth;
uint32_t vidOverlayDvdy, vidOverlayDvdyOffset;
//uint32_t vidDesktopOverlayStride;
int start_x, start_y;
int end_x, end_y;
int size_x, size_y;
int overlay_bytes;
unsigned int src_y;
} overlay;
rgbvoodoo_t clutData[33];
int clutData_dirty;
rgbvoodoo_t clutData256[256];
uint32_t video_16to32[0x10000];
uint8_t dirty_line[2048];
int dirty_line_low, dirty_line_high;
int fb_write_buffer, fb_draw_buffer;
int buffer_cutoff;
uint32_t tile_base, tile_stride;
int tile_stride_shift, tile_x, tile_x_real;
int y_origin_swap;
int read_time, write_time, burst_time;
pc_timer_t wake_timer;
/* screen filter tables */
uint8_t thefilter[256][256];
uint8_t thefilterg[256][256];
uint8_t thefilterb[256][256];
uint16_t purpleline[256][3];
texture_t texture_cache[2][TEX_CACHE_MAX];
uint8_t texture_present[2][16384];
int texture_last_removed;
uint32_t palette_checksum[2];
int palette_dirty[2];
int dual_tmus;
int type;
fifo_entry_t fifo[FIFO_SIZE];
volatile int fifo_read_idx, fifo_write_idx;
volatile int cmd_read, cmd_written, cmd_written_fifo;
voodoo_params_t params_buffer[PARAM_SIZE];
volatile int params_read_idx[4], params_write_idx;
uint32_t cmdfifo_base, cmdfifo_end, cmdfifo_size;
int cmdfifo_rp, cmdfifo_ret_addr;
int cmdfifo_in_sub;
volatile int cmdfifo_depth_rd, cmdfifo_depth_wr;
volatile int cmdfifo_enabled;
uint32_t cmdfifo_amin, cmdfifo_amax;
int cmdfifo_holecount;
uint32_t sSetupMode;
vert_t verts[4];
unsigned int vertex_ages[3];
unsigned int vertex_next_age;
int num_verticies;
int cull_pingpong;
int flush;
int scrfilter;
int scrfilterEnabled;
int scrfilterThreshold;
int scrfilterThresholdOld;
uint32_t last_write_addr;
uint32_t fbiPixelsIn;
uint32_t fbiChromaFail;
uint32_t fbiZFuncFail;
uint32_t fbiAFuncFail;
uint32_t fbiPixelsOut;
uint32_t bltSrcBaseAddr;
uint32_t bltDstBaseAddr;
int bltSrcXYStride, bltDstXYStride;
uint32_t bltSrcChromaRange, bltDstChromaRange;
int bltSrcChromaMinR, bltSrcChromaMinG, bltSrcChromaMinB;
int bltSrcChromaMaxR, bltSrcChromaMaxG, bltSrcChromaMaxB;
int bltDstChromaMinR, bltDstChromaMinG, bltDstChromaMinB;
int bltDstChromaMaxR, bltDstChromaMaxG, bltDstChromaMaxB;
int bltClipRight, bltClipLeft;
int bltClipHighY, bltClipLowY;
int bltSrcX, bltSrcY;
int bltDstX, bltDstY;
int bltSizeX, bltSizeY;
int bltRop[4];
uint16_t bltColorFg, bltColorBg;
uint32_t bltCommand;
uint32_t leftOverlayBuf;
struct
{
int dst_x, dst_y;
int cur_x;
int size_x, size_y;
int x_dir, y_dir;
int dst_stride;
} blt;
struct
{
uint32_t bresError0, bresError1;
uint32_t clip0Min, clip0Max;
uint32_t clip1Min, clip1Max;
uint32_t colorBack, colorFore;
uint32_t command, commandExtra;
uint32_t dstBaseAddr;
uint32_t dstFormat;
uint32_t dstSize;
uint32_t dstXY;
uint32_t lineStipple;
uint32_t lineStyle;
uint32_t rop;
uint32_t srcBaseAddr;
uint32_t srcFormat;
uint32_t srcSize;
uint32_t srcXY;
uint32_t colorPattern[64];
int bres_error_0, bres_error_1;
uint32_t colorPattern8[64], colorPattern16[64], colorPattern24[64];
int cur_x, cur_y;
uint32_t dstBaseAddr_tiled;
uint32_t dstColorkeyMin, dstColorkeyMax;
int dstSizeX, dstSizeY;
int dstX, dstY;
int dst_stride;
int patoff_x, patoff_y;
uint8_t rops[4];
uint32_t srcBaseAddr_tiled;
uint32_t srcColorkeyMin, srcColorkeyMax;
int srcSizeX, srcSizeY;
int srcX, srcY;
int src_stride;
int old_srcX;
/*Used for handling packed 24bpp host data*/
int host_data_remainder;
uint32_t old_host_data;
/*Polyfill coordinates*/
int lx[2], rx[2];
int ly[2], ry[2];
/*Polyfill state*/
int error[2];
int dx[2], dy[2];
int x_inc[2]; /*y_inc is always 1 for polyfill*/
int lx_cur, rx_cur;
clip_t clip[2];
uint8_t host_data[16384];
int host_data_count;
int host_data_size_src, host_data_size_dest;
int src_stride_src, src_stride_dest;
int src_bpp;
int line_pix_pos, line_bit_pos;
int line_rep_cnt, line_bit_mask_size;
} banshee_blt;
struct
{
uint32_t vidOverlayStartCoords;
uint32_t vidOverlayEndScreenCoords;
uint32_t vidOverlayDudx, vidOverlayDudxOffsetSrcWidth;
uint32_t vidOverlayDvdy, vidOverlayDvdyOffset;
// uint32_t vidDesktopOverlayStride;
int start_x, start_y;
int end_x, end_y;
int size_x, size_y;
int overlay_bytes;
unsigned int src_y;
} overlay;
rgbvoodoo_t clutData[33];
int clutData_dirty;
rgbvoodoo_t clutData256[256];
uint32_t video_16to32[0x10000];
uint8_t dirty_line[2048];
int dirty_line_low, dirty_line_high;
int fb_write_buffer, fb_draw_buffer;
int buffer_cutoff;
uint32_t tile_base, tile_stride;
int tile_stride_shift, tile_x, tile_x_real;
int y_origin_swap;
int read_time, write_time, burst_time;
pc_timer_t wake_timer;
/* screen filter tables */
uint8_t thefilter[256][256];
uint8_t thefilterg[256][256];
uint8_t thefilterb[256][256];
uint16_t purpleline[256][3];
texture_t texture_cache[2][TEX_CACHE_MAX];
uint8_t texture_present[2][16384];
int texture_last_removed;
uint32_t palette_checksum[2];
int palette_dirty[2];
uint64_t time;
int render_time[4];
uint64_t time;
int render_time[4];
int force_blit_count;
int can_blit;
mutex_t* force_blit_mutex;
int force_blit_count;
int can_blit;
mutex_t *force_blit_mutex;
int use_recompiler;
void *codegen_data;
int use_recompiler;
void *codegen_data;
struct voodoo_set_t *set;
struct voodoo_set_t *set;
uint8_t fifo_thread_run, render_thread_run[4];
uint8_t fifo_thread_run, render_thread_run[4];
uint8_t *vram, *changedvram;
uint8_t *vram, *changedvram;
void *p;
void *p;
} voodoo_t;
typedef struct voodoo_set_t
{
voodoo_t *voodoos[2];
typedef struct voodoo_set_t {
voodoo_t *voodoos[2];
mem_mapping_t snoop_mapping;
mem_mapping_t snoop_mapping;
int nr_cards;
int nr_cards;
} voodoo_set_t;
extern rgba8_t rgb332[0x100], ai44[0x100], rgb565[0x10000], argb1555[0x10000], argb4444[0x10000], ai88[0x10000];
void voodoo_generate_vb_filters(voodoo_t *voodoo, int fcr, int fcg);
void voodoo_recalc(voodoo_t *voodoo);
void voodoo_update_ncc(voodoo_t *voodoo, int tmu);
void *voodoo_2d3d_card_init(int type);
void voodoo_card_close(voodoo_t *voodoo);
void voodoo_card_close(voodoo_t *voodoo);
#endif /*VIDEO_VOODOO_COMMON_H*/

View File

@@ -17,7 +17,7 @@
*/
#ifndef VIDEO_VOODOO_DISPLAY_H
# define VIDEO_VOODOO_DISPLAY_H
#define VIDEO_VOODOO_DISPLAY_H
void voodoo_update_ncc(voodoo_t *voodoo, int tmu);
void voodoo_pixelclock_update(voodoo_t *voodoo);

View File

@@ -17,11 +17,11 @@
*/
#ifndef VIDEO_VOODOO_FB_H
# define VIDEO_VOODOO_FB_H
#define VIDEO_VOODOO_FB_H
uint16_t voodoo_fb_readw(uint32_t addr, void *p);
uint32_t voodoo_fb_readl(uint32_t addr, void *p);
void voodoo_fb_writew(uint32_t addr, uint16_t val, void *p);
void voodoo_fb_writel(uint32_t addr, uint32_t val, void *p);
void voodoo_fb_writew(uint32_t addr, uint16_t val, void *p);
void voodoo_fb_writel(uint32_t addr, uint32_t val, void *p);
#endif /*VIDEO_VOODOO_FB_H*/

View File

@@ -17,7 +17,7 @@
*/
#ifndef VIDEO_VOODOO_FIFO_H
# define VIDEO_VOODOO_FIFO_H
#define VIDEO_VOODOO_FIFO_H
void voodoo_wake_fifo_thread(voodoo_t *voodoo);
void voodoo_wake_fifo_thread_now(voodoo_t *voodoo);

View File

@@ -17,7 +17,7 @@
*/
#ifndef VIDEO_VOODOO_REG_H
# define VIDEO_VOODOO_REG_H
#define VIDEO_VOODOO_REG_H
void voodoo_reg_writel(uint32_t addr, uint32_t val, void *p);

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
#ifndef VIDEO_VOODOO_RENDER_H
# define VIDEO_VOODOO_RENDER_H
#define VIDEO_VOODOO_RENDER_H
#if !(defined i386 || defined __i386 || defined __i386__ || defined _X86_ || defined _M_IX86 || defined __amd64__ || defined _M_X64)
#define NO_CODEGEN
# define NO_CODEGEN
#endif
#ifndef NO_CODEGEN
@@ -10,295 +10,263 @@ void voodoo_codegen_init(voodoo_t *voodoo);
void voodoo_codegen_close(voodoo_t *voodoo);
#endif
#define DEPTH_TEST(comp_depth) \
do \
{ \
switch (depth_op) \
{ \
case DEPTHOP_NEVER: \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
case DEPTHOP_LESSTHAN: \
if (!(comp_depth < old_depth)) \
{ \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_EQUAL: \
if (!(comp_depth == old_depth)) \
{ \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_LESSTHANEQUAL: \
if (!(comp_depth <= old_depth)) \
{ \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_GREATERTHAN: \
if (!(comp_depth > old_depth)) \
{ \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_NOTEQUAL: \
if (!(comp_depth != old_depth)) \
{ \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_GREATERTHANEQUAL: \
if (!(comp_depth >= old_depth)) \
{ \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_ALWAYS: \
break; \
} \
} while (0)
#define DEPTH_TEST(comp_depth) \
do { \
switch (depth_op) { \
case DEPTHOP_NEVER: \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
case DEPTHOP_LESSTHAN: \
if (!(comp_depth < old_depth)) { \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_EQUAL: \
if (!(comp_depth == old_depth)) { \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_LESSTHANEQUAL: \
if (!(comp_depth <= old_depth)) { \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_GREATERTHAN: \
if (!(comp_depth > old_depth)) { \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_NOTEQUAL: \
if (!(comp_depth != old_depth)) { \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_GREATERTHANEQUAL: \
if (!(comp_depth >= old_depth)) { \
voodoo->fbiZFuncFail++; \
goto skip_pixel; \
} \
break; \
case DEPTHOP_ALWAYS: \
break; \
} \
} while (0)
#define APPLY_FOG(src_r, src_g, src_b, z, ia, w) \
do \
{ \
if (params->fogMode & FOG_CONSTANT) \
{ \
src_r += params->fogColor.r; \
src_g += params->fogColor.g; \
src_b += params->fogColor.b; \
} \
else \
{ \
int fog_r, fog_g, fog_b, fog_a = 0; \
int fog_idx; \
\
if (!(params->fogMode & FOG_ADD)) \
{ \
fog_r = params->fogColor.r; \
fog_g = params->fogColor.g; \
fog_b = params->fogColor.b; \
} \
else \
fog_r = fog_g = fog_b = 0; \
\
if (!(params->fogMode & FOG_MULT)) \
{ \
fog_r -= src_r; \
fog_g -= src_g; \
fog_b -= src_b; \
} \
\
switch (params->fogMode & (FOG_Z|FOG_ALPHA)) \
{ \
case 0: \
fog_idx = (w_depth >> 10) & 0x3f; \
\
fog_a = params->fogTable[fog_idx].fog; \
fog_a += (params->fogTable[fog_idx].dfog * ((w_depth >> 2) & 0xff)) >> 10; \
break; \
case FOG_Z: \
fog_a = (z >> 20) & 0xff; \
break; \
case FOG_ALPHA: \
fog_a = CLAMP(ia >> 12); \
break; \
case FOG_W: \
fog_a = CLAMP((w >> 32) & 0xff); \
break; \
} \
fog_a++; \
\
fog_r = (fog_r * fog_a) >> 8; \
fog_g = (fog_g * fog_a) >> 8; \
fog_b = (fog_b * fog_a) >> 8; \
\
if (params->fogMode & FOG_MULT) \
{ \
src_r = fog_r; \
src_g = fog_g; \
src_b = fog_b; \
} \
else \
{ \
src_r += fog_r; \
src_g += fog_g; \
src_b += fog_b; \
} \
} \
\
src_r = CLAMP(src_r); \
src_g = CLAMP(src_g); \
src_b = CLAMP(src_b); \
} while (0)
#define ALPHA_TEST(src_a) \
do \
{ \
switch (alpha_func) \
{ \
case AFUNC_NEVER: \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
case AFUNC_LESSTHAN: \
if (!(src_a < a_ref)) \
{ \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_EQUAL: \
if (!(src_a == a_ref)) \
{ \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_LESSTHANEQUAL: \
if (!(src_a <= a_ref)) \
{ \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_GREATERTHAN: \
if (!(src_a > a_ref)) \
{ \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_NOTEQUAL: \
if (!(src_a != a_ref)) \
{ \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_GREATERTHANEQUAL: \
if (!(src_a >= a_ref)) \
{ \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_ALWAYS: \
break; \
} \
} while (0)
#define ALPHA_BLEND(src_r, src_g, src_b, src_a) \
do \
{ \
int _a; \
int newdest_r = 0, newdest_g = 0, newdest_b = 0; \
\
switch (dest_afunc) \
{ \
case AFUNC_AZERO: \
newdest_r = newdest_g = newdest_b = 0; \
break; \
case AFUNC_ASRC_ALPHA: \
newdest_r = (dest_r * src_a) / 255; \
newdest_g = (dest_g * src_a) / 255; \
newdest_b = (dest_b * src_a) / 255; \
break; \
case AFUNC_A_COLOR: \
newdest_r = (dest_r * src_r) / 255; \
newdest_g = (dest_g * src_g) / 255; \
newdest_b = (dest_b * src_b) / 255; \
break; \
case AFUNC_ADST_ALPHA: \
newdest_r = (dest_r * dest_a) / 255; \
newdest_g = (dest_g * dest_a) / 255; \
newdest_b = (dest_b * dest_a) / 255; \
break; \
case AFUNC_AONE: \
newdest_r = dest_r; \
newdest_g = dest_g; \
newdest_b = dest_b; \
break; \
case AFUNC_AOMSRC_ALPHA: \
newdest_r = (dest_r * (255-src_a)) / 255; \
newdest_g = (dest_g * (255-src_a)) / 255; \
newdest_b = (dest_b * (255-src_a)) / 255; \
break; \
case AFUNC_AOM_COLOR: \
newdest_r = (dest_r * (255-src_r)) / 255; \
newdest_g = (dest_g * (255-src_g)) / 255; \
newdest_b = (dest_b * (255-src_b)) / 255; \
break; \
case AFUNC_AOMDST_ALPHA: \
newdest_r = (dest_r * (255-dest_a)) / 255; \
newdest_g = (dest_g * (255-dest_a)) / 255; \
newdest_b = (dest_b * (255-dest_a)) / 255; \
break; \
case AFUNC_ASATURATE: \
_a = MIN(src_a, 1-dest_a); \
newdest_r = (dest_r * _a) / 255; \
newdest_g = (dest_g * _a) / 255; \
newdest_b = (dest_b * _a) / 255; \
break; \
} \
\
switch (src_afunc) \
{ \
case AFUNC_AZERO: \
src_r = src_g = src_b = 0; \
break; \
case AFUNC_ASRC_ALPHA: \
src_r = (src_r * src_a) / 255; \
src_g = (src_g * src_a) / 255; \
src_b = (src_b * src_a) / 255; \
break; \
case AFUNC_A_COLOR: \
src_r = (src_r * dest_r) / 255; \
src_g = (src_g * dest_g) / 255; \
src_b = (src_b * dest_b) / 255; \
break; \
case AFUNC_ADST_ALPHA: \
src_r = (src_r * dest_a) / 255; \
src_g = (src_g * dest_a) / 255; \
src_b = (src_b * dest_a) / 255; \
break; \
case AFUNC_AONE: \
break; \
case AFUNC_AOMSRC_ALPHA: \
src_r = (src_r * (255-src_a)) / 255; \
src_g = (src_g * (255-src_a)) / 255; \
src_b = (src_b * (255-src_a)) / 255; \
break; \
case AFUNC_AOM_COLOR: \
src_r = (src_r * (255-dest_r)) / 255; \
src_g = (src_g * (255-dest_g)) / 255; \
src_b = (src_b * (255-dest_b)) / 255; \
break; \
case AFUNC_AOMDST_ALPHA: \
src_r = (src_r * (255-dest_a)) / 255; \
src_g = (src_g * (255-dest_a)) / 255; \
src_b = (src_b * (255-dest_a)) / 255; \
break; \
case AFUNC_ACOLORBEFOREFOG: \
fatal("AFUNC_ACOLORBEFOREFOG\n"); \
break; \
} \
\
src_r += newdest_r; \
src_g += newdest_g; \
src_b += newdest_b; \
\
src_r = CLAMP(src_r); \
src_g = CLAMP(src_g); \
src_b = CLAMP(src_b); \
} while(0)
#define APPLY_FOG(src_r, src_g, src_b, z, ia, w) \
do { \
if (params->fogMode & FOG_CONSTANT) { \
src_r += params->fogColor.r; \
src_g += params->fogColor.g; \
src_b += params->fogColor.b; \
} else { \
int fog_r, fog_g, fog_b, fog_a = 0; \
int fog_idx; \
\
if (!(params->fogMode & FOG_ADD)) { \
fog_r = params->fogColor.r; \
fog_g = params->fogColor.g; \
fog_b = params->fogColor.b; \
} else \
fog_r = fog_g = fog_b = 0; \
\
if (!(params->fogMode & FOG_MULT)) { \
fog_r -= src_r; \
fog_g -= src_g; \
fog_b -= src_b; \
} \
\
switch (params->fogMode & (FOG_Z | FOG_ALPHA)) { \
case 0: \
fog_idx = (w_depth >> 10) & 0x3f; \
\
fog_a = params->fogTable[fog_idx].fog; \
fog_a += (params->fogTable[fog_idx].dfog * ((w_depth >> 2) & 0xff)) >> 10; \
break; \
case FOG_Z: \
fog_a = (z >> 20) & 0xff; \
break; \
case FOG_ALPHA: \
fog_a = CLAMP(ia >> 12); \
break; \
case FOG_W: \
fog_a = CLAMP((w >> 32) & 0xff); \
break; \
} \
fog_a++; \
\
fog_r = (fog_r * fog_a) >> 8; \
fog_g = (fog_g * fog_a) >> 8; \
fog_b = (fog_b * fog_a) >> 8; \
\
if (params->fogMode & FOG_MULT) { \
src_r = fog_r; \
src_g = fog_g; \
src_b = fog_b; \
} else { \
src_r += fog_r; \
src_g += fog_g; \
src_b += fog_b; \
} \
} \
\
src_r = CLAMP(src_r); \
src_g = CLAMP(src_g); \
src_b = CLAMP(src_b); \
} while (0)
#define ALPHA_TEST(src_a) \
do { \
switch (alpha_func) { \
case AFUNC_NEVER: \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
case AFUNC_LESSTHAN: \
if (!(src_a < a_ref)) { \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_EQUAL: \
if (!(src_a == a_ref)) { \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_LESSTHANEQUAL: \
if (!(src_a <= a_ref)) { \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_GREATERTHAN: \
if (!(src_a > a_ref)) { \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_NOTEQUAL: \
if (!(src_a != a_ref)) { \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_GREATERTHANEQUAL: \
if (!(src_a >= a_ref)) { \
voodoo->fbiAFuncFail++; \
goto skip_pixel; \
} \
break; \
case AFUNC_ALWAYS: \
break; \
} \
} while (0)
#define ALPHA_BLEND(src_r, src_g, src_b, src_a) \
do { \
int _a; \
int newdest_r = 0, newdest_g = 0, newdest_b = 0; \
\
switch (dest_afunc) { \
case AFUNC_AZERO: \
newdest_r = newdest_g = newdest_b = 0; \
break; \
case AFUNC_ASRC_ALPHA: \
newdest_r = (dest_r * src_a) / 255; \
newdest_g = (dest_g * src_a) / 255; \
newdest_b = (dest_b * src_a) / 255; \
break; \
case AFUNC_A_COLOR: \
newdest_r = (dest_r * src_r) / 255; \
newdest_g = (dest_g * src_g) / 255; \
newdest_b = (dest_b * src_b) / 255; \
break; \
case AFUNC_ADST_ALPHA: \
newdest_r = (dest_r * dest_a) / 255; \
newdest_g = (dest_g * dest_a) / 255; \
newdest_b = (dest_b * dest_a) / 255; \
break; \
case AFUNC_AONE: \
newdest_r = dest_r; \
newdest_g = dest_g; \
newdest_b = dest_b; \
break; \
case AFUNC_AOMSRC_ALPHA: \
newdest_r = (dest_r * (255 - src_a)) / 255; \
newdest_g = (dest_g * (255 - src_a)) / 255; \
newdest_b = (dest_b * (255 - src_a)) / 255; \
break; \
case AFUNC_AOM_COLOR: \
newdest_r = (dest_r * (255 - src_r)) / 255; \
newdest_g = (dest_g * (255 - src_g)) / 255; \
newdest_b = (dest_b * (255 - src_b)) / 255; \
break; \
case AFUNC_AOMDST_ALPHA: \
newdest_r = (dest_r * (255 - dest_a)) / 255; \
newdest_g = (dest_g * (255 - dest_a)) / 255; \
newdest_b = (dest_b * (255 - dest_a)) / 255; \
break; \
case AFUNC_ASATURATE: \
_a = MIN(src_a, 1 - dest_a); \
newdest_r = (dest_r * _a) / 255; \
newdest_g = (dest_g * _a) / 255; \
newdest_b = (dest_b * _a) / 255; \
break; \
} \
\
switch (src_afunc) { \
case AFUNC_AZERO: \
src_r = src_g = src_b = 0; \
break; \
case AFUNC_ASRC_ALPHA: \
src_r = (src_r * src_a) / 255; \
src_g = (src_g * src_a) / 255; \
src_b = (src_b * src_a) / 255; \
break; \
case AFUNC_A_COLOR: \
src_r = (src_r * dest_r) / 255; \
src_g = (src_g * dest_g) / 255; \
src_b = (src_b * dest_b) / 255; \
break; \
case AFUNC_ADST_ALPHA: \
src_r = (src_r * dest_a) / 255; \
src_g = (src_g * dest_a) / 255; \
src_b = (src_b * dest_a) / 255; \
break; \
case AFUNC_AONE: \
break; \
case AFUNC_AOMSRC_ALPHA: \
src_r = (src_r * (255 - src_a)) / 255; \
src_g = (src_g * (255 - src_a)) / 255; \
src_b = (src_b * (255 - src_a)) / 255; \
break; \
case AFUNC_AOM_COLOR: \
src_r = (src_r * (255 - dest_r)) / 255; \
src_g = (src_g * (255 - dest_g)) / 255; \
src_b = (src_b * (255 - dest_b)) / 255; \
break; \
case AFUNC_AOMDST_ALPHA: \
src_r = (src_r * (255 - dest_a)) / 255; \
src_g = (src_g * (255 - dest_a)) / 255; \
src_b = (src_b * (255 - dest_a)) / 255; \
break; \
case AFUNC_ACOLORBEFOREFOG: \
fatal("AFUNC_ACOLORBEFOREFOG\n"); \
break; \
} \
\
src_r += newdest_r; \
src_g += newdest_g; \
src_b += newdest_b; \
\
src_r = CLAMP(src_r); \
src_g = CLAMP(src_g); \
src_b = CLAMP(src_b); \
} while (0)
void voodoo_render_thread_1(void *param);
void voodoo_render_thread_2(void *param);
@@ -309,35 +277,32 @@ void voodoo_queue_triangle(voodoo_t *voodoo, voodoo_params_t *params);
extern int voodoo_recomp;
extern int tris;
static __inline void voodoo_wake_render_thread(voodoo_t *voodoo)
static __inline void
voodoo_wake_render_thread(voodoo_t *voodoo)
{
thread_set_event(voodoo->wake_render_thread[0]); /*Wake up render thread if moving from idle*/
if (voodoo->render_threads >= 2)
thread_set_event(voodoo->wake_render_thread[1]); /*Wake up render thread if moving from idle*/
if (voodoo->render_threads == 4)
{
thread_set_event(voodoo->wake_render_thread[2]); /*Wake up render thread if moving from idle*/
thread_set_event(voodoo->wake_render_thread[3]); /*Wake up render thread if moving from idle*/
}
thread_set_event(voodoo->wake_render_thread[0]); /*Wake up render thread if moving from idle*/
if (voodoo->render_threads >= 2)
thread_set_event(voodoo->wake_render_thread[1]); /*Wake up render thread if moving from idle*/
if (voodoo->render_threads == 4) {
thread_set_event(voodoo->wake_render_thread[2]); /*Wake up render thread if moving from idle*/
thread_set_event(voodoo->wake_render_thread[3]); /*Wake up render thread if moving from idle*/
}
}
static __inline void voodoo_wait_for_render_thread_idle(voodoo_t *voodoo)
static __inline void
voodoo_wait_for_render_thread_idle(voodoo_t *voodoo)
{
while (!PARAM_EMPTY(0) || (voodoo->render_threads >= 2 && !PARAM_EMPTY(1)) ||
(voodoo->render_threads == 4 && (!PARAM_EMPTY(2) || !PARAM_EMPTY(3))) ||
voodoo->render_voodoo_busy[0] || (voodoo->render_threads >= 2 && voodoo->render_voodoo_busy[1]) ||
(voodoo->render_threads == 4 && (voodoo->render_voodoo_busy[2] || voodoo->render_voodoo_busy[3])))
{
voodoo_wake_render_thread(voodoo);
if (!PARAM_EMPTY(0) || voodoo->render_voodoo_busy[0])
thread_wait_event(voodoo->render_not_full_event[0], 1);
if (voodoo->render_threads >= 2 && (!PARAM_EMPTY(1) || voodoo->render_voodoo_busy[1]))
thread_wait_event(voodoo->render_not_full_event[1], 1);
if (voodoo->render_threads == 4 && (!PARAM_EMPTY(2) || voodoo->render_voodoo_busy[2]))
thread_wait_event(voodoo->render_not_full_event[2], 1);
if (voodoo->render_threads == 4 && (!PARAM_EMPTY(3) || voodoo->render_voodoo_busy[3]))
thread_wait_event(voodoo->render_not_full_event[3], 1);
}
while (!PARAM_EMPTY(0) || (voodoo->render_threads >= 2 && !PARAM_EMPTY(1)) || (voodoo->render_threads == 4 && (!PARAM_EMPTY(2) || !PARAM_EMPTY(3))) || voodoo->render_voodoo_busy[0] || (voodoo->render_threads >= 2 && voodoo->render_voodoo_busy[1]) || (voodoo->render_threads == 4 && (voodoo->render_voodoo_busy[2] || voodoo->render_voodoo_busy[3]))) {
voodoo_wake_render_thread(voodoo);
if (!PARAM_EMPTY(0) || voodoo->render_voodoo_busy[0])
thread_wait_event(voodoo->render_not_full_event[0], 1);
if (voodoo->render_threads >= 2 && (!PARAM_EMPTY(1) || voodoo->render_voodoo_busy[1]))
thread_wait_event(voodoo->render_not_full_event[1], 1);
if (voodoo->render_threads == 4 && (!PARAM_EMPTY(2) || voodoo->render_voodoo_busy[2]))
thread_wait_event(voodoo->render_not_full_event[2], 1);
if (voodoo->render_threads == 4 && (!PARAM_EMPTY(3) || voodoo->render_voodoo_busy[3]))
thread_wait_event(voodoo->render_not_full_event[3], 1);
}
}
#endif /*VIDEO_VOODOO_RENDER_H*/

View File

@@ -17,7 +17,7 @@
*/
#ifndef VIDEO_VOODOO_SETUP_H
# define VIDEO_VOODOO_SETUP_H
#define VIDEO_VOODOO_SETUP_H
void voodoo_triangle_setup(voodoo_t *voodoo);

View File

@@ -17,21 +17,20 @@
*/
#ifndef VIDEO_VOODOO_TEXTURE_H
# define VIDEO_VOODOO_TEXTURE_H
#define VIDEO_VOODOO_TEXTURE_H
static const uint32_t texture_offset[LOD_MAX+3] =
{
0,
256*256,
256*256 + 128*128,
256*256 + 128*128 + 64*64,
256*256 + 128*128 + 64*64 + 32*32,
256*256 + 128*128 + 64*64 + 32*32 + 16*16,
256*256 + 128*128 + 64*64 + 32*32 + 16*16 + 8*8,
256*256 + 128*128 + 64*64 + 32*32 + 16*16 + 8*8 + 4*4,
256*256 + 128*128 + 64*64 + 32*32 + 16*16 + 8*8 + 4*4 + 2*2,
256*256 + 128*128 + 64*64 + 32*32 + 16*16 + 8*8 + 4*4 + 2*2 + 1*1,
256*256 + 128*128 + 64*64 + 32*32 + 16*16 + 8*8 + 4*4 + 2*2 + 1*1 + 1
static const uint32_t texture_offset[LOD_MAX + 3] = {
0,
256 * 256,
256 * 256 + 128 * 128,
256 * 256 + 128 * 128 + 64 * 64,
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32,
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16,
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16 + 8 * 8,
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16 + 8 * 8 + 4 * 4,
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16 + 8 * 8 + 4 * 4 + 2 * 2,
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16 + 8 * 8 + 4 * 4 + 2 * 2 + 1 * 1,
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16 + 8 * 8 + 4 * 4 + 2 * 2 + 1 * 1 + 1
};
void voodoo_recalc_tex(voodoo_t *voodoo, int tmu);

View File

@@ -16,55 +16,55 @@
*/
#ifndef VIDEO_XGA_H
# define VIDEO_XGA_H
#define VIDEO_XGA_H
#include <86box/rom.h>
typedef struct {
int ena;
int x, y, xoff, yoff, cur_xsize, cur_ysize;
int ena;
int x, y, xoff, yoff, cur_xsize, cur_ysize;
uint32_t addr;
} xga_hwcursor_t;
typedef struct xga_t
{
mem_mapping_t memio_mapping;
mem_mapping_t linear_mapping;
mem_mapping_t video_mapping;
rom_t bios_rom;
xga_hwcursor_t hwcursor, hwcursor_latch;
PALETTE extpal;
typedef struct xga_t {
mem_mapping_t memio_mapping;
mem_mapping_t linear_mapping;
mem_mapping_t video_mapping;
rom_t bios_rom;
xga_hwcursor_t hwcursor, hwcursor_latch;
PALETTE extpal;
uint8_t test, atest[2], testpixel;;
uint8_t pos_regs[8];
uint8_t disp_addr;
uint8_t cfg_reg;
uint8_t instance;
uint8_t op_mode;
uint8_t aperture_cntl;
uint8_t ap_idx;
uint8_t access_mode;
uint8_t regs[0x100];
uint8_t regs_idx;
uint8_t hwc_hotspot_x;
uint8_t hwc_hotspot_y;
uint8_t disp_cntl_1, disp_cntl_2;
uint8_t clk_sel_1, clk_sel_2;
uint8_t hwc_control;
uint8_t bus_arb;
uint8_t select_pos_isa;
uint8_t hwcursor_oddeven;
uint8_t cfg_reg_instance;
uint8_t rowcount;
uint8_t pal_idx, pal_idx_prefetch;
uint8_t pal_seq;
uint8_t pal_mask;
uint8_t pal_r, pal_r_prefetch;
uint8_t pal_g, pal_g_prefetch;
uint8_t pal_b, pal_b_prefetch;
uint8_t sprite_data[1024];
uint8_t scrollcache;
uint8_t direct_color;
uint8_t test, atest[2], testpixel;
;
uint8_t pos_regs[8];
uint8_t disp_addr;
uint8_t cfg_reg;
uint8_t instance;
uint8_t op_mode;
uint8_t aperture_cntl;
uint8_t ap_idx;
uint8_t access_mode;
uint8_t regs[0x100];
uint8_t regs_idx;
uint8_t hwc_hotspot_x;
uint8_t hwc_hotspot_y;
uint8_t disp_cntl_1, disp_cntl_2;
uint8_t clk_sel_1, clk_sel_2;
uint8_t hwc_control;
uint8_t bus_arb;
uint8_t select_pos_isa;
uint8_t hwcursor_oddeven;
uint8_t cfg_reg_instance;
uint8_t rowcount;
uint8_t pal_idx, pal_idx_prefetch;
uint8_t pal_seq;
uint8_t pal_mask;
uint8_t pal_r, pal_r_prefetch;
uint8_t pal_g, pal_g_prefetch;
uint8_t pal_b, pal_b_prefetch;
uint8_t sprite_data[1024];
uint8_t scrollcache;
uint8_t direct_color;
uint8_t *vram, *changedvram;
int16_t hwc_pos_x;
@@ -84,7 +84,7 @@ typedef struct xga_t
uint16_t sprite_pal_addr_idx_prefetch;
int v_total, dispend, v_syncstart, split, v_blankstart,
h_disp, h_disp_old, h_total, h_disp_time, rowoffset,
h_disp, h_disp_old, h_total, h_disp_time, rowoffset,
dispon, h_disp_on, vc, sc, linepos, oddeven, firstline, lastline,
firstline_draw, lastline_draw, displine, fullchange, interlace,
char_width, hwcursor_on;
@@ -103,10 +103,10 @@ typedef struct xga_t
uint32_t vram_size;
uint32_t vram_mask;
uint32_t rom_addr;
uint32_t ma, maback;
uint32_t extpallook[256];
uint32_t read_bank, write_bank;
uint32_t px_map_base;
uint32_t ma, maback;
uint32_t extpallook[256];
uint32_t read_bank, write_bank;
uint32_t px_map_base;
uint64_t dispontime, dispofftime;
@@ -153,7 +153,7 @@ typedef struct xga_t
uint32_t command;
uint32_t dir_cmd;
uint8_t px_map_format[4];
uint8_t px_map_format[4];
uint16_t px_map_width[4];
uint16_t px_map_height[4];
uint32_t px_map_base[4];
@@ -161,4 +161,4 @@ typedef struct xga_t
volatile int force_busy;
} xga_t;
#endif /*VIDEO_XGA_H*/
#endif /*VIDEO_XGA_H*/

View File

@@ -16,7 +16,7 @@
*/
#ifndef VIDEO_XGA_DEVICE_H
# define VIDEO_XGA_DEVICE_H
#define VIDEO_XGA_DEVICE_H
extern const device_t xga_device;
extern const device_t xga_isa_device;
#endif /*VIDEO_XGA_DEVICE_H*/
#endif /*VIDEO_XGA_DEVICE_H*/

View File

@@ -20,19 +20,18 @@
*/
#ifndef EMU_VIDEO_H
# define EMU_VIDEO_H
#define EMU_VIDEO_H
#ifdef __cplusplus
#include <atomic>
# include <atomic>
using atomic_bool = std::atomic_bool;
using atomic_int = std::atomic_int;
using atomic_int = std::atomic_int;
#else
#include <stdatomic.h>
# include <stdatomic.h>
#endif
#define makecol(r, g, b) ((b) | ((g) << 8) | ((r) << 16))
#define makecol32(r, g, b) ((b) | ((g) << 8) | ((r) << 16))
#define makecol(r, g, b) ((b) | ((g) << 8) | ((r) << 16))
#define makecol32(r, g, b) ((b) | ((g) << 8) | ((r) << 16))
enum {
VID_NONE = 0,
@@ -46,12 +45,10 @@ enum {
FULLSCR_SCALE_INT
};
#ifdef __cplusplus
extern "C" {
#endif
enum {
VIDEO_ISA = 0,
VIDEO_MCA,
@@ -63,64 +60,63 @@ enum {
#define VIDEO_FLAG_TYPE_CGA 0
#define VIDEO_FLAG_TYPE_MDA 1
#define VIDEO_FLAG_TYPE_SPECIAL 2
#define VIDEO_FLAG_TYPE_NONE 3
#define VIDEO_FLAG_TYPE_NONE 3
#define VIDEO_FLAG_TYPE_MASK 3
typedef struct {
int type;
int write_b, write_w, write_l;
int read_b, read_w, read_l;
int type;
int write_b, write_w, write_l;
int read_b, read_w, read_l;
} video_timings_t;
typedef struct {
int w, h;
uint32_t *dat;
uint32_t *line[2112];
int w, h;
uint32_t *dat;
uint32_t *line[2112];
} bitmap_t;
typedef struct {
uint8_t r, g, b;
uint8_t r, g, b;
} rgb_t;
typedef struct {
uint8_t chr[32];
uint8_t chr[32];
} dbcs_font_t;
struct blit_data_struct;
typedef struct monitor_t
{
char name[512];
int mon_xsize;
int mon_ysize;
int mon_scrnsz_x;
int mon_scrnsz_y;
int mon_efscrnsz_y;
int mon_unscaled_size_x;
int mon_unscaled_size_y;
int mon_res_x;
int mon_res_y;
int mon_bpp;
bitmap_t* target_buffer;
int mon_video_timing_read_b,
mon_video_timing_read_w,
mon_video_timing_read_l;
int mon_video_timing_write_b,
mon_video_timing_write_w,
mon_video_timing_write_l;
int mon_overscan_x;
int mon_overscan_y;
int mon_force_resize;
int mon_fullchange;
int mon_changeframecount;
atomic_int mon_screenshots;
uint32_t* mon_pal_lookup;
int* mon_cga_palette;
int mon_pal_lookup_static; /* Whether it should not be freed by the API. */
int mon_cga_palette_static; /* Whether it should not be freed by the API. */
const video_timings_t* mon_vid_timings;
int mon_vid_type;
struct blit_data_struct* mon_blit_data_ptr;
typedef struct monitor_t {
char name[512];
int mon_xsize;
int mon_ysize;
int mon_scrnsz_x;
int mon_scrnsz_y;
int mon_efscrnsz_y;
int mon_unscaled_size_x;
int mon_unscaled_size_y;
int mon_res_x;
int mon_res_y;
int mon_bpp;
bitmap_t *target_buffer;
int mon_video_timing_read_b,
mon_video_timing_read_w,
mon_video_timing_read_l;
int mon_video_timing_write_b,
mon_video_timing_write_w,
mon_video_timing_write_l;
int mon_overscan_x;
int mon_overscan_y;
int mon_force_resize;
int mon_fullchange;
int mon_changeframecount;
atomic_int mon_screenshots;
uint32_t *mon_pal_lookup;
int *mon_cga_palette;
int mon_pal_lookup_static; /* Whether it should not be freed by the API. */
int mon_cga_palette_static; /* Whether it should not be freed by the API. */
const video_timings_t *mon_vid_timings;
int mon_vid_type;
struct blit_data_struct *mon_blit_data_ptr;
} monitor_t;
typedef struct monitor_settings_t {
@@ -131,159 +127,154 @@ typedef struct monitor_settings_t {
} monitor_settings_t;
#define MONITORS_NUM 2
extern monitor_t monitors[MONITORS_NUM];
extern monitor_t monitors[MONITORS_NUM];
extern monitor_settings_t monitor_settings[MONITORS_NUM];
extern atomic_bool doresize_monitors[MONITORS_NUM];
extern int monitor_index_global;
extern int gfxcard_2;
extern int show_second_monitors;
extern atomic_bool doresize_monitors[MONITORS_NUM];
extern int monitor_index_global;
extern int gfxcard_2;
extern int show_second_monitors;
typedef rgb_t PALETTE[256];
//extern int changeframecount;
// extern int changeframecount;
extern volatile int screenshots;
//extern bitmap_t *buffer32;
#define buffer32 (monitors[monitor_index_global].target_buffer)
#define pal_lookup (monitors[monitor_index_global].mon_pal_lookup)
#define overscan_x (monitors[monitor_index_global].mon_overscan_x)
#define overscan_y (monitors[monitor_index_global].mon_overscan_y)
#define video_timing_read_b (monitors[monitor_index_global].mon_video_timing_read_b)
#define video_timing_read_l (monitors[monitor_index_global].mon_video_timing_read_l)
#define video_timing_read_w (monitors[monitor_index_global].mon_video_timing_read_w)
// extern bitmap_t *buffer32;
#define buffer32 (monitors[monitor_index_global].target_buffer)
#define pal_lookup (monitors[monitor_index_global].mon_pal_lookup)
#define overscan_x (monitors[monitor_index_global].mon_overscan_x)
#define overscan_y (monitors[monitor_index_global].mon_overscan_y)
#define video_timing_read_b (monitors[monitor_index_global].mon_video_timing_read_b)
#define video_timing_read_l (monitors[monitor_index_global].mon_video_timing_read_l)
#define video_timing_read_w (monitors[monitor_index_global].mon_video_timing_read_w)
#define video_timing_write_b (monitors[monitor_index_global].mon_video_timing_write_b)
#define video_timing_write_l (monitors[monitor_index_global].mon_video_timing_write_l)
#define video_timing_write_w (monitors[monitor_index_global].mon_video_timing_write_w)
#define video_res_x (monitors[monitor_index_global].mon_res_x)
#define video_res_y (monitors[monitor_index_global].mon_res_y)
#define video_bpp (monitors[monitor_index_global].mon_bpp)
#define xsize (monitors[monitor_index_global].mon_xsize)
#define ysize (monitors[monitor_index_global].mon_ysize)
#define cga_palette (*monitors[monitor_index_global].mon_cga_palette)
#define changeframecount (monitors[monitor_index_global].mon_changeframecount)
#define scrnsz_x (monitors[monitor_index_global].mon_scrnsz_x)
#define scrnsz_y (monitors[monitor_index_global].mon_scrnsz_y)
#define efscrnsz_y (monitors[monitor_index_global].mon_efscrnsz_y)
#define unscaled_size_x (monitors[monitor_index_global].mon_unscaled_size_x)
#define unscaled_size_y (monitors[monitor_index_global].mon_unscaled_size_y)
extern PALETTE cgapal,
cgapal_mono[6];
//extern uint32_t pal_lookup[256];
extern int video_fullscreen,
video_fullscreen_scale,
video_fullscreen_first;
extern uint8_t fontdat[2048][8];
extern uint8_t fontdatm[2048][16];
extern uint8_t fontdatw[512][32];
extern uint8_t fontdat8x12[256][16];
extern uint8_t fontdat12x18[256][36];
extern dbcs_font_t *fontdatksc5601;
extern dbcs_font_t *fontdatksc5601_user;
extern uint32_t *video_6to8,
*video_8togs,
*video_8to32,
*video_15to32,
*video_16to32;
extern int enable_overscan;
extern int force_43;
extern int vid_resize;
extern int herc_blend;
extern int vid_cga_contrast;
extern int video_grayscale;
extern int video_graytype;
extern double cpuclock;
extern int emu_fps,
frames;
extern int readflash;
#define video_res_x (monitors[monitor_index_global].mon_res_x)
#define video_res_y (monitors[monitor_index_global].mon_res_y)
#define video_bpp (monitors[monitor_index_global].mon_bpp)
#define xsize (monitors[monitor_index_global].mon_xsize)
#define ysize (monitors[monitor_index_global].mon_ysize)
#define cga_palette (*monitors[monitor_index_global].mon_cga_palette)
#define changeframecount (monitors[monitor_index_global].mon_changeframecount)
#define scrnsz_x (monitors[monitor_index_global].mon_scrnsz_x)
#define scrnsz_y (monitors[monitor_index_global].mon_scrnsz_y)
#define efscrnsz_y (monitors[monitor_index_global].mon_efscrnsz_y)
#define unscaled_size_x (monitors[monitor_index_global].mon_unscaled_size_x)
#define unscaled_size_y (monitors[monitor_index_global].mon_unscaled_size_y)
extern PALETTE cgapal,
cgapal_mono[6];
// extern uint32_t pal_lookup[256];
extern int video_fullscreen,
video_fullscreen_scale,
video_fullscreen_first;
extern uint8_t fontdat[2048][8];
extern uint8_t fontdatm[2048][16];
extern uint8_t fontdatw[512][32];
extern uint8_t fontdat8x12[256][16];
extern uint8_t fontdat12x18[256][36];
extern dbcs_font_t *fontdatksc5601;
extern dbcs_font_t *fontdatksc5601_user;
extern uint32_t *video_6to8,
*video_8togs,
*video_8to32,
*video_15to32,
*video_16to32;
extern int enable_overscan;
extern int force_43;
extern int vid_resize;
extern int herc_blend;
extern int vid_cga_contrast;
extern int video_grayscale;
extern int video_graytype;
extern double cpuclock;
extern int emu_fps,
frames;
extern int readflash;
/* Function handler pointers. */
extern void (*video_recalctimings)(void);
extern void video_screenshot_monitor(uint32_t *buf, int start_x, int start_y, int row_len, int monitor_index);
extern void video_screenshot(uint32_t *buf, int start_x, int start_y, int row_len);
extern void (*video_recalctimings)(void);
extern void video_screenshot_monitor(uint32_t *buf, int start_x, int start_y, int row_len, int monitor_index);
extern void video_screenshot(uint32_t *buf, int start_x, int start_y, int row_len);
#ifdef _WIN32
extern void * __cdecl (*video_copy)(void *_Dst, const void *_Src, size_t _Size);
extern void * __cdecl video_transform_copy(void *_Dst, const void *_Src, size_t _Size);
extern void *__cdecl (*video_copy)(void *_Dst, const void *_Src, size_t _Size);
extern void *__cdecl video_transform_copy(void *_Dst, const void *_Src, size_t _Size);
#else
extern void * (*video_copy)(void *__restrict _Dst, const void *__restrict _Src, size_t _Size);
extern void * video_transform_copy(void *__restrict _Dst, const void *__restrict _Src, size_t _Size);
extern void *(*video_copy)(void *__restrict _Dst, const void *__restrict _Src, size_t _Size);
extern void *video_transform_copy(void *__restrict _Dst, const void *__restrict _Src, size_t _Size);
#endif
/* Table functions. */
extern int video_card_available(int card);
extern int video_card_available(int card);
#ifdef EMU_DEVICE_H
extern const device_t *video_card_getdevice(int card);
extern const device_t *video_card_getdevice(int card);
#endif
extern int video_card_has_config(int card);
extern char *video_get_internal_name(int card);
extern int video_get_video_from_internal_name(char *s);
extern int video_card_get_flags(int card);
extern int video_is_mda(void);
extern int video_is_cga(void);
extern int video_is_ega_vga(void);
extern void video_inform_monitor(int type, const video_timings_t *ptr, int monitor_index);
extern int video_get_type_monitor(int monitor_index);
extern int video_card_has_config(int card);
extern char *video_get_internal_name(int card);
extern int video_get_video_from_internal_name(char *s);
extern int video_card_get_flags(int card);
extern int video_is_mda(void);
extern int video_is_cga(void);
extern int video_is_ega_vga(void);
extern void video_inform_monitor(int type, const video_timings_t *ptr, int monitor_index);
extern int video_get_type_monitor(int monitor_index);
extern void video_setblit(void (*blit)(int, int, int, int, int));
extern void video_blend(int x, int y);
extern void video_blit_memtoscreen_8(int x, int y, int w, int h);
extern void video_blend_monitor(int x, int y, int monitor_index);
extern void video_blit_memtoscreen_8_monitor(int x, int y, int w, int h, int monitor_index);
extern void video_blit_memtoscreen_monitor(int x, int y, int w, int h, int monitor_index);
extern void video_blit_complete_monitor(int monitor_index);
extern void video_wait_for_blit_monitor(int monitor_index);
extern void video_wait_for_buffer_monitor(int monitor_index);
extern void video_setblit(void(*blit)(int,int,int,int,int));
extern void video_blend(int x, int y);
extern void video_blit_memtoscreen_8(int x, int y, int w, int h);
extern void video_blend_monitor(int x, int y, int monitor_index);
extern void video_blit_memtoscreen_8_monitor(int x, int y, int w, int h, int monitor_index);
extern void video_blit_memtoscreen_monitor(int x, int y, int w, int h, int monitor_index);
extern void video_blit_complete_monitor(int monitor_index);
extern void video_wait_for_blit_monitor(int monitor_index);
extern void video_wait_for_buffer_monitor(int monitor_index);
extern bitmap_t *create_bitmap(int w, int h);
extern void destroy_bitmap(bitmap_t *b);
extern void cgapal_rebuild_monitor(int monitor_index);
extern void hline(bitmap_t *b, int x1, int y, int x2, uint32_t col);
extern void updatewindowsize(int x, int y);
extern bitmap_t *create_bitmap(int w, int h);
extern void destroy_bitmap(bitmap_t *b);
extern void cgapal_rebuild_monitor(int monitor_index);
extern void hline(bitmap_t *b, int x1, int y, int x2, uint32_t col);
extern void updatewindowsize(int x, int y);
extern void video_monitor_init(int);
extern void video_monitor_close(int);
extern void video_init(void);
extern void video_close(void);
extern void video_reset_close(void);
extern void video_pre_reset(int card);
extern void video_reset(int card);
extern uint8_t video_force_resize_get_monitor(int monitor_index);
extern void video_force_resize_set_monitor(uint8_t res, int monitor_index);
extern void video_update_timing(void);
extern void video_monitor_init(int);
extern void video_monitor_close(int);
extern void video_init(void);
extern void video_close(void);
extern void video_reset_close(void);
extern void video_pre_reset(int card);
extern void video_reset(int card);
extern uint8_t video_force_resize_get_monitor(int monitor_index);
extern void video_force_resize_set_monitor(uint8_t res, int monitor_index);
extern void video_update_timing(void);
extern void loadfont_ex(char *s, int format, int offset);
extern void loadfont(char *s, int format);
extern void loadfont_ex(char *s, int format, int offset);
extern void loadfont(char *s, int format);
extern int get_actual_size_x(void);
extern int get_actual_size_y(void);
extern int get_actual_size_x(void);
extern int get_actual_size_y(void);
extern uint32_t video_color_transform(uint32_t color);
extern uint32_t video_color_transform(uint32_t color);
extern void agpgart_set_aperture(void *handle, uint32_t base, uint32_t size, int enable);
extern void agpgart_set_gart(void *handle, uint32_t base);
extern void agpgart_set_aperture(void *handle, uint32_t base, uint32_t size, int enable);
extern void agpgart_set_gart(void *handle, uint32_t base);
#define video_inform(type, video_timings_ptr) video_inform_monitor(type, video_timings_ptr, monitor_index_global)
#define video_get_type() video_get_type_monitor(0)
#define video_blend(x, y) video_blend_monitor(x, y, monitor_index_global)
#define video_blit_memtoscreen(x, y, w, h) video_blit_memtoscreen_monitor(x, y, w, h, monitor_index_global)
#define video_blit_memtoscreen_8(x, y, w, h) video_blit_memtoscreen_8_monitor(x, y, w, h, monitor_index_global)
#define video_blit_complete() video_blit_complete_monitor(monitor_index_global)
#define video_wait_for_blit() video_wait_for_blit_monitor(monitor_index_global)
#define video_wait_for_buffer() video_wait_for_buffer_monitor(monitor_index_global)
#define cgapal_rebuild() cgapal_rebuild_monitor(monitor_index_global)
#define video_force_resize_get() video_force_resize_get_monitor(monitor_index_global)
#define video_force_resize_set(val) video_force_resize_set_monitor(val, monitor_index_global)
#define video_get_type() video_get_type_monitor(0)
#define video_blend(x, y) video_blend_monitor(x, y, monitor_index_global)
#define video_blit_memtoscreen(x, y, w, h) video_blit_memtoscreen_monitor(x, y, w, h, monitor_index_global)
#define video_blit_memtoscreen_8(x, y, w, h) video_blit_memtoscreen_8_monitor(x, y, w, h, monitor_index_global)
#define video_blit_complete() video_blit_complete_monitor(monitor_index_global)
#define video_wait_for_blit() video_wait_for_blit_monitor(monitor_index_global)
#define video_wait_for_buffer() video_wait_for_buffer_monitor(monitor_index_global)
#define cgapal_rebuild() cgapal_rebuild_monitor(monitor_index_global)
#define video_force_resize_get() video_force_resize_get_monitor(monitor_index_global)
#define video_force_resize_set(val) video_force_resize_set_monitor(val, monitor_index_global)
#ifdef __cplusplus
}
#endif
#ifdef EMU_DEVICE_H
/* IBM XGA */
extern void xga_device_add(void);
@@ -298,9 +289,9 @@ extern const device_t mach64gx_pci_device;
extern const device_t mach64vt2_device;
/* ATi 18800 */
#if defined(DEV_BRANCH) && defined(USE_VGAWONDER)
# if defined(DEV_BRANCH) && defined(USE_VGAWONDER)
extern const device_t ati18800_wonder_device;
#endif
# endif
extern const device_t ati18800_vga88_device;
extern const device_t ati18800_device;
@@ -310,9 +301,9 @@ extern const device_t ati28800k_device;
extern const device_t ati28800k_spc4620p_device;
extern const device_t ati28800k_spc6033p_device;
extern const device_t compaq_ati28800_device;
#if defined(DEV_BRANCH) && defined(USE_XL24)
# if defined(DEV_BRANCH) && defined(USE_XL24)
extern const device_t ati28800_wonderxl24_device;
#endif
# endif
/* Cirrus Logic GD54xx */
extern const device_t gd5401_isa_device;
@@ -408,12 +399,12 @@ extern const device_t ht216_32_standalone_device;
extern const device_t im1024_device;
extern const device_t pgc_device;
#if defined(DEV_BRANCH) && defined(USE_MGA)
# if defined(DEV_BRANCH) && defined(USE_MGA)
/* Matrox MGA */
extern const device_t millennium_device;
extern const device_t mystique_device;
extern const device_t mystique_220_device;
#endif
# endif
/* Oak OTI-0x7 */
extern const device_t oti037c_device;
@@ -541,4 +532,4 @@ extern const device_t wy700_device;
extern const device_t agpgart_device;
#endif
#endif /*EMU_VIDEO_H*/
#endif /*EMU_VIDEO_H*/

View File

@@ -21,53 +21,53 @@
*/
#ifndef PLAT_WIN_H
# define PLAT_WIN_H
#define PLAT_WIN_H
# define UNICODE
# define BITMAP WINDOWS_BITMAP
# if 0
# ifdef _WIN32_WINNT
# undef _WIN32_WINNT
# define _WIN32_WINNT 0x0501
# endif
# endif
# include <windows.h>
# include "resource.h"
# undef BITMAP
#define UNICODE
#define BITMAP WINDOWS_BITMAP
#if 0
# ifdef _WIN32_WINNT
# undef _WIN32_WINNT
# define _WIN32_WINNT 0x0501
# endif
#endif
#include "resource.h"
#include <windows.h>
#undef BITMAP
/* DPI Awareness Context, copied from MinGW-w64 windef.h */
#ifndef _DPI_AWARENESS_CONTEXTS_
DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);
#define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1)
#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4)
#define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT)-5)
# define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT) -1)
# define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT) -2)
# define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT) -3)
# define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT) -4)
# define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT) -5)
#endif
#ifndef WM_DPICHANGED_AFTERPARENT
#define WM_DPICHANGED_AFTERPARENT 0x02E3
# define WM_DPICHANGED_AFTERPARENT 0x02E3
#endif
/* Class names and such. */
#define CLASS_NAME L"86BoxMainWnd"
#define MENU_NAME L"MainMenu"
#define ACCEL_NAME L"MainAccel"
#define SUB_CLASS_NAME L"86BoxSubWnd"
#define SB_CLASS_NAME L"86BoxStatusBar"
#define SB_MENU_NAME L"StatusBarMenu"
#define FS_CLASS_NAME L"86BoxFullScreen"
#define SDL_CLASS_NAME L"86BoxSDLWnd"
#define SDL_SUB_CLASS_NAME L"86BoxSDLSubWnd"
#define CLASS_NAME L"86BoxMainWnd"
#define MENU_NAME L"MainMenu"
#define ACCEL_NAME L"MainAccel"
#define SUB_CLASS_NAME L"86BoxSubWnd"
#define SB_CLASS_NAME L"86BoxStatusBar"
#define SB_MENU_NAME L"StatusBarMenu"
#define FS_CLASS_NAME L"86BoxFullScreen"
#define SDL_CLASS_NAME L"86BoxSDLWnd"
#define SDL_SUB_CLASS_NAME L"86BoxSDLSubWnd"
#define CASSETTE_SUBMENU_NAME L"CassetteSubmenu"
#define CARTRIDGE_SUBMENU_NAME L"CartridgeSubmenu"
#define FLOPPY_SUBMENU_NAME L"FloppySubmenu"
#define CDROM_SUBMENU_NAME L"CdromSubmenu"
#define ZIP_SUBMENU_NAME L"ZIPSubmenu"
#define MO_SUBMENU_NAME L"MOSubmenu"
#define CASSETTE_SUBMENU_NAME L"CassetteSubmenu"
#define CARTRIDGE_SUBMENU_NAME L"CartridgeSubmenu"
#define FLOPPY_SUBMENU_NAME L"FloppySubmenu"
#define CDROM_SUBMENU_NAME L"CdromSubmenu"
#define ZIP_SUBMENU_NAME L"ZIPSubmenu"
#define MO_SUBMENU_NAME L"MOSubmenu"
#define VID_GL_SUBMENU L"VidGLSubMenu"
#define VID_GL_SUBMENU L"VidGLSubMenu"
/* Application-specific window messages.
@@ -75,185 +75,173 @@ DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);
and 0x8895 with WPARAM = <previous pause status> followed by 0x8896 with WPARAM = 0.
All shutdowns will send an 0x8897. */
#define WM_LEAVEFULLSCREEN WM_USER
#define WM_SAVESETTINGS 0x8888
#define WM_SHOWSETTINGS 0x8889
#define WM_PAUSE 0x8890
#define WM_SENDHWND 0x8891
#define WM_HARDRESET 0x8892
#define WM_SHUTDOWN 0x8893
#define WM_CTRLALTDEL 0x8894
#define WM_LEAVEFULLSCREEN WM_USER
#define WM_SAVESETTINGS 0x8888
#define WM_SHOWSETTINGS 0x8889
#define WM_PAUSE 0x8890
#define WM_SENDHWND 0x8891
#define WM_HARDRESET 0x8892
#define WM_SHUTDOWN 0x8893
#define WM_CTRLALTDEL 0x8894
/* Pause/resume status: WPARAM = 1 for paused, 0 for resumed. */
#define WM_SENDSTATUS 0x8895
#define WM_SENDSTATUS 0x8895
/* Dialog (Settings or message box) status: WPARAM = 1 for open, 0 for closed. */
#define WM_SENDDLGSTATUS 0x8896
#define WM_SENDDLGSTATUS 0x8896
/* The emulator has shut down. */
#define WM_HAS_SHUTDOWN 0x8897
#define WM_HAS_SHUTDOWN 0x8897
#ifdef USE_VNC
#define RENDERERS_NUM 5
# define RENDERERS_NUM 5
#else
#define RENDERERS_NUM 4
# define RENDERERS_NUM 4
#endif
#ifdef __cplusplus
extern "C" {
#endif
extern HINSTANCE hinstance;
extern HWND hwndMain,
hwndRender;
extern HANDLE ghMutex;
extern HICON hIcon[256];
extern int dpi;
extern RECT oldclip;
extern int sbar_height, tbar_height, user_resize;
extern int acp_utf8;
extern HINSTANCE hinstance;
extern HWND hwndMain,
hwndRender;
extern HANDLE ghMutex;
extern HICON hIcon[256];
extern int dpi;
extern RECT oldclip;
extern int sbar_height, tbar_height, user_resize;
extern int acp_utf8;
// extern int status_is_open;
extern char openfilestring[512];
extern WCHAR wopenfilestring[512];
extern char openfilestring[512];
extern WCHAR wopenfilestring[512];
extern uint8_t filterindex;
extern uint8_t filterindex;
extern void ResizeWindowByClientArea(HWND hwnd, int width, int height);
extern void ResizeWindowByClientArea(HWND hwnd, int width, int height);
/* Emulator start/stop support functions. */
extern void do_start(void);
extern void do_stop(void);
extern void do_start(void);
extern void do_stop(void);
/* Internal platform support functions. */
extern int has_language_changed(uint32_t id);
extern void set_language(uint32_t id);
extern int get_vidpause(void);
extern void show_cursor(int);
extern int has_language_changed(uint32_t id);
extern void set_language(uint32_t id);
extern int get_vidpause(void);
extern void show_cursor(int);
extern void keyboard_getkeymap(void);
extern void keyboard_handle(PRAWINPUT raw);
extern void keyboard_getkeymap(void);
extern void keyboard_handle(PRAWINPUT raw);
extern void win_mouse_init(void);
extern void win_mouse_close(void);
extern void win_mouse_handle(PRAWINPUT raw);
extern void win_mouse_init(void);
extern void win_mouse_close(void);
extern void win_mouse_handle(PRAWINPUT raw);
extern void win_joystick_handle(PRAWINPUT raw);
extern void win_joystick_handle(PRAWINPUT raw);
extern void win_notify_dlg_open(void);
extern void win_notify_dlg_closed(void);
extern int win_get_dpi(HWND hwnd);
extern int win_get_system_metrics(int i, int dpi);
extern void win_notify_dlg_open(void);
extern void win_notify_dlg_closed(void);
extern int win_get_dpi(HWND hwnd);
extern int win_get_system_metrics(int i, int dpi);
extern LPARAM win_get_string(int id);
extern LPARAM win_get_string(int id);
extern void win_clear_icon_set();
extern void win_system_icon_set();
extern void win_load_icon_set();
extern void win_get_icons_path(char* path_root);
extern void win_clear_icon_set();
extern void win_system_icon_set();
extern void win_load_icon_set();
extern void win_get_icons_path(char *path_root);
extern intptr_t fdd_type_to_icon(int type);
extern intptr_t fdd_type_to_icon(int type);
#ifdef EMU_DEVICE_H
extern uint8_t deviceconfig_open(HWND hwnd, const device_t *device);
extern uint8_t deviceconfig_inst_open(HWND hwnd, const device_t *device, int inst);
extern uint8_t deviceconfig_open(HWND hwnd, const device_t *device);
extern uint8_t deviceconfig_inst_open(HWND hwnd, const device_t *device, int inst);
#endif
extern uint8_t joystickconfig_open(HWND hwnd, int joy_nr, int type);
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 hard_disk_add_open(HWND hwnd, int is_existing);
extern int hard_disk_was_added(void);
extern int getfile(HWND hwnd, char *f, char *fn);
extern int getsfile(HWND hwnd, char *f, char *fn);
extern void hard_disk_add_open(HWND hwnd, int is_existing);
extern int hard_disk_was_added(void);
/* Platform UI support functions. */
extern int ui_init(int nCmdShow);
extern int ui_init(int nCmdShow);
/* Functions in win_about.c: */
extern void AboutDialogCreate(HWND hwnd);
extern void AboutDialogCreate(HWND hwnd);
/* Functions in win_snd_gain.c: */
extern void SoundGainDialogCreate(HWND hwnd);
extern void SoundGainDialogCreate(HWND hwnd);
/* Functions in win_new_floppy.c: */
extern void NewFloppyDialogCreate(HWND hwnd, int id, int part);
extern void NewFloppyDialogCreate(HWND hwnd, int id, int part);
/* Functions in win_specify_dim.c: */
extern void SpecifyDimensionsDialogCreate(HWND hwnd);
extern void SpecifyDimensionsDialogCreate(HWND hwnd);
/* Functions in win_preferences.c: */
extern void PreferencesDlgCreate(HWND hwnd);
extern void PreferencesDlgCreate(HWND hwnd);
/* Functions in win_settings.c: */
#define SETTINGS_PAGE_MACHINE 0
#define SETTINGS_PAGE_VIDEO 1
#define SETTINGS_PAGE_INPUT 2
#define SETTINGS_PAGE_SOUND 3
#define SETTINGS_PAGE_NETWORK 4
#define SETTINGS_PAGE_PORTS 5
#define SETTINGS_PAGE_STORAGE 6
#define SETTINGS_PAGE_HARD_DISKS 7
#define SETTINGS_PAGE_FLOPPY_AND_CDROM_DRIVES 8
#define SETTINGS_PAGE_OTHER_REMOVABLE_DEVICES 9
#define SETTINGS_PAGE_PERIPHERALS 10
extern void win_settings_open(HWND hwnd);
extern void win_settings_open_ex(HWND hwnd, int category);
#define SETTINGS_PAGE_MACHINE 0
#define SETTINGS_PAGE_VIDEO 1
#define SETTINGS_PAGE_INPUT 2
#define SETTINGS_PAGE_SOUND 3
#define SETTINGS_PAGE_NETWORK 4
#define SETTINGS_PAGE_PORTS 5
#define SETTINGS_PAGE_STORAGE 6
#define SETTINGS_PAGE_HARD_DISKS 7
#define SETTINGS_PAGE_FLOPPY_AND_CDROM_DRIVES 8
#define SETTINGS_PAGE_OTHER_REMOVABLE_DEVICES 9
#define SETTINGS_PAGE_PERIPHERALS 10
extern void win_settings_open(HWND hwnd);
extern void win_settings_open_ex(HWND hwnd, int category);
/* Functions in win_stbar.c: */
extern HWND hwndSBAR;
extern void StatusBarCreate(HWND hwndParent, uintptr_t idStatus, HINSTANCE hInst);
extern int MediaMenuHandler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
extern HWND hwndSBAR;
extern void StatusBarCreate(HWND hwndParent, uintptr_t idStatus, HINSTANCE hInst);
extern int MediaMenuHandler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
/* Functions in win_toolbar.c */
extern HWND hwndRebar;
extern void ToolBarCreate(HWND hwndParent, HINSTANCE hInst);
extern void ToolBarLoadIcons();
extern void ToolBarUpdatePause(int paused);
extern HWND hwndRebar;
extern void ToolBarCreate(HWND hwndParent, HINSTANCE hInst);
extern void ToolBarLoadIcons();
extern void ToolBarUpdatePause(int paused);
/* Functions in win_dialog.c: */
/* Pass NULL in the title param to use the default title. */
extern int file_dlg_w(HWND hwnd, WCHAR *f, WCHAR *fn, WCHAR *title, int save);
extern int file_dlg(HWND hwnd, WCHAR *f, char *fn, char *title, int save);
extern int file_dlg_mb(HWND hwnd, char *f, char *fn, char *title, int save);
extern int file_dlg_w_st(HWND hwnd, int i, WCHAR *fn, char *title, int save);
extern int file_dlg_st(HWND hwnd, int i, char *fn, char *title, int save);
extern wchar_t *BrowseFolder(wchar_t *saved_path, wchar_t *title);
extern int file_dlg_w(HWND hwnd, WCHAR *f, WCHAR *fn, WCHAR *title, int save);
extern int file_dlg(HWND hwnd, WCHAR *f, char *fn, char *title, int save);
extern int file_dlg_mb(HWND hwnd, char *f, char *fn, char *title, int save);
extern int file_dlg_w_st(HWND hwnd, int i, WCHAR *fn, char *title, int save);
extern int file_dlg_st(HWND hwnd, int i, char *fn, char *title, int save);
extern wchar_t *BrowseFolder(wchar_t *saved_path, wchar_t *title);
/* Functions in win_media_menu.c */
extern void media_menu_init();
extern void media_menu_reset();
extern int media_menu_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
extern HMENU media_menu_get_cassette(void);
extern HMENU media_menu_get_cartridge(int id);
extern HMENU media_menu_get_floppy(int id);
extern HMENU media_menu_get_cdrom(int id);
extern HMENU media_menu_get_zip(int id);
extern HMENU media_menu_get_mo(int id);
extern void media_menu_update_cassette(void);
extern void media_menu_update_cartridge(int id);
extern void media_menu_update_floppy(int id);
extern void media_menu_update_cdrom(int id);
extern void media_menu_update_zip(int id);
extern void media_menu_update_mo(int id);
extern void media_menu_init();
extern void media_menu_reset();
extern int media_menu_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
extern HMENU media_menu_get_cassette(void);
extern HMENU media_menu_get_cartridge(int id);
extern HMENU media_menu_get_floppy(int id);
extern HMENU media_menu_get_cdrom(int id);
extern HMENU media_menu_get_zip(int id);
extern HMENU media_menu_get_mo(int id);
extern void media_menu_update_cassette(void);
extern void media_menu_update_cartridge(int id);
extern void media_menu_update_floppy(int id);
extern void media_menu_update_cdrom(int id);
extern void media_menu_update_zip(int id);
extern void media_menu_update_mo(int id);
/* Functions in win_ui.c */
extern HMENU menuMain;
extern void ResetAllMenus();
extern HMENU menuMain;
extern void ResetAllMenus();
#ifdef __cplusplus
}
#endif
#endif /*PLAT_WIN_H*/
#endif /*PLAT_WIN_H*/

View File

@@ -19,8 +19,8 @@
#define UNICODE
#include <Windows.h>
extern int opengl_init(HWND hwnd);
extern int opengl_pause(void);
extern int opengl_init(HWND hwnd);
extern int opengl_pause(void);
extern void opengl_close(void);
extern void opengl_set_fs(int fs);
extern void opengl_resize(int w, int h);

View File

@@ -18,7 +18,7 @@
#include <glad/glad.h>
GLuint load_custom_shaders(const char* path);
GLuint load_custom_shaders(const char *path);
GLuint load_default_shaders();
#endif /*!WIN_OPENGL_GLSLP_H*/

View File

@@ -48,17 +48,16 @@
*/
#ifndef WIN_SDL_H
# define WIN_SDL_H
#define WIN_SDL_H
extern void sdl_close(void);
extern int sdl_inits(HWND h);
extern int sdl_inith(HWND h);
extern int sdl_initho(HWND h);
extern int sdl_pause(void);
extern void sdl_resize(int x, int y);
extern void sdl_enable(int enable);
extern void sdl_set_fs(int fs);
extern void sdl_reload(void);
extern void sdl_close(void);
extern int sdl_inits(HWND h);
extern int sdl_inith(HWND h);
extern int sdl_initho(HWND h);
extern int sdl_pause(void);
extern void sdl_resize(int x, int y);
extern void sdl_enable(int enable);
extern void sdl_set_fs(int fs);
extern void sdl_reload(void);
#endif /*WIN_SDL_H*/
#endif /*WIN_SDL_H*/

159
src/lpt.c
View File

@@ -13,26 +13,25 @@
#include <86box/prt_devs.h>
#include <86box/net_plip.h>
lpt_port_t lpt_ports[PARALLEL_MAX];
lpt_port_t lpt_ports[PARALLEL_MAX];
const lpt_device_t lpt_none_device = {
.name = "None",
.name = "None",
.internal_name = "none",
.init = NULL,
.close = NULL,
.write_data = NULL,
.write_ctrl = NULL,
.read_data = NULL,
.read_status = NULL,
.read_ctrl = NULL
.init = NULL,
.close = NULL,
.write_data = NULL,
.write_ctrl = NULL,
.read_data = NULL,
.read_status = NULL,
.read_ctrl = NULL
};
static const struct {
const char *internal_name;
const char *internal_name;
const lpt_device_t *device;
} lpt_devices[] = {
// clang-format off
// clang-format off
{"none", &lpt_none_device },
{"dss", &dss_device },
{"lpt_dac", &lpt_dac_device },
@@ -78,167 +77,157 @@ lpt_device_get_from_internal_name(char *s)
return 0;
}
void
lpt_devices_init(void)
{
int i = 0;
for (i = 0; i < PARALLEL_MAX; i++) {
lpt_ports[i].dt = (lpt_device_t *) lpt_devices[lpt_ports[i].device].device;
lpt_ports[i].dt = (lpt_device_t *) lpt_devices[lpt_ports[i].device].device;
if (lpt_ports[i].dt && lpt_ports[i].dt->init)
lpt_ports[i].priv = lpt_ports[i].dt->init(&lpt_ports[i]);
if (lpt_ports[i].dt && lpt_ports[i].dt->init)
lpt_ports[i].priv = lpt_ports[i].dt->init(&lpt_ports[i]);
}
}
void
lpt_devices_close(void)
{
int i = 0;
int i = 0;
lpt_port_t *dev;
for (i = 0; i < PARALLEL_MAX; i++) {
dev = &lpt_ports[i];
dev = &lpt_ports[i];
if (lpt_ports[i].dt && lpt_ports[i].dt->close)
dev->dt->close(dev->priv);
if (lpt_ports[i].dt && lpt_ports[i].dt->close)
dev->dt->close(dev->priv);
dev->dt = NULL;
}
}
void
lpt_write(uint16_t port, uint8_t val, void *priv)
{
lpt_port_t *dev = (lpt_port_t *) priv;
switch (port & 3) {
case 0:
if (dev->dt && dev->dt->write_data && dev->priv)
dev->dt->write_data(val, dev->priv);
dev->dat = val;
break;
case 0:
if (dev->dt && dev->dt->write_data && dev->priv)
dev->dt->write_data(val, dev->priv);
dev->dat = val;
break;
case 1:
break;
case 1:
break;
case 2:
if (dev->dt && dev->dt->write_ctrl && dev->priv)
dev->dt->write_ctrl(val, dev->priv);
dev->ctrl = val;
dev->enable_irq = val & 0x10;
break;
case 2:
if (dev->dt && dev->dt->write_ctrl && dev->priv)
dev->dt->write_ctrl(val, dev->priv);
dev->ctrl = val;
dev->enable_irq = val & 0x10;
break;
}
}
uint8_t
lpt_read(uint16_t port, void *priv)
{
uint8_t ret = 0xff;
uint8_t ret = 0xff;
lpt_port_t *dev = (lpt_port_t *) priv;
switch (port & 3) {
case 0:
if (dev->dt && dev->dt->read_data && dev->priv)
ret = dev->dt->read_data(dev->priv);
else
ret = dev->dat;
break;
case 0:
if (dev->dt && dev->dt->read_data && dev->priv)
ret = dev->dt->read_data(dev->priv);
else
ret = dev->dat;
break;
case 1:
if (dev->dt && dev->dt->read_status && dev->priv)
ret = dev->dt->read_status(dev->priv) | 0x07;
else
ret = 0xdf;
break;
case 1:
if (dev->dt && dev->dt->read_status && dev->priv)
ret = dev->dt->read_status(dev->priv) | 0x07;
else
ret = 0xdf;
break;
case 2:
if (dev->dt && dev->dt->read_ctrl && dev->priv)
ret = (dev->dt->read_ctrl(dev->priv) & 0xef) | dev->enable_irq;
else
ret = 0xe0 | dev->ctrl | dev->enable_irq;
break;
case 2:
if (dev->dt && dev->dt->read_ctrl && dev->priv)
ret = (dev->dt->read_ctrl(dev->priv) & 0xef) | dev->enable_irq;
else
ret = 0xe0 | dev->ctrl | dev->enable_irq;
break;
}
return ret;
}
void
lpt_irq(void *priv, int raise)
{
lpt_port_t *dev = (lpt_port_t *) priv;
if (dev->enable_irq && (dev->irq != 0xff)) {
if (raise)
picint(1 << dev->irq);
else
picintc(1 << dev->irq);
if (raise)
picint(1 << dev->irq);
else
picintc(1 << dev->irq);
}
}
void
lpt_init(void)
{
int i;
int i;
uint16_t default_ports[PARALLEL_MAX] = { LPT1_ADDR, LPT2_ADDR, LPT_MDA_ADDR, LPT4_ADDR };
uint8_t default_irqs[PARALLEL_MAX] = { LPT1_IRQ, LPT2_IRQ, LPT_MDA_IRQ, LPT4_IRQ };
uint8_t default_irqs[PARALLEL_MAX] = { LPT1_IRQ, LPT2_IRQ, LPT_MDA_IRQ, LPT4_IRQ };
for (i = 0; i < PARALLEL_MAX; i++) {
lpt_ports[i].addr = 0xffff;
lpt_ports[i].irq = 0xff;
lpt_ports[i].enable_irq = 0x10;
lpt_ports[i].addr = 0xffff;
lpt_ports[i].irq = 0xff;
lpt_ports[i].enable_irq = 0x10;
if (lpt_ports[i].enabled) {
lpt_port_init(i, default_ports[i]);
lpt_port_irq(i, default_irqs[i]);
}
if (lpt_ports[i].enabled) {
lpt_port_init(i, default_ports[i]);
lpt_port_irq(i, default_irqs[i]);
}
}
}
void
lpt_port_init(int i, uint16_t port)
{
if (lpt_ports[i].enabled) {
if (lpt_ports[i].addr != 0xffff)
io_removehandler(lpt_ports[i].addr, 0x0003, lpt_read, NULL, NULL, lpt_write, NULL, NULL, &lpt_ports[i]);
if (port != 0xffff)
io_sethandler(port, 0x0003, lpt_read, NULL, NULL, lpt_write, NULL, NULL, &lpt_ports[i]);
lpt_ports[i].addr = port;
if (lpt_ports[i].addr != 0xffff)
io_removehandler(lpt_ports[i].addr, 0x0003, lpt_read, NULL, NULL, lpt_write, NULL, NULL, &lpt_ports[i]);
if (port != 0xffff)
io_sethandler(port, 0x0003, lpt_read, NULL, NULL, lpt_write, NULL, NULL, &lpt_ports[i]);
lpt_ports[i].addr = port;
} else
lpt_ports[i].addr = 0xffff;
lpt_ports[i].addr = 0xffff;
}
void
lpt_port_irq(int i, uint8_t irq)
{
if (lpt_ports[i].enabled)
lpt_ports[i].irq = irq;
lpt_ports[i].irq = irq;
else
lpt_ports[i].irq = 0xff;
lpt_ports[i].irq = 0xff;
}
void
lpt_port_remove(int i)
{
if (lpt_ports[i].enabled && (lpt_ports[i].addr != 0xffff)) {
io_removehandler(lpt_ports[i].addr, 0x0003, lpt_read, NULL, NULL, lpt_write, NULL, NULL, &lpt_ports[i]);
lpt_ports[i].addr = 0xffff;
io_removehandler(lpt_ports[i].addr, 0x0003, lpt_read, NULL, NULL, lpt_write, NULL, NULL, &lpt_ports[i]);
lpt_ports[i].addr = 0xffff;
}
}
void
lpt1_remove_ams(void)
{
if (lpt_ports[0].enabled)
io_removehandler(lpt_ports[0].addr + 1, 0x0002, lpt_read, NULL, NULL, lpt_write, NULL, NULL, &lpt_ports[0]);
io_removehandler(lpt_ports[0].addr + 1, 0x0002, lpt_read, NULL, NULL, lpt_write, NULL, NULL, &lpt_ports[0]);
}

File diff suppressed because it is too large Load Diff

View File

@@ -35,7 +35,8 @@
* 59 Temple Place - Suite 330
* Boston, MA 02111-1307
* USA.
*/
*/
#include <stdio.h>
#include <stdint.h>
#include <string.h>
@@ -59,7 +60,6 @@
#include <86box/port_6x.h>
#include <86box/machine.h>
void
machine_at_common_init_ex(const machine_t *model, int type)
{
@@ -71,25 +71,23 @@ machine_at_common_init_ex(const machine_t *model, int type)
dma16_init();
if (!(type & 4))
device_add(&port_6x_device);
device_add(&port_6x_device);
type &= 3;
if (type == 1)
device_add(&ibmat_nvr_device);
device_add(&ibmat_nvr_device);
else if (type == 0)
device_add(&at_nvr_device);
device_add(&at_nvr_device);
standalone_gameport_type = &gameport_device;
}
void
machine_at_common_init(const machine_t *model)
{
machine_at_common_init_ex(model, 0);
}
void
machine_at_init(const machine_t *model)
{
@@ -98,7 +96,6 @@ machine_at_init(const machine_t *model)
device_add(&keyboard_at_device);
}
static void
machine_at_ibm_common_init(const machine_t *model)
{
@@ -109,10 +106,9 @@ machine_at_ibm_common_init(const machine_t *model)
mem_remap_top(384);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
}
void
machine_at_ps2_init(const machine_t *model)
{
@@ -121,7 +117,6 @@ machine_at_ps2_init(const machine_t *model)
device_add(&keyboard_ps2_device);
}
void
machine_at_common_ide_init(const machine_t *model)
{
@@ -130,7 +125,6 @@ machine_at_common_ide_init(const machine_t *model)
device_add(&ide_isa_device);
}
void
machine_at_ibm_common_ide_init(const machine_t *model)
{
@@ -139,7 +133,6 @@ machine_at_ibm_common_ide_init(const machine_t *model)
device_add(&ide_isa_device);
}
void
machine_at_ide_init(const machine_t *model)
{
@@ -148,7 +141,6 @@ machine_at_ide_init(const machine_t *model)
device_add(&ide_isa_device);
}
void
machine_at_ps2_ide_init(const machine_t *model)
{
@@ -157,25 +149,23 @@ machine_at_ps2_ide_init(const machine_t *model)
device_add(&ide_isa_device);
}
int
machine_at_ibm_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/ibmat/62x0820.u27",
"roms/machines/ibmat/62x0821.u47",
0x000f0000, 65536, 0);
"roms/machines/ibmat/62x0821.u47",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_ibm_common_init(model);
return ret;
}
/* IBM AT machines with custom BIOSes */
int
machine_at_ibmatquadtel_init(const machine_t *model)
@@ -183,65 +173,62 @@ machine_at_ibmatquadtel_init(const machine_t *model)
int ret;
ret = bios_load_interleaved("roms/machines/ibmatquadtel/BIOS_30MAR90_U27_QUADTEL_ENH_286_BIOS_3.05.01_27256.BIN",
"roms/machines/ibmatquadtel/BIOS_30MAR90_U47_QUADTEL_ENH_286_BIOS_3.05.01_27256.BIN",
0x000f0000, 65536, 0);
"roms/machines/ibmatquadtel/BIOS_30MAR90_U47_QUADTEL_ENH_286_BIOS_3.05.01_27256.BIN",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_ibm_common_init(model);
return ret;
}
int
machine_at_ibmatami_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/ibmatami/BIOS_5170_30APR89_U27_AMI_27256.BIN",
"roms/machines/ibmatami/BIOS_5170_30APR89_U47_AMI_27256.BIN",
0x000f0000, 65536, 0);
"roms/machines/ibmatami/BIOS_5170_30APR89_U47_AMI_27256.BIN",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_ibm_common_init(model);
return ret;
}
int
machine_at_ibmatpx_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/ibmatpx/BIOS ROM - PhoenixBIOS A286 - Version 1.01 - Even.bin",
"roms/machines/ibmatpx/BIOS ROM - PhoenixBIOS A286 - Version 1.01 - Odd.bin",
0x000f0000, 65536, 0);
"roms/machines/ibmatpx/BIOS ROM - PhoenixBIOS A286 - Version 1.01 - Odd.bin",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_ibm_common_init(model);
return ret;
}
int
machine_at_ibmxt286_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/ibmxt286/bios_5162_21apr86_u34_78x7460_27256.bin",
"roms/machines/ibmxt286/bios_5162_21apr86_u35_78x7461_27256.bin",
0x000f0000, 65536, 0);
"roms/machines/ibmxt286/bios_5162_21apr86_u35_78x7461_27256.bin",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_ibm_common_init(model);
@@ -254,17 +241,16 @@ machine_at_siemens_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/siemens/286BIOS.BIN",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_ibm_common_init(model);
return ret;
}
#if defined(DEV_BRANCH) && defined(USE_OPEN_AT)
int
machine_at_openat_init(const machine_t *model)
@@ -272,10 +258,10 @@ machine_at_openat_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/openat/bios.bin",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_ibm_common_init(model);

View File

@@ -51,34 +51,33 @@ machine_at_mr286_init(const machine_t *model)
int ret;
ret = bios_load_interleaved("roms/machines/mr286/V000B200-1",
"roms/machines/mr286/V000B200-2",
0x000f0000, 65536, 0);
"roms/machines/mr286/V000B200-2",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_ide_init(model);
device_add(&keyboard_at_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
static void
machine_at_headland_common_init(int ht386)
{
device_add(&keyboard_at_ami_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
if (ht386)
device_add(&headland_ht18b_device);
device_add(&headland_ht18b_device);
else
device_add(&headland_gc10x_device);
device_add(&headland_gc10x_device);
}
int
@@ -87,10 +86,10 @@ machine_at_tg286m_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/tg286m/ami.bin",
0x000f0000, 131072, 0);
0x000f0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_ide_init(model);
@@ -105,160 +104,153 @@ machine_at_ama932j_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/ama932j/ami.bin",
0x000f0000, 131072, 0);
0x000f0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_ide_init(model);
if (gfxcard == VID_INTERNAL)
device_add(&oti067_ama932j_device);
device_add(&oti067_ama932j_device);
machine_at_headland_common_init(1);
return ret;
}
int
machine_at_quadt286_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/quadt286/QUADT89L.ROM",
"roms/machines/quadt286/QUADT89H.ROM",
0x000f0000, 65536, 0);
"roms/machines/quadt286/QUADT89H.ROM",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
device_add(&keyboard_at_device);
device_add(&keyboard_at_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
device_add(&headland_gc10x_device);
return ret;
}
int
machine_at_quadt386sx_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/quadt386sx/QTC-SXM-EVEN-U3-05-07.BIN",
"roms/machines/quadt386sx/QTC-SXM-ODD-U3-05-07.BIN",
0x000f0000, 65536, 0);
"roms/machines/quadt386sx/QTC-SXM-ODD-U3-05-07.BIN",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
device_add(&keyboard_at_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
device_add(&headland_gc10x_device);
return ret;
}
int
machine_at_neat_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/dtk386/3cto001.bin",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_init(model);
device_add(&neat_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_neat_ami_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ami286/AMIC206.BIN",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
device_add(&neat_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
device_add(&keyboard_at_ami_device);
return ret;
}
int
machine_at_px286_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/px286/KENITEC.BIN",
0x000f0000, 65536, 0);
ret = bios_load_linear("roms/machines/px286/KENITEC.BIN",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
device_add(&keyboard_at_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
device_add(&neat_device);
return ret;
}
int
machine_at_micronics386_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/micronics386/386-Micronics-09-00021-EVEN.BIN",
"roms/machines/micronics386/386-Micronics-09-00021-ODD.BIN",
0x000f0000, 65536, 0);
"roms/machines/micronics386/386-Micronics-09-00021-ODD.BIN",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_init(model);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
static void
machine_at_scat_init(const machine_t *model, int is_v4)
{
@@ -266,12 +258,11 @@ machine_at_scat_init(const machine_t *model, int is_v4)
device_add(&keyboard_at_ami_device);
if (is_v4)
device_add(&scat_4_device);
device_add(&scat_4_device);
else
device_add(&scat_device);
device_add(&scat_device);
}
static void
machine_at_scatsx_init(const machine_t *model)
{
@@ -280,27 +271,26 @@ machine_at_scatsx_init(const machine_t *model)
device_add(&keyboard_at_ami_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
device_add(&scat_sx_device);
}
int
machine_at_award286_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/award286/award.bin",
0x000f0000, 131072, 0);
0x000f0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_scat_init(model, 0);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
@@ -311,15 +301,15 @@ machine_at_gdc212m_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/gdc212m/gdc212m_72h.bin",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_scat_init(model, 0);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
device_add(&ide_isa_device);
@@ -332,10 +322,10 @@ machine_at_gw286ct_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/gw286ct/2ctc001.bin",
0x000f0000, 131072, 0);
0x000f0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
device_add(&f82c710_device);
@@ -349,63 +339,60 @@ machine_at_gw286ct_init(const machine_t *model)
return ret;
}
int
machine_at_super286tr_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/super286tr/hyundai_award286.bin",
0x000f0000, 131072, 0);
0x000f0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_scat_init(model, 0);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_spc4200p_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/spc4200p/u8.01",
0x000f0000, 131072, 0);
0x000f0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_scat_init(model, 0);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_spc4216p_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/spc4216p/7101.U8",
"roms/machines/spc4216p/AC64.U10",
0x000f0000, 131072, 0);
"roms/machines/spc4216p/AC64.U10",
0x000f0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_scat_init(model, 1);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
@@ -416,72 +403,69 @@ machine_at_spc4620p_init(const machine_t *model)
int ret;
ret = bios_load_interleaved("roms/machines/spc4620p/31005h.u8",
"roms/machines/spc4620p/31005h.u10",
0x000f0000, 131072, 0x8000);
"roms/machines/spc4620p/31005h.u10",
0x000f0000, 131072, 0x8000);
if (bios_only || !ret)
return ret;
return ret;
if (gfxcard == VID_INTERNAL)
device_add(&ati28800k_spc4620p_device);
device_add(&ati28800k_spc4620p_device);
machine_at_scat_init(model, 1);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_kmxc02_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/kmxc02/3ctm005.bin",
0x000f0000, 131072, 0);
0x000f0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_scatsx_init(model);
return ret;
}
int
machine_at_deskmaster286_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/deskmaster286/SAMSUNG-DESKMASTER-28612-ROM.BIN",
0x000f0000, 131072, 0);
0x000f0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_scat_init(model, 0);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_shuttle386sx_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/shuttle386sx/386-Shuttle386SX-Even.BIN",
"roms/machines/shuttle386sx/386-Shuttle386SX-Odd.BIN",
0x000f0000, 131072, 0);
"roms/machines/shuttle386sx/386-Shuttle386SX-Odd.BIN",
0x000f0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -489,23 +473,22 @@ machine_at_shuttle386sx_init(const machine_t *model)
device_add(&keyboard_at_ami_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_adi386sx_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/adi386sx/3iip001l.bin",
"roms/machines/adi386sx/3iip001h.bin",
0x000f0000, 65536, 0);
"roms/machines/adi386sx/3iip001h.bin",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -513,28 +496,27 @@ machine_at_adi386sx_init(const machine_t *model)
device_add(&keyboard_at_ami_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_wd76c10_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/megapc/41651-bios lo.u18",
"roms/machines/megapc/211253-bios hi.u19",
0x000f0000, 65536, 0x08000);
"roms/machines/megapc/211253-bios hi.u19",
0x000f0000, 65536, 0x08000);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
if (gfxcard == VID_INTERNAL)
device_add(&paradise_wd90c11_megapc_device);
device_add(&paradise_wd90c11_megapc_device);
device_add(&keyboard_ps2_quadtel_device);
@@ -543,25 +525,24 @@ machine_at_wd76c10_init(const machine_t *model)
return ret;
}
int
machine_at_cmdsl386sx16_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/cmdsl386sx16/cbm-sl386sx-bios-lo-v1.04-390914-04.bin",
"roms/machines/cmdsl386sx16/cbm-sl386sx-bios-hi-v1.04-390915-04.bin",
0x000f0000, 65536, 0);
"roms/machines/cmdsl386sx16/cbm-sl386sx-bios-hi-v1.04-390915-04.bin",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_ide_init(model);
device_add(&keyboard_at_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
device_add(&neat_device);
/* Two serial ports - on the real hardware SL386SX-16, they are on the single UMC UM82C452. */
@@ -571,127 +552,119 @@ machine_at_cmdsl386sx16_init(const machine_t *model)
return ret;
}
static void
machine_at_scamp_common_init(const machine_t *model, int is_ps2)
{
machine_at_common_ide_init(model);
if (is_ps2)
device_add(&keyboard_ps2_ami_device);
device_add(&keyboard_ps2_ami_device);
else
device_add(&keyboard_at_ami_device);
device_add(&keyboard_at_ami_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
device_add(&vlsi_scamp_device);
}
const device_t *
at_cmdsl386sx25_get_device(void)
{
return &gd5402_onboard_device;
}
int
machine_at_cmdsl386sx25_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/cmdsl386sx25/f000.rom",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
if (gfxcard == VID_INTERNAL)
device_add(&gd5402_onboard_device);
device_add(&gd5402_onboard_device);
machine_at_scamp_common_init(model, 1);
return ret;
}
int
machine_at_dataexpert386sx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/dataexpert386sx/5e9f20e5ef967717086346.BIN",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_scamp_common_init(model, 0);
return ret;
}
const device_t *
at_spc6033p_get_device(void)
{
return &ati28800k_spc6033p_device;
}
int
machine_at_spc6033p_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/spc6033p/phoenix.BIN",
0x000f0000, 65536, 0x10000);
0x000f0000, 65536, 0x10000);
if (bios_only || !ret)
return ret;
return ret;
if (gfxcard == VID_INTERNAL)
device_add(&ati28800k_spc6033p_device);
device_add(&ati28800k_spc6033p_device);
machine_at_scamp_common_init(model, 1);
return ret;
}
int
machine_at_awardsx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/awardsx/Unknown 386SX OPTi291 - Award (original).BIN",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_init(model);
device_add(&opti291_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_arb1374_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/arb1374/1374s.rom",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -702,17 +675,16 @@ machine_at_arb1374_init(const machine_t *model)
return ret;
}
int
machine_at_sbc350a_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/sbc350a/350a.rom",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -723,17 +695,16 @@ machine_at_sbc350a_init(const machine_t *model)
return ret;
}
int
machine_at_flytech386_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/flytech386/FLYTECH.BIO",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -741,31 +712,29 @@ machine_at_flytech386_init(const machine_t *model)
device_add(&w83787f_ide_en_device);
if (gfxcard == VID_INTERNAL)
device_add(&tvga8900d_device);
device_add(&tvga8900d_device);
device_add(&keyboard_ps2_device);
return ret;
}
const device_t *
at_flytech386_get_device(void)
{
return &tvga8900d_device;
}
int
machine_at_mr1217_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/mr1217/mrbios.BIN",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -777,17 +746,16 @@ machine_at_mr1217_init(const machine_t *model)
return ret;
}
int
machine_at_pja511m_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/pja511m/2006915102435734.rom",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -800,17 +768,16 @@ machine_at_pja511m_init(const machine_t *model)
return ret;
}
int
machine_at_prox1332_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/prox1332/D30B3AC1.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -822,7 +789,6 @@ machine_at_prox1332_init(const machine_t *model)
return ret;
}
/*
* Current bugs:
* - ctrl-alt-del produces an 8042 error
@@ -833,22 +799,21 @@ machine_at_pc8_init(const machine_t *model)
int ret;
ret = bios_load_interleaved("roms/machines/pc8/ncr_35117_u127_vers.4-2.bin",
"roms/machines/pc8/ncr_35116_u113_vers.4-2.bin",
0x000f0000, 65536, 0);
"roms/machines/pc8/ncr_35116_u113_vers.4-2.bin",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
device_add(&keyboard_at_ncr_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
/*
* Current bugs:
* - ctrl-alt-del produces an 8042 error
@@ -859,31 +824,30 @@ machine_at_3302_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/3302/f000-flex_drive_test.bin",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (ret) {
bios_load_aux_linear("roms/machines/3302/f800-setup_ncr3.5-013190.bin",
0x000f8000, 32768, 0);
bios_load_aux_linear("roms/machines/3302/f800-setup_ncr3.5-013190.bin",
0x000f8000, 32768, 0);
}
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_ide_init(model);
device_add(&neat_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
if (gfxcard == VID_INTERNAL)
device_add(&paradise_pvga1a_ncr3302_device);
device_add(&paradise_pvga1a_ncr3302_device);
device_add(&keyboard_at_ncr_device);
return ret;
}
/*
* Current bugs:
* - soft-reboot after saving CMOS settings/pressing ctrl-alt-del produces an 8042 error
@@ -894,11 +858,11 @@ machine_at_pc916sx_init(const machine_t *model)
int ret;
ret = bios_load_interleaved("roms/machines/pc916sx/ncr_386sx_u46-17_7.3.bin",
"roms/machines/pc916sx/ncr_386sx_u12-19_7.3.bin",
0x000f0000, 65536, 0);
"roms/machines/pc916sx/ncr_386sx_u12-19_7.3.bin",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -906,12 +870,11 @@ machine_at_pc916sx_init(const machine_t *model)
mem_remap_top(384);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
#if defined(DEV_BRANCH) && defined(USE_OLIVETTI)
int
machine_at_m290_init(const machine_t *model)
@@ -919,17 +882,17 @@ machine_at_m290_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/m290/m290_pep3_1.25.bin",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 4);
device_add(&keyboard_at_olivetti_device);
device_add(&port_6x_olivetti_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
device_add(&olivetti_eva_device);

File diff suppressed because it is too large Load Diff

View File

@@ -35,7 +35,7 @@
* 59 Temple Place - Suite 330
* Boston, MA 02111-1307
* USA.
*/
*/
#include <stdio.h>
#include <stdint.h>
#include <string.h>
@@ -53,10 +53,8 @@
#include <86box/fdc.h>
#include <86box/machine.h>
static serial_t *cmd_uart;
static void
cbm_io_write(uint16_t port, uint8_t val, void *p)
{
@@ -64,53 +62,51 @@ cbm_io_write(uint16_t port, uint8_t val, void *p)
lpt2_remove();
switch (val & 3) {
case 1:
lpt1_init(LPT_MDA_ADDR);
break;
case 2:
lpt1_init(LPT1_ADDR);
break;
case 3:
lpt1_init(LPT2_ADDR);
break;
case 1:
lpt1_init(LPT_MDA_ADDR);
break;
case 2:
lpt1_init(LPT1_ADDR);
break;
case 3:
lpt1_init(LPT2_ADDR);
break;
}
switch (val & 0xc) {
case 0x4:
serial_setup(cmd_uart, COM2_ADDR, COM2_IRQ);
break;
case 0x8:
serial_setup(cmd_uart, COM1_ADDR, COM1_IRQ);
break;
case 0x4:
serial_setup(cmd_uart, COM2_ADDR, COM2_IRQ);
break;
case 0x8:
serial_setup(cmd_uart, COM1_ADDR, COM1_IRQ);
break;
}
}
static void
cbm_io_init()
{
io_sethandler(0x0230, 0x0001, NULL,NULL,NULL, cbm_io_write,NULL,NULL, NULL);
io_sethandler(0x0230, 0x0001, NULL, NULL, NULL, cbm_io_write, NULL, NULL, NULL);
}
int
machine_at_cmdpc_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/cmdpc30/commodore pc 30 iii even.bin",
"roms/machines/cmdpc30/commodore pc 30 iii odd.bin",
0x000f8000, 32768, 0);
"roms/machines/cmdpc30/commodore pc 30 iii odd.bin",
0x000f8000, 32768, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_init(model);
mem_remap_top(384);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
cmd_uart = device_add(&ns8250_device);

File diff suppressed because it is too large Load Diff

View File

@@ -44,10 +44,10 @@ machine_at_vpc2007_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/vpc2007/13500.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
is_vpc = 1;

View File

@@ -46,27 +46,26 @@ machine_at_p65up5_cpknd_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/p65up5/NDKN0218.AWD",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_p65up5_common_init(model, &i440fx_device);
return ret;
}
int
machine_at_kn97_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/kn97/0116I.001",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -85,22 +84,21 @@ machine_at_kn97_init(const machine_t *model)
device_add(&intel_flash_bxt_device);
device_add(&lm78_device); /* fans: Chassis, CPU, Power; temperature: MB */
for (uint8_t i = 0; i < 3; i++)
hwm_values.fans[i] *= 2; /* BIOS reports fans with the wrong divisor for some reason */
hwm_values.fans[i] *= 2; /* BIOS reports fans with the wrong divisor for some reason */
return ret;
}
int
machine_at_lx6_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/lx6/LX6C_PZ.B00",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -122,17 +120,16 @@ machine_at_lx6_init(const machine_t *model)
return ret;
}
int
machine_at_spitfire_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/spitfire/SPIHM.02",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -155,50 +152,48 @@ machine_at_spitfire_init(const machine_t *model)
return ret;
}
int
machine_at_p6i440e2_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p6i440e2/E2_v14sl.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4);
pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4);
pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4);
device_add(&i440ex_device);
device_add(&piix4_device);
device_add(&keyboard_ps2_ami_pci_device);
device_add(&w83977tf_device);
device_add(&sst_flash_29ee010_device);
spd_register(SPD_TYPE_SDRAM, 0x03, 256);
device_add(&w83781d_device); /* fans: CPU, CHS, PS; temperatures: unused, CPU, System */
hwm_values.temperatures[0] = 0; /* unused */
hwm_values.voltages[1] = 1500; /* CPUVTT */
device_add(&w83781d_device); /* fans: CPU, CHS, PS; temperatures: unused, CPU, System */
hwm_values.temperatures[0] = 0; /* unused */
hwm_values.voltages[1] = 1500; /* CPUVTT */
return ret;
}
int
machine_at_p2bls_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p2bls/1014ls.003",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -216,27 +211,26 @@ machine_at_p2bls_init(const machine_t *model)
device_add(&piix4e_device);
device_add(&keyboard_ps2_ami_pci_device);
device_add(&w83977ef_device);
//device_add(ics9xxx_get(ICS9150_08)); /* setting proper speeds requires some interaction with the AS97127F ASIC */
// device_add(ics9xxx_get(ICS9150_08)); /* setting proper speeds requires some interaction with the AS97127F ASIC */
device_add(&sst_flash_39sf020_device);
spd_register(SPD_TYPE_SDRAM, 0xF, 256);
device_add(&w83781d_device); /* fans: Chassis, CPU, Power; temperatures: MB, unused, CPU */
hwm_values.temperatures[1] = 0; /* unused */
device_add(&w83781d_device); /* fans: Chassis, CPU, Power; temperatures: MB, unused, CPU */
hwm_values.temperatures[1] = 0; /* unused */
hwm_values.temperatures[2] -= 3; /* CPU offset */
return ret;
}
int
machine_at_p3bf_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p3bf/1008f.004",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -257,23 +251,22 @@ machine_at_p3bf_init(const machine_t *model)
device_add(ics9xxx_get(ICS9250_08));
device_add(&sst_flash_39sf020_device);
spd_register(SPD_TYPE_SDRAM, 0xF, 256);
device_add(&as99127f_device); /* fans: Chassis, CPU, Power; temperatures: MB, JTPWR, CPU */
device_add(&as99127f_device); /* fans: Chassis, CPU, Power; temperatures: MB, JTPWR, CPU */
hwm_values.voltages[4] = hwm_values.voltages[5]; /* +12V reading not in line with other boards; appears to be close to the -12V reading */
return ret;
}
int
machine_at_bf6_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/bf6/Beh_70.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -298,17 +291,16 @@ machine_at_bf6_init(const machine_t *model)
return ret;
}
int
machine_at_ax6bc_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ax6bc/AX6BC_R2.59.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -332,17 +324,16 @@ machine_at_ax6bc_init(const machine_t *model)
return ret;
}
int
machine_at_atc6310bxii_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/atc6310bxii/6310s102.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -365,17 +356,16 @@ machine_at_atc6310bxii_init(const machine_t *model)
return ret;
}
int
machine_at_686bx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/686bx/6BX.F2a",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -393,27 +383,26 @@ machine_at_686bx_init(const machine_t *model)
device_add(&w83977tf_device);
device_add(&intel_flash_bxt_device);
spd_register(SPD_TYPE_SDRAM, 0xF, 256);
device_add(&w83781d_device); /* fans: CPU, unused, unused; temperatures: unused, CPU, unused */
hwm_values.temperatures[0] = 0; /* unused */
device_add(&w83781d_device); /* fans: CPU, unused, unused; temperatures: unused, CPU, unused */
hwm_values.temperatures[0] = 0; /* unused */
hwm_values.temperatures[1] += 4; /* CPU offset */
hwm_values.temperatures[2] = 0; /* unused */
hwm_values.fans[1] = 0; /* unused */
hwm_values.fans[2] = 0; /* unused */
hwm_values.temperatures[2] = 0; /* unused */
hwm_values.fans[1] = 0; /* unused */
hwm_values.fans[2] = 0; /* unused */
return ret;
}
int
machine_at_p6sba_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p6sba/SBAB21.ROM",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -433,8 +422,8 @@ machine_at_p6sba_init(const machine_t *model)
device_add(&keyboard_ps2_ami_pci_device);
device_add(&intel_flash_bxt_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
device_add(&w83781d_device); /* fans: CPU1, CPU2, Thermal Control; temperatures: unused, CPU1, CPU2? */
hwm_values.fans[1] = 0; /* no CPU2 fan */
device_add(&w83781d_device); /* fans: CPU1, CPU2, Thermal Control; temperatures: unused, CPU1, CPU2? */
hwm_values.fans[1] = 0; /* no CPU2 fan */
hwm_values.temperatures[0] = 0; /* unused */
hwm_values.temperatures[2] = 0; /* CPU2? */
/* no CPU2 voltage */
@@ -442,17 +431,16 @@ machine_at_p6sba_init(const machine_t *model)
return ret;
}
int
machine_at_s1846_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/s1846/bx46200f.rom",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -474,8 +462,8 @@ machine_at_s1846_init(const machine_t *model)
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
if (sound_card_current == SOUND_INTERNAL) {
device_add(&es1371_onboard_device);
device_add(&cs4297_device); /* found on other Tyan boards around the same time */
device_add(&es1371_onboard_device);
device_add(&cs4297_device); /* found on other Tyan boards around the same time */
}
return ret;
@@ -487,10 +475,10 @@ machine_at_ficka6130_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/ficka6130/qa4163.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -512,17 +500,16 @@ machine_at_ficka6130_init(const machine_t *model)
return ret;
}
int
machine_at_p3v133_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p3v133/1003.002",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -543,24 +530,23 @@ machine_at_p3v133_init(const machine_t *model)
device_add(ics9xxx_get(ICS9248_39));
device_add(&sst_flash_39sf020_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 512);
device_add(&w83781d_device); /* fans: Chassis, CPU, Power; temperatures: MB, unused, CPU */
hwm_values.temperatures[1] = 0; /* unused */
device_add(&w83781d_device); /* fans: Chassis, CPU, Power; temperatures: MB, unused, CPU */
hwm_values.temperatures[1] = 0; /* unused */
hwm_values.temperatures[2] -= 3; /* CPU offset */
return ret;
}
int
machine_at_p3v4x_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p3v4x/1006.004",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -586,17 +572,16 @@ machine_at_p3v4x_init(const machine_t *model)
return ret;
}
int
machine_at_vei8_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/vei8/QHW1001.BIN",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -619,7 +604,6 @@ machine_at_vei8_init(const machine_t *model)
return ret;
}
static void
machine_at_ms6168_common_init(const machine_t *model)
{
@@ -638,70 +622,66 @@ machine_at_ms6168_common_init(const machine_t *model)
device_add(&w83977ef_device);
if (gfxcard == VID_INTERNAL)
device_add(&voodoo_3_2000_agp_onboard_8m_device);
device_add(&voodoo_3_2000_agp_onboard_8m_device);
device_add(&keyboard_ps2_ami_pci_device);
device_add(&intel_flash_bxt_device);
spd_register(SPD_TYPE_SDRAM, 0x3, 256);
if (sound_card_current == SOUND_INTERNAL) {
device_add(&es1371_onboard_device);
device_add(&cs4297_device);
device_add(&es1371_onboard_device);
device_add(&cs4297_device);
}
}
const device_t *
at_ms6168_get_device(void)
{
return &voodoo_3_2000_agp_onboard_8m_device;
}
int
machine_at_borapro_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/borapro/MS6168V2.50",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_ms6168_common_init(model);
return ret;
}
int
machine_at_ms6168_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ms6168/w6168ims.130",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_ms6168_common_init(model);
return ret;
}
int
machine_at_m729_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/m729/M729NEW.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -716,7 +696,7 @@ machine_at_m729_init(const machine_t *model)
pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x10, PCI_CARD_NORMAL, 3, 4, 1, 2);
device_add(&ali1621_device);
device_add(&ali1543c_device); /* +0 */
device_add(&ali1543c_device); /* +0 */
device_add(&sst_flash_29ee010_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 512);

View File

@@ -46,10 +46,10 @@ machine_at_6gxu_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/6gxu/6gxu.f1c",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -69,9 +69,9 @@ machine_at_6gxu_init(const machine_t *model)
device_add(&w83977ef_device);
device_add(&sst_flash_39sf020_device);
spd_register(SPD_TYPE_SDRAM, 0xF, 512);
device_add(&w83782d_device); /* fans: CPU, Power, System; temperatures: System, CPU, unused */
hwm_values.temperatures[2] = 0; /* unused */
hwm_values.voltages[1] = 1500; /* VGTL */
device_add(&w83782d_device); /* fans: CPU, Power, System; temperatures: System, CPU, unused */
hwm_values.temperatures[2] = 0; /* unused */
hwm_values.voltages[1] = 1500; /* VGTL */
return ret;
}
@@ -82,10 +82,10 @@ machine_at_s2dge_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/s2dge/2gu7301.rom",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -106,8 +106,8 @@ machine_at_s2dge_init(const machine_t *model)
device_add(&w83977tf_device);
device_add(&intel_flash_bxt_device);
spd_register(SPD_TYPE_SDRAM, 0xF, 512);
device_add(&w83781d_device); /* fans: CPU1, CPU2, Thermal Control; temperatures: unused, CPU1, CPU2? */
hwm_values.fans[1] = 0; /* no CPU2 fan */
device_add(&w83781d_device); /* fans: CPU1, CPU2, Thermal Control; temperatures: unused, CPU1, CPU2? */
hwm_values.fans[1] = 0; /* no CPU2 fan */
hwm_values.temperatures[0] = 0; /* unused */
hwm_values.temperatures[2] = 0; /* CPU2? */
@@ -120,10 +120,10 @@ machine_at_fw6400gx_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/fw6400gx/FWGX1211.ROM",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -145,9 +145,9 @@ machine_at_fw6400gx_init(const machine_t *model)
device_add(ics9xxx_get(ICS9250_08));
device_add(&sst_flash_29ee020_device);
spd_register(SPD_TYPE_SDRAM, 0xF, 512);
device_add(&w83781d_device); /* fans: Chassis, Power, CPU; temperatures: System, CPU, unused */
hwm_values.temperatures[3] = 0; /* unused */
hwm_values.voltages[1] = 1500; /* Vtt */
device_add(&w83781d_device); /* fans: Chassis, Power, CPU; temperatures: System, CPU, unused */
hwm_values.temperatures[3] = 0; /* unused */
hwm_values.voltages[1] = 1500; /* Vtt */
return ret;
}

View File

@@ -40,17 +40,16 @@
#include <86box/sound.h>
#include <86box/snd_ac97.h>
int
machine_at_s370slm_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/s370slm/3LM1202.rom",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -68,24 +67,23 @@ machine_at_s370slm_init(const machine_t *model)
device_add(&keyboard_ps2_ami_pci_device);
device_add(&intel_flash_bxt_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
device_add(&w83781d_device); /* fans: CPU, Fan 2, Chassis; temperatures: unused, CPU, unused */
device_add(&w83781d_device); /* fans: CPU, Fan 2, Chassis; temperatures: unused, CPU, unused */
hwm_values.temperatures[0] = 0; /* unused */
hwm_values.temperatures[2] = 0; /* unused */
return ret;
}
int
machine_at_s1857_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/s1857/BX57200A.ROM",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -107,24 +105,23 @@ machine_at_s1857_init(const machine_t *model)
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
if (sound_card_current == SOUND_INTERNAL) {
device_add(&es1371_onboard_device);
device_add(&cs4297_device); /* found on other Tyan boards around the same time */
device_add(&es1371_onboard_device);
device_add(&cs4297_device); /* found on other Tyan boards around the same time */
}
return ret;
}
int
machine_at_p6bap_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p6bap/bapa14a.BIN",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -147,17 +144,16 @@ machine_at_p6bap_init(const machine_t *model)
return ret;
}
int
machine_at_cubx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/cubx/1008cu.004",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -184,17 +180,16 @@ machine_at_cubx_init(const machine_t *model)
return ret;
}
int
machine_at_atc7020bxii_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/atc7020bxii/7020s102.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -217,17 +212,16 @@ machine_at_atc7020bxii_init(const machine_t *model)
return ret;
}
int
machine_at_ambx133_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ambx133/mkbx2vg2.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -248,23 +242,22 @@ machine_at_ambx133_init(const machine_t *model)
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
device_add(&gl518sm_2d_device); /* fans: CPUFAN1, CPUFAN2; temperature: CPU */
hwm_values.fans[1] += 500;
hwm_values.temperatures[0] += 4; /* CPU offset */
hwm_values.temperatures[0] += 4; /* CPU offset */
hwm_values.voltages[1] = RESISTOR_DIVIDER(12000, 10, 2); /* different 12V divider in BIOS (10K/2K?) */
return ret;
}
int
machine_at_awo671r_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/awo671r/a08139c.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -288,17 +281,16 @@ machine_at_awo671r_init(const machine_t *model)
return ret;
}
int
machine_at_63a1_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/63a1/63a-q3.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -321,17 +313,16 @@ machine_at_63a1_init(const machine_t *model)
return ret;
}
int
machine_at_apas3_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/apas3/V0218SAG.BIN",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -353,17 +344,16 @@ machine_at_apas3_init(const machine_t *model)
return ret;
}
int
machine_at_gt694va_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/gt694va/21071100.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -381,32 +371,31 @@ machine_at_gt694va_init(const machine_t *model)
device_add(&keyboard_ps2_ami_pci_device);
device_add(&sst_flash_39sf020_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 1024);
device_add(&w83782d_device); /* fans: CPU, unused, unused; temperatures: System, CPU1, unused */
hwm_values.voltages[1] = 1500; /* IN1 (unknown purpose, assumed Vtt) */
hwm_values.fans[0] = 4500; /* BIOS does not display <4411 RPM */
hwm_values.fans[1] = 0; /* unused */
hwm_values.fans[2] = 0; /* unused */
hwm_values.temperatures[2] = 0; /* unused */
device_add(&w83782d_device); /* fans: CPU, unused, unused; temperatures: System, CPU1, unused */
hwm_values.voltages[1] = 1500; /* IN1 (unknown purpose, assumed Vtt) */
hwm_values.fans[0] = 4500; /* BIOS does not display <4411 RPM */
hwm_values.fans[1] = 0; /* unused */
hwm_values.fans[2] = 0; /* unused */
hwm_values.temperatures[2] = 0; /* unused */
if (sound_card_current == SOUND_INTERNAL) {
device_add(&es1371_onboard_device);
device_add(&cs4297_device); /* assumed */
device_add(&es1371_onboard_device);
device_add(&cs4297_device); /* assumed */
}
return ret;
}
int
machine_at_cuv4xls_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/cuv4xls/1005LS.001",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -431,7 +420,7 @@ machine_at_cuv4xls_init(const machine_t *model)
device_add(&as99127f_device); /* fans: Chassis, CPU, Power; temperatures: MB, JTPWR, CPU */
if (sound_card_current == SOUND_INTERNAL)
device_add(&cmi8738_onboard_device);
device_add(&cmi8738_onboard_device);
return ret;
}
@@ -442,10 +431,10 @@ machine_at_6via90ap_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/6via90ap/90ap10.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -466,10 +455,10 @@ machine_at_6via90ap_init(const machine_t *model)
spd_register(SPD_TYPE_SDRAM, 0x7, 1024);
hwm_values.temperatures[0] += 2; /* CPU offset */
hwm_values.temperatures[1] += 2; /* System offset */
hwm_values.temperatures[2] = 0; /* unused */
hwm_values.temperatures[2] = 0; /* unused */
if (sound_card_current == SOUND_INTERNAL)
device_add(&alc100_device); /* ALC100P identified on similar Acorp boards (694TA, 6VIA90A1) */
device_add(&alc100_device); /* ALC100P identified on similar Acorp boards (694TA, 6VIA90A1) */
return ret;
}

View File

@@ -39,10 +39,10 @@
#include <86box/nvr.h>
#include <86box/scsi_ncr53c8xx.h>
#include <86box/sio.h>
#include <86box/timer.h>
#include <86box/video.h>
#include <86box/machine.h>
void
machine_at_premiere_common_init(const machine_t *model, int pci_switch)
{
@@ -62,7 +62,6 @@ machine_at_premiere_common_init(const machine_t *model, int pci_switch)
device_add(&intel_flash_bxt_ami_device);
}
void
machine_at_award_common_init(const machine_t *model)
{
@@ -80,13 +79,12 @@ machine_at_award_common_init(const machine_t *model)
pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
// device_add(&keyboard_ps2_pci_device);
device_add(&keyboard_ps2_ami_pci_device);
}
void
machine_at_sp4_common_init(const machine_t *model)
{
@@ -110,17 +108,16 @@ machine_at_sp4_common_init(const machine_t *model)
device_add(&intel_flash_bxt_device);
}
int
machine_at_excaliburpci_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_inverted("roms/machines/excaliburpci/S701P.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -142,17 +139,16 @@ machine_at_excaliburpci_init(const machine_t *model)
return ret;
}
int
machine_at_p5mp3_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p5mp3/0205.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
device_add(&ide_pci_device);
@@ -173,17 +169,16 @@ machine_at_p5mp3_init(const machine_t *model)
return ret;
}
int
machine_at_dellxp60_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_inverted("roms/machines/dellxp60/XP60-A08.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
device_add(&ide_pci_2ch_device);
@@ -206,17 +201,16 @@ machine_at_dellxp60_init(const machine_t *model)
return ret;
}
int
machine_at_opti560l_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_inverted("roms/machines/opti560l/560L_A06.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
device_add(&ide_pci_2ch_device);
@@ -236,17 +230,16 @@ machine_at_opti560l_init(const machine_t *model)
return ret;
}
int
machine_at_ambradp60_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/ambradp60/1004AF1P.BIO",
"roms/machines/ambradp60/1004AF1P.BI1", 0x1c000, 128);
"roms/machines/ambradp60/1004AF1P.BI1", 0x1c000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_premiere_common_init(model, 0);
@@ -255,17 +248,16 @@ machine_at_ambradp60_init(const machine_t *model)
return ret;
}
int
machine_at_valuepointp60_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/valuepointp60/1006AV0M.BIO",
"roms/machines/valuepointp60/1006AV0M.BI1", 0x1d000, 128);
"roms/machines/valuepointp60/1006AV0M.BI1", 0x1d000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
device_add(&ide_pci_2ch_device);
@@ -287,17 +279,16 @@ machine_at_valuepointp60_init(const machine_t *model)
return ret;
}
int
machine_at_revenge_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/revenge/1009af2_.bio",
"roms/machines/revenge/1009af2_.bi1", 0x1c000, 128);
"roms/machines/revenge/1009af2_.bi1", 0x1c000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_premiere_common_init(model, 0);
@@ -306,17 +297,16 @@ machine_at_revenge_init(const machine_t *model)
return ret;
}
int
machine_at_586mc1_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/586mc1/IS.34",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_award_common_init(model);
@@ -327,17 +317,16 @@ machine_at_586mc1_init(const machine_t *model)
return ret;
}
int
machine_at_pb520r_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/pb520r/1009bc0r.bio",
"roms/machines/pb520r/1009bc0r.bi1", 0x1d000, 128);
"roms/machines/pb520r/1009bc0r.bi1", 0x1d000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -353,7 +342,7 @@ machine_at_pb520r_init(const machine_t *model)
device_add(&ide_cmd640_pci_single_channel_device);
if (gfxcard == VID_INTERNAL)
device_add(&gd5434_onboard_pci_device);
device_add(&gd5434_onboard_pci_device);
device_add(&keyboard_ps2_pci_device);
device_add(&sio_zb_device);
@@ -369,10 +358,10 @@ machine_at_excalibur_init(const machine_t *model)
int ret;
ret = bios_load_linear_inverted("roms/machines/excalibur/S75P.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -384,17 +373,16 @@ machine_at_excalibur_init(const machine_t *model)
return ret;
}
int
machine_at_p5vl_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p5vl/SM507.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
@@ -408,22 +396,21 @@ machine_at_p5vl_init(const machine_t *model)
device_add(&keyboard_at_ami_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_excaliburpci2_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_inverted("roms/machines/excaliburpci2/S722P.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
@@ -446,17 +433,16 @@ machine_at_excaliburpci2_init(const machine_t *model)
return ret;
}
int
machine_at_p5sp4_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p5sp4/0106.001",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_sp4_common_init(model);

View File

@@ -42,17 +42,16 @@
#include <86box/video.h>
#include <86box/machine.h>
int
machine_at_plato_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/plato/1016ax1_.bio",
"roms/machines/plato/1016ax1_.bi1", 0x1d000, 128);
"roms/machines/plato/1016ax1_.bi1", 0x1d000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_premiere_common_init(model, PCI_CAN_SWITCH_TYPE);
@@ -61,17 +60,16 @@ machine_at_plato_init(const machine_t *model)
return ret;
}
int
machine_at_ambradp90_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/ambradp90/1002AX1P.BIO",
"roms/machines/ambradp90/1002AX1P.BI1", 0x1d000, 128);
"roms/machines/ambradp90/1002AX1P.BI1", 0x1d000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_premiere_common_init(model, PCI_CAN_SWITCH_TYPE);
@@ -80,17 +78,16 @@ machine_at_ambradp90_init(const machine_t *model)
return ret;
}
int
machine_at_430nx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/430nx/IP.20",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_award_common_init(model);
@@ -101,17 +98,16 @@ machine_at_430nx_init(const machine_t *model)
return ret;
}
int
machine_at_acerv30_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/acerv30/V30R01N9.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -132,17 +128,16 @@ machine_at_acerv30_init(const machine_t *model)
return ret;
}
int
machine_at_apollo_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/apollo/S728P.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_1995_nvr_device);
@@ -163,17 +158,16 @@ machine_at_apollo_init(const machine_t *model)
return ret;
}
int
machine_at_exp8551_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/exp8551/AMI20.BIO",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -193,17 +187,16 @@ machine_at_exp8551_init(const machine_t *model)
return ret;
}
int
machine_at_zappa_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/zappa/1006bs0_.bio",
"roms/machines/zappa/1006bs0_.bi1", 0x20000, 128);
"roms/machines/zappa/1006bs0_.bi1", 0x20000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -222,17 +215,16 @@ machine_at_zappa_init(const machine_t *model)
return ret;
}
int
machine_at_powermatev_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/powermatev/BIOS.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -251,17 +243,16 @@ machine_at_powermatev_init(const machine_t *model)
return ret;
}
int
machine_at_mb500n_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/mb500n/031396s.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -281,17 +272,16 @@ machine_at_mb500n_init(const machine_t *model)
return ret;
}
int
machine_at_hawk_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/hawk/HAWK.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
@@ -311,17 +301,16 @@ machine_at_hawk_init(const machine_t *model)
return ret;
}
int
machine_at_pat54pv_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/pat54pv/PAT54PV.bin",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -329,22 +318,21 @@ machine_at_pat54pv_init(const machine_t *model)
device_add(&keyboard_ps2_intel_ami_pci_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_hot543_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/hot543/543_R21.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
@@ -358,39 +346,37 @@ machine_at_hot543_init(const machine_t *model)
device_add(&keyboard_at_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
return ret;
}
int
machine_at_p54sp4_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p54sp4/SI5I0204.AWD",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_sp4_common_init(model);
return ret;
}
int
machine_at_sq588_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/sq588/sq588b03.rom",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);

View File

@@ -46,17 +46,16 @@
#include <86box/nvr.h>
#include <86box/scsi_ncr53c8xx.h>
int
machine_at_acerv35n_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/acerv35n/v35nd1s1.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -78,17 +77,16 @@ machine_at_acerv35n_init(const machine_t *model)
return ret;
}
int
machine_at_ap5vm_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ap5vm/AP5V270.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -113,17 +111,16 @@ machine_at_ap5vm_init(const machine_t *model)
return ret;
}
int
machine_at_p55t2p4_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p55t2p4/0207_j2.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -143,17 +140,16 @@ machine_at_p55t2p4_init(const machine_t *model)
return ret;
}
int
machine_at_m7shi_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/m7shi/m7shi2n.rom",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -173,21 +169,20 @@ machine_at_m7shi_init(const machine_t *model)
return ret;
}
int
machine_at_tc430hx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined2("roms/machines/tc430hx/1007DH0_.BIO",
"roms/machines/tc430hx/1007DH0_.BI1",
"roms/machines/tc430hx/1007DH0_.BI2",
"roms/machines/tc430hx/1007DH0_.BI3",
"roms/machines/tc430hx/1007DH0_.RCV",
0x3a000, 128);
"roms/machines/tc430hx/1007DH0_.BI1",
"roms/machines/tc430hx/1007DH0_.BI2",
"roms/machines/tc430hx/1007DH0_.BI3",
"roms/machines/tc430hx/1007DH0_.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -208,7 +203,6 @@ machine_at_tc430hx_init(const machine_t *model)
return ret;
}
/* Information about that machine on machine.h */
int
machine_at_equium5200_init(const machine_t *model)
@@ -216,14 +210,14 @@ machine_at_equium5200_init(const machine_t *model)
int ret;
ret = bios_load_linear_combined2("roms/machines/equium5200/1003DK08.BIO",
"roms/machines/equium5200/1003DK08.BI1",
"roms/machines/equium5200/1003DK08.BI2",
"roms/machines/equium5200/1003DK08.BI3",
"roms/machines/equium5200/1003DK08.RCV",
0x3a000, 128);
"roms/machines/equium5200/1003DK08.BI1",
"roms/machines/equium5200/1003DK08.BI2",
"roms/machines/equium5200/1003DK08.BI3",
"roms/machines/equium5200/1003DK08.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -244,21 +238,20 @@ machine_at_equium5200_init(const machine_t *model)
return ret;
}
int
machine_at_pcv90_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined2("roms/machines/pcv90/1010DD04.BIO",
"roms/machines/pcv90/1010DD04.BI1",
"roms/machines/pcv90/1010DD04.BI2",
"roms/machines/pcv90/1010DD04.BI3",
"roms/machines/pcv90/1010DD04.RCV",
0x3a000, 128);
"roms/machines/pcv90/1010DD04.BI1",
"roms/machines/pcv90/1010DD04.BI2",
"roms/machines/pcv90/1010DD04.BI3",
"roms/machines/pcv90/1010DD04.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -279,34 +272,32 @@ machine_at_pcv90_init(const machine_t *model)
return ret;
}
int
machine_at_p65up5_cp55t2d_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p65up5/TD5I0201.AWD",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_p65up5_common_init(model, &i430hx_device);
return ret;
}
int
machine_at_p55tvp4_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p55tvp4/0204_128.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -319,24 +310,23 @@ machine_at_p55tvp4_init(const machine_t *model)
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
device_add(&i430vx_device);
device_add(&piix3_device);
device_add(&keyboard_ps2_ami_pci_device); //It uses the AMIKEY KBC
device_add(&keyboard_ps2_ami_pci_device); // It uses the AMIKEY KBC
device_add(&w83877f_device);
device_add(&intel_flash_bxt_device);
return ret;
}
int
machine_at_5ivg_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/5ivg/5IVG.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -355,24 +345,23 @@ machine_at_5ivg_init(const machine_t *model)
return ret;
}
int
machine_at_8500tvxa_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/8500tvxa/tvx0619b.rom",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 2, 1);
pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 3, 2, 1);
@@ -385,17 +374,16 @@ machine_at_8500tvxa_init(const machine_t *model)
return ret;
}
int
machine_at_presario2240_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/presario2240/B0184008.ROM",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -406,7 +394,7 @@ machine_at_presario2240_init(const machine_t *model)
pci_register_slot(0x13, PCI_CARD_NORMAL, 1, 2, 3, 4);
if (gfxcard == VID_INTERNAL)
device_add(&s3_trio64v2_dx_onboard_pci_device);
device_add(&s3_trio64v2_dx_onboard_pci_device);
device_add(&i430vx_device);
device_add(&piix3_device);
@@ -417,17 +405,16 @@ machine_at_presario2240_init(const machine_t *model)
return ret;
}
int
machine_at_presario4500_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/presario4500/B013300I.ROM",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -438,7 +425,7 @@ machine_at_presario4500_init(const machine_t *model)
pci_register_slot(0x13, PCI_CARD_NORMAL, 1, 2, 3, 4);
if (gfxcard == VID_INTERNAL)
device_add(&s3_trio64v2_dx_onboard_pci_device);
device_add(&s3_trio64v2_dx_onboard_pci_device);
device_add(&i430vx_device);
device_add(&piix3_device);
@@ -449,17 +436,16 @@ machine_at_presario4500_init(const machine_t *model)
return ret;
}
int
machine_at_p55va_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p55va/va021297.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -479,17 +465,16 @@ machine_at_p55va_init(const machine_t *model)
return ret;
}
int
machine_at_brio80xx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/brio80xx/Hf0705.rom",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -509,21 +494,20 @@ machine_at_brio80xx_init(const machine_t *model)
return ret;
}
int
machine_at_pb680_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined2("roms/machines/pb680/1012DN0R.BIO",
"roms/machines/pb680/1012DN0R.BI1",
"roms/machines/pb680/1012DN0R.BI2",
"roms/machines/pb680/1012DN0R.BI3",
"roms/machines/pb680/1012DN0R.RCV",
0x3a000, 128);
"roms/machines/pb680/1012DN0R.BI1",
"roms/machines/pb680/1012DN0R.BI2",
"roms/machines/pb680/1012DN0R.BI3",
"roms/machines/pb680/1012DN0R.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -543,17 +527,16 @@ machine_at_pb680_init(const machine_t *model)
return ret;
}
int
machine_at_mb520n_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/mb520n/520n503s.rom",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -573,17 +556,16 @@ machine_at_mb520n_init(const machine_t *model)
return ret;
}
int
machine_at_i430vx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/430vx/55XWUQ0E.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -603,17 +585,16 @@ machine_at_i430vx_init(const machine_t *model)
return ret;
}
int
machine_at_nupro592_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/nupro592/np590b10.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -625,33 +606,32 @@ machine_at_nupro592_init(const machine_t *model)
pci_register_slot(0x14, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); /*Strongly suspect these are on-board slots*/
pci_register_slot(0x0C, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 4); /* PIIX4 */
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 4); /* PIIX4 */
device_add(&i430tx_device);
device_add(&piix4_device);
device_add(&keyboard_ps2_ami_pci_device);
device_add(&w83977ef_device);
device_add(&intel_flash_bxt_device);
spd_register(SPD_TYPE_SDRAM, 0x3, 128);
device_add(&w83781d_device); /* fans: CPU1, unused, unused; temperatures: System, CPU1, unused */
device_add(&w83781d_device); /* fans: CPU1, unused, unused; temperatures: System, CPU1, unused */
hwm_values.temperatures[2] = 0; /* unused */
hwm_values.fans[1] = 0; /* unused */
hwm_values.fans[2] = 0; /* unused */
hwm_values.fans[1] = 0; /* unused */
hwm_values.fans[2] = 0; /* unused */
/* -5V is not reported by the BIOS, but leave it set */
return ret;
}
int
machine_at_tx97_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/tx97/0112.001",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -661,7 +641,7 @@ machine_at_tx97_init(const machine_t *model)
pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4);
device_add(&i430tx_device);
@@ -670,48 +650,47 @@ machine_at_tx97_init(const machine_t *model)
device_add(&w83877tf_acorp_device);
device_add(&intel_flash_bxt_device);
spd_register(SPD_TYPE_SDRAM, 0x3, 128);
device_add(&w83781d_device); /* fans: Chassis, CPU, Power; temperatures: MB, unused, CPU */
device_add(&w83781d_device); /* fans: Chassis, CPU, Power; temperatures: MB, unused, CPU */
hwm_values.temperatures[1] = 0; /* unused */
/* CPU offset */
if (hwm_values.temperatures[2] < 32) /* prevent underflow */
hwm_values.temperatures[2] = 0;
hwm_values.temperatures[2] = 0;
else
hwm_values.temperatures[2] -= 32;
hwm_values.temperatures[2] -= 32;
return ret;
}
#if defined(DEV_BRANCH) && defined(USE_AN430TX)
int
machine_at_an430tx_init(const machine_t *model)
{
int ret;
#if 1
# if 1
ret = bios_load_linear_combined2("roms/machines/an430tx/P10-0095.BIO",
"roms/machines/an430tx/P10-0095.BI1",
"roms/machines/an430tx/P10-0095.BI2",
"roms/machines/an430tx/P10-0095.BI3",
"roms/machines/an430tx/P10-0095.RCV",
0x3a000, 160);
#else
"roms/machines/an430tx/P10-0095.BI1",
"roms/machines/an430tx/P10-0095.BI2",
"roms/machines/an430tx/P10-0095.BI3",
"roms/machines/an430tx/P10-0095.RCV",
0x3a000, 160);
# else
ret = bios_load_linear_combined2("roms/machines/an430tx/P06-0062.BIO",
"roms/machines/an430tx/P06-0062.BI1",
"roms/machines/an430tx/P06-0062.BI2",
"roms/machines/an430tx/P06-0062.BI3",
"roms/machines/an430tx/P10-0095.RCV",
0x3a000, 160);
#endif
"roms/machines/an430tx/P06-0062.BI1",
"roms/machines/an430tx/P06-0062.BI2",
"roms/machines/an430tx/P06-0062.BI3",
"roms/machines/an430tx/P10-0095.RCV",
0x3a000, 160);
# endif
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
// pci_register_slot(0x08, PCI_CARD_VIDEO, 4, 0, 0, 0);
pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1);
@@ -728,17 +707,16 @@ machine_at_an430tx_init(const machine_t *model)
}
#endif
int
machine_at_ym430tx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ym430tx/YM430TX.003",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -748,7 +726,7 @@ machine_at_ym430tx_init(const machine_t *model)
pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4);
device_add(&i430tx_device);
@@ -761,17 +739,16 @@ machine_at_ym430tx_init(const machine_t *model)
return ret;
}
int
machine_at_mb540n_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/mb540n/Tx0720ug.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -781,7 +758,7 @@ machine_at_mb540n_init(const machine_t *model)
pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
device_add(&i430tx_device);
device_add(&piix4_device);
device_add(&keyboard_ps2_pci_device);
@@ -793,15 +770,15 @@ machine_at_mb540n_init(const machine_t *model)
}
int
machine_at_56a5_init(const machine_t* model)
machine_at_56a5_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/56a5/54p5b6b.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -811,7 +788,7 @@ machine_at_56a5_init(const machine_t* model)
pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x13, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x14, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
pci_register_slot(0x10, PCI_CARD_NORMAL, 1, 2, 3, 4);
device_add(&i430tx_device);
device_add(&piix4_device);
@@ -829,16 +806,16 @@ machine_at_p5mms98_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/p5mms98/s981182.rom",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */
pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x13, PCI_CARD_NORMAL, 3, 4, 1, 2);
@@ -849,23 +826,22 @@ machine_at_p5mms98_init(const machine_t *model)
device_add(&w83977tf_device);
device_add(&intel_flash_bxt_device);
spd_register(SPD_TYPE_SDRAM, 0x3, 128);
device_add(&lm78_device); /* fans: Thermal, CPU, Chassis; temperature: unused */
device_add(&lm78_device); /* fans: Thermal, CPU, Chassis; temperature: unused */
device_add(&lm75_1_4a_device); /* temperature: CPU */
return ret;
}
int
machine_at_ficva502_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ficva502/VA502bp.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -886,17 +862,16 @@ machine_at_ficva502_init(const machine_t *model)
return ret;
}
int
machine_at_ficpa2012_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ficpa2012/113jb16.awd",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -919,17 +894,16 @@ machine_at_ficpa2012_init(const machine_t *model)
return ret;
}
int
machine_at_r534f_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/r534f/r534f008.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -949,17 +923,16 @@ machine_at_r534f_init(const machine_t *model)
return ret;
}
int
machine_at_ms5146_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ms5146/A546MS11.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -979,17 +952,16 @@ machine_at_ms5146_init(const machine_t *model)
return ret;
}
int
machine_at_m560_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/m560/5600410s.ami",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -1004,24 +976,23 @@ machine_at_m560_init(const machine_t *model)
pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3);
device_add(&ali1531_device);
device_add(&ali1543_device); /* -5 */
device_add(&ali1543_device); /* -5 */
device_add(&sst_flash_29ee010_device);
spd_register(SPD_TYPE_SDRAM, 0x3, 256);
return ret;
}
int
machine_at_ms5164_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ms5164/W564MS43.005",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -1038,7 +1009,7 @@ machine_at_ms5164_init(const machine_t *model)
pci_register_slot(0x07, PCI_CARD_NORMAL, 1, 2, 3, 4);
device_add(&ali1531_device);
device_add(&ali1543_device); /* -5 */
device_add(&ali1543_device); /* -5 */
device_add(&sst_flash_29ee010_device);
spd_register(SPD_TYPE_SDRAM, 0x3, 256);

View File

@@ -45,7 +45,6 @@
#include <86box/fdc.h>
#include <86box/nvr.h>
static void
machine_at_thor_common_init(const machine_t *model, int mr)
{
@@ -61,7 +60,7 @@ machine_at_thor_common_init(const machine_t *model, int mr)
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
if (gfxcard == VID_INTERNAL)
device_add(&s3_phoenix_trio64vplus_onboard_pci_device);
device_add(&s3_phoenix_trio64vplus_onboard_pci_device);
// device_add(&keyboard_ps2_ami_pci_device);
device_add(&keyboard_ps2_intel_ami_pci_device);
@@ -71,7 +70,6 @@ machine_at_thor_common_init(const machine_t *model, int mr)
device_add(&intel_flash_bxt_ami_device);
}
static void
machine_at_p54tp4xe_common_init(const machine_t *model)
{
@@ -91,68 +89,64 @@ machine_at_p54tp4xe_common_init(const machine_t *model)
device_add(&intel_flash_bxt_device);
}
int
machine_at_p54tp4xe_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p54tp4xe/t15i0302.awd",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_p54tp4xe_common_init(model);
return ret;
}
int
machine_at_p54tp4xe_mr_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p54tp4xe/TRITON.BIO",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_p54tp4xe_common_init(model);
return ret;
}
int
machine_at_gw2katx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/gw2katx/1003CN0T.BIO",
"roms/machines/gw2katx/1003CN0T.BI1", 0x20000, 128);
"roms/machines/gw2katx/1003CN0T.BI1", 0x20000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_thor_common_init(model, 0);
return ret;
}
int
machine_at_thor_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/thor/1006cn0_.bio",
"roms/machines/thor/1006cn0_.bi1", 0x20000, 128);
"roms/machines/thor/1006cn0_.bi1", 0x20000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_thor_common_init(model, 0);
@@ -165,27 +159,26 @@ machine_at_mrthor_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/mrthor/mr_atx.bio",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_thor_common_init(model, 1);
return ret;
}
int
machine_at_endeavor_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/endeavor/1006cb0_.bio",
"roms/machines/endeavor/1006cb0_.bi1", 0x1d000, 128);
"roms/machines/endeavor/1006cb0_.bi1", 0x1d000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -199,7 +192,7 @@ machine_at_endeavor_init(const machine_t *model)
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
if (gfxcard == VID_INTERNAL)
device_add(&s3_phoenix_trio64_onboard_pci_device);
device_add(&s3_phoenix_trio64_onboard_pci_device);
device_add(&keyboard_ps2_intel_ami_pci_device);
device_add(&i430fx_device);
@@ -216,10 +209,10 @@ machine_at_ms5119_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/ms5119/A37E.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -239,17 +232,16 @@ machine_at_ms5119_init(const machine_t *model)
return ret;
}
int
machine_at_pb640_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/pb640/1007CP0R.BIO",
"roms/machines/pb640/1007CP0R.BI1", 0x1d000, 128);
"roms/machines/pb640/1007CP0R.BI1", 0x1d000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -264,7 +256,7 @@ machine_at_pb640_init(const machine_t *model)
device_add(&piix_rev02_device);
if (gfxcard == VID_INTERNAL)
device_add(&gd5440_onboard_pci_device);
device_add(&gd5440_onboard_pci_device);
device_add(&keyboard_ps2_intel_ami_pci_device);
device_add(&pc87306_device);
@@ -279,10 +271,10 @@ machine_at_fmb_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/fmb/P5IV183.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -303,17 +295,16 @@ machine_at_fmb_init(const machine_t *model)
return ret;
}
int
machine_at_acerm3a_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/acerm3a/r01-b3.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -335,17 +326,16 @@ machine_at_acerm3a_init(const machine_t *model)
return ret;
}
int
machine_at_ap53_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ap53/ap53r2c0.rom",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -366,17 +356,16 @@ machine_at_ap53_init(const machine_t *model)
return ret;
}
int
machine_at_8500tuc_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/8500tuc/Tuc0221b.rom",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -396,17 +385,16 @@ machine_at_8500tuc_init(const machine_t *model)
return ret;
}
int
machine_at_p55t2s_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p55t2s/s6y08t.rom",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -426,17 +414,16 @@ machine_at_p55t2s_init(const machine_t *model)
return ret;
}
int
machine_at_p5vxb_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p5vxb/P5VXB10.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -456,21 +443,20 @@ machine_at_p5vxb_init(const machine_t *model)
return ret;
}
int
machine_at_gw2kte_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined2("roms/machines/gw2kte/1008CY1T.BIO",
"roms/machines/gw2kte/1008CY1T.BI1",
"roms/machines/gw2kte/1008CY1T.BI2",
"roms/machines/gw2kte/1008CY1T.BI3",
"roms/machines/gw2kte/1008CY1T.RCV",
0x3a000, 128);
"roms/machines/gw2kte/1008CY1T.BI1",
"roms/machines/gw2kte/1008CY1T.BI2",
"roms/machines/gw2kte/1008CY1T.BI3",
"roms/machines/gw2kte/1008CY1T.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -491,17 +477,16 @@ machine_at_gw2kte_init(const machine_t *model)
return ret;
}
int
machine_at_ap5s_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ap5s/AP5S150.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -521,17 +506,16 @@ machine_at_ap5s_init(const machine_t *model)
return ret;
}
int
machine_at_vectra54_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/vectra54/GT0724.22",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -544,7 +528,7 @@ machine_at_vectra54_init(const machine_t *model)
pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2);
if (gfxcard == VID_INTERNAL)
device_add(&s3_phoenix_trio64_onboard_pci_device);
device_add(&s3_phoenix_trio64_onboard_pci_device);
device_add(&keyboard_ps2_ami_pci_device);
device_add(&i430fx_device);

View File

@@ -39,17 +39,16 @@
#include "cpu.h"
#include <86box/machine.h>
int
machine_at_p6rp4_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p6rp4/OR6I0106.SMC",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
device_add(&p6rp4_nvr_device);
@@ -74,17 +73,16 @@ machine_at_p6rp4_init(const machine_t *model)
return ret;
}
int
machine_at_686nx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/686nx/6nx.140",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -97,24 +95,23 @@ machine_at_686nx_init(const machine_t *model)
pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3);
device_add(&i440fx_device);
device_add(&piix3_device);
device_add(&keyboard_ps2_ami_pci_device); //Uses the AMIKEY keyboard controller
device_add(&keyboard_ps2_ami_pci_device); // Uses the AMIKEY keyboard controller
device_add(&um8669f_device);
device_add(&intel_flash_bxt_device);
return ret;
}
int
machine_at_mb600n_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/mb600n/60915cs.rom",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -140,10 +137,10 @@ machine_at_acerv60n_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/acerv60n/V60NE5.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -170,14 +167,14 @@ machine_at_vs440fx_init(const machine_t *model)
int ret;
ret = bios_load_linear_combined2("roms/machines/vs440fx/1018CS1_.BIO",
"roms/machines/vs440fx/1018CS1_.BI1",
"roms/machines/vs440fx/1018CS1_.BI2",
"roms/machines/vs440fx/1018CS1_.BI3",
"roms/machines/vs440fx/1018CS1_.RCV",
0x3a000, 128);
"roms/machines/vs440fx/1018CS1_.BI1",
"roms/machines/vs440fx/1018CS1_.BI2",
"roms/machines/vs440fx/1018CS1_.BI3",
"roms/machines/vs440fx/1018CS1_.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -204,14 +201,14 @@ machine_at_ap440fx_init(const machine_t *model)
int ret;
ret = bios_load_linear_combined2("roms/machines/ap440fx/1011CT1_.BIO",
"roms/machines/ap440fx/1011CT1_.BI1",
"roms/machines/ap440fx/1011CT1_.BI2",
"roms/machines/ap440fx/1011CT1_.BI3",
"roms/machines/ap440fx/1011CT1_.RCV",
0x3a000, 128);
"roms/machines/ap440fx/1011CT1_.BI1",
"roms/machines/ap440fx/1011CT1_.BI2",
"roms/machines/ap440fx/1011CT1_.BI3",
"roms/machines/ap440fx/1011CT1_.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -237,10 +234,10 @@ machine_at_8600ttc_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/8600ttc/TTC0715B.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -266,10 +263,10 @@ machine_at_m6mi_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/m6mi/M6MI05.ROM",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init(model);
@@ -316,10 +313,10 @@ machine_at_p65up5_cp6nd_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/p65up5/ND6I0218.AWD",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_p65up5_common_init(model, &i440fx_device);

View File

@@ -44,17 +44,16 @@
#include <86box/snd_ac97.h>
#include <86box/clock.h>
int
machine_at_p5a_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/p5a/1011.005",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -72,7 +71,7 @@ machine_at_p5a_init(const machine_t *model)
pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x06, PCI_CARD_NORMAL, 3, 4, 1, 2);
device_add(&ali1541_device);
device_add(&ali1543c_device); /* +0 */
device_add(&ali1543c_device); /* +0 */
device_add(&sst_flash_39sf020_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 512);
device_add(&w83781d_p5a_device); /* fans: Chassis, CPU, Power; temperatures: MB, unused, CPU */
@@ -80,17 +79,16 @@ machine_at_p5a_init(const machine_t *model)
return ret;
}
int
machine_at_m579_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/m579/MS6260S_Socket7_ALi_M1542_AMI.BIN",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -105,24 +103,23 @@ machine_at_m579_init(const machine_t *model)
pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4);
device_add(&ali1541_device);
device_add(&ali1543c_device); /* +0 */
device_add(&ali1543c_device); /* +0 */
device_add(&sst_flash_29ee010_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 512);
return ret;
}
int
machine_at_5aa_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/5aa/GA-5AA.F7b",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -137,24 +134,23 @@ machine_at_5aa_init(const machine_t *model)
pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2);
device_add(&ali1541_device);
device_add(&ali1543c_device); /* +0 */
device_add(&ali1543c_device); /* +0 */
device_add(&sst_flash_29ee010_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 512);
return ret;
}
int
machine_at_5ax_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/5ax/5AX.F4",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -171,24 +167,23 @@ machine_at_5ax_init(const machine_t *model)
pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4);
device_add(&ali1541_device);
device_add(&ali1543c_device); /* +0 */
device_add(&ali1543c_device); /* +0 */
device_add(&sst_flash_29ee010_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 512);
return ret;
}
int
machine_at_ax59pro_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ax59pro/AX59P236.BIN",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -211,17 +206,16 @@ machine_at_ax59pro_init(const machine_t *model)
return ret;
}
int
machine_at_mvp3_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ficva503p/je4333.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -243,17 +237,16 @@ machine_at_mvp3_init(const machine_t *model)
return ret;
}
int
machine_at_ficva503a_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ficva503a/jn4116.bin",
0x000c0000, 262144, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -273,25 +266,24 @@ machine_at_ficva503a_init(const machine_t *model)
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
hwm_values.temperatures[0] += 2; /* CPU offset */
hwm_values.temperatures[1] += 2; /* System offset */
hwm_values.temperatures[2] = 0; /* unused */
hwm_values.temperatures[2] = 0; /* unused */
if (sound_card_current == SOUND_INTERNAL)
device_add(&wm9701a_device); /* on daughtercard */
device_add(&wm9701a_device); /* on daughtercard */
return ret;
}
int
machine_at_5emapro_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/5emapro/5emo1aa2.bin",
0x000e0000, 131072, 0);
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_at_common_init_ex(model, 2);
@@ -311,9 +303,9 @@ machine_at_5emapro_init(const machine_t *model)
device_add(&sst_flash_39sf010_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
device_add(&via_vt82c686_hwm_device); /* fans: CPU1, Chassis; temperatures: CPU, System, unused */
hwm_values.temperatures[0] += 2; /* CPU offset */
hwm_values.temperatures[1] += 2; /* System offset */
hwm_values.temperatures[2] = 0; /* unused */
hwm_values.temperatures[0] += 2; /* CPU offset */
hwm_values.temperatures[1] += 2; /* System offset */
hwm_values.temperatures[2] = 0; /* unused */
return ret;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -105,65 +105,58 @@
#include <86box/video.h>
#include <86box/machine.h>
#define EUROPC_DEBUG 0 /* current debugging level */
#define EUROPC_DEBUG 0 /* current debugging level */
/* M3002 RTC chip registers. */
#define MRTC_SECONDS 0x00 /* BCD, 00-59 */
#define MRTC_MINUTES 0x01 /* BCD, 00-59 */
#define MRTC_HOURS 0x02 /* BCD, 00-23 */
#define MRTC_DAYS 0x03 /* BCD, 01-31 */
#define MRTC_MONTHS 0x04 /* BCD, 01-12 */
#define MRTC_YEARS 0x05 /* BCD, 00-99 (year only) */
#define MRTC_WEEKDAY 0x06 /* BCD, 01-07 */
#define MRTC_WEEKNO 0x07 /* BCD, 01-52 */
#define MRTC_CONF_A 0x08 /* EuroPC config, binary */
#define MRTC_CONF_B 0x09 /* EuroPC config, binary */
#define MRTC_CONF_C 0x0a /* EuroPC config, binary */
#define MRTC_CONF_D 0x0b /* EuroPC config, binary */
#define MRTC_CONF_E 0x0c /* EuroPC config, binary */
#define MRTC_CHECK_LO 0x0d /* Checksum, low byte */
#define MRTC_CHECK_HI 0x0e /* Checksum, high byte */
#define MRTC_CTRLSTAT 0x0f /* RTC control/status, binary */
#define MRTC_SECONDS 0x00 /* BCD, 00-59 */
#define MRTC_MINUTES 0x01 /* BCD, 00-59 */
#define MRTC_HOURS 0x02 /* BCD, 00-23 */
#define MRTC_DAYS 0x03 /* BCD, 01-31 */
#define MRTC_MONTHS 0x04 /* BCD, 01-12 */
#define MRTC_YEARS 0x05 /* BCD, 00-99 (year only) */
#define MRTC_WEEKDAY 0x06 /* BCD, 01-07 */
#define MRTC_WEEKNO 0x07 /* BCD, 01-52 */
#define MRTC_CONF_A 0x08 /* EuroPC config, binary */
#define MRTC_CONF_B 0x09 /* EuroPC config, binary */
#define MRTC_CONF_C 0x0a /* EuroPC config, binary */
#define MRTC_CONF_D 0x0b /* EuroPC config, binary */
#define MRTC_CONF_E 0x0c /* EuroPC config, binary */
#define MRTC_CHECK_LO 0x0d /* Checksum, low byte */
#define MRTC_CHECK_HI 0x0e /* Checksum, high byte */
#define MRTC_CTRLSTAT 0x0f /* RTC control/status, binary */
typedef struct {
uint16_t jim; /* JIM base address */
uint16_t jim; /* JIM base address */
uint8_t regs[16]; /* JIM internal regs (8) */
uint8_t regs[16]; /* JIM internal regs (8) */
nvr_t nvr; /* NVR */
uint8_t nvr_stat;
uint8_t nvr_addr;
nvr_t nvr; /* NVR */
uint8_t nvr_stat;
uint8_t nvr_addr;
void * mouse;
void *mouse;
} europc_t;
static europc_t europc;
#ifdef ENABLE_EUROPC_LOG
int europc_do_log = ENABLE_EUROPC_LOG;
static void
europc_log(const char *fmt, ...)
{
va_list ap;
va_list ap;
if (europc_do_log)
{
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
if (europc_do_log) {
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
}
#else
#define europc_log(fmt, ...)
# define europc_log(fmt, ...)
#endif
/*
* This is called every second through the NVR/RTC hook.
*
@@ -180,56 +173,55 @@ static void
europc_rtc_tick(nvr_t *nvr)
{
uint8_t *regs;
int mon, yr;
int mon, yr;
/* Only if RTC is running.. */
regs = nvr->regs;
if (! (regs[MRTC_CTRLSTAT] & 0x01)) return;
if (!(regs[MRTC_CTRLSTAT] & 0x01))
return;
regs[MRTC_SECONDS] = RTC_BCDINC(nvr->regs[MRTC_SECONDS], 1);
if (regs[MRTC_SECONDS] >= RTC_BCD(60)) {
regs[MRTC_SECONDS] = RTC_BCD(0);
regs[MRTC_MINUTES] = RTC_BCDINC(regs[MRTC_MINUTES], 1);
if (regs[MRTC_MINUTES] >= RTC_BCD(60)) {
regs[MRTC_MINUTES] = RTC_BCD(0);
regs[MRTC_HOURS] = RTC_BCDINC(regs[MRTC_HOURS], 1);
if (regs[MRTC_HOURS] >= RTC_BCD(24)) {
regs[MRTC_HOURS] = RTC_BCD(0);
regs[MRTC_DAYS] = RTC_BCDINC(regs[MRTC_DAYS], 1);
mon = RTC_DCB(regs[MRTC_MONTHS]);
yr = RTC_DCB(regs[MRTC_YEARS]) + 1900;
if (RTC_DCB(regs[MRTC_DAYS]) > nvr_get_days(mon, yr)) {
regs[MRTC_DAYS] = RTC_BCD(1);
regs[MRTC_MONTHS] = RTC_BCDINC(regs[MRTC_MONTHS], 1);
if (regs[MRTC_MONTHS] > RTC_BCD(12)) {
regs[MRTC_MONTHS] = RTC_BCD(1);
regs[MRTC_YEARS] = RTC_BCDINC(regs[MRTC_YEARS], 1) & 0xff;
}
}
}
}
regs[MRTC_SECONDS] = RTC_BCD(0);
regs[MRTC_MINUTES] = RTC_BCDINC(regs[MRTC_MINUTES], 1);
if (regs[MRTC_MINUTES] >= RTC_BCD(60)) {
regs[MRTC_MINUTES] = RTC_BCD(0);
regs[MRTC_HOURS] = RTC_BCDINC(regs[MRTC_HOURS], 1);
if (regs[MRTC_HOURS] >= RTC_BCD(24)) {
regs[MRTC_HOURS] = RTC_BCD(0);
regs[MRTC_DAYS] = RTC_BCDINC(regs[MRTC_DAYS], 1);
mon = RTC_DCB(regs[MRTC_MONTHS]);
yr = RTC_DCB(regs[MRTC_YEARS]) + 1900;
if (RTC_DCB(regs[MRTC_DAYS]) > nvr_get_days(mon, yr)) {
regs[MRTC_DAYS] = RTC_BCD(1);
regs[MRTC_MONTHS] = RTC_BCDINC(regs[MRTC_MONTHS], 1);
if (regs[MRTC_MONTHS] > RTC_BCD(12)) {
regs[MRTC_MONTHS] = RTC_BCD(1);
regs[MRTC_YEARS] = RTC_BCDINC(regs[MRTC_YEARS], 1) & 0xff;
}
}
}
}
}
}
/* Get the current NVR time. */
static void
rtc_time_get(uint8_t *regs, struct tm *tm)
{
/* NVR is in BCD data mode. */
tm->tm_sec = RTC_DCB(regs[MRTC_SECONDS]);
tm->tm_min = RTC_DCB(regs[MRTC_MINUTES]);
tm->tm_sec = RTC_DCB(regs[MRTC_SECONDS]);
tm->tm_min = RTC_DCB(regs[MRTC_MINUTES]);
tm->tm_hour = RTC_DCB(regs[MRTC_HOURS]);
tm->tm_wday = (RTC_DCB(regs[MRTC_WEEKDAY]) - 1);
tm->tm_mday = RTC_DCB(regs[MRTC_DAYS]);
tm->tm_mon = (RTC_DCB(regs[MRTC_MONTHS]) - 1);
tm->tm_mon = (RTC_DCB(regs[MRTC_MONTHS]) - 1);
tm->tm_year = RTC_DCB(regs[MRTC_YEARS]);
#if USE_Y2K
tm->tm_year += (RTC_DCB(regs[MRTC_CENTURY]) * 100) - 1900;
#endif
}
/* Set the current NVR time. */
static void
rtc_time_set(uint8_t *regs, struct tm *tm)
@@ -237,17 +229,16 @@ rtc_time_set(uint8_t *regs, struct tm *tm)
/* NVR is in BCD data mode. */
regs[MRTC_SECONDS] = RTC_BCD(tm->tm_sec);
regs[MRTC_MINUTES] = RTC_BCD(tm->tm_min);
regs[MRTC_HOURS] = RTC_BCD(tm->tm_hour);
regs[MRTC_HOURS] = RTC_BCD(tm->tm_hour);
regs[MRTC_WEEKDAY] = RTC_BCD(tm->tm_wday + 1);
regs[MRTC_DAYS] = RTC_BCD(tm->tm_mday);
regs[MRTC_MONTHS] = RTC_BCD(tm->tm_mon + 1);
regs[MRTC_YEARS] = RTC_BCD(tm->tm_year % 100);
regs[MRTC_DAYS] = RTC_BCD(tm->tm_mday);
regs[MRTC_MONTHS] = RTC_BCD(tm->tm_mon + 1);
regs[MRTC_YEARS] = RTC_BCD(tm->tm_year % 100);
#if USE_Y2K
regs[MRTC_CENTURY] = RTC_BCD((tm->tm_year+1900) / 100);
regs[MRTC_CENTURY] = RTC_BCD((tm->tm_year + 1900) / 100);
#endif
}
static void
rtc_start(nvr_t *nvr)
{
@@ -255,13 +246,13 @@ rtc_start(nvr_t *nvr)
/* Initialize the internal and chip times. */
if (time_sync & TIME_SYNC_ENABLED) {
/* Use the internal clock's time. */
nvr_time_get(&tm);
rtc_time_set(nvr->regs, &tm);
/* Use the internal clock's time. */
nvr_time_get(&tm);
rtc_time_set(nvr->regs, &tm);
} else {
/* Set the internal clock from the chip time. */
rtc_time_get(nvr->regs, &tm);
nvr_time_set(&tm);
/* Set the internal clock from the chip time. */
rtc_time_get(nvr->regs, &tm);
nvr_time_set(&tm);
}
#if 0
@@ -270,36 +261,34 @@ rtc_start(nvr_t *nvr)
#endif
}
/* Create a valid checksum for the current NVR data. */
static uint8_t
rtc_checksum(uint8_t *ptr)
{
uint8_t sum;
int i;
int i;
/* Calculate all bytes with XOR. */
sum = 0x00;
for (i=MRTC_CONF_A; i<=MRTC_CONF_E; i++)
sum += ptr[i];
for (i = MRTC_CONF_A; i <= MRTC_CONF_E; i++)
sum += ptr[i];
return(sum);
return (sum);
}
/* Reset the machine's NVR to a sane state. */
static void
rtc_reset(nvr_t *nvr)
{
/* Initialize the RTC to a known state. */
nvr->regs[MRTC_SECONDS] = RTC_BCD(0); /* seconds */
nvr->regs[MRTC_MINUTES] = RTC_BCD(0); /* minutes */
nvr->regs[MRTC_HOURS] = RTC_BCD(0); /* hours */
nvr->regs[MRTC_DAYS] = RTC_BCD(1); /* days */
nvr->regs[MRTC_MONTHS] = RTC_BCD(1); /* months */
nvr->regs[MRTC_YEARS] = RTC_BCD(80); /* years */
nvr->regs[MRTC_WEEKDAY] = RTC_BCD(1); /* weekday */
nvr->regs[MRTC_WEEKNO] = RTC_BCD(1); /* weekno */
nvr->regs[MRTC_SECONDS] = RTC_BCD(0); /* seconds */
nvr->regs[MRTC_MINUTES] = RTC_BCD(0); /* minutes */
nvr->regs[MRTC_HOURS] = RTC_BCD(0); /* hours */
nvr->regs[MRTC_DAYS] = RTC_BCD(1); /* days */
nvr->regs[MRTC_MONTHS] = RTC_BCD(1); /* months */
nvr->regs[MRTC_YEARS] = RTC_BCD(80); /* years */
nvr->regs[MRTC_WEEKDAY] = RTC_BCD(1); /* weekday */
nvr->regs[MRTC_WEEKNO] = RTC_BCD(1); /* weekno */
/*
* EuroPC System Configuration:
@@ -349,214 +338,210 @@ rtc_reset(nvr_t *nvr)
* [E] 7:4 unknown
* 3:0 country (00=Deutschland, 0A=ASCII)
*/
nvr->regs[MRTC_CONF_A] = 0x00; /* CONFIG A */
nvr->regs[MRTC_CONF_B] = 0x0A; /* CONFIG B */
nvr->regs[MRTC_CONF_C] = 0x28; /* CONFIG C */
nvr->regs[MRTC_CONF_D] = 0x12; /* CONFIG D */
nvr->regs[MRTC_CONF_E] = 0x0A; /* CONFIG E */
nvr->regs[MRTC_CONF_A] = 0x00; /* CONFIG A */
nvr->regs[MRTC_CONF_B] = 0x0A; /* CONFIG B */
nvr->regs[MRTC_CONF_C] = 0x28; /* CONFIG C */
nvr->regs[MRTC_CONF_D] = 0x12; /* CONFIG D */
nvr->regs[MRTC_CONF_E] = 0x0A; /* CONFIG E */
nvr->regs[MRTC_CHECK_LO] = 0x00; /* checksum (LO) */
nvr->regs[MRTC_CHECK_HI] = 0x00; /* checksum (HI) */
nvr->regs[MRTC_CHECK_LO] = 0x00; /* checksum (LO) */
nvr->regs[MRTC_CHECK_HI] = 0x00; /* checksum (HI) */
nvr->regs[MRTC_CTRLSTAT] = 0x01; /* status/control */
nvr->regs[MRTC_CTRLSTAT] = 0x01; /* status/control */
/* Generate a valid checksum. */
nvr->regs[MRTC_CHECK_LO] = rtc_checksum(nvr->regs);
}
/* Execute a JIM control command. */
static void
jim_set(europc_t *sys, uint8_t reg, uint8_t val)
{
switch(reg) {
case 0: /* MISC control (WO) */
// bit0: enable MOUSE
// bit1: enable joystick
break;
switch (reg) {
case 0: /* MISC control (WO) */
// bit0: enable MOUSE
// bit1: enable joystick
break;
case 2: /* AGA control */
if (! (val & 0x80)) {
/* Reset AGA. */
break;
}
case 2: /* AGA control */
if (!(val & 0x80)) {
/* Reset AGA. */
break;
}
switch (val) {
case 0x1f: /* 0001 1111 */
case 0x0b: /* 0000 1011 */
//europc_jim.mode=AGA_MONO;
europc_log("EuroPC: AGA Monochrome mode!\n");
break;
switch (val) {
case 0x1f: /* 0001 1111 */
case 0x0b: /* 0000 1011 */
// europc_jim.mode=AGA_MONO;
europc_log("EuroPC: AGA Monochrome mode!\n");
break;
case 0x18: /* 0001 1000 */
case 0x1a: /* 0001 1010 */
//europc_jim.mode=AGA_COLOR;
break;
case 0x18: /* 0001 1000 */
case 0x1a: /* 0001 1010 */
// europc_jim.mode=AGA_COLOR;
break;
case 0x0e: /* 0000 1100 */
/*80 columns? */
europc_log("EuroPC: AGA 80-column mode!\n");
break;
case 0x0e: /* 0000 1100 */
/*80 columns? */
europc_log("EuroPC: AGA 80-column mode!\n");
break;
case 0x0d: /* 0000 1011 */
/*40 columns? */
europc_log("EuroPC: AGA 40-column mode!\n");
break;
case 0x0d: /* 0000 1011 */
/*40 columns? */
europc_log("EuroPC: AGA 40-column mode!\n");
break;
default:
//europc_jim.mode=AGA_OFF;
break;
}
break;
default:
// europc_jim.mode=AGA_OFF;
break;
}
break;
case 4: /* CPU Speed control */
switch(val & 0xc0) {
case 0x00: /* 4.77 MHz */
// cpu_set_clockscale(0, 1.0/2);
break;
case 4: /* CPU Speed control */
switch (val & 0xc0) {
case 0x00: /* 4.77 MHz */
// cpu_set_clockscale(0, 1.0/2);
break;
case 0x40: /* 7.16 MHz */
// cpu_set_clockscale(0, 3.0/4);
break;
case 0x40: /* 7.16 MHz */
// cpu_set_clockscale(0, 3.0/4);
break;
default: /* 9.54 MHz */
// cpu_set_clockscale(0, 1);break;
break;
}
break;
default: /* 9.54 MHz */
// cpu_set_clockscale(0, 1);break;
break;
}
break;
default:
break;
default:
break;
}
sys->regs[reg] = val;
}
/* Write to one of the JIM registers. */
static void
jim_write(uint16_t addr, uint8_t val, void *priv)
{
europc_t *sys = (europc_t *)priv;
uint8_t b;
europc_t *sys = (europc_t *) priv;
uint8_t b;
#if EUROPC_DEBUG > 1
europc_log("EuroPC: jim_wr(%04x, %02x)\n", addr, val);
#endif
switch (addr & 0x000f) {
case 0x00: /* JIM internal registers (WRONLY) */
case 0x01:
case 0x02:
case 0x03:
case 0x04: /* JIM internal registers (R/W) */
case 0x05:
case 0x06:
case 0x07:
jim_set(sys, (addr & 0x07), val);
break;
case 0x00: /* JIM internal registers (WRONLY) */
case 0x01:
case 0x02:
case 0x03:
case 0x04: /* JIM internal registers (R/W) */
case 0x05:
case 0x06:
case 0x07:
jim_set(sys, (addr & 0x07), val);
break;
case 0x0a: /* M3002 RTC INDEX/DATA register */
switch(sys->nvr_stat) {
case 0: /* save index */
sys->nvr_addr = val & 0x0f;
sys->nvr_stat++;
break;
case 0x0a: /* M3002 RTC INDEX/DATA register */
switch (sys->nvr_stat) {
case 0: /* save index */
sys->nvr_addr = val & 0x0f;
sys->nvr_stat++;
break;
case 1: /* save data HI nibble */
b = sys->nvr.regs[sys->nvr_addr] & 0x0f;
b |= (val << 4);
sys->nvr.regs[sys->nvr_addr] = b;
sys->nvr_stat++;
nvr_dosave++;
break;
case 1: /* save data HI nibble */
b = sys->nvr.regs[sys->nvr_addr] & 0x0f;
b |= (val << 4);
sys->nvr.regs[sys->nvr_addr] = b;
sys->nvr_stat++;
nvr_dosave++;
break;
case 2: /* save data LO nibble */
b = sys->nvr.regs[sys->nvr_addr] & 0xf0;
b |= (val & 0x0f);
sys->nvr.regs[sys->nvr_addr] = b;
sys->nvr_stat = 0;
nvr_dosave++;
break;
}
break;
case 2: /* save data LO nibble */
b = sys->nvr.regs[sys->nvr_addr] & 0xf0;
b |= (val & 0x0f);
sys->nvr.regs[sys->nvr_addr] = b;
sys->nvr_stat = 0;
nvr_dosave++;
break;
}
break;
default:
europc_log("EuroPC: invalid JIM write %02x, val %02x\n", addr, val);
break;
default:
europc_log("EuroPC: invalid JIM write %02x, val %02x\n", addr, val);
break;
}
}
/* Read from one of the JIM registers. */
static uint8_t
jim_read(uint16_t addr, void *priv)
{
europc_t *sys = (europc_t *)priv;
uint8_t r = 0xff;
europc_t *sys = (europc_t *) priv;
uint8_t r = 0xff;
switch (addr & 0x000f) {
case 0x00: /* JIM internal registers (WRONLY) */
case 0x01:
case 0x02:
case 0x03:
r = 0x00;
break;
case 0x00: /* JIM internal registers (WRONLY) */
case 0x01:
case 0x02:
case 0x03:
r = 0x00;
break;
case 0x04: /* JIM internal registers (R/W) */
case 0x05:
case 0x06:
case 0x07:
r = sys->regs[addr & 0x07];
break;
case 0x04: /* JIM internal registers (R/W) */
case 0x05:
case 0x06:
case 0x07:
r = sys->regs[addr & 0x07];
break;
case 0x0a: /* M3002 RTC INDEX/DATA register */
switch(sys->nvr_stat) {
case 0:
r = 0x00;
break;
case 0x0a: /* M3002 RTC INDEX/DATA register */
switch (sys->nvr_stat) {
case 0:
r = 0x00;
break;
case 1: /* read data HI nibble */
r = (sys->nvr.regs[sys->nvr_addr] >> 4);
sys->nvr_stat++;
break;
case 1: /* read data HI nibble */
r = (sys->nvr.regs[sys->nvr_addr] >> 4);
sys->nvr_stat++;
break;
case 2: /* read data LO nibble */
r = (sys->nvr.regs[sys->nvr_addr] & 0x0f);
sys->nvr_stat = 0;
break;
}
break;
case 2: /* read data LO nibble */
r = (sys->nvr.regs[sys->nvr_addr] & 0x0f);
sys->nvr_stat = 0;
break;
}
break;
default:
europc_log("EuroPC: invalid JIM read %02x\n", addr);
break;
default:
europc_log("EuroPC: invalid JIM read %02x\n", addr);
break;
}
#if EUROPC_DEBUG > 1
europc_log("EuroPC: jim_rd(%04x): %02x\n", addr, r);
#endif
return(r);
return (r);
}
/* Initialize the mainboard 'device' of the machine. */
static void *
europc_boot(const device_t *info)
{
europc_t *sys = &europc;
uint8_t b;
uint8_t b;
#if EUROPC_DEBUG
europc_log("EuroPC: booting mainboard..\n");
#endif
europc_log("EuroPC: NVR=[ %02x %02x %02x %02x %02x ] %sVALID\n",
sys->nvr.regs[MRTC_CONF_A], sys->nvr.regs[MRTC_CONF_B],
sys->nvr.regs[MRTC_CONF_C], sys->nvr.regs[MRTC_CONF_D],
sys->nvr.regs[MRTC_CONF_E],
(sys->nvr.regs[MRTC_CHECK_LO]!=rtc_checksum(sys->nvr.regs))?"IN":"");
sys->nvr.regs[MRTC_CONF_A], sys->nvr.regs[MRTC_CONF_B],
sys->nvr.regs[MRTC_CONF_C], sys->nvr.regs[MRTC_CONF_D],
sys->nvr.regs[MRTC_CONF_E],
(sys->nvr.regs[MRTC_CHECK_LO] != rtc_checksum(sys->nvr.regs)) ? "IN" : "");
/*
* Now that we have initialized the NVR (either from file,
@@ -566,57 +551,57 @@ europc_boot(const device_t *info)
b = (sys->nvr.regs[MRTC_CONF_D] & ~0x17);
video_reset(gfxcard);
if (video_is_cga())
b |= 0x12; /* external video, CGA80 */
b |= 0x12; /* external video, CGA80 */
else if (video_is_mda())
b |= 0x03; /* external video, mono */
b |= 0x03; /* external video, mono */
else
b |= 0x10; /* external video, special */
b |= 0x10; /* external video, special */
sys->nvr.regs[MRTC_CONF_D] = b;
/* Update the memory size. */
b = (sys->nvr.regs[MRTC_CONF_C] & 0xf3);
switch(mem_size) {
case 256:
b |= 0x04;
break;
switch (mem_size) {
case 256:
b |= 0x04;
break;
case 512:
b |= 0x08;
break;
case 512:
b |= 0x08;
break;
case 640:
b |= 0x00;
break;
case 640:
b |= 0x00;
break;
}
sys->nvr.regs[MRTC_CONF_C] = b;
/* Update CPU speed. */
b = (sys->nvr.regs[MRTC_CONF_D] & 0x3f);
switch(cpu) {
case 0: /* 8088, 4.77 MHz */
b |= 0x00;
break;
switch (cpu) {
case 0: /* 8088, 4.77 MHz */
b |= 0x00;
break;
case 1: /* 8088, 7.15 MHz */
b |= 0x40;
break;
case 1: /* 8088, 7.15 MHz */
b |= 0x40;
break;
case 2: /* 8088, 9.56 MHz */
b |= 0x80;
break;
case 2: /* 8088, 9.56 MHz */
b |= 0x80;
break;
}
sys->nvr.regs[MRTC_CONF_D] = b;
/* Set up game port. */
b = (sys->nvr.regs[MRTC_CONF_C] & 0xfc);
if (mouse_type == MOUSE_TYPE_INTERNAL) {
sys->mouse = device_add(&mouse_logibus_onboard_device);
mouse_bus_set_irq(sys->mouse, 2);
/* Configure the port for (Bus Mouse Compatible) Mouse. */
b |= 0x01;
sys->mouse = device_add(&mouse_logibus_onboard_device);
mouse_bus_set_irq(sys->mouse, 2);
/* Configure the port for (Bus Mouse Compatible) Mouse. */
b |= 0x01;
} else if (joystick_type)
b |= 0x02; /* enable port as joysticks */
b |= 0x02; /* enable port as joysticks */
sys->nvr.regs[MRTC_CONF_C] = b;
#if 0
@@ -637,36 +622,36 @@ europc_boot(const device_t *info)
* the way of other cards that need this range.
*/
io_sethandler(sys->jim, 16,
jim_read,NULL,NULL, jim_write,NULL,NULL, sys);
jim_read, NULL, NULL, jim_write, NULL, NULL, sys);
/* Only after JIM has been initialized. */
(void)device_add(&keyboard_xt_device);
(void) device_add(&keyboard_xt_device);
/* Enable and set up the FDC. */
(void)device_add(&fdc_xt_device);
(void) device_add(&fdc_xt_device);
/*
/*
* Set up and enable the HD20 disk controller.
*
* We only do this if we have not configured another one.
*/
if (hdc_current == 1)
(void)device_add(&xta_hd20_device);
(void) device_add(&xta_hd20_device);
return(sys);
return (sys);
}
static void
europc_close(void *priv)
{
nvr_t *nvr = &europc.nvr;
if (nvr->fn != NULL)
free(nvr->fn);
free(nvr->fn);
}
static const device_config_t europc_config[] = {
// clang-format off
{
.name = "js9",
.description = "JS9 Jumper (JIM)",
@@ -682,20 +667,21 @@ static const device_config_t europc_config[] = {
},
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t europc_device = {
.name = "EuroPC System Board",
.name = "EuroPC System Board",
.internal_name = "europc",
.flags = 0,
.local = 0,
.init = europc_boot,
.close = europc_close,
.reset = NULL,
.flags = 0,
.local = 0,
.init = europc_boot,
.close = europc_close,
.reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
.force_redraw = NULL,
.config = europc_config
.force_redraw = NULL,
.config = europc_config
};
/*
@@ -712,10 +698,10 @@ machine_europc_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/europc/50145",
0x000f8000, 32768, 0);
0x000f8000, 32768, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_common_init(model);
pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt);
@@ -728,12 +714,12 @@ machine_europc_init(const machine_t *model)
/* This is machine specific. */
europc.nvr.size = model->nvrmask + 1;
europc.nvr.irq = -1;
europc.nvr.irq = -1;
/* Set up any local handlers here. */
europc.nvr.reset = rtc_reset;
europc.nvr.start = rtc_start;
europc.nvr.tick = europc_rtc_tick;
europc.nvr.tick = europc_rtc_tick;
/* Initialize the actual NVR. */
nvr_init(&europc.nvr);

File diff suppressed because it is too large Load Diff

View File

@@ -64,208 +64,198 @@
#include <86box/machine.h>
#include <86box/sound.h>
typedef struct {
int model;
int model;
rom_t mid_rom, high_rom;
rom_t mid_rom, high_rom;
uint8_t ps1_91,
ps1_92,
ps1_94,
ps1_102,
ps1_103,
ps1_104,
ps1_105,
ps1_190;
int ps1_e0_addr;
uint8_t ps1_e0_regs[256];
uint8_t ps1_91,
ps1_92,
ps1_94,
ps1_102,
ps1_103,
ps1_104,
ps1_105,
ps1_190;
int ps1_e0_addr;
uint8_t ps1_e0_regs[256];
serial_t *uart;
serial_t *uart;
} ps1_t;
static void
recalc_memory(ps1_t *ps)
{
/* Enable first 512K */
mem_set_mem_state(0x00000, 0x80000,
(ps->ps1_e0_regs[0] & 0x01) ?
(MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) :
(MEM_READ_EXTANY | MEM_WRITE_EXTANY));
(ps->ps1_e0_regs[0] & 0x01) ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
/* Enable 512-640K */
mem_set_mem_state(0x80000, 0x20000,
(ps->ps1_e0_regs[1] & 0x01) ?
(MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) :
(MEM_READ_EXTANY | MEM_WRITE_EXTANY));
(ps->ps1_e0_regs[1] & 0x01) ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
}
static void
ps1_write(uint16_t port, uint8_t val, void *priv)
{
ps1_t *ps = (ps1_t *)priv;
ps1_t *ps = (ps1_t *) priv;
switch (port) {
case 0x0092:
if (ps->model != 2011) {
if (val & 1) {
softresetx86();
cpu_set_edx();
}
ps->ps1_92 = val & ~1;
} else {
ps->ps1_92 = val;
}
mem_a20_alt = val & 2;
mem_a20_recalc();
break;
case 0x0092:
if (ps->model != 2011) {
if (val & 1) {
softresetx86();
cpu_set_edx();
}
ps->ps1_92 = val & ~1;
} else {
ps->ps1_92 = val;
}
mem_a20_alt = val & 2;
mem_a20_recalc();
break;
case 0x0094:
ps->ps1_94 = val;
break;
case 0x0094:
ps->ps1_94 = val;
break;
case 0x00e0:
if (ps->model != 2011) {
ps->ps1_e0_addr = val;
}
break;
case 0x00e0:
if (ps->model != 2011) {
ps->ps1_e0_addr = val;
}
break;
case 0x00e1:
if (ps->model != 2011) {
ps->ps1_e0_regs[ps->ps1_e0_addr] = val;
recalc_memory(ps);
}
break;
case 0x00e1:
if (ps->model != 2011) {
ps->ps1_e0_regs[ps->ps1_e0_addr] = val;
recalc_memory(ps);
}
break;
case 0x0102:
if (!(ps->ps1_94 & 0x80)) {
lpt1_remove();
serial_remove(ps->uart);
if (val & 0x04) {
if (val & 0x08)
serial_setup(ps->uart, COM1_ADDR, COM1_IRQ);
else
serial_setup(ps->uart, COM2_ADDR, COM2_IRQ);
}
if (val & 0x10) {
switch ((val >> 5) & 3)
{
case 0:
lpt1_init(LPT_MDA_ADDR);
break;
case 1:
lpt1_init(LPT1_ADDR);
break;
case 2:
lpt1_init(LPT2_ADDR);
break;
}
}
ps->ps1_102 = val;
}
break;
case 0x0102:
if (!(ps->ps1_94 & 0x80)) {
lpt1_remove();
serial_remove(ps->uart);
if (val & 0x04) {
if (val & 0x08)
serial_setup(ps->uart, COM1_ADDR, COM1_IRQ);
else
serial_setup(ps->uart, COM2_ADDR, COM2_IRQ);
}
if (val & 0x10) {
switch ((val >> 5) & 3) {
case 0:
lpt1_init(LPT_MDA_ADDR);
break;
case 1:
lpt1_init(LPT1_ADDR);
break;
case 2:
lpt1_init(LPT2_ADDR);
break;
}
}
ps->ps1_102 = val;
}
break;
case 0x0103:
ps->ps1_103 = val;
break;
case 0x0103:
ps->ps1_103 = val;
break;
case 0x0104:
ps->ps1_104 = val;
break;
case 0x0104:
ps->ps1_104 = val;
break;
case 0x0105:
ps->ps1_105 = val;
break;
case 0x0105:
ps->ps1_105 = val;
break;
case 0x0190:
ps->ps1_190 = val;
break;
case 0x0190:
ps->ps1_190 = val;
break;
}
}
static uint8_t
ps1_read(uint16_t port, void *priv)
{
ps1_t *ps = (ps1_t *)priv;
ps1_t *ps = (ps1_t *) priv;
uint8_t ret = 0xff;
switch (port) {
case 0x0091:
ret = ps->ps1_91;
ps->ps1_91 = 0;
break;
case 0x0091:
ret = ps->ps1_91;
ps->ps1_91 = 0;
break;
case 0x0092:
ret = ps->ps1_92;
break;
case 0x0092:
ret = ps->ps1_92;
break;
case 0x0094:
ret = ps->ps1_94;
break;
case 0x0094:
ret = ps->ps1_94;
break;
case 0x00e1:
if (ps->model != 2011) {
ret = ps->ps1_e0_regs[ps->ps1_e0_addr];
}
break;
case 0x00e1:
if (ps->model != 2011) {
ret = ps->ps1_e0_regs[ps->ps1_e0_addr];
}
break;
case 0x0102:
if (ps->model == 2011)
ret = ps->ps1_102 | 0x08;
else
ret = ps->ps1_102;
break;
case 0x0102:
if (ps->model == 2011)
ret = ps->ps1_102 | 0x08;
else
ret = ps->ps1_102;
break;
case 0x0103:
ret = ps->ps1_103;
break;
case 0x0103:
ret = ps->ps1_103;
break;
case 0x0104:
ret = ps->ps1_104;
break;
case 0x0104:
ret = ps->ps1_104;
break;
case 0x0105:
if (ps->model == 2011)
ret = ps->ps1_105;
else
ret = ps->ps1_105 | 0x80;
break;
case 0x0105:
if (ps->model == 2011)
ret = ps->ps1_105;
else
ret = ps->ps1_105 | 0x80;
break;
case 0x0190:
ret = ps->ps1_190;
break;
case 0x0190:
ret = ps->ps1_190;
break;
default:
break;
default:
break;
}
return(ret);
return (ret);
}
static void
ps1_setup(int model)
{
ps1_t *ps;
void *priv;
void *priv;
ps = (ps1_t *)malloc(sizeof(ps1_t));
ps = (ps1_t *) malloc(sizeof(ps1_t));
memset(ps, 0x00, sizeof(ps1_t));
ps->model = model;
io_sethandler(0x0091, 1,
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
io_sethandler(0x0092, 1,
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
io_sethandler(0x0094, 1,
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
io_sethandler(0x0102, 4,
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
io_sethandler(0x0190, 1,
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
ps->uart = device_add_inst(&ns16450_device, 1);
@@ -277,47 +267,47 @@ ps1_setup(int model)
device_add(&ps_nvr_device);
if (model == 2011) {
rom_init(&ps->high_rom,
"roms/machines/ibmps1es/f80000.bin",
0xf80000, 0x80000, 0x7ffff, 0, MEM_MAPPING_EXTERNAL);
rom_init(&ps->high_rom,
"roms/machines/ibmps1es/f80000.bin",
0xf80000, 0x80000, 0x7ffff, 0, MEM_MAPPING_EXTERNAL);
lpt2_remove();
lpt2_remove();
device_add(&ps1snd_device);
device_add(&ps1snd_device);
device_add(&fdc_at_ps1_device);
device_add(&fdc_at_ps1_device);
/* Enable the builtin HDC. */
if (hdc_current == 1) {
priv = device_add(&ps1_hdc_device);
/* Enable the builtin HDC. */
if (hdc_current == 1) {
priv = device_add(&ps1_hdc_device);
ps1_hdc_inform(priv, &ps->ps1_91);
}
ps1_hdc_inform(priv, &ps->ps1_91);
}
/* Enable the PS/1 VGA controller. */
device_add(&ps1vga_device);
/* Enable the PS/1 VGA controller. */
device_add(&ps1vga_device);
} else if (model == 2121) {
io_sethandler(0x00e0, 2,
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
io_sethandler(0x00e0, 2,
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
if (rom_present("roms/machines/ibmps1_2121/F80000.BIN")) {
rom_init(&ps->mid_rom,
"roms/machines/ibmps1_2121/F80000.BIN",
0xf80000, 0x40000, 0x3ffff, 0, MEM_MAPPING_EXTERNAL);
}
rom_init(&ps->high_rom,
"roms/machines/ibmps1_2121/FC0000.BIN",
0xfc0000, 0x40000, 0x3ffff, 0, MEM_MAPPING_EXTERNAL);
if (rom_present("roms/machines/ibmps1_2121/F80000.BIN")) {
rom_init(&ps->mid_rom,
"roms/machines/ibmps1_2121/F80000.BIN",
0xf80000, 0x40000, 0x3ffff, 0, MEM_MAPPING_EXTERNAL);
}
rom_init(&ps->high_rom,
"roms/machines/ibmps1_2121/FC0000.BIN",
0xfc0000, 0x40000, 0x3ffff, 0, MEM_MAPPING_EXTERNAL);
/* Initialize the video controller. */
if (gfxcard == VID_INTERNAL)
device_add(&ibm_ps1_2121_device);
/* Initialize the video controller. */
if (gfxcard == VID_INTERNAL)
device_add(&ibm_ps1_2121_device);
device_add(&fdc_at_ps1_device);
device_add(&fdc_at_ps1_device);
device_add(&ide_isa_device);
device_add(&ide_isa_device);
device_add(&ps1snd_device);
device_add(&ps1snd_device);
}
}
@@ -339,17 +329,16 @@ ps1_common_init(const machine_t *model)
standalone_gameport_type = &gameport_201_device;
}
int
machine_ps1_m2011_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ibmps1es/f80000.bin",
0x000e0000, 131072, 0x60000);
0x000e0000, 131072, 0x60000);
if (bios_only || !ret)
return ret;
return ret;
ps1_common_init(model);
@@ -358,17 +347,16 @@ machine_ps1_m2011_init(const machine_t *model)
return ret;
}
int
machine_ps1_m2121_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ibmps1_2121/FC0000.BIN",
0x000e0000, 131072, 0x20000);
0x000e0000, 131072, 0x20000);
if (bios_only || !ret)
return ret;
return ret;
ps1_common_init(model);

File diff suppressed because it is too large Load Diff

View File

@@ -25,28 +25,26 @@
#include <86box/video.h>
#include <86box/machine.h>
typedef struct {
int model;
int model;
int cpu_type;
uint8_t ps2_91,
ps2_92,
ps2_94,
ps2_102,
ps2_103,
ps2_104,
ps2_105,
ps2_190;
uint8_t ps2_91,
ps2_92,
ps2_94,
ps2_102,
ps2_103,
ps2_104,
ps2_105,
ps2_190;
serial_t *uart;
} ps2_isa_t;
static void
ps2_write(uint16_t port, uint8_t val, void *priv)
{
ps2_isa_t *ps2 = (ps2_isa_t *)priv;
ps2_isa_t *ps2 = (ps2_isa_t *) priv;
switch (port) {
case 0x0094:
@@ -98,16 +96,15 @@ ps2_write(uint16_t port, uint8_t val, void *priv)
}
}
static uint8_t
ps2_read(uint16_t port, void *priv)
{
ps2_isa_t *ps2 = (ps2_isa_t *)priv;
uint8_t temp = 0xff;
ps2_isa_t *ps2 = (ps2_isa_t *) priv;
uint8_t temp = 0xff;
switch (port) {
case 0x0091:
temp = ps2->ps2_91;
temp = ps2->ps2_91;
ps2->ps2_91 = 0;
break;
@@ -139,34 +136,32 @@ ps2_read(uint16_t port, void *priv)
return temp;
}
static void
ps2_isa_setup(int model, int cpu_type)
{
ps2_isa_t *ps2;
void *priv;
void *priv;
ps2 = (ps2_isa_t *)malloc(sizeof(ps2_isa_t));
ps2 = (ps2_isa_t *) malloc(sizeof(ps2_isa_t));
memset(ps2, 0x00, sizeof(ps2_isa_t));
ps2->model = model;
ps2->model = model;
ps2->cpu_type = cpu_type;
io_sethandler(0x0091, 1,
ps2_read, NULL, NULL, ps2_write, NULL, NULL, ps2);
ps2_read, NULL, NULL, ps2_write, NULL, NULL, ps2);
io_sethandler(0x0094, 1,
ps2_read, NULL, NULL, ps2_write, NULL, NULL, ps2);
ps2_read, NULL, NULL, ps2_write, NULL, NULL, ps2);
io_sethandler(0x0102, 4,
ps2_read, NULL, NULL, ps2_write, NULL, NULL, ps2);
ps2_read, NULL, NULL, ps2_write, NULL, NULL, ps2);
io_sethandler(0x0190, 1,
ps2_read, NULL, NULL, ps2_write, NULL, NULL, ps2);
ps2_read, NULL, NULL, ps2_write, NULL, NULL, ps2);
ps2->uart = device_add_inst(&ns16450_device, 1);
lpt1_remove();
lpt1_init(LPT_MDA_ADDR);
device_add(&port_92_device);
device_add(&port_92_device);
mem_remap_top(384);
@@ -183,7 +178,6 @@ ps2_isa_setup(int model, int cpu_type)
device_add(&ps1vga_device);
}
static void
ps2_isa_common_init(const machine_t *model)
{
@@ -199,7 +193,6 @@ ps2_isa_common_init(const machine_t *model)
device_add(&port_6x_ps2_device);
}
int
machine_ps2_m30_286_init(const machine_t *model)
{

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -50,47 +50,47 @@
int
machine_v86p_init(const machine_t *model)
{
int ret, rom = 0;
int ret, rom = 0;
ret = bios_load_interleavedr("roms/machines/v86p/INTEL8086AWD_BIOS_S3.1_V86P_122089_Even.rom",
"roms/machines/v86p/INTEL8086AWD_BIOS_S3.1_V86P_122089_Odd.rom",
0x000f8000, 65536, 0);
ret = bios_load_interleavedr("roms/machines/v86p/INTEL8086AWD_BIOS_S3.1_V86P_122089_Even.rom",
"roms/machines/v86p/INTEL8086AWD_BIOS_S3.1_V86P_122089_Odd.rom",
0x000f8000, 65536, 0);
if (!ret) {
/* Try an older version of the BIOS. */
rom = 1;
ret = bios_load_interleavedr("roms/machines/v86p/INTEL8086AWD_BIOS_S3.1_V86P_090489_Even.rom",
"roms/machines/v86p/INTEL8086AWD_BIOS_S3.1_V86P_090489_Odd.rom",
0x000f8000, 65536, 0);
}
if (!ret) {
/* Try an older version of the BIOS. */
rom = 1;
ret = bios_load_interleavedr("roms/machines/v86p/INTEL8086AWD_BIOS_S3.1_V86P_090489_Even.rom",
"roms/machines/v86p/INTEL8086AWD_BIOS_S3.1_V86P_090489_Odd.rom",
0x000f8000, 65536, 0);
}
if (!ret) {
/* Try JVERNET's BIOS. */
rom = 2;
ret = bios_load_linear("roms/machines/v86p/V86P.ROM",
0x000f0000, 65536, 0);
}
if (!ret) {
/* Try JVERNET's BIOS. */
rom = 2;
ret = bios_load_linear("roms/machines/v86p/V86P.ROM",
0x000f0000, 65536, 0);
}
if (bios_only || !ret)
return ret;
if (bios_only || !ret)
return ret;
if (rom == 2)
loadfont("roms/machines/v86p/V86P.FON", 8);
else
loadfont("roms/machines/v86p/v86pfont.rom", 8);
if (rom == 2)
loadfont("roms/machines/v86p/V86P.FON", 8);
else
loadfont("roms/machines/v86p/v86pfont.rom", 8);
machine_common_init(model);
machine_common_init(model);
device_add(&ct_82c100_device);
device_add(&f82c606_device);
device_add(&ct_82c100_device);
device_add(&f82c606_device);
device_add(&keyboard_xt_device);
device_add(&keyboard_xt_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_xt_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_xt_device);
if (gfxcard == VID_INTERNAL)
device_add(&f82c425_video_device);
if (gfxcard == VID_INTERNAL)
device_add(&f82c425_video_device);
return ret;
return ret;
}

View File

@@ -27,33 +27,32 @@ machine_xt_common_init(const machine_t *model)
pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_xt_device);
device_add(&fdc_xt_device);
nmi_init();
standalone_gameport_type = &gameport_device;
}
int
machine_pc_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ibmpc/BIOS_5150_24APR81_U33.BIN",
0x000fe000, 40960, 0);
0x000fe000, 40960, 0);
if (ret) {
bios_load_aux_linear("roms/machines/ibmpc/IBM 5150 - Cassette BASIC version C1.00 - U29 - 5700019.bin",
0x000f6000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc/IBM 5150 - Cassette BASIC version C1.00 - U30 - 5700027.bin",
0x000f8000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc/IBM 5150 - Cassette BASIC version C1.00 - U31 - 5700035.bin",
0x000fa000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc/IBM 5150 - Cassette BASIC version C1.00 - U32 - 5700043.bin",
0x000fc000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc/IBM 5150 - Cassette BASIC version C1.00 - U29 - 5700019.bin",
0x000f6000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc/IBM 5150 - Cassette BASIC version C1.00 - U30 - 5700027.bin",
0x000f8000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc/IBM 5150 - Cassette BASIC version C1.00 - U31 - 5700035.bin",
0x000fa000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc/IBM 5150 - Cassette BASIC version C1.00 - U32 - 5700043.bin",
0x000fc000, 8192, 0);
}
if (bios_only || !ret)
return ret;
return ret;
device_add(&keyboard_pc_device);
@@ -62,31 +61,30 @@ machine_pc_init(const machine_t *model)
return ret;
}
int
machine_pc82_init(const machine_t *model)
{
int ret, ret2;
ret = bios_load_linear("roms/machines/ibmpc82/pc102782.bin",
0x000fe000, 40960, 0);
0x000fe000, 40960, 0);
if (ret) {
ret2 = bios_load_aux_linear("roms/machines/ibmpc82/ibm-basic-1.10.rom",
0x000f6000, 32768, 0);
if (!ret2) {
bios_load_aux_linear("roms/machines/ibmpc82/basicc11.f6",
0x000f6000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc82/basicc11.f8",
0x000f8000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc82/basicc11.fa",
0x000fa000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc82/basicc11.fc",
0x000fc000, 8192, 0);
}
ret2 = bios_load_aux_linear("roms/machines/ibmpc82/ibm-basic-1.10.rom",
0x000f6000, 32768, 0);
if (!ret2) {
bios_load_aux_linear("roms/machines/ibmpc82/basicc11.f6",
0x000f6000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc82/basicc11.f8",
0x000f8000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc82/basicc11.fa",
0x000fa000, 8192, 0);
bios_load_aux_linear("roms/machines/ibmpc82/basicc11.fc",
0x000fc000, 8192, 0);
}
}
if (bios_only || !ret)
return ret;
return ret;
device_add(&keyboard_pc82_device);
device_add(&ibm_5161_device);
@@ -96,7 +94,6 @@ machine_pc82_init(const machine_t *model)
return ret;
}
static void
machine_xt_init_ex(const machine_t *model)
{
@@ -105,27 +102,26 @@ machine_xt_init_ex(const machine_t *model)
machine_xt_common_init(model);
}
int
machine_xt_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/ibmxt/xt.rom",
0x000f0000, 65536, 0);
0x000f0000, 65536, 0);
if (!ret) {
ret = bios_load_linear("roms/machines/ibmxt/1501512.u18",
0x000fe000, 65536, 0x6000);
if (ret) {
bios_load_aux_linear("roms/machines/ibmxt/1501512.u18",
0x000f8000, 24576, 0);
bios_load_aux_linear("roms/machines/ibmxt/5000027.u19",
0x000f0000, 32768, 0);
}
ret = bios_load_linear("roms/machines/ibmxt/1501512.u18",
0x000fe000, 65536, 0x6000);
if (ret) {
bios_load_aux_linear("roms/machines/ibmxt/1501512.u18",
0x000f8000, 24576, 0);
bios_load_aux_linear("roms/machines/ibmxt/5000027.u19",
0x000f0000, 32768, 0);
}
}
if (bios_only || !ret)
return ret;
return ret;
machine_xt_init_ex(model);
@@ -134,17 +130,16 @@ machine_xt_init(const machine_t *model)
return ret;
}
int
machine_genxt_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/genxt/pcxt.rom",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_init_ex(model);
@@ -157,16 +152,16 @@ machine_xt86_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/ibmxt86/BIOS_5160_09MAY86_U18_59X7268_62X0890_27256_F800.BIN",
0x000fe000, 65536, 0x6000);
0x000fe000, 65536, 0x6000);
if (ret) {
(void) bios_load_aux_linear("roms/machines/ibmxt86/BIOS_5160_09MAY86_U18_59X7268_62X0890_27256_F800.BIN",
0x000f8000, 24576, 0);
(void) bios_load_aux_linear("roms/machines/ibmxt86/BIOS_5160_09MAY86_U19_62X0819_68X4370_27256_F000.BIN",
0x000f0000, 32768, 0);
(void) bios_load_aux_linear("roms/machines/ibmxt86/BIOS_5160_09MAY86_U18_59X7268_62X0890_27256_F800.BIN",
0x000f8000, 24576, 0);
(void) bios_load_aux_linear("roms/machines/ibmxt86/BIOS_5160_09MAY86_U19_62X0819_68X4370_27256_F000.BIN",
0x000f0000, 32768, 0);
}
if (bios_only || !ret)
return ret;
return ret;
device_add(&keyboard_xt86_device);
device_add(&ibm_5161_device);
@@ -176,7 +171,6 @@ machine_xt86_init(const machine_t *model)
return ret;
}
static void
machine_xt_clone_init(const machine_t *model)
{
@@ -191,10 +185,10 @@ machine_xt_americxt_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/americxt/AMERICXT.ROM",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
@@ -207,10 +201,10 @@ machine_xt_amixt_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/amixt/ami_8088_bios_31jan89.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
@@ -223,151 +217,143 @@ machine_xt_znic_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/znic/ibmzen.rom",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
return ret;
}
int
machine_xt_dtk_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/dtk/dtk_erso_2.42_2764.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
return ret;
}
int
machine_xt_jukopc_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/jukopc/000o001.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
return ret;
}
int
machine_xt_openxt_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/openxt/pcxt31.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
return ret;
}
int
machine_xt_pcxt_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/pcxt/u18.rom",
0x000f8000, 65536, 0);
0x000f8000, 65536, 0);
if (ret) {
bios_load_aux_linear("roms/machines/pcxt/u19.rom",
0x000f0000, 32768, 0);
bios_load_aux_linear("roms/machines/pcxt/u19.rom",
0x000f0000, 32768, 0);
}
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
return ret;
}
int
machine_xt_pxxt_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/pxxt/000p001.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
return ret;
}
int
machine_xt_iskra3104_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/iskra3104/198.bin",
"roms/machines/iskra3104/199.bin",
0x000fc000, 16384, 0);
"roms/machines/iskra3104/199.bin",
0x000fc000, 16384, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
return ret;
}
int
machine_xt_pc4i_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/pc4i/NCR_PC4i_BIOSROM_1985.BIN",
0x000fc000, 16384, 0);
0x000fc000, 16384, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
return ret;
}
int
machine_xt_mpc1600_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/mpc1600/mpc4.34_merged.bin",
0x000fc000, 16384, 0);
0x000fc000, 16384, 0);
if (bios_only || !ret)
return ret;
return ret;
device_add(&keyboard_pc82_device);
@@ -376,22 +362,21 @@ machine_xt_mpc1600_init(const machine_t *model)
return ret;
}
int
machine_xt_pcspirit_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/pcspirit/u1101.bin",
0x000fe000, 16384, 0);
0x000fe000, 16384, 0);
if (ret) {
bios_load_aux_linear("roms/machines/pcspirit/u1103.bin",
0x000fc000, 8192, 0);
bios_load_aux_linear("roms/machines/pcspirit/u1103.bin",
0x000fc000, 8192, 0);
}
if (bios_only || !ret)
return ret;
return ret;
device_add(&keyboard_pc82_device);
@@ -400,17 +385,16 @@ machine_xt_pcspirit_init(const machine_t *model)
return ret;
}
int
machine_xt_pc700_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/pc700/multitech pc-700 3.1.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
device_add(&keyboard_pc_device);
@@ -419,17 +403,16 @@ machine_xt_pc700_init(const machine_t *model)
return ret;
}
int
machine_xt_pc500_init(const machine_t* model)
machine_xt_pc500_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/pc500/rom404.bin",
0x000f8000, 32768, 0);
0x000f8000, 32768, 0);
if (bios_only || !ret)
return ret;
return ret;
device_add(&keyboard_pc_device);
@@ -444,10 +427,10 @@ machine_xt_vendex_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/vendex/Vendex Turbo 888 XT - ROM BIOS - VER 2.03C.bin",
0x000fc000, 16384, 0);
0x000fc000, 16384, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
@@ -460,15 +443,15 @@ machine_xt_super16t_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/super16t/Hyundai SUPER-16T - System BIOS HEA v1.12Ta (16k)(MBM27128)(1986).BIN",
0x000fc000, 16384, 0);
0x000fc000, 16384, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
/* On-board FDC cannot be disabled */
device_add(&fdc_xt_device);
device_add(&fdc_xt_device);
return ret;
}
@@ -479,15 +462,15 @@ machine_xt_super16te_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/super16te/Hyundai SUPER-16TE - System BIOS v2.00Id (16k)(D27128A)(1989).BIN",
0x000fc000, 16384, 0);
0x000fc000, 16384, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
/* On-board FDC cannot be disabled */
device_add(&fdc_xt_device);
device_add(&fdc_xt_device);
return ret;
}
@@ -498,15 +481,15 @@ machine_xt_top88_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/top88/Hyosung Topstar 88T - BIOS version 3.0.bin",
0x000fc000, 16384, 0);
0x000fc000, 16384, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
/* On-board FDC cannot be disabled */
device_add(&fdc_xt_device);
device_add(&fdc_xt_device);
return ret;
}
@@ -517,10 +500,10 @@ machine_xt_kaypropc_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/kaypropc/Kaypro_v2.03K.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
@@ -533,15 +516,15 @@ machine_xt_sansx16_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/sansx16/tmm27128ad.bin.bin",
0x000fc000, 16384, 0);
0x000fc000, 16384, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);
/* On-board FDC cannot be disabled */
device_add(&fdc_xt_device);
device_add(&fdc_xt_device);
return ret;
}
@@ -552,10 +535,10 @@ machine_xt_bw230_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/bw230/bondwell.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_clone_init(model);

View File

@@ -43,10 +43,10 @@ machine_xt_compaq_deskpro_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/deskpro/Compaq - BIOS - Revision J - 106265-002.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_common_init(model);
@@ -54,7 +54,7 @@ machine_xt_compaq_deskpro_init(const machine_t *model)
device_add(&keyboard_xt_compaq_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_xt_device);
device_add(&fdc_xt_device);
nmi_init();
standalone_gameport_type = &gameport_device;
@@ -64,17 +64,16 @@ machine_xt_compaq_deskpro_init(const machine_t *model)
return ret;
}
int
machine_xt_compaq_portable_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/portable/compaq portable plus 100666-001 rev c u47.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_common_init(model);
@@ -82,10 +81,10 @@ machine_xt_compaq_portable_init(const machine_t *model)
device_add(&keyboard_xt_compaq_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_xt_device);
device_add(&fdc_xt_device);
nmi_init();
if (joystick_type)
device_add(&gameport_device);
device_add(&gameport_device);
lpt1_remove();
lpt1_init(LPT_MDA_ADDR);

View File

@@ -20,150 +20,150 @@
#include <86box/gameport.h>
#include <86box/keyboard.h>
static int laserxt_emspage[4];
static int laserxt_emscontrol[4];
static int laserxt_emspage[4];
static int laserxt_emscontrol[4];
static mem_mapping_t laserxt_ems_mapping[4];
static int laserxt_ems_baseaddr_index = 0;
static int laserxt_is_lxt3 = 0;
static int laserxt_ems_baseaddr_index = 0;
static int laserxt_is_lxt3 = 0;
static uint32_t get_laserxt_ems_addr(uint32_t addr)
static uint32_t
get_laserxt_ems_addr(uint32_t addr)
{
if(laserxt_emspage[(addr >> 14) & 3] & 0x80)
{
addr = (!laserxt_is_lxt3 ? 0x70000 + (((mem_size + 64) & 255) << 10) : 0x30000 + (((mem_size + 320) & 511) << 10)) + ((laserxt_emspage[(addr >> 14) & 3] & 0x0F) << 14) + ((laserxt_emspage[(addr >> 14) & 3] & 0x40) << 12) + (addr & 0x3FFF);
}
if (laserxt_emspage[(addr >> 14) & 3] & 0x80) {
addr = (!laserxt_is_lxt3 ? 0x70000 + (((mem_size + 64) & 255) << 10) : 0x30000 + (((mem_size + 320) & 511) << 10)) + ((laserxt_emspage[(addr >> 14) & 3] & 0x0F) << 14) + ((laserxt_emspage[(addr >> 14) & 3] & 0x40) << 12) + (addr & 0x3FFF);
}
return addr;
return addr;
}
static void laserxt_write(uint16_t port, uint8_t val, void *priv)
static void
laserxt_write(uint16_t port, uint8_t val, void *priv)
{
int i;
uint32_t paddr, vaddr;
switch (port)
{
case 0x0208: case 0x4208: case 0x8208: case 0xC208:
laserxt_emspage[port >> 14] = val;
paddr = 0xC0000 + (port & 0xC000) + (((laserxt_ems_baseaddr_index + (4 - (port >> 14))) & 0x0C) << 14);
if(val & 0x80)
{
mem_mapping_enable(&laserxt_ems_mapping[port >> 14]);
vaddr = get_laserxt_ems_addr(paddr);
mem_mapping_set_exec(&laserxt_ems_mapping[port >> 14], ram + vaddr);
}
else
{
mem_mapping_disable(&laserxt_ems_mapping[port >> 14]);
}
flushmmucache();
break;
case 0x0209: case 0x4209: case 0x8209: case 0xC209:
laserxt_emscontrol[port >> 14] = val;
laserxt_ems_baseaddr_index = 0;
for(i=0; i<4; i++)
{
laserxt_ems_baseaddr_index |= (laserxt_emscontrol[i] & 0x80) >> (7 - i);
}
int i;
uint32_t paddr, vaddr;
switch (port) {
case 0x0208:
case 0x4208:
case 0x8208:
case 0xC208:
laserxt_emspage[port >> 14] = val;
paddr = 0xC0000 + (port & 0xC000) + (((laserxt_ems_baseaddr_index + (4 - (port >> 14))) & 0x0C) << 14);
if (val & 0x80) {
mem_mapping_enable(&laserxt_ems_mapping[port >> 14]);
vaddr = get_laserxt_ems_addr(paddr);
mem_mapping_set_exec(&laserxt_ems_mapping[port >> 14], ram + vaddr);
} else {
mem_mapping_disable(&laserxt_ems_mapping[port >> 14]);
}
flushmmucache();
break;
case 0x0209:
case 0x4209:
case 0x8209:
case 0xC209:
laserxt_emscontrol[port >> 14] = val;
laserxt_ems_baseaddr_index = 0;
for (i = 0; i < 4; i++) {
laserxt_ems_baseaddr_index |= (laserxt_emscontrol[i] & 0x80) >> (7 - i);
}
mem_mapping_set_addr(&laserxt_ems_mapping[0], 0xC0000 + (((laserxt_ems_baseaddr_index + 4) & 0x0C) << 14), 0x4000);
mem_mapping_set_addr(&laserxt_ems_mapping[1], 0xC4000 + (((laserxt_ems_baseaddr_index + 3) & 0x0C) << 14), 0x4000);
mem_mapping_set_addr(&laserxt_ems_mapping[2], 0xC8000 + (((laserxt_ems_baseaddr_index + 2) & 0x0C) << 14), 0x4000);
mem_mapping_set_addr(&laserxt_ems_mapping[3], 0xCC000 + (((laserxt_ems_baseaddr_index + 1) & 0x0C) << 14), 0x4000);
flushmmucache();
break;
}
mem_mapping_set_addr(&laserxt_ems_mapping[0], 0xC0000 + (((laserxt_ems_baseaddr_index + 4) & 0x0C) << 14), 0x4000);
mem_mapping_set_addr(&laserxt_ems_mapping[1], 0xC4000 + (((laserxt_ems_baseaddr_index + 3) & 0x0C) << 14), 0x4000);
mem_mapping_set_addr(&laserxt_ems_mapping[2], 0xC8000 + (((laserxt_ems_baseaddr_index + 2) & 0x0C) << 14), 0x4000);
mem_mapping_set_addr(&laserxt_ems_mapping[3], 0xCC000 + (((laserxt_ems_baseaddr_index + 1) & 0x0C) << 14), 0x4000);
flushmmucache();
break;
}
}
static uint8_t laserxt_read(uint16_t port, void *priv)
static uint8_t
laserxt_read(uint16_t port, void *priv)
{
switch (port)
{
case 0x0208: case 0x4208: case 0x8208: case 0xC208:
return laserxt_emspage[port >> 14];
case 0x0209: case 0x4209: case 0x8209: case 0xC209:
return laserxt_emscontrol[port >> 14];
break;
}
return 0xff;
switch (port) {
case 0x0208:
case 0x4208:
case 0x8208:
case 0xC208:
return laserxt_emspage[port >> 14];
case 0x0209:
case 0x4209:
case 0x8209:
case 0xC209:
return laserxt_emscontrol[port >> 14];
break;
}
return 0xff;
}
static void mem_write_laserxtems(uint32_t addr, uint8_t val, void *priv)
static void
mem_write_laserxtems(uint32_t addr, uint8_t val, void *priv)
{
addr = get_laserxt_ems_addr(addr);
if (addr < (mem_size << 10))
ram[addr] = val;
addr = get_laserxt_ems_addr(addr);
if (addr < (mem_size << 10))
ram[addr] = val;
}
static uint8_t mem_read_laserxtems(uint32_t addr, void *priv)
static uint8_t
mem_read_laserxtems(uint32_t addr, void *priv)
{
uint8_t val = 0xFF;
addr = get_laserxt_ems_addr(addr);
if (addr < (mem_size << 10))
val = ram[addr];
return val;
uint8_t val = 0xFF;
addr = get_laserxt_ems_addr(addr);
if (addr < (mem_size << 10))
val = ram[addr];
return val;
}
static void laserxt_init(int is_lxt3)
static void
laserxt_init(int is_lxt3)
{
int i;
int i;
if(mem_size > 640)
{
io_sethandler(0x0208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
io_sethandler(0x4208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
io_sethandler(0x8208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
io_sethandler(0xc208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
mem_mapping_set_addr(&ram_low_mapping, 0, !is_lxt3 ? 0x70000 + (((mem_size + 64) & 255) << 10) : 0x30000 + (((mem_size + 320) & 511) << 10));
}
if (mem_size > 640) {
io_sethandler(0x0208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
io_sethandler(0x4208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
io_sethandler(0x8208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
io_sethandler(0xc208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
mem_mapping_set_addr(&ram_low_mapping, 0, !is_lxt3 ? 0x70000 + (((mem_size + 64) & 255) << 10) : 0x30000 + (((mem_size + 320) & 511) << 10));
}
for (i = 0; i < 4; i++)
{
laserxt_emspage[i] = 0x7F;
laserxt_emscontrol[i] = (i == 3) ? 0x00 : 0x80;
mem_mapping_add(&laserxt_ems_mapping[i], 0xE0000 + (i << 14), 0x4000, mem_read_laserxtems, NULL, NULL, mem_write_laserxtems, NULL, NULL, ram + 0xA0000 + (i << 14), 0, NULL);
mem_mapping_disable(&laserxt_ems_mapping[i]);
}
mem_set_mem_state(0x0c0000, 0x40000, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
laserxt_is_lxt3 = is_lxt3;
for (i = 0; i < 4; i++) {
laserxt_emspage[i] = 0x7F;
laserxt_emscontrol[i] = (i == 3) ? 0x00 : 0x80;
mem_mapping_add(&laserxt_ems_mapping[i], 0xE0000 + (i << 14), 0x4000, mem_read_laserxtems, NULL, NULL, mem_write_laserxtems, NULL, NULL, ram + 0xA0000 + (i << 14), 0, NULL);
mem_mapping_disable(&laserxt_ems_mapping[i]);
}
mem_set_mem_state(0x0c0000, 0x40000, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
laserxt_is_lxt3 = is_lxt3;
}
int
machine_xt_laserxt_init(const machine_t *model)
{
int ret;
int ret;
ret = bios_load_linear("roms/machines/ltxt/27c64.bin",
0x000fe000, 8192, 0);
ret = bios_load_linear("roms/machines/ltxt/27c64.bin",
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
if (bios_only || !ret)
return ret;
machine_xt_init(model);
machine_xt_init(model);
laserxt_init(0);
laserxt_init(0);
return ret;
return ret;
}
int
machine_xt_lxt3_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/lxt3/27c64d.bin",
0x000fe000, 8192, 0);
0x000fe000, 8192, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_common_init(model);
@@ -172,7 +172,7 @@ machine_xt_lxt3_init(const machine_t *model)
device_add(&keyboard_xt_lxt3_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_xt_device);
device_add(&fdc_xt_device);
nmi_init();
standalone_gameport_type = &gameport_device;

File diff suppressed because it is too large Load Diff

View File

@@ -41,13 +41,11 @@
#include <86box/io.h>
#include <86box/video.h>
typedef struct
{
uint8_t reg;
uint8_t reg;
} philips_t;
#ifdef ENABLE_PHILIPS_LOG
int philips_do_log = ENABLE_PHILIPS_LOG;
static void
@@ -58,11 +56,11 @@ philips_log(const char *fmt, ...)
if (philips_do_log) {
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
va_end(ap);
}
}
#else
#define philips_log(fmt, ...)
# define philips_log(fmt, ...)
#endif
static void
@@ -71,39 +69,38 @@ philips_write(uint16_t port, uint8_t val, void *priv)
philips_t *dev = (philips_t *) priv;
switch (port) {
/* port 0xc0
* bit 7: turbo
* bits 4-5: rtc read/set (I2C Bus SDA/SCL?)
* bit 2: parity disabled
*/
case 0xc0:
dev->reg = val;
if (val & 0x80)
cpu_dynamic_switch(cpu);
else
cpu_dynamic_switch(0);
break;
/* port 0xc0
* bit 7: turbo
* bits 4-5: rtc read/set (I2C Bus SDA/SCL?)
* bit 2: parity disabled
*/
case 0xc0:
dev->reg = val;
if (val & 0x80)
cpu_dynamic_switch(cpu);
else
cpu_dynamic_switch(0);
break;
}
philips_log("Philips XT Mainboard: Write %02x at %02x\n", val, port);
}
static uint8_t
philips_read(uint16_t port, void *priv)
{
philips_t *dev = (philips_t *) priv;
uint8_t ret = 0xff;
uint8_t ret = 0xff;
switch (port) {
/* port 0xc0
* bit 7: turbo
* bits 4-5: rtc read/set
* bit 2: parity disabled
*/
case 0xc0:
ret = dev->reg;
break;
/* port 0xc0
* bit 7: turbo
* bits 4-5: rtc read/set
* bit 2: parity disabled
*/
case 0xc0:
ret = dev->reg;
break;
}
philips_log("Philips XT Mainboard: Read %02x at %02x\n", ret, port);
@@ -111,7 +108,6 @@ philips_read(uint16_t port, void *priv)
return ret;
}
static void
philips_close(void *priv)
{
@@ -134,17 +130,17 @@ philips_init(const device_t *info)
}
const device_t philips_device = {
.name = "Philips XT Mainboard",
.name = "Philips XT Mainboard",
.internal_name = "philips",
.flags = 0,
.local = 0,
.init = philips_init,
.close = philips_close,
.reset = NULL,
.flags = 0,
.local = 0,
.init = philips_init,
.close = philips_close,
.reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
.force_redraw = NULL,
.config = NULL
.force_redraw = NULL,
.config = NULL
};
void
@@ -163,7 +159,6 @@ machine_xt_philips_common_init(const machine_t *model)
device_add(&philips_device);
device_add(&xta_hd20_device);
}
int
@@ -172,15 +167,15 @@ machine_xt_p3105_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/p3105/philipsnms9100.bin",
0x000fc000, 16384, 0);
0x000fc000, 16384, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_philips_common_init(model);
/* On-board FDC cannot be disabled */
device_add(&fdc_xt_device);
device_add(&fdc_xt_device);
return ret;
}
@@ -191,10 +186,10 @@ machine_xt_p3120_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/p3120/philips_p3120.bin",
0x000f8000, 32768, 0);
0x000f8000, 32768, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_xt_philips_common_init(model);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -27,17 +27,14 @@
#include <86box/m_xt_xi8088.h>
typedef struct xi8088_t
{
uint8_t turbo;
typedef struct xi8088_t {
uint8_t turbo;
int turbo_setting;
int bios_128kb;
int turbo_setting;
int bios_128kb;
} xi8088_t;
static xi8088_t xi8088;
static xi8088_t xi8088;
uint8_t
xi8088_turbo_get()
@@ -45,53 +42,51 @@ xi8088_turbo_get()
return xi8088.turbo;
}
void
xi8088_turbo_set(uint8_t value)
{
int c;
if (!xi8088.turbo_setting)
return;
return;
xi8088.turbo = value;
if (!value) {
c = cpu;
cpu = 0; /* 8088/4.77 */
cpu_set();
cpu = c;
c = cpu;
cpu = 0; /* 8088/4.77 */
cpu_set();
cpu = c;
} else
cpu_set();
cpu_set();
}
int
xi8088_bios_128kb(void)
{
return xi8088.bios_128kb;
}
static void *
xi8088_init(const device_t *info)
{
xi8088.turbo = 1;
xi8088.turbo = 1;
xi8088.turbo_setting = device_get_config_int("turbo_setting");
xi8088.bios_128kb = device_get_config_int("bios_128kb");
xi8088.bios_128kb = device_get_config_int("bios_128kb");
mem_set_mem_state(0x0a0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
mem_set_mem_state(0x0c0000, 0x08000, device_get_config_int("umb_c0000h_c7fff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0c8000, 0x08000, device_get_config_int("umb_c8000h_cffff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0d0000, 0x08000, device_get_config_int("umb_d0000h_d7fff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0d8000, 0x08000, device_get_config_int("umb_d8000h_dffff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0e0000, 0x08000, device_get_config_int("umb_e0000h_e7fff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0e8000, 0x08000, device_get_config_int("umb_e8000h_effff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0f0000, 0x10000, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
mem_set_mem_state(0x0a0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
mem_set_mem_state(0x0c0000, 0x08000, device_get_config_int("umb_c0000h_c7fff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0c8000, 0x08000, device_get_config_int("umb_c8000h_cffff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0d0000, 0x08000, device_get_config_int("umb_d0000h_d7fff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0d8000, 0x08000, device_get_config_int("umb_d8000h_dffff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0e0000, 0x08000, device_get_config_int("umb_e0000h_e7fff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0e8000, 0x08000, device_get_config_int("umb_e8000h_effff") ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : (MEM_READ_EXTANY | MEM_WRITE_EXTANY));
mem_set_mem_state(0x0f0000, 0x10000, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
return &xi8088;
}
static const device_config_t xi8088_config[] = {
// clang-format off
{
.name = "turbo_setting",
.description = "Turbo",
@@ -161,20 +156,21 @@ static const device_config_t xi8088_config[] = {
.default_int = 0
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t xi8088_device = {
.name = "Xi8088",
.name = "Xi8088",
.internal_name = "xi8088",
.flags = 0,
.local = 0,
.init = xi8088_init,
.close = NULL,
.reset = NULL,
.flags = 0,
.local = 0,
.init = xi8088_init,
.close = NULL,
.reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
.force_redraw = NULL,
.config = xi8088_config
.force_redraw = NULL,
.config = xi8088_config
};
int
@@ -183,29 +179,29 @@ machine_xt_xi8088_init(const machine_t *model)
int ret;
if (bios_only) {
ret = bios_load_linear_inverted("roms/machines/xi8088/bios-xi8088-128k.bin",
0x000e0000, 131072, 0);
ret |= bios_load_linear("roms/machines/xi8088/bios-xi8088.bin",
0x000f0000, 65536, 0);
ret = bios_load_linear_inverted("roms/machines/xi8088/bios-xi8088-128k.bin",
0x000e0000, 131072, 0);
ret |= bios_load_linear("roms/machines/xi8088/bios-xi8088.bin",
0x000f0000, 65536, 0);
} else {
device_add(&xi8088_device);
device_add(&xi8088_device);
if (xi8088_bios_128kb()) {
ret = bios_load_linear_inverted("roms/machines/xi8088/bios-xi8088-128k.bin",
0x000e0000, 131072, 0);
} else {
ret = bios_load_linear("roms/machines/xi8088/bios-xi8088.bin",
0x000f0000, 65536, 0);
}
if (xi8088_bios_128kb()) {
ret = bios_load_linear_inverted("roms/machines/xi8088/bios-xi8088-128k.bin",
0x000e0000, 131072, 0);
} else {
ret = bios_load_linear("roms/machines/xi8088/bios-xi8088.bin",
0x000f0000, 65536, 0);
}
}
if (bios_only || !ret)
return ret;
return ret;
machine_common_init(model);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&fdc_at_device);
device_add(&keyboard_ps2_xi8088_device);
device_add(&port_6x_xi8088_device);
@@ -213,7 +209,7 @@ machine_xt_xi8088_init(const machine_t *model)
device_add(&ibmat_nvr_device);
pic2_init();
standalone_gameport_type = &gameport_device;
device_add(&sst_flash_39sf010_device);
device_add(&sst_flash_39sf010_device);
return ret;
}

View File

@@ -47,78 +47,74 @@
#include <86box/io.h>
#include <86box/vid_cga.h>
typedef struct {
mem_mapping_t scratchpad_mapping;
uint8_t *scratchpad_ram;
uint8_t *scratchpad_ram;
} zenith_t;
static uint8_t
zenith_scratchpad_read(uint32_t addr, void *p)
{
zenith_t *dev = (zenith_t *)p;
zenith_t *dev = (zenith_t *) p;
return dev->scratchpad_ram[addr & 0x3fff];
}
static void
zenith_scratchpad_write(uint32_t addr, uint8_t val, void *p)
{
zenith_t *dev = (zenith_t *)p;
zenith_t *dev = (zenith_t *) p;
dev->scratchpad_ram[addr & 0x3fff] = val;
}
static void *
zenith_scratchpad_init(const device_t *info)
{
zenith_t *dev;
dev = (zenith_t *)malloc(sizeof(zenith_t));
dev = (zenith_t *) malloc(sizeof(zenith_t));
memset(dev, 0x00, sizeof(zenith_t));
dev->scratchpad_ram = malloc(0x4000);
mem_mapping_add(&dev->scratchpad_mapping, 0xf0000, 0x4000,
zenith_scratchpad_read, NULL, NULL,
zenith_scratchpad_write, NULL, NULL,
dev->scratchpad_ram, MEM_MAPPING_EXTERNAL, dev);
zenith_scratchpad_read, NULL, NULL,
zenith_scratchpad_write, NULL, NULL,
dev->scratchpad_ram, MEM_MAPPING_EXTERNAL, dev);
return dev;
}
static void
zenith_scratchpad_close(void *p)
{
zenith_t *dev = (zenith_t *)p;
zenith_t *dev = (zenith_t *) p;
free(dev->scratchpad_ram);
free(dev);
}
static const device_t zenith_scratchpad_device = {
.name = "Zenith scratchpad RAM",
.name = "Zenith scratchpad RAM",
.internal_name = "zenith_scratchpad",
.flags = 0,
.local = 0,
.init = zenith_scratchpad_init,
.close = zenith_scratchpad_close,
.reset = NULL,
.flags = 0,
.local = 0,
.init = zenith_scratchpad_init,
.close = zenith_scratchpad_close,
.reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
.force_redraw = NULL,
.config = NULL
.force_redraw = NULL,
.config = NULL
};
void
machine_zenith_init(const machine_t *model){
machine_zenith_init(const machine_t *model)
{
machine_common_init(model);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_xt_device);
device_add(&fdc_xt_device);
device_add(&zenith_scratchpad_device);
@@ -127,7 +123,6 @@ machine_zenith_init(const machine_t *model){
device_add(&keyboard_xt_zenith_device);
nmi_init();
}
/*
@@ -140,18 +135,18 @@ machine_xt_z184_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/zdsupers/z184m v3.1d.10d",
0x000f8000, 32768, 0);
0x000f8000, 32768, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_zenith_init(model);
lpt1_remove(); /* only one parallel port */
lpt1_remove(); /* only one parallel port */
lpt2_remove();
lpt1_init(0x278);
device_add(&ns8250_device);
serial_set_next_inst(SERIAL_MAX); /* So that serial_standalone_init() won't do anything. */
serial_set_next_inst(SERIAL_MAX); /* So that serial_standalone_init() won't do anything. */
device_add(&cga_device);
@@ -163,14 +158,14 @@ machine_xt_z151_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/zdsz151/444-229-18.bin",
0x000fc000, 32768, 0);
0x000fc000, 32768, 0);
if (ret) {
bios_load_aux_linear("roms/machines/zdsz151/444-260-18.bin",
0x000f8000, 16384, 0);
0x000f8000, 16384, 0);
}
if (bios_only || !ret)
return ret;
return ret;
machine_zenith_init(model);
@@ -187,15 +182,15 @@ machine_xt_z159_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/zdsz159/z159m v2.9e.10d",
0x000f8000, 32768, 0);
0x000f8000, 32768, 0);
if (bios_only || !ret)
return ret;
return ret;
machine_zenith_init(model);
/* parallel port is on the memory board */
lpt1_remove(); /* only one parallel port */
lpt1_remove(); /* only one parallel port */
lpt2_remove();
lpt1_init(0x278);

View File

@@ -663,21 +663,21 @@ const machine_t machines[] = {
.max_voltage = 0,
.min_multi = 0,
.max_multi = 0,
},
},
.bus_flags = MACHINE_PC,
.flags = MACHINE_FLAGS_NONE,
.ram = {
.min = 128,
.max = 640,
.step = 64,
},
},
.nvrmask = 0,
.kbc = KBC_IBM_PC_XT,
.kbc_p1 = 0xff00,
.gpio = 0xffffffff,
.device = NULL,
.vid_device = NULL
},
},
{
.name = "[8088] Multitech PC-500",
.internal_name = "pc500",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -32,15 +32,14 @@
#include <86box/win.h>
#include <86box/version.h>
void
AboutDialogCreate(HWND hwnd)
{
int i;
TASKDIALOGCONFIG tdconfig = {0};
int i;
TASKDIALOGCONFIG tdconfig = { 0 };
TASKDIALOG_BUTTON tdbuttons[] = {
{IDOK, EMU_SITE_W},
{IDCANCEL, MAKEINTRESOURCE(IDS_2127)}
{IDOK, EMU_SITE_W },
{ IDCANCEL, MAKEINTRESOURCE(IDS_2127)}
};
wchar_t emu_version[256];
@@ -49,19 +48,19 @@ AboutDialogCreate(HWND hwnd)
swprintf(&emu_version[i], sizeof(emu_version) - i, L" [%ls]", EMU_GIT_HASH_W);
#endif
tdconfig.cbSize = sizeof(tdconfig);
tdconfig.hwndParent = hwnd;
tdconfig.hInstance = hinstance;
tdconfig.dwCommonButtons = 0;
tdconfig.pszWindowTitle = MAKEINTRESOURCE(IDS_2124);
tdconfig.pszMainIcon = (PCWSTR) 10;
tdconfig.cbSize = sizeof(tdconfig);
tdconfig.hwndParent = hwnd;
tdconfig.hInstance = hinstance;
tdconfig.dwCommonButtons = 0;
tdconfig.pszWindowTitle = MAKEINTRESOURCE(IDS_2124);
tdconfig.pszMainIcon = (PCWSTR) 10;
tdconfig.pszMainInstruction = emu_version;
tdconfig.pszContent = MAKEINTRESOURCE(IDS_2126);
tdconfig.cButtons = ARRAYSIZE(tdbuttons);
tdconfig.pButtons = tdbuttons;
tdconfig.nDefaultButton = IDCANCEL;
tdconfig.pszContent = MAKEINTRESOURCE(IDS_2126);
tdconfig.cButtons = ARRAYSIZE(tdbuttons);
tdconfig.pButtons = tdbuttons;
tdconfig.nDefaultButton = IDCANCEL;
TaskDialogIndirect(&tdconfig, &i, NULL, NULL);
if (i == IDOK)
ShellExecute(hwnd, L"open", L"https://" EMU_SITE_W, NULL, NULL, SW_SHOW);
ShellExecute(hwnd, L"open", L"https://" EMU_SITE_W, NULL, NULL, SW_SHOW);
}

View File

@@ -44,7 +44,6 @@
#include <86box/ui.h>
#include <86box/win.h>
void
cassette_mount(char *fn, uint8_t wp)
{
@@ -53,14 +52,13 @@ cassette_mount(char *fn, uint8_t wp)
cassette_ui_writeprot = wp;
pc_cas_set_fname(cassette, fn);
if (fn != NULL)
memcpy(cassette_fname, fn, MIN(511, strlen(fn)));
memcpy(cassette_fname, fn, MIN(511, strlen(fn)));
ui_sb_update_icon_state(SB_CASSETTE, (fn == NULL) ? 1 : 0);
media_menu_update_cassette();
ui_sb_update_tip(SB_CASSETTE);
config_save();
}
void
cassette_eject(void)
{
@@ -72,7 +70,6 @@ cassette_eject(void)
config_save();
}
void
cartridge_mount(uint8_t id, char *fn, uint8_t wp)
{
@@ -84,7 +81,6 @@ cartridge_mount(uint8_t id, char *fn, uint8_t wp)
config_save();
}
void
cartridge_eject(uint8_t id)
{
@@ -95,7 +91,6 @@ cartridge_eject(uint8_t id)
config_save();
}
void
floppy_mount(uint8_t id, char *fn, uint8_t wp)
{
@@ -108,7 +103,6 @@ floppy_mount(uint8_t id, char *fn, uint8_t wp)
config_save();
}
void
floppy_eject(uint8_t id)
{
@@ -119,20 +113,19 @@ floppy_eject(uint8_t id)
config_save();
}
void
plat_cdrom_ui_update(uint8_t id, uint8_t reload)
{
cdrom_t *drv = &cdrom[id];
if (drv->host_drive == 0) {
ui_sb_update_icon_state(SB_CDROM|id, 1);
ui_sb_update_icon_state(SB_CDROM | id, 1);
} else {
ui_sb_update_icon_state(SB_CDROM|id, 0);
ui_sb_update_icon_state(SB_CDROM | id, 0);
}
media_menu_update_cdrom(id);
ui_sb_update_tip(SB_CDROM|id);
ui_sb_update_tip(SB_CDROM | id);
}
void
@@ -141,18 +134,18 @@ cdrom_mount(uint8_t id, char *fn)
cdrom[id].prev_host_drive = cdrom[id].host_drive;
strcpy(cdrom[id].prev_image_path, cdrom[id].image_path);
if (cdrom[id].ops && cdrom[id].ops->exit)
cdrom[id].ops->exit(&(cdrom[id]));
cdrom[id].ops->exit(&(cdrom[id]));
cdrom[id].ops = NULL;
memset(cdrom[id].image_path, 0, sizeof(cdrom[id].image_path));
cdrom_image_open(&(cdrom[id]), fn);
/* Signal media change to the emulated machine. */
if (cdrom[id].insert)
cdrom[id].insert(cdrom[id].priv);
cdrom[id].insert(cdrom[id].priv);
cdrom[id].host_drive = (strlen(cdrom[id].image_path) == 0) ? 0 : 200;
if (cdrom[id].host_drive == 200) {
ui_sb_update_icon_state(SB_CDROM | id, 0);
ui_sb_update_icon_state(SB_CDROM | id, 0);
} else {
ui_sb_update_icon_state(SB_CDROM | id, 1);
ui_sb_update_icon_state(SB_CDROM | id, 1);
}
media_menu_update_cdrom(id);
ui_sb_update_tip(SB_CDROM | id);
@@ -166,8 +159,8 @@ mo_eject(uint8_t id)
mo_disk_close(dev);
if (mo_drives[id].bus_type) {
/* Signal disk change to the emulated machine. */
mo_insert(dev);
/* Signal disk change to the emulated machine. */
mo_insert(dev);
}
ui_sb_update_icon_state(SB_MO | id, 1);
@@ -176,7 +169,6 @@ mo_eject(uint8_t id)
config_save();
}
void
mo_mount(uint8_t id, char *fn, uint8_t wp)
{
@@ -194,7 +186,6 @@ mo_mount(uint8_t id, char *fn, uint8_t wp)
config_save();
}
void
mo_reload(uint8_t id)
{
@@ -202,13 +193,13 @@ mo_reload(uint8_t id)
mo_disk_reload(dev);
if (strlen(mo_drives[id].image_path) == 0) {
ui_sb_update_icon_state(SB_MO|id, 1);
ui_sb_update_icon_state(SB_MO | id, 1);
} else {
ui_sb_update_icon_state(SB_MO|id, 0);
ui_sb_update_icon_state(SB_MO | id, 0);
}
media_menu_update_mo(id);
ui_sb_update_tip(SB_MO|id);
ui_sb_update_tip(SB_MO | id);
config_save();
}
@@ -220,8 +211,8 @@ zip_eject(uint8_t id)
zip_disk_close(dev);
if (zip_drives[id].bus_type) {
/* Signal disk change to the emulated machine. */
zip_insert(dev);
/* Signal disk change to the emulated machine. */
zip_insert(dev);
}
ui_sb_update_icon_state(SB_ZIP | id, 1);
@@ -230,7 +221,6 @@ zip_eject(uint8_t id)
config_save();
}
void
zip_mount(uint8_t id, char *fn, uint8_t wp)
{
@@ -248,7 +238,6 @@ zip_mount(uint8_t id, char *fn, uint8_t wp)
config_save();
}
void
zip_reload(uint8_t id)
{
@@ -256,13 +245,13 @@ zip_reload(uint8_t id)
zip_disk_reload(dev);
if (strlen(zip_drives[id].image_path) == 0) {
ui_sb_update_icon_state(SB_ZIP|id, 1);
ui_sb_update_icon_state(SB_ZIP | id, 1);
} else {
ui_sb_update_icon_state(SB_ZIP|id, 0);
ui_sb_update_icon_state(SB_ZIP | id, 0);
}
media_menu_update_zip(id);
ui_sb_update_tip(SB_ZIP|id);
ui_sb_update_tip(SB_ZIP | id);
config_save();
}

File diff suppressed because it is too large Load Diff

View File

@@ -33,15 +33,11 @@
#include <86box/ui.h>
#include <86box/win.h>
#define STRING_OR_RESOURCE(s) ((!(s)) ? (NULL) : ((((uintptr_t) s) < ((uintptr_t) 65636)) ? (MAKEINTRESOURCE((uintptr_t) s)) : (s)))
#define STRING_OR_RESOURCE(s) ((!(s)) ? (NULL) : ((((uintptr_t)s) < ((uintptr_t)65636)) ? (MAKEINTRESOURCE((uintptr_t)s)) : (s)))
WCHAR wopenfilestring[512];
char openfilestring[512];
uint8_t filterindex = 0;
WCHAR wopenfilestring[512];
char openfilestring[512];
uint8_t filterindex = 0;
int
ui_msgbox(int flags, void *message)
@@ -49,125 +45,127 @@ ui_msgbox(int flags, void *message)
return ui_msgbox_ex(flags, NULL, message, NULL, NULL, NULL);
}
int
ui_msgbox_header(int flags, void *header, void *message)
{
return ui_msgbox_ex(flags, header, message, NULL, NULL, NULL);
}
int
ui_msgbox_ex(int flags, void *header, void *message, void *btn1, void *btn2, void *btn3) {
WCHAR temp[512];
TASKDIALOGCONFIG tdconfig = {0};
ui_msgbox_ex(int flags, void *header, void *message, void *btn1, void *btn2, void *btn3)
{
WCHAR temp[512];
TASKDIALOGCONFIG tdconfig = { 0 };
TASKDIALOG_BUTTON tdbuttons[3],
tdb_yes = {IDYES, STRING_OR_RESOURCE(btn1)},
tdb_no = {IDNO, STRING_OR_RESOURCE(btn2)},
tdb_cancel = {IDCANCEL, STRING_OR_RESOURCE(btn3)},
tdb_exit = {IDCLOSE, MAKEINTRESOURCE(IDS_2119)};
tdb_yes = { IDYES, STRING_OR_RESOURCE(btn1) },
tdb_no = { IDNO, STRING_OR_RESOURCE(btn2) },
tdb_cancel = { IDCANCEL, STRING_OR_RESOURCE(btn3) },
tdb_exit = { IDCLOSE, MAKEINTRESOURCE(IDS_2119) };
int ret = 0, checked = 0;
/* Configure the default OK button. */
tdconfig.cButtons = 0;
if (btn1)
tdbuttons[tdconfig.cButtons++] = tdb_yes;
tdbuttons[tdconfig.cButtons++] = tdb_yes;
else
tdconfig.dwCommonButtons = TDCBF_OK_BUTTON;
tdconfig.dwCommonButtons = TDCBF_OK_BUTTON;
/* Configure the message type. */
switch(flags & 0x1f) {
case MBX_INFO: /* just an informational message */
tdconfig.pszMainIcon = TD_INFORMATION_ICON;
break;
switch (flags & 0x1f) {
case MBX_INFO: /* just an informational message */
tdconfig.pszMainIcon = TD_INFORMATION_ICON;
break;
case MBX_ERROR: /* error message */
if (flags & MBX_FATAL) {
tdconfig.pszMainIcon = TD_ERROR_ICON;
tdconfig.pszMainInstruction = MAKEINTRESOURCE(IDS_2050); /* "Fatal error" */
case MBX_ERROR: /* error message */
if (flags & MBX_FATAL) {
tdconfig.pszMainIcon = TD_ERROR_ICON;
tdconfig.pszMainInstruction = MAKEINTRESOURCE(IDS_2050); /* "Fatal error" */
/* replace default "OK" button with "Exit" button */
if (btn1)
tdconfig.cButtons = 0;
else
tdconfig.dwCommonButtons = 0;
tdbuttons[tdconfig.cButtons++] = tdb_exit;
} else {
tdconfig.pszMainIcon = TD_WARNING_ICON;
tdconfig.pszMainInstruction = MAKEINTRESOURCE(IDS_2049); /* "Error" */
}
break;
/* replace default "OK" button with "Exit" button */
if (btn1)
tdconfig.cButtons = 0;
else
tdconfig.dwCommonButtons = 0;
tdbuttons[tdconfig.cButtons++] = tdb_exit;
} else {
tdconfig.pszMainIcon = TD_WARNING_ICON;
tdconfig.pszMainInstruction = MAKEINTRESOURCE(IDS_2049); /* "Error" */
}
break;
case MBX_QUESTION: /* question */
case MBX_QUESTION_YN:
case MBX_QUESTION_OK:
if (!btn1) /* replace default "OK" button with "Yes" button */
tdconfig.dwCommonButtons = (flags & MBX_QUESTION_OK) ? TDCBF_OK_BUTTON : TDCBF_YES_BUTTON;
case MBX_QUESTION: /* question */
case MBX_QUESTION_YN:
case MBX_QUESTION_OK:
if (!btn1) /* replace default "OK" button with "Yes" button */
tdconfig.dwCommonButtons = (flags & MBX_QUESTION_OK) ? TDCBF_OK_BUTTON : TDCBF_YES_BUTTON;
if (btn2) /* "No" button */
tdbuttons[tdconfig.cButtons++] = tdb_no;
else
tdconfig.dwCommonButtons |= (flags & MBX_QUESTION_OK) ? TDCBF_CANCEL_BUTTON : TDCBF_NO_BUTTON;
if (btn2) /* "No" button */
tdbuttons[tdconfig.cButtons++] = tdb_no;
else
tdconfig.dwCommonButtons |= (flags & MBX_QUESTION_OK) ? TDCBF_CANCEL_BUTTON : TDCBF_NO_BUTTON;
if (flags & MBX_QUESTION) {
if (btn3) /* "Cancel" button */
tdbuttons[tdconfig.cButtons++] = tdb_cancel;
else
tdconfig.dwCommonButtons |= TDCBF_CANCEL_BUTTON;
}
if (flags & MBX_QUESTION) {
if (btn3) /* "Cancel" button */
tdbuttons[tdconfig.cButtons++] = tdb_cancel;
else
tdconfig.dwCommonButtons |= TDCBF_CANCEL_BUTTON;
}
if (flags & MBX_WARNING)
tdconfig.pszMainIcon = TD_WARNING_ICON;
break;
if (flags & MBX_WARNING)
tdconfig.pszMainIcon = TD_WARNING_ICON;
break;
}
/* If the message is an ANSI string, convert it. */
tdconfig.pszContent = (WCHAR *) STRING_OR_RESOURCE(message);
if (flags & MBX_ANSI) {
mbstoc16s(temp, (char *)message, strlen((char *)message)+1);
tdconfig.pszContent = temp;
mbstoc16s(temp, (char *) message, strlen((char *) message) + 1);
tdconfig.pszContent = temp;
}
/* Configure the rest of the TaskDialog. */
tdconfig.cbSize = sizeof(tdconfig);
tdconfig.cbSize = sizeof(tdconfig);
tdconfig.hwndParent = hwndMain;
if (flags & MBX_LINKS)
tdconfig.dwFlags = TDF_USE_COMMAND_LINKS;
tdconfig.dwFlags = TDF_USE_COMMAND_LINKS;
tdconfig.pszWindowTitle = MAKEINTRESOURCE(IDS_STRINGS);
if (header)
tdconfig.pszMainInstruction = STRING_OR_RESOURCE(header);
tdconfig.pszMainInstruction = STRING_OR_RESOURCE(header);
tdconfig.pButtons = tdbuttons;
if (flags & MBX_DONTASK)
tdconfig.pszVerificationText = MAKEINTRESOURCE(IDS_2135);
tdconfig.pszVerificationText = MAKEINTRESOURCE(IDS_2135);
/* Run the TaskDialog. */
TaskDialogIndirect(&tdconfig, &ret, NULL, &checked);
/* Convert return values to generic ones. */
if (ret == IDNO) ret = 1;
else if (ret == IDCANCEL) ret = -1;
else ret = 0;
if (ret == IDNO)
ret = 1;
else if (ret == IDCANCEL)
ret = -1;
else
ret = 0;
/* 10 is added to the return value if "don't show again" is checked. */
if (checked) ret += 10;
if (checked)
ret += 10;
return(ret);
return (ret);
}
int
file_dlg_w(HWND hwnd, WCHAR *f, WCHAR *fn, WCHAR *title, int save)
{
OPENFILENAME ofn;
BOOL r;
BOOL r;
/* DWORD err; */
int old_dopause;
/* Initialize OPENFILENAME */
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = wopenfilestring;
ofn.hwndOwner = hwnd;
ofn.lpstrFile = wopenfilestring;
/*
* Set lpstrFile[0] to '\0' so that GetOpenFileName does
@@ -175,40 +173,39 @@ file_dlg_w(HWND hwnd, WCHAR *f, WCHAR *fn, WCHAR *title, int save)
*/
memset(ofn.lpstrFile, 0x00, 512 * sizeof(WCHAR));
memcpy(ofn.lpstrFile, fn, (wcslen(fn) << 1) + 2);
ofn.nMaxFile = sizeof_w(wopenfilestring);
ofn.lpstrFilter = f;
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.nMaxFile = sizeof_w(wopenfilestring);
ofn.lpstrFilter = f;
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST;
if (! save)
ofn.Flags |= OFN_FILEMUSTEXIST;
ofn.Flags = OFN_PATHMUSTEXIST;
if (!save)
ofn.Flags |= OFN_FILEMUSTEXIST;
if (title)
ofn.lpstrTitle = title;
ofn.lpstrTitle = title;
/* Display the Open dialog box. */
old_dopause = dopause;
plat_pause(1);
if (save)
r = GetSaveFileName(&ofn);
r = GetSaveFileName(&ofn);
else
r = GetOpenFileName(&ofn);
r = GetOpenFileName(&ofn);
plat_pause(old_dopause);
plat_chdir(usr_path);
if (r) {
c16stombs(openfilestring, wopenfilestring, sizeof(openfilestring));
filterindex = ofn.nFilterIndex;
c16stombs(openfilestring, wopenfilestring, sizeof(openfilestring));
filterindex = ofn.nFilterIndex;
return(0);
return (0);
}
return(1);
return (1);
}
int
file_dlg(HWND hwnd, WCHAR *f, char *fn, char *title, int save)
{
@@ -218,10 +215,9 @@ file_dlg(HWND hwnd, WCHAR *f, char *fn, char *title, int save)
if (title)
mbstoc16s(title_buf, title, sizeof title_buf);
return(file_dlg_w(hwnd, f, ufn, title ? title_buf : NULL, save));
return (file_dlg_w(hwnd, f, ufn, title ? title_buf : NULL, save));
}
int
file_dlg_mb(HWND hwnd, char *f, char *fn, char *title, int save)
{
@@ -232,22 +228,20 @@ file_dlg_mb(HWND hwnd, char *f, char *fn, char *title, int save)
if (title)
mbstoc16s(title_buf, title, sizeof title_buf);
return(file_dlg_w(hwnd, uf, ufn, title ? title_buf : NULL, save));
return (file_dlg_w(hwnd, uf, ufn, title ? title_buf : NULL, save));
}
int
file_dlg_w_st(HWND hwnd, int id, WCHAR *fn, char *title, int save)
{
WCHAR title_buf[512];
if (title)
mbstoc16s(title_buf, title, sizeof title_buf);
return(file_dlg_w(hwnd, plat_get_string(id), fn, title ? title_buf : NULL, save));
return (file_dlg_w(hwnd, plat_get_string(id), fn, title ? title_buf : NULL, save));
}
int
file_dlg_st(HWND hwnd, int id, char *fn, char *title, int save)
{
return(file_dlg(hwnd, plat_get_string(id), fn, title, save));
return (file_dlg(hwnd, plat_get_string(id), fn, title, save));
}

View File

@@ -25,63 +25,59 @@
#include <86box/86box.h>
#include <86box/plat_dynld.h>
#ifdef ENABLE_DYNLD_LOG
int dynld_do_log = ENABLE_DYNLD_LOG;
static void
dynld_log(const char *fmt, ...)
{
va_list ap;
if (dynld_do_log) {
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
}
#else
#define dynld_log(fmt, ...)
# define dynld_log(fmt, ...)
#endif
void *
dynld_module(const char *name, dllimp_t *table)
{
HMODULE h;
HMODULE h;
dllimp_t *imp;
void *func;
void *func;
/* See if we can load the desired module. */
if ((h = LoadLibrary(name)) == NULL) {
dynld_log("DynLd(\"%s\"): library not found! (%08X)\n", name, GetLastError());
return(NULL);
dynld_log("DynLd(\"%s\"): library not found! (%08X)\n", name, GetLastError());
return (NULL);
}
/* Now load the desired function pointers. */
for (imp=table; imp->name!=NULL; imp++) {
func = GetProcAddress(h, imp->name);
if (func == NULL) {
dynld_log("DynLd(\"%s\"): function '%s' not found! (%08X)\n",
name, imp->name, GetLastError());
FreeLibrary(h);
return(NULL);
}
for (imp = table; imp->name != NULL; imp++) {
func = GetProcAddress(h, imp->name);
if (func == NULL) {
dynld_log("DynLd(\"%s\"): function '%s' not found! (%08X)\n",
name, imp->name, GetLastError());
FreeLibrary(h);
return (NULL);
}
/* To overcome typing issues.. */
*(char **)imp->func = (char *)func;
/* To overcome typing issues.. */
*(char **) imp->func = (char *) func;
}
/* All good. */
dynld_log("loaded %s\n", name);
return((void *)h);
return ((void *) h);
}
void
dynld_close(void *handle)
{
if (handle != NULL)
FreeLibrary((HMODULE)handle);
FreeLibrary((HMODULE) handle);
}

Some files were not shown because too many files have changed in this diff Show More