About - Download - History - Archive - Manual - Contributors

PilRC v3.2 (Palm internal version)
User Manual

Aaron Ardiri (aaron@ardiri.com)
Ben Combee (combee@techwood.org)
John Marshall (jmarshall@users.sf.net)
17 July 2004
Check the PilRC home page for the latest version.

Description

Table of Contents

Usage

Example: Understanding the Manual

Syntax

Types Comments

Include Files

Preprocessor Macros and Conditionals Resource Language Reference FORM (tFRM)

FORM ID <FormResourceId.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
  [FRAME] [NOFRAME]
  [MODAL]
  [SAVEBEHIND] [NOSAVEBEHIND]
  [USABLE]
  [HELPID <HelpId.n>]
  [DEFAULTBTNID <BtnId.n>]
  [MENUID <MenuId.n>]
  [LOCALE <LocaleName.s>]
BEGIN
  <OBJECTS>
END 
Where <OBJECTS> is one or more of:

Notes:

Example:

FORM ID 1 AT (2 2 156 156)
  USABLE MODAL 
  HELPID 1 
  MENUID 1
  LOCALE "enUS"
BEGIN
  TITLE "AlarmHack"
  LABEL "Repeat Datebook alarm sound" AUTOID AT (CENTER 16)
  PUSHBUTTON "1" ID 2001 AT (20 PrevBottom+2 12) AUTO GROUP 1
  PUSHBUTTON "2" ID 2002 AT (PrevRight+1 PrevTop PrevWidth PrevHeight) GROUP 1
  PUSHBUTTON "3" ID 2003 AT (PrevRight+1 PrevTop PrevWidth PrevHeight) GROUP 1

  LABEL "times. Ring again every" AUTOID AT (CENTER PrevBottom+2) FONT 0

  PUSHBUTTON "never" ID 3000 AT (13 PrevBottom+2 32 12) GROUP 2
  PUSHBUTTON "10 sec" ID 3001 AT (PrevRight+1 PrevTop PrevWidth PrevHeight) GROUP 2
  PUSHBUTTON "30 sec" ID 3002 AT (PrevRight+1 PrevTop PrevWidth PrevHeight) GROUP 2
  PUSHBUTTON "1 min" ID 3003 AT (PrevRight+1 PrevTop PrevWidth PrevHeight) GROUP 2

  LABEL "Alarm sound:" AUTOID AT (24 PrevBottom+4)
  POPUPTRIGGER "" ID 5000 AT (PrevRight+4 PrevTop 62 AUTO) LEFTANCHOR
  LIST "Standard" "Bleep" ID 6000 AT (PrevLeft PrevTop 52 1) VISIBLEITEMS 2 NONUSABLE
  POPUPLIST ID 5000 6000

  BUTTON "Test" ID 1202 AT (CENTER 138 AUTO AUTO)
  GRAFFITISTATEINDICATOR AT (100 100)
END
MENU (MBAR)

MENU ID <MenuResourceId.n>
[LOCALE <LocaleName.s>]
BEGIN
  <PULLDOWNS>
END
Where <PULLDOWNS> is one or more of:

PULLDOWN <PullDownTitle.s>
BEGIN
  <MENUITEMS>
END
Where <MENUITEMS> is one or more of:

MENUITEM <MenuItem.s> ID <MenuItemId.n> [AccelChar.c]
MENUITEM SEPARATOR [ID <MenuItemId.n>]
Example: ALERT (Talt)

ALERT ID <AlertResrouceId.n>
  [HELPID <HelpId.n>]
  [DEFAULTBUTTON <ButtonIdx.n>]
  [INFORMATION] [CONFIRMATION] [WARNING] [ERROR]
  [LOCALE <LocaleName.s>]
BEGIN
  TITLE <Title.s>
  MESSAGE <Message.ss>
  BUTTONS <Button.s> ... <Button.s>
END
Notes:

Example:

ALERT ID 1000
  HELPID 100
  DEFAULTBUTTON 1
  CONFIRMATION
  LOCALE "enUS"
BEGIN
  TITLE "AlarmHack"
  MESSAGE "Continuing will cause you 7 years of bad luck\n" \
          "Are you sure?"
  BUTTONS "Ok" "Cancel"
END
VERSION (tver)

VERSION ID <VersionResourceId.n> <Version.s>
VERSION <Version.s>
Notes: Example: STRING (tSTR)

STRING ID <StringResourceId.n> 
[LOCALE <LocaleName.s><String.ss>
STRING ID <StringResourceId.n> 
[LOCALE <LocaleName.s>] FILE <StringFile.s>
Notes:

Example: STRINGTABLE (tSTL)

STRINGTABLE ID <StringTableResourceId.n> 
[LOCALE <LocaleName.s><PrefixString.ss>  ... <String.ss>
Notes:
  • a limitation of 384 strings apply

    Example:

    CATEGORIES (tAIS)

    CATEGORIES ID <CategoryResourceId.n> 
    [LOCALE <LocaleName.s><Category1.s> ... <Category2.s>
    Notes: Example: APPLICATIONICONNAME (tAIN)

    APPLICATIONICONNAME ID <AINResourceId.n> 
    [LOCALE <LocaleName.s><ApplicationName.s> 
    Example: APPLICATION (APPL)

    APPLICATION ID <ApplResourceId.n> 
    [LOCALE <LocaleName.s><APPL.s>
    Notes:

    Example:

    LAUNCHERCATEGORY (taic)

    LAUNCHERCATEGORY [ID <LaunchCatResourceId.n>] 
    [LOCALE <LocaleName.s><APPL.s>
    Example: BITMAP, ICON, and SMALLICON (Tbmp, Sbmp, tAIB, Tbsb)

    There are several different ways of specifying bitmaps and icons: PilRC's original simple syntax for individual bitmaps; two extensions of that syntax allowing several individual bitmaps of different bit depths to be collected into one resource (a bitmap family); and a newer more flexible syntax for specifying bitmap families.

    Common to all of these syntaxes is a set of <BitmapAttributes> that may be used to specify various aspects of bitmap processing:

    [NOCOMPRESS] [COMPRESS] [FORCECOMPRESS]
    [COMPRESSSCANLINE] [COMPRESSRLE] [COMPRESSPACKBITS] [COMPRESSBEST]
    [NOCOLORTABLE] [COLORTABLE] [BITMAPPALETTE <Filename.s>]
    [TRANSPARENT <R.n> <G.n> <B.n>] [TRANSPARENTINDEX <Index.n>]
    
    These control compression of the bitmap pixel data, whether a color table should be output, what palette to use if not the default Palm OS palette, and which color, if any, is really transparent. BITMAPPALETTE takes a file containing one color per line, each consisting of decimal red, green, and blue components (0..255) separated by whitespace.

    The flexible bitmap family syntax is the only way to specify high-density bitmaps. Individual bitmaps are added to the family as specified by their BPP and DENSITY values, and attributes can be specified for each individual bitmap separately:

    BITMAP [<ResType.s>] ID <ResId.n> [LOCALE <Locale.s>]
      [<BitmapCompression>...]
    BEGIN
      BITMAP <Filename.s> BPP <Depth.n> [<BitmapAttribute>...] [DENSITY <Density.n>]
      ...
    END
    
    [SMALL]ICON [ID <ResId.n>] [LOCALE <Locale.s>]
      [<BitmapCompression>...]
    BEGIN
      BITMAP <Filename.s> BPP <Depth.n> [<BitmapAttribute>...] [DENSITY <Density.n>]
      ...
    END
    

    The original syntax allows the creation of bitmap and icon resources containing exactly one member bitmap. That member bitmap's depth depends on which of BITMAP/BITMAPGREY/etc is used, as described below.

    BITMAP|BITMAPGREY|etc [<ResType.s>] ID <ResId.n> [LOCALE <Locale.s>]
      <Filename.s> [<BitmapAttribute>...]
    
    [SMALL]ICON [ID <ResId.n>] [LOCALE <Locale.s>]
      <Filename.s> [<BitmapAttribute>...]
    

    An extension to this original syntax allows several bitmaps to be given:

    BITMAP|BITMAPFAMILYSPECIAL [<ResType.s>] ID <ResId.n> [LOCALE <Locale.s>]
      <Filename.s>... [<BitmapAttribute>...]
    
    [SMALL]ICON [ID <ResId.n>] [LOCALE <Locale.s>]
      <Filename.s>... [<BitmapAttribute>...]
    

    For compatibility with Handspring's tools, PilRC also supports the following syntax:

    BITMAP ID <ResId.n> [RSCTYPE <ResType.s>] [INCLUDECLUT] [LOCALE <Locale.s>]
      [<Filename.s>] [DEPTH2 <Filename.s>] [DEPTH4 <Filename.s>]
      [DEPTH8 <Filename.s>] [DEPTH16 <Filename.s>]
      [<BitmapAttribute>... | NOCOMPRESS|COMPRESS|FORCECOMPRESS [<Depth.n>...]...]
    

    General notes applicable to all bitmap/icon definitions:

    Examples:

    TRAP (TRAP)

    TRAP ID <TrapId.n> [VALUE] <TrapNumber.n>
    Notes: Example: FONT (NFNT)

    FONT ID <FontResourceId.n> 
    [LOCALE <LocaleName.s>] FONTID <FontId.n> <FontFileName.s>
    FONT file format

    The file containing the font information is plain ASCII. To understand how it works it is first necessary to understand how a font is arranged in memory. A font consists of four main parts, a header, a bitmap image, a bitmap location table, and an offset/width table. The bitmap image and location table are generated for you 100% automatically.

    The ASCII file consists of two parts, the header and the font data (glyph objects). A full font file is provided with the PilRC distribution.

    The FONT header has the following fields:

    Each glyph has a bitmap, offset, and a width associated with it. The width can be overridden, however it is not recommended as it is set automatically. Notes:

    FONTFAMILY (nfnt)

    FONTFAMILY ID <ResId.n> FONTID <FontId.n> [LOCALE <LocaleName.s>]
    BEGIN
        FONT <FontFileName.s> DENSITY <Density.n>
        ...
    END
    

    Notes:

    Example:
    FONTINDEX (fnti)

    FONTINDEX ID <ResId.n> 
    [LOCALE <LocaleName.s>]
    BEGIN
    	<FontType.s> <ResId.n>
    	...
    	[BEGIN
    		<FontId.n>
    		...
    	END]
    END
    
    Notes:

    Example: FONTMAP (fntm)

    FONTMAP ID <ResId.n> [LOCALE <LocaleName.s>]
    BEGIN
    	<Flag.n><State.n><Value.n>
    	...
    END
    
    Notes:

    Example:
    HEX

    HEX <ResType.s> ID <ResId.n> 
    [LOCALE <LocaleName.s>]
        <Byte.n> | <String.s>
    Notes:

    Example: DATA

    DATA <ResType.s> ID <ResId.n> 
    [LOCALE <LocaleName.s>] <FileName.s>
    Example: INTEGER (tint)

    INTEGER ID <ResId.n> 
    [LOCALE <LocaleName.s>] [VALUE] <Value.n>
    Notes:

    Example: BYTELIST (BLST)

    BYTELIST ID <ResId.n> 
    [LOCALE <LocaleName.s>]
    BEGIN
    	<Byte.n>
    	...
    END
    
    Example:
    BYTELIST ID 1000
    BEGIN
    	23
    	3
    	205
    	55
    	12 - 8
    END
    
    WORDLIST (wrdl)

    WORDLIST ID <ResId.n> 
    [LOCALE <LocaleName.s>]
    BEGIN
    	<Word.n>
    	...
    END
    
    Example:
    WORDLIST ID 1000
    BEGIN
    	23
    	1303
    	2505
    	2055
    	42 * 68
    END
    
    LONGWORDLIST (DLST)

    LONGWORDLIST ID <ResId.n> 
    [LOCALE <LocaleName.s>]
    BEGIN
    	<LongWord.n>
    	...
    END
    
    Example:
    LONGWORDLIST ID 1000
    BEGIN
    	123456789
    	130300
    	78005
    	200055
    	12345 * 20000
    END
    
    NAVIGATION (fnav)

    NAVIGATION ID <ResId.n> 
        [VERSION <version.n>]
        INITIALSTATE <state.n>
        [INITIALOBJECTID <id.n>]
        [JUMPOBJECTID <id.n>]
        [BOTTOMLEFTOBJECTID <id.n>]
        BEGIN
            ID <ID.n> ABOVE <ID.n> BELOW <ID.n>
                [SKIP] [FORCEINTERACTION] [BIGBUTTON]
            ...
        END
    
        or
    
        NAVIGATIONMAP
            ROW { <ID.n> [SKIP] [FORCEINTERACTION] [BIGBUTTON] } *
            ...
        END
    

    This resource is associated with a form with the same ID and defines the tab order of controls on the form, along with the up/down navigation order and where object focus should initially be placed. For a full description of this, see the PalmOne Treo 600 developer documentation. This format will likely be used for future PalmOne devices.

    For either syntax, the tab order is determined by the order that IDs are listed in the BEGIN/END or NAVIGATIONMAP section. These IDs should be the same as those used for form objects in the corresponding form resource. For a navigation map, the ABOVE and BELOW values for a row are the value of the ID that starts the previous and next rows, respectively.

    PilRC doesn't provide keywords for the values of INITIALSTATE. You should #define your own constant definitions, based on those in the Treo 600 headers. See the example for the most commonly used values.

    Example:
    #define	kFrmNavHeaderFlagsObjectFocusStartState  0x00000001
    #define	kFrmNavHeaderFlagsAppFocusStartState     0x00000002
    
    NAVIGATION ID 1000
        INITIALSTATE kFrmNavHeaderFlagsObjectFocusStartState
        INITIALOBJECTID 1001
        JUMPOBJECTID 1001
        BOTTOMLEFTOBJECTID 1005
        BEGIN
          ID 1001 BELOW 1003
          ID 1002 BELOW 1003 SKIP
          ID 1003 ABOVE 1001 BELOW 1004 FORCEINTERACTION
          ID 1004 ABOVE 1003 BIGBUTTON
          ID 1005 ABOVE 1003 SKIP FORCEINTERACTION BIGBUTTON
        END
    
    NAVIGATION ID 2000
        INITIALSTATE kFrmNavHeaderFlagsObjectFocusStartState
        INITIALOBJECTID 2001
        NAVIGATIONMAP
          ROW 2001 
              2002 SKIP
          ROW 2003 FORCEINTERACTION
          ROW 2004 BIGBUTTON
              2005 SKIP FORCEINTERACTION BIGBUTTON
        END
    
    PALETTETABLE (tclt)

    PALETTETABLE ID <ResId.n>
    BEGIN
    	<index.n> <red.n> <green.n> <blue.n>
    	...
    END
    
    Example:
    PALETTETABLE ID 1000
    BEGIN
    	0x00 0xFF 0xFF 0xFF
    	0x01 0x00 0x00 0x00
    END 
    FEATURE (feat)

    FEATURE ID <ResId.n> 
    [LOCALE <LocaleName.s>] 
    BEGIN
    	[CREATOR <creator.s>]
    	BEGIN
    		[ENTRY] [NUMBER <number.n>] [VALUE <value.n>]
    		...
    	END
    END
    
    Example:
    FEATURE ID 1000
    BEGIN
    	CREATOR "psys"
    	BEGIN
    		ENTRY NUMBER 5 VALUE 0
    		ENTRY NUMBER 6 VALUE 0
    	END
    END
    GRAFFITIINPUTAREA (silk)

    GRAFFITIINPUTAREA ID <GraffitiInputAreaId.n>
      [VERSION <version.n>]
      [CREATOR <creator.s>]
      [LANGUAGE <language.s>]
      [COUNTRY <country.s>]
      [LOCALE <LocaleName.s>]
    BEGIN
      <OBJECTS>
    END 
    Where <OBJECTS> is one or more of:

    Notes:

    Example:

    GRAFFITIINPUTAREA ID 10000
      VERSION 1
      CREATOR "psys"
      LANGUAGE "English"
      COUNTRY "UnitedStates"
    BEGIN
    	AREA AT (0 0 160 160) SCREEN INDEX 0
    	AREA AT (27 164 62 56) GRAFFITI INDEX 0
    	AREA AT (89 164 44 56) GRAFFITI INDEX 1
    	BUTTON AT (27 206 18 14) KEYDOWNCHR 272 KEYDOWNKEYCODE 0 KEYDOWNMODIFIERS 8
    	BUTTON AT (115 206 18 14) KEYDOWNCHR 273 KEYDOWNKEYCODE 0 KEYDOWNMODIFIERS 8
    	BUTTON AT (0 164 27 28) KEYDOWNCHR 264 KEYDOWNKEYCODE 0 KEYDOWNMODIFIERS 8
    	BUTTON AT (0 192 27 28) KEYDOWNCHR 261 KEYDOWNKEYCODE 0 KEYDOWNMODIFIERS 8
    	BUTTON AT (133 164 27 28) KEYDOWNCHR 267 KEYDOWNKEYCODE 0 KEYDOWNMODIFIERS 8
    	BUTTON AT (133 192 27 28) KEYDOWNCHR 266 KEYDOWNKEYCODE 0 KEYDOWNMODIFIERS 8
    END
    
    COUNTRYLOCALISATION (cnty)

    COUNTRYLOCALISATION ID <ResId.n> 
    [LOCALE <LocaleName.s>] 
    BEGIN
      BEGIN
        [NUMBER <number.n>]
        [NAME <name.s>]
        [DATEFORMAT <dateformat.n>]
        [LONGDATEFORMAT <longdateformat.n>]
        [WEEKSTARTDAY <weekstartday.n>]
        [TIMEFORMAT <timeformat.n>]
        [NUMBERFORMAT <numberformat.n>]
        [CURRENCYNAME <currencyname.s>]
        [CURRENCYSYMBOL <currencysymbol.s>]
        [CURRENCYUNIQUESYMBOL <currencyuniquesymbol.s>]
        [CURRENCYDECIMALPLACES <currencydecimalplaces.n>]
        [DAYLIGHTSAVINGS <daylightsavings.n>]
        [MINUTESWESTOFGMT <minuteswestofgmt.n>]
        [MEASUREMENTSYSTEM <measuresystem.n>]
      END
      BEGIN
        ...
      END
      ...
    END
    Notes:

    Example:
    COUNTRYLOCALISATION ID 10000
    BEGIN
    	BEGIN
    		NUMBER 7
    		NAME "France"
    		DATEFORMAT 1
    		LONGDATEFORMAT 8
    		WEEKSTARTDAY 1
    		TIMEFORMAT 2
    		NUMBERFORMAT 2
    		CURRENCYNAME "Franc"
    		CURRENCYSYMBOL "F"
    		CURRENCYUNIQUESYMBOL "FRF"
    		CURRENCYDECIMALPLACES 2
    		DAYLIGHTSAVINGS 3
    		MINUTESWESTOFGMT 60
    		MEASUREMENTSYSTEM 1
    	END
    	BEGIN
    		NUMBER 23
    		NAME "United States"
    		DATEFORMAT 0
    		LONGDATEFORMAT 7
    		WEEKSTARTDAY 0
    		TIMEFORMAT 1
    		NUMBERFORMAT 0
    		CURRENCYNAME "US Dollar"
    		CURRENCYSYMBOL "$"
    		CURRENCYUNIQUESYMBOL "$US"
    		CURRENCYDECIMALPLACES 2
    		DAYLIGHTSAVINGS 1
    		MINUTESWESTOFGMT 1140
    		MEASUREMENTSYSTEM 0
    	END
    END
    LOCALES (locs)

    LOCALES ID <ResId.n> 
    [LOCALE <LocaleName.s>] 
    BEGIN
      [VERSION <number.n>]
      BEGIN
        [LANGUAGES <languages.n>]
        [COUNTRYS <countrys.n>]
        [COUNTRYNAME <countryname.s>]
        [DATEFORMAT <dateformat.n>]
        [LONGDATEFORMAT <longdateformat.n>]
        [TIMEFORMAT <timeformat.n>]
        [WEEKSTARTDAY <weekstartday.n>]
        [TIMEZONE <timezone.n>]
        [NUMBERFORMAT <numberformat.n>]
        [CURRENCYNAME <currencyname.s>]
        [CURRENCYSYMBOL <currencysymbol.s>]
        [CURRENCYUNIQUESYMBOL <currencyuniquesymbol.s>]
        [CURRENCYDECIMALPLACES <currencydecimalplaces.n>]
        [MEASUREMENTSYSTEM <measuresystem.n>]
      END
      BEGIN
        ...
      END
      ...
    END
    Notes:

    Example:
    LOCALES ID 10000
    BEGIN
    	VERSION 1
    	BEGIN
    		LANGUAGES 1
    		COUNTRYS 7
    		COUNTRYNAME "France"
    		DATEFORMAT 1
    		LONGDATEFORMAT 8
    		TIMEFORMAT 2
    		WEEKSTARTDAY 1
    		TIMEZONE 60
    		NUMBERFORMAT 2
    		CURRENCYNAME "Franc"
    		CURRENCYSYMBOL "F"
    		CURRENCYUNIQUESYMBOL "FRF"
    		CURRENCYDECIMALPLACES 2
    		MEASUREMENTSYSTEM 1
    	END
    	BEGIN
    		LANGUAGES 0
    		COUNTRYS 23
    		COUNTRYNAME "United States"
    		DATEFORMAT 0
    		LONGDATEFORMAT 7
    		TIMEFORMAT 1
    		WEEKSTARTDAY 0
    		TIMEZONE -480
    		NUMBERFORMAT 0
    		CURRENCYNAME "US Dollar"
    		CURRENCYSYMBOL "$"
    		CURRENCYUNIQUESYMBOL "$US"
    		CURRENCYDECIMALPLACES 2
    		MEASUREMENTSYSTEM 0
    	END
    END
    KEYBOARD (tkbd)

    KEYBOARD ID <ResId.n>
    [LOCALE <LocaleName.s>] VALUE <Value.n>
    Notes:

    Example:
    MIDI (MIDI)

    MIDI ID <ResId.n> <string.s>
    Notes:

    Example:
    HARDSOFTBUTTONDEFAULT (hsbd)

    HARDSOFTBUTTONDEFAULT ID <ResId.n>
    [LOCALE <LocaleName.s>]
    BEGIN
    	BEGIN
    		[NUMBER <number.n>]
    		[CREATOR <creator.s>]
    	END
    	...
    END
    
    Notes:

    Example:
    HARDSOFTBUTTONDEFAULT ID 10000
    BEGIN
    	BEGIN
    		NUMBER 516
    		CREATOR "date"
    	END
    	BEGIN
    		NUMBER 517
    		CREATOR "addr"
    	END
    	BEGIN
    		NUMBER 518
    		CREATOR "todo"
    	END
    	BEGIN
    		NUMBER 519
    		CREATOR "memo"
    	END
    	BEGIN
    		NUMBER 521
    		CREATOR "sync"
    	END
    	BEGIN
    		NUMBER 264
    		CREATOR "lnch"
    	END
    	BEGIN
    		NUMBER 267
    		CREATOR "calc"
    	END
    
    END
    SYSAPPLICATIONPREFERENCES (pref)

    SYSAPPLICATIONPREFERENCES ID <ResId.n>
    [LOCALE <LocaleName.s>]
    		PRIORITY <Priority.n>
    		STACKSIZE <StackSize.n>
    		MINHEAPSPACE <MinHeapSpace.n>
    
    Notes:

    Example:
    SYSAPPLICATIONPREFERENCES ID 1000 PRIORITY 30 STACKSIZE 0x1000 MINHEAPSPACE 0x1000
    
    SEARCHTABLE (tSCH)

    SEARCHTABLE ID <ResId.n> [LOCALE <LocaleName.s>]
    BEGIN
    	OFFSET_s0 <Offset_s0.n>
    	OFFSET_sD <Offset_sD.n>
    	OFFSET_sK <Offset_sK.n>
    	OFFSET_sM <Offset_sM.n>
    	OFFSET_sU <Offset_sU.n>
    	OFFSET_sP <Offset_sP.n>
    	OFFSET_sA <Offset_sA.n>
    	OFFSET_sG <Offset_sG.n>
    	OFFSET_sR <Offset_sR.n>
    	BEGIN
    		ACTION <Action.n> NEXTSTATE <NextState.n> DATA <data.n>
    		...
    	END
    	BEGIN
    		ACTION <Action.n> NEXTSTATE <NextState.n> DATA <data.n>
    		...
    	END
    	BEGIN
    		ACTION <Action.n> NEXTSTATE <NextState.n> DATA <data.n>
    		...
    	END
    	BEGIN
    		ACTION <Action.n> NEXTSTATE <NextState.n> DATA <data.n>
    		...
    	END
    	BEGIN
    		ACTION <Action.n> NEXTSTATE <NextState.n> DATA <data.n>
    		...
    	END
    	BEGIN
    		ACTION <Action.n> NEXTSTATE <NextState.n> DATA <data.n>
    		...
    	END
    	BEGIN
    		ACTION <Action.n> NEXTSTATE <NextState.n> DATA <data.n>
    		...
    	END
    	BEGIN
    		ACTION <Action.n> NEXTSTATE <NextState.n> DATA <data.n>
    		...
    	END
    	BEGIN
    		ACTION <Action.n> NEXTSTATE <NextState.n> DATA <data.n>
    		...
    	END
    END
    
    Notes:

    Example:
    SEARCHTABLE ID 32001 LOCALE "jpJP" 
    BEGIN
    	OFFSET_s0 18
    	OFFSET_sD 1042
    	OFFSET_sK 2066
    	OFFSET_sM 3090
    	OFFSET_sU 4114
    	OFFSET_sP 5138
    	OFFSET_sA 6162
    	OFFSET_sG 7186
    	OFFSET_sR 8210
    	BEGIN
    		ACTION 17 NEXTSTATE 0 DATA 256
    		ACTION 17 NEXTSTATE 0 DATA 257
    		ACTION 17 NEXTSTATE 0 DATA 258
    		...
    	END
    	...
    END
    
    TEXTTABLE (ttbl)

    TEXTTABLE ID <ResId.n> [LOCALE <LocaleName.s>] [COMPRESS]
    VERSION <Version.n>	9 or 10
    TABLETYPE <TableType.n> 1 .. 17
    FLAG <Flag.n>
    MIN <Min.n>
    MAX <Max.n>
    DEFAULTOUTPUT <DefaultOutput.n>
    NUMELEMENTBITS <NumElementBits.n>
    NUMINDEXEDDATALENBITS <NumIndexedDataLenBits.n>
    NUMRESULTBITS <NumResultBits.n>
    INDEXDATAOFFSET <IndexDataOffset.n>
    BEGIN
    	...
    END
    
    Notes:

    Example:
    TEXTTABLE ID 1000 LOCALE "jpJP" COMPRESS
    VERSION 9
    TABLETYPE 2
    FLAG 3758096384
    MIN 64
    MAX 252
    DEFAULTOUTPUT 1
    NUMELEMENTBITS 8
    NUMINDEXEDDATALENBITS 0
    NUMRESULTBITS 8
    INDEXDATAOFFSET 215
    BEGIN
    	...
    END
    
    TABLELIST (ttli)

    TABLELIST ID <ResId.n> [LOCALE <LocaleName.s>]
    BEGIN
    	TYPE <ResType.s> ID <ID.n> INDEX <Index.n>
    	...
    END
    
    Notes:

    Example:
    TABLELIST ID 1000
    BEGIN
    	TYPE "ttbl" ID 32034 INDEX 40
    	TYPE "ttbl" ID 32030 INDEX 46
    	TYPE "ttbl" ID 32008 INDEX 47
    	TYPE "ttbl" ID 32027 INDEX 10
    	TYPE "ttbl" ID 32028 INDEX 11
    	TYPE "ttbl" ID 32027 INDEX 12
    	TYPE "ttbl" ID 32029 INDEX 13
    	TYPE "ttbl" ID 32031 INDEX 45
    	TYPE "ttbl" ID 32032 INDEX 43
    	TYPE "ttbl" ID 32033 INDEX 44
    	TYPE "ttbl" ID 32035 INDEX 50
    	TYPE "tSTL" ID 32001 INDEX 16
    	TYPE "csli" ID 32001 INDEX 49
    END
    
    CHARSETLIST (csli)

    CHARSETLIST ID <ResId.n> [LOCALE <LocaleName.s>]
    BEGIN
    	NAME <Name.s> ID <ID.n>
    	...
    END
    
    Notes:

    Example:
    CHARSETLIST ID 1000
    BEGIN
    	NAME "us-ascii" ID 1
    	NAME "ASCII" ID 1
    	NAME "ISO646-US" ID 1
    	NAME "us" ID 1
    	NAME "IBM367" ID 1
    	NAME "cp367" ID 1
    	NAME "csASCII" ID 1
    	NAME "shift_jis" ID 4
    	NAME "shift-jis" ID 4
    	NAME "sjis" ID 4
    END
    

    ID Generation Support

    GENERATEHEADER

    GENERATEHEADER <HeaderFile.s>
    Example: RESETAUTOID

    RESETAUTOID <IDBase.n>
    Example: International Support

    Example: TRANSLATION

    TRANSLATION <Language.s>
    BEGIN
      <STRINGTRANSLATIONS>
    END
    Where <STRINGTRANSLATIONS> is one or more of:

    <Original.s> = <Translated.ss>
    Notes:

    Example:

    Known Bugs

    Further Reading