From: etd226@mehp6.epfl.ch (Etudiant salle CM103) Subject: Last version of Upgrade for SX Date: Tue, 20 Jun 95 12:26:36 METDST Here's the last version of my article. I've done small changes... Regards, Stephane PS: I'll lost my account at the end of the week, so if you want to tell me something, you can send it at my brother's account: grund@cmu.unige.ch ----------------------------------------------------------------------------- Ram upgrade for HP48SX - Compatibility with ram card (3nd version) ---------------------------------------------------- (19.06.1995) **************************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. Now that I know a little bit about the hardware, I'm going to build a real RamCard expansion. There seems to be lot's (well, two) of german people who have done home-made Ram Card. I'm in touch with them, so we should achieve a post in some times. (we have exams first...) **************************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 | Video Processor Video hp48SX | XX XXXXX XX | chip chip (Screen facing | XXXXX | down) | | | | | | | ############# | Expansion connectors | ############# | (port2 upside) | ############# | | !!!!!!!!!!!!! | small wires from port1&2 | | | XX XXX CC | RAM32k ROM(256k?) | C XX XXX CC | Capacity | C XX | Coil (?) |---------------| | | | | 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 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. __ __ __ 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. (pictures taken from the file upgrade.txt) 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 capacity (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. 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 # ?? SX: Video Signals 13 Addr. 10 33 # ?? 14 Addr. 11 34 # ?? GX port1: Video Signals 15 Addr. 12 35 # ?? port2: Bank Switching 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 * : pin divided for the two port # : pin divided in the G(X) only 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 capa) 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 capacity on the right. Look at what is written on the body of the capa 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 capa. 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! *[Version 3 of this text: It seems that 1M should work, because of the *CMOS technolgy used in the HP. I haven't had the time to check it out.] 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 grund@cmu.unige.ch Lausanne (that's my brother's account...) History of my posted articles: Version 1: It was before trying to do the upgrade. Version 2: After the upgrade. More details, some corretions. (22 of may 95) Version 3: Some small corrections, note about the 10k resistors (seems to be possible to use 1M res.) (19 of june 1995)