WARNING: CONFIGS MIGHT PARTIALLY BREAK WHERE DEVICE NAMES HAVE CHANGED.

Changes to device_t struct to accomodate the upcoming PCI IRQ arbitration rewrite;
Added device.c/h API to obtain name from the device_t struct;
Significant changes to win/win_settings.c to clean up the code a bit and fix bugs;
Ported all the CPU and AudioPCI commits from PCem;
Added an API call to allow ACPI soft power off to gracefully stop the emulator;
Removed the Siemens PCD-2L from the Dev branch because it now works;
Removed the Socket 5 HP Vectra from the Dev branch because it now works;
Fixed the Compaq Presario and the Micronics Spitfire;
Give the IBM PC330 its own list of 486 CPU so it can have DX2's with CPUID 0x470;
SMM fixes;
Rewrote the SYSENTER, SYSEXIT, SYSCALL, and SYSRET instructions;
Changed IDE reset period to match the specification, fixes #929;
The keyboard input and output ports are now forced in front of the queue when read, fixes a number of bugs, including the AMI Apollo hanging on soft reset;
Added the Intel AN430TX but Dev branched because it does not work;
The network code no longer drops packets if the emulated network card has failed to receive them (eg. when the buffer is full);
Changes to PCI card adding and renamed some PCI slot types, also added proper AGP bridge slot types;
USB UHCI emulation is no longer a stub (still doesn't fully work, but at least Windows XP chk with Debug no longer ASSERT's on it);
Fixed NVR on the the SMC FDC37C932QF and APM variants;
A number of fixes to Intel 4x0 chipsets, including fixing every register of the 440LX and 440EX;
Some ACPI changes.
This commit is contained in:
OBattler
2020-11-16 00:01:21 +01:00
parent 745460f64b
commit 0faf6692c9
260 changed files with 5122 additions and 4471 deletions

View File

@@ -70,44 +70,25 @@
static netcard_t net_cards[] = {
{ "None", "none", NULL,
NULL },
{ "[ISA] 3Com EtherLink II (3C503)","3c503", &threec503_device,
NULL },
{ "[ISA] AMD PCnet-ISA", "pcnetisa", &pcnet_am79c960_device,
NULL },
{ "[ISA] Novell NE1000", "ne1k", &ne1000_device,
NULL },
{ "[ISA] Novell NE2000", "ne2k", &ne2000_device,
NULL },
{ "[ISA] Racal Interlan EtherBlaster", "pcnetracal", &pcnet_am79c960_eb_device,
NULL },
{ "[ISA] Realtek RTL8019AS", "ne2kpnp", &rtl8019as_device,
NULL },
{ "[ISA] Western Digital WD8003E", "wd8003e", &wd8003e_device,
NULL },
{ "[ISA] Western Digital WD8003EB", "wd8003eb", &wd8003eb_device,
NULL },
{ "[ISA] Western Digital WD8013EBT","wd8013ebt", &wd8013ebt_device,
NULL },
{ "[LPT] PLIP", "plip", &plip_device,
NULL },
{ "[MCA] NetWorth Ethernet/MC", "ethernextmc", &ethernext_mc_device,
NULL },
{ "[MCA] Western Digital WD8003ET/A","wd8003eta", &wd8003eta_device,
NULL },
{ "[MCA] Western Digital WD8003E/A", "wd8003ea", &wd8003ea_device,
NULL },
{ "[PCI] AMD PCnet-FAST III", "pcnetfast", &pcnet_am79c973_device,
NULL },
{ "[PCI] AMD PCnet-PCI II", "pcnetpci", &pcnet_am79c970a_device,
NULL },
{ "[PCI] Realtek RTL8029AS", "ne2kpci", &rtl8029as_device,
NULL },
{ "[VLB] AMD PCnet-VL", "pcnetvlb", &pcnet_am79c960_vlb_device,
NULL },
{ "", "", NULL,
NULL }
{ "none", NULL, NULL },
{ "3c503", &threec503_device, NULL },
{ "pcnetisa", &pcnet_am79c960_device, NULL },
{ "ne1k", &ne1000_device, NULL },
{ "ne2k", &ne2000_device, NULL },
{ "pcnetracal", &pcnet_am79c960_eb_device, NULL },
{ "ne2kpnp", &rtl8019as_device, NULL },
{ "wd8003e", &wd8003e_device, NULL },
{ "wd8003eb", &wd8003eb_device, NULL },
{ "wd8013ebt", &wd8013ebt_device, NULL },
{ "plip", &plip_device, NULL },
{ "ethernextmc", &ethernext_mc_device, NULL },
{ "wd8003eta", &wd8003eta_device, NULL },
{ "wd8003ea", &wd8003ea_device, NULL },
{ "pcnetfast", &pcnet_am79c973_device, NULL },
{ "pcnetpci", &pcnet_am79c970a_device, NULL },
{ "ne2kpci", &rtl8029as_device, NULL },
{ "pcnetvlb", &pcnet_am79c960_vlb_device, NULL },
{ "", NULL, NULL }
};
@@ -117,7 +98,8 @@ int network_ndev;
int network_card;
char network_host[522];
netdev_t network_devs[32];
int network_rx_pause = 0;
int network_rx_pause = 0,
network_tx_pause = 0;
#ifdef ENABLE_NIC_LOG
int nic_do_log = ENABLE_NIC_LOG;
#endif
@@ -355,6 +337,8 @@ network_queue_clear(int tx)
static void
network_rx_queue(void *priv)
{
int ret = 1;
if (network_rx_pause) {
timer_on_auto(&network_rx_queue_timer, 0.762939453125 * 2.0 * 128.0);
return;
@@ -367,14 +351,15 @@ network_rx_queue(void *priv)
network_queue_get(0, &pkt);
if ((pkt != NULL) && (pkt->len > 0)) {
network_dump_packet(pkt);
net_cards[network_card].rx(pkt->priv, pkt->data, pkt->len);
ret = net_cards[network_card].rx(pkt->priv, pkt->data, pkt->len);
if (pkt->len >= 128)
timer_on_auto(&network_rx_queue_timer, 0.762939453125 * 2.0 * ((double) pkt->len));
else
timer_on_auto(&network_rx_queue_timer, 0.762939453125 * 2.0 * 128.0);
} else
timer_on_auto(&network_rx_queue_timer, 0.762939453125 * 2.0 * 128.0);
network_queue_advance(0);
if (ret)
network_queue_advance(0);
network_busy(0);
}
@@ -475,7 +460,6 @@ network_close(void)
/* Here is where we clear the queues. */
network_queue_clear(0);
network_queue_clear(1);
network_rx_pause = 0;
network_log("NETWORK: closed.\n");
}
@@ -574,6 +558,9 @@ network_do_tx(void)
{
netpkt_t *pkt = NULL;
if (network_tx_pause)
return;
network_queue_get(1, &pkt);
if ((pkt != NULL) && (pkt->len > 0)) {
network_dump_packet(pkt);
@@ -638,14 +625,6 @@ network_card_available(int card)
}
/* UI */
char *
network_card_getname(int card)
{
return((char *)net_cards[card].name);
}
/* UI */
const device_t *
network_card_getdevice(int card)