Beispielprogramme in C/Tastenabfrage in C

Aus C64-Wiki
Zur Navigation springenZur Suche springen

input.c[Bearbeiten | Quelltext bearbeiten]

C-Version des Beispielprogramms im Artikel Tastatur. Im Gegensatz zu BASIC enthält die Variable auch das abschliessende Return- beziehungsweise Zeilenende-Zeichen.

/*

  Programm: input.c
  URL: http://www.c64-wiki.de/index.php/Tastatur#Tastenabfrage_in_BASIC     
  Compiler: cc65
  compile:  cl65 -tc64 input.c

 10 INPUT "Geben Sie bitte etwas ein"; A$
 20 [[PRINT]] "Sie gaben ein: "; A$

*/

#include <stdio.h>

void main(void)
{

  char text[255];

  printf("Geben Sie bitte etwas ein\n");
  fgets(text, 255, stdin);
  printf("Sie gaben ein: %s", text);

}

get.c[Bearbeiten | Quelltext bearbeiten]

C-Version des Beispielprogramms im Artikel Tastatur

/*

  Programm: get.c
  URL: http://www.c64-wiki.de/index.php/Tastatur#Tastenabfrage_in_BASIC     
  Compiler: cc65
  compile:  cl65 -tc64 get.c

 10 PRINT "Druecken Sie bitte eine Taste:": A$ = ""
 20 GET A$: [[IF]] A$="" [[THEN]] 20
 30 PRINT "Sie drueckten die Taste: "; CHR$(34);A$;CHR(34)

*/

#include <conio.h>

void main(void)
{

  cputs("Druecken Sie bitte eine Taste...");
  cprintf("Sie drueckten die Taste: \"%c\"\n", cgetc());

}

key_peek.c[Bearbeiten | Quelltext bearbeiten]

C-Version des PEEK-Beispielprogramms im Artikel Tastatur

#include <6502.h>
#include <stdio.h>

#define current_keycode                 (*(uint8_t *) 197)
#define current_keybuffer_length        (*(uint8_t *) 198)
#define current_keycode_table           (*(uint8_t **) 245)

int main(void)
{
    uint8_t keycode;
    uint8_t *keycode_table;
    
    /* Warten bis keine Taste mehr gedrückt ist. */
    while (current_keycode != 64);
    puts("Druecken Sie bitte eine Taste...");
    /* Auf Tastendruck waren. */
    while ((keycode = current_keycode) == 64);
    /* 
     * Sicherstellen, dass der Zeiger auf die Tastencode-Tabelle
     * atomar ausgelesen wird.
     */
    SEI();
    keycode_table = current_keycode_table;
    CLI();
    
    printf(
        "\nSie drueckten die Taste \"%c\",\n"
        "Tastencode %d aus Tabelle %p.",
        keycode_table[keycode],
        keycode,
        keycode_table
    );
    current_keybuffer_length = 0;
    return 0;
}