• Please review our updated Terms and Rules here

Plugging in power to other side..

Many thanks. I'll have to dig around for an explainer on setting up triggers.. I tried to understand that previously from the manual and videos but just didn't understand it at all. Back to education. :)

Side note: soldercon sockets are really handy for double-sided boards or repairs, but when they age.. look out.
 
Also just read that an active low means 0v is considered a logical 1. Great. That's not confusing at all... hahaha

The ghost of Grade 13 comp Sci has returned for me.
 
You should have taken more notes!

The worst chips to test are open collector devices. There is one driving the PET keyboard. If you scope it, signals go in - but no signals come out. It must be faulty - right? It gets replaced, only to find that the replacement does the same! For this situation, I made a simple pull-up probe from an old BIC biro, a 1k resistor, a nail and a length of flexible wire with a clip on the end.

I connect the clip to +5V, and use my special probe, plus the oscilloscope probe on the same pin. Lo and behold, a signal appears!

The pull-up resistor is required to provide a source of Volts for the oscilloscope to measure in the first place...

Dave
 
You're not helping Dave. :LOL:

Ok note to self, just let the Commodores be paperweights.

I think yesterday suggested I need to follow the schematic around and make sure key pins between the CPU, device decoder and memory select logic are okay, as well as PROM 0, just to make sure I'm not haunted by dry solder joints. This is not a vastly complex board by design, so it won't take too long to do that. I am 99% confident the ICs themselves are just fine - the complete set was swapped over from the working MMD-1 I have, before I stopped being an idiot and started actually reading up on this. From there I plan to read the theory of operation again a few times, understand by the tables what is expected, and really start following around to see gates are working like they should. Hopefully I can figure out how to set the trigger to help here.

I think it's most likely a few bad connections are bedeviling this homebrew board.
 
>>> I think it's most likely a few bad connections are bedeviling this homebrew board.

I think you are probably correct.

You just have to be systematic in your work.

Print out the schematic and use a highlighting marker to identify connections as you test them.

Don't forget, one bad connection can stuff up the entire machine.

One thing I do first is to check the 0V and +5V power supply pins directly on each chip to ensure there is 5V measured there.

Measure directly on the pins, but don't apply too much pressure. If you do, you can inadvertently cause the bad connection to be made and you will read the correct voltage!

I usually make contact with the sides of the pins and I don't push down on them and inadvertently push the pins into the socket.

Dave
 
>>> I think it's most likely a few bad connections are bedeviling this homebrew board.

I think you are probably correct.

You just have to be systematic in your work.

Print out the schematic and use a highlighting marker to identify connections as you test them.

Don't forget, one bad connection can stuff up the entire machine.

One thing I do first is to check the 0V and +5V power supply pins directly on each chip to ensure there is 5V measured there.

Measure directly on the pins, but don't apply too much pressure. If you do, you can inadvertently cause the bad connection to be made and you will read the correct voltage!

I usually make contact with the sides of the pins and I don't push down on them and inadvertently push the pins into the socket.

Dave
Yes that's exactly what I'm doing. I am doing it from top of IC leg to top of IC leg first, I figure if there's no resistance there at all, we're good, then check from base of soldercon socket to top of chip leg, then top of chip leg at other side anywhere I don't immediately see a proper connection. I actually try to be super gentle because these soldercon sockets break SO easily. Also because they're all exposed with no plastic between them, I worry that over time you might get two that get bent into eachother, just slightly, and create a short where one wasn't meant to be. When I built my TVT the number one problem was accidental connections/solder bridges like this. Even just leftover flux could cause problems.

I'm also looking for deviations between this unit and the schematic - I keep wondering if this was some sort of school project they built, and maybe they made some modifications for externally connected memory, etc. They were using the second PROM (PROM 1) so I think it was doing more than the basics MMD-1s usually did.

It's just nice having a little breakthrough like I did with the scope. When you're not an EE or don't have that kind of mind or experience, this stuff is seriously intimidating at first. But the more I learn the more I want to learn, kind of thing. A life goal is to build a basic computer from scratch one day.
 
It's just nice having a little breakthrough like I did with the scope. When you're not an EE or don't have that kind of mind or experience, this stuff is seriously intimidating at first. But the more I learn the more I want to learn, kind of thing. A life goal is to build a basic computer from scratch one day.
I feel that you are doing just fine. You're learning to use a scope which I recently had to do too. Yes, it's intimidating at first. I have a bit of EE background, but I am really an old programmer at heart. I have been doing what you want to do someday: building a basic Z80 system from scratch. I have the processor talking to a RAM and ROM right now. And a nice display board to show the address and data LEDs. Don't know how far I will get as this has been done many times. But for me it's fun and I am learning new things. I enjoy learning new things. So don't bash yourself too hard. Everyone at one time had to go thru those same steps as you are doing now.
 
What sort of computer?

Microprocessor, TTL chips or transistors?

Dave
I think start with microprocessor. I cant even wrap my head around TTL processors. Build something basic from wirewrap, and then just keep expanding it for more functionality as I learn. And then next steps would be maybe commit it to PCB, maybe have a pluggable bus like the Altair.. just branch out and see where I go.

I'd love to do a less common CPU, but maybe I'm best to start with something popular.
 
I would like to do a 68000 but I have never worked with one. I have 8080s and Z80s, so decided I would do a very basic Z80 system. Just on a breadboard. Never done wirewrap. I know it's not that hard, but still takes some practice. I have no desire to do a full TTL processor. I dabble in lots of things. Some grab my interest more and some fade.
 
I have found another problematic connection.. Pin 4 on the 8224 to Pin 23 on the 8080 (READY). I jumpered it to test and now thr machine starts up at address 3 like it's supposed to. But still unresponsive to keypad entries.
 
Found another! IC5 8224 pin 5 to IC3 8080 pin 19. Same thing.. flaky connection. With that fixed, the machine is consistently going to address 3 on reset. If I remove the EPROM, it goes to some other random address. It is not yet responding to keypresses.. so now tracing that out to see what's going on.
 
Alright so... i learned something today. Repairing/adjusting ancient soldercon sockets: forget it. Don't even try. Walk away and try something simpler and less fraught, like nuclear physics. Because the second your soldering iron touches an old soldercon pin (emphasis on the 'con') it crumples to dust, and the pad lifts off like a Vegas dancer's leg. And that's if you're lucky - I managed to build a couple of copper roller coasters with traces.

Ugggh.

Anyway, this happened because I tried to make permanent fixes to eliminate the need for jumper wires. I went down a rabbit hole.

I believe the system is running. On power up or reset, it returns to address 3 like the manual says its supposed to. If I remove the EPROM it doesn't do that.

The issue is it is not accepting keypad input. I have traced things out, following from the keyswitches to IC32 and 33 with the scope and can see they go from HI to LO when pressed.

I then pursued to IC30 and checked each connection between IC30 and IC32 and 33. All good. On the other side of each of the inverted AND gates I could see it going HI depending on which key was pressed.

I then followed to IC31 where I observed these keypress signals at each of the 'A' inputs on that IC, which made them go HI.

Beyond that I wasn't sure where to go, the Y outputs seem to have some sort of activity going on that changes briefly as a key is pressed.

I then followed pin 15 (IN with bar over it), and noticed nothing really going on there. I then traced it over to IC2 and that's where my adventure began. I thought to test for bad gates in that IC by swapping it with the one below it (IC3.. both of these chips are 7400s). Doing that causes the machine to fail to start up properly. That was when I knocked out the jumper wiring on the 8224 and decided to try and fix that.

Anyway, I think of the 7400s has some bad gates. I'll have to check them out tomorrow with the datasheet. Whether they matter or not I'll have to check on the schematic. Perhaps they have nothing to do with my situation, and a bad gate connected to nothing when the machine was 'working' becomes a problem when moved.

Just not sure where to go from here really, must reread the ToO again.
 
Excellent work.

I will check the schematics again and see if we can point you in the right direction again...

Dave
 
Ok, so here are a few thoughts looking at the schematic for the keypad interface.

1. The inputs to the two off SN74148 encoders (IC32 and IC33) from the buttons should really have pull-up resistors fitted. They do not. The inputs of all TTL devices have a weak pull-up internally, so (providing the devices do not operate in an electromagnetically noisy environment) you should be OK.

2. Pin 5 (EI) of both IC32 and IC33 should be connected to 0V for the SN74148 to correctly function. This does not appear to be shown on the schematic (naughty of them). Please check this pin on both devices.

3. With no buttons pressed, the EO output (pin 15) of the two SN74148 encoders should be LOW. When any button is pressed, the associated E0 pin of the SN74148 should go HIGH.

4. With no buttons pressed, the GS output (pin 14) of the two SN74148 encoders should be HIGH. When any button is pressed, the associated GS pin of the SN74148 should go LOW.

5. With no buttons pressed, the A, B and C outputs (pins 9, 7 and 6 respectively) of the two SN74148 encoders should be HIGH.

6. With the above (and no buttons pressed) all of the inputs to IC30 (the SN7400) should be HIGH and all of the output should be LOW. The annoying thing is that this drawing is drawn right to left, so the inputs are on the right-hand side and the outputs are on the left-hand side of each device gate drawing.

7. The inputs to IC31 (8095 tristate buffer) should also be LOW.

8. When you press any of the buttons (the numbers 0-7 or the function keys), IC31 pin 10 should go to a logic HIGH state.

9. When you press any of the NUMBER buttons (0-7), IC31 pin 12 should remain LOW.

10. When you press any of the FUNCTION buttons, IC31 pin 12 should go HIGH.

11. IC31 pins 2, 14 and 4 should all be LOW with no buttons pressed.

12. If you press a NUMBER button, the binary value of the button should appear on IC31 pins 2, 14 and 4.

13. If you press a FUNCTION button, the binary value of the button that has been pressed should also appear on IC31 pins 2, 14 and 4. If you look on IC33 at where each FUNCTION button is connected, you will see a corresponding number from 0-7. This is the binary coding that will result when the associated button is pressed.

Hopefully, I have not messed anything up in my transcription. You can test all of the above without the 8080 CPU working at all.

In order for the CPU to read the state of the keys, pins 1 and 15 of IC31 have to be BOTH LOW at the same time. At this point, whatever appears at the input pins of IC31 will be transferred to the CPU data bus. Note (however) that only D7 and D0 through D3 are actually connected up to this IC. With the oscilloscope, see if both of these pins are toggling. If so, you should be able to use both channels to see if the two pins are LOW at the same time. Your oscilloscope may even be able to trigger when both CH1 'AND' CH2 are both LOW? Check the math and logic functions of your oscilloscope.

Dave
 
Last edited:
Ok, so here are a few thoughts looking at the schematic for the keypad interface.

1. The inputs to the two off SN74148 encoders (IC32 and IC33) from the buttons should really have pull-up resistors fitted. They do not. The inputs of all TTL devices have a weak pull-up internally, so (providing the devices do not operate in an electromagnetically noisy environment) you should be OK.

2. Pin 5 (EI) of both IC32 and IC33 should be connected to 0V for the SN74148 to correctly function. This does not appear to be shown on the schematic (naughty of them). Please check this pin on both devices.

3. With no buttons pressed, the EO output (pin 15) of the two SN74148 encoders should be LOW. When any button is pressed, the associated E0 pin of the SN74148 should go HIGH.

4. With no buttons pressed, the GS output (pin 14) of the two SN74148 encoders should be HIGH. When any button is pressed, the associated GS pin of the SN74148 should go LOW.

5. With no buttons pressed, the A, B and C outputs (pins 9, 7 and 6 respectively) of the two SN74148 encoders should be HIGH.

6. With the above (and no buttons pressed) all of the inputs to IC30 (the SN7400) should be HIGH and all of the output should be LOW. The annoying thing is that this drawing is drawn right to left, so the inputs are on the right-hand side and the outputs are on the left-hand side of each device gate drawing.

7. The inputs to IC31 (8095 tristate buffer) should also be LOW.

8. When you press any of the buttons (the numbers 0-7 or the function keys), IC31 pin 10 should go to a logic HIGH state.

9. When you press any of the NUMBER buttons (0-7), IC31 pin 12 should remain LOW.

10. When you press any of the FUNCTION buttons, IC31 pin 12 should go HIGH.

11. IC31 pins 2, 14 and 4 should all be LOW with no buttons pressed.

12. If you press a NUMBER button, the binary value of the button should appear on IC31 pins 2, 14 and 4.

13. If you press a FUNCTION button, the binary value of the button that has been pressed should also appear on IC31 pins 2, 14 and 4. If you look on IC33 at where each FUNCTION button is connected, you will see a corresponding number from 0-7. This is the binary coding that will result when the associated button is pressed.

Hopefully, I have not messed anything up in my transcription. You can test all of the above without the 8080 CPU working at all.

In order for the CPU to read the state of the keys, pins 1 and 15 of IC31 have to be BOTH LOW at the same time. At this point, whatever appears at the input pins of IC31 will be transferred to the CPU data bus. Note (however) that only D7 and D0 through D3 are actually connected up to this IC. With the oscilloscope, see if both of these pins are toggling. If so, you should be able to use both channels to see if the two pins are LOW at the same time. Your oscilloscope may even be able to trigger when both CH1 'AND' CH2 are both LOW? Check the math and logic functions of your oscilloscope.

Dave
Thanks Dave. Heartening to think I may have been on the right track with following pin 15 of IC31. It was not changing regardless of keypress and I think that's how I ended up at IC2. Much appreciated.. will follow the trail some more today and hopefully Notch up one win for the week.
 
But pin 15 of IC31 should NOT change state if you poke any buttons!

Pin 15 of IC31 is activated by the 8080 CPU to READ the state of the keypad. The keys may (or may not) be pressed at this time.

If you do not see anything on IC31 pin 15 (and the CPU is actually doing something), then you need to look at the following pins:

CPU pin 17 (DBIN) should be pulsing. If it is, chase the signal through inverters IC1a and IC1b to IC2 pins 10, 4 and 12. They should be pulsing.

The other key signal is 8284 pin 7 (STROBE). That should be pulsing and should be present on IC4 pin 9.

I would then check IC2 pin 5.

Let me know what you find out.

Dave
 
I think we have some sort of issue both with the general area around IC2 and the actual 7400 that was installed. Definitely some of its gates were not working. However swapping known good has not solved the problem and seems to be causing the computer to lock up again on start up. I feel fairly certain this is more bad sockets/traces. So many moving parts with this one. Just going to bodge from underneath.
 
So for the first round, starting at the inputs off SN74148 IC32 and 33:

2) Yes, both IC32 and 33 have pins 5 (EI) connected to GND.
3) With no buttons pressed, the EO output is in fact LOW. When any button is pressed, the associated EO pin does go HI.
4) With no buttons pressed, the GS output on both encoders is HIGH. When any button is pressed, the GS pins do go LOW.
5) With no buttons pressed, the A, B and C outputs of the two 74148 encoders are in fact high.
6) With above and no buttons pressed, all inputs to IC30 should be HIGH and all output LOW. This is what is happening EXCEPT for pin 9. With all other input pins, there is a clear +5V HIGH status. However, on pin 9, it is technically HIGH I guess, but only showing 1 volt rather than 5. I switched in another 7400, same thing.
7) Inputs to IC31 are all LOW
8) When I press any of the buttons, IC31 pin 10 does go to a HIGH logic state
9) When I press any of the number buttons, IC31 PIN 12 does remain LOW
10) When I press any of the FUNCTION buttons, IC31 pin 12 does go HIGH.
11) IC 31 pins 2, 14, and 4 are all LOW with no buttons pressed.
12) IF I press a number button, the binary value should appear on pins 2, 14 and 4. I think this is correct? When I press 1, Pin 2 goes HIGH, pins 14 and 4 are LOW. I missed it in my notes but I saw this change when I pressed 2 - I think 2 went LOW, 14 went HIGH and 4 went LOW, or maybe it was 4.. I'll have to recheck that but I seem to recall broadly these values were changing and seemed to align with binary although I wasn't sure how the pins correspond to a proper binary number.
13) If I press a FUNCTION button, I do get something like a binary value on IC31 pins 2, 14 and 4. If I press B, I get 111 going by the order of the pins you gave me. If I press a function key like L, the code is 101.

I should note - the keypad was in pieces when I received it - it uses foil tabs similar to those used on later Apple II+ keyboards. I put it back together by figuring out how the tabs oriented and where the little 'forks' that come down to make permanent connections to the matrix on the PCB match up to the points on the PCB. A couple of keys seem to be nonfunctional. There may be a reason why this was disassembled. And of course, it had to be missing one physical button. :)
 
I investigated IC30. The connection between IC30 pin 9 and IC33 pin 14 is basically an over-under-over trace.. the trace from pin 9 runs under some other traces and then pops out on the other side of a power rail, and then runs a short distance back in the direciton of IC33, then goes back to the other side of the board and finally runs the rest of the way to that pin. My multimeter registered NO connection whatsoever from IC30 pin 9 to IC33 pin 14., not even from IC30 pin 9 to the little 'nail' that continued the trace topside. The problem seems to be the tiny little 'nails' they used to make connections from the top to bottom of board and back. Nothing I did with reflowing solder fixed it. I had to desolder, remove the 'nail' and then solder in new wire.

So things seem to be fixed over there... but still no dice with the keypad. I think my problem is elsewhere. I did confirm that IC2 pins 10, 4 and 12 were pulsing and connected to DBIN through IC1a and IC1b - at least, they exhibited the same looking signal.
 
Back
Top