/ kodiak

MacOS X Kodiak DP1 in a VM (Part 1)

This guide is incomplete. I haven't been able to run Kodiak in a VM yet, but I'm still trying. I will update my progress from time to time. Post image credits: Wikipedia

MacOS X Kodiak (Developer Preview 1) is the first public incarnation of OSX. Famous for it's instability nowadays it's impossible to emulate. The only way to run it is to have an original Mac from around PowerPC G3 era, and even then you have to put your system's clock before Kodiak's expiration date.

Apple's manual says Kodiak supports the following hardware:

Kodiak system requirements

Looks like a standard G3 with IDE disk, around 128MB RAM and an ethernet card.

I wanted to tackle this problem since some time and I know there are three candidate emulators to test.

I'm using Ubuntu 16.04 for all of those emulators.

PearPC

Getting it from SourceForge seems so last century, but fortunately there is a GitHub mirror.

Current version is 0.6pre, which is experimental. I know for a fact that 0.5 can't run Kodiak, but 0.6pre it's anybody's guess.

So I've got the source and built it:

$ git clone https://github.com/sebastianbiallas/pearpc
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

Judging by the build state and last GitHub activity it's not actively maintained. Not a good sign.

I'm also using default ppccfg file that is provided as an example, just adjusting paths to disk image and CDROM file. I've created an empty disk drive image with this python script.

First run ended with video.x not being available

ppc kodiak.ppccfg
...
[IO/PROM] <Error> prom_driver_graphic: can't open video.x

It seems like video.x driver doesn't get installed with make install. No worries, we can always fix the path in ppccfg file

prom_driver_graphic = "path/to/video.x"

Second run ended with

Loading ELF...
ELF: trying to load ''
ELF PT_NOTE: Name 'PowerPC'
ELF: real-mode: true
ELF: real-base: 00000000
ELF: real-size: 00000000
ELF: virt-base: 00000000
ELF: virt-size: ffffffff
ELF: load-base: 00800000
ELF ERROR: real-mode bootup not supported.
cannot find boot file.

Changing prom_bootmethod = "auto" to "select" gives a GUI that allows choosing which partition to boot from.

PearPC boot menu

Selecting 3. partition 10 of 'cdrom0' (SecondaryLoader/Apple_Loader) gives

[CPU/CPU] execution started at 01c010d4
*** &gCPU: c1eaf0, &gJITC: c1f790
sizeof cpu: 2720
[IO/PROM] <Error> unknown interpret size 1893
interpret:  drop hex unselect-dev " /packages" find-device new-device " sl_words" device-name : open true ; : close ; 0 value outputLevel : slw_set_output_level   dup 0= if 0 stdout ! then   to outputLevel ; : slw_emit 2 outputLevel <= if emit else drop then ; : slw_cr   2 outputLevel <= if cr then ; 0 value keyboardIH 20 buffer: keyMap : slw_init_keymap   to keyboardIH   keyMap dup 20 0 fill ; : slw_update_keymap { ; dpth }   depth -> dpth   keyboardIH if     " get-key-map" keyboardIH $call-method     depth dpth - 1 = if 20 then     4 / 0 do       dup i 4 * + l@ keyMap i 4 * + tuck l@ or swap l!     loop drop   then ; 0 value spinType 0 value screenIH 0 value cursorAddr 0 value cursorX 0 value cursorY 0 value cursorW 0 value cursorH 0 value cursorStage 0 value cursorTime 0 value cursorDelay : slw_spin   screenIH 0<> cursorAddr 0<> and if     get-msecs dup cursorTime - cursorDelay >= if       to cursorTime       slw_update_keymap       spinType 0= if         curs

Anything else goes to dreaded cannot find boot file..

I've put my findings on GitHub page.

It seems like it's related to some unimplemented hack.

Fixing this might be complicated, so I've decided to try other two emulators first.