PDP-10 / its

Incompatible Timesharing System
Other
865 stars 83 forks source link

MIGS - Muddle graphics system #1894

Closed larsbrinkhoff closed 2 years ago

larsbrinkhoff commented 4 years ago

DM: .INFO.; MIGS ORDER
DM: .INFO.; MIGS RECENT
DM: .MSGS.; MIGS 1
DM: MUDSUB; MIGS INIT missing
DM: LIBRM3; MIGSPK URS106 missing
DM: LIBRM3; MIGSMN FBIN missing
DM: RRS; MIGS INIT missing
DM: RRS; MIGSIN MUD missing
DM: RRS; AR2 MIGSPK missing
DM: RRS; MIGSPK URS104 missing
DM: RRS; MIGSMN URS113 missing
XX:\MIGSPK.MUD
XX:\MIGSMN.FBIN
XX:\MIGSMN.SAV106
XX:\MIGSMN.FIX106


DESCRIPTION
     AT THE PRESENT TIME MIGS IS STILL UNDER DEVELOPMENT,
   BUT IT IS QUITE USEABLE, AS DEMONSTRATED BY ITS USE ON
   THE NETWORK MUDDLE SOCKET BY SEVERAL STUDENTS HERE AT
   USC AND A RESEARCH GROUP IN THE EE DEPARTMENT WHO
   USES MIGS TO STUDY RADAR AMBIGUITY FUNCTIONS. AT THIS
   TIME MIGS IS ABLE TO SUPPORT FOUR OF THE MOST COMMONLY
   USED GRAPHICS TERMINALS; TEKTRONIX (4002, 4010), ARDS,
   GT42'S AND IMLACS.
      THE PACKAGE CONSISTS OF THREE MAIN PARTS.
   THE FIRST IS THE INITIATOR WHICH ASKS THE USER WHAT TYPE
   OF TERMINAL HE IS ON, AND LOADS THE APPROPRIATE FILES.
   THE SECOND PART IS THE ON LINE HELP SUBSYSTEM, WHICH
   EXPLAINS HOW TO USE MIGS TO A NEW USER. THE THIRD
   PART CONSISTS OF THE GRAPHICS PRIMITIVES AS WELL AS THE
   MORE COMPLEX DISPLAY SUBPROGRAMS. THESE FUNCTIONS WILL LET THE
   USER MOVE AND DRAW TO HIS HEARTS CONTENT; PERFORM
   CARTESIAN, POLAR, AND PARAMETRIC PLOTS OF A FUNCTION OF
   ONE VARIABLE. MIGS ALSO WILL LET THE USER PRODUCE A
   SURFACE PLOT OF A FUNCTION OF TWO VARIABLES WITH HIDDEN
   LINES REMOVED. A CONTOUR PLOTTER WILL BE ADDED SOON.
     SOME OF THE NEW DEVELOPMENTS THAT HAVE  BEEN
   RELEASED TO GENERAL USE, ARE THE DISPLAY COMPILER AND
   DISPLAY PROCESSOR. THE DISPLAY COMPILER AND
   PROCESSOR WILL GIVE THE USER THE ABILITY TO CREATE
   PICTURES AND SUBPICTURES, AND THEN TRANSFORM THEM (I.E.
   ROTATION, TRANSLATION, AND SCALING).
larsbrinkhoff commented 4 years ago

From http://home.earthlink.net/~rrs0/Resume.html:

The first major software system that Mr. Shiffman designed was MIGS for MIT-DMS. MIGS, which stood for Muddle Interactive Graphics System, was an extension to the Muddle (MDL) language (a dialect of Lisp) developed at MIT. See Publications, #2. MIGS modeled a subset of the Evans&Sutherland LDS-1 in software. As a matter of fact MIGS outlasted LDS-1 by several years. MIGS was an interactive 3D line-drawing graphical system with both immediate and display compiler/display processor modes. Immediate mode output would appear on your display terminal as soon as your input was complete. The display compiler mode would build a graphical data structure or MCELL, which would later be transformed and displayed by the software display processor. MIGS also contained a on-line help system that documented its use and operation.

Immediate mode was used for simple one time graphics, such as function plotting. It also handled all of MIGS's terminal output for the different types of terminals the system could use. MIGS was capable of supporting ARDS and Tektronix storage scope, Imlacs, DEC GT-40 family of displays, and HP 2648s. Immediate mode also graphical input from the Talos Tablet on USC's GT-42.

Display compiler / processor mode was used to generate complex 3D graphical images that could be displayed, transformed and redisplayed over and over again.

The display compiler and processor used homogeneous coordinates to represent graphical objects and matrix multiplication to perform all its transformations. MIGS allowed sub-picturing and transforming to any depth. There was no conditional image termination, so recursive image definitions were not allowed.

The first beta version of MIGS was released in 1972. After that Mr. Shiffman continued refining MIGS and adding new features to it. Thanks to MIT's optimizing Muddle compiler and many carefully rewritten code Mr. Shiffman was able to get the compiler to generate total in-line code. The final version of MIGS on a DEC KL-20 would match the performance of DEC FORTRAN. The Clipping divider in MIGS was based on the code of Ivan Sutherland and Danny Cohen described in Principles of Interactive Computer Graphics by Newman & Sproull. The matrix multiplier was hand-coded by Mr. Shiffman as in-line code without loops to increase its performance. The software character generator was one of the last features added to MIGS. This allowed the users of MIGS to place text in any MCELL or picture and apply any series of 3D transforms as could be done to any MCELL.

larsbrinkhoff commented 3 years ago

I believe all, or most, interesting files have been sent to Rick Shiffman now, and he has given permission to include them in the repository.

CC @36bit

larsbrinkhoff commented 3 years ago

I have pushed a branch called lars/migs. It has all the MIGS source and documentation files.

However, it's not possible to load the files since they use PACKAGE and USE.

eswenson1 commented 3 years ago

Note that if we get appropriate permission to include Muddle 55 from MIT, the package system works fine in that runtime.

Rick-Shiffman commented 3 years ago

in Muddle 105 and 106 (TENEX and TWINEX Muddles) the package system and MIGS ran fine. I don't know if there is any archives from USC-ISI that are still in existence, since Lars had to help me retrieve MIGS source files from MIT

larsbrinkhoff commented 3 years ago

Hello @Rick-Shiffman, nice to see you here!

We have Muddle 54 and 56 for ITS, which should correspond closely with the Tenex/Twenex versions 104 and 106. They work fine, but we do not yet have the libraries or compilers out in public. The same goes for anything 55 or 105. It's a long-draw process to get permission from MIT, but we're working on it.

In the meanwhile, maybe some small stubs for PACKAGE, USE, ENTRY, etc could make it possible to load MIGS?

Rick-Shiffman commented 3 years ago

Hi Lars, that should be possible for one predefined terminal type, I'm going to look at migspk and see what Need to be done. What display terminal type would You like; tecktronix or imlac / ards??

Sent from my iPhone

On Nov 29, 2020, at 2:02 AM, Lars Brinkhoff notifications@github.com wrote:

 Hello @Rick-Shiffman, nice to see you here!

We have Muddle 54 and 56 for ITS, which should correspond closely with the Tenex/Twenex versions 104 and 106. They work fine, but we do not yet have the libraries or compilers out in public. The same goes for anything 55 or 105. It's a long-draw process to get permission from MIT, but we're working on it.

In the meanwhile, maybe some small stubs for PACKAGE, USE, ENTRY, etc could make it possible to load MIGS?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

larsbrinkhoff commented 3 years ago

@Rick-Shiffman, Imlac would be the best terminal type. Thanks!

Rick-Shiffman commented 3 years ago

Hi Lars, I was looking for documentation on the muddle package system. I wanted to refresh my memory After ~40 years. I found the muddle manual and primer on line, but no documentation for <package "w">,

, and . at one time I prined the package docs. on MITs XGP. As far as I remember creates two oblists one inside of the other. The outer oblast is x and the inner oblist is ix. Any atom in is placed in the "x" obilst and and other atoms are placed in the ix oblist to hide them from outside the world. I almost forgot uses the dymagic loader if needed and inserts the packages outer oblist to your current oblists. > On Nov 29, 2020, at 8:22 AM, Lars Brinkhoff wrote: > > > @Rick-Shiffman , Imlac would be the best terminal type. Thanks! > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub , or unsubscribe . >
eswenson1 commented 3 years ago

The package system including and are documented in the document "The MDL Programming Environment". Do you have that document? I think the OBLIST manipulation of the package primitives is documented in that manual.

Rick-Shiffman commented 3 years ago

Hi Eswenson1, I found a viewable copy of "The MDL Programming Environment". Now its time to start working on an un-packaged version MIGS with Imlac / ARDS terminal drive peloadded

larsbrinkhoff commented 2 years ago

I think this can be closed now.

Rick-Shiffman commented 2 years ago

Hi Eric, I think so I've got all the parts of MIGS working.

The only future change I might make and I do mean future, is to allow you to change your terminal type after you've loaded MIGS. Which no one ever does, so I've currently disallowed it and sometime in the future even far future I may actually fix the problem. it requires a lot of oblist rearrangement. And it doesn't seem worth it at this time. Rick

PS what I find amazing is how well "ITSPKG >" works with Muddle 56 for what I do. It acts like the full package system in Muddle 55. All it needs is Rpackage Support.

PPRINT and FRAMES seem very well behaved in Muddle 56.

Sent from my iPhone

On Feb 13, 2022, at 12:28 PM, Lars Brinkhoff @.***> wrote:

 I think this can be closed now.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.