The Website of Nicholas Piper [14.08203125]

Palm Ramblings

This is not the current version of this page!
You may wish to move to the current version.

This page is http://

Once again, I've just copied everything below this paragraph to this site, from the previous. So not only the links are bad, but it isn't HTML 4.01. Oh well. That means it'll look a total mess :-) If you are going to try and read it, try turning off stylesheets :-)

Just copied over from old website.
Bad links ahoy. Can I be bothered to fix them ?
You think ?

Sunday 21-Mar-99 12:17:36
Link to unfinished Palm/Amiga LAN guide.
Sucessfully built Pyrite-enabled Python binary a few days ago and I've been learning to write conduits since. Pyrite Website, Python Website. This (ATM) provides little function, as only three conduits exist - backup, install and timesync. However, many are being worked on, for example Mail (I'll be syncing with Yam 1.3.5se), ToDo to HTML, Hi-Note, etc. This is all FREE software, as is everything I work on.

I could really do with some (fast) FTP space on which I can store all sorts of Palm things. Amiga.com.pl have very kindly provided my space for gcc, but I also have a few other things that I'd like to make availible (Pilot-Link Suite, Python for various CPU's, source, etc)

BTW: libpisock.a (the Pilot-Link library) has a strange bug. Whenever the scope in which connect() was called ends, it bombs out. Any ideas ?

Monday 15-Mar-99 17:09:08
Created ToDoDB from my Palm Pilot page using a small tool I knocked up. It should be the most up to date look at what I'm doing.

PalmSuite was taking a while, so I've been fiddling anyway with things. I think the best future for the Amiga/Palm is with Pyrite so thats what I'm working towards. Pyrite would allow us to use all the conduits already written (for Pyrite), and write our own. It is completely free, and portable.

I got myself a GoType keyboard. Very useful for writing and editing documents when not at home, but can cause a lot of wrist strain I find. (I'm used to an ergonomic).
The only other problem is the lack of a decent text editor. Smartdoc and Qed seem to be the leaders, so far as there is a leader when they both suck ;-)
I registered Smartdoc as I thought Qed wasn't current (the host was down for a day or so). Smart doc is quite big, and has a terrible screen layout. It uses normal gadgets, which are huge when you want them as small as possible. Qed is better than that respect, Qed also has a fixed width font, and support for screens wider than the display. The SmartDoc people didn't seem to like my suggestions (minimise gadget size, scrap the crap DOC compression in favour of a symmetric compression, multiple documents open at once, etc.) as they don't want to write a "Power User" tool. D'oh. (BTW: Doc IS good, but only for what it was written for---compression on the thick host, NOT on the thin client.)
I want CygnusEd on the Palm ! Pleeeeeease !

I want to register Hi-Note as well, but I've got a POST a money order to the US. What year is this ?!

Friday 22-Jan-99 10:50:08
Drawn on Palm I think I'll hold out writing anymore stuff until the API for the new PalmSuite is released. The authors of PalmSuite have kindly provided ftp space for my gcc work, so I'll get it uploaded in a few days - after I've had another go at the bug.

Thursday 21-Jan-99 14:09:15
The authors of Hi-Note were nice enough to give me the compression info for their image format, so my arexx "conduit" now supports graphics. Cool, no ? :-)

Tuesday 19-Jan-99 17:33:54
I've been trying out writing small bits of code for getting info from the Palm using palmlink.library via ARexx. I have simple code to grab stuff like username, time, database listings and records etc. I'm not sure of the structure of the mail records so I can't do mail sync with Yam via the hotsync protocol yet. At the moment I use Proximail with a couple of scripts to do my mail stuff. The Hi-note record structure is simple (text records anyway), so I've made a conduit to read off the database into a simple HTML page that - crudely - retains the "tree" formatting. One I can parse the graphics, and Hi-note gets grey support things will be good :-)

On the gcc front, seems there is a fault somewhere. Really simple apps are ok, but as soon as even menus are added (I think) crashes happen. Bad ones too - a cold reset was needed. The menus are where (obviously) the problem is likely to be, so I'll look hard at Pilarc.

I really need a GoType. I can afford one end next month I think. Oh, I'd rather like a stylus with a pen in too :-)

Tomorrow (or day after) I'll look into getting Hi-notes into nicely formatted LaTeX.

Oh, and for the past few days I've been using a script to download the days news (and grab some from my inbox) and Dilbert/CitizenDog comics. The news is then formatted into the DOC format, and the images into Image Viewer (via 4 or 5 filters...). It works well :-)

Friday 15-Jan-99 16:32:39
Ok, I've just about finalised my demands now :-)
With regards to Sync-ing I want to be able to do this ;

This is going to require a conduit-manager daemon, running full time. This daemon would then respond to the (hot|net)sync request by initating a series of conduits. I'd like these conduits to be written in ARexx and communicate with the Palm via the daemon, for flexability. For example, if a conduit accessed the serial port directly, it would need to know lots of things and duplicate a lot of code. It wouldn't work with netsync by default, either.
I have to decide if I should use PalmLink.library, or not. I think for now, I'll design a single conduit (Memo Sync) that uses wrapper-functions that in turn call PalmLink, via RoyalBridge.library. This will test PalmLink, and allow the conduit to be easy altered to work with the future-daemon.
The daemon itself would require something like PalmLink, but as I've mentioned before PalmLink *IS* buggy, and it might work out better to base it on Pilot-Link code which is also GPL.

Last Tuesday
I'm writing this in graffiti on my pilot. I've been mostly trying ouy the huge amount of software palmOS, but sadly it seems to be mostly shareware. Granted often only 5-15 UKP, but that can add up in a big way. I'm currently 50 UKP in debt, so all my software will time out soon :-(

As I briefly mentioned last time, my port of gcc appears to work well. Of course it's not very well tested. It does mean that the Amiga is a viable dev platform now, which IMHO is a Good Thing ™. Strangely, even though two or three people asked me to prove the cross compiling binaries no one has given any feedback. Tell me if you use my efforts please, it's the only way I know what to work on further.

Other things that works so far ;

I want to be able to share files more easily, maybe find someone to write a NFS client/server for palmOS :-) I'm going to look into netsync soon. Oh, and I want a free doc reader with search :-) and I would like something to transparently (en|de)crypt particular files...

Tuesday 12-Jan-99 07:39:06
I bought a PalmIII Wednesday 6th, which is why no updates until now ;-)
I've been testing and playing with stuff :-) I don't have time to write it all up now, but just thought I'd let people know things are still happening.
GCC appears to work just fine, as well as the pilotlink set of programs. PalmLink (Amigaised Palm-transfer library) appears very buggy :-( I'd like to see it get cleaned up, and an API for external conduits written.
I've decided that I'm going to develop TCP/IP based software for the PalmIII.

Tuesday 05-Jan-99 20:14:49
Told the Amiga/Palm mailing list where they can find the prc-tools binaries. Once they are verified working, I'll redo the port writing down everything as I go, and check to make sure I fully understand why everthing had to be fiddled in this way and that. Then I'll talk to the prc-tools people.

I'm 15 UKP short for the PalmIII on Saturday. I'm in negotiations with the elders.

Monday 04-Jan-99 22:33:04
Created a page for binaries etc.

Monday 04-Jan-99 19:29:24
This time marks the first (?) gcc binaries that can generate code for the PalmOS platform from the AmigaOS :-)) Woo ! That took long enough. I've learned loads about GCC and compilers in the process though :-)

I'll either work with the author of the PalmOS patches to integrate the AmigaOS changes into the main patches, or branch. Not sure which yet :-) I'll talk with him, then decide.

I will of course post the binaries here soon. I promised someone on the Palm/Amiga mailing list that I'd post the binaries to my (completely untested) port of pilot-link. I'll post them along with the GCC suite binaries if thats ok, in a few days. I'd really prefer to at least run them before I let them into the world ;-)

Monday 04-Jan-99 17:29:01
I think I've located the code that the bug is in. I've learned that the systrap __attribute__ isn't standard stuff, it's added by the PalmOS patches. The reason that if I change the "__attribute__" section to something else, is that the systrap __attribute__ code doesn't get called. I've ripped out the code in question from c-common.c, to see if cc1 still crashes. If it doesn't, I'll look close at it and see if I can spot anything amiss....

Sunday 03-Jan-99 21:30:06
Ok ! I've got a GCC that clean compiles, and a binutils package that clean compiles. Wow, that took AGES. More than 4 days just about solid work, and I've got nothing else done. Damn. School tomorrow also.

Now, I think I'm approching the last problem. My cross compiling cc1 crashes on the following code (extracted from the temporary *.i file that is passed to it) ;

typedef enum {
sysTrapMemInit = 0xA000 ,
sysTrapMemInitHeapTable,
sysTrapMemStoreInit,
sysTrapMemCardFormat,
sysTrapMemCardInfo,
sysTrapMemStoreInfo,
sysTrapMemStoreSetInfo,
sysTrapMemNumHeaps,
sysTrapMemNumRAMHeaps,
sysTrapMemHeapID,
sysTrapMemHeapPtr,
sysTrapMemHeapFreeBytes,
sysTrapMemHeapSize,
sysTrapMemHeapFlags,
sysTrapMemHeapCompact,
sysTrapMemHeapInit,
sysTrapMemHeapFreeByOwnerID,
sysTrapMemChunkNew,
sysTrapMemChunkFree,
sysTrapMemPtrNew } SysTrapNumber;

int MemChunkFree(void *chunkDataP) __attribute__ ((systrap ( sysTrapMemChunkFree ))) ;

I've reduced this down to the same crash/hang/reset at ;

enum {false, true};
void* ResLoadForm (Word rscID) __attribute__ ((systrap ( true ))) ;

If I change the __attribute__ text to something else, it doesn't crash. I need to find someone that knows what the problem is :-)

Wednesday 30-Dec-98 20:51:43
Bug
missing sbrk() function
Description
sbrk is a low-level UNIX call which is inappropriate on the Amiga as it assumes a memory heap growing in one direction only.
Reported
by Steve Kaye stevek@phonelink.telme.com (19-Jul-96)
Work-around
Use the GNU `dbmalloc' package if you can live with preallocating a fixed size "sbrk pool" or see if there is some #define not to use it.

Ah.

Wednesday 30-Dec-98 16:52:16
[19·2] Zippy:PalmPRC/binutils-2.7>make

[snip]

gcc -O2 -g -o size size.o bucomm.o version.o filemode.o -L../bfd -lbfd ../libiberty/libiberty.a ../libiberty/libiberty.a(xmalloc.o): In function `xmalloc_set_program_name': /Zippy/PalmPRC/binutils-2.7/libiberty/xmalloc.c:54: undefined reference to `sbrk' ../libiberty/libiberty.a(xmalloc.o): In function `': /Zippy/PalmPRC/binutils-2.7/libiberty/xmalloc.c:72: undefined reference to `sbrk' /Zippy/PalmPRC/binutils-2.7/libiberty/xmalloc.c:74: undefined reference to `sbrk' ../libiberty/libiberty.a(xmalloc.o): In function `xrealloc': /Zippy/PalmPRC/binutils-2.7/libiberty/xmalloc.c:103: undefined reference to `sbrk' /Zippy/PalmPRC/binutils-2.7/libiberty/xmalloc.c:105: undefined reference to `sbrk' collect2: ld returned 1 exit status make[1]: *** [size] Error 1

:-(
Not sure what to do about this.

Tuesday 29-Dec-98 21:37:51
Wow. I've discovered the huge amount of books that can be, or already are compressed into the PilotDoc format (see Yahoo). To do the compression from ascii to the pilots format, you'll need some tools. I've compiled the txt2pdbdoc-1.2.1 suite ready for myself. It's covered by the GNU GPL. You can get the binaries I have compiled for AmigaOS , to save you doing your own. A Doc reader is need on the Pilot side too, you don't get one with the OS. J-Doc looks good, it has some good screen flipping stuff... so you can view the text in landscape, rather than the normal Pilot way. CSpotRun is a freeware reader.

Tuesday 29-Dec-98 17:52:47
Yay, libc.a has printf() :-) To build myself a set of gcc-based tools to do PalmOS C coding I'll be needing the source to gcc, binutils and gdb. Ouch ! A specific version too. GG (The project that ports unix tools to AmigaOS) will have all these sources fixed for AmigaOS, but maybe not in the correct versions... and there could be conflicts with the PalmOS/AmigaOS patches. I'll have to go look in about 10 minutes.

Tuesday 29-Dec-98 17:29:02
I'm looking into which languages I'd like to actually use on my PalmIII. (Expected ownership is 4/5th January, current lowest price is 200 UKP at PC World and Dixons (same company, I believe)).

Waba looks to be a very nice choice. I like Java, and Waba apps would run not only on the Pilot, but also WinCE and all other Java VM's with the Waba classes. The negatives are that Waba doesn't include exceptions (nor threads), the tools to create files suitable for the Pilot/WinCE don't clean compile on AmigaOS (no windows.h). Linux has a port though, so maybe I can get hold of the source to that. What else ? Oh -- as Waba seems to support no Std-IO (I suppose that's reasonable, given the nature of the device. But I live for console IO. Bugger), and my Amiga JavaVM supports no graphics, I can't test my Waba apps on my Amiga. This is a major downpoint, as I loose that nice compatability that is Waba's main advantage, over the fact Java is just nice to work with. Waba does seem to make handing the UI on the Pilot pretty easy though, so maybe I could still live with it. I'll have to see if gcc can use stdio on the PalmOS... I really don't feel like writing GUI code every time I want a small tool. I suppose for small non-gui tools I'd use the Basic, Forth or Lisp. I feel homesick already. I want ARexx for the PalmOS !

I'm going to go look at the GCC options now. I want to find two main things ;

Monday 28-Dec-98 17:32:00
I've been after a palmtop style device for a long time. I currently use a Casio Organiser to write mail and do basic spreadsheeting and to-do lists, but the batteries don't last and it has no programming language, a major bad point IMHO. So I've decided to buy a new one :-)

The choices seem to be between three styles - the Psion range, (itself containing either the 3 or 5 series), the Windows CE machines and the PalmOS platform. The Psion 5 would be nice, but way to expensive and the hacking possibilities appear limited, after a quick scout of the web. The 3 series are a bit cheaper, but will soon be turning obsolete and the supply of (free) software will dry up I think. The Windows CE palmtops are both expensive and limited. I assume Microsoft charge a lot for the SDK (I've not looked into it), so software would be costly. Also I simply wouldn't hand over cash for one on principle :-)

That leaves the Palm, which is obviously my choice given the graphic to the left. The Palm range are reasonably priced (about 150 UKP to 230 UKP depending on model and supplier), with apparently massive hacking opportunities. Not only is the SDK free, but the OS source code can also be viewed for free ! The CPU (Motorola DragonBall) is well documented, and shares a lot with my trusty Amiga. This gives lots of fun software and hardware projects :-) The batteries seem to last a long time (from Ron Nicholson's Short and Completely Unofficial PalmPilot FAQ) ;

TimeActivity
10 hoursbacklight on and serial port active.
16 hoursplaying reptoids or chess, or using vt100, no backlight.
2-3 daysalways on, using memopad.
31 daysin a cradle (serial port DSR line terminated to 3K Ohms.)
230 daysoff (sleeping) and unconnected (e.g. shelf life).
Note that there is a fix for the power drain when the unit is in the cradle, but this can prevent the PalmLink (Amiga) software working. I'm not sure if this prevents the Unix-ports (Pilot-link 0.9.0) that I've managed to compile from working though yet. Saying that, I don't even know if they work at all. The files that deal with .prc seem to parse them ok, but serial handing is a totally different game... most Unix ports require the serial handling to be rewritten (eg, my porting of the iBLab C++ library for accessing iButtons). I found on an FTP server the pilot-link suite in binary form, apparently compiled for the Amiga (although the binaries appear damaged -- they don't execute) and in the README it says that you can simply provide SER: as an argument. I've had a small nose in the source, and I can't see anything to prove it wouldn't work... so we'll see when I get the PalmIII :-) If it does work, I'll be happy. There is a whole load of really cool software, as a small example ;
pi-getrom: program that retrieves ROM from Pilot (without getrom.prc)
pilot-debug: graphical and command-line program to interface with Pilot debug monitor
pilot-xfer: back up, restore, install and delete Pilot databases (This is a very useful program)
pilot-mail: import mail from POP3 mailbox into Pilot Pro's Mail application, and send mail via sendmail
read-expenses: export Pilot Pro expense database into text format
read-ical: export Pilot datebook and todo databases into an Ical calendar (ical is required)
read-todos: export Pilot todo database into generic text format
reminders: export Pilot datebook into a 'remind' data file
sync-plan: completely synchronize the Pilot datebook with the Plan calendar via netplan
Looks yummy, no ? Then the second best thing I've found so far is the huge amount of languages (compaired to other Palmtops) supported by 3rd party developers... languages such as Java [& here] (no true VM yet though), C (both workstation and palmtop-side compilers), Asm (both workstation and palmtop-side assemblers), C++, Forth, Lisp, Pascal (Mac Compiler), Basic, Waba (Java style language). (more on Dev). A few PGP related things, and a disassembler.

Oh, and it has fun expansions such as the GoType keyboard, and Palm actually support hacking the thing :-) Do Palm rule, or what ? :-) Now, just gotta save up the last few pounds, and I'm walking on water.