RALGOL - A PDP8 ALGOL 60

Charles Dickman chd at chdickman.com
Sun Jul 7 22:19:25 CDT 2019


I played around with this algol 60 compiler for the PDP8 and succeeded in
getting it to run. I have not found any other notes, so I thought that I
would give a leg up to the next one that wants to work on it.

-chuck

--------

This ALGOL 60 implementation for the PDP8 was written by Roger H. Abbott
while he was at Oxford.

The bits are here:
http://www.bitsavers.org/bits/DEC/pdp8/papertapeImages/russ.ucs.indiana.edu/Langs/Algol/

A copy of the manual here:
https://archive.org/details/hack42_ROG_ALGOL_Compiler

A paper here:
http://pdp8.de/download/RogAlgol.pdf

Mr. Abbotts business is here:
http://www.angelfire.com/biz/rhaminisys/index.html

The website or the host is a bit sketchy. The business is probably defunct.
I found a link that said Mr. Abbott died in the early 2000.

The system is two parts: the compiler and the runtime.

This is all assuming the use of OS/8.

To create the SV file for the compiler:
.R ABSLDR
*INTRUN.BN,ALGCOM.BN,COMOS8.BN$
.SAVE SYS:ALGCOM.SV
.R ALGCOM.SV

To create the SV file for the runtime system/loader:
.R ABSLDR
*FPP.BN,ALGRUN.BN,RUNOS8.BN
.SAVE SYS:RALGOL.SV
.R RALGOL.SV

There are other options for the FPP.BN for other hardware possibilities.
FPEAE8.BN for the classic pdp8 EAE and FPPEAE.BN for the PDP8/e EAE. This
needs some testings.

Running an ALGOL program:

.TYPE FLOAT.AL
'BEGIN'
  'REAL' A,B;
  TEXT(1,"HELLO WORLD!");
  SKIP(1);
  A := 3.141592;
  B := COS(A);
  TEXT(1,"A = ");
  RWRITE(1,A);
  SKIP(1);
  TEXT(1,"B = COS(A) = ");
  RWRITE(1,B);
'END'
$$$$$

.R ALGCOM

ROGALGOL MK40
OUT<IN*FLOAT<FLOAT

SIZE 39

.R RALGOL

ROGALGOLOADER
INPUT FILENAME ?*FLOAT.AC

ENDS 0251
^^PHELLO WORLD!
A = +0.314159E+001
B = COS(A) = -0.999999E+000
^^PHELLO WORLD!
A = +0.314159E+001
B = COS(A) = -0.999999E+000
^^C
.

The source AL file must end with a few $$$$ or an odd fault code will
result. The fault codes are embedded in the source files as addresses.

The compiler output file has the AC suffix.

After the loader runs it will pause with a ^ prompt and the user will have
to enter a ^P to proceed or ^C to quit.

The manual is the best description for the user.


More information about the cctalk mailing list