Initial commit.
[amiga/xmodule.git] / delta.asm
1 **
2 ** Delta.asm
3 **
4 ** Copyright (C) 1995 Bernardo Innocenti
5 **
6 ** Delta encoding/decoding routine
7 **
8
9 _DeltaDecode:
10
11 * void DeltaDecode (BYTE *dataBlock, ULONG blockSize);
12 *                   A0                D0
13 *
14 *       old=0
15 *       for i=0 to blockSize-1
16 *               new=dataBlock[i]+old
17 *               dataBlock[i]=new
18 *               old=new
19
20         MOVEQ   #0,D1
21
22 $1
23         ADD.B   (A0),D1
24         MOVE.B  D1,(A0)+
25
26         SUBQ.L  #1,D0           ; Loop
27         BNE             $1
28
29         RTS
30
31
32 _DeltaEncode:
33
34 * void DeltaEncode (BYTE *dataBlock, ULONG blockSize);
35 *                   A0                D0
36 *
37 *       old=0
38 *       for i=0 to blockSize-1
39 *               old=dataBlock[i]
40 *               new=old-new
41 *               datablock[i]=new
42
43
44         MOVE.W  D2,-(SP)
45         MOVEQ   #0,D1
46
47 $1
48         MOVE.B  (A0),D2
49         SUB.B   D2,D1
50         MOVE.B  D1,(A0)+
51
52         SUBQ.L  #1,D0           ; Loop
53         BNE             $1
54
55         MOVE.W  (SP)+,D2
56         RTS