2039 8E3C C9 30 PACKT CMP #$30 ;LT "0"?
2040 8E3E 90 1D BCC PACKT3
2041 8E40 C9 47 CMP #$47 ;GT "F" ?
2042 8E42 B0 19 BCS PACKT3
2043 8E44 C9 40 CMP #$40 ;A-F?
2044 8E46 F0 15 BEQ PACKT3 ;40 NOT VALID
2045 8E48 90 03 BCC PACKT1
2046 8E4A 18 CLC
2047 8E4B 69 09 ADC #9
2048 8E4D 2A PACKT1 ROL A ;GET LSD INTO LEFT NIBBLE
2049 8E4E 2A ROL A
2050 8E4F 2A ROL A
2051 8E50 2A ROL A
2052 8E51 A0 04 LDY #4
2053 8E53 2A RACKT2 ROL A ;ROTATE 1 BIT AT A TIME INTO CHAR
2054 8E54 26 FC ROL CHAR
2055 8E56 88 DEY
2056 8E57 D0 FA BNE RACKT2
2057 8E59 A5 FC LDA CHAR ;GET INTO ACCUM ALSO
2058 8E5B 18 CLC ;OK
2059 8E5C 60 RDRTN RTS
2060 8E5D 38 PACKT3 SEC ;NOT HEX
2061 8E5E 60 RTS
2062 8E5F
2063 8E5F ; RDCHT - READ KIM CHAR
2064 8E5F ; PRESERVES X, RETURNS CHAR IN CHAR (W/PARITY)
2065 8E5F ; AND A (W/O PARITY)
2066 8E5F
2067 8E5F 8A RDCHT TXA ;SAVE X
2068 8E60 48 PHA
2069 8E61 A9 FF LDA #$FF ;USE A TO COUNT BITS (BY SHIFTING)
2070 8E63 48 KBITS PHA ;SAVE COUNTER
2071 8E64 20 0C 8E JSR RDBITK
2072 8E67 66 FC ROR CHAR
2073 8E69 68 PLA
2074 8E6A 0A ASL A
2075 8E6B D0 F6 BNE KBITS ;DO 8 BITS
2076 8E6D 68 PLA ;RESTORE X
2077 8E6E AA TAX
2078 8E6F A5 FC LDA CHAR
2079 8E71 2A ROL A
2080 8E72 4A LSR A ;DROP PARITY
2081 8E73 60 RTS
2082 8E74
2083 8E74 ; RDCHK - READ ONE BYT, INCLUDE IN CKSUM
2084 8E74
2085 8E74 20 26 8E RDCHK JSR RDBYTX ;FALL INTO CHKT
2086 8E77
2087 8E77 ; CHKT - UPDATE CHECK SUM FROM BYTE IN A
2088 8E77 ; DESTROYS Y
2089 8E77
2090 8E77 A8 CHKT TAY ;SAVE ACCUM
2091 8E78 18 CLC
2092 8E79 6D 36 A6 ADC SCR6
2093 8E7C 8D 36 A6 STA SCR6
2094 8E7F 90 03 BCC CHKT10
2095 8E81 EE 37 A6 INC SCR7 ;BUMP HI BYTE
2096 8E84 98 CHKT10 TYA ;RESTORE A
2097 8E85 60 RTS
2098 8E86
2099 8E86 FF .DB $FF ;NOT USED
2100 8E87 *=$8E87 ;KEEP OLD ENTRY POINT