1 2#------------------------------------------------------------------------------ 3# $File: palm,v 1.14 2019/04/19 00:42:27 christos Exp $ 4# palm: file(1) magic for PalmOS {.prc,.pdb}: applications, docfiles, and hacks 5# 6# Brian Lalor <blalor@hcirisc.cs.binghamton.edu> 7 8# These are weak, byte 59 is not guaranteed to be 0 and there are 9# 8 character identifiers at byte 60, one I found for appl is BIGb. 10# What are the possibilities and where is this documented? 11 12# The common header format for PalmOS .pdb/.prc files is 13# { 14# char name[ 32 ]; 15# Word attributes; 16# Word version; 17# DWord creationDate; 18# DWord modificationDate; 19# DWord lastBackupDate; 20# DWord modificationNumber; 21# DWord appInfoID; 22# DWord sortInfoID; 23# char type[4]; 24# char creator[4]; 25# DWord uniqueIDSeed; 26# RecordListType recordList; 27# }; 28# 29# Datestamps are unsigned seconds since the MacOS epoch (Jan 1, 1904), 30# or Unix/POSIX time + 2082844800. 31 320 name aportisdoc 33# date is supposed to be big-endian seconds since 1 Jan 1904, but many 34# files contain the timestamp in little-endian or a completely 35# nonsensical value... 36#>36 bedate-2082844800 >0 \b, created %s 37# compression: 1=uncomp, 2=orig, 0x4448=HuffDic 38>(78.L) beshort =1 \b, uncompressed 39# compressed 40>(78.L) beshort >1 41>>(78.L+4) belong x \b, %d bytes uncompressed 42 43# appl 44#60 string appl PalmOS application 45#>0 string >\0 "%s" 46 47# HACK 48#60 string HACK HackMaster hack 49#>0 string >\0 "%s" 50 51# iSiloX e-book 5260 string SDocSilX iSiloX E-book 53>0 string >\0 "%s" 54 55# Mobipocket (www.mobipocket.com), donated by Carl Witty 56# expanded by Ralf Brown 5760 string BOOKMOBI Mobipocket E-book 58# MobiPocket stores a full title, pointed at by the belong at offset 59# 0x54 in its header at (78.L), with length given by the belong at 60# offset 0x58. 61# there's no guarantee that the title string is null-terminated, but 62# we currently can't specify a variable-length string where the length 63# field is not at the start of the string; in practice, the data 64# following the string always seems to start with a zero byte 65>(78.L) belong x 66>>&(&0x50.L-4) string >\0 "%s" 67>0 use aportisdoc 68>>(78.L+0x68) belong >0 \b, version %d 69>>(78.L+0x1C) belong !0 \b, codepage %d 70>>(78.L+0x0C) beshort >0 \b, encrypted (type %d) 71 72# AportisDoc/PalmDOC 7360 string TEXtREAd AportisDoc/PalmDOC E-book 74>0 string >\0 "%s" 75>0 use aportisdoc 76 77# Variety of PalmOS document types 78# Michael-John Turner <mj@debian.org> 79# Thanks to Hasan Umit Ezerce <humit@tr-net.net.tr> for his DocType 8060 string BVokBDIC BDicty PalmOS document 81>0 string >\0 "%s" 8260 string DB99DBOS DB PalmOS document 83>0 string >\0 "%s" 8460 string vIMGView FireViewer/ImageViewer PalmOS document 85>0 string >\0 "%s" 8660 string PmDBPmDB HanDBase PalmOS document 87>0 string >\0 "%s" 8860 string InfoINDB InfoView PalmOS document 89>0 string >\0 "%s" 9060 string ToGoToGo iSilo PalmOS document 91>0 string >\0 "%s" 9260 string JfDbJBas JFile PalmOS document 93>0 string >\0 "%s" 9460 string JfDbJFil JFile Pro PalmOS document 95>0 string >\0 "%s" 9660 string DATALSdb List PalmOS document 97>0 string >\0 "%s" 9860 string Mdb1Mdb1 MobileDB PalmOS document 99>0 string >\0 "%s" 10060 string PNRdPPrs PeanutPress PalmOS document 101>0 string >\0 "%s" 10260 string DataPlkr Plucker PalmOS document 103>0 string >\0 "%s" 10460 string DataSprd QuickSheet PalmOS document 105>0 string >\0 "%s" 10660 string SM01SMem SuperMemo PalmOS document 107>0 string >\0 "%s" 10860 string TEXtTlDc TealDoc PalmOS document 109>0 string >\0 "%s" 11060 string InfoTlIf TealInfo PalmOS document 111>0 string >\0 "%s" 11260 string DataTlMl TealMeal PalmOS document 113>0 string >\0 "%s" 11460 string DataTlPt TealPaint PalmOS document 115>0 string >\0 "%s" 11660 string dataTDBP ThinkDB PalmOS document 117>0 string >\0 "%s" 11860 string TdatTide Tides PalmOS document 119>0 string >\0 "%s" 12060 string ToRaTRPW TomeRaider PalmOS document 121>0 string >\0 "%s" 122 123# A GutenPalm zTXT etext for use on Palm Pilots (http://gutenpalm.sf.net) 124# For version 1.xx zTXTs, outputs version and numbers of bookmarks and 125# annotations. 126# For other versions, just outputs version. 127# 12860 string zTXT A GutenPalm zTXT e-book 129>0 string >\0 "%s" 130>(0x4E.L) byte 0 131>>(0x4E.L+1) byte x (v0.%02d) 132>(0x4E.L) byte 1 133>>(0x4E.L+1) byte x (v1.%02d) 134>>>(0x4E.L+10) beshort >0 135>>>>(0x4E.L+10) beshort <2 - 1 bookmark 136>>>>(0x4E.L+10) beshort >1 - %d bookmarks 137>>>(0x4E.L+14) beshort >0 138>>>>(0x4E.L+14) beshort <2 - 1 annotation 139>>>>(0x4E.L+14) beshort >1 - %d annotations 140>(0x4E.L) byte >1 (v%d. 141>>(0x4E.L+1) byte x %02d) 142 143# Palm OS .prc file types 14460 string libr 145# flags, only bit 0 or bit 6 146# https://en.wikipedia.org/wiki/PRC_%28Palm_OS%29 147# https://web.mit.edu/tytso/www/pilot/prc-format.html 148>0x20 beshort&0xffbe 0 149>>0 string >\0 Palm OS dynamic library data "%s" 15060 string ptch Palm OS operating system patch data 151>0 string >\0 "%s" 152 153# Mobipocket (www.mobipocket.com), donated by Carl Witty 15460 string BOOKMOBI Mobipocket E-book 155>0 string >\0 "%s" 156