welcome to breadboarding here's where we left version one of the breadboard PC back in January and since then I've done a small series on program logic devices which seems to have gone down well and what I've been working on during this time is looking at rebuilding the breadboard PC and trying to tidy it up a little now the breadboard PC was growing organically As I understood how the original IBM PC was built and we managed to finish off getting it running Microsoft Windows 3.0 you'll see over here I've got a modern SATA hard disk connected to a SATA to IDE converter and we've also got 1.44 megabyte floppy disc and we've also got down here a CGA compatible video controller and in the early stages of project I also built a monochrome display adapter one which was a sort of stepping Point CGA one so this is the breadboarding labs breadboard PC 888 version 2 and this is is the introduction video number one so breadboarding Labs Channel I started around August 2022 with the nanoc comp 6809 project what I setting out to do is to build reliable Digital Electronics projects using good quality breadboards I tend to use the bus board prototype systems ones which I buy from Mouser and the breadboard PC version mod project ran from December 2022 to January 2025 think covered about 65 videos in total and one of the key things about this project is I was learning how the original PC was put together and built and hopefully this project can be a little bit quicker because I've already got a completed design to work from so the IBM PC was released in October 1981 it used the Intel 888 version of the 886 processor this was the same to program but had an 8bit external datab bus rather than the 16bit data bus for the 86 this meant that it was a bit easier and cheaper to build computers using it there are a number of 8086 8088 breadboard projects out there and I did find after previous series one PC compatible 888 breadboard project although the VGA card for this only did text it wasn't capable of doing Graphics so wouldn't have been able to run early versions of windows so I include the links to these two YouTube channels for those projects if you want to just catch up most of the BB 888 is in fact the Advent of code 2020 most of the videos relate to that rather than actually building the PC this was the original IBM PC prototype and this used a wire wrap board so this is the top side of the board and you can see a lot of the decoupling capacitors wired between the power pins there but on the reverse side then you can see that it really was quite complicated so in fact I don't think the version one of the breadboard PC the wiring there was is considerably more straightforward than the original PC wira version now there'll be a link to the project completion video video 65 at the top of the screen here and in the description below so if you want to go through the detail of what I covered here then you can look at that video there but I'll just summarize the key things here so the version one when it was completed we managed to get MS DOS 330 working Windows One windows 2 and windows 3 working although this with the CGA video card then this was only able to do black and white video in Windows we used the XI 888 bios by Serj Kev and this was really easy to get the grips with and to configure it for the breadboard PC purposes in addition to the monochrome display adapter that I showed in the overview we also created a CG video controller and this was 100% PC registered compatible the only bits that just different really is the frequencies that this ran at were to drive external VGA monitors since CGA compatible monitors are a bit more difficult to come by and difficult to capture video from it also supported the 40 column mode and also the graphics modes this is the highres graphics mode which was also used for the windows versions as well now a lot of people have tried to reproduce some of Ben's breadboard CPU project have run into Power problems and I have done some videos in this in the tips videos in the past so I use a bench power supply now mine has been set at a maximum of 5 amps for this project and I have cranked up the voltage to about 5.4 volts you can see here I've got a good power distribution block here and there are wires coming from here to the specific breadboards around the PC and you can see I've also got these joiners for where the breadboards are joining at different angles and around the place I've got small digital volt meters so generally as long as the voltage will be 4.5 volts or higher then you shouldn't
run into any problems you can see here it was running with about 4.1 amps and it would spike at about 4.7 4.8 amps at power on as the hard dis spun up and if the floppy disc was being accessed one of the commenters in the middle of the series recommended me to replace some of these Dupont cable single pin shells here with these multi-way shells so this is an eight-way shell and this actually was a great tip because plugging in a 8way bus connection like this is a lot more reliable than doing it individually I may have actually gone overboard on these Dupont cables as I'll discuss in a few slides so the original nanocom 6809 project included a ROM based monitor which I reverse engineered and decompiled into 6809 source code I also during the previous project converted this into 886 assembly and this was quite useful in that it allowed me to get a basic debugging environment up and running before the video controller is running and before I was able to get the floppy discs and hard dis controllers working and the monitor had some basic commands inspect memory execute save to serial Port load to serial port and inspecting registers and various other things one of the other things that the original PC didn't include a power on self test port however the XI 888 design did include a post Port and this was actually quite useful in that when adding it to a logic analyzer then you would actually get these power on self test codes as the system came up and if you cross referenced it to the list that was included in the Bios then you'd be able to tell at what stage the BIOS had actually got to if it actually came across a problem you can see 0x3 for example would indicate that it's starting to test the ram for example if it was to Halt at that point in time so there were some improvements identified in that completion video as well the probably the biggest issue is dma now dma is direct memory access and it's dedicated hardware for transferring data between memory and peripherals normally floppy disc controllers and sometimes hard dis drives now the original PC included the Intel 8237 dma controller and this is actually still included in 486 is up to the modern day computers emulated in the chipset so you'll find that the modern computers can still emulate this particular dma controller now as a book I referenced in the earlier videos where it did a comparison of how many clock Cycles were needed transfer data per bite and I think using the processor used 39 clock Cycles dma used 10 clock Cycles so dma in the very early stages was about four times faster than using the processor however by the time we got to 10 MHz 286s then that was five times faster than the original 4.77 MHz PC so in actual fact dma was in slower than using programed IO where the CPU is actually doing the data transfer now there were two low-end PCS the PC Junior and Tandy 1000 didn't use dma and the Wikipedia article does say about the PC Junior the BIOS routines for handling floppy access were different and more complex than those on the PC we'll come back to that in a minute but I had a lot of trouble trying to get the dma working with floppy disc controller so the default PC bios floppy disc routines rely on dma for transferring data to and from the floppy disc drive I could get IBM PC dos 2.1 to
boot because it was quite small about 44k but I couldn't get later versions of Doss to boot and I'm assuming that it's because they required more data from the dis and at the time when it got to later on in these files the dma controllers were getting confused and reading the data in the wrong order for some reason so I replaced the dma with programmed IO so using the CPU to pull the floppy disc controller now the only problem I run into is the PC Junior only had to deal with a 360k floppy disc drive that has a data rate of 250 kilobits per second now the 1.44 megabyte floppies have a data rate twice that speed and that means it's half the time available for the CPU to process the data from the floppy disc and in the end what I ended up having to do is to overclock the 888 slightly so although the default PC was 14.3 megahertz which was based more on the CGA ntsc color video output to us style TVs I was able to overclock it from the 15 mahz sort of it maximum rated value to 16 MHz and that gave us about 22 nond quicker time in polling the propy disc controll and that allowed us to use programmed IO so in fact the changes necessary to the BIOS was only about 500 lines of code so it took me about three days or so to get these changes working so I really would have to disagree with the uh article on the PC Junior saying it was more complex it probably would have been a lot easier for all concern to actually use programmed IO rather than dma in the early PC designs and in fact during the video I showed that the schematic where dma specific logic is included those crosses indicate where all or some of the functionality of these chips could actually be removed by removing dma so I'm not going to implement dma in version two I'm going to be using programed Dio and that's going to reduce the chip count by probably some five to seven chips one of the other problems I had during the project is I hadn't put enough data bus buffers or any bus termination and you'll see here I end up piggybacking another buffer chip on top of the original bidirectional buffer and you can see here that the output of the oscilloscope for the CPU and from the bus that there's a bit more interference and so I think I certainly need to include more bus buffering and also the compact despro 386 included quite a bit of Pull-Up resistors for bus termination and you'll also see that the IBM PS2 model 80 also had quite a number of pullup resistors now one of the things I used in the version one project I used the breadboard power rails as sort of bus rails and one of the problems is that the connectors would sometimes come loose so you can see here there's these two-way dupon cables I got plugged in here and that sometimes these would come loose now the two-way ones were much better than the individual single ones but they still sometimes came loose and also where I was using these uh dupon cables with the 8way shells there were some times where I think it would have been better just to wire in the links like this the hookup wire rather than using dupon cables for these sorts of short hops certainly it would be a lot easier to see what was going on on the PC from above if I didn't have quite so many ribbon cables it's still perfectly valed to use these dupon cables for runs going across multiple chips and going across the boards but uh not so much for these short distances one of the other odd things I came across is the real-time clock using this Dallas semiconductor DS1 12885 that when it was powered off then it would keep timing quite nicely and this is the oscilloscope output of the crystal oscillator when the power was off and it was running off the 3vt battery but when the power is on you can see there's quite a lot of interference actually with the clock and this caused the clock to run fast because the data bus lines were right next to the crystals here then I think that was what the problem was that's something we're going to need to try and address during the version 2 project when I was installing later versions of Windows I had some problems with Windows 3 in particular where it would corrupt the hard disk during the installation and when I then ran the disc test utility from the original XT IDE project which was the design of the IDE controller that we used for this particular project it actually indicated there were some problems where I've highlighted them here so you can see that it was working a lot of the time but then there are certain patterns and things here but it was actually coming up with errors so there probably needs to be a bit more investigation and I think the data bus buffering I was talking about earlier may have been involved in that there was another issue you ran into with the floppy disc controller now I was using a 40 pin dip chip that can plug into breadboards and there's also a surface mount 44 pin chip as well now what I didn't realize at the time is that there's two extra pins on the 44 pin for the disc change signal coming out the floppy disc drive and dis change enable and I didn't realize at the time but I had to modify the bios so it didn't take any notice of the dis change configuration and so what we need to do is to modify the design to allow for reading the dis change status in the bios so that the BIOS can read the dis change status by reading bit seven of the floppy disc controller when using the ldcr line so the changes for the breadboard PC I'm going to try and simplify the PC design and layout I'm going to be trying to use new components where possible in the version one I was trying to use Legacy 1980s Parts where practical there was some like Dynamic Ram where it didn't make any sense to use it however in this one I'm been trying to use modern parts that mainly I've acquired from Mouser and if I just show you the parts that I've currently gotten and show you which ones are new and which ones have been acquired through eBay and silicon Arc and sites like that dealing with secondhand chips so probably the most important one on the right here it's difficult to read the labels on some of these things some of them are quite clear here but others are quite difficult to read over here we've got our 80 c88 interal chip so this is a modern chip still being manufactured I think they're about 440 at the moment then we've got two modern interal inup controllers this is the 8259 this is our realtime clock the Dallas semiconductor one this is the 8284 interal timer chip which is still being produced then we've got two 512k RAM chips either static RAM chips so in the version one I only include 512k of ram in this version what I'll do is I'll include at least 640k of RAM and will also allow upper memory areas to be used if there's areas of memory not used by video controllers for example then we've got a 32k electronically erasable readon memory and I tend to mount these in a zero insertion for socket just means that when we're programming the BIOS and making changes when you're taking it in and out all the time you don't bend the pins now this is one that if you've seen any of the programmable logic design videos then this is one where I've actually managed to use the ATF 750c programmer logic device to replace both the Intel clock generator and bus controller chips so the 8284 and the 8288 now those two chips you can only buy secondhand I don't believe you can buy those new anymore so to be able to replace both those chips with this single sort of four or five 5 plld is definitely worthwhile doing I'll come to this one in a minute CU I think this requires looking at things under a microscope and over here we've got the Legacy chips I've had to acquire through eBay and through other sort of sites such as silicon Arc so this is the Western Digital floppy disc controller chip that I was using this is the Via PS2 keyboard and mouse controller this one over here is the VGA compatible video digital analog converter so this basically takes the digital inputs for the video signal and produces the voltages necessary to drive VJ monitors but this one down here is the cathode Ru controller chip so this is the Motorola 6845 compatible Hitachi device and this one has a few extra features and is also able to work at faster frequencies that are compatible with VGA now just come back to this one now up to now now I've always been trying to use dip jeelan line package chips that are easy to plug into breadboards but when it came to the serial controllers I couldn't find any new serial Port devices and I thought it was probably a time to actually try these out so this is a Texas instrument 16c 550 seral chip and it's quite difficult to see here it's so small it's only about 7 mm along each side here but these are some Ada fruit 48 pin adapters so tqfp 48 and in fact if we switch this over to the digital microscope I've got you'll be able to see in more in closeup what this has actually got just turn it around so the label is so you see this is the Texas Instruments ta 550 di I think is part of the label I have got the packaging here which the full name of it is a tl6 c55dt it took a little bit of uh research on how to solder these onto these sort of dip adapters and I perhaps might do a video on that a little on in the series there are plenty of videos out there on how to solder these types of chips onto these sort of dip adapters but this is a first for me so we'll be covering that as we go through the series and those dip adapters get them from Ada fruit I think I got mine from P Hut over here in the UK and these do both the qfn and the tqfp and you provide your own pins and solder it so they took probably about an hour or so to solder this I also tested continuity against every pin to every pin on the uh surface mount chip just to make sure I'd made good connections on that all work quite well so the other thing that I mentioned was using the using the breadboard power rails as buses was all very well but um there were problems in that you could only plug two wires at a time and they they tended to come out so what I've done is I've got a large bit of stripboard ver board here just move the camera out a little to see a little bit better so this is the widest Vero board strip board you can get so it's about 8 in across I think the 78 tracks and what I have done is I have soldered in nine rows of 0.1 in connectors on there and I have actually gone through and tested the continuity between each row and each pin and made sure there are no shorts so that's what I'm going to be using for my bus connections and what this will mean with the appropriate uh socket connectors to plug into the end here then this should be more reliable and we shouldn't have as many problems with stray leads because coming disconnected the other thing I've been looking at is the keypad that I used in the early ones I had actually built on veroboard simil but this Ada fruit near key part is quite a nice thing it actually comes with the board already made it can be broken up and cut into smaller keypads but I thought I needed a 5x5 key keypad I'm not using this row here cuz I might want to reuse the keypad for something else at some point in time and you can see these are just standard Cherry Key switches that just can be unplugged and pulled into this and the little connectors at the back here uh provide the electrical continuity I've had to solder in a number of 0.1 in connectors on there to
actually hook up the various leads this can also actually do different color LEDs you'll see here the little white bits here are red green blue color LEDs but you need to hook this up to a microcontroller to be able to do that but this should hopefully mean that the building the keypad and the Seven segment display should be much quicker and much faster using off the-shelf components like this and it just comes with standard key caps that um we'll put in there so that's something else that we've done recently so showing you that uh we're looking at using these surface mount parts for the uart uh for the serial controller we'll be using the strip board for the headers for the bus connections and that will also allow me to use the permanent connections for the data address control buses for the logic analyzers make it a lot easier to put the logic analyzers on there got also redesign the circuitry that access the keypad to use the the uh Neo key keypad originally I used the same chips that the nanoc comp 6809 used so the 6821 parallel port and the 68 50 serial controller so these are now going to be need to be Rewritten in the nanoc comp monitor to use the PC compatible uart and I've also replaced this parallel port just with some 74 LS logic chips and some plds don't really need to have uh a more complex chip like that and of course we're going to also remove the dma and use programmed IO for the floppy disc drive so to summarize the version two design so the op opting system we're going to be using msos 330 and windows 1 2 and three we going to go straight to the CGA Graphics controller so I'm not going to bother with the monochrome display adapter although this will not be timing compatible with the original CGA controller so it won't run some of the 888 mph type demos but it will produce VGA compatible video output that will be able to go into modern monitors and video capture cards from the original 81 PC and PCX we've got clock CPU bus control and the timer and parallel port B and speaker we've remove the dma over version one so that's taken probably seven or eight chips out of the design from the PCAT era we've got the realtime clock and the 16450 compatible serial Port although we're using the slightly more advanced 550 version then we've got the Dual interrupt controllers which allow us to include The Mouse and the real time clock and then the IBM PS2 introduced the PS2 keyboard and mouse and the keyboard mouse controller and also the 3 and 1/2 in 1.44 megabyte floppy disc drives and controller just a small point is strictly speaking this is a 1,440 kilobyte floppy disc which is slightly different from 1.44 megabytes but most people know it as 1.44 Meg
floppy and finally the compact Des Pro 386 introduced IDE discs and so the IDE disc controller and we'll be using a modern SATA disc with a SATA to IDE converter on it now one of the reasons why it's taken me a little while from the end of the previous series to produce in this video is what I've been doing is working on the schematic diagram so this is key Cad and what you'll see here is we've got the whole design from day one really in the previous series I was building out the processor and the clock and the re set logic and then I'd add extra bits and it would grow quite organically but what I've been able to do here is design it all from day one and the layout's been optimized I hope to make things a bit simpler to hook up you'll notice that in the middle here this is where our bus is going to go so where our 78 Lane bus is going and what we've got is the 7bit data bus although there's enough spare lines be able to bump that up to 16 if we want to upgrade the processor at some point in time we got the 20 bits the address bus control bus includes things like IO read IO right memory read memory right and the reset signals amongst other things then I've got a bus for the chip enables so that the address decoder here provides a number of Chip enable lines here and the advantage of that is it means you don't have to keep on including all the higher address lines being decoded all over the place and then finally all of the interrupts and then uh all the interupts that are needing to be accessed across the board are then actually in the top area of the board there and this now includes the programmable logic device that we've got to replace the 8284 clock generator and the 8288 bus controller so this chip is able to do the job of both of those and those two chips you don't really have to buy secondhand on eBay or through other sources you can't get them new these days we got the similar data bus buffering but also buffering the control bus signals address decoder then we've got the power on self test port realtime clock and the port B read and Right Stuff got the chip here that does the speaker timer and also some of the weight States then we've got a much simplified area over here so we've taken all the dma out so we just got two TR controllers and the data bus buffer for these controllers and all the other chips over on the side here down the bottom here we've got now got 1 Megabyte of ram so the higher Ram will fit around the video card so we can actually use some of the upper memory area for later versions of Doss still got the same AO for the BIOS and then this is the redesigned keypad and seven segment display it's a very similar design but this now rather than using a parallel port chip just has the 74s 646 latched buffer and a couple of plds and a couple of other logic chips so that should be simpler to program then we've got the CGA video controller here this is very similar to the one that we developed in the previous series there will be a few minor changes to this but fundamentally this will be remaining the same now up this section now Consolidated a lot of the external IO type functions so we've got our new serial Port using that surface mount chip with a USB to PC serial converter there then we've got the PS2 keyboard and mouse controller with the PS2 ports there floppy disc controller with the floppy disc connector there and we've also now implemented the disk change logic that we need so now the logic here will actually handle reading the dis change status from the BIOS and then finally the ID hard disk controller so the IDE port here will be plugged into our IDE SATA converter and then the logic around here supports that this is the io Port decoding for a lot of the external logic chips here so effectively like a an oldfashioned multi-function card which has the disc controller floppy disc controller serial port and it also has the keyboard controller on it as well so I've got a high level plan very much similar to what we did previously so a basic Nan comp 88 thus has the LED display keypad and the Monitor and with the new serial port that allows us to upload and download data across the serial Port then all build it out into the basic floppy dis PC with the poost port keyboard interrupts realtime clock floppy disc controller and we should then be able to boot up Ms Doss from floppy dis and then the final stage will be to add the IDE dis booting from hard disk with MS DOS building the CGA video controller setting up the mouse and then running Windows so if you don't want to miss out on the series then please hit subscribe and if you have a look at the playlist for this then you'll be able to look at the playlist to go through all the videos sequentially so thanks for watching and if you can hit like as well it just helps to make the videos available to more people
2025-03-01 09:04