neonlib: Extract BitReader subclass from Reader.
M .hgsubstate +1 -1
@@ 1,1 1,1 @@ 
-8a43f418c682b8f87d70d518ce5484905361dad0 lib/neonlib
+f5d4ac3a27c5e04578db4551e52ed6f50a111448 lib/neonlib

          
M src/COM.asm +1 -0
@@ 39,6 39,7 @@ TPA_TOP:
 	INCLUDE "deflate/Branch.asm"
 	INCLUDE "deflate/HuffmanCodes.asm"
 	INCLUDE "Reader.asm"
+	INCLUDE "BitReader.asm"
 	INCLUDE "FileReader.asm"
 	INCLUDE "CRC32Checker.asm"
 	INCLUDE "CRC32CheckerTest.asm"

          
M src/deflate/AlphabetTest.asm +4 -4
@@ 107,10 107,10 @@ AlphabetTest_TestTreeBuilding: PROC
 	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 @@ Loop:
 	inc hl
 	dec d
 	jr nz,Loop
-	call Reader_FinishReadBitInline_IY
+	call BitReader_FinishReadInline_IY
 	ret
 	ENDP
 

          
@@ 132,7 132,7 @@ AlphabetTest_alphabet:
 	Alphabet
 
 AlphabetTest_reader:
-	Reader
+	BitReader
 
 AlphabetTest_testCodeLengths:
 	db 4, 3, 4, 1, 3, 4, 4

          
M src/deflate/Branch.asm +1 -1
@@ 4,7 4,7 @@ 
 Branch: MACRO
 	; iy = reader
 	Process:
-		Reader_ReadBitInline_IY
+		BitReader_ReadInline_IY
 	jump:
 		jp c,System_ThrowException
 	jumpAddress: equ $ - 2

          
M src/deflate/HuffmanCodes.asm +9 -9
@@ 109,19 109,19 @@ HuffmanCodes_BuildDistanceDecoder:
 ; 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 @@ HuffmanCodes_ReadHeaderCodeLengths: PROC
 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 @@ HuffmanCodes_DecodeCodeLengths:
 	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 @@ HuffmanCodes_WriteAndNext:
 ; 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 @@ Loop:
 ; 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 @@ Loop:
 ; 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
 

          
M src/deflate/Inflate.asm +61 -61
@@ 129,11 129,11 @@ Inflate_InflateLoop:
 	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 @@ Inflate_InflateLoop:
 ; 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 @@ Inflate_InflateCompressed:
 	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 @@ Inflate_CopyLength.7:
 	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 @@ Inflate_CopyDistance.3:
 	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