mirror of
https://github.com/prirun/p50em.git
synced 2026-01-11 23:42:56 +00:00
As it was in the real world, especially with dialup ports, it is possible for an emulator AMLC line to get blocked by stray flow control characters. The blocked port may appear dead to the next user to connect, if they are not "serial savvy" enough to try sending an XON character. A large number of vulnerability scanners have found and have been hitting the public emulators, injecting HTTP transactions or worse into the AMLC ports and often locking all of them daily. This workaround injects an XON (DC1, 0221) and a line kill character as extracted from the DEFKIL field in FIGCOM, into the AMLC line when a new connection is received. There is a -dolineclear command line switch to enable the behavior.
406 lines
11 KiB
Groff
406 lines
11 KiB
Groff
'\" t
|
|
.\" em.1, Boone, 03/13/20
|
|
.\" Man page for Jim Wilcoxson's Prime 50-Series emulator
|
|
.\" ---------------------------------------------------------------------------
|
|
.TH em 1 "2020-06-23" "Jim Wilcoxson" "50-Series Emulator"
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH NAME
|
|
em \- Emulator for Prime 50-Series systems
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH SYNOPSIS
|
|
.B em [options]
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH DESCRIPTION
|
|
.PP
|
|
.I em
|
|
is an emulator for the Prime 50-Series minicomputer family. Prime's
|
|
original systems were compatible with Honeywell x16 systems. Prime
|
|
heavily extended the architecture. The emulator supports:
|
|
.IP \(bu
|
|
all Prime CPU modes: 16S, 32S, 32R, 64R, 64V, 32I
|
|
.IP \(bu
|
|
all Prime models, from the P400 to P6550
|
|
.IP \(bu
|
|
up to 512MB of memory, depending on the Primos rev and CPU
|
|
.IP \(bu
|
|
a system console
|
|
.IP \(bu
|
|
128 incoming telnet terminal connections
|
|
.IP \(bu
|
|
8 disk controllers, 8 drives each
|
|
.IP \(bu
|
|
support for all 25 disk drives sold by Prime
|
|
.IP \(bu
|
|
a tape controller, 4 drives, using the .TAP format
|
|
.IP \(bu
|
|
a PNC controller emulating RingNet over TCP/IP
|
|
.IP \(bu
|
|
two sync serial controllers supporting up to 8 lines
|
|
.IP \(bu
|
|
a bypass for Primos system serial number checks
|
|
.IP \(bu
|
|
Unix utilities to read/write physical tapes & Magsav tapes
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH OPTIONS
|
|
.PP
|
|
If no options are specified, the resulting behavior is equivalent to
|
|
\fBem -boot 14114\fR.
|
|
.PP
|
|
\fB-boot \fIprogram [ss [ds]]\fR
|
|
.IP
|
|
Instructs
|
|
.B em
|
|
to directly boot the .SAVE-format program in host file
|
|
.IR program .
|
|
This is most useful for running standalone utilities such
|
|
as diagnostics or MAKE. The sense and data switch registers may
|
|
optionally be set. These register values are specified in octal.
|
|
.PP
|
|
\fB-boot \fIprogram ["regs"]\fR
|
|
.IP
|
|
As above, but set the initial values of the A, B, X and K registers
|
|
from the RVEC area of the program file. The word "regs" is literally
|
|
specified on the command line, without the quotes.
|
|
.PP
|
|
\fB-boot \fIss [ds]\fR
|
|
.IP
|
|
Boot the machine based on the front panel interpretation of the
|
|
specified sense and data switch settings.
|
|
.PP
|
|
\fB-boot help\fR
|
|
.IP
|
|
Provide a summary of booting options and exit.
|
|
.PP
|
|
\fB-cpuid \fIidno|modelname\fR
|
|
.IP
|
|
Sets the CPU model which will be emulated. This may be specified
|
|
using either the id number as returned by the
|
|
.B STPM
|
|
processor instruction, or using the name of the model. A list of
|
|
id numbers and model names appears in the CPU MODELS section below.
|
|
.PP
|
|
\fB-ds \fIdataswitches\fR
|
|
.IP
|
|
Specify the settings of the emulated front panel data switches.
|
|
.PP
|
|
\fB-map|-maps \fIfilename...\fR
|
|
.IP
|
|
Specify the name of one or more PRIMOS load maps to read. Symbols are
|
|
extracted from the map and used to enhance halt and trace output.
|
|
.PP
|
|
\fB-mem \fImemsize\fR
|
|
.IP
|
|
If support for setting memory size is compiled in, set the size of
|
|
emulated main RAM, in megabytes. The default is 512 MB. Not all
|
|
CPU models support this much RAM, but will instead detect a smaller
|
|
size.
|
|
.PP
|
|
\fB-naddr \fIpnclistenaddr\fR
|
|
.IP
|
|
Set the IP address of the network interface on which
|
|
.IR em 's
|
|
Prime Network Controller will listen for connections from other
|
|
emulated PNCs. If no external emulated systems will be included
|
|
in the ring network, it may be more secure to use 127.0.0.1 for
|
|
this. The default is 0.0.0.0 (accept connections via any interface
|
|
on the host).
|
|
.PP
|
|
\fB-nport \fIpnclistenport\fR
|
|
.IP
|
|
Set the TCP port on which
|
|
.IR em 's
|
|
PNC emulation will listen for connections from other emulated PNCs.
|
|
If not specified, PNC emulation will be disabled, and error.log will
|
|
report:
|
|
|
|
.EX
|
|
-nport is zero, PNC not started
|
|
.EE
|
|
.PP
|
|
\fB-ss \fIsenseswitches\fR
|
|
.IP
|
|
Specify the settings of the emulated front panel sense switches. The
|
|
default sense switch setting is 14114.
|
|
.PP
|
|
\fB-tport \fIamlclistenport\fR
|
|
.IP
|
|
Sets the TCP port on which
|
|
.IR em 's
|
|
AMLC emulation will listen for incoming telnet connections.
|
|
If not specified, AMLC emulation will be disabled and error.log
|
|
will report:
|
|
|
|
.EX
|
|
-tport is zero, AMLC devices not started
|
|
emulator: device '53 failed initialization - device removed
|
|
emulator: device '54 failed initialization - device removed
|
|
.EE
|
|
.PP
|
|
\fB-trace \fItracetype(s)\fR
|
|
.IP
|
|
If support for tracing is compiled in, select trace types which
|
|
will be enabled. Trace elements are written to
|
|
.I trace.log
|
|
on the host. Multiple trace types may be listed, separated by
|
|
spaces. Tracing may be initially turned off by including the
|
|
.I off
|
|
trace type.
|
|
.PP
|
|
\fB-dolineclear\fR
|
|
.IP
|
|
Inject an XON (DC1, 0221) character and a line kill character into the
|
|
input buffers each time an AMLC line receives an incoming connection.
|
|
The system's configured line kill character is fetched from the
|
|
DEFKIL field of FIGCOM, at address 14(0)/705. This behavior helps
|
|
counteract lines which have been blocked by internet vulnerability
|
|
scanners injecting non-telnet data streams.
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH FILES
|
|
.TP
|
|
\fR.lock
|
|
Prevents multiple instances of the emulator from simultaneously
|
|
accessing disk and tape files in this directory. Created by
|
|
.IR em .
|
|
.TP
|
|
amlc.cfg
|
|
Used to associate amlc lines with specific hardware devices, to map
|
|
incoming telnet sessions from specific IP addresses to specific line
|
|
numbers, or to configure outbound socket connections. Optional.
|
|
Example:
|
|
|
|
.EX
|
|
6 /dev/ttyUSB0 # Real device
|
|
7 192.168.10.3 # Map incoming telnet to a specific line
|
|
8 192.168.10.4:9000 # Outbound socket connection e.g. for spooler
|
|
.EE
|
|
.TP
|
|
smlc.cfg
|
|
Used to associate outbound sync serial (MDLC or HSSMLC) lines with destination
|
|
IP addresses and port numbers, or to associate inbound sync serial lines
|
|
with port numbers. An outbound line corresponds to an RJE site defined as a
|
|
SLAVE site, and an inbound line corresponds to an RJE site defined as a MASTER
|
|
site. Optional. Comments work the same as amlc.cfg. Example:
|
|
|
|
.EX
|
|
0 10.1.1.3:2554 # Connect to TCP port 2554 of host 10.1.1.3 for outbound line 0
|
|
1 9951 # Listen on TCP port 9951 for inbound line 1
|
|
.EE
|
|
.TP
|
|
console.log
|
|
All console output is also written to this file. It is overwritten
|
|
at each invocation. Created by
|
|
.IR em .
|
|
The
|
|
.B runem
|
|
script included with the samples arranges to preserve console.log
|
|
files in the
|
|
.B logs
|
|
subdirectory with datestamped names.
|
|
.TP
|
|
diskCCuU.TYPE
|
|
A disk image file, or a symlink to such a file.
|
|
.I CC
|
|
indicates the octal address of the controller to which this emulated
|
|
drive is attached.
|
|
.I U
|
|
indicates the unit number of the drive on that controller.
|
|
.I TYPE
|
|
indicates the drive model, and thus its size and geometry. A list of
|
|
supported drive types appears in the DRIVE TYPE section below.
|
|
.TP
|
|
error.log
|
|
Errors are written to this file during operation. It is overwritten
|
|
at each invocation. Created by
|
|
.IR em .
|
|
.TP
|
|
mtN
|
|
A tape image in
|
|
.IR simh .tap
|
|
format, or a symlink to such a file.
|
|
.I N
|
|
is a digit 0-3 indicating which tape drive unit. An empty mtN file
|
|
will be created if it does not exist when the drive is first written.
|
|
.TP
|
|
ring.cfg
|
|
A list of nodes in the ring network. Fields are node number (integer
|
|
1-249), ip address and port, unique ID (essentially a password, up to 16
|
|
non-space characters). Only required if a ringnet is to be established.
|
|
Example:
|
|
|
|
.EX
|
|
1 127.0.0.1:8001 1234567890123456 # comment
|
|
.EE
|
|
.TP
|
|
ring0.map
|
|
PRIMOS kernel load map for ring 0 routines. Will be automatically
|
|
loaded by
|
|
.I em
|
|
if other filenames are not specified. Symbols extracted from this file
|
|
are used to enhance halt and trace output. Optional. This may be
|
|
extracted from the
|
|
.B PRIRUN
|
|
directory.
|
|
.TP
|
|
ring3.map
|
|
PRIMOS kernel load map for ring 3 routines. Will be automatically
|
|
loaded by
|
|
.I em
|
|
if other filenames are not specified. Symbols extracted from this file
|
|
are used to enhance halt and trace output. Optional. This may be
|
|
extracted from the
|
|
.B PRIRUN
|
|
directory.
|
|
.TP
|
|
trace.log
|
|
Any selected trace output is written to this file. It is overwritten
|
|
at each invocation. Created by
|
|
.IR em .
|
|
.TP
|
|
ttymsg
|
|
The text in this file is sent on each newly accepted inbound telnet
|
|
connection. Optional.
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH TRACING
|
|
.PP
|
|
If tracing is compiled into the emulator, it may be enabled from
|
|
the command line. Event types to log are selected via the
|
|
.B -trace
|
|
option. Tracing may start enabled or disabled, depending on whether
|
|
the
|
|
.I off
|
|
trace type is supplied. Tracing may be dynamically turned on and
|
|
off by typing the character ctrl-T on the console. Trace files can
|
|
rapidly become very large, and incur a significant performance penalty
|
|
on the emulator. The following trace types are supported:
|
|
.TS
|
|
tab(|);
|
|
rfB lfB
|
|
r l .
|
|
Trace type|What is traced
|
|
ear|R-mode effective address calculation
|
|
eav|V-mode effective address calculation
|
|
eai|I-mode effective address calculation
|
|
eas|S-mode effective address calculation
|
|
inst|Detailed instruction trace
|
|
flow|Summary instruction trace
|
|
mode|CPU mode changes
|
|
eaap|AP effective address calculation
|
|
dio|Disk I/O
|
|
map|Segmentation
|
|
pcl|Procedure calls
|
|
fault|Faults
|
|
px|Process exchange
|
|
tio|Tape I/O
|
|
term|Terminal output
|
|
rio|Ring network I/O
|
|
off|Start with tracing disabled
|
|
all|Everything
|
|
flush|Flush trace file after each write
|
|
tlb|STLB and IOTLB changes
|
|
smlc|MDLC/HSSMLC device I/O
|
|
OWNERL|Execution of this PCB
|
|
#instruction count|Begin after specified number of instructions
|
|
|(the leading # is literal)
|
|
octal segno|Execution in the given segment number
|
|
|(may interact poorly with "off")
|
|
process number|Execution of this user number
|
|
.TE
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH CPU MODELS
|
|
.TS
|
|
tab(,) allbox;
|
|
lfB lfB
|
|
l l .
|
|
CPUID,MODEL
|
|
1,400
|
|
3,350
|
|
4,450
|
|
5,750
|
|
7,150
|
|
7,250
|
|
8,850
|
|
9,550
|
|
10,650
|
|
11,2250
|
|
15,9950
|
|
16,9650
|
|
17,2550
|
|
19,9750
|
|
21,2350
|
|
22,2655
|
|
23,9655
|
|
24,9955
|
|
25,2450
|
|
26,4050
|
|
27,4150
|
|
28,6350
|
|
29,6550
|
|
31,2755
|
|
32,2455
|
|
33,5310
|
|
34,9755
|
|
35,2850
|
|
36,2950
|
|
37,5330
|
|
38,4450
|
|
39,5370
|
|
40,6650
|
|
41,6450
|
|
42,6150
|
|
43,5320
|
|
44,5340
|
|
.TE
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH DRIVE TYPES
|
|
.TS
|
|
tab(,) allbox;
|
|
lfB lFB lfB
|
|
l l l .
|
|
Suffix,Heads,Comments
|
|
80M,5,Storage Module
|
|
300M,19,Storage Module
|
|
CMD,1/3/5+1,Cartridge Module 32/64/96 MB
|
|
68M,3,Fixed Media Device
|
|
158M,7,Fixed Media Device
|
|
160M,10,Fixed Media Device
|
|
675M,40,Fixed Media Device
|
|
600M,40,Fixed Media Device
|
|
315M,19,MODEL_4475
|
|
84M,5,MODEL_4714
|
|
60M,4,MODEL_4711
|
|
120M,8,MODEL_4715
|
|
496M,24,MODEL_4735
|
|
258M,17,MODEL_4719
|
|
770M,23,MODEL_4845
|
|
1.1G,27,MODEL_4935
|
|
328A,12,MODEL_4721
|
|
328B,31,MODEL_4721 on 7210 SCSI controller
|
|
817M,15,MODEL_4860
|
|
673M,31,MODEL_4729
|
|
213M,31,MODEL_4730
|
|
421M,31,MODEL_4731
|
|
1.3G,31,MODEL_4732
|
|
1G,31,MODEL_4734
|
|
2G,31,MODEL_4736
|
|
.TE
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH AUTHOR
|
|
.PP
|
|
This emulator was written by Jim Wilcoxson. MDLC/HSSMLC support by
|
|
Kevin Jordan. Man page by Dennis Boone.
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH SEE ALSO
|
|
This project is hosted at
|
|
.UR https://github.com/prirun/p50em/
|
|
github
|
|
.UE .
|
|
.PP
|
|
A growing collection of Prime documentation and ephemera is hosted at
|
|
.UR https://sysovl.info/
|
|
.UE .
|
|
.PP
|
|
The simh tape format is described in
|
|
.UR http://simh.trailing-edge.com/docs/simh_magtape.pdf
|
|
.UE .
|
|
.\" ---------------------------------------------------------------------------
|