Pila News

29 Apr 00
I have not been maintaining/enhancing Pila for several years now. Fortunately, others have picked up the torch and continue to improve Pila. Mikael Klasson and Michael Dreher as well as others have made numerous valuable improvements you'll want to have. Mikael Klasson's web site hosts the newest, most fully featured version that I'm aware of (Pila 1 beta 3 Fluff 7). 

18 Jul 99
Al D sent me this tip on a highly relevant site for Pila programmers so I'm passing it along:

> From: Al D [mailto:al_887@hotmail.com]
> Sent: Thursday, July 15, 1999 11:29 PM
> To: darrin@massena.com
> Subject: A site chock full of 680x0 related stuff!(The Pila community
> will love it!)
> 
> 
> This site has disassemblers, compilers, a few tutorials, 
> optimization tips, 
> source code, 8086 to 68k asm converter and much more! Sorry its not 
> specifically pilot related.
> http://www.programmersheaven.com/zone5/cat123/index.htm

1 Jan 98
I received this mail from Benoit Germain pointing out that, contrary to the guess I put forth in the Pila documentation, PalmOS APIs trash not only D0, D1, A0, and A1 but D2 as well. So make sure you're preserving it yourself before calling system routines.

>From: Benoit Germain <bgermain@ubisoft.fr>
>To: Darrin Massena <darrin@massena.com>
>Date: Wednesday, December 10, 1997 1:06 AM
>Subject: API bug
>
>Hi.
>
>In the Pila documentation you state that APIs preserve all registers
>except D0, D1, A0, and A1.
>
>I have however found out that at least one, FntCharsWidth, trashes d2
>without restoring it, which causes all calling APIs (such as
>WinDrawChars) to trash it as well.
>I dont know if this is a bug in PalmOS or if you just did not notice the
>fact when you developed Pila, but I thought it was worth mentioning
>anyway.
>
>Regards.
>
>> Benoit
>> 
>> ---
>> When confronted by a difficult problem, you can solve it more easily
>> by reducing it to the question, "How would the Lone Ranger have
>> handled this?"
>> 

1 Feb 97
Wes Cherry has released a new version (1.1) of his Pilot Resource Compiler. This version includes a couple of bug fixes (large numbers of controls), portability enhancements, support for tables, plus some documentation tweaks.

1 Feb 97
Damien Neil has ported Pila to Unix (actually Linux) and I've posted the source code on my Tools and Articles page. Thanks Damien!

1 Feb 97
Andrew Howlett has set up a Pila Source Code Page with example code for Pila programmers. Check there for new samples and send him any code you're willing to share. We all benefit!

13 Jan 97
Motorola is at again moving files around. If you're looking for the 68000 Family Programmer's Reference Manual (and if you don't have it, you should be) you can find it here.

Andrew Grangaard sent me mail informing me that another set of Motorola documentation for the 68328 has moved as well. You can now find it here (better get it quick before they move it again).

1 Jan 97
I'm catching up on some old mail and ran across this good one from Andrew Howlett. Andrew wrote Scribble using Pila and is distributing it along with the source code for curious developers. You can find Scribble and its source on the Pilot Software Archive (scrib10.zip). Thanks Andrew!

> From: Laura and Andrew Howlett <howlett@iosphere.net>
> To: darrin@massena.com
> Subject: Thanks for the help!
> Date: Saturday, December 14, 1996 7:30 AM
> 
> Thanks for your tools for Pilot development. Here's a copy of my 
> first distributable PRC, based on your sample.asm code. I'm
> sending it to Adam's software archive today.
> 
> I thought it was cool how you can pass a pointer to LCD memory
> to SysAppSetPreferences and SysAppGetPreferences. Makes for
> elegant code.
> 
> Hope you find it useful,
> Andrew Howlett.

24 Nov 96
Whoops! I forgot to update this news page when the ASDK Alpha 1 was released (10 Nov 96). The ASDK includes an updated version of Pila (Beta 3) that contains a few minor enhancements.

The most important change to note is that from now on Pila will only be distributed as part of the ASDK, not a stand-alone package. This minimizes some maintenance headaches for me and provides a more complete, more integrated package of tools for you.

20 Oct 96
Check out the Pila news and discussion group pilot.programmer.pila (news://news.massena.com/pilot.programmer.pila). It's a great place to get help with your programming problems (or help others!). NOTE: this is not a Usenet newsgroup, it is only available from news.massena.com.

20 Oct 96
Wes Cherry has found a few malformed structures in Pilot.inc. They'll be fixed for the next release. The root of the problem is that, bizarrely, MetroWerks C compiler treats small enumerations (values <128) as byte-sized quantities as opposed to the word-sized quantities it uses for larger value enumerations. Wacky. Here's the details:

Wes Cherry <wesc@microsoft.com> wrote in article
<01bbbf19$ab5e6b40$1819369d@tao23>...
> the struct should be changed in pilot.inc to:
> 
> struct SndCommandType
> 	cmd.b
> 	padding.b
> 	param1.l
> 	param2.w
> 	param3.w
> endstruct
> 
> Darrin:  Will you change this in pilot.inc?
> 
> Some other structs in pilot.inc which have similar problems:
> 
> GraphicsStateType: -- fontId should be .b followed by a padding.b.
> ControlType: controlAttr should be .b followed by a padding .b.  
> all the Form*Types w/ attr.w should be attr.b w/ padding.b
> FieldType.fontID: .b w/ padding .b
> TableType.attr: .b w/ padding .b
> ListTYpe.attr: .b w/ padding .b
> MenuBarType.attr: .b w/ pading .b
> FormType:  attr.w w/ padding .w (usr screwed up and defined FormAttrType
to
> be 17 bits)
> Also: the equates for the FormAttrType weren't generated correctly. 
should
> be:
> 
> FormAttrType_usable_shift        equ 0
> FormAttrType_usable_count 	equ 1
> FormAttrType_usable_mask	equ $00000001
> FormAttrType_visible_shift        equ 1
> FormAttrType_visible_count 	equ 1
> FormAttrType_visible_mask	equ $00000002
> FormAttrType_dirty_shift        equ 2
> FormAttrType_dirty_count 	equ 1
> FormAttrType_dirty_mask	equ $00000004
> FormAttrType_saveBehind_shift        equ 3
> FormAttrType_saveBehind_count 	equ 1
> FormAttrType_saveBehind_mask	equ $00000008
> FormAttrType_graffitiShift_shift        equ 4
> FormAttrType_graffitShift_count 	equ 1
> FormAttrType_graffitiShift_mask	equ $00000010
> 
> -Wes

20 Oct 96
Bill Westerman tells me that in Spanish "Pila" means "battery". Well, that's better than the Finnish meaning.

9 Oct 96
A couple of bugs have been found in Pila Beta 2. They are:

Thanks to Jean-Paul Gavani, Daniel Reznick, and Greg Hewgill for the bug reports. I plan to have all these bugs fixed by the next release.

9 Oct 96
It didn't take long for the first application written with Pila Beta 2 to appear. The day I released Pila Beta 2 I received this mail from Sam Neth regarding his new Hanabi program (download):

> From: Sam Neth <sam@neth.com>
> To: darrin@massena.com
> Subject: Pila Beta 2
> Date: Saturday, October 05, 1996 11:30 PM
> 
> I just wanted to let you know how very cool the new features of Pila
> are.  My code has been transformed dramatically into something
> absolutely readable!  Now that's an assembler.  Thanks so much
> for your contributions to Pilot developers everywhere.
> 
> I'm attaching the alpha of my application, if you're interested.
> I've sent it around, and I'm trying to get it posted to some of
> the better archives.  Post it yourself if you like.  Otherwise,
> I just thought you might like to see what people are doing
> with your work.  I know I would.

Sam's right, I love to hear about the things people are doing with Pila. If you have a Pila application in the works, tell me about it! I'll post it here in the News (unless you mention it's secret).

5 Oct 96
Beta 2 released! Download your copy today [obsolete! Get the ASDK Alpha 1]. You can read the online documentation. New in this release:

Wes Cherry has been extending Pila and has added many new features to make assembly language programming easier and less bug-prone. His new directives and syntax support procedure parameter definition, procedure calling, trap calling, local and global variable definition, and structure definition and
usage. Wow!

11 Sep 96
Oops, the first 14 or so downloads (before 9:00AM PST, 11 Sep 96) received a version of Pila Beta 1 with the EXE incorrectly stamped as "Alpha 2". I've updated pila1b1.zip with the correct EXE stamped "Beta 1". The version string is the only difference between the two EXEs.

10 Sep 96
Beta 1 is released! Download your copy today [obsolete! Get Pila Beta 2]. New in this release:

15 Aug 96
I received mail from Tuomo Tarvainen in Finland informing me that "Pila" in finnish means "joke"! Swell.

15 Aug 96
I have gone over the 'missing' APIs (as reported below by Stephan Gehring) in detail and here are my findings:

> WinPtr WinGetWindowPointer (WinHandle winHandle)

This is not really an API but one of two macros that convert between window handles and pointers which are secretly the same thing!

#define WinGetWindowPointer(winHandle) ((WinPtr) winHandle)
#define WinGetWindowHandle(winPtr) ((WinHandle) winPtr)

> short FntAccentHeight (void)
> short FntAscent (void)
> Boolean FntProportionalFont (void)

As near as I can tell these APIs don't exist!

> void SysCardImageDeleted (UInt cardNo)
> Ptr SysCardImageInfo (UInt cardNo, ULongPtr sizeP)
> void SysPowerOn (Ptr card0P, ULong card0Size, Ptr card1P, ULong
> DWord sysCardHeaderOffset, Boolean reFormat)
> DWord KeyBootKeys (void)

These APIs are either only available under emulation on the Mac or they're part of a code LIB I don't know anything about. They are not API traps and are only listed in guide1.pdf as "Functions for System Use Only".

> SysCurAppInfoPtr SysCurrAppInfoP (void)

This API is really named SysCurAppInfoP (one 'r').

> void ErrDisplay (char* message)
> void ErrFatalDisplayIf (Boolean condition, char* message)
> void ErrNonFatalDisplayIf (Boolean condition, char* message)

These aren't APIs, they're macros that call the ErrDisplayFileLineMsg API thusly:

#define ErrFatalDisplayIf(condition, msg) \
if (condition) ErrDisplayFileLineMsg(__FILE__, __LINE__, msg)

#define ErrNonFatalDisplayIf(condition, msg) \
if (condition) ErrDisplayFileLineMsg(__FILE__, __LINE__, msg)

#define ErrDisplay(msg) \
ErrDisplayFileLineMsg(__FILE__, __LINE__, msg)

> void SysGrfShortCutListDialog (void)

No trap is defined for this. Does it really exist?

> Err MemPtrFree (VoidPtr p)

Another macro:

#define MemPtrFree( p) \
MemChunkFree(p)

> Err SerClearErr (UInt refNum)
> Err SerClose (UInt refNum)
> Err SerGetSettings (UInt refNum, SerSettingsPtr settingsP)
> Word SerGetStatus (UInt refNum, BooleanPtr ctsOnP, BooleanPtr dsrOnP)
> Err SerOpen (UInt refNum, UInt port, ULong baud)
> Err SerReceive (UInt refNum, VoidPtr bufP, ULong bytes, Long timeout)
> Err SerReceiveCheck(UInt refNum, ULongPtr numBytesP)
> void SerReceiveFlush (UInt refNum, Long timeout)
> Err SerReceiveWait (UInt refNum, ULong bytes, Long timeout)
> Err SerSend (UInt refNum, VoidPtr bufP, ULong size)
> Err SerSendWait (UInt refNum, Long timeout)
> Err SerSetReceiveBuffer(UInt refNum, VoidPtr bufP, UInt bufSize)
> Err SerSetSettings (UInt refNum, SerSettingsPtr settingsP)
> Err SerSleep (UInt refNum)
> Err SerWake (UInt refNum)

The serial APIs to not have unique trap numbers. They're called by first getting the serial library's 'refNum' (call SysLibFind("Serial Library", ...)) then passing it along with other arguments to one of the 'LibTrap' traps. Every library (actually, the serial library seems to be the only PalmOS library so far) supports a common set of traps (Open, Close, Sleep, and Wake) as well as an arbitrary number of custom traps. For example, SerSetSettings is called by issuing a trap #15 followed by the word value sysLibTrapCustom+1. To help with this I've created a new set of equates for the serial library that are prefixed with 'sysLibTrapSer'. So you can call SerSetSettings by issuing a trap #15 followed by sysLibTrapSerSetSettings.

You'll find these new trap values the Pila Beta 1 Pilot.inc file.

12 Aug 96
I received this great bug report from Stephan Gehring regarding APIs that can be found in Pilot's Guide1.pdf and Guide2.pdf documentation but cannot be found in Pilot.inc!

> From: Stephan Gehring <gehring@inf.ethz.ch>
> To: darrin@wherry.com
> Subject: Pila include files
> Date: Monday, August 12, 1996 2:16 PM
> 
> Darrin,
> 
> I have checked the Pila include (PILOT.INC) file against the PalmOS
> documentation (Guide1.pdf/Guide2.pdf). I have found a number of missing
> functions in the Pila include file which should perhaps be added to the
> file in a next version.
> 
> All the best, Stephan
> 
> -------------------------
> 
> Functions I found documented in Guide1/2.pdf but not in PILOT.INC:
> 
> WinPtr WinGetWindowPointer (WinHandle winHandle)
> short FntAccentHeight (void)
> short FntAscent (void)
> Boolean FntProportionalFont (void)
> void SysCardImageDeleted (UInt cardNo)
> Ptr SysCardImageInfo (UInt cardNo, ULongPtr sizeP)
> SysCurAppInfoPtr SysCurrAppInfoP (void)
> void SysPowerOn (Ptr card0P, ULong card0Size, Ptr card1P, ULong
card1Size,
> DWord sysCardHeaderOffset, Boolean reFormat)
> void ErrDisplay (char* message)
> void ErrFatalDisplayIf (Boolean condition, char* message)
> void ErrNonFatalDisplayIf (Boolean condition, char* message)
> DWord KeyBootKeys (void)
> void SysGrfShortCutListDialog (void)
> Err MemPtrFree (VoidPtr p)
> Err SerClearErr (UInt refNum)
> Err SerClose (UInt refNum)
> Err SerGetSettings (UInt refNum, SerSettingsPtr settingsP)
> Word SerGetStatus (UInt refNum, BooleanPtr ctsOnP, BooleanPtr dsrOnP)
> Err SerOpen (UInt refNum, UInt port, ULong baud)
> Err SerReceive (UInt refNum, VoidPtr bufP, ULong bytes, Long timeout)
> Err SerReceiveCheck(UInt refNum, ULongPtr numBytesP)
> void SerReceiveFlush (UInt refNum, Long timeout)
> Err SerReceiveWait (UInt refNum, ULong bytes, Long timeout)
> Err SerSend (UInt refNum, VoidPtr bufP, ULong size)
> Err SerSendWait (UInt refNum, Long timeout)
> Err SerSetReceiveBuffer(UInt refNum, VoidPtr bufP, UInt bufSize)
> Err SerSetSettings (UInt refNum, SerSettingsPtr settingsP)
> Err SerSleep (UInt refNum)
> Err SerWake (UInt refNum)
> 
> ----------------------------------------------------------------------
> Stephan Gehring                            Email:  gehring@inf.ethz.ch
> Institute for Computer Systems             Phone:  +41 1 632 73 15
> ETH-Zentrum                                Fax:    +41 1 632 12 20
> CH-8092 Zurich, Switzerland
> 

7 Aug 96


Back to Pilot Software Development