mirror of https://github.com/jscrane/r65emu.git
make input buffer size configurable
This commit is contained in:
parent
6918621c34
commit
cd4b280410
17
ps2drv.cpp
17
ps2drv.cpp
|
@ -1,8 +1,11 @@
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include "ps2drv.h"
|
#include "ps2drv.h"
|
||||||
|
|
||||||
#define BUFFER_SIZE 16
|
#if !defined(KBD_BUFFER)
|
||||||
static volatile uint8_t buffer[BUFFER_SIZE];
|
#define KBD_BUFFER 16
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static volatile uint8_t buffer[KBD_BUFFER];
|
||||||
static volatile uint8_t head, tail;
|
static volatile uint8_t head, tail;
|
||||||
static uint8_t DataPin;
|
static uint8_t DataPin;
|
||||||
|
|
||||||
|
@ -29,7 +32,7 @@ void ps2interrupt(void)
|
||||||
bitcount++;
|
bitcount++;
|
||||||
if (bitcount == 11) {
|
if (bitcount == 11) {
|
||||||
uint8_t i = head + 1;
|
uint8_t i = head + 1;
|
||||||
if (i == BUFFER_SIZE) i = 0;
|
if (i == KBD_BUFFER) i = 0;
|
||||||
if (i != tail) {
|
if (i != tail) {
|
||||||
buffer[i] = incoming;
|
buffer[i] = incoming;
|
||||||
head = i;
|
head = i;
|
||||||
|
@ -44,7 +47,7 @@ bool PS2Driver::available() {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
uint8_t i = tail+1;
|
uint8_t i = tail+1;
|
||||||
if (i == BUFFER_SIZE) i = 0;
|
if (i == KBD_BUFFER) i = 0;
|
||||||
if (buffer[i] == 0xf0)
|
if (buffer[i] == 0xf0)
|
||||||
return i != head;
|
return i != head;
|
||||||
return true;
|
return true;
|
||||||
|
@ -55,7 +58,7 @@ unsigned PS2Driver::read2() {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
uint8_t i = tail+1;
|
uint8_t i = tail+1;
|
||||||
if (i == BUFFER_SIZE) i = 0;
|
if (i == KBD_BUFFER) i = 0;
|
||||||
tail = i;
|
tail = i;
|
||||||
if (buffer[i] != 0xf0)
|
if (buffer[i] != 0xf0)
|
||||||
return buffer[i];
|
return buffer[i];
|
||||||
|
@ -67,9 +70,9 @@ unsigned PS2Driver::peek() {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
uint8_t i = tail+1;
|
uint8_t i = tail+1;
|
||||||
if (i == BUFFER_SIZE) i = 0;
|
if (i == KBD_BUFFER) i = 0;
|
||||||
if (buffer[i] == 0xf0) {
|
if (buffer[i] == 0xf0) {
|
||||||
if (++i == BUFFER_SIZE) i = 0;
|
if (++i == KBD_BUFFER) i = 0;
|
||||||
return 0xf000 | buffer[i];
|
return 0xf000 | buffer[i];
|
||||||
}
|
}
|
||||||
return buffer[i];
|
return buffer[i];
|
||||||
|
|
Loading…
Reference in New Issue