More Disk Space™   


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,  

/* 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.   


 copyright 1998 by Alysis Software Corporation.  More Disk Space, SuperDisk!, eDisk, Compatibility INIT, the Alysis Resource Compressor, the Complete Delete, the Alysis Disk Expander, the Alysis Installer, and Safety Belt are tradmarks of Alysis Software Corporation.  DPI-On-The-Fly and the IPM are trademarks of NEC Technologies, Inc.