Restoring YC's Xerox Alto day 8: it boots
righto.com
righto.com
Date and Time Unknown
Oh, you poor sweet computer, if we told you the answer, it would blow your little mind.You could run into crashes if something was dependent on the date being in the future since when the machine was built (and hence you get a negative number when you shouldn't have), or if the machine was alive between 1999 and 2000 (in which case the BIOS or applications may complain because you've gone back in time).
This /mostly/ affected date formats. Well built systems and programs measured time in seconds since the epoch on operating systems that supported that time representation format.
https://en.wikipedia.org/wiki/File:PC_DOS_1.10_screenshot.pn...
...and if you accepted the default, as many people at the time did, it would be 1980-01-01 00:00:00. DOS and the PC actually had no Y2K problem, storing the number of years since 1980 in a single byte --- which will overflow after 2235. It is notable that there is no year 2038 problem either.
I'm not sure what the Alto's RTC capabilities are. Hopefully a bit better than the PC's?
And then I could swear at least one of my video cards added a joystick port.
When sound cards came out with ide ports many computers still had ST-506 hard drives and not ide drives. Even if they did they might only have a single IDE port which was already being used or using it for a CD-ROM required on mounting your hardrive to switch master/slave jumpers on your hard drive. As since people at the time were installing sound cards for games and many need games requires CD-ROM drives the painting makes perfect sense. When soundcards with ports for CD-ROM drives first came out they weren't even necessarily ide ports. Some were SCSI or Sony CD-ROM ports.
The point of this is the Alto can handle dates until 2036, but will run into problems two years before Unix self-destructs in 2038.
[1] http://xeroxalto.computerhistory.org/Indigo/AltoSource/TIMES...
https://systemfolder.files.wordpress.com/2009/11/lisaem-date...
http://lisafaq.sunder.net/lisafaq-hw-io-cop421_clock.html
(Apart from this shortsightedness, the rest of the Lisa's design is also... interesting. Proprietary custom ICs, a pretty much locked-down user-is-an-idiot GUI, and complete separation between users and developers. It failed then, but unfortunately the same strategy is now considered the norm 30 years later...)
As with all old iron there is little point to it but I used to love it.
Edit: also I do not think there is little point: it still allows people to get away from the computer as magic. Even though it does not completely compare to a modern system, once you have done this you will never think you system is performing magic or that some coding bug is the universe conspiring against you.
I have a huge amount of respect for the people doing this, and it does look like great fun for them to do it and I do enjoy reading about them doing it but the idea of hooking up hundreds of logic probes and analyzing code on a logic analyzer sounds like something that is, personally, a nightmare. But, this is coming from a guy who hasn't picked up a soldering iron without burning himself on it.
That said, the EE class I took in college was by far my favorite (and the only one I regularly attended -- before I left), but I was always more entranced by the theoretical than the practical side of it.
They said all along the goal wasn't for us to be as competent as the Electrical/Electronic Engineers, but to teach us their language and the basics so we could work together. It was great.
My degree is accredited by the Australian Institute of Engineers.
I think what I got out of it was similar - I'm obviously not nearly as knowledgeable as a fully fledged electronics engineer, but I have some basic knowledge which allows me to cross the gap between software and hardware and truly appreciate the fact that it is actually possible to get from just having a pile of logic gates to having something resembling a processor.
To anyone reading this who's currently a CS major - if you have the opportunity to do a course in digital logic design I'd highly recommend it. Regardless of what layer of the stack you end up working in, it's a lot of fun and very satisfying to understand how this stuff works. If you do end up working fairly low in the stack it's particularly helpful - after uni I ended up working on kernel development at IBM where even though I don't work in hardware engineering I've found it helpful to have some of the background knowledge.
Seconded.
There wasn't really a Computer Engineering degree back when I was in school, but I made do. As it turned out, some EE classes would qualify for the lab science credit, so I took those instead of more physics or chemistry.
I had been fascinated in electronics for a long time before starting college, so I had a blast in those classes.
And it has all helped me a lot since then. I'm working on radar systems these days, and it would have been useful to take a little more analog and RF design courses. But those weren't my interest way back then. I've picked up a lot on my own since then though.
All you need is the white lab coat and Gene Wilder's "It's alive!" in the background. Congrats on getting it to this point, as anyone who has brought up new systems for the first time knows, once you can get your central processor to load and run software of your choice, you can use it to tell you what it not working correctly and bring everything else up. It is always a total rush when the system boots for the first time. (or in this case, "boots again" :-))
I would be particularly keen to insure that the arrow keys work on the keyboard, as a lot of Altos were used to play mazewar and that was hard on the arrow keys.
I can't imagine the excitement these folks felt when the machine finally booted up. All of their skilled trouble shooting and hard work were spot on.
I can't wait to read more.
I imagine the issue was a lack of working drives, and Alto systems to run them.
The 'eWeek' article that that paragraph was sourced from doesn't contain any explanation of why the association between the two was made, maybe early 'flash' memory did have an optical erase process?
Here is the quora link for the question why 'flash' is called 'flash':
https://www.quora.com/Why-is-flash-memory-called-so
Which is apparently sourced from a book about FPGA's, not directly accessible but roughly what I remember being written about flash at the time it came out.
http://www.linfo.org/flash_memory.html
Gives a similar definition.
Optically erasable memories existed but I'm not aware of any that have erasure times < several 10's of seconds in ideal conditions and minutes in more practical settings, certainly nothing in the sub second range that would justify the term 'flash'.
Eeproms (electrically erasable eproms) already existed well before 'flash' came along and flash is an improvement in speed on those, not a re-vamp of the optically erasable eproms.
It would be interesting to contact Toshiba to see if that quote from the inventor of flash memory can be substantiated and how to determine what the association with photography is if it does not refer to optical erasure.
That would be EPROM, not EEPROM. The 'EE' meant Electrically Erasable, so it didn't have (and didn't need) that little window on the top of the DIP package to shine the UV light upon the chip itself of EPROM.
Which was still a vast improvement upon PROM, which was write-once.
My first encounter with that stuff was a 2nd gen version of the floppy disk controller for my RS Color Computer. The newer version wasn't compatible with the Deft Pascal [1] compiler I had purchased, so some guys at the user group helped me to program the older 1.0 version of the firmware to see if that would work. It didn't. :-( The text editor was still handy though.
I eventually got OS-9 Level III running and picked up a C compiler on sale though.
http://www.righto.com/2016/09/restoring-ycs-xerox-alto-day-7...
You can't look inside any of the bigger units (you'll be asked to leave if you do), but you can press the keys on the older mechanical and non-mechanical keyboards if you're a keyboard nerd.
Was that drive known good then?
Also what is the track sense mechanism?
Optical shaft encoder? Could have been just a bunch of dust.
Also a lot of drives used a Hall sensor or even an opto-coupler with a slot to detect track zero. First thing was to calibrate the head with a track zero seek.
Another thing. Those flat ribbon cables are prone to a lot of RFI over long distances, especially when you have them hanging around on the bench. Notice some of the other ribbon cables are twisted pair. A lot better!
I've wire wrapped my own disk controllers back in the early 80's. This series is serious nostalgia! <3
Curious to know what the final problem will end up being diagnosed as.
The smell of old hardware like that is literally burned in my brain!
So a new Broadwell-EP Xeon chip has like 7 billion transistors. I'm trying to imagine this kind of computer hardware archeology as it will be done thirty years from now.
The pictures of screen look unusual, as if every second scan line is missing. Is the Alto outputting an interlaced video signal? That would be very interesting and unexpected.
The Alto dates from 1973, and Intel's 4004 microprocessor dates from a year or two before (and was used to run a calculator, not a personal networked workstation)
The Alto's CPU is built from a whole pile of TTL chips on three boards. The Alto's arithmetic-logic unit, like many computers of that era, uses 74181 ALU chips. The CPU runs a crazy multitasking microcode, with one of the tasks emulating the Nova's instruction set. The hardware manual refers to the "microprocessor", meaning the microcode processor, not a microprocessor chip since microprocessors as such were in their infancy at the time.
There's a picture of the Alto's ALU board in one of my earlier articles [1]. You can see the individual CPU registers, as they are made out of multiple latch chips. For all the details of the Alto's CPU, see the hardware manual [2].
1: http://www.righto.com/2016/06/y-combinators-xerox-alto-resto...
2: http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/alto/...
So conceptually a machine like that Alto is actually something you can grasp without a lot of pain. Very much unlike the early 8 bit processors like the 8080, Z80, 6502 where they used lots of ticks to keep the transistor count down.
Have you actually looked at the Alto's microcode? It's brain-explodingly bizarre. The first thing is it has 16 tasks (yes, in the microcode) and what an instruction does depends on what task is running. Second, every micro-instruction includes a computed goto, where the hardware can OR bits into the address. And because this is task-dependent, you can't figure out the control flow - maybe this instruction will proceed linearly, or maybe it will branch 4 ways depending on the status of the Ethernet board. Next, the circuitry uses PROMs in various places. You say the microcode has four bits tied to the 74181, but no, the four bits go into a mystery PROM which generates entirely different bits that go to the 74181. And then there's the constant PROM holding all the constant values used by the microcode. And the processor bus has the property that multiple sources can write the bus at the same time, with the values ANDed together. Not to mention the ALU shifter output is modified by a microcode function literally called MAGIC. And I'm just getting started here...
My point is that even by microcode standards, Alto microcode is bizarre and painful. And if you disagree, I have some microcode that needs explaining - MADTEST (Microcode Alto Diagnostic Test) fails on our Alto and nobody understands what it is doing.
You guys are rocking it. Really enjoying dropping by and seeing how you are doing.
Really cool!
For the better part of a minute I was wondering if they had monkey-patched the disk controller with an electronic toothbrush?!
I've removed Blogger's swipe left/right navigation, which I think is more distracting than useful, and I've re-enabled pinch to zoom, so hopefully the navigation will work better for you now. Also note that you can tap on a photo to get a high-resolution version (better than zooming will give you).
I put two fingers down on the screen and then started dragging the fingers in opposite directions. I guess whatever javascript was enabled only looked at one of the touches (a zoom gesture is basically two opposite-moving swipe gestures, so...) :)
But with a modern-ish logic-analyzer and the ancient original hardware (huge voltage swings, slow clock, very long busses), I doubt that the probes would make a discernible difference, would they?
I'm not sure modern-ish is the right word for the logic analyzer. It's a 1999 Agilent logic analyzer and I don't know how they managed to make it so slow. You can ftp a trace off it over Ethernet at the glacial speed of 10 kilobytes per second, so copying traces for analysis is a big bottleneck.
Try a managed switch where you can choose 10/100, Full/Half and see statistics. Also try to get a "netstat/ifstat" like display on the logic analyzer to see bad packets/collisions/...
Side note: it was called a "Prototype Analyzer" because it was meant for analyzing prototypes, but we had more than one customer tell their salesperson to come back later when it was out of the prototype stage.
Which reminds me, one time back at my first job, the hardware guys were working on a new design, and it only worked with the logic analyzer probes attached to the CPU. They later discovered a missing connection between a pullup or pulldown resistor and the appropriate +Vcc or GND supply.
If only I had proper tooling and knowledge...
I think you should talk to them anyway as the material in these blog posts would make for a really amazing talk.