From 66ed983098f631f3f3b93eebf3b162e9b0996479 Mon Sep 17 00:00:00 2001 From: "Christian A. Weber" Date: Sun, 17 May 1992 03:27:44 +0000 Subject: =?UTF-8?q?Autodocs=20vervollst=C3=A4ndigt,=20Modus-Abfrage=20korr?= =?UTF-8?q?igiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/CompressBlock.S | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'Source/CompressBlock.S') diff --git a/Source/CompressBlock.S b/Source/CompressBlock.S index 36bed53..9bec2d3 100644 --- a/Source/CompressBlock.S +++ b/Source/CompressBlock.S @@ -1,11 +1,11 @@ ** -** $Id: CompressBlock.S,v 2.1 92/05/13 01:48:05 chris Exp $ -** $Revision: 2.1 $ +** $Id: CompressBlock.S,v 21.1 92/05/15 03:23:52 chris Exp $ +** $Revision: 21.1 $ ** ** $Filename: CompressBlock.S $ ** $Author: chris $ ** $Release: $ -** $Date: 92/05/13 01:48:05 $ +** $Date: 92/05/15 03:23:52 $ ** ** iff.library/IFFL_CompressBlock ** @@ -22,9 +22,10 @@ INCLUDE "IffLib.i" - XREF ClearError + XREF SetError XDEF CompressBlockFunc + XDEF Compress_NONE,Compress_BYTERUN1 ;,Compress_FIBDELTA ******* iff.library/IFFL_CompressBlock ************************************** * @@ -48,10 +49,15 @@ * size - Number of data bytes to compress * mode - Compression mode. Currently, the following modes * are supported: -* $$$ +* +* IFFL_COMPR_NONE - Vanilla copy +* IFFL_COMPR_BYTERUN1 - CmpByteRun1 (ILBM BODY data) +* IFFL_COMPR_FIBDELTA - Fibonacci Delta (8SVX BODY data) * * RESULTS * Length of compressed data or 0 if an error occurred. +* IFFL_IFFError() returns IFFL_ERROR_BADCOMPRESSION if you ask for +* an unsupported compression mode. * * SEE ALSO * IFFL_DecompressBlock() @@ -59,17 +65,23 @@ ***************************************************************************** CompressBlockFunc: - tst.l d1 ; Modus == 0 ? - beq.b Mode_Copy - subq.l #1,d1 ; Modus == 1 ? - beq.b Mode_CmpByteRun1 - moveq.l #0,d0 + subq.l #1,d1 + beq.b Compress_BYTERUN1 ; Modus == 1 + bmi.b Compress_NONE ; Modus == 0 + + *** Unbekannter Modus --> Error setzen + + movem.l a5-a6,-(SP) + movea.l a6,a5 ; A5 : IFFBase für SetError() + moveq.l #IFFL_ERROR_BADCOMPRESSION,d0 + bsr SetError ; Setzt auch D0 auf 0 + movem.l (SP)+,a5-a6 rts ***************************************************************************** -** Kopiermodus +** Kopiermodus (für CompressBlock() UND DecompressBlock() benutzt) -Mode_Copy: movem.l d0/a6,-(SP) +Compress_NONE: movem.l d0/a6,-(SP) movea.l iffb_SysBase(a6),a6 JSRLIB CopyMem movem.l (SP)+,d0/a6 @@ -78,7 +90,7 @@ Mode_Copy: movem.l d0/a6,-(SP) ***************************************************************************** ** CmpByteRun1 komprimieren -Mode_CmpByteRun1: +Compress_BYTERUN1: movem.l d2-d3/a2-a3,-(SP) lea (a0,d0.l),a2 ; A2 : Source-Endadresse moveq #0,d3 ; Byte-Zähler @@ -140,5 +152,5 @@ CountEq: move.l a0,-(SP) 3$: move.l (SP)+,a0 rts - END + END -- cgit v1.2.3