00000000: 0D 3B 4B 45 59 20 44 49 46 46 45 52 45 4E 54 49 |.;KEY DIFFERENTI|
00000010: 41 54 49 4F 4E 0D 0D 3B 43 4F 44 45 20 42 59 20 |ATION..;CODE BY |
00000020: 52 45 49 4E 45 52 20 52 49 43 48 54 45 52 0D 3B |REINER RICHTER.;|
00000030: 28 43 29 20 43 4F 50 59 52 49 47 48 54 2C 20 4E |(C) COPYRIGHT, N|
00000040: 4F 54 0D 0D 3B 54 48 49 53 20 49 53 20 53 4F 4D |OT..;THIS IS SOM|
00000050: 45 20 44 45 4D 4F 20 43 4F 44 45 20 54 4F 20 44 |E DEMO CODE TO D|
00000060: 49 53 54 49 4E 47 55 49 53 48 0D 3B 20 42 45 54 |ISTINGUISH.; BET|
00000070: 57 45 45 4E 20 44 49 46 46 45 52 45 4E 54 20 4B |WEEN DIFFERENT K|
00000080: 45 59 20 43 4F 4D 42 49 4E 41 54 49 4F 4E 53 0D |EY COMBINATIONS.|
00000090: 3B 20 54 48 41 54 20 4E 4F 54 4D 41 4C 4C 59 20 |; THAT NOTMALLY |
000000A0: 47 49 56 45 20 54 48 45 20 53 41 4D 45 20 41 53 |GIVE THE SAME AS|
000000B0: 43 49 49 0D 3B 20 52 45 53 55 4C 54 2E 0D 0D 0D |CII.; RESULT....|
000000C0: 43 48 52 4F 55 54 20 20 20 3D 20 24 46 46 44 32 |CHROUT = $FFD2|
000000D0: 20 20 20 3B 4B 45 52 4E 41 4C 20 4F 55 54 50 55 | ;KERNAL OUTPU|
000000E0: 54 20 43 48 41 52 0D 47 45 54 49 4E 20 20 20 20 |T CHAR.GETIN |
000000F0: 3D 20 24 46 46 45 34 20 20 20 3B 4B 45 52 4E 41 |= $FFE4 ;KERNA|
00000100: 4C 20 47 45 54 20 43 48 41 52 0D 0D 4C 53 54 58 |L GET CHAR..LSTX|
00000110: 20 20 20 20 20 3D 20 31 39 37 20 20 20 20 20 3B | = 197 ;|
00000120: 43 55 52 52 45 4E 54 20 4B 45 59 20 50 52 45 53 |CURRENT KEY PRES|
00000130: 53 45 44 0D 53 48 46 4C 41 47 20 20 20 3D 20 36 |SED.SHFLAG = 6|
00000140: 35 33 20 20 20 20 20 3B 4B 45 59 42 4F 41 52 44 |53 ;KEYBOARD|
00000150: 20 53 48 49 46 54 20 4B 45 59 0D 20 20 20 20 20 | SHIFT KEY. |
00000160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00000170: 3B 31 3D 53 48 49 46 54 0D 20 20 20 20 20 20 20 |;1=SHIFT. |
00000180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 32 | ;2|
00000190: 3D 43 4F 4D 4D 4F 44 4F 52 45 0D 20 20 20 20 20 |=COMMODORE. |
000001A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000001B0: 3B 34 3D 43 4F 4E 54 52 4F 4C 0D 0D 0D 20 20 20 |;4=CONTROL... |
000001C0: 20 20 20 20 20 20 2A 3D 20 24 34 30 30 30 0D 0D | *= $4000..|
000001D0: 0D 20 20 20 20 20 20 20 20 20 43 4C 49 0D 20 20 |. CLI. |
000001E0: 20 20 20 20 20 20 20 4C 44 58 20 23 30 0D 4C 4F | LDX #0.LO|
000001F0: 4F 50 20 20 20 20 20 4C 44 41 20 49 4E 54 52 4F |OP LDA INTRO|
00000200: 54 58 54 2C 58 20 20 3B 50 52 49 4E 54 20 49 4E |TXT,X ;PRINT IN|
00000210: 54 52 4F 0D 20 20 20 20 20 20 20 20 20 42 45 51 |TRO. BEQ|
00000220: 20 57 41 49 54 4C 4F 4F 50 20 20 20 20 3B 20 54 | WAITLOOP ; T|
00000230: 45 58 54 20 53 4F 20 59 4F 55 0D 20 20 20 20 20 |EXT SO YOU. |
00000240: 20 20 20 20 4A 53 52 20 43 48 52 4F 55 54 20 20 | JSR CHROUT |
00000250: 20 20 20 20 3B 20 4B 4E 4F 57 20 57 48 41 54 20 | ; KNOW WHAT |
00000260: 54 4F 0D 20 20 20 20 20 20 20 20 20 49 4E 58 20 |TO. INX |
00000270: 20 20 20 20 20 20 20 20 20 20 20 20 3B 20 44 4F | ; DO|
00000280: 2E 0D 20 20 20 20 20 20 20 20 20 42 4E 45 20 4C |.. BNE L|
00000290: 4F 4F 50 0D 57 41 49 54 4C 4F 4F 50 20 4A 53 52 |OOP.WAITLOOP JSR|
000002A0: 20 47 45 54 49 4E 20 20 20 20 20 3B 57 41 49 54 | GETIN ;WAIT|
000002B0: 20 55 4E 54 49 4C 20 54 48 45 0D 20 20 20 20 20 | UNTIL THE. |
000002C0: 20 20 20 20 43 4D 50 20 23 31 39 20 20 20 20 20 | CMP #19 |
000002D0: 20 20 3B 20 41 50 50 52 4F 50 52 49 41 54 45 0D | ; APPROPRIATE.|
000002E0: 20 20 20 20 20 20 20 20 20 42 4E 45 20 57 41 49 | BNE WAI|
000002F0: 54 4C 4F 4F 50 20 20 3B 20 4B 45 59 20 49 53 20 |TLOOP ; KEY IS |
00000300: 50 52 45 53 53 45 44 2E 0D 20 20 20 20 20 20 20 |PRESSED.. |
00000310: 20 20 4C 44 58 20 23 30 0D 20 20 20 20 20 20 20 | LDX #0. |
00000320: 20 20 4C 44 41 20 53 48 46 4C 41 47 20 20 20 20 | LDA SHFLAG |
00000330: 3B 43 48 45 43 4B 20 46 4F 52 0D 20 20 20 20 20 |;CHECK FOR. |
00000340: 20 20 20 20 41 4E 44 20 23 34 20 20 20 20 20 20 | AND #4 |
00000350: 20 20 3B 20 43 4F 4E 54 52 4F 4C 20 4B 45 59 2E | ; CONTROL KEY.|
00000360: 0D 20 20 20 20 20 20 20 20 20 42 45 51 20 4E 4F |. BEQ NO|
00000370: 43 54 52 4C 0D 20 20 20 20 20 20 20 20 20 4C 44 |CTRL. LD|
00000380: 58 20 23 54 58 54 43 54 52 4C 53 2D 54 58 54 48 |X #TXTCTRLS-TXTH|
00000390: 4F 4D 45 0D 4E 4F 43 54 52 4C 20 20 20 4C 44 41 |OME.NOCTRL LDA|
000003A0: 20 54 58 54 48 4F 4D 45 2C 58 0D 20 20 20 20 20 | TXTHOME,X. |
000003B0: 20 20 20 20 42 45 51 20 45 58 49 54 20 20 20 20 | BEQ EXIT |
000003C0: 20 20 20 20 3B 20 54 45 58 54 20 53 4F 20 59 4F | ; TEXT SO YO|
000003D0: 55 0D 20 20 20 20 20 20 20 20 20 4A 53 52 20 43 |U. JSR C|
000003E0: 48 52 4F 55 54 20 20 20 20 20 20 3B 20 4B 4E 4F |HROUT ; KNO|
000003F0: 57 20 57 48 41 54 20 54 4F 0D 20 20 20 20 20 20 |W WHAT TO. |
00000400: 20 20 20 49 4E 58 20 20 20 20 20 20 20 20 20 20 | INX |
00000410: 20 20 20 3B 20 44 4F 2E 0D 20 20 20 20 20 20 20 | ; DO.. |
00000420: 20 20 42 4E 45 20 4E 4F 43 54 52 4C 0D 45 58 49 | BNE NOCTRL.EXI|
00000430: 54 20 20 20 20 20 52 54 53 0D 0D 49 4E 54 52 4F |T RTS..INTRO|
00000440: 54 58 54 20 2E 42 59 54 45 20 31 34 37 0D 20 20 |TXT .BYTE 147. |
00000450: 20 20 20 20 20 20 20 2E 54 45 58 54 20 22 50 52 | .TEXT "PR|
00000460: 45 53 53 20 48 4F 4D 45 20 4F 52 20 22 0D 20 20 |ESS HOME OR ". |
00000470: 20 20 20 20 20 20 20 2E 54 45 58 54 20 22 43 4F | .TEXT "CO|
00000480: 4E 54 52 4F 4C 20 53 2E 2E 2E 22 0D 20 20 20 20 |NTROL S...". |
00000490: 20 20 20 20 20 2E 42 59 54 45 20 31 33 2C 30 0D | .BYTE 13,0.|
000004A0: 0D 54 58 54 48 4F 4D 45 20 20 2E 54 45 58 54 20 |.TXTHOME .TEXT |
000004B0: 22 48 4F 4D 45 20 57 41 53 20 50 52 45 53 53 45 |"HOME WAS PRESSE|
000004C0: 44 2E 22 0D 20 20 20 20 20 20 20 20 20 2E 42 59 |D.". .BY|
000004D0: 54 45 20 30 0D 0D 54 58 54 43 54 52 4C 53 20 2E |TE 0..TXTCTRLS .|
000004E0: 54 45 58 54 20 22 43 4F 4E 54 52 4F 4C 20 53 20 |TEXT "CONTROL S |
000004F0: 57 41 53 20 50 52 45 53 53 45 44 2E 22 0D 20 20 |WAS PRESSED.". |
00000500: 20 20 20 20 20 20 20 2E 42 59 54 45 20 30 0D 0D | .BYTE 0..|
.;KEY DIFFERENTIATION..;CODE BY REINER R
ICHTER.;(C) COPYRIGHT, NOT..;THIS IS SOM
E DEMO CODE TO DISTINGUISH.; BETWEEN DIF
FERENT KEY COMBINATIONS.; THAT NOTMALLY
GIVE THE SAME ASCII.; RESULT....CHROUT
= $FFD2 ;KERNAL OUTPUT CHAR.GETIN
= $FFE4 ;KERNAL GET CHAR..LSTX = 1
97 ;CURRENT KEY PRESSED.SHFLAG = 6
53 ;KEYBOARD SHIFT KEY.
;1=SHIFT. ;2
=COMMODORE. ;4=CONTR
OL... *= $4000... CLI.
LDX #0.LOOP LDA INTROTXT,X ;
PRINT INTRO. BEQ WAITLOOP ; T
EXT SO YOU. JSR CHROUT ; KN
OW WHAT TO. INX ; DO
.. BNE LOOP.WAITLOOP JSR GETIN
;WAIT UNTIL THE. CMP #19
; APPROPRIATE. BNE WAITLOOP ;
KEY IS PRESSED.. LDX #0.
LDA SHFLAG ;CHECK FOR. AND
#4 ; CONTROL KEY.. BEQ NO
CTRL. LDX #TXTCTRLS-TXTHOME.NOCT
RL LDA TXTHOME,X. BEQ EXIT
; TEXT SO YOU. JSR CHROUT
; KNOW WHAT TO. INX
; DO.. BNE NOCTRL.EXIT RT
S..INTROTXT .BYTE 147. .TEXT "PR
ESS HOME OR ". .TEXT "CONTROL S.
..". .BYTE 13,0..TXTHOME .TEXT
"HOME WAS PRESSED.". .BYTE 0..TX
TCTRLS .TEXT "CONTROL S WAS PRESSED.".
.BYTE 0..
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL