[Introduction] [Address.dat/Address.aba] [Datebook.dat/Datebook.dba] [Memopad.dat/Memopad.mpa]
[Users.dat] [Not So FAQ's] [Home]

Palm Pilot Desktop Software TODO.DAT and TODO.TDA File Structure

Field Name Type Size Comments
Version Tag Char 4*Byte 0x00 0x01 0x44 0x54 (TD10) for Todo
File Name CString   Fully Qualified Filename of file on PC
Table String CString   Custom show header
Next Free Long 4*Byte Next Free Category ID
Category Count Long 4*Byte Count - 1 of the number of category entries (does not include Unfiled category)
Category entries Category-Entry   Occurs category count times
Resource ID Long 4*Byte Schema Resource ID
Fields per Row Long 4*Byte Schema Fields per row. Will be 10 for todo.
Rec ID Pos Long 4*Byte Schema Record ID Position (index to field table entry that contains record id)
Rec Status Pos Long 4*Byte Schema Record Status Position (index to field table entry that contains record status)
Placement Pos Long 4*Byte Schema Placement Position (index to field table entry that contains record placement position)
Field Count Short 2*Byte Schema Field Count (number of fields in schema) Corrected April 19, 2000
Field Entry Short 2*Byte Schema field entry occurs field count times. For todo the entries will be 1,1,1,5,3,6,1,6,1,5 Corrected April 19, 2000
Num Entries Long 4*Byte Record count * 10 (number of field entries in entire file, as noted, divide by 10 to arrive at actual record count)
Todo entry Todo-Entry   Occurs with record count

Category-Entry

Field Name Type Size Comments
Index Long 4*Byte Category Index
ID Long 4*Byte Category ID
Dirty Flag Long 4*Byte Category Dirty Flag
Long Name Cstring   Long Category Name
Short Name Cstring   Short Category Name

Todo-Entry

Field Name Type Size Comments
Field Type Long 4*Byte value 1 Integer
Record ID Long 4*Byte
Field Type Long 4*Byte value 1 Integer
Status Field Long 4*Byte Bitwise Record Status: Pending = 0x08, Add = 0x01, Update = 0x02, Delete = 0x04, Archive = 0x80
Field Type Long 4*Byte value 1 Integer
Position Long 4*Byte
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Description Cstring Description text
Field Type Long 4*Byte value 3 Date
Due Date Long 4*Byte Number of non-leap seconds since Jan 1, 1970 GMT
Field Type Long 4*Byte value 6 Boolean
Completed Long 4*Byte 1 = True
Field Type Long 4*Byte value 1 Integer
Priority Long 4*Byte
Field Type Long 4*Byte value 6 Boolean
Private Long 4*Byte 1 = True
Field Type Long 4*Byte value 1 Integer
Category Long 4*Byte
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Note Cstring Note text

Cstrings

Cstrings are stored as follows:
  1. Strings less than 255 bytes are stored with the length specified in the first byte followed by the actual string.
  2. Zero length strings are stored with a 0x00 byte.
  3. Strings 255 bytes or longer are stored with a flag byte set to 0xFF followed by a short (2*Byte) that specifies the length of the string, followed by the actual string.

Date Fields

Date fields are stored as a long that represents the number of non-leap seconds since January 1, 1970 GMT. Note that this differs from the capabilities of the PalmOS representation on the handheld, which uses a 32 bit unsigned integer to represent the number of seconds since January 1, 1904.

Field Types

The schema mechanism uses field types to identify the data. The meanings of the field types are in the table below.

Number Meaning
0 None
1 Integer
2 Float
3 Date
4 Alpha
5 Cstring
6 Boolean
7 Bitflag
8 RepeatEvent


Last updated: October 26, 2002