# HG changeset patch # User Laurens Holst # Date 1733263980 -3600 # Tue Dec 03 23:13:00 2024 +0100 # Node ID 8b931818a05f9ce3242a560ab962956232ad401f # Parent 136af746aeff5e6a46ec350b2448f6857e171947 neonlib: Extract BitReader subclass from Reader. diff --git a/.hgsubstate b/.hgsubstate --- a/.hgsubstate +++ b/.hgsubstate @@ -1,1 +1,1 @@ -8a43f418c682b8f87d70d518ce5484905361dad0 lib/neonlib +f5d4ac3a27c5e04578db4551e52ed6f50a111448 lib/neonlib diff --git a/src/COM.asm b/src/COM.asm --- a/src/COM.asm +++ b/src/COM.asm @@ -39,6 +39,7 @@ INCLUDE "deflate/Branch.asm" INCLUDE "deflate/HuffmanCodes.asm" INCLUDE "Reader.asm" + INCLUDE "BitReader.asm" INCLUDE "FileReader.asm" INCLUDE "CRC32Checker.asm" INCLUDE "CRC32CheckerTest.asm" diff --git a/src/deflate/AlphabetTest.asm b/src/deflate/AlphabetTest.asm --- a/src/deflate/AlphabetTest.asm +++ b/src/deflate/AlphabetTest.asm @@ -107,10 +107,10 @@ ld bc,READBUFFER_SIZE ld de,Reader_DefaultFiller ld ix,AlphabetTest_reader - call Reader_Construct + call BitReader_Construct ld iy,AlphabetTest_reader - call Reader_PrepareReadBitInline_IY + call BitReader_PrepareReadInline_IY ld d,7 ld hl,AlphabetTest_expectedSymbols ld ix,AlphabetTest_alphabet @@ -124,7 +124,7 @@ inc hl dec d jr nz,Loop - call Reader_FinishReadBitInline_IY + call BitReader_FinishReadInline_IY ret ENDP @@ -132,7 +132,7 @@ Alphabet AlphabetTest_reader: - Reader + BitReader AlphabetTest_testCodeLengths: db 4, 3, 4, 1, 3, 4, 4 diff --git a/src/deflate/Branch.asm b/src/deflate/Branch.asm --- a/src/deflate/Branch.asm +++ b/src/deflate/Branch.asm @@ -4,7 +4,7 @@ Branch: MACRO ; iy = reader Process: - Reader_ReadBitInline_IY + BitReader_ReadInline_IY jump: jp c,System_ThrowException jumpAddress: equ $ - 2 diff --git a/src/deflate/HuffmanCodes.asm b/src/deflate/HuffmanCodes.asm --- a/src/deflate/HuffmanCodes.asm +++ b/src/deflate/HuffmanCodes.asm @@ -109,19 +109,19 @@ ; iy = reader HuffmanCodes_ReadLengths: ld b,5 - call Reader_ReadBits_IY + call BitReader_Read_N_IY inc a cp (HuffmanCodes_MAX_LITERALLENGTHCODELENGTHS & 0FFH) + 1 call nc,System_ThrowException ld (ix + HuffmanCodes.hlit),a ld b,5 - call Reader_ReadBits_IY + call BitReader_Read_N_IY inc a cp HuffmanCodes_MAX_DISTANCECODELENGTHS + 1 call nc,System_ThrowException ld (ix + HuffmanCodes.hdist),a ld b,4 - call Reader_ReadBits_IY + call BitReader_Read_N_IY add a,4 cp HuffmanCodes_MAX_HEADERCODELENGTHS + 1 call nc,System_ThrowException @@ -146,7 +146,7 @@ Loop: push bc ld b,3 - call Reader_ReadBits_IY + call BitReader_Read_N_IY ld c,(hl) ; b = 0 after ReadBits inc hl ex de,hl @@ -176,10 +176,10 @@ ld ixl,e ld ixh,d ld e,a ; range: 258-318, two 8-bit loops - call Reader_PrepareReadBitInline_IY + call BitReader_PrepareReadInline_IY call HuffmanCodes_DecodeCodeLength call HuffmanCodes_DecodeCodeLength - call Reader_FinishReadBitInline_IY + call BitReader_FinishReadInline_IY ld a,e pop ix pop hl @@ -233,7 +233,7 @@ ; ix = header code decoder ; iy = reader HuffmanCodes_Copy: PROC - call Reader_ReadBitsInline_2_IY + call BitReader_ReadInline_2_IY add a,3 push bc ld b,a @@ -258,7 +258,7 @@ ; ix = header code decoder ; iy = reader HuffmanCodes_FillZero_3: PROC - call Reader_ReadBitsInline_3_IY + call BitReader_ReadInline_3_IY add a,3 Continue: push bc @@ -282,7 +282,7 @@ ; ix = header code decoder ; iy = reader HuffmanCodes_FillZero_11: - call Reader_ReadBitsInline_7_IY + call BitReader_ReadInline_7_IY add a,11 jr HuffmanCodes_FillZero_3.Continue diff --git a/src/deflate/Inflate.asm b/src/deflate/Inflate.asm --- a/src/deflate/Inflate.asm +++ b/src/deflate/Inflate.asm @@ -129,11 +129,11 @@ and 1 << Inflate_STATE_FINAL_BIT ld (ix + Inflate.state),a ret nz - call Reader_ReadBit_IY + call BitReader_Read_IY rla ; carry to Inflate_STATE_FINAL_BIT ld (ix + Inflate.state),a ld b,2 - call Reader_ReadBits_IY + call BitReader_Read_N_IY and a jp z,Inflate_InflateUncompressed cp 2 @@ -145,7 +145,7 @@ ; iy = reader Inflate_InflateUncompressed: PROC set Inflate_STATE_COPY_BIT,(ix + Inflate.state) - call Reader_Align_IY + call BitReader_Align_IY call Reader_ReadWord_IY ld c,e ld b,d @@ -220,9 +220,9 @@ call Inflate_GetDecoders call Decoders_GetDecoders pop ix - call Reader_PrepareReadBitInline_IY + call BitReader_PrepareReadInline_IY call Inflate_Decode - call Reader_FinishReadBitInline_IY + call BitReader_FinishReadInline_IY bit Inflate_STATE_COMPRESSED_BIT,(ix + Inflate.state) ret nz jp Inflate_InflateLoop @@ -315,83 +315,83 @@ ld bc,10 Inflate_DecodeDistanceInline Inflate_CopyLength.8: - call Reader_ReadBitsInline_1_IY + call BitReader_ReadInline_1_IY add a,11 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.9: - call Reader_ReadBitsInline_1_IY + call BitReader_ReadInline_1_IY add a,13 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.10: - call Reader_ReadBitsInline_1_IY + call BitReader_ReadInline_1_IY add a,15 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.11: - call Reader_ReadBitsInline_1_IY + call BitReader_ReadInline_1_IY add a,17 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.12: - call Reader_ReadBitsInline_2_IY + call BitReader_ReadInline_2_IY add a,19 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.13: - call Reader_ReadBitsInline_2_IY + call BitReader_ReadInline_2_IY add a,23 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.14: - call Reader_ReadBitsInline_2_IY + call BitReader_ReadInline_2_IY add a,27 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.15: - call Reader_ReadBitsInline_2_IY + call BitReader_ReadInline_2_IY add a,31 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.16: - call Reader_ReadBitsInline_3_IY + call BitReader_ReadInline_3_IY add a,35 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.17: - call Reader_ReadBitsInline_3_IY + call BitReader_ReadInline_3_IY add a,43 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.18: - call Reader_ReadBitsInline_3_IY + call BitReader_ReadInline_3_IY add a,51 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.19: - call Reader_ReadBitsInline_3_IY + call BitReader_ReadInline_3_IY add a,59 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.20: - call Reader_ReadBitsInline_4_IY + call BitReader_ReadInline_4_IY add a,67 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.21: - call Reader_ReadBitsInline_4_IY + call BitReader_ReadInline_4_IY add a,83 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.22: - call Reader_ReadBitsInline_4_IY + call BitReader_ReadInline_4_IY add a,99 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.23: - call Reader_ReadBitsInline_4_IY + call BitReader_ReadInline_4_IY add a,115 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.24: - call Reader_ReadBitsInline_5_IY + call BitReader_ReadInline_5_IY add a,131 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.25: - call Reader_ReadBitsInline_5_IY + call BitReader_ReadInline_5_IY add a,163 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.26: - call Reader_ReadBitsInline_5_IY + call BitReader_ReadInline_5_IY add a,195 jp Inflate_DecodeDistance_SetLength Inflate_CopyLength.27: - call Reader_ReadBitsInline_5_IY + call BitReader_ReadInline_5_IY add a,227 jp nc,Inflate_DecodeDistance_SetLength exx @@ -451,139 +451,139 @@ ld hl,-4 jp Inflate_Copy Inflate_CopyDistance.4: - call Reader_ReadBitsInline_1_IY + call BitReader_ReadInline_1_IY xor -5 jp Inflate_CopySmallDistance Inflate_CopyDistance.5: - call Reader_ReadBitsInline_1_IY + call BitReader_ReadInline_1_IY xor -7 jp Inflate_CopySmallDistance Inflate_CopyDistance.6: - call Reader_ReadBitsInline_2_IY + call BitReader_ReadInline_2_IY xor -9 jp Inflate_CopySmallDistance Inflate_CopyDistance.7: - call Reader_ReadBitsInline_2_IY + call BitReader_ReadInline_2_IY xor -13 jp Inflate_CopySmallDistance Inflate_CopyDistance.8: - call Reader_ReadBitsInline_3_IY + call BitReader_ReadInline_3_IY xor -17 jp Inflate_CopySmallDistance Inflate_CopyDistance.9: - call Reader_ReadBitsInline_3_IY + call BitReader_ReadInline_3_IY xor -25 jp Inflate_CopySmallDistance Inflate_CopyDistance.10: - call Reader_ReadBitsInline_4_IY + call BitReader_ReadInline_4_IY xor -33 jp Inflate_CopySmallDistance Inflate_CopyDistance.11: - call Reader_ReadBitsInline_4_IY + call BitReader_ReadInline_4_IY xor -49 jp Inflate_CopySmallDistance Inflate_CopyDistance.12: - call Reader_ReadBitsInline_5_IY + call BitReader_ReadInline_5_IY xor -65 jp Inflate_CopySmallDistance Inflate_CopyDistance.13: - call Reader_ReadBitsInline_5_IY + call BitReader_ReadInline_5_IY xor -97 jp Inflate_CopySmallDistance Inflate_CopyDistance.14: - call Reader_ReadBitsInline_6_IY + call BitReader_ReadInline_6_IY xor -129 jp Inflate_CopySmallDistance Inflate_CopyDistance.15: - call Reader_ReadBitsInline_6_IY + call BitReader_ReadInline_6_IY xor -193 jp Inflate_CopySmallDistance Inflate_CopyDistance.16: - call Reader_ReadBitsInline_7_IY + call BitReader_ReadInline_7_IY exx cpl ld l,a ld h,-257 >> 8 jp Inflate_Copy Inflate_CopyDistance.17: - call Reader_ReadBitsInline_7_IY + call BitReader_ReadInline_7_IY exx xor -385 & 0FFH ld l,a ld h,-385 >> 8 jp Inflate_Copy Inflate_CopyDistance.18: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY exx cpl ld l,a ld h,-513 >> 8 jp Inflate_Copy Inflate_CopyDistance.19: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY exx cpl ld l,a ld h,-769 >> 8 jp Inflate_Copy Inflate_CopyDistance.20: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY ex af,af' - call Reader_ReadBitsInline_1_IY + call BitReader_ReadInline_1_IY xor -1025 >> 8 jp Inflate_CopyLargeDistance Inflate_CopyDistance.21: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY ex af,af' - call Reader_ReadBitsInline_1_IY + call BitReader_ReadInline_1_IY xor -1537 >> 8 jp Inflate_CopyLargeDistance Inflate_CopyDistance.22: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY ex af,af' - call Reader_ReadBitsInline_2_IY + call BitReader_ReadInline_2_IY xor -2049 >> 8 jp Inflate_CopyLargeDistance Inflate_CopyDistance.23: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY ex af,af' - call Reader_ReadBitsInline_2_IY + call BitReader_ReadInline_2_IY xor -3073 >> 8 jp Inflate_CopyLargeDistance Inflate_CopyDistance.24: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY ex af,af' - call Reader_ReadBitsInline_3_IY + call BitReader_ReadInline_3_IY xor -4097 >> 8 jp Inflate_CopyLargeDistance Inflate_CopyDistance.25: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY ex af,af' - call Reader_ReadBitsInline_3_IY + call BitReader_ReadInline_3_IY xor -6145 >> 8 jp Inflate_CopyLargeDistance Inflate_CopyDistance.26: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY ex af,af' - call Reader_ReadBitsInline_4_IY + call BitReader_ReadInline_4_IY xor -8193 >> 8 jp Inflate_CopyLargeDistance Inflate_CopyDistance.27: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY ex af,af' - call Reader_ReadBitsInline_4_IY + call BitReader_ReadInline_4_IY xor -12289 >> 8 jp Inflate_CopyLargeDistance Inflate_CopyDistance.28: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY ex af,af' - call Reader_ReadBitsInline_5_IY + call BitReader_ReadInline_5_IY xor -16385 >> 8 jp Inflate_CopyLargeDistance Inflate_CopyDistance.29: - call Reader_ReadBitsInline_8_IY + call BitReader_ReadInline_8_IY ex af,af' - call Reader_ReadBitsInline_5_IY + call BitReader_ReadInline_5_IY xor -24577 >> 8 jp Inflate_CopyLargeDistance