Discussion:
running 2.11BSD on e11
(too old to reply)
Walter F.J. Müller
2022-07-20 10:47:16 UTC
Permalink
I've a bunch of PDP-11 operating system disk sets that happily run on the SimH PDP-11 emulator. Recently, I tried to run them on the Ersatz-11 e11 emulator too. All fine for DEC OS and Unix V7. But for 2.11BSD I only get garbage on the console because 2.11BSD uses the parity bit on tty output. For SimH is use

set tto 7b
set dlo0 7b

to clear the MSB for console output. I couldn't find an equivalent option for the e11. What is a proper e11 configuration for starting 2.11BSD ?
Johnny Billquist
2022-07-20 13:15:42 UTC
Permalink
Post by Walter F.J. Müller
I've a bunch of PDP-11 operating system disk sets that happily run on the SimH PDP-11 emulator. Recently, I tried to run them on the Ersatz-11 e11 emulator too. All fine for DEC OS and Unix V7. But for 2.11BSD I only get garbage on the console because 2.11BSD uses the parity bit on tty output. For SimH is use
set tto 7b
set dlo0 7b
to clear the MSB for console output. I couldn't find an equivalent option for the e11. What is a proper e11 configuration for starting 2.11BSD ?
First of all, you should update your 2.11BSD system to something fairly
recent in patch level, where the parity of serial lines, and the
specifically the console, have been fixed. ;-)

But for the rest, it's in the manual:

SET TT0: MODE=2400,E,7,1

would set the console to 2400 bps, 7 bits, even parity and one stop bit,
for example. Default is 9600,N,8,1

Johnny
Jonathan Harston
2022-07-20 13:41:27 UTC
Permalink
I use:
set cpu 70
mount db0: H:\develop\pdp11\unix\bsd2-11.dsk /rp06
boot db0:

with E11 v7.0, and the disk image from
https://skn.noip.me/pdp11/pdp11.html
Walter F.J. Müller
2022-07-20 19:32:44 UTC
Permalink
Post by Jonathan Harston
set cpu 70
mount db0: H:\develop\pdp11\unix\bsd2-11.dsk /rp06
with E11 v7.0, and the disk image from
https://skn.noip.me/pdp11/pdp11.html
I tried this 211BSD image. It's patch level 448.
I tried e11 version 7.3 and 7.2, both under Linux.
The output up to and including "Sat Oct 31 16:00:38 PST 1981" is ok.
After that I see crap.

I've tried with SimH again. The default setting in 'classical' SimH is 7bit !
When I boot that image in SimH with tto default setting all is fine.
When I use "set tto 8b" I get the same crap that I see with e11.

The problem is obviously that there is no mechanism in e11 to set the console output into 7bit mode.
Since 211BSD fills in the parity bit, the host system sees character codes > 0177 and misinterprets them
as UTF-8 characters.
Johnny Billquist
2022-07-20 23:14:53 UTC
Permalink
Post by Walter F.J. Müller
Post by Jonathan Harston
set cpu 70
mount db0: H:\develop\pdp11\unix\bsd2-11.dsk /rp06
with E11 v7.0, and the disk image from
https://skn.noip.me/pdp11/pdp11.html
I tried this 211BSD image. It's patch level 448.
If it truly is at 448, then you should not have the problem. I actually
did 448 on a local 11/83 with a VT420, and it was just so annoying that
I had the 7-bit parity problem when booting 2.11BSD, while everything
was fine when booting RSX on the same machine, and I did not want to go
in and change the setup in the terminal every time I booted the other
system. (And the boot roms in the 11/83 themselves also assume you have
an 8-bit clean console, so it was really 2.11BSD that was the odd duck.)
So I know that worked correctly on real hardware.

But it's really just a one line change. usr/src/sys/pdp/cons.c line 167.
And in there you'll find an or with the parity, which I just commented out.

449 and 450 changed it to be settable, as my forced non-parity was
considered a little too brutal. :-)
Post by Walter F.J. Müller
I tried e11 version 7.3 and 7.2, both under Linux.
The output up to and including "Sat Oct 31 16:00:38 PST 1981" is ok.
After that I see crap.
I've tried with SimH again. The default setting in 'classical' SimH is 7bit !
When I boot that image in SimH with tto default setting all is fine.
When I use "set tto 8b" I get the same crap that I see with e11.
The problem is obviously that there is no mechanism in e11 to set the console output into 7bit mode.
Since 211BSD fills in the parity bit, the host system sees character codes > 0177 and misinterprets them
as UTF-8 characters.
Interesting that E11 don't actually seem to do anything with the
specified mode. I guess you might be right in that it just tries to
change the characteristics of the actual line.

You could always ping John Wilson about it...

Johnny
Walter F.J. Müller
2022-07-28 10:25:53 UTC
Permalink
Post by Johnny Billquist
You could always ping John Wilson about it...
Did that.
John said, that the current MODE implementation is meant for a physical serial port and has no effect on pty's.
And indicated, that he might change that in an upcoming release and support optional 7bit data truncation also to pty's.
Walter F.J. Müller
2022-07-20 15:32:13 UTC
Permalink
Post by Johnny Billquist
SET TT0: MODE=2400,E,7,1
would set the console to 2400 bps, 7 bits, even parity and one stop bit,
for example. Default is 9600,N,8,1
Tried that, also "MODE=2400,N,7,1". Doesn't work for me. I get proper output up to
70Boot from rl(0,0,0) at 0174400
:
: rl(0,0,0)unix
Boot: bootdev=03400 bootcsr=0174400

2.11 BSD UNIX #3: Wed May 29 22:28:05 PDT 2019
***@w11a:/usr/src/sys/RETRONFPRL
phys mem = 2146304
avail mem = 1791488
user mem = 307200

thus all output from boot loader and kernel itself. But output going through the
driver stack is crap like "����9���:30:0��i�it:�co�fi��re����te��"

I don't know what the 'MODE' option does. Is it really affecting the output bytes,
as the '7b' options work on SimH, or does e11 try to set some serial port parameters
in the host system ? That of course will not do anything on a pty.
Loading...