Skip to content
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

Enable NCP; make Arpanet great again #2348

Open
larsbrinkhoff opened this issue Dec 10, 2024 · 14 comments
Open

Enable NCP; make Arpanet great again #2348

larsbrinkhoff opened this issue Dec 10, 2024 · 14 comments
Labels

Comments

@larsbrinkhoff
Copy link
Member

larsbrinkhoff commented Dec 10, 2024

  • Turn on NCPP.
  • Add transparent conversion between short and long leader messages to IMP-host interface.
  • Add IMP-host interface to the PDP-10 emulator(s).
  • Check if ITS will talk Arpanet to an IMP, fix if not. (Can NCP and TCP/IP coexist?)
  • Make sure Apanet clients and servers work: check https://github.com/PDP-10/its/issues?q=label%3Aarpanet
@larsbrinkhoff
Copy link
Member Author

FYI @Quantx

@larsbrinkhoff
Copy link
Member Author

larsbrinkhoff commented Dec 10, 2024

Turning on NCPP, I noticed SYSTEM;CORE uses DMI in conditionals. That needs to be updated to use KAIMP or DMIMP.

EDIT: Adding NCP to the already big KA ITS makes it necessary to move up SALV even higher.

@larsbrinkhoff
Copy link
Member Author

Maybe the KS10 can't do Arpanet since the new IMP code doesn't have NCP. The KA10 and KL10 use the "IMPOLD WTHNCP" code.

@larsbrinkhoff
Copy link
Member Author

Various updates to the KA10 and H316 are emulators are needed. With things fixed, I can attempt to make a TELNET connection back to the same ITS host.

*telnet^K!
User TELNET.753
TELNET>NCP protocol (not TCP)
TELNET>Open connection to 6
 Trying...  Host dead due to random network lossage
TELNET>
NET: RST TIMEOUT HST= 6  18:01:31
NET: CTL LNK RFNM TIMEOUT HST 6  18:01:38
NET: RRP W-O RST HST 6  18:01:38

What's going on here is that before making the TELNET connection, ITS sends a RST (reset) message to the peer. This is probably because ITS hasn't had any contact with the peer since booting. However, there's a timeout waiting for the RRP (reset reply) acknowledgement. The RRP is sent, but somewhat later. Then there's a complaint that there was an RRP received but no RST in progress.

@larsbrinkhoff
Copy link
Member Author

CC @charlesUnixPro, @SpareTimeGizmos

@larsbrinkhoff
Copy link
Member Author

I made a handwritten note, as is the time-honored tradition.
arpanet2-dec2024

@larsbrinkhoff
Copy link
Member Author

Note to self: check if this works for incoming Arpanet connections. The IMPUS (Arpanet) address is unconditionally commented out and replaced with IMPUS3 (IP address).

IMPRFQ: CAIL E,NETSRS   ;IF < 1000, START JOB "NETRFC"
         JRST IMRFQ5
        MOVE T,IMPHTN(H)
;       CAIE T,<IMPUS_-6>+<IMPUS&77>_9
        CAME T,[IMPUS3-NW%ARP]  ; Compare with our own host (minus net #)
         SKIPL NETUSW
          CAIA
           JRST IMREFU  ;REFUSE CONNECTION
        HRROI T,NTRFCL
        PUSHJ P,NUJBST  ;LOAD SERVER

@larsbrinkhoff
Copy link
Member Author

larsbrinkhoff commented Dec 20, 2024

See also #2349 "ITS code duplicated between NET and NCP." There are assembler errors if NCPP=1 and INETP=0.

@larsbrinkhoff
Copy link
Member Author

larsbrinkhoff commented Dec 20, 2024

Work in progress on these branches:

@larsbrinkhoff
Copy link
Member Author

Note to self: look into #1475
On DM a network demon is summoned from SYS;ATSIGN RFCnnn. All other ITSes start a network server from DEVICE;LBSIGN RFCnnn.

@larsbrinkhoff
Copy link
Member Author

I'm testing ITS together with the "Linux NCP" (need a better name?) I was "pinging" from the Linux host to ITS, i.e. sending an ECO (echo) and expecting an ERP (echo reply) back. I see the UDP packets arriving safely on the ITS side, but I wasn't seeing any replies. I checked the code, and indeed ITS is supposed to reply. After a few reruns and several pings later, I checked the logs by chance and did see one ERP in the IMP and Linux logs. So similar to the very late RRP (reset reply) I mentioned above, there seems to be some delay going on. I put breakpoints on the IMP interrupt handlers and didn't see anything. Strangely, when I TELNET from ITS to itself, I do hit the breakpoints. The ITS messages are about 24 bits longer, for some unknown reason. The Host-Host protocol specification says there is an "M3" field after an NCP message, with 0 or more bits of padding. I figured 0 would be ok, but maybe not.

@larsbrinkhoff
Copy link
Member Author

Indeed there was no interrupt raised for incoming data, because I had missed to handle a corner case. Now that I do, ITS will reply to the ECO messages from "Linux NCP".

Testing with two ITS hosts on the network, I get a reaction to a TELNET connection: LOGIN RFC027 0 HST000. This means there was a "request for connection" on socket 27 octal = 23 decimal, which is the correct number for "new TELNET". HST000 doesn't look right, though.

Still, clearly a step forward. The hosts successfully exchange RST (reset) and RRP (reset reply) messages.

@larsbrinkhoff
Copy link
Member Author

I rebuilt NETRFC with DEMONP=0 and made the LBSIGN links for RFC027 (telnet). This seems to have done the trick. I made a prototype TELNET client to tickle ITS, and I'm getting some data back.

@larsbrinkhoff
Copy link
Member Author

Various updates to my NCP and TELNET client later, I get this session. It's not perfect, e.g. no echo handling or cbreak mode yet, but it shows promise. -cn 70 means client new protocol to host 70 = octal 106.

$NCP=ncp006 ../linux-ncp/src/telnet -cn 70
TELNET to host 106.
Unknown ITS PDP-10
It's a lovely day to be a turist!


KA ITS.1653. DDT.1548.
TTY 53
You're all alone, Fair share = 79%
Welcome to ITS!

For brief information, type ?
For a list of colon commands, type :? and press Enter.
For the full info system, type :INFO and Enter.

Happy hacking!
lars^F
lars^F
KA   LARS  
FREE BLOCKS #2=32 #3=916 #0=650 #1=829 
  2   BACKUP 23     2   11/30/2016 03:56:40
  0   BUBUNV 78     1   11/30/2016 03:56:40
  1   LARS   LOGIN  1 ! 11/23/2024 13:41:32
  0   LITES  79     1   11/30/2016 03:56:40
  3   LORENZ 68     1   11/30/2016 03:56:40
  0   MINSKY TRON   1   11/30/2016 03:56:40
  1   MUNCH  340    1   11/30/2016 03:56:40
  1   MUNCH  FASL   1   11/21/2024 16:31:57
  1   MUNCH  LISP   1 1/30/2016 03:56:40
  2   MUNCH  UNFASL 1   11/21/2024 16:31:57
  3   QRCODE 8      6   11/30/2016 03:56:40
  2   TS     LORENZ 1   11/21/2024 16:21:13
  2   TS     MINSKY 1   11/21/2024 16:21:10
  2   TS     MUNCH  1   11/21/2024 16:21:06
  3   TS     TVBROT 1   11/21/2024 16:21:16
  2   TT2500 57     1   11/30/2016 03:56:40
  2   TVBROT 209    1   11/30/2016 03:56:40
  1   UTNAM  20     1   11/30/2016 03:56:40
  3   XOROSH 2      1   11/30/2016 03:56:40
  0   _MI OUTPUT 0 ! 12/18/2024 17:37:53
*
1/    LOGIN? ^[^[u
$$u
KA ITS 1653  Console 53 Free. 20:45:45

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant