Apple II User Manual

Page of 257
1903   EC5E 4A                 LSR A           ;ONLY ROW 1
1904   EC5F 90 06              BCC GETK00      ;GOT YOU
1905   EC61 68                 PLA
1906   EC62 CA                 DEX
1907   EC63 D0 F0              BNE GETK0
1908   EC65 F0 DC              BEQ GETKY       ;THERE IS A MISTAKE CHECK AGAIN
1909   EC67 68          GETK00 PLA             ;NOW GET STBKEY INTO X
1910   EC68 AD 2B A4           LDA STBKEY      ;CLMN INTO X
1911   EC6B 49 FF              EOR #$FF        ;COMPLEMENT BECAUSE STRBS ARE 0
1912   EC6D AA                 TAX             ;CTRL OR SHIFT TO X
1913   EC6E EE 2A A4           INC KMASK       ;SET MSK=$01
1914   EC71             ;NOW GET ANY KEY
1915   EC71 20 05 ED    GETK1  JSR ONEKEY      ;GET A KEY
1916   EC74 88                 DEY             ;CHK THE ROW (1-8)
1917   EC75 D0 09              BNE GETK1B      ;CHK IF CTRL OR SHIFT
1918   EC77 AD 2B A4           LDA STBKEY      ;WERE ENTERED AT THE LAST MOMENT
1919   EC7A C9 F7              CMP #$F7        ;IF CLMN 5,6,7,8 TO IT AGAIN
1920   EC7C B0 04              BCS GETK2
1921   EC7E 90 C3              BCC GETKY       ;SEND IT TO GET CTRL OR SHIFT
1922   EC80 30 C1       GETK1B BMI GETKY       ;NO KEY ,CLEAR MSK
1923   EC82             ;WE HAVE A KEY ,DECODE IT
1924   EC82 20 2C ED    GETK2  JSR DEBK1       ;DEBOUNCE KEY (5 MSEC)
1925   EC85 98                 TYA             ;MULT BY 8
1926   EC86 0A                 ASL A
1927   EC87 0A                 ASL A
1928   EC88 0A                 ASL A
1929   EC89 A8                 TAY             ;NOW Y HAS ROW ADDR FROM ROW 1
1930   EC8A AD 2B A4           LDA STBKEY      ;ADD COLUMN TO Y
1931   EC8D 4A          GETK3  LSR A
1932   EC8E 90 03              BCC GETK4
1933   EC90 C8                 INY
1934   EC91 D0 FA              BNE GETK3
1935   EC93 B9 21 F4    GETK4  LDA ROW1,Y      ;GET THE CHR
1936   EC96 48                 PHA
1937   EC97 8A                 TXA             ;SEE IF CTRL OR SHIFT WAS USED
1938   EC98 F0 24              BEQ GETK7       ;BRCH IF NO CTRL OR SHIFT
1939   EC9A 29 10              AND #$10        ;CTRL ?
1940   EC9C F0 06              BEQ GETK5       ;NO ,GO GETKS
1941   EC9E 68                 PLA
1942   EC9F 29 3F              AND #$3F        ;MSK OFF 2 MSB FOR CONTROL
1943   ECA1 4C BF EC           JMP GETK8       ;EXIT
1944   ECA4 68          GETK5  PLA
1945   ECA5 48                 PHA             ;SAVE IT
1946   ECA6 29 40              AND #$40        ;IF ALPHA CHARS DO NOT SHIFT
1947   ECA8 D0 14              BNE GETK7
1948   ECAA 68                 PLA
1949   ECAB 48                 PHA
1950   ECAC 29 0F              AND #$0F        ;ONLY LSB
1951   ECAE F0 0E              BEQ GETK7       ;DO NOT INTERCHANGE <SPACE> OR 0
1952   ECB0 C9 0C              CMP #$0C        ;ACC>=$0C ?
1953   ECB2 B0 05              BCS GETK6       ;YES ACC>=$0C
1954   ECB4 68                 PLA             ;NO, ACC<$0C
1955   ECB5 29 EF              AND #$EF        ;STRIP OFF BIT 4
1956   ECB7 D0 06              BNE GETK8       ;EXIT
1957   ECB9 68          GETK6  PLA             ;ACC>=$0C
1958   ECBA 09 10              ORA #$10        ;BIT 4= 1
1959   ECBC D0 01              BNE GETK8       ;EXIT
1960   ECBE 68          GETK7  PLA
1961   ECBF             ;CHECK FOR "ADV PAP","PRI LINE", OR "TOGL PRIFLG"
1962   ECBF             ;IN THIS WAY WE DONT HAVE TO CHCK FOR THIS COMM
1963   ECBF C9 60       GETK8  CMP #$60        ;ADV PAPER COMM
1964   ECC1 D0 06              BNE GETK11