Hi everyone,
The Nostalgic Computing Center <http://www.nostalgiccomputing.org/> has a
virtual PDP-8 running TSS/8
<http://www.nostalgiccomputing.org:8080/aterm.html?m=pdp8&t=PDP-8&r=24&c=80>
in its collection. We use the SIMH PDP-8e emulator to support the machine,
and we recently updated the machine to run the TSS/8 distribution created
by LCM+L, found here on GitHub
<https://github.com/livingcomputermuseum/cpus-pdp8>. The LCM+L distribution
is slightly different from other TSS/8 distributions available on the web
in that it provides some additional goodies such as ALGOL and LISP.
The NCC demonstrates how various classic computers worked by providing
automated scripts that interact with the machines in the collection.
For example, to demonstrate each of the programming languages supported by
a machine, scripts are provided to create, compile, and run a simple
Fibonacci sequence generator. We've done this for the TSS/8 system, but the
scripts aren't working for FORTRAN or ALGOL, and we're wondering if anyone
on this list might know why.
Specifically, in the case of FORTRAN, the compiler exits with an error code
6204. This occurs even when trying to compile trivial "hello world"
programs, and it appears to occur in all other TSS/8 distributions we've
tried as well (i.e., this particular problem is not unique to the LCM+L
distribution). We haven't found error code 6204 specifically documented in
the TSS/8 user/admin manuals, but the manuals do document other error codes
in the 62xx range. Documented error codes in the 62xx range appear to
reflect file I/O errors, so we're wondering if perhaps one of the files
supporting the FORTRAN compiler is corrupt in all of these distributions.
For example, here is a transcription of a simple session demonstrating the
problem:
.R EDIT
INPUT:
OUTPUT:FTEST
A
WRITE(1,10)
10 FORMAT(5HHELLO,/)
END
E
^BS
.R FORT
INPUT:FTEST
OUTPUT:
6204^BS
.
We tried enabling the floating point processor to see if lack of FPP might
cause FORT to abort, but enabling the FPP did not solve the problem. The
SIMH configuration file for the machine currently looks like:
set throttle 800K
set df disabled
set rf disabled
set rk enabled
set dt enabled
att rk0 tss8_rk_lcm.dsk
set cpu 32k
attach ttix 4000
load boot.bin
run 200
Note that BASIC, FOCAL, and LISP all seem to run very nicely on the machine.
The problem we're experiencing with ALGOL appears to be a glaring compiler
bug, but the compiler was distributed widely through DECUS, and it is
difficult to imagine that it would have been released with an obvious bug,
so we are wondering if perhaps we're not interpreting the user manual
<http://svn.so-much-stuff.com/svn/trunk/pdp8/src/decus/8-213/decus-8-213.pdf>
correctly. Here is a transcription of a session that exhibits the problem:
.R EDIT
INPUT:
OUTPUT:ATEST
A
'BEGIN'
'INTEGER' I;
I := 1;
WRITE(1, I); SKIP
'END'
$
E
^BS
.R ALGOL
INPUT:ATEST
OUTPUT:
*TOO MANY UNDEFINED [UEXPRESSION*
^BS
.
The compiler seems to be complaining that the simple assignment statement
on line 3 of the program is somehow incorrect. If we change the statement
to "I := 1 + 0;", the error message goes away, and the program runs, but
it prints "0" instead of the expected "1". Also, if we change the
program
to:
'BEGIN'
'INTEGER' I;
'FOR' I := 1 'STEP' 1 'UNTIL' 10 'DO'
'BEGIN'
WRITE(1, I); SKIP
'END'
'END'
$
it compiles successfully and it prints what is expected, the numbers 1
through 10.
Does anyone have experience with the ALGOL/8 compiler? If so, does this
behavior make sense, and can you let us know what we're doing wrong?
Note that the same ALGOL60 program compiles and runs as expected on the CDC
mainframes and the TOPS-20 system at the NCC.
thanks!
Kevin