Menu

PC Redux

2021-02-16
2021-02-19
  • Gary Donahue

    Gary Donahue - 2021-02-16

    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
  • Francis Bauer

    Francis Bauer - 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...

     
  • Gary Donahue

    Gary Donahue - 2021-02-16

    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?

     
    • Gary Donahue

      Gary Donahue - 2021-02-16

      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
  • Francis Bauer

    Francis Bauer - 2021-02-17

    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.

     
    • Gary Donahue

      Gary Donahue - 2021-02-18

      The build instructions state:

      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.

       
  • Gary Donahue

    Gary Donahue - 2021-02-19

    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:

    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)

    g 30
    20 802a_0021 incjne 0x00, 0x21 A[00] <- 84
    21 802a_0022 incjne 0x00, 0x22 A[00] <- 85
    22 802a_0023 incjne 0x00, 0x23 A[00] <- 86
    23 802a_0024 incjne 0x00, 0x24 A[00] <- 87
    24 802a_0025 incjne 0x00, 0x25 A[00] <- 88
    25 802a_0026 incjne 0x00, 0x26 A[00] <- 89
    26 802a_0027 incjne 0x00, 0x27 A[00] <- 8a
    27 802a_0028 incjne 0x00, 0x28 A[00] <- 8b PC <- 20

    But if I tell it to run 20 directly, it does:

    g 20
    20 802a_0021 incjne 0x00, 0x21 A[00] <- 98
    21 802a_0022 incjne 0x00, 0x22 A[00] <- 99
    22 802a_0023 incjne 0x00, 0x23 A[00] <- 9a
    23 802a_0024 incjne 0x00, 0x24 A[00] <- 9b
    24 802a_0025 incjne 0x00, 0x25 A[00] <- 9c
    25 802a_0026 incjne 0x00, 0x26 A[00] <- 9d
    26 802a_0027 incjne 0x00, 0x27 A[00] <- 9e
    27 802a_0028 incjne 0x00, 0x28 A[00] <- 9f PC <- 20

    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!

    g 50
    40 802a_0030 incjne 0x00, 0x30 A[00] <- a6 PC <- 20
    20 802a_0021 incjne 0x00, 0x21 A[00] <- a7
    21 802a_0022 incjne 0x00, 0x22 A[00] <- a8
    22 802a_0023 incjne 0x00, 0x23 A[00] <- a9
    23 802a_0024 incjne 0x00, 0x24 A[00] <- aa
    24 802a_0025 incjne 0x00, 0x25 A[00] <- ab
    25 802a_0026 incjne 0x00, 0x26 A[00] <- ac
    26 802a_0027 incjne 0x00, 0x27 A[00] <- ad
    27 802a_0028 incjne 0x00, 0x28 A[00] <- ae PC <- 20

    I'm at a loss here.

    P.S. Kudos to Joe - the serial usability is fabulous.

     

    Last edit: Gary Donahue 2021-02-19
  • Joe Allen

    Joe Allen - 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>

     
    • Gary Donahue

      Gary Donahue - 2021-02-19

      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.

       
  • Gary Donahue

    Gary Donahue - 2021-02-19

    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!

     
    • Gary Donahue

      Gary Donahue - 2021-02-19

      BTW I had to go through probably 40 relays before I got a set of eight that would work reliably.

       
  • Francis Bauer

    Francis Bauer - 2021-02-19

    Congratulations, your relay computer is sounding good.

     

Log in to post a comment.

MongoDB Logo MongoDB