Post Reply 
HP-48/49/50 emulation on iOS
05-20-2020, 08:23 PM
Post: #21
RE: HP-48/49/50 emulation on iOS
Late to the game on this.

m48+ source code is on GitHub. https://github.com/wyan/m48plus Thanks to Alice Wyan for that.

We are working on a way to make this a community project. The author gave me the source code and permission to forward the project. I don't code but I want to help.

On the 48 mail list Marek Zima was reported to have submitted the app to the app store but was rejected. No idea why and no word since. That was on January 9, 2020.

Ideas here? Would love to get this app back in the app store.

HP48GX, HP42s and DM42.
Find all posts by this user
Quote this message in a reply
05-21-2020, 02:22 AM
Post: #22
RE: HP-48/49/50 emulation on iOS
Many reasons to be rejected, the most commons are calling a depreciated API or being unable to give clean UI for all the screen dimensions of the iOS devices. They also sometimes reject emulators.
Find all posts by this user
Quote this message in a reply
05-21-2020, 07:00 AM (This post was last modified: 05-21-2020 07:02 AM by Thomas Okken.)
Post: #23
RE: HP-48/49/50 emulation on iOS
When an app is rejected, they always give a reason. Was that reason not mentioned on the 48 mail list?

Bringing m48 into compliance with the latest App Store requirements shouldn't be a big deal. I have to deal with those requirements for Free42, and while it is annoying sometimes, it has never caused me serious problems.

I don't know why Markus Gonser abandoned m48 but I would guess he found that it just took up too much of his time, while not generating enough income. Or maybe he just got bored with it. But I doubt there are issues with his code that would prevent it from being brought into compliance and re-published in the App Store.
Visit this user's website Find all posts by this user
Quote this message in a reply
05-22-2020, 04:17 AM
Post: #24
RE: HP-48/49/50 emulation on iOS
I agree.

I took a look at the github repository, there might be several reasons for the app to be rejected :
- Obj C code, most of the files are copyrighted 2009, it doesn’t mean they were not updated since, but there might be a risk of calls to old APIs (as I’m not an expert I can’t see them by reading the code)
- the UI management source file doesn’t handles iPhone + or iPhone X resolutions
- the data for the AppStore is in a zip, the files inside are timestamped from 2015, and once again there is a lack of img definitions for recent iPhone models

The commit on the GitHub repository was done 16 days ago, there is no information about Apple’s answers to app submission. These informations are received by mail.
There are also no todo or log file from the compiler that would show the warnings or errors we will have to deal with to make the app compliant.

Someone should try to compile it, only a Mac is mandatory at this step.
I’ll also try, but I don’t know when.
Find all posts by this user
Quote this message in a reply
05-22-2020, 09:31 AM
Post: #25
RE: HP-48/49/50 emulation on iOS
Lack of iPhone X support is a reason for rejection. Dealing with the notch is required. The iPhone 6/7/8 screen sizes, on the other hand, don't require special action; as long as the app supports the iPhone 5/5c/5s screen, which has the same aspect ratio, the OS will scale the UI to make it fit the larger screen. (But it is better to support the 6/7/8 screen sizes anyway, to take advantage of the higher resolution and to avoid the slight blurriness caused by scaling.)

I had a bit of a struggle with iPhone X support in Free42, but that's probably because my UI logic is a bit funky. If m48 is cleaner, it'll be easier to adapt.

The other big thing is 64-bit code, but I think m48 already supports that.
Visit this user's website Find all posts by this user
Quote this message in a reply
09-24-2020, 10:06 AM
Post: #26
RE: HP-48/49/50 emulation on iOS
(05-10-2020 08:58 AM)Bruno Hall Wrote:  It turns out it's possible to copy an installed app from one iOS device to another using a tool called iMazing (https://imazing.com).
Many thanks for pointing to iMazing. I didn't notice that m48+ vanished from the App Store. So when I set up a new iPhone (first using automatic direct data transfer) I was wondering why m48+ didn't work. Only the button was there, but no download available.
Then I tried restoring from an iCloud backup, with same disappointment.

A first query on the net lead to CopyTrans, which isn't able to backup or restore apps which are not in the App Store anymore. So that program would have been rather useless for the task.

iMazing, in contrast, is able to save deprecated apps,
and the most interesting point: It can restore (or install) previously saved apps to another iDevice, even if the app isn't available in the App Store anymore!

For my taste and needs, the UI of iMazing is far more user friendly than the UI of iTunes...

And last, with the help of iMazing I was able to get m48+ reinstalled on my iPhone:-)

-- Ray
Find all posts by this user
Quote this message in a reply
09-25-2020, 06:26 PM
Post: #27
RE: HP-48/49/50 emulation on iOS
I want to add at least one thing: iMazing can also save iApps which are not in the App Store anymore. This is what CopyTrans isn't able to do.
Thankfully, I had an installed and working copy of m48+ on one of my iDevices.

Slightly OT, and maybe already addressed in one of the gazillions of articles related to the problem:
For my taste, the save & restore state functionality of m48+ is not really fully developed.
Maybe the new "owners" of the code address this at some time.

If you want to save a state, it doesn't seem to be sufficient to store the state via "Save" or "Save as",
if you didn't at least once have the flag "Automatically save on exit" set before.

If you have set that flag before trying to save a state, it will work.
After that, the latest saved state will be loaded even after an iPhone restart,
and even after you deactivate that flag.

However, I found no way to switch from one saved state to another.

I know those are high-level complaints, and I'm glad Markus made the iDevice emulator at all:-)

-- Ray
Find all posts by this user
Quote this message in a reply
09-26-2020, 11:11 AM
Post: #28
RE: HP-48/49/50 emulation on iOS
Thank you for the imazing testimony. I can buy a new phone without worry now!!

HP48GX, HP42s and DM42.
Find all posts by this user
Quote this message in a reply
09-30-2020, 11:10 PM
Post: #29
RE: HP-48/49/50 emulation on iOS
Sorry for hijacking the thread again, but I want to add some more (maybe interesting) info related to iMazing and m48+ .
As written above, iMazing can install an app on an iDevice regardless of the existence state in the App Store.

In the case of m48+ , it seems that not all data structures are restored to the iDevice automatically.
One way would be to re-create the structures and contents (ROMs, Skins, etc.) by copying the files and folders from within the file browser built into iMazing.
But the (IMHO) best and cleanest way would be as described below.

During the last few days, I tried various things related to m48+ and iMazing.

Since the full restore from a backup only works in the registered version of iMazing, I bought a license and tried restoring an iPhone from a prevously made full backup.
In iMazing you have a check box which, when activated, can use local versions of apps to restore to the device instead of d/l them from the App Store.

This didn't seem to work for m48+, which I have in my iMazing media archive.
I had to manually install m48+ from iMazing after the restore.

After some trials with manual creation of the m48+ directory tree,
I found out that it works best as follows:
First Install m48+ (through iMazing)
Immediately after that tap on the m48+ button.
It will start wanting to prepare some things (like data structures) for itself.
Let it run through.
Then you can take m48+'s offer to automatically set up a calc.

After that go to the m48+ menu by double tapping the screen.
Go to "Fetch" and grab all of the offered items:
(ROMs,Skins,Docs,MK,...) . Anyone interested in a SpeedUI 20.05 state file?

If the screen is empty after you tap Fetch, then the hosting site is offline.
Try later throughout the day.
A the time of writing this the site is offline, but it may be online a few hours later.

So go fetch it while it is offered:-)

A side note: If you save a state (*.m48) it will be saved in "/" (the relative root).
However if you want to load a state, the file browser is located at "Documents".
So you have to move up in the tree first to find you saved state.
Interestingly at that point the "Documents" dir doesn't exist at all.
If you manually create it, and store your *.m48 state files there using the built-in file manager,
they will be in reach w/o switching dirs.

Sorry again for beeing OT, and maybe there were better places (like an own thread "Restoring m48+ using iMazing"or alike), or even the iMazing or m48+ developer forums.
But I don't want to dive into this any further. With the efforts involved, it works as wanted:-)

-- Ray
Find all posts by this user
Quote this message in a reply
10-21-2020, 09:11 PM
Post: #30
RE: HP-48/49/50 emulation on iOS
Ray, thank you again for the tutorial you provided above.

I have several programs in m48+ I would like to keep when I move to a new phone in the next week or so. Is there a way to save the calculator as is so when I do a manual install as you laid out, will have my current calculator as-is now on the new phone? Is this what you mean by store a a state *.m48?

I've never been able to get this to work prior to this (even when the app was still in the store) and always reload everything from .obj files which is a real pain.

HP48GX, HP42s and DM42.
Find all posts by this user
Quote this message in a reply
10-22-2020, 09:04 PM (This post was last modified: 10-22-2020 11:29 PM by Raymond Del Tondo.)
Post: #31
RE: HP-48/49/50 emulation on iOS
If you have m48+ up and running, and installed your files into the virtual HP 48,
then you can double-tap on the virtual screen and tap on "Save" or "Save as".
"Save" should show up only if m48+ started up using a previously saved state file.

So tapping on "Save" will overwrite the currently loaded state file with the current calculator state.

"Save as" lets you create a new state file.
A state file is kinda snapshot of the current state of the machine,
including the complete calculator-side configuration, including all libraries and vars,
including port contents (if ports are enabled), and including info about the m48+ application configuration, like chosen skin, ROM and KML.

NOTE: State files do not include the ROM or skin or KML themselves, only info about the chosen ones.

Even after you swiped the m48+ app off from the iOS task manager,
on next call it (m48+) starts with the latest chosen state file (with the restriction I mentioned in an earlier post)

Using state files can save _much_ time;-)

You can even take your state files from one iDevice to another.
However that works best if you store the state files in the (m48+ - local) "Documents" folder that you have to create manually, see my previous post.

EDIT: Inserted some info about what state files actually store.
If you want to use your state file(s) on another iDevice, be sure to have all ROMs, skins, KMLs, etc. available there, too.

-- Ray
Find all posts by this user
Quote this message in a reply
10-24-2020, 04:50 PM
Post: #32
RE: HP-48/49/50 emulation on iOS
I have installed m48+ several times using a licensed version of iMazing to my new iPhone 12 Pro. It will not auto setup. I just said screw it and will have to use another emulator which really sucks because I loved m48+.

Free42 has just become my go to number cruncher.

HP48GX, HP42s and DM42.
Find all posts by this user
Quote this message in a reply
10-24-2020, 07:19 PM
Post: #33
RE: HP-48/49/50 emulation on iOS
(10-24-2020 04:50 PM)DM48 Wrote:  It will not auto setup.
Then maybe you tried at times when the author's website was down. Seems its up just sometimes for a few hours.

However if the initial internal setup still works, you may be able to use m48+ using the files you hopefully made a backup from elsewhere.

As far as I understood, the initial internal setup creates the working environment for the emulator (directories, links, etc.) . If those structures are up, you could just copy the ROMs, skins, etc. into the predefined (and existing) directories. Then you could create a new calc via "New". Did you try that?

-- Ray
Find all posts by this user
Quote this message in a reply
11-11-2020, 06:20 PM (This post was last modified: 11-11-2020 06:23 PM by Orome.)
Post: #34
RE: HP-48/49/50 emulation on iOS
What's the current status of a 48 emulator for iOS? It seems that m48+ is indeed gone (mine crashed on open and following the standard fix for that — of offloading and reloading — revealed that it was not possible to reload due to absence from the App Store).

(1) Is there a replacement or alternative?

(2) If so is there a way to transfer configuration (I have all my .m48 saves backed up)?

(3) if so is there a way to install MetaKernel?
Visit this user's website Find all posts by this user
Quote this message in a reply
11-11-2020, 07:04 PM
Post: #35
RE: HP-48/49/50 emulation on iOS
I use i48 and Emu50G now. Only occasional usage, and I don't know about advanced stuff like MetaKernel, I just use the vanilla setups.
Visit this user's website Find all posts by this user
Quote this message in a reply
11-11-2020, 08:59 PM
Post: #36
RE: HP-48/49/50 emulation on iOS
(11-11-2020 06:20 PM)Orome Wrote:  [..](1) Is there a replacement or alternative?
(2) If so is there a way to transfer configuration (I have all my .m48 saves backed up)?
(3) if so is there a way to install MetaKernel?
Did you read the thread?

-- Ray
Find all posts by this user
Quote this message in a reply
11-17-2020, 06:41 AM
Post: #37
RE: HP-48/49/50 emulation on iOS
Hi guys- I am also a long-time RPL guy (since the HP28C/S days), and long-time user of m48+.

Markus Gonser sent me the source code for m48+ a couple of years ago, and Marek Zima sent me the emu50g sources recently. These projects are GPL since they are derived from emu48, and emu50g is directly derived from m48+. Markus (the original author) seems to have completely lost interest in the project, unfortunately.

I've been poking around at the source code for both apps since I've had some extra 'pandemic time'. With some edits to redirect web requests to my server instead of Markus' site (so that auto-setup will work consistently), I successfully built a running version of m48+.

It currently runs nicely on my new iPhone.

I have also fixed a number of bugs, ported some updates from emu48 and emu50g, and added the ability to use the iOS documents feature (files app), which is far superior to the old built-in file manager and allows for much easier file transfers in and out of the emulator. I'm still working at fixing additional bugs and features- a major one is that I'd like to see if I can get Port 2 to be properly persistent rather than losing things that get stored there, and I would like to remove all dependencies on an external web server (other than rom and MK downloads).

BUT, there is still also much work needed to get it using current APIs and in a state that the app store overlords may accept it again. It also badly needs updating to properly support newer iPhones and screen resolutions.

I thought I would mention that there's work being done on it, though, so all hope isn't necessarily lost for us RPL junkies that also use iOS.

In an email conversation with Marek, he told me that he had submitted m48+ again to the app store since Markus is done with it, but it was rejected due to the requirement it has to download rom files. In order to be accepted again, the rom files would have to be included in the app directly with permission from HP- that may or may not be possible.

I do have some hope that the 'no downloading code' rule may be relaxed or clarified soon due to another app just approved that's pushing this boundary, so I'll be watching that situation as it plays out- it could greatly influence the fate of a number of iOS apps, not just this one. For the curious, the approved app in question is 'ish shell'- it can download Alpine Linux distribution files and run them in a sandboxed and emulated x86 environment- it's actually VERY cool if you like a linux-like terminal environment.

In the meantime, it is possible to still run m48+ but only if you are an iOS developer and can build it yourself on a mac. I'm happy to share my edits with anyone that wishes to do that- if there's much interest I can put my source tree up on github or gitlab.

I would still like to see m48+ back in the app store, so I will still keep working at it as I have time here and there- even as old as it is it's still my favorite calculator app on iOS, and with some more updates & fixes I think it can become far better.

Dave Marsh
Find all posts by this user
Quote this message in a reply
11-17-2020, 05:16 PM
Post: #38
RE: HP-48/49/50 emulation on iOS
(11-17-2020 06:41 AM)dmarsh Wrote:  In an email conversation with Marek, he told me that he had submitted m48+ again to the app store since Markus is done with it, but it was rejected due to the requirement it has to download rom files. In order to be accepted again, the rom files would have to be included in the app directly with permission from HP- that may or may not be possible.

I do have some hope that the 'no downloading code' rule may be relaxed or clarified soon due to another app just approved that's pushing this boundary, so I'll be watching that situation as it plays out- it could greatly influence the fate of a number of iOS apps, not just this one. For the curious, the approved app in question is 'ish shell'- it can download Alpine Linux distribution files and run them in a sandboxed and emulated x86 environment- it's actually VERY cool if you like a linux-like terminal environment.

Having dealt with Apple myself, I’d say that the no downloading code rule is very unlikely to be relaxed any time soon.

However, have you guys explored the option of installing the roms via the filesystem? It is still possible to copy files onto an iOS device using the finder or iTunes. That would be another way around the no-downloading rule and more likely to be acceptable to Apple.
Find all posts by this user
Quote this message in a reply
11-21-2020, 03:37 PM
Post: #39
RE: HP-48/49/50 emulation on iOS
Like everyone else in this discussion I was horrified to find when I upgraded from an iPhone 7 to an iPhone 12 that m48+ is no longer working.

I upgraded phones because I changed service providers, and they will give me $530 for my old phone that is only worth about $50. I have to turn in the old phone in just a few days. I have used iMazing to do a full backup of the old phone and have saved m48+.imazingapp. What else should I do before sending in the phone? I would like to eventually be able to recover my configuration of m48+.

I also have m48+ on an old iPod.

From reading this discussion it appears it is not possible to use these old files to install on my new phone. Am I missing something?
Find all posts by this user
Quote this message in a reply
11-22-2020, 11:46 PM
Post: #40
RE: HP-48/49/50 emulation on iOS
(11-21-2020 03:37 PM)jburns Wrote:  From reading this discussion it appears it is not possible to use these old files to install on my new phone. Am I missing something?
I can‘t tell for the iPhone 12, but at least for the SE 1G, installing from an iMazing iapp backup will work.
For m48+, the major problem is the method needed to get the installation running.
Since the author‘s web server seems to be up only at random times and for some hours per day only,
some luck is needed to get the required files.
Worse, the required files are stored in an area which is not covered by a backup.

-- Ray
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)