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

LMODEM - serial file transfer #969

Closed
atsampson opened this issue Jun 11, 2018 · 13 comments
Closed

LMODEM - serial file transfer #969

atsampson opened this issue Jun 11, 2018 · 13 comments
Labels
lisp micro Microprocessors, microcomputers. todo

Comments

@atsampson
Copy link
Contributor

atsampson commented Jun 11, 2018

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:[email protected]:

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
Copy link
Contributor Author

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
Copy link
Member

ITS can run WAITS programs...

@atsampson
Copy link
Contributor Author

XMODEM.SAI[SUB,SYS] on SAILDART.

@larsbrinkhoff larsbrinkhoff changed the title LMODEM/MMODEM - serial file transfer LMODEM - serial file transfer Feb 22, 2021
@larsbrinkhoff
Copy link
Member

Split off MMODEM to #2020.

@larsbrinkhoff larsbrinkhoff added the micro Microprocessors, microcomputers. label Apr 28, 2021
@larsbrinkhoff
Copy link
Member

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
Copy link
Member

larsbrinkhoff commented Nov 8, 2021

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
Copy link
Member

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
Copy link
Member

larsbrinkhoff commented Nov 9, 2021

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
Copy link
Member

larsbrinkhoff commented Nov 9, 2021

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
Copy link
Member

@atsampson
Copy link
Contributor Author

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
Copy link

WestfW commented Nov 10, 2021

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
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lisp micro Microprocessors, microcomputers. todo
Projects
None yet
Development

No branches or pull requests

3 participants