UniBible - A Multilingual Bible Reader for the Palm
UniBible Home Screenshots Downloads Developers Unbound Bible Biola University
bible record structures for developers

Download UniBibleMaker
UniBibleMaker is a set of Java programs and Windows .bat files that helps you make a UniBible Bible database.
  • You need to have Java available on your computer.
  • If you are not using a Windows OS, you need to translate the .bat files into a shell script that your system can understand, or run the commands manually in your shell.
  • It requires your starting Bible to be in a text file in a format like this:
    Genesis 1:1: In the beginning, God created...
    Genesis 1:2: And the earth was formless...
  • It comes with a Readme.txt file that tries to give adequate instructions.
  • It is provided as-is, in the hope that it may help you out.
Download UniBibleMaker.zip

Bible Database Structure
The following should allow people familiar with Palm OS programming to construct their own UniBible files.

The database should have a creator code of "Unib" and a type code of "BBLE". It is recommended that the database name begin with "Unib-" followed by the name of the version. For example, "Unib-Arabic". All Unicode should be encoded in a big-endian format. This means that the letter "A" (0x0041) is stored in memory as "0041" and not "4100".

There are three types of records, which are included in the following order:
Version Record (only one)
Book Records (one for each book included in the file)
Chapter Records (these contain the Bible text, chapter by chapter)

One Version Record
This needs to be the first record in the Palm database. It has the following format:
UInt16Number of book records
UInt16Text direction: 0 or 1; 0 = left to right, 1 = right to left
UInt16 [array]The name of the version. A Unicode string (2 bytes per character), 100 character maximum, terminated by 0x0000.

Multiple Book Records
These records should immediately follow the Version Record.
UInt16Number of chapters in this book.
UInt16The index of the record which contains the first chapter in this book.
UInt16Text direction: 0 or 1; 0 = left to right, 1 = right to left
UInt16 [array]The name of this book. A Unicode string (2 bytes per character), 100 character maximum, terminated by 0x0000.

Multiple Chapter Records
The first chapter should immediately follow the last Book Record. All the chapter from the first book should be grouped together, followed by all the chapters from the second book, etc.
UInt16The chapter number. (First chapter is 0. Last chapter is NumberOfChapters - 1)
UInt8A number representing what character encoding was used for this chapter's text. 0 for Unicode, or one of the options from the Encoding Format table below.
UInt8Text direction: 0 or 1; 0 = left to right, 1 = right to left
UInt16The size in Unicode-characters of the uncompressed chapter text. (All chapters must have their text compressed with zlib.) If all the chapter said was "John" (four Unicode characters) it would have a length of 4.
UInt16The length of the chapter's name (from the uncompressed text) in Unicode-characters. If the chapter's title is "14", the size would be 2.
UInt8 [array]The chapter text, compressed by the zlib algorithm.
  • Be aware that UniBible will prepend the name of the book to the chapter title. So if the chapter title is "14", and the book name is "John", you will get a chapter heading of "John 14" once you open the chapter.
  • Use 0x000d as a new line character inside the chapter text. It's a good idea to put a new line character right before each new verse number, so UniBible can display a pick list of verses to the user.
  • The chapter text needs to terminate with 0x0000
  • You can save space by using one of the single-byte character encodings listed below. Compress your single-byte array using zlib. UniBible will extract it, and convert it into an array of the corresponding two-byte Unicode characters. Don't forget to set the Encoding Format field to the correct value.

Encoding Formats
Use this Codeto represent this Encoding Format
0UnicodeBigUnicodeBig: big-endian, two-byte unicode
18859_1ISO Latin-1 (Western European)
28859_2ISO Latin-2 (Croatian, Czech, Hungarian, Polish, Romanian, Slovak, Slovenian)
38859_3ISO Latin-3 (Esperanto, Maltese, Turkish, Galician)
48859_4ISO Latin-4 (Baltic: Latvian, Lithuanian, Greenlandic, Lappish)
58859_5(Variant forms of Cyrillic: Byelorussian, Bulgarian, Macedonian, Russian, Serbian, Ukranian)
68859_6ASCII plus Arabic
78859_7ASCII plus Greek
88859_8ASCII plus Hebrew
98859_9ISO Latin-5 (Turkish)
10    8859_10ISO Latin-6 (Lappish, Nordic, Inuit)
128859_13ISO Latin-8 (Baltic Rim languages)
138859_14ISO Latin-9 (Sami)
16CP424EBCDIC for Hebrew
17CP437DOS English character set
18CP737DOS ASCII plus Greek
19CP775DOS ASCII plus Baltic
20CP850DOS ASCII plus Western European
21CP852DOS ASCII plus Central European
22CP855DOS ASCII plus Cyrillic
24CP857DOS ASCII plus Turkish
25CP860DOS ASCII plus Portuguese
26CP861DOS ASCII plus Icelandic
27CP862DOS ASCII plus Hebrew
28CP863DOS ASCII plus Canadian French
29CP864DOS ASCII plus Arabic
30CP865DOS ASCII plus Nordic
31CP866DOS ASCII plus Cyrillic
32CP869DOS ASCII plus modern Greek
33CP874DOS ASCII plus Thai
34CP1006AIX Arabic used in Pakistan for Urdu
35CP1250Windows 3.1 Central European
36CP1251Windows, ASCII plus Cyrillic
37CP1252Windows, Western European
38CP1253Windows, ASCII plus Greek
39CP1254Windows, ASCII plus Turkish
40CP1255Windows, ASCII plus Hebrew
41CP1256Windows, ASCII plus Arabic
42CP1257Windows, ASCII plus Baltic
43CP1258Windows, ASCII plus Vietnamese
44KOI8_RASCII and Cyrillic for Russian

Questions or Comments?
© Biola University