Files
zSoft/include/ps2.h

47 lines
1.1 KiB
C

#ifndef PS2_H
#define PS2_H
// Private
#define PS2_RINGBUFFER_SIZE 16 // 32 bytes
struct ps2_ringbuffer
{
volatile int in_hw;
volatile int in_cpu;
volatile int out_hw;
volatile int out_cpu;
unsigned int inbuf[PS2_RINGBUFFER_SIZE]; // Int is much easier than char for ZPU to deal with
unsigned int outbuf[PS2_RINGBUFFER_SIZE];
};
#ifdef __cplusplus
extern "C" {
#endif
void ps2_ringbuffer_init(struct ps2_ringbuffer *r);
void ps2_ringbuffer_write(struct ps2_ringbuffer *r,int in);
int ps2_ringbuffer_read(struct ps2_ringbuffer *r);
int ps2_ringbuffer_count(struct ps2_ringbuffer *r);
extern struct ps2_ringbuffer kbbuffer;
extern struct ps2_ringbuffer mousebuffer;
void PS2Handler();
// Public interface
void PS2Init();
#ifdef __cplusplus
}
#endif
#define PS2KeyboardRead(x) ps2_ringbuffer_read(&kbbuffer)
#define PS2KeyboardBytesReady(x) ps2_ringbuffer_count(&kbbuffer)
#define PS2KeyboardWrite(x) ps2_ringbuffer_write(&kbbuffer,x);
#define PS2MouseRead(x) ps2_ringbuffer_read(&mousebuffer)
#define PS2MouseBytesReady(x) ps2_ringbuffer_count(&mousebuffer)
#define PS2MouseWrite(x) ps2_ringbuffer_write(&mousebuffer,x);
#define PS2_INT 4
#endif