CPU-Emulator-Z80
view release on metacpan or search on metacpan
interrupt-HOWTO view on Meta::CPAN
#!/usr/local/bin/perl -w
use strict;
use CPU::Emulator::Z80;
use Time::HiRes qw(setitimer ITIMER_REAL);
use Term::ReadKey;
my $cpu = CPU::Emulator::Z80->new();
setitimer(ITIMER_REAL, 1, 0.01); # after 1 sec, interrupt every sec
# setitimer(ITIMER_VIRTUAL, 1, 1); # after 1 sec, interrupt every sec
# $SIG{VTALRM} = sub {
$SIG{ALRM} = sub {
ReadMode 'cbreak';
my $key = ReadKey(-1);
if($key) {
print "Got char $key\n";
}
$cpu->interrupt();
};
ReadMode 'noecho';
$cpu->run(1000000);
ReadMode 'normal';
( run in 1.559 second using v1.01-cache-2.11-cpan-39bf76dae61 )