Below you will find a short clip showing what MacintoshPi can do:

The project consists of the following auto-compiling and installing bash scripts for Raspberry Pi:

Mac OS images are pre-configured to support online connections.

Detailed descriptions of MacintoshPi project components

Basilisk II (Mac OS 7 and 8) and SheepShaver (Mac OS 9)

The script downloads all files required to start Mac OS - ROMs, system images, and creates configuration files. On installation, directory /home/pi/downloads will be visible on the Apple desktop as a Unix directory - files can be copied both ways between those two resources, but applications cannot be launched directly from that directory. In addition, the so-called NetDriver is also compiled, which allows full online access from virtualised Apple systems. Up till now, Mac OS 9 in the full screen mode (without the unnecessary window manager) has not been available for Raspberry Pi. This is perhaps the first such implementation which allows using Mac OS 9 and SDL2 in the full screen mode with sound and online connection - even on the small Raspberry Pi 2W. Each system must be launched with the appropriate command: mac os7mac os8 or mac os9. The additional file .img or .dsk can be added to the launched system by adding the image file name at the end of the command which invokes the system concerned, e.g.

mac os9 demo.img

Basilisk II and SheepShaver emulators can be stopped by using the key combination CTRL+SHIFT+ESC. This causes an immediate return to the command line. The COMMAND key is acquired with the left ALT key in Mac OS 9, and with the CTRL key in Mac OS 7 and Mac OS 8. For more information about those emulators visit the BasiliskII and SheepShaver websites.

VICE

The script that compiles the VICE Commodore emulator which can be used for connecting an emulated Commodore with modern BBSs. It allows downloading files which can be used on the same Raspberry Pi device, but on the fast BMC64 emulator installed in dual boot. On installing the BMC64 partition to rootfs, data can be downloaded from a BBS directly to the virtual drive that will then be available automatically in BMC64. The VICE emulator for Raspberry Pi is very slow, which is why it is recommended to use the BMC64 emulator for more demanding applications. For more information about the VICE emulator visit the project's website.

MacintoshPi Virtual Modem

A script that compiles and installs a virtual modem in Raspberry Pi OS, allowing connection with modern-day telnet BBSs using any terminal software launched on the aforementioned Basilisk IISheepShaver and VICE emulators, and on Raspberry Pi OS itself. The MacintoshPi Virtual Modem is controlled by systemd and uses the tpcser software which, through the tty0tty project, writes to virtual device /dev/tnt0. The data can be read from another virtual device /dev/tnt1, which thus becomes a virtual serial port in the system.

The modem must be started using the following command:

sudo systemctl start vmodem

It can be reset or paused with the standard systemd commands:

sudo systemctl stop vmodem

sudo systemctl reset vmodem

The virtual modem can also be left running permanently in the system using the following command:

sudo systemctl enable --now vmodem

Speed (bps) change options can be set in the configuration file as per example entries provided with it:

/etc/vmodem.conf

To connect with a telnet BBS, just run the following command on terminal application:

ATDT telnet_url:port

For example:

ATDT borderlinebbs.dyndns.org:6400

The virtual modem cooperates with the VICE Commodore 64 emulator, but only with a version launched with the x64sc file.

Modem speeds depending on emulation

SystemMaximum speed bps
Commodore / VICE2400
Mac OS 7-8 / BasiliskII28800
Mac OS 9 / SheepShaver28800
Raspberry Pi OS38400

Configuring a virtual modem

CDEmu

A script which compiles the CDEmu CD/DVD emulator, allowing mounting CD and DVD images in isotoastcue/binmds/mdf and many other formats. The application is similar to Daemon Tools for Windows and runs with BasiliskII and SheepShaver as well as on Raspberry Pi OS. It allows you to create an image of an old CD-ROM, copy it to Raspberry Pi and install software from it in an Apple system emulated on Raspberry Pi. It is no longer necessary to copy .toast files to the disk image or mount them with software for Mac OS - you can now unpack a .sit file under Raspberry Pi OS using the unar command, and then mount the unpacked .toast file also under Raspberry Pi OS using the cdload command, and use the CD image on any Mac OS as you would from a regular CD-ROM. Audio CDs launched in CDEmu run correctly in Raspberry Pi OS both in the graphic and text mode, but sound does not work in the Basilisk II or SheepShaver emulators. For more information about CDEmu visit the project's website.

A CD image can be easiest mounted using the command:

cdload image.toast

The CD will be available in the virtual device:

/dev/sr0

The image can be unloaded from the virtual device using the command:

cdunload

MacintoshPi Launcher

The maximum emulator performance is achieved in the native resolution of the emulated system, i.e. it is recommended that Raspberry Pi should start in e.g. 640x480 resolution if we want to launch Mac OS in 640x480 resolution on it.

The launcher's task is to launch a given version of Mac OS, and if one is already running with appropriate parameters, then to overwrite config.txt and any other system files with the appropriate screen resolution and position assigned to a specific system or any other defined application, and then to launch the emulator or application right after a system restart, this time in the new resolution.

The name of the directory with the data with which the system is to be overwritten is identical as the name of the parameter following the mac command, e.g. mac os8-480 will restart Raspberry Pi OS in 640x480 resolution, and then launch Mac OS 8 also in that resolution, but the mac os8 command will simply launch Mac OS 8 in the most recently selected resolution.

Various startup chimes are played at the launch of each system - depending on the selected resolution: Macintosh 128K, Macintosh Classic II, Macintosh Color Classic, Macintosh Performa 520, Power Macintosh 550, Power Macintosh G3 sounds.

The Launcher allows also .img or .dsk files to be added to Mac OS using e.g. mac os7 file.img - then the Mac OS concerned will be launched and the image content will appear on the desktop as an additional drive.

SyncTERM

It is currently the best application for connecting with modern-day BBSs using the telnet protocol. It is compiled with options which use the SDL graphic library, thanks to which it uses a wide selection of appropriately adapted fonts in the graphic mode rather than system fonts. Again, SyncTERM does not require X.org to run, and the program itself launches in the full screen mode by default.

Raspberry Pi OS / BMC64 dual-boot

Information about the possibility to launch Raspberry Pi OS in dual boot, along with BMC64, the fast Commodore emulator, is contained in a separate README dual-boot.

About my Macintosh Classic II

My version of MacintoshPi is driven by Raspberry Pi 3B+. I bought my Macintosh Classic II case on eBay - it was completely yellow, but I restored it to the factory condition by means of 18% hydrogen peroxide and appropriate light exposure. Its LCD IPS 10.1’’ 1024x600px HDMI Waveshare 11870 screen is turned 180°, so that the wiring does not interfere with the upper Macintosh frame. I filled up the space between the flat screen and what was left of the CRT shape with a 3D printout designed by the authors of the 2GuysTek YouTube channel. The Waveshare screen is a bit too wide, but appropriate operation of the config.txt file allows software rotation and precise definition of the displayed screen image for each system or application (after a restart). The screen is also too low, which is why I filled up the void with black cardstock, and so those elements are practically indistinguishable (they look like the black background of the frame surrounding the screen). However, I recommend using a different, slightly larger screen, and then use software to reduce the screen image displayed and establish its appropriate position. The keyboard and mouse are Logiteh MK295 Silent Wireless Combo - they only slightly similar in style to peripheral devices supplied back in the day, but they are also wireless and use a single bluetooth dongle. I added two speakers connected to a Raspberry Pi 3B+ analogue audio/jack input and to a splitter. I integrated all those elements inside the Apple Macintosh Classic II case.

About this Project

I've been working on the topic of Apple computers emulation for about five years now (because I really like and appreciate Apple retro systems), and the topic is quite complex: problems with building the correct images, with configuring system images for Internet support, with the appropriate configs for emulators, with the correct options for compiling emulators and (separately) SDL2 (because, of course, SDL2 from a package won't work in emulation), with performance, with the correct compilation of NetDriver, with versions of libraries (because they have to be legacy), with minimizing mouse movement delay, problems with sound, etc. etc. Of course, I'm talking about the problems that beginners will encounter, after which they will get discouraged and throw these emulators out. Since I solved all these problems on my Raspberry Pi, I decided to make this solution available to Everyone, so that you can just run one script and get all three systems in one package without any effort - and that's what this little project is.

https://github.com/jaromaz/MacintoshPi

https://jm.iq.pl/MacintoshPi