The Windows absolute path checker now considers the forward slash as well;

Applied all applicable PCem commits;
The PS/1 and PS/2 machines now have the correct graphics cards - fixes the reference diskettes;
The open dialog code now changes directory to usr_path after the dialog is closed;
Disabled excess logging in the TI SVGA code.
This commit is contained in:
OBattler
2017-12-04 20:35:05 +01:00
parent fc34a6eaf3
commit ae66b3f124
9 changed files with 66 additions and 32 deletions

View File

@@ -501,7 +501,10 @@ ps1_setup(int model)
serial_remove(2); serial_remove(2);
/* Enable the PS/1 VGA controller. */ /* Enable the PS/1 VGA controller. */
if (model == 2011)
device_add(&ps1vga_device); device_add(&ps1vga_device);
else
device_add(&ti_cf62011_device);
} }
if (model == 2121) { if (model == 2121) {

View File

@@ -18,7 +18,7 @@
#include "../floppy/floppy.h" #include "../floppy/floppy.h"
#include "../floppy/fdd.h" #include "../floppy/fdd.h"
#include "../floppy/fdc.h" #include "../floppy/fdc.h"
#include "../video/vid_ti_cf62011.h" #include "../video/vid_vga.h"
#include "machine.h" #include "machine.h"
@@ -166,5 +166,5 @@ machine_ps2_m30_286_init(machine_t *model)
ps2board_init(); ps2board_init();
fdc_set_dskchg_activelow(); fdc_set_dskchg_activelow();
fdc_set_ps1(); fdc_set_ps1();
device_add(&ti_cf62011_device); device_add(&ps1vga_device);
} }

View File

@@ -19,7 +19,7 @@
#include "../lpt.h" #include "../lpt.h"
#include "../mouse.h" #include "../mouse.h"
#include "../serial.h" #include "../serial.h"
#include "../video/vid_ti_cf62011.h" #include "../video/vid_vga.h"
#include "machine.h" #include "machine.h"
@@ -576,7 +576,7 @@ static void ps2_mca_board_model_50_init()
ps2.planar_read = model_50_read; ps2.planar_read = model_50_read;
ps2.planar_write = model_50_write; ps2.planar_write = model_50_write;
device_add(&ti_cf62011_device); device_add(&ps1vga_device);
} }
static void ps2_mca_board_model_55sx_init() static void ps2_mca_board_model_55sx_init()
@@ -640,7 +640,7 @@ static void ps2_mca_board_model_55sx_init()
ps2.planar_read = model_55sx_read; ps2.planar_read = model_55sx_read;
ps2.planar_write = model_55sx_write; ps2.planar_write = model_55sx_write;
device_add(&ti_cf62011_device); device_add(&ps1vga_device);
} }
static void mem_encoding_update() static void mem_encoding_update()
@@ -805,7 +805,7 @@ static void ps2_mca_board_model_80_type2_init()
mem_mapping_disable(&ps2.expansion_mapping); mem_mapping_disable(&ps2.expansion_mapping);
} }
device_add(&ti_cf62011_device); device_add(&ps1vga_device);
} }

View File

@@ -101,7 +101,7 @@ static void pit_set_out(PIT *pit, int64_t t, int64_t out)
static void pit_load(PIT *pit, int64_t t) static void pit_load(PIT *pit, int64_t t)
{ {
int64_t l = pit->l[t] ? pit->l[t] : 0x10000LL; int64_t l = pit->l[t] ? pit->l[t] : 0x10000LL;
timer_process(); timer_clock();
pit->newcount[t] = 0; pit->newcount[t] = 0;
pit->disabled[t] = 0; pit->disabled[t] = 0;
switch (pit->m[t]) switch (pit->m[t])
@@ -346,11 +346,11 @@ void pit_write(uint16_t addr, uint8_t val, void *p)
if (!(val&0x20)) if (!(val&0x20))
{ {
if (val & 2) if (val & 2)
pit->rl[0] = pit->using_timer[0] ? ((int64_t)(pit->c[0] / PITCONST) >> TIMER_SHIFT) : pit->count[0]; pit->rl[0] = pit_read_timer(pit, 0);
if (val & 4) if (val & 4)
pit->rl[1] = pit->using_timer[1] ? ((int64_t)(pit->c[1] / PITCONST) >> TIMER_SHIFT) : pit->count[1]; pit->rl[1] = pit_read_timer(pit, 1);
if (val & 8) if (val & 8)
pit->rl[2] = pit->using_timer[2] ? ((int64_t)(pit->c[2] / PITCONST) >> TIMER_SHIFT) : pit->count[2]; pit->rl[2] = pit_read_timer(pit, 2);
} }
if (!(val & 0x10)) if (!(val & 0x10))
{ {

View File

@@ -1149,8 +1149,7 @@ void sb_poll_i(void *p)
void sb_dsp_update(sb_dsp_t *dsp) void sb_dsp_update(sb_dsp_t *dsp)
{ {
/*this "if" implements two things: speaker on/off and buffer cleanup after stopping audio. */ if (dsp->muted)
if (!dsp->sbenable || dsp->muted)
{ {
dsp->sbdatl=0; dsp->sbdatl=0;
dsp->sbdatr=0; dsp->sbdatr=0;

View File

@@ -171,6 +171,7 @@ typedef struct mach64_t
uint32_t linear_base, old_linear_base; uint32_t linear_base, old_linear_base;
uint32_t io_base;
struct struct
{ {
@@ -3119,15 +3120,33 @@ void mach64_overlay_draw(svga_t *svga, int displine)
static void mach64_io_remove(mach64_t *mach64) static void mach64_io_remove(mach64_t *mach64)
{ {
int c; int c;
uint16_t io_base = 0x02ec;
switch (mach64->io_base)
{
case 0:
default:
io_base = 0x02ec;
break;
case 1:
io_base = 0x01cc;
break;
case 2:
io_base = 0x01c8;
break;
case 3:
fatal("Attempting to use the reserved value for I/O Base\n");
return;
}
io_removehandler(0x03c0, 0x0020, mach64_in, NULL, NULL, mach64_out, NULL, NULL, mach64); io_removehandler(0x03c0, 0x0020, mach64_in, NULL, NULL, mach64_out, NULL, NULL, mach64);
for (c = 0; c < 8; c++) for (c = 0; c < 8; c++)
{ {
io_removehandler((c * 0x1000) + 0x2ec, 0x0004, mach64_ext_inb, mach64_ext_inw, mach64_ext_inl, mach64_ext_outb, mach64_ext_outw, mach64_ext_outl, mach64); io_removehandler((c * 0x1000) + 0x0000 + io_base, 0x0004, mach64_ext_inb, mach64_ext_inw, mach64_ext_inl, mach64_ext_outb, mach64_ext_outw, mach64_ext_outl, mach64);
io_removehandler((c * 0x1000) + 0x6ec, 0x0004, mach64_ext_inb, mach64_ext_inw, mach64_ext_inl, mach64_ext_outb, mach64_ext_outw, mach64_ext_outl, mach64); io_removehandler((c * 0x1000) + 0x0400 + io_base, 0x0004, mach64_ext_inb, mach64_ext_inw, mach64_ext_inl, mach64_ext_outb, mach64_ext_outw, mach64_ext_outl, mach64);
io_removehandler((c * 0x1000) + 0xaec, 0x0004, mach64_ext_inb, mach64_ext_inw, mach64_ext_inl, mach64_ext_outb, mach64_ext_outw, mach64_ext_outl, mach64); io_removehandler((c * 0x1000) + 0x0800 + io_base, 0x0004, mach64_ext_inb, mach64_ext_inw, mach64_ext_inl, mach64_ext_outb, mach64_ext_outw, mach64_ext_outl, mach64);
io_removehandler((c * 0x1000) + 0xeec, 0x0004, mach64_ext_inb, mach64_ext_inw, mach64_ext_inl, mach64_ext_outb, mach64_ext_outw, mach64_ext_outl, mach64); io_removehandler((c * 0x1000) + 0x0c00 + io_base, 0x0004, mach64_ext_inb, mach64_ext_inw, mach64_ext_inl, mach64_ext_outb, mach64_ext_outw, mach64_ext_outl, mach64);
} }
io_removehandler(0x01ce, 0x0002, mach64_in, NULL, NULL, mach64_out, NULL, NULL, mach64); io_removehandler(0x01ce, 0x0002, mach64_in, NULL, NULL, mach64_out, NULL, NULL, mach64);
@@ -3193,10 +3212,22 @@ uint8_t mach64_pci_read(int func, int addr, void *p)
case 0x12: return mach64->linear_base >> 16; case 0x12: return mach64->linear_base >> 16;
case 0x13: return mach64->linear_base >> 24; case 0x13: return mach64->linear_base >> 24;
case 0x14: return 0x01; /*Block decoded IO address*/ case 0x14:
case 0x15: return mach64->block_decoded_io >> 8; if (mach64->type == MACH64_VT2)
case 0x16: return mach64->block_decoded_io >> 16; return 0x01; /*Block decoded IO address*/
case 0x17: return mach64->block_decoded_io >> 24; return 0x00;
case 0x15:
if (mach64->type == MACH64_VT2)
return mach64->block_decoded_io >> 8;
return 0x00;
case 0x16:
if (mach64->type == MACH64_VT2)
return mach64->block_decoded_io >> 16;
return 0x00;
case 0x17:
if (mach64->type == MACH64_VT2)
return mach64->block_decoded_io >> 24;
return 0x00;
case 0x30: return mach64->pci_regs[0x30] & 0x01; /*BIOS ROM address*/ case 0x30: return mach64->pci_regs[0x30] & 0x01; /*BIOS ROM address*/
case 0x31: return 0x00; case 0x31: return 0x00;
@@ -3206,7 +3237,7 @@ uint8_t mach64_pci_read(int func, int addr, void *p)
case 0x3c: return mach64->int_line; case 0x3c: return mach64->int_line;
case 0x3d: return PCI_INTA; case 0x3d: return PCI_INTA;
case 0x40: return mach64->use_block_decoded_io; case 0x40: return mach64->use_block_decoded_io | mach64->io_base;
} }
return 0; return 0;
} }
@@ -3288,14 +3319,13 @@ void mach64_pci_write(int func, int addr, uint8_t val, void *p)
break; break;
case 0x40: case 0x40:
if (mach64->type == MACH64_VT2)
{
if (mach64->pci_regs[PCI_REG_COMMAND] & PCI_COMMAND_IO) if (mach64->pci_regs[PCI_REG_COMMAND] & PCI_COMMAND_IO)
mach64_io_remove(mach64); mach64_io_remove(mach64);
mach64->io_base = val & 0x03;
if (mach64->type == MACH64_VT2)
mach64->use_block_decoded_io = val & 0x04; mach64->use_block_decoded_io = val & 0x04;
if (mach64->pci_regs[PCI_REG_COMMAND] & PCI_COMMAND_IO) if (mach64->pci_regs[PCI_REG_COMMAND] & PCI_COMMAND_IO)
mach64_io_set(mach64); mach64_io_set(mach64);
}
break; break;
} }
} }

View File

@@ -1,4 +1,4 @@
/* /*
* 86Box A hypervisor and IBM PC system emulator that specializes in * 86Box A hypervisor and IBM PC system emulator that specializes in
* running old operating systems and software designed for IBM * running old operating systems and software designed for IBM
* PC systems and compatibles from 1981 through fairly recent * PC systems and compatibles from 1981 through fairly recent
@@ -95,7 +95,7 @@ vid_out(uint16_t addr, uint8_t val, void *priv)
if (((addr & 0xfff0) == 0x03d0 || (addr & 0xfff0) == 0x03b0) && if (((addr & 0xfff0) == 0x03d0 || (addr & 0xfff0) == 0x03b0) &&
!(svga->miscout & 1)) addr ^= 0x60; !(svga->miscout & 1)) addr ^= 0x60;
#endif #endif
pclog("TISVGA_out(%04x, %02x)\n", addr, val); // pclog("TISVGA_out(%04x, %02x)\n", addr, val);
switch (addr) { switch (addr) {
case 0x0102: case 0x0102:
@@ -194,7 +194,7 @@ vid_in(uint16_t addr, void *priv)
break; break;
} }
pclog("TISVGA_in(%04x) = %02x\n", addr, ret); // pclog("TISVGA_in(%04x) = %02x\n", addr, ret);
return(ret); return(ret);
} }

View File

@@ -465,7 +465,7 @@ plat_path_slash(wchar_t *path)
int int
plat_path_abs(wchar_t *path) plat_path_abs(wchar_t *path)
{ {
if ((path[1] == L':') || (path[0] == L'\\')) if ((path[1] == L':') || (path[0] == L'\\') || (path[0] == L'/'))
return(1); return(1);
return(0); return(0);

View File

@@ -198,6 +198,8 @@ file_dlg_w(HWND hwnd, WCHAR *f, WCHAR *fn, int save)
r = GetOpenFileName(&ofn); r = GetOpenFileName(&ofn);
} }
plat_chdir(usr_path);
if (r) { if (r) {
wcstombs(openfilestring, wopenfilestring, sizeof(openfilestring)); wcstombs(openfilestring, wopenfilestring, sizeof(openfilestring));
// pclog("File dialog return true\n"); // pclog("File dialog return true\n");