dingusppc
dingusppc copied to clipboard
BeOS?
There is currently no emulator that can emulate the PowerPC version of BeOS. If you were to get to the point this boots to MacOS, and emulates a PCI Mac with a 603 or 604 processor, it would be very cool to get BeOS running on it. BeOS booted on 7300, 8500, 9500 among others. Any chance one of those might work in the future?
In short, the chances to get BeOS emulated in dingusppc are good.
I already created a basic emulator for TNT-style machines, see https://github.com/dingusdev/dingusppc/blob/master/machines/machinetnt.cpp We even made a significant progress towards emulation of the on-board video for those Macs. Open Firmware 1.0.5 resided in a TNT ROM works well in dingusppc.
Booting to Mac OS doesn't currently work due to incomplete SCSI hard disk emulation. That's what we're currently working on. Booting to BeOS will probably require a working SCSI CD-ROM too.
We will actually get there but it will take some time.
@maximumspatium how is the progress on the hard disk emulation? I saw a branch with a lot of commits - is it anywhere near worth trying out yet?
While a basic SCSI hard disk and CD-ROM emulation has been recently added to Dingusppc the machines you'd need for BeOS don't boot yet. There are still missing parts, most notably ADB emulation responsible for user input (keyboard & mouse). I'm currently working on ADB support. It will take a couple of weeks. I'm going to try out BeOS as soon as our virtual TNT/Gazelle machines are able to boot into Mac OS.
That is great news. If you need any support let me know. I do have a known working image from an SD to IDE adapter (Action Retro used it on his youtube channel to boot BeOS) and so if that in any way helps, I can link you it. The image will mount in MacOS X and you can extract the individual partitions, so you might be able to use them even under a scsi emulation.
The Mac hfs partition is super small (~2mb) so it has a lot less going on than a regular MacOS install (based on an 8.1 Disk Tools image.) It is just there to bootstrap BeOS.
Hmmm, I'm interested with this project as currently, BeOS before R3.0 is not emulated enough. I'm also interested with this to try out Mac OS functionality. That raises the question of what exactly is happening with the support. Is it now kinda possible to boot from those CDs or are there hurdles to jump over?
Hmmm, I'm interested with this project as currently, BeOS before R3.0 is not emulated enough.
BeOS for PowerPC is not emulated at all. I don't know what the status is currently, but I think you would only be able to go back to PR1, maybe AA with this solution. Anything prior to that is problematic as there was only one release of BeOS from the DR days that supported Mac and that version is hard to come by in an installable state because the installer has expired now.
Anything prior to that is problematic as there was only one release of BeOS from the DR days that supported Mac and that version is hard to come by in an installable state because the installer has expired now.
DR8? Or the MacWorld Preview? Either way, I do think it might work if you could set the time back to when it didn't expire but that's on me, I don't really know if it's possible actually.
I tried booting to BeOS (from Mac OS 8.1 on G3) and I made it this far but I'm not sure if it's stuck or it just takes a more than 5 minutes to boot.
I tried to do these in QEMU and SheepShaver as well but they couldn't even make it to these.
Here is the log:
( 0.000s) loguru.cpp:841 INFO| Logging to 'dingusppc.log', mode: 'a', verbosity: 0
( 0.000s) main.cpp:139 INFO| Machine option was passed in: pmg3dt
( 0.008s) machinefactory.cpp:141 INFO| Initializing Power Macintosh G3 (Beige) Desktop hardware...
( 0.011s) soundserver_cubeb.cpp:75 INFO| Connected to backend: wasapi
( 0.011s) memctrlbase.cpp:297 INFO| Added mmio region 0xFE000000..0xFE00FFFF (Grackle)
( 0.011s) memctrlbase.cpp:297 INFO| Added mmio region 0xFEC00000..0xFEEFFFFF (Grackle)
( 0.012s) atabasedevice.cpp:45 INFO| ATA-HD: hard-reset triggered
( 0.012s) atabasedevice.cpp:45 INFO| ATAPI-CDROM: hard-reset triggered
( 0.012s) machinegossamer.cpp:95 INFO| Building machine Gossamer...
( 0.012s) memctrlbase.cpp:297 INFO| Added mmio region 0xFF000000..0xFF000FFF (Machine-id)
( 0.013s) memctrlbase.cpp:179 INFO| Added mem region 0xFFC00000..0xFFFFFFFF (ROM,) -> 0x0
( 0.013s) spdram.h:96 INFO| SDRAM capacity set to 256MB, I2C addr = 0x57
( 0.013s) i2c.h:57 INFO| New I2C device, address = 0x57
( 0.013s) spdram.h:96 INFO| SDRAM capacity set to 256MB, I2C addr = 0x56
( 0.013s) i2c.h:57 INFO| New I2C device, address = 0x56
( 0.013s) i2c.h:57 INFO| New I2C device, address = 0x28
( 0.013s) i2c.h:57 INFO| New I2C device, address = 0x53
( 0.014s) atahd.cpp:221 INFO| ATA-HD: total sectors 2097152
( 0.014s) atahd.cpp:263 INFO| ATA-HD: C=4096, H=16, S=32
( 0.150s) i2c.h:57 INFO| New I2C device, address = 0x45
( 0.150s) machinefactory.cpp:165 INFO| Initialization completed.
( 0.154s) memctrlbase.cpp:297 INFO| Added mmio region 0xF3000000..0xF307FFFF (mac-io/heathrow)
( 0.154s) heathrow.cpp:117 INFO| mac-io/heathrow: base address set to 0xF3000000
( 0.154s) viacuda.cpp:194 WARN| Attempted write to VIA Port A!
( 0.154s) viacuda.cpp:294 INFO| VIA SR interrupt enabled
( 0.155s) viacuda.cpp:706 INFO| Cuda: send 1 to PB0
( 2.743s) viacuda.cpp:781 WARN| Unsupported I2C device 0x55
( 2.835s) memctrlbase.cpp:179 INFO| Added mem region 0x0..0x1FFFFFFF (RAM,) -> 0x0
( 2.893s) heathrow.cpp:339 WARN| Attempted to write f0701079 to MIO:ID at 34; Address : ff80afbc
( 2.915s) atabasedevice.cpp:45 INFO| ATA-HD: soft-reset triggered
( 2.930s) atabasedevice.cpp:45 INFO| ATAPI-CDROM: soft-reset triggered
( 2.951s) viacuda.cpp:582 INFO| Cuda: autopoll started, rate: 11 ms
( 3.016s) mpc106.cpp:134 ERR| Grackle err: read attempt from non-existent PCI device 00:0c.0 @00.l
( 3.016s) mpc106.cpp:134 ERR| Grackle err: read attempt from non-existent PCI device 00:0d.0 @00.l
( 3.016s) mpc106.cpp:134 ERR| Grackle err: read attempt from non-existent PCI device 00:0e.0 @00.l
( 3.016s) mpc106.cpp:134 ERR| Grackle err: read attempt from non-existent PCI device 00:0f.0 @00.l
( 3.017s) atirage.cpp:181 INFO| ati-rage: I/O space address set to 0x00000000
( 3.029s) atirage.cpp:181 INFO| ati-rage: I/O space address set to 0x00000400
( 3.039s) atirage.cpp:838 INFO| ati-rage: primary CRT controller enabled:
( 3.039s) atirage.cpp:840 INFO| Video mode: extended
( 3.039s) atirage.cpp:841 INFO| Video width: 640 px
( 3.039s) atirage.cpp:842 INFO| Video height: 480 px
( 3.039s) atirage.cpp:670 INFO| Pixel format: 8 bpp with DAC palette
( 3.039s) atirage.cpp:844 INFO| VPLL frequency: 120.909072 MHz
( 3.039s) atirage.cpp:845 INFO| Pixel (dot) clock: 30.227268 MHz
( 3.039s) atirage.cpp:846 INFO| Refresh rate: 66.638603 Hz
( 3.353s) memctrlbase.cpp:297 INFO| Added mmio region 0x82000000..0x82DFFFFF (ati-rage)
( 3.353s) atirage.cpp:161 INFO| ati-rage: aperture[0] set to 0x82000000
( 3.396s) viacuda.cpp:194 WARN| Attempted write to VIA Port A!
( 3.397s) viacuda.cpp:194 WARN| Attempted write to VIA Port A!
( 3.397s) viacuda.cpp:294 INFO| VIA T2 interrupt enabled
( 3.402s) viacuda.cpp:294 INFO| VIA SR interrupt enabled
( 3.409s) viacuda.cpp:745 WARN| Unsupported I2C device 0x20
( 3.409s) viacuda.cpp:745 WARN| Unsupported I2C device 0x27
( 3.409s) viacuda.cpp:745 WARN| Unsupported I2C device 0x5A
( 3.409s) viacuda.cpp:745 WARN| Unsupported I2C device 0x48
( 3.409s) viacuda.cpp:745 WARN| Unsupported I2C device 0x40
( 3.410s) viacuda.cpp:745 WARN| Unsupported I2C device 0x60
( 3.410s) viacuda.cpp:781 WARN| Unsupported I2C device 0x14
( 3.410s) viacuda.cpp:745 WARN| Unsupported I2C device 0x38
( 3.410s) viacuda.cpp:745 WARN| Unsupported I2C device 0x4E
( 3.421s) viacuda.cpp:294 INFO| VIA SR interrupt enabled
( 3.421s) viacuda.cpp:294 INFO| VIA T2 interrupt enabled
( 3.704s) viacuda.cpp:690 INFO| Cuda: One Second Interrupt Mode: 3
( 3.723s) dbdma.cpp:121 ERR| mesh: Invalid key 0 in LOAD_QUAD
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fe000.l = 00000000
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdffc.l = 00000001
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff8.l = 00000002
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff4.l = 00000003
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff0.l = 00000004
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfec.l = 00000005
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe8.l = 00000006
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe4.l = 00000007
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe0.l = 00000008
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfdc.l = 00000009
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd8.l = 0000000a
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd4.l = 0000000b
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd0.l = 0000000c
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfcc.l = 0000000d
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc8.l = 0000000e
( 3.917s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc4.l = 0000000f
( 3.917s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fe000.l
( 3.917s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fdffc.l
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fe000.l = 00000000
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdffc.l = 00000001
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff8.l = 00000002
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff4.l = 00000003
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff0.l = 00000004
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfec.l = 00000005
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe8.l = 00000006
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe4.l = 00000007
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe0.l = 00000008
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfdc.l = 00000009
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd8.l = 0000000a
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd4.l = 0000000b
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd0.l = 0000000c
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfcc.l = 0000000d
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc8.l = 0000000e
( 3.918s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc4.l = 0000000f
( 3.918s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fe000.l
( 3.918s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fdffc.l
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fe000.l = 00000000
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdffc.l = 00000001
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff8.l = 00000002
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff4.l = 00000003
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff0.l = 00000004
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfec.l = 00000005
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe8.l = 00000006
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe4.l = 00000007
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe0.l = 00000008
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfdc.l = 00000009
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd8.l = 0000000a
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd4.l = 0000000b
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd0.l = 0000000c
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfcc.l = 0000000d
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc8.l = 0000000e
( 3.921s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc4.l = 0000000f
( 3.921s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fe000.l
( 3.921s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fdffc.l
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fe000.l = 00000000
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdffc.l = 00000001
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff8.l = 00000002
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff4.l = 00000003
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff0.l = 00000004
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfec.l = 00000005
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe8.l = 00000006
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe4.l = 00000007
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe0.l = 00000008
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfdc.l = 00000009
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd8.l = 0000000a
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd4.l = 0000000b
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd0.l = 0000000c
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfcc.l = 0000000d
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc8.l = 0000000e
( 3.922s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc4.l = 0000000f
( 3.922s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fe000.l
( 3.922s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fdffc.l
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fe000.l = 00000000
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdffc.l = 00000001
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff8.l = 00000002
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff4.l = 00000003
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff0.l = 00000004
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfec.l = 00000005
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe8.l = 00000006
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe4.l = 00000007
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe0.l = 00000008
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfdc.l = 00000009
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd8.l = 0000000a
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd4.l = 0000000b
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd0.l = 0000000c
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfcc.l = 0000000d
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc8.l = 0000000e
( 3.924s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc4.l = 0000000f
( 3.924s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fe000.l
( 3.924s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fdffc.l
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fe000.l = 00000000
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdffc.l = 00000001
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff8.l = 00000002
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff4.l = 00000003
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdff0.l = 00000004
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfec.l = 00000005
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe8.l = 00000006
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe4.l = 00000007
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfe0.l = 00000008
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfdc.l = 00000009
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd8.l = 0000000a
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd4.l = 0000000b
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfd0.l = 0000000c
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfcc.l = 0000000d
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc8.l = 0000000e
( 3.925s) atirage.cpp:632 WARN| ati-rage: write unmapped aperture[0] region 003fdfc4.l = 0000000f
( 3.925s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fe000.l
( 3.925s) atirage.cpp:585 WARN| ati-rage: read unmapped aperture[0] region 003fdffc.l
( 3.940s) atirage.cpp:838 INFO| ati-rage: primary CRT controller enabled:
( 3.940s) atirage.cpp:840 INFO| Video mode: extended
( 3.940s) atirage.cpp:841 INFO| Video width: 640 px
( 3.940s) atirage.cpp:842 INFO| Video height: 480 px
( 3.940s) atirage.cpp:670 INFO| Pixel format: 8 bpp with DAC palette
( 3.940s) atirage.cpp:844 INFO| VPLL frequency: 131.900800 MHz
( 3.940s) atirage.cpp:845 INFO| Pixel (dot) clock: 32.975200 MHz
( 3.940s) atirage.cpp:846 INFO| Refresh rate: 72.696655 Hz
( 4.011s) atirage.cpp:838 INFO| ati-rage: primary CRT controller enabled:
( 4.011s) atirage.cpp:840 INFO| Video mode: extended
( 4.011s) atirage.cpp:841 INFO| Video width: 640 px
( 4.011s) atirage.cpp:842 INFO| Video height: 480 px
( 4.011s) atirage.cpp:670 INFO| Pixel format: 8 bpp with DAC palette
( 4.011s) atirage.cpp:844 INFO| VPLL frequency: 181.363616 MHz
( 4.011s) atirage.cpp:845 INFO| Pixel (dot) clock: 30.227270 MHz
( 4.011s) atirage.cpp:846 INFO| Refresh rate: 66.638603 Hz
( 4.162s) viacuda.cpp:585 INFO| Cuda: autopoll stopped
( 4.256s) viacuda.cpp:582 INFO| Cuda: autopoll started, rate: 11 ms
( 4.414s) heathrow.cpp:161 WARN| Unsupported DMA channel write, offset=0xB00, val=0x80
( 4.414s) heathrow.cpp:137 WARN| Unsupported DMA channel read, offset=0xB04
( 4.424s) heathrow.cpp:161 WARN| Unsupported DMA channel write, offset=0xC00, val=0x80
( 4.424s) heathrow.cpp:137 WARN| Unsupported DMA channel read, offset=0xC04
( 4.431s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.431s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.492s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.492s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.492s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.492s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.552s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.552s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.552s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.552s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.611s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.611s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.611s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.611s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.671s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.671s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.671s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.671s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.730s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.730s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.730s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.730s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.790s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.790s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.790s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.790s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.850s) heathrow.cpp:349 WARN| write 100000 to unknown MIO register at 2c
( 4.850s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 4.867s) atabasedevice.cpp:45 INFO| ATA-HD: soft-reset triggered
( 4.875s) atahd.cpp:148 INFO| ATA-HD: PIO transfer mode set to 0x0
( 4.875s) atahd.cpp:162 WARN| ATA-HD: unsupported SET_FEATURES subcommand code 0x88
( 4.875s) atahd.cpp:162 WARN| ATA-HD: unsupported SET_FEATURES subcommand code 0x99
( 4.875s) atahd.cpp:162 WARN| ATA-HD: unsupported SET_FEATURES subcommand code 0xAA
( 4.877s) atahd.cpp:148 INFO| ATA-HD: PIO transfer mode set to 0x0
( 5.356s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.365s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.371s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.379s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.386s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.392s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.400s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.409s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.414s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.422s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.427s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.434s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.442s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.455s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 5.462s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 8.392s) viacuda.cpp:722 ERR| Cuda: unsupported pseudo command 0x21
( 8.392s) viacuda.cpp:722 ERR| Cuda: unsupported pseudo command 0x21
( 8.393s) viacuda.cpp:781 WARN| Unsupported I2C device 0x50
( 8.496s) viacuda.cpp:745 WARN| Unsupported I2C device 0x26
( 8.518s) viacuda.cpp:781 WARN| Unsupported I2C device 0x14
( 9.433s) atirage.cpp:838 INFO| ati-rage: primary CRT controller enabled:
( 9.433s) atirage.cpp:840 INFO| Video mode: extended
( 9.433s) atirage.cpp:841 INFO| Video width: 1024 px
( 9.433s) atirage.cpp:842 INFO| Video height: 768 px
( 9.433s) atirage.cpp:670 INFO| Pixel format: 8 bpp with DAC palette
( 9.433s) atirage.cpp:844 INFO| VPLL frequency: 157.066096 MHz
( 9.433s) atirage.cpp:845 INFO| Pixel (dot) clock: 78.533048 MHz
( 9.433s) atirage.cpp:846 INFO| Refresh rate: 74.821884 Hz
( 14.900s) pcibase.cpp:73 WARN| mac-io/heathrow: read unimplemented config register @28.l
( 14.900s) pcibase.cpp:73 WARN| ati-rage: read unimplemented config register @28.l
( 14.901s) viacuda.cpp:294 INFO| VIA SR interrupt enabled
( 14.901s) viacuda.cpp:294 INFO| VIA T2 interrupt enabled
( 15.086s) atabasedevice.cpp:45 INFO| ATA-HD: soft-reset triggered
( 15.104s) atabasedevice.cpp:45 INFO| ATAPI-CDROM: soft-reset triggered
( 15.123s) atahd.cpp:173 ERR| ATA-HD: unknown ATA command 0xa1
( 15.148s) atabasedevice.cpp:45 INFO| ATA-HD: soft-reset triggered
( 15.168s) atapicdrom.cpp:75 WARN| ATAPI-CDROM: doing_sector_areas reset
( 15.177s) atabasedevice.cpp:45 INFO| ATAPI-CDROM: soft-reset triggered
( 15.237s) mesh.cpp:137 WARN| MESH: write to unimplemented register at offset 0x0
( 15.237s) mesh.cpp:137 WARN| MESH: write to unimplemented register at offset 0x1
( 15.237s) mesh.cpp:175 INFO| MESH: FlushFIFO stub invoked
( 15.285s) mesh.cpp:159 INFO| MESH: BusFree stub invoked
( 92.813s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 92.819s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 92.827s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 92.834s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 92.840s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
( 92.847s) viacuda.cpp:523 WARN| Cuda transaction probably in progress
Probably need to wait until mesh
emulation is finished. Then probably more stuff after that.
@xmine64 Was this emulating a G3? BeOS will not generally boot on a G3 Mac, and I believe that is as far as it gets. If you emulate a Mac that had a 603 or 604 you'd maybe have more luck. I'm on mobile but I'll have a look when I'm back at home.
Also - try holding shift when the 3D logo appears. It will go to the boot menu. I think that should work.
Was this emulating a G3? BeOS will not generally boot on a G3 Mac
Yeah, I forgot about that
try holding shift when the 3D logo appears. It will go to the boot menu. I think that should work.
Nothing happened on G3
I tried 604 machines, pm9600 doesn't have a display (ig it's not implemented yet), and others crash when I try to initialize hard disk, with this error message:
dbdma.cpp:298 FATL| ABORT: curio_scsi: non-DWORD read from a DMA channel not supported
Also 8600 has 2 display outputs, and one is always black.
For pm9600, you need to attach a graphics card.
pci_A1=AtiMach64Gx
For pm8600, enable the second display by using one or both of these:
--has_svideo=1
--has_composite=1
Initialize hard disks outside of dingusppc using Disk Jockey. https://68kmla.org/bb/index.php?threads/disk-jockey-a-simple-hd-image-creator.41075/
For sure dingusppc should not abort when doing non-DWORD read from a DMA channel, so that should be fixed. I don't think it happens in my fork.
For pm9600, you need to attach a graphics card.
Oh I didn't know this, thanks! I tried pci_GPU though but it didn't work.
enable the second display by using one or both of these
Oh I thought it's a bug
Initialize hard disks outside of dingusppc using Disk Jockey.
The disk is already initialized but for some reason it's not detected. I thought maybe it's because I initialized it with a newer version of Mac OS.
For pm9600, you need to attach a graphics card.
Oh I didn't know this, thanks! I tried pci_GPU though but it didn't work.
The 9600 should work, but possibly not the Kansas version. BeOS was known not to like it.
Initialize hard disks outside of dingusppc using Disk Jockey.
I have an image shared on Dropbox. It is R5 and has a cut down Mac system that only boots the disk tools then launched BeOS. It was from and IDE drive though so no idea how well it would work with SCSI.
The disk is already initialized but for some reason it's not detected. I thought maybe it's because I initialized it with a newer version of Mac OS.
I have never tried a disk initialised by an OS that doesn't run on a BeOS capable Mac, but pretty sure it can boot from a MacOS 9 partitioned drive, so long as the boot OS is 7.5 - 8.1 (possibly 8.5 but it is a bit iffy).
I never tried booting from a drive formatted by a third party tool though.
BeOS should be able to detect the hardware. The boot loader does do some boot strapping from the device tree MacOS loads. That might need to be updated to make it work. I am going to be doing some research on this so I will report back when I know more.
Are the serial ports emulated and if so can we get the output logged anywhere? It is possible to get BeOS to produce logs when it boots. For PowerPC this is only ever over the serial port, I believe the modem port. You can force it always on with config, but F1 (or possibly del) should start it once the 3D logo is showing fully rendered. It might help in diagnosing what BeOS is doing.
Multiple display support needs some work. I have connected up to 14 displays to dingusppc which works in classic MacOS (had to add code to connect the extra PCI bridges and graphics controllers). A graphics controller that doesn't have a display connected probably doesn't need to have a window, but you want at least one window to appear to do GUI stuff (if controls are added to the window some day in the future). One might want to hide and unhide windows or close them temporarily. One might want to be able to connect a display after booting the guest, since some guest OSes do support hot plugging displays.
pci_GPU
is for replacing the built-in graphics controller of the Beige G3.
BeOS can work on Kansas. dingusppc doesn't yet support Kansas. https://forums.macrumors.com/threads/powersurging-to-mac-os-x-10-5-8-power-macintosh-9600-fun.2144305/post-33258119
The modem port can be accessed using a Unix socket using this parameter:
--serial_backend=socket
which you can access in another Terminal window like this:
socat UNIX-CLIENT:dingussocket -,cs8,parenb=0,echo=0,icanon=0,isig=0,icrnl=0
This socket backend doesn't work for Windows; use --serial_backend=stdio
in that case.
This socket backend is used mostly for accessing Open Firmware. It allows input/output in a separate window than the one used for dingusppc so that the stdout logging of dingusppc doesn't get mixed with the output from Open Firmware (or from OS X booting).
@joevt thanks for all the info. Super helpful!
Tsunami was always the best supported hardware in my opinion - is that on the cards?
Tsunami was always the best supported hardware in my opinion - is that on the cards?
Tsunami (pm9500) is mostly done already, same as Nitro (pm8500). They are based on Tnt (pm7500) in dingusppc. Would Power Surge be a better name for all these than Tnt ?