Pumpkin OS: x64 port/re-implementation of PalmOS
pmig96.wordpress.com
pmig96.wordpress.com
The thing that drove me to fits was that Palm OS 6 (Codename Garnet) was apparently ready to roll, according to all the news reports at the time, but it never made it into a device. The damn thing had bits of BeOS in it! You end up wondering what could have been if Palm (the hardware maker) did end up adopting Palm OS 6.
I imagine some practical concerns, maybe around SDKs, licensing costs or power consumption were the driving Palm to keep version 5. This was never reported on, however.
You knew the writing was on the wall when Palm released Treos with PocketPC.
There was also a small run of phones made, which you'll never ever find in the wild, but I know someone who has one: https://photos.app.goo.gl/kZuGkhQSDzH9Q8ni6
Android? A lot of BeOS people went to Android so the similarities in some parts of the SDK are staggering.
They were also damn sexy: http://www.palminfocenter.com/images/TX_front_yahoo_S.jpg
Among other things, you couldn't even use IMAP with the native mail client. I mean, seriously. In 2009.
The best Palm device I ever had was a Treo 650, which I actually ended up using on and off for a long time b/c it worked SO WELL, and the screen wasn't terrible.
(As long as we're talking about interesting hardware: the Danger "HipTop" device was pretty great from a form factor POV, but was hamstrung by lack of real desktop connectivity as I recall.)
Eg:
"DmNewHandle()" - seemingly a simple API in PalmOS - will take NULL as first parameter in PalmOS 2.0+, but will not in 1.0+. Applications written for 1.0 will expect entirely different behaviour. PalmOS 2.0+ will detect such applications and offer them that behaviour. This is not documented anywhere.
Or, "TxtPrepFindString()". In PalmOS 3.5 and later its prototype is "UInt16 (const UInt8 * , UInt16, UInt8 * , UInt16)", while in 3.3 and before, it is "void (const UInt8 * , UInt16, UInt8 * )". Once again this is not documented, but each app needs to see what it expected of the API it was compiled with. And unlike Android/iOS there is no per-app manifest indicating which SDK version it was built with.
And: some SysTraps over time were entirely replaced with incompatible functions at the same SysTrap number. PalmOS 2.0 changed PsrClose into SysLibLoad. PalmOS 3.0 changed PsrGetCommand into SndPlaySmf and PsrSendReply into SndCreateMidiList. PalmOS 3.1 changed PsrInit into IntlDispatch. A proper HLE will need to somehow detect OS version the app targets to provide the proper functionality when one of these SysTraps is made... Doable, but not trivial... (When working on RetroFix, I came up with A solution. Since these 4 calls are only reasonable in a certain order, an app is flagged as "1.0 app" if it calls PsrInit. But how to tell that apart from IntlDispatch? IntlDispatch takes a "selector" in D2, and at the time of PalmOS 1.0 SDK, writing the selector into D2 was REQUIRED to be the very preceding instruction to the trap, using a MOVEQ instruction. At the same time, PalmOS ABI will not preserve D2 across calls, so if you are calling an API that does not take a D2-selector, writing D2 would be pointless as it is about to be destroyed. So, I check for a MOVEQ to D2 register in the previous instruction to where the trap is.)
This goes on almost forever. This is why an HLE (of anything, not just PalmOS) is a project with no"completion date.
Not sure if anyone really cares about the 1% of appls which wouldn't work on OS5 anyway.
Quite seriously, neither iOS nor Android are even remotely as good at easy, right now interaction and usefulness as Palm was nearly 30 years ago. That is especially true for contact management/phone apps!
I guess I wonder what you think is missing or worse than Palm?
I don't have any experience with Android, but on iOS I don't miss ANYTHING -- I find the always-on OTA sync ALONE to be an enormous advantage. The device is fast, responsive, and just-works in a way that nothing did 20 years ago. Palm desktop sync was good for 1999, but it still had issues that came up (esp if you depended on Outlook) that I have never seen with iOS OTA sync.
https://pmig96.wordpress.com/2021/04/29/palmos-on-raspberry-...
There's also the subreddit and a discord channel with a very active community of palm developers/collectors
Evidently an ARM-native version of PalmOS (PalmOS 6, based on beOS of all things) was eventually released, but somehow it never made it onto any real devices.
[0]: https://shop.m5stack.com/products/m5paper-esp32-development-...
EAT UP MARTHA
They justifiably took a hit for the efficacy of the v1 HWR, but v2 was really, really great. I used the MP2000 model daily for about a year and a half before finally migrating to Palm.
Funnily enough, I found that with a Newton I could actually take meeting notes on the device, but the small size of the Palm made that task really unpleasant despite the high-speed possible with Graffiti. The screen was just too small. OTOH, the seamless sync with Outlook was the killer app there.
I had the same issue with note taking on the Palm vs the MP2000. I never internalized Grafitti so writing notes for me was painfully slow. On the Newt I could take notes at normal writing speed.
The danger (for those who never experienced old PDAs) is they had to sync with a wired connection before Bluetooth. The internal state of the device could have content that didn't exist on your computer. All kinds of problems on the device could make it lose its internal state erasing notes, contacts, or whatever other data between the last sync and then.
Even on v2, with the VERY good native HWR, I still had Graffiti on the Newton for editing. On a screen full of text, popping up the G window allowed for easier text entry w/o messing with existing text.
So when I went to Palm, I knew Graffiti very very well.
Sync for me was super stable for Palm, but one thing that really hurt Apple was that they more or less IGNORED the desktop. On Windows -- where I lived at the time -- all you could do was back your Newton up. It wouldn't sync to Outlook or a native desktop tool or anything, which is precisely the wrong choice. Palm's easy, simple sync was deadly to the Newton. I'd drop it on my cradle when I came in every morning and hit the sync button before getting coffee.
Apple definitely ignored the desktop with the Newton. At the same time I think that just reflects different philosophies between Apple and Palm with respect to PDAs. Apple saw the Newton as it's own device while Palm saw it as a loosely tethered satellite device.
This difference I think contributed to Palm's success over the Newton. The Palm's more limited scope allowed it to be much smaller and cheaper than the MessagePads and (as you point out) required it's desktop integration to be much better.
Had WiFi been available (802.11b spec, not the pre-spec versions) by the time the MP2000 came out it might have been able to survive as it's own non-desktop platform. The necessity of wired connections and the lack of good desktop sync was a huge drawback for Newts. With the Network Connection Kit they had cool networking capabilities.
The Palm Pilot was designed for people that actually have work to do so it synchronized with the software on the desktop they used. It was also priced to be affordable by someone that didn't have the corporate black AmEx in their wallet. It was a handheld extension of their PIM software with a calculator.
Oh, 100%. My comment is really more about "they've been so good for so long..." than anything else.
BTW, though, the Newton DID sync with the Newton Desktop in v1. It wasn't as nice as the Palm desktop, or sync with Outlook, but it was usable. Then they dropped it for v2, which was just dumb, dumb, dumb.