2023.05.01
- IMGMAKE will choose LBA partition types for 2GB or larger disk
images, but the user can also use -chs and -lba options to override
that choice. The CHS or LBA partition types do matter because it
affects which version of INT 13h is used by Windows 98/ME to boot up
and, if drive C: is in compatibility mode, at all times. (joncampbell123) - PC-98 256-color mode will also trigger the auto mode of "render on
demand" for performance reasons because per-scanline raster effects
are very unlikely in that case, as will MDA and Hercules machine
types. (joncampbell123) - When the DOS IDLE API is enabled (by default), limit STI+HLT to
occur on INT 28h only once after any call to read the CON device
or call to BIOS INT 16h to read the keyboard. This fixes stalls
and sluggish input problems with programs that like to call INT 28h
often like the Pacific C compiler PPD IDE interface. (joncampbell123). - Hercules InColor machine type: Fixed attribute and RAMFONT handling
of 48K RAMFONT mode and added planar text rendering. (joncampbell123). - Write BIOS data area fields for number of rows, char height, etc.
for MCGA machine type in addition to EGA/VGA machine types because
IBM technical references suggest it's there for MCGA as well.
This also resolves an issue where with the MCGA machine type, INT 10h
failed to print any text to screen whatsoever. (joncampbell123). - Render on demand (Staging calls it "lazy rendering") now defaults
to "auto" and allows an "auto" setting. The auto setting will
turn it off for standard VGA modes and will turn it on for SVGA
modes where per scanline raster effects are very unlikely to
occur. This may provide a performance boost for DOS games in SVGA
modes and the Windows desktop (joncampbell123). - CGA 320x200 4-color mode is now rendered using the M_EGA render
code for EGA/VGA machine types to better reflect real hardware.
(joncampbell123). - Fix bug where setting doublescan=false for anything other than
the VGA machine type would break CGA graphics modes.
(joncampbell123). - Fix video debug overlay calculations of source video mode for
CGA graphics modes. (joncampbell123). - CGA 640x200 2-color mode and MCGA 640x480 2-color mode are no
longer rendered as M_CGA2 for EGA/VGA machine types. The reason
is that at the hardware level they are really just IBM standard
tweaked versions of the EGA/VGA 16-color modes with additional
bits for the interleave emulation and can be properly emulated
with the M_EGA renderer. M_CGA2 is still used for the CGA and
MCGA machine types for those modes. The DCGA DOS/V mode has been
carefully made into it's own render mode instead of part of the
M_CGA2 case. (joncampbell123). - Fixed refcount -1 error and abort when multiple floppies are
attached to a floppy drive and the "Swap floppy" mapper shortcut
is used at least once (joncampbell123). - Hercules palette selection now provides a "dark gray" color
mapping to match the green, amber, or gray palette selection of
the user (joncampbell123) - Fix Hercules vs MDA attribute handling of "dark gray" background
color when hardware blink is disabled. (joncampbell123) - Added RAMFONT emulation to Hercules Plus machine type, fixed code
to allow Hercules Plus text mode to draw farther than the first 4KB
of RAM if RAMFONT enabled. (joncampbell123) - DOS kernel: Fix programming mistake that allocated perhaps a bit
too much DOS kernel memory for the "List of Lists" info block.
Fix the sizes of the info block and other structures to make sure
specific kernel structures are placed at fixed addresses because
later Microsoft software for MS-DOS checks those values.
(joncampbell123) - Serial port: Add multiplier: setting as requested to enable
faster than 115200 baud rates. (joncampbell123) - Fix mistakes in CPUID emulation that threw a #UD exception for
specific cases where EAX was not recognized by particular CPU
types. (joncampbell123) - Fix RTC clock emulation to correctly signal IRQ8 interrupt for
both periodic tick and update-ended events. Prior to this fix,
only periodic tick events were reported even if the bit was set
to enable update-ended. (joncampbell123) - Fix serial and AUX PS/2 mouse emulation to not send relative
motion unless mouse captured, to make it consistent with the
BIOS PS/2 mouse emulation (joncampbell123) - FAT driver: Major performance boost is possible by eliminating
unnecessary code that re-reads the entire directory when looking
up or changing one particular directory entry. (joncampbell123). - CMOS registers: Fix code to allow getting and setting time,
fix year vs century registers to work properly. (joncampbell123). - BIOS INT 1Ah: Fix functions to get and set time and date
instead of faking on read and ignoring set. Use the CMOS
registers. (joncampbell123). - DOS INT 21h: Fix date and time functions to call the BIOS for
time instead of trying to fake it only at the DOS level. This
includes allowing INT 21h to change the date/time using the
BIOS. (joncampbell123). - DOS shell: Make TIME actually use INT 21h to set time instead of
directly modifying the BIOS timer tick count in the BDA.
(joncampbell123). - Increased PIC event queue size, there are corner cases especially
with Windows XP that can occasionally overrun the queue.
(joncampbell123). - Updated IBM PC keyboard emulation to correctly encode Pause and
Print Screen key scan codes when shift, alt, and ctrl are held
down. This makes it possible to type "Alt+SysRq" for programs
that expect it, including SoftICE. (joncampbell123). - NE2000 emulation: Looking at recent Bochs source code, ne2k.cc
appears to have downgraded the "IMR write, reserved bit set"
message from BX_PANIC to BX_ERROR. Update the same in DOSBox-X
so that Windows 2000 no longer crashes the emulator with E_Exit()
when probing the NE2000 hardware. (joncampbell123). - INT 33h mouse services: Add "Get General Driver Information"
function for Microsoft Word 5.5 (joncampbell123). - INT 33h mouse services: Render cursorType == 2 (graphics cursor)
as if text cursorType == 0 if the current mode is text mode.
Microsoft Word 5.5 always calls functions to set text AND graphics
cursor regardless of whether the actual mode is graphics or not.
This fix allows the cursor to show correctly as the block cursor
it wanted in text mode instead of a moving hardware blinking cursor.
(joncampbell123). - Fixed S3 XGA emulation bitmap rendering to correctly handle
8/16/32-bit pixel transfer I/O and update comments to reflect
the 32-bit byte aligned transfer mode of the Trio chipset.
This fixes incorrectly drawn radio buttons and 16x16 icons
in Windows NT 3.5, Windows NT 3.51, Windows NT 4.0, and
Windows 2000. (joncampbell123). - Fixed keyboard emulation so that upon the keyboard reset command
FFh, the keyboard does the reset process and THEN sends back
bytes 0xAA (power on/reset OK) and 0x00 (interface self-test).
This resolves the issue where Windows NT 3.1 pauses at startup and
does not resume booting until you press a key on the keyboard.
This also resolves the issue where Windows NT 3.5 keyboard and
mouse input stops working completely if you press a key on the
keyboard. (joncampbell123). - Add Hercules InColor emulation of MDA vs CGA attribute select,
and make sure it obeys the blink setting (joncampbell123) - Change Hercules/MDA text output to render 9 pixels per char
if the char9 setting is on, to match the 9x14 character cell
that those cards emit to the screen. The user can always turn
it back off to get the 8x14 text they're probably accustomed
to in other DOSBox forks. (joncampbell123) - Render output fixed to never double pixels vertically on render
if the machine type is emulating VGA and the Doublescan option
is enabled, in order to help resolve SVGA text mode issues
reported by ThomasKjoernes (joncampbell123) - Add InColor CRTC registers and add code to emulate the planar
bitplane operations. Microsoft Flight Simulator 3.0 renders
correctly now. (joncampbell123) - Update Hercules InColor code to render the same 64-color EGA
palette as machine=ega. (joncampbell123) - Correct machine=hercules text rendering flaw that prevented
the bright attribute (bit 3/7) from working, making all text
output the same normal brightness. (joncampbell123) - Add expected data structures and signatures to VGA ROM BIOS at
C000:0000 if machine type selects ATI emulation (joncampbell123). - Add ATI machine types, which at this time, is just a placeholder
for development to go in that direction over time for those
machine types. (joncampbell123) - Added "machine=hercules_plus" and "machine=hercules_incolor" as
stubs to be developed on going forward to emulate the HGC+ and
InColor cards. Note that InColor will require the MCH_HERC case
to generate 64-color EGA-like output going forward even if the
documented stratup state still emulates the MDA-like monochrome
attributes. (joncampbell123) - SDL2: Stop checking for compiler flags that make it an error to
declare variables after statements in a function or any other
terrible sins that would offend old C89 standard compilers.
DOSBox-X is never going to compile for a C standard that old.
Furthermore this check is preventing compilation on ARM-based
Macbooks for some reason, though not Intel based Macbooks.