src/keyboard.h

Wed, 16 Jan 2013 00:36:51 +0000

author
Philip Pemberton <philpem@philpem.me.uk>
date
Wed, 16 Jan 2013 00:36:51 +0000
changeset 124
ecaec4cfc644
parent 91
781c15e60012
permissions
-rw-r--r--

[wd2010] display 'number of sectors' for sector R/W ops, display WrLBA in bytes not sectors

     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;
    31 	/// "Keyboard State Changed" flag
    32 	bool update_flag;
    33 } KEYBOARD_STATE;
    35 /**
    36  * Initialise a keyboard state block.
    37  *
    38  * Call this once when the keyboard is added to the emulation.
    39  */
    40 void keyboard_init(KEYBOARD_STATE *ks);
    42 /**
    43  * SDL_Event delegation routine.
    44  *
    45  * Call this when an SDL keyup or keydown event is received.
    46  */
    47 void keyboard_event(KEYBOARD_STATE *ks, SDL_Event *ev);
    49 /**
    50  * Keyboard scan routine.
    51  *
    52  * Call this periodically to scan the keyboard. 60 times/sec should be fine.
    53  */
    54 void keyboard_scan(KEYBOARD_STATE *ks);
    56 bool keyboard_get_irq(KEYBOARD_STATE *ks);
    57 uint8_t keyboard_read(KEYBOARD_STATE *ks, uint8_t addr);
    58 void keyboard_write(KEYBOARD_STATE *ks, uint8_t addr, uint8_t val);
    60 #endif