mirror of
https://github.com/romychs/sprinter-unzip.git
synced 2026-02-20 17:41:52 +03:00
Fix offsets
This commit is contained in:
parent
c761928096
commit
24b202f0b7
59
unzip.asm
59
unzip.asm
@ -1362,15 +1362,18 @@ NO_B_TO_WR
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
FILL_3
|
FILL_3
|
||||||
DS TEMP_BUFFR-FILL_3, 0
|
DB 0
|
||||||
|
ALIGN 0x2000, 0
|
||||||
|
DB 0
|
||||||
|
ALIGN 0x1000, 0
|
||||||
|
|
||||||
|
;DS TEMP_BUFFR-FILL_3, 0
|
||||||
ORG 0xB000
|
ORG 0xB000
|
||||||
; 4096 bytes buffer AFFF-BFFF
|
; 4096 bytes buffer AFFF-BFFF
|
||||||
TEMP_BUFFR
|
TEMP_BUFFR
|
||||||
DS 6, 0
|
DS 6, 0
|
||||||
GPP_FLAG
|
GPP_FLAG
|
||||||
DB 0, 0
|
DB 0, 0
|
||||||
TEMP_BUFFR_8
|
|
||||||
DS 18, 0
|
DS 18, 0
|
||||||
LH_FN_LEN_L
|
LH_FN_LEN_L
|
||||||
DB 0
|
DB 0
|
||||||
@ -1384,7 +1387,7 @@ LH_FILENAME
|
|||||||
DS 1024, 0
|
DS 1024, 0
|
||||||
|
|
||||||
;PAGE3_ADDR
|
;PAGE3_ADDR
|
||||||
ALIGN 16384, 0
|
ALIGN 0x4000, 0
|
||||||
ORG 0xC000
|
ORG 0xC000
|
||||||
|
|
||||||
DS 4096, 0
|
DS 4096, 0
|
||||||
@ -1545,8 +1548,11 @@ EXTRA_BITS
|
|||||||
DB 1, 3, 7, 15, 31, 63, 127, 255 ; 2^n-1
|
DB 1, 3, 7, 15, 31, 63, 127, 255 ; 2^n-1
|
||||||
|
|
||||||
BL_CNT
|
BL_CNT
|
||||||
DS 70,0
|
DS 34,0
|
||||||
|
BL_CNT_17
|
||||||
|
DW 0
|
||||||
|
BL_CNT_18
|
||||||
|
DS 34,0
|
||||||
; ----------------------------------------------------
|
; ----------------------------------------------------
|
||||||
; Return A number of bits in HL from block
|
; Return A number of bits in HL from block
|
||||||
; ----------------------------------------------------
|
; ----------------------------------------------------
|
||||||
@ -1714,7 +1720,7 @@ GET_NXT_CL
|
|||||||
PUSH HL
|
PUSH HL
|
||||||
LD HL,LIT_TR
|
LD HL,LIT_TR
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD (HL),A ; => ram_db8a
|
LD (HL),A ; reorder code lengths alphabet in straigth order
|
||||||
POP HL
|
POP HL
|
||||||
POP DE
|
POP DE
|
||||||
INC HL
|
INC HL
|
||||||
@ -1725,7 +1731,7 @@ GET_NXT_CL
|
|||||||
LD HL,CL_TR
|
LD HL,CL_TR
|
||||||
LD DE,LIT_TR
|
LD DE,LIT_TR
|
||||||
LD BC,NR_CL
|
LD BC,NR_CL
|
||||||
CALL BUILD_CODE
|
CALL BUILD_CODE ; build huffman codes for codelength
|
||||||
LD HL,(HLIT)
|
LD HL,(HLIT)
|
||||||
LD DE,(HDIST)
|
LD DE,(HDIST)
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
@ -1819,6 +1825,11 @@ HDIST+* LD BC,0x0
|
|||||||
POP BC
|
POP BC
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Build huffman codes by coldee lengths
|
||||||
|
; In: HL - Pointer to dest huffman tree
|
||||||
|
; DE - Pointer to code lenthts table
|
||||||
|
; BC - Length of code lengths table
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
BUILD_CODE
|
BUILD_CODE
|
||||||
LD A,B
|
LD A,B
|
||||||
@ -1829,7 +1840,7 @@ BUILD_CODE
|
|||||||
LD HL,BL_CNT
|
LD HL,BL_CNT
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD BC,0x2000
|
LD BC,0x2000 ; ToDo: may be 0x2600?
|
||||||
|
|
||||||
; BL_CNT[32]=0
|
; BL_CNT[32]=0
|
||||||
BL_CNT_0
|
BL_CNT_0
|
||||||
@ -1844,7 +1855,7 @@ BC_LP_1
|
|||||||
LD A,(DE) ; DE -> LIT_TR
|
LD A,(DE) ; DE -> LIT_TR
|
||||||
INC DE
|
INC DE
|
||||||
ADD A,A
|
ADD A,A
|
||||||
ADD A,9 ; distance*2 + 9
|
ADD A,low(BL_CNT) ; len*2 + offset
|
||||||
LD L,A
|
LD L,A
|
||||||
INC (HL)
|
INC (HL)
|
||||||
JR NZ,BC_NO_L
|
JR NZ,BC_NO_L
|
||||||
@ -1857,7 +1868,7 @@ BC_NO_L
|
|||||||
OR C
|
OR C
|
||||||
JR NZ,BC_LP_1
|
JR NZ,BC_LP_1
|
||||||
|
|
||||||
LD L,45
|
LD L,low(BL_CNT_18) ; 45
|
||||||
LD (HL),C
|
LD (HL),C
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),C
|
LD (HL),C
|
||||||
@ -1866,7 +1877,7 @@ BC_NO_L
|
|||||||
|
|
||||||
INIT_BUFF4
|
INIT_BUFF4
|
||||||
LD A,C
|
LD A,C
|
||||||
ADD A,0x9
|
ADD A,low(BL_CNT)
|
||||||
LD L,A
|
LD L,A
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
@ -1880,7 +1891,7 @@ INIT_BUFF4
|
|||||||
INC C
|
INC C
|
||||||
INC C
|
INC C
|
||||||
LD A,C
|
LD A,C
|
||||||
ADD A,43
|
ADD A,low(BL_CNT_17) ; 43
|
||||||
LD L,A
|
LD L,A
|
||||||
LD (HL),E
|
LD (HL),E
|
||||||
INC HL
|
INC HL
|
||||||
@ -1893,7 +1904,7 @@ INIT_BUFF4
|
|||||||
LD D,B
|
LD D,B
|
||||||
LD E,B
|
LD E,B
|
||||||
LD A,15
|
LD A,15
|
||||||
LD L,11
|
LD L,low(BL_CNT)+2
|
||||||
|
|
||||||
INIT_BUFF5
|
INIT_BUFF5
|
||||||
LD C,(HL)
|
LD C,(HL)
|
||||||
@ -1915,7 +1926,7 @@ CHAR_L_NE0
|
|||||||
NR_SYM+* LD BC,0x0
|
NR_SYM+* LD BC,0x0
|
||||||
LD HL,NODES
|
LD HL,NODES
|
||||||
INIT_BUFF6
|
INIT_BUFF6
|
||||||
LD A,(DE) ; Char lengths?
|
LD A,(DE) ; DE => LIT_TR + offset
|
||||||
INC DE
|
INC DE
|
||||||
PUSH DE
|
PUSH DE
|
||||||
ADD A,A
|
ADD A,A
|
||||||
@ -1924,7 +1935,7 @@ INIT_BUFF6
|
|||||||
JR Z,CHAR_L_E0
|
JR Z,CHAR_L_E0
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD H,high BL_CNT ; 0xD2
|
LD H,high BL_CNT ; 0xD2
|
||||||
ADD A,(low BL_CNT) + 34 ; +43
|
ADD A,low BL_CNT_17 ; +43
|
||||||
LD L,A
|
LD L,A
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
@ -1950,19 +1961,19 @@ CHAR_L_E0
|
|||||||
LD HL,NODES
|
LD HL,NODES
|
||||||
LD BC,(NR_SYM)
|
LD BC,(NR_SYM)
|
||||||
INIT_BUFF7
|
INIT_BUFF7
|
||||||
LD A,(DE)
|
LD A,(DE) ; DE => LIT_TR+offset
|
||||||
INC DE
|
INC DE
|
||||||
DEC A
|
DEC A
|
||||||
JP M,INIT_BUFF11
|
JP M,INIT_BUFF11 ; code=0 or 1
|
||||||
JR Z,INIT_BUFF11
|
JR Z,INIT_BUFF11
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD E,(HL)
|
LD E,(HL) ; HL => NODES + offset
|
||||||
INC HL
|
INC HL
|
||||||
LD D,(HL)
|
LD D,(HL) ; DE = [NODES + offset]
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD HL,0x0
|
LD HL,0x0
|
||||||
INIT_BUFF8
|
INIT_BUFF8
|
||||||
SRL D
|
SRL D ; DE >> 1
|
||||||
RR E
|
RR E
|
||||||
ADC HL,HL
|
ADC HL,HL
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -1995,13 +2006,13 @@ INIT_BUFF11
|
|||||||
OR B
|
OR B
|
||||||
JR NZ,INIT_BUFF7
|
JR NZ,INIT_BUFF7
|
||||||
|
|
||||||
LEN_PTR+* LD HL,0x0000
|
LEN_PTR+* LD HL,0x0000 ; HL => CL_TR
|
||||||
LD E,L
|
LD E,L
|
||||||
LD D,H
|
LD D,H
|
||||||
INC DE
|
INC DE
|
||||||
LD BC,511
|
LD BC,511
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
LDIR ; Shift LEN_TR right 1 byte
|
LDIR ; Shift CL_TR or LEN_TR right 1 byte
|
||||||
POP HL
|
POP HL
|
||||||
LD BC,(NR_SYM)
|
LD BC,(NR_SYM)
|
||||||
DEC BC
|
DEC BC
|
||||||
@ -2019,7 +2030,7 @@ INIT_BUFF12
|
|||||||
JR Z,INIT_BUFF16
|
JR Z,INIT_BUFF16
|
||||||
CP 0x9
|
CP 0x9
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD D,(HL)
|
LD D,(HL) ; => NODES + offset
|
||||||
DEC HL
|
DEC HL
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
@ -2259,12 +2270,14 @@ LEN_LD
|
|||||||
DISTANCES
|
DISTANCES
|
||||||
DS 32,0
|
DS 32,0
|
||||||
|
|
||||||
|
;
|
||||||
CL_TR
|
CL_TR
|
||||||
DS 512,0
|
DS 512,0
|
||||||
|
|
||||||
N_CODE
|
N_CODE
|
||||||
DS 512,0
|
DS 512,0
|
||||||
|
|
||||||
|
; Command codes lengths
|
||||||
LIT_TR
|
LIT_TR
|
||||||
DS 4 * NR_LIT, 0
|
DS 4 * NR_LIT, 0
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user