Ronald P. Regensburg wrote:With no ~/.sheepshaver_prefs file present yet (the very first time SheepShaver is started), SheepShaver will recognise a rom file in the same folder when it is named "Mac OS ROM".
Let's start by explaining why that happens -- maybe someone will fix it.
When you start SheepShaver, it checks for a ROM path preference. If the preference does not exist
, then it uses the default name of ROM or Mac OS ROM, in the current directory (or in a .sheepvm folder).
If there was no preference file, then the ROM path preference doesn't exist, so it works.
If there was no preference file, it creates a new default file. The default file does not
have a "rom" entry. So it still works.
As soon as you try use the preference editor, that's where it goes wrong. The preference editor has a bug: it will
write out a "rom" entry no matter what. If you haven't entered anything in the ROM path field, then it just writes a line with "rom" and no value.
On the next start, SheepShaver reads this entry. The "rom" preference name does exist, so it won't use the default name logic. It tries to open the empty path, which fails.
What should happen is one or more of the following:
- When no ROM path is entered, the prefs editor shouldn't write a rom path preference
- When SheepShaver requests the "rom" preference value, it should return null if the pref exists but the path is empty.
- When SheepShaver gets back the rom path preference, if it is blank it should use the default ROM name logic
This doesn't explain the NVRAM issue though. But here are some more findings:
- If it can't find the ROM file, the only thing you get in the NVRAM file are the SheepShaver defaults. (Unless you are reusing an old NVRAM file.)
- It only writes the NVRAM file once per minute, so if you start up and then quit faster than that, nothing will be written.
I think our problem is that the old ROM with old OS combination is expecting something in the NVRAM and can't handle if it isn't there. Maybe a real Mac's hardware would have initialized something Open Firmware related. The later ROM or OS puts it there.
If we knew what we were doing, we could debug it and watch it try to read the NVRAM during the old world/7.5.5 boot up, to see what it tries to go after before it crashes.