ca65 V2.17 - Git 582aa41 Main file : keywrite.ca65 Current file: keywrite.ca65 000000r 1 ; 000000r 1 ; ACORN System 1 Applications: Keywrite 000000r 1 ; 000000r 1 ; From the Acorn Teletext Board Technical Manual 000000r 1 ; 000000r 1 ; (Chris Oddy January 2022) 000000r 1 ; 000000r 1 ; entry point $0280 000000r 1 ; 000000r 1 .setcpu "6502" 000000r 1 .listbytes unlimited 000000r 1 ; 000000r 1 TEMP := $26 000000r 1 CHATS := $0300 ; character to screen 000000r 1 DISPLAY := $FE0C ; scan the display 000000r 1 RESTART := $FF04 ; Monitor reentry point 000000r 1 ; 000000r 1 .org $0280 000280 1 ; 000280 1 20 0C FE KEYWRT: jsr DISPLAY 000283 1 90 0E bcc SEND ; hex key ? 000285 1 29 07 CONTRL: and #$07 000287 1 F0 1B beq RET 000289 1 A8 tay ; look up control keys in table 00028A 1 B9 A6 02 lda TABLE-1,y 00028D 1 20 00 03 SENDER: jsr CHATS 000290 1 4C 80 02 jmp KEYWRT 000293 1 0A SEND: asl A 000294 1 0A asl A 000295 1 0A asl A 000296 1 0A asl A 000297 1 85 26 sta TEMP 000299 1 20 0C FE jsr DISPLAY 00029C 1 B0 E7 bcs CONTRL 00029E 1 05 26 ora TEMP ; mix in low digit 0002A0 1 09 80 ora #$80 ; fool control character check 0002A2 1 30 E9 bmi SENDER ; forced branch to SENDER 0002A4 1 4C 04 FF RET: jmp RESTART ; M key returns to MONITOR 0002A7 1 20 TABLE: .byte $20 ; G key gives space bar 0002A8 1 20 .byte $20 ; P key gives space bar 0002A9 1 20 .byte $20 ; S key gives space bar 0002AA 1 0A .byte $0A ; L key gives linefeed 0002AB 1 0C .byte $0C ; R key gives formfeed 0002AC 1 7F .byte $7F ; key gives delete 0002AD 1 0D .byte $0D ; key gives carriage return 0002AD 1