From: otti@megatel.de (Thomas Otten)

My calculator started to shout "expand me" and I went out to get some meat
(did you see "Little Shop of Horrors"?). And when I turned it on today it
happily said "Mem available: 256440 Bytes"

Credits:
1) Like my first posting this text is based on a text by Holger Meyer
   ( 85348@NOVELL1.RZ.FHT-MANNHEIM.DE )
   HP48S by simulating one or two RAM cards. The pictures of the pin
   layouts are his art work and only modified by me.
2) Carl Raffa (ccraffa@cotton.vislab.olemiss.edu) who opened his HP48GX
   and told me about the missing chips.
3) Paul Smith (akcs.n2kyw@hpcvbbs.cv.hp.com) who wrote the text about
   opening the 48 that is included in this posting.
4) Everyone who mailed me for my first posting

In my first posting one week ago I described how to expand the HP48G to
128K RAM. I wrote that I couldn't connect it as port memory. Later I got
the information about the missing chips in the G and was able to simulate
a RAM card. I tried to reactivate the 32K internal RAM. This was possible
but I could use the extra 128K only as port memoory (not as merged user
memory) afterwards (I posted this, too). Now I bought a second 128K chip
and my G has no problems to merge both chips to a total of 256K. It should
be possible to include a third chip (as port 2) and expand to 384K. Only
the space needed for that chip could be a problem.


Now for the instructions:

1) Opening the case
--------------------
This text is written by Paul Smith:
++++++++++++++++ start forwarded text ++++++++++++++++++
Disassembling the hp48sx
(may or may not correspond to the 48s, but probably will to some
extent)

Sufficient numbers of people (more than 1) have requested information
on how to disassemble their hp48.  Despite the fact that that's pretty
scary, I will entail what I know here.  Thanks to David Holmes for
taking the first step and helping make my attempt more informed.

None of the information that follows came from hp, so if what I say
starts to sound rather official, it's not.

For the few folks out there who've actually had to send their hp48
back to hp for service, you probably ended up with an entirely new
unit.  I suspect the reason for this, aside from some labor cost
savings on the part of hp, is that they really aren't much fun to take
apart.  You can draw your own conclusions as to why it was designed
that way.

0.  Backup your memory.  You will need to remove the batteries for
awhile to disassemble the unit, and you may have them out long enough
to cause memory loss (although in my case, even 2 days didn't wipe
anything out).

1.  Remove the tin key overlay.  The overlay is attached with double-
sided tape of some sort.  A little care and patience will allow you to
remove it only slightly warped, and it is fairly easy to straighten
out later.  I took a small jewelers screwdriver and started prying
near the "ON" button, and worked upward toward the screen.  When you
get near the screen, try to preserve the shape of the overlay because
that portion is a bit more difficult to properly straighten later.
Once the overlay is removed, put it in a container or somewhere away
from dust.  The double-sided tape should stay with the overlay (mine
did, at least) and will gather dust and stuff making it less sticky if
left out in the open.  48sx owners will need to remove the little hp
logo insert above the screen as well.

2.  Defeat the 10 plastic rivets.  Believe it or not, these rivets
aren't all that critical to holding the unit together, so you can be
as careful or as reckless as you want (I prefer reckless, because I
hate plastic rivets).  A good way to carefully remove the rivet heads
is to use a flat head screwdriver that is the same width as the
recessed rivet hole (4mm?) and "drill" the head away by hand with the
screwdriver.  The head is about 2mm deep, so stop "drilling" there to
leave the keyboard material shoulder intact for easier reconnection
later.  There are 6 rivets near the number keys and four above the
screen.  These rivets above the screen perform more of a holding
function than the others, and you may want to consider using some
screws and small washers to replace them when you re-assemble.

3.  Separate the lower half from the upper half.  The upper half of
the calculator contains almost all of the components except for the
piezo "beeper" element, and there are no interconnecting wires between
halves.  The only obstacle is the snap-together "hooks" that David
Holmes refers to. These hooks are positioned near the [A], [F], [SIN],
[1/x], [ON], [+] and [.] keys (the one by the [.] key is a real
bugger!).  Refer to the cutaway diagram below for details.




Key overlay here ___
                    \     ____________
                     \   |            |
             ____________|    ______  |
                             |   _  | |  <--- Upper section.
                             |  | | | |
             ________________|  | | |_|
                             |  | |___
  Circuit board and other    |  |     |
  components (affixed to     | /      |  <--- Lower section.
  upper section)             |/__     |        Has a lip which
                             |   |    |        engages with metal
           Metal "hook" ---> | / |    |        "hook" from upper
                             |/  |    |        section.
                             |   |    |
             ________________|   |    |
                                 |    |


To separate the two sections, you will need to push the lower section
out and down around the hooks.  You can't do this from the outside
because the upper section hangs over the lower, so you have to go from
the inside.  Luckily, the six slots in the keyboard (used by the
separate user-overlays that fit over the original overlay) near the
[MTH], [ENTER], [blushift], [NXT], [backspace] and [-], come in handy
for this.  These slots are not exactly lined up with the hooks, but
are close enough.  You can insert something in these holes (I used a
jewelers screwdriver, flat head) at an angle that is mostly down and
somewhat out, to a depth of about 5mm, and come in contact with the
lower section.  Push the lower section out about 2mm (this will take a
bit of force), while wedging something in the outside gap to separate
and hold the sections apart while working on the other hook positions (
a wooden matchstick works).  I recommend starting with the [A] or [F]
positions first, working down whichever side you started with, then do
the other side, and leave the [.] position for later (there is no
helpful slot there).

4.  Remove the battery cover and the batteries.  The two battery
contacts which come through the case will need to go back through the
case when the sections separate.  The upper contact is hooked on a
plastic boss, and needs to be freed from it.  Just pop it off with
your finger or a screwdriver.

5.  Very carefully pull the two sections apart at the top (above the
screen).  If you have freed all the hooks, the case should sort of
hinge at the bottom edge.  This is due to the last hook (near the [.]
key).  Some careful twisting and working of the sections should free
this hook as well. You should now be able to completely separate the
two sections.  I recommend at this point that you take a pair of
pliers and flatten that last hook so that it will not hold next time.
It is really not needed anyway, as the other six hooks hold the unit
together just fine.


Now you can poke around and explore things.  Be careful what you
touch, I'm not sure how sensitive the insides are to static discharge
from your fingers, etc.  If you're interested in adding stuff, some
open real estate can be found in the areas between the battery
compartment and the card receivers, and in the cavities in the lower
section below the tin shielding on either side of the card ports (this
is where I put some jacks).  If you own a 48s, you may find a lot more
space.

If you want to disassemble the unit further, like removing the circuit
board from the upper section, you have a considerably tougher job on
your hands, and you're on your own.  Also, if you separate the screen
from it's circuit board, you will disturb the rubber conductors (there
are two) which provide electrical connection to the lcd rows and
columns (zebra strips).  Upon reassembly of the screen, you may find
that you have lost some rows or columns in the display (not permanent,
just a zebra strip alignment problem) and will have to keep
reassembling and perhaps cleaning until it comes out okay.  I haven't
done this to my hp (yet) but I have done it to other cheap calculators
and it wasn't fun.

As to questions about what exactly is inside, I can only guess.  David
Holmes had some observations, and there are apparently a lot of people
out there in netland that know a lot more about the insides already.


Reassembly-

Putting it back together is much easier.  You may need to clean up the
remains of the rivet heads so they will easily reinsert into their
holes.  Make sure the battery connections align with their respective
holes, and snap the unit together, applying pressure where the six (or
seven, if you left that one near the [.] key alone) hooks are.  You
will probably want to hold the case together at the top with one or
two of the rivets there.  If you can find a wood screw with a flat or
thin head, you can screw it into the body of the rivet and let the
head hold the upper section surface.  You may need a small washer for
this.  A machine screw will probably work as well, but will strip the
plastic easier and not hold as well.  I have only one screw holding
mine together and it works fine.

You will probably need to re-shape your tin overlay, as it probably
took a beating during removal.  I removed the sticky tape from mine,
but it's probably better not to (unless it really wont stick anymore).
Put wax paper over the tape and put the overlay face down on a hard
cover book.  Grab a hammer with a smooth and somewhat flat head, and
pound away.  DONT pound away on the part that surrounds the screen
(beveled part).  You can probably use your fingers and a little
massaging to fix that area.  With a little care you can end up with an
overlay that looks like new.  Press the overlay in place and hope it
sticks.  If not, a little rubber cement wouldn't hurt.


Have fun!

Paul Smith
v055qmd6@ubvms.cc.buffalo.edu
++++++++++++++++ end forwarded text ++++++++++++++++++

2) Connecting the RAM chips
---------------------------
You have two choices for your configuration:
(A) Replace internal RAM by 128K
    You need one 128K RAM chip.
(B) Replace internal RAM by 128K and simulate a chip card in port one by
one more
    128K chip.
    You need two 128K RAM chips, a 74HC00 with SMD case and a 1MOhm
resistor.

I already described configuration (A) in an earlier posting. So if you
just want to do that better use the old posting since there is a lot of
unneccessary stuff for you in this one.

It's not very useful to only add 128K as port memory because the HP48G (at
least with my ROM version K) can't merge 32K and 128K. And 32K user memory
and 128K port memory is something most people don't need.

You have to use static RAM chips organised 128K * 8. I don't know the
excact access time needed but 100ns works in my G.
PD431000A-70L (NEC) or HM628128 (HITACHI) for his HP48S, I found a 681000
working. Carl Raffa told me this is the chip that is in his GX so my
choice can't be wrong (only differnce: it's in an SMD case in the GX). I
think all chips with 128K * 8 have the same pin assignments (but I'm not
sure!). You should use low power chips (marked with a L) to extend your
battery live.
Since some people asked: I paid ca. $25 for one 128K*8 chip in a local
store. The mail order price in Germany is about $18.

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 48GX. Most pins are connected in the
G, too. 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. These are the pins.

PIN:   Signal:                    PIN:   Signal:
1      VCC (only if HP48 is ON)   21     Card enable (active HIGH)
2      RAM Battery measure        22     Output enable (active low)
3      Addr. 0                    23     Data 1
4      Addr. 1                    24     Data 2
5      Addr. 2                    25     Data 3
6      Addr. 3                    26     Data 4
7      Addr. 4                    27     Data 5
8      Addr. 5                    28     Data 6
9      Addr. 6                    29     Data 7
10     Addr. 7                    30     Data 8
11     Addr. 8                    31     ??
12     Addr. 9                    32     ??
13     Addr. 10                   33     ??
14     Addr. 11                   34     ??
15     Addr. 12                   35     ??
16     Addr. 13                   36     ??
17     Addr. 14                   37     Write prot. in (act low)
18     Addr. 15                   38     Card present in (act high)
19     Addr. 16                   39     Card type (low for RAM)
20     Write enable (active low)  40     Ground

Notes:
1. In the G(X) the pins 31 to 36 aren't NC like they are in the S(X) but I
don't know their meaning. They are connected to an empty chip place on the
board. I assume they are needed to address the larger RAM cards (up to
4MB) and provide additional card enable signals. Carl Raffa told me there
is a HC174 in the GX but if you don't plan to connect a RAM expansion box
to your 48 or have really small RAM chips you don't need it. The G with
ROM version K will not be able to use that at all since the command PINIT
is missing in that release (thanks to James H. Cloos, Jr. for that info).

2. Pin 22 leads to a second empty chip place (on the right side above the
battery case). Thanks to Carl Raffa I now know that this place has to be
filled with an 74HC00 (costs ca. 50 cents) to decode the OE (output
enable) pin for simulating a RAM card in the 48G.

So according to Note 2 it's your first task to solder in the 74HC00 in
that empty place if you choose my configuration (B). The marked pin 1 has
to point _away_ from the battery case (validate that pin 7 is connected to
ground, then you're right). The RAM and ROM chips point to the battery
case!


This is the pin layout of the 128K RAM chips:
                 __                  __      __
     Vcc A15 CE2 WE  A13 A8  A9  A11 OE  A10 CE1 D8  D7  D6  D5  D4
  ____I___I___I___I___I___I___I___I___I___I___I___I___I___I___I___I____
  I  32  31  30  29  28  27  26  25  24  23  22  21  20  19  18  17   I
  I                                                                   I
   \                                                                  I
    I                                                                 I
   /                                                                  I
  I   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16   I
  I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I
     NC  A16 A14 A12 A7  A6  A5  A4  A3  A2  A1  A0  D1  D2  D3  Gnd

And this is for the built in 32K chip. In my G it's labeled M5M5256BFP and
is located just above the battery case (the left one of the two chips
located there before you inserted the HC00).
                 __                  __      __
             VCC WE  A13 A8  A9  A11 OE  A10 CE1 D8  D7  D6  D5  D4
           ___I___I___I___I___I___I___I___I___I___I___I___I___I___I____
           I  28  27  26  25  24  23  22  21  20  19  18  17  16  15  I
           I                                                          I
            \                                                         I
             I                                                        I
            /                                                         I
           I   1   2   3   4   5   6   7   8   9  10  11  12  13  14  I
           I- -I---I---I---I---I---I---I---I---I---I---I---I---I---I--I
              A14 A12 A7  A6  A5  A4  A3  A2  A1  A0  D1  D2  D3  Gnd

As you can see the layout is nearly the same. Not for the pin numbers but
for the pin places if the chips are right assigned.

I would recommend to glue the RAM just in the middle of the circuit board
with it's upper side down and to bend all pins to the middle. If you want
to get configuration B you can solder the first RAM chip just to the
second one. Just leave the following pins unconnected: 22 (CE1), 24 (OE)
and 30 (CE2). So you end up with a RAM sandwich.


These are the connections:

    128K    128K     card slot      32K chip
    chip1   chip2    connector      (on board)

Pin  1 ----  1          ( NC )
     2 ----  2 ------- 19
     3 ----  3 ------- 17
     4 ----  4 ------- 15
     5 ----  5 ------- 10
     6 ----  6 -------- 9
     7 ----  7 -------- 8
     8 ----  8 -------- 7
     9 ----  9 -------- 6
    10 ---- 10 -------- 5
    11 ---- 11-------- 4
    12 ---- 12 -------- 3
    13 ---- 13 ------- 23
    14 ---- 14 ------- 24
    15 ---- 15 ------- 25
    16 ---- 16 ------- 40
    17 ---- 17 ------- 26
    18 ---- 18 ------- 27
    19 ---- 19 ------- 28
    20 ---- 20 ------- 29
    21 ---- 21 ------- 30
    22 ----------------------------- 20    see Note 1
            22 ------- 40                  see Note 4
    23 ---- 23 ------- 13
    24 ----------------------------- 22
            24 ------- 22                  see Note 4
    25 ---- 25 ------- 14
    26 ---- 26 ------- 12
    27 ---- 27 ------- 11
    28 ---- 28 ------- 16
    29 ---- 29 ------- 20
    30 ----------------------------- 28
            30 ------- 21
    31 ---- 31 ------- 18
    32 -----32 -------------------+- 28
                                  I
                                 +++
                                 I I
                         1 M Ohm I I
                                 +++
                                  I
                         2 -------+        (simulate card battery since
                                            the 48 measures this)

                        1 ----+
                 |
          37 ----+         (set write protect to VCC => not
                 |          write protected)
             38 ----+         (set "card present")

                       40 ----+
                 |
          39 ----+         (set card type to "RAM")

Note 1: Pin 20 of the 32K RAM has to be connected to VCC to disable that
        chip. So you have to unsolder (what is the right word for that?)
        it. Use a small needle to bend that pin up a little while heating
        it. Connect it to pin 28 of the same chip. Now pin 22 of the 128K
        RAM chip 1 can be connected to the place pin 20 of the 32K was
        connected before. I hope someone can understand that
  description. ;-)

Note 2: Output enable (pin 24) of chip 1 is connected to the corresponding
        pin of the 32K RAM.

Note 3: Pin 1 of the card slot connector is switched by the power of the
        HP so you can't use it to supply the RAM chips (the RAM cards that
        normally are connected there have their own backup batteries). To
        keep the contents of the RAM chips pin 32 (VCC) has to be
        connected to pin 28 of the internal RAM that is always connected
        to the battery.

Note 4: Chip 2 (the optional chip for simulating the RAM card in slot 1)
        is connected to some pins of the card connector where chip 1 is
        connected to the internal RAM chip. The pins 2,21,37,38 and 39 of
        the card connector are devided for the two card slots. For all
        those pins you have to use only the part of that pins that
        has more distance from the battery case. This is the part for card
         slot 1.
  If you want to try to expand your 48 even more you can use a third
        chip and connect it like the second one except for that pins (you
        guess: you have to connect them to the part of the pins pointing
        to the battery case. Yes, you're right). The second part of the
        pins 2, 37, 38 and 39 has to be connected like the first part. I
        never tried to use port 2 so it's up to you to verify this! I'll
        try to connect the disabled 32K chip there in some days.

General note: Thijs Kaper (thijs@stack.urc.tue.nl) gave the recommendation
              that you can swap the address lines if you want. So you can
              swap all from A0 to A16 as you want to keep the wires short.
              For example swap A0 and A3. You can do the same with the
              data lines. The HP won't mind if D2 is connected to D7 at
              the RAM chip if all address lines end up at address pins and
              all data lines end up at data pins. I didn't do it but if it
              helps you...

I think this all has to sound confusing. But take some time to understand
it. If you know a little about computer logic and addressing it's really
easy.


You have to cut some of the shielding metal in the case of the HP to get
space for the new chip(s). The metal at the battery case has to be
connected to the rest of it (for the beep and the reset button to work).
Use some cable to reconnect it if necessary.

Be sure to isolate everything. I glued some paper to the back side of the
RAM chips to keep it away from the shielding. A little sheet of paper
between pin 20 of the 32K and it's former connection keeps these pins
apart.

3) Closing the HP
-----------------
This is covered in the text by Paul Smith I included above. Pay attention
to the "plus" battery connector: it has to snap back into its place or you
will get a nice shortcut!

4) Testing
----------
Turn on the HP. If it asks "revover memory" answer with no. If it doesn't
ask use ON-A-F to force it since it won't recognize the 128K otherwise.
Press MEMORY NXT SIZE and have a look at that nice number.
Use ON-D to enter test mode. Press EEX and wait for "IRAM OK    128K".
Press ON-C to leave test mode.

If you did configuration (B): either store something to port 1 or merge
port 1 to get a total of 256K user memory. If you don't merge port one
that memory will even survive a ON-A-F without memory recovering (like a
RAM card would, too). So it's nice to use it as backup memory if you do
sysrpl or assembler programming. Maybe you can even insert a switch to
write protect it.

The time you have to exchange batteries will now be less than before since
there is only a electrolyte condensator (is this the right name?) that
supplies the RAM when the batteries are out. I didn't test the maximum
time but it's enough time to exchange batteries. My G has to supply 3 RAM
chips now since the 32K is disabled but it's still powered.

Please be aware of the ROM version L bug (that should be in the K, too)
about loosing memory when the clock is in the display. Read about that in
the FAQ!

My next idea is to reenable the 32K as port 2 memory. I will try it in
some days. If you're daring you can try that if you should decide to
expand your G before. This way that chip isn't useless.

Maybe I should think about adding a hard disk after that... no, just
kidding.


IMPORTANT:
==========
I don't know if this works for anyone except me. I don't give any warranty
on this text. It's your risk. You will at least loose your warranty, maybe
you loose your HP. I expanded my HP on 05/28/94 to 128K and today
(06/07/94) to 256K. If you want to wait for a long time test feel free to
mail me in a month or so. Wait at least some days until some people have
read this text and thought about it. Try to understand the reason for the
way it' wired and validate it before you try to expand yout G.

I would be happy if I get some mail about this posting. The mail I got the
last time was really nice and I enjoyed it.

Greetings,  Thomas


Thomas Otten      otti@megatel.de (NeXTmail welcome)
                  megatel GmbH * Wiener Str. 3 * 28359 Bremen * Germany
                  Voice: ++49-421-22095-0     FAX:++49-421-22095-16


