Apple II User Manual

Page of 257
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