SuperDisk!
About
Press
Marketing
Technology
Purchase
More
Disk Space
About
Press
Technology
Purchase
eDisk
About
Press
Technology
Purchase

|
 |
SuperDisk!
Technology Highlights
Operating System: |
Macintosh OS 6.x - 7.x |
Development Language: |
68000 assembly language |
Compiler: |
Symantec Think C |
Designer / Programmer: |
Justin Gray |
Artwork: |
Justin Gray and Glenn Yu |
File Compression technology
has evolved rapidly. SuperDisk! 1.x owes its speed to fast compression
algorithms. SuperDisk! 2.x has faster and tighter compression algorithms,
but it also features a more efficient decompression technique: rather
than decompressing an entire file when it is opened, the software decompresses
only the data which is required by the operating system.
SuperDisk! uses a modular codec format.
A 'cmpr' resource holds either compression or decompression code for a
particular format of data. This allows SuperDisk! to use a variety
of compression algorithms while still supporting self-extracting archives
and transportable compressed applications. Once the archive or TCA
has been compressed, SuperDisk! copies the necessary decompression resource
into the compressed file.
The SuperDisk! codec format is documented
to allow other software developers to rapidly develop new codecs or to
use the SuperDisk! codecs within their own applications under a license
agreement.
This is the header file for SuperDisk!
codecs:
/******************************************************************
SuperDisk! Modules.h
This file contains the offsets
necessary to create
add-in modules for SuperDisk!.
©Copyright 1991 by Alysis
Software Corporation.
All rights reserved.
Development Support and Module
Registration
******************************************************************/
/* Commands */
#define initializeCommand 1
#define compressCommand 2
#define decompressCommand 3
#define compressFileCommand 4
#define decompressFileCommand 5
#define makeTemporaryFileCommand
6
#define lastValidCommand 6
/* Errors */
#define badCommandError -1
#define inadequateCompressionError
-2
#define noSuchModuleErr -3
#define inadequateWorkingError -4
#define checksumError -5
#define securityFailureError -5
/* Parameter Block offsets */
#define sourceBuffer 0
#define destinationBuffer sourceBuffer+4
#define password sourceBuffer+8
#define workingBuffer sourceBuffer+12
; Must be multiple of 32 & lie on word bound
#define workingBufferSize sourceBuffer+16
#define inCount sourceBuffer+20
#define outCount sourceBuffer+24
#define callAddress sourceBuffer+28
#define checksum sourceBuffer+32
#define command sourceBuffer+36
#define callResult sourceBuffer+38
#define whichModule sourceBuffer+40
#define moduleList sourceBuffer+42
#define userMessage sourceBuffer+46
#define blockNumber sourceBuffer+52
#define fileParameterBlock sourceBuffer+56
#define miscelaneous sourceBuffer+60
/* Module table element offsets */
/* (End of table is marked by zero
in thisModuleNumber field.) */
#define thisModuleNumber 0
#define compressAddress 4
#define decompressAddress+8
/* Module characteristics by mask.
*/
#define overwritesSource 0x8000
; This module may overwrite the source buffer
#define replacesDestination 0x4000
; This module may replace the destination buffer pointer
#define carryOverWorking 0x2000
; This module prefers carry-over of the working buffer
#define initialClearWorking 0x1000
; This module requires initial clearing of the working buffer to zero bits
#define alwaysClearWorking 0x0800
; This module requires clearing of the working buffer to zero bits each
pass
#define requiresInitialization 0x0400
; This module requires initialization
#define requiresPassword 0x0200
; This module requires a password to encode/decode
#define transformationModule 0x0100
; This module may not compress at all
#define realTimeOperation 0x0080
; This module operates rapidly
#define ownFileIO 0x0080
; This module does its own File IO
/* Module characteristics by bit.
*/
#define overwritesSourceBit 15
#define replacesDestinationBit 14
#define carryOverWorkingBit 13
#define initialClearWorkingBit 12
#define alwaysClearWorkingBit 11
#define requiresInitializationBit
10
#define requiresPasswordBit 9
#define transformationModuleBit 8
#define realTimeOperationBit 7
#define ownFileIOBit 6
/* Header information offsets */
#define moduleIdentifier 4
#define moduleNumber 28
#define moduleRequiredWorking moduleNumber+2
#define modulePreferredWorking moduleNumber+6
#define moduleSize moduleNumber+10
#define moduleCharacteristics moduleNumber+14
#define modulePreferredExtension
moduleNumber+16
#define requiredModules moduleNumber+24
#define moduleName moduleNumber+32
typedef struct {
short firstUse;
short today;
short blank1;
short blank2;
short blank3;
short blank4;
short blank5;
char userOptions1;
char userOptions2;
char userOptions3;
char userOptions4;
char userOptions5;
char userOptions6;
long blank7;
long blank8;
long blank9;
char noRecurse;
char finderCopy;
long blank11;
Ptr externalCommandCaller;
long moduleWorkingBuffer;
long moduleWorkingBufferSize;
/* SuperDisk! name takes next 32
chars */
long blank12NAHalf;
long blank13;
long blank14;
long blank15;
long blank16;
long blank17;
long blank18;
long blank19;
long segmentSize;
long maximumBufferSize;
long auxilliaryBuffer;
long auxilliaryBufferSize;
HVolumeParam kill1,kill2; /*
kill 244 bytes */
long blank20,blank21,blank22,blank23,blank24,blank25,blank26,blank27,blank28;
long theDelay;
long theMDSName,blankN2,blankN3,blankN4;
long blankN5,blankN6,blankN7,blankN8;
int theMFProcessID;
unsigned short theSystemID;
char passedProtection,registeredBeta;
long listOfMDSFiles;
long bb3,bb4,bb5,bb6,bb7,bb8,bb9,bb10;
long bb11,bb12,bb13,bb14,bb15,bb16,bb17,bb18,bb19,bb20;
long thePassedCommand;
FSSpec sourceFileSpec,destinationFileSpec;
long miscellaneous;
char pending,busy,isOperationTo,blink2;
long idleTicks;
} SDParameterList;
/* List of More Disk Space commands
*/
enum {
inAppleMenu = 10,
amRegistration,
fmInstall,
fmOptions,
fmExceptions,
fmHelp,
fmQuit,
fmGoAway,
fmClose,
blink1,
externalCompress,
externalDecompress,
externalMakeAuto,
externalAutoSegmenting,
externalCompressTo,
externalDecompressTo,
externalMakeAutoTo,
externalAutoSegmentingTo,
externalCopyDataFork,
externalCopyResourceFork,
externalCopyFile,
externalProcessList,
externalAppleEvent,
externalCompareFiles,
blink34,
callCmpr,
MDSCompress,
MDSDecompress,
MDSMakeAuto,
MDSAutoSegmenting,
MDSCompressTo,
MDSDecompressTo,
MDSMakeAutoTo,
MDSAutoSegmentingTo,
MDSCopyDataFork,
MDSCopyResourceFork,
externalMDS,
externalMDSCompress,
externalMDSDecompress,
externalMDSMakeAuto,
externalMDSAutoSegmenting,
externalMDSCompressTo,
externalMDSDecompressTo,
externalMDSMakeAutoTo,
externalMDSProcessList,
MDSCopyFile,
externalCancel
};
/* Misc. favorites */
#define debug dc.w 0xa9ff
#define freeze dc.w 0x60fe
#define savem movem.l d0-d7/a0-a6,-(a7)
#define restorem movem.l (a7)+,d0-d7/a0-a6
/******************************************************************
Alysis Software Corporation.
******************************************************************/ |
 |