Closed SammysHP closed 4 years ago
Thank you for this report. I confirm the issue with versions 1.0/1.1/1.2/1.3. And only with port 2 not port 0 or 1.
I'm seeing this same issue with 48GX on 1.3. Is this a separate issue for the 48GX calculator or is it the same as above?
48SX and 48GX use an external file (like "shared.bin") to save the port2 (128KB). The 48GX can use an external file up to 2MB (4MB in theory), so you could have a lot of ports (2, 3, 4, etc...) each with 128KB. I'm not able to see your issue with the 48GX. It seems to work fine for me.
You must select a "Port 2 File", switch on "Port 2 is Plugged" and "Port 2 is Writable" in the settings. Those settings are a little bit different from its Windows counterpart. You have to explicitly set it writable because in Windows, this "shared.bin" is writable if this file is not read only on the file system! You can find or create this "shared.bin" file in the former Emu48 for Windows. If it does not work for you "Lathe26", there is certainly a bug and I'd like to know a reproducible scenario and your Android version.
Port 2 is very different between HP48 and HP49/50!
For the port 2 issue with the HP49/50, I have an explanation. By default, in Emu48 for Windows with the HP49/50, the "HKEY_CURRENT_USER\Software\Emu48\ROM[Writeable]=1", which allows to write the port2 (128KB) in the ROM! Because in Android, it is not possible to write in the embedded ROM, we have the same behavior as under Windows with "HKEY_CURRENT_USER\Software\Emu48\ROM[Writeable]=0". The port 2 is well saved in the state file "*.e49", but once this state file is reloaded, this causes a warmstart and the port 2 is never loaded.
So, I do not have a quick resolution for the issue because it is the normal behavior in Emu48 for Windows!
48SX and 48GX use an external file (like "shared.bin") to save the port2 (128KB). The 48GX can use an external file up to 2MB (4MB in theory), so you could have a lot of ports (2, 3, 4, etc...) each with 128KB. I'm not able to see your issue with the 48GX. It seems to work fine for me.
You must select a "Port 2 File", switch on "Port 2 is Plugged" and "Port 2 is Writable" in the settings. Those settings are a little bit different from its Windows counterpart. You have to explicitly set it writable because in Windows, this "shared.bin" is writable if this file is not read only on the file system! You can find or create this "shared.bin" file in the former Emu48 for Windows. If it does not work for you "Lathe26", there is certainly a bug and I'd like to know a reproducible scenario and your Android version.
So users have to create a shared.bin file on another operating system with separate software? The UI didn't give feedback that this is required.
It would be very useful for users to have the app also be able to just create a file for Port2 so that a 2nd computer isn't necessary. Ideally, users should be able to pick a specific size (powers of 2 from 128KB to 4MB). This way, they can just using Port 2 and begin storing things in there.
Just for comparison, this is a feature that Droid48 already has. Overall, I am really liking Emu48 and it seems to have surpassed Droid48 in most other areas.
Lathe26, I add your idea in the TODO list. Thanks
I also have this bug about Port 2 in 49/49+/50. You're right about the content of the flash being stored in the ROM file itself instead of the state file (.e49). One suggestion (already made by mail but I repeat here for completeness) would be to store the ROM file in a separate flash file alongside the state file (like a .e49.flash file for example) which would be used in place of the default ROM file when loading the state file. The advantage is that it would keep the compatibility with emu48 state files, although this would mean some changes in the emu48 source code too. Or maybe this fix might be submitted to the original emu48 authors? :-)
For the next release, I already added a new experimental entry in the menu "Manage Flash ROM (HP49)..." which allows to create a new flash (ROM) file, and to load it. This is persistent in the state file which means that this flash ROM file is loaded in replacement of the normal ROM.
I assume the usual way of setting things up (copy ROM and KML into "userspace", select directory) stays the same? What about the limitation that it is only saved when switching the state file?
The previous behavior should still work. I have to check. The new behavior will allow to create a new FlashROM file (copy of the ROM from the KML script, not from memory) that you can save in the filesystem. And then, you can load it (in read/write mode). But it is a lot more convenient now. The URL of this file is saved with the state file. In the menu, when we Save / SaveAs / Close or quit, this Flash ROM file is saved too! Once the FlashROM is loaded, it is not possible to close the calculator without saving it, it always saves this FlashROM. I'm still testing it, and I think that I will make an official release soon. I hope that it is not too buggy. If a FlashROM has been created, it is shown in the top of the menu beside the state file name. In future release, I will try to improve the UI...
The behavior is now in the version 2.0. I should probably close this GitHub issue now.
That's fine with me. Maybe not as comfortable as the 48 port 2 file, but mostly limited by emu48.
When emulating a 50g with 1.3 I'm not able to store something in port 2. Once I store something in port 2 and restart emu48 (even with explicit save state), the emulated calculator will perform a warmstart and everything in port 2 is lost (except for the default equation library and periodic table).