Le 08/10/2021 à 00:12, Mark Cave-Ayland a écrit : > This is the next set of patches to allow users to boot MacOS in QEMU's > q800 machine. > > Patches 1 to 4 are fixes for existing bugs that I discovered whilst > developing the remainder of the patchset whilst patch 5 simplifies the > registration of the framebuffer RAM. > > Patch 6 adds trace events to the framebuffer register accesses. The > framebuffer registers are not officially documented, so the macfb > device changes here are based upon reading of Linux/NetBSD source code, > using gdbstub during the MacOS toolbox ROM initialisation, and changing > the framebuffer size/depth within MacOS itself with these trace events > enabled. > > Patches 7 and 8 implement the mode sense logic documented in Apple > Technical Note HW26 "Macintosh Quadra Built-In Video" and configure the > default display type to be VGA. > > Patch 9 implements the common monitor modes used for VGA at 640x480 and > 800x600 for 1, 2, 4, 8 and 24-bit depths and also the Apple 21" color > monitor at 1152x870 with 8-bit depth. > > Patches 10 and 11 fix up errors in the 1-bit and 24-bit pixel encodings > discovered when testing these color depths in MacOS. > > Patch 12 adds a timer to implement the 60.15Hz VBL interrupt which is > required for MacOS to process mouse movements, whilst patch 13 wires the > same interrupt to a dedicated pin on VIA2 reserved for the video > interrupt on the Quadra 800. > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> > > v4: > - Rebase onto master > - Add R-B tags from Laurent > - Change %d to %u for the macfb_ctrl_* trace-events size parameter in patch 6 > > v3: > - Rebase onto master > - Add Laurent's code for displaying supported display modes as an error hint > in patch 9 > and update the patch description > - Fix typo in patch 8 description: 32-bit -> 24-bit > - Split Error API changes from patch 1 into a new patch 2 > > v2: > - Rebase onto master > - Add R-B tags from Zoltan, Philippe and Laurent > - Rework macfb_common_realize() to return a bool in patch 1 > - Add Fixes tag to patch 2 > - Use Laurent's suggested change for s->current_palette (slightly modified) > in patch 3 > - Change size trace-events parameter to unsigned int in patch 5 > - Add assert() as suggested by Philippe in patch 7 > - Move calculation of next VBL time into a separate macfb_next_vbl() function > in patch 11 > > Mark Cave-Ayland (13): > macfb: handle errors that occur during realize > macfb: update macfb.c to use the Error API best practices > macfb: fix invalid object reference in macfb_common_realize() > macfb: fix overflow of color_palette array > macfb: use memory_region_init_ram() in macfb_common_realize() for the > framebuffer > macfb: add trace events for reading and writing the control registers > macfb: implement mode sense to allow display type to be detected > macfb: add qdev property to specify display type > macfb: add common monitor modes supported by the MacOS toolbox ROM > macfb: fix up 1-bit pixel encoding > macfb: fix 24-bit RGB pixel encoding > macfb: add vertical blank interrupt > q800: wire macfb IRQ to separate video interrupt on VIA2 > > hw/display/macfb.c | 386 ++++++++++++++++++++++++++++++++++--- > hw/display/trace-events | 7 + > hw/m68k/q800.c | 23 ++- > include/hw/display/macfb.h | 43 +++++ > 4 files changed, 429 insertions(+), 30 deletions(-) >
Applied to my q800 branch, Thanks, Laurent