Path: osiris.wu-
wien.ac.at!newsfeed.ACO.net!swidir.switch.ch!epflnews!debur1mac1.epfl.ch!user
From: etd226@mehp26.epfl.ch (Stephane Grundschober)
Newsgroups: comp.sys.hp48
Subject: Ram upgrade for HP48SX - How to do it
Date: Mon, 22 May 1995 13:57:02 +0200
Organization: EPFL - Swiss Polytechnical School
Lines: 348
Message-ID: <etd226-2205951357020001@debur1mac1.epfl.ch>
Reply-To: etd226@mehp26.epfl.ch
NNTP-Posting-Host: debur1mac1.epfl.ch

Ram upgrade for HP48SX - Compatibility with ram card (2nd version)
----------------------------------------------------

**************************INTRODUCTION*********************************
  I have a HP48SX. Because I wanted to learn system-RPL, I got some
documentation on HPCVBBS. I found there the RPL library from Detlef
Mueller (very nice library!). Unfortunately it needed about 60K, and
my hp48SX had only 32K... So I bought a 128k Ram Card.
Some time later, my hp was shouting: "OUT OF MEMORY"  (arghh...)
I could have buy another card, but 250$ seemed too much for me for 
a 30$ ram chip!
I got the file 48gs256.zip (from hpcvbbs.external.hp.com) describing
how to upgrade a hp48 S or G (not X) to 256K, and my solder iron!
(Furthermore, the warranty was off, but that's an other story...)

****************************PROBLEMS***********************************
  The documentation describes how to upgrade an HP48 S or G but not
an SX or GX. In fact, because there's no external connector inside
the S or G, you have plenty of room to add a small pcb and some wires
to the needed signals.
  What I wanted to do, was to being able to use my two ports as if
nothing was changed inside, or emulating a ram card in port2 when
nothing was plugged in! I've only be able to add 128K of the 256 I
first planned because of some problems I'll explain later...
(GX OWNER: please read the section "Why only 128k" too!!)

************************SOLUTION (summary)*****************************
  WARNING: It was a painful solder job!
Because of the lack of room inside a SX, I needed to use a SMD
ram chip (128k x 8 bits static). It's not easy to find, but you
should look around... 
I soldered this chip above the internal 32k ram, and add some wires
to the needed signals. If you don't want to use any more the 2nd port,
you can stop here. But if you want to still being able to use the port,
you have to add a 2nd chip:
I used a 74HC244 (2x 4bits driver/tristate) to separate completely
the connector from the signals I was using to make the extension work.
A dip switch glued under one rubber foot lets me disable or write
protect the memory.

**************************HOW TO DO IT*********************************
  =================================================================
  || Do the upgrade only if you know you're qualified to do it ! ||
  || Watch out for any Static-discharges !                       ||
  || Of course this upgrade is at your own risk, you lose all    ||
  || warranty, if you had any left......                         ||
  =================================================================
You should also read the documentation (upgrade.txt) coming in the file  
48gs256k.zip located at HPCVBBS.EXTERNAL.HP.COM\dist\hp48g\doc, almost
for being able to open your HP nicely...
I'll quote some illustrations from this file (many thanks for the
authors, great job!).
You are also pleased to read this entire documentation before doing 
anything. Try to understand what I'm doing and why.


1) SOLDERING OF THE 128K SMD RAM CHIP

This is what     --!!!!---OO----     Serial connector-IR
I found when    |               |
opening my      | XX  XXXXX  XX |    ??  Processor(?)  ??
hp48SX          | XX  XXXXX  XX |
(Screen facing  |     XXXXX     |
 down)          |               |
                |               |
                |               |
                | ############# |    Expansion connectors
                | ############# |    (port2 upside)
                | ############# |
                | !!!!!!!!!!!!! |    small wires from port1&2
                |               |
                |    XX  XXX CC |    RAM32k  ROM(256k?)
                | C  XX  XXX CC |                    Condensator
                | C  XX         |    Condensator
                |---------------|
                |               |
                |               |    Battery Case
                |               |
                 ---------------

You can locate the ram chip: it's a 24 pin SMD ram chip (SO package).
(Just for fun: the rom chip is a SMD PLCC package!)
And here's the worst part of soldering.... For a !#?*!??#!? reason, 
the 28 pin SMD of the 128k is a _little bit_ wider than the 24 pin SMD
of the internal 32k... You can't solder directly the new ram over the old
one!!! To get it work, I've soldered 22 tiny pieces of wires on the old
ram chip, so I could solder the 128k over it!

      128K            __--------------__
                    _|  --------------  |_
                    __                  __
      wire            |                |
                      | __----------__ |
      32K             _|  ----------  |_

Hopefully, I'm not a depressive guy! You should use a solder tip of less
than 2mm (2/25 = .079 inch) wide.  

WATCH OUT: SOME PINS SHOULD NOT BE CONNECTED. PLEASE READ NEXT PARAGRAPH


Place the 128K ram so that pin16 (Gnd) is above pin14 of the 32k ram.
Pins' 1,2,31 & 32 are not above a pin. They will be connected with wires.
You should NOT connect pins 20 and 28 of the 32k ram to the 128k.

We need to feed the 128k chip with A15, A16 and +Vcc. You should find +Vcc
on pin 28 of the 32k ram, or to the positive leg of the big black
condensator (down right, OK...). Connect +Vcc to pin 32 of the 128k ram.
The others' signals should be taken from the extension connector; Here's the 
pinout:

If you have a look on the circuit board you will see a row of pins that 
connect to the chip card slots of the 48SX. If the battery case points to you 
the pins are numbered RIGHT TO LEFT. You can verify that if you know that the 
pins' 2,21,37,38 and 39 are devided for the two card slots.  

So you have to connect pin 2 of the 128k ram chip to pin 19 of the connector
and pin 31 of the ram to pin 18 of the connector.


2) CONNECTION OF THE LAST NEEDED SIGNALS - USE OF THE 74HC244

 We need now to take the signals needed by the ram to know when it should
be activated: pin 30 of the 128k ram chip (CE2) can be connected to
the pin 21 of the connector.
/CE1 (pin22 ram chip) should be pulled down (GND) to enable the ram.

 The HP needs some signals to know that there's a ram card present:
pin 37&39 of the connector should be pulled down
pin 38    "   "    "         "    "    "    high (+Vcc, on the black condo)
pin 2 should be connected to +Vcc trough a 1Mohm resistance.

I've chosen to use the port 2 connector, because it's easier to solder
on it!! Please read the section "Why only 128k!".

You have two choices:
 - You don't want to use the port2 anymore (Why have you bought an SX ?)
   ---> Just do the described connections, it works. But please, NEVER
        NEVER NEVER plug anything in the port2.
 - You want to still being able to use the port2 (when the internal 128k
   ram is disabled)
   ---> Ok, I'll explain...

We need the 74HC244 (2x 4bits driver-tristate). Here's the pin layout:

            +Vcc /2G 1Y1 2A4 1Y2 2A3 1Y3 2A2 1Y4 2A1
           ___I___I___I___I___I___I___I___I___I___I____
           I  20  19  18  17  16  15  14  13  12  11   I
           I          |   |   |   |   |   |   |   |    I
            \         /   /   /   /   /   /   /   /    I
             I      /   /   /   /   /   /   /   /      I
            /      |   |   |   |   |   |   |   |       I
           I   1   2   3   4   5   6   7   8   9  10   I
           I---I---I---I---I---I---I---I---I---I---I---I
              /1G 1A1 2Y4 1A2 2Y3 1A3 2Y2 1A4 2Y1 Gnd

  xAi : Input (Schmidt-Trigger)          i=1..4   x=1..2
  xYi : Output
  /Gx : Select (low: drive (active)  high: high impedance output) 
  
  ex: when /1G is pulled down, the levels on pin 1A1 to 1A4 are transmitted
      to pin 1Y1 to 1Y4.
      when /2G is pulled high, 2Y1 to 2Y4 present a high impedance: it's
      as if these output pins were disconnected.

We will use a small dip switch (I used a 4 dip switches, and glued it under
a rubber foot after making a hole in the box). I've used only two switches:
One for the Enable/Disable function, and another one for the write protect
function.

Here's the schematic:

HP connector     74HC244                          DIP
                           ___+Vcc
Card present       _        |
     38--------1Y1| |1A1----+
                  |_|        
                   !                +Vcc___
/Write prot        _            ______   |
     37--------1Y2| |1A2----+--|______|--+
                  |_|       |   10Kohm            \ 
                   !        +--------------------o  \o---+
   /Ram            _                                     |
     39--------1Y3| |1A3----+                           ===Gnd
                  |_|       |
                   !       ===Gnd
                   !
 Volt. Sense       !       ___+Vcc
        _____      _        |
   2---|_____|-1Y4| |1A4----+                          ___+Vcc
        1Mohm     |_|                            \      |
                   !/1G     +-------------------o  \o---+
                   !        |   ______
                   +--------+--|______|--+
                            |   10Kohm   |
                            |           ===Gnd
                            |
                            +---------------------------> To pin 22 
                                                          of the 128k ram
                                                          chip (/CE1)

Don't forget to connect +Vcc to the pin 20 of the 74HC244 and Gnd to pin 10.
You should also connect +Vcc to /2G (to avoid oscillations).
You can find +Vcc and Gnd on the big black condensator on the right.
Look at what is written on the body of the condo to find where is Gnd. You
can also check it by testing the contact between pin 40 of the connector
and the suspected leg of the condo.
The switches are normally open: The ram is enabled and not write protected.
In this state, there's no current drain. When changing the position of
the dip, there will be 0.5 mA flowing... I don't know if it's too much,
neither if a resistor bigger than 10K will work... If you know something,
please send me a message!

I've soldered the wires and resistors directly on the chip. It's ugly
but it works (and you don't have to show it to everybody...).

Vladimir Mier-Jedrzejowicz tells me we could also use two reed-switch:
These switches close when you approach a magnet near the switch. This
could be useful if you don't want to make holes in the case of the hp.
(Trick taken from his book about the HP28)

3) YOU HAVE DONE IT!

  Bravo! You manage to do it in less than a day!  Of course you have double
checked all the connections. You are sure that you have got the good chips
(the ram 128k x 8bits static and the 74HC244). Look at the good orientation
of the ram (check for Gnd and +Vcc).
Are you sure you haven't made some soldering bridge?
I've wrapped all the chips with rubber tape (?) to isolate them from
any metallic contact. 

If all is OK, you can close the hp. Put the battery back (watch out of
the positive contact), and turn the hp on! You should get the message
"INVALID CARD DATA". It's OK. Try to use the port2 (store something in it).
It should work (at least, mine works...). You can perform a ram test:
press ON and D, (get the beep and the vertical line) then the up arrow key
(k). You should see "RAM2        128K". Wait 8 seconds: it should write
now "RAM2  OK       128K" and beep.
If it does not work, sorry, but you are on your own...


*********************** WHY ONLY 128K ? *******************************
                  GX OWNER, PLEASE READ THIS

At first, I was wondering about 2x 128k ram internal, plus sometimes
an external ram or application card... When I opened my SX, I saw the
connectors: 40 very small wires connecting the printed circuit board
to the connector itself.
                               ___________
                           ___| port 2    |
                          /   |___________|__
  view from the side     /  __| port 1       |
                   _____/__/__|______________|________ PCB

And that's the problem: you need some signals from this connector. 
You can easily get the signals from port2 (you can solder wires on the
small wires), but you can't access port1's wires...
The only way to do it, is to desolder port2's wires, bend them up so you
can 'try' to access port1 signal and solder wires on it. Then you should
solder port2's wires back...
I said I wasn't a depressive guy, but ... remember: there is 40 pins on
about 5 cm (2 inch)!
If you have a small solder iron, you should be able to do it (mine was
too big).

And here's the GX problem:
 I've really no idea what signals should be used on port2 (pin 31-36). 
I think we have to use these pins, because they are used for the bank
switching option (for BIG ram card).
The other way is to use port1 to do the upgrade. But then, you have just
read what problems it generates!

*****************************EPILOGUE**********************************
One more time:
  =================================================================
  || Do the upgrade only if you know you're qualified to do it ! ||
  || Watch out for any Static-discharges !                       ||
  || Of course this upgrade is at your own risk, you lose all    ||
  || warranty, if you had any left......                         ||
  =================================================================

I think I've all explained. If something is unclear or missing, please
feel free to mail me. Please send me a message too if you have any 
comments or if you have successfully done the upgrade.

Please excuse my poor English, but it's not my mother tongue...

  Have a nice day!

      Stephane Grundschober               etd226@mehp26.epfl.ch
                                        (until the 24 of June 95)
      Swiss Polytechnical School
      Lausanne
.
