This is the schematic for the CPU board of my TinkerBug 6809 computer. It is basically the board that Frank Wilson designed and that was published in The Computer Journal way back when. I have modified it slightly and added the 74LS138 circuit to allow me to select up to 8 I/O devices. Otherwise it is pretty much Frank's design. I re-wrote the monitor code to suit my needs. I kept the bit-banging code to drive the PIA as a serial port.
This is an idea I have for a backplane PCB. It's not the one I'm using now although the basic circuit is very similar. The power connector (J1 & J2) is wired up to work with an old AT-style PC power supply.
Here is the schematic for the ATA/IDE board I am working on. It is still a work in progress and this circuit may change if the need comes up.
This is the circuit for the Floppy Controller board I use. It is from an old Swedish publication and has its share of errors. Those errors cost me many hours of troubleshooting before I got the thing to work properly. I am in the process of re-drawing this so once I have that done I will post it here.
Pictures, notes, etc. regarding my project to build a small computer system to run the vintage FLEX 9 operating system from TSC.
Wednesday, December 22, 2010
Still in a holding pattern
Well, I'm still in a holding pattern waiting on the parts for the ATA/IDE board. I have gotten confirmation that they have been shipped but I don't have any tracking information so all I can do is wait.
I have started wire wrapping the ATA/IDE board using what I have so far so things are moving forward slowly.
I have re-drawn the schematics for the CPU and FDC boards using the free edition of Eagle CAD so I will post them up here soon.
I have started wire wrapping the ATA/IDE board using what I have so far so things are moving forward slowly.
I have re-drawn the schematics for the CPU and FDC boards using the free edition of Eagle CAD so I will post them up here soon.
Thursday, December 9, 2010
In a holding pattern
Ok, so not much progress on the hardware front for this project. I am still waiting on several of the components I need for the ATA/IDE board. The place I ordered them from is reasonably priced but they aren't very fast.
I have been fiddling a bit with a PL/9 compiler but am having some problems with it. Mainly, it seems to have a problem with the non-echoing input routine I have in my monitor. FLEX and everything else is working fine with it though so at this point I'm not sure what is going on. When I have some more time I may try and do some deeper debugging of it.
I did get a new MicroATX power supply for the case I'm working on so now I have all four floppy drives installed. Now I have two 3.5 inch and two 5.25 inch drives to play with.
I have been fiddling a bit with a PL/9 compiler but am having some problems with it. Mainly, it seems to have a problem with the non-echoing input routine I have in my monitor. FLEX and everything else is working fine with it though so at this point I'm not sure what is going on. When I have some more time I may try and do some deeper debugging of it.
I did get a new MicroATX power supply for the case I'm working on so now I have all four floppy drives installed. Now I have two 3.5 inch and two 5.25 inch drives to play with.
Friday, December 3, 2010
Next up: an ATA/IDE Interface
This is the beginning of the ATA/IDE interface board. I borrowed the design from here and had to modify it slightly to work with the bus of the 6809 CPU. I'm still waiting on several of the components and parts so I haven't been able to do much with it yet.
Rather than trying to patch FLEX to use LBA I think I'm just going to stick with CHS sector addressing for now. It will still give me about 16MB of harddisk (or 41 diskettes) so it will be plenty. At least to start with. The CHS method could be done so the drive looks like a really large diskette to FLEX.
Rather than trying to patch FLEX to use LBA I think I'm just going to stick with CHS sector addressing for now. It will still give me about 16MB of harddisk (or 41 diskettes) so it will be plenty. At least to start with. The CHS method could be done so the drive looks like a really large diskette to FLEX.
Wednesday, December 1, 2010
Computer setup of yesteryear!
This picture shows the now almost finished computer system. The case is still a work in progress. It needs a MicroATX power supply (the one I inherited with the case was dead), a modified front and then a fresh coat of paint. I have a spray can of gloss black ready and waiting.
This picture shows that I am in the process of formatting diskettes. I have found a couple of 3.5 inch drives that I am using now so I am able to format 80 double sided tracks. That gives me about 395KB of space on each. Yes, that is KiloBytes.
My next project, which is waiting on some parts that have been ordered, is to attempt to attach an ATA/IDE harddisk to the system. More to come about that.
This picture shows that I am in the process of formatting diskettes. I have found a couple of 3.5 inch drives that I am using now so I am able to format 80 double sided tracks. That gives me about 395KB of space on each. Yes, that is KiloBytes.
My next project, which is waiting on some parts that have been ordered, is to attempt to attach an ATA/IDE harddisk to the system. More to come about that.
Sunday, November 21, 2010
I remember taking my time to wire wrap the CPU board together and also buying a Willem Programmer so I could put the monitor (tinkerbug) in the 28C16 EEPROM. And I remember that it worked the first time I powered the thing on. It was very exciting. I then decided that I needed some mass storage and that floppy diskettes would be the way to go since that was the storage of choice back when this stuff was new, about 30 or so years ago.
Now would probably be a good time to confess that I already have another machine similar to this one but running FLEX 2 on a 1MHz 6802 CPU. One of the predecessors to the 6809. I also have a floppy controller for that machine and I decided to copy that circuit for this 6809 machine.
So I wire wrapped a second board for the floppy controller following the schematic I have for the already working board. And after completing that project I found that it didn't work. After some troubleshooting that didn't turn up much I decided to put this project aside for a while. It turned out to be a little over a year. So this time when I picked it back up I wasn't locked into the mindset I had back when I put it together. This time I found out that one chip on the schematic had the pins reversed. It was a HEX buffer chip and from comparing the schematic to the datasheet for the chip I found that the inputs and outputs were reversed. That's not going to work. so I fixed that fairly easily. Now I was able to seek to tracks and actually read some stuff off of the diskette. But the data looked a bit strange. After some digging I found that running the 6809 at 2 MHz would require some additional circuitry to stretch the E-pulse to accommodate older and slower chips. So I slowed the CPU down to 1MHz and all of a sudden all the data read from the floppy looked perfect. So on to writing to sectors.
Ok, so here's where things turned a bit more interesting. When I tried to write a sector, that sector became unreadable. Certainly not what I wanted! So I started doing some more troubleshooting but couldn't find any reason for this. I took the working board out of the other machine and ran a test with it and was able to write to the diskettes and then read it back without problems. So the problem was definitely with my new board. I spent several hours trying all kinds of things and found that my biggest problem was that I couldn't see what the board was doing electrically. So I used my small digital storage oscilloscope to look at the various signals. After some time I found that of the two signals from the chip that has to do with writing data, only one showed activity. The other one showed no activity at all. I needed some other way to watch the signals on the board. I was able to borrow a USB-connected Logic Analyzer from a friend and with it I looked at every single signal on that board. I also compared those signals to the already working board while running the exact same tests only to find that everything looked the same between them. Except the one signal that wouldn't show any activity on the new board. Incidentally, that was the Write Data signal. Kind of important. I started thinking that perhaps I wouldn't be able to get this thing working after all.
As I was sitting there thinking about what my next step should be, I was looking at the schematic for the board. My eyes fell on the capacitor that sits between the Write Data signal and ground. After staring at it for a while I realized that it should have a value of 100pf. I looked at the board and realized I had 0.1uf there instead. So I decided to disconnect it and run a test. By the way, the test I was running was to format a diskette. The first pass, the one that writes the tracks, takes about a minute so that gave me time to really look at the signals. Then it moved on to the verification process which always failed since no data was written, and the command was aborted at that point. After I removed the 0.1uf capacitor I ran another format process. While that process was running I was looking at the schematic and just as the write process was done I snapped view with the Logic Analyzer. I then realized that the verification process actually ran this time! I looked at the view on the Logic Analyzer and saw that the Write Data line actually showed lots of activity this time! So as it turned out, I spent several hours troubleshooting a Write Data signal that essentially was shorted to ground by a capacitor with a totally incorrect value! I put a 100pf capacitor in place and everything works beautifully!
So now it was on to adapting FLEX 9 to my machine. I'll post a few pictures here to show the machine actually running FLEX from diskettes once I get it working.
Now would probably be a good time to confess that I already have another machine similar to this one but running FLEX 2 on a 1MHz 6802 CPU. One of the predecessors to the 6809. I also have a floppy controller for that machine and I decided to copy that circuit for this 6809 machine.
So I wire wrapped a second board for the floppy controller following the schematic I have for the already working board. And after completing that project I found that it didn't work. After some troubleshooting that didn't turn up much I decided to put this project aside for a while. It turned out to be a little over a year. So this time when I picked it back up I wasn't locked into the mindset I had back when I put it together. This time I found out that one chip on the schematic had the pins reversed. It was a HEX buffer chip and from comparing the schematic to the datasheet for the chip I found that the inputs and outputs were reversed. That's not going to work. so I fixed that fairly easily. Now I was able to seek to tracks and actually read some stuff off of the diskette. But the data looked a bit strange. After some digging I found that running the 6809 at 2 MHz would require some additional circuitry to stretch the E-pulse to accommodate older and slower chips. So I slowed the CPU down to 1MHz and all of a sudden all the data read from the floppy looked perfect. So on to writing to sectors.
Ok, so here's where things turned a bit more interesting. When I tried to write a sector, that sector became unreadable. Certainly not what I wanted! So I started doing some more troubleshooting but couldn't find any reason for this. I took the working board out of the other machine and ran a test with it and was able to write to the diskettes and then read it back without problems. So the problem was definitely with my new board. I spent several hours trying all kinds of things and found that my biggest problem was that I couldn't see what the board was doing electrically. So I used my small digital storage oscilloscope to look at the various signals. After some time I found that of the two signals from the chip that has to do with writing data, only one showed activity. The other one showed no activity at all. I needed some other way to watch the signals on the board. I was able to borrow a USB-connected Logic Analyzer from a friend and with it I looked at every single signal on that board. I also compared those signals to the already working board while running the exact same tests only to find that everything looked the same between them. Except the one signal that wouldn't show any activity on the new board. Incidentally, that was the Write Data signal. Kind of important. I started thinking that perhaps I wouldn't be able to get this thing working after all.
As I was sitting there thinking about what my next step should be, I was looking at the schematic for the board. My eyes fell on the capacitor that sits between the Write Data signal and ground. After staring at it for a while I realized that it should have a value of 100pf. I looked at the board and realized I had 0.1uf there instead. So I decided to disconnect it and run a test. By the way, the test I was running was to format a diskette. The first pass, the one that writes the tracks, takes about a minute so that gave me time to really look at the signals. Then it moved on to the verification process which always failed since no data was written, and the command was aborted at that point. After I removed the 0.1uf capacitor I ran another format process. While that process was running I was looking at the schematic and just as the write process was done I snapped view with the Logic Analyzer. I then realized that the verification process actually ran this time! I looked at the view on the Logic Analyzer and saw that the Write Data line actually showed lots of activity this time! So as it turned out, I spent several hours troubleshooting a Write Data signal that essentially was shorted to ground by a capacitor with a totally incorrect value! I put a 100pf capacitor in place and everything works beautifully!
So now it was on to adapting FLEX 9 to my machine. I'll post a few pictures here to show the machine actually running FLEX from diskettes once I get it working.
Thursday, November 11, 2010
Tinkerbug Introduction
This blog is intended to be a place for me to collect my notes, pictures and other information related to a microcomputer project I am working on. It is based on the Motorola 68B09 microprocessor and the Western Digital 1771 floppy controller. The intention is to build a working computer system complete with two 5.25" floppy drives that can run the vintage FLEX 9 Operating System from TSC, Inc.
The name TinkerBug is actually the name I gave the monitor program that is stored in an EEPROM on the processor board. It came from me tinkering with this project, and the fact that this type of monitor program used to contain a simple debugger tool. In my case it is mainly used for loading code over the serial port in Motorola S1 format, jumping to programs in memory, dumping a block of memory in HEX, and to boot from a floppy disk.
More details to come in the near future.
The name TinkerBug is actually the name I gave the monitor program that is stored in an EEPROM on the processor board. It came from me tinkering with this project, and the fact that this type of monitor program used to contain a simple debugger tool. In my case it is mainly used for loading code over the serial port in Motorola S1 format, jumping to programs in memory, dumping a block of memory in HEX, and to boot from a floppy disk.
More details to come in the near future.
Subscribe to:
Posts (Atom)