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
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
- ASSIGN <TTY or digital I/O device> NULL: /LOOPBACK switch. Does what
- 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.