Trailing-Edge
-
PDP-10 Archives
-
decuslib10-01
-
43,50146/sim.opr
There are 2 other files named sim.opr in the archive. Click here to see a list.
WHAT IS A PDP-8 SIMULATOR?
The simulator attempts to duplicate all PDP8 functions
(including IO device timings) so that the results of starting any
program in either the Simulator or an actual PDP8 will be identical.
To do this we have simulated core which conains PDP8 12bit
words which are the PDP8 program. These "PDP8 words" are then read,
decoded, and executed as PDP8 instructions. Under favourable
conditions the simulation proceeds at a rate approximately 1/30
the rate an actual PDP8 could execute the code.
THE FOLLOWING DEVICES MAY BE SIMULATED:
CONSOL TELETYPE KEYBOARD AND TELEPRINTER
HIGH SPEED PAPER TAPE AND PUNCH
CALCOMP PLOTTER
DDF32(MINI) DISK
Page -1-
USING THE PDP8 SIMULATOR
For our discussion we will assume the reader is familiar with
the programming and console operation of the PDP8. Further some
knowledge of PDP-10 commands is assumed. Be sure to read the section
TTY.MAC in this file before actually running the simulator. To run
the simulator we type:
"RUN DTAN:DEMO"
The simulator will identify itself and indicate its readiness to accept
commands by typing an *. The commands which are currently implemented
are:
BINARY :Run the Binary Loader from the high speed
paper tape reader. See the example.
BOOTSTRAP :Load the first block from the DF32 into
the high page of core.(used to load the disk
monitor if it is on the disk)
C :Equivalent to depressing the CONTINUE switch
on the console of a PDP8.
D n1:n2,n3 :Deposit the 12bit number n2 in location n1 and
the number n3 in location n1+1.
D n1:n2,n3:n4 :Deposit n2 in location n1 and deposit n4 in
location n3.
DDT :Exit to DDT if DDT was loaded with the
SIMULATOR. To return control to the SIMULATOR
type OPR$G.
DISPLAY :Display the state of the major registers and
the Flags. See the examples.
DP :Equivalent to depressing the Deposit switch on
the console of a PDP8.
E :Equivalent to depressing the Examine switch on
the console of a PDP8.
Page -2-
EX n1,n2-n3 :Type out the contents of the locations n1, and
locations n2 through n3.
DUMP :Dump all of the PDP8's core locations on the
line printer file as an octal dump.
DUMP n1,n2-n3 :Dump the contents of core location n1 and
locations n2 through n3 as an octal dump on the
line printer file.
EXIT :Closes all opened files. Used if changing
files on simulated devices (e.g. binary loading
an overlay to a program with a second tape)
FILES :Starts a dialogue which permits changing file
names and logical devices. See the examples.
INTERRUPT &n :Will set the DRIVER to interrupt when the
simulated running time has increased n
microseconds.
INTERRUPT n :Set the driver to interrupt when the running
time reaches n.
L :Equivalent to depressing the load-address
switch on the console of a PDP8.
SR n :n is an octal number six digits long.
Load the data field switches with the first
octal digit, load the instruction field
switches with the second octal digit, and load
the data switches with the four low order octal
digits.
PC n :n is an octal number six digits long. Load
the data field switches with the first octal
digit, load the instruction field register
with the 2nd digit, load the address register
with the four low order octal digits.
ST n :Start the simulated PDP8 with the address
registers initialized with n.
S :Equivalent to depressing the START switch on
the console of a PDP8.
Page -3-
SS :Single-Step. The simulator will execute one
PDP8 instruction and then halt showing its
registers.
ZIP :starts a diAlogue which changes the simulated
speed of some preipherials. See examples.
RIM :Run the RIM Loader from the high speed paper
tape reader.
Note: When a special character such as - : , . follows a number, it
must follow immediately after the number with no intervening blanks.
NOTE: WHEN EVER USING PDP-10 PIP TO TRANSFER FILES BETWEEN DEVICES
FOR USE BY THE SIMULATOR, IT IS GERNERALLY GOOD PRACTICE TO USE
THE /I (IMAGE MODE) SWITCH.
NOTE: IF THE TELETYPE SEEMS TO GO DEAD WHEN YOU STOP THE SIMULATOR
TYPE CONTROL S AND CONTROL B TO RETURN TO NORMAL OPERATION.
Page -4-
SAMPLES AND EXAMPLES
^C
.RUN DTAn:DEMO.SAV
YOU HAVE A 4K SIMULATED PDP8(INLINE VERSION) WITH AN UNPACKED MEMORY.
PLOTTER
*EX 7756
7756 6014
*EX 7760-7763
7760 5357
7761 6016
7762 7106
7763 7006
*RIM
END OF FILE ON PTR
*DISPLAY
PC 7762
AC 0377
IR 0006
MA 7761
MB 6016
SR 0 0 0000
SIMULATED RUNTIME 3.034,221,75 SECONDS
RUNNING TIME 84.600 SECONDS
*
Page -5-
Since some programs may have loops such as:
RSF /READER READY?
JMP .-1 /NO SO LOOP BACK AND TEST AGAIN
to read characters, it may be desireable to increase the apparent
speed of some of the peripherial devices to reduce the work load
on the simulator. This is acomplished using the ZIP command as
demonstrated in the following example:
*ZIP
READER SPEED WAS 454cps CHANGE TO 1000
PUNCH SPEED WAS 77cps CHANGE TO
KEYBOARD SPEED WAS 12cps CHANGE TO
TELEPRINTER SPEED WAS 12 cps CHANGE TO 500
PLOTTER SPEED WAS 454cps CHANGE TO
In the above dialogue we changed the high speed paper tape speed
from 300 Characters per second to 512. (Note again that most
numbers accepted or typed by the DRIVER are octal) The speeds
of the PLOTTER and high speed paper tape punch were not changed.
From reading about the STRUCTURE of the simulator you know that every
1/10 of a second the teletype is polled for input. This polling is a
significant overhead so avoid speeding the keyboard up unnecessarily.
The PDP-10 is a file oriented system. The SIMULATOR has two
commands specifically related to this structure, "EXIT" and "FILES".
The first is used to close any opened files, the second is used to
select the devices and file names for input and output by the various
simulated peripherials. An example of the "FILES" command follows:
*FILES
READER PTR:PTR.RIM modify this with
PUNCH PTP:PTP.OUT modify this with DSK:PUNCH.FIL
PRINTER LPT:FILE.LST modify this with DSK:
PLOTTER PLT.PLOTS.gph modify this with .EXT
DF32 DSK:DF32.FIL modify this with disk2
In the above example we:
1. Left the PAPERTAPE READER file device and file name
unchanged
2. Changed the punch file name and extension to PUNCH.FIL,
and changed it to output to the disk.
3. Changed the line printer file to the disk, but left
the file name and extension the same.
4. Changed the extension of the plotter file to "EXT"
5. Changed the "MINI" disk file name to DISK2.
Page -6-
Now let's run a demonstration. Mount the dectape from DECUS
on a drive with logical name "FOO".(.ASSIGN DTA FOO) Then type:
1. .RUN FOO:DEMO
2. When the simulator is ready, change the speed of the paper
tape reader to 1000000 cps.
3. Then change the paper tape input file name to FOO:FOCAL.TPE.
ALTHOUGH WE ARE USING THE DISK, ANY SIMULATED DEVICE(WITH THE EXCEP-
TION OF THE DF32 AND TELETYPE) COULD USE ANY PDP-10 DEVICE.
4. when the simulator is ready, run the BINARY loader.
5. When the simulator announces that the PDP8 has halted see if
the AC is 0 (link will be 1).
6. If it is type C to continue running the binary loader and read
the second half of the binary 'FOCAL' tape into the PDP8.
7. Again see if the AC is 0.
8. Then start the simulator at 200.
9. 'FOCAL' will now run on the simulated PDP8, and start typing
"CONGRATULATIONS"
10. You will quickly notice that the type out is very slow.
11. So type "^.". This will return control to the DRIVER.
12. Now change the speed of the TELEPRINTER to 500cps and then
continue running the program. 'FOCAL' is now running!!
SECOND DEMONSTRATION
1. PIP DF32.FIL TO THE DISK WITH THE /I(IMAGE MODE) SWITCH.
2. .RUN FOO:8KPDP8
3. SPEED THE TELETYPE TO 500CPS AND THE KEYBOARD TO 100 CPS.
4. BOOTSTRAP THE DISK MONITOR INTO CORE
5. RUN PIP TO GET A DIRECTORY OF THE DISK, I.E.:
.PIP
*OPT-L
*INP-S:
Page -7-
STRUCTURE OF THE PDP8 SIMULATOR
The PDP8 simulator consists of 14 macro subroutines and 2
common Macro10 files(P.MAC and F.MAC).
The file PDP8.MAC contains the basic simulator. It keeps
track of time, sets some flags, handles the PI system and Data Break
(RM08 only) and almost all memory references. A time flow is:
A.TIME CONTROL
a. (CYCLE:)Check for flags to be set and
special routines to be executed(keyboard input,
DF32 Data Break etc.)
<app. 6us if no flags are to be set>
b. RM08 Data break handling.
c. Check for interrupts if the PI is on
<app. 4us if no flags are set>
B.INSTRUCTION CYCLE
a. (INSFET:)instruction fetch.
<app. 10us>
b. Effective address calculation
<app. 11us>
c. Indirect address calculation
<app. 10us>
d. (DISP:)Dispatch to individual
instruction routines(by OP code)
<app 4us>
e. If not an IOT, the instruction is
executed in PDP8.MAC. If the instruction is
an IOT a dispatch is executed to its OPcode in
its device subroutine.
f. Return to time control for the next
instruction cycle.
Page -8-
The other subroutines are:
P.MAC Provides the definitions of several conditional
assembly parameters, TTCALL UUO's, certain Macro definitions,
accumulator assignments and some bit definitions, such as the bits in
the flags.
F.MAC Provides definitions of other common bits and
words associtiated with the file structure, such as bits in CFSTAT
and CDSTAT, and word definitions in File Data Blocks and Device Data
Blocks.
CORE.MAC The simulated core for the PDP8. The RIM and
BINARY loaders for the PDP8 are always assembled in the high page of
core. If the conditional assembly parameter PACK (in P.MAC) is a 0,
then simulated PDP8 words are packed 3 words to a PDP10 word, otherwise
they are placed one PDP8 word to one PDP10 word.
MEMORY.MAC Contains the memory extension IOT'S. The
instruction field (IF), and data field (DFF) are words in this routine.
CONSOL.MAC Contains the functions of most of a PDP8's
consol switches S(start),C(continue),L(load address),DP(deposit),
E(examine),SS(single step)and the routines EXIT and INI which
respectively close all files, and initialize all files.
COMMON.MAC The Paper Tape Reader, Paper Tape Punch, PLOT-
ter, and Printer use PDP-10 data files serviced by COMMON.MAC. Any
PDP-10 device may be substituted for any of these simulated devices
provided only that it can handle IO in the proper direction.
Page -9-
TTY.MAC Handles all IOT's for the TTY. The Keyboard
is always active and every .1 seconds(assuming 10cps speed) input is
attempted via the TTCALL UUO's. If a character was received the
Keyboard flag is set(See P.MAC and F.MAC for a definition of flags).
The PDP-10 Monitor intercepts certain special characters so we
must resort to subterfuge if we are to be able to type the full
character set on the simulatted PDP8 teletype. We accomplish this by
saying that:
^^ is given to the PDP8 as an ^
^_ is given to the PDP8 as a rubout
^C is given to the PDP8 as a control C
In fact a ^ followed by any alphabetic
character will give the PDP8 the
corresponding control character.
^. will immediately return control to the DRIVER
ROUTINE.(Since the teletype is polled infrequently
this may not actually happen quickly.)
The PDP-10 Monitor further meddles by echoing characters and
inserting linefeeds after carriage returns. But again we persevere
by having the simulator initiate half duplex, and tape modes of
operation just prior to running a PDP8 program. If you stop the
SIMULATOR while the PDP8 was running, typing control B, control S
will return the teletype to normal operation. (I have assumed
that the teletype controlling the job will be full duplex, if it
isn't, you should make a change in the DRIVER, at OPR+2)
PTAPE.MAC Handles the IOT's for a high speed paper tape
reader and a high speed paper tape punch. Because paper tape is
generally 8 channel, the simulation uses Image mode, therefore to
Pip a paper tape to the disk use:
.R PIP
*DSK:FILE.EXT/I_PTR:
and equivalently to Pip a file from the disk to paper tape.
LPTSER.MAC Was intended to handle Line Printer IOT's but
due to a lack of Line Printer IOT spec's was never written. It does
handle the file for the DUMP command.
PLOTER.MAC Handles the IOT's for an incremental plotter.
Page -10-
DF32.MAC Handles all of the IOT's for a simulated DF32.
The value of DDF32(defined in P.MAC) is the number of mini disks
in the system. The simulation uses a PDP-10 disk file to simulate the
storage of the disk. Three 12bit words are stored in one PDP10 word,
hence each simulated DF32 disk takes up approximately 256 PDP-10 disk
blocks. The simulation may alternately use a dectape for the
simulated disk storage. But if a DECTAPE is used, the normal PDP-10
file structure is not observed. Hence the file may not be transferred
with PIP, and will probably overwrite any files which were previously
on the DECTAPE. One DECTAPE is sufficient for the simulation of up
to 2 mini disks.
RM08.MAC Handles the IOT's for a drum type RM08. It is
assembled only if DRM08(defined in P.MAC) is 0.(doesn't run)
LINE.MAC Handles the simulation of 680 lines. Its
assembly is conditional on the value of dcs680 in P.MAC.(doesn't run)
PATCH.MAC Is patching space for the simulator. Most
users will not find they need it and won't want to load it with the
other routines.
DRIVER.MAC Is the front end for the PDP8 simulator. It
provides the command decoding etc.
Page -11-
ASSEMBLING THE PDP8 SIMULATOR
The steps for assembling a simulator are as follows:
A. PIP all files to the disk
.R PIP
*DSK:/X/B_DTAn:*.*
B. Assemble all of the files
.R MACRO
*SIM.CCL@
C. Load the files together
.R LOADER
*PDP8,CORE,MEMORY,CONSOL,COMMON,TTY,
*PTAPE,LPTSER,PLOTER,DF32,DRIVER$
D. Save the loaded program.
.SAVE DSK:SIM
E. CREF Listings can now be obtained by:
.R CREF
*LPT:_A
*LPT:_B
etc. to *LPT:_N
Page -12-
CONDITIONAL ASSEMBLY PARAMETERS
There are a number of conditional assembly parameters defined in P.MAC
which are:
A. Variety of PDP8. These affect the operate
instruction and simulated runtimes.
a.PDP8 ;if 0 a PDP8 is simulated
b.PDP8I ;If 0 an 8I is simulated
c.PDP8S ;if 0 an 8S is simulated
B. Core utilization and simulator speed which
are unfortunately inversely related.
a.INLINE ;if 0 IOT dispatches and
memory references are faster but requires
another 1K of PDP10 core to run in.
b.PACK ;if 0 3PDP8 words are packed
into one PDP10 word, if not 0 one PDP8
memory word is placed in one PDP10 word.
(packed takes at least 4us longer per PDP8
memory access, but takes 1/3 the core)
C. IO Device simulation
a.PLOTER ;if 0, IOT's are simulated for
a calcomp ploter.
b.DDF32 ;if not 0 the value is the
number of mini-disks to be simulated.
If = 0 the IOT's are not simulated
D. Action for error conditions
a.ESTOP ;If = 0, then 4 conditions
will cause an automatic trap to the DRIVER
after execution. These are:
1. execution of an unrecognized
IOT
2. micro programing right and
left rotates in a single instruction.
3. EAE type instructions.
4. CYCLING IN MEORY,I.E. EXECUTING
A NONJUMP INSTRUCTION IN LOCATION 7777.
If ESTOP=1, no trap occurs and in any event
the instruction is executed with the proper
execution time accumulated.
E. Memory size.
a. MEMSIZ is the number of words in the
PDP8's memory. i.e. ^D4096, ^D8192, etc.
Page -13-
MAINDECs
To test the SIMULATOR all of the following MAINDECs
have been run when the proper assembly parameters were used.
MAINDEC-8I-D01B-PB 3/25/68
INSTRUCTION TEST 1
MAINDEC-8I-D02b-PB 3/21/68
INSTRUCTION TEST 2
MAINDEC-08-D02B-PB 1/3/68
INSTRUCTION TEST Part 2B
MAINDEC-08-D07B-PB 12/26/67
RANDOM ISZ TEST
MAINDEC-08-D04B-PB 2/8/67
RANDOM JMP-TEST
MAINDEC-08-D05B-PB 12/28/67
RANDOM JMP-JMS TEST
MAINDEC-08-D6CB-PB 6/1/67
CALCOMP PLOTTER TEST
MAINDEC-08-d5DB-PB 8/22/68
DF32 MULTI DISK
MAINDEC-08-D5CC-PB 4/4/68
DF32 DISK DATA
MINI DISK, INTERFACE, ADDRESS, DATA TEST
Comments may be directed to:
DAVID McCLURE
NORTHEAST REGIONAL OFFICE
DIGITAL EQUIPMENT CORP.
15 LUNDA STREET
WALTHAM, MASS
Page -14-