$AT
@file

Reads in "file" as if its contents had been entered at the E11 prompt.  The
default extension is ".CMD".  Indirect files cannot be nested.
$ASNTTY
ASSIGN pdpdev pcdev /switches

Assigns a PDP-11 character device (TTn: or LPn:) a physical PC device, which
is either a COM port, COM1:-COM4:, an LPT port, LPT1:-LPT4:, or a video
console, CON1:-CON12: (the keyboard and primary monitor may be switched to that
port by pressing Alt-F1 through Alt-F12, or the secondary monitor may be
switched to that port if you press Ctrl-F1 through Ctrl-F12).  Switches are
/IRQn, /SHARE, /FIFO[:n], and /NOFIFO for COM ports, and /IRQn, /NOIRQ, and
/SHARE for LPT ports.
$ASNETH
ASSIGN XEn: PKTD[=int] [prot1 prot2 ...]

Assigns a DELUA (XEn:) port to an ethernet board for which a packet driver has
been loaded (from DOS, prior to starting E11).  The packet driver is found at
the specified INT vector (hex), or if it's not specified then the range from 20
to FF is searched for any packet driver not already in use by E11.  The driver
must conform to version 1.09 or later of FTP Software's packet driver spec.  If
prot1 etc. are specified, they are the hex DIX protocol numbers of up to ten
packet types that the DELUA will be able to receive (to allow cooperation with
other protocol stacks on the same PC);  if no protocols are specified then the
DELUA arranges to receive all packet types.
$BOOT
BOOT pdpdev [/switches]

Boots the PDP-11 from the specified mass storage device (must be MOUNTed).
Switches are /RT11 or /RSTS (to control mechanism for passing date/time
information to those systems) or /HALT to stop the CPU after loading the boot
block.
$CALC
CALCULATE expr
& expr

Calculate the value of an expression.

Binary operators:  * / + - (usual precedence)
Unary operators:   + - ^C
Primaries:         (expr) octno decno. ^Xhexno ^Rrad50no 'char
                   r0 r1 r2 r3 r4 r5 sp pc ps r0' r1' r2' r3' r4' r5'
$DEASN
DEASSIGN pdpdev

Undoes an ASSIGN command, disconnecting the specified PDP-11 device from its
assigned PC device.
$DELAY
SET DELAY device c:n c:n ...
SHOW DELAY device

SET DELAY sets the number of instructions that the specified commands appear to
take to complete on the indicated device.  The device may be DELUA, DL11,
DOSFILE, LP11, PC11, RK11D, RL11, RK611, RS03, RS04 (syn. for RS03 in this
case) RX11, RX211, RXT11, TA11, TM03, or TM11.  For each parameter "c:n", c is
the command number (meaning depends on the device), and n is the number of
PDP-11 instructions the emulator should delay before signaling completion of
that command;  both are octal unless followed by ".". c may be "*" to set the
same delay for all command numbers for the device.  SHOW DELAY shows the delays
set for each of device's commands.  See the Ersatz-11 documentation for
details.
$DEPOS
DEPOSIT addr data1 data2 ...

Deposits the specified word(s) at the specified memory address (and following
addresses if more than one data word is given), in the address space specified
by the optional switch(es).  See HELP EXAMINE for switches.
$DLL
INSTALL filename[.DLL]
REMOVE module
SHOW MODULE module

Installs, removes, or displays information about a dynamic link library, which
contains user-supplied device emulation code that may be loaded into Ersatz-11
at run time.  Not available in Lite or demo versions.
$DUMP
DUMP filename[.PDP] [A1:B1 A2:B2 ... An[:[Bn]] ]

Dumps PDP-11 memory to the specified DOS file.  Any number of address ranges
"Ai:Bi" may be given, and bytes from the specified ranges of memory are stored
in the file in the order given in the command line.  If a range has no ending
address (the colon may be omitted in this case), data are saved all the way to
the end of memory.  If no ranges are given then all of memory is dumped
starting at 000000.

DUMP {/ROM | /EEPROM} [/BANKED] filename[.PDP] [A:B]

Dumps the specified ROM or EEPROM to a DOS file.  /BANKED means the ROM is
banked and accessed through a 512.-byte window at (17)773000 or (17)765000
(using the page control register to switch banks), if you leave out the ending
address the entire banked ROM will be dumped instead of just the first 512.
bytes.
$EXAM
EXAMINE [/sw] [start [end]]

Examines (displays) the word(s) at the specified absolute memory address or
range, in the address space specified by the optional switch(es).  If only one
address is given then one word is displayed.  If nothing is given then the 8
words following the most recent EXAMINE or DEPOSIT command are displayed.  The
address space defaults to whatever was used on the most recent EXAMINE or
DEPOSIT command, or /CURRENT /DATA if none was ever given.  Switches:

/CURRENT       current virtual address space (from PSW<15:14>)
/PREVIOUS      previous virtual address space (from PSW<13:12>)
/KERNEL        Kernel mode
/SUPERVISOR    Supervisor mode
/USER          User mode
/INSTRUCTIONS  I space
/DATA          D space
/PHYSICAL      physical address space (used anyway if MMU disabled)
$FPREG
FPREGISTER [ac v1 v2 v3 v4]

Displays all FP registers, or sets the value of the specified AC (0-5) to the
specified four octal words.
$GO
GO reladdr

Starts the CPU at the specified virtual address.
$HALT
HALT

Halts the CPU immediately if it is running.
$INIT
INITIALIZE

Reinitializes all devices, disables the MMU, sets kernel mode.
$KEY
DEFINE {KEYPRESS | KEYRELEASE} key def
SHOW {KEYPRESS | KEYRELEASE} key

Defines or displays the definition of a key.  Most keys only do something when
pressed, so they have no KEYRELEASE definition, except for the Shift and Ctrl
keys which have to clear the flags that were set when they were pressed.  See
the Ersatz-11 documentation for key names and definition syntax.
$LED
DEFINE LED led flag
SHOW LED led

Specifies which keyboard flag (from the DEFINE KEYPRESS script language) is
tied to each of the three keyboard LEDs (names are CAPS, NUM, SCROLL).  OFF may
also be used to turn a keyboard LED off permanently.  SHOW LED shows an LED's
current definition.
$LIST
LIST [/sw] [addr]

Disassembles the next eight instructions starting at addr, in the address space
specified by the optional switch(es).  If either is omitted, the default is to
continue immediately after the most recent LIST command or REGISTER display
(any time a register dump is given, either from a REGISTER command or
implicitly due to a halt or STEP command, the default LIST space is set to
/CURRENT /INSTRUCTIONS).  See HELP EXAMINE for other switches.
$LOAD
LOAD filename[.PDP] [A1:B1 A2:B2 ... An[:[Bn]] ]

Loads the specified DOS file into PDP-11 memory.  Any number of address ranges
"Ai:Bi" may be given, and bytes from the file are loaded into the specified
ranges in the order they appear in the command line.  The last range may have
no ending address, in which case data are loaded until end-of-file is reached.
If no ranges are given then the file is loaded at 000000.

LOAD {/ROM | /EEPROM} [/BANKED] filename[.PDP] [A:B]

Loads the specified DOS file into a simulated ROM or EEPROM.  /BANKED means
the ROM is banked and accessed through a 512.-byte window at (17)773000 or
(17)765000 (using the page control register to switch banks).
$LOGDSK
LOG ddcu: [filename] [/APPEND]

Logs disk or tape commands to the specified controller (unit number is
insignificant), or turns off logging if no filename is given.  /APPEND means to
append to an existing log file instead of replacing it.
$LOGTTY
LOG ddcu: [filename] [/APPEND]

Logs TT: or LP: output to a file, or turns off logging if no filename is given.
/APPEND means to append to an existing log file instead of replacing it.
$LOGETH
LOG XEn: [filename] [/[NO]COMMANDS] [/[NO]RECEIVE] [/[NO]TRANSMIT] [/APPEND]

Logs ethernet events;  the switches specify which events are logged.
/[NO]COMMANDS logs (or suppresses logging of) all commands issued to a DELUA by
the PDP-11;  similarly, /[NO]RECEIVE and /[NO]TRANSMIT enable or disable
logging of received or transmitted frames.  LOG XEn: with no parameters closes
the log file, LOG XEn: with switch(es) but no filename adjusts what event types
are logged on a file which is already open.  If a log file is opened with no
switches, the default is /RECEIVE /TRANSMIT.  /APPEND means to append to an
existing log file instead of replacing it.
$MOUNT
MOUNT pdpdev dosfile /switches
MOUNT pdpdev f: /switches
DISMOUNT pdpdev

Mounts/dismounts the specified PDP-11 mass storage unit using the specified DOS
container file, or floppy drive if only "f:" is given.  Switches are /RONLY (or
/WPROTECT) and /RW (default) for disks, and drive type if ambiguous.

CTcu:   TU60 cassette tape
DLcu:   RL01/02 5/10 MB disk, /RL01, /RL02, or file size tells which
DMcu:   RK06/07 14/28 MB disk, /RK06, /RK07, or file size tells which
DScu:   RS03/04 512KB/1024KB fixed head disk, /RS03, /RS04, size tells which
DTcu:   TU56 DECtape
DXcu:   RX01 floppy disk
DYcu:   RX01/02/03 floppy disk, distinguished by MOUNT switch, SET DY: command,
        file size, or disk format if real drive is mounted
HDcu:   hypothetical disk device, compatible with "Russian" LSI-11/2 emulator
MMcu:   RH11/RH70,TM03,TE16 etc. tape drive
MTcu:   TU10 tape drive
PDcu:   RX01 floppy disk (PDT-11/150 RXT11 controller)
PP:     PC11 paper tape punch
PR:     PC11 paper tape reader
$PROC
PROCEED [breakaddr]

Restarts the CPU at the current address, optionally setting a single hard
breakpoint (i.e. not visible to software) at the specified virtual address.
$QUIT
QUIT

Exits Ersatz-11.
$REG
REGISTER [r v]
r=v
c=v

Displays the CPU general registers and disassembles the next instruction, or
sets the specified register (0-7) to the specified value if r and v are
specified.  Registers may also be set by just typing "PC=1000" etc. at the
command prompt, condition flags may be set with "C=0" etc., CPU priority may be
set with "PRIO=5" etc., and current mode and previous mode may be set with
"CM=U" etc.
$STEP
STEP [count]

Executes the specified number of PDP-11 instructions (default=1), displaying
CPU registers after each.
$SETSR
SET SWITCH n
SET SWITCH PORT n

The first command form specifies the octal value for the virtual switch
register (initially 000000), which is readable at PDP-11 address 777570.  The
second command form specifies the octal I/O address (use ^Xnnn for hex) of a
16-bit port which gives the switch register value when read using an 80x86 word
IN instruction.  Building the interface is left as an exercise to the reader.
$SETDR
SET DISPLAY NONE
SET DISPLAY PORT n
SET DISPLAY LPTn:
SET DISPLAY {DR | CDR | R0 | R1 ... | PC}

The first command specifies that no hardware display register exists (the
default condition) and that values written to PDP-11 address 777570 should be
thrown away.  The second command specifies the octal I/O address (use ^Xnnn for
hex) of a 16-bit port to which the display register value should be written
with an 80x86 word OUT instruction.  The third command specifies that the
display register should be simulated using the parallel port LED board
described in the documentation (or available from the author).  The fourth
command specifies which register is displayed on the hardware lights port
defined by either the second or third command;  DR is the default but some OSes
use R0 for their null job displays.
$SETKB
SET KEYBOARD {SWAP | NOSWAP}

Tells Ersatz-11 whether to swap the functions of the Caps Lock and left Ctrl
keys.  Useful for people who have 101-key Enhanced keyboards, and hate them.
$SETHZ
SET HERTZ {50 | 60}

Sets the actual frequency of the emulated KW11L line clock.  This should be
changed only if your software expects 50 Hz, 60 Hz is the default.
$SETSCP
SET [NO]SCOPE

Sets the style of rubout processing used with input typed to the Ersatz-11
prompt.  Mainly useful if you ASSIGN TT0: to a DECwriter (etc.) on a COM port.
SCOPE is the default.
$SETSCR
SET SCROLL {HARD | SOFT}

Sets the type of scrolling to use for video display.  HARD (the default)
scrolling works by resetting the base address of the screen and is very fast,
but may expose bugs in the video emulation in your GUI OS's DOS box, or cause
problems with TSRs that touch the screen.  SOFT scrolling works by copying the
whole screen up a line on each line feed and should work in even the most
rudimentary DOS emulation window.
$setdev
SET ddcu: parm1 [parm2...]

Sets various device-specific parameters for the specified PDP-11 device and
unit.  More than one parameter may be specified in the same command.
The possible parameters for each device type are:

CTcu:   CSR=nnnnnn VECTOR=nnn
DKcu:   CSR=nnnnnn VECTOR=nnn
DLcu:   CSR=nnnnnn VECTOR=nnn
DMcu:   CSR=nnnnnn VECTOR=nnn
DScu:   RH11 RH70 CSR=nnnnnn VECTOR=nnn
DTcu:   CSR=nnnnnn VECTOR=nnn
DXcu:   CSR=nnnnnn VECTOR=nnn
DYcu:   SS DS CSR=nnnnnn VECTOR=nnn
LPu:    CSR=nnnnnn VECTOR=nnn
MMcu_s: RH11 RH70 CSR=nnnnnn VECTOR=nnn
MTcu:   CSR=nnnnnn VECTOR=nnn
PDcu:   CSR=nnnnnn VECTOR=nnn
PR:     REWIND
RHc:    RH11 RH70 CSR=nnnnnn VECTOR=nnn
TTu:    CSR=nnnnnn VECTOR=nnn
XEu:    BOOT=DISABLE (default) or BOOT=ddcu:[/os] (to enable remote boot)
        (not yet implemented)
$SHWCSR
SHOW CSR addr

Shows the name of the CSR currently defined at the specified octal I/O page
address.
$SHWDEV
SHOW ddcu:

Shows current parameters for the specified PDP-11 device.
$UNLOAD
UNLOAD {/ROM | /EEPROM} [/BANKED] addr

Unloads a ROM or EEPROM image.
