Source Code for CTSS released
Mainframes ROCK! writes "The source code for the Compatible Time-Sharing System, CTSS, has been released, and the here is the source code. CTSS was one of the first time-sharing operating systems and a direct ancestor of Linux. Developed at MIT in the 1960's on a specially modified IBM 7094 system.; it was developed at Project MAC at MIT. CTSS was first published, as well as operated in a time-sharing environment, in 1961; in addition, it was the system with the first computerized text formatting utility, and one of the very first to have inter-user electronic mail."
Hello potential prize winner! Consider using your time to create an entry in this year's Slashdot Super Code Bowl. Prizes will be awarded to anyone who proves their worth by submitting code that fits any of these categories:
Other categories may be added, and bonus prizes for most original, most useless, and most useful code will also be awarded.
Karma: SELECT `karma` FROM `users` WHERE `userid`=138474;
You have to go to their half day seminar.
...is on RubyForge right here.
It's 400K lines of assembly code... what could be sweeter?
The Army reading list
Correct me if I'm wrong, but wasn't Linux written by Linus Torvalds back in the early 90's?
I'm probably at the karma cap. Mod up a funny troll instead, it lightens the mood
If I remember correctly, it was CTSS (or a derivative there of) that RMS hacked on at MIT, so it's cool to see it still out there to be hacked on.
According to RMS in Revolution OS, this was also the machine that he worked with at MIT. I believe it was the fact the he had access to all the code on the system that lead him down his path, believing that you need source code availability to fix/tweak/hack to your needs.
put the what in the where?
CTSS was one of the first time-sharing operating systems and a direct ancestor of Linux.
Does this mean SCO has the code it needs to prove that Linux contains Unix code?
"They redundantly repeated themselves over and over again incessantly without end ad infinitum" -- ibid.
Not from scratch. He started with Minix.
Support the First Amendment. Read at -1
It's about time... oh wait.
REMINISCENCES ON THE HISTORY OF TIME SHARING
John McCarthy, Stanford University
1983 Winter or Spring
I remember thinking about time-sharing about the time of my first contact with computers and being surprised that this wasn't the goal of IBM and all the other manufacturers and users of computers. This might have been around 1955.
By time-sharing, I meant an operating system that permits each user of a computer to behave as though he were in sole control of a computer, not necessarily identical with the machine on which the operating system is running. Christopher Strachey may well have been correct in saying in his letter to Donald Knuth that the term was already in use for time-sharing among programs written to run together. This idea had already been used in the SAGE system. I don't know how this kind of time-sharing was implemented in SAGE. Did each program have to be sure to return to an input polling program or were there interrupts? Who invented interrupts anyway? I thought of them, but I don't believe I mentioned the idea to anyone before I heard of them from other sources.
My first attempts to do something about time-sharing was in the Fall of 1957 when I came to the M.I.T. Computation Center on a Sloan Foundation fellowship from Dartmouth College. It was immediately clear to me that the time-sharing the IBM 704 would require some kind of interrupt system. I was very shy of proposing hardware modifications, especially as I didn't understand electronics well enough to read the logic diagrams. Therefore, I proposed the minimal hardware modification I could think of. This involved installing a relay so that the 704 could be put into trapping mode by an external signal. It was also proposed to connect the sense switches on the ccnsole in parallel with relays that could be operated by a Flexowriter (a kind of teletype based on an IBM typewriter).
When the machine went into trapping mode, an interrupt to a fixed location would occur the next time the machine attempted to execute a jump instruction (then called a transfer). The interrupt would occur when the Flexowriter had set up a character in a relay buffer. The interrupt program would then read the character from the sense switches into a buffer, test whether the buffer was full, and if not return to the interrupted program. If the buffer was full, the program would store the current program on the drum and read in a program to deal with the buffer.
It was agreed (I think I talked to Dean Arden only.) to install the equipment, and I believe that permission was obtained from IBM to modify the computer. The connector to be installed in the computer was obtained.
However, at this time we heard about the "real time package" for the IBM 704. This RPQ (request for price quotation was IBM jargon for a modification to the computer whose price wasn't guaranteed), which rented for $2,500 per month had been developed at the request of Boeing for the purpose of allowing the 704 to accept information from a wind tunnel. Some element of ordinary time-sharing would have been involved, but we did not seek contact with Boeing. Anyway it was agreed that the real time package, which involved the possibility of interrupting after any instruction, would be much better than merely putting the machine in trapping mode. Therefore we undertook to beg IBM for the real time package. IBM's initial reaction was favorable, but nevertheless it took a long time to get the real time package - perhaps a year, perhaps two.
It was then agreed that someone, perhaps Arnold Siegel, would design the hardware to connect one Flexowriter to the computer, and later an installation with three would be designed. Siegel designed and build the equipment, the operating system was suitably modified (I don't remember by whom), and demonstration of on-line LISP was held for a meeting of the M.I.T. Industrial Affiliates. This demonstration, which I planned and carried out, had the audience in a fourth floor lecture room and me in the computer room an
a direct ancestor of Linux
Direct ancestor? Not by a long shot. Unless you consider that any multi user, multi tasking, time sharing operating system as a direct ancestor.
2bits.com, Inc: Drupal, WordPress, and LAMP performance tuning.
ken thompson and dennis ritchie both used ctss, and cite it as an inspiration for unix. and we all know unix is linux's father's former roommate. what does that make linux? ...absolutely nothing.
That only means that many people now call any UNIX system "Linux". In the popular culture, there is no UNIX. They just call it all "Linux".
Lets see when people will call any Operating System "Linux"? Any guesses?
Nostalgia or machinropology, whatever, http://www.lcs.mit.edu/publications/pubs/pdf/MIT-L CS-TR-016.pdf
But alas there isn't. Actually, projects, like simh (or the hercules 360 emulator) do offer a chance to give new life to historic operating systems.
Ugh.. No, he didn't start from Minix. He wrote Linux from scratch, using Minix as a sort of model. Its like if you go into an elevator and take a ride, and then make your own elevator without looking through the elevator motors and the like.
You can mod your friends, you can mod your nose, but you can't mod your friend's nose.
CTSS (Compatible Time Sharing System) lent its name to MIT's ITS (Incompatible Time Sharing System) for the PDP-10.
I'm pretty sure it was ITS that RMS developed Emacs (Editor Macros, or Eight Megs and Constantly Swapping) on but he'd know for sure.
Also, from SAIL (Stanford Artificial Intelligence Laboratory) we got WAITS which was the West-coast Alternative to ITS.
MULTICS also grew out of these roots, and Unix of course is a play on "Multics".
*ahem*
I reset my case.
I consider myself an expert in FAP.
And here comes Mr. "I didn't get the joke!"
If my answers frighten you, stop asking scary questions.
...and others. The word you are looking for is not "lead". Lead is either the element/metal lead (Pb), to lead someone is to go before them as they follow, and a lead can be a rope or line with which you lead someone. When you lead someone, they are led, not lead. Unless you lead them into your crucible and alchemically make them into the material from which we make bullets.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
that this 40 year old code has fewer buffer overrun vulnerabilities than XP, even with SuperPatch2?
SLASHDOT: news for people who can't concentrate on work or have no life at all and got tired of yelling back at the TV.
The first version of what came to be called CTSS ran in 1961 on an IBM 709. See here for more info:
http://www.multicians.org/thvv/7094.html
CTSS was one of the first time-sharing operating systems and a direct ancestor of Linux
I thought we were trying to fight Darl et al on the grounds that Linux is completely free of any legacy UNIX code.
It's a clone, not a descendant.
I don't need no instructions to know how to rock!!!!
CTSS was one of the first time-sharing operating systems and a direct ancestor of Linux.
What is the basis for this statement? Linux neither contains CTSS code, nor was modelled upon it, and neither were any of its ancestors. It's an indirect ancestor maybe.
I hope Melinda doesn't hunt me down and kill me for causing a /. storm on her web site, but the paper is available at http://pucc.princeton.edu/~melinda/.
Enjoy.
A clever person solves a problem, A wise person avoids it. -Einstein
Indeed, calling CTSS a DIRECT ancestor is a bit of a stretch. Dennis Ritchie is about as authoritative as you are going to get on the history of Unix and Unix is the direct ancestor of Linux. Read his article on the history of Unix. There you will find his quote in section 1.3 on just where CTSS comes into the genisis of Unix....it is a distant ancestor. The Wikipedia article on history of OS'es is strangely lame on this topic.
SLASHDOT: news for people who can't concentrate on work or have no life at all and got tired of yelling back at the TV.
Just thought I'd mention.
Huxley
Wrong. Linux 0.1 was torvalds-only code. And as far as I know, there has never been any minix code in linux, ever.
The Yasashii Syndicate ||
On the newsgroup, it's stated " You'll have to know
a little FAP and MAD to understand it. There are even a few programs in AED-0, an Algol variant."
Thank god, I thought I was going to have to learn something new...er, old to be able to use it!!!
I believe that is Elvis Masterminds All Computer Science
(S(SKK)(SKK))(S(SKK)(SKK))
The first mainframe versions of Unix(R) were run on top of a modified version of CTSS. Also CTSS is considered the father of Multics which in turn begat Unix.
"To those who are overly cautious, everything is impossible. "
Their server appears to still run on CTSS!
one of the very first to have inter-user electronic mail
because intra-user electronic mail wasn't as useful as people had hoped.
... and next thing you know, a company will change management, rename itself, claim they own this ancient technology, try to pretend like source code was never released, and then launch a major lawuit claiming that modern systems infringe upon a variety of vauge intellectual property rights from ancient code.
PJRC: Electronic Projects, 8051 Microcontroller Tools
...anyone care to enhance MESS?
"...and one of the very first to have inter-user electronic mail."
Apparently, in the previous versions, users were only able to email themselves.
This
Nope. Linus stole from it in a covert ops mission against the USSR, thereby causing the USSR to collapse. The original code was stolen by KGB agents from SCO.
Not to troll, but in some ways this makes me a little sad. Those were the days of 400+k of assembly code, and largely very well optimized.
And then you look at most programmers today, and the way bloated operating systems are written, not to mention the bloated applications that go with it.
I guess we've more or less lost programming of that kind, even things like mobile and thin-client devices these days run higher-end language platforms like Java. I do understand that higher levels of abstractions bring more capability, and we probably would not have been able to handle the complexities of today's code all in assembly -- but a lot of people seem to be using that as an excuse to come up with bloated, non-optimized and useless code swell with features nobody uses.
Reminds me of The Story of Mel, and what we've lost.
Yeah, but can you run CTSS on an iPod?
I have a krell amp that has a mc68hc711 microcontroller in it. Can it be ported to this device? I'd love to be able to set up some unix policies that would prevent my buddy from turning the volume up too much.
Languages like Java and C# are chosen for speed of development, which is especially important in the fast-changing market of mobile devices. You don't want to be dinking around with registers while your competitors are releasing completed products.
No, you're wrong. Linux was written by Santa Claus and the Easter Bunny.
The only reason we have the rights we have is that people just like us died to gain those rights. -- Cheerio Boy
While I was graduate student in the 1980's there were a bunch of the most powerful Cray supercomputers at Los Alamos running this OS.
I think there was even a variant, LTSS that was run at Livermore.
Those were the days of using line editors over 300 baud modems.
"Provided by the management for your protection."
Fom there, Linux supports user-level kernels, so it would be possible to boot CTSS inside of Linux running as CTSS. Thus completing one of the challanges.
I'm scared.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
Anyone else find it ironic that the site has been slashdotted? Guess the web server isn't that good at time-sharing.
Seriously though, this sounds very cool. Though I guess I'll be waiting until later to check it out.
Get a free ipod!
I understand how you feel. I didn't start programming, or using computers really till 1996, but even then x86 asm + C seemed to rule the programming world. That's one thing that inspired me to be a programmer. So I spent a lot of time mastering those two, and learning to be a tight coder. However since C++/Java (OOP) and the myriad of GUI widgets came out. It seems politics have taken over programming skills. From a business perspective it makes sense though. Get it done, use what resources get it done that's "Good enough" and get it out the door ASAP. Hense we have a ton of VB code monkeys out there. Yet I'm making minumum wage, because I can't do VB.Net. Guess I have mixed feelings. Bottom line is it's not an artform anymore, it's a strict business with $$ making the decesion.
Lets change the law so Microsoft has to divulge their source-code for analysis to see how much they have "ripped off" CTSS.
I'm sure we can find a lot of patents and algorithms in there. for example; FORGET INTERNET CONNECTIVITY, Microsoft; all your networking code r belong to us now, see?
You'll see them change their stance on copyright and IP law pretty quickly, if you ask me.
It'b be interesting to watch all their lobbyist and FUD people run around looking for an escape hatch!
Either way, it's going to happen; Microsoft will be trumped by prior art. Foregone conclusion.
I don't know the meaning of the word 'don't' - J
Since CTSS is a distant ancestor of Unix but an ancestor nonetheless and CTSS is now part of Open Source, that means SCO Unix obviously stole from CTSS and thus owes $999.99 to the open source movement per license. I'm sure we can find a few "if"-statements in SCO Unix, which probably also appears in CTSS. J/K.
EvilCON - Made Famous by
When was the last time you heard the word "elegant" used referring to a program?
But I gotta admit, I love the type safety and bang/line and the built-ins I get from languages like Java.
No folly is more costly than the folly of intolerant idealism. - Winston Churchill
I'm pretty sure the emulator guys are working on this already as we speak ;-)
But seriously, I think it's very useful to actually SEE the code of the systems they might mention in operating systems classes, history section. Understanding the progress can be accomplished by letting students play with CTSS or CP/M or a LISP machine, and I daresay in the latter case many students might even ask "So what happened in the meantime?"...
--
Try Nuggets , the mobile search engine. We answer your questions via SMS, across the UK.
Imagine a fucking wireless beowulf cluster of CTSS running on this!!! and powered with some antigravitational pads... they would go for sure towards RMS for trying to hack their collective mind years ago!!!
...
...
...
I, for one, welcome our new MindCrawler Overlords
Your head a splode
In the mid-1960s, the 7094 was one of the biggest, fastest computers available, able to add floating numbers at a speed of about 0.35 MIPS. A standard 7094 had 32K 36-bit words of memory. Its data channels could access memory and run simple channel programs to do I/O once started by the CPU, and the channels could cause a CPU interrupt when the I/O finished. They cost about $3.5 million. Paul Pierce's collection includes a real 709 and 7094.
MIT got an IBM 7090, replacing the 709, in the spring of 1962, when I was a freshman, and had upgraded the 7090 to a 7094 by 1963. The 7090 and 7094 were operated in batch mode, controlled by the Fortran Monitor System (FMS). Batch jobs on cards were transferred to tape on an auxiliary 1401, and the monitor took one job at a time off the input tape, ran it, and captured the output on another tape for printing and punching by the 1401. Each user job was loaded into core by the BSS loader along with a small monitor routine that terminated jobs that ran over their time estimates. Library routines for arithmetic and I/O were also loaded and linked with the user's program. Thus, each user's job had complete control of the whole 7094, all 32K words of memory, all the data channels, everything.
IBM had been very generous to MIT in the fifties and sixties, donating its biggest scientific computers. When a new top of the line 36-bit scientific machine came out, MIT expected to get one. In the early sixties, the deal was that MIT got one 8-hour shift, all the other New England colleges and universities got a shift, and the third shift was available to IBM for its own use. One use IBM made of it was yacht handicapping: the president of IBM raced big yachts on Long Island Sound, and these boats were assigned handicap points by a complicated formula. There was a special job deck kept at the MIT Computation Center, and if a request came in to run it, operators were to stop whatever was running on the machine and do the yacht handicapping job immediately.
Early Time-Sharing
MIT professors, such as Herb Teager and Marvin Minsky, wanted more access to the machine, like they had had on Whirlwind in the fifties, and quicker return of their results from their FMS jobs. John McCarthy wrote an influential memo titled "A Time Sharing Operator Program for Our Projected IBM 709" dated January 1, 1959, that proposed interactive time-shared debugging. These desires led to time-sharing experiments, such as Teager's "time-stealing system" and "sequence break mode," which allowed an important professor's job to interrupt a running job, roll its core image out to tape, make a quick run, and restore the interrupted job. McCarthy's Reminiscences on the History of Time Sharing describes his and Teager's role in the beginnings of time-sharing. Teager and McCarthy presented a paper titled "Time-Shared Program Testing" at the ACM meeting in August 1959.
FMS and Batch Processing
MIT and the University of Michigan were both 7094 owners, and the computation center people were colleagues who traded code back and forth. When I was a freshman in 1961, we used FORTRAN in the elementary course (FORTRAN II was brand new then), but by the time I was a sophomore, MIT had installed Michigan's MAD language, written by Graham, Arden, and Galler, and was using that in most places that a compiler language was needed, especially computer courses. MAD was descended from ALGOL 58: it had block structure and a fast compiler, and if your compilation failed, the compiler used to print out a line printer portrait of Alfred E. Neumann. (MIT took that out to save paper.) Mike Alexander says, "MAD was first developed about 1959 or 1960 on a 704, a machine which makes the 7094 look very powerful indeed." MAD ran under UMES, the University of Michigan Executive System, derived from a 1959 GM Research Center executive for the IBM 701 that was one of the first operating systems.
Part of the Michigan/MAD code was a replacement for the standard FORTRAN output formatter routine, (IOH). (Programs written
AdsJunction.com Ad Network
June 29, 1999
Web posted at: 11:32 a.m. EDT (1532 GMT)
by Mary Brandel
(IDG) -- It's the late 1950s, and you're a computer operator at MIT running a long job on a computer donated by IBM. The phone rings. It's a request from the president of IBM -- who races big yachts on Long Island Sound -- to run the program that assigns handicap points to the boats.
That request means you have to abort the job that's running, mount a new tape and then restart the current job from scratch.
Or maybe you're a computer programmer. It's late afternoon, and you're picking up the results of the computer program you dropped off this morning. The printout contains an error message. After waiting all day for your program's results, you discover you have left out a comma.
It was in that type of environment that John McCarthy, a professor at MIT, submitted a memo to Philip Morse, then the director of the MIT Computation Center, outlining a new concept called "time-sharing." Unlike batch processing, where programmers submitted programs on punch cards to a computer center, this new mode of computing promised to make computers more accessible to, and interactive with, users.
Encouraged by Morse to pursue the idea, an associate professor named Fernando Corbato and his team developed the Compatible Time-Sharing System (CTSS) in 1961, which was the first demonstration of how time-sharing could be done.
Simply put, time-sharing enables a computer to serve many users simultaneously, so that each person feels like he's using his own private computer.
Functionally speaking, a time-sharing computer stops a long job, copies its memory to a place on a disk, runs something else and then starts up the long job again -- without interrupting the user. "Each user's program has access to the full resources of the machine, and several programs can share time on the machine," explains Tom Van Vleck, who was a junior member of the CTSS team and a developer of Multics, a successor to CTSS.
In addition, computing is interactive. Programmers create programs on the keyboard, and the computer responds almost immediately, with results or error messages.
Although that sounds quite rational to the 1990s user, not even the hardware was prepared for such a radical concept in 1961. For instance, the IBM 7090 used by Corbato's team lacked a keyboard. "Fortunately, we were able to get Teletype machines from AT&T Corp. and Selectric mechanisms [IBM Selectric electronic typewriters] from IBM to solve that problem," Corbato says. "But even then, we had to fight for both upper and lowercase letters."
Working with IBM, the team was able to modify a second machine, an IBM 7094, to solve that and many other problems. "Many of these solutions are still in use today," Corbato notes. They included a hardware timer to interrupt user programs and a way to prevent programs from operating outside of designated memory boundaries.
The 1961 demo was "crude and incomplete," according to Corbato. However, it showed time-sharing to be a feasible concept, and many time-sharing systems would follow the CTSS demo. The finished version supplied time-sharing services to MIT, New England colleges and the Woods Hole Oceanographic Institution.
But most important, the CTSS demo led to Project MAC. Funded with $3 million in 1962 by the Advanced Research Projects Agency (ARPA), Project MAC's first goal was to develop a full-fledged time-sharing system, named the Multiplexed Information and Computer System, or Multics.
Multics wasn't ready until 1969, and it never became a commercial success. However, It is important in many ways. For one thing, Ken Thompson and Dennis Ritchie, the inventors of Unix, used many ideas from Multics.
But perhaps most important, time-sharing brought users into the universe of computer design.
"Time-sharing introduced the engineering constraint that the interactive needs of users [were] just as important as the efficiency of the equipment," Corbato says.
AdsJunction.com Ad Network
It was a great (ie better than BASIC) beginner's programming language that ran on CTSS. I think that it originated at Princeton while von Neuman was still there. One version was supplied by a big Fortran program that could support about 50 users. Somebody ought to emulate that bugger on a website.
Bloody hell, the ignorance and linux centric zealotry is simply astounding.
Feed the need: Digitaladdiction.net
Anything in here that would count as prior art in order to undermine the patent portfolios of Microsoft, IBM, Sun et al?
That's not the point.
It's a pre-emptive strike against Microsoft's IP and patenting shenanigans.
I'm sure we can find similarities.
What's Microsoft's reaction going to be?
"It's ridiculous to try and patent software"
Exactly.
I don't know the meaning of the word 'don't' - J
Have you ever tried to maintain code for 5 or 10 years in any language?
Yes. Almost 17 years worth of code for industrial test machines written in Z80 asm, x86 asm and C.
400K of hand optimized assembly code is probably lightning fast. It will be difficult to maintain, and utterly unportable.
Funny, 4 months ago I quit my programming job that I had since 1986 so I could better attend family needs. One of my last assignments there was to upgrade the software of one of the first machines I helped program in '86. It consisted of around 80K of data and Z80 machine code (written in assembler). I did an end run around the 'portability' issue by writing a Z80 emulator in C that also emulated some obsolete graphics hardware on an new, embedded PC platform. Along the way, I fixed some bugs in the old Z80 code.
Higher level languages have evolved to give us safety, abstraction, maintainability, and portability at the cost of speed.
I have to agree. I was able to 'maintain' that Z80 code 'cause I'd been steeped in it for at least 8 years. I was able to complete the emulator (and various feature upgrades) in about 2 months by the grace of C.
What's fun is that running those old assembly language programs on an emulator on a modern computer can be very very fast. We've recently brought up a PLATO system, running on an emulated Cyber (60-bit one's complement machine). On a 1.8GHz Opteron, on a not-very-optimized-for-speed emulator, the thing is about 8 times faster than the original system was in the mid-70's, and we were running about 500 people on a dual-mainframe system back then. PLATO is a time-sharing system that runs under NOS, and implements its own language (internally, a combination of pcode-like execution intermixed with natively-compiled expression evaluation). So, an emulated system running an interpreted language, and you should be able to run 800-1000 people on it on a $2,000 computer (RAM and disk space, of course, is totally beyond what was available back then). Highly optimized emulation of the Cyber architecture can run 2-8 times faster (at least) than that (e.g. 15-50 times faster than the original machines) on the faster Alpha machines, and (due to total neglect of the Alpha line) the Opteron processors appear even faster (except my static translator from Cyber to Alpha assembly code would need to be modified to target AMD64 instructions, instead).
Also, relevant to this story, is that PLATO was also "one of the first time sharing systems" with "one of the first electronic mail" facilities.
See the Cyber1 web site for more information about bringing up a PLATO system.