PDP-10 / its

Incompatible Timesharing System
Other
858 stars 83 forks source link

LMODEM - serial file transfer #969

Closed atsampson closed 2 years ago

atsampson commented 6 years ago

CPM; TS LMODEM .INFO.; LMODEM HELP CPM; HELP LMODEM
GUMBY; LMODEM INFO
FJW; LMODEM > (also PLUKEL; and EB;) MC: CPM; MODEM2 PROTO

GZ in news:2539@sri-arpa.UUCP:

Actually, the current ITS version is MMODEM, and it supports CRC's. Source in GZ;MMODEM >.

LMODEM is still supported on ITS, also it works on Multics. Source in FJW;LMODEM > (although I think the running version on ITS is patched). Yes, it's written in Lisp. Author is EB@MC.

So LMODEM implements the XMODEM protocol, and MMODEM implements either XMODEM-CRC or YMODEM...

atsampson commented 6 years ago

And if anyone needs XMODEM for a different PDP-10 OS...

Date: 05 Oct 1982 1133-PDT From: Max Diaz MMD@Su-Ai Subject: XMODEM for TENEX... To: info-cpm at BRL [...]

New version in AR60:CPM; XMODEM SAI has a few bugs corrected (^C capability...), and slightly better doc.

This version is for TENEX/TOPS20/WAITS, but has no TAC functions yet; it is primarily for transfers to/from a hard-wired or dial-in micro.

larsbrinkhoff commented 6 years ago

ITS can run WAITS programs...

atsampson commented 4 years ago

XMODEM.SAI[SUB,SYS] on SAILDART.

larsbrinkhoff commented 3 years ago

Split off MMODEM to #2020.

larsbrinkhoff commented 2 years ago

The LMODEM code loads UMLMAC, IOTA, LOOP, GCDEMN, FORMAT, SHARPM, YESNOP, DEFMAX, MACAID, which are already present in this repository. It also loads SIGNAL and ERRMAC which aren't. But there are copies in the EJS directory, so that may be fixable. The one missing file is DSK8.

larsbrinkhoff commented 2 years ago
Date: 5 Jun 1982 1726-PDT
Sender: BILLW at SRI-KL
Subject: Re: LMODEM
From: BILLW at SRI-KL

There is a TWENEX version of MODEM in SRI-KL::<BillW>MODEM.MAC
It supports the standard MODEM2 user interface (such as it is)
and includes hacks and hooks to enable it to be the initiating
programs, given an autodialer or TTY line connected to a "remote
host".  It does not, however, attempt to do anything fancy to be
able to talk over the arpanet...

@WestfW's MODEM.MAC: https://www.oocities.org/westfw/modem.mac.txt

This was in use on SIMTEL-20.

larsbrinkhoff commented 2 years ago

We have located copies of all necessary LMODEM files, but there is a problem compiling them. The condition-handlers macro (from SIGNAL) generates a bad call to CASEQ. @eswenson1 tracked down the problem to the version of LOOP; it works with 809 and older, but not 818 (latest from MIT) or 819 (current on GitHub).

larsbrinkhoff commented 2 years ago

The macro condition-handlers in SIGNAL uses the LOOP macro in a way that's no longer allowed. The collect clause is followed by two forms: the first is a check, and the second is actual data for the list. This was allowed up until LOOP version 809, but no longer in 818. Moving the check do a do clause fixes the problem.

larsbrinkhoff commented 2 years ago

LMODEM checks the TTY line parameters. First it examines the %TYDIL bit in TTYTYP, to see if it's a dial-up line. If not, it must be an STY or else LMODEM will balk.

Second, it checks what type of TTY controller it is. Only TK-10, Morton, or DTE-20 are recognized but an unknown type will be accepted. Only DTE-20 works with full 8-bit transfers, the others get 7-bit. The help file says:

LMODEM cannot be used through the AI or ML dialups without modifying
the program that runs on the CP/M end.  When LMODEM starts up it will
tell you whether it intends to use "7-bit" or "8-bit" protocol; 7-bit
protocol CANNOT be used without a modified CP/M MODEM program.
larsbrinkhoff commented 2 years ago

From http://oldcomputers.dyndns.org/public/pub/manuals/zcpr/zcpr3_the_manual_(ocr).pdf lmodem

atsampson commented 2 years ago

That text in the ZCPR3 manual is a bit mangled, but it's copied from The Great SIMTEL20 Archive Blurb which was periodically posted to Usenet. It's meant to say:

On ITS machines, file transfer using the Christensen protocol can be done using MMODEM (type :MMODEM for instructions), or LMODEM. Documentation for LMODEM is in file .INFO.;LMODEM HELP. Other useful ITS utilities include TYPE8, which types an ASCII file stored in ITS binary format; TYPESQ, which types an ITS binary format "squeezed" file (see the first paragraph under FILE TYPES); USQ, which creates an unsqueezed version of a squeezed file; HEXIFY, which creates an Intel hex format file from an ITS binary format COM file; COMIFY which creates a COM file from an Intel hex file; and CRC, which computes the Cyclic Redundancy Check value for a file, using the same algorithm that is used by the CP/M program CRCK. Brief instructions for any of these utilities except LMODEM can be obtained by typing ":utility_name" (for example, :CRC).

WestfW commented 2 years ago

TWENEX version of MODEM ... does not, however, attempt to do anything fancy to be able to talk over the arpanet...

Actually, it did. There were essentially two broken versions of tops20 floating around at the time; one of which did Telnet Binary Mode wrong, and one of which did not negotiate Binary Mode when the TTY (VTY) was set that way. Or something like that. The Tops20 modem code has hacks to try to get things to work in either case.

The oocities copy seems truncated. I've uploaded a fresh copy of the tops20 code to https://github.com/WestfW/TOPS20-MODEM/tree/master (along with a bit of historical exposition.)

larsbrinkhoff commented 2 years ago

Closing this because LMODEM is now installed and working, see #2090.

Checked with KL10 DTE20 TTY line that has %TYDIL set. It's available on port 10015. I have not tested this with an (X)MODEM program on the other side though.

*lmodem^K!
Opened log file #FILE-OUT-|DSK:LARS;LARS LMDLOG|-72750.
Setting up for 8-bit protocol.

T