home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Supremacy 2
/
Supremacy-2.iso
/
Automation
/
A_488.ST
/
AUTOMAT4.LZH
/
DEPLZW.S
< prev
next >
Wrap
Text File
|
1987-04-22
|
1KB
|
74 lines
;LZW Depack routine for the JAM packer V4.0
;It is kept simple to minimise depack time.
CLR.L -(A7)
MOVE.W #$20,-(A7)
TRAP #1
ADDQ.L #6,A7
MOVE.L D0,-(A7)
MOVE.L #$80000,A0 ;start of packed data address
MOVE.L #$90000,A1 ;depack to address
BSR.S UNPACK
MOVE.W #$20,-(A7)
TRAP #1
ADDQ.L #6,A7
RTS
UNPACK:
MOVE.W $FFFF8240.W,-(A7)
MOVE.L A0,A4
MOVE.L A1,A6
ADDA.L 8(A0),A4
ADDA.L 4(A0),A6
MOVE.L A6,A5 ;KEEP COPY TO CHECK AGAINST
MOVE.L 4(A0),D4
MOVE.B #$20,D3
MOVE.W #$0FED,D5
MOVEA.L A6,A3 ;KEEP ADDR OF END OF SPACES
MOVEQ #$00,D7 ;START UNPACK ROUTINE
TOPDEP: DBF D7,NOTUSED
MOVE.B -(A4),D6 ;GET COMMAND BYTE
MOVEQ #$07,D7
NOTUSED:
LSR.B #1,D6
BCC.S COPY ;BIT NOT SET, COPY FROM UNPACKED AREA
MOVE.B -(A4),-(A6) ;COPY BYTES FROM PACKED AREA
ADDQ.W #1,D5
SUBQ.L #1,D4
BGT.S TOPDEP
BRA.S EXITUP
COPY: MOVE.B -2(A4),D0
LSL.W #4,D0
MOVE.B -(A4),D0
MOVE.W D0,$FFFF8240.W
SUB.W D5,D0
NEG.W D0
AND.W #$0FFF,D0
LEA 1(A6,D0.W),A0
MOVEQ #$0F,D1
AND.B -(A4),D1
ADDQ.W #2,D1
MOVEQ #$01,D0
ADD.W D1,D0
CMPA.L A5,A0
BGT.S SPACES
WRITE: MOVE.B -(A0),-(A6)
DBF D1,WRITE
BACK: ADD.L D0,D5
SUB.L D0,D4
BGT.S TOPDEP
EXITUP: MOVE.W (A7)+,$FFFF8240.W
RTS
SPACES: CMPA.L A5,A0
BLE.S WRITE
MOVE.B D3,-(A6) ;COPY OUT SPACES
SUBQ.L #1,A0
DBF D1,SPACES
BRA.S BACK