Apple II User Manual

Page of 257
1841   EBEA 20 23 EC           JSR DEHALF      ;DELAY 1/2 BIT TIME
1842   EBED AD 00 A8    GET3   LDA DRB         ;GET 8 BITS
1843   EBF0 29 40              AND #$40        ;MASK OFF OTHER BITS,ONLY PB6
1844   EBF2 4E 2A A4           LSR CPIY        ;SHIFT RIGHT CHARACTER
1845   EBF5 0D 2A A4           ORA CPIY
1846   EBF8 8D 2A A4           STA CPIY
1847   EBFB 20 0F EC           JSR DELAY       ;DELAY 1 BIT TIME
1848   EBFE CA                 DEX
1849   EBFF D0 EC              BNE GET3        ;GET NEXT BIT
1850   EC01 20 0F EC           JSR DELAY       ;DO NOT CARE FOR PARITY BIT
1851   EC04 20 23 EC           JSR DEHALF      ;UNTIL WE GET BACK TO ONE AGAIN
1852   EC07 68                 PLA             ;RESTORE X
1853   EC08 AA                 TAX
1854   EC09 AD 2A A4           LDA CPIY
1855   EC0C 29 7F              AND #$7F        ;CLEAR PARITY BIT
1856   EC0E 60                 RTS
1857   EC0F
1858   EC0F             ;DELAY 1 BIT TIME AS GIVEN BY BAUD RATE
1859   EC0F AD 18 A4    DELAY  LDA CNTL30      ;START TIMER T2
1860   EC12 8D 08 A8           STA T2L
1861   EC15 AD 17 A4           LDA CNTH30
1862   EC18 8D 09 A8    DE1    STA T2H
1863   EC1B AD 0D A8    DE2    LDA IFR         ;GET INT FLG FOR T2
1864   EC1E 29 20              AND #MT2
1865   EC20 F0 F9              BEQ DE2         ;TIME OUT ?
1866   EC22 60                 RTS
1867   EC23
1868   EC23             ;DELAY HALF BIT TIME
1869   EC23             ;TOTAL TIME DIVIDED BY 2
1870   EC23 AD 17 A4    DEHALF LDA CNTH30
1871   EC26 4A                 LSR A           ;LSB TO CARRY
1872   EC27 AD 18 A4           LDA CNTL30
1873   EC2A 6A                 ROR A           ;SHIFT WITH CARRY
1874   EC2B 8D 08 A8           STA T2L
1875   EC2E AD 17 A4           LDA CNTH30
1876   EC31 4A                 LSR A
1877   EC32 8D 09 A8           STA T2H
1878   EC35 4C 1B EC           JMP DE2
1879   EC38
1880   EC38             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1881   EC38 A9 00       GETKD0 LDA #0
1882   EC3A 8D 77 A4           STA IDOT        ;GO ANOTHER 90 DOTS
1883   EC3D 20 50 F0           JSR IPO0        ;OUTPUT 90 DOTS TO PRI (ZEROS)
1884   EC40
1885   EC40             ;GET A CHAR FROM KB SUBROUTINE
1886   EC40             ;FROM KB Y=ROW ,STBKEY=COLUMNS (STROBE)
1887   EC40             ;X=CTRL OR SHIFT ,OTHERWISE X=0
1888   EC40 20 EF EC    GETKEY JSR ROONEK      ;WAIT IF LAST KEY STILL DOWN
1889   EC43 20 2A ED    GETKY  JSR DEBKEY      ;DEBOUNCE KEY (5 MSEC)
1890   EC46             ;CTRL OR SHIFT ?
1891   EC46 A9 8F              LDA #$8F        ;CHCK CLMN 5,6,7
1892   EC48 8D 80 A4           STA DRA2
1893   EC4B AD 82 A4           LDA DRB2        ;CHCK ROW 1
1894   EC4E 4A                 LSR A
1895   EC4F B0 20              BCS GETK1       ;IF=1 ,NO CTRL OR SHIFT
1896   EC51 A2 03              LDX #3          ;CLMN 5,6,7 (CNTRL,SHIFTL,SHIFTR)
1897   EC53 A9 7F              LDA #$7F        ;CTRL OR SHIFT ,SO WHICH ONE?
1898   EC55 38          GETK0  SEC
1899   EC56 6A                 ROR A
1900   EC57 48                 PHA
1901   EC58 20 0B ED           JSR ONEK2       ;LETS GET CTRL OR SHIFT INTO X
1902   EC5B AD 82 A4           LDA DRB2