home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Emulators / Ersatz-1.1beta / e11.doc < prev    next >
Encoding:
Text File  |  1995-03-22  |  51.9 KB  |  1,043 lines

  1.                            ERSATZ-11 BETA VERSION 1.1
  2.                             PDP-11 SYSTEM SIMULATOR
  3.                            Release date: 22-Mar-1995
  4.                     Copyright (C) 1994, 1995 by John Wilson
  5.                               All rights reserved
  6.         
  7.              E11.EXE is a beta test version of a full system emulator
  8.         for the PDP-11.  It runs on any AT-class machine with an 80186
  9.         or better CPU, and requires around 350KB of free memory.  It is
  10.         intended to boot and run any PDP-11 operating system (it has
  11.         been tested with RT-11 (all flavors), RSX-11M, RSTS/E, IAS,
  12.         2.9BSD UNIX, Fuzzball, and XXDP+;  it seems to have some
  13.         problems with VM under TSX+, and no attempt has been made to
  14.         test DOS/BATCH, MUMPS, or any flavor of UNIX other than 2.9BSD;
  15.         2.11BSD will definitely not work due to its need for "cadillac"
  16.         hardware).
  17.  
  18.         Emulated configuration:
  19.  
  20.         * PDP-11/34a CPU with selectable extensions
  21.         * FP11A floating point processor
  22.         * 248KB main memory
  23.         * RL11/RL01-02 disk drives (up to 4)
  24.         * RK611/RK06-07 disk drives (up to 8)
  25.         * RX211/RX02 or RX11/RX01 8" floppy (using image files and/or
  26.           1.2MB floppies)
  27.         * DL11 terminal ports;  console and up to 15 others (VT100,
  28.           and/or uses COM ports and/or LPT ports)
  29.         * LP11 printer ports;  up to 4 (same devices as DL11)
  30.         * PC11 paper tape reader/punch (using files)
  31.         * DELUA ethernet ports;  up to 4 (using packet drivers)
  32.         * KW11L line clock (50/60 Hz, settable)
  33.         * display register (using special hardware)
  34.  
  35.         Ersatz-11 is available by anonymous FTP from TATS.WIZVAX.NET, or
  36.         perhaps TATS.WIZVAX.COM depending on how screwed up the name
  37.         server is when you try, anyway it's 199.181.141.53.  The
  38.         directory is pub/e11, filenames e11.exe, e11.hlp, and e11.doc.
  39.         
  40.              The emulator speed depends on the application (changing MMU
  41.         registers is an expensive operation so multiuser OSes tend to
  42.         run more slowly than RT-11FB does, for example), but in general
  43.         it runs noticeably above the speed of a real PDP-11/34a (with
  44.         cache) on a 486-DX2/80.  Your mileage may vary.  It has
  45.         successfully booted and run RT-11FB on a 4.77 MHz IBM PC with a
  46.         V20 processor (80186-compatible), but it barely stayed ahead of
  47.         the clock interrupts.
  48.         
  49.              The FP11 emulation requires a math coprocessor.  If the PC
  50.         has none, then the emulated PDP-11 will have no FPP either.
  51.         Intel Pentium CPUs that have the floating point divider bug are
  52.         detected and a workaround is used to get correct results at a
  53.         slight speed penalty (for DIVF/DIVD only).
  54.         
  55.              I consider this program to be a beta test release because
  56.         there are still some reported bugs that I've been unable to
  57.         duplicate, and there are many unfinished or unstarted features
  58.         that I plan to add, most of which hinge on porting the program
  59.         to run in 80386 protected mode so as to be able to implement
  60.         22-bit addressing efficiently.  My apologies to anyone who wants
  61.         to run it on an 80286 or earlier, the final version will most
  62.         likely require a 386.  Besides, the program is growing so
  63.         rapidly that nothing has been left untouched long enough to be
  64.         considered 100% tested.  However in my own experience the
  65.         emulator has been more reliable than real PDP-11s.
  66.  
  67.         Planned additions:
  68.  
  69.         * MSCP disks.  Don't hold your breath, but it will happen
  70.           eventually in some form.  Can anyone tell me the interleave
  71.           scheme (if any) used on RX23 and RX33 disks?
  72.  
  73.         * Some kind of tape support.  ASPI, QIC-80, FILETAPE, or maybe
  74.           something else.
  75.  
  76.         
  77.              The system has been tested under the XXDP+ diagnostic
  78.         monitor.  It passes the KD11EA diagnostics DFKAA, DFKAB, and
  79.         DFKAC, and the FP11A diagnostics DFFPA, DFFPB, and DFFPC.  It
  80.         fails all MMU diagnostics due to the absence of the maintenance
  81.         mode.
  82.  
  83.  
  84.         COMMANDS
  85.         
  86.              Ersatz-11 recognizes a number of keyboard commands.  These
  87.         are entered at the "E11>" prompt, which appears when the PDP-11
  88.         is halted but may be brought up at any time by pressing
  89.         Alt-SysReq (or by pressing the BREAK key on a serial terminal if
  90.         the console terminal (TT0:)  has been ASSIGNed to a COM port).
  91.         Commands (and parameters and switches) may generally be
  92.         shortened to any unique abbreviation.
  93.  
  94.         INITIALIZATION FILE
  95.         
  96.              When E11 is first started, it looks for a file named
  97.         "E11.INI" first in the current directory, and then in the
  98.         directory where E11.EXE is located (or, it searches the PATH if
  99.         you're still running DOS V2.X).  If this file exists than a
  100.         command is read from the file each time E11 would otherwise
  101.         prompt for a user command;  input for the console DL11 still
  102.         comes from the keyboard, so the init file may be used both to
  103.         start up the system and to shut it down (E11 will continue after
  104.         the BOOT command if you type Alt-SysReq).  If a line's first
  105.         non-blank character is ';' or '!', it is treated as a comment.
  106.         Processing of the init file can be disabled by starting E11 with
  107.         the "/NOINIT" switch, and a different file may be specified
  108.         using the "/INIT:file" switch;  the default extension is ".INI"
  109.         and the above search rules apply unless the filename contains a
  110.         drive or pathname specification.
  111.  
  112.         Typical E11.INI file:
  113.         
  114.         mount dl0: rt11.dsk
  115.         ; uncomment the ASSIGN command to use a COM port for console I/O
  116.         ; (baud rate must have been initialized from DOS using a MODE command)
  117.         ;assign kb0: com3: /irq5
  118.         boot/rt11 dl0:
  119.         ; control returns to the next line when the user presses Alt-SysRq
  120.         quit
  121.         COMMAND DESCRIPTIONS
  122.         ======= ============
  123.  
  124.  
  125.         @file
  126.  
  127.         Accepts input from the specified file as if it had been typed at
  128.         the E11 prompt.  The default extension is ".CMD", and search
  129.         rules are the same as for the E11.INI initialization file.
  130.         Lines read from the file are not echoed, and indirect files may
  131.         not be nested.
  132.  
  133.  
  134.         ASSIGN ddu:  Fn
  135.         ASSIGN ddu:  COMn:  [/IRQn [/SHARE]]
  136.         ASSIGN ddu:  LPTn:  [/IRQn [/SHARE]]
  137.  
  138.         Assigns a physical PC device to emulate a particular DL11
  139.         (TT0:-TT15:)  or LP11 port (LP0:-LP3:).  The first (and possibly
  140.         only) argument after the PDP-11 device name may be either the
  141.         name of a function key F1-F12, or a serial port COM1:-COM4:, or
  142.         a line printer port LPT1:-LPT4:.
  143.  
  144.         If a function key is given, then the specified port is connected
  145.         to a simulated VT100 which can be put up on the screen by
  146.         pressing Alt and the specified function key (note that the
  147.         screens assigned to F11 and F12 are not accessible if you still
  148.         have the 84-key AT keyboard).  When one screen is being
  149.         displayed on the PC screen, the others (up to 11) are maintained
  150.         invisibly in memory, so they will be up to date when you switch
  151.         the display to them by pressing Alt and the function key for the
  152.         screen you want.
  153.  
  154.         UNTESTED FEATURE:  If there are two video adapters on the PC
  155.         (e.g.  an SVGA and a Hercules mono card), then one DL11/LP11
  156.         pseudo VT100 may be displayed on each.  The Alt-function keys
  157.         choose which of the 12 possible screens is displayed on the
  158.         primary monitor, and the Ctrl-function keys choose which is on
  159.         the secondary monitor.  Note that it is not possible to display
  160.         the same port on both monitors at once.  I no longer have such a
  161.         setup so the code is untested.
  162.  
  163.         If the name of a COM port is given, then the specified DL11/LP11
  164.         port is connected to that port.  Any IRQ from IRQ0 to IRQ15 may
  165.         be specified, or if the IRQ is omitted then IRQ4 is used for COM
  166.         ports whose I/O base address is 300h or more, IRQ3 for 2FFh or
  167.         less.  These defaults have been in use since XTs were the
  168.         standard, and most multi I/O boards will be set up this way.
  169.         However it's not uncommon with newer boards for COM3 to use IRQ5
  170.         and COM4 to use IRQ2 (or IRQ9 really, which is effectively the
  171.         same on an AT);  you will have to use the /IRQ5 and /IRQ2
  172.         switches in this case.  The /SHARE switch (the /IRQn switch is
  173.         required if /SHARE is given) means that the serial port has
  174.         special IRQ sharing hardware (as documented in the IBM AT
  175.         Technical Reference Manual) so that more than one device may use
  176.         the same IRQ at once;  this hardware is relatively rare, so if
  177.         you don't know whether you have it, you probably don't.  Note
  178.         that without this hardware it's not possible for more than one
  179.         device to be actively using the same IRQ at the same time;  so
  180.         for example if you have a mouse attached to COM1 using IRQ4 and
  181.         it has been initialized by MOUSE.COM, E11 will not be able to
  182.         use COM3 if it also uses IRQ4 (an error message will be given if
  183.         you try).
  184.  
  185.         The baud rate, number of data bits, etc.  for a COM port should
  186.         be set with a MODE command from DOS before Ersatz-11 is run.
  187.  
  188.         If the name of an LPT port is given, then the specified
  189.         DL11/LP11 port is connected to that port.  /IRQn and /SHARE may
  190.         be given as for COM ports;  the default IRQ for all LPT ports is
  191.         IRQ7.  E11's LPT handler uses interrupts;  I've seen vague
  192.         references to interrupts not working correctly with some LPT
  193.         ports, or maybe it was with some printers, but having polled I/O
  194.         as an option would be horribly slow (either printing speed or
  195.         CPU emulation or both would suffer) so it's not supported.
  196.         Interrupts work great with my brand-X LPT port and 13-year-old
  197.         NEC Spinwriter.  Trouble is most likely if you have multiple LPT
  198.         ports, since they may all try to drive IRQ7 at once.
  199.  
  200.         LPT output is passed transparently, so you'll need to make sure
  201.         that your OS and printer agree on whether lines end in <CRLF> or
  202.         just <LF>, and on whose responsibility it is to interpret tabs
  203.         and form feeds.
  204.  
  205.         Note that it is possible to ASSIGN a TT:  port to a printer, or
  206.         to ASSIGN an LP:  port to a screen.  Why you'd want to do this I
  207.         don't know but who am I to stop you.  The reason for making them
  208.         both use the same pool of devices was so that they could both
  209.         access COM ports, since serial terminals and serial printers are
  210.         both reasonable devices.  LP:  ports attached to COM ports or
  211.         screens respond to XON/XOFF flow control.
  212.  
  213.         The ASSIGN command fails if the specified COM or LPT port
  214.         doesn't exist, or if the specified (or default) IRQ is already
  215.         in use and the /SHARE switch is not given, or if you're trying
  216.         to steal TT0:'s device for some other port (there must always be
  217.         a TT0:  since that's E11's console terminal).
  218.  
  219.  
  220.         ASSIGN XEn:  PKTD[=vv] [proto1 proto2 proto3 ...]
  221.  
  222.         Assigns a packet driver to emulate the specified DELUA ethernet
  223.         port.  If specified, "vv" is the hexadecimal interrupt vector to
  224.         which the packet driver is attached.  If the interrupt vector is
  225.         not given, then the range of vectors from 20 to FF is searched
  226.         until a packet driver is found that isn't already in use by
  227.         another simulated ethernet port.  A list of hex 16-bit DIX
  228.         protocol numbers, up to ten total, may be specified, in which
  229.         case E11 asks the packet driver to pass only frames of those
  230.         types.  This may allow E11 to coexist with other protocol stacks
  231.         running on the same PC, as long as they each use different sets
  232.         of protocol numbers and neither one needs to change the station
  233.         address after the other is loaded.
  234.  
  235.         DECnet requires the ability to change the address (it wants the
  236.         station address to be based on the protocol address to avoid the
  237.         additional overhead of performing address resolution over the
  238.         network, as TCP/IP does), so in general running DECnet under E11
  239.         will require either that no other network software be running on
  240.         the PC, or that you install a second ethernet board for E11's
  241.         exclusive use.  This is because the packet driver refuses to
  242.         change the station address once the board is already in use so
  243.         as not to surprise protocol stacks that were already running
  244.         when the change was made and thought they knew the address.
  245.  
  246.         Freeware packet drivers are available via anonymous FTP from
  247.         many sources including FTP.FTP.COM.  Ersatz-11 requires packet
  248.         drivers that conform to version 1.10 or later of the packet
  249.         driver specification as published by FTP Software.
  250.  
  251.  
  252.         BOOT ddu:  [/switches]
  253.  
  254.         Boots the system from the specified disk.  The disk must have
  255.         been mounted with the MOUNT command.  The optional switch is an
  256.         OS name;  for now the only meaningful ones are /RT11 and /RSTS,
  257.         /RSX is defined too but has no effect.  This has to do with the
  258.         method used to pass time and date information to a newly booted
  259.         monitor.  RT-11 ignores the time and date passed at 005000
  260.         unless the NOP in the first word of the bootstrap is cleared to
  261.         0 (HALT) and the bootstrap is entered at 000002.  RSTS believes
  262.         the time and date at 001000 (in a different format from RT-11)
  263.         regardless of whether its NOP was nuked, but later versions of
  264.         RSTS save the first word of the bootstrap and execute it later
  265.         (anyone know why?), so they will halt if the system was booted
  266.         the RT-11 way.  Hence the need for the switch.  Note that the OS
  267.         switches are meaningful only on block devices.  If you like
  268.         typing the time and date manually (or your PC has no RTC) then
  269.         don't worry about the switch.  I don't know enough about RSX or
  270.         any other OS to set up the time/date for it, if that's even
  271.         possible;  however I am planning to add emulation of the
  272.         PDP-11/94 TOY clock if I can figure it out, then a privileged
  273.         program could read it out and set the RSX clock.
  274.  
  275.         There is also a /HALT switch, which means to go as far as
  276.         loading block 0 into core and setting up the registers, but to
  277.         stop there.  This can be handy for debugging boot blocks.
  278.  
  279.         The BOOT PR:  command expects a tape image in absolute binary
  280.         format, as produced by the "LINK /LDA" command under RT-11.
  281.  
  282.  
  283.         CALCULATE expr
  284.         (& expr is a synonym)
  285.  
  286.         Calculates the value of a 32-bit octal expression and displays
  287.         the result in octal, decimal, ASCII and radix-50.  The operators
  288.         are */+-, unary +-, and (), with the usual precedence.  Numbers
  289.         are either octal digit strings, or decimal if they contain 8 or
  290.         9 or end in ".", or hex if preceded by "^X", or radix-50
  291.         triplets if preceded by "^R";  or general register contents may
  292.         be specified using the names R0-R5 (with a "'" suffix to
  293.         indicate the other register set) or SP or PC, R$ or PS means the
  294.         process status word, and something of the form "'a" means the
  295.         ASCII value of the character "a".
  296.  
  297.  
  298.         DEASSIGN ddu:
  299.  
  300.         Disables the specified DL11 port (TTn:), LP11 port (LPn:), or
  301.         DELUA port (XEn:).  Deassigning TT0:  is not allowed (either
  302.         explicitly, or implicitly by ASSIGNing its PC device to another
  303.         PDP-11 device).
  304.  
  305.  
  306.         DEPOSIT addr val
  307.  
  308.         Deposits the word <val> at absolute 18-bit address <addr>, which
  309.         is forced even.  An error message is returned if an attempt is
  310.         made to access a nonexistent CSR in the I/O page.
  311.  
  312.  
  313.         EXAMINE addr
  314.  
  315.         Examines the word at absolute 18-bit address <addr>, which is
  316.         forced even.  An error message is returned if an attempt is made
  317.         to access a nonexistent CSR in the I/O page.
  318.  
  319.  
  320.         FPREGISTER [r v1 v2 [v3 v4]]
  321.  
  322.         Sets or displays the FPP registers.  r is the FP accumulator
  323.         number, 0-5, and v1-v4 are two or four 16-bit octal words to
  324.         write in the register (sorry, not decimal).  If no arguments are
  325.         given then the octal contents of all six ACs are given, along
  326.         with octal displays of the FPS, FEC, and FEA, and also a
  327.         bit-by-bit display of FPS.
  328.  
  329.  
  330.         GO [addr]
  331.  
  332.         Starts the machine at the specified address, or at the address
  333.         currently in the program counter if none is given.
  334.  
  335.  
  336.         HALT
  337.  
  338.         If the machine is running, halts it and displays the registers.
  339.         Otherwise a no op.
  340.  
  341.  
  342.         HELP [command]
  343.  
  344.         Explains use of Ersatz-11 commands.  Just type "HELP" for a
  345.         list.
  346.  
  347.  
  348.         INITIALIZE
  349.  
  350.         Initializes all emulated I/O devices, disables the MMU, sets the
  351.         CPU mode to "kernel."
  352.  
  353.  
  354.         LIST [addr]
  355.  
  356.         Disassembles eight instructions starting at the specified 16-bit
  357.         address (within the current I-space map) if it is given, or
  358.         otherwise at the first address following the last one
  359.         disassembled by the most recent LIST or REGISTER command.
  360.  
  361.  
  362.         LOG ddu:  [filename] [/APPEND]
  363.  
  364.         Logs all output to the specified character device (TTn:  or
  365.         LPn:)  in the specified file.  If no filename is specified, any
  366.         existing log file for that device is closed.  The /APPEND switch
  367.         means to append to an existing log file, rather than replacing
  368.         it.
  369.  
  370.  
  371.         LOG DLn:  [filename] [/APPEND]
  372.         LOG DMn:  [filename] [/APPEND]
  373.         LOG DXn:  [filename] [/APPEND]
  374.         LOG HDn:  [filename] [/APPEND]
  375.  
  376.         Logs commands sent to the RL11, RK611, or RX[2]11 controller, or
  377.         the HD_SYS.EXE pseudo-controller, to the specified file.  If no
  378.         file is specified, the current log file, if any, is closed.  The
  379.         unit number is insignificant, all commands to the controller are
  380.         logged regardless of the currently selected unit.  The /APPEND
  381.         switch means to append to an existing log file, rather than
  382.         replacing it.
  383.  
  384.  
  385.         LOG XEn:  [filename] [switches]
  386.  
  387.         Controls logging of ethernet events.  If a filename is specified
  388.         then the log file is opened.  If switches are specified they
  389.         specify what events are to be logged;  "/[NO]COMMANDS" controls
  390.         logging of port commands, "/[NO]RECEIVE" controls logging of
  391.         received frames, and "/[NO]TRANSMIT" controls logging of
  392.         transmitted frames.  The switches may be specified when the log
  393.         file is first opened, or later in LOG commands with the filename
  394.         parameter missing to change what is being logged without having
  395.         to open a new log file.  If neither the filename nor any
  396.         switches are specified, any existing log file for that device is
  397.         closed.  If no switches are specified when the file is first
  398.         opened, the default is "/RECEIVE /TRANSMIT".  In addition, the
  399.         /APPEND switch means to append to an existing log file, rather
  400.         than replacing it.
  401.  
  402.  
  403.         MOUNT devu:  path/filename.ext [/switches]
  404.  
  405.         Mounts the specified DOS file on the specified PDP-11 disk drive
  406.         (DL0:-DL3:, DM0:-DM7:, DX0:-DX1:, HD0:-HD7:);  that is, PDP-11
  407.         reads and writes to that drive access the specified file, which
  408.         is a byte-by-byte image of a disk, which you presumably loaded
  409.         from a real PDP-11 using Kermit or DECnet or some equivalent, or
  410.         built using FLX.EXE or RT11.EXE or PUTR.COM.
  411.  
  412.         For DL:, the drive is set up to emulate an RL01 or RL02
  413.         depending on the size of the file;  each drive is set
  414.         separately, so you can have a mix of RL01s and RL02s.  The
  415.         /RONLY switch has the same effect as pressing the WRITE PROT
  416.         button on a real drive (/WPROTECT is a synonym).
  417.  
  418.         For DM:  things are similar to DL:, each of the 8 drives can be
  419.         either an RK06 or RK07 depending on the file size.  /RONLY works
  420.         as above.
  421.  
  422.         For DX:  (DY:  is a synonym), the drive is set up to emulate an
  423.         RX01, RX02, or RX03 disk depending on the size of the file or
  424.         whether the /SSSD, /SSDD etc.  switch was given.  The file size
  425.         is also used to determine whether the file is a block-by-block
  426.         image of the PDP-11 floppy starting at logical block 0 (such as
  427.         one gotten by using Kermit to read the disk under a PDP-11 OS),
  428.         in which case the interleave needs to be un-done since the
  429.         PDP-11 device handler will re-do it;  or a sector-by-sector
  430.         image starting at track 0, side 0, sector 1.  The latter format
  431.         yields a slightly larger file because the PDP-11 floppy device
  432.         handlers skip track 0 (something to do with proposed ANSI
  433.         compatibility that never materialized as far as I know).
  434.  
  435.         A second option for DY:  is to give the name of a 1.2MB floppy
  436.         drive instead of the name of a DOS image file, i.e.  A:  or B:.
  437.         Accesses to that RX02 unit will be redirected to the specified
  438.         floppy drive (and there's no need to re-MOUNT the drive when you
  439.         change disks) using a 26-sector format equivalent to that of a
  440.         real 8" disk drive.  In fact, if you somehow connect an 8" drive
  441.         to your PC floppy controller then it should be able to handle
  442.         RX01 media directly (I haven't had an opportunity to test this
  443.         though).  DEC's MFM format is weird so RX02 disks wouldn't be
  444.         compatible.  The RX211 "set density" command is implemented as a
  445.         full format, so you can format the weird 1.2MB disks using
  446.         FORMAT.SAV or SPEC%() or whatever you'd use on your real PDP-11.
  447.         Two problems:  (1) On a 1.2MB 5.25" drive the index hole is in
  448.         the same place for SS and DS media (8" drives use the index hole
  449.         to tell them apart) so E11 decides whether to report the disk as
  450.         double-sided by depending on the /SSxx or /DSxx switches to the
  451.         MOUNT command (/SSDD is the default);  the program detects disk
  452.         density changes like a real RX211 (well, more or less,
  453.         occasionally it takes a few tries to notice a change because the
  454.         PC controller doesn't have a "wrong density" error flag, it's
  455.         not that simple with IBM-style MFM) but still needs to be told
  456.         if the number of sides changes.  (2) Many, if not most, PC
  457.         floppy controllers have broken single density modes (the PC BIOS
  458.         is hard coded for double density so no one cares), so
  459.         FORMAT/SINGLE or anything else to do with actual single-density
  460.         media may not work on your PC.  FDC chips made by SMC are known
  461.         OK (FDC37C65LJP for one, the kind that takes one 16/32MHz xtal
  462.         and one 9.6MHz one), as are at least some by Goldstar.  In my
  463.         testing Intel's 82077 can't write SD disks but seems to be able
  464.         to read them with some retries;  according to the data sheets
  465.         for the NS PC8477B (which is supposed to be compatible) this is
  466.         because the chip requires an external pin (MFM) to be grounded
  467.         to enable SD mode, and for normal AT use it would be reasonable
  468.         to let it float high (required by RESET mode ID anyway) so I
  469.         imagine that's what most designers do.
  470.  
  471.         An HD:  device exists for compatibility with the HD_SYS.EXE
  472.         hypothetical hard disk device in the demo version of the
  473.         so-called "Russian" PDP-11/03 emulator.  This way E11 can boot
  474.         RT11SJ images built for that program (you should type SET HZ 50
  475.         before booting them).  It supports up to eight units of
  476.         arbitrary sizes.  I have written an RT-11 device handler for
  477.         this device (not based on the Russian one, some extensions were
  478.         necessary for future compatibility with planned upgrades to E11)
  479.         with files up to 32MB, and Eduard Vopicka is working on one for
  480.         RSX-11M with a higher limit;  it is intended that this device
  481.         act as a stopgap for handling variable sized image files of
  482.         varying sizes until the MSCP emulation code is completed.  If
  483.         you want to write a driver for some other OS let me know and
  484.         I'll get around to documenting the device.
  485.  
  486.         *** IMPORTANT NOTE ***
  487.         The simulator has no control over any caching of disk writes
  488.         that DOS may do, so it is important that you QUIT out of the
  489.         simulator to make sure all the pseudo-disk files get closed
  490.         properly, rather than simply switching the computer off, after
  491.         shutting down your PDP-11 OS.  Otherwise there is no guarantee
  492.         that all data written to disk by the PDP-11 has really made it
  493.         onto the DOS disk (in practice I've had no problems, but trouble
  494.         is theoretically possible so you've been warned).  But, the
  495.         RX211 1.2MB floppy emulation controls the hardware directly (in
  496.         fact it even intercepts INT 13h to keep DOS's fingers out of
  497.         things so you can't crash the machine by trying to MOUNT an
  498.         image file located on a DOS floppy while 1.2MB floppy emulation
  499.         is active) so as long as the PDP-11 is done with the disk it's
  500.         OK to take it out of the drive.
  501.  
  502.         Also, the simulator has no control over "Green PC" BIOSes which
  503.         spin down hard drives after a specified period of inactivity.
  504.         When E11 accesses the drive after it's been shut down, the BIOS
  505.         will pause several seconds while it spins the drive back up.
  506.         During this period E11 is not running, so the simulated PDP-11
  507.         may drop incoming characters (but maybe not, E11 maintains a
  508.         small FIFO buffer on each line) and its clock will lose a few
  509.         seconds.  If this is a problem you may have to disable this BIOS
  510.         feature.  If anyone knows of a way for E11 to handle spinning
  511.         the drive up asynchronously after a timeout, without confusing
  512.         the BIOS, I'd love to hear about it, what little APM
  513.         documentation I have appears to be wrong, at least from my
  514.         testing (that and/or my BIOS is broken).  That way the PDP-11
  515.         could keep running and it would just see a slow disk transfer
  516.         once in a while.
  517.  
  518.  
  519.         MOUNT PP:  file
  520.  
  521.         Mounts the specified file to receive output sent to the PC11
  522.         high speed paper tape punch.  The default extension is ".PAP".
  523.  
  524.  
  525.         MOUNT PR:  file
  526.  
  527.         Mounts the specified file to provide input read from the PC11
  528.         high speed paper tape reader.  The default extension is ".PAP".
  529.  
  530.  
  531.         PROCEED [break]
  532.  
  533.         Continues PDP-11 execution at the address currently in the
  534.         program counter.  If <break> is specified, then it is the
  535.         virtual address of a single hard breakpoint, where the PDP-11 is
  536.         guaranteed to stop if an instruction fetch is attempted starting
  537.         at that address, regardless of what mode the computer is
  538.         executing in, and regardless of whether the contents of that
  539.         location have changed since the breakpoint was set.  This can be
  540.         handy for tracing code that hasn't been loaded yet.  Note that
  541.         hard breakpoints and single stepping with the STEP command
  542.         interfere with the operation of the CPU T bit, so don't combine
  543.         them with a debugger (or CPU traps diagnostic program) running
  544.         on the PDP-11 or you'll get strange behavior.
  545.  
  546.  
  547.         QUIT
  548.  
  549.         Exit the simulator, closing all image and log files and
  550.         resetting all devices that were in use.
  551.  
  552.  
  553.         REGISTER [r val]
  554.  
  555.         If <r> and <val> are given, sets register <r> (0-7) in the
  556.         current register set to contain <val>.  Otherwise displays the
  557.         values of all eight registers, the condition codes, the current
  558.         and previous processor modes, and the current interrupt priority
  559.         level.  Note that the only way to set the PSW value is by
  560.         depositing it into location 777776.
  561.  
  562.  
  563.         SET CPU item [item...]
  564.  
  565.         This command changes the emulated CPU type, either by changing
  566.         to a new model all at once, or on a feature-by-feature basis.
  567.         SET CPU 34A sets the emulation to be 11/34a compatible, SET CPU
  568.         35 sets it to be 11/35 compatible (mostly -- the 11/20-style
  569.         weirdness with MOV SP,-(SP) pushing the decremented SP, etc.  is
  570.         not emulated).  EIS and NOEIS tell whether the EIS instructions
  571.         exist, FPP and NOFPP turn the FPP emulation on or off (it's
  572.         permanently off if your PC has no 80x87), and MXPS and NOMXPS
  573.         enable/disable the MFPS and MTPS instructions.
  574.  
  575.         There are many other items but they correspond to features that
  576.         either don't exist yet (so even though they appear in SHOW CPU
  577.         you get an error message when you try to turn them on), or
  578.         haven't had serious testing.  If you want to try them please let
  579.         me know how it turns out, I believe they work, but it wouldn't
  580.         be fair to claim I'm sure, that's why this is a beta release.
  581.  
  582.         CPUERR    CPU error register.
  583.         CSM       CSM instruction (requires SUPMODE to work).
  584.         DSPACE    Split I/D space.
  585.         DUALREGSET  Dual register set.
  586.         MMTRAPS   11/45,55,70-style memory management traps, 3-bit ACF.
  587.         PIRQ      11/45-style 7-level software interrupts.
  588.         SPL       SPL instruction.
  589.         SUPMODE   Supervisor mode.
  590.         TSTSET    J-11 TSTSET, WRTLCK instructions.
  591.  
  592.         This gives you the ability to roll your own CPU, which may not
  593.         correspond to any actual existing PDP-11 model.  This may annoy
  594.         your OS, and changing CPU types while running will almost
  595.         definitely startle it.  Anyway SHOW CPU will show you what
  596.         you've done.  The list of configurable features will grow in
  597.         future versions to include more actual PDP-11 models, this is
  598.         just what I have now.
  599.  
  600.  
  601.         SET DELAY device c1:n1 c2:n2 ...
  602.  
  603.         Sets the number of instructions that the specified command
  604.         opcodes appear to take to complete on the indicated device.  The
  605.         device may be DELUA, DL11, LP11, PC11, RL11, RK611, RX11, or
  606.         RX211 (synonym for RX11).  There may be an arbitrary number of
  607.         parameters of the form "c:n" or "c=n", where c is the opcode for
  608.         the command and n is the number of PDP-11 instructions to delay
  609.         before signaling completion of the command.  Both numbers are
  610.         octal by default, but may be specified in decimal if they
  611.         contain the digits 8 or 9, or if they're terminated with "."
  612.         (actually any expression that would work with the CALCULATE
  613.         command works here).
  614.  
  615.         The reason that device commands, such as "read sector" on an
  616.         RX02, or "transmit character" on a DL11, delay signaling
  617.         completion (by raising the "ready" flag and/or triggering an
  618.         interrupt) instead of completing right away (which would seem
  619.         natural in an emulator) is that some OS software contains
  620.         assumptions that at least a certain number of instructions are
  621.         guaranteed to be executed before a device is able to interrupt,
  622.         even when interrupts from that device are enabled.  The default
  623.         interrupt delays are set for the "worst case", so that each one
  624.         is long enough to avoid any known (or suspected) problems with
  625.         DEC OS software.  The SET DELAY command may be useful in cases
  626.         where your OS needs a longer delay than the default, or in cases
  627.         where your OS's treatment of a device is "clean" and you can
  628.         gain a noticeable I/O speed increase by setting all the delays
  629.         for that device to 1, or in cases where you're debugging OS
  630.         software and want to test against variety of interrupt rates.
  631.         If this means nothing to you, you can safely forget about it,
  632.         this command is intended mainly for advanced users.
  633.  
  634.         Note that some devices don't have command opcodes per se, but
  635.         the SET DELAY command syntax requires one anyway for
  636.         consistency.  On DL11 SLUs, opcode "0" refers to the delay
  637.         between reading a character from the receiver buffer, and
  638.         getting the interrupt for the next character (only if it's the
  639.         second or later character of a function key sequence on an
  640.         emulated VT100, all other keyboard interrupts correspond to
  641.         actual asynchronous events);  and opcode "1" refers to the delay
  642.         between writing a character to the transmitter buffer, and
  643.         getting the completion interrupt (for emulated VT100s;  COM and
  644.         LPT ports use real completion interrupts).  Similarly, PC11
  645.         opcode "0" refers to how long it takes to read a character from
  646.         paper tape, and opcode "1" refers to how long it takes to write
  647.         one.  An LP11 has only one opcode, which is "0" and corresponds
  648.         to the same thing as opcode "1" of a DL11.  An RK611 has only
  649.         opcodes 0-17, but the SET DELAY command defines an opcode "20"
  650.         which refers to the delay between the interrupt that
  651.         acknowledges reception of a head movement command (which is
  652.         itself delayed), and the ATTN interrupt which signals completion
  653.         of the head movement.
  654.  
  655.  
  656.         SET DISPLAY NONE
  657.         SET DISPLAY PORT n
  658.         SET DISPLAY LPTn:
  659.  
  660.         If PORT is specified, specifies the octal 80x86 I/O address of a
  661.         word port which when written as a word, sets the 16-bit display
  662.         register.  Building the trivial hardware to support this is left
  663.         as an exercise to the reader.
  664.  
  665.         If a PC LPT port name is given, it specifies a port which has a
  666.         multiplexed LED board plugged into it, and E11 will refresh each
  667.         half on alternate 60Hz (50Hz) clock ticks;  there's a little
  668.         flicker but it works and requires no chips or power supply, just
  669.         build your board so that the D0-D7 lines (pins 2-9 of the DB25)
  670.         drive the anodes of the both the D0-7 and D8-15 LEDs (through
  671.         the same set of eight 100 ohm resistors since only one set of
  672.         LEDs will have their cathodes grounded at a time).  Then add two
  673.         NPN switching transistors (2N3904 etc.)  with the emitters
  674.         grounded (pin 25), the collectors connected to the cathodes of
  675.         all 8 LEDs for that byte, and the bases connected through a 1K
  676.         current limiting resistor to either /STROBE (pin 1) for the
  677.         D0-D7 LEDs or /INIT (pin 16) for the D8-D15 LEDs.  A bare PCB
  678.         board is available from the author at cost ($14.68 plus shipping
  679.         for the current batch, 12/94).
  680.  
  681.         If NONE is specified, then the current DR value is available
  682.         only from the SHOW DISPLAY command (the default condition).
  683.  
  684.  
  685.         SET DISPLAY {DR | R0 | PC}
  686.  
  687.         Sets what register is displayed on a hardware LED display
  688.         register (either the parallel port kind described above or the
  689.         kind that plugs into a bus slot and is addressed by a word OUT
  690.         instruction).  By default the DR is displayed (i.e.  the last
  691.         word written to 777570), but R0 or the PC may be selected
  692.         instead, since the null jobs in some operating systems display a
  693.         pattern in R0 (and the PC in some cases) during a WAIT
  694.         instruction.  The pattern may be used to get a rough idea of
  695.         system load, and the R0/WAIT method was a standard way to
  696.         display a number on the PDP-11/70.  For completeness, registers
  697.         R1-R5 or SP may be selected too.
  698.  
  699.  
  700.         SET FLOPPY RX[2]11
  701.  
  702.         Sets the type of floppy controller that will be emulated.  This
  703.         command is necessary because the RX11 and the RX211 use the same
  704.         CSR and vector addresses, otherwise E11 could just emulate one
  705.         of each.  The default is RX211 (with a so-called "RX03" drive);
  706.         the RX11 is inferior in every way to the RX211 (and probably
  707.         doesn't work with your floppy controller anyway so you'll be
  708.         stuck with image files) so normally you wouldn't use this
  709.         command, but if you're trying to boot something that expects an
  710.         RX11 (e.g.  an RT-11 distribution with RX01 boot blocks) you'll
  711.         need this command since the RX211 is not software-compatible
  712.         with the RX11 (although it's very similar).
  713.  
  714.  
  715.         SET HERTZ {50 | 60}
  716.         SET HZ {50 | 60}
  717.  
  718.         Sets the frequency of the KW11L line clock (startup default is
  719.         60);  Ersatz-11 reprograms the PC timer chip for this rate to
  720.         simulate line time clock interrupts, and then maintains a count
  721.         in software so that it knows when to trigger BIOS 18.2 Hz
  722.         interrupts;  there is some jitter due to the BIOS interval being
  723.         rounded down to the previous KW11L interrupt, but there is no
  724.         cumulative error so the DOS clock is still correct when you exit
  725.         out of E11.
  726.  
  727.  
  728.         SET KEYBOARD [NO]SWAP
  729.  
  730.         SWAP sets the keyboard handler to exchange the functions of the
  731.         Caps Lock and left Ctrl keys for people who (understandably)
  732.         don't like the IBM Enhanced Keyboard.  NOSWAP sets the handler
  733.         back so that the keys work as marked.
  734.  
  735.  
  736.         SET [NO]SCOPE
  737.  
  738.         Sets whether the console terminal is a scope or a hardcopy
  739.         terminal, for the purpose of handling rubout characters typed at
  740.         the "E11>" prompt.  Mainly useful if the console is redirected
  741.         to a COM port with a DECwriter (etc.)  plugged into it.  Also
  742.         determines whether typing ^L at the command prompt will attempt
  743.         to clear the screen.
  744.  
  745.  
  746.         SET SCROLL {HARD | SOFT}
  747.  
  748.         Selects the mechanism used for video scrolling.  HARD scrolling
  749.         offers superior performance (it works by programming the video
  750.         board(s) to change the start address of the screen each time a
  751.         full-screen scroll is needed), but may expose problems in video
  752.         virtualization in GUI DOS boxes, or cause problems with TSRs
  753.         that use the display.  SOFT scrolling does things the slow
  754.         obvious way, by copying the whole screen a line up on each line
  755.         feed, and ought to work with anything.  HARD scrolling is the
  756.         default;  you should try putting SET SCROLL SOFT in your E11.INI
  757.         file if your display goes nuts a screen or so into each
  758.         attempted E11 session.
  759.  
  760.  
  761.         SET SWITCH n
  762.         SET SWITCH PORT n
  763.  
  764.         If PORT is specified, specifies the octal 80x86 I/O address of a
  765.         word port which when read as a word, gives the current 16-bit
  766.         switch register value.  Otherwise (PORT not specified), sets the
  767.         value of the emulated SR to the octal number n.
  768.  
  769.  
  770.         SET LPn:  CSR=nnnnnn VECTOR=nnn
  771.  
  772.         Sets the octal CSR and/or vector addresses for the specified
  773.         LP11 port (values will be saved for use when the port is created
  774.         using ASSIGN if it doesn't currently exist, otherwise effect is
  775.         immediate).
  776.  
  777.  
  778.         SET PR:  REWIND
  779.  
  780.         Rewinds the file currently MOUNTed on PR:  (the PC11 reader) so
  781.         that subsequent input will start over at the beginning of the
  782.         file.
  783.  
  784.  
  785.         SET TTn:  CSR=nnnnnn VECTOR=nnn
  786.  
  787.         Similar to SET LPn:, but for DL11 ports.
  788.  
  789.  
  790.         SET XEn:  BOOTSTRAP=DISABLE
  791.         SET XEn:  BOOTSTRAP=ddu:[/os]
  792.  
  793.         Selects whether incoming MOP boot frames will be honored.
  794.         Default is DISABLE.  If a device (and optional OS switch) is
  795.         specified, incoming boot packets will act as a keyboard BOOT
  796.         command with those parameters.  Remote booting is not yet
  797.         supported, so this command has no visible effect yet.
  798.  
  799.  
  800.         SHOW CPU
  801.  
  802.         Shows emulated CPU type, along with breakdown of features, as
  803.         well as the CPU type of the host processor (and whether the
  804.         Pentium FDIV bug is present).
  805.  
  806.  
  807.         SHOW DELAY device
  808.  
  809.         Shows the currently active list of interrupt delay counts for
  810.         the specified device, starting with the delay for opcode number
  811.         0.  See SET DELAY for details.
  812.  
  813.  
  814.         SHOW MMU [ {KERNEL | SUPERVISOR | USER} [INSTRUCTION | DATA] ]
  815.  
  816.         Shows the current mapping for the specified space.  Defaults are
  817.         kernel and instruction space.
  818.  
  819.  
  820.         SHOW ddu:
  821.  
  822.         Shows the configuration of the specified device;  this is the
  823.         function key or COM/LPT port, CSR and vector if it's a DL11 or
  824.         LP11 port, or the disk type and write protect flag for disks, or
  825.         the station addresses and portal types for ethernet ports.
  826.  
  827.  
  828.         STEP
  829.  
  830.         Executes a single instruction step and displays the updated
  831.         registers.
  832.         HISTORY:
  833.  
  834.         V0.8 BETA, 29-Mar-1994;  initial release.
  835.  
  836.         V0.9 BETA, 05-Jul-1994;  many bug fixes (mainly trap handling,
  837.         MMU emulation, DIV instruction, and VT100 reverse video), added
  838.         RX211 emulation, multiple DL11s, and 50 Hz KW11L mode.
  839.  
  840.         V1.0 BETA, 14-Nov-1994;  more bug fixes, added FP11A,
  841.         RK611/RK06-07, LP11, D-space, and supervisor mode emulation.
  842.         Also CALC, HELP, INIT, LOG, SET/SHOW CPU, SET DR LPTn:, SET
  843.         SCROLL, SHOW MMU commands, VT100 graphics/underline, changed to
  844.         .EXE file (ran out of space in unified code/data segment in .COM
  845.         file).
  846.  
  847.         V1.1 BETA, 22-Mar-1995;  still more bug fixes (IAS finally
  848.         works), DELUA ethernet emulation, disk LOGging, indirect command
  849.         files, workaround for Pentium FDIV bug, help text moved to file,
  850.         Russian HD:  device (and RT-11 driver), PC11, display general
  851.         registers on parallel port LED board.
  852.  
  853.  
  854.  
  855.         NOTES:
  856.  
  857.         This program is dedicated to RSTS V7.0-07 Digby's Bitpile.
  858.         Ad Majorem Digby Gloriam.
  859.  
  860.         INTERRUPTS:
  861.         The interrupt system ended up having to be a little weird, due
  862.         to some shameful assumptions in DEC OSes (mainly RSX and RT-11
  863.         SJ) about how many instructions are guaranteed to be executed
  864.         after writing a command to a device CSR, before the device will
  865.         complete the operation and interrupt.  Since MS-DOS doesn't
  866.         support asynchronous I/O (unless you go to extremes which
  867.         wouldn't have made sense in a CPU hog like an instruction set
  868.         simulator), it's natural to have all emulated device I/O appear
  869.         to the PDP-11 to be instantaneous (not really, the PC takes a
  870.         break between PDP-11 instructions to do the transfer), with the
  871.         completion interrupt occurring on the instruction following the
  872.         one that started the transfer.  Unfortunately this catches some
  873.         OS code with its pants down;  in my testing, RSX appeared to
  874.         issue WAIT instructions for TTY output which was assumed not to
  875.         have completed yet a few dozen instructions after writing a
  876.         character to a DL11 (thus hanging the system), and similarly the
  877.         RT-11 SJ (but not FB/XM) keyboard interrupt service routine runs
  878.         with interrupts enabled on the assumption that another keyboard
  879.         interrupt couldn't possibly happen before the current ISR
  880.         finishes (when this does happen the ISR recurses and the
  881.         characters are put in the buffer in reverse order, which was
  882.         happening with VT100 keypad keys in E11).  My solution to these
  883.         problems was to put in a queueing system, so that the interrupt
  884.         (and in some cases the transfer itself) doesn't occur until a
  885.         set number of instruction fetches (which in most cases I set on
  886.         the order of hundreds) after the instruction that started the
  887.         transfer.  This slightly slows down I/O, and at some point I may
  888.         add commands to make each of the delays settable, for tuning in
  889.         cases where my hard-coded delays turn out not to be enough, or
  890.         cases of "clean" code which makes no assumptions in which case
  891.         things can be sped up by setting the all delays to 1.  I'd be
  892.         interested to see how these OSes handle really fast serial lines
  893.         on actual slow PDP-11s.  All of this applies to disks too,
  894.         although I haven't run into any cute problems yet of code that
  895.         executes within a buffer that a disk is reading to and counts on
  896.         the CPU's ability to "outrun" the disk and JMP out in time;  but
  897.         just to be safe the disk code delays actually doing the transfer
  898.         until it's about to post the interrupt anyway.  RK06/07 seek
  899.         attentions are delayed still further beyond acknowledging the
  900.         seek command so as not to confuse overlapped seek drivers;
  901.         however you'll get faster results using a non-overlapped driver
  902.         if one is supplied with your OS.  Since usually all your
  903.         emulated disks are on one physical DOS disk with one head
  904.         carriage, there's nothing to overlap anyway.
  905.  
  906.         KEYBOARD:
  907.         The keypad layout may take a little getting used to but it's
  908.         intended to be familiar if your fingers are already comfortable
  909.         using KED or EDT on a real VT100;  just don't look at it.  The
  910.         digits and '.' key work as marked in Num Lock mode (otherwise
  911.         only the arrows work).  The keys around the top and right edges
  912.         of the keypad are *not* as marked, but correspond to the
  913.         PF1-PF4, hyphen, comma, and ENTER keys of the VT100 (the comma
  914.         key is missing unless you have an 84-key AT keyboard;  Northgate
  915.         Omnikey 102 keyboards have an = key where the VT100 comma
  916.         belongs but unfortunately it transmits the same scan code as the
  917.         =/+ key on the main keyboard so E11 can't use it as a comma).
  918.         To get the normal function of the Num Lock key (and Esc, Scroll
  919.         Lock, and Sys Req on an 84-key AT keyboard), press Alt, Ctrl, or
  920.         Shift at the same time.  The keypad hyphen, comma, ENTER, and
  921.         period keys are also available as F6, F8, F10, and F9 keys.
  922.         Backspace is CTRL/H, line feed is CTRL/J.
  923.  
  924.         DISK IMAGES:
  925.         Getting a snapshot of a bootable disk for your OS into a huge
  926.         DOS file is Your Problem, I don't want to get involved in
  927.         pirating software from a company whose legal department is
  928.         probably bigger than any *company* I've ever worked for.  BTW,
  929.         my local (Albany, NY) DEC office has no conceptual problem with
  930.         selling a real license for a PDP-11 that doesn't really exist.
  931.         Anyway I used Kermit to slurp the disk images out of a real
  932.         PDP-11, and I've heard of people using Process Software TCP/IP
  933.         with a live PDP-11, or DECnet and Pathworks, or Mark Aitchison's
  934.         RT11.EXE (a fine program) with an RX50 distribution kit.
  935.  
  936.         PUTR.COM, a companion program to E11, is available by anonymous
  937.         FTP from TATS.WIZVAX.COM, in the pub/putr directory and knows
  938.         how to read and write RT-11 format volumes on a variety of
  939.         media, as well as how to read RSTS/E and OS/8 formats.  It can
  940.         write blank container files with the serial numbers and (empty)
  941.         bad block files filled in correctly, which can be useful with
  942.         any OS.
  943.  
  944.         Paul Koning (former RSTS developer) has written a very nice
  945.         program named "flx" for manipulating files in RSTS disk images,
  946.         among other things it can build a bootable disk given the files
  947.         from [0,1].  It's available from FTP.UPDATE.UU.SE in
  948.         pub/pdp11/rsts/utils/flx and is written in portable C, so it can
  949.         be used with any emulator (or with real disk packs on a VAX).  A
  950.         DOS executable is included with the sources.
  951.  
  952.         *** WATCH OUT ***
  953.         The RT-11 DL:  and DM:  device handlers expect to find a bad
  954.         block replacement table in block 1 of a disk.  If something else
  955.         is there (like the pack label in Files-11 and RDS 1.1 and later,
  956.         or the MFD in RDS 0.0), they will replace blocks at random and
  957.         you'll get a corrupted disk image (yes, I'm sure :-).  So either
  958.         hack your Kermit (etc.)  to use the appropriate .SPFUN instead
  959.         of .READ, or don't use RT-11 to read non-RT-11 disks.
  960.  
  961.         HOST SYSTEMS:
  962.         "Why didn't you write a version to run on the {machine} under
  963.         {OS}?"  The program is written entirely in 80x86 assembly
  964.         language (over 28,000 lines);  porting the devices, debugger,
  965.         interrupt system etc.  to another architecture would be
  966.         straightforward but the instruction set processor depends
  967.         heavily on similarities between the 80x86 and the PDP-11 (most
  968.         notably byte order and the condition flags;  correcting the byte
  969.         order and/or deriving condition flags "by hand" on another
  970.         machine would be very inefficient).  The FP11 simulation
  971.         likewise relies heavily on the 80x87 data formats.  Also the
  972.         VT100 emulator gets pretty intimate with the video hardware.  So
  973.         it seems a little unreasonable for you to ask me to spend months
  974.         MORE for no pay, writing the whole thing over again for your
  975.         machine, just to save you paying a couple of hundred bucks for
  976.         some cheesy mono 486DLC machine if you don't already have one.
  977.         Of course, if someone with a financial interest in keeping
  978.         PDP-11 code alive at above full speed wants to donate an Alpha
  979.         or PowerPC system to motivate me to port the whole mess to it,
  980.         that's another story!
  981.  
  982.         Meanwhile, if what you want is a UNIX-based PDP-11 emulator in
  983.         C, three (or more?)  have already been released, by Bob Supnik
  984.         of DEC (J-11, in /pub/mbg/simulators on FTP.STD.COM), Eric
  985.         Edwards of RIT (11/40?  /pub/csh/mag/pdp.tar.Z on
  986.         FTP.CSH.RIT.EDU) and der Mouse of McGill (FP-less J-11?
  987.         /pub/people/mouse/pdp11 on FTP.CIM.MCGILL.CA).  You'll need a
  988.         faster machine to get the same results, but at least you get
  989.         portable source code.
  990.  
  991.         SOURCES:
  992.         At this time I am not making a public release of the source
  993.         code, because it contains proprietary code from a possible
  994.         forthcoming commercial product.  Also the program is changing
  995.         rapidly and I like having all the bugs where I can see them.
  996.  
  997.         COPYRIGHT NOTICE:
  998.         Ersatz-11 is Copyright (C) 1994, 1995 by John Wilson.  All
  999.         rights reserved.  Distribution of this document and/or the
  1000.         E11.EXE executable file, in unmodified form, without charge, is
  1001.         allowed without restriction.  Anything else is strictly
  1002.         forbidden unless you contact me to work something out first.
  1003.  
  1004.         ACKNOWLEDGMENTS:
  1005.         That should cover most of the important stuff.  A lot of stuff
  1006.         has gone right since the initial beta release, mostly thanks to
  1007.         input either from people who have experience with PDP-11
  1008.         emulation (Bob Supnik at DEC and Alan Sieving at QED), or from
  1009.         people who have helped me debug Ersatz-11 with their
  1010.         configuration (many people, Frank Borger's (U.  Chicago) efforts
  1011.         with RT-11SJ and IAS have been particularly impressive, as have
  1012.         Paul Koning's (Chipcom) insights into RSTS and Eduard Vopicka's
  1013.         (Prague University of Economics) help with RSX).
  1014.  
  1015.         FEEDBACK:
  1016.         I would really appreciate continued feedback on the program,
  1017.         good and bad;  bad news is usually more useful (I'm very eager
  1018.         to fix bugs, but I have to find them first), but I'm always
  1019.         happy to hear that things work right too, especially if you've
  1020.         gotten it working with an OS that hasn't been tried before, or
  1021.         if you've found a novel way to bootstrap a PDP-11 OS onto your
  1022.         PC.  Also I'd be very interested in hearing suggestions for
  1023.         improvements (besides the obvious 22-bit addressing).
  1024.  
  1025.         AS ALWAYS, MAKE A BACKUP OF ANYTHING YOU'D REGRET LOSING BEFORE
  1026.         RUNNING THIS PROGRAM.  Yeah I know you won't (I didn't) but
  1027.         think about how you'll feel if something important gets
  1028.         destroyed...  Anyway once you're set up it's a nice change being
  1029.         able to throw a couple of dozen RL02 images on a QIC-80 tape for
  1030.         safekeeping, might as well do your other data the same favor.
  1031.  
  1032.  
  1033.         John Wilson
  1034.         11 Bank Street
  1035.         Troy, NY  12180
  1036.         USA
  1037.         +1 (518) 271-1982
  1038.         
  1039.         wilsonj@rpi.edu           (most likely not to change soon)
  1040.         wilson@tats.wizvax.com    (unless the hostname changes again)
  1041.         John_Wilson@MTS.RPI.EDU   \
  1042.         USERHA8G@RPITSMTS.BITNET  / (going away 06/30/95)
  1043.