Ersatz-11 V7.3

John Wilson wilson at
Wed Mar 1 13:34:46 CST 2017

Ersatz-11 V7.3 is finished.  CDs have been mailed to users with current
update subscriptions, and the free Demo version may be downloaded from as usual.

E11 V7.3 has the following new features:

- My favorite one:  a BREAKPOINT command which accepts arbitrary boolean
  test expressions, compiles them into native x86 code (to reduce the speed
  penalty), and incorporates them (until disabled with BREAK/CLEAR) into
  the main fetch/decode loop).  Examples:

	break pc >= 2000 and pc < 3000 and @(r4+4) = 42776
	 (range of code with specified value in block pointed to by R4)

	break ci(pc)&177400 = 104000
	 (about to fetch an EMT instruction)

	break phys(14634520) <> 3044
	 (location at physical address gets changed from expected value)

  Errors at run-time are silent.  If a specified test causes a bus timeout,
  odd address trap, or division by 0, the test fails.  Well OK division by
  *constant* 0 gives an error but I just mean nothing damaging happens if
  the registers aren't pointing where you thought, etc.

- A few rare antique emulated devices:  DC11 SLU.  Basically similar to
  the DL11 (ignoring the extra CSR bits and programming it like a DL11A
  works), but it also has a settable baud rate and modem control which
  is different from how it was done on DL11s.

- Also the DM11 single-speed serial mux (not that E11 minds running each
  line at a different speed, but the original did).  It uses DMA for
  transmission but also for reception into an in-core FIFO which the
  documentation adorably calls the "tumble table".  And yes this is the
  origin of the DM11BB modem-control option more commonly used on the DH11.
  There's a new command to tell DM11BBs which to attach to (the default is
  still the DH11 with the same controller letter).

- Finally, the justifiably forgotten TR79F 1600 BPI tape controller for
  TR79 drives (really HP7970Es), which includes the parity track in core
  with each byte of tape data taking up a word, so it's a pain to program.
  But it had 1600 BPI pretty early.  The only driver I can find for the
  TR79F is in the "TRDP" version of XXDP, which is on Bitsavers as a scan
  of a microfiche of the listing.  It can be used to load the ZTRAB0
  diagnostic (the only other program I know of for the TR79F), but of
  course the test immediately trashes your boot tape.  I felt dumb.

- Driver for raw ATA/SATA/ATAPI disks (DOS and stand-alone versions).

- Driver for National Instruments PCI-DIO-96 digital I/O card (DOS and
  stand-alone versions).  It's a bad fit to emulating the DRV11/DR11C
  (ASSIGN OA: DIO96: does work but you'd have to wire up an adapter with
  buffering since the drivers are rated at only 2.5 mA) but it's probably
  the most common digital I/O board around.  Even though it's PCI (not PCIe),
  it's still made new (at great expense), but cheap used examples are

- Ability to use a digital I/O card to drive real display and switch
  registers.  Wiring up a blinky-lights board for your $25 eBay PCI-DIO-96
  is a lot easier than making one for current PC busses, even if the
  100-pin D-shell plug is a pain (but AMP makes an IDC connector that
  brings it out to two 50-pin Bergs)..

- SET HISTOGRAM command enables/disables histogram of PDP-11 opcode usage
  (which again is temporarily compiled into the main loop when enabled).
  HISTOGRAM command displays the results or saves them to a file.

- EXAMINE/DEPOSIT /BYTE /WORD /LONG /QUAD switches support various data
  types besides just words.  Finally.

- MOUNT <tape> FILE.TAP /LENGTH:n or /SIZELIMIT:nMB enables emulation of
  EOT early warning flag (giving the approximate maximum length of the
  tape in feet or megabytes).  Not generally needed (who minds an unlimited
  tape?), but some diags want to fill a tape with test data all the way
  to EOT.

- ASSIGN <TTY or digital I/O device> NULL: /LOOPBACK switch.  Does what
  you think.

- Experimental POWERFAIL command simulates power failures on command,
  or SET POWERFAIL command schedules one at shutdown (with a core dump
  to a file).  Thank you Oleg Safiullin for the idea!  Might need some
  changes -- I've never dealt with power failures on a real PDP-11.

- Dramatically improved timer precision in DOS and stand-alone versions.
  SET THROTTLE in particular is silky smooth, but this improvement affects
  many many things.

- All commands that take a time duration as a parameter will now accept a
  decimal point and/or unit suffix.  The default units are the same as in
  previous versions.  So instead of SET THROTTLE DELAY=1 (microseconds),
  you can use SET THROTTLE DELAY=1.2 or SET THROTTLE DELAY=1200NS (values
  will be rounded if needed).  I hadn't realized so many places use time
  values -- I might have missed something.

There are also many bug fixes and minor changes, but most importantly:

- WMSG.LOG file that grows and grows (in Windows versions).  Sorry about
  that!  That was supposed to be disabled in the released version.  Well
  it is now.

John Wilson
D Bit

More information about the cctech mailing list