======================================================================== News (latest changes) for the Palm OS Emulator Copyright (c) 1998-2000 Palm, Inc. or its subsidiaries. All rights reserved. Please send bug reports, comments, suggestions, etc. to devsupp@palm.com ======================================================================== ======================================================================== REVISION HISTORY Starting in 2.1d25 (and backdated to 2.1d24) I'm giving credit to the person or people responsible for convincing me to fix a bug or add a feature, in some cases even providing the source code for the bug or feature. These people's names appear in []'s. See the file Credits.txt for a list of people who have submitted actual changes to the project. ======================================================================== Changes for 3.0a8 (11/17/00) ---------------------------- * Added Dragonball VZ support. * Added SED1376 support. * Fixed (again) the problem with the Palm IIIc screen not getting redrawn after turning the power off then on. * Palm devices since the Palm III have an A-to-D converter (ADC) called the Burr-Brown ADS7843. Until now, Poser did no emulate this hardware, and so patched the OS routines that tried accessing it, causing them to return sensible values anyway. Poser now emulates the ADC, and so no longer needs to patch certain traps. * Removed spaces from ROM Transfer file names. * In 3.0a7, added ability to pass-through keyboard modifiers to the Palm OS. However, I forgot to implement this on non-Windows platforms. Fixed that oversight. [Dave Johnson] * (Unix) Fixed problem where you could save a screen shot only if the target file already existed. [Michael Nordstom] * (Unix) Allow multiple .prc (et al) files to be loaded at the same time from the "Get File" dialog. [Michael Nordstrom] * (Unix) Updated Gremlins menu items after a Gremlin has been started. [Michael Nordstrom] * (Unix) Remember last-accessed directory when the File dialog is presented, and re-show that directory the next time the dialog is displayed. [Michael Nordstrom] * Fixed inability to use serial port when emulating the EZ-based Palm VII or the Palm VIIx. [Jason Simpkins] * Added support for RTS_CONT bit in the Dragonball UART register. This gives better support for applications doing hardware handshaking. * Before closing the host serial port in response to the emulated UART being shutdown, make sure that all locally buffered data is transmitted. * Worked around that d*** bug in Palm OS 3.3 that would cause it to overflow the kernel stack on a reset. Now, if Poser detects a stack overflow and it's the kernel stack, Poser lets it overflow into the interrupt stack (which appears right below it in RAM); Poser just holds off interrupts for as long as the stack has overflowed. * Map Ctrl-P to vchrPrevField, to match Ctrl-N mapping to vchrNextField. [Ben Combee, David Slotter] * (Mac) Worked around problem with items in progress dialogs not showing up immediately (or, sometimes, at all). For instance, in the dialog tracking the progress of the installation of databases, the Cancel button and "Files remaining" text didn't appear until after the first file was completely installed. I now manually activate and update the dialog after making it visible. * Hide a Palm OS 1.0 bug that would access memory location 0xC2 in HwrSleep. * (Windows) Support double-clicking on a .rom file in order to launch Poser. Before, doing this would crash Poser, as it thought the file was a session file. Note that you need to run Poser once by itself first in order to update the appropriate Registry entries. * Fixed problems with Poser allowing access to certain system globals from certain RAM-based functions (such access is usually disallowed). The affected globals were tsmFepLibStatusP and tsmFepLibRefNum, which can be accessed by the glue function TsmGlueGetFepGlobals. * Secure Web-based transactions would result in Poser displaying an error message about memory accesses to "unallocated memory", "unlocked memory", "memory manager data structures", etc. These messages are now no longer displayed. * Fixed Palm Debugger fb, fw, fl and ft commands. Poser's response to the Find debugger packet was incorrect. [Bob Petersen] * Fixed removal of breakpoints. Poser was disabling them instead of out-and-out removing them. The effect that old breakpoints would re-appear, albeit disabled, in PalmDebugger. [Bob Petersen] * Reimplemented HostFSetPos and HostFGetPos in terms of fseek and ftell. Previously, they were implemented in terms of fsetpos and fgetpos, but those functions aren't portable, in that the definition of fpos_t changes from platform to platform. * Merged in TRGpro support from TRGnet. [Dan Smith] * (Internal) Massive rewrite of the core emulation/session handler. Previously, a single sub-system was responsible for creating, loading, saving, resetting, and freeing sessions; emulating the Dragonball core instruction set; and taking care of "Palm OS smarts", where checking based knowledge of how the Palm OS and Palm OS applications was used to enforce correct behavior. Additionally, the interface to this massive, heterogeneous sub- system was different depending on whether Poser was being built for a platform that supported multi-threaded applications or not. Now that's all been changed. There's an EmSession sub-system that takes care of processor- and platform-independent session creation, deletion, etc. There's an abstract EmCPU class and a concrete EmCPU68K subclass responsible for emulating the 68xxx instruction set. And there's an EmPalmOS sub-system responsible for knowing how the Palm OS works and enforcing correct behavior. With these changes, Poser should be in a better position to support different processors (like ARM) and operating systems (like Linux, or even future versions of Palm OS that operate significantly different from the current one). And with a more unified interface to these new sub-systems, the higher levels of Poser can now also be rewritten to be more cross-platform. * (Unix) Fixed (finally?) problem with LCD not appearing to turn off when the power button is clicked to turn off the emulated device. * (Unix) Resize and relayout the generic error message dialog box, instead of putting the (could be long, could be short) error text in a scrollable field. * If INetLib tries creating its default preferences with a proxy server address of 207.240.80.136 (an old, obsolete address), replace it with 209.247.202.106 (the current address). * Fixed support for loading Palm VIIx ROM images downloaded from an actual device (as opposed to the ROM images on the www.palmos.com site). The problem was that the code used to determine what device a ROM image is intended for was tripping up on that image's format, and so misidentified the ROM. * (Windows) Fixed crash that could occur when clicking on some Logging Options dialog buttons. * Let the Palm OS function dns_decode_name read off the end of a buffer. I'm not sure yet why this happens, but until I do, let it happen. Otherwise, developers will be presented with an error dialog they can't do anything about. [Doitchinov Ivan] * Cleaned up, simplified, and robustified the mechanism used to implement the AutoRunAndQuit directory feature. Poser used to have a complex and (apparently) fragile mechanism for tracking calls to SysUIAppSwitch, SysAppLaunch, SysAppStartup, and SysAppExit in order to make sure that when the desired application exitted that Poser quit. That's all been thrown out. Now, when an application quits, Poser merely checks (in SysAppExit) to see if its cardNo and dbID match that of the target application. * Fixed problem with logging posted/received events with Japanese ROMs on Little-Endian host computers. Poser wasn't byteswapping the event data, and so was trying to fetch some data at the wrong memory location. * Address two of the three cases where calling a Palm OS function which causes an exception can crash the emulator: 1. When handling an RPC call (e.g., try "hd 3" from PalmDebugger). 2. When calling a Palm OS function in a trap patch. We still don't handle the third case: 3. When calling a Palm OS function in the UI thread (e.g., when building the Gremlin application list). * When a hardware exception (such as a bus error) occurs, Poser first tries to contact any attached debugger. If it can't find one, it displays an error message containing Debug and Reset buttons. Pressing Reset will reset the device. Pressing Debug will try again to contact a debugger. If it continues to fail, it continues to display the same dialog, until either the user presses Reset or a debugger is finally found. * (Mac) Added two new HostControl functions: HostProfileGetCycles() Returns the current running CPU cycle count. As with all profiling-related HostControl functions, this one is available only in the profiling version of the emulator. HostSaveScreen(const char*) Saves the LCD frame buffer to the given file name. * For its own purposes, Poser tracks memory allocations and de- allocations in the Palm OS dynamic heap. In general, except when the Palm OS dynamic heap is in flux (because an allocation or deallocation is in process), Poser's notion of the heap state should match Palm OS's. However, Poser was failing to keep its notion in sync with Palm OS's in the case where a memory allocation was requested and failed. It was possible for the heap to be compacted and for Poser to not notice and sync up with that compaction. This error could lead to Poser reporting errors when it shouldn't or not reporting errors when it should. * Fixed problem where Poser could crash if the emulated application tried accessing memory location 0xFFFFFFFF. * Fixed problem with the appInfo block not getting installed if the .pdb file being installed didn't have any records in it.