my $x = 0xFF;
# 0x18 == 24, the max value of both bits
# 4-3 set
printf("%b\n", &= ~0x18);
__END__
11100111
####
$x |= 0x14; # 20;
__END__
11110111
####
sub queue {
my ($self, $q) = @_;
if (defined $q){
if (! exists $queue{$q}){
die "queue param requires a binary string.\n";
}
$self->{queue} = $queue{$q};
}
$self->{queue} = DEFAULT_QUEUE if ! defined $self->{queue};
my $bits = $self->bits;
# unset
$bits &= ~MAX_QUEUE;
# set
$bits |= $self->{queue};
my $lsb = $bits & 0xFF;
my $msb = $bits >> 8;
$self->register($msb, $lsb);
return $self->{queue};
}