Announcement

Collapse

Forum etiquette

Our mission ...

This forum is part of our mission to promote the preservation of vintage computers through education and outreach. (In real life we also run events and have a museum.) We encourage you to join us, participate, share your knowledge, and enjoy.

This forum has been around in this format for over 15 years. These rules and guidelines help us maintain a healthy and active community, and we moderate the forum to keep things on track. Please familiarize yourself with these rules and guidelines.


Remain civil and respectful

There are several hundred people who actively participate here. People come from all different backgrounds and will have different ways of seeing things. You will not agree with everything you read here. Back-and-forth discussions are fine but do not cross the line into rude or disrespectful behavior.

Conduct yourself as you would at any other place where people come together in person to discuss their hobby. If you wouldn't say something to somebody in person, then you probably should not be writing it here.

This should be obvious but, just in case: profanity, threats, slurs against any group (sexual, racial, gender, etc.) will not be tolerated.


Stay close to the original topic being discussed
  • If you are starting a new thread choose a reasonable sub-forum to start your thread. (If you choose incorrectly don't worry, we can fix that.)
  • If you are responding to a thread, stay on topic - the original poster was trying to achieve something. You can always start a new thread instead of potentially "hijacking" an existing thread.



Contribute something meaningful

To put things in engineering terms, we value a high signal to noise ratio. Coming here should not be a waste of time.
  • This is not a chat room. If you are taking less than 30 seconds to make a post then you are probably doing something wrong. A post should be on topic, clear, and contribute something meaningful to the discussion. If people read your posts and feel that their time as been wasted, they will stop reading your posts. Worse yet, they will stop visiting and we'll lose their experience and contributions.
  • Do not bump threads.
  • Do not "necro-post" unless you are following up to a specific person on a specific thread. And even then, that person may have moved on. Just start a new thread for your related topic.
  • Use the Private Message system for posts that are targeted at a specific person.


"PM Sent!" messages (or, how to use the Private Message system)

This forum has a private message feature that we want people to use for messages that are not of general interest to other members.

In short, if you are going to reply to a thread and that reply is targeted to a specific individual and not of interest to anybody else (either now or in the future) then send a private message instead.

Here are some obvious examples of when you should not reply to a thread and use the PM system instead:
  • "PM Sent!": Do not tell the rest of us that you sent a PM ... the forum software will tell the other person that they have a PM waiting.
  • "How much is shipping to ....": This is a very specific and directed question that is not of interest to anybody else.


Why do we have this policy? Sending a "PM Sent!" type message basically wastes everybody else's time by making them having to scroll past a post in a thread that looks to be updated, when the update is not meaningful. And the person you are sending the PM to will be notified by the forum software that they have a message waiting for them. Look up at the top near the right edge where it says 'Notifications' ... if you have a PM waiting, it will tell you there.

Copyright and other legal issues

We are here to discuss vintage computing, so discussing software, books, and other intellectual property that is on-topic is fine. We don't want people using these forums to discuss or enable copyright violations or other things that are against the law; whether you agree with the law or not is irrelevant. Do not use our resources for something that is legally or morally questionable.

Our discussions here generally fall under "fair use." Telling people how to pirate a software title is an example of something that is not allowable here.


Reporting problematic posts

If you see spam, a wildly off-topic post, or something abusive or illegal please report the thread by clicking on the "Report Post" icon. (It looks like an exclamation point in a triangle and it is available under every post.) This send a notification to all of the moderators, so somebody will see it and deal with it.

If you are unsure you may consider sending a private message to a moderator instead.


New user moderation

New users are directly moderated so that we can weed spammers out early. This means that for your first 10 posts you will have some delay before they are seen. We understand this can be disruptive to the flow of conversation and we try to keep up with our new user moderation duties to avoid undue inconvenience. Please do not make duplicate posts, extra posts to bump your post count, or ask the moderators to expedite this process; 10 moderated posts will go by quickly.

New users also have a smaller personal message inbox limit and are rate limited when sending PMs to other users.


Other suggestions
  • Use Google, books, or other definitive sources. There is a lot of information out there.
  • Don't make people guess at what you are trying to say; we are not mind readers. Be clear and concise.
  • Spelling and grammar are not rated, but they do make a post easier to read.
See more
See less

Compaq Portable RAM Decoder PROM - reverse engineer help?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Compaq Portable RAM Decoder PROM - reverse engineer help?

    Hello!

    I have acquired a Compaq Portable, and in the usual restoration process, backed up all the socketed ROMs.
    Including the U35 RAM Decoder PROM (256 x 8; 82S123 type; mine is a TI TBP18S030N). According to the service manual, this can be changed to a version that will allow using 256Kx1 DRAMs in bank 2 and 3, instead of 64Kx1. This means 640K RAM on the system board instead of 256K, meaning a RAM card is no longer needed.
    Another requirement is BIOS C or newer. Mine has BIOS C. I cannot find any of the later ones online.

    The Compaq part numbers for these Bipolar PROMs are:
    256K: 100349-001 (my one)
    448K: 101256-001
    640K: 101257-001 (the goal)

    I have read the 256K one, and traced out where the pins go. I have tried to trace further but it is a neverending maze. This is probably not enough information; if you need more, please ask. I understand if this is too ambitious of a mission; just seeing if someone may have an idea. Everything in the pic below.



    Cheers!
    JD
    Last edited by nztdm; March 22, 2019, 12:45 AM.
    Monotech PCs - brand new Vintage computer parts and accessories - Click here!
    EternalCRT: MDA/CGA/EGA>VGA Converter, XT-IDE, XT-CF-Mini, AdLib, DeluxeFloppy, PS/2>XT Keyboard Converter, XT-SVGA, NuXT, XT-MegaIO

    #2
    Since the banks are always the same in number, the RAS and CAS decoding will be spread apart within the address space. The input of the PROM is probably a registered set of addresses from CPU. Another thing that the PROM (or some other bit of logic) must do is supply the additional address line of the 256Kx1 DRAM chips with respect to the 64Kx1 chips. The additional address line is on pin 1, so you might trace back the connection going to pin 1 of the banks that can accept 256kx1 chips and get more clues.
    However, it's not a simple task if you don't start some stateful logging of the machine (you need a logic analyzer) or you get a much more complete schematic of the thing.
    Frank IZ8DWF

    Comment


      #3
      Thanks for that!

      I have found the schematic, which simplifies my original diagram a bit.

      Updated diagram here:


      Schematic here: https://drive.google.com/open?id=1aO...e86lfihagFYoT4

      I don't have a bipolar PROM programmer. I can probably prototype with a GAL instead, and some prototype board.
      Last edited by nztdm; March 23, 2019, 08:15 PM.
      Monotech PCs - brand new Vintage computer parts and accessories - Click here!
      EternalCRT: MDA/CGA/EGA>VGA Converter, XT-IDE, XT-CF-Mini, AdLib, DeluxeFloppy, PS/2>XT Keyboard Converter, XT-SVGA, NuXT, XT-MegaIO

      Comment


        #4
        Updated further. Wish they'd extend the edit time limit from 15 mins.

        Monotech PCs - brand new Vintage computer parts and accessories - Click here!
        EternalCRT: MDA/CGA/EGA>VGA Converter, XT-IDE, XT-CF-Mini, AdLib, DeluxeFloppy, PS/2>XT Keyboard Converter, XT-SVGA, NuXT, XT-MegaIO

        Comment


          #5
          Well, now with the schematic, it's all more clear
          First of all, U35 PROM only decodes the banks' RAS/CAS lines.
          So, if all the banks are 64k, then A16 and A17 inputs must be the only RAS/CAS source, so verify that D2-D5 outputs only depend on A16/A17, only one output should go low for each 4 possible combinations of A16/A17 (And with A18/A19 always =0 possibly). If all banks are 256K, the same should happen for A18/A19 as inputs, ignoring completely the state of A16/A17 that will be instead the input of the MA8 line on the RAM banks (pin 1).
          Dack0 input and D6 output to the CAS decoder are probably part of the refresh logic, and once recovered the logic equations that produce D6, it must also changed to use A18/A19 instead of A16/A17 if present in the equations.
          Now, if the new prom is installed, then RAM banks must be fed with A16/A17 and that's on page 1 of the schematic:
          U83 LS158 2:1 multiplexer. It must be connected to A16 on pin 2, A17 on pin3 and drives MA8 line from pin 4. E36, E37 might be jumpers connecting those lines to a supply rail or to the correct Address bus lines depending on the chip's size populating the banks or might even be always connected to A16/A17 even with 64K banks, since the 64kbit chips would ignore the input on pin 1 anyway.
          HTH
          Frank IZ8DWF

          Comment


            #6
            Thanks for that!

            First of all, U35 PROM only decodes the banks' RAS/CAS lines.
            Doesn't it also select RAM and ROM via G and G2B ?

            ---

            I have just examined and confirmed that my truth table is indeed correct. Rather than wiring up and reading the PROM in my programmer as a 2716, I connected up a DIP switch and some LEDs and went through the 32 bytes.
            I have made a less condensed truth table for better visualisation.


            Bank 0 and Bank 1 are soldered 64Kx1 ICs.
            Bank 2 and Bank 3 are sockets. If Bank 2 and Bank 3 contain 256Kx1 ICs, then there is now 640K total. This was the intended configuration when using Compaq's 101257-001 PROM. In the Compaq documentation, it doesn't mention jumper changes are required for upgrading to 640K. I don't think 1MiB was an intended configuration, but will probably work with the correct PROM (or GAL) like it does in the IBM XT, and allow UMBs.

            Here is a photo of my board:
            You can see the socketed U35 PROM next to Bank 3. The SW2 DIP switch for setting RAM quantity isn't present, as this must be a newer board, as it has BIOS Rev C, which supports Option ROMs, and autodetects RAM quantity. I see one jumper location on the board, next to the System ROM. J111. It's joined on the PCB from pins 1-2. This jumper is on second page of the schematic PDF. 1-2 connects ROM-A14 to Pin2 U41 LS138. 2-3 connects +5V to Pin2 U41 LS138. Perhaps it's something to do with the many non-present ROM sockets.

            Last edited by nztdm; March 24, 2019, 03:16 AM.
            Monotech PCs - brand new Vintage computer parts and accessories - Click here!
            EternalCRT: MDA/CGA/EGA>VGA Converter, XT-IDE, XT-CF-Mini, AdLib, DeluxeFloppy, PS/2>XT Keyboard Converter, XT-SVGA, NuXT, XT-MegaIO

            Comment


              #7
              Ok, so I didn't read the truth table enough to realize the RAM RAS enables are active high. They only depend on A16/A17 and A18/A19 both Low. So you must change the truth table to make them depend on A18/A19 only and extend probably /G to remain low on the new extended ram space (though it must remain high when A16,A17,A18,A19 are all high, since that's where ROMs are).
              You can't obviously have all 1Mbyte of RAM mapped since that would conflict with the ROM space.
              Frank

              Comment


                #8
                Hello

                Yes of course I can't have all 1MiB. I was meaning installing all 256Kx1 chips, and having a region of about 192K mapped above 640K for UMB. This is what is sometimes done with the IBM XT's PROM.

                The LS158 chip has inverting outputs. So when the PROM goes HIGH, a CAS will go LOW, unless /SEL is HIGH (when DACK0 is LOW), which will make all CAS lines HIGH.

                So for Bank 0 and 1 being 64K each, and Bank 2 and 3 being 256K each, maybe this truth table, if I'm understanding correctly?



                Thanks
                JD
                Monotech PCs - brand new Vintage computer parts and accessories - Click here!
                EternalCRT: MDA/CGA/EGA>VGA Converter, XT-IDE, XT-CF-Mini, AdLib, DeluxeFloppy, PS/2>XT Keyboard Converter, XT-SVGA, NuXT, XT-MegaIO

                Comment


                  #9
                  Just curious--how does this compare with the mapping ROM on the 5160?

                  Comment


                    #10
                    Originally posted by Chuck(G) View Post
                    Just curious--how does this compare with the mapping ROM on the 5160?
                    I am not sure as I don't have a 5160, I just read about it.
                    From what I can see, it uses an 82S129 equivalent, which is quite different to this 82S123 equivalent.
                    82S129 has 8 address lines and 4 data lines, two chip-enables.
                    82S123 has 5 address lines and 8 data lines, one chip-enable (always enabled in the Compaq).
                    Monotech PCs - brand new Vintage computer parts and accessories - Click here!
                    EternalCRT: MDA/CGA/EGA>VGA Converter, XT-IDE, XT-CF-Mini, AdLib, DeluxeFloppy, PS/2>XT Keyboard Converter, XT-SVGA, NuXT, XT-MegaIO

                    Comment


                      #11
                      No, I meant in terms of function.

                      Comment


                        #12
                        Originally posted by Chuck(G) View Post
                        No, I meant in terms of function.
                        I am not sure sorry.
                        I imagine it is similar.

                        If you're referring to my comment "Yes of course I can't have all 1MiB. I was meaning installing all 256Kx1 chips, and having a region of about 192K mapped above 640K for UMB. This is what is sometimes done with the IBM XT's PROM.", I was meaning the HIMEMV2 I read about, a third party replacement for the XT's PROM.
                        Monotech PCs - brand new Vintage computer parts and accessories - Click here!
                        EternalCRT: MDA/CGA/EGA>VGA Converter, XT-IDE, XT-CF-Mini, AdLib, DeluxeFloppy, PS/2>XT Keyboard Converter, XT-SVGA, NuXT, XT-MegaIO

                        Comment


                          #13
                          Yes, you'll note that I worked out the GAL equations for that one. I asked because that's what I was familiar with.

                          Comment


                            #14
                            Originally posted by Chuck(G) View Post
                            Yes, you'll note that I worked out the GAL equations for that one. I asked because that's what I was familiar with.
                            Ahh right.
                            Yea I'd intend to prototype and probably use a GAL in a small adapter board in the final design if I manage to figure this out.
                            I have never designed a GAL, but have been experimenting.

                            For starters, I am trying to recreate the original 256K PROM. Truth table seen in post #6.
                            I am using the "table" method in WinCUPL. I am using some "don't care" symbols in binary notation.
                            When I use the PLD file attached and program an ATF16V8B, it makes all outputs HIGH when all inputs are LOW, or only DACK0 is HIGH. Otherwise, all outputs will be LOW.
                            Any idea what I'm doing wrong?
                            CompaqPortable256KU35.zip
                            Monotech PCs - brand new Vintage computer parts and accessories - Click here!
                            EternalCRT: MDA/CGA/EGA>VGA Converter, XT-IDE, XT-CF-Mini, AdLib, DeluxeFloppy, PS/2>XT Keyboard Converter, XT-SVGA, NuXT, XT-MegaIO

                            Comment


                              #15
                              I'll have a look at it when I get a chance. I normally code GALs with equations. One thing I ran into was the lack of cells to use a 16V8 for the 5160. A 22V10 could be configured with the right logic and almost be an exact fit to the socket.

                              Comment

                              Working...
                              X