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

H316: Convert IMP short leaders to long, and vice versa. #440

Merged
merged 1 commit into from
Jan 17, 2025

Conversation

larsbrinkhoff
Copy link
Contributor

@larsbrinkhoff larsbrinkhoff commented Jan 14, 2025

This adds the modifiers CONVERT and NOCOVERT to the HI units. When enabled for a unit, 1822 messages will transparently be converted. IMP-to-host messages are converted from the old, short (32-bit) format to the new, long (96-bit) format. Host-to-IMP messages are converted in the other direction.

The motivation for this feature, is that the currently running IMP software is from 1974 and only supports short leaders. Some operating systems are from a later era, and only support long leaders.

This has been tested using the H316 emulator and the IMP code in the H316/test directory, and ITS running on a PDP-10 KA10 emulator. I have also written a new NCP implementation that can be used to probe and test the network and hosts; it has successfully ran TELNET sessions in both directions against ITS.

This adds the modifiers CONVERT and NOCOVERT to the HI units.  When
enabled for a unit, 1822 messages will transparently be converted.
IMP-to-host messages are converted from the old, short (32-bit) format
to the new, long (96-bit) format.  Host-to-IMP messages are converted
in the other direction.

The motivation for this feature, is that the currently running IMP
software is from 1974 and only supports short leaders.  Some operating
systems are from a later era, and only support long leaders.
@larsbrinkhoff
Copy link
Contributor Author

larsbrinkhoff commented Jan 14, 2025

@markpizz
Copy link
Contributor

The convert-1822 branch containing the commit in this change in your account has an additional commit with the comment "Debug.". That extra commit might accidentally be picked up when this change is merged. I only mention this since the changes in the "Debug." commit explicitly emit output to stderr rather than using the normal simh debug facilities...

@pkoning2 pkoning2 merged commit feb155f into open-simh:master Jan 17, 2025
3 of 20 checks passed
@pkoning2
Copy link
Member

Random question: I noticed the data is given as 16-bit items. Is this a 16 bit parallel device? I'm so used to networking devices that are byte oriented, and seeing 16 bit words manipulated without "little endian" or "big endian" consideration was different...

@larsbrinkhoff
Copy link
Contributor Author

@pkoning2, the IMP-host interface (per BBN Report 1822) is bit-serial. See e.g. https://gunkies.org/wiki/1822_interface

However, the message format has a strong 16-bit flavour since the H316 and 516 are 16-bit minicomputers. Other than that, the 1822 and NCP messages are fairly byte size agnostic.

@pkoning2
Copy link
Member

That makes me wonder: if you compile this code on a big-endian host, will it do the right thing?

@larsbrinkhoff
Copy link
Contributor Author

h316_udp.c converts the uint16_t words back and forth with htons and ntohs.

@pkoning2
Copy link
Member

h316_udp.c converts the uint16_t words back and forth with htons and ntohs.

Ok, but what about the header transformations you added? Will the format recognition, and the rewriting, work correctly for both?

@larsbrinkhoff
Copy link
Contributor Author

Yes.

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

Successfully merging this pull request may close these issues.

3 participants