On Nov 14, 2012, at 4:35 AM, Mark Cave-Ayland wrote:

On 14/11/12 02:39, Programmingkid wrote:

It is probably a lot of stuff. The get-key-map word is one of them. I'm going to have to put bootx under the microscope to see what else is the problem.

Well may I make a suggestion? At the moment, our ability to help is limited because you are the only person with a copy of OS X.

It would make more sense rather than simply stating "I need to do X, Y and Z" on the mailing list, that you post sections of log file to the mailing list so that people who know more about Open Firmware can make a better judgment as to what is the best way forward.

In particular, I'd expect you to be posting sections of log file with CIF debugging enabled so you can see exactly what Forth is being executed and whether or not it is failing.

The other alternative is for someone to send me a copy of OS X bought from Ebay or similar...

This will help you: 

http://www.ebay.com/itm/Apple-Mac-OS-X-Jaguar-Version-10-2-Install-Discs-Mac-OS-X-Developer-Tools-Disc-/170940103365?pt=US_Operating_Systems_Software&hash=item27ccd2fac5


Here is the debug output from enabling DEBUG_CIF:

0 > boot cd:,\\:tbxi >> finddevice("/openprom") = 0xfff48f3c
>> getprop(0xfff48f3c, "model", 0x0565f68c, 255) = 15
>> 0x0565f68c  4f 70 65 6e 46 69 72 6d 77 61 72 65 20 33 00 __  OpenFirmware 3.
>> peer(0x00000000) = 0xfff48d7c
>> getprop(0xfff48d7c, "#address-cells", 0x056579d0, 4) = 4
>> 0x056579d0  00 00 00 01 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> peer(0x00000000) = 0xfff48d7c
>> getprop(0xfff48d7c, "#size-cells", 0x056579d4, 4) = 4
>> 0x056579d4  00 00 00 01 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> of_client_interface: interpret 05616674
>> interpret  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 screenIH 0 value cursorAddr 0 value cursorX 0 value cursorY 0 value cursorW 0 value cursorH 0 value cursorFrames 0 value cursorPixelSize 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       cursorStage 1+ cursorFrames mod dup to cursorStage handle_calls return: 00000000 1fc5b2f0
>> finddevice("/options") = 0xfff490e4
>> finddevice("/chosen") = 0xfff4915c
>> of_client_interface: interpret 056133e4
>> interpret  dev /chosen new-device " memory-map" device-name active-package device-end ([1] -- [2])
>> handle_calls return: 00000000 fff56864
>> getprop(0xfff4915c, "mmu", 0x056579ec, 4) = 4
>> 0x056579ec  1f c5 a8 2c __ __ __ __ __ __ __ __ __ __ __ __  .Ũ,
>> getprop(0xfff4915c, "memory", 0x056579f0, 4) = 4
>> 0x056579f0  1f c5 ae 58 __ __ __ __ __ __ __ __ __ __ __ __  .ŮX
>> peer(0x00000000) = 0xfff48d7c
>> of_client_interface: interpret 05616db8 fff48d7c 0000000a 056131d4
>> interpret get-package-property if 0 0 then ([4] -- [3])
>> handle_calls return: 00000000 00000019 fff55b44
>> getprop(0xfff4915c, "stdout", 0x056579f4, 4) = 4
>> 0x056579f4  1f c5 af 5c __ __ __ __ __ __ __ __ __ __ __ __  .ů\
>> instance-to-package(0x1fc5af5c) = 0xfff555e4
>> getprop(0xfff4915c, "stdin", 0x056579f8, 4) = 4
>> 0x056579f8  1f c5 b0 64 __ __ __ __ __ __ __ __ __ __ __ __  .Űd
>> instance-to-package(0x1fc5b064) = 0xfff555e4
>> getprop(0xfff555e4, "name", 0x0565f81c, 31) = 5
>> 0x0565f81c  63 68 2d 62 00 __ __ __ __ __ __ __ __ __ __ __  ch-b.
>> open("keyboard") = 0x00000000
>> open("kbd") = 0x00000000
>> of_client_interface: call-method 05616d78 1fc5b2f0 00000000
>> call-method slw_init_keymap ([3] -- [2])
>> handle_calls return: 00000000 fff5632c
>> of_client_interface: call-method 05616d88 1fc5b2f0
>> call-method slw_update_keymap ([2] -- [1])
>> handle_calls return: 00000000
>> getprop(0xfff490e4, "security-mode", 0x0565f83c, 32) = -1
>> of_client_interface: call-method 05616d60 1fc5b2f0 00000000
>> call-method slw_set_output_level ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c70 1fc5b2f0
>> call-method slw_cr ([2] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c70 1fc5b2f0
>> call-method slw_cr ([2] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 0000004d
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000061
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000063
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000020
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 0000004f
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000053
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000020
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000058
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000020
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 0000004c
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 0000006f
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000061
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000064
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000065
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c78 1fc5b2f0 00000072
>> call-method slw_emit ([3] -- [1])
>> handle_calls return: 00000000
>> of_client_interface: call-method 05613c70 1fc5b2f0
>> call-method slw_cr ([2] -- [1])
>> handle_calls return: 00000000
>> claim(0x05000000, 4194304, 0) = 0x05000000
>> claim(0x05400000, 2097152, 0) = 0x05400000
>> claim(0x04000000, 16777216, 0) = 0x04000000
>> claim(0x00004000, 67092480, 0) = 0x00004000


The first thing that bothers me is this: 

>> open("keyboard") = 0x00000000
>> open("kbd") = 0x00000000

Bootx can't open the keyboard node and call any of its methods. This is something to fix. I would fix it myself, but I couldn't find any documentation on how the DECLARE_NODE() method works. 

On a side note, the partition selection patch I sent you appears to be ready to commit. It is the patch that has made the most difference.  Because of it, the Mac OS actually beings to start booting when I use the boot word.