PumpkinOS, in its current form, runs as a normal application on a host operating system, either Windows or a full GNU/Linux OS like Ubuntu. It is convenient because you can use the host OS as a development environment, where the build tool chain is installed. But I was wondering what it would take to run … Continue reading PumpkinOS, Busybox and Linux
Category: PalmOS
Here Be Signed Dragons
While porting the PalmOS game Elite for PumpkinOS I stumbled upon a subtle bug. Consider this simplified code: If PrefGetAppPreferences returns noPreferenceFound, meaning the requested preference was not found, what is it going to be? If or Else? It turns out the answer depends on the environment on which the application runs. If this code … Continue reading Here Be Signed Dragons
A hairy bitmap problem
In PalmOS bitmaps come in many flavors, but they all have a common header. Take, for example, the "Version 0" bitmap, available since PalmOS 1.0: The header can be followed by more fields, in case of later versions, and then by pixel data. The whole structure (header plus data) is usually stored on bitmap resources … Continue reading A hairy bitmap problem
Anatomy of a Pumpkin OS app
We have seen how PumpkinOS runs a classic 68K application. First, code.0 and data.0 resources from the PRC are loaded and decoded. Then code.1 is loaded and the 68K emulator starts running it. Native applications, that is, applications compiled from source to the target architecture of PumpkinOS (x86 or ARM), are still stored in PRC … Continue reading Anatomy of a Pumpkin OS app
Hunting globals
In a previous post, I described a way to change all the global variables in a module to thread local storage, so that the module would be safe to use in a multi-threaded application. But I failed to mention how to find the globals in the first place. Of course you can do this using … Continue reading Hunting globals