Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Macintosh PDP-8/E Simulator

37 views
Skip to first unread message

Klemens Krause

unread,
Mar 9, 1995, 1:46:57 PM3/9/95
to
On Fri, 17 Feb 1995 10:04:27 GMT,
Bernhard Baehr <b...@informatik.uni-hannover.de> wrote:

>
>I announce the availability of the final version 1.0 of my simulator
>for the DEC PDP-8/E minicomputer running on the Apple Macintosh
>computer. The simulated machine is a PDP-8/E with 4K words of memory
>and an ASR 33 console teletype. Optionally a MC8-E Memory Extension
>(with up to 32K words of memory), an EAE, an auxiliary ASR 33 teletype,
>a high speed paper tape reader and punch, a RK8-E disk system, a
>LP8-E line printer and a Real Time Clock can be attached to the
>simulated PDP-8/E.
>
>The simulator is based on the PDP-8/E emulator of Bill Haygood. It
>is known to run on a wide variety of 680x0 and PowerPC Macintoshs
>running System 6.0.4 to 7.5. (Probably it runs on any Macintosh with
>System 4.1 or better and 128K ROMs.) The current version of the
>simulator does not contain native PowerPC code. On the fastest
>68040 Macintoshs the simulated PDP-8/E runs nearly with the speed
>of a hardware PDP-8/E.
>

Everybody seems to write PDP-8/E-emulators which run nearly as
fast as the original. (We too, but ours is faster than the original).

I prepared some bench marks, to show the speed differences, and I'd
be interested, if somebody else would either add the times of his
emulator to my table, or make suggestions for more benchmarks.

1. Benchmarks without I/O:
A program which calculates 1500 functions (squareroot, sine and
logarithm) and stores the results in a two-dimensional array.
Times are stopped between the "START" and "END" message on
the screen, without the compile time and the 17 lines at the
end of the programs.
The program is translated to three languages: BASIC, with 23-bit
accuracy and use of the EAE, FORTRAN-IV with 27-bit and PASCAL
with 35-bit. (Plus 1-bit for the sign).

2. Benchmarks with file-I/O (RK8E-disk)
The PASCAL.PA file was the last file on DSK: and I squished the
disk before assembling or editing, so that the head movement is
approximately constant.

A.
Assembling the PASCAL-S compiler (from nickel.ucs.indiana.edu)
with PAL8 without listing.
The source is a textfile with 140 000 characters in 9000 lines.

.R PAL8
*PASCAL<PASCAL/K

B.
Assembling the same compiler, with producing a 375 000 character
list-file.
.R PAL8
*PASCAL,PASCAL<PASCAL/K

C.
Reading and writing the PASCAL.PA with the OS/8-editor EDIT.SV:
.ED PASCAL.PA
*R
*E
.


Here are the hand measured times (in seconds):

.BA .FT .PS PAL8 PAL8(.LS) EDIT
-------------------------------------------------------------------
PDP8-E 16 18 44 75 192 91

486/33 (EISA) 6 8 15 28 79 45
with RAMDISK 6 8 15 25 55 35

486DLC/40 5 7 15 30 105 55
with RAMDISK 5 7 15 24 57 36

386/28 26 23 81
386/40 8 9 20 37 120 65
with RAMDISK 8 9 20 32 73 50

386SX/25 30 36 78 122 279 183


(I was searching for a PC which is nearly as fast as the original -8)

Here are the programs:

5 REM SHUDDER
10 N = 500
20 DIM A(4,500)
40 PRINT "START"
50 X = 0.01
60 J = 2
70 FOR I = 1 TO N
80 A(1,I) = X
90 Y = SQR(X)
100 A(J,I) = Y
110 Y = SIN(X)
120 A(J+1,I) = Y
130 Y = LOG(X)
140 A(J+2,I) = Y
150 X = X + 0.01
160 NEXT I
180 PRINT "END"
190 PRINT
195 PRINT " #";TAB(7);"X";TAB(22);"SQRT";TAB(37);"SIN";TAB(52);"N-LOG"
200 FOR I = 1 TO 17
210 PRINT I;TAB(5);A(1,I);TAB(20);A(2,I);TAB(35);A(3,I);TAB(50);A(4,I)
215 NEXT I
220 STOP
225 REM UNSHUDDER-1
230 END

***

C SIGH, THOSE WERE THE DAYS
DIMENSION A(4,500)
N = 500
WRITE (4,400)
400 FORMAT (' START')
X = 0.01
J = 2
DO 100 I = 1,N
A(1,I) = X
Y = SQRT(X)
A(J,I) = Y
Y = SIN(X)
A(J+1,I) = Y
Y = ALOG(X)
A(J+2,I) = Y
X = X + 0.01
100 CONTINUE

WRITE (4,404)
404 FORMAT(' END')
WRITE (4,440)
C 1 2 3 4 5
C 123456789a123456789b123456789c123456789d123456789e12
440 FORMAT(' # X SQRT SIN N-LOG')

DO 110 I = 1,17
WRITE (4,444) I, A(1,I), A(2,I), A(3,I), A(4,I)
444 FORMAT(I3,F7.3,3X,3(F13.9,2X))
110 CONTINUE

STOP
END

***

PROGRAM BENCH(OUTPUT);
(* REAL PROGRAMMERS DON'T USE PASCAL *)
CONST N = 500;
VAR X,Y: REAL;
I,J: INTEGER;
A: ARRAY[1..4,1..N] OF REAL;
BEGIN
WRITELN("START");
X := 0.01;
J := 2;
FOR I := 1 TO N DO
BEGIN
A[1,I] := X;
Y := SQRT(X);
A[J,I] := Y;
Y := SIN(X);
A[J+1,I] := Y;
Y := LN(X);
A[J+2,I] := Y;
X := X + 0.01;
END;

WRITELN("END");
WRITELN;
WRITELN(" # X SQRT SIN N-LOG");
FOR I := 1 TO 17 DO
BEGIN
WRITELN(I:3," ",A[1,I]:7:3," ",A[2,I]," ",A[3,I]," ",A[4,I]);
END;
END.

Klemens Krause
Universitaet Stuttgart
Institut f. Informatik

Stuttgart - Germany

0 new messages