home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 2
/
crawlyvol2.bin
/
apps
/
dtp
/
pgsmodst
/
atariimp
/
gif.s
< prev
next >
Wrap
Text File
|
1991-05-23
|
26KB
|
1,053 lines
Include "equ.h"
Include "impequ.h"
SECTION GIF,CODE,PUBLIC
***************************************************
*** ***
***************************************************
dumbentry:
clr.l d0
rts
dc.l "IMPP" ; magik number for pic import
dc.w 200
dc.l 0
table: dc.l 0
dc.l name,special,check,gifp
**************************************
* Is it really a GIF file? *
**************************************
check: move.l table,a0
move.l buff1(a0),a1
move.l (a1),a1
move.l (a1),d0
and.l #$ffffff00,d0
move.b #' ',d0
cmp.l #'GIF ',d0
bne never
bra right
***********************************
*** ***
***********************************
gifp: move.l sp,savesp
move.l table,a0
move.l flen(a0),a0
move.l (a0),piclength
move.l table,a0
move.l f_openr(a0),a0
jsr (a0)
beq rrts
clr.l gcmap
clr.l gcmapsize
clr.l picture
clr.l prefix
clr.l suffix
clr.l outcode
move.l table,a0
move.l spclnum(a0),a0
cmp.w #1,(a0)
beq impobj
***********************************
*** ***
***********************************
imppic: move.l table,a0
move.l p_open(a0),a0
jsr (a0)
beq rrts
bsr getscrdes
bsr getpicdes
move.l table,a4
move.l cwptr(a4),a4 ;ptr to window handle
move.l (a4),a4 ;window handle
move.l (a4),a4 ;ptr to window structure
lea pic,a0
move.w pc_Type(a0),pi_Type(a4)
move.w pc_SFreq(a0),pi_SFreq(a4)
move.w pc_SAngle(a0),pi_SAngle(a4)
move.w pc_SSpot(a0),pi_SSpot(a4)
move.l pc_SMap(a0),pi_SMap(a4)
move.l pc_SMap+4(a0),pi_SMap+4(a4)
move.w pc_XDpi(a0),pi_XDpi(a4)
move.w pc_YDpi(a0),pi_YDpi(a4)
move.w pc_W(a0),pi_W(a4)
move.w pc_H(a0),pi_H(a4)
move.w pc_Width(a0),pi_Width(a4)
move.w pc_BitPln(a0),pi_BitPln(a4)
move.w pc_Palet(a0),pi_Palet(a4)
move.w pi_Palet(a4),d1
mulu #pl_Sizeof,d1
move.w pi_Width(a4),d0
mulu pi_BitPln(a4),d0
mulu pi_H(a4),d0
add.l d1,d0 ;size of bitmap +( 4 words * #colors)
clr.w d1
clr.w d2
move.l table,a0
move.l m_alloc(a0),a0
jsr (a0)
beq abortpic
move.l table,a3
move.l cwptr(a3),a3
move.l (a3),a3
move.l (a3),a3
move.l a0,pi_Ptr(a3)
move.l (a0),a4
move.l a4,picptr
bsr putcolor
move.l picptr,picptr2
bsr putpic
move.l table,a0
move.l p_close(a0),a0
jsr (a0)
move.l table,a0
move.l f_closer(a0),a0
jmp (a0)
abortpic:
bsr purgepic
move.l table,a0
move.l p_abort(a0),a0
jsr (a0)
abort0: move.l table,a0
move.l f_closer(a0),a0
jmp (a0)
***********************************
*** ***
***********************************
impobj: move.l table,a0
move.l o_open(a0),a0
jsr (a0)
beq abort0
bsr getscrdes
bsr getpicdes
move.b #tpic,object+ob_Type
clr.l object+ob_Left
clr.l object+ob_Top
move.w pic+pc_W,d1
move.l #7200,d0
bsr Mulu1632
move.w pic+pc_XDpi,d2
bsr Divu1648
move.l d0,object+ob_Right
move.w pic+pc_H,d1
move.l #7200,d0
bsr Mulu1632
move.w pic+pc_YDpi,d2
bsr Divu1648
move.l d0,object+ob_Bottom
clr.b object+ob_Flag
clr.w object+ob_Slant
clr.w object+ob_Twist
move.w #50,object+ob_LWidth ;.5 point line
clr.b object+ob_LType ;no line style
move.b #1,object+ob_LColor ;line color = black
clr.b object+ob_FType ;no fill
move.b #1,object+ob_FColor ;fill color = black
clr.b object+ob_LBegin
clr.b object+ob_LEnd
move.w #900,object+ob_HStandOff ;1/8 inch
move.w #900,object+ob_VStandOff ;1/8 inch
move.l table,a1
move.l o_obj(a1),a1
lea object,a0
jsr (a1)
beq abortobj
clr.l d0
clr.l d1
move.w pic+pc_Width,d0
mulu pic+pc_BitPln,d0
mulu pic+pc_H,d0
move.w pic+pc_Palet,d1
mulu #pl_Sizeof,d1
add.l d1,d0
add.l #pc_Sizeof,d0
move.l table,a0
move.l o_malloc(a0),a0
jsr (a0)
beq abortobj
lea pic,a1
clr.l pc_DPtr(a1)
clr.w pc_DScale(a1)
move.w pc_Palet(a1),d0
mulu #pl_Sizeof,d0
add.l #pc_Sizeof,d0
move.l d0,pc_Ptr(a1)
move.w #pc_Sizeof/2-1,d0
oppic1: move.w (a1)+,(a0)+
dbf d0,oppic1
move.l a0,picptr ;save start of amiga palette data
bsr putcolor
move.l picptr,picptr2
bsr putpic
move.l table,a0
move.l o_close(a0),a0
jsr (a0)
move.l table,a0
move.l f_closer(a0),a0
jmp (a0)
abortobj:
bsr purgepic
move.l table,a0
move.l o_abort(a0),a0
jsr (a0)
move.l table,a0
move.l f_closer(a0),a0
jmp (a0)
***********************************
*** ***
***********************************
getscrdes:
lea pic,a0
move.w #pc_Sizeof-1,d0
gpi1: clr.b (a0)+
dbra d0,gpi1
move.l table,a1
move.l piclength,d0
clr.w d1
clr.w d2
move.l m_alloc(a1),a1
jsr (a1)
beq errrts
move.l a0,picture
move.l #16384,d0
clr.l d1
clr.l d2
move.l table,a1
move.l m_alloc(a1),a1
jsr (a1)
beq errrts
move.l a0,prefix
move.l #16384,d0
clr.l d1
clr.l d2
move.l table,a1
move.l m_alloc(a1),a1
jsr (a1)
beq errrts
move.l a0,suffix
move.l #4100,d0
clr.l d1
clr.l d2
move.l table,a1
move.l m_alloc(a1),a1
jsr (a1)
beq errrts
move.l a0,outcode
move.l picture,a0
move.l (a0),a0 ;read the file into memory
move.l piclength,d0
move.l table,a1
move.l f_getr(a1),a1
jsr (a1)
beq errrts
move.l picture,a0
move.l (a0),a0
add.l #10,a0 ;skip the signature and the screen res
move.b (a0)+,d0
btst #7,d0 ;check for a global color map
beq gpi2
move.b d0,d1
and.b #112,d1 ;get bits 6,5,4 into d0
lsr.b #4,d1
addq.b #1,d1
move.b d1,gbitcres ;bits of color resolution (global)
and.w #7,d0 ;get bits 2,1,0 into d0
addq.b #1,d0
move.b d0,gbpp ;bits per pixel (global)
move.w d0,pic+pc_BitPln
move.b (a0)+,d0 ;get the background color
move.b d0,gbgcolor
addq.l #1,a0 ;point a0 to the color map
clr.l d1 ;calculate the number of bytes in cmap
move.b gbpp,d1
subq.b #1,d1
moveq.l #2,d0
lsl.l d1,d0
move.w d0,gnumcolors
move.w d0,pic+pc_Palet
mulu #3,d0
move.l d0,gcmapsize
move.l a0,gcmap ;a0 = start of global color map
add.l d0,a0 ;move file pointer past gcm
gpi2: move.l a0,pptr ;save it
lea pic,a0
move.w #-1,pc_SFreq(a0)
move.w #-1,pc_SAngle(a0)
move.w #0,pc_SSpot(a0)
move.l #0,pc_SMap(a0)
move.l #0,pc_SMap+4(a0)
move.w #72,pc_XDpi(a0)
move.w #72,pc_YDpi(a0)
rts
***********************************
*** ***
***********************************
getpicdes:
move.l gcmap,d0
move.l d0,lcmap ;default if there is no local cmap
move.l gcmapsize,d1
move.l d1,lcmapsize
move.b gbpp,d2
move.b d2,lbpp
move.b gbgcolor,d3
move.b d3,lbgcolor
move.b gbitcres,d4
move.b d4,lbitcres
bsr skipextenders
move.l pptr,a0
addq.l #5,a0 ;skip the comma, left and top edge
move.b (a0)+,tempw+1 ;intel format
move.b (a0)+,tempw
move.w tempw,d0
move.w d0,pic+pc_W
add.w #15,d0
lsr.w #3,d0
bclr #0,d0
move.w d0,pic+pc_Width
move.b (a0)+,tempw+1
move.b (a0)+,tempw
move.w tempw,d0
move.w d0,pic+pc_H
move.b (a0)+,d0
bclr #0,flag ;clear the image interlace flag
btst #6,d0
beq gp1
bset #0,flag ;the image is stored as interlace
gp1: btst #7,d0 ;do I use the global or local cmap
beq gp2 ;use the global cmap stuff
and.w #7,d0 ;mask off pixel value (lower 3 bits)
addq.b #1,d0
move.b d0,lbpp ;store the bits per pixel
move.w d0,pic+pc_BitPln
clr.l d1 ;calculate the # of bytes in the lcmap
move.b d0,d1
subq.b #1,d1
moveq.l #2,d0
lsl.l d1,d0
move.w d0,lnumcolors
move.w d0,pic+pc_Palet
mulu #3,d0
move.l d0,lcmapsize
move.l a0,lcmap ;a0 = start of the local color map
add.l d0,a0 ;move a0 past the cmap stuff
move.b #PC_PALET,pic+pc_Type
gp2: move.l a0,pptr
rts
***********************************
*** ***
***********************************
skipextenders:
clr.l d0
move.l pptr,a0
cmp.b #'!',(a0) ;is a gif extender present?
bne se3 ;no
addq.l #2,a0 ;skip the ! and the function code
se1: move.b (a0)+,d0 ;get the length of the extention
beq se2 ;when 0 - it is the end
add.l d0,a0 ;skip data
bra se1
se2: move.l a0,pptr
se3: rts
***********************************************************
*** ***
***********************************************************
putcolor:
move.w pic+pc_Palet,d3
move.l picptr,a0
move.l lcmap,a1
bra pc4
pc1: move.b (a1)+,d0 ;red
and.w #$ff,d0
mulu #65535,d0
divu #240,d0
move.w d0,(a0)
move.b (a1)+,d0 ;green
and.w #$ff,d0
mulu #65535,d0
divu #240,d0
move.w d0,2(a0)
move.b (a1)+,d0 ;blue
and.w #$ff,d0
mulu #65535,d0
divu #240,d0
move.w d0,4(a0)
move.w (a0)+,d0
move.w (a0)+,d1
move.w (a0)+,d2
mulu #19661,d0
mulu #38666,d1
mulu #7209,d2
add.l d1,d0
add.l d2,d0
swap d0
cmp.w #$8000,d0
bcc pc2
moveq #1,d0
bra pc3
pc2: moveq #0,d0
pc3: move.w d0,(a0)+ ;calculate on screen color (B or W)
pc4: dbf d3,pc1
move.l a0,picptr ;set a0 to start of amiga bitmap
rts
***********************************
*** ***
***********************************
putpic:
; move.w pic+pc_Width,d0 ;set amiga bitmap to all white ($ff)
; mulu pic+pc_BitPln,d0
; mulu pic+pc_H,d0
; move.l d0,d1
; swap d1
; move.l picptr,a0
; bra pp2
;pp1: move.b #$ff,(a0)+
;pp2: dbf d0,pp1
; dbf d1,pp1
move.l picptr,apos1 ;for cpystr stuff
move.l picptr,apos2 ;
move.w #7,bitcount ; "
move.w #0,plncnt ; "
move.w pic+pc_W,d0 ; "
subq.w #1,d0 ; "
move.w d0,pixcount ; "
clr.l d0 ; "
move.w pic+pc_Width,d0 ; "
mulu pic+pc_H,d0 ; "
move.l d0,plnlen ; "
move.l pptr,a0
clr.w d0
move.b (a0)+,d0 ;get smallest code length
move.w d0,codelength ;initial code length is codelength bits
move.l a0,pptr
clr.l d0
move.b lbpp,d0
move.l #1,d1
lsl.l d0,d1
subq.l #1,d1
move.l d1,bitmask
clr.w pass ;for interlaced gif pictures
clr.w hcount
bsr setuplzwdata ;sets up picture to have only LZW data
move.l outcode,a0
move.l (a0),-(sp)
move.l suffix,a0
move.l (a0),-(sp)
move.l prefix,a0
move.l (a0),-(sp)
move.l bitmask,-(sp)
move.w codelength,d0
move.l d0,-(sp)
move.l picture,a0
move.l (a0),-(sp) ;pointer to LZW data
move.l picptr,-(sp) ;pointer to amiga bitmap
bsr doGIF
add.l #28,sp ;clean up stack
bra purgepic
********************************
*** ***
********************************
readcode:
movem.l d3-d5/a2-a3,-(a7)
movea.l 24(a7),a3
move.l 28(a7),d5
movea.l 36(a7),a2
move.l (a3),d1
lsr.l #3,d1
moveq #0,d3
move.b 1(a2,d1.l),d3
moveq #0,d4
not.b d4
and.l d4,d3
asl.l #8,d3
moveq #0,d0
move.b 0(a2,d1.l),d0
and.l d4,d0
add.l d3,d0
cmp.l #8,d5
bcs.b rc1
moveq #0,d3
move.b 2(a2,d1.l),d3
and.l d4,d3
swap d3
clr.w d3
add.l d3,d0
rc1: move.l (a3),d1
add.l d5,(a3)
and.l #7,d1
lsr.l d1,d0
and.l 32(a7),d0
movem.l (a7)+,d3-d5/a2-a3
rts
********************************
*** ***
********************************
doGIF:
link a5,#$ffc0
movem.l d2-d7/a2-a3,-(a7)
movea.l 32(a5),a3
move.l 16(a5),d7
moveq #1,d0
move.l d0,d1
asl.l d7,d1
move.l d1,d2
addq.l #1,d2
move.l d1,d3
addq.l #2,d3
move.l d7,d4
addq.l #1,d4
move.l d1,44(a7)
move.l d4,d1
move.l d1,32(a7)
move.l d0,d1
asl.l d4,d1
move.l d1,d7
move.l d7,d0
subq.l #1,d0
moveq #0,d1
move.l d1,-36(a5)
move.l d1,d6
movea.l 12(a5),a2
move.l a2,-(a7)
move.l d0,-(a7)
move.l d4,-(a7)
pea -36(a5)
move.l d0,-28(a5)
move.l d2,56(a7)
move.l d3,-24(a5)
move.l d3,52(a7)
bsr.w readcode
lea 16(a7),a7
move.l d0,d5
moveq #1,d0
move.l d0,-40(a5)
bra.w dg7
dg0: cmp.l 44(a7),d5
bne.b dg1
move.l 32(a7),d4
moveq #1,d0
move.l d0,d1
asl.l d4,d1
move.l d1,d7
move.l d7,d0
subq.l #1,d0
move.l 36(a7),-24(a5)
move.l a2,-(a7)
move.l d0,-(a7)
move.l d4,-(a7)
pea -36(a5)
move.l d0,-28(a5)
bsr.w readcode
move.l d0,d5
move.l d5,d0
and.l 20(a5),d0
move.l d0,(a7)
move.l d0,-48(a5)
bsr addtopix2
lea 16(a7),a7
bra.w dg6
dg1: move.l d5,d7
cmp.l -24(a5),d7
bcs.b dg2
move.l -44(a5),d7
moveq #1,d6
move.l -48(a5),(a3)
dg2: move.l d6,d0
asl.l #2,d0
movea.l a3,a2
adda.l d0,a2
bra.b dg3
dg21: addq.l #1,d6
move.l d7,d0
asl.l #2,d0
movea.l 28(a5),a0
move.l 0(a0,d0.l),(a2)+
movea.l 24(a5),a0
move.l 0(a0,d0.l),d7
dg3: cmp.l 20(a5),d7
bhi.b dg21
and.l 20(a5),d7
move.l d7,-48(a5)
move.l d7,(a2)
move.l d6,d0
asl.l #2,d0
movea.l a3,a2
adda.l d0,a2
bra.b dg5
dg4: move.l (a2),-(a7)
bsr addtopix2
addq.w #4,a7
subq.l #4,a2
dg5: cmpa.l a3,a2
bcc.b dg4
moveq #0,d6
move.l -24(a5),d0
move.l d0,d1
asl.l #2,d1
movea.l 24(a5),a0
move.l -44(a5),0(a0,d1.l)
movea.l 28(a5),a0
move.l d7,0(a0,d1.l)
addq.l #1,-24(a5)
move.l -32(a5),d7
move.l -24(a5),d0
cmp.l d7,d0
bcs.b dg6
moveq #12,d0
cmp.l d0,d4
bcc.b dg6
addq.l #1,d4
add.l d7,d7
moveq #1,d0
move.l d0,d1
asl.l d4,d1
subq.l #1,d1
move.l d1,-28(a5)
dg6: move.l d5,-44(a5)
movea.l 12(a5),a2
move.l a2,-(a7)
move.l -28(a5),-(a7)
move.l d4,-(a7)
pea -36(a5)
bsr.w readcode
lea 16(a7),a7
move.l d0,d5
addq.l #1,-40(a5)
dg7: move.l d7,-32(a5)
cmp.l 40(a7),d5
bne.w dg0
move.l -40(a5),d0
movem.l (a7)+,d2-d7/a2-a3
unlk a5
rts
**********************************
** **
**********************************
setuplzwdata:
move.l pptr,a0
move.l picture,a1
move.l (a1),a1
set0: clr.w d0
clr.w d1
move.b (a0)+,d0 ;get length of block
move.b d0,d1
bra set2
set1: move.b (a0)+,(a1)+ ;copy block
set2: dbf d0,set1
dbf d1,set0 ;not a real dbf - it will branch back
rts ;if the length of the block is not 0
**********************************
** **
**********************************
addtopix2:
move.l 4(sp),d0 ;get the code off the stack into d0
movem.l d0-d7/a0-a6,-(sp)
cp0: move.l apos2,a2 ;restore place in amiga bitmap - plane x
move.l apos1,a1 ;restore place in amiga bitmap - plane 1
move.l plnlen,d7 ;d7 = amiga bitplane length in bytes
move.w bitcount,d5 ;restore bit place in a2
move.w plncnt,d1 ;restore plane counter
move.w pixcount,d6 ;restore pixel counter
moveq #0,d3 ;d1 = bit position in gif data
cp1: btst d3,d0 ;is the data bit on or off
beq cp3 ;off
bset d5,(a2)
bra cp4
cp3: bclr d5,(a2)
cp4: add.l d7,a2 ;go to next bitplane
addq.w #1,d1 ;update bitplane counter
cmp.w pic+pc_BitPln,d1
bcs cp7
moveq #0,d1 ;reset bitplane counter
move.l a1,a2 ;reset a2 to first bitplane
cp5: dbf d5,cp6 ;update amiga bit pos
addq.l #1,a1 ;move to next amiga bitmap byte
addq.l #1,a2
moveq #7,d5 ;reset d5 to top of byte
cp6: dbf d6,cp7 ;update pixel width counter
btst #0,flag ;is this an interlaced image?
beq cp64 ;no
move.l picptr2,a1
cmp.w #0,pass ;pass 1
bne cp61
clr.l d4 ;move ahead 8 rows
move.w pic+pc_Width,d4
lsl.l #3,d4
add.l d4,a1
move.l a1,picptr2
move.l a1,a2
add.w #8,hcount
move.w hcount,d4 ;am I done with this pass?
cmp.w pic+pc_H,d4
bcs cp65 ;no
addq.w #1,pass ;go to next pass
move.l picptr,a1 ;move to the fifth row
clr.l d4
move.w pic+pc_Width,d4
lsl.w #2,d4
add.l d4,a1
move.l a1,picptr2
move.l a1,a2
move.w #5,hcount
bra cp65
cp61: cmp.w #1,pass ;pass 2
bne cp62
clr.l d4
move.w pic+pc_Width,d4 ;move ahead 8 rows
lsl.l #3,d4
add.l d4,a1
move.l a1,picptr2
move.l a1,a2
add.w #8,hcount
move.w hcount,d4 ;am I done with this pass?
cmp.w pic+pc_H,d4
bcs cp65 ;no
addq.w #1,pass ;next pass please
move.l picptr,a1 ;move to the third row
clr.l d4
move.w pic+pc_Width,d4
lsl.l #1,d4
add.l d4,a1
move.l a1,picptr2
move.l a1,a2
move.w #3,hcount
bra cp65
cp62: cmp.w #2,pass ;pass 3
bne cp63
clr.l d4
move.w pic+pc_Width,d4 ;move ahead 4 rows
lsl.l #2,d4
add.l d4,a1
move.l a1,picptr2
move.l a1,a2
add.w #4,hcount
move.w hcount,d4 ;am I done with this pass?
cmp.w pic+pc_H,d4
bcs cp65 ;no
addq.w #1,pass ;next pass please
move.l picptr,a1 ;move to the second row
clr.l d4
move.w pic+pc_Width,d4
add.l d4,a1
move.l a1,picptr2
move.l a1,a2
move.w #2,hcount
bra cp65
cp63: clr.l d4 ;pass 4
move.w pic+pc_Width,d4 ;move ahead 2 rows
lsl.l #1,d4
add.l d4,a1
move.l a1,picptr2
move.l a1,a2
bra cp65
cp64: move.l picptr2,a1
add.w pic+pc_Width,a1
move.l a1,picptr2
move.l a1,a2
cp65: move.w #7,d5
move.w pic+pc_W,d6
subq.w #1,d6
cp7: addq.w #1,d3 ;update gif bit counter
cmp.w pic+pc_BitPln,d3
bcs cp1
cp81: move.l a2,apos2 ;save place in amiga bitmap - plane x
move.l a1,apos1 ;save place in amiga bitmap - plane 1
move.w d5,bitcount ;save bit place in a2
move.w d1,plncnt ;save plane counter
move.w d6,pixcount ;save pixel counter
movem.l (sp)+,d0-d7/a0-a6
rts
***********************************
*** ***
***********************************
Mulu1632:
move.l table,a0
move.l mulu1632(a0),a0
jmp (a0)
***********************************
*** ***
***********************************
Divu1648:
move.l table,a0
move.l divu1648(a0),a0
jmp (a0)
***********************************
*** ***
***********************************
errrts: bsr purgepic
move.l savesp,sp
move.l table,a0 ;clean up and exit
move.l spclnum(a0),a0
cmp.w #1,(a0)
beq abortobj
bra abortpic
rrts: rts
***********************************
*** ***
***********************************
purgepic:
tst.l picture
beq pu1
move.l picture,a0
move.l table,a1
move.l m_delete(a1),a1
jsr (a1)
pu1: tst.l prefix
beq pu2
move.l prefix,a0
move.l table,a1
move.l m_delete(a1),a1
jsr (a1)
pu2: tst.l suffix
beq pu3
move.l suffix,a0
move.l table,a1
move.l m_delete(a1),a1
jsr (a1)
pu3: tst.l outcode
beq pu4
move.l outcode,a0
move.l table,a1
move.l m_delete(a1),a1
jsr (a1)
pu4: rts
*******************************************************************
*** called when the import routine choosen finds something ***
*** wrong with the file loaded. ***
*******************************************************************
never: clr.w d0
rts
maybe: move.w #1,d0
rts
right: move.w #2,d0
rts
*************************************************************
*************************************************************
SECTION GIF,DATA,PUBLIC
special:
dc.w 2
dc.l spcl1,spcl2
name: dc.b "GIF v2.0.2",0
spcl1: dc.b "Picture Window",0
spcl2: dc.b "Object",0
***************************************************************
***************************************************************
SECTION GIF,BSS,PUBLIC
temp: ds.l 1
temp2: ds.l 1
flag: ds.l 1
savesp: ds.l 1
picptr: ds.l 1
picptr2: ds.l 1
pptr: ds.l 1
pic: ds.w pc_Sizeof/2
object: ds.w ob_SizeOf/2
picture: ds.l 1
piclength: ds.l 1
gcmap: ds.l 1
gcmapsize: ds.l 1
lcmap: ds.l 1
lcmapsize: ds.l 1
gbitcres: ds.b 1
gbpp: ds.b 1
gbgcolor: ds.b 1
lbitcres: ds.b 1
lbpp: ds.b 1
lbgcolor: ds.b 1
gnumcolors: ds.w 1
lnumcolors: ds.w 1
tempw: ds.w 1
bitcount: ds.w 1
plncnt: ds.w 1
pixcount: ds.w 1
apos1: ds.l 1
apos2: ds.l 1
codelength: ds.w 1
plnlen: ds.l 1
pass: ds.w 1
hcount: ds.w 1
bitmask: ds.l 1
prefix: ds.l 1
suffix: ds.l 1
outcode: ds.l 1
***************************** CHANGES ****************************************
;
; version 2.0.2 (uploaded 11/07/90)
;
; - added new LZW decompression code from code written in C
; on the mac for an increase in the decompression speed
; (readcode & doGIF)
;
;
; version 2.0.1
;
; - changed linked list table to a static 4096 entry table
;
;
; version 2.0.0 (uploaded 11/02/90)
;
; - initial release