diff --git a/src/include/86box/86box.h b/src/include/86box/86box.h index c91b8d406..d21bba49c 100644 --- a/src/include/86box/86box.h +++ b/src/include/86box/86box.h @@ -137,6 +137,7 @@ extern int sound_is_float; /* (C) sound uses FP values */ extern int voodoo_enabled; /* (C) video option */ extern int ibm8514_standalone_enabled; /* (C) video option */ extern int xga_standalone_enabled; /* (C) video option */ +extern int da2_standalone_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 */ diff --git a/src/include/86box/fdc.h b/src/include/86box/fdc.h index ef78239cd..0d71dd374 100644 --- a/src/include/86box/fdc.h +++ b/src/include/86box/fdc.h @@ -52,6 +52,7 @@ #define FDC_FLAG_ALI 0x800 /* ALi M512x / M1543C */ #define FDC_FLAG_NO_DSR_RESET 0x1000 /* Has no DSR reset */ #define FDC_FLAG_NEC 0x2000 /* Is NEC upd765-compatible */ +#define FDC_FLAG_PS55 0x4000 /* PS/55 */ #define FDC_FLAG_SEC 0x10000 /* Is Secondary */ #define FDC_FLAG_TER 0x20000 /* Is Tertiary */ #define FDC_FLAG_QUA 0x40000 /* Is Quaternary */ @@ -100,7 +101,6 @@ typedef struct fdc_t { uint8_t densel_force; uint8_t fifo; uint8_t tfifo; - uint8_t fifobufpos; uint8_t drv2en; uint8_t gap; @@ -145,6 +145,7 @@ typedef struct fdc_t { int drvrate[4]; void *fifo_p; + int fifointest; sector_id_t read_track_sector; sector_id_t format_sector_id; @@ -252,6 +253,7 @@ extern const device_t fdc_at_qua_device; extern const device_t fdc_at_actlow_device; extern const device_t fdc_at_ps1_device; extern const device_t fdc_at_ps1_2121_device; +extern const device_t fdc_at_ps55_device; extern const device_t fdc_at_smc_device; extern const device_t fdc_at_ali_device; extern const device_t fdc_at_winbond_device; diff --git a/src/include/86box/hdc.h b/src/include/86box/hdc.h index 48235bb1e..734cdf37a 100644 --- a/src/include/86box/hdc.h +++ b/src/include/86box/hdc.h @@ -53,6 +53,7 @@ extern const device_t st506_xt_toshiba_t1200_device; /* st506_xt_toshiba_t1 extern const device_t esdi_at_wd1007vse1_device; /* esdi_at */ extern const device_t esdi_ps2_device; /* esdi_mca */ +extern const device_t esdi_integrated_device; /* esdi_mca */ extern const device_t ide_isa_device; /* isa_ide */ extern const device_t ide_isa_2ch_device; /* isa_ide_2ch */ diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index 8afd5e28f..fe867a4dc 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -887,6 +887,7 @@ 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_70_type4_init(const machine_t *); +extern int machine_ps55_model_50t_init(const machine_t*); /* m_tandy.c */ extern int tandy1k_eeprom_read(void); diff --git a/src/include/86box/mca.h b/src/include/86box/mca.h index e048a6131..2d31fe33d 100644 --- a/src/include/86box/mca.h +++ b/src/include/86box/mca.h @@ -3,6 +3,7 @@ extern void mca_init(int nr_cards); extern void mca_add(uint8_t (*read)(int addr, void *priv), void (*write)(int addr, uint8_t val, void *priv), uint8_t (*feedb)(void *priv), void (*reset)(void *priv), void *priv); +extern void mca_add_to_slot(uint8_t(*read)(int addr, void* priv), void (*write)(int addr, uint8_t val, void* priv), uint8_t(*feedb)(void* priv), void (*reset)(void* priv), void* priv, int c); extern void mca_set_index(int index); extern uint8_t mca_read(uint16_t port); extern uint8_t mca_read_index(uint16_t port, int index); diff --git a/src/include/86box/vid_ps55da2.h b/src/include/86box/vid_ps55da2.h new file mode 100644 index 000000000..70007be19 --- /dev/null +++ b/src/include/86box/vid_ps55da2.h @@ -0,0 +1,24 @@ +/* + * 86Box A hypervisor and IBM PC system emulator that specializes in + * running old operating systems and software designed for IBM + * PC systems and compatibles from 1981 through fairly recent + * system designs based on the PCI bus. + * + * This file is part of the 86Box distribution. + * + * IBM PS/55 Display Adapter II emulation. + * + * + * + * Authors: Akamaki. + * + * Copyright 2024 Akamaki. + */ + +#ifndef VIDEO_DA2_DEVICE_H +#define VIDEO_DA2_DEVICE_H + +#ifdef EMU_DEVICE_H +extern const device_t ps55da2_device; +#endif +#endif /*VIDEO_DA2_DEVICE_H*/ diff --git a/src/include/86box/vid_svga.h b/src/include/86box/vid_svga.h index 3d68c1a34..72b755cf1 100644 --- a/src/include/86box/vid_svga.h +++ b/src/include/86box/vid_svga.h @@ -216,6 +216,11 @@ typedef struct svga_t { int override; void *priv; + int vga_enabled; + /* The PS/55 POST BIOS has a special monitor detection for its internal VGA + when the monitor is connected to the Display Adapter. */ + int cable_connected; + uint8_t crtc[256]; uint8_t gdcreg[256]; uint8_t attrregs[32]; diff --git a/src/include/86box/vid_vga.h b/src/include/86box/vid_vga.h index bc552b285..62cee8e9f 100644 --- a/src/include/86box/vid_vga.h +++ b/src/include/86box/vid_vga.h @@ -33,4 +33,8 @@ static video_timings_t timing_vga = { VIDEO_ISA, 8, 16, 32, 8, 16, 32 }; void vga_out(uint16_t addr, uint8_t val, void *priv); uint8_t vga_in(uint16_t addr, void *priv); +void vga_disable(void* p); +void vga_enable(void* p); +int vga_isenabled(void* p); + #endif /*VIDEO_VGA_H*/ diff --git a/src/include/86box/video.h b/src/include/86box/video.h index 9cbd0399f..3db41d2ab 100644 --- a/src/include/86box/video.h +++ b/src/include/86box/video.h @@ -313,6 +313,9 @@ extern const device_t mach32_mca_device; extern const device_t mach32_pci_device; extern const device_t mach32_onboard_pci_device; +/* IBM Display Adapter (PS/55) */ +extern void da2_device_add(void); + /* ATi Mach64 */ extern const device_t mach64gx_isa_device; extern const device_t mach64gx_vlb_device;