Open larsbrinkhoff opened 6 years ago
I doubt this is the right place to note this, but a new .zip file just appeared on bitsavers in http://www.bitsavers.org/bits/DEC/pdp6/X3411.2006_Peter_Samson_DECtapes/
Close but no cigar. TS9 extracted here: http://aap.papnet.eu/pub/pdp/10/ts9_dump.tgz File listing: DECBOT.8 DECUUO.298 LIGHTS.14 MACROS.115 MACROS.ORDER SAIL.73 SAIL.JARGON SYSCHK.36 XGPDEV.92 XQUEUE.171 ZONKER.HARRIS
Haven't checked unused blocks between files.
I have checked the unused blocks. I searched for some ITS symbols but got no hits.
ToTS tape 3100150, also known as MAPS; AI7104 1000, is a possibly full dump of the AI PDP-10 from April 1971.
It has source code for ITS 672, 673, and 674. Binaries in . are all 674, but SYSBIN; ITS BACKUP is 671.
I haven't found any large changes compared to ITS 720. The major missing piece would be the IMP. However, SALV doesn't have the TRAN subroutine to transfer files from magtape to disk. This would present a bootstrapping problem: how to get the essential SYS; ATSIGN HACTRN files onto disk?
ITS itself does have magtape support, but the source file is in the JSF directory. This suggests the code was recently somewhat experimental.
@fhgwright explained to me how ITS relied much more on DECtapes in the early days, and quite possibly ITS was booted off tape rather than disk. This still doesn't give us a method to get HACTRN onto a recently marked disk, but it provided a clue. I took another look at the ITS source code and discovered that HACTRN is first loaded from the SYS device, but if that fails it will retry with the UT2 device. So we can start ITS and get to DDT and access all necessary tools on a DECtape, and use plain COPY to transfer files to disk.
Searching for ITS pieces on old tapes.
ToTS ID | File | What |
---|---|---|
3100150 | FW; UT DIRS | DECtape listings with ITS 527. |
3100150 | .INFO.; SYS ARCHIV | News for ITS 549 and 546. |
3100150 | MJG; CARET BIN | Parts of ITS 629 binary. |
3100150 | RG; FD 4/1/68 | DECtape listings with ITS 265-346. |
3100150 | DEE; JUST BIN | Assembler listing of ITS using 2311 controller. |
Added to the moby table:
Another small piece of ITS. It could be PDP-6 ITS, because it's using the 2311 device. First 1K of DEE; JUST BIN on ToTS tape 3100150.
Compared to ITS 672 it's quite close, but it's missing two sections that deal with page faults, and two lines that deal with the Datapoint kludge device.
Looks like an assembler listing, but not like any MIDAS output I have seen. Maybe an NTS MIDAS?
OR DEBUGGING PURPOSES
285 001 012 TLNE D,210 ;NO ACCESS OR DBL
286 002 016 TRO A,BIOADC ;ILM
287 001 012 TLNE D,20 ;PURE
288 001 009 TLO A,(BPURE)
289 001 012 TLNE D,100 ;W IN RD ONLY
290 001 009 TLO A,(BWIRO)
291 001 012 TLZ D,5
292 353 016 CFH6: ANDCAM D,UPGML+3(U)
293 353 016 CLKB1K: LPMR UPGML(U)
294 004 028 CLKB1G: CONO 470000+APRCHN ;RESET
295 002 036 CLB1X: MOVE T,[BADBTS]
296 352 003 IOR T,MSKST(U) ;GET OR OF ENABLED AND BAD BITS
297 001 009 AND T,A ;GET AND WITH BITS ACTUALLY ON
298 015 302 JUMPE T,CLB1XA ;NOT BAD OR ENABLED, FORGET ABOUT IT
299 352 002 IORM T,PIRQC(U) ;BLAME IT ON THE USER
300 020 004 JRST SCHED
301 PAGE 15.5
302 352 014 CLB1XA: SKIPE FLSINS(U)
303 020 004 JRST SCHED
304 012 031 JRST CLKB1D
305
306 CNLJL: JRST 4,.+1 ;NULL JOB LOST
307 004 028 CONO 470000+APRCHN
308 020 004 JRST SCHED^M^L
001 PAGE 16
002 012 013 PCMARB: MOVE B,CLKBRK
003 353 006 MOVEM B,UMARPC(U)
004 002 017 TRO A,BMARI
005 001 010 MOVEI B,0
006 353 016 DPB B,[220300,,UPGML+2(U)] ;DISABLE MAR
007 001 021 POPJ P,
008
009 012 013 CPROC1: MOVE T,CLKBRK
010 003 004 TLNN T,LSRMOD ;SKIP IF FROM USER MODE
011 016 015 JRST CPRUUO
012 002 014 TRO A,BPROC ;GIVE USER INTERRUPT
013 001 021 POPJ P,
014
015 034 047 CPRUUO: MOVE T,[JRST ONEPROC] ;ONE PROCEED INT. FROM EXEC. MODE
016 050 027 MOVEM T,UEXIT ;CLOBBER EXIT TO RUN SYS CALL TO COMPLETION
017 001 021 POPJ P,
018
019 001 022 AROV: TLZE T,400000
020 003 004 TLNN T,LSRMOD
021 016 027 JRST AROV2 ;NOT REALLY SET OR SET BY SYS
022 012 013 MOVEM T,CLKBRK
023 352 009 SKIPE PICLR(U) ;SKIP IF INTERRUPTS TO USER NOT ENABLED
024 002 006 TRO A,AROIF ;GIVE USER INTERRUPT
025 001 021 POPJ P,
026
027 012 013 AROV2: MOVEM T,CLKBRK
028 001 021 POPJ P,
029
030 001 022 ARFOV: TLZE T,40000
031 003 004 TLNN T,LSRMOD
032 016 027 JRST AROV2
033 012 013 MOVEM T,CLKBRK
034 352 009 SKIPE PICLR(U)
035 001 009 TLO A,(ARFOIF)
036 001 021 POPJ P,
037
038 CLKB1E: CONSO PI,200000 ;GET HERE FOR MEMORY PARITY ERROR
039 016 047 JRST CLK1F ;SPURIOUS INT
040 CONO PI,240000 ;RESET
041 012 013 MOVE T,CLKBRK
042 001 014 MOVEI TT,0
043 001 010 MOVSI B,1
044 016 051 PUSHJ P,CLKMEM
045 020 004 JRST SCHED
046
047 004 028 CLK1F: MOVEI J,APRCHN
048 345 003 JSP E,SPUR
049 020 004 JRST SCHED
050
051 350 023 CLKMEM: AOS PARERR(TT) ;INCREMENT COUNT
052 346 052 IORM B,SUPCOR ;CAUSE MESSAGE TYPEOUT
053 350 025 MOVEM T,PARPC(TT) ;STORE INFO FOR MESSAGE
054 001 021 POPJ P,
055
056 MEMHNG: JRST 4,.+1
057 004 028 CONO 10000+APRCHN ;CLEAR NON EX MEM AFTER HALT TO RESET MEMORY
058 001 010 MOVEI B,IOCER3
059 003 005 TLNE T,SPECIAL
060 012 013 HRRM B,CLKBRK
061 001 010 MOVSI B,4 PAGE 16.1
062 001 014 MOVEI TT,1
063 016 051 JRST CLKMEM^M^L
001 ; PAGE 17
002 ; SLOW CLOCK SERVICE ROUTINE
003 ;
004 225 048 SSLCK: MOVE A,UTTBF
005 001 009 CAIGE A,30
006 017 009 JRST SSLCK2
007 347 029 SETOM UTBFLF ;SIGNAL CORE JOB TO FLUSH UTAPE BUFFERS
008 350 016 AOS NCORRQ
009 347 017 SSLCK2: SKIPE UTTYCT ;SKIP IF NO NEW USERS
010 035 005 PUSHJ P,USTART ;NEW USER TO START
011 167 075 SKIPL T,DWDS
012 001 022 MOVEI T,0
013 005 058 ADDI T,MDISWD
014 167 075 MOVEM T,DWDS ;RESET DISPLAY RATE COUNTER
015 CONSO UTC,4000 ;TIME FLG ENB
016 227 006 SKIPGE UIDLE ;SKIP IF DEC TAPE NOT IDLE
017 017 024 JRST SSLCK1 ;DEC TAPE IDLE
018 350 003 MOVE T,TIME
019 227 024 SUB T,LUTOTM ;SUBTRACT LAST UTC OPERATION TIME
020 003 034 CAIGE T,MXOPT*SCLKI ;SKIP IF DEC TAPE HUNG TOO LONG ON ONE OPERATION
021 017 024 JRST SSLCK1 ;OK
022 227 025 SETOM UTHERR ;SET UTC HUNG ERR FLAG
023 004 051 CONO UTC,CUINT ;CAUSE DEC TAPE INTERRUPT ROUTINE TO RUN
024 227 006 SSLCK1: AOSN UIDLE ;SKIP UNLESS DEC TAPE IDLE
025 004 051 CONO UTC,CUINT ;ACTIVATE INTERRUPT
026 004 040 CONO PI,UTCOFF
027 307 023 AOSN QIOCE ;SKIP IF 2311 BUSY
028 004 009 CONO 2311C,2311CH ;ENABLE 2311 INTERRUPT
029 001 021 IFN NMTCS,PUSHJ P,MSMAGC
030 004 039 CONO PI,UTCON
031 307 014 AOSN 2311ZR
032 004 009 CONO 2311C,2311CH ;END PHASE 2 OF ZERO RET
033 307 033 AOS QACTTM
034 019 002 SSKQ1: PUSHJ P,DISCHK ;CHECK FOR 340 DEATH
035 100 004 PUSHJ P,PDCCHK ;CHECK ON REAL-TIME HACKS
036 211 027 PUSHJ P,PTRCHK ;CHECK ON PAPER TAPE READER
037 342 065 SKIPN CCSDEV
038 017 050 JRST SCDCK3
039 342 065 SETZM CCSDEV
040 001 015 MOVSI I,-128.
041 342 062 SCDCK1: SKIPGE A,DCHNTC(
Information about early ITS development.
Date: Mon, 16 Jan 89 13:50 EST
From: Tom Knight <tk@AI.AI.MIT.EDU>
Subject: PCLSR paper history query
To: ALAN@AI.AI.MIT.EDU, TK@AI.AI.MIT.EDU
I'd permute the order of your list to:
Nelson, Greenblatt, Knight, Holloway in terms of relative importance for
early development. I actually took the first crack at writing a very
early version of the system (it was called SYS for quite a while, I
coined the name ITS later). Nelson was primarily responsible for the
PCLSR ideas. Greenblatt did a lot of the initial programming, such as
microtape support. I did a lot of the other stuff, such as core
allocation (using protect + relocate and BLT!) the early support for
teletypes (I did the hardware for those too). I did the first
modification of DDT to run under the system. It was "temporary" until
Greenblatt got around to writing his command processor (based on Midas
macros!).
Eastlake, Wright, Rubin, George Mitchell and Jerry Freiburg were all
quite important, but came aboard quite a bit later. In terms of
surviving code, both Wright and Rubin contributed quite a bit. Wright
did a lot of the rewrites of teletype routines for display devices.
Rubin added the job device and did a lot of work on the network code.
Another small piece of ITS. It could be PDP-6 ITS, because it's using the 2311 device. First 1K of DEE; JUST BIN on ToTS tape 3100150.
Compared to ITS 672 it's quite close, but it's missing two sections that deal with page faults, and two lines that deal with the Datapoint kludge device.
Looks like an assembler listing, but not like any MIDAS output I have seen. Maybe an NTS MIDAS?
It's an assembly listing of sorts. Instead of listing the instruction binary, the second and third columns are the page and line number where the reference is defined. If the address is numeric, it falls back to reporting the AC definition. If both the address and the AC are numeric, it reports nothing.
IIRC, at the end of a listing, there was a complete symbol table based on page and line number of definitions.
Fred Wright
OR DEBUGGING PURPOSES 285 001 012 TLNE D,210 ;NO ACCESS OR DBL 286 002 016 TRO A,BIOADC ;ILM [...]
Oh, so maybe it's a CROSS or CREF listing. Thanks!
I sent this rough timeline to Tom Knight: (later additions in italics)
He replied:
That is quite an accurate reconstruction of the history. Some additional wrinkles:
The first time sharing system was started by me (but heavily influenced and architected by Stu Nelson). Nelson was responsible for the key idea of PCLSR, probably the most important concept in the OS. The original system was just called SYS, and was later renamed (by me) to ITS. There probably are no extant copies of the original versions, since, as you suggest, they were all on Dectape. Greenblat wrote the dectape control software, which was extremely important in the early days, since there were no disks. Placement of software on blocks mattered, as it could take many seconds to reach a distant file on the tape. Greenblat also figured out how to make the controller spin multiple tapes at the same time, which was also an important optimization, and difficult without help from the dectape controller. Tapes occasionally would “flap” if the software failed to get back to a tape in time. I built the first multi-teletype controller for the PDP-6, which drove the first model 35 teletypes, some modems, and was later used to automatically dial up CTSS on system start to fetch clock time. I also modified DDT as an “interim” measure for handling job creation and debugging. Greenblat had a vision of some other program (never really articulated well, at least to me), called HACTRN. DDT eventually evolved into the primary interactive method. Nelson again had a lot to do with the development of that technology.
ITS hardware memo 1 from February 1970 has information about the 2311 interface, but not the DC-10 2314 interface. The tape from April 1971 has ITS using the DC-10 and no trace of the 2311. However, the tape does have SALV and DSKDMP for the 2311 which suggests a transition had been made not too long before.
The memo also has GE typein and typeout devices at codes 70 and 750. ITS hardware memo 5 documents a "new version of the old Kotok dataphone previously used to interface with the Datanet 760" at code 400. ITS on the 1971 tape has symbols GTYI and GTYO for devices 70 and 400, but only has one trivial use of GTYI.
To create a new directory in 1972: Patch NUFDTB with the sixbit name of the directory. Then access a file.
To create a new directory in 1971: Patch NUFDSW to -1, then write a file to the directory.
HACTRN is first loaded from the SYS device, but if that fails it will retry with the UT2 device.
This must be some remnant from earlier days, because the code no longer works. When ^Z has been typed, the fresh job calls .CALL LOAD to read the program. But this system call doesn't support loading from DECtape; it calls a stub at LOADS which jumps to ILLUUO. There must have been some other way to load programs before .CALL was introduced.
Snippets from a 1988 book. It seems Gerald Sussman had (has?) a 1967 printout of ITS.
When I told Sussman about Rees feeling compelled to shoot down the idea of adding unnecessary code to the program, Gerry was sympathetic. "Most people don't realize that you don't want to make a language more and more complicated. Rees and I have the same feeling, which is you want the thing to be simple and small and elegant - lean and mean. Most programmers tend to clutter up their languages and make them more complicated. One of the things you have to work on when you make up a computer language for people with good taste is you have to keep your thumb on all the people who want to make it more complicated. Keep it simple. I don't want the language to be complicated. I want the things I can build with it to be complicated." I spoke of how Gumby liked to read good code and about how he would laugh sometimes at a clever hack. "I believe programs will become a new literature," Sussman said. "And that they say things that couldn't be said mathematically. They provide methodology. I have files of old programs that are classified under Humorous, Sad, programs that are tragic, programs that I've learned something from by reading. I can tell a lot about the personality of the programmer." I mentioned the XOR hack that Gumby had liked. "Two XORs in a row?" Sussman said. "Sounds like a Gosper program. I can tell you who it was: Bill Gosper. That's the kind of thing Gosper would write. It's very brilliant, very clever, and it's also at a very low level of detail. And then there are people who are ore architectural. "When I see a program written by Gosper, I can recognize it. I can read programs write by Winston [Patrick Henry Winston, a former Minsky student who now heads the department] and tel you that's a Winston program. Its got its own flavor." Then Sussman opened a file drawer, saying, "A long long time ago, what did LISP look like?" He laughed, pulled out a half-inch-think computer printout, laughed again, and said, "It was only this big. That's the amazing thing. It was written by many people. A listing of LISP systems now is about five or six times as thick." "Yet I can look through this a read various pieces of the code and say, 'This part was written by [Richard] Greenblatt.' I can tell." The[n] he pulled out a printout that he handled as if it were an original Gutenberg bible. It was the original code for the ITS operating system — the Incompatible Timesharing system. It even seemed awesome to me. Today we just accept the fact that a mainframe computer can be in the basement of a building and desktop terminals can be spread throughout a building, or throughout the world, providing anyone with a terminal, access to the computer. It is hard to realize that as late as the 1960s this wasn't the case. If you wanted computer time, you wrote your program, took it to the computer room, and had it run oftentimes by someone else, even if you wanted to do it yourself. It is a tribute to the modesty and especially to the irreverence of the early hackers that when they created the world's first timesharing system at MIT, they provided it with a name that was completely opposite from what it really was: the Incompatible Timesharing System. There was Gerry Sussman holding that half-inch printout, a blessed relic from 1967. The machine has a Moby memory, and as if reciting from the opening words of the Great American novel, Sussman held the printout in his hands and said, "The first line of it is, Moby is One." It was written as Moby = 1, but the way Sussman read it, there was the sound of poetry and philosophy, as existential a piece of haiku as I have ever heard: Moby is One. "These days such an operating system would have maybe one hundred times as much code. But this is what it was like then, filled with some very beautiful code — and some very ugly code. Some of it is humorous, and some of it is sad. Some of it had ideas in it that have been lost. Some historian could go through it someday and read it the way people read the Dead Sea Scrolls and say, 'Aha, The guys who wrote this were real smart guys. And some of the things they knew, we don't even know now.'" My code was neither cute nor clever. It was awful. But I had been spending some time blundering about with Logo, which is a simplified LISP language, and had found how intoxicating it was to make a computer do your bidding. I had also found how easily the hours could slip away as you kind of did a mind meld with the computer terminal. One morning I went down to the fourth floor with Patrick Sobalvarro, who had helped write several versions of the Logo program, and we found an Apple Ile to play with. The first time I had met Sobalvarro was up on the ninth floor, in one of the small laboratories that ring the field of computers. I had been watching members of Ken Salisbury's robotic-hand group working on the computer-controlled motions of a three-fingered hand they had created. Each finger had three joints. A VAX minicomputer was used for the execution of, and a LISP machine was used to translate the movement commands for the VAX. "Holy shit!" Sobalvarro said when he saw the smoothness with which the three fingers turned a pop can. Steven Chiu, who had done the LISP programming, was proud that Sobalvarro was impressed. Sobalvarro had programmed computers for the control or robotic arms and knew how complex the code could be.
Who is the narrator here? The time would appear to be the early-mid 1980s.
It's all from the book in the comment above: The Tomorrow Makers, by Grant Fjermedal. So the narrator would be Grant. The book was first published in 1986, with a second edition in 1988. I have ordered a used copy.
I also emailed Sussman inquiring about the printout, but I got no reply so far. I will pursue this further, because I think a 1967 version of ITS would be very interesting to see!
I wasn't sure if it was Grant (whom I hadn't heard of until you cited his book) or if he was quoting someone I might know.
Either way, yes, a 1967 ITS would be fascinating! I should also get the book. I don't normally do paper books these days (my nice home library quickly spread to every place we could put a bookcase decades ago, and my eyes like being able to adjust the print size...). But this seems worth it!
Update! Sussman found the listing which turns out to be ITS version 138.
William Arthur Martin's1967 thesis paper, Symbolic Mathematical Laboratory mentions the PDP-6 to CTSS dataphone Lisp interface code. My impression is that it preceded ITS but he does state that the large core memory had become available.
Thank you, @ambiamber. I see the date January 1967. This is consistent with what we have learned about the moby memory. It was delivered some time mid-1966 but it took a while to get it working right. Peter Samson told us the subway hack required the use of the full moby, and that took place in April 1967. ITS went online in July.
I haven't researched the dataphone interfaces thoroughly. ITS hw memo 5 mentions an "old Kotok dataphone", although that was supposedly interfacing to the Datanet 760. ITS source code from 1971 has a dial out device and code to retrieve the time and date from CTSS; these were made by Fred Wright.
I talked to @gjs some weeks ago, and he said he'd have the printout scanned.
The ITS 138 listing is now being processed: https://github.com/PDP-6/ITS
The TITLE directive says ITS 1.0 3/19/67
, but the dating doesn't seem to have been updated. It has support for GE consoles, but not Data Disc drives. They are both present in AI memo 161 from July 1968.
It looks like we have much of ITS version 785 from 1973. There's support for the KA10 AI and ML machines. (No DM from what I can see.)
So far, this repository has been focused on restoring and updating 1990 vintage ITS. These old files doesn't have any obvious place in this regime. Also, I feel I don't have time for this.
The files are checked into the syseng-1973 branch. Any takers?