Apple II User Manual

Page of 257
1965   ECC3 E0 00              CPX #0          ;IF SHIFT IS NOT ADV PAPER
1966   ECC5 F0 25              BEQ GETK10      ;NO SHIFT ,SO ADVPAPER
1967   ECC7 29 4F              AND #$4F        ;CONVRT TO "@"
1968   ECC9 C9 1C       GETK11 CMP #$1C        ;SEE IF TOGGL PRIFLG (CONTRL PRI)
1969   ECCB D0 14              BNE GETK13
1970   ECCD 20 E1 E6           JSR PRITR       ;GO TOGGLE FLG
1971   ECD0 A0 01              LDY #1          ;GET THE PTRS BACK 3 SPACES
1972   ECD2 B9 15 A4    GETK12 LDA CURPO2,Y
1973   ECD5 38                 SEC
1974   ECD6 E9 03              SBC #3          ;BECAUSE "ON ,OFF" MSGS
1975   ECD8 99 15 A4           STA CURPO2,Y
1976   ECDB 88                 DEY
1977   ECDC 10 F4              BPL GETK12
1978   ECDE 4C 40 EC           JMP GETKEY
1979   ECE1 C9 5C       GETK13 CMP #BACKSLASH  ;PRINT LINE COMMAND
1980   ECE3 D0 06              BNE GETK14
1981   ECE5 20 4A F0           JSR IPS0        ;PRINT WHATEVER IS IN BUFFER
1982   ECE8 4C 40 EC           JMP GETKEY
1983   ECEB 60          GETK14 RTS
1984   ECEC 4C 38 EC    GETK10 JMP GETKD0
1985   ECEF
1986   ECEF             ;WAIT IF LAST KEY STILL DOWN  (ROLLOVER)
1987   ECEF AD 82 A4    ROONEK LDA DRB2        ;SEE IF KEY STILL DOWN
1988   ECF2 C9 FF              CMP #$FF
1989   ECF4 F0 0A              BEQ ROO1        ;NO KEY AT ALL, CLR ROLLFL
1990   ECF6 0D 7F A4           ORA ROLLFL      ;ACCEPT ONLY LAST KEY
1991   ECF9 49 FF              EOR #$FF        ;STRBS ARE ZEROS TO INVER
1992   ECFB D0 F2              BNE ROONEK
1993   ECFD 20 2A ED           JSR DEBKEY      ;CLR KMASK & DEBOUNCE RELEASE
1994   ED00 A9 00       ROO1   LDA #0          ;CLR KMASK
1995   ED02 8D 2A A4           STA KMASK
1996   ED05             ;GO THRU KB ONCE AND RTN ,IF ANY
1997   ED05             ;KEY Y=ROW (1-8) & STBKEY=CLMN
1998   ED05             ;IF NO KEY Y=0 ,STBKEY=$FF
1999   ED05 A9 7F       ONEKEY LDA #$7F        ;FIRST STROBE TO MSB
2000   ED07 D0 02              BNE ONEK2       ;START AT ONEK2
2001   ED09 38          ONEK1  SEC             ;ONLY ONE PULSE (ZERO)
2002   ED0A 6A                 ROR A           ;SHIFT TO RIGHT
2003   ED0B 8D 80 A4    ONEK2  STA DRA2        ;OUTPUT CLMN STROBE
2004   ED0E 8D 2B A4           STA STBKEY      ;SAVE IT
2005   ED11 A0 08              LDY #8          ;CHECK 8 ROWS
2006   ED13 AD 82 A4           LDA DRB2        ;ANY KEY ?
2007   ED16 0D 2A A4           ORA KMASK       ;DISABLE ROW 1 IF CTRL OR SHIFT
2008   ED19 8D 7F A4           STA ROLLFL      ;SAVE WHICH KEY IT WAS
2009   ED1C 0A          ONEK3  ASL A
2010   ED1D 90 0A              BCC ONEK4       ;JUMP IF KEY (ZERO)
2011   ED1F 88                 DEY
2012   ED20 D0 FA              BNE ONEK3
2013   ED22 AD 2B A4           LDA STBKEY
2014   ED25 C9 FF              CMP #$FF        ;LAST CLMN ?
2015   ED27 D0 E0              BNE ONEK1       ;NO ,DO NEXT CLMN
2016   ED29 60          ONEK4  RTS
2017   ED2A
2018   ED2A A2 00       DEBKEY LDX #0          ;CLEAR CNTRL OR SHIFT
2019   ED2C A9 00       DEBK1  LDA #0          ;CLR KMASK
2020   ED2E 8D 2A A4           STA KMASK
2021   ED31 A9 88              LDA #DEBTIM     ;DEBOUNCE TIME FOR KEYBOARD
2022   ED33 8D 08 A8           STA T2L
2023   ED36 A9 13              LDA #DEBTIM/256
2024   ED38 4C 18 EC           JMP DE1         ;WAIT FOR 5 MSEC
2025   ED3B
2026   ED3B             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;