317 |
}, |
}, |
318 |
0x87FD => { |
0x87FD => { |
319 |
'return' => sub { |
'return' => sub { |
320 |
M6502::write( 0xfc, 13 ); |
M6502::_write( 0xfc, 13 ); |
321 |
return 0; |
return 0; |
322 |
}, |
}, |
323 |
'left ctrl' => 16, |
'left ctrl' => 16, |
418 |
}, |
}, |
419 |
}; |
}; |
420 |
|
|
421 |
|
my $keyboard_none = 255; |
422 |
|
|
423 |
sub read { |
sub read { |
424 |
my $self = shift; |
my $self = shift; |
442 |
warn sprintf("keyboard port: %04x key: '%s' code: %02x\n", $addr, $key, $ret); |
warn sprintf("keyboard port: %04x key: '%s' code: %02x\n", $addr, $key, $ret); |
443 |
} |
} |
444 |
$mem[$addr] = $ret; |
$mem[$addr] = $ret; |
445 |
|
warn "keypress: $key = $ret\n"; |
446 |
return $ret; |
return $ret; |
447 |
} else { |
} else { |
448 |
warn sprintf("keyboard port: %04x unknown key: '%s'\n", $addr, $key) if $debug; |
warn sprintf("keyboard port: %04x unknown key: '%s'\n", $addr, $key) if $debug; |
449 |
} |
} |
450 |
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; |
451 |
} |
} |
452 |
|
return $keyboard_none; |
453 |
} |
} |
454 |
|
|
455 |
$self->mmap_pixel( $addr, 0, $byte, 0 ); |
$self->mmap_pixel( $addr, 0, $byte, 0 ); |