53#include "hpa101saptype.h"
59#define CS_LZH_VERSION 1
61#define CS_LZH1 (1 << 4)
62#define CS_LZH2 (2 << 4)
63#define CS_LZH3 (3 << 4)
64#define CS_LZH4 (4 << 4)
65#define CS_LZH5 (5 << 4)
66#define CS_LZH6 (6 << 4)
67#define CS_LZH7 (7 << 4)
68#define CS_LZH8 (8 << 4)
69#define CS_LZH9 (9 << 4)
73#define CS_NORMAL_COMPRESS 0x0
74#define CS_INIT_COMPRESS 0x1
75#define CS_INIT_DECOMPRESS 0x1
79#define CS_GRAPHIC_DATA 0x8
82#define CS_ALGORITHM_LZC (SAP_BYTE) 1
83#define CS_ALGORITHM_LZH (SAP_BYTE) 2
90#define CS_END_INBUFFER 3
91#define CS_END_OUTBUFFER 2
92#define CS_END_OF_STREAM 1
95#define CS_IEND_OF_STREAM -1
96#define CS_IEND_OUTBUFFER -2
97#define CS_IEND_INBUFFER -3
100#define CS_E_OUT_BUFFER_LEN -10
101#define CS_E_IN_BUFFER_LEN -11
102#define CS_E_NOSAVINGS -12
103#define CS_E_INVALID_SUMLEN -13
104#define CS_E_IN_EQU_OUT -14
105#define CS_E_INVALID_ADDR -15
106#define CS_E_FATAL -19
107#define CS_E_BOTH_ZERO -20
108#define CS_E_UNKNOWN_ALG -21
109#define CS_E_UNKNOWN_TYPE -22
112#define CS_E_FILENOTCOMPRESSED -50
113#define CS_E_MAXBITS_TOO_BIG -51
114#define CS_E_BAD_HUF_TREE -52
115#define CS_E_NO_STACKMEM -53
116#define CS_E_INVALIDCODE -54
117#define CS_E_BADLENGTH -55
119#define CS_E_STACK_OVERFLOW -60
120#define CS_E_STACK_UNDERFLOW -61
123#define CS_NOT_INITIALIZED -71
129typedef unsigned char BYTEARRAY_2[2];
130typedef unsigned char BYTEARRAY_4[4];
131typedef unsigned char BYTEARRAY_8[8];
134#define REGISTER register
140#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
144#define MAX_DIST (WSIZE-MIN_LOOKAHEAD)
146#define NONSENSE_LENBITS 2
151#define WSIZE ((unsigned) 0x4000)
153#define CS_HASH_BITS 14
155#define CS_HASH_SIZE (unsigned)(1 << CS_HASH_BITS)
157#define CS_LIT_BUFSIZE (unsigned) 0x4000
158#define CS_DIST_BUFSIZE CS_LIT_BUFSIZE
160#define HASH_MASK (CS_HASH_SIZE-1)
161#define WMASK (WSIZE-1)
175typedef SAP_USHORT ush;
196#define LARGE_ARRAY far
202#define min(a,b) ((a) < (b) ? (a) : (b))
206#define max(a,b) ((a) > (b) ? (a) : (b))
210#define MIN(a,b) ((a) < (b) ? (a) : (b))
214#define MAX(a,b) ((a) > (b) ? (a) : (b))
224#define CS_VERSION (BYTE_TYP) 1
226#define CS_ALGORITHM (BYTE_TYP) 1
232#define CHECK_GAP 4096
236#define BLOCK_MASK 0x80
240#define INIT_CS_BITS 9
241#define MAX_CS_BITS 16
243#if CS_BITS <= INIT_CS_BITS
245#define CS_BITS (INIT_CS_BITS + 1)
248#if CS_BITS > MAX_CS_BITS
250#define CS_BITS MAX_CS_BITS
257typedef SAP_BYTE BYTE_TYP;
260typedef long int CODE_INT;
265typedef long int COUNT_INT;
266typedef unsigned short CODE_ENTRY;
297#define MAXCODE(n_bits) (((CODE_INT) 1 << (n_bits)) - 1)
298#define HTABOF(i) csc->htab[i]
299#define CODETABOF(i) csc->codetab[i]
311#define TAB_PREFIXOF(i) csc->Prefixtab[i]
312#define TAB_SUFFIXOF(i) csc->Suffixtab[i]
322extern CODE_INT DE_STACK_OFFSET;
323#define DE_STACK &TAB_SUFFIXOF(DE_STACK_OFFSET)
326#define CL_HASH(size) \
327 memset (csc->htab, 0xff, (size) * sizeof (COUNT_INT));
332#define BYTES_OUT(dst,src,len) \
333 memcpy (dst,src,len); dst += len;
335#define BYTES_IN(to,from,len) \
336 memcpy (to,from,len); from += len;
340#define BYTES_OUT(dst,src,len) \
342 register int i_i = len; \
343 register BYTE_TYP *bufp = src; \
344 while (i_i-- > 0) *dst++ = *bufp++; \
347#define BYTES_IN(to,from,len) \
349 register int i_i = len; \
350 register BYTE_TYP *bufp = to; \
351 while (i_i-- > 0) *bufp++ = *from++; \
358#define INVALIDCODE 99
360#define LENGTH_CODES 29
363#define NONSENSE_LENBITS 2
372#define DUMPBITS(n) { cshu->bb >>= (n); cshu->bk -= (n); }
376 while (cshu->bk < (n)) \
378 if (cshu->MemInoffset < cshu->MemInsize) \
380 cshu->bytebuf = (unsigned short) cshu->MemInbuffer[(cshu->MemInoffset)++]; \
384 if (!bitcount) break; \
385 cshu->bb |= (cshu->bytebuf) << cshu->bk; \
401typedef struct HUFT HUFTREE;
402#define DE_STACK_SIZE 0x1000
404#define BUF_SIZE1 (sizeof(COUNT_INT) * HSIZE > 2*WSIZE ? \
405 sizeof(COUNT_INT) * HSIZE : 2*WSIZE)
408#define DUMMY_SIZE 32768U
411#define DUMMY_SIZE (sizeof(HUFTREE) > 8 ? \
412 sizeof(HUFTREE) * 0x1E00 : 0xF000)
415#define BUF_SIZE2 (sizeof(CODE_ENTRY) * CSIZE > DUMMY_SIZE ? \
416 sizeof(CODE_ENTRY) * CSIZE : DUMMY_SIZE)
424 SAP_BYTE *MemOutbuffer;
425 SAP_BYTE *MemInbuffer;
426 unsigned MemOutoffset;
428 unsigned MemInoffset;
430 unsigned BytesPending, SlideOffset;
437 unsigned AllocStackSize;
440 unsigned save_n, save_d, save_e;
465 unsigned dd_ll[286+30];
466 SAP_BYTE Slide[(BUF_SIZE1)];
467 HUFTREE InterBuf[DE_STACK_SIZE];
477 BYTE_TYP buf1[MAX_CS_BITS];
484 BYTE_TYP *end_outbuf;
489 COUNT_INT LARGE_ARRAY htab [HSIZE];
490 CODE_ENTRY LARGE_ARRAY codetab [CSIZE];
491 CODE_ENTRY Prefixtab[(BUF_SIZE1)/4];
492 BYTE_TYP Suffixtab[(BUF_SIZE2)/4];
502 COUNT_INT checkpoint;
505 int get_size, get_r_bits;
508 BYTE_TYP * end_inbuf;
520 CODE_INT scode, soldcode, sincode, sfinchar;
534int CsDecompr (
CSHDL * hdl,
540 SAP_INT * bytes_read,
541 SAP_INT * bytes_decompressed);
543int CsDecomprLZC (
CSC * csc,
549 SAP_INT * bytes_read,
550 SAP_INT * bytes_written);
552int CsDecomprLZH (
CSHU * cshu,
558 SAP_INT * bytes_read,
559 SAP_INT * bytes_decompressed);
Definition csdecompr.h:471
Definition csdecompr.h:526
Definition csdecompr.h:420
Definition csdecompr.h:391