1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-09-29 00:56:21 +00:00

Got some keyboard reaction.

This commit is contained in:
Thomas Harte 2016-10-14 21:44:15 -04:00
parent 3dbb602419
commit 288d10c253
3 changed files with 14 additions and 6 deletions

View File

@ -10,7 +10,7 @@
using namespace GI;
AY38910::AY38910()
AY38910::AY38910() : _selected_register(0)
{
}
@ -24,15 +24,20 @@ void AY38910::skip_samples(unsigned int number_of_samples)
void AY38910::select_register(uint8_t r)
{
printf("sel %d\n", r);
_selected_register = r & 0xf;
}
void AY38910::set_register_value(uint8_t value)
{
printf("val %d\n", value);
_registers[_selected_register] = value;
}
uint8_t AY38910::get_register_value()
{
return 0;
return _registers[_selected_register];
}
uint8_t AY38910::get_port_output(bool port_b)
{
return _registers[port_b ? 15 : 14];
}

View File

@ -24,6 +24,8 @@ class AY38910: public ::Outputs::Filter<AY38910> {
void set_register_value(uint8_t value);
uint8_t get_register_value();
uint8_t get_port_output(bool port_b);
private:
int _selected_register;
uint8_t _registers[16];

View File

@ -88,7 +88,7 @@ class Machine:
//
class Keyboard {
public:
uint8_t row, column;
uint8_t row;
uint8_t rows[8];
};
class VIA: public MOS::MOS6522<VIA>, public MOS::MOS6522IRQDelegate {
@ -119,7 +119,8 @@ class Machine:
uint8_t get_port_input(Port port) {
if(port)
{
return (keyboard->rows[keyboard->row & 7] & keyboard->column) ? 0x08 : 0x00;
uint8_t column = ay8910->get_port_output(false) ^ 0xff;
return (keyboard->rows[keyboard->row & 7] & column) ? 0x08 : 0x00;
}
else
{