qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Laurent Vivier <laurent@vivier.eu>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, qemu-devel@nongnu.org
Subject: Re: [PATCH v4 00/20] q800: add support for booting MacOS Classic - part 2
Date: Fri, 6 Oct 2023 13:04:37 +0200	[thread overview]
Message-ID: <db65e8f3-b3d0-2edc-c0c1-b92cad7852ff@vivier.eu> (raw)
In-Reply-To: <20231004083806.757242-1-mark.cave-ayland@ilande.co.uk>

Le 04/10/2023 à 10:37, Mark Cave-Ayland a écrit :
> This series contains the remaining patches needed to allow QEMU's q800
> machine to boot MacOS Classic when used in conjunction with a real
> Quadra 800 ROM image. In fact with this series applied it is possible
> to boot all of the following OSs:
> 
>    - MacOS 7.1 - 8.1, with or without virtual memory enabled
>    - A/UX 3.0.1
>    - NetBSD 9.3
>    - Linux (via EMILE)
> 
> If you are ready to experience some 90s nostalgia then all you need is
> to grab yourself a copy of the Quadra 800 ROM (checksum 0xf1acad13) and a
> suitable install ISO as follows:
> 
>    # Prepare a PRAM image
>    $ qemu-img create -f raw pram.img 256b
> 
>    # Launch QEMU with blank disk and install CDROM
>    $ ./qemu-system-m68k \
>        -M q800 \
>        -m 128 \
>        -bios Quadra800.rom \
>        -drive file=pram.img,format=raw,if=mtd \
>        -drive file=disk.img,media=disk,format=raw,if=none,id=hd \
>        -device scsi-hd,scsi-id=0,drive=hd \
>        -drive file=cdrom.iso,media=cdrom,if=none,id=cd \
>        -device scsi-cd,scsi-id=3,drive=cd
> 
> And off you go! For more in-depth information about the installation process
> I highly recommend the installation guide over at emaculation.com [1].
> Compatibility is generally very good, and I'm pleased to report it is possible
> to run one of the most popular productivity apps from the 90s [2].
> 
> I'd like to add a big thank you to all the people who have helped me work on
> this series, including testing on real hardware, answering questions about
> MacOS Classic internals and helping to diagnose and fix bugs in the 68k
> emulation. In particular thanks go to Laurent Vivier, Finn Thain, Howard
> Spoelstra, Volker Rümelin, Richard Henderson, Martin Husemann, Rin Okuyama,
> Elliot Nunn, and SolraBizna.
> 
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> 
> [1] https://www.emaculation.com/doku.php/qemu
> [2] https://www.youtube.com/watch?v=yI21gURQ1Ew
> 
> 
> v4:
> - Rebase onto master
> - Add R-B tag from Zoltan to patch 5
> - Adjust AUD_register_card() and add machine audiodev property for ASC to reflect Paolo's
>    recent audiodev changes
> 
> v3:
> - Rebase onto master
> - Add R-B tags from Laurent
> - Squash fixes from Volker into patch 7 ("audio: add Apple Sound Chip (ASC) emulation")
> - Change iwmregs from uint16_t to uint8_t in patch 12 ("swim: split into separate IWM
>    and ISM register blocks")
> 
> v2:
> - Rebase onto master
> - Add R-B tags from Phil and Laurent
> - Improve ASC logic for generating interrupts when FIFO underflow occurs
> - Rework ASC silence generation logic similar to Volker's original proposal
> - Update A/UX timer calibration hack to reflect the change of accesses now that
>    #360 is resolved
> 
> 
> Mark Cave-Ayland (20):
>    q800-glue.c: convert to Resettable interface
>    q800: add djMEMC memory controller
>    q800: add machine id register
>    q800: implement additional machine id bits on VIA1 port A
>    q800: add IOSB subsystem
>    q800: allow accesses to RAM area even if less memory is available
>    audio: add Apple Sound Chip (ASC) emulation
>    asc: generate silence if FIFO empty but engine still running
>    q800: add Apple Sound Chip (ASC) audio to machine
>    q800: add easc bool machine class property to switch between ASC and
>      EASC
>    swim: add trace events for IWM and ISM registers
>    swim: split into separate IWM and ISM register blocks
>    swim: update IWM/ISM register block decoding
>    mac_via: work around underflow in TimeDBRA timing loop in SETUPTIMEK
>    mac_via: workaround NetBSD ADB bus enumeration issue
>    mac_via: implement ADB_STATE_IDLE state if shift register in input
>      mode
>    mac_via: always clear ADB interrupt when switching to A/UX mode
>    q800: add ESCC alias at 0xc000
>    q800: add alias for MacOS toolbox ROM at 0x40000000
>    mac_via: extend timer calibration hack to work with A/UX
> 
>   MAINTAINERS                 |   6 +
>   hw/audio/Kconfig            |   3 +
>   hw/audio/asc.c              | 727 ++++++++++++++++++++++++++++++++++++
>   hw/audio/meson.build        |   1 +
>   hw/audio/trace-events       |  10 +
>   hw/block/swim.c             | 261 ++++++++-----
>   hw/block/trace-events       |   8 +
>   hw/m68k/Kconfig             |   3 +
>   hw/m68k/q800-glue.c         |  18 +-
>   hw/m68k/q800.c              | 138 ++++++-
>   hw/misc/Kconfig             |   6 +
>   hw/misc/djmemc.c            | 135 +++++++
>   hw/misc/iosb.c              | 133 +++++++
>   hw/misc/mac_via.c           | 234 +++++++++++-
>   hw/misc/meson.build         |   2 +
>   hw/misc/trace-events        |  10 +
>   include/hw/audio/asc.h      |  86 +++++
>   include/hw/block/swim.h     |  21 +-
>   include/hw/m68k/q800-glue.h |   4 +-
>   include/hw/m68k/q800.h      |  11 +
>   include/hw/misc/djmemc.h    |  30 ++
>   include/hw/misc/iosb.h      |  25 ++
>   include/hw/misc/mac_via.h   |   3 +
>   23 files changed, 1769 insertions(+), 106 deletions(-)
>   create mode 100644 hw/audio/asc.c
>   create mode 100644 hw/misc/djmemc.c
>   create mode 100644 hw/misc/iosb.c
>   create mode 100644 include/hw/audio/asc.h
>   create mode 100644 include/hw/misc/djmemc.h
>   create mode 100644 include/hw/misc/iosb.h
> 

Applied to my q800-for-8.2 branch.

Thanks,
LAurent


      parent reply	other threads:[~2023-10-06 11:04 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-04  8:37 [PATCH v4 00/20] q800: add support for booting MacOS Classic - part 2 Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 01/20] q800-glue.c: convert to Resettable interface Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 02/20] q800: add djMEMC memory controller Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 03/20] q800: add machine id register Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 04/20] q800: implement additional machine id bits on VIA1 port A Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 05/20] q800: add IOSB subsystem Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 06/20] q800: allow accesses to RAM area even if less memory is available Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 07/20] audio: add Apple Sound Chip (ASC) emulation Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 08/20] asc: generate silence if FIFO empty but engine still running Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 09/20] q800: add Apple Sound Chip (ASC) audio to machine Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 10/20] q800: add easc bool machine class property to switch between ASC and EASC Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 11/20] swim: add trace events for IWM and ISM registers Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 12/20] swim: split into separate IWM and ISM register blocks Mark Cave-Ayland
2023-10-04  8:37 ` [PATCH v4 13/20] swim: update IWM/ISM register block decoding Mark Cave-Ayland
2023-10-04  8:38 ` [PATCH v4 14/20] mac_via: work around underflow in TimeDBRA timing loop in SETUPTIMEK Mark Cave-Ayland
2023-10-04  8:38 ` [PATCH v4 15/20] mac_via: workaround NetBSD ADB bus enumeration issue Mark Cave-Ayland
2023-10-04  8:38 ` [PATCH v4 16/20] mac_via: implement ADB_STATE_IDLE state if shift register in input mode Mark Cave-Ayland
2023-10-04  8:38 ` [PATCH v4 17/20] mac_via: always clear ADB interrupt when switching to A/UX mode Mark Cave-Ayland
2023-10-04  8:38 ` [PATCH v4 18/20] q800: add ESCC alias at 0xc000 Mark Cave-Ayland
2023-10-04  8:38 ` [PATCH v4 19/20] q800: add alias for MacOS toolbox ROM at 0x40000000 Mark Cave-Ayland
2023-10-04  8:38 ` [PATCH v4 20/20] mac_via: extend timer calibration hack to work with A/UX Mark Cave-Ayland
2023-10-06 11:04 ` Laurent Vivier [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=db65e8f3-b3d0-2edc-c0c1-b92cad7852ff@vivier.eu \
    --to=laurent@vivier.eu \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).