Acme-6502
view release on metacpan or search on metacpan
inc/MyBuilder.pm view on Meta::CPAN
package MyBuilder;
use base qw( Module::Build );
sub create_build_script {
my ( $self, @args ) = @_;
$self->_auto_mm;
return $self->SUPER::create_build_script( @args );
}
sub _auto_mm {
my $self = shift;
my $mm = $self->meta_merge;
my @meta = qw( homepage bugtracker MailingList repository );
for my $meta ( @meta ) {
next if exists $mm->{resources}{$meta};
my $auto = "_auto_$meta";
next unless $self->can( $auto );
lib/Acme/6502/Tube.pm view on Meta::CPAN
OSWRCH => 0xFFEE,
OSRDCH => 0xFFE0,
OSWORD => 0xFFF1,
OSBYTE => 0xFFF4,
OSCLI => 0xFFF7
};
sub _BUILD {
my ( $self, $args ) = @_;
$self->SUPER::_BUILD( $args );
$self->{ time_base } = time();
# Inline OSASCI code
$self->poke_code( OSASCI,
0xC9, 0x0D, # CMP #&0D
0xD0, 0x07, # BNE +7
0xA9, 0x0A, # LDA #&0A
0x20, 0xEE, 0xFF, # JSR &FFEE
0xA9, 0x0D # LDA #&0D
lib/Acme/6502/Tube.pm view on Meta::CPAN
die "OSFIND not handled\n";
}
sub make_vector {
my( $self, $name, $vec, $code ) = @_;
my $addr = $self->$name;
my $vecno = scalar @{ $self->{ os } };
push @{ $self->{ os } }, [ $code, $name ];
$self->SUPER::make_vector( $addr, $vec, $vecno );
}
sub call_os {
my $self = shift;
my $vecno = shift;
eval {
my $call = $self->{ os }->[ $vecno ] || die "Bad OS call $vecno\n";
$call->[ 0 ]->( $self );
};
( run in 0.992 second using v1.01-cache-2.11-cpan-49f99fa48dc )