PDA

View Full Version : Museum restoration of 8800


philrrtx
01-28-2009, 07:32 PM
I am starting the restoration of an Altair 8800 for the Goodwill Computer Museum in Austin. It was discovered about half-way through the Goodwill computer recycling process, and despite our best efforts, we were unable to locate some of the pieces.

In particular, it is missing the case and the dress front panel, which I am hoping I can purchase from Grant. I believe we can source the rest of the parts we need (switches, hardware, etc.) from other suppliers.

We have a Rev 0 original CPU board, four 4K dynamic memory boards (does anyone have schematics for that board?), and a 3P+S I/O board (I also need the schematic for this one).

The chassis is fully loaded with what appear to be factory-built bus cards. Interestingly, in a modification I haven't seen described anywhere, it has had a voltage regulator added to the output of the +8V A supply.

TomL_12953
01-28-2009, 07:49 PM
We have a Rev 0 original CPU board, four 4K dynamic memory boards (does anyone have schematics for that board?), and a 3P+S I/O board (I also need the schematic for this one).


All the schematics you need are in the manuals found at

http://vt100.net/mirror/harte/Altair/

Tom Lake

philrrtx
01-31-2009, 03:07 AM
All the schematics you need are in the manuals found at

http://vt100.net/mirror/harte/Altair/

Tom Lake

Thanks Tom. I found the schematic for the 4K dynamic memory board there. The 3P+S I/O board turns out to have been made by Processor Technology. So far I haven't found a schematic for it on line. Herb Johnson offers copies of the whole 84-page manual for 20 cents a page, but I hardly need 80 pages of "put this resistor in this hole" for a board that's already built. If anyone knows of an on-line source for this schematic, please let me know.

On a different topic, I'm having no luck at all locating the double spring-loaded switches used in the bottom row. The ST1-3 switch is still made by APEM (successor to American Switch, who made the originals) but none of their distributors currently has any in stock, and I'm not likely to convince any of them to make a special order for two pieces. If anyone knows of a source for that switch, or an alternate manufacturer's part number for same, please let me know.

We have four broken ones on the upper row and two on the lower row. The ST1-1s for data/address entry (upper row) are available from a couple of distributors, but none has the ST1-3.

Phil

TomL_12953
01-31-2009, 05:42 AM
Thanks Tom. I found the schematic for the 4K dynamic memory board there. The 3P+S I/O board turns out to have been made by Processor Technology. So far I haven't found a schematic for it on line. Herb Johnson offers copies of the whole 84-page manual for 20 cents a page, but I hardly need 80 pages of "put this resistor in this hole" for a board that's already built. If anyone knows of an on-line source for this schematic, please let me know.
Phil
Have you contacted the guy who wrote the manual, Mark Szpakowski?

szpak@eastlink.ca

He might have kept some of his old work.

Tom Lake

Geoff Harrison
01-31-2009, 12:16 PM
The 3P+S I/O board turns out to have been made by Processor Technology. So far I haven't found a schematic for it on line.

Dave Dunfield (http://www.classiccmp.org/dunfield/) has a copy on line. Click on the S100 link.

Geoff.

marty
02-01-2009, 11:13 PM
Grant, should be able to get the switches, either now or when He places his next order.. He should be able to add what ever you need on to a later order.
THANKS Marty

shunt1
02-05-2009, 04:00 AM
Today, I stumbled upon this forum and never realized that other "old farts" like me were still around. I was simply trying to show people what my first computer looked like.

I purchased my MITS Altair 8800 in 1975 and still remember a whining college kid that wrote BASIC for it...

Ok, this machine is absolutly useless, but how can I get one?

When I ordered my first one, MITS allowed me to purchase modules for $200.

Since I was in the Army and stationed in Germany at the time, my total income was only $400 per month. However, I was still able to build my first Altair 8800.

Today, after all these years, I am still doing the exact same thing. This machine changed my life forever.

How do I purchase one of these reproductions?

philrrtx
02-10-2009, 04:01 AM
Got my replacement ST1-1 switches in and replaced the three broken ones in the upper row. I still haven't found anyone with the ST1-3s in stock, and APEM, the current manufacturer, was less than helpful.

So, in a "what have I got to lose" effort, I removed the ST1-3 with the broken-off handle from the lower row, and carefully pried the case apart. The guts looked good, just a broken handle. I then took one of the old ST1-1s that I had replaced, which only had a bent handle, and pried it open. I straightened the spring-loaded actuating pin from the old ST1-1 and used that handle to reassemble the ST1-3. Amazingly, it works. The little U-shaped case, which holds the mounting stud, isn't as tightly crimped on to the insulating block as it originally was, but it is quite functional. If I find a source for them, I'll replace it with a new one, but I can at least continue troubleshooting with my cobbled-together replacement.

The power supply survived its smoke test, and seems to be working OK, although I still need to check the ripple levels. The filter capacitor for the –16V supply looks like it has blown its safety plug, but it wasn't shorted, so I proceeded to apply power. A replacement is on order. Now, can anyone tell me why the front-panel power switch was oriented with down for ON and up for OFF? Seems backward to me.

In other news, the 4K dynamic memory boards I have turned out to be Rev 2, and all I've found for documentation so far has been for Rev 0. Of most interest at this point is how the little slide switches are arranged for address block assignments. Has anyone seen Rev 2 documentation?

Phil

marty
02-15-2009, 02:24 PM
Hi Phil;
I would NOT recemend the 4K Dynamic Memory Boards, Maybe by Rev. 2 , they fixed the Problems, I would use Static memory boards, I had a 16K Dynamic Memory Board, when I had my 8800b, and it never worked, right or well. It would pass Altair memory tests, but it would not hold any thing for very long.... This was back when I bought it new in 1977, I don't have it any more... nor the Altair 8800b, I have one of Grants kits with Static memory, they work much better. Thank You Marty

philrrtx
02-21-2009, 08:02 PM
Hi Phil;
I would NOT recemend the 4K Dynamic Memory Boards

Actually, I misspoke when I said they were the 4K dynamic boards. They are actually 4K synchronous boards, which I believe use static RAM chips. In any event, I finally figured out how the address switches work and it appears that all four are functional.

I have a front panel LED that is dead, but with the CPU and memory boards working, I'm hoping to be able to wrap this project up without too much difficulty.

philrrtx
02-28-2009, 02:45 AM
I reached the point where I wanted to run a memory test program and discovered two very annoying deficiencies (IMHO) with the 8080 instruction set.

The first annoyance is that the DCX (double register decrement) instruction doesn't set the condition flags based on the outcome of the subtract operation. That makes it less than convenient for use as a 16-bit loop counter. You have to explicitly check to see if both bytes are zero to find out whether you've reached the end of the loop. If the DCX automatically set the condition flags, you could just follow it with a JZ or JNZ to continue or exit the loop. Likewise the INX doesn't set condition flags, but the single register versions (INR/DCR) do. The 8080/8085 programming manual mentioned this as being a feature, but it's hard for me to figure out why they made it that way.

The other annoying thing I found was the behavior of the HLT instruction. I was basically transcoding a memory test I wrote for the PDP-8, where errors lead to halts, and a complete successful pass likewise leads to a halt. The idea is that when the program stops you can see what address it halted at to determine whether it detected an error or was successful. Unfortunately, when the 8080 enters a HLT on the Altair, the address bus gets tri-stated and you can't read the memory address you stopped at. You also can't restart the program without executing a Reset, because Intel made the HLT essentially a "wait for interrupt" instruction. The solution that I resorted to was to replace the HLTs with JMP $. When the program hangs in a tight (very tight) loop, you can at least press Stop and read what address it is looping on to see if you got an error or not.

In any event, my four 4KB synchronous memory cards all pass the test successfully, so it's on to trying to get the Processor Technology 3P+S I/O card working.

Has anyone heard from Grant lately? I sent him e-mail to the address on the web site before I joined the forums, then sent him a PM here, but haven't had a response to either. I'd like to find out what the prospects are of the museum buying a case and dress front panel from him for our box.

philrrtx
03-09-2009, 09:12 PM
After a few bumps and stops, I have the Processor Technology 3P+S I/O card working via an RS232 interface with an LSI ADM-3A CRT (a nice terminal contemporary to the Altair). Whoever had this card previously apparently didn't understand just how it worked, because s/he had installed a 7404 inverter chip in an (thoughtfully provided by PT) empty IC slot and had run the TBE (Transmit Buffer Empty) and RDA (Receive Data Available) signals from the UART through it before putting them on the data bus. This made them much more difficult to detect at the CPU (they show up as 0s instead of 1s).

I removed the inverters, after which the PT serial test code almost worked. It was supposed to output lines of characters from 30H to 55H, with or without a delay as determined by a sense switch. You could then set a different sense switch and it would jump to the input test, where it received characters and echoed them back to the interface. Yet a different switch indicated the test was over, resulting in a jump to a HLT. Mine would output one character, input one character, then halt. This was tracked to a failing read of the sense switches. They were all coming in as ONEs, no matter how they were set. When I replaced the sense switch reads with NOPs, the test code worked perfectly, and I could send and receive characters with the terminal.

Some scope probing today reveals that a 7404 inverter chip on the front panel control board appears to be bad; it isn't passing the SNSW read enable signal. I'll need to replace the chip to proceed any further.

BTW, I notice that the front panel control board relies on behavior that I couldn't find described anywhere in the 8080 documentation, and that is that the device address (the argument to an IN or OUT statement) gets sent out on both the high and low bytes of the address bus. The 3P+S I/O card, for example, looks for its address on A0-A7, but the logic for the sense switch read looks for 0FFH on A8-A15. Nothing I found in either the Altair or 8080 documentation states that this is the chip's normal behavior on I/O statements.

philrrtx
03-24-2009, 03:50 AM
I finally got the sense switch read problem sorted out. It turned out to be the 74L30 chip that detected all ONEs on A15-A8 (the I/O device address). I didn't have a 74L30 ready at hand, so currently have a 7430 in the socket. The only disadvantage of that I can think of is it presents a higher loading on the address bus. I'll replace it with the low-power chip as soon as we acquire one.

So, everything seemed to be working correctly. I was able to poke in the test routines for the 3P+S I/O card and the program was responding to the sense switches properly. I put the front panel back on and everything went to hell in a handbasket. The 4K memory card at 0000 disappeared, and one started showing up at 16K, which should have been impossible. It seemed almost like the address bus was screwed up, but there have been no changes to any of that wiring, and the LEDs are giving the correct indications.

After some experimenting, I managed to get three of the 4K memory boards working in the 0–12K range, but the fourth card would not come up at 12K. From what I have read in a number of forum postings (other forums, not here), these 88-S4K cards had a lot of problems, and were sensitive to timing problems, so that may be what's causing the behavior I see. Puzzling, however, is that the whole set of four 4K cards used to work and even passed an intensive memory test. I reached my frustration threshold today, and put the mess aside to work on another project for a while. Grrrrrr...!

marty
03-27-2009, 10:35 PM
Hi PHIL:
Could you please post the programs you are using here for the rest of us ????
Also, I have not had any problems with any of my 4k memory cards...
have you tried each card at all the addresses that you intend to use,,, maybe one or more is mapping to more than one address... THANK YOU Marty

philrrtx
03-30-2009, 03:40 AM
Hi PHIL:
Could you please post the programs you are using here for the rest of us ????
Also, I have not had any problems with any of my 4k memory cards...
have you tried each card at all the addresses that you intend to use,,, maybe one or more is mapping to more than one address... THANK YOU Marty

The failing card is correctly detecting its starting address, which can be viewed with a scope at the test point just left of the address switches. I also can see the bus driver disable signal being negated, so it should be putting data on the bus, yet it looks like the bus is floating. We have decided not to worry about fixing it at this point. The 12K we have working is sufficient for our purposes.

The test programs for the 3P+S I/O board I have been using are in the documentation I found for it on Dave Dunfield's site. See http://www.classiccmp.org/dunfield/s100c/ptco/3pps.pdf

Here's the memory test program I wrote:

INSTRUCTION
LABEL ADR OCTAL MNEMONIC DESCRIPTION
000 052 051 000 LHLD COUNT Get number of locations to write
003 353 XCHG Move to DE registers
004 052 053 000 LHLD START Get starting address
LOOP 007 072 047 000 LDA BYTE1 Get first byte to write
012 167 MOV M, A Write in memory address
013 226 SUB M Read memory and subtract
014 312 022 000 JZ CONT1 OK if zero
ERR1 017 303 017 000 JMP ERR1 Error if loops here
CONT1 022 072 050 000 LDA BYTE2 Get second byte to write
025 167 MOV M, A Write in memory address
026 226 SUB M Read memory and subtract
027 312 035 000 JZ CONT2 OK if zero
ERR2 032 303 032 000 JMP ERR2 Error if loops here
CONT2 035 043 INX H Increment write address
036 033 DCX D Decrement count
037 172 MOV A, D Check if DE=0
040 263 ORA E by ORing D with E
041 302 007 000 JNZ LOOP Go around again
GOOD 044 303 044 000 JMP GOOD Good if loops here
BYTE1 047 252 First byte to write = 10 101 010
BYTE2 050 125 Second byte to write = 01 010 101
COUNT 051 323 037 Count = 16339
START 053 055 000 Start address


START must contain the first location past the program. COUNT must contain the total memory you have available minus the length of the program (remember, least significant byte first). The test is good if it loops at GOOD. An error has been detected if it loops at either ERR1 or ERR2.

Forbin376
08-06-2009, 06:24 AM
Hi Phil,
“I was there when…” in high school we saw the ad for the MITS Altair 8800 in Popular Electronics and all wanted one. Well, I built mine in 1976 as a senior high school electronics project and it is still running today. I went on to sell them and have been (and still am) involved with computers.

The boards you have are the 88-S4K, or 4K Synchronous Dynamic RAM cards. These cards were created by MITS and actually sold for near cost (without the memory chips) to owners of the ill fated 88-MCD or Memory Card Dynamic RAM. These original cards were so badly designed that you could measure 200mv of noise from one side of the card’s “ground” plane to the other. MITS offered these later boards as an “apology” to all of us who had purchased the original cards. They (MITS) gave dynamic RAM quite a bad name and it was shunned in the later Altair/S-100 bus world. The newer 88-S4K cards are a much better design and were fairly temperature stable. However if you have the opportunity to replace them I would recommend it.

About the voltage regulator on the +8V – this was part of a power supply upgrade and is part of the difference between an “Altair 8800” and an “Altair 8800A” – nearly all of the “A”’s have this modification.

You may find this site of interest:
http://frankbarberis.tech.officelive.com/default.aspx

Frank

philrrtx
08-06-2009, 09:30 PM
Hi Phil,
“I was there when…”

Three of our four S4K memory cards are working OK. Originally all four of them were, but one stopped putting data on the bus for some reason. I was unable to find a schematic for it to troubleshoot more fully, so I've left it as is, mostly working.

As noted in an earlier post on this thread, we are missing the case and dress front panel for the one we have. I have not been able to get any response from Grant, via either direct e-mail or forum private message, about whether he would sell us those items so we can complete our restoration.

Instead, our exhibits expert has said she can duplicate the front panel for us, so we are waiting on that.

TomL_12953
08-07-2009, 02:17 PM
COUNT 051 323 037 Count = 16339

Maybe I'm not understanding something. 16339 should be 723 037 octal (reversed bytes)

So what's the 323 037?

Tom L

marty
08-07-2009, 02:36 PM
Hi Tom;
The highest bit on an Altair or Imsai (64K memory) will only allow for a 3 in the left side of the octal number, such as 377.
THANK YOU Marty

TomL_12953
08-07-2009, 02:44 PM
Hi Tom;
The highest bit on an Altair or Imsai (64K memory) will only allow for a 3 in the left side of the octal number, such as 377.
THANK YOU Marty

Ah! So with my 62K RAM, I'd have 62*1024 = 63488 - length of program (45 bytes) = 63443, convert to octal = 173723, reverse bytes = 723 173 mask off upper bit = 323 173

Is this right?

Thanks for your patience!

Tom L

marty
08-07-2009, 03:27 PM
Hi Tom;
I am not good with Arithmetic and conversions, so I'll check it on my machine, and see if it flies, I have 64K on my machine...
THANKS Marty

TomL_12953
08-07-2009, 03:37 PM
I have 64K on my machine...
THANKS Marty
You don't have any ROM at all? I have a 64K static RAM board but I also have I have the 88-PMC EPROM board that takes the top 2K of address space. I'd really miss it if I didn't have the Multi Boot Loader up there so I don't have to key in the bootstrap every time for paper and cassette tapes! I also have VTL-2 and the DBL (since I don't have a disk system, I won't be using that for a while) as well a monitor.

Tom L

marty
08-07-2009, 03:39 PM
Hi Tom;
I tried it on my machine and it does the same thing as the origional program, it seems to work ok, it loops on the final loop indicating it ran ok... I want it to jump back to start, and it doesn't so I need to look into that..... but that will be later.....
THANKS Marty

philrrtx
08-07-2009, 09:05 PM
Maybe I'm not understanding something. 16339 should be 723 037 octal (reversed bytes)

So what's the 323 037?

Tom L

It's a typo; that's what it is. You are correct. It should be 723 037.

Phil

marty
08-07-2009, 10:04 PM
Hi All;
You would be correct, except that you CAN'T enter 723 into the Altair or the Imsai thru the Front Panel,, You can ONLY go as high as 377, that is the Largest octal number that can be entered into the machine.... You have to use split Octal i.e. in eight bit word lengths, and for that 377 is the hightest number that you can use ....
THANK YOU Marty

philrrtx
08-07-2009, 10:29 PM
Ah! So with my 62K RAM, I'd have 62*1024 = 63488 - length of program (45 bytes) = 63443, convert to octal = 173723, reverse bytes = 723 173 mask off upper bit = 323 173

Is this right?

Thanks for your patience!

Tom L

Looks like my 323 was correct, but the second byte should have been 077 instead of 037.

In Tom's case, I get 323 367. You can't mask off the bit; you have to write octal 173723 out in binary, split it into two eight bit bytes, then translate each of those into octal (it's a heck of a lot easier to do in hex, but the spacing of the switches on the Altair makes that more difficult to enter—works nicely on the IMSAI if you have your switch paddles grouped in fours instead of threes).

marty
08-07-2009, 11:21 PM
Hi phil and all;
I am an octal person my self, simply because All of the Machines that I have , have the switches arranged in octal...(my Altair and my Data General Eclipse) I would say try your hex answer on a front panel or if you don't have one, on a piece of paper, and then re-read then from the front panel in octal, yes it would be harder on a piece of paper... the 173723 , I put in my Altair Front Panel I get 367/323 in split octal...
THANK YOU Marty

marty
08-07-2009, 11:48 PM
Hi All;
I just entered the memory test into my Altair, and it worked at 367 / 323 and for my full memory machine 377 / 323... And they both worked.... I am waiting for my Eproms from Grant. But, I am used to entering by the Front Panel :D :D
THANK YOU Marty

marty
08-07-2009, 11:53 PM
Hi All;
A hex and Octal listing of the 8080 op codes, is in Bug Book III pages 3-36 to 3-40.... Thanks Marty

TomL_12953
08-08-2009, 04:10 PM
Looks like my 323 was correct, but the second byte should have been 077 instead of 037.
In Tom's case, I get 323 367. You can't mask off the bit; you have to write octal 173723 out in binary, split it into two eight bit bytes, then translate each of those into octal.
OK, so it's like this?

63443 = 11110111 11010011 b
octal = 367 323

Reverse bytes: 323 367

and those are the two bytes I'd put in the program.

Tom Lake