New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PDP-11 DROPS INPUT CHARACTERS on KL (console) and DZ telnet SIM 4.0 Beta #246
Comments
Hi William, What you are describing seems to be that during paste operations input characters seem to be presented to the simulated system/os faster than they can be dispatched... Some work was done of several simulators to specifically support better behavior during paste operations, but I'm not sure that the PDP11 was one of them, and I certainly am surprised that this is worse now than under v3.9. Can you supply me with:
You can contact me offline at: mark@infocomm.com so we can exchange details of how to get the disk image file. Also, can you explain why your simulator's SHOW VERSION says:
|
Hello Mark, Thank you for your prompt reply. Sure, I will provide you with a disk image that reduces the issue to its trivial case. I will send you the config file, too. This might take me a day to put this together. Also, for all purposes, I am using the 4.0 Beta. I did revert and it had the same issues. I made some local changes that were superficial. Yes, this baby was absolutely perfect under 3.9. Although 3.9 has some major problems that are totally resolved in 4.0 beta. For one thing, I wrote a script called “killer” that I would run with 16 DZ/login/telnet sessions open. Version 3.9 would panic in less than a hour. However, version 4.0 kicks butt! My klller script would not take down SIMH 4.0 even after 48 hours! Killer just does a lot of crazy CPU and IO processing—simultaneously. SIMH 4.0 is BRILLIANT! I went so far as to have a dedicated server running 4.0 Beta with UNIX v7m 2.1. It so cool. It is ROCK solid. I feel like I have discovered the cure for the common cold. SIMH 4.0 just blows me away. Worse, I had no clue 4.0 even existed. I just happened upon it. The SIMH site has 3.9 frozen for eternity. Thank you so much! I will get what you’ve requested. I live for this stuff. Truly, Bill Corcoran |
I noticed the same, and I patched my local copy a bit to work around
|
The simulator code for these devices is delivering the incoming data (from the paste) to the simulator as soon as the OS driver has removed the previously arrived data from the simulated hardware. The OS got the data. It will be useful to know how this worked in simh v3.9 and why it is a problem now. Since this problem appears to be a general one across all mux devices a general solution is probably that doesn't burden each device simulation with dealing with this would make sense. I still want to see the failure case. Thanks.
|
Hello Mark, I created the trivial failure case. I have a pristine v7m disk with a kernel configured with the hp driver, a KL console, and sixteen (16) working DZ devices. The failure mode as described is fully reproducible. Compressed and combined, the files are about 10 Megabytes. Can you tell me how I should deliver this to you? Do you have an FTP site? Thank you. Bill Corcoran |
Hi Bill, Shared on Google Drive is easiest. You can post here or preferably contact me directly at mark@infocomm.com.
|
Hello Mark, I was able to eliminate some fluff and get the entire thing below 6MB. Most mailers can handle that today. Thank you so much. Whenever you’re ready, here is what to do:
Please copy the attached file 246.tgz to a folder on as OS/X system. The OS/X system has a tar command that knows how to gzip and gunzip. If your tar does not understand how to deal with compression, then please use gunzip first. Once you have copied down 246.tgz into a clean folder:
From there, you can boot v7m 2.1 UNIX:
Next, you will be in single user mode, check the filesystem to ensure all is well:
If all looks good, you are ready to perform the KL console test:
Next, repeat the test with DZ line test:
Note: There is a detailed README file (too much detail) located in the TLD and doc folders. Now, let’s hope you see the defect. CAUTION: As you know, do not try to end up with the exact same sizes of the file. THIS SHOULD NOT BE YOUR GOAL. Why? Canonical processing will invariably process Now, one last thing. I have heard you talk about the timing operations as the root source. But, should not the flow control kick in Finally, if you need the full UNIX v7m 2.1 distribution and not the parred down version I supplied, just let me know and I will make it so! Thank you again. Truly, Bill Corcoran |
Hi Bill, Thanks for the detail. Meanwhile, I did not receive any email directly and I can't find any suggestion in my mailserver log data that any such attempt was actually tried. Please either send directly or simpler yet make this available via Google Drive. Thanks.
|
While I'm waiting for Bill's test case I've started to look closer at the details raised here. Can you test this patch against the existing github pdp11_vh.c module:
With this in place, when data arrives at excessive rates, it won;t get lost in the pdp11_vh device simulation, and things should then be in a similar place to the DZ and console cases (where data has been handed off to the OS, but the driver is probably over-running the type ahead buffer). I don't see any overruns on my test VAX simulator (running VMS) with or without this patch even when I past a 40KB file into a telnet session. Olaf can you test this in the PDP11 environment that inspired your patch? Thanks.
|
I got the link. I sent you a message to gmail account you sent me the message from explaining that you need to make that file publicly visible. Clearly, if you're getting the github messages at some email address, you didn't use that account to provide the Google Drive link, or you would have gotten my direct response. Thanks.
|
I now have the file. Thanks. |
Hi Bill, I have confirmed that I can reproduce the problem observed on the current simulator and the fact that it does not appear on the v3.9 simulator. I have not yet had the chance to analyze what is really happening. I'll let you know. Thanks.
|
Hello Mark, Thank you so much. I know all of this works on an indefinite timeline. But, please lean on me for any testing that you need. I can at least help test Version 6/7 and 7m BTL UNIX. The work that you and the team are doing here is brilliant. The recognition of SIMH, the value of SIMH, is itself historic. You are bringing to life and maintaining our Founding Father’s technical achievements. SIMH is akin to the FPS video games. Not only does SIMH preserve, portray and project historic operating systems in three dimensions, SIMH adds the critical temporal dimension that could only previously be provided by having a working hardware—as time goes on that will become harder and harder. As time goes on, it is reasonably foreseeable that some kind of SIMH will be developed for all of the current modern platforms that SIMH currently runs on as they too become ancient. The beauty, of course, is that 30 years from now, we may be running a SIMH for today's OS/X. Well, if true, we can run the PDP11 SIMH underneath the OS/X SIMH to be able to boot Version 7 UNIX. It simply won’t be necessary to keep maintaining SIMH codebase for the PDP-11 on future modern OS platforms. You see, 30 years from now, we will all be running a SIMH of the PDP11 under a SIMH of OS/X, for example. That’s why the work you and the team here is doing is so important. Once the SIMH hits its perfection stroke, the code you write today may be frozen and usable for the next century—if not for(;;). There simply won’t be a need to hammer out a native PDP-11 port of SIMH on whatever OS is king 30 years from now. Finally, the improvements of SIMH from V.3.6, V.3.9, and V.4.0 are large. This thing is getting better and better. It is of mind-blowing importance. I cannot stress that enough. Thank you and the team for all of your sweat and tears. You have all made a fantastic contribution to the preservation of history. Truly, Bill Corcoran |
Hi Bill, I'm looking over details here and I don't see success with your simple test when running on a simh v3.9 PDP11 when using a DZ device. I see the same failing behavior on the lastest code and on the V3.9 code. Can you confirm that you have good or bad behavior when using a DZ telnet connection? Thanks.
|
Hello Mark, Yes, if you read my initial post, I almost get this across. But, near the end of my initial post, I muddied it a bit. Let me clear it up.
I am sorry I failed to make this clear. Truly, Bill Corcoran |
On Sun 15 Nov 2015 at 11:38:30 -0800, Mark Pizzolato wrote:
I did a quick test but alas it doesn't seem to help. It may be a bit tricky for others to replicate the situation so I'm I would say to first concentrate on Bill Corcoran's issue, and see if my -Olaf.___ Olaf 'Rhialto' Seibert -- The Doctor: No, 'eureka' is Greek for |
…bout 9600bps. This is necessary to avoid kernel type ahead buffer overruns when a user pastes a chunk of data into a console session as described in issue #246 Other console input speeds can be set with SET CONSOLE SPEED=nnn
Bill and Olaf, Can you test to see if the current github code addresses the issues you observed? Thanks
|
Can someone test the DCI device as well? |
Hello Team, It is lunchtime on the East Coast. I will confirm the new code works with KL, DZ and DC. Truly, Bill Corcoran |
Hello Team: This confirms that the KL and DZ drivers appear to be working perfectly. I copied a 50,000 bytes (1600 line C program) via paste. Yes, canonical processing changes spaces and tabs, but both KL and DZ drivers' pasted code compiled flawlessly producing the identical objects. Next, I will test DC later and report back. |
On Thu 19 Nov 2015 at 08:57:39 -0800, Mark Pizzolato wrote:
This is indeed a rate limiter! :-) Of course I had some interesting effects with it. I basically got the Another emulator already complained that NetBSD's sleep functions are In Ok, so I thought to fix that by increasing On the other hand, But The solution to that seemed to be to scale the time keeping from The resulting version works well for 19200 (RSX doesn't allow speeds Then I realised that the above adjustments of With that, I present the below diff. I would further change diff --git a/sim_console.c b/sim_console.c
index bcba790..023f2db 100644
--- a/sim_console.c
+++ b/sim_console.c
@@ -1922,8 +1922,10 @@ t_stat c;
if (sim_send_poll_data (&sim_con_send, &c)) /* injected input characters available? */
return c;
if (!sim_rem_master_mode) {
+ uint64_t now_usec;
+
if ((sim_con_ldsc.rxbps) && /* rate limiting && */
- ((sim_con_ldsc.rxlasttime + (sim_con_ldsc.rxdelta + 500)/1000) > sim_os_msec ())) /* too soon? */
+ ((sim_con_ldsc.rxlasttime + sim_con_ldsc.rxdelta) > (now_usec = sim_os_msec () * 1000L))) /* too soon? */
return SCPE_OK; /* not yet */
c = sim_os_poll_kbd (); /* get character */
if (c == SCPE_STOP) { /* ^E */
@@ -1932,8 +1934,12 @@ if (!sim_rem_master_mode) {
}
if ((sim_con_tmxr.master == 0) && /* not Telnet? */
(sim_con_ldsc.serport == 0)) { /* and not serial? */
- if (c && sim_con_ldsc.rxbps) /* got something && rate limiting? */
- sim_con_ldsc.rxlasttime = sim_os_msec (); /* save last input time */
+ if (sim_con_ldsc.rxbps) { /* got something && rate limiting? */
+ if (c)
+ sim_con_ldsc.rxlasttime += sim_con_ldsc.rxdelta; /* avoid rounding issues */
+ else
+ sim_con_ldsc.rxlasttime = now_usec; /* save last input time */
+ }
return c; /* in-window */
}
if (!sim_con_ldsc.conn) { /* no telnet or serial connection? */
diff --git a/sim_tmxr.c b/sim_tmxr.c
index 68208b7..8a8d7e5 100644
--- a/sim_tmxr.c
+++ b/sim_tmxr.c
@@ -1544,11 +1544,12 @@ int32 tmxr_getc_ln (TMLN *lp)
int32 j;
t_stat val = 0;
uint32 tmp;
+uint64_t now_usec;
tmxr_debug_trace_line (lp, "tmxr_getc_ln()");
if ((lp->conn && lp->rcve) && /* conn & enb & */
((!lp->rxbps) || /* (!rate limited | enough time passed)? */
- ((lp->rxlasttime + (lp->rxdelta+500)/1000) <= sim_os_msec ()))) {
+ (((lp->rxlasttime + lp->rxdelta) <= (now_usec = sim_os_msec () * 1000L))))) {
if (!sim_send_poll_data (&lp->send, &val)) { /* injected input characters available? */
j = lp->rxbpi - lp->rxbpr; /* # input chrs */
if (j) { /* any? */
@@ -1561,11 +1562,15 @@ if ((lp->conn && lp->rcve) && /* conn & enb & */
lp->rxbpr = lp->rxbpr + 1; /* adv pointer */
}
}
+ if (lp->rxbps) { /* if a char was recv'd, */
+ if (val) /* add only its delta time, */
+ lp->rxlasttime += lp->rxdelta; /* in case we get here less */
+ else /* often than we hope. */
+ lp->rxlasttime = now_usec;
+ }
} /* end if conn */
if (lp->rxbpi == lp->rxbpr) /* empty? zero ptrs */
lp->rxbpi = lp->rxbpr = 0;
-if (val && lp->rxbps)
- lp->rxlasttime = sim_os_msec ();
tmxr_debug_return(lp, val);
return val;
}
@@ -1886,7 +1891,7 @@ return;
int32 tmxr_rqln (TMLN *lp)
{
-if ((lp->rxbps && (lp->rxlasttime + (lp->rxdelta + 500)/1000) > sim_os_msec ()))
+if ((lp->rxbps && (lp->rxlasttime + lp->rxdelta) > sim_os_msec () * 1000L))
return 0;
return (lp->rxbpi - lp->rxbpr + ((lp->rxbpi < lp->rxbpr)? lp->rxbsz: 0));
}
diff --git a/sim_tmxr.h b/sim_tmxr.h
index 8d24994..5106862 100644
--- a/sim_tmxr.h
+++ b/sim_tmxr.h
@@ -167,8 +167,8 @@ struct tmln {
uint32 rxpbsize; /* rcv packet buffer size */
uint32 rxpboffset; /* rcv packet buffer offset */
uint32 rxbps; /* rcv bps speed (0 - unlimited) */
- uint32 rxdelta; /* rcv inter character min time (ms) */
- uint32 rxlasttime; /* time last received character was read */
+ uint32 rxdelta; /* rcv inter character min time (microsec) */
+ uint64_t rxlasttime; /* time last received character (microsec) */
uint8 *txpb; /* xmt packet buffer */
uint32 txpbsize; /* xmt packet buffer size */
uint32 txppsize; /* xmt packet packet size */ |
I'll look at this tonight (or tomorrow). The 500bps is somewhat close to the speed that happened on console input with v3.9... Meanwhile, you do know that you can build a kernel which has HZ set to 1000.... |
Ah, but I don't use Linux :) I don't think NetBSD has such a HZ setting. |
TESTING REPORT: Hello Team, I encountered an unusual anomaly that may be related to the #246 patch:
a. On the console, type Ctrl-E to gain access to the SIMH Console. Normally, I would refrain from reporting a defect like this until I had time to understand and reproduce it on demand. But, I am reporting this now to plant the seed just in case something strikes you whilst you're doing a code review. I RESPECTFULLY ASK THAT NO FURTHER ACTION BE TAKEN ON THIS ISSUE UNTIL I UNDERSTAND IT BETTER. I am creating additional tests and I am testing DC. I will report my findings. Nevertheless, so far, the paste operations have been absolutely perfect with nary a missing byte. Truly, Bill Corcoran |
Linux already has a small clock tick. NetBSD can build a kernel with HZ set to 1000 and it will be well behaved. I don't recall exactly how that is specified. |
Bill, When the strange timing behavior happens, and you hit ^E to get to the sim> prompt, save the output of SHOW CLOCK before you do anything else. Thanks. Mark |
Hi Mark, I am not sure why is says 88833. I always use port 8883. Something must have happened when I pasted it into the web page. Next, I was using the github website and directly entering my message to you. When I hit tab and space, the dialog lost focus and the space bar hit the “ok” button. Sometimes, I subconsciously enter vi escape sequences when I am typing into web forms and such. So, my message was truncated prematurely. But, if you actually go to the website on github, you will see that I wrote a long Let me know if you want me to email it to you or if you can grab if from the website—if you have interest in reading it. Truly, Bill Corcoran |
Hi Bill, I now see the complete message. I didn't earlier. FYI: I almost always use the github web interface to deal with the issue system. As for your point of limiting output speed, that is a completely separate issue and, I expect not something that users are concerned about. Faster is always better as long as no data is lost. It was the data loss problem which caused me to provide the most natural speed limiting design as a solution. Olaf's (Rhialto's) original approach merely attempted to limit input to groups of a certain number of characters. This was potentially workable for the VH device, but wasn't a natural solution for other MUX device simulators and the console. As for the full speed output behavior causing the simulated system not to have any cycles left to do anything else, well, that might be partly the problem of the OS running in the simulated system... Back to the Faster is always better. It is this concept which is still driving Olaf and me to get full speed input behavior at 19200bps and possibly 38400bps since these were speeds that the original PDP11 and VAX systems actually could handle (in theory, but they might be quite saturated processing interrupts while doing it depending on the actual model of the hardware). Have you gotten to test the DCI device yet? I don't have any personal experience with an OS that has driver support for this device so I haven't tested any of the changed code. Mark |
Hello Mark, Understood. I just wanted to let you know my findings. There are plenty of ways to add blocking if this should ever cause problems. Now, turning to the DZ device, I read an early AUUG article (If you can call it that) where the complainant was upset that his real DZ device prevented large numbers of users because his DZ device generated constant interrupts on the CPU. So, as a simulator designer, do you build in the bad too? You don’t need to answer that—it’s rhetorical. Yes, I will get this DCI tested today. I have been distracted wth other project issue now that my paste is working! Truly, Bill Corcoran |
On Mon 23 Nov 2015 at 17:58:57 -0800, Mark Pizzolato wrote:
I did a bunch of tests with this and without, and on the HZ=100 system Starting from the situation with HZ=100 and without the above +500, When testing HZ=1000 with "cpu idle", this definitely makes a big impact It has a weird effect on the observed speeds though. Over the time of To be honest, I didn't really expect any change from including the +500, So summarizing, the +500 has a small positive effect, and doesn't seem -Olaf.___ Olaf 'Rhialto' Seibert -- The Doctor: No, 'eureka' is Greek for |
Hello Mark,
This entry confirms that the DCI device is working perfectly as regards to input flow control and paste.
First, I used the awesome git command you gave me to load the latest master. Then, I mak[ed] a pdp11.
I booted a previously built image of DEC's cleaned up version 7 UNIX: v7m 2.1
I created 16 DCI devices in the UNIX kernel (character major 3) as mkconf input "16dc." I built a PDP11/70 (*separated instruction and data) kernel.
Next, I enabled init serving up some gettys via the ttys file. I also created an appropriate series of entries in the dev makefile for easy recreation.
As a final affirmation and confirmation that I am using an appropriately configured DCI device, opening a telnet session on the assigned port says: Connected to the PDP-11 simulator DCI device, line 0.
Next, I take a large c program, after eliminating all spaces and tabs, and cat it to standard out.
Next, I select the text using the modern host's OS and then copy to the clipboard.
Next, I access the PDP-11 OS and issue this command:
cat - > /tmp/test.dat
Now, we paste the contents of the clipboard and hit ctrl-d.
Next, we compare the source and target with sum and diff: source and target the same.
Finally, the DCI hangup works absolutely beautifully:
stty 0
This is music to my ears: The line immediately drops taking the shell with it and the modern host OS's telnet detects the line hangup and exits with a return code of "1".
This is a basic security test, lest someone telnet into some poor soul's retired, but active session.
Truly,
Bill Corcoran
(*) Fred Canter explains that v7m UNIX was designed to run on much of DEC's PDP Series systems. Some smaller systems required an overlay text kernel used on non-separated instruction and data space processors. Understanding this distinction is important during the initial setup, configuration, software and kernel regeneration. A simple SIMH setting for the CPU type must be aligned with the kernel type.
|
Hi Bill,
The point of the article is that the DZ and DL and DC) devices all generate Alternatively the VH device is capable of DMA output. This means that
The simulations of these devices must act how the software expects Mark |
Bill,
This is great news. Thanks. Mark |
Olaf and Bill, We're down to the input speed inconsistencies of arriving data when the line speed is set above 9600. I'm going to think about how to understand this over the next few days. Mark |
Hello Mark, This is fantastic. Please let me know if you think I can help you test anything. Also, someday, I look forward to debating the reasons for limiting simulated serial device speeds to their real world counterparts. Truly, Bill Corcoran |
Olaf, The approach you started down attempting to manage delays more precisely than the 1ms clock available with sim_os_msec() was indeed the right approach. I think that all the MUX devices we've been looking at now have reasonably consistent input rates for all supported speeds the original hardware supported. Please give the latest github code a try and let me know if you agree or disagree. Thanks. Mark |
Hi Mark, this works great! Thanks! 19200 bps now indeed works at a proper speed, I tested 19200 on both my machines (HZ=100 "cpu noidle" and HZ=1000 "cpu It's a pity that RSX doesn't let me set a higher speed than 19200, but Thanks! -Olaf.___ Olaf 'Rhialto' Seibert -- The Doctor: No, 'eureka' is Greek for |
Hi Olaf,
Well, I was discussing the new input speed limit behaviors with the Mark |
The latest code provides a way to specify a multiplier factor for the
will get you a port which will deliver input to the simulator at the designated The multiplier factor defaults to 1, and can be specified as large as 32. The devices which have programmable speeds (DZ and VH) can specify in One more change is still coming... The input speed limits which work here |
Hello Mark, This is great! Three things:
Truly, Bill Corcoran |
Hi Bill,
By the way, the latest code now should correctly rate limit incoming traffic on multiple lines concurrently. I'm pretty sure I didn't break any of what was already working. I have not rigorously tested this though. If you can at least confirm the basics and if it looks OK for you, please close this issue. Thanks. Mark |
Hello Mark, [RED ALERT!] [ UNIX v7m 2.1 HANGS AFTER TELNET] My initial testing on the latest master: Using the stripped down UNIX v7m that I previously gave to you:
./pdp11 xrun40.conf Next: b rp0 [enter] [UNIX boots fine] [Please run FSCK] [Now: hit Ctrl-d to go to multi user] Ctrl-D [all is well so far] [login as root on the console] root [enter] All is good! [Now, telnet localhost 8883] [login is root] root [enter] BAM! THE ENTER SYSTEM FREEZES! See below for Version info! Truly, Bill Corcoran PDP-11 simulator V4.0-0 Beta Simulator Framework Capabilities: 32b data 32b addresses Ethernet Packet transports:PCAP:NAT:UDP Idle/Throttling support is available Virtual Hard Disk (VHD) support Asynchronous I/O support FrontPanel API Version 1 Host Platform: Compiler: GCC 5.2.0 Simulator Compiled: Nov 28 2015 at 19:09:13 Memory Access: Little Endian Memory Pointer Size: 64 bits Large File (>2GB) support RegEx support for EXPECT commands OS clock resolution: 1ms Time taken by msleep(1): 2ms OS: Darwin corky 15.0.0 Darwin Kernel Version 15.0.0: Sat Sep 19 15:53:46 PDT 2015; root:xnu-3247.10.11~1/RELEASE_X86_64 x86_64
|
Hello Mark, Hello Mark, I was distracted by another issue… Let me clarify my report: I cut in the latest SIMH master on my production box, As soon as the network connection (telnet) was established, the console session and the telnet DZ session hung. . . . [login as root on the console] root [enter — no password needed] All is good! [Now, open a modern host’s telnet session: and "telnet localhost 8883"] [login as root, again no password required on this test distribution.] root [enter] BAM! THE TELNET DZ SESSION AND THE CONSOLE SESSION SYSTEM FREEZES! See below for Version info! Truly, Bill Corcoran PDP-11 simulator V4.0-0 Beta
|
Hmmm... Did you select a speed with the ATTACH command? If not, was a speed set programmatically? If you can ^E to get to a sim> prompt, please send the output of SHOW MUX Thanks. |
Mark, Re: pdp11 UNIX v7m hang after telnet
Truly, Bill Corcoran Multiplexer device: DZ, lines=16, ModemControl=enabled,
Line: 0, Speed=9600 bps Connection from IP address 127.0.0.1 Connection [127.0.0.1]:8883->[127.0.0.1]:60351 Connected 00:00:15 Modem Bits: DTR RTS DCD CTS DSR Telnet protocol input (on) queued/total = 1/16 output (on) queued/total = 0/11 bytes in buffer = 11 Line: 1, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 2, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 3, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 4, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 5, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 6, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 7, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 8, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 9, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 10, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 11, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 12, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 13, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 14, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR Line: 15, Speed=300 bps Line disconnected Modem Bits: DTR RTS DSR SET cpu 11/70 SET DZ enable SET PTP DISABLED SET TM DISABLED SET rp0 rp06 SET tm locked |
For me, I'm happy to report that the VH device works fine with multiplier. (git commit id: 0938d31) Speed 19200 * 2 definitively goes faster than plain 19200 (alhough we seem to get diminishing returns at higher speeds, probably due to the way I'm measuring). I wonder if the multiplier can be changed while a telnet connection is in progress; I tried to issue a new "attach vh speed=19200*4" while I was logged in, but did not measure an effect. |
Bill, Sorry about the non functional DZ device. I thought I'd tested each device before committing the last changes. Clearly I missed the DZ. It was the odd case due to it using the tmxr input queue as the device 'silo'. Olaf, The SHOW MUX command will show the current line state information. If it indicates a speed factor, then that will indeed be used. A bare speed=value specifier without also indicating a listening port doesn't change anything on the MUX configuration and it doesn't report an error. You should be able to enter the same attach command you originally used only specifying a different speed value and the results should be effective. Mark |
Hello Mark, Please, never apologize for these things. I am just so happy to see that SIMH is constantly being improved. Let me know whenever you're ready for me to test. I have a pre-defect 4.0 that's working just fine so this defect is not hurting me in the least. Finally, I have delved into 32v. I am struggling with an alignment issue with 32v process accounting and ps commands. Is there a SIMH/32v expert around herethat has an interest in these things? At this point, I think I an completely convinced it's more of an issue with 32v and not SIMH. I am going to instrument the 32v kernel to see where the issue might be rooted. I am no expert in these things, so I am very limited in what I can do. Truly, Bill Corcoran |
It is ready. Please test.
If the unmodified code ran/runs on real hardware then I would certainly believe Otherwise if you are just poking around with that OS and tripping over Mark |
Mark, I will test PDP11 and VAX11/780 and now. I will report my findings. As far as 32v, do you want me to create an issue in GitHub? This way you can review it and decide if it's worth pursuing. Or, as an alternative, I can write up the 32v issues and send them to your private email you gave me. Then you can tell me if I should open a SIMH issue re 32v. Truly, Bill Corcoran |
Mark, This email confirms that SIMH PDP11(UNIX v7m 2.1) and VAX780(32V) experienced no system hangs in connecting to the DZ port (over telnet) on the latest SIMH. As a final verification of this testing, I kindly ask that you confirm the “SHOW VERSIONs” below (for PDP11 and VAX780) matches your expectations as the “latest SIMH port.” Thank you for all of your hard effort and promptness here! Truly, Bill Corcoran SHOW VERSION FOR PDP11
SHOW VERSION FOR VAX780
|
That is indeed the latest commit. Please send an email about your 32v concerns and close this issue. Thanks. |
…bout 9600bps. This is necessary to avoid kernel type ahead buffer overruns when a user pastes a chunk of data into a console session as described in issue simh#246 Other console input speeds can be set with SET CONSOLE SPEED=nnn
…limiting. Fix simh#246 Data arriving on simulated serial ports can arrive faster than the OS running on the simulated system can deliber it to user mode programs. This happens when chunks of data are delivered to the mux from a network connection. This can be due to a file transfer program (kermit) running on the other end of a network connection and the packet size being delivered exceeds the simulated OS's type ahead buffer size OR from users who paste arbitrary blocks of data into a telnet or console session.
SIM 4.0 Beta, PDP-11, UNIX v7m (2.1)
ISSUE: The console (KL) and DZ ports via telnet drop input characters during paste operation.
Note: The UNIX console (KL) and other KL ports handled paste operations flawlessly on SIMH V.3.9.
EXAMPLE on SIMH 4.0 Beta:
ls -l /sys/dev/kl.c
-rw-r--r-- 1 sys 3639 Aug 1 1981 /sys/dev/kl.c [Notice kl.c is 3639 bytes]
cat /sys/dev/kl.c [All characters in kl.c are flawlessly typed to the screen under SIMH 4.0]
cd /tmp
cat -> myNewFIle.c
[Now, select all of the text of kl.c (the entire kl.c driver source) and PASTE into console window]
ctrl-d
ls -l /tmp/myNewFIle.c
-rw-rw-r-- 1 root 275 Nov 10 05:15 /tmp/myNewFile.c [Notice: only 275 bytes]
[trumpet fail: wuh wuh wuh wuuuuuuuuuh]
Now, it is key to remember, that on SIMH V.3.9, this operation worked perfectly on the console---always. Plus, this operation worked flawlessly on many drivers.
It is worth noting, that on SIMH V.3.9, some canonical processing took place with tabs and spaces. However, the copy was perfect in that it would compile without error. Nevertheless, the paste operation was not an exact copy under SIMH 3.9, but it was close enough. Only tabs and spaces on SIMH V3.9 would be changed during a paste operation such as this.
The bottom line: Under SIMH 4.0 Beta, I am unable to complete a paste operation as nearly all characters are dropped, excepting about 275 bytes. Smaller paste operation (under the ~256 bytes seem to work fine.)
I have tried various incantations of modem control, etc with no success.
I want to be clear that the KL and DZ devices work beautifully for the most part. The output always seems fine under SIMH 4.0. But. input processing (such as pasting) no longer works like it did in Version 3.9.
Of course, all of this could be a simple misconfiguration on my part. But, until this gets reviewed by the team here, it does seem like a potential defect.
Below you will find the build information requested from the README.md file. I would like to add one point: The SIMH software is an amazing gem of software engineering. For years, I have read every vintage UNIX manual I could get my hands on. However, I was only left to imagine. SIMH has brought my imagination to life. As each day passes, the value of SIMH increases. 100 years from now, SIMH (or its progeny) will be used to demonstrate the dawn of automation. I thank each and every contributor to SIMH.
PDP-11 MACHINE V4.0-1 delta 1 Production (Local Port, native V4.0 Beta Code)
Simulator Framework Capabilities:
32b data
32b addresses
Ethernet Packet transports:PCAP:NAT:UDP
Idle/Throttling support is available
Virtual Hard Disk (VHD) support
Asynchronous I/O support
FrontPanel API Version 1
Host Platform:
Compiler: GCC 5.2.0
Simulator Compiled: Oct 29 2015 at 22:38:50
Memory Access: Little Endian
Memory Pointer Size: 64 bits
Large File (>2GB) support
RegEx support for EXPECT commands
OS clock tick size (time taken by msleep(1)): 2ms
OS: Darwin corky 15.0.0 Darwin Kernel Version 15.0.0: Sat Sep 19 15:53:46 PDT 2015; root:xnu-3247.10.11~1/RELEASE_X86_64 x86_64
The text was updated successfully, but these errors were encountered: