1 2#------------------------------------------------------------------------------ 3# $File: palm,v 1.15 2021/12/16 21:50:06 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!:mime application/x-mobipocket-ebook 59# MobiPocket stores a full title, pointed at by the belong at offset 60# 0x54 in its header at (78.L), with length given by the belong at 61# offset 0x58. 62# there's no guarantee that the title string is null-terminated, but 63# we currently can't specify a variable-length string where the length 64# field is not at the start of the string; in practice, the data 65# following the string always seems to start with a zero byte 66>(78.L) belong x 67>>&(&0x50.L-4) string >\0 "%s" 68>0 use aportisdoc 69>>(78.L+0x68) belong >0 \b, version %d 70>>(78.L+0x1C) belong !0 \b, codepage %d 71>>(78.L+0x0C) beshort >0 \b, encrypted (type %d) 72 73# AportisDoc/PalmDOC 7460 string TEXtREAd AportisDoc/PalmDOC E-book 75>0 string >\0 "%s" 76>0 use aportisdoc 77 78# Variety of PalmOS document types 79# Michael-John Turner <mj@debian.org> 80# Thanks to Hasan Umit Ezerce <humit@tr-net.net.tr> for his DocType 8160 string BVokBDIC BDicty PalmOS document 82>0 string >\0 "%s" 8360 string DB99DBOS DB PalmOS document 84>0 string >\0 "%s" 8560 string vIMGView FireViewer/ImageViewer PalmOS document 86>0 string >\0 "%s" 8760 string PmDBPmDB HanDBase PalmOS document 88>0 string >\0 "%s" 8960 string InfoINDB InfoView PalmOS document 90>0 string >\0 "%s" 9160 string ToGoToGo iSilo PalmOS document 92>0 string >\0 "%s" 9360 string JfDbJBas JFile PalmOS document 94>0 string >\0 "%s" 9560 string JfDbJFil JFile Pro PalmOS document 96>0 string >\0 "%s" 9760 string DATALSdb List PalmOS document 98>0 string >\0 "%s" 9960 string Mdb1Mdb1 MobileDB PalmOS document 100>0 string >\0 "%s" 10160 string PNRdPPrs PeanutPress PalmOS document 102>0 string >\0 "%s" 10360 string DataPlkr Plucker PalmOS document 104>0 string >\0 "%s" 10560 string DataSprd QuickSheet PalmOS document 106>0 string >\0 "%s" 10760 string SM01SMem SuperMemo PalmOS document 108>0 string >\0 "%s" 10960 string TEXtTlDc TealDoc PalmOS document 110>0 string >\0 "%s" 11160 string InfoTlIf TealInfo PalmOS document 112>0 string >\0 "%s" 11360 string DataTlMl TealMeal PalmOS document 114>0 string >\0 "%s" 11560 string DataTlPt TealPaint PalmOS document 116>0 string >\0 "%s" 11760 string dataTDBP ThinkDB PalmOS document 118>0 string >\0 "%s" 11960 string TdatTide Tides PalmOS document 120>0 string >\0 "%s" 12160 string ToRaTRPW TomeRaider PalmOS document 122>0 string >\0 "%s" 123 124# A GutenPalm zTXT etext for use on Palm Pilots (http://gutenpalm.sf.net) 125# For version 1.xx zTXTs, outputs version and numbers of bookmarks and 126# annotations. 127# For other versions, just outputs version. 128# 12960 string zTXT A GutenPalm zTXT e-book 130>0 string >\0 "%s" 131>(0x4E.L) byte 0 132>>(0x4E.L+1) byte x (v0.%02d) 133>(0x4E.L) byte 1 134>>(0x4E.L+1) byte x (v1.%02d) 135>>>(0x4E.L+10) beshort >0 136>>>>(0x4E.L+10) beshort <2 - 1 bookmark 137>>>>(0x4E.L+10) beshort >1 - %d bookmarks 138>>>(0x4E.L+14) beshort >0 139>>>>(0x4E.L+14) beshort <2 - 1 annotation 140>>>>(0x4E.L+14) beshort >1 - %d annotations 141>(0x4E.L) byte >1 (v%d. 142>>(0x4E.L+1) byte x %02d) 143 144# Palm OS .prc file types 14560 string libr 146# flags, only bit 0 or bit 6 147# https://en.wikipedia.org/wiki/PRC_%28Palm_OS%29 148# https://web.mit.edu/tytso/www/pilot/prc-format.html 149>0x20 beshort&0xffbe 0 150>>0 string >\0 Palm OS dynamic library data "%s" 15160 string ptch Palm OS operating system patch data 152>0 string >\0 "%s" 153 154# Mobipocket (www.mobipocket.com), donated by Carl Witty 15560 string BOOKMOBI Mobipocket E-book 156>0 string >\0 "%s" 157