430 |
|
|
431 |
if ( first { $addr == $_ } @kbd_ports ) { |
if ( first { $addr == $_ } @kbd_ports ) { |
432 |
warn sprintf("keyboard port: %04x\n",$addr) if $self->trace; |
warn sprintf("keyboard port: %04x\n",$addr) if $self->trace; |
433 |
if ( my $key = $self->key_pressed ) { |
my $key = $self->key_pressed; |
434 |
|
if ( defined($key) ) { |
435 |
my $r = $keyboard->{$addr} || confess "no definition for keyboard port found"; |
my $r = $keyboard->{$addr} || confess "no definition for keyboard port found"; |
436 |
if ( my $ret = $r->{$key} ) { |
if ( my $ret = $r->{$key} ) { |
437 |
if ( ref($ret) eq 'CODE' ) { |
if ( ref($ret) eq 'CODE' ) { |
443 |
$mem[$addr] = $ret; |
$mem[$addr] = $ret; |
444 |
return $ret; |
return $ret; |
445 |
} else { |
} else { |
446 |
warn sprintf("keyboard port: %04x unknown key: '%s'\n", $addr, $key); |
warn sprintf("keyboard port: %04x unknown key: '%s'\n", $addr, $key) if $debug; |
447 |
} |
} |
448 |
warn sprintf("keyboard port: %04x %s\n",$addr,dump( $r )) if $self->trace; |
warn sprintf("keyboard port: %04x %s\n",$addr,dump( $r )) if $self->trace; |
449 |
} |
} |