Some PPI changes, should make the PPI behave consistently on hard reset.

This commit is contained in:
OBattler
2020-05-15 07:24:43 +02:00
parent d4f6a91e0a
commit 3d278b344f
3 changed files with 8 additions and 5 deletions

View File

@@ -34,6 +34,7 @@
#include <86box/rom.h> #include <86box/rom.h>
#include <86box/nmi.h> #include <86box/nmi.h>
#include <86box/pic.h> #include <86box/pic.h>
#include <86box/ppi.h>
#include <86box/timer.h> #include <86box/timer.h>
/* The opcode of the instruction currently being executed. */ /* The opcode of the instruction currently being executed. */
@@ -978,8 +979,10 @@ reset_common(int hard)
in_smm = smi_latched = 0; in_smm = smi_latched = 0;
smi_line = smm_in_hlt = 0; smi_line = smm_in_hlt = 0;
if (hard) if (hard) {
smbase = 0x00030000; smbase = 0x00030000;
ppi_reset();
}
in_sys = 0; in_sys = 0;
} }

View File

@@ -2039,7 +2039,7 @@ do_command:
break; break;
case 0x61: case 0x61:
ppi.pb = val; ppi.pb = (ppi.pb & 0x10) | (val & 0x0f);
speaker_update(); speaker_update();
speaker_gated = val & 1; speaker_gated = val & 1;

View File

@@ -20,8 +20,8 @@ PPI ppi;
int ppispeakon; int ppispeakon;
void ppi_reset(void) void
ppi_reset(void)
{ {
ppi.pa=0x0; memset(&ppi, 0x00, sizeof(PPI));
ppi.pb=0x40;
} }