1
0
mirror of https://github.com/DoctorWkt/pdp7-unix.git synced 2026-01-28 21:01:39 +00:00
This commit is contained in:
Warren Toomey
2016-03-08 06:48:27 +10:00
6 changed files with 69 additions and 10 deletions

View File

@@ -11,7 +11,7 @@ jmp start
cma
tad lastv
dac lastv
imq
lmq
lac sp
tad d1
dac sp i
@@ -82,10 +82,10 @@ getc: 0
jmp getc i
putc: 0
and 0777
and o777
sna
jmp putc i
imq
lmq
lac oflg
sza
jmp 1f
@@ -132,7 +132,7 @@ flush: 0
lac obufp
dac 1f
lac .fout
sys write; 1: :.; ..
sys write; 1: ..; ..
lac obufp
dac cobufp
dzm oflg

View File

@@ -11,7 +11,7 @@ fetch:
lmq
and o17777
dac addr
ecla lls 4
cla; lls 4 " XXX replaced for now: ecla lls 4
tad .+3
dac .+1
jmp .. i

View File

@@ -11,7 +11,7 @@ jmp start
cma
tad lastv
dac lastv
imq
lmq
lac sp
tad d1
dac sp i
@@ -82,10 +82,10 @@ getc: 0
jmp getc i
putc: 0
and 0777
and o777
sna
jmp putc i
imq
lmq
lac oflg
sza
jmp 1f
@@ -115,7 +115,7 @@ stop:
jms flush
las
sma
sys save
sys exit " XXX replaced for now: sys save
sys exit
flush: 0
@@ -132,7 +132,7 @@ flush: 0
lac obufp
dac 1f
lac .fout
sys write; 1: :.; ..
sys write; 1: ..; ..
lac obufp
dac cobufp
dzm oflg

9
src/other/hello.b Normal file
View File

@@ -0,0 +1,9 @@
main $(
write('He');
write('ll');
write('o,');
write(' W');
write('or');
write('ld');
write('!*n');
$)

40
src/other/hello.s Normal file
View File

@@ -0,0 +1,40 @@
.main: .+1
s 2
x .write
n 2 " etcop mark
n 5 " etcop litrl
36965
n 3 " etcop call
x .write
n 2 " etcop mark
n 5 " etcop litrl
55404
n 3 " etcop call
x .write
n 2 " etcop mark
n 5 " etcop litrl
56876
n 3 " etcop call
x .write
n 2 " etcop mark
n 5 " etcop litrl
16471
n 3 " etcop call
x .write
n 2 " etcop mark
n 5 " etcop litrl
56946
n 3 " etcop call
x .write
n 2 " etcop mark
n 5 " etcop litrl
55396
n 3 " etcop call
x .write
n 2 " etcop mark
n 5 " etcop litrl
16906
n 3 " etcop call
x .flush
n 1 " etcop mcall
n 7 " etcop retrn

View File

@@ -543,6 +543,16 @@ sub eae {
$PC++;
return;
}
if ( $maskedinstr == 0640600 ) { # lls: long left shift
dprintf( "lls AC %06o step %d\n", $AC, $step );
foreach my $i ( 1 .. $step ) {
my $MQmsb = ( $MQ & SIGN ) ? 1 : 0;
$AC = ( ( $AC << 1 ) | $MQmsb ) & MAXINT;
$MQ = ( ( $MQ << 1 ) | ( ($LINK) ? 1 : 0 ) ) & MAXINT; # XXX how to handle unsigned?
}
$PC++;
return;
}
if ( $maskedinstr == 0640700 ) { # als: AC left shift
dprintf( "als AC %06o step %d\n", $AC, $step );
$AC = ( $AC << $step ) & MAXINT;