Schlagwort-Archiv: routine

C64 ASM Keyboard abfrage

Hier eine sehr einfache Anleitung, wie man am C64 eine Tastaturabfrage realisiert. Als Programmierumgebung habe ich das kostenlos Erhältliche c64Studio. Kurze Erklärung: jsr $ffe4 ist eine Kernel routine des C64. Damit kann man die Zeichen der Tastatur einlesen. Man muss hier beachten, das auch wenn keine Taste gedrückt wird nicht gewartet wird. Drueckt man keine taste wird 0 ausgelesen. Deshlab wird im diesen Beispiel bei 0 wieder in die loop zurück gesprungen. Solange bis nun der Herr darrüben endlich mal die Taste drückt : ).

beq loop ; wenn keine Taste gedrückt --> zurück zu loop

Der Rest ist im Code mit ; kommentiert. !to "Keyboard.prg",cbm

Hier der Coder + PRG zum Keyboard abfrage: )


*=$0801
;SYS 2064
!byte $0C,$08,$0A,$00,$9E,$20,$32,$30,$36,$34,$00,$00,$00,$00,$00

start:

lda #$01 ; Weißer Hintergrund/Fordergund
sta $d020
sta $d021
lda #$00 ; Text Schwarz
sta $0286
jsr $e544 ; Clr screen / Bildschirm leeren
lda #titel
sta $ff
jsr printtext ; Siehe printext unten
jmp loop ; schleife für Tastenabfrage

loop:

jsr $ffe4 ; Keyboard input abfragen
beq loop ; wenn keine Taste gedrückt –> zurück zu loop
cmp #81 ; taste q
beq do1 ; do1 audführen
cmp #67 ; taste c
beq do2 ;
cmp #69 ; taste e
beq exit ;funktion exit
jmp loop

do1:

lda #textq
sta $ff
jsr printtext ; Print text

jmp loop

do2:

lda #textc
sta $ff
jsr printtext ; Print text
jmp loop

exit:

lda #$0d
jsr $ffd2
jsr $ffd2
lda #$00
rts

 

printtext:

ldy #$00

printloop:

lda ($fe),y
cmp #$00
beq printdone
jsr $ffd2
iny
bne printloop
inc $ff
jmp printtext

printdone:

rts

titel:    !text $0e,“keyboard abfrage:“,$0d

!text $0e,“drucke taste q“,$0d
!byte $00

textq:  !text $0e,“das war taste q“,$0d

!text $0e,“und nun taste c“,$0d
!byte $00

textc:  !text $0e,“c funktioniert auch“,$0d

!text $0e,“dann druecken wir e fuer ende oder q“,$0d
!b