ca65 V2.17 - Git 582aa41 Main file : counter_keyboard.ca65 Current file: counter_keyboard.ca65 000000r 1 ; 000000r 1 ; ACORN System 1 Applications: Counter Keyboard 000000r 1 ; 000000r 1 ; From the Acorn System 1 User's Manual 000000r 1 ; 000000r 1 ; (Chris Oddy January 2022) 000000r 1 ; 000000r 1 ; entry point $0200 000000r 1 ; 000000r 1 .setcpu "6502" 000000r 1 .listbytes unlimited 000000r 1 ; 000000r 1 COUNT := $19 000000r 1 DISPLAY := $FE0C ; scan the display 000000r 1 QHEXTD1 := $FE64 ; quad hex to display 1 000000r 1 ; 000000r 1 .org $0200 000200 1 ; 000200 1 20 0C FE DISP: jsr DISPLAY ; look for key 000203 1 90 0A bcc CHANGE ; check if control key carry set if so 000205 1 C9 17 cmp #$17 000207 1 F0 1F beq DOWN 000209 1 C9 16 cmp #$16 00020B 1 F0 11 beq UP 00020D 1 D0 F1 bne DISP 00020F 1 C9 00 CHANGE: cmp #$00 000211 1 85 79 sta $79 000213 1 F0 EB MORE: beq DISP ; increment No. of times of TEY 000215 1 20 43 02 jsr INCR 000218 1 C6 79 dec $79 00021A 1 10 F7 bpl MORE 00021C 1 30 E2 bmi DISP 00021E 1 20 43 02 UP: jsr INCR ; rapid increment 000221 1 20 32 02 jsr ZOOM 000224 1 D0 DA bne DISP 000226 1 F0 F6 beq UP 000228 1 20 4C 02 DOWN: jsr DECR ; rapid decrement 00022B 1 20 32 02 jsr ZOOM 00022E 1 D0 D0 bne DISP 000230 1 F0 F6 beq DOWN 000232 1 A9 1F ZOOM: lda #$1F 000234 1 85 0E sta $0E ; set for one scan only 000236 1 20 0C FE jsr DISPLAY 000239 1 90 03 bcc STOP ; check if key depressed claer if one is 00023B 1 A9 00 lda #$00 00023D 1 60 rts 00023E 1 A9 FF STOP: lda #$FF ; reset so that jsr DISPLAY waits for input 000240 1 85 0E sta $0E 000242 1 60 rts 000243 1 ; 000243 1 ; Counter Keyboard Subroutine 000243 1 ; 000243 1 CNTL := $1A 000243 1 CNTH := $1B 000243 1 ; 000243 1 E6 7A INCR: inc $7A 000245 1 D0 0D bne UPDATE 000247 1 E6 7B inc $7B 000249 1 38 sec 00024A 1 B0 08 bcs UPDATE 00024C 1 A5 7A DECR: lda $7A 00024E 1 D0 02 bne NOT 000250 1 C6 7B dec $7B 000252 1 C6 7A NOT: dec $7A 000254 1 A2 7A UPDATE: ldx #$7A 000256 1 20 64 FE jsr QHEXTD1 000259 1 60 rts 000259 1