• Hello Guest! We're hosting a challenge to welcome vintage Intel macs to the MLA during the month of July! See this thread for more information.
  • We've made some quality of life improvements to the Trading Post. More info here.

ZuluIDE

65a

6502
I got a ZuluIDE because I had some free ATA connectors on this MDD I've been slowly assembling.

Good news, it works, I can see CDs and swap them.

Bad news, it is not visible to OpenFirmware (at least on the ATA-66 bus) and cannot be booted from.

Weird news, it works fine in OS9 except if I run Drive Setup. It will lock up the host indefinitely (and I think the ZuluIDE for a minute or so). With or without an SD card, so it's probably a fw timing problem or unexpected response.

The only error in the ZuluIDE logs I saw that seemed weird before the timeout was an unimplemented ATAPI_READ_DISC_STRUCTURE. Implementing it didn't seem to help. Toggling various config booleans also did not seem to help.

Has anyone tried one of these in a mac so far? Was it bootable? Did Disk Setup work?
 
I have no experience with ZuluIDE.

What Open Firmware version does your MDD have?

We can run some commands in Open Firmware to see what's causing problems.

Connect to Open Firmware with telnet, load and execute "Open Firmware Trace.of" from disk or paste into telnet (paste requires text pacing character rate to be reduced so that Open Firmware doesn't drop any characters).

Patch some relevant words using these commands:
Code:
dev /packages/ata-disk
patch-words
dev /packages/atapi-disk
patch-words

\ ata-3 cd
dev ide0
patch-words
dev ..
patch-words

\ ata-4
dev ultra2
patch-words
dev ..
patch-words

\ ata-6 hd
dev ultra0
patch-words
dev ..
patch-words

Then run some tests for wherever you think the ZuluIDE is connected:
Code:
\ test ata-3 master
trace-on " ide0" select-dev trace-off

\ test ata-4 master
trace-on " ultra2" select-dev trace-off

\ test ata-6 master
trace-on " ultra0" select-dev trace-off

\ test ata-3 slave
trace-on " ide1" select-dev trace-off

\ test ata-4 slave
trace-on " ultra3" select-dev trace-off

\ test ata-6 slave
trace-on " ultra1" select-dev trace-off

We'll be able to see what commands are being used to identify and open the device.

boot debugging notes at:
https://68kmla.org/bb/threads/updat...om-usb-from-the-boot-picker.48601/post-546120
 

Attachments

I got a ZuluIDE because I had some free ATA connectors on this MDD I've been slowly assembling.

Good news, it works, I can see CDs and swap them.

Bad news, it is not visible to OpenFirmware (at least on the ATA-66 bus) and cannot be booted from.
Apple's OpenFirmware implementation makes some interesting assumptions about ATA device types and which bus channel they expect to see them on. This appears to be is a hard-coded machine-side limitation, not an issue with ZuluIDE firmware.

Weird news, it works fine in OS9 except if I run Drive Setup. It will lock up the host indefinitely (and I think the ZuluIDE for a minute or so). With or without an SD card, so it's probably a fw timing problem or unexpected response.
This is a known bug we're working on addressing.
 
Apple's OpenFirmware implementation makes some interesting assumptions about ATA device types and which bus channel they expect to see them on. This appears to be is a hard-coded machine-side limitation, not an issue with ZuluIDE firmware.
I suspect a firmware problem with ZuluIDE. Output from the trace will determine what, if any, assumptions are being made by Open Firmware. If the cause of the problem is found, then we can patch ZuluIDE or Open Firmware.
 
Will try the trace @joevt and post results. @rabbitholecomputing thanks for looking! I will also try it on the usual optical bus to see if it helps. Really like the device so far, happy to run debug images or hack on it, I have a working build environment.
 
Telnet trace (it definitely should be ultra0). Looks like it's trying to speak IDE?

Code:
0 > trace-on " ultra0" select-dev trace-off [ open ff850068 6
  [] need-ata-quiesce? ff850068 6 ffffffff
  [] 1st-time-mgropen? ff850068 6 ffffffff
  [] my-max-ultra ff850068 6 0
  [ set-max-ultra ff850068 6
  ] set-max-ultra ff850068 6
  [] bus-id ff850068 6 3
  [] ata100base ff850068 6 f5004000
  [ setataaddresses ff850068 6
    [] ata100base ff850068 6 f5004000
    [] iooffset ff850068 6 f5004000 f5004000 2000
    [] dmaoffset ff850068 6 f5004000 1000
  ] setataaddresses ff850068 6
  [] ataiobase ff850068 6 f5006000
  [ >ide.data ff850068 6 f5006000
  ] >ide.data ff850068 6 f5006000
  [] openwait ff850068 6 64
  [ wait-bsy ff850068 6
    [] wait-bsy-timeouts ff850068 6 0
    [ sts@ ff850068 6 4959e ffffffff
      [] ataiobase ff850068 6 4959e ffffffff f5006000
      [ >ide.statuscommand ff850068 6 4959e ffffffff f5006000
      ] >ide.statuscommand ff850068 6 4959e ffffffff f5006070
    ] sts@ ff850068 6 4959e ffffffff 0
    [] kbsy ff850068 6 4959e ffffffff 0 80
    [ sts@ ff850068 6 4959e ffffffff
      [] ataiobase ff850068 6 4959e ffffffff f5006000
      [ >ide.statuscommand ff850068 6 4959e ffffffff f5006000
      ] >ide.statuscommand ff850068 6 4959e ffffffff f5006070
    ] sts@ ff850068 6 4959e ffffffff 0
    [] kbsy ff850068 6 4959e ffffffff 0 80
  ] wait-bsy ff850068 6
  [ set-drive-select ff850068 6 0
    [ dev! ff850068 6 0
      [] ataiobase ff850068 6 0 f5006000
      [ >ide.devicehead ff850068 6 0 f5006000
      ] >ide.devicehead ff850068 6 0 f5006060
    ] dev! ff850068 6
  ] set-drive-select ff850068 6
  [] kdevctlone ff850068 6 8
  [ dev2! ff850068 6 8
    [] ataiobase ff850068 6 8 f5006000
    [ >ide.altstatdevcnt ff850068 6 8 f5006000
    ] >ide.altstatdevcnt ff850068 6 8 f5006160
  ] dev2! ff850068 6
  [ wait-bsy ff850068 6
    [] wait-bsy-timeouts ff850068 6 0
    [ sts@ ff850068 6 495ae ffffffff
      [] ataiobase ff850068 6 495ae ffffffff f5006000
      [ >ide.statuscommand ff850068 6 495ae ffffffff f5006000
      ] >ide.statuscommand ff850068 6 495ae ffffffff f5006070
    ] sts@ ff850068 6 495ae ffffffff 8
    [] kbsy ff850068 6 495ae ffffffff 8 80
    [ sts@ ff850068 6 495ae ffffffff
      [] ataiobase ff850068 6 495ae ffffffff f5006000
      [ >ide.statuscommand ff850068 6 495ae ffffffff f5006000
      ] >ide.statuscommand ff850068 6 495ae ffffffff f5006070
    ] sts@ ff850068 6 495ae ffffffff 0
    [] kbsy ff850068 6 495ae ffffffff 0 80
  ] wait-bsy ff850068 6
  [ set-drive-select ff850068 6 1
    [] kdev ff850068 6 10
    [ dev! ff850068 6 10
      [] ataiobase ff850068 6 10 f5006000
      [ >ide.devicehead ff850068 6 10 f5006000
      ] >ide.devicehead ff850068 6 10 f5006060
    ] dev! ff850068 6
  ] set-drive-select ff850068 6
  [] kdevctlone ff850068 6 8
  [ dev2! ff850068 6 8
    [] ataiobase ff850068 6 8 f5006000
    [ >ide.altstatdevcnt ff850068 6 8 f5006000
    ] >ide.altstatdevcnt ff850068 6 8 f5006160
  ] dev2! ff850068 6
  [ identify-protocols ff850068 6
    [ wait-bsy ff850068 6
      [] wait-bsy-timeouts ff850068 6 0
      [ sts@ ff850068 6 495bf ffffffff
        [] ataiobase ff850068 6 495bf ffffffff f5006000
        [ >ide.statuscommand ff850068 6 495bf ffffffff f5006000
        ] >ide.statuscommand ff850068 6 495bf ffffffff f5006070
      ] sts@ ff850068 6 495bf ffffffff 8
      [] kbsy ff850068 6 495bf ffffffff 8 80
      [ sts@ ff850068 6 495bf ffffffff
        [] ataiobase ff850068 6 495bf ffffffff f5006000
        [ >ide.statuscommand ff850068 6 495bf ffffffff f5006000
        ] >ide.statuscommand ff850068 6 495bf ffffffff f5006070
      ] sts@ ff850068 6 495bf ffffffff 8
      [] kbsy ff850068 6 495bf ffffffff 8 80
    ] wait-bsy ff850068 6
    [ set-drive-select ff850068 6 0
      [ dev! ff850068 6 0
        [] ataiobase ff850068 6 0 f5006000
        [ >ide.devicehead ff850068 6 0 f5006000
        ] >ide.devicehead ff850068 6 0 f5006060
      ] dev! ff850068 6
    ] set-drive-select ff850068 6
    [ wait-bsy ff850068 6
      [] wait-bsy-timeouts ff850068 6 0
      [ sts@ ff850068 6 495cc ffffffff
        [] ataiobase ff850068 6 495cc ffffffff f5006000
        [ >ide.statuscommand ff850068 6 495cc ffffffff f5006000
        ] >ide.statuscommand ff850068 6 495cc ffffffff f5006070
      ] sts@ ff850068 6 495cc ffffffff 0
      [] kbsy ff850068 6 495cc ffffffff 0 80
      [ sts@ ff850068 6 495cc ffffffff
        [] ataiobase ff850068 6 495cc ffffffff f5006000
        [ >ide.statuscommand ff850068 6 495cc ffffffff f5006000
        ] >ide.statuscommand ff850068 6 495cc ffffffff f5006070
      ] sts@ ff850068 6 495cc ffffffff 0
      [] kbsy ff850068 6 495cc ffffffff 0 80
    ] wait-bsy ff850068 6
    [ wait-bsy ff850068 6
      [] wait-bsy-timeouts ff850068 6 0
      [ sts@ ff850068 6 495d5 ffffffff
        [] ataiobase ff850068 6 495d5 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 495d5 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 495d5 ffffffff f5006070
      ] sts@ ff850068 6 495d5 ffffffff 0
      [] kbsy ff850068 6 495d5 ffffffff 0 80
      [ sts@ ff850068 6 495d5 ffffffff
        [] ataiobase ff850068 6 495d5 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 495d5 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 495d5 ffffffff f5006070
      ] sts@ ff850068 6 495d5 ffffffff 0
      [] kbsy ff850068 6 495d5 ffffffff 0 80
    ] wait-bsy ff850068 6
    [ set-drive-select ff850068 6 0
      [ dev! ff850068 6 0
        [] ataiobase ff850068 6 0 f5006000
        [ >ide.devicehead ff850068 6 0 f5006000
        ] >ide.devicehead ff850068 6 0 f5006060
      ] dev! ff850068 6
    ] set-drive-select ff850068 6
    [ wait-bsy ff850068 6
      [] wait-bsy-timeouts ff850068 6 0
      [ sts@ ff850068 6 495e2 ffffffff
        [] ataiobase ff850068 6 495e2 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 495e2 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 495e2 ffffffff f5006070
      ] sts@ ff850068 6 495e2 ffffffff 0
      [] kbsy ff850068 6 495e2 ffffffff 0 80
      [ sts@ ff850068 6 495e2 ffffffff
        [] ataiobase ff850068 6 495e2 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 495e2 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 495e2 ffffffff f5006070
      ] sts@ ff850068 6 495e2 ffffffff 0
      [] kbsy ff850068 6 495e2 ffffffff 0 80
    ] wait-bsy ff850068 6
    [ chi@ ff850068 6
      [] ataiobase ff850068 6 f5006000
      [ >ide.cylinderhi ff850068 6 f5006000
      ] >ide.cylinderhi ff850068 6 f5006050
    ] chi@ ff850068 6 0
    [ clo@ ff850068 6 0
      [] ataiobase ff850068 6 0 f5006000
      [ >ide.cylinderlow ff850068 6 0 f5006000
      ] >ide.cylinderlow ff850068 6 0 f5006040
    ] clo@ ff850068 6 0 0
    [ cnt@ ff850068 6
      [] ataiobase ff850068 6 f5006000
      [ >ide.sectorcount ff850068 6 f5006000
      ] >ide.sectorcount ff850068 6 f5006020
    ] cnt@ ff850068 6 0
    [ num@ ff850068 6 0
      [] ataiobase ff850068 6 0 f5006000
      [ >ide.sectornumber ff850068 6 0 f5006000
      ] >ide.sectornumber ff850068 6 0 f5006030
    ] num@ ff850068 6 0 0
    [ sts2@ ff850068 6 0
      [] ataiobase ff850068 6 0 f5006000
      [ >ide.altstatdevcnt ff850068 6 0 f5006000
      ] >ide.altstatdevcnt ff850068 6 0 f5006160
    ] sts2@ ff850068 6 0 0
    [ wait-bsy ff850068 6 0
      [] wait-bsy-timeouts ff850068 6 0 0
      [ sts@ ff850068 6 0 495f5 ffffffff
        [] ataiobase ff850068 6 0 495f5 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 0 495f5 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 0 495f5 ffffffff f5006070
      ] sts@ ff850068 6 0 495f5 ffffffff 0
      [] kbsy ff850068 6 0 495f5 ffffffff 0 80
      [ sts@ ff850068 6 0 495f5 ffffffff
        [] ataiobase ff850068 6 0 495f5 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 0 495f5 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 0 495f5 ffffffff f5006070
      ] sts@ ff850068 6 0 495f5 ffffffff 0
      [] kbsy ff850068 6 0 495f5 ffffffff 0 80
    ] wait-bsy ff850068 6 0
    [ set-drive-select ff850068 6 0 1
      [] kdev ff850068 6 0 10
      [ dev! ff850068 6 0 10
        [] ataiobase ff850068 6 0 10 f5006000
        [ >ide.devicehead ff850068 6 0 10 f5006000
        ] >ide.devicehead ff850068 6 0 10 f5006060
      ] dev! ff850068 6 0
    ] set-drive-select ff850068 6 0
    [ wait-bsy ff850068 6 0
      [] wait-bsy-timeouts ff850068 6 0 0
      [ sts@ ff850068 6 0 49603 ffffffff
        [] ataiobase ff850068 6 0 49603 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 0 49603 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 0 49603 ffffffff f5006070
      ] sts@ ff850068 6 0 49603 ffffffff 10
      [] kbsy ff850068 6 0 49603 ffffffff 10 80
      [ sts@ ff850068 6 0 49603 ffffffff
        [] ataiobase ff850068 6 0 49603 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 0 49603 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 0 49603 ffffffff f5006070
      ] sts@ ff850068 6 0 49603 ffffffff 0
      [] kbsy ff850068 6 0 49603 ffffffff 0 80
    ] wait-bsy ff850068 6 0
    [ chi@ ff850068 6 0
      [] ataiobase ff850068 6 0 f5006000
      [ >ide.cylinderhi ff850068 6 0 f5006000
      ] >ide.cylinderhi ff850068 6 0 f5006050
    ] chi@ ff850068 6 0 0
    [ clo@ ff850068 6 0 0
      [] ataiobase ff850068 6 0 0 f5006000
      [ >ide.cylinderlow ff850068 6 0 0 f5006000
      ] >ide.cylinderlow ff850068 6 0 0 f5006040
    ] clo@ ff850068 6 0 0 0
    [ cnt@ ff850068 6 0
      [] ataiobase ff850068 6 0 f5006000
      [ >ide.sectorcount ff850068 6 0 f5006000
      ] >ide.sectorcount ff850068 6 0 f5006020
    ] cnt@ ff850068 6 0 0
    [ num@ ff850068 6 0 0
      [] ataiobase ff850068 6 0 0 f5006000
      [ >ide.sectornumber ff850068 6 0 0 f5006000
      ] >ide.sectornumber ff850068 6 0 0 f5006030
    ] num@ ff850068 6 0 0 0
    [ sts2@ ff850068 6 0 0
      [] ataiobase ff850068 6 0 0 f5006000
      [ >ide.altstatdevcnt ff850068 6 0 0 f5006000
      ] >ide.altstatdevcnt ff850068 6 0 0 f5006160
    ] sts2@ ff850068 6 0 0 0
    [ wait-bsy ff850068 6 0 0
      [] wait-bsy-timeouts ff850068 6 0 0 0
      [ sts@ ff850068 6 0 0 49618 ffffffff
        [] ataiobase ff850068 6 0 0 49618 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 0 0 49618 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 0 0 49618 ffffffff f5006070
      ] sts@ ff850068 6 0 0 49618 ffffffff 0
      [] kbsy ff850068 6 0 0 49618 ffffffff 0 80
      [ sts@ ff850068 6 0 0 49618 ffffffff
        [] ataiobase ff850068 6 0 0 49618 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 0 0 49618 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 0 0 49618 ffffffff f5006070
      ] sts@ ff850068 6 0 0 49618 ffffffff 0
      [] kbsy ff850068 6 0 0 49618 ffffffff 0 80
    ] wait-bsy ff850068 6 0 0
    [ set-drive-select ff850068 6 0 0 0
      [ dev! ff850068 6 0 0 0
        [] ataiobase ff850068 6 0 0 0 f5006000
        [ >ide.devicehead ff850068 6 0 0 0 f5006000
        ] >ide.devicehead ff850068 6 0 0 0 f5006060
      ] dev! ff850068 6 0 0
    ] set-drive-select ff850068 6 0 0
    [ wait-bsy ff850068 6 0 0
      [] wait-bsy-timeouts ff850068 6 0 0 0
      [ sts@ ff850068 6 0 0 49628 ffffffff
        [] ataiobase ff850068 6 0 0 49628 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 0 0 49628 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 0 0 49628 ffffffff f5006070
      ] sts@ ff850068 6 0 0 49628 ffffffff 0
      [] kbsy ff850068 6 0 0 49628 ffffffff 0 80
      [ sts@ ff850068 6 0 0 49628 ffffffff
        [] ataiobase ff850068 6 0 0 49628 ffffffff f5006000
        [ >ide.statuscommand ff850068 6 0 0 49628 ffffffff f5006000
        ] >ide.statuscommand ff850068 6 0 0 49628 ffffffff f5006070
      ] sts@ ff850068 6 0 0 49628 ffffffff 0
      [] kbsy ff850068 6 0 0 49628 ffffffff 0 80
    ] wait-bsy ff850068 6 0 0
    [] protocols ff850068 6 0 0 ff9c10a0
  ] identify-protocols ff850068 6
  [] protocols ff850068 6 ff9c10a0
  [ use-ata-interface ff850068 6
  ] use-ata-interface ff850068 6
] open ff850068 6 ffffffff
[ decode-unit ff850068 6 ffbde61b 1
] decode-unit ff850068 6 0
[ open ff850068 6
  [] protocols ff850068 6 ff9c10a0
  [ get-my-protocol ff850068 6
    [ get-my-protocol ff850068 6 0
      [] protocols ff850068 6 0 ff9c10a0
    ] get-my-protocol ff850068 6 0
  ] get-my-protocol ff850068 6 0
  [] kataprotocol ff850068 6 0 1
  [] katapiprotocol ff850068 6 0 2
] open ff850068 6 0
[ close ff850068 6
] close ff850068 6
[ close ff850068 6
] close ff850068 6

can't OPEN device
 ok
0 >
 
Back
Top