Focus on inoperative ftp

264 views
Skip to first unread message

Steven Hirsch

unread,
Aug 25, 2024, 1:06:08 PM8/25/24
to PiDP-10
The original "beginners networking" thread was getting a bit broad in scope.  Since I'm easily able to get telnet working I'd rather focus on why ftp fails to cooperate in either direction.

After trying a bunch of simh configurations using NAT, I took a step back, read up on tap and bridge devices and was able to setup 'tap0' on my system:

pi@pidp-10:~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 2c:cf:67:51:79:58 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2ecf:67ff:fe51:7958/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 2c:cf:67:51:79:59 brd ff:ff:ff:ff:ff:ff
4: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 82:19:84:e3:45:53 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 2c:cf:67:51:79:58 brd ff:ff:ff:ff:ff:ff
    inet 192.168.245.124/24 brd 192.168.245.255 scope global dynamic br0
       valid_lft 5427sec preferred_lft 5427sec
    inet6 fe80::2ecf:67ff:fe51:7958/64 scope link
       valid_lft forever preferred_lft forever

In boot.pi:

set imp enabled
set imp mac=e2:6c:84:1d:34:a3
set imp host=10.3.0.6
set imp ip=192.168.245.50/24
set imp gw=192.168.245.1
at imp tap:tap0

The simh binary needs added capabilities in order to use the tap device:

$ sudo setcap cap_net_admin,cap_net_raw+ip /opt/pidp10/bin/pidp10

Even though no route appears on the host, I can indeed contact that static IP address and setup a telnet session in either direction.  So, the basics are working.

When I try to use ftp from ITS --> host, it connects (as it did before) and gets one tiny step further:  The PORT command it sends to the linux server is reasonable and accepted.  BUT, the data connection is still dead.  If I do 'directory' from ITS, the server apparently sets up the data connection:

Aug 25 13:02:50 pidp-10 ftpd[5915]: command: PORT 192,168,245,50,12,7
Aug 25 13:02:50 pidp-10 ftpd[5915]: <--- 200
Aug 25 13:02:50 pidp-10 ftpd[5915]: PORT command successful.

but that's it!  ITS hangs and ftpd never gets the LIST command that should follow.

Ftp from Linux --> ITS does not even try.  Just as it dead with the NAT connection, it opens the socket and hangs.  Just as if the ITS server was failing to start.

I'll keep plugging at this, but it's going on 3 days straight with much spent running in circles.

Dennis Boone

unread,
Aug 25, 2024, 1:49:54 PM8/25/24
to PiDP-10
> The original "beginners networking" thread was getting a bit broad in
> scope. Since I'm easily able to get telnet working I'd rather focus
> on why ftp fails to cooperate in either direction.

I'm going to inject some basic networking info here, in case it helps
anyone analyze these problems. Probably old hat for at least some
readers.

NAT and firewalls

For most home users, internet is delivered with at least one layer of
address translation (NAT) between you and the world. If you're unlucky,
it may be worse than that. On your side of such a NAT connection, you
use RFC1918 address space, one of several blocks of space that are
reserved for "internal use only". Addresses in these blocks are not
routable across the real internet. Because they're internal only, at
e.g. the ISP or campus or home level, everyone can use addresses from
these blocks inside their own network. This means that the millions of
addresses in those spaces really provide many times that number of uses.
The thing that makes this work is address translation: at the border
between a network using RFC1918 space and the "live" internet, internal
addresses are rewritten on the fly as the packets go past the border.
The firewall or router at that border must keep track of the connections
so that it can reverse translate returning traffic and get it to the
client which is using the internal address. The drawback is twofold:
first, outside systems can't initiate inward connections; and second,
some protocols (FTP, some streaming protocols) depend on passing
participant addresses inside their protocol data. The former can be
considered an advantage: less outsiders can attack an inside system
directly. The latter is just a headache.

Firewalls also cause problems with inbound connections, especially in
protocols like FTP and the aforementioned streaming ones, due to just
plain blocking traffic regardless of addressing.

Note: NAT is sometimes done with a fixed table of routable addresses on
both sides of the link, but that's largely not relevant to the home
user.

FTP

FTP uses two connections. The client creates the first by connecting to
the server on (usually) port 21. This connection becomes the command
channel, over which the client sends instructions (cd, ls, etc), and the
server sends the brief command responses.

The second connection is used to transfer bulk data, including moving
files up and down, sending directory listings, etc. In traditional
(active) FTP, the server connects to the client on the port indicated by
the client over the command channel. In what is now the more common
mode, passive, the data channel is established the other way, by the
client to the server.

Passive FTP solves the problems of a client behind address translation
or a firewall, because the client initiates both connections. (If
_both_ participants are behind such borders, then you still have a
problem.)

Border systems can be configured to do various things to help solve some
of these problems. For example, Linux systems (including consumer grade
stuff like many home routers and wifi access ports) can do deep address
translation inside of protocols for which they have shims that
understand the details. They can also e.g. sniff FTP command channels
and allow incoming data channel connections that would otherwise be
blocked.

Simulators and tunnels and wifi oh my

Depending on how the various software is configured, you may end up with
an address translation layer on the host running the simulator. You may
encounter Linux bridging doing unwanted things with non-IP traffic. You
may find that Wifi doesn't always play well with anything that's not
basically TCP/IP. In some cases, you may need to take steps to cause
ARP to work for internal networking structures like tunnels on software
bridges. ARP is the low level protocol that answers questions like
"who has (ip) 10.0.0.101" with "(ip) 10.0.0.101 is at (hardware address)
01:23:45:67:89:0A".

Solutions

I don't have my Pi ready or my kit built, so I can't dig into this in a
representative environment. But the solutions lie in identifying the
structure of the network and applying ARP solutions, translations,
protocol helpers, firewall rules.

FWIW,

De

Steven Hirsch

unread,
Aug 25, 2024, 2:29:50 PM8/25/24
to PiDP-10
That's great information that I'm sure will be helpful to some folks. However there's nothing in your notes that I'm not aware of.  

Since my post that started this thread I followed another user's recipe for setting up a tap device and ended up back at the same place.  Telnet works in both directions and ftp does not work in either.  Since all ftp communication uses TCP, the tap interface should be passing it through in both directions regardless of source or destination port.  Indeed, the linux ftpd server is trying to setup a data connection and is still unable to do so, reporting connection refused (by ITS).

i'm starting to focus in on ITS itself, since the symptoms have changed little across NAT and tap/bridge architectures.  

At least one person has reported success using ftp from the host to ITS and I'd like to know more about what they are seeing on the ITS console when ftp-ing to ITS.

Malcolm Ray

unread,
Aug 25, 2024, 2:51:12 PM8/25/24
to Steven Hirsch, PiDP-10
In cases like this, one obviously thinks "what am I doing wrong? I just need to find the right config incantation, and it will all work".
And I'm still experimenting on that basis, but the problem *might* be deeper than that. If you look at the 'issues' on github, there
have been several about problems with ftp. For example, here's an open one from 2023:


Earlier today, I built ITS on my PC (not a Raspberry Pi) from the github repo, to run via pdp10-ka.
I gave it a similar configuration to the one I'm using on the Pi, and got identical behaviour: telnet ok in both directions, inbound
ftp connections hang, inbound active ftp data channel connections hang. I've also built ITS to use pdp10-kl, and I'm struggling
with networking there: I see packets bound for 10.3.0.6 coming out on the wire, which shouldn't happen. So I'll turn up the
debug output for the IMP and see if that reveals anything.

One thing to look at: run :PEEK, and see whether the ftp server appears when you try to connect.

Figuring out what FTPS  and FTPU are doing could be a useful DDT learning exercise!
--
You received this message because you are subscribed to the Google Groups "PiDP-10" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-10+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-10/e84af423-cb92-4a6c-9510-5a8bdcbfa6c8n%40googlegroups.com.

Eric Swenson

unread,
Aug 25, 2024, 3:51:36 PM8/25/24
to Malcolm Ray, Steven Hirsch, PiDP-10
Just tried it again with my pdp10-ka instance:

➜  ~ ncftp -P 2021 localhost
NcFTP 3.2.7 (Jan 01, 2024) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to 127.0.0.1...
 EXA-ITS.SWENSON.ORG ITS 1652,  FTP server 336 on 25 AUG 2024 1233 PDT
Bugs/gripes to BUG-FTP @ MIT-MC
Logging in...
OK, your user name is ANONYM
Unrecognized command: PWD
Unrecognized command: PWD
This command is not implemented, sorry.
Logged in to localhost.
ncftp / > cd ejs;
OK, your directory by default is EJS
ncftp /ejs > ascii
ncftp /ejs >dir ejs;
Passive mode refused.
EXA   EJS
FREE BLOCKS #2=322 #3=1681 #0=1564 #1=1719 #4=1426
  1   ATSIGN 10SLAV 3 ! 8/14/2024 17:46:11
  4   DEMO   1      1 ! 7/26/2024 15:11:06
  0   DSKUSE 00176  110 ! 3/12/2024 09:39:37
  0   EJS    LOGIN  1   9/17/2023 11:26:25
  4   FOO    1      1 ! 7/16/2024 20:20:04
  4   LOG    1      1   9/16/2023 10:41:45
  2   NGAME  273    11   12/18/2016 17:24:19
  1   PLNRFI 7      1 ! 7/17/2024 16:33:23
  1   QSEND  150    3   12/18/2016 17:24:19
  3   QSEND  COMPRS 2   7/13/2023 14:51:36
  3   SCRMBL 73     3   12/18/2016 17:24:19
  0   TEST34 1      1 ! 7/16/2024 15:22:40
  0   TEST34 2      1 ! 7/16/2024 15:36:46
  0   TEST34 3      1 ! 7/16/2024 15:40:30
  1   TESTLA 1      1 ! 7/26/2024 14:35:05
  4   TESTLA 2      1 ! 7/26/2024 14:37:38
  4   TESTLA FASL   1 ! 7/26/2024 14:37:15
  1   TESTLA UNFASL 1 ! 7/26/2024 14:37:15
  4   TESTLA _UNFA_ 0 ! 7/26/2024 14:41:48
  3   TS     UPTINI 1   7/13/2023 15:21:29
  0   UPTINI 1      1   12/18/2016 17:24:19
  1   _FASL_ 1      1 ! 7/26/2024 14:37:44
  1   _FASL_ 2      1 ! 7/26/2024 14:41:48
ncftp /ejs > get "foo 1"
foo 1:                                   833 bytes   20.57 kB/s
ncftp /ejs >

I checked, and “foo 1” on my host matches the “ejs;foo 1” file on ITS.

I did try a put from my host to ITS, and that failed.

ncftp /ejs > put "foo.txt"
put foo.txt: PORT failed.
ncftp /ejs >

I think I’ve done that before, so am not sure why.

When I try to connect to my host (Pure-FTPd) from my ITS, I can connect, and get the name of the ftp server displayed, but requests to GET or PUT seem to hang.

It would appear, however, that Pure-FTPd is expecting TLS connections, so I need to figure out how to disable them.

— Eric

Malcolm Ray

unread,
Aug 25, 2024, 4:46:59 PM8/25/24
to Eric Swenson, Steven Hirsch, PiDP-10
And I've just had some success with pdp10-kl, once I fixed the 'imp host' address
(specific to pdp10-kl):

set imp enabled
set imp mac=e2:6c:84:1d:34:a4
set imp gw=192.168.100.1
set imp host=192.168.1.100
at imp tap:tap_pdp10

Now, ftp connections from Linux to ITS are established properly, and I can transfer files.

Connections from ITS to Linux are established, but transfers fail (so far), but for a reason
I mentioned before: FTPU is picking low port numbers for the PORT command, and the
Linux ftp daemon requires the port to be unprivileged.:

Aug 25 21:38:53 pidp-10 ftpd[5608]: command: PORT 192,168,100,87,2,4
Aug 25 21:38:53 pidp-10 ftpd[5608]: <--- 500
Aug 25 21:38:53 pidp-10 ftpd[5608]: Illegal PORT Command

I suspect it would work with a different (possibly more configurable) daemon.

So, it looks like there's something different between the pdp10-ka and pdp10-kl builds.

Steven Hirsch

unread,
Aug 25, 2024, 6:07:22 PM8/25/24
to PiDP-10
Try running the GNU ftpd.  Bookworm:  "apt install inetutils-ftpd".  

I just tried running the KL simulator, but it takes issue with the boot.pi file and never actually runs.  Where did you find a suitable simh configuration?

Malcolm Ray

unread,
Aug 25, 2024, 6:20:59 PM8/25/24
to Steven Hirsch, PiDP-10
On Sun, 2024-08-25 at 15:07 -0700, Steven Hirsch wrote:
Try running the GNU ftpd.  Bookworm:  "apt install inetutils-ftpd".  

That's the one I have installed.


I just tried running the KL simulator, but it takes issue with the boot.pi file and never actually runs.  Where did you find a suitable simh configuration?

The build tree contains one, minus the network configuration. So I just grafted in the IMP-specific lines.

Note that I'm running this via pdp10-kl on my Fedora PC, not on the Pi. I haven't tried transferring the disk images to the Pi.

Steven Hirsch

unread,
Aug 25, 2024, 6:30:33 PM8/25/24
to PiDP-10
I don't see it in the tree I've checked out.  I have this:

master branch.  

Malcolm Ray

unread,
Aug 25, 2024, 6:32:55 PM8/25/24
to Steven Hirsch, PiDP-10
On Sun, 2024-08-25 at 15:30 -0700, Steven Hirsch wrote:
I don't see it in the tree I've checked out.  I have this:

master branch.  

Steven Hirsch

unread,
Aug 25, 2024, 6:52:43 PM8/25/24
to PiDP-10
Oh, man...  That's yet another simh / pdp10 repository.  I'm grabbing that now.  Beyond the differences in config files, what differences are there between this project and the sources found in the pidp10 repository?  

Eric Swenson

unread,
Aug 25, 2024, 7:25:42 PM8/25/24
to Steven Hirsch, PiDP-10
The true source for the pdp10-k* simulators is here:

Rich is the creator/maintainer of this family of simulators.  The 

Repository includes a submodule referencing a commit from Rich’s repo.

I suspect that Oscar’s repo does the same.

I don’t know what the differences are between these various versions. But from experience I’ve learned to always use Rich’s — he gets upset when I use something different.

You may need Oscar’s for the PiDP10 mods, although I’d be surprised if these hadn’t been folded back into the main repository.

— Eric (KC6EJS)

On Aug 25, 2024, at 15:52, Steven Hirsch <snhi...@gmail.com> wrote:

Oh, man...  That's yet another simh / pdp10 repository.  I'm grabbing that now.  Beyond the differences in config files, what differences are there between this project and the sources found in the pidp10 repository?  

Steven Hirsch

unread,
Aug 25, 2024, 8:32:24 PM8/25/24
to PiDP-10
Thanks for the clarification.  I'm amazed at how long a full build takes.  It's been almost 2 hours on a quad-core i7 with 32 GB of memory - not done yet.

Eric Swenson

unread,
Aug 25, 2024, 8:42:21 PM8/25/24
to Steven Hirsch, PiDP-10
Of what? Full ITS build? Or sims simulators. The former takes that long. But what you need — pdp10-ka takes a minute or so.

— Eric (KC6EJS)

On Aug 25, 2024, at 17:32, Steven Hirsch <snhi...@gmail.com> wrote:

Thanks for the clarification.  I'm amazed at how long a full build takes.  It's been almost 2 hours on a quad-core i7 with 32 GB of memory - not done yet.

Eric Swenson

unread,
Aug 25, 2024, 8:48:14 PM8/25/24
to Steven Hirsch, PiDP-10
To build just pdp10-ka do “make BIN/pdp10-ka”

— Eric (KC6EJS)

On Aug 25, 2024, at 17:42, Eric Swenson <er...@swenson.org> wrote:

Of what? Full ITS build? Or sims simulators. The former takes that long. But what you need — pdp10-ka takes a minute or so.

Steven Hirsch

unread,
Aug 25, 2024, 8:50:04 PM8/25/24
to PiDP-10
Well, I just followed instructions in the README :-).

Might as well let it finish now!

Eric Swenson

unread,
Aug 25, 2024, 9:02:44 PM8/25/24
to Steven Hirsch, PiDP-10
That probably builds every simulator for all computers built to date!
— Eric (KC6EJS)

On Aug 25, 2024, at 17:50, Steven Hirsch <snhi...@gmail.com> wrote:

Well, I just followed instructions in the README :-).

Richard C

unread,
Aug 25, 2024, 9:07:45 PM8/25/24
to PiDP-10

I did some checking on my end. If I build ITS for KL I am able to FTP in and out and get a directory. If I try on the KA I can't connect from outside, or get directory when connected from inside. So this is a problem with FTP on KA ITS.

Rich

Eric Swenson

unread,
Aug 25, 2024, 9:27:44 PM8/25/24
to Richard C, PiDP-10
Rich: why can I FTP in from host to KA ITS and retrieve files then? 

— Eric (KC6EJS)

On Aug 25, 2024, at 18:07, Richard C <rco...@gmail.com> wrote:



Steven Hirsch

unread,
Aug 25, 2024, 10:21:44 PM8/25/24
to PiDP-10
That's the key question.  We have one user who's able to get ftp working and (at least) two who are seeing the same problem.  Who said software wasn't fun?

I'll try the KL when the build finishes and post results.

Eric Swenson

unread,
Aug 25, 2024, 10:28:22 PM8/25/24
to Steven Hirsch, PiDP-10
One thing that is different is that my host is a Mac, running macOS. I did, however, have this working earlier on an Ubuntu machine (Lenovo W520). I made a tarball of that ITS directory and copied it to my Mac. And, of course, I rebuilt pdp10-ka from Rich’s repo on my Mac.

When I get a chance, I’ll set up a KL and KS ITS (using pdp10-kl and pdp10-ks) and report on the results.

I know KS ITS running KLH10 works fine on Ubuntu. Haven’t tried on Mac recently, but could if we really cared.

— Eric (KC6EJS)

On Aug 25, 2024, at 19:21, Steven Hirsch <snhi...@gmail.com> wrote:

That's the key question.  We have one user who's able to get ftp working and (at least) two who are seeing the same problem.  Who said software wasn't fun?

Richard C

unread,
Aug 25, 2024, 10:33:12 PM8/25/24
to PiDP-10
Eric, I believe you run your own version of ITS. This is probably something in the build scripts adding the wrong options on FTP. I have in the past FTP'ed into and out of KA ITS.

Rich

Eric Swenson

unread,
Aug 26, 2024, 12:28:29 AM8/26/24
to Richard C, PiDP-10
My KA, KS, and KL versions of ITS are built from the normal ITS GitHub repository. However, I do update the configs to rename the machines (to EXA, EXS, and EXL). I add my subjnet 13 chaosnet addresses and enable the chaosnet too. But they are quite vanilla.

My ES system, under KLH10, is the highly customized system that was born out of the PI disks created ages ago. I have updated that machine to have all the software from the GitHub ITS repo too.


— Eric (KC6EJS)

On Aug 25, 2024, at 19:33, Richard C <rco...@gmail.com> wrote:



Steven Hirsch

unread,
Aug 26, 2024, 9:01:29 AM8/26/24
to PiDP-10
Eric, can you elaborate a bit on your build suggestion?  First of all, I'm trying to build the KL variant to see if ftp works on it.  Second, all I get is an error message when I enter your suggested command:  "No rule to make target BIN/pdp10-kl".  Is there initial setup required?  What directory does that get issued from?


On Sunday, August 25, 2024 at 8:48:14 PM UTC-4 er...@swenson.org wrote:

Richard C

unread,
Aug 26, 2024, 9:41:09 AM8/26/24
to PiDP-10

The command would be "make pdp10-kl" or just "make" which will build all simulators. Note you can't take the disks from KA and run them on KL. You can rebuild the ITS core/kernel and do a few other changes to get a KA build to work on KL. But it is probably easier just to rebuild ITS for KL.

Rich

Malcolm Ray

unread,
Aug 26, 2024, 9:46:43 AM8/26/24
to Richard C, PiDP-10
Minor data point:

The problem with incoming connections to FTP on pdp10-ka isn't specific to port 21 (not that I expected it to be, but I thought I'd check).
I created a new link so that connections to TCP port 400 (just picking a port not already in use) would also run the FTPS binary.
After this, connections to port 400 would hang in the same way as FTP connections. The FTPS binary would be run, but PEEK
would show its status as '10!0', unlike the 'TCPI' status of the telnet daemon when connection has been established.

Steven Hirsch

unread,
Aug 26, 2024, 10:06:04 AM8/26/24
to PiDP-10
After a bit of flailing around I indeed discovered that it wasn't simply a matter of dropping the KL binary into pidp10.  Currently rebuilding everything on the Pi.

Late last evening the x86_64 build on my desktop finally completed.  I dropped in the NAT networking stanzas from KA, adjusting the host ip to 192.168.1.100.  Networking was completely non-functional.  Nothing worked in either direction.  When the Pi build completes I'll try again in that environment.

Steven Hirsch

unread,
Aug 26, 2024, 10:07:15 AM8/26/24
to PiDP-10
Not at all surprised.  I'm 99% convinced that the ITS ftp server is broken.  

Eric Swenson

unread,
Aug 26, 2024, 10:33:46 AM8/26/24
to Richard C, PiDP-10
That’s odd.  I’ve *always* used “make BIN/pdp10-kl”, and I just tried it again after a “make clean” and it worked just fine.  

I did try “make pdp10-kl” just now, and that worked too (after a “make clean”).

I’m executing that command from the top-most directory of a clone of the "g...@github.com:rcornwell/sims.git” repository.

— Eric

Eric Swenson

unread,
Aug 26, 2024, 10:40:10 AM8/26/24
to Steven Hirsch, Richard Cornwell, PiDP-10
Well, if it is a problem with the ITS ftp server, then is must be a specific interaction with something in your environment.  I say that because:

1) I have no issues with the ITS FTP server when I run ITS under klh10.
2) Even under pdp10-ka, I can connect to the ITS FTP server from the host, and transfer files.

At the moment, under macOS, I’m unable to boot ITS with pdp10-kl or pdp10-ks (yes, I have KL and KS ITS systems on the disks).  Booting the KL ITS gives me (as the last messages):

➜  exl pdp10-kl run

KL-10 simulator Open SIMH V4.1-0 Current        git commit id: c8efa9f1
/Users/eswenson/systems/exl/run-12> at -u tty 10021
%SIM-INFO: Listening on port 10021
/Users/eswenson/systems/exl/run-14> at -u tty line=14,10024 speed=9600
%SIM-INFO: Line 14 Listening on port 10024
/Users/eswenson/systems/exl/run-16> at -u tty line=13,10023 speed=9600
%SIM-INFO: Line 13 Listening on port 10023
/Users/eswenson/systems/exl/run-18> at -u tty line=12,10022 speed=9600
%SIM-INFO: Line 12 Listening on port 10022
/Users/eswenson/systems/exl/run-33> set imp ip=172.16.0.4/24
%SIM-INFO: IMP DHCP disabled
NAT network setup:
        gateway       =172.16.0.2/24(255.255.255.0)
        DNS           =172.16.0.3
        dhcp_start    =172.16.0.15
        redir TCP     =5095:172.16.0.4:95
        redir TCP     =5021:172.16.0.4:21
        redir TCP     =5023:172.16.0.4:23
  Protocol[State]    FD  Source Address  Port   Dest. Address  Port RecvQ SendQ
  TCP[HOST_FORWARD]  15               *  5095      172.16.0.4    95     0     0
  TCP[HOST_FORWARD]  14               *  5021      172.16.0.4    21     0     0
  TCP[HOST_FORWARD]  13               *  5023      172.16.0.4    23     0     0
/Users/eswenson/systems/exl/run-35> at imp nat:gateway=172.16.0.2,network=172.16.0.0/24,tcp=5023:172.16.0.4:23,tcp=5021:172.16.0.4:21,tcp=5095:172.16.0.4:95
%SIM-INFO: Eth: opened OS device nat:gateway=172.16.0.2,network=172.16.0.0/24,tcp=5023:172.16.0.4:23,tcp=5021:172.16.0.4:21,tcp=5095:172.16.0.4:95

And then no input is accepted (I’m not at Exec DDT).

For pdp10-ks, I get:

➜  exs pdp10-ks run

KS-10 simulator Open SIMH V4.1-0 Current        git commit id: c8efa9f1
/Users/eswenson/systems/exs/run-5> at -u dz0 10030
%SIM-INFO: Listening on port 10030
/Users/eswenson/systems/exs/run-7> at -u dz0 line=7,10032
%SIM-INFO: Line 7 Listening on port 10032
/Users/eswenson/systems/exs/run-9> at -u dz0 line=6,10031
%SIM-INFO: Line 6 Listening on port 10031
/Users/eswenson/systems/exs/run-17> set imp ip=172.16.0.4/24
%SIM-INFO: IMP DHCP disabled
NAT network setup:
        gateway       =172.16.0.2/24(255.255.255.0)
        DNS           =172.16.0.3
        dhcp_start    =172.16.0.15
        redir TCP     =4095:172.16.0.4:95
        redir TCP     =4021:172.16.0.4:21
        redir TCP     =4023:172.16.0.4:23
  Protocol[State]    FD  Source Address  Port   Dest. Address  Port RecvQ SendQ
  TCP[HOST_FORWARD]  12               *  4095      172.16.0.4    95     0     0
  TCP[HOST_FORWARD]  11               *  4021      172.16.0.4    21     0     0
  TCP[HOST_FORWARD]  10               *  4023      172.16.0.4    23     0     0
/Users/eswenson/systems/exs/run-19> at imp nat:gateway=172.16.0.2,network=172.16.0.0/24,tcp=4023:172.16.0.4:23,tcp=4021:172.16.0.4:21,tcp=4095:172.16.0.4:95
%SIM-INFO: Eth: opened OS device nat:gateway=172.16.0.2,network=172.16.0.0/24,tcp=4023:172.16.0.4:23,tcp=4021:172.16.0.4:21,tcp=4095:172.16.0.4:95

And then no input is accepted (I’m not at DSKDMP) yet.

Not sure why this is happening.  Both pdp10-kl and pdp10-ks worked on these same disk images (on Ubuntu) a couple months ago.  The only differences are:

1) I moved the disk images from Ubuntu Linux to my Mac
2) I rebuilt pdp10-kl and pdp10-ks from the g...@github.com:rcornwell/sims.git repo, master branch.

— Eric

Steven Hirsch

unread,
Aug 26, 2024, 11:01:52 AM8/26/24
to PiDP-10
Source code disconnect rears its head...  After our message exchange yesterday I pulled the PDP-10/its tree and have been building there.  There is no BIN directory at the top level.

Steven Hirsch

unread,
Aug 26, 2024, 11:06:12 AM8/26/24
to PiDP-10
The README.md for PDP-10/its tells me:

To start ITS, type `./start`.  If you see `KLH10#`, type `go` and                                                                
Enter.  If you see the `DSKDMP` prompt, type `its`, press Enter, and then 
<kbd>ESC</kbd><kbd>G</kbd>.  If you use the `pdp10-kl` emulator there is no 
prompt and you need to type <kbd>ESC</kbd><kbd>L</kbd> `ITS`, press Enter, 
and then <kbd>ESC</kbd><kbd>G</kbd>.                                                               

Eventually, you will see `SYSTEM JOB USING THIS CONSOLE`.  You are now ready 
to log in, so type <kbd>CTRL</kbd><kbd>Z</kbd>.  See [doc/DDT.md](doc/DDT.md) for a list of useful commands.                     

And, indeed, that does work on my x86_64 build (although I could not get networking to function in that environment).

Eric Swenson

unread,
Aug 26, 2024, 11:54:04 AM8/26/24
to Steven Hirsch, PiDP-10
We’re talking about different repos. I was going to the true source of the Richard Cornwell simulators (pdp10-k*). That is this repo:

apple-touch-icon-180x180-a80b8e11abe2.png

And the BIN directory, while not present on fit clone, gets created on build, and the pdp10-k* executables do end up there. And “make BIN/pdp10-kl” does work. I just pulled and tried it.

That is NOT the correct make command line for the ITS repo located here:

unless you first cd into the tools/sims directory, which is a git submodule that references Rich’s repository. Not that this submodule probably doesn’t point to the master branch HEAD commit, but to some other commit that Lars has vetted.

To build ITS with the pdp10-kl simulator from the ITS repo, you’d invoke:

make EMULATOR=pdp10-kl 

That first builds the pdp10-kl simulator from the git submodule and then builds an ITS system that uses that simulator.

— Eric (KC6EJS)

On Aug 26, 2024, at 08:01, Steven Hirsch <snhi...@gmail.com> wrote:

Source code disconnect rears its head...  After our message exchange yesterday I pulled the PDP-10/its tree and have been building there.  There is no BIN directory at the top level.

Eric Swenson

unread,
Aug 26, 2024, 12:00:54 PM8/26/24
to Steven Hirsch, PiDP-10
I do know this, Steve. I’ve been using the pdp10-k* simulators and the KLH10 simulators for years.

But in my two most recent tests booting my EXL (KL) and EXS (KS) systems copies over from my Ubuntu system to my Mac, and with rebuild pdp10-kl and pdp10-ks simulators, they hang after the networking setup and before either DDT (KL) or DSKDMP (KS) start.  And yes, I know there is no prompt for DDT. But normally you can enter DDT commands after you start a KL system. And for KS, normally you see a DSKDMP prompt. And I don’t.

I’m building ITS systems from scratch on my Mac and the build is proceeding fine (having already booted KL ITS a few times) so I’m pretty sure I somehow corrupted my EXL and EXS systems — although they were both running just fine on my Ubuntu machine before I tar’ed them up and moved them to my Mac.

— Eric (KC6EJS)

On Aug 26, 2024, at 08:06, Steven Hirsch <snhi...@gmail.com> wrote:

The README.md for PDP-10/its tells me:

Steven Hirsch

unread,
Aug 26, 2024, 12:34:57 PM8/26/24
to PiDP-10
I'm so confused about repositories that I'm throwing in the towel on the build/test part of my activities.   Everyone has been super helpful and I've received a lot of valuable input, but every time I pull sources and build something it turns out the suggesting party is using a different code base.   You folks have been working with this environment for years and instinctively understand what's where.  To the newcomer it's overwhelming.  I'm confident the networking issues will all get straightened out at some point and I'll look forward to seeing it!

Certainly there are no hard feelings on my end.  This is a hobby, after all.   There's plenty to learn even in the lack of networking :-)

Eric Swenson

unread,
Aug 26, 2024, 12:57:29 PM8/26/24
to Steven Hirsch, PiDP-10
Yeah. It is confusing. I, for years, ONLY used the ITS repository (as my sources for ITS and emulators). But since the emulators are only included in the ITS repository as git submodules, where the real repositories were elsewhere, there were many times when the submodule snapshot was behind the source repository (eg Rich’s repo) and when bugs I encountered were met with Rich’s comments to me to use the real source not the submodule, I got used to getting the pdp10-k* simulators from their original repository.

However, I don’t know whether Oscar has made any changes to the simulators that you NEED when using PiDP10.  I was kind of expecting someone more knowledgeable about PiDP10 would come out and say whether you HAD to use his repo or whether you could go to the source.  His repo is here:  https://github.com/obsolescence/pidp10

Our ITS repo is using a fork of Rich’s repo from 6 months ago. I don’t know how that differs from the HEAD of the master branch in Rich’s repo. I do know that I’ve been successfully using Rich’s master branch HEAD for quite some time now — with the ITS built from the ITS repo.

— Eric (KC6EJS)

On Aug 26, 2024, at 09:35, Steven Hirsch <snhi...@gmail.com> wrote:

I'm so confused about repositories that I'm throwing in the towel on the build/test part of my activities.   Everyone has been super helpful and I've received a lot of valuable input, but every time I pull sources and build something it turns out the suggesting party is using a different code base.   You folks have been working with this environment for years and instinctively understand what's where.  To the newcomer it's overwhelming.  I'm confident the networking issues will all get straightened out at some point and I'll look forward to seeing it!

Richard C

unread,
Aug 26, 2024, 4:01:30 PM8/26/24
to PiDP-10
I am pretty sure that Oscar clones Lars's repo if you ask for source. The default disk are however from Oscars generation. The emulator used should match what is in my repo. There has been no major changes to PDP10 emulators in about a year. The last change was to fix issue with number of bits in KS10 serial number.

Rich

Steven Hirsch

unread,
Aug 26, 2024, 5:47:15 PM8/26/24
to Richard C, PiDP-10
On Mon, 26 Aug 2024, Richard C wrote:

> I am pretty sure that Oscar clones Lars's repo if you ask for source.
> The default disk are however from Oscars generation. The emulator used
> should match what is in my repo. There has been no major changes to
> PDP10 emulators in about a year. The last change was to fix issue with
> number of bits in KS10 serial number.

I believe we'll find the problem lies within ITS. After walking away for a
few hours, I built an entire pdp10-kl environment from:

https://github.com/PDP-10/its

on the Raspberry Pi and configured networking to use a tap interface with
its own static IP address. Lo and behold, ftp from Linux to ITS is
working just fine on this system, as is telnet in both directions. ftp
from ITS to linux still doesn't work. The server throws an error when it
sees low port addresses.

One big difference I see right away: The PiDP-10 KA detaches off a task
on the console when it receives an incoming connection (before going
numb), while the KL I built announces a login (mentioning ftp) just as one
would see when telnetting from Linux to ITS. Not knowing the code or
environment in depth I do not know if that's expected or not. But it is a
distinct difference and maybe a hint?

Malcolm Ray

unread,
Aug 26, 2024, 5:53:54 PM8/26/24
to Steven Hirsch, Richard C, PiDP-10
If you want to deal with the low port number problem, you could use
vsftpd and add this to its config file:

port_promiscuous=YES

The main function of this is to allow the PORT command to specify an IP
address other than the one the control connection is from. But it also
disables the "port number must be above 1023" check.

Obviously there's a risk with this configuration, but for a test server
not accessible from the Internet, it's acceptable.

Steven Hirsch

unread,
Aug 27, 2024, 12:48:04 PM8/27/24
to PiDP-10
Spent another few hours with this.  The KL build I made from the PIDP-10 its tree has functional ftp from host to ITS.  The KA build from that same repo does not, nor does the PiDP-10 KA build.

After poking around a bit, I'm seeing a very distinct difference in the way KA and KL handle incoming ftp connections.

################################

KA system console:

TOP LEVEL INTERRUPT 200 DETACHED JOB # 3, USR:___003 TCP    12:25:47

KA peek:

KA ITS 1651  Peek 631   8/27/2024 13:32:23  Up time = 2:14
Memory: Free=413   Runnable Total=11 Out=7     Users: High=20 Runnable=1
Index Uname Jname Sname     Status   TTY    Core Out %Time    Time PIs
  0 SYS    SYS    SYS        HANG    ?        73   0   0%          
  1 CORE   JOB    CORE       UUO     ?         0   0   0%          
  3 ___003 TCP    SYN025     10!0    ? DSN    12   0   0%          PCLSR .VALUE!   <----- This is the job
  4 TARAKA CNAVRL CNAVRL     10!0    ? DSN    29   0   0%          .VALUE  
  5 ___005 HACTRN      0     HANG    >        30   9   0%          
 13  ___005 PEEK        0    SLEEP   T52      11   2   0%          
  6 TARAKA PAPSAV PAPSAV     HANG    ?         1   0   0%          
  7 TARAKA NAMDRG NAMDRG     HANG    ?        29   0   0%          
 10 PFTHMG DRAGON PFTHMG     HANG    ?         6   0   0%          
 11 TARAKA JOB.07 SYS        HANG    ?         3   0   0%          
 12 .BATCH BATCHN .BATCH     SLEEP   ?       126  23   0%          
 14 ___014 TCP    SYN025     10!0    ? DSN    12   0   0%          .VALUE    <-----  This is left from a previous attempt
 15 GUNNER GUNNER GUNNER    _SLEEP   ?        11   3   0%          
 16 53TLNT TELSER 172433     SLEEP   ?         1   0   0%          
 17 ___017 HACTRN      0     HANG    >        30   9   0%          
  2  ___017 PEEK        0    +TTYBO  T53 C    11   3   0%          
Fair Share 100%     Totals:                  385       0%
Logout time =         Lost 0%  Idle 98%  Null time = 2:15

NOTE:  The ___nnn TCP jobs remain in the process list until the system is restarted!

###################################

KL system console:

 LOGIN  433F02 0 172433 12:20:10

KL peek:

KL ITS 1652  Peek 632   8/27/2024 12:36:07  Up time = 40
Memory: Free=1872  Runnable Total=11 Out=5     Users: High=12 Runnable=0
Index Uname Jname Sname     Status   TTY    Core Out %Time    Time PIs
  0 SYS    SYS    SYS        HANG    ?        66   0   0%          
  1 CORE   JOB    CORE       UUO     ?         0   0   0%          
  2 ___002 DEMSTR ___002     SLEEP   ?         1   0   0%          
  3 20TLNT TELSER 172433     SLEEP   ?         1   0   0%          
  4 COMSAT IV     IV         10!0    ? DSN    29   0   0%          .VALUE  
  5 ___005 HACTRN      0     HANG    >        30   9   0%          
  7  ___005 PEEK        0    +TTYBO  T20 C    11   3   0%          
  6 570F06 TCP    172570     TCPI    ?        12   0   0%          <------ This is the job 
 10 TARAKA PAPSAV PAPSAV     HANG    ?         1   0   0%          
 11 PFTHMG DRAGON PFTHMG     HANG    ?         6   0   0%          
Fair Share 4%     Totals:                    157       0%
Logout time =         Lost 0%  Idle 4%  Null time = 2

NOTE: The "TCPI" job goes away as soon as I close the client connection.

######################################

This seems to suggest a major difference in how the systems are reacting to a connection request.  I've done a lot of poking around in the filesystems and the build scripts and nothing is really jumping out.  In particular, it looks like the ITS build flow is identical between KL and KA.  So where is the difference coming from?

I'll keep banging my head against it, but I have a feeling someone like Lars or Richard would look at this and go "... of course, it's ...."  :-)

Steven Hirsch

unread,
Aug 27, 2024, 2:59:04 PM8/27/24
to PiDP-10
Not sure if this is pertinent to the problem, but COMSAT never runs on the PiDP-10 KA.  When I try to send mail to an internet address it complains:

>^Cend! Communications satellite apparently dead.
Re-launching, hang on... now in orbit!
*

But COMSAT is never started.  I note that it's persistently running on the KL.  Checked the various batch file links on both systems and they appear to be similar - EXCEPT - the KA has a few that are not present on the KL.  Still digging.

Eric Swenson

unread,
Aug 27, 2024, 3:03:22 PM8/27/24
to Steven Hirsch, PiDP-10
I provided instructions to fix this a while back on this list.  It runs perfectly fine when:

1) the IP address of ITS (IMPUS3) matches the BUGHST value in COMSAT.
2) the host table has an entry for the KA machine with the same IP address as IMPUS3
3) the COMSAT database files are recreated
4) the COMSAT directory isn’t full.

It is the case that the KA build, as it comes off the pidp10 install is BROKEN with respect to IP networking.

The IP address is, I believe 10.3.0.6 (in ITS), but there is no entry for the KA machine in SYSHST;H3TEXT >.  There is one for DB, but it has an IP of 192.168.0.100 (or maybe 192.168.1.100).   And the value of the BUGHST in COMSAT is wrong, I believe.

If there is a record of this mailing list, see long discussions on the subject.

— Eric

-- 
You received this message because you are subscribed to the Google Groups "PiDP-10" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-10+u...@googlegroups.com.

Eric Swenson

unread,
Aug 27, 2024, 3:36:13 PM8/27/24
to Steven Hirsch, PiDP-10
Since it is likely that others will want a cookbook for fixing the issue with COMSAT and KA ITS, here is one:

——

When you bring up KA ITS, you'll see a message on the operator console like this:

 LOGIN  TARAKA 0 12:09:11
TOP LEVEL INTERRUPT 200 DETACHED JOB # 4, USR:COMSAT IV     12:09:12

This means that COMSAT has crashed.

If you look at the IP address that COMSAT is configured with:

comsat$j
$l .mail.;comsat launch
bughst/'NEW$:   SHOWQ+50,,PAT+6   =30052000544

you'll note that that octal address is: 192.168.1.100

If you look at the value that ITS has for the machine's IP address:

sys$j!
*impus3=1200600006

You'll see that that that octal address is: 10.3.0.6

And if you look at the host table (SYSHST;H3TEXT >), you'll find an entry like this:

HOST : CHAOS 177002, 192.168.1.100 : DB-ITS.EXAMPLE.COM, DB : PDP-10 : ITS : :

(And there is no HOST entry for a machine with the name KA).

The easiest fix is to:

1) fix the host table
2) fix COMSAT's variables
3) generate COMSAT's database files
4) fix COMSAT's mailing lists file
5) restart COMSAT

To fix the host table, change the line:

HOST : CHAOS 177002, 192.168.1.100 : DB-ITS.EXAMPLE.COM, DB : PDP-10 : ITS : :

to

HOST : CHAOS 177002, 10.3.0.6 : KA : PDP-10 : ITS : :

Save the updated SYSHST;H3TEXT > and then compile the host table:

:SYSHST;H3MAKE

Make sure that there were no errors (look for a H3ERR file) and make
sure that there exists a file SYSBIN;HOSTS3 NNNNNN where NNNNNN matches
the FN2 of the SYSHST;H3TEXT NNNNNN you just created.

Now your host table matches your ITS IP address.

Next, you need to fix COMSAT.

To do that, create a job for COMSAT:

comsat$j

Then load in the compiled (but not dumped) binary for COMSAT

$l .mail.;comsat bin

And now set various variables:

BUGHST/1200600006
DEBUG/0
xvers/0

And then purify the binary:

purify$g

and when DDT prints out:

:PDUMP DSK:.MAIL.;COMSAT LAUNCH

Type an <enter> to confirm.

Now, you have an correct .MAIL.;COMSAT LAUNCH executable.  This will be
launched by TARAKA on startup, or by :MAIL when invoked if COMSAT isn't
running.

However, before you do this, you need to make sure that COMSAT's database
files are created.

To do that, do this:

comsat$j
$l .mail.;comsat launch
debug/-1
mfinit$g

You should see a message like:

:$ File Directory Initialization successfully completed...
Proceeding will launch Comsat. $
*

Don't proceed the COMSAT job, because it will be run as your
UNAME rather than COMSAT's.  Simply kill the COMSAT job:

:kill

Now, there is one last step.  The file .MAIL.;NAMES > has entries
for DB (ITS) rather than KA.  It needs updating.

In emacs, open up .mail.;names > and do a query replace of all instances of DB
with KA.

To do that, enter the Query Replace command:

<escape>%

The echo area should display:

MM Query Replace$

Type in DB<escape>KA<escape><escape>

Your cursor will be positioned at the first instance of the string DB.

Type in

!

Yes, just the exclamation point character.  This will replace all instances
of DB with KA.

Save the file. (<control>x<control>s) and return to DDT (<control>x<control>c).

Now, you are ready to launch COMSAT.

But first, make sure there is no (dead) comsat running, but running peek$k

Look for any job with the UNAME COMSAT (and the JNAME IV).  If you find one,
kill the job by typing:

<job number>X

Then, exit PEEK with the "q" command.

Now, send yourself a message:

:MAIL <your-uname>
<some message>
<control>c

You should see the message:

C Communications satellite apparently dead.
Re-launching, hang on... now in orbit!

Now, COMSAT should be running.  You can check with PEEK.

You also should see that your mail was delivered. Type:

:PRMAIL<enter>

to read (and optionally delete) it.


Please let me know if this doesn’t work or if I’ve made any mistakes in the above.

I did test this out by building a KA ITS, noting that COMSAT died on startup, and then performing all these steps to fix it.  

Note that as a result of fixing COMSAT, your INQUIR updates should start working too.  In addition, PFT (Puff the Magic Dragon) will be delivering email regarding reports that need reviewing and birthday notifications.  The recipients of those messages will be gleamed from perusing the .MAIL.;NAMES > file.

— Eric

Eric Swenson

unread,
Aug 27, 2024, 3:47:30 PM8/27/24
to Steven Hirsch, PiDP-10
One more thing on this topic.  If you are wondering how to convert octal IP addresses on ITS to the familiar octet pattern, see this example:

Let’s say you want to convert 1200600006 to a standard-formatted IP address.  First ensure that the value has 12 octal digits.  In this case, you’ll have to add two 0s at the left to get:

001200600006

Then, break that value up into octal values:

001 200 600 006

Then, convert the above to binary:

000 000 001 010 000 000 110 000 000 000 000 110

Then, group into 4 (ignored) bits, followed by 4 8-bit bytes:

0000  00001010 00000011 00000000 00000110

Then, ignoring the first 4 bits, convert each 8-bit byte to decimal:

      10      3        0        6

So 10.3.0.6 is the same as 1200600006 octal.

Lars created a shell script that will do the trick too.  You *have* to make sure the input is 12 octal digits long when invoking it:

#!/bin/bash

if [ $# -eq 0 ]; then
 echo "Please provide an IP address as an argument"
 exit 1
fi

octal=$1
ip=""
for i in {1..4}; do
 octet=$(echo $(( $octal >> 8*(4-$i) & 255 )))
 ip="$ip$octet."
done

echo ${ip%?}

You could invoke it like this:

./ipconvert.sh 001200600006

And it should respond:

10.3.0.6

But it’s much more fun to do it the hard/manual way!

— Eric

Malcolm Ray

unread,
Aug 27, 2024, 4:33:40 PM8/27/24
to Eric Swenson, Steven Hirsch, PiDP-10
Eric,

Thanks for this. After fixing H3TEXT and HOSTS3, inbound ftp connections work.

Moral: before building the ITS distribution, check that conf/network is set up correctly!

Mike Kostersitz

unread,
Aug 27, 2024, 4:39:16 PM8/27/24
to Malcolm Ray, Eric Swenson, Steven Hirsch, PiDP-10
I'll be adding this to the troubleshooting page on the github repo shortly. Thanks Eric for the details and writeup

Mike

From: pid...@googlegroups.com <pid...@googlegroups.com> on behalf of Malcolm Ray <m...@apathetic.org.uk>
Sent: Tuesday, August 27, 2024 1:33 PM
To: Eric Swenson <er...@swenson.org>; Steven Hirsch <snhi...@gmail.com>
Cc: PiDP-10 <pid...@googlegroups.com>
Subject: Re: [pidp-10] Focus on inoperative ftp
 

Steven A. Falco

unread,
Aug 27, 2024, 5:16:24 PM8/27/24
to Eric Swenson, PiDP-10
On 8/27/24 03:35 PM, Eric Swenson wrote:
> Since it is likely that others will want a cookbook for fixing the issue with COMSAT and KA ITS, here is one:

This is fantastic! I can now use ftp!

One correction. You have peek$k but I think that should be peek^k.

And now a question - is there a way to prevent the GUNNER from logging out an idle user?

Steve

>
> ——
>>> >https://github.com/PDP-10/its <https://github.com/PDP-10/its>
>>> >
>>> > on the Raspberry Pi and configured networking to use a tap interface
>>> > with
>>> > its own static IP address.  Lo and behold, ftp from Linux to ITS is
>>> > working just fine on this system, as is telnet in both directions.
>>> > ftp
>>> > from ITS to linux still doesn't work.  The server throws an error
>>> > when it
>>> > sees low port addresses.
>>> >
>>> > One big difference I see right away:  The PiDP-10 KA detaches off a
>>> > task
>>> > on the console when it receives an incoming connection (before going
>>> > numb), while the KL I built announces a login (mentioning ftp) just
>>> > as one
>>> > would see when telnetting from Linux to ITS.  Not knowing the code or
>>> > environment in depth I do not know if that's expected or not.  But it
>>> > is a
>>> > distinct difference and maybe a hint?
>>> >
>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups "PiDP-10" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an email topidp-10+...@googlegroups.com <mailto:pidp-10+u...@googlegroups.com>.
>>> To view this discussion on the web visithttps://groups.google.com/d/msgid/pidp-10/9fd00a19-fc3d-43a9-9cab-91c9487c986an%40googlegroups.com <https://groups.google.com/d/msgid/pidp-10/9fd00a19-fc3d-43a9-9cab-91c9487c986an%40googlegroups.com?utm_medium=email&utm_source=footer>.
>>
>
> --
> You received this message because you are subscribed to the Google Groups "PiDP-10" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to pidp-10+u...@googlegroups.com <mailto:pidp-10+u...@googlegroups.com>.
> To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-10/4FBB0D91-BB90-4EE3-A357-6B19CD1225ED%40swenson.org <https://groups.google.com/d/msgid/pidp-10/4FBB0D91-BB90-4EE3-A357-6B19CD1225ED%40swenson.org?utm_medium=email&utm_source=footer>.

Eric Swenson

unread,
Aug 27, 2024, 5:31:16 PM8/27/24
to Steven A. Falco, PiDP-10
Sorry about the typo. Yes, it is PEEK^k.

There are two approaches to fixing GUNNER. One approach is to disable it altogether. Simply delete the file SYS;ATSIGN GUNNER.

The second is to rebuild it with your UNAME substituted for GSB’s uname in the code that treated him special.

The source is in SYSEN2;GUNNER MTA383. Or whatever version is the highest. Edit the file, search for the string GSB (should only appear once). Change to your UNAME and save the file.

Reassemble GUNNER:

:midas sysbin;_sysen2;gunner >

And copy to the place it is loaded from:

:copy sysbin;gunner bin,sys;atsign gunner

The first time it runs, it should purify and redump itself, resulting in a different contents than the assembled copy in SYSBIN.

— Eric (KC6EJS)

> On Aug 27, 2024, at 14:16, Steven A. Falco <steve...@gmail.com> wrote:

Steven Hirsch

unread,
Aug 27, 2024, 8:15:55 PM8/27/24
to PiDP-10
Fantastic!  Fixing the system id and address resulted in a working ftp server.  Just curious:  Does FTPS depend on COMSAT IV being up, or was it being hosed by a side effect of COMSAT crashing.

Thanks for nailing the problem :-).

FWIW, when I followed your directions I did not end up with a persistent COMSAT IV job although I was able to send mail.  After a system shutdown and restart it did come up properly.

I'm also curious about the '<job number>X' command to kill jobs by number.  Perhaps I'm misinterpreting what that means, but when it type 16X to kill job 16 nothing happens.

Eric Swenson

unread,
Aug 27, 2024, 8:26:52 PM8/27/24
to Steven Hirsch, PiDP-10
No.  FTPS doesn’t depend on COMSAT at all.  The issue that was preventing FTPS from working was that the hostname (KA) didn’t have an entry in the HOSTS3 (host table) database.  Fixing the host table made it so that FTPS could look up its IP address in the host table.  

What did you end up with?  Are you sure?  If you could send mail then COMSAT *was* running, and there must have been a job for it.  I just killed my COMSAT on EX and then did:

:mail els
<message>
^C

I got the message saying that it was launching COMSAT and then I ran PEEK.  I saw this:

EX ITS 1652  Peek 632   8/27/2024 17:24:45  Up time = 11:09:27:40
Memory: Free=199   Runnable Total=11 Out=3     Users: High=14 Runnable=1
Index Uname Jname Sname     Status   TTY    Core Out %Time    Time PIs
  0 SYS    SYS    SYS        HANG    ?        60   0   0%         18
  1 CORE   JOB    CORE       UUO     ?         0   0   0%          1
  2 11TLNT TELSER BRIDGE     SLEEP   ?         1   0   0%          1
  3 COMSAT JOB.07 SYS        HANG    ?         3   0   0%
  4 COMSAT IV     IV         HANG    ?        30   0   0%
  5 .BATCH BATCHN .BATCH     SLEEP   ?       126  11   0%         19
  6 EJS    HACTRN EJS        HANG    >        30   9   0%
 11  EJS    P      EJS       +TTYBO  T11 C    11   3   0%
  7 PFTHMG DRAGON DRAGON     HANG    ?         6   0   0%          3
 10 TARAKA PAPSAV PAPSAV     HANG    ?         1   0   0%
 13 GUNNER GUNNER GUNNER    _SLEEP   ?        11   3   0%
Fair Share 1%     Totals:                    279       0%         45
Logout time = 1:07    Lost 0%  Idle 1%  Null time = 58:48

As you can see, I now have the two COMSAT jobs:

UNAME=COMSAT, JNAME=IV
UNAME=COMSAT, JNAME=JOB.07

The <job number>X command is a PEEK command.  Assuming you are looking at a listing of the running jobs, using that command should cause PEEK to prompt you with “GUN DOWN THIS TREE?” to which you’d answer “Y”.  The job with job number <job number> should disappear.

Note from the above PEEK output, that the job number is labeled “Index” above.  So, for example the job number of COMSAT IV is 4.  4X would offer to gun down the tree and a “Y” answer to that prompt would gun down the job tree (that job and any inferiors, of which there are none in this case).

— Eric

Eric Swenson

unread,
Aug 27, 2024, 8:28:14 PM8/27/24
to Steven Hirsch, PiDP-10
And I realized that the reason why FTP was working for me on my KA instance, when I was getting different results from you yesterday, was that I had already fixed the host table on my machine!  :-). And COMSAT.

Steven Hirsch

unread,
Aug 27, 2024, 8:37:00 PM8/27/24
to PiDP-10
Veeery strange...  I saw the message about COMSAT being launched and the mail was sent (saw it on next login).  However the program wasn't persistent until a restart.

The <job#>X command under peek (sorry about that, read too quickly) does give me the option to kill the tree. I answer "Y" and there's no complaint - however the job is still running!

Steven A. Falco

unread,
Aug 28, 2024, 12:22:16 PM8/28/24
to pid...@googlegroups.com
On 8/27/24 03:35 PM, Eric Swenson wrote:
> Since it is likely that others will want a cookbook for fixing the issue with COMSAT and KA ITS, here is one:

I see that the github ITS project has a file conf/network, and the Makefile uses that to modify H3TEXT. Would it make sense to extend the build process slightly to also set the ITS name of the system?

I.e., have build/h3text.2018 change from having the name hardcoded as DB:

;;; Generated by build script.
HOST : CHAOS 177002, %IP% : %HOSTNAME%, DB : PDP-10 : ITS : :

to using a tag like:

;;; Generated by build script.
HOST : CHAOS 177002, %IP% : %HOSTNAME%, %ITSNAME% : PDP-10 : ITS : :

Then we could add a definition in conf/network, analogous to the HOSTNAME variable, for example:

ITSNAME=KA

That would let us modify the Makefile slightly to do:

$(OUT)/syshst/$(H3TEXT): build/$(H3TEXT)
$(MKDIR) $(OUT)/syshst
$(SED) -e 's/%IP%/$(IP)/' \
-e 's/%ITSNAME%/$(ITSNAME)/' \
-e 's/%HOSTNAME%/$(HOSTNAME)/' < $< > $@
$(CAT) conf/hosts >> $@

I guess one would still need to fix up COMSAT, but it should be possible to automate that part too.

Of course there is value in learning how to do things the way the operators had to back in the day...

Steve

Eric Swenson

unread,
Aug 28, 2024, 3:39:16 PM8/28/24
to Steven A. Falco, pid...@googlegroups.com
Yes, but there is already a variable used for the machine name. I think it is MCHN. The hostname should be set to %MCHN%-ITS.example.com.

— Eric (KC6EJS)

> On Aug 28, 2024, at 09:22, Steven A. Falco <steve...@gmail.com> wrote:
> --
> You received this message because you are subscribed to the Google Groups "PiDP-10" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to pidp-10+u...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-10/fa7195c7-405f-4b63-be3a-7255b5b9f043%40gmail.com.
Message has been deleted

Andrew Barron

unread,
Aug 13, 2025, 9:29:10 AMAug 13
to PiDP-10
Thanks Eric!!

This works great! now Mail works, and I can now FTP from my Windows PC into ITS. That didn't work before. I can transfer files in either direction. 

Just a note. 
If you 'put' a file called HELLO.MAC from Windows to ITS, it will save as HELLO. 1 
If you 'get' a file called ZORK SAVE from ITS to Windows it will save it as SAVE with no file extension. A file called HELLO 2 will save as 2 with no file extension.

I have the same old problem using FTP from ITS to a Windows server. It logs in and accepts the password, but it will not transfer files. This is a known issue, and probably not repairable. 

As soon as I rebooted after the changes, I got a heap of mails that I had previously sent, but never received.

Regarding FTP, I had already done the TAP change recommended by 'Bile Geek' on the Raspberry Pi to get FTP working on TOPS-20. I don't know if they have any impact on the ITS situation. So I will leave the following note, in case it helps someone. I suspect this is of no benefit to ITS because the IP range is different. Anyway FTP works, so that is great.

AndrewB

At the Raspberry Pi terminal prompt, type;

sudo ip tuntap add mode tap tap0
sudo ip addr add 10.0.2.2/24 dev tap0
sudo ip link set dev tap0 up

Eric Swenson

unread,
Aug 13, 2025, 10:20:46 AMAug 13
to Andrew Barron, PiDP-10
To resolve your filename issue, provide two file names for your GET and PUT requests, for example when doing a GET on the host to retrieve ZORK SAVE, do this:

GET “zork save” zork.save

Or 

PUT hello.mac “hello mac”

— Eric

On Aug 13, 2025, at 06:29, Andrew Barron <zl...@outlook.co.nz> wrote:

Thanks Eric!!
Message has been deleted
Message has been deleted

Andrew Barron

unread,
Aug 15, 2025, 10:17:55 AMAug 15
to PiDP-10
Oh! yes that helps a lot :-)

Ric Werme

unread,
Aug 15, 2025, 10:18:02 AMAug 15
to PiDP-10

I don't have any knowledge to add, but let me note that I am _finally_ getting serious about bringing up my PiDP-10 with its on the Pi, and using things mainly from a LinuxMint desktop.  I managed to make an "ejw" user directory tonight (Eric J Werme), and am wandering through docs like my ancient (printed at CMU around 1973) "DDT Reference Manual."  I'm not sure if it's online, it doesn't appear to be at bitsavers.

At any rate, I want to port my MACRO-10 LIGHTS program to the PiDP-10 and add a binary date/time display.  I haven't quite figured out it I should take TOPS-10 approach (LIGHTS can be built to run stand-alone, so it won't need TOPS-10) or port it to MIDAS.  I need to use MIDAS for a later, bigger graphics hack for the 340 display, if that works okay.

Two notes:

1) I'm very glad to see ftp working.  BTW, I wrote the ARPAnet FTP client used at CMU and Harvard.

2) How do you run the FTP server on ITS?

  -Ric

Eric Swenson

unread,
Aug 15, 2025, 11:22:53 AMAug 15
to Ric Werme, PiDP-10
The ITS FTP server is “running” by default. There is no ITS job for it — when a TCP connection comes in on the right port, ITS spawns a job to handle it (and that job performs the FTP server protocol). 

In the DEVICE directory, you’ll find links with name like:

TCP SYN025

The number at the tail of the FN2 is an octal port number. So 25o is 21 — the FTP server port number.

This link links to SYSBIN; FTPS BIN.  That is the implementation of the FTP server protocol handler.

Doing a

:BINPRT SYSBIN;FTPS BIN

Shows that this binary was assembled from

SYSNET; FTPS 336

That is the source code for the FTP server support.

As you can guess, if you want to provide a TCP protocol handler to ITS, create a link in the DEVICE directory with a name of TCP SYNnnn, where nnn is the octal port number. The link target should be the protocol handler.

Probably much more than you wanted to know — the short answer is that the FTP server is always ready to handle an inbound FTP connection.

On Aug 15, 2025, at 07:18, Ric Werme <r...@wermenh.com> wrote:



Lars Brinkhoff

unread,
Aug 16, 2025, 2:22:30 AMAug 16
to PiDP-10
Ric wrote:
wandering through docs like my ancient (printed at CMU around 1973) "DDT Reference Manual."  I'm not sure if it's online, it doesn't appear to be at bitsavers.

 
At any rate, I want to port my MACRO-10 LIGHTS program to the PiDP-10 and add a binary date/time display.  I haven't quite figured out it I should take TOPS-10 approach (LIGHTS can be built to run stand-alone, so it won't need TOPS-10) or port it to MIDAS.  I need to use MIDAS for a later, bigger graphics hack for the 340 display, if that works okay.

ITS can certainly be a very smooth and convenient environment for PDP-10 programming once you get used to all the facilities.  But I think it's nice if people use TOPS-10 or -20 too.

Second, maybe you can take some inspiration from my lights program which can be built to run on both ITS and standalone in one binary.  It would be fun to figure out a way to add in TOPS-10 too.

It you decide to port your LIGHTS to MIDAS, note how need to frob MIPGDS in ITS.

Ric Werme

unread,
Aug 16, 2025, 9:08:41 AMAug 16
to PiDP-10
[Clueless user warning - I hope my inline replies show up without clicking on "..."]

Lars Brinkhoff wrote:
Ric wrote:
wandering through docs like my ancient (printed at CMU around 1973) "DDT Reference Manual."  I'm not sure if it's online, it doesn't appear to be at bitsavers.

That would be TOPS-10 DDT then?  It might be part of a larger set of TOPS-10 manuals like:

No! - I have my "phone book" and other TOPS-10 stuff, I'm all set for MACRO-10, TECO, and DDT on TOPS-10.

The manual I'm referring to is my vital ITS doc, 75 pages long.  No dates, no credits.  The first page starts with "Table of Contents" and ends with "XXII. Index of Monitor Commands".  I can scan it to get it online.

ITS can certainly be a very smooth and convenient environment for PDP-10 programming once you get used to all the facilities.  But I think it's nice if people use TOPS-10 or -20 too.

I'm currently wallowing, maybe flailing, in the steep learning curve of Raspberry Pi, simh, virtual machines, and TCP/IP/ethernet support.  I'd have a bit of a learning curve for TOPS-10 V7, but I'll go boot it today, I have some questions that would be much easier to explore in a "familiar" environment.

BTW, I noticed yesterday this conversation goes back to 2024.  Me tacking on to this was bad form.

Second, maybe you can take some inspiration from my lights program which can be built to run on both ITS and standalone in one binary.  It would be fun to figure out a way to add in TOPS-10 too.

Aha!  The ideal program I was looking for to get a feel for MIDAS programming.  And the SAIL null job too - that was the inspiration for mine.
 
If you decide to port your LIGHTS to MIDAS, note how need to frob MIPGDS in ITS.

Never heard of MIPGDS - I'll add it to the learning curve.. 

Lars Brinkhoff

unread,
Aug 16, 2025, 10:17:08 AMAug 16
to PiDP-10
Ric wrote:
The manual I'm referring to is my vital ITS doc, 75 pages long.  No dates, no credits.  The first page starts with "Table of Contents" and ends with "XXII. Index of Monitor Commands".  I can scan it to get it online.

That doesn't seem to be part of the usual ITS documentation set.  But I found a match.  Is it similar to this AI memo?

Never heard of MIPGDS - I'll add it to the learning curve.. 

Not a curve ball, I hope!

Ric Werme

unread,
Aug 16, 2025, 11:03:39 AMAug 16
to PiDP-10
Lars wrote:
Ric wrote:
The manual I'm referring to is my vital ITS doc, 75 pages long.  No dates, no credits.  The first page starts with "Table of Contents" and ends with "XXII. Index of Monitor Commands".  I can scan it to get it online.

That doesn't seem to be part of the usual ITS documentation set.  But I found a match.  Is it similar to this AI memo?

Yes!  That version includes page numbers on the Table of Contents  and the new section "XXIII. Sample Console Session."  My version may be more amenable to OCR.  I'll experiment, it would be nice to have a searchable doc.


Never heard of MIPGDS - I'll add it to the learning curve.. 

Not a curve ball, I hope!

As long as it's not a knuckle ball.  :-) 
Reply all
Reply to author
Forward
0 new messages