Commit Graph

13475 Commits

Author SHA1 Message Date
Stanislav Shwartsman
3ff8fd5cd7 merge FCOMPP and FUCOMPP to same method to reduce code duplication 2024-02-20 07:22:58 +02:00
Volker Ruppert
e31e42a4c8 Update CHANGES. 2024-02-19 18:10:28 +01:00
Volker Ruppert
662fb097fe Erase BIOS flash space in case the specified image file is not found.
Disable loading flash data feature for the current Bochs BIOS.
2024-02-19 17:52:52 +01:00
Benjamin David Lunt
2c4fcc7981
Changed = to ==
Changed = to ==
I think this was a simple mistake and since there was no way to test it until now, it didn't show up.
2024-02-19 09:18:16 +02:00
Volker Ruppert
4455da0e1b Perform win32 gui internal palette swapping only in case of a bpp change. 2024-02-18 18:20:49 +01:00
Volker Ruppert
abdbc52f22 Finally enabled the VGA_MEM_FIX code.
The legacy code could be removed after release Bochs 2.8 if there are no issues.
2024-02-18 11:03:31 +01:00
Volker Ruppert
171697da03 Fixed save/restore with debugger enabled. 2024-02-17 09:23:39 +01:00
Volker Ruppert
cc162522bb Fixed compilation with VGA_MEM_FIX not set. 2024-02-17 08:59:00 +01:00
Volker Ruppert
9e6d839caa VGA_MEM_FIX: Force a refresh of the text buffer on mode change and restore. 2024-02-17 08:53:25 +01:00
Volker Ruppert
75d76db967 Cirrus: Added support for 4-bpp VBE modes with original VGABIOS. 2024-02-16 14:23:56 +01:00
Benjamin David Lunt
e4d8ca494f
Update usb_ehci.cc (#271)
No reason to stop executing the Async list simply because the driver
didn't clear the IAA bit in the Status register.

Normally, a driver should clear it, but there is no instruction in the
specification to stop the Async list simply because this bit isn't
cleared.

Debug log is still present to inform the user.

Co-authored-by: Volker Ruppert <Volker.Ruppert@t-online.de>
2024-02-15 16:53:29 +01:00
Volker Ruppert
1ff88fdd05 VGA_MEM_FIX: Added text buffer in legacy format to simplify text update.
Using character / attribute pairs expected by the gui text update makes the
update code simpler and faster.
TODO: If possible add a buffer for active text font data.
2024-02-13 17:38:52 +01:00
Shwartsman
7b5fb0b749 AVX-512 VREDUCE* should never raise #Denormal, #Overflow or #Underflow 2024-02-12 21:15:43 -06:00
Volker Ruppert
57d38ffb86 VGA_MEM_FIX: Added memory size mask to fix planar VGA modes. 2024-02-12 22:12:34 +01:00
Volker Ruppert
117f71a185 VGA_MEM_FIX: Some odd/even mode changes for correctness.
Offset must be shifted left by 2 instead of 1.
Even offset writes can go to plane 0 and 2, odd ones to plane 1 and 3.
2024-02-12 16:58:38 +01:00
Volker Ruppert
30c1e74627 VGA_MEM_FIX: Next attempt to fix odd/even mode related issues.
Now using the sequencer 'odd/even disable' switch to determine mode.
2024-02-11 17:11:48 +01:00
Volker Ruppert
549d052e34 VGA_MEM_FIX: Picked a better name for the sequencer odd/even disable switch. 2024-02-11 14:49:12 +01:00
Volker Ruppert
0e5800bf98 VGA_MEM_FIX: Fixed cursor address of the invisible cursor.
Now using the highest address of the default text mode buffer.
2024-02-11 13:40:02 +01:00
Volker Ruppert
39155bd3ae VGA_MEM_FIX: Temporary fix for special memory access mode in modeX.
In odd/even mode fall back to planar mode if "chain odd/even" bit is 0.
2024-02-11 09:37:06 +01:00
Volker Ruppert
945ee597f0 Added currently disabled set of fixes for the VGA memory management.
- Added disabled definition VGA_MEM_FIX in vgacore.h. The VGA core code works as
  usual unless you uncomment the define.
- Added correct implementation of the "chain four" and "odd/even" addressing mode.
  This should fix the Debian / GRUB boot issue (#257) with both Bochs VBE and Cirrus.
- Added some compatibility code to make the gui text update work as usual.
- Tested all VGA modes except 256-color word mode (no test case).
- Some more testing with old DOS games may be required before I enable it by default
  and finally remove the legacy code.
2024-02-10 17:30:24 +01:00
Volker Ruppert
fd68912dc7 Small cleanups in the VGA core code.
The text snapshot buffer is now allocated dynamicly.
2024-02-10 14:00:09 +01:00
Shwartsman
e7ef67f89b bugfix for float64_getmant 2024-02-10 13:27:16 +01:00
Volker Ruppert
4ab88c3d8f Cirrus: The first MB of video memory is always accessible. 2024-02-10 10:36:39 +01:00
Volker Ruppert
5c715aa9a3 Fixed clipping parameters in Banshee/Voodoo3 (issue #236).
Added 'clip_mask' with width depending on model.
Fixed VGA display issue discovered with Voodoo3.
2024-02-09 15:03:32 +01:00
Volker Ruppert
e5ff346368 Some fixes and cleanups after latest changes.
- Fixed Cirrus text mode output.
- VBE now using it's own 'line_offset' value.
- Since font change is now handled in update(), removing gui method set_text_charbyte().
2024-02-09 14:34:01 +01:00
Volker Ruppert
e53cf3b962 VBE/VGA: More accurate implementation of GRUB save/restore support.
Added VGA chain4 mode read/write support from VBE frame buffer.
Handle charmap update in update() using modified 'vga_mem_udated' flag.
Added temporary code for chain four memory addressing.
TODO: VGA memory handling rewrite including odd/even mode support.
2024-02-08 23:05:48 +01:00
Stanislav Shwartsman
c3269722f4 fixed spelling in comment 2024-02-07 00:18:06 +02:00
Volker Ruppert
1221217a7d VBE: Preserve original line offset while in VBE mode. 2024-02-06 21:49:59 +01:00
Volker Ruppert
4e6b4165f5 Added workaround for the save/restore function of the GRUB bootloader.
The VGA core needs an extensive rewrite to support it correctly with
both Bochs VBE and Cirrus.
2024-02-06 20:36:15 +01:00
Stanislav Shwartsman
ad8c21437f fix segfault @ 'step all' command in single-processor config 2024-02-05 22:06:24 +02:00
Benjamin David Lunt
3525a89b7a
Update usb_xhci.cc (#262) : The EDTLA should be updated for OUT going packets too.
The EDTLA should be updated for OUT going packets too.
2024-02-05 07:08:31 +02:00
Benjamin David Lunt
17a7a30c10
Update usb_xhci.cc (#260) : Don't check the size of a non-existent segment in an event ring table.
Don't check the size of a non-existent segment in an event ring table.
2024-02-05 07:08:05 +02:00
Benjamin David Lunt
f1e4e6757e
Update usb_xhci.cc (#255)
Update conditional compilation due to conflicting statements in
different versions of the specs on the `ep_context->ep_state` value
initialization during a `SetAddress` command.
2024-02-04 08:12:04 +02:00
Volker Ruppert
6391cf0093 Fixes for VBE 4-bpp modes support.
Row address must be 32 bit wide and VGA compatible display end is limited to 1023.
TODO: Fix VGA compatible setup for VBE modes in VGABIOS.
2024-02-03 18:02:10 +01:00
Volker Ruppert
cd0feed380 VGA core: Added support for extended 4-bpp modes (tested with Cirrus). 2024-02-03 14:51:12 +01:00
Vort
5474eb6963
Cirrus: Add support for palette modes with pixel frequency > 85 MHz (#254)
It allows to use 1152x864x8 mode with [original
BIOS](https://github.com/bochs-emu/Bochs/files/14130753/cl-gd5446_pci_vga_bios_version_1.31.zip).
2024-02-03 14:12:40 +01:00
Stanislav Shwartsman
37341c8838 fixed massive code duplication 2024-02-02 22:36:56 +02:00
Volker Ruppert
6aec66d210 Cirrus: Fixed tile x/y calculation for double scan and double width. 2024-02-02 20:49:38 +01:00
Volker Ruppert
ca482ab98e Cirrus: Handle double scan and double width at banked memory writes.
TODO: Cursor still looks incorrect with modeset test program.
2024-02-02 19:00:15 +01:00
Stanislav Shwartsman
f3537f282a Legacy form of XRSTOR loads the MXCSR register from memory whenever the
RFBM[1](SSE) or RFBM[2](AVX) is set, regardless of the values of XSTATE_BV[1] and XSTATE_BV[2]
2024-02-02 08:43:36 +02:00
rofl0r
fb8fc563ab
bximage: flush stdout after asking a question (#251)
otherwise the question may not even arrive there, depending on the
implementation-defined behaviour of stdio buffering.
fixes display of questions with musl libc.
2024-02-01 22:54:31 +02:00
Shwartsman
88fb948088 updates to paging code for debugability and code duplication reduction 2024-02-01 15:15:26 +02:00
Shwartsman
3ed8639bfa some style notation to avoid errors and make code cleaner to read 2024-01-30 20:08:42 +02:00
Volker Ruppert
92eb0e12be Cirrus: Added double width support to fix up aspect ratio in double scan mode.
TODO: Hardware cursor code untested - test program doesn't use it.
2024-01-30 18:28:47 +01:00
Song Ziming
9b5c43821e
Init LDR whenever x2APIC mode is enabled (#250)
According to Intel SDM vol3 11.12.10.2 (Deriving Logical x2APIC ID from
the Local x2APIC ID), "The LDR initialization occurs whenever the x2APIC
mode is enabled".
2024-01-30 08:47:22 +02:00
Stanislav Shwartsman
e54048c163 XSAVEC/XSAVEC: don't allow 'compaction' of SSE state
this bug also prevented win10 from booting
2024-01-29 22:11:08 +02:00
Volker Ruppert
347a1bef56 Voodoo3: In double width mode also double hardware cursor width.
Improved mode reporting and fixed possible segfault caused by invalid pitch.
2024-01-29 19:33:29 +01:00
Stanislav Shwartsman
cf40e63b87 XRSTOR: correct 'format' for case compaction is not enabled 2024-01-29 19:40:21 +02:00
Stanislav Shwartsman
7aa8489b1a fixed severe XRSTOR emulation issue, prevented boot of Win10 2024-01-29 18:40:19 +02:00
Stanislav Shwartsman
6554f9b7b6 a little code optimization, no impact on correctness 2024-01-29 15:28:25 +02:00