This routine converts 24-bit binary to 4-byte BCD format by Gorner algorithm
; Convert 24-bit binary to 4-byte BCD format
; It uses Gorner algorithm:
; Num10=(...((0+bitn-1)*2+bitn-2)*2+...bit1)*2+bit0 
; INPUT  : (MSB)R1/R2/R3(LSB)    - bin24
; OUTPUT : (MSB)R4/R5/R6/R7(LSB) - bcd4
; MODIFY : R0,ACC,PSW and destroys bin24
; CODE size: 59 bytes
; TIME: 689...1073(max) machine cycles
; NOTE: no zero check implemented (see another source below)
SUB_BIN24TOBCD4:
; prepare result area
	MOV	R4,#0
	MOV	R5,#0
	MOV	R6,#0
	MOV	R7,#0
	MOV	R0,#24				; number of bits
	JMP	SUB_BIN24TOBCD4_0
SUB_BIN24TOBCD4_C:
; multiple BCD4 by 2
	MOV	A,R7
	ADD	A,R7
	DA	A
	MOV	R7,A
	MOV	A,R6
	ADDC	A,R6
	DA	A
	MOV	R6,A
	MOV	A,R5
	ADDC	A,R5
	DA	A
	MOV	R5,A
	MOV	A,R4
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_0:
; roll left bin24
	MOV	A,R3
	RLC	A
	MOV	R3,A
	MOV	A,R2
	RLC	A
	MOV	R2,A
	MOV	A,R1
	RLC	A
	MOV	R1,A
	JNC	SUB_BIN24TOBCD4_1		; bit=0
; bit=1 so increment BCD4 by 1
	MOV	A,#1
	ADD	A,R7
	DA	A
	MOV	R7,A
	CLR	A
	ADDC	A,R6
	DA	A
	MOV	R6,A
	CLR	A
	ADDC	A,R5
	DA	A
	MOV	R5,A
	CLR	A
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_1:
	DJNZ	R0,SUB_BIN24TOBCD4_C
	RET
	
; Convert 24-bit binary to 4-byte BCD format
; It uses Gorner algorithm:
; Num10=(...((0+bitn-1)*2+bitn-2)*2+...bit1)*2+bit0 
; INPUT  : (MSB)R1/R2/R3(LSB)    - bin24
; OUTPUT : (MSB)R4/R5/R6/R7(LSB) - bcd4
; MODIFY : R0,ACC,PSW
; CODE size: 100 bytes
; TIME: 18...1131(max) machine cycles
; NOTE: zero check implemented and keep bin24 as well
SUB_BIN24TOBCD4:
; prepare result area
	MOV	R4,#0
	MOV	R5,#0
	MOV	R6,#0
	MOV	R7,#0
; process high byte of binary
	MOV	A,R1
	JZ	SUB_BIN24TOBCD4_B1		; zero skip
	MOV	R0,#8				; number of bits
SUB_BIN24TOBCD4_B2_C:
	MOV	A,R1
	RL	A				; rotate and keep value
	MOV	R1,A				; so no RLC/JNC used
	JNB	ACC.0,SUB_BIN24TOBCD4_B2_0
	CALL	SUB_BIN24TOBCD4_P1		; bit=1 so increase BCD4
SUB_BIN24TOBCD4_B2_0:
	CALL	SUB_BIN24TOBCD4_X2		; BCD4 = BCD4 * 2
	DJNZ	R0,SUB_BIN24TOBCD4_B2_C
; process middle byte of binary
SUB_BIN24TOBCD4_B1:
	MOV	A,R1
	ORL	A,R2
	JZ	SUB_BIN24TOBCD4_B0		; zero skip
	MOV	R0,#8
SUB_BIN24TOBCD4_B1_C:
	MOV	A,R2
	RL	A
	MOV	R2,A
	JNB	ACC.0,SUB_BIN24TOBCD4_B1_0
	CALL	SUB_BIN24TOBCD4_P1
SUB_BIN24TOBCD4_B1_0:
	CALL	SUB_BIN24TOBCD4_X2
	DJNZ	R0,SUB_BIN24TOBCD4_B1_C
; process low byte of binary (some different than above)
SUB_BIN24TOBCD4_B0:
	MOV	A,R1
	ORL	A,R2
	ORL	A,R3
	JZ	SUB_BIN24TOBCD4_END		; zero skip
	MOV	R0,#8
	JMP	SUB_BIN24TOBCD4_B0_0		; because need skip last *2
SUB_BIN24TOBCD4_B0_C:
	CALL	SUB_BIN24TOBCD4_X2
SUB_BIN24TOBCD4_B0_0:
	MOV	A,R3
	RL	A
	MOV	R3,A
	JNB	ACC.0,SUB_BIN24TOBCD4_B0_1
	CALL	SUB_BIN24TOBCD4_P1
SUB_BIN24TOBCD4_B0_1:
	DJNZ	R0,SUB_BIN24TOBCD4_B0_C
SUB_BIN24TOBCD4_END:
	RET
; Multiple BCD4 by 2 subroutine
SUB_BIN24TOBCD4_X2:
	MOV	A,R7
	ADD	A,R7
	DA	A
	MOV	R7,A
	MOV	A,R6
	ADDC	A,R6
	DA	A
	MOV	R6,A
	MOV	A,R5
	ADDC	A,R5
	DA	A
	MOV	R5,A
	MOV	A,R4
	ADDC	A,R4
	DA	A
	MOV	R4,A
	RET
; Increment BCD4 by 1 subroutine
SUB_BIN24TOBCD4_P1:
	MOV	A,#1
	ADD	A,R7
	DA	A
	MOV	R7,A
	CLR	A
	ADDC	A,R6
	DA	A
	MOV	R6,A
	CLR	A
	ADDC	A,R5
	DA	A
	MOV	R5,A
	CLR	A
	ADDC	A,R4
	DA	A
	MOV	R4,A
	RET
	

This routine converts 24-bit binary to 4-byte BCD format by adding of nibble decimal weight precalculated in tables
; Convert 24-bit binary to 4-byte BCD format
; It uses adding of nibble decimal weight precalculated in tables
; INPUT  : (MSB)R1/R2/R3(LSB)    - bin24
;	   [N5_N4][N3_N2][N1_N0] <- nibbles
; OUTPUT : (MSB)R4/R5/R6/R7(LSB) - bcd4
; MODIFY : R0,ACC,PSW,DPTR
; CODE+CONSTANT size: 404 bytes
; TIME: 38...179(max) machine cycles
SUB_BIN24TOBCD4:
; process high nibble of high byte (nibble 5)
; it prepares result area as well
	MOV	A,R1
	SWAP	A
	ANL	A,#00001111b
	RL	A				; x2
	RL	A				; x4
	MOV	R0,A
	MOV	DPTR,#(DAT_BIN24TOBCD4_N5)	; 4-bytes records table
	MOVC	A,@A+DPTR
	MOV	R7,A
	INC	R0
	MOV	A,R0
	MOVC	A,@A+DPTR
	MOV	R6,A
	INC	R0
	MOV	A,R0
	MOVC	A,@A+DPTR
	MOV	R5,A
	INC	R0
	MOV	A,R0
	MOVC	A,@A+DPTR
	MOV	R4,A
; process low nibble of high byte (nibble 4)
	MOV	A,R1
	ANL	A,#00001111b
	JZ	SUB_BIN24TOBCD4_N3		; nibble zero skip
	MOV	R0,A
	RL	A				; x2
	ADD	A,R0				; x3
	MOV	R0,A
	MOV	DPTR,#(DAT_BIN24TOBCD4_N4-3)	; 3-bytes records table
	MOVC	A,@A+DPTR
	ADD	A,R7
	DA	A
	MOV	R7,A
	INC	R0
	MOV	A,R0
	MOVC	A,@A+DPTR
	ADDC	A,R6
	DA	A
	MOV	R6,A
	INC	R0
	MOV	A,R0
	MOVC	A,@A+DPTR
	ADDC	A,R5
	DA	A
	MOV	R5,A
	CLR	A
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_N3:
; process high nibble of middle byte (nibble 3)
	MOV	A,R2
	JZ	SUB_BIN24TOBCD4_N1		; byte zero skip
	SWAP	A
	ANL	A,#00001111b
	JZ	SUB_BIN24TOBCD4_N2		; nibble zero skip
	MOV	R0,A
	RL	A				; x2
	ADD	A,R0				; x3
	MOV	R0,A
	MOV	DPTR,#(DAT_BIN24TOBCD4_N3-3)	; 3-bytes records table
	MOVC	A,@A+DPTR
	ADD	A,R7
	DA	A
	MOV	R7,A
	INC	R0
	MOV	A,R0
	MOVC	A,@A+DPTR
	ADDC	A,R6
	DA	A
	MOV	R6,A
	INC	R0
	MOV	A,R0
	MOVC	A,@A+DPTR
	ADDC	A,R5
	DA	A
	MOV	R5,A
	CLR	A
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_N2:
; process low nibble of middle byte (nibble 2)
	MOV	A,R2
	ANL	A,#00001111b
	JZ	SUB_BIN24TOBCD4_N1		; nibble zero skip
	RL	A				; x2
	MOV	R0,A
	MOV	DPTR,#(DAT_BIN24TOBCD4_N2-2)	; 2-bytes records table
	MOVC	A,@A+DPTR
	ADD	A,R7
	DA	A
	MOV	R7,A
	INC	R0
	MOV	A,R0
	MOVC	A,@A+DPTR
	ADDC	A,R6
	DA	A
	MOV	R6,A
	CLR	A
	ADDC	A,R5
	DA	A
	MOV	R5,A
	CLR	A
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_N1:
; process high nibble of low byte (nibble 1)
	MOV	A,R3
	JZ	SUB_BIN24TOBCD4_END		; byte zero skip
	SWAP	A
	ANL	A,#00001111b
	JZ	SUB_BIN24TOBCD4_N0		; nibble zero skip
	RL	A				; x2
	MOV	R0,A
	MOV	DPTR,#(DAT_BIN24TOBCD4_N1-2)	; 2-bytes records table
	MOVC	A,@A+DPTR
	ADD	A,R7
	DA	A
	MOV	R7,A
	INC	R0
	MOV	A,R0
	MOVC	A,@A+DPTR
	ADDC	A,R6
	DA	A
	MOV	R6,A
	CLR	A
	ADDC	A,R5
	DA	A
	MOV	R5,A
	CLR	A
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_N0:
; process low nibble of low byte (nibble 0)
	MOV	A,R3
	ANL	A,#00001111b
	JZ	SUB_BIN24TOBCD4_END		; nibble zero skip
	MOV	DPTR,#(DAT_BIN24TOBCD4_N0-1)	; 1-byte records table
	MOVC	A,@A+DPTR
	ADD	A,R7
	DA	A
	MOV	R7,A
	CLR	A
	ADDC	A,R6
	DA	A
	MOV	R6,A
	CLR	A
	ADDC	A,R5
	DA	A
	MOV	R5,A
	CLR	A
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_END:
	RET
; tables of nibbles` decimal weight
; - nibble0: one byte records
DAT_BIN24TOBCD4_N0:
	DB	0x01
	DB	0x02
	DB	0x03
	DB	0x04
	DB	0x05
	DB	0x06
	DB	0x07
	DB	0x08
	DB	0x09
	DB	0x10
	DB	0x11
	DB	0x12
	DB	0x13
	DB	0x14
	DB	0x15
; - nibble1: 2-bytes records
DAT_BIN24TOBCD4_N1:
	DB	0x16,0x00
	DB	0x32,0x00
	DB	0x48,0x00
	DB	0x64,0x00
	DB	0x80,0x00
	DB	0x96,0x00
	DB	0x12,0x01
	DB	0x28,0x01
	DB	0x44,0x01
	DB	0x60,0x01
	DB	0x76,0x01
	DB	0x92,0x01
	DB	0x08,0x02
	DB	0x24,0x02
	DB	0x40,0x02
; - nibble2: 2-bytes records
DAT_BIN24TOBCD4_N2:
	DB	0x56,0x02
	DB	0x12,0x05
	DB	0x68,0x07
	DB	0x24,0x10
	DB	0x80,0x12
	DB	0x36,0x15
	DB	0x92,0x17
	DB	0x48,0x20
	DB	0x04,0x23
	DB	0x60,0x25
	DB	0x16,0x28
	DB	0x72,0x30
	DB	0x28,0x33
	DB	0x84,0x35
	DB	0x40,0x38
; - nibble3: 3-bytes records
DAT_BIN24TOBCD4_N3:
	DB	0x96,0x40,0x00
	DB	0x92,0x81,0x00
	DB	0x88,0x22,0x01
	DB	0x84,0x63,0x01
	DB	0x80,0x04,0x02
	DB	0x76,0x45,0x02
	DB	0x72,0x86,0x02
	DB	0x68,0x27,0x03
	DB	0x64,0x68,0x03
	DB	0x60,0x09,0x04
	DB	0x56,0x50,0x04
	DB	0x52,0x91,0x04
	DB	0x48,0x32,0x05
	DB	0x44,0x73,0x05
	DB	0x40,0x14,0x06
; - nibble4: 3-bytes records
DAT_BIN24TOBCD4_N4:
	DB	0x36,0x55,0x06
	DB	0x72,0x10,0x13
	DB	0x08,0x66,0x19
	DB	0x44,0x21,0x26
	DB	0x80,0x76,0x32
	DB	0x16,0x32,0x39
	DB	0x52,0x87,0x45
	DB	0x88,0x42,0x52
	DB	0x24,0x98,0x58
	DB	0x60,0x53,0x65
	DB	0x96,0x08,0x72
	DB	0x32,0x64,0x78
	DB	0x68,0x19,0x85
	DB	0x04,0x75,0x91
	DB	0x40,0x30,0x98
; - nibble5: 4-bytes records
DAT_BIN24TOBCD4_N5:
	DB	0x00,0x00,0x00,0x00
	DB	0x76,0x85,0x04,0x01
	DB	0x52,0x71,0x09,0x02
	DB	0x28,0x57,0x14,0x03
	DB	0x04,0x43,0x19,0x04
	DB	0x80,0x28,0x24,0x05
	DB	0x56,0x14,0x29,0x06
	DB	0x32,0x00,0x34,0x07
	DB	0x08,0x86,0x38,0x08
	DB	0x84,0x71,0x43,0x09
	DB	0x60,0x57,0x48,0x10
	DB	0x36,0x43,0x53,0x11
	DB	0x12,0x29,0x58,0x12
	DB	0x88,0x14,0x63,0x13
	DB	0x64,0x00,0x68,0x14
	DB	0x40,0x86,0x72,0x15
	

This routine converts 24-bit binary to 4-byte BCD format by adding of byte decimal weight precalculated in tables
; Convert 24-bit binary to 4-byte BCD format
; It uses adding of byte decimal weight precalculated in tables
; INPUT  : (MSB)R1/R2/R3(LSB)    - bin24
;	      [B2][B1][B0]      <- bytes
; OUTPUT : (MSB)R4/R5/R6/R7(LSB) - bcd4
; MODIFY : ACC,PSW,DPTR
; CODE+CONSTANT size: 2379 bytes
; TIME: 29...76(max) machine cycles
SUB_BIN24TOBCD4:
; process high byte (binary MSB)
; it prepares result area as well
	MOV	DPTR,#DAT_BIN24TOBCD4_B2	; 4-bytes records
	MOV	A,R1
	MOVC	A,@A+DPTR
	MOV	R7,A
	INC	DPH
	MOV	A,R1
	MOVC	A,@A+DPTR
	MOV	R6,A
	INC	DPH
	MOV	A,R1
	MOVC	A,@A+DPTR
	MOV	R5,A
	INC	DPH
	MOV	A,R1
	MOVC	A,@A+DPTR
	MOV	R4,A
; process middle byte
	MOV	A,R2
	JZ	SUB_BIN24TOBCD4_B0		; zero byte skip
	MOV	DPTR,#DAT_BIN24TOBCD4_B1	; 3-bytes records
	MOVC	A,@A+DPTR
	ADD	A,R7
	DA	A
	MOV	R7,A
	INC	DPH
	MOV	A,R2
	MOVC	A,@A+DPTR
	ADDC	A,R6
	DA	A
	MOV	R6,A
	INC	DPH
	MOV	A,R2
	MOVC	A,@A+DPTR
	ADDC	A,R5
	DA	A
	MOV	R5,A
	CLR	A
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_B0:
; process low byte (LSB binary)
	MOV	A,R3
	JZ	SUB_BIN24TOBCD4_END		; zero byte skip
	MOV	DPTR,#DAT_BIN24TOBCD4_B0	; 2-bytes records
	MOVC	A,@A+DPTR
	ADD	A,R7
	DA	A
	MOV	R7,A
	INC	DPH
	MOV	A,R3
	MOVC	A,@A+DPTR
	ADDC	A,R6
	DA	A
	MOV	R6,A
	CLR	A
	ADDC	A,R5
	DA	A
	MOV	R5,A
	CLR	A
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_END:
	RET
; tables of bytes decimal weight
; low binary byte (256 2-bytes records)
DAT_BIN24TOBCD4_B0:
	DB	0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15
	DB	0x16,0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x30,0x31
	DB	0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47
	DB	0x48,0x49,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x60,0x61,0x62,0x63
	DB	0x64,0x65,0x66,0x67,0x68,0x69,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79
	DB	0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x90,0x91,0x92,0x93,0x94,0x95
	DB	0x96,0x97,0x98,0x99,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11
	DB	0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27
	DB	0x28,0x29,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43
	DB	0x44,0x45,0x46,0x47,0x48,0x49,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59
	DB	0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x70,0x71,0x72,0x73,0x74,0x75
	DB	0x76,0x77,0x78,0x79,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x90,0x91
	DB	0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07
	DB	0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x21,0x22,0x23
	DB	0x24,0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39
	DB	0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x50,0x51,0x52,0x53,0x54,0x55

	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	DB	0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
	DB	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
	DB	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
	DB	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
	DB	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
	DB	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
	DB	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02
	DB	0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02
	DB	0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02
	DB	0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02

; middle binary byte (256 3-bytes records)
DAT_BIN24TOBCD4_B1:
	DB	0x00,0x56,0x12,0x68,0x24,0x80,0x36,0x92,0x48,0x04,0x60,0x16,0x72,0x28,0x84,0x40
	DB	0x96,0x52,0x08,0x64,0x20,0x76,0x32,0x88,0x44,0x00,0x56,0x12,0x68,0x24,0x80,0x36
	DB	0x92,0x48,0x04,0x60,0x16,0x72,0x28,0x84,0x40,0x96,0x52,0x08,0x64,0x20,0x76,0x32
	DB	0x88,0x44,0x00,0x56,0x12,0x68,0x24,0x80,0x36,0x92,0x48,0x04,0x60,0x16,0x72,0x28
	DB	0x84,0x40,0x96,0x52,0x08,0x64,0x20,0x76,0x32,0x88,0x44,0x00,0x56,0x12,0x68,0x24
	DB	0x80,0x36,0x92,0x48,0x04,0x60,0x16,0x72,0x28,0x84,0x40,0x96,0x52,0x08,0x64,0x20
	DB	0x76,0x32,0x88,0x44,0x00,0x56,0x12,0x68,0x24,0x80,0x36,0x92,0x48,0x04,0x60,0x16
	DB	0x72,0x28,0x84,0x40,0x96,0x52,0x08,0x64,0x20,0x76,0x32,0x88,0x44,0x00,0x56,0x12
	DB	0x68,0x24,0x80,0x36,0x92,0x48,0x04,0x60,0x16,0x72,0x28,0x84,0x40,0x96,0x52,0x08
	DB	0x64,0x20,0x76,0x32,0x88,0x44,0x00,0x56,0x12,0x68,0x24,0x80,0x36,0x92,0x48,0x04
	DB	0x60,0x16,0x72,0x28,0x84,0x40,0x96,0x52,0x08,0x64,0x20,0x76,0x32,0x88,0x44,0x00
	DB	0x56,0x12,0x68,0x24,0x80,0x36,0x92,0x48,0x04,0x60,0x16,0x72,0x28,0x84,0x40,0x96
	DB	0x52,0x08,0x64,0x20,0x76,0x32,0x88,0x44,0x00,0x56,0x12,0x68,0x24,0x80,0x36,0x92
	DB	0x48,0x04,0x60,0x16,0x72,0x28,0x84,0x40,0x96,0x52,0x08,0x64,0x20,0x76,0x32,0x88
	DB	0x44,0x00,0x56,0x12,0x68,0x24,0x80,0x36,0x92,0x48,0x04,0x60,0x16,0x72,0x28,0x84
	DB	0x40,0x96,0x52,0x08,0x64,0x20,0x76,0x32,0x88,0x44,0x00,0x56,0x12,0x68,0x24,0x80

	DB	0x00,0x02,0x05,0x07,0x10,0x12,0x15,0x17,0x20,0x23,0x25,0x28,0x30,0x33,0x35,0x38
	DB	0x40,0x43,0x46,0x48,0x51,0x53,0x56,0x58,0x61,0x64,0x66,0x69,0x71,0x74,0x76,0x79
	DB	0x81,0x84,0x87,0x89,0x92,0x94,0x97,0x99,0x02,0x04,0x07,0x10,0x12,0x15,0x17,0x20
	DB	0x22,0x25,0x28,0x30,0x33,0x35,0x38,0x40,0x43,0x45,0x48,0x51,0x53,0x56,0x58,0x61
	DB	0x63,0x66,0x68,0x71,0x74,0x76,0x79,0x81,0x84,0x86,0x89,0x92,0x94,0x97,0x99,0x02
	DB	0x04,0x07,0x09,0x12,0x15,0x17,0x20,0x22,0x25,0x27,0x30,0x32,0x35,0x38,0x40,0x43
	DB	0x45,0x48,0x50,0x53,0x56,0x58,0x61,0x63,0x66,0x68,0x71,0x73,0x76,0x79,0x81,0x84
	DB	0x86,0x89,0x91,0x94,0x96,0x99,0x02,0x04,0x07,0x09,0x12,0x14,0x17,0x20,0x22,0x25
	DB	0x27,0x30,0x32,0x35,0x37,0x40,0x43,0x45,0x48,0x50,0x53,0x55,0x58,0x60,0x63,0x66
	DB	0x68,0x71,0x73,0x76,0x78,0x81,0x84,0x86,0x89,0x91,0x94,0x96,0x99,0x01,0x04,0x07
	DB	0x09,0x12,0x14,0x17,0x19,0x22,0x24,0x27,0x30,0x32,0x35,0x37,0x40,0x42,0x45,0x48
	DB	0x50,0x53,0x55,0x58,0x60,0x63,0x65,0x68,0x71,0x73,0x76,0x78,0x81,0x83,0x86,0x88
	DB	0x91,0x94,0x96,0x99,0x01,0x04,0x06,0x09,0x12,0x14,0x17,0x19,0x22,0x24,0x27,0x29
	DB	0x32,0x35,0x37,0x40,0x42,0x45,0x47,0x50,0x52,0x55,0x58,0x60,0x63,0x65,0x68,0x70
	DB	0x73,0x76,0x78,0x81,0x83,0x86,0x88,0x91,0x93,0x96,0x99,0x01,0x04,0x06,0x09,0x11
	DB	0x14,0x16,0x19,0x22,0x24,0x27,0x29,0x32,0x34,0x37,0x40,0x42,0x45,0x47,0x50,0x52

	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
	DB	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
	DB	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02
	DB	0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02
	DB	0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02
	DB	0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
	DB	0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
	DB	0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x04
	DB	0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04
	DB	0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04
	DB	0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05
	DB	0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05
	DB	0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x06
	DB	0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06

; high binary byte (256 4-bytes records)
DAT_BIN24TOBCD4_B2:
	DB	0x00,0x36,0x72,0x08,0x44,0x80,0x16,0x52,0x88,0x24,0x60,0x96,0x32,0x68,0x04,0x40
	DB	0x76,0x12,0x48,0x84,0x20,0x56,0x92,0x28,0x64,0x00,0x36,0x72,0x08,0x44,0x80,0x16
	DB	0x52,0x88,0x24,0x60,0x96,0x32,0x68,0x04,0x40,0x76,0x12,0x48,0x84,0x20,0x56,0x92
	DB	0x28,0x64,0x00,0x36,0x72,0x08,0x44,0x80,0x16,0x52,0x88,0x24,0x60,0x96,0x32,0x68
	DB	0x04,0x40,0x76,0x12,0x48,0x84,0x20,0x56,0x92,0x28,0x64,0x00,0x36,0x72,0x08,0x44
	DB	0x80,0x16,0x52,0x88,0x24,0x60,0x96,0x32,0x68,0x04,0x40,0x76,0x12,0x48,0x84,0x20
	DB	0x56,0x92,0x28,0x64,0x00,0x36,0x72,0x08,0x44,0x80,0x16,0x52,0x88,0x24,0x60,0x96
	DB	0x32,0x68,0x04,0x40,0x76,0x12,0x48,0x84,0x20,0x56,0x92,0x28,0x64,0x00,0x36,0x72
	DB	0x08,0x44,0x80,0x16,0x52,0x88,0x24,0x60,0x96,0x32,0x68,0x04,0x40,0x76,0x12,0x48
	DB	0x84,0x20,0x56,0x92,0x28,0x64,0x00,0x36,0x72,0x08,0x44,0x80,0x16,0x52,0x88,0x24
	DB	0x60,0x96,0x32,0x68,0x04,0x40,0x76,0x12,0x48,0x84,0x20,0x56,0x92,0x28,0x64,0x00
	DB	0x36,0x72,0x08,0x44,0x80,0x16,0x52,0x88,0x24,0x60,0x96,0x32,0x68,0x04,0x40,0x76
	DB	0x12,0x48,0x84,0x20,0x56,0x92,0x28,0x64,0x00,0x36,0x72,0x08,0x44,0x80,0x16,0x52
	DB	0x88,0x24,0x60,0x96,0x32,0x68,0x04,0x40,0x76,0x12,0x48,0x84,0x20,0x56,0x92,0x28
	DB	0x64,0x00,0x36,0x72,0x08,0x44,0x80,0x16,0x52,0x88,0x24,0x60,0x96,0x32,0x68,0x04
	DB	0x40,0x76,0x12,0x48,0x84,0x20,0x56,0x92,0x28,0x64,0x00,0x36,0x72,0x08,0x44,0x80

	DB	0x00,0x55,0x10,0x66,0x21,0x76,0x32,0x87,0x42,0x98,0x53,0x08,0x64,0x19,0x75,0x30
	DB	0x85,0x41,0x96,0x51,0x07,0x62,0x17,0x73,0x28,0x84,0x39,0x94,0x50,0x05,0x60,0x16
	DB	0x71,0x26,0x82,0x37,0x92,0x48,0x03,0x59,0x14,0x69,0x25,0x80,0x35,0x91,0x46,0x01
	DB	0x57,0x12,0x68,0x23,0x78,0x34,0x89,0x44,0x00,0x55,0x10,0x66,0x21,0x76,0x32,0x87
	DB	0x43,0x98,0x53,0x09,0x64,0x19,0x75,0x30,0x85,0x41,0x96,0x52,0x07,0x62,0x18,0x73
	DB	0x28,0x84,0x39,0x94,0x50,0x05,0x60,0x16,0x71,0x27,0x82,0x37,0x93,0x48,0x03,0x59
	DB	0x14,0x69,0x25,0x80,0x36,0x91,0x46,0x02,0x57,0x12,0x68,0x23,0x78,0x34,0x89,0x44
	DB	0x00,0x55,0x11,0x66,0x21,0x77,0x32,0x87,0x43,0x98,0x53,0x09,0x64,0x20,0x75,0x30
	DB	0x86,0x41,0x96,0x52,0x07,0x62,0x18,0x73,0x28,0x84,0x39,0x95,0x50,0x05,0x61,0x16
	DB	0x71,0x27,0x82,0x37,0x93,0x48,0x04,0x59,0x14,0x70,0x25,0x80,0x36,0x91,0x46,0x02
	DB	0x57,0x12,0x68,0x23,0x79,0x34,0x89,0x45,0x00,0x55,0x11,0x66,0x21,0x77,0x32,0x88
	DB	0x43,0x98,0x54,0x09,0x64,0x20,0x75,0x30,0x86,0x41,0x96,0x52,0x07,0x63,0x18,0x73
	DB	0x29,0x84,0x39,0x95,0x50,0x05,0x61,0x16,0x72,0x27,0x82,0x38,0x93,0x48,0x04,0x59
	DB	0x14,0x70,0x25,0x80,0x36,0x91,0x47,0x02,0x57,0x13,0x68,0x23,0x79,0x34,0x89,0x45
	DB	0x00,0x56,0x11,0x66,0x22,0x77,0x32,0x88,0x43,0x98,0x54,0x09,0x64,0x20,0x75,0x31
	DB	0x86,0x41,0x97,0x52,0x07,0x63,0x18,0x73,0x29,0x84,0x40,0x95,0x50,0x06,0x61,0x16

	DB	0x00,0x06,0x13,0x19,0x26,0x32,0x39,0x45,0x52,0x58,0x65,0x72,0x78,0x85,0x91,0x98
	DB	0x04,0x11,0x17,0x24,0x31,0x37,0x44,0x50,0x57,0x63,0x70,0x76,0x83,0x90,0x96,0x03
	DB	0x09,0x16,0x22,0x29,0x35,0x42,0x49,0x55,0x62,0x68,0x75,0x81,0x88,0x94,0x01,0x08
	DB	0x14,0x21,0x27,0x34,0x40,0x47,0x53,0x60,0x67,0x73,0x80,0x86,0x93,0x99,0x06,0x12
	DB	0x19,0x25,0x32,0x39,0x45,0x52,0x58,0x65,0x71,0x78,0x84,0x91,0x98,0x04,0x11,0x17
	DB	0x24,0x30,0x37,0x43,0x50,0x57,0x63,0x70,0x76,0x83,0x89,0x96,0x02,0x09,0x16,0x22
	DB	0x29,0x35,0x42,0x48,0x55,0x61,0x68,0x75,0x81,0x88,0x94,0x01,0x07,0x14,0x20,0x27
	DB	0x34,0x40,0x47,0x53,0x60,0x66,0x73,0x79,0x86,0x92,0x99,0x06,0x12,0x19,0x25,0x32
	DB	0x38,0x45,0x51,0x58,0x65,0x71,0x78,0x84,0x91,0x97,0x04,0x10,0x17,0x24,0x30,0x37
	DB	0x43,0x50,0x56,0x63,0x69,0x76,0x83,0x89,0x96,0x02,0x09,0x15,0x22,0x28,0x35,0x42
	DB	0x48,0x55,0x61,0x68,0x74,0x81,0x87,0x94,0x01,0x07,0x14,0x20,0x27,0x33,0x40,0x46
	DB	0x53,0x59,0x66,0x73,0x79,0x86,0x92,0x99,0x05,0x12,0x18,0x25,0x32,0x38,0x45,0x51
	DB	0x58,0x64,0x71,0x77,0x84,0x91,0x97,0x04,0x10,0x17,0x23,0x30,0x36,0x43,0x50,0x56
	DB	0x63,0x69,0x76,0x82,0x89,0x95,0x02,0x09,0x15,0x22,0x28,0x35,0x41,0x48,0x54,0x61
	DB	0x68,0x74,0x81,0x87,0x94,0x00,0x07,0x13,0x20,0x26,0x33,0x40,0x46,0x53,0x59,0x66
	DB	0x72,0x79,0x85,0x92,0x99,0x05,0x12,0x18,0x25,0x31,0x38,0x44,0x51,0x58,0x64,0x71

	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	DB	0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02
	DB	0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03
	DB	0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04
	DB	0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x05
	DB	0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x06
	DB	0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07
	DB	0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x08,0x08,0x08,0x08,0x08
	DB	0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x09,0x09,0x09,0x09,0x09,0x09
	DB	0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x10,0x10,0x10,0x10,0x10,0x10,0x10
	DB	0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11
	DB	0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12
	DB	0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13
	DB	0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14
	DB	0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15
	DB	0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16