Rewritten 808x CPU emulation core based on reenigne's XTCE, VisiOn, SnatchIt, and 8088 MPH now work correctly;
Fixed PC speaker sound volume in PIT mode 0; A few CPU emulation clean-ups; Hard disk controller changing redone in a less messy way; Re-added the long-missing key send delay handling to the XT keyboard handler; Fixed a bug that was causing SLiRP not to work when compiled with MingW/GCC 7.3.0-2 or newer; Some serial mouse and port fixes; A lot of changes to printer emulation, mostly based on DOSBox-X; Printer PNG writer now uses statically linked libpng; Added support for the HxC MFM floppy image format and upped 86F format version to 2.12; Ported various things from PCem and some from VARCem; Added the S3 86c801/805 emulation (patch from TheCollector1995); Fixed and renamed the EGA monitor options; Better synchronized the 808x to the PIT and the CGA; Fixed the CGA wait state calculation; Cleaned up some things in mem.c; Fixed some things in the floppy emulation to make VisiOn get the correct errors from the copy protection disk; Fixed several renderer-related bugs, including the SDL2 renderer's failure to take screenshots; The Jenkins builds are now compiled with MingW/GCC 7.4.0-1 and include all the required DLL's.
This commit is contained in:
@@ -101,6 +101,9 @@ typedef struct {
|
||||
/* Output file name. */
|
||||
wchar_t filename[1024];
|
||||
|
||||
/* Printer timeout. */
|
||||
int64_t timeout;
|
||||
|
||||
/* page data (TODO: make configurable) */
|
||||
double page_width, /* all in inches */
|
||||
page_height,
|
||||
@@ -193,6 +196,18 @@ new_page(prnt_t *dev)
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
timeout_timer(void *priv)
|
||||
{
|
||||
prnt_t *dev = (prnt_t *) priv;
|
||||
|
||||
if (dev->page->dirty)
|
||||
new_page(dev);
|
||||
|
||||
dev->timeout = 0LL;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
reset_printer(prnt_t *dev)
|
||||
{
|
||||
@@ -221,6 +236,8 @@ reset_printer(prnt_t *dev)
|
||||
|
||||
/* Create a file for this page. */
|
||||
plat_tempfile(dev->filename, NULL, L".txt");
|
||||
|
||||
dev->timeout = 0LL;
|
||||
}
|
||||
|
||||
|
||||
@@ -280,7 +297,7 @@ process_char(prnt_t *dev, uint8_t ch)
|
||||
|
||||
case 0x11: /* select printer (DC1) */
|
||||
/* Ignore. */
|
||||
return 1;
|
||||
return 0;
|
||||
|
||||
case 0x12: /* cancel condensed printing (DC2) */
|
||||
/* Ignore. */
|
||||
@@ -375,6 +392,8 @@ write_ctrl(uint8_t val, void *priv)
|
||||
|
||||
/* ACK it, will be read on next READ STATUS. */
|
||||
dev->ack = 1;
|
||||
|
||||
dev->timeout = 500000LL * TIMER_USEC;
|
||||
}
|
||||
|
||||
dev->ctrl = val;
|
||||
@@ -427,6 +446,8 @@ prnt_init(const lpt_device_t *INFO)
|
||||
|
||||
//DEBUG("PRNT: created a virtual %ix%i page.\n", dev->page->w, dev->page->h);
|
||||
|
||||
timer_add(timeout_timer, &dev->timeout, &dev->timeout, dev);
|
||||
|
||||
return(dev);
|
||||
}
|
||||
|
||||
@@ -458,5 +479,7 @@ const lpt_device_t lpt_prt_text_device = {
|
||||
prnt_close,
|
||||
write_data,
|
||||
write_ctrl,
|
||||
read_status
|
||||
NULL,
|
||||
read_status,
|
||||
NULL
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user