Apple II User Manual
1903 EC5E 4A LSR A ;ONLY ROW 1
1904 EC5F 90 06 BCC GETK00 ;GOT YOU
1905 EC61 68 PLA
1905 EC61 68 PLA
1906 EC62 CA DEX
1907 EC63 D0 F0 BNE GETK0
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
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
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
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
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
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
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
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
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
1925 EC85 98 TYA ;MULT BY 8
1926 EC86 0A ASL A
1927 EC87 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
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
1931 EC8D 4A GETK3 LSR A
1932 EC8E 90 03 BCC GETK4
1933 EC90 C8 INY
1933 EC90 C8 INY
1934 EC91 D0 FA BNE GETK3
1935 EC93 B9 21 F4 GETK4 LDA ROW1,Y ;GET THE CHR
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
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 ?
1939 EC9A 29 10 AND #$10 ;CTRL ?
1940 EC9C F0 06 BEQ GETK5 ;NO ,GO GETKS
1941 EC9E 68 PLA
1941 EC9E 68 PLA
1942 EC9F 29 3F AND #$3F ;MSK OFF 2 MSB FOR CONTROL
1943 ECA1 4C BF EC JMP GETK8 ;EXIT
1943 ECA1 4C BF EC JMP GETK8 ;EXIT
1944 ECA4 68 GETK5 PLA
1945 ECA5 48 PHA ;SAVE IT
1945 ECA5 48 PHA ;SAVE IT
1946 ECA6 29 40 AND #$40 ;IF ALPHA CHARS DO NOT SHIFT
1947 ECA8 D0 14 BNE GETK7
1947 ECA8 D0 14 BNE GETK7
1948 ECAA 68 PLA
1949 ECAB 48 PHA
1949 ECAB 48 PHA
1950 ECAC 29 0F AND #$0F ;ONLY LSB
1951 ECAE F0 0E BEQ GETK7 ;DO NOT INTERCHANGE <SPACE> OR 0
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
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
1955 ECB5 29 EF AND #$EF ;STRIP OFF BIT 4
1956 ECB7 D0 06 BNE GETK8 ;EXIT
1957 ECB9 68 GETK6 PLA ;ACC>=$0C
1957 ECB9 68 GETK6 PLA ;ACC>=$0C
1958 ECBA 09 10 ORA #$10 ;BIT 4= 1
1959 ECBC D0 01 BNE GETK8 ;EXIT
1959 ECBC D0 01 BNE GETK8 ;EXIT
1960 ECBE 68 GETK7 PLA
1961 ECBF ;CHECK FOR "ADV PAP","PRI LINE", OR "TOGL PRIFLG"
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
1963 ECBF C9 60 GETK8 CMP #$60 ;ADV PAPER COMM
1964 ECC1 D0 06 BNE GETK11