Fixed up the llss code in a7out, so now the octal printing code in ds.s works.

This commit is contained in:
Warren Toomey
2016-03-04 08:31:15 +10:00
parent ffbc0b1dab
commit 2261144ea2
+8 -5
View File
@@ -485,21 +485,24 @@ sub eae {
$PC++; $PC++;
return; return;
} }
if ( $maskedinstr == 0660700 ) { # alss: long left shift, signed if ( $maskedinstr == 0660700 ) { # alss: AC left shift, signed
# We don't fill the lsb with LINK yet
dprintf( "alss AC %06o step %d\n", $AC, $step ); dprintf( "alss AC %06o step %d\n", $AC, $step );
$AC = ( $AC << $step ) & MAXINT; $AC = ( $AC << $step ) & MAXINT;
$LINK = ( $AC << 1 ) & LINKMASK;
$PC++; $PC++;
return; return;
} }
if ( $maskedinstr == 0660600 ) { # llss: long left shift, signed if ( $maskedinstr == 0660600 ) { # llss: long left shift, signed
# We don't use MQ yet!
dprintf( "llss AC %06o step %d\n", $AC, $step ); dprintf( "llss AC %06o step %d\n", $AC, $step );
$AC = ( $AC << $step ) & MAXINT; foreach my $i (1 .. $step) {
my $MQmsb= ($MQ & SIGN) ? 1 : 0;
$AC= (($AC << 1) | $MQmsb) & MAXINT;
$MQ= (($MQ << 1) | (($LINK) ? 1 : 0)) & MAXINT;
}
$PC++; $PC++;
return; return;
} }
if ( $maskedinstr == 0640700 ) { # als: long left shift if ( $maskedinstr == 0640700 ) { # als: AC left shift
dprintf( "als AC %06o step %d\n", $AC, $step ); dprintf( "als AC %06o step %d\n", $AC, $step );
$AC = ( $AC << $step ) & MAXINT; $AC = ( $AC << $step ) & MAXINT;
$PC++; $PC++;