1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-13 15:27:28 +00:00
PDP-10.its/doc/wp/11sim.240a38
2018-08-15 07:56:34 +02:00

1384 lines
61 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.he 11SIM Reference Manual Page
.l 62
.paperw 62
.bspdir
.ds
.center
11SIM Reference Manual
.sp
.sect
I. Introduction
.sect
11SIM is a program that simulates a Digital Equipment
Corporation PDP-11 computer [Ref 1]. This simulator is designed
to run on the Artificial Intelligence Laboratory PDP-10 [Ref 3]
system under the ITS monitor [Ref 4]. A DDT-like [Ref 5] command
facility is included which makes available functions equivalent
to those provided by the PDP-11 console, the normal range of DDT
facilities, and the use of several special debugging features built into
the simulator.
11SIM is available under ITS as a system program of name
PDP11.
The PDP-11 processor simulator was
written by the author of this memo. The DDT command language
was designed and implemented by Richard M. Stallman.
.page
.sect
II. Processor Simulation
.sect
The PDP-11/20 processor is simulated by 11SIM under ITS [Ref 4]
with an increase in execution time of about a factor of 30. The actual
simulated versus real speed ratio varied from 25. to 37. for the PDP-11/20
processor maintenance programs. Things that would tend to increase this
ratio (i.e. slow down simulation) include activation of "direct to memory"
input-output devices that operate in parallel with the processor
on a real PDP-11 or frequent program reference to such things
as the program counter as a register other than as an addressing
index (i.e., BIC %7,-(3)), non-existant memory locations,
or the other special register locations.
11SIM keeps track of simulated time to one tenth of a microsecond
based on the nominal timing of the PDP-11/20. Delays caused by the EAE
(Extended Arithmetic Unit KE11-A) are not simulated. For information
on the timing treatment of other peripherals see the
Appendix.
As a convience, some PDP-11/45 [Ref 2] features are
also simulated but can be disabled by detaching the "I45" device
[Sec VIII]. With these PDP-11/45 features off, the
only known imperfection in the PDP-11/20 processor simulation is
that instructions that specify a register as a source and then modify
the register in the calculation of the destination address will fetch the
unmodified register as data. Thus MOV %3,(3)+ does not store
the incremented register 3 as on a real PDP-11. This is because it
is convenient for the simulator to fetch the source data before
calculating the destination address. Digital Equipment Corporation has
said it will not guarentee the compatability of this type of instruction
on future models of the PDP-11 [Ref 1].
.page
.ds
.sect
III. Command Level and Interrupt Commands
.sect
11SIM has a DDT-like command level [Ref 5] which the user
is initially typing at. Whenever command level is entered,
after the first time, it
prints out the location and symbolic representation of the next instruction
to be executed if the simulator were proceeded. (This location is not
"open" however [Sec V].) This is usually preceded by an indication
of why command level was entered. For example QUIT, BREAK, and
COUNT indicate command level was entered due to a ^G_, a
breakpoint [Sec IX], or a proceed count exhaustion [Sec VII].
When first started, 11SIM prints
out its version number (this should be included in the report of any bug)
and initializes the PDP-11 configuration [Sec VIII]. If the
user has no disk file named .PDP11 (INIT), zeroed PDP-11
core is attached to 8K from zero as with an attach command, causing
a print out. Command level is then entered with zero as the location
of the next instruction for the simulator to execute. The
resulting initial print out is as follows:
.ss
11SIM.nnn
CORE = 8.K
.sp
.ds
If the user does have a disk file named .PDP11 (INIT),
no core is initially attached by the simulator. Instead, "INIT"
is typed out and after command level is first entered, the user's file will
be executed as with a :XFILE [Sec X]. The user's INIT file
should attach the desired amount of core.
Command level is entered if the user quits (see ^G_ below
this section) or the simulator halts due to a HALT instruction,
a buss error during a trap, or some reason related to the debugging features
of the simulator. Command level types out an exclamation point as
a prompt character at the beginning of each new line of input to it.
Single character rub out is allowed between activation characters.
Simulated time does not pass in command mode.
The following characters have effect at the interrupt level regardless
of whether the simulator or command level is active. They are
invisible to simulated programs and ignored by command level
(but see ^Q_). Some help
in getting back to command level rapidly while most control the
destination of normal "console" or simulated teletype
output.
.ss
A. ^B_ (B_egin) Turns on output to line printer (but see
:WALLP [Sec X]). If not available, output will be buffered on the
disk for later printing by ITS.
.sp
B. ^E_ (E_nd) Turns off output to line printer.
.sp
C. ^G_ (bell) This is the "quit" character.
C.1 If typed while at command level it causes an immediate
error and return to the main command loop.
C.2 If typed while simulating, it sets up a transfer to command
level to occur at the end of the current instruction or simulated input-output
cycle. It is possible that due to a bug in the simulator the current
instruction or I-O cycle will not end soon. (This is very much more likely
for a complex newly introduced I-O device than for a basic PDP-11
instruction.) In this case more ^G_'s may be typed with the following
effects:
C.2.a ^G_^G_ This has the same effect as ^G_^S_ and will
allow the user to immediately see if he has quit or not despite much
buffered type out.
C.2.b ^G_^G_^G_ This causes command level to be entered
immediately, probably from within an I-O cycle. Proceding the
simulation will return to whatever was happening while a ;G [Sec VII]
will start simulation at the beginning of an instruction.
.sp
D. ^Q_ (Q_uote) This character causes the immediately following
character to be treated as an ordinary letter at interrupt level and also
at the main program level of command level. A ^Q_ will be invisible
to a program being simulated but the following character will always be
visible. It is useful for inputing any of the special characters listed
in this section. It may also be used to put
space, comma, colon, and semicolon into filenames. Rubbing
out a character quoted by a ^Q_ also automatically rubs out the ^Q_.
.sp
E. ^S_ (S_ilence) This character deletes all typeout
until the time it is invisibly read at the main program level.
.sp
F. ^V_ (V_oice) Turns on typeout. Typeout is also
switched on by some serious errors.
.sp
G. ^W_ (W_isper) Turns off typeout, except for most
error messages which bypass this switch.
.ds
.page
.sect
IV. Expressions in 11SIM DDT
.sect
Expressions in 11SIM DDT are composed of syllables
and operators. Syllables are composed as follows:
.ss
<digit>::= 0[ 1[ 2[ 3[ 4[ 5[ 6[ 7[ 8[ 9
<letter>::= A[ B[ C . . . X[ Y[ Z[ .[ $[ %
<octal-number>::= <digit>[ <digit><octal-number>
<decimal-number>::= <digit>.[ <digit><decimal-number>
<ASCII-value>::= '<any-characer>[ "<any-character><any-character>
<symbol>::= <letter>[ <letter><octal-number>[ <symbol><symbol>
.sp
<syllable>::= <octal-number>[ <decimal-number>[
<ASCII-value>[ <symbol>
.sp
.ds
In the above, <any-character> means either any ASCII
character not mentioned in section III and not rub-out,
or a ^Q_ followed by any mentioned in section III or rub-out.
Rub-out is used to implement a character at a time input
backup feature.
The value of a syllable (assuming no undefined symbols) is a
16. bit number and a flag that says if it is a register
number. A register value can come only from a register type symbol. The only
initial register symbols are %0, %1, . . . %6, %7. An expression
is register valued if and only if it contains a term which is a register
valued syllable.
Expressions are composed of syllables and certain operators,
with the indicated precedence, as follows:
.ss
<term>::= <syllable>[ <value>
<expr1>::= <term>[ -<term>[ +<term>
<expr2>::= <expr1>[ <expr1>*<expr1>[ <expr1>!<expr1>
<expr3>::= <expr2>[ <expr2>+<expr2>[ <expr2>-<expr2>
<expr4>::= <expr3>[ <expr3>&<expr3>[ <expr3>\<expr3>[
<expr3>#<expr3>
.sp
<expression>::= <expr4>[ <expr4><space><expr4>
.sp
.ds
In the above "!" signifies division, "&" means logical and,
"\" (back slash) means inclusive-or, and "#" means exclusive-or. A
<space> in an expression performs the operation of addition.
Since the PDP-11 has multi-word instructions, the command level
DDT can handle multi-word values. These may be composed by an
op-code or with angle-brackets as shown below:
.ss
<expr-sequence>::= <expression>[ <expression>,<expr-sequence>
.sp
<value>::= <expression>[ <op-code-with-operands>[
"<"<expr-sequence>">"
.sp
.ds
For an expr-sequence at the top level, each expression is
assembled as a successive word. In an embedded expr-sequence,
only the first expression is used. Surrounding register
value expressions with angle brackets strips off their registerness.
Op-codes may variously have zero, one, or two operands and
the operands may be of various sorts. The usual PDP-11 conventions
are followed [Ref 1] except for the set and clear
flag instructions where SFL or CFL followed by a space,
an atsign, and the appropriate flag letters is used (i.e. SFL @C
for SEC or CFL @Z for CLZ). In genral,
expressions of the right registerness may
be used in operands. Where a register is expected and an ordinary
value is supplied, it is treated as a register value
(i.e. RTS 7 is equivalent to RTS %7).
The following are some special symbols whose values are
automatically set.
.ss
. Current location [Ref 4].
%. Location actually open [Sec V].
% Set at entry to simulated program counter.
%OPC Address of last or current instruction.
%Q Has value of last quantity typed in or out.
%B Address of last breakpoint taken [Sec IX].
%GO Starting address for ;G with no argument.
%CORE Number of bytes attached (first non-existant
address).
%D Last explicit destination address typed in or out.
%JPC Sometimes set to address of last jump or trap [Sec IX].
%L Length of last quantity typed in or out.
%S Last explicit source address typed in or out.
%P Last subexpression in a multiword expression, else %Q.
%CSX Address used by ;X [Sec VII].
%PATR Location after instruction patched [Sec VII].
PATCH Patch space pointer [Sec VII].
%PMODE Permanent type out mode [Sec V].
%TMODE Temporary type out mode [Sec V].
.sp
.ds
Symbols are also defined for various device registers
(including the processor "device"). They are listed
in the Appendix.
.page
.sect
V. Examining and Depositing
.sect
In examining and modifying locations, 11SIM command level
follows the same general conventions as DDT [Ref 5]. "/"
when preceeded by an expression types out the corresponding location
in the current mode (see below this section for mode commands). This
command changes the values of the symbols %. and ".". If given
no argument, the value of %Q is used and only %. is changed. Open
square bracket is the same as "/" in all respects except that type out
is in non-instruction mode.
The "=" command retypes %Q or its argument,
if supplied, in numeric form. Close square bracket
is the same as "=" except that it types out in current mode.
The left arrow (or underbar) command reopens %. in the current
mode.
The :REGS command is available to examine all of the
eight procesor general registers.
Carriage return closes the currently open location and
deposits its argument, if any, there. Horizontal-tab,
line-feed, and up-arrow (or circumflex)
do the same but then type out the address of and open
a new location. For horizontal-tab, this is the location addressed
by the previously open location. For line feed, this is .+1 if
a byte is open or .+%L, if a word is open, where %L is
the length of %Q in bytes. For up-arrow, it is .-1 if a
byte is open and .-2 if a word is open.
There are three sets of type out modes. The one-shot set
are refered to during printing and are reset from the temporary set
at the end of every non-type-out-mode command. The temporary set are
modified to the permanent whenever the simulator types out
a prompting "!". This happens when DDT is entered and
after a carriage return, a colon command, and some
other commands. Thus the one-shot mode affects
only the next command.
Each set of
type out modes is a group of bits that can be cleared (with
a minus sign immediately before the mode character) or turned
on for either just the one-shot set (one semicolon), or
both the one-shot and temporary
sets (two semicolons), or all three (three semicolons). For example,
;-D;;;N will set numeric mode for all sets but clear decimal mode
in the one shot set. The following is a complete list of mode
characters:
.ss
B Byte mode, when opening an even location,
examine even addressed byte only. (Examining an
odd location always fetches byte only.)
D Decimal mode, when printing a quantity
numerically, use base 10. (Normal base is 8.)
I Instruction mode, when opening a location, print as an instruction.
N Numeric mode, overrides symbolic and ASCII modes.
R "Register" mode, stops register values form being
printed symbolicly.
S Symbolic mode.
! Non-printing mode, when opening a location, don't print its
contents, overrides all others.
" ASCII mode, overrides symbolic.
' Both ASCII and byte modes.
.sp
.ds
These different modes are relevant at different points
in type out. Decimal mode only has effect when
it has been decided to output a number. When a location is opened,
"!" mode is check first. If it is off, then "I" mode
is checked to see if instruction print out should be used. If
"I" is off then ASCII and "N" mode are successively
tested. (In examining an odd location or a register or when byte
mode is on, instruction mode is supressed.) When a quantity
is output, the same thing happens except the "!" and "I" modes
are not examined. When a quantity is printed symbolicly, it
is normally printed as the nearest symbol less than the
quantity plus the difference printed numerically. Special things
happen for register quantities. These are printed as a symbol
only if the symbol matches exactly, "R" and "N" mode are off,
and "S" mode is on. If
printed numericly a % is printed in front only if the context
(in an instruction) does not make it clear that the number is a
register.
Numeric and ASCII mode do not affect the output of
addresses printed by command level
because it is about to open them (i.e.,
those generated by line-feed, breakpoints, etc.). Expressions
typed before a mode setting command are treated as if
typed afterward.
.page
.sect
VI. Zeroing, Loading and Dumping
.sect
Although the simulated core and disk du<64><75><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><><03><>tes a RESET
instruction, zeros the cumulative virtual time and zeros the processor status
register.
.sp
:BUSS The simulator remembers various information about the last
up to three buss errors. This information, which includes the simulated
time of the error, is printed along with the current time by :BUSS.
.sp
:PAT exp This command can be given only when a location
is open [Sec V]. It gives the location special properties and stores
exp, which must be a one word quantity, in it. Attempts to read or write
the locaction by a simulated program will be treated
as stopping breakpoints [Sec IX]. Fetching the location as an instruction
will cause a transfer to exp. Examining the location at command
level will type out ":PAT" before exp and force exp to be typed
as an address. Depositing with DDT will erase
the special features. The :PAT command also sets the symbol %PATR to the
location of the next instruction (the location line
feed would have opened). The properties of :PAT locations are correctly
dumped and loaded [Sec VI].
.sp
^\_ This command (control backslash)
can be given only when a location
is open and the symbol
PATCH has been defined to point to an even non-register location.
It has the effects of :PAT PATCH but also opens location PATCH.
.sp
^]_ This command (control close bracket)
is normally used to return to
an instruction sequence that was was patched with ^\. It
has the same effect as :PAT %PATR except that if given
an argument it first stores it and then patches
after it and it also redefines the symbol PATCH
instead of %PATR to point
just after the patch it stores.
.ds
.page
.sect
VIII. Configuration Control
.sect
The configuration of the simulated PDP-11 is controlled
by the $A and $D commands which attach and detach devices.
These commands may be preceded by an optional numeric argument and
are followed by a device name. If no device name is given,
either command will type a list of legal device names. For
some devices, an optional file name can follow the device name.
The exact effect and conventions in attaching and detaching all
devices are listed in the Appendix except for the CORE "device",
which is explained below.
Simulated PDP-11 core is allocated in units of 1024. words.
Giving a numeric argument to an attach or detach command on the CORE
device will attach or detach that number of 1024. word units. The
maximum that may be attached is 28. units. After any attach or
detach command on the core device the total amount of core then
attached is printed out.
As it is sometimes convenient to have a way of
setting the amount of core to a particular value regardless of
the current amount attached, there also exists the exp:CORE
command. It tries to set the number
of attached blocks of core to the value of the expression exp. It
then prints the amount of core attached, as it does if given no argument.
.page
.sect
IX. Debugging Aids
.sect
The two basic bebugging features are the breakpoint feature, described
immediately below, and the trap message feature described further below, this
section. They have been designed to allow the user to enter command level
at a point in the simulated program likely to be that at which it is going
astray.
The breakpoint feature is implemented by associating a seven bit
qunatity with each simulated PDP-11 word. Any reference to memory
by a simulated program or direct to memory input-output device can activate
a breakpoint if the appropriate bits are on in the quantity associated with
the word it is referencing. These bits are as follows:
.ss
1 Breaks on processor instruction fetches.
2 Breaks on processor write references.
4 Breaks on processor read references except instruction fetches.
10 Upon breaking, if this bit is set, continue simulation, else
enter command level.
20 Breaks on direct to memory device write.
40 Breaks on direct to memory device read.
100 Breaks on processor instruction fetch, always enters command
level, and clears itself.
.sp
.ds
When a break occurs, a message is typed showing various
information normally including the instruction which "caused" the break.
In the case of instruction fetch breakpoints that enter command level,
this is the instruction fetch of which caused the break.
Autoflush breakpoints, indicated by the
100 bit, always enter command mode and delete themselves. Otherwise,
if the 10 bit is off command level is entered.
The break
message will also contain the code R, W, or I as the break was caused by
a read, write, or instruction fetch. RW will appear if the referencing
instruction was performing a read-pause-write cycle. For direct to memory
references, the codes NGDIS RW for the display,
DSK R and DSK W for the disk, and DM R, DM RW, and DM W for the teletype
multiplexer will appear.
The commands to insert and remove breakpoints are $B,
$F, $R, $W, and $U.
These commands can take two expressions as arguments, one just before and one
just after the "$". If no first argument is given, the command will affect
all locations where breakpoints can be set. If a single word value first
argument is given, the command will affect only the location with that address.
If a multi-word value first argument is given, the locations from the first
sub-value through the second sub-value will be affected.
With no second argument, just after the "$", $B will put in
a break of type 7 (print message and enter command level on any
processor reference)
while $U will remove a breakpoint by making it type 0 (never break).
$F, $R, and $W insert breakpoints of type 1, 4, and 2
repsectively to trap just instruction fetches, just other reads, or just
write references.
This is, in fact, the only difference between these commands as, with
a second argument, all use the bottom seven bits of the second argument as
the break type to set.
The trap message feature allows the
user to be notified and, if he desires,
to enter command level on any PDP-11 trap or transfer of control. There is an
array with an entry for each even word address from 0 thru 374. These are the
type of locations used for "trap vectors" in the PDP-11. Each entry
in this array contains one of the following trap action codes:
.ss
0 Do nothing (continue simulation).
1 Set %JPC from %OPC and continue.
2 Print message and continue.
3 Print message and enter command level.
.sp
.ds
The $T command is used for setting these codes. It can be
given the location it is desired to
influence traps through as a first argument (just before the "$").
If this argument is omitted, traps through all
locations will be affected. A second argument (just after the "$") may be
supplied which is the trap action code to be set. If this argument
is omitted, 0 is assumed.
Since the PDP-11 does not trap through location 0,
this slot in the trap action array
is free and is used to allow any of the above trap actions on all
transfer of control instructions. The
inital trap vector state is 0$1T.
.page
.sect
X. Miscellaneous
.sect
A. Symbols
At any particular time, there is symbol table in
the simulator used by the command level DDT [Ref 4]. It
contains op-codes, special symbols, and user defined symbols.
The user defined symbols are usually initialized
by a load command and are saved by some dump
commands [Sec VI]. The following commands are
useful in manipulating user symbols:
.ss
:LSYMS Lists all user symbols and some special
symbols with their values.
.sp
:FLSYMS Flushes all user symbols.
.sp
exp>sym Defines sym with value exp (should
be a one word quantity).
>SYM Defines sym with value %Q.
exp>sym^K_ Defines sym with the value exp
but does not allow it to be used in symbolic
typeout (half-kills the symbol).
.sp
^K_sym Complements half killed status of sym.
.sp
:LOOKUP Should be followed by a symbol.
Valrets a string to HACTRN [Ref 5]
which causes it to type out the symbol table entry for the symbol.
.sp
.ds
B. Time
A cumulative simulated run time is kept by the
simulator. Simulated run time does not pass in
command level.
.ss
:TIME Prints cumulative simulated run time. This
is also printed by the :BUSS command [Sec VII].
.sp
:ZTIME Zeros the cumulative simulated run time. This
is also done by $I [Sec VII] and $L [Sec VI].
.sp
.ds
C. Other
.ss
;ALTSEM This command switches the effect of
; and $ in indicating types of commands. It prints out NORMAL
or SWITCHED as the state is the same or different from that
indicated in this manaul.
.sp
:DEBUG This command complements a switch and
prints out ON or OFF depending on the switch's new
state. This switch is initially off. When on it enables the
print out of the simulation program's program counter at
certain critical points.
.sp
:LCOMS This command lists all ":" commands [Sec XI].
.sp
:WALLP This command has the effect of ^B_ but takes an
optional file specification which controls
future output to the "line printer". This file is
also used by future ^B_'s. ^E_ terminates "console" output
started by a :WALLP.
.sp
:XFILE This command takes a file specification
like that used for dump and load commands [Sec VI].
It treats the file as text commands to be
executed by the simulator command level. Characters
in the file are echoed on the users terminal as they are read.
^B_, ^E_, ^V_, and ^W_ are effective [Sec III] from the file
as well as from the terminal. Any errors cause input to be taken
from the termianl again (this includes ^G_ typed on the terminal).
$G, $N, and $P termiate usage of the command file.
.ds
.page
.sect
XI. Index to Commands
.sect
.ss
^B Section III.
^E Section III.
^G Section III.
^I(tab) Section V.
^J(line-feed) Section V.
^K Section X.
^L Clear screen.
^M(carriage-return) Terminates file specifications and some commands
Section VI, Section V.
^N Same as $N, Section VII.
^P Same as $P, Section VII.
^Q Section III.
^V Section III.
^W Section III.
^Z Reference 3.
^\(control backslash) Section VII.
^](control close bracket) Section VII.
$(alt-mode) Starts a class of commands indicated by the
following character.
See commands in this list ASCII ordered by character.
! Section IV.
;!, ;;!, ;;;! Section V.
" Section IV.
;", ;;", ;;;" Section V.
# Section IV.
% Section IV.
& Section IV.
' Section IV.
;', ;;', ;;;' Section V.
* Section IV.
+ Section IV.
- Section IV.
/ Section V.
: Starts a class of commands indicated by the
following symbol. See
commands in this list ASCII ordered by symbol.
; Starts a class of commands indicated by the next following
non-semicolon character. See commands in this list ASCII ordered by character.
< Section IV.
= Section V.
> Section IV, Section X.
$A Section VIII.
:ALTSEM Section X.
;B, ;;B, ;;;B Section V.
$B Section IX.
:BUSS Section VII.
:CDMP Section VI.
:CORE Section VIII.
;D, ;;D, ;;;D Section V.
$D Section VIII.
:DEBUG Section X.
:DMP Section VI.
:DMPCOR Section VI.
:DMPDF Section VI.
:DMPSYM Section VI.
:DMPTPV Section VI.
$F Section IX.
:FLSYMS Section X.
$G Section VII.
;I, ;;I, ;;;I Section V.
$L Section VI.
:LOAD Section VI.
:LODCOR Section VI.
:LODPTR Section VI.
:LOOKUP Section X.
:LSYMS Section X.
;N, ;;N, ;;;N Section V.
$N Section VII.
:ODMP Section VI.
$P Section VII.
:PAT Section VII.
$R Section IX.
;R, ;;R, ;;;R Section V.
:REGS Section V.
;S, ;;S, ;;;S Section V.
:S%CSX Section VII.
$T Section IX.
:TIME Section X.
$U Section IX.
$W Section IX.
:WALLP Section X.
$X Section VII.
:XFILE Section X.
$Y Section VI.
:ZERDF Section VI.
:ZTIME Section X.
[(open bracket) Section V.
\(back slash) Section IV.
](close bracket) Section V.
^(up arrow) Section V.
_ Section V.
.ds
.page
.sect
References
.sect
.sp
1. 1969 "pdp-11 handbook" Digital Equipment Corp. [DEC-112X 01269 AJO F 11 50]
.ss
.sp
.ds
2. 1971 "PDP-11/45 Handbook" Digital Equipment Corp. [Preliminary Edition]
.ss
.sp
.ds
3. 1968 "PDP-10 System Reference Manual" Digital Equipment Corp. [DEC-HGAA-D]
.ss
.sp
.ds
4. 1969 "ITS 1.5 Reference Manual" Donald E. Eastlake et al. [AI Memo 161A]
.ss
.sp
.ds
5. 1970 "DDT Reference Manual" Eric Osman [AI Memo 147A]
.he 11SIM Reference Manual -- Appendix Page
.page
.sect
Appendix of Device Registers
This appendix lists all device registers (pseudo-memory locations
with magic properties) simulated by 11SIM. They appear in order of
increasing address and are grouped by "device".
Each lettered section represents a device whose symbolic name
or names, if
any, appear in all capital letters after the section letter. Such
names are the legal device names to use with the $A attach and $D detach
commands [Sec VIII]. After the section heading line, a
list of interrupt vectors and priorities, if any, for that device appear.
Then there is an explanation of the details of the device's simulation,
attachment, and detachment. In all cases except the Knight display,
it is assumed that the user is familiar with the device's
normal operation from manufacturer literature. For the Knight
display (section A) a fuller explanation is given.
Finally, each section has a list of register locations
and bits in each register. Just after the register's
octal address and just after each subfield or bit will appear one of the
following codes:
.ss
RO R_ead O_nly. This register or field is unaffected by writting
into it. The data in it can only be read.
.sp
R/W R_ead W_rite. These bits can be read or written by the
user's program.
.sp
WO W_rite O_nly. This register or field is always read as
zero but has some effect on being written into.
.sp
NS N_ot S_imulated. These bits are not simulated. For a register,
this means that the location will be non-existant. For a bit or field,
the bits are always read as zero and writting them has no effect.
.sp
.ds
The symbolic name of each register appears in all capital letters
after the above code after the octal address of the register. This
name, with a % prefixed, is a defined symbol in 11SIM's DDT whose
value is the address of the register. A general description of the
register is given after its symbolc name and a descrition of each
used bit or field in the register is given below the main register line.
All bit numbers are decimal and the notation n:m means bits n through m
inclusive of bits n and m.
Unless otherwise stated, all the register locations associated with
a device will be non-existant when the device is not attached and attaching
a device already attached is identical to detaching it and then
attaching it.
The simulation routines for these devices were written by the
author of this memo except for the ET device which was implemented
by Richard M. Stallman.
.page
.ss
.sect
A. NGDIS, The Knight Display
270=interrupt vector 5=priority
The Knight display controller allows up to eight consoles to be attached
to a PDP-11. In the simulator, this device is not initially attached.
When attached, it uses the DEC 340 display to simulate three
consoles (number 0, 1, and 2) in three quadrants of its screen.
The fourth, lower right hand quandrant displays
simulator information including the output from a :REGS and
:BUSS command. Each word fetched for a particular display console as a display command
is decoded as follows:
bit___ 15__ 14__
0 0 No-op, rest ignored.
0 1 Increment command. 13:11=direction. 10:8=count. 7:0=bits.
1 0 Pushj. 13:0=destination word address.
bit___ 13__ 12__ 11__
1 1 0 0 0 10=reset X. 9=reset Y. 8=stop. 7=pop. 6=popj.
1 1 0 0 1 10=intensify. 9:0=delta Y.
1 1 0 1 0 10=intensify. 9:0=delta X.
1 1 0 1 1 10=intensify. 9:0=delta X and Y.
1 1 1 - - No-op, rest ignored.
The reset X and reset Y functions set the appropriate
coordinate registers to
zero. The point (0,0) is at the center of the screen and the upper
right quadrant is +X, +Y. Each coordinate
register is eight bits.
In increment mode, the count field (in which zero implies
eight) is the number of bits starting from bit 7 down that
are used as follows:
dir bit X Y dir bit X Y
0 0 0 +1 4 0 0 -1
0 1 +1 +1 4 1 -1 -1
1 0 +1 0 5 0 -1 0
1 1 +1 +1 5 1 -1 -1
2 0 +1 0 6 0 -1 0
2 1 +1 -1 6 1 -1 +1
3 0 0 -1 7 0 0 +1
3 1 +1 -1 7 1 -1 +1
The direction can be considered to be one of the eight
compass points clockwise numbered
with zero north. These points are then rotated clockwise 22 and a
half degrees. Then a zero bit means the nearest of N, E, S, or W
and a one bit means the nearest of NE, SE, SW, or NW. A point
is displayed at the end of each increment.
In the delta X and Y commands, bit 9 and 8
have no effect currently but are reserved for future expansion of the coordinate
registers. Bits 7 through 0 are 2's complement added to the appropriate
coordinate register(s). A point is displayed at the
new coordinates if the intensify bit is on.
The lower 14. bits of a pushj type display command
are shifted left one to give the (unrelocated) byte address that is transfered
to. A simple transfer is accomplished by pushjing to a pop command. The
stack pointer (unrelocated) used by the display processor for each console
is found in location 16. plus twice the console number.
.sp
164040 R/W NGCSR, Control and status register
0:7 R/W Run bits for each console (0 for console 0). Setting bit starts
console and sets console PC (unrelocated) to the console number times
two as a byte address. Clearing bit aborts output on console. Bit
cleared by controller when console hits a stop command.
8 R/W Interrupt enable. Allows interrupt on run bit going
to zero for any console.
9:11 RO Number of last console to get a non-existant memory
error.
12 R/W NXM interrupt enable. If set, bit 15
on will interrupt and suspend all displaying even though some
of bits 0:7 remain on.
13:14 R/W Relocation extension bits. See NGREL.
15 R/W Non-existant memory error. Can be
set for checking purposes.
.sp
164042 R/W NGREL, Relocation pointer.
1:15 R/W Relocation for display addresses, extended
by NGCSR bits 13:14. All memory locations fetched from
or stored into by the Knight display have their
address relocated by the addition of the relocation pointer.
.page
.sect
B. PK, The KW11-P Programmable Clock
104=interrupt vector 6=priority
This device is not initially attached. It does not
take any file name after it in an attach command but a
non-zero prefix numeric argument will be taken as the "line
frequency" for rate 2 operation. This is initially 60. The
cumulative simulated time is used to drive the PK device
so its actions correspond to simulated real time.
.sp
172540 R/W PKCSR, Control and Status Register
0 R/W Run, allows clock to run, cleared by underflow in Mode 0.
1:2 R/W Rate select as follows:
1_ 2_ rate
0 0 100,000 Hz
0 1 10,000 Hz
1 0 Line frequency.
1 1 External.
3 R/W Mode, if zero underflow stops clock by clearing bit 0,
if one clock continues counting after underflow.
4 R/W When zero, clock counts down, if one, clock counts up.
5 R/W Setting this bit causes clock to count by one.
6 R/W Interrupt enable, allows bit 7 to interrupt.
7 R/W Turned on by underflow.
15 RO Turned on by underflow with bit 7 set, cleared by clearing
bit 7.
.sp
172542 WO PKCSB, Counter Set Buffer
0:15 WO Sets counter, cleared by underflow in mode 0, used to
restore counter on underflow in mode 1.
.sp
172544 RO PKC, Counter
0:15 RO Current state of counter.
.page
.sect
C. DC, DCR, DCT, Asyncronous Line Interface
304=interrupt vector 5=priority (receive)
310=interrupt vector 5=priority (transmit)
This device is not initally attached. It may be
given a file specification argument when attahced. Using
the DC device attaches the same file for both receive and
transmit. The DCR and DCT devices allow file specifications
for just receive or transmit. All registers exist if either
DCR or DCT is attached.
If a teletype is attached for input, characters will be available
as 11SIM gets teletype interrupts. Characters will not be lost
due to not reading them fast enough. Non-teletype input and any output
is allowed every ten simulated microseconds. Characters output
when ready is not on will be lost.
The DC device uses dynamically allocated input-output
channels as discused under the DM device below.
.sp
174000 R/W RCSR, Receiver Status Register
0 NS Data terminal ready.
1 R/W Break. In simulator, sends a zero character when set.
2 RO Carrier detect. In simulator indicates DCR attached.
3:4 R/W Receiver speed. No effect in simulator.
5 RO Parity. In simulator always zero indicating even parity.
6 R/W Interrupt enable, allows interrupt on bit 7.
7 RO Done, indicates character available in RBUF.
8 NS Supervisory transmit data.
9:10 R/W Character length. No effect in simulator.
9_ 1_0_ bits____
0 0 8
0 1 7
1 0 6
1 1 5
12 NS Receiver overrun.
13 NS Ring indicator.
14 RO Carrier transition. Cleared by reading RCSR. In
simulator set when DCR attached or detached.
15 RO Error. OR of bits 12:14.
.sp
174002 RO RBUF, Receiver Buffer
0:7 RO Input character. Reading clears RCSR bit 7.
.sp
174004 R/W TSCR, Transmitter Status Register
0 R/W Request to send. No effect in simulator.
1 RO Clear to send. In simulator indicates that DCT attached.
2 NS Maintenance.
3:4 R/W Transmitter speed select. In simulator no efffect.
6 R/W Transmitter interrupt enable.
7 RO Ready. Indicates ready to accept character in TBUF.
8 R/W Stop code. 0=2 bits. 1=1 bit. No effect in simulator.
15 NS Supervisory receive data.
.sp
174006 WO TBUF, Transmitter Buffer
0:7 WO Transmitted character. Loading clears TSCR bit 7.
.page
.sect
D. DM, DMR, DMT, Asyncronous 16-line Single Speed Multiplexer
314=interrupt vector 5=priority (receive)
320=interrupt vector 5=priority (transmit)
This device is not initially attached. A line number
from zero to fifteen should be supplied as a prefix argument
to any attach command and a file specification
may be supplied after each attach
command. An attach on the DM device tries to attach the same
file for both receive and transmit on the specified line.
The DMR and DMT devices may be used to attach receive and transmit
sperarately. A line number from zero to fifteen is also
usually given with a detach command. DMR and DMT may be used to
detach just receive or just transmit. If no line number is supplied
on an attach or detach, nothing is attached ordetached.
Instead, a print out
of the status of the DM lines is made.
If a teletype is attached for input, characters will be
stored into memory as 11SIM gets teletype interrupts. Characters
may be lost due to tumble table wrap around. Non-teletype input and
any output is activated every three simulated milliseconds.
The DC and DM devices use dynamically allocated input-output
channels. Each receive or transmit attachment on each line uses up
one channel unless the device attached is TTY or LPT [Ref 4].
Currently there are a total of six channels available.
.sp
175000 R/W CSR, Control and Status Register
0 R/W Receiver enable. When clear disables all 16 receivers.
1 R/W Full-half duplex select. Ignored in simulator.
2 NS Maintenance.
4:5 R/W TBR extension bits. These bits also extend all other
address produced by the DM. If on in the simulator they
cause a timeout error.
6 R/W Receiver interrupt enable. Allows bit 7 to interrupt.
7 R/W Done. Set as each character is received.
12 R/W Transmit interrupt enable. Allows bits 13:15 to interrupt.
13 R/W System overrun. DM unable to get unibus in time. May
be set for checking purposes.
14 R/W Timeout. DM non-existant memory. May be set for
checking purposes.
15 R/W Transmit done. Set as any bit of BAR goes to zero.
.sp
175002 R/W BAR, Buffer Active Register
0:15 R/W One bit per line. Setting starts transmission. Clearing
aborts transmission. Bit set to zero when character count decremented to zero
(see TBR).
.sp
175004 R/W BCR, Break Control Register
0:15 R/W One bit per line. Setting causes continuous break
tranmission on line until bit cleared by program or reset.
.sp
175006 R/W TBR, Table Base Register
8:15 R/W This is the relocation pointer for the tables in
memory used by the DM device. It is extended by CSR bits 4:5.
Since the bottom eight bits are always zero, the TBR is a multiple
of 400. The first sixteen locations it points to are the current
byte address of characters being transmitted to each line. The
next sixteen locations are the tranmission byte counts. The third set
of sixteen are not used in the simulator but are normally the bit
assembly words. The fourth set of sixteen words is never used but the following
sixty four are the receiver tumble table. A internal pointer in the DM
circles through these words and is incremented once as each
character received is stored into a word. The word will have
bit 15 on and will have the line number in bits 9:12. In the
simulator, bit 13 will always be on and bit 14 always off. On a
real DM these bits indicate parity and break respectively.
.page
.sect
E. EAE, Extended Arithmetic Unit KE11-A
This device is initially attached. Delays caused by EAE operations
are not simulated. Byte mode references can write in the simulated
status register.
.sp
177300 WO DIV, Divide
0:15 WO When the divisor is moved to this address, the 32. bit
dividend in the AC & MQ is divided by this number.
.sp
177302 R/W AC, Accumulator
0:15 R/W High order word of arithmetic unit. Contains
low order product on multiply, remainder or high order dividend on divide.
.sp
177304 R/W MQ, Multiplier Quotient
0:15 R/W Low order word of arithmetic unit. Contains
low order product or quotient on divide. When written into, its
sign is extended into the AC.
.sp
177306 WO MUL, Multiply
0:15 WO When the multiplicand is loaded into this address, the EAE
multiplies this number by the number in the MQ.
.sp
177310 R/W SCSR, Step Count and Status Register
0:5 R/W The step count which contains the count for long shifts and the
step count following normalize.
8 R/W On shifts, set to last bit shifted out of AC & MQ.
9 RO Indicates that result is a single word in the MQ. (Or of bits
12 and 13, this word.)
10 RO Indicates that result is zero. (And of bits 11
and 12, this word.)
11 RO MQ is zero.
12 RO AC is zero.
13 RO AC is all 1's.
14 R/W Indicates result negative.
15 R/W XOR of operation causing overflow and bit 14.
.sp
177312 R/W NOR, Normalize
0:15 R/W Writing into this address results in the 32. bit
number in the AC & MQ being normalized. This usually means shifting
left until the top two bits are different but certain special
numbers are checked for and handled differently.
Reading this address fetches the shift count.
.sp
177314 WO LGS, Logical Shift
0:5 WO Output to this address results in a logical shift of the AC &
MQ (filling with zeros) the specified number of bits.
.sp
177316 WO ARS, Arithmetic Shift
0:5 WO Output to this address causes an arithmetic shift of the
AC & MQ (sign extension) with the shift count being the value
moved to this address.
.page
.sect
F. ET, DECtape
214=interrupt vector 6=priority
The simuator command structure for attaching
this device is not yet settled.
.sp
177340 RO TCST, Control and Status Register
0:1 NS Extended Data.
2:4 NS Data Tracks.
5:6 NS Maintenance.
7 RO Tape up to speed. Cleared when unit select or
reverse bit changed.
8 RO Non-existant memory. Cleared in the same manner as
bit 15.
9 NS Data missed.
10 RO Block missed.
11 RO Selection error.
12 RO Illegal operation.
13 NS Mark track error.
14 NS Parity error.
15 RO End zone. Cleared when a zero is loaded into
bit 15 or TCCM.
.sp
177342 R/W TCCM, Command Register
0 WO Starts action, clears ready.
1:3 R/W Command as indicated below:
#_ F_u_n_c_t_i_o_n_
0 Stop all motion.
1 Read block number.
2 Read data.
3 Read all.
4 Stop motion in selected transport.
5 Write timing and mark track.
6 Write data.
7 Write all.
4:5 R/W Extend bits of buss address.
6 R/W Interrupt enable.
7 RO Ready.
8:10 R/W Unit select.
11 R/W Tape direction.
12 R/W Delay inhibit.
13 NS Maintenance.
15 R/W Error.
.sp
177344 R/W TCWC, Word Count
0:15 R/W Two's complement word count.
.sp
177346 R/W TCBA, Buss Address
0:15 R/W Buss address for memory transfers.
.sp
177350 NS -, Data Register
.page
.sect
G. DF, The RF11/RS11 Disk
204=interrupt vector 5=priority
This device is not initally attached. It is the only device that may be
given a file argument on attaching but acts differently if not given
a file argument. All other devices that take file specifications
simply use some initial file as changed by previous type-in if no
file specification is supplied. This device is simulated by storing the disk
contents in the simulator's core image. Two PDP-11 words
are stored per PDP-10 word.
The DF device may be attached by a load command [Sec VI] which loads
disk contents information. A message is printed and the information is
loaded into the simulated disk. If an attach command on the DF device
is given a file argument, the disk is attached and disk information only
is loaded from the specified file into the simulated disk. An attach
command with no file specification attaches a zeroed disk. The
:ZERDF command is also available to zero the disk [Sec VI].
Detaching the DF with a file name simulates a :DMPDF [Sec VI]
and then expunges the disk contents information in core. If no file is
specified and the user has not done a :DMPDF then the disk contents
is lost by detaching the DF device.
Although in the simulator a disk transfer happens instantaneously in terms
of cumulative simulated time, the ready flag will not normally come on (possibly
causing an interrupt) until the right amount of simulated time has past. The
user can activate another transfer by setting go even when ready is off.
.sp
177460 R/W DCS, Disk Control and Status
0 WO Setting causes the disk to execute the function selected
by bits 1:2, clears bits 8:13, and clears bit 15 unless bit 14
is set.
1:2 R/W Select one of three functions as shown in this table:
2_ 1_ Function
0 0 no operation
0 1 write
1 0 read
1 1 write check
3 NS Maintenance.
4:5 R/W Extended memory bits. Cause disk non-existent
memory error unless both on when addressing an I-O register.
6 R/W Interrupt enable. Allows bits 7 and 15 to interrupt.
7 RO Ready.
8 WO Setting causes "power clear" of disk.
9 NS Missed transfer.
10 NS Write lock out.
11 RO Non-existent disk. On if DAE bits 2:4 are non-zero.
12 NS Data parity error.
13 RO Write check error. On if word read from memory and
word read from disk differ during a write check operation.
14 RO Freeze. Or of DAE bits 10:15.
15 RO Error. Or of DCS bits 9:14.
.sp
177462 R/W CMA, Current Memory Address
1:15 R/W Current memory address, initially loaded with
the starting address minus two, incremented after each word is transfered
unless DAE bit 8 is on.
.sp
177464 R/W WC, Word Count
0:15 R/W Word count, loaded with 2's complement
of block length and incremented by 1 before each transfer. Overflow
ends a function. Limits block size to 65,536 words.
.sp
177466 R/W DAR, Disk Address Register
0:10 R/W Selects word of disk track for next transfer. Incremented
after each transfer. Overflow carries into track address.
11:15 R/W Selects track for next word to be transfered. Carries into
and is extended by DAE bits 0:1.
.sp
177470 R/W DAE, Disk Address Extension and Error
0:1 R/W Track address extension, carries into bit 2.
2:4 R/W Disk address, in the simulator
causes non-existant disk error if non-zero,
carries into bit 5.
5 RO Disk address overflow, causes non-existant disk error.
7 NS Data request late.
8 R/W CMA increment inhibit.
10 RO Non-existant memory on disk reference.
12 NS C timing track error.
13 NS B timing track error.
14 NS A timing track error.
15 NS Address parity error.
.sp
177472 NS -, Data Buffer Register
.sp
177474 NS -, Maintenance Register
.sp
177476 RO ADS, Address of Disk-Segment
0:10 RO Real time disk position.
.page
.sect
H. LP, Line Printer
200=interrupt vector 4=priority
The device is not initially attached. It allows
output to the "line printer" through the same path
as that enabled by ^B_ [Sec III]. It may be given a file
specification to output to which will effect future ^B_ or :WALLP
output [Sec X]. Detaching the LP does not terminated
^B_ or :WALLP output. Characters may be output every 6 simulated
microseconds. Characters output when done is not on will be lost.
.sp
177524 R/W LPS, Line Printer Status
6 R/W Interrupt enable, allows bit 7 or 15 to interrupt.
7 R/W Done. Indicates ready to accept character in LPB.
15 RO Error on output.
.sp
177526 WO LPB, Line Printer Buffer
0:6 WO Character to be printed. Loading clears
LPS bit 7.
.sp 3
.sect
I. LK, The KW11-L Line-Frequency Clock
100=interrupt vector 6=priority
This device is initially attached. It takes no
file name after an attach command on it but a non-zero prefix
numeric argument will set the "line frequency" used it its
operation. This is initally 60. The cumulative simulated time is used
to drive the LK so its actions correspond to simulate real time.
.sp
177546 RO LKS, Line Clock Status
6 R/W Interrupt enable, aloows bit 7 to request interupt.
7 RO Set to one every cycle of line current, cleared by reading.
.page
.sect
J. PR, High Speed Paper Tape Reader
70=interrupt vector 4=priority
This device is not initially attached. It takes a file
specification to read from. A nonzero numeric argument
will set the PR to rad in image or ASCII mode as the
argument is one or greater than one. Image mode is the
initial setting and must be used to read properly from the PTR
[Ref 4] which is the initial file specification. A character
may be read from the PR device every 6 simulated microseconds but no data is
lost if characters are not read fast enough.
.sp
177550 R/W PRS, Paper Tape Reader Status
0 WO Reader enable, requests read of next character, can be
set only if bit 15 clear, setting clears PRB and sets bit 11.
6 R/W Interrupt enable, allows bits 7 and 15 to interrupt.
7 RO Done, set by character available, cleared by reading PRB.
11 RO Busy, set by setting bit 0, cleared by bit 7 coming on.
15 RO Error, set by end of input.
.sp
177552 RO PRB, Paper Tape Reader Buffer
0:7 RO Reader character buffer.
.sp 3
.sect
K. PP, High Speed Paper Tape Punch
74=interrupt vector 4=priority
This device is not initially attached. It takes
a file specifcation to write on. A non-zero prefix numeric
argument will set the PP to read in image or ASCII mode as the
argument is one or greater than one. Image mode is the initial
setting and must be used to write properly
on the PTP device [Ref 4] which is the initial file specification.
Characters may be output to the PP device every 30. simulated
microseconds. Data output when ready is not on is lost.
.sp
177554 R/W PPS, Paper Tape Punch Status
6 R/W Interrupt enable, allows bits 7 and 15 to interupt.
7 RO Ready, cleared by loading PPB, set when ready for more data.
15 RO Error on output.
.sp
177556 WO PPB, Paper Tape Punch Buffer
0:7 WO Punch character buffer.
.page
.sect
L. TK, Teletype Keyboard
60=interrupt vector 4=priority
This device is initially attached and allows input from
the user's teletype to the simulated PDP-11 program. No
file specification is taken by this device but a non-zero prefix
numeric argument will set the ratio between simulated real teletype speed
and real teletype speed. (This is initially set to 1000.)
Thus an argument of one would alllow one input
character per one tenth second of simulated
time or 4 seconds of real time. In the simulator, as opposed
to the real PDP-11, data is not lost due to not reading it in
time. However, characters buffered by the time-sharing system will be
lost on transition to command level.
.sp
177560 R/W TKS, Teletype Keyboad Status
0 NS Reader enable.
6 R/W Interrupt enable.
7 RO Done, character available. Clears bit 11 when set.
11 RO Busy, character being read.
.sp
177562 RO TKB, Teletype Keyboard Buffer
0:7 RO Character buffer, reading clears bit 7 in TKS.
.sp 3
.sect
M. TP, Teletype Printer
64=interrupt vector 4=priority
This device is initially attached and allows output to the "console"
through the same path as command level type out [Sec III]. No
file specification is taken by this device but a non-zero prefix numeric
argument will set the ratio between simulated real
teletype speed and real teletype speed. This is initially
500. (See description of TK device.) Writting in TPB when
ready is off will casuse output to be lost.
.sp
177564 R/W TPS, Teletype Printer Status
2 NS Maintenance control.
6 R/W Interrupt enable.
7 RO Ready.
.sp
177566 WO TPB, Teletype Printer Buffer
0:7 WO Character buffer, clears bit 7 in TPS when loaded.
.page
.sect
N. Console Data Switches Register
See references 1 and 2.
.sp
177570 RO SWR, Switch Register
0:15 RO This location represents the console data switches.
Although read-only for a simulated program, it can be deposited into
by command level.
.sp 3
.sect
O. Processor General Registers
4=interrupt vector
10=interrupt vector
20=interrupt vector
30=interrupt vector
34=interrupt vector
See references 1 and 2. The processor registers are printed by :REGS.
.sp
177700 R/W through 177716, %0 through %7
0:15 R/W %0 through %5 are the PDP-11's general purpose
registers. %6 is used as the stack pointer for interrupts. %7 is the
program counter.
.page
.sect
P. I45, PDP-11/45 Features
240=interrupt vector priority variable
With this device attached, as it is initially, the following
PDP-11/45 op-codes become available: XOR, MUL, DIV, ASH,
ASHC, SXT, SPL, RTT, SOB, and MARK. (Estimated times
are used for these operations in advancing the cumulative
simulated time.) The PDP-11/45 segmentation option and floating point
processor option and their associated instructions
are not simulated. See reference 2.
.sp
177772 R/W PIR, Programmed Interrupt Request
1:3 RO Priority level of highest request (bits 9:15).
5:7 RO Same as 1:3.
9:15 R/W Program set requests for interrupts. Bit n
is priority n minus 8.
.sp
177774 NS -, 11/45 Stack Limit
.sp 3
.sect
Q. Processor Status Register
14=interrupt vector
The trace trap enable bit causes a trap through 14
at the end of most instructions. See references 1 and 2.
.sp
177776 R/W PS, Processor Status
0 R/W Carry flag (C).
1 R/W Overflow flag (V).
2 R/W Zero flag (Z).
3 R/W Negative flag (N).
4 R/W Trace trap enable (T).
5:7 R/W Processor priority. Interrupts of equal or lower
priority are inhibited.
.ds
.pgn
.page
.ce
Info for title page
.sp
Title: 11SIM Reference Manual
.sp
Author: Donald E. Eastlake
.sp
Artificial Intelligence Memo Num. 240A
(revised 240, December 1971)
.sp
Date: January 1972
.sp
Abstract: A program that simulates a Digital Equipment
Corporation PDP-11 computer and many of it peripherals on the A.
I. Laboratory Time Sharing System (ITS) is described from a user's
reference point of view. This simulator has a built in DDT-like
command level which provides the user with the normal range of DDT
facilities but also with several special debugging features built
into the simulator. The DDT command language was implemented by
Richard M. Stallman while the simulator was
written by the author of this memo.