dingusppc icon indicating copy to clipboard operation
dingusppc copied to clipboard

BeOS?

Open memsom opened this issue 2 years ago • 23 comments

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?

memsom avatar Oct 14 '22 12:10 memsom

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 avatar Oct 15 '22 01:10 maximumspatium

@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?

memsom avatar Jan 18 '23 20:01 memsom

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.

maximumspatium avatar Jan 19 '23 10:01 maximumspatium

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.

memsom avatar Jan 23 '23 08:01 memsom

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?

Lucas-mother3 avatar Nov 23 '23 15:11 Lucas-mother3

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.

memsom avatar Nov 23 '23 19:11 memsom

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.

Lucas-mother3 avatar Nov 24 '23 01:11 Lucas-mother3

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.

image

image

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

xmine64 avatar Jul 13 '24 10:07 xmine64

Probably need to wait until mesh emulation is finished. Then probably more stuff after that.

joevt avatar Jul 13 '24 12:07 joevt

@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.

memsom avatar Jul 13 '24 13:07 memsom

Also - try holding shift when the 3D logo appears. It will go to the boot menu. I think that should work.

memsom avatar Jul 13 '24 13:07 memsom

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.

xmine64 avatar Jul 13 '24 22:07 xmine64

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.

joevt avatar Jul 14 '24 01:07 joevt

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.

xmine64 avatar Jul 14 '24 06:07 xmine64

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.

memsom avatar Jul 14 '24 12:07 memsom

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.

memsom avatar Jul 14 '24 21:07 memsom

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 avatar Jul 15 '24 01:07 joevt

@joevt thanks for all the info. Super helpful!

Tsunami was always the best supported hardware in my opinion - is that on the cards?

memsom avatar Jul 15 '24 07:07 memsom

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 ?

joevt avatar Jul 15 '24 09:07 joevt