PDP-10 / its

Incompatible Timesharing System
Other
846 stars 80 forks source link

Merge updates from EMACS 170 #64

Open larsbrinkhoff opened 7 years ago

larsbrinkhoff commented 7 years ago

Rich Alderson's TOPS-20 EMACS 170 may have some nice updates.

atsampson commented 6 years ago

Are there any more recent releases than the tape image? From alt.sys.pdp10 in October 2011:

OK, putting on my hat as the official maintainer of MIT TECO and EMACS (for TOPS-20 and ITS). [...] (FWIW, I happen to have a GNU Emacs running on the museum's Toad-1 right now,
alongside an EMACS.)

larsbrinkhoff commented 6 years ago

I have asked, and no, there aren't.

eswenson1 commented 6 years ago

Do we have the tape of the sources for TECO/EMACS for Emacs 170?

larsbrinkhoff commented 6 years ago

Yes, here: https://github.com/PDP-10/emacs

It's a TOPS-20 tape, but individual files are available on a branch.

eswenson1 commented 6 years ago

Anything there that we don't have or should merge into the ITS version?

larsbrinkhoff commented 6 years ago

I haven't checked yet. I'm quite happy with EMACS 162, so I haven't felt an urgent need to upgrade.

rmaldersoniii commented 6 years ago

EMACS 170 (and TECO 1220) were TOPS-20 only updates based on the Stanford TOPS-20 version of TECO and EMACS 16507 (a couple of edits later than 165). I did this in order to create the best version of EMACS for XKL's expected customer customer base, with enhancements from SimTel20 and MIT.[1]

Here's the edit history from the top of TECO.MID.1220:[2]

; --MIDAS-- ;[TOED.XKL.COM]DXX:XKLTECO.1212.11, 25-Mar-96 15:40:14, Edit by ALDERSON ; Work began on this version of TECO 14 March 1996 ; I'm going to call it 1220--it has some major clean-ups and local fixes. ; ; The following documentation has been added while updating the code to contain ; the Stanford and SIMTEL20 changes to an earlier version of TECO (c. 1180). ; The basis of the update was Bill Westfield's addition of his changes to 1209, ; brought up to 1212. Additional changes from Kirk Lougheed and Greg Satz have ; at Stanford, and Frank Wancho at SIMTEL20, been added as necessary, and some ; of the commentary for same added to this version. ; ; The Stanford EMACS prior to 165 was 162, based on TECO 1180 (as far as I can ; tell). ; ; From TECO.MID.118037: ;TECO.MID.118037, 7-Jan-85 16:01:56, Edit by SATZ ;TECO.MID.118035, 18-Dec-84 14:35:29, Edit by SATZ ;TECO.MID.118032, 28-Nov-84 18:24:08, Edit by SATZ ;TECO.MID.118031, 28-Nov-84 18:07:25, Edit by SATZ ;TECO.MID.118030, 25-May-84 17:29:17, Edit by LOUGHEED ;TECO.MID.118029, 23-May-84 00:11:46, Edit by LOUGHEED ;TECO.MID.118028, 21-May-84 03:19:50, Edit by LOUGHEED ;TECO.MID.118027, 21-May-84 02:37:33, Edit by LOUGHEED ;TECO.MID.118025, 29-Sep-83 23:43:05, Edit by LOUGHEED ;TECO.MID.118024, 29-Sep-83 18:31:28, Edit by LOUGHEED ;TECO.MID.118023, 29-Sep-83 18:00:29, Edit by LOUGHEED ;TECO.MID.118020, 28-Sep-83 13:41:27, Edit by LOUGHEED ;TECO.MID.118019, 27-Sep-83 23:10:54, Edit by LOUGHEED ; How about we start an edit history for changes at Stanford? ; - added Freedom-100/200 support ; - merged in changes from GSB for Hazeltine Esprit support ; - made H19 character insert pad differently so that the H29 will work ; - use GTHST to get host name instead of hardwired of CVHST ; - fix assembly error in INIDLM from previous edits ; - add ANSI, AVT, AVTX support ; - Make sure the terminal gets reset after continuing from the HALTF% ; (Same change made to MIT sources between 1208 and 1209) ; ; The "standard Stanford EMACS" was version 165 for the last decade. This was ; Bill Westfield's version, which used TEXTI% for input. It diverged from the ; other Stanford stream after edit 118030; only comments after that are ; retained here. ; ; From XTECO.MID.121705 28-Mar-85 09:56:37 (equivalent to TECO.MID.16502): ; ;[SU-SCORE.ARPA]PS:XTECO.MID.5, 4-Mar-85 01:17:58, Edit by BILLW ; call XTXTI1 on ctrl-C to remove waiting line of text from tty input buf. ;[SU-SCORE.ARPA]PS:XTECO.MID.2, 19-Feb-85 15:11:55, Edit by BILLW ; change name from STECO to XTECO. Look into not recalculating break mask ; every time we decide that we want to do a TEXTI. ;[SU-SCORE]PS:STECO.MID.35, 16-Feb-85 19:27:07, Edit by BILLW ; do the code for using INSERT mode more effectively. ;[SU-SCORE]PS:STECO.MID.33, 16-Feb-85 17:59:40, Edit by BILLW ; "fix" XTXTI1 - if we interupt out of a TEXTI, simulate the completion of the ; system call by doing a SIN, reseting terminal modes, etc. The new code ; prevents redoing (and redisplaying) the entire string read so far. ;[SU-SCORE]PS:STECO.MID.25, 14-Feb-85 12:19:31, Edit by BILLW ; add TEXTI support. re-Add AVT and SUN terminal types ;STECO.MID.3, 10-Feb-85 00:06:48, Edit by BILLW ; efficiency improvements (I hope). Have DDPYTB flush characters (using ; %TFLSH) that are buffered in the individual terminal routines. ; ; Enhancements to this were numbered as if TECO and EMACS were one and the same ; (so TECO.MID.16504 and .16507). The version used at cisco Systems was .16504 ; and at SIMTEL20 was .16507: ; ;[SIMTEL20.ARPA]PS:TECO.MID.16507, 6-May-86 22:59:55, Edit by WANCHO ; Added VT102 (same as ANSI, which also uses the VT132 dispatch table. ;[SIMTEL20.ARPA]PS:TECO.MID.16506, 2-Mar-86 14:18:01, Edit by WANCHO ; Add (fs)TTYNBR, the tty's .CTTRM number for setting terminal type ; for fixed local terminals which may not be known to the EXEC. ; ;[SU-SCORE.ARPA]PS:TECO.MID.16504, 21-Sep-85 00:44:33, Edit by BILLW ; Add AJ510 terminal type (original code from SRI-AI). ;[SU-SCORE.ARPA]PS:TECO.MID.16503, 15-Jul-85 18:25:04, Edit by BILLW ; make conversion of user number to directory number more general ; ; There was an edit 16505 at Stanford, which I document here for completeness ; only, but it was much later than the undocumented 16505 lost between Stanford ; and SIMTEL20. ; ;[MACBETH.STANFORD.EDU]3072:TECO.MID.16505, 22-Feb-91 09:57:35, Edit by A.ALDERSON ; Add X66, X43, and X55 terminal types: XTERM windows 80x66, 80x43, and 80x55 ; respectively. ; ;------------------------------------------------------------------------------ ; ; The MIT changes between 1210 and 1211, and between 1211 and 1212, were not ; documented in the headers. All such changes must have taken place before ; I, Rich Alderson, got the sources via FTP on 10-Nov-87 at 11:38:44 (Pacific ; Standard Time). ; ; 1211 => 1212: ; Change error-handling at WINIT3 ; ; 1210 => 1211: ; Add TM%SCR to RTMOD call in SETTTM ; Make no arg to F6 branch to FSIXR instead of FCTLK0 ; ;[MIT-OZ]OZ:TECO.MID.1210, 2-Aug-85 13:15:37, Edit by GZ ;Increase symtab, merge AJ510 term type from UDC. Make the long filename ;code for ITS work.

;;;The following comment, inserted in historical order, was the content of the ;;;file TECO.CHANGES:

;[WASHINGTON]PS:TECO.CHANGES.2, 11-Nov-83 16:22:48, Edit by FHSU ;This file documents very recent changes to MIT TECO.1209 ; ;new FS flags: ; :i*UserName$FS USRNUM ==> user number for 'UserName' (TNX) ; FS X USRNUM ==> self's user number (TNX) ; FS U MAIL FILE ==> 0 if user doesn't have local mailbox (TNX) ; FS TTYNBR ==> number of current .CTTRM (TNX) ; FS SCRINV ==> see MODE2.EMACS for usage ; FS IF REAP -- made to work for TNX also... ; FS OF FDB -- like FS IF FDB... ; ;Changed: ; :EZ -- ":" means get deleted files also (VD,DEL) ; @EZ -- "@" means get invisible files also, with ;OFFLINE attribute ; (These will be useful for DIRED...) ; Analogous for EL, EM, EY, ... ; ,EI -- = deleted ok, = OPENF% bits in AC2 ; Analogous for EW... ; ;Files: ; TNX/20X users need 3 files: TECO.MID, CONFIG.MID, and TECTRM.MID ; TECO was split into TECO and TECTRM so that the terminal routines ; may have their own edit versions, added to, etc. without having to ; get a new TECO.MID each time - just distribute the TECTRM. also, ; it gives us a little breathing room for editing TECO...

;[WASHINGTON]PS:TECO.MID.1209, 10-Nov-83 19:02:30, Edit by FHSU ; NOTE: A CONFIG.MID file is used to customize TECO to a site. ; A TECTRM.MID file is used to customize TECO to terminal types. ;-----------------------------------------------------------------------------

[1] In early 1996, there really was no expectation that ITS would ever resurface. [2] As it happens, the work was completed two months before Richard Troiano and I did the customer survey which showed that 60 TOPS-20 systems had been retired in the previous 12 months, killing the Toad-1's chances in the marketplace, and leading to XKL's decision to return to the networking arena.

atsampson commented 6 years ago

There's a Y2K fix for the TIME library for TOPS-20 on the tape (also see news:mddhaviz88u.fsf-@panix5.panix.com). Bug #829 suggests FSDATE is now returning year - 1900, so I guess we'd need to do a similar fix for ITS (or make FSDATE return year % 100).

larsbrinkhoff commented 6 years ago

Most of the time, I have preferred to make changes to use four-digit years.

atsampson commented 6 years ago

That sounds sensible. Looking at the TECO code, FSDATE (FS DATE) just returns the raw result of RQDATE, so it's actually FSDCNV (FS FDCONVERT) and SYMDAT (EG) that need modifying to format and parse (!) four-digit years on ITS. Then, with a bit of luck, Rich's Y2K-fixed code should work without the ITS/TOPS-20 conditionals.

(If grepping for the above, bear in mind they show up with and without spaces and truncation, e.g. FSFDCONVERT, FS FD CONV...)

eswenson1 commented 5 years ago

There are definitely some changes that will NOT work on ITS. For example, in CCL, the :EJ references were changed to ELIB -- in the code. And the code is not conditionalized for TOPS-20. It would, of course, be trivial to conditionalize it -- there is plenty of conditionalized code based on "osteco", but there is at least one case where TOPS-20 changes were made that are not conditionalized and are breaking (for ITS).

rmaldersoniii commented 5 years ago

As noted, when I made the TECO 1220/EMACS 170 changes in 1996, there was no expectation of ITS ever coming back. Because of TOPS-20 naming conventions, :EJ files required a ^V before the colon, making them difficult to manipulate. I had experimented a decade before with renaming them to ELIB in a private version of EMACS which dropped ITS-only commands, and included the TOPS-20 library's commands into the standard build; when I decided to update TECO with the changes from Palo Alto, White Sands, and Cambridge, I also decided to make life easier for future TOPS-20 based maintainers. I think it would be a simple matter to have modern ITS recognize both :EJ and ELIB as compiled TECO library files, and prefer the latter for future development.

eswenson1 commented 5 years ago

I think this is a good recommendation. I find ^Q:EJ inconvenient to type too. ELIB is much friendlier. So I support the idea of making the ITS emacs support either :EJ or ELIB with :EJ treated as "legacy" and new libraries being generated as ELIBs. If/when we integrate the emacs 170 (twenex) code into the ITS code, we could do this.

larsbrinkhoff commented 5 years ago

Whoa, scary! But yes, it's good idea. Even DIRED won't handle :EJ file names correctly. E.g. it can't delete those files.

larsbrinkhoff commented 5 years ago

Fixed FS FDCONVERT$ in #829.