src/keyboard.h

Wed, 09 Feb 2011 22:05:42 +0000

author
Philip Pemberton <philpem@philpem.me.uk>
date
Wed, 09 Feb 2011 22:05:42 +0000
changeset 90
934ae2efdd01
parent 80
9581358e92b0
parent 86
ebce87d87808
child 91
781c15e60012
permissions
-rw-r--r--

merge heads

     1 #ifndef _KEYBOARD_H
     2 #define _KEYBOARD_H
     4 #include "SDL.h"
     6 /// Keyboard buffer size in bytes
     7 #define KEYBOARD_BUFFER_SIZE 256
     9 typedef struct {
    10 	/// Key states
    11 	int keystate[0x80];
    13 	/// Keyboard buffer
    14 	uint8_t buffer[KEYBOARD_BUFFER_SIZE];
    16 	/// Read pointer
    17 	size_t readp;
    19 	/// Write pointer
    20 	size_t writep;
    22 	/// Number of bytes in keyboard buffer
    23 	size_t buflen;
    25 	/// Transmit Interrupt Enable
    26 	bool txie;
    28 	/// Receive Interrupt Enable
    29 	bool rxie;
    30 } KEYBOARD_STATE;
    32 /**
    33  * Initialise a keyboard state block.
    34  *
    35  * Call this once when the keyboard is added to the emulation.
    36  */
    37 void keyboard_init(KEYBOARD_STATE *ks);
    39 /**
    40  * SDL_Event delegation routine.
    41  *
    42  * Call this when an SDL keyup or keydown event is received.
    43  */
    44 void keyboard_event(KEYBOARD_STATE *ks, SDL_Event *ev);
    46 /**
    47  * Keyboard scan routine.
    48  *
    49  * Call this periodically to scan the keyboard. 60 times/sec should be fine.
    50  */
    51 void keyboard_scan(KEYBOARD_STATE *ks);
    53 bool keyboard_get_irq(KEYBOARD_STATE *ks);
    54 uint8_t keyboard_read(KEYBOARD_STATE *ks, uint8_t addr);
    55 void keyboard_write(KEYBOARD_STATE *ks, uint8_t addr, uint8_t val);
    57 #endif