blob: 87bb2c38c64d01d4bdcab40c78469a1db509da40 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
namespace Q1.Emulator.Chip;
public class HIDDevice : RamDevice
{
public HIDDevice(u16 start) : base(start, HIDDevice.CalculateSize()) { }
public static u16 CalculateSize()
{
return 4 + 256;
}
public void SetMouse(u16 positionalIndex, bool leftDown, bool rightDown, bool middleDown)
{
this.WriteWord(this.AddressableStart, positionalIndex);
u16 buttons = (u16) ((leftDown ? 1 : 0)
| ((rightDown ? 1 : 0) << 1)
| ((middleDown ? 1 : 0) << 2));
this.WriteWord((u16) (this.AddressableStart + 2), buttons);
}
public void SetKeyboard(u8 scanCode, bool pressed)
{
int index = scanCode >> 3; // keyCode / 8
int bit = scanCode & 7; // keyCode % 8
ushort addr = (ushort) (4 + index);
u8 value = this.Read(addr);
if (pressed)
value |= (u8) (1 << bit);
else
value &= (u8) ~(1 << bit);
this.Write((u16) (this.AddressableStart + addr), value);
}
}
|