Skip to content

DOSBox-X 2023.05.01 2023-05-01 10:30

Compare
Choose a tag to compare
@joncampbell123 joncampbell123 released this 01 May 17:45
· 882 commits to master since this release

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.