Skip to content

Commit

Permalink
Create README.md and fix various spelling errors
Browse files Browse the repository at this point in the history
Signed-off-by: Jeffrey H. Johnson <trnsz@pobox.com>
  • Loading branch information
johnsonjh committed Aug 9, 2024
1 parent e2f5ced commit d884203
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 12 deletions.
2 changes: 1 addition & 1 deletion INFO
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ reappears. They also have a bug that if you type a meta character the
character that gets sent is shifted and if you type meta shift character
it sends a lowercase character. There is nothing I can do about this.

For some reason talk, amoung a few other things, core dumps when
For some reason talk, among a few other things, core dumps when
supduping in from a lisp machine (either a 3600 or a cadr). I've seen
the same bug a BBN bitgraph. It seems to be a bug with programs which
use curses and is evoked by large screen sizes.
94 changes: 93 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,93 @@
![](https://travis-ci.org/larsbrinkhoff/lbForth.svg?branch=master)
# `supdup`

## Overview

* `supdup` is a client (and `supdupd` is a server) implementing the SUPDUP (*Sup*er *Dup*er TELNET) protocol, a highly efficient [TELNET](https://www.rfc-editor.org/rfc/rfc854.txt)-style remote display protocol, on UNIX-like systems.

* It originated as a private protocol between the [Chaosnet](https://chaosnet.net/)-connected ITS systems at MIT to allow a user at any one of these systems to use one of the others as a display; later implementations were developed for [various platforms](https://gunkies.org/wiki/Chaosnet#Protocol_implementations).

* The software supports connections over TCP/IP and Chaosnet (optionally using the [cbridge](https://github.com/bictorv/chaosnet-bridge) software).

## Supported platforms

* Tested operating systems: Oracle Solaris, OpenIndiana illumos, Linux/musl, Linux/glibc, IBM AIX, IBM OS/400 (PASE), Haiku, FreeBSD, OpenBSD, NetBSD, and Apple macOS.

## Supported compilers

* Tested compilers: PCC, GCC, Clang, Xcode, IBM XL C, IBM Open XL C, Oracle Studio C, NVIDIA HPC SDK C, Portland Group C, and DMD ImportC.

## Building the `supdup` client

### Generic UNIX

* Building on generic UNIX-like systems (**Linux**, **\*BSD**, **macOS**, **Haiku**, etc.):
* Install prerequisite packages:
* Required: `make` (GNU), `ncurses` (libraries and headers),
* Recommended: `pkg-config`
* Build: `gmake` (or sometimes just `make`)
[]()

[]()
* The usual environment variables (*e.g.* `CC`, `CFLAGS`, `LDFLAGS`, etc.) are respected, for example:
* `env CC="gcc" CFLAGS="-Wall" LDFLAGS="-L/usr/local" gmake`

### IBM AIX

* Building on IBM AIX 7:
* Install prerequisite packages:
* `dnf install make ncurses-devel pkg-config`
* Build with GNU GCC:
* `env CC="gcc" CFLAGS="-maix64" LDFLAGS="-maix64 -Wl,-b64" gmake`
* Build with IBM XL C V16:
* `env CC="xlc" CFLAGS="-q64" LDFLAGS="-q64" gmake`
* Build with IBM Open XL C V17:
* `env CC="ibm-clang" CFLAGS="-m64" LDFLAGS="-m64" gmake`

### IBM i (OS/400)

* Building on PASE for IBM i (OS/400):
* Install prerequisite packages:
* `yum install gcc10 make-gnu ncurses-devel pkg-config`
* Build with GNU GCC:
* `env CC="gcc-10" CFLAGS="-maix64" LDFLAGS="-maix64 -Wl,-b64" gmake`

### DMD ImportC

* Building with DMD ImportC:
* `dmd -betterC -c -of=supdup.o chaos.c charmap.c supdup.c tcp.c $(pkg-config --cflags-only-I ncurses)`
* `cc -o supdup supdup.o $(pkg-config --libs ncurses)`

## Building the `supdup` server

* An *experimental* server, `supdupd`, is included.
* The server component is *incomplete* (and *may not* build on all platforms).
[]()

[]()
* To build the server on generic UNIX-like systems:
* Install prerequisite packages: `make` (GNU)
* Build: `gmake` (or sometimes just `make`)

## Bug Reporting

* To report a problem with `supdup`, use GitHub Issues:
* https://github.com/PDP-10/supdup/issues/new/choose

## External links

### SUPDUP

* [RFC 734: SUPDUP Protocol](https://www.rfc-editor.org/rfc/rfc734.txt)
* [RFC 736: TELNET SUPDUP Option](https://www.rfc-editor.org/rfc/rfc736.txt)
* [RFC 746: The SUPDUP Graphics Extension](https://www.rfc-editor.org/rfc/rfc746.txt)
* [RFC 747: Recent Extensions to the SUPDUP Protocol](https://www.rfc-editor.org/rfc/rfc747.txt)
* [RFC 749: TELNET SUPDUP-OUTPUT Option](https://www.rfc-editor.org/rfc/rfc749.txt)
* [AI Memo 643: A Local Front End for Remote Editing](http://www.bitsavers.org/pdf/mit/ai/aim/AIM-643.pdf)
* [AI Memo 644: The SUPDUP Protocol](http://www.bitsavers.org/pdf/mit/ai/aim/AIM-644.pdf)
* [PuTTY: SUPDUP Backend](https://git.tartarus.org/?p=simon/putty.git;a=blob;f=otherbackends/supdup.c;h=6f574c9fb9c34b1307b67326038aa713c2b1d07a;hb=HEAD)

### Chaosnet

* [AI Memo 628: Chaosnet](http://bitsavers.org/pdf/mit/ai/AIM-628_chaosnet.pdf)
* [Chaosnet Bridge](https://github.com/bictorv/chaosnet-bridge)
* [Chaosnet Wiki](https://chaosnet.net/)
2 changes: 1 addition & 1 deletion supdup.c
Original file line number Diff line number Diff line change
Expand Up @@ -1048,7 +1048,7 @@ suspend (void)
tcsetattr(0, TCSANOW, &otio);
#endif
(void) mode (save);
*netfrontp++ = ITP_ESCAPE; /* Tell other end that it sould refresh */
*netfrontp++ = ITP_ESCAPE; /* Tell other end that it should refresh */
*netfrontp++ = ITP_PIATY; /* the screen */
restore ();
}
Expand Down
17 changes: 8 additions & 9 deletions supdupd.c
Original file line number Diff line number Diff line change
Expand Up @@ -881,31 +881,30 @@ void do_crlf (void)
/* base state */
#define RS_DATA 0

/* recieved ITP_ESCAPE (034) Waiting for `m' */
/* Received ITP_ESCAPE (034) Waiting for `m' */
#define RS_ITP_ESCAPE 1
/* received ITP_ESCAPE, `m'>#o100
/* Received ITP_ESCAPE, `m'>#o100
Waiting for `n'.
Char will be (+ (* (- `m' #o100) #o200) `n') */
#define RS_BUCKY 2

/* Recived ITP_ESCAPE, ITP_FLOW_CONTROL_INCREASE
/* Received ITP_ESCAPE, ITP_FLOW_CONTROL_INCREASE
Ignore next char, since un*x can't hack real, winning, flow control */
#define RS_FLOW_CONTROL_INCREASE 3

/* Recived ITP_ESCAPE, ITP_CURSORPOS
/* Received ITP_ESCAPE, ITP_CURSORPOS
Waiting for `row' */
#define RS_CURSORPOS_1 4
/* Recived ITP_ESCAPE, ITP_CURSORPOS, `row'
/* Received ITP_ESCAPE, ITP_CURSORPOS, `row'
Waiting for `column' */
#define RS_CURSORPOS_2 5

/* received SUPDUP_ESCAPE (#o300)
/* Received SUPDUP_ESCAPE (#o300)
Waiting for `m' */
#define RS_SUPDUP_ESCAPE 6

/* received SUPDUP_ESCAPE, SUPDUP_LOCATION.
Now receiving 000-terminated
location string */
/* Received SUPDUP_ESCAPE, SUPDUP_LOCATION.
Now receiving 000-terminated location string */
#define RS_LOCATION 7

void suprcv (void)
Expand Down

0 comments on commit d884203

Please sign in to comment.