00000000: 2A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |*---------------|
00000010: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |----------------|
00000020: 2D 2D 2D 2D 2D 2D 2D 0D 2A A0 72 4F 55 54 49 4E |-------.*.rOUTIN|
00000030: 45 A0 54 4F A0 47 45 54 A0 41 A0 4B 45 59 A0 46 |E.TO.GET.A.KEY.F|
00000040: 52 4F 4D A0 4B 45 59 42 4F 41 52 44 0D 2A A0 28 |ROM.KEYBOARD.*.(|
00000050: 4F 52 A0 49 4E 50 55 54 A0 44 45 56 49 43 45 29 |OR.INPUT.DEVICE)|
00000060: 2E A0 A0 69 54 A0 46 49 52 53 54 A0 54 55 52 4E |...iT.FIRST.TURN|
00000070: 53 A0 4F 4E 0D 2A A0 54 48 45 A0 43 55 52 53 4F |S.ON.*.THE.CURSO|
00000080: 52 A0 41 4E 44 A0 54 55 52 4E 53 A0 49 54 A0 42 |R.AND.TURNS.IT.B|
00000090: 41 43 4B A0 4F 46 46 A0 57 48 45 4E 0D 2A A0 43 |ACK.OFF.WHEN.*.C|
000000A0: 48 41 52 41 43 54 45 52 A0 48 41 53 A0 42 45 45 |HARACTER.HAS.BEE|
000000B0: 4E A0 47 41 54 48 45 52 45 44 2E 0D 2A A0 63 48 |N.GATHERED..*.cH|
000000C0: 41 52 41 43 54 45 52 A0 49 53 A0 52 45 54 55 52 |ARACTER.IS.RETUR|
000000D0: 4E 45 44 A0 49 4E A0 61 2D 52 45 47 49 53 54 45 |NED.IN.a-REGISTE|
000000E0: 52 2E 0D 2A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |R..*------------|
000000F0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |----------------|
00000100: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 72 65 61 64 |----------..read|
00000110: 6B 65 79 20 6C 64 61 20 23 30 0D 20 73 74 61 20 |key lda #0. sta |
00000120: 62 6C 6E 73 77 20 3B 74 55 52 4E A0 4F 4E A0 43 |blnsw ;tURN.ON.C|
00000130: 55 52 53 4F 52 0D 20 73 74 78 20 78 73 61 76 20 |URSOR. stx xsav |
00000140: 3B 70 52 45 53 45 52 56 45 A0 78 0D 72 64 6B 65 |;pRESERVE.x.rdke|
00000150: 79 20 6A 73 72 20 67 65 74 69 6E 20 3B 67 45 54 |y jsr getin ;gET|
00000160: A0 41 A0 4B 45 59 0D 20 74 61 78 20 3B 6F 4E 45 |.A.KEY. tax ;oNE|
00000170: A0 41 56 41 49 4C 41 42 4C 45 3F 0D 20 62 65 71 |.AVAILABLE?. beq|
00000180: 20 72 64 6B 65 79 20 3B 6C 4F 4F 50 A0 49 46 A0 | rdkey ;lOOP.IF.|
00000190: 4E 4F 54 0D 20 6C 64 78 20 23 32 20 3B 69 4E 49 |NOT. ldx #2 ;iNI|
000001A0: 54 A0 53 4D 41 4C 4C A0 42 4C 49 4E 4B A0 43 4F |T.SMALL.BLINK.CO|
000001B0: 55 4E 54 0D 20 73 74 78 20 62 6C 6E 63 74 0D 77 |UNT. stx blnct.w|
000001C0: 61 74 62 6C 20 6C 64 78 20 62 6C 6E 6F 6E 20 3B |atbl ldx blnon ;|
000001D0: 77 41 49 54 A0 46 4F 52 A0 43 55 52 53 4F 52 A0 |wAIT.FOR.CURSOR.|
000001E0: 4F 46 46 0D 20 62 6E 65 20 77 61 74 62 6C 0D 20 |OFF. bne watbl. |
000001F0: 69 6E 63 20 62 6C 6E 73 77 20 3B 6C 45 41 56 45 |inc blnsw ;lEAVE|
00000200: A0 49 54 A0 54 48 41 54 A0 57 41 59 0D 20 6C 64 |.IT.THAT.WAY. ld|
00000210: 78 20 78 73 61 76 20 3B 72 45 54 52 49 45 56 45 |x xsav ;rETRIEVE|
00000220: A0 78 0D 20 72 74 73 0D |.x. rts. |
*--------------------------------------.
* ROUTINE TO GET A KEY FROM KEYBOARD.* (
OR INPUT DEVICE). IT FIRST TURNS ON.* T
HE CURSOR AND TURNS IT BACK OFF WHEN.* C
HARACTER HAS BEEN GATHERED..* CHARACTER
IS RETURNED IN A-REGISTER..*------------
--------------------------..READKEY LDA
#0. STA BLNSW ;TURN ON CURSOR. STX XSAV
;PRESERVE X.RDKEY JSR GETIN ;GET A KEY.
TAX ;ONE AVAILABLE?. BEQ RDKEY ;LOOP IF
NOT. LDX #2 ;INIT SMALL BLINK COUNT. STX
BLNCT.WATBL LDX BLNON ;WAIT FOR CURSOR
OFF. BNE WATBL. INC BLNSW ;LEAVE IT THAT
WAY. LDX XSAV ;RETRIEVE X. RTS.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL