I wanted to start another thread to keep things neat, and focus only on
the PC issues I'm having since I believe I have solved everything else.
If I run any multi-line program, I never get to line two because the
program-counter goes to 00 and the system executes the HALT (C810) found
there.
I've looked at all the PC relays and all the PC-Inc relays, all the
solder joints around there, and cannot find anything wrong, but I
believe I have narrowed this down to the PC Incrementer. Here's why:
The following program works and the loop will run forever:
With the last program, after the first line the PC=00 and the system
halts. That tells me that the PC INC isn't working, but I can't figure
out why. Any ideas?
Last edit: Gary Donahue 2021-02-16
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Glad to hear that you got your PIC replaced and your board is working again more or less.
Most likely you are seeing issues related to one or more relays misbehaving.
The relays that compose the PC need to have similar performance, it is possible that one or more of them are different enough to cause issues or behave intermittently due to poor pin contact in their sockets. I've attached a PDF that lists which relays are used in what Joe calls "Holding mode". Look in the board assembly documentation for explanation about the holding relays and holding resistors.
Note: John Taylor (another member of this relay computer group), was kind enough to create a relay test fixture (micro-controller) based, that he sent me. I used this fixture to go through all of my relays so I could pick the 13 that were closely matched in terms of release current. I've had great success with my two boards in terms of operational performance due to having matched the relays. Unfortunately I have lost contact with John and he doesn't seem to be monitoring this group anymore, I don't know why, but he was a great resource.
I'm hope that you have the relays in sockets so you can easily remove them, otherwise it is going to be a problem in troubleshooting your program issues.
Before doing anything mark each of those 13 relays with a number or symbol so you can remember/track which one is currently inserted into each position.
I would try removing each one, one-at-time and then re-insert it back into its socket, and see if your program behavior changes. After going through all of them and your program still doesn't work, then try trading relays between positions to see if the behavior changes. If you have extra relays you could try swapping them in to see if the behavior changes.
On one of my boards I had a problem with two relays that just by removing and re-inserting them fixed the problem. They weren't in the PC area, but were in the conditional logic section (K24 and K25) and were causing problems during jumps. Since doing that they have been working fine.
Worst case you may have to do the above remove/insert technique for each of the relays on the board, Good Luck...
I bought many more relays than needed and when I checked the solder joints I removed all the relays (they are all socketed) and put them back in a different order and with a smattering of new ones purposfully added. There was no change in the symptom.
Is there a schematic to build this relay tester? Or even a manual way of testing?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Reading your attachment, if the only requirement is closely matching low release current, then I should be able to manually test a bunch using my constant current power supply, yes?
Last edit: Gary Donahue 2021-02-16
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yes, the relay tester just made the measurements more automated and calculated the results.
I've attached a PDF copy of Joe's collection of experiments/design notes. Starting on page 69, Joe talks about how he did some testing of the relays. See if that helps.
2.1.4 Relays
There are many 12 V DPDT non-latching DIP relays which will work. However, the 13 relays used as flip- flop bits need to have matching holding resistors. If you select different relays than the ones in the BOM for these, you will have to experiment with different holding resistors.
The holding resistors for the flip flops are these two resistor arrays: R204 and R205. They are 2K ohms for the V23105A5003A201 relays.
The flip flop relays which must match the holding resistors are these: K1, K2, K4, K5, K7, K8, K10, K11, K70, K78, K79, K81, and K82.
I used the relays from the BOM (V23105A5003A201) so this really shouldn't be an issue based on the tolerances in Joe's notes. I tested the R204 and R205 resistor arrays out of the sockets and they're all almost perfect at 1.989k +/- .001.
Lord knows I'm not above being wrong, but after swapping all the relays and getting the same results it feels like something else is wrong.
This is getting a bit frustrating, though that's mostly because my nice programmable power supply is in storage so I can't really do these relay tests right now.
Thanks for your continued help. I'm so close to having a perfect finished product.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
OK, so I've done a bunch of testing today by moving relays around and learning more about how this thing works.
First point: If I remove the PC INC relays there is no change in behavior. I've triple checked each of the PC INC socket solder joints and they all look good to me. Replacing the PC INC relays with completely different units shows no change in behavior.
I think the problem is a bit weirder than I thought, though. With everything back together I hooked up the serial cable and discovered something interesting. When I try to run the program at 10, it actually tries to run what's in 00:
g 10
00 0000_0083 clc
If I put a program in 30 that jumps to 40 then jumps back:
Can you verify that the PC actually latches anything? I mean follow these instructions from the assembly instructions (sorry if you did this already, didn't follow the entire thread):
"Verify that you can set and clear all PC bits by entering FF then <step>. All PC LEDs should be on. Now enter 00 then <step>. All PC LEDs should be off. If some appear to be stuck on or off, check that the holding resistors are installed properly: R204 and R205.If some relays are still stuck, try swapping the PC bit which is stuck with some other relay on the board. You should be able to find one that works with the holding resistor."</step></step>
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thank you for this - you may be onto something. I must have glossed over that step and only focused on the flags and address lights. There are definately some not latching.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I wanted to start another thread to keep things neat, and focus only on
the PC issues I'm having since I believe I have solved everything else.
If I run any multi-line program, I never get to line two because the
program-counter goes to 00 and the system executes the HALT (C810) found
there.
I've looked at all the PC relays and all the PC-Inc relays, all the
solder joints around there, and cannot find anything wrong, but I
believe I have narrowed this down to the PC Incrementer. Here's why:
The following program works and the loop will run forever:
20 4018FF21 ; JMP #21
21 4018FF22 ; JMP #22
22 4018FF20 ; JMP #20
The following program fails:
20 48000000 ; ST #00 00
21 48800100 ; INC 00
22 4018FF21 ; JMP #21
With the last program, after the first line the PC=00 and the system
halts. That tells me that the PC INC isn't working, but I can't figure
out why. Any ideas?
Last edit: Gary Donahue 2021-02-16
Glad to hear that you got your PIC replaced and your board is working again more or less.
Most likely you are seeing issues related to one or more relays misbehaving.
The relays that compose the PC need to have similar performance, it is possible that one or more of them are different enough to cause issues or behave intermittently due to poor pin contact in their sockets. I've attached a PDF that lists which relays are used in what Joe calls "Holding mode". Look in the board assembly documentation for explanation about the holding relays and holding resistors.
Note: John Taylor (another member of this relay computer group), was kind enough to create a relay test fixture (micro-controller) based, that he sent me. I used this fixture to go through all of my relays so I could pick the 13 that were closely matched in terms of release current. I've had great success with my two boards in terms of operational performance due to having matched the relays. Unfortunately I have lost contact with John and he doesn't seem to be monitoring this group anymore, I don't know why, but he was a great resource.
I'm hope that you have the relays in sockets so you can easily remove them, otherwise it is going to be a problem in troubleshooting your program issues.
Before doing anything mark each of those 13 relays with a number or symbol so you can remember/track which one is currently inserted into each position.
I would try removing each one, one-at-time and then re-insert it back into its socket, and see if your program behavior changes. After going through all of them and your program still doesn't work, then try trading relays between positions to see if the behavior changes. If you have extra relays you could try swapping them in to see if the behavior changes.
On one of my boards I had a problem with two relays that just by removing and re-inserting them fixed the problem. They weren't in the PC area, but were in the conditional logic section (K24 and K25) and were causing problems during jumps. Since doing that they have been working fine.
Worst case you may have to do the above remove/insert technique for each of the relays on the board, Good Luck...
I bought many more relays than needed and when I checked the solder joints I removed all the relays (they are all socketed) and put them back in a different order and with a smattering of new ones purposfully added. There was no change in the symptom.
Is there a schematic to build this relay tester? Or even a manual way of testing?
Reading your attachment, if the only requirement is closely matching low release current, then I should be able to manually test a bunch using my constant current power supply, yes?
Last edit: Gary Donahue 2021-02-16
Yes, the relay tester just made the measurements more automated and calculated the results.
I've attached a PDF copy of Joe's collection of experiments/design notes. Starting on page 69, Joe talks about how he did some testing of the relays. See if that helps.
The build instructions state:
I used the relays from the BOM (V23105A5003A201) so this really shouldn't be an issue based on the tolerances in Joe's notes. I tested the R204 and R205 resistor arrays out of the sockets and they're all almost perfect at 1.989k +/- .001.
Lord knows I'm not above being wrong, but after swapping all the relays and getting the same results it feels like something else is wrong.
This is getting a bit frustrating, though that's mostly because my nice programmable power supply is in storage so I can't really do these relay tests right now.
Thanks for your continued help. I'm so close to having a perfect finished product.
OK, so I've done a bunch of testing today by moving relays around and learning more about how this thing works.
First point: If I remove the PC INC relays there is no change in behavior. I've triple checked each of the PC INC socket solder joints and they all look good to me. Replacing the PC INC relays with completely different units shows no change in behavior.
I think the problem is a bit weirder than I thought, though. With everything back together I hooked up the serial cable and discovered something interesting. When I try to run the program at 10, it actually tries to run what's in 00:
If I put a program in 30 that jumps to 40 then jumps back:
30: 802a0040. ; incjne 00 40
40: 802a0030. ; incjne 00 30
...and then run it, it runs whats in 20! (I put a multi-line program in 20 to prove that jumps always work)
But if I tell it to run 20 directly, it does:
Hmm... I took Joe's Euclid program copied right from 10 and put it into 50:
52:0062011a
53:08000002
54:08e00102
55:00660218
56:08e00100
57:4018ff12
58:08e00001
59:4018ff12
When I try to run what's in 50, it goes to 40!
I'm at a loss here.
P.S. Kudos to Joe - the serial usability is fabulous.
Last edit: Gary Donahue 2021-02-19
Can you verify that the PC actually latches anything? I mean follow these instructions from the assembly instructions (sorry if you did this already, didn't follow the entire thread):
"Verify that you can set and clear all PC bits by entering FF then <step>. All PC LEDs should be on. Now enter 00 then <step>. All PC LEDs should be off. If some appear to be stuck on or off, check that the holding resistors are installed properly: R204 and R205.If some relays are still stuck, try swapping the PC bit which is stuck with some other relay on the board. You should be able to find one that works with the holding resistor."</step></step>
Thank you for this - you may be onto something. I must have glossed over that step and only focused on the flags and address lights. There are definately some not latching.
You're my hero! And all for pointing out that I didn't read the directions well enough. LOL.
Thanks for all your help and patience!
BTW I had to go through probably 40 relays before I got a set of eight that would work reliably.
Congratulations, your relay computer is sounding good.