Xcopilot

From Wikipedia, the free encyclopedia

Screen shot
Screen shot

Xcopilot is a Palm Pilot emulator that runs under Unix/X11. It offers emulation of the timer, serial ports, touch pad and LCD along with Motorola 68000 emulation (m68k), specifically the Freescale DragonBall used in Palm Pilots until they switched to Intel XScale ARM processors (later DragonBalls were based on an ARM core not a 68000 but retained the same name, however were not used by Palm.) Xcopilot was originally developed by Ivan Curtis with contributions from Ian Goldberg, Jef Dionne, Kresten Krab Thorup, and Andrew Pfiffer based on the Windows program Copilot[1]. While the original Copilot application fell into disuse, the Unix/X11 port went on to become widely used. Written in 1997, Xcopilot was aimed at developers of applications on the Palm OS platform, freeing them from the drudgery of interfacing to the real hardware during the development process.

Xcopilot found a new role in the 2000s with the development of uCLinux, a version of Linux meant for very low-end microprocessors without an MMU . Today Xcopilot is no longer maintained but is still useful for trying out uClinux. With the addition of a virtual ethernet Xcopilot would probably become more popular again, because the simulated hardware would then look very like many modern firewall and VPN devices based on Motorola processors. Networking is only available over PPP on the simulated serial port.

At linux.conf.au 2004 a LiveCD was produced [2] to support the talks, one of which was on uCLinux [3]. The screenshot shows Xcopilot used on this CD to run a webserver explaining how to use the CD.

[edit] Obtaining Xcopilot

Xcopilot is no longer maintained, and there are problems building it on recent distributions of Linux. You may instead wish to use POSE.

I compiled Xcopilot successfully on Suse Linux 10.1 after making a few changes in the source code, as follows:

1. cd to subdirectory mc68k 2. edit file custom.c line 803:

       static unsigned long cycles;   /* original */
   

by deleting "static"

       unsigned long cycles;         /* new */

3. edit file memory.c

line 382:

        if ((*((char *)rom)++ & *bootmask++) != *bootsign++)
            return 0;

by changing it to:

        { if  ((*((char *)rom)   & *bootmask++) != *bootsign++)
             return 0;
        rom++;
        }

line 501:

       (char *) rommemory -= offset;   /* original */

by changing it to:

       rommemory = (char *) rommemory - offset;  /* new */

There does not seem to be any current Xcopilot homepage. The most up to date source for using Xcopilot with uClinux is the version in CVS on cvs.uclinux.org.

cvs -d:pserver:anonymous@cvs.uclinux.org:/var/cvs login

Just press enter at the password prompt, and then run:

cvs -d:pserver:anonymous@cvs.uclinux.org:/var/cvs checkout xcopilot

Otherwise a reasonably recent version can be downloaded from http://www.uclinux.org/pub/uClinux/utilities/xcopilot-0.6.6-uc0.tar.gz

[edit] References

  1. ^ Copilot - The Windows PalmPilot Emulator
  2. ^ The image was made by Dan Shearer with the help of a team of testers and contributors
  3. ^ The talk was given by Greg Ungerer

[edit] External link

  • Tutorial a tutorial on getting uClinux working with Xcopilot.