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

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