retro-b5500 emulator disk corruption in Safari for Mac OS X Catalina

15 views
Skip to first unread message

Paul Kimpel

unread,
Dec 11, 2019, 2:21:55 PM12/11/19
to retro-B5500
I recently upgraded my MacBook from OS X Mojave to Catalina (10.15). Just to check it out, I opened Safari (13.0.3) and tried to run the retro-b5500 emulator from my hosting site, http://www.phkimpel.us. The emulator would not successfully initialize.

Diving in with the Safari debugger, I quickly found that the emulator was throwing a fault when attempting to load the system configuration from its "retro-B5500-Config" IndexedDb data base. Digging deeper, it appears that all of the integer primary keys in the data base were being interpreted as Javascript Date() objects. The same thing was true in the IndexedDb instance for the emulated disk drives. I couldn't do anything with the emulator -- not even open the configuration window. With the primary keys being interpreted as the wrong type, the emulator was unable to locate anything in the data bases.

Has anyone else seen this behavior? If so, I'd like to know about it. I've only seen this on the Mac with the latest version of Safari. I suspect that either the metadata for my emulator's data bases got munged, or there's some incompatibility between Safari 13.0.3 and the version I was using a few months ago.

I didn't have anything worth saving in the disks on that instance of the emulator, so deleted the IndexedDb data bases and rebuilt them as if this was an initial install of the emulator on that laptop. There are two utility scripts on the hosting site that can be used to delete the IndexedDb instances:
Both scripts must be run from the same origin as the emulator, so if you have set up your own web server, you'll need to download these two scripts and run them from your server. Both prompt you to confirm you want to delete the data bases, but once deleted, there's no going back. The emulator should be "powered off" while you run these scripts.

After deleting the corrupted data bases, just reload the emulator into your browser, initialize a new configuration, and cold-start the system as described in the Getting Started wiki page. Once I did this, the emulator works just fine in the latest version of Safari.
Reply all
Reply to author
Forward
0 new messages