IFND LIBRARIES_XFDMASTER_I LIBRARIES_XFDMASTER_I SET 1 ** ** $VER: xfdmaster.i 37.2 (4.4.96) ** ** Copyright © 1994-96 by Georg Hörmann ** All Rights Reserved ** IFND EXEC_LIBRARIES_I include "exec/libraries.i" ENDC ;====================================================================== ; Library Base ;====================================================================== STRUCTURE xfdMasterBase,LIB_SIZE ULONG xfdm_SegList ; PRIVATE APTR xfdm_DosBase ; may be used for I/O etc. APTR xfdm_FirstSlave ; list of available slaves APTR xfdm_FirstForeman ; PRIVATE ULONG xfdm_MinBufferSize ; (V36) min. bufsize for xfdRecogBuffer() ULONG xfdm_MinLinkerSize ; (V36) min. bufsize for xfdRecogLinker() LABEL xfdMasterBase_SIZE XFDM_VERSION EQU 37 ;for OpenLibrary() XFDM_NAME MACRO dc.b "xfdmaster.library",0 ENDM ;====================================================================== ; Object Types (V36) ;====================================================================== XFDOBJ_BUFFERINFO EQU 1 ; xfdBufferInfo structure XFDOBJ_SEGMENTINFO EQU 2 ; xfdSegmentInfo structure XFDOBJ_LINKERINFO EQU 3 ; xfdLinkerInfo structure XFDOBJ_SCANNODE EQU 4 ; (V37) xfdScanNode structure XFDOBJ_SCANHOOK EQU 5 ; (V37) xfdScanHook structure XFDOBJ_MAX EQU 5 ; PRIVATE ;====================================================================== ; Buffer Info ;====================================================================== STRUCTURE xfdBufferInfo,0 APTR xfdbi_SourceBuffer ; pointer to source buffer ULONG xfdbi_SourceBufLen ; length of source buffer APTR xfdbi_Slave ; PRIVATE APTR xfdbi_PackerName ; name of recognized packer UWORD xfdbi_PackerFlags ; flags for recognized packer LABEL xfdbi_MaxSpecialLen ; max. length of special info (eg. password) UWORD xfdbi_Error ; error return code APTR xfdbi_TargetBuffer ; pointer to target buffer ULONG xfdbi_TargetBufMemType ; memtype of target buffer ULONG xfdbi_TargetBufLen ; full length of buffer ULONG xfdbi_TargetBufSaveLen ; used length of buffer ULONG xfdbi_DecrAddress ; address to load decrunched file ULONG xfdbi_JmpAddress ; address to jump in file APTR xfdbi_Special ; special decrunch info (eg. password) UWORD xfdbi_Flags ; (V37) flags to influence recog/decr LABEL xfdBufferInfo_SIZE ;====================================================================== ; Segment Info ;====================================================================== STRUCTURE xfdSegmentInfo,0 ULONG xfdsi_SegList ; value received by LoadSeg() APTR xfdsi_Slave ; PRIVATE APTR xfdsi_PackerName ; name of recognized packer UWORD xfdsi_PackerFlags ; flags for recognized packer LABEL xfdsi_MaxSpecialLen ; max. length of special info (eg. password) UWORD xfdsi_Error ; error return code APTR xfdsi_Special ; special decrunch info (eg. password) UWORD xfdsi_RelMode ; (V34) relocation mode UWORD xfdsi_Flags ; (V37) flags to influence recog/decr LABEL xfdSegmentInfo_SIZE ;====================================================================== ; Linker Info (V36) ;====================================================================== STRUCTURE xfdLinkerInfo,0 APTR xfdli_Buffer ; pointer to buffer ULONG xfdli_BufLen ; length of buffer APTR xfdli_LinkerName ; name of recognized linker FPTR xfdli_Unlink ; PRIVATE UWORD xfdli_Reserved ; set to NULL UWORD xfdli_Error ; error return code ULONG xfdli_Hunk1 ; PRIVATE ULONG xfdli_Hunk2 ; PRIVATE ULONG xfdli_Amount1 ; PRIVATE ULONG xfdli_Amount2 ; PRIVATE APTR xfdli_Save1 ; pointer to first unlinked file APTR xfdli_Save2 ; pointer to second unlinked file ULONG xfdli_SaveLen1 ; length of first unlinked file ULONG xfdli_SaveLen2 ; length of second unlinked file LABEL xfdLinkerInfo_SIZE ;====================================================================== ; Scan Node (V37) ;====================================================================== STRUCTURE xfdScanNode,0 APTR xfdsn_Next ; pointer to next xfdScanNode structure (or NULL) APTR xfdsn_Save ; pointer to data ULONG xfdsn_SaveLen ; length of data APTR xfdsn_PackerName ; name of recognized packer UWORD xfdsn_PackerFlags ; flags for recognized packer LABEL xfdScanNode_SIZE ;====================================================================== ; Scan Hook (V37) ;====================================================================== STRUCTURE xfdScanHook,0 APTR xfdsh_Entry ; entrypoint of hook code APTR xfdsh_Data ; private data of hook ULONG xfdsh_ToDo ; bytes still to scan (READ ONLY) ULONG xfdsh_ScanNode ; found data right now (or NULL) (READ ONLY) LABEL xfdScanHook_SIZE ;====================================================================== ; Error Codes ;====================================================================== XFDERR_OK EQU $0000 ; no error XFDERR_NOMEMORY EQU $0001 ; error allocating memory XFDERR_NOSLAVE EQU $0002 ; no slave entry in info structure XFDERR_NOTSUPPORTED EQU $0003 ; slave doesn't support called function XFDERR_UNKNOWN EQU $0004 ; unknown file XFDERR_NOSOURCE EQU $0005 ; no sourcebuffer/seglist specified XFDERR_WRONGPASSWORD EQU $0006 ; wrong password for decrunching XFDERR_BADHUNK EQU $0007 ; bad hunk structure XFDERR_CORRUPTEDDATA EQU $0008 ; crunched data is corrupted XFDERR_MISSINGRESOURCE EQU $0009 ; (V34) missing external resource (eg. libs) XFDERR_WRONGKEY EQU $000a ; (V35) wrong 16/32 bit key XFDERR_BETTERCPU EQU $000b ; (V37) better CPU required XFDERR_HOOKBREAK EQU $000c ; (V37) hook caused break XFDERR_DOSERROR EQU $000d ; (V37) dos error XFDERR_UNDEFINEDHUNK EQU $1000 ; (V34) undefined hunk type XFDERR_NOHUNKHEADER EQU $1001 ; (V34) file is not executable XFDERR_BADEXTTYPE EQU $1002 ; (V34) bad hunk_ext type XFDERR_BUFFERTRUNCATED EQU $1003 ; (V34) unexpected end of file XFDERR_WRONGHUNKAMOUNT EQU $1004 ; (V34) wrong amount of hunks XFDERR_NOOVERLAYS EQU $1005 ; (V36) overlays not allowed XFDERR_UNSUPPORTEDHUNK EQU $2000 ; (V34) hunk type not supported XFDERR_BADRELMODE EQU $2001 ; (V34) unknown XFDREL_#? mode ;====================================================================== ; Relocation modes (V34) ;====================================================================== XFDREL_DEFAULT EQU $0000 ; use memory types given by hunk_header XFDREL_FORCECHIP EQU $0001 ; force all hunks to chip ram XFDREL_FORCEFAST EQU $0002 ; force all hunks to fast ram ;====================================================================== ; Values for xfd??_PackerFlags ;====================================================================== BITDEF XFDPF,RELOC,0 ; relocatible file packer BITDEF XFDPF,ADDR,1 ; absolute address file packer BITDEF XFDPF,DATA,2 ; data file packer BITDEF XFDPF,PASSWORD,4 ; packer requires password BITDEF XFDPF,RELMODE,5 ; (V34) decruncher supports xfdsi_RelMode BITDEF XFDPF,KEY16,6 ; (V35) packer requires 16 bit key BITDEF XFDPF,KEY32,7 ; (V35) packer requires 32 bit key BITDEF XFDPF,EXTERN,15 ; (V37) PRIVATE ;====================================================================== ; Values for xfd??_Flags (V37) ;====================================================================== BITDEF XFDF,RECOGEXTERN,0 ; use external slaves for xfdRecog#?() ;====================================================================== ; Flags for xfdTestHunkStructureFlags() (V36) ;====================================================================== BITDEF XFDTH,NOOVERLAYS,0 ; abort on hunk_overlay ($3f5) ;====================================================================== ; Flags for xfdStripHunks() (V36) ;====================================================================== BITDEF XFDSH,NAME,0 ; strip hunk_name ($3e8) BITDEF XFDSH,SYMBOL,1 ; strip hunk_symbol ($3f0) BITDEF XFDSH,DEBUG,2 ; strip hunk_debug ($3f1) ;====================================================================== ; Flags for xfdScanData() (V37) ;====================================================================== BITDEF XFDSD,USEEXTERN,0 ; use external slaves for scanning BITDEF XFDSD,SCANODD,1 ; scan at odd addresses too ;====================================================================== ; Foreman ;====================================================================== STRUCTURE xfdForeman,0 STRUCT xfdf_Security,4 ; moveq #-1,d0 : rts STRUCT xfdf_ID,4 ; set to XFDF_ID UWORD xfdf_Version ; set to XFDF_VERSION UWORD xfdf_Reserved ; not used by now, set to NULL ULONG xfdf_Next ; PRIVATE ULONG xfdf_SegList ; PRIVATE APTR xfdf_FirstSlave ; first slave (see below) LABEL xfdForeman_SIZE XFDF_ID EQU (("X"<<24)!("F"<<16)!("D"<<8)!("F")) XFDF_VERSION EQU 1 ;====================================================================== ; Slave ;====================================================================== STRUCTURE xfdSlave,0 APTR xfds_Next ; next slave (or NULL) UWORD xfds_Version ; set to XFDS_VERSION UWORD xfds_MasterVersion ; minimum XFDM_VERSION required APTR xfds_PackerName ; NULL-terminated name of packer UWORD xfds_PackerFlags ; flags for packer UWORD xfds_MaxSpecialLen ; max. length of special info (eg. password) FPTR xfds_RecogBuffer ; buffer recognition code (or NULL) FPTR xfds_DecrunchBuffer ; buffer decrunch code (or NULL) LABEL xfds_ScanData ; (V37) XFDPFB_DATA: scan code (or NULL) FPTR xfds_RecogSegment ; segment recognition code (or NULL) LABEL xfds_VerifyData ; (V37) XFDPFB_DATA: verify code (or NULL) FPTR xfds_DecrunchSegment ; segment decrunch code (or NULL) UWORD xfds_SlaveID ; (V36) slave ID (only internal slaves) UWORD xfds_ReplaceID ; (V36) ID of slave to be replaced ULONG xfds_MinBufferSize ; (V36) min. bufsize for RecogBufferXYZ() LABEL xfdSlave_SIZE XFDS_VERSION EQU 2 ;====================================================================== ; Internal Slave IDs (V36) ;====================================================================== XFDID_BASE EQU $8000 XFDID_PowerPacker23 EQU (XFDID_BASE+$0001) XFDID_PowerPacker30 EQU (XFDID_BASE+$0003) XFDID_PowerPacker30Enc EQU (XFDID_BASE+$0005) XFDID_PowerPacker30Ovl EQU (XFDID_BASE+$0007) XFDID_PowerPacker40 EQU (XFDID_BASE+$0009) XFDID_PowerPacker40Lib EQU (XFDID_BASE+$000a) XFDID_PowerPacker40Enc EQU (XFDID_BASE+$000b) XFDID_PowerPacker40LibEnc EQU (XFDID_BASE+$000c) XFDID_PowerPacker40Ovl EQU (XFDID_BASE+$000d) XFDID_PowerPacker40LibOvl EQU (XFDID_BASE+$000e) XFDID_PowerPackerData EQU (XFDID_BASE+$000f) XFDID_PowerPackerDataEnc EQU (XFDID_BASE+$0010) XFDID_ByteKiller13 EQU (XFDID_BASE+$0011) XFDID_ByteKiller20 EQU (XFDID_BASE+$0012) XFDID_ByteKiller30 EQU (XFDID_BASE+$0013) XFDID_ByteKillerPro10 EQU (XFDID_BASE+$0014) XFDID_ByteKillerPro10Pro EQU (XFDID_BASE+$0015) XFDID_DragPack10 EQU (XFDID_BASE+$0016) XFDID_TNMCruncher11 EQU (XFDID_BASE+$0017) XFDID_HQCCruncher20 EQU (XFDID_BASE+$0018) XFDID_RSICruncher14 EQU (XFDID_BASE+$0019) XFDID_ANCCruncher EQU (XFDID_BASE+$001a) XFDID_ReloKit10 EQU (XFDID_BASE+$001b) XFDID_HighPressureCruncher EQU (XFDID_BASE+$001c) XFDID_STPackedSong EQU (XFDID_BASE+$001d) XFDID_TSKCruncher EQU (XFDID_BASE+$001e) XFDID_LightPack15 EQU (XFDID_BASE+$001f) XFDID_CrunchMaster10 EQU (XFDID_BASE+$0020) XFDID_HQCCompressor100 EQU (XFDID_BASE+$0021) XFDID_FlashSpeed10 EQU (XFDID_BASE+$0022) XFDID_CrunchManiaData EQU (XFDID_BASE+$0023) XFDID_CrunchManiaDataEnc EQU (XFDID_BASE+$0024) XFDID_CrunchManiaLib EQU (XFDID_BASE+$0025) XFDID_CrunchManiaNormal EQU (XFDID_BASE+$0026) XFDID_CrunchManiaSimple EQU (XFDID_BASE+$0027) XFDID_CrunchManiaAddr EQU (XFDID_BASE+$0028) XFDID_DefJamCruncher32 EQU (XFDID_BASE+$0029) XFDID_DefJamCruncher32Pro EQU (XFDID_BASE+$002a) XFDID_TetraPack102 EQU (XFDID_BASE+$002b) XFDID_TetraPack11 EQU (XFDID_BASE+$002c) XFDID_TetraPack21 EQU (XFDID_BASE+$002d) XFDID_TetraPack21Pro EQU (XFDID_BASE+$002e) XFDID_TetraPack22 EQU (XFDID_BASE+$002f) XFDID_TetraPack22Pro EQU (XFDID_BASE+$0030) XFDID_DoubleAction10 EQU (XFDID_BASE+$0031) XFDID_DragPack252Data EQU (XFDID_BASE+$0032) XFDID_DragPack252 EQU (XFDID_BASE+$0033) XFDID_FCG10 EQU (XFDID_BASE+$0034) XFDID_Freeway07 EQU (XFDID_BASE+$0035) XFDID_IAMPacker10ATM5Data EQU (XFDID_BASE+$0036) XFDID_IAMPacker10ATM5 EQU (XFDID_BASE+$0037) XFDID_IAMPacker10ICEData EQU (XFDID_BASE+$0038) XFDID_IAMPacker10ICE EQU (XFDID_BASE+$0039) XFDID_Imploder EQU (XFDID_BASE+$003a) XFDID_ImploderLib EQU (XFDID_BASE+$003b) XFDID_ImploderOvl EQU (XFDID_BASE+$003c) XFDID_FileImploder EQU (XFDID_BASE+$003d) XFDID_MasterCruncher30Addr EQU (XFDID_BASE+$003f) XFDID_MasterCruncher30 EQU (XFDID_BASE+$0040) XFDID_MaxPacker12 EQU (XFDID_BASE+$0041) XFDID_PackIt10Data EQU (XFDID_BASE+$0042) XFDID_PackIt10 EQU (XFDID_BASE+$0043) XFDID_PMCNormal EQU (XFDID_BASE+$0044) XFDID_PMCSample EQU (XFDID_BASE+$0045) XFDID_XPKPacked EQU (XFDID_BASE+$0046) XFDID_XPKCrypted EQU (XFDID_BASE+$0047) XFDID_TimeCruncher17 EQU (XFDID_BASE+$0048) XFDID_TFACruncher154 EQU (XFDID_BASE+$0049) XFDID_TurtleSmasher13 EQU (XFDID_BASE+$004a) XFDID_MegaCruncher10 EQU (XFDID_BASE+$004b) XFDID_MegaCruncher12 EQU (XFDID_BASE+$004c) XFDID_ProPack EQU (XFDID_BASE+$004d) XFDID_ProPackData EQU (XFDID_BASE+$004e) XFDID_ProPackDataKey EQU (XFDID_BASE+$004f) XFDID_STCruncher10 EQU (XFDID_BASE+$0050) XFDID_STCruncher10Data EQU (XFDID_BASE+$0051) XFDID_SpikeCruncher EQU (XFDID_BASE+$0052) XFDID_SyncroPacker46 EQU (XFDID_BASE+$0053) XFDID_SyncroPacker46Pro EQU (XFDID_BASE+$0054) XFDID_TitanicsCruncher11 EQU (XFDID_BASE+$0055) XFDID_TitanicsCruncher12 EQU (XFDID_BASE+$0056) XFDID_TryItCruncher101 EQU (XFDID_BASE+$0057) XFDID_TurboSqueezer61 EQU (XFDID_BASE+$0058) XFDID_TurboSqueezer80 EQU (XFDID_BASE+$0059) XFDID_TurtleSmasher200 EQU (XFDID_BASE+$005a) XFDID_TurtleSmasher200Data EQU (XFDID_BASE+$005b) XFDID_StoneCracker270 EQU (XFDID_BASE+$005c) XFDID_StoneCracker270Pro EQU (XFDID_BASE+$005d) XFDID_StoneCracker292 EQU (XFDID_BASE+$005e) XFDID_StoneCracker299 EQU (XFDID_BASE+$005f) XFDID_StoneCracker299d EQU (XFDID_BASE+$0060) XFDID_StoneCracker300 EQU (XFDID_BASE+$0061) XFDID_StoneCracker300Data EQU (XFDID_BASE+$0062) XFDID_StoneCracker310 EQU (XFDID_BASE+$0063) XFDID_StoneCracker310Data EQU (XFDID_BASE+$0064) XFDID_StoneCracker311 EQU (XFDID_BASE+$0065) XFDID_StoneCracker400 EQU (XFDID_BASE+$0066) XFDID_StoneCracker400Data EQU (XFDID_BASE+$0067) XFDID_StoneCracker401 EQU (XFDID_BASE+$0068) XFDID_StoneCracker401Data EQU (XFDID_BASE+$0069) XFDID_StoneCracker401Addr EQU (XFDID_BASE+$006a) XFDID_StoneCracker401BetaAddr EQU (XFDID_BASE+$006b) XFDID_StoneCracker403Data EQU (XFDID_BASE+$006c) XFDID_StoneCracker404 EQU (XFDID_BASE+$006d) XFDID_StoneCracker404Data EQU (XFDID_BASE+$006e) XFDID_StoneCracker404Addr EQU (XFDID_BASE+$006f) XFDID_ChryseisCruncher09 EQU (XFDID_BASE+$0070) XFDID_QuickPowerPacker10 EQU (XFDID_BASE+$0071) XFDID_GNUPacker12 EQU (XFDID_BASE+$0072) XFDID_GNUPacker12Seg EQU (XFDID_BASE+$0073) XFDID_GNUPacker12Data EQU (XFDID_BASE+$0074) XFDID_TrashEliminator10 EQU (XFDID_BASE+$0075) XFDID_MasterCruncher30Data EQU (XFDID_BASE+$0076) XFDID_SuperCruncher27 EQU (XFDID_BASE+$0077) XFDID_UltimatePacker11 EQU (XFDID_BASE+$0078) XFDID_ProPackOld EQU (XFDID_BASE+$0079) XFDID_SACFPQCruncher EQU (XFDID_BASE+$007a) XFDID_PowerPackerPatch10 EQU (XFDID_BASE+$007b) ENDC ; LIBRARIES_XFDMASTER_I