<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:630522924;
        mso-list-type:hybrid;
        mso-list-template-ids:-574183462 75653044 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Hi Bill,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Based on 4.0-0 Beta isn’t very specific since it has been around with many changes for quite a while.  I last interacted with Oscar at least a year ago maybe more…  Can you give me a pointer to the source you’re working with so maybe I can zero in on when in the commit sequence it was forked.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>In any case, what are you using for serial port hardware on the Raspberry Pi?  <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>What version of the Pi are you working with?<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>There has been some work synchronizing simulated serial port speeds with original baud rates.  As I recall, (without looking too deeply), this mostly was done to facilitate input data rate handling since, when the simulated serial ports are connected via telnet, a user could drop data into a telnet session (via cut and paste) that would arrive at the simh side of the simulator in a single packet which could then overrun the input capabilities of the simulated hardware/OS.  When this was done I really didn’t look at the serial port case.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><br>If output is going to a serial port, then the goal of the simulated serial port layer should be to act as a wire that directly connects the simulated system to the serial port WITHOUT the buffering you are seeing.  This is a bug in the simh framework.  Please create an issue at <a href="https://github.com/simh/simh/issues">https://github.com/simh/simh/issues</a> including what’s been said in this thread so far and follow up with the answers to the above questions there.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Thanks.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>          </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Mark<o:p></o:p></span></p><p class=MsoNormal><a name="_MailEndCompose"><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></a></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> William Wuttke [mailto:wcwuttke@att.net] <br><b>Sent:</b> Sunday, June 5, 2016 7:07 PM<br><b>To:</b> Mark Pizzolato <Mark@infocomm.com><br><b>Cc:</b> simh@trailing-edge.com<br><b>Subject:</b> Re: [Simh] PDP-8 KL8E XON/XOFF<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hi Mark,<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I’m using the simh PDP-8 code that was distributed by Oscar Vermeulen for the PiDP-8, which is based on 4.0-0 Beta.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The console is set as follows:  set console serial=ser0;110-8n2. (Raspberry Pi hardware serial port)<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The problem is that there is buffering going on somewhere between the simh PDP-8 and the serial port. (It's nice to have the PiDP-8 front panel to help troubleshoot problems.) If I do a directory listing or type a long-ish file, I can see the accumulator LEDs blinking for only a few seconds, but the printout takes minutes. This indicates to me that simh/PDP-8 is pushing the bytes out as fast as it can into a buffer somewhere. The data trickles out of the buffer at a leisurely 110 baud. By the time I see that I don’t want to finish printing what I started, a Control-C won’t do anything. I was able to at least put a bandaid on things by setting the tto_unit (pdp8_tt.c) wait value to where it slows down the data being pushed into the buffer to a rate approximating 10 characters per second. The accumulator LEDs now blink synchronized with the data, which is what I was looking for.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>To me, the simulator should be able to simulate this, but where is the buffering and how can we eliminate it? Or do we want to? You would never even notice that this is a “problem” unless you have a front panel. If we are working towards having front panels of one kind or another (PiDP-8, blinkenbones, etc), I would think the emulator should output the data at the correct baud rate, not relying on buffers somewhere to take up the slack.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Regards,<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Bill<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p><div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>On Jun 5, 2016, at 6:18 PM, Mark Pizzolato <<a href="mailto:Mark@infocomm.com">Mark@infocomm.com</a>> wrote:<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Hi William.</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Are you using the simh PDP8 code from<span class=apple-converted-space> </span><a href="https://github.com/simh/simh"><span style='color:#954F72'>https://github.com/simh/simh</span></a>?</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>What does you configuration file look like?</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>With the latest code you should be able to connect the serial port the ASR33 is wired to to the simulator at its natural 110 baud rate.   Given that, doesn’t your problem go away?</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p></div><div style='margin-left:.5in'><p class=MsoNormal style='text-indent:-.25in'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>-</span><span style='font-size:7.0pt;color:#1F497D'>         <span class=apple-converted-space> </span></span><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Mark</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p></div><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><div><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span class=apple-converted-space><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> </span></span><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>Simh [<a href="mailto:simh-bounces@trailing-edge.com">mailto:simh-bounces@trailing-edge.com</a>]<span class=apple-converted-space> </span><b>On Behalf Of<span class=apple-converted-space> </span></b>William Wuttke<br><b>Sent:</b><span class=apple-converted-space> </span>Sunday, June 5, 2016 5:54 PM<br><b>To:</b><span class=apple-converted-space> </span><a href="mailto:simh@trailing-edge.com">simh@trailing-edge.com</a><br><b>Subject:</b><span class=apple-converted-space> </span>[Simh] PDP-8 KL8E XON/XOFF</span><o:p></o:p></p></div></div></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><div><p class=MsoNormal><u><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222;background:white'>Problem:</span></u><o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222;background:white'>When using a teletype on a serial port, XOFF will stop a directory listing (and others), but once that happens, the PDP-8/simh will no longer respond to keyboard input. I’m using a Model 33 ASR on a PiDP-8 (raspberry pi) hardware serial port.</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal><u><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222;background:white'>Investigation:</span></u><o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222;background:white'>All documentation says XON and XOFF should work from the console. Well, it does and it doesn't.</span><o:p></o:p></p></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'> </span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'>If using "screen", it works, but apparently the XON/XOFF functionality lies somewhere other than in the KL8E handler. The typing stops when XOFF is sent. Then when XON is sent, you can see some buffered text appear on the screen fast, then the typing slows down to normal speed. (I set the tto unit wait value to 20000 to closely approximate real 110 baud serial output. Otherwise, a directory listing gets buffered up an about 3 seconds, but takes 2-3 minutes or longer to print out on the teletype. This also allows me to Control-C to quit the listing.) It looks like "screen" is buffering the text.</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'> </span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'>If using the teletype, XOFF stops the typing, but XON does nothing - the machine is locked up in a loop at this point with 7623 in the accumulator (it works as coded). Looking at the KL8E handler, the tty check routine uses KRS to read a character, never resetting the keyboard flag. Apparently, since the KL8E had no buffering, if an incoming character is not read, it would be overwritten by the next incoming character, clearing the keyboard flag during the time that the character was not valid, then setting it after the character was assembled into the keyboard buffer. It looks like the KL8E handler was written depending on this behavior. However, it looks like the simh tti is acting like a modern UART, buffering up the input, and moving through the buffer as characters are read. The KRS instruction is for all purposes a "peek" at the next character in the buffer, which is exactly what the tti is doing. It keeps "peeking" at XOFF (7623 - 7600), which never really gets removed from the buffer. However, it really needs a "read", to advance to the next character. At least, that is what it looks like.</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'> </span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><u><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'>Fixes?</span></u><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'> </span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'>I'm going to attempt to mod the KL8E handler to fix this, but might not have much luck since it already pretty much fills up its allotted two pages. It is filled with all sorts of assembly language trickery to fit into two pages. In my way of thinking, the simh KL8E is really “modified” hardware, and OS/8 can be easily adapted to new hardware. I think I have a fix, using KRB instead of KRS - I don’t think that using KRS was a good idea anyway, but on a real PDP-8 it would catch the XON as soon as it happened.</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'> </span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'>Or, could a mod to simh do the trick? Could the KRS be modified to act like a KRB, but just OR’ing the keyboard buffer with the accumulator instead of clearing the accumulator it first? How would this affect other PDP-8 software that relies on KRS without subsequently clearing the keyboard flag? How common is the use of KRS in this way? I guess in this day and age, trying to eliminate all the buffering going on would probably be a real pain. And, the buffering on the input actually eliminates the need use the teletype Reader Control with simh.</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'> </span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'>Does anyone have any ideas?</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'> </span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'>Regards,</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'> </span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222'>Bill Wuttke</span><o:p></o:p></p></div></div></div></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></div></body></html>