The problem has to do with the difference in how the PSW is stored when
the simulator is running (it's all in pieces) or stopped (it's collected in PSW).
cpu_ex is a console routine and expects the PSW to be stored in PSW, but
when history is collected, it's not. In particular, cm (current mode) is in local
variable cm.
cpu_ex with /v calls relocC, which derives the current mode from the
switches:
- if /ksup, use kernel/supervisor/user/previous mode (from PSW); otherwise,
use current mode from PSW
- if /d, use data space; otherwise, use instruction space
relocC is doing current mode i-space, which is what's wanted... except that
it's deriving current mode from PSW, rather than cm, which is where it's stored
while the simulator is running. It's fairly likely that PSW is long obsolete by the
time the history is invoked.
This merges the latest PDP18B changes from Bob Supnik:
- It adds the RB disk to the PDP-7 and the drum (DRM) to the PDP-9, per the
discoveries in the 18b services listing.
- It tweaks the switches for examine and deposit to support Unix v0 and
(eventually) the Unichannel.
When packets arrive which require multiple receive buffers to deliver, the
full packet size is reported in the MLEN field of the final receive descriptor
used (the one with the ENF bit set). Previously, correct behavior only
happened when the full packet fit into a single receive buffer. This problem
was reported and the detail identified by Johnny Billquist.
This is invoked with STEP -R nnn, or CONT -R. Execution will continue
across any new subroutines which are called and stop after the current
routine executes a RET or RSB instruction.
SET CPU IDLE={OS{:n}} where n is the idle stability delay
which is also the clock calibration delay.
A -D switch on a SHOW -D CPU IDLE command will
display the stability delay as will a SHOW CLOCK command.
simulator time allows instruction history to be precisely correlated with
debug output. It also provides a way to reproduce and review simulation
activities by stopping at predetermined time values (via STEP) to
examine details of simulator state.
disk logging can be useful to compare activities performed in separate
simulator runs.
If the nested indirect/execute limit (INDMAX, XCTMAX) is set to 0, the simulator will loop indefinitely in an indirect address or execute loop, testing for interrupts before each memory reference. Thus, on an infinite loop, the simulator will never complete the instruction, but the instruction is interruptible. So for example, under TOPS-10:
.r ddt
1/ 0 jrstf @1
1$g
^C
^C
.
The JRSTF will never finish, but it can be interrupted by any device, and double ^C will return control to the command line.
If INDMAX or XCTMAX is non-zero, the previous behavior of limiting loops to a specific depth is retained. However, the default value is now 0.
This closes issue #218.
Conflicts:
doc/pdp10_doc.doc
This can't currently happen since the rtVAX1000 doesn't include the
QVSS video device. It probably should contain this device since VAXELN
was recently recovered and one of the features VAXELN provided was
a way for 'old' VAXStation hardware to be repurposed into X-Window
terminals.
The B5500 simulator supports the following peripherals.
Two CPUs with between 4K and 32K of memory. The second CPU can be
enabled with "set cpu1 enable". "set cpu1 disable" disables the
second CPU.
Up to 4 floating IO channels. Individual channels can be enabled with
"set io# enable", or "set io# disable".
There are two card readers. The second reader is disabled by default.
There is one Card Punch.
The Card reader and Card Punch support the following options:
set cr format=
auto - will automatically determine the format based on the
text it recieves.
text Text based cards. Tabs are converted to the correct
number of spaces. A record of
~raw octal will enter a binary card.
~eor will enter a 7/8/9 punch in column 1.
~eof will enter a 6/7/9 punch in column 1.
~eoi will enter a 6/7/8/9 punch in column 1.
~~ will enter a ~ as the first character.
bin Binary Card format:
Each record 160 characters.
First characters 6789----
Second character 21012345
111
Top 4 bits of second character are 0.
It is unlikely that any other format could
look like this.
bcd BCD Format:
Each record variable length (80 chars or less).
Record mark has bit 7 set.
Bit 6 is even parity.
Bits 5-0 are character.
cbn CBN Format:
Each record 160 charaters.
First char has bit 7 set. Rest set to 0.
Bit 6 is odd parity.
Bit 5-0 of first character are top 6 bits
of card.
Bit 5-0 of second character are lower 6 bits
of card.
For punch format of auto if the card can't be converted to text it is
output as a raw record.
There are two line printers, the second one is disabled by default. The LP
supports the option "set lp# linesperpage=#" which determines when the
printer will force out a page break.
There are up to 16 mag tape drives, the format is controlled by the standard
simh format control for tapes. These are 6 bit tapes, 1 character per record
with parity. Units 8-16 are disabled by default.
There are up to two drum units DR0 and DR1. These can either be attached
to a file or set to AUXMEM. Setting to AUXMEM causes them to exist only
during the given simh run. Setting back to DRUM will clear whatever was
stored on the drum. To enable use of DRUM on XV the following options should
be turned on "DRA,DRB,CODEOLAY,DATAOLAY". MCP will then use the drum as a
overlay device instead of the disk system.
Disks can be attached to the various ESU's, ESU0-9 are on DKA by default,
ESU10-19 are on DKB. If "set dk1 dfx" is set, then ESU10-19 are not used and
the disks are shared by both DKA and DKB. To use more then 10 ESU's in a non
shared mode, a new version of MCP must be created. MCP must be compiled with
DFX option set to false. For MCP XV DKBNODFX must also be set to true. ESU units
can be set to MODI or MODIB. MODIB will double the size of the drive.
The DTC can be attached to a telnet port with "attach dtc #" to enable dialup
access to the sim.
The loader card for the card reader is:
~raw0104441100204231524012004000004444550211002041317700000000000024045303040243
00050000006501004131011041310055005500000062005042310000006600304231000000720010
42310000007675610165001002310010413100040107202500440106202533554061256520252265
20251765202514655355536117650000004401062025155522610165225572610465044101160500
4131
This card should be all in one line.
Device probe logic when running VAXELN was unable to correctly initialize
the XQ device when it was set to be a DELQA or DELQA-T, but worked when
it was a DEQNA or a DELQA/DELQA-T in DEQNALock mode. Problem
initially reported in #271
Both VT11 and VS60 properly autoconfigure on the PDP11.
PDP11 now runs Lunar Lander on all SDL supported platforms.
Reworked refresh logic to not require internal delays in the display library