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:
@@ -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. */
|
||||||
device_add(&ps1vga_device);
|
if (model == 2011)
|
||||||
|
device_add(&ps1vga_device);
|
||||||
|
else
|
||||||
|
device_add(&ti_cf62011_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (model == 2121) {
|
if (model == 2121) {
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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->pci_regs[PCI_REG_COMMAND] & PCI_COMMAND_IO)
|
||||||
|
mach64_io_remove(mach64);
|
||||||
|
mach64->io_base = val & 0x03;
|
||||||
if (mach64->type == MACH64_VT2)
|
if (mach64->type == MACH64_VT2)
|
||||||
{
|
|
||||||
if (mach64->pci_regs[PCI_REG_COMMAND] & PCI_COMMAND_IO)
|
|
||||||
mach64_io_remove(mach64);
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user