Basic Elements

Basic Storage Elements

All other elements can be descibed in terms of these three basic storage elements:

Abbr. Full Desciption

B Byte 1 byte long (8 bits)

W Word 2 bytes long

L Long 4 bytes long

All numbers are written in hexcode. So 48 equals 72 decimal. A sequence of bytes is written like 4E 00 00 10. As the Psion uses little endian, this corresponds to the number 1000004E. Negative numbers are expressed using two's complement notation: F7 corresponds to -9.

Sometimes, we need to talk about individual bits. A byte has 8 bits; bit 0 is the LSB (value: 1), bit 7 the MSB (value: 80).

Lists

Often lists are used. A list consists of an indication of its length, followed by length elements. A BListB uses a byte as length indicator and its length is counted in bytes. A LListB uses a long to encode the length, counted in bytes, etc. So the first letter tells how the length indicator is encoded: in a byte (B), word (W), long (L), special (S) or extra (X). The last letter tells what unit the length count is in: bytes (B), words (W), Longs (L) or elements as described (E).

We can make the following matrix:

Element Size

Indicator B W L E

B BlistB BListW BListL BlistE

W WlistB WListW WListL WlistE

L LlistB LListW LListL LlistE

S SlistB SListW SListL SlistE

X XlistB XListW XListL XlistE

The special and extra encodings need some more explanation.They are both used in cases where it is unclear how big a number needs to be represented. Both use an expandable scheme to encode numbers.

Special encoding:

Length described Length of indicator Value of indicator How to recognize

00000000 - 0000003F B 4 * length + 2 First byte & 03 == 02

00000080 - 00001FFF W 8 * length + 5 First byte & 07 == 05

Extra encoding:

Length described Length of indicator Value of indicator How to recognize

00000000 - 0000007F B 2 * length First byte & 01 == 00

00000080 - 00003FFF W 4 * length + 1 First byte & 03 == 01

00004000 - 1FFFFFFF L 8 * length + 3 First byte & 07 == 03