Latest update: June 1, 2007
Current releases: 4.03r1

Find the most recent version of this document at:

The latest 28MB PicoDEV installer for is on the web site at:

For information on installing CodeWarrior for PalmOS, use the instructions in the CF2 Getting Started Guide at:
          C:\Program Files\Persistor\MotoCross Support\CFX\Docs\pdf\CF2GSG.pdf


4.03r1 Overview

The 4.03r1 release is based on the version 2.28 but replaces the older FAT12/16 file system and utilities with code from version 3.00 to support FAT32 volumes and move PicoDOS past the previous 2GB limit. All future enhancements to PicoDOS will appear only in version 4 which will continue to support operation of V2.27 and V2.28 binaries. Find information on migrating programs to PicoDEV version 4.xx with FAT32 support at FAT32Considerations.htm.

Known Problems

320kHz system clock will cause RTC problems. The new TLC (TPU local Real-Time Clock) microcode will not increment properly with a 320kHz system clock. This means that you cannot safely use the BIOS RTC delays or elapsed/countdown timers. Neither can you expect timers based on the RTC (which includes the StdC time() and clock() functions) to give the correct results. We strongly recommend limiting the lowest clock frequency to 640kHz to prevent timing problems as we don’t think that we will be able to force TLC to operate even marginally at 320kHz without compromising reliability at the higher rates. 

4.03r1 changes from 4.02r1

CFx  FIX     PWR    Add 25ms delay before dropping into suspend for Silicon Systems cards

CF2  FIX     PBM    PBM 4.03 fixes deep-stack corruption from suspend mode

CF2  FIX     PWR    Suspend alternate fix to deep-stack corruption from pre-4.03 PBM CF2s

CFx  FIX     SCI     SCIRxGetBlock and SCIRxPutBlock won’t lock up when bytes parameter < 1

CF2  FIX     TU      TURxGetBlock and TURxPutBlock won’t lock up when bytes parameter < 1

CFx  FIX     PICO   Fix DATE and TIME commands to stop ignoring optional trailing “P” PM modifier


4.02r1 changes from 4.01r1


CFx  FIX     BIA     BigIDEA volumes can now mount/unmount between PicoDOS and application runs

CF2  CHG    BIOS   Changed default flash timing from 100ns to 90ns to match worst case

CFx  CHG    CF      Removed retries for missing CF card which took a long time to do nothing

CFx  FIX     FILE    Format command no longer crashes with scanning invalid MBR sectors

CFx  FIX     FILE    Fixed open of existing files leaking card capacity

CFx  CHG    FILE    Mount command issues warning if no volume mounted

CFx  CHG    FILE    V2 binaries are not allowed to mount or access FAT32 volumes

CFx  FIX     FILE    DIRFindxxxx and pdcinfo will now work correctly with lower case drive spec

CFx  NEW   PDEV   Added unified “CF1&CF2 for PicoDOS4 stationery” for all CWPalm9/8 and CWPro6

CFx  CHG    PICO   Commands from execstr no longer emit CR-LF sequences

CFx  CHG    PICO   DEL command displays number of files erased on completion

CFx  FIX     PICO   Fixed BACKROM without /V generating bad CRCs that impeded RESTORE

CFx  FIX     QPB    Fixed QPBRepeatAsync in <cfx_expand.h> not clearing SPIF as it should

CFx  FIX     SCI     Rx handshake will not work even if Tx handshake is not enabled

CF2  FIX     SPV    Fixed startup SPV comms problem when SCK driven or spurious at startup

CF2: NEW   TPU    Added TPUCheckIntEnable inline macro to <_cfx_tpu.h>


4.01r1 changes from 4.00r1

CFx  FIX     FILE    Fixed DSDResetOptimizations when passed 0 or -1 from infinite recursion

CFx  CHG    FILE    ATTRIB command and pdx_attrib can change subdirectories

CFx  FIX     FILE    Update mode with open and fopen won’t truncate existing without explicit request

CFx  FIX     FILE    POSIX utime now sets errno if error occurs

CFx  CHG    PICO   FORMAT /V:label now works correctly with FAT32 volumes

CF2  FIX     PICO   Stopped internal PicoDOS heap from re-initializing between application runs

CFx  FIX     PICO   Fixed DIR command over-reporting allocation count on certain files

CFx  NEW   PWR    Resume from PWRSuspendTicks forces CF cards into immediate sleep


4.00r1 changes from 4.00b2

CF2  CHG    CIO     CIOgetclp saves and restores mask level plus IRQ4 and spurious interrupt vectors

CFx  NEW   CF      Add support for Silicon Systems’ SiliconDrive Industrial Grade cards

CFx  FIX     PICO   DIR command displays error message for unmounted drives

CFx  CHG    FILE    FAT32 volumes over 2.5GB get 32KB cluster size for efficiency

CFx  CHG    FILE    FAT16PRI, FAT32PRI, and DOS40PRI volumes accepted by FORMAT command

CFx  FIX     FILE    Calling PZCacheSetup on already setup drive won’t leak memory

CFx  FIX     FILE    Fixed 4.00b2 FDISK/FORMAT FAT type calculation error

CFx  FIX     FILE    DIRFindNext returns dsdEndOfDir at end and beyond

CFx  NEW   FILE    Added st_dfi and st_dwbpb fields to stat.h for low level write access

CFx  CHG    PICO   SYS.F32MBCUT defaults to 2047MB FAT32 format cutover

CFx  FIX     BIA     BIA can now be mounted from MOUNT command after suspend

CF2  NEW   TU      Added new TUGetCurrentParams accessor function


4.00b2 changes from 3.00r4

CFx  FIX     MX      Motocross no longer sends 36 bytes of trailing junk data on loads

CFx  NEW   MX      Motocross prints CRC line after loads for cut-and-paste verification from PicoDOS

CFx  NEW   MX      Motocross pads applications with 0xFFs and inserts ID/CRC block at end

CF2  FIX     PBM    Timeouts have been reactivated and the unused S-Record “LO” command is gone

CFx  CHG    PICO   basic FORMAT command only performs auto-FDISK on single-partition media

CFx  FIX     PICO   BACKROM /A no longer appends PBM image (and shouldn’t)

CFx  NEW   PICO   BACKROM and RESTORE add CRC information and display for APP area

CFx  NEW   PICO   Version 4.xx will properly run older 2.27 and 2.28 RUN, PXE and APP files

CF2  FIX     SPV    V5.20 SPV fixes crystal startup problem on power-ups without backup battery

CF2  NEW   SPV    V5.20 SPV defaults to non-SPI comms to free QPB for user applications

CFx  FIX     SCI     Fixed BAUD rounding error that sometimes resulted in non-optimum divisors

CF2: FIX     TPU     Fixed TPU DIO output functions after execution of suspend commands

CF2: FIX     TPU     Fixed TPU DIO read to not get confused by spiky inputs

CFX: FIX     VEE     VEE pre-checks flash write-ability before garbage collection at wraps


3.00r4 changes from 3.00r2

CFx  FIX     FILE    FAT32 was creating bad directory entries which could corrupt files

CFx  FIX     FILE    ATAMediaCheck and pdcinfo corrected to return proper status and info

CF2  NEW   PWR    Suspend calls now honor whatwakes parameter

CF2  FIX     PWR    PWRSuspendTicks no longer truncates ticks to 65536

CF2  FIX     SPV    V5.10 SPV firmware maintains time with VBBK as low as 2.3V

CF2: FIX     TPU     Fixed TPU PIOTestAssertSet and PIOTestAssertClear always returning zero

CF2: FIX     TLC     TLC 1.3 eliminates links which may have been slowing other TPU channels


3.00r2 changes from 2.28r3

CFx  CHG    BIA     BIAGetStatusString now updates status before forming string

CFx  WARN DIR     DIRFreeSpace, DIRTotalSpace, and pdcfinfo return incorrect values for >2GB

CFx  NEW   DSD    adds DSDFreeSectors, DSDDataSectors

CFx  NEW   FILE    FAT32 support added, many internal changes to accommodate

CFx  GONE  FILE    FAT12 formatting is no longer supported

CFx  CHG    PICO   basic FORMAT command now performs complete FDISK/FORMAT

CFx  NEW   PICO   SYS.F32MBCUT to change the default 512MB FAT32 format cutover

CFx  NEW   PICO   SYS.F32TRUST to enable the default disabled FAT32 hints at mount time

CFx  CHG    PICO   SD command [/C] with [/D dev] (CF,BIHD, etc.) for lower level sector access

CFx  NEW   PDEV   New V3 folders plus XML settings panels for projects and the IDE

CFx  NEW   TDCP   adds text and quiet fields to CmdInfo struct

CFx  CHG    UTIL    new flogf options to record commands and reduce open/close overhead


2.28r4 changes from 2.28r3

CFx  FIX     FILE    ATAMediaCheck and pdcinfo corrected to return proper status and info

CF2  NEW   PWR    Suspend calls now honor whatwakes parameter

CF2  FIX     PWR    PWRSuspendTicks no longer truncates ticks to 65536

CF2  FIX     SPV    V5.10 SPV firmware maintains time with VBBK as low as 2.3V

CF2: FIX     TPU     Fixed TPU PIOTestAssertSet and PIOTestAssertClear always returning zero

CF2: FIX     TLC     TLC 1.3 eliminates links which may have been slowing other TPU channels


2.28r3 changes from 2.28r2

CF2  FIX     SPV    V4.05 firmware fixes intermittent power-up freeze introduced with 4.00.

CF2  CHG    CF      Extended timeouts in CF driver to prevent errors with slow consumer grade cards.

CFx  CHG    PICO   Changed FORMAT command argument handling to prevent inadvertent erasure.


2.28r2 changes from 2.28r1

CFx  FIX     ATA    typedef struct ATADriveID in CFx dosdrive.h was 518 bytes, not 512

CFx  NEW   CIO     adds CIOWaitRxTxIdle added (for CIOgetclp)

CFx  CHG    FILE    open no longer allows multiple write access

CFx  CHG    PDEV   CFxPicoPreMain adds CF1/CF2 target test forcing termination with wrong devices

CFx  CHG    PDEV   <dirent.h> needed <time.h> to compile

CFx  CHG    PDEV   <unistd.h> needed <size_t.h> to compile

CF1  FIX     PICO   CCC command was freezing on return from suspend

CFx  FIX     PICO   DIR \P was only displaying one line instead of one page

CFx  FIX     PICO   Verbose DIR listings (\V) had Y2K display problems

CFx  NEW   PICO   SYS.CFEXTRA env var to allow PC Cards (PC) and MicroDrives (MD)

CFx  FIX     PICO   COPY XXX.YYY D: was mangling destination name and ignoring drive

CF2  FIX     SPV    MSP430 4.xx firmware eliminates RTC glitch and lowers VBBK voltage and current

CF2  CHG    TU      TUOpens will now fail if passed already opened ports

CF2  FIX     VEE     Flash (and so VEE) would not write from user applications


2.28r1 changes from 2.27r1

CFx  NEW   ATA    New patchable ATABlockingError for CF and BIA drivers

CFx  CHG    ATA    ATASetPower now does nothing and returns 0

CFx  CHG    BIA     Extended BIA flash card startup timing for NAND cards

CF2  CHG    BIOS   Modify BIOS entry for legacy BIOSInit calls

CF2  CHG    BIOS   Combine BIOS&PICO (CF1 stays separate)

CFx  CHG    CF      Add retries to low-level CF driver code

CFx  FIX     MX      RunMxPicoDOSApp was limiting static data to 128KB

CFx  CHG    PDEV   Replace <cfx...> with the new multiple headers

CFx  CHG    PDEV   Replace CW MSL headers with new PII versions

CFx  CHG    PICO   BOOT command now returns CmdErrParse-able value

CFx  FIX     PDEV   Add snprintf and vsnprintf protos to stdio.h

CF2  NEW   PDEV   Added POSIX utime function

CFx  FIX     PICO   PicoDOS was not properly re-initializing hardware on application exit

CFx  FIX     PICO   PicoDOS was neglecting to auto-call TURelease on application exit

CFx  CHG    PICO   BAUD command no longer limited to 300 or greater

CFx  FIX     PICO   Loaded and PXE apps now start in unbuffered uart mode

CFx  FIX     PICO   Fixed DIR and COPY commands odd behaviors with subdirectories

CFx  FIX     PICO   Memory display/modify commands were not honoring size switches

CF2  FIX     PICO   BOOT to APP printed "ReRunBootingFlashApp()"

CFx  FIX     PICO   Fixed baud reporting error in BAUD command

CFx  FIX     PICO   RUN/PXE limited was to 192KB in TryExec()

CFx  FIX     PICO   Mount command reversed free and size reporting

CFx  FIX     PICO   APP from Pico no longer attempts if FFFF's at E40000

CFx  FIX     PICO   REN common within subdirectory copied to root

CFx  NEW   PICO   Add displayable binary patch number

CFx  NEW   PICO   Allow change drive with execstr("D:")

CF1  FIX     PICO   Add change PBM query to persistent (/P) BAUD change.

CFx  FIX     PICO   Capture command now accepts break from non-SCI console devices

CF2  FIX     PICO   CF2 was resetting after 2nd program run

CFx  FIX     PICO   DIR with sector read errors no longer hangs

CF1  CHG    PICO   Patch lib with new releases ships as empty

CFx  FIX     PICO   PXE files that use execstr don't crash on return when run from batch files

CFx  FIX     PICO   SD command now auto increments next sector with <enter>

CFx  FIX     PICO   YMODEM now works with 8 character file names with leading numbers

CF2  FIX     PWR    Revoved potential aborted PWRSuspendSecs request lockup mode

CFx  FIX     PWR    Added required SCSInit after SUSPEND

CF2  FIX     PWR    /WAKE while running killed MSP430 after first suspend

CFx  NEW   QPB    Add SYS.QPBCS to allow choice of SPI PCS lines

CFx  NEW   QPB    Add SYS.QPBCS to allow choice of SPI PCS lines

CF2  FIX     RTC    Five calls to set time was resettng the CF2

CFx  FIX     RTC    RTCInit was not allowing 1Hz interrupts

CF2  FIX     RTC    TLC microcode caused SetTime synchronization problems

CFx  FIX     STDC  ENOERR was incorrectly defined as 10

CFx  FIX     SCI     SCITxPutByte blocked in handshake mode ignoring block param

CFx  FIX     SCI     SCIRxGetXXXX NEVER returned overflow errors

CFx  FIX     SCI     SCIRxGetCharXXXX was masking high error bits

CF2  FIX     TPU     TPU DIO functions had no way to get back to DIO

CF2  CHG    TPU     Removed useless TPUSetTCR1Prescale from headers

CF2  NEW   TPU     Allow loadable TPU image (file or flash address)

CF2  NEW   TPU     Add SYS.TCR1P and SYS.PSCK VEE vars for write-once prescalers

CF2  CHG    TU      TUTxPrintf was not translating '\n' to '\n','\r'

CF2  FIX     TU      TURxGetBlock locked on zero bytes, timed out early on other values

CF2  NEW   TU      Added TUTxBreak function for TPU UARTs

CF2  NEW   TU      Add TUChanLookup function for patching TPU UART ISR functions

CFx  CHG    VEE     Identical entries with identical data are not re-written

CFx  NEW   VEE     PicoDOS complains at startup if VEE is corrupted


SYS.CFEXTRA is a new environment variable that allows the onboard CF header to accept PCMCIA flash cards and IBM microdrives in addition to standard CompactFlash cards. The settings and options are defined in <_cfx_globals.h>. Use the following commands from the PicoDOS prompt to setup alternate cards. You will need to reset to make the changes take effect. Note that choosing "PC" for PCMCIA cards will prevent PicoDOS from correctly seeing regular CF cards until you remove the "PC" setting.

C:\>set sys.cfextra=PC    for PCMCIA PC Card with Sycard 166 adapter
C:\>set sys.cfextra=MD   for IBM Microdrives
C:\>set sys.cfextra=NO   for systems with no card to eliminate checks and warnings
C:\>set sys.cfextra=       (blank) for normal CompactFlash operation (the default)

SYS.QPBCS is a new environment variable that tells PicoDOS which PCS (peripheral chip select) lines should be allocated to QPB for SPI operations. By default, all PCS lines are given to PicoDOS which emulates the pre-228 behavior. The settings and options are defined in <_cfx_globals.h>. Use the following commands from the PicoDOS prompt to setup alternate PCS lines.

C:\>set sys.qpbcs=32    PCS3 & PCS2 (pins 17 & 15) are SPI, PCS1 & PCS0 (pins 19 & 21) are GPIO
C:\>set sys.qpbcs=-      (minus sign) PCS3 - PCS0 (pins 17, 15, 19, 21) are GPIO
C:\>set sys.qpbcs=       (blank) PCS3 - PCS0 (pins 17, 15, 19, 21) are SPI