Improved 8042 (AT and PS/2 keyboard controller emulation), no more hacks, split into various devices depending on vendor (generic, AMI, IBM (MCA), Quadtel, Toshiba), and fixed several commands - hopefully fixes all existing AT+ keyboard problems (such as incorrect scan codes on some machine under some circumstances);
Fixed a bug in the SMC FDC37C932 emulation, fixes the FDC on the two Acer machines; Re-added some Acer-specific I/O port handlers, fixes entry into CMOS Setup on the two Acer machines.
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
|
||||
|
||||
void
|
||||
machine_at_init(machine_t *model)
|
||||
machine_at_common_init(machine_t *model)
|
||||
{
|
||||
machine_common_init(model);
|
||||
|
||||
@@ -31,13 +31,38 @@ machine_at_init(machine_t *model)
|
||||
|
||||
nvr_at_init(8);
|
||||
|
||||
device_add(&keyboard_at_device);
|
||||
|
||||
if (joystick_type != 7)
|
||||
device_add(&gameport_device);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
machine_at_init(machine_t *model)
|
||||
{
|
||||
machine_at_common_init(model);
|
||||
|
||||
device_add(&keyboard_at_device);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
machine_at_ps2_init(machine_t *model)
|
||||
{
|
||||
machine_at_common_init(model);
|
||||
|
||||
device_add(&keyboard_ps2_device);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
machine_at_common_ide_init(machine_t *model)
|
||||
{
|
||||
machine_at_common_init(model);
|
||||
|
||||
ide_init();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
machine_at_ide_init(machine_t *model)
|
||||
{
|
||||
@@ -47,6 +72,15 @@ machine_at_ide_init(machine_t *model)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
machine_at_ps2_ide_init(machine_t *model)
|
||||
{
|
||||
machine_at_ps2_init(model);
|
||||
|
||||
ide_init();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
machine_at_top_remap_init(machine_t *model)
|
||||
{
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
*
|
||||
* Implementation of the Intel 430FX PCISet chip.
|
||||
*
|
||||
* Version: @(#)m_at_430fx.c 1.0.8 2017/11/04
|
||||
* Version: @(#)m_at_430fx.c 1.0.10 2018/01/04
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
* Copyright 2008-2017 Sarah Walker.
|
||||
* Copyright 2016,2017 Miran Grca.
|
||||
* Copyright 2008-2018 Sarah Walker.
|
||||
* Copyright 2016,2018 Miran Grca.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "../rom.h"
|
||||
#include "../pci.h"
|
||||
#include "../device.h"
|
||||
#include "../keyboard.h"
|
||||
#include "../piix.h"
|
||||
#include "../intel_flash.h"
|
||||
#include "../sio.h"
|
||||
@@ -205,7 +206,7 @@ static void i430fx_init(void)
|
||||
void
|
||||
machine_at_p54tp4xe_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
@@ -226,7 +227,8 @@ machine_at_p54tp4xe_init(machine_t *model)
|
||||
void
|
||||
machine_at_endeavor_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_ps2_ami_device);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
@@ -248,7 +250,8 @@ machine_at_endeavor_init(machine_t *model)
|
||||
void
|
||||
machine_at_zappa_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_ps2_ami_device);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
@@ -268,7 +271,7 @@ machine_at_zappa_init(machine_t *model)
|
||||
void
|
||||
machine_at_mb500n_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
|
||||
@@ -288,7 +291,7 @@ machine_at_mb500n_init(machine_t *model)
|
||||
void
|
||||
machine_at_president_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
@@ -309,7 +312,8 @@ machine_at_president_init(machine_t *model)
|
||||
void
|
||||
machine_at_thor_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_ps2_ami_device);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
*
|
||||
* Implementation of the Intel 430HX PCISet chip.
|
||||
*
|
||||
* Version: @(#)m_at_430hx.c 1.0.8 2017/11/04
|
||||
* Version: @(#)m_at_430hx.c 1.0.10 2018/01/04
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
* Copyright 2008-2017 Sarah Walker.
|
||||
* Copyright 2016-2017 Miran Grca.
|
||||
* Copyright 2008-2018 Sarah Walker.
|
||||
* Copyright 2016-2018 Miran Grca.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "../memregs.h"
|
||||
#include "../pci.h"
|
||||
#include "../device.h"
|
||||
#include "../keyboard.h"
|
||||
#include "../piix.h"
|
||||
#include "../intel_flash.h"
|
||||
#include "../sio.h"
|
||||
@@ -189,10 +190,35 @@ static void i430hx_init(void)
|
||||
}
|
||||
|
||||
|
||||
static int acerm3a_index;
|
||||
|
||||
|
||||
static void
|
||||
acerm3a_out(uint16_t port, uint8_t val, void *p)
|
||||
{
|
||||
if (port == 0xea)
|
||||
acerm3a_index = val;
|
||||
}
|
||||
|
||||
static uint8_t
|
||||
acerm3a_in(uint16_t port, void *p)
|
||||
{
|
||||
if (port == 0xeb)
|
||||
{
|
||||
switch (acerm3a_index)
|
||||
{
|
||||
case 2:
|
||||
return 0xfd;
|
||||
}
|
||||
}
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
machine_at_acerm3a_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
powermate_memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
@@ -206,6 +232,7 @@ machine_at_acerm3a_init(machine_t *model)
|
||||
i430hx_init();
|
||||
piix3_init(7);
|
||||
fdc37c932fr_init();
|
||||
io_sethandler(0x00ea, 0x0002, acerm3a_in, NULL, NULL, acerm3a_out, NULL, NULL, NULL);
|
||||
|
||||
device_add(&intel_flash_bxb_device);
|
||||
}
|
||||
@@ -214,7 +241,7 @@ machine_at_acerm3a_init(machine_t *model)
|
||||
void
|
||||
machine_at_acerv35n_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
powermate_memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
@@ -228,6 +255,7 @@ machine_at_acerv35n_init(machine_t *model)
|
||||
i430hx_init();
|
||||
piix3_init(7);
|
||||
fdc37c932fr_init();
|
||||
io_sethandler(0x00ea, 0x0002, acerm3a_in, NULL, NULL, acerm3a_out, NULL, NULL, NULL);
|
||||
|
||||
device_add(&intel_flash_bxb_device);
|
||||
}
|
||||
@@ -236,7 +264,8 @@ machine_at_acerv35n_init(machine_t *model)
|
||||
void
|
||||
machine_at_ap53_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_ps2_ami_device);
|
||||
|
||||
memregs_init();
|
||||
powermate_memregs_init();
|
||||
@@ -259,7 +288,7 @@ machine_at_ap53_init(machine_t *model)
|
||||
void
|
||||
machine_at_p55t2p4_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
@@ -280,7 +309,8 @@ machine_at_p55t2p4_init(machine_t *model)
|
||||
void
|
||||
machine_at_p55t2s_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_ps2_ami_device);
|
||||
|
||||
memregs_init();
|
||||
powermate_memregs_init();
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
*
|
||||
* Implementation of the Intel 430LX and 430NX PCISet chips.
|
||||
*
|
||||
* Version: @(#)m_at_430lx_nx.c 1.0.8 2017/11/04
|
||||
* Version: @(#)m_at_430lx_nx.c 1.0.9 2018/01/04
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
* Copyright 2008-2017 Sarah Walker.
|
||||
* Copyright 2016,2017 Miran Grca.
|
||||
* Copyright 2008-2018 Sarah Walker.
|
||||
* Copyright 2016,2018 Miran Grca.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "../rom.h"
|
||||
#include "../pci.h"
|
||||
#include "../device.h"
|
||||
#include "../keyboard.h"
|
||||
#include "../intel.h"
|
||||
#include "../intel_flash.h"
|
||||
#include "../intel_sio.h"
|
||||
@@ -212,7 +213,8 @@ static void i430nx_init(void)
|
||||
static void
|
||||
machine_at_premiere_common_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_ps2_ami_device);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_2);
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
*
|
||||
* Implementation of the Intel 430VX PCISet chip.
|
||||
*
|
||||
* Version: @(#)m_at_430vx.c 1.0.9 2017/11/04
|
||||
* Version: @(#)m_at_430vx.c 1.0.10 2018/01/04
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
* Copyright 2008-2017 Sarah Walker.
|
||||
* Copyright 2016,2017 Miran Grca.
|
||||
* Copyright 2008-2018 Sarah Walker.
|
||||
* Copyright 2016,2018 Miran Grca.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
@@ -195,7 +195,7 @@ void i430vx_init(void)
|
||||
void
|
||||
machine_at_p55tvp4_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
@@ -216,7 +216,7 @@ machine_at_p55tvp4_init(machine_t *model)
|
||||
void
|
||||
machine_at_i430vx_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
@@ -237,7 +237,7 @@ machine_at_i430vx_init(machine_t *model)
|
||||
void
|
||||
machine_at_p55va_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
*
|
||||
* Implementation of the Intel 440FX PCISet chip.
|
||||
*
|
||||
* Version: @(#)m_at_440fx.c 1.0.8 2017/11/04
|
||||
* Version: @(#)m_at_440fx.c 1.0.9 2018/01/04
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
* Copyright 2008-2017 Sarah Walker.
|
||||
* Copyright 2016,2017 Miran Grca.
|
||||
* Copyright 2008-2018 Sarah Walker.
|
||||
* Copyright 2016,2018 Miran Grca.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "../mem.h"
|
||||
#include "../memregs.h"
|
||||
#include "../device.h"
|
||||
#include "../keyboard.h"
|
||||
#include "../piix.h"
|
||||
#include "../intel_flash.h"
|
||||
#include "../sio.h"
|
||||
@@ -196,7 +197,7 @@ static void i440fx_init(void)
|
||||
void
|
||||
machine_at_i440fx_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
@@ -218,7 +219,8 @@ machine_at_i440fx_init(machine_t *model)
|
||||
void
|
||||
machine_at_s1668_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_ps2_ami_device);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
* NOTE: The NEAT 82c206 code should be moved into a 82c206 module,
|
||||
* so it can be re-used by other boards.
|
||||
*
|
||||
* Version: @(#)m_4gpv31.c 1.0.1 2017/12/04
|
||||
* Version: @(#)m_4gpv31.c 1.0.2 2018/01/04
|
||||
*
|
||||
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Copyright 2017 Fred N. van Kempen.
|
||||
* Copyright 2018 Fred N. van Kempen.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
@@ -141,7 +141,8 @@ neat_init(void)
|
||||
void
|
||||
machine_at_4gpv31_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_at_ami_device);
|
||||
|
||||
neat_init();
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "../io.h"
|
||||
#include "../mem.h"
|
||||
#include "../device.h"
|
||||
#include "../keyboard.h"
|
||||
#include "../disk/hdc.h"
|
||||
#include "../disk/hdc_ide.h"
|
||||
#include "machine.h"
|
||||
@@ -99,7 +100,8 @@ machine_at_ali1429_init(machine_t *model)
|
||||
{
|
||||
ali1429_reset();
|
||||
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_at_ami_device);
|
||||
|
||||
ali1429_init();
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#include "../cpu/cpu.h"
|
||||
#include "../cpu/x86.h"
|
||||
#include "../io.h"
|
||||
#include "../device.h"
|
||||
#include "../keyboard.h"
|
||||
#include "../mem.h"
|
||||
#include "machine.h"
|
||||
|
||||
@@ -68,7 +70,8 @@ static void headland_init(void)
|
||||
void
|
||||
machine_at_headland_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_at_ami_device);
|
||||
|
||||
headland_init();
|
||||
}
|
||||
|
||||
@@ -7,7 +7,9 @@
|
||||
#include <string.h>
|
||||
#include <wchar.h>
|
||||
#include "../86box.h"
|
||||
#include "../device.h"
|
||||
#include "../io.h"
|
||||
#include "../keyboard.h"
|
||||
#include "machine.h"
|
||||
|
||||
|
||||
@@ -90,3 +92,13 @@ machine_at_neat_init(machine_t *model)
|
||||
|
||||
neat_init();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
machine_at_neat_ami_init(machine_t *model)
|
||||
{
|
||||
machine_at_common_init(model);
|
||||
device_add(&keyboard_at_ami_device);
|
||||
|
||||
neat_init();
|
||||
}
|
||||
|
||||
@@ -258,6 +258,8 @@ SeeAlso: #P0178,#P0187
|
||||
#include "../86box.h"
|
||||
#include "../cpu/cpu.h"
|
||||
#include "../io.h"
|
||||
#include "../device.h"
|
||||
#include "../keyboard.h"
|
||||
#include "../mem.h"
|
||||
#include "machine.h"
|
||||
|
||||
@@ -332,3 +334,13 @@ machine_at_opti495_init(machine_t *model)
|
||||
|
||||
opti495_init();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
machine_at_opti495_ami_init(machine_t *model)
|
||||
{
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_at_ami_device);
|
||||
|
||||
opti495_init();
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ static void sis_85c496_init(void)
|
||||
static void
|
||||
machine_at_sis_85c496_common_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_ps2_ide_init(model);
|
||||
|
||||
memregs_init();
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "../mouse.h"
|
||||
#include "../mem.h"
|
||||
#include "../device.h"
|
||||
#include "../keyboard.h"
|
||||
#include "../cpu/cpu.h"
|
||||
#include "../floppy/fdd.h"
|
||||
#include "../video/vid_t3100e.h"
|
||||
@@ -683,7 +684,9 @@ void machine_at_t3100e_init(machine_t *model)
|
||||
|
||||
memset(&t3100e_ems, 0, sizeof(t3100e_ems));
|
||||
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_at_toshiba_device);
|
||||
|
||||
/* Hook up system control port */
|
||||
io_sethandler(0x8084, 0x0001,
|
||||
t3100e_sys_in, NULL, NULL,
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "../86box.h"
|
||||
#include "../device.h"
|
||||
#include "../io.h"
|
||||
#include "../keyboard.h"
|
||||
#include "../mem.h"
|
||||
#include "../serial.h"
|
||||
#include "../floppy/floppy.h"
|
||||
@@ -140,7 +141,8 @@ static void wd76c10_init(void)
|
||||
void
|
||||
machine_at_wd76c10_init(machine_t *model)
|
||||
{
|
||||
machine_at_ide_init(model);
|
||||
machine_at_common_ide_init(model);
|
||||
device_add(&keyboard_at_quadtel_device);
|
||||
|
||||
wd76c10_init();
|
||||
|
||||
|
||||
@@ -28,15 +28,15 @@
|
||||
* boot. Sometimes, they do, and then it shows an "Incorrect
|
||||
* DOS" error message?? --FvK
|
||||
*
|
||||
* Version: @(#)m_ps1.c 1.0.3 2017/11/08
|
||||
* Version: @(#)m_ps1.c 1.0.4 2018/01/04
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
*
|
||||
* Copyright 2008-2017 Sarah Walker.
|
||||
* Copyright 2016,2017 Miran Grca.
|
||||
* Copyright 2017 Fred N. van Kempen.
|
||||
* Copyright 2008-2018 Sarah Walker.
|
||||
* Copyright 2016,2018 Miran Grca.
|
||||
* Copyright 2018 Fred N. van Kempen.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
@@ -552,7 +552,7 @@ ps1_common_init(machine_t *model)
|
||||
if (romset != ROM_IBMPS1_2011)
|
||||
ide_init();
|
||||
|
||||
device_add(&keyboard_at_device);
|
||||
device_add(&keyboard_ps2_device);
|
||||
|
||||
if (romset != ROM_IBMPS1_2133) {
|
||||
fdc_set_dskchg_activelow();
|
||||
|
||||
@@ -160,7 +160,7 @@ machine_ps2_m30_286_init(machine_t *model)
|
||||
|
||||
pit_set_out_func(&pit, 1, pit_refresh_timer_at);
|
||||
dma16_init();
|
||||
device_add(&keyboard_at_device);
|
||||
device_add(&keyboard_ps2_device);
|
||||
nvr_at_init(8);
|
||||
pic2_init();
|
||||
ps2board_init();
|
||||
|
||||
@@ -260,10 +260,10 @@ static void model_55sx_write(uint16_t port, uint8_t val)
|
||||
case 0x104:
|
||||
ps2.memory_bank[ps2.option[3] & 7] &= ~0xf;
|
||||
ps2.memory_bank[ps2.option[3] & 7] |= (val & 0xf);
|
||||
pclog("Write memory bank %i %02x\n", ps2.option[3] & 7, val);
|
||||
/* pclog("Write memory bank %i %02x\n", ps2.option[3] & 7, val); */
|
||||
break;
|
||||
case 0x105:
|
||||
pclog("Write POS3 %02x\n", val);
|
||||
/* pclog("Write POS3 %02x\n", val); */
|
||||
ps2.option[3] = val;
|
||||
shadowbios = !(val & 0x10);
|
||||
shadowbios_write = val & 0x10;
|
||||
@@ -440,15 +440,15 @@ uint8_t ps2_mca_read(uint16_t port, void *p)
|
||||
temp = 0xff;
|
||||
break;
|
||||
}
|
||||
|
||||
pclog("ps2_read: port=%04x temp=%02x\n", port, temp);
|
||||
|
||||
/* pclog("ps2_read: port=%04x temp=%02x\n", port, temp); */
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
static void ps2_mca_write(uint16_t port, uint8_t val, void *p)
|
||||
{
|
||||
pclog("ps2_write: port=%04x val=%02x %04x:%04x\n", port, val, CS,cpu_state.pc);
|
||||
/* pclog("ps2_write: port=%04x val=%02x %04x:%04x\n", port, val, CS,cpu_state.pc); */
|
||||
|
||||
switch (port)
|
||||
{
|
||||
@@ -619,18 +619,18 @@ static void mem_encoding_update()
|
||||
|
||||
if (ps2.mem_regs[1] & 2) {
|
||||
mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTERNAL | MEM_WRITE_INTERNAL);
|
||||
pclog("PS/2 Model 80-111: ROM space enabled\n");
|
||||
/* pclog("PS/2 Model 80-111: ROM space enabled\n"); */
|
||||
} else {
|
||||
mem_set_mem_state(0xe0000, 0x20000, MEM_READ_INTERNAL | MEM_WRITE_DISABLED);
|
||||
pclog("PS/2 Model 80-111: ROM space disabled\n");
|
||||
/* pclog("PS/2 Model 80-111: ROM space disabled\n"); */
|
||||
}
|
||||
|
||||
if (ps2.mem_regs[1] & 4) {
|
||||
mem_mapping_set_addr(&ram_low_mapping, 0x00000, 0x80000);
|
||||
pclog("PS/2 Model 80-111: 00080000- 0009FFFF disabled\n");
|
||||
/* pclog("PS/2 Model 80-111: 00080000- 0009FFFF disabled\n"); */
|
||||
} else {
|
||||
mem_mapping_set_addr(&ram_low_mapping, 0x00000, 0xa0000);
|
||||
pclog("PS/2 Model 80-111: 00080000- 0009FFFF enabled\n");
|
||||
/* pclog("PS/2 Model 80-111: 00080000- 0009FFFF enabled\n"); */
|
||||
}
|
||||
|
||||
if (!(ps2.mem_regs[1] & 8))
|
||||
@@ -642,10 +642,10 @@ static void mem_encoding_update()
|
||||
|
||||
mem_split_enable(ps2.split_size, ps2.split_addr);
|
||||
|
||||
pclog("PS/2 Model 80-111: Split memory block enabled at %08X\n", ps2.split_addr);
|
||||
} else {
|
||||
/* pclog("PS/2 Model 80-111: Split memory block enabled at %08X\n", ps2.split_addr); */
|
||||
} /* else {
|
||||
pclog("PS/2 Model 80-111: Split memory block disabled\n");
|
||||
}
|
||||
} */
|
||||
}
|
||||
|
||||
static uint8_t mem_encoding_read(uint16_t addr, void *p)
|
||||
@@ -773,7 +773,7 @@ static void ps2_mca_board_model_80_type2_init(int is486)
|
||||
break;
|
||||
}
|
||||
|
||||
pclog("ps2.mem_pos_regs[4] = %08X\n", ps2.mem_pos_regs[4]);
|
||||
/* pclog("ps2.mem_pos_regs[4] = %08X\n", ps2.mem_pos_regs[4]); */
|
||||
|
||||
mca_add(ps2_mem_expansion_read, ps2_mem_expansion_write, NULL);
|
||||
mem_mapping_add(&ps2.expansion_mapping,
|
||||
@@ -802,7 +802,7 @@ machine_ps2_common_init(machine_t *model)
|
||||
|
||||
dma16_init();
|
||||
ps2_dma_init();
|
||||
device_add(&keyboard_ps2_device);
|
||||
device_add(&keyboard_ps2_mca_device);
|
||||
nvr_at_init(8);
|
||||
pic2_init();
|
||||
|
||||
|
||||
@@ -8,15 +8,15 @@
|
||||
*
|
||||
* Handling of the emulated machines.
|
||||
*
|
||||
* Version: @(#)machine.h 1.0.15 2017/12/25
|
||||
* Version: @(#)machine.h 1.0.16 2018/01/04
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
*
|
||||
* Copyright 2008-2017 Sarah Walker.
|
||||
* Copyright 2016,2017 Miran Grca.
|
||||
* Copyright 2017 Fred N. van Kempen.
|
||||
* Copyright 2008-2018 Sarah Walker.
|
||||
* Copyright 2016,2018 Miran Grca.
|
||||
* Copyright 2018 Fred N. van Kempen.
|
||||
*/
|
||||
#ifndef EMU_MACHINE_H
|
||||
# define EMU_MACHINE_H
|
||||
@@ -95,8 +95,12 @@ extern void machine_close(void);
|
||||
/* Initialization functions for boards and systems. */
|
||||
extern void machine_common_init(machine_t *);
|
||||
|
||||
extern void machine_at_common_init(machine_t *);
|
||||
extern void machine_at_init(machine_t *);
|
||||
extern void machine_at_ps2_init(machine_t *);
|
||||
extern void machine_at_common_ide_init(machine_t *);
|
||||
extern void machine_at_ide_init(machine_t *);
|
||||
extern void machine_at_ps2_ide_init(machine_t *);
|
||||
extern void machine_at_top_remap_init(machine_t *);
|
||||
extern void machine_at_ide_top_remap_init(machine_t *);
|
||||
|
||||
@@ -133,7 +137,9 @@ extern void machine_at_cmdpc_init(machine_t *);
|
||||
|
||||
extern void machine_at_headland_init(machine_t *);
|
||||
extern void machine_at_neat_init(machine_t *);
|
||||
extern void machine_at_neat_ami_init(machine_t *);
|
||||
extern void machine_at_opti495_init(machine_t *);
|
||||
extern void machine_at_opti495_ami_init(machine_t *);
|
||||
extern void machine_at_scat_init(machine_t *);
|
||||
extern void machine_at_compaq_init(machine_t *);
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* NOTES: OpenAT wip for 286-class machine with open BIOS.
|
||||
* PS2_M80-486 wip, pending receipt of TRM's for machine.
|
||||
*
|
||||
* Version: @(#)machine_table.c 1.0.10 2018/01/01
|
||||
* Version: @(#)machine_table.c 1.0.11 2018/01/04
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -58,7 +58,7 @@ machine_t machines[] = {
|
||||
{ "[8086] Tandy 1000 SL/2", ROM_TANDY1000SL2, "tandy1000sl2", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 512, 768, 128, 0, machine_tandy1k_init, NULL, NULL },
|
||||
{ "[8086] VTech Laser XT3", ROM_LXT3, "lxt3", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 512, 1152, 128, 0, machine_xt_laserxt_init, NULL, NULL },
|
||||
|
||||
{ "[286 ISA] AMI 286 clone", ROM_AMI286, "ami286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_neat_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] AMI 286 clone", ROM_AMI286, "ami286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_neat_ami_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Award 286 clone", ROM_AWARD286, "award286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_scat_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Commodore PC 30 III", ROM_CMDPC30, "cmdpc30", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 640,16384, 128, 127, machine_at_cmdpc_init, NULL, nvr_at_close },
|
||||
{ "[286 ISA] Compaq Portable II", ROM_PORTABLEII, "portableii", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 640,16384, 128, 127, machine_at_compaq_init, NULL, nvr_at_close },
|
||||
@@ -89,10 +89,10 @@ machine_t machines[] = {
|
||||
|
||||
{ "[386SX MCA] IBM PS/2 model 55SX", ROM_IBMPS2_M55SX, "ibmps2_m55sx", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 8, 1, 63, machine_ps2_model_55sx_init, NULL, nvr_at_close },
|
||||
|
||||
{ "[386DX ISA] AMI 386DX clone", ROM_AMI386DX_OPTI495, "ami386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] AMI 386DX clone", ROM_AMI386DX_OPTI495, "ami386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_ami_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] Amstrad MegaPC 386DX", ROM_MEGAPCDX, "megapcdx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC | MACHINE_VIDEO, 1, 16, 1, 127, machine_at_wd76c10_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] Award 386DX clone", ROM_AWARD386DX_OPTI495, "award386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] MR 386DX clone", ROM_MR386DX_OPTI495, "mr386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL, nvr_at_close },
|
||||
{ "[386DX ISA] MR 386DX clone", ROM_MR386DX_OPTI495, "mr386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1, 64, 1, 127, machine_at_opti495_ami_init, NULL, nvr_at_close },
|
||||
#ifdef DEV_BRANCH
|
||||
#ifdef USE_PORTABLE3
|
||||
{ "[386DX ISA] Compaq Portable III (386)", ROM_PORTABLEIII386, "portableiii386", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_HDC | MACHINE_VIDEO, 1, 14, 1, 127, machine_at_compaq_init, NULL, nvr_at_close },
|
||||
|
||||
Reference in New Issue
Block a user