The Museum of HP Calculators

HP Forum Archive 13

[ Return to Index | Top of Index ]

what does the + give a 48g?
Message #1 Posted by Eric Lundgren on 6 Oct 2003, 10:30 p.m.

What distinguished the G, G+, and GX in the 48 series? Is the SX still a contender if you don't require too much memory?

My guess is that the G has no (8, 16k ?)memory...and G+/32k GX/128k?

eric

      
Re: + = 128K
Message #2 Posted by Paul Brogger on 6 Oct 2003, 11:39 p.m.,
in response to message #1 by Eric Lundgren

I think it goes (er, went) like this:

48G: 32K

48G+: 128K

48GX: 512K + expansion port(s)

The Museum covers the 48S/SX -- they apparently each had 32K, and there too the "X" was expandable.

I just looked at that for the first time -- the S/SX colors are much nicer than those of the G models. I suspect the G's are faster, and probably have other advantages too. But it may be that, for your use (as it probably would be for mine), that the more readable keyboard is more important than whatever advantages the G's offer.

(I think with the final 32SII color scheme, and the announcement of the 33S, we're seeing just how important some of those "mere appearance" decisions can be!)

            
Re: + = 128K
Message #3 Posted by Jonathan Purvis (New Zealand) on 7 Oct 2003, 12:01 a.m.,
in response to message #2 by Paul Brogger

The 48GX had only 128KB of RAM builtin, not the 512KB Paul claimed. Initially only the 48G and 48GX were produced, the 48G+ came later when calculator production was shifted to control of the ACO.

                  
Re: + = 128K
Message #4 Posted by eric lundgren on 7 Oct 2003, 2:22 p.m.,
in response to message #3 by Jonathan Purvis (New Zealand)

So just to confirm, and I'm assuming if you are right that Paul meant 512k including the cards? Well, I really just need a cheapie-who-cares-if-its-stolen back up rpn calc. And it turned out being the G. I'm hoping that its not muuuuch slower than a G+.

Also, Paul, yes the colors are much more pleasant on the SX!

eric

                        
Re: + = 128K
Message #5 Posted by Paul Brogger on 7 Oct 2003, 4:17 p.m.,
in response to message #4 by eric lundgren

I believe that all 48G models are created equal with respect to Speed. (Someone will certainly correct me if that's not the case!)

No, the 512K was something I thought I remembered -- if it's 128K, then that's all you get without adding cards. I understand the 48s are cabable of addressing something like 1 or 2 Mb (or more?) of memory, if it is hooked up correctly.

                              
Re: + = 128K (long)
Message #6 Posted by James M. Prange on 8 Oct 2003, 6:00 a.m.,
in response to message #5 by Paul Brogger

I'm not an expert, so I hope that someone will correct any errors and clarify things that I don't make clear. This has gotten to be a lot longer than I had expected, but now that I've tried to explain it, I've noticed that it doesn't seem quite as simple as I thought it was.

First off, as to how much memory the 48 series calculators can address: The Saturn processor uses 20 bit addresses, thus can recognize 1048576 (1 Meg of) distinct addresses. But addressing is by the nibble (4 bits or a half byte), so that's 1 "Meganibble" (is that a word?), so 512 KiloBytes. 256KB is used for ROM, leaving 256KB for RAM. Well, 256KB of RAM that can be addressed "easily", that is.

Perhaps it's too bad they didn't develop a Saturn+ with larger addresses when they developed the 48SX or the 48GX, but that would have been a major project, and developing a new RPL with larger addresses would be another major project, so I suppose that it wouldn't have been feasible. When they developed the Saturn, who would've guessed at any desire for more addresses in a hand-held calculator!?

I'll refer to built-in RAM together with any merged RAM from expansion cards as "system RAM", which is used for storing global variables, the stack, and "working memory". Note that the operating system reserves some RAM for its own use, so the amount reported as available by the MEM command will be somewhat lower, even immediately after clearing the memory.

"Ports" are used for libraries and "back-up objects", that is, objects that can't be modified (at least not while they're stored in ports); although they can, of course, be stored or purged. "Port 0" comes out of the same pool of memory as the system RAM, sort of a "virtual port". All other ports are on expansion cards. When a card is "free", it's a port (or ports, in the case of the 48GX); when it's "merged", its memory is pooled with system RAM/port 0. Ports (other than port 0) are restricted to 128KB each.

The 48SX has 32KB of RAM built-in. Up to two RAM cards of either 32KB or 128KB each can be added, and each can be either free or merged. That means that 288KB can be used as system RAM! The 48SX manages this by "covering" a portion of ROM with RAM as needed; I think of it as bank switching. The card in slot 1 is port 1 if free, or system RAM/port 0 if merged. The card in slot 2 is port 2 if free, or system RAM/port 0 if merged.

ROM cards can be added instead of RAM cards. ROM cards can never be merged; they're forever free. RAM cards can (if "free") be mechanically switched to write-protected, in which case they effectively become ROM cards. Write-protecting a merged card is a bad thing to do.

The "low-cost" follow-up to the 48SX is the 48S. Basically, it's the same except without the slots for the expansion cards, and of course, the price.

One company, TDS, marketed 256KB and 512KB cards for the 48SX; these are multi-bank cards. The general idea is that instead of using 2 or 4 128KB cards and physically switching them, you use 2 or 4 128KB banks on a single card, and use software to switch them. But the requirements for switching cards (except turning the calculator off and on) still apply when switching banks. A special library that came with the card allows the user to switch which bank is in use. The card can be merged, but to do a bank-switch, it has to be free. A bank-switch forces a warmstart so that the operating system can find out what's in the bank. Also note that the bank in use (if free) has the port number of whichever slot it's in. So while these cards do offer additional storage space, using it isn't all that easy.

When HP released the 48GX, it looked to me as if they borrowed an idea from TDS, but instead of the user having to make sure that the card is "free" and telling a library to switch to a different bank, the 48GX doesn't allow a card in slot 2 to be merged in the first place, treats each bank of a multi-bank card in slot 2 as a separate port, and doesn't need a warmstart every time that it looks at a different bank.

The 48GX has 128KB of RAM built in. Slot 1 can accept either a 32KB or 128KB card which can be either free or merged, and behaves the same as slot 1 in the 48SX. Slot 2 can take these and larger cards, but can't be merged, so the 48GX can have, at most, 256KB of system RAM, a bit less than is possible on the 48SX. The 48GX can have up to 32 ports: port 0 (from the 128KB built-in), port 1 (up to 128KB in slot 1), and ports 2 through 31 (128KB each in slot 2). So it *can* have up to 4MB of RAM, just not all on one card. The maximum of 30 ports of 128KB each comes out to 3840KB available in slot 2.

That slot 2 can have at most 30 ports would seem to be the reason why the Klotz 4MB cards have a mechanical switch to select between 2 pairs of 128KB banks to be used as ports 30 and 31.

Whether this restriction to 30 ports on the card in slot 2 was an oversight or intentional on HP's part, I don't know. As far as I know, 1MB was the largest card that HP ever marketed for the 48GX, so being able to access only 3840KB of a 4096KB card was never a problem with "Genuine HP" cards.

HP marketed 32KB, 128KB, and 1MB cards. Various other companies have marketed 128KB, 256KB, 512KB, 1MB, 2MB, and 4MB cards.

The 48G is the "low-cost" version released together with the 48GX. Like the 48SX and 48S, it came with 32KB of RAM built-in, and like the 48S, doesn't have any slots for expansion cards.

The 48G+ was, I believe, ACO's very first "new product". It came with 128KB RAM built in, so the "+" means 4 times as much RAM as the 48G, as much as the 48GX. But like the 48G, it doesn't have any slots for expansion cards. I'd guess that the only development required for it was to use the RAM chip from the 48GX, and changing the model number.

As for speed, the 48G series processor runs about twice as fast as the 48S series processor.

Note that having more memory available for the stack generally means that garbage collections won't be needed as often, but when a garbage collection is needed, it will take longer, which many perceive as a slowdown and find objectionable. Similarly, when you turn the calculator on, it checks on "what's out there" so having more memory, and potentially more libraries, probably slows that down too. So "more is better" isn't necessarily true.

Regards,
James

                                    
Re: + = 128K (long)
Message #7 Posted by Jonathan Busby on 10 Oct 2003, 7:16 p.m.,
in response to message #6 by James M. Prange

You said :

"The 48GX can have up to 32 ports: port 0 (from the 128KB built-in), port 1 (up to 128KB in slot 1), and ports 2 through 31 (128KB each in slot 2)."

Actually, the hardware supports up to 34 ports : port 0, port 1, and ports 2 - 33. But there is a bug in the OS that prevents port 33 from being used correctly.

"So it *can* have up to 4MB of RAM, just not all on one card."

Well, as I indicated above, the hardware has the *potential* to access 4MB on one card, but is prevented from doing so by a defect in the software.

"The maximum of 30 ports of 128KB each comes out to 3840KB available in slot 2.

That slot 2 can have at most 30 ports would seem to be the reason why the Klotz 4MB cards have a mechanical switch to select between 2 pairs of 128KB banks to be used as ports 30 and 31."

Actually, that should be 31 ports or 3968KB for the Klotz card. ( see the Klotz 4MB card manual at http://www.uuhome.de/oklotz/hp4096ae.pdf ) Oh ye cursed inclusive subtraction off-by-one error, how I loathe thee. ;)

"Whether this restriction to 30 ports on the card in slot 2 was an oversight or intentional on HP's part, I don't know."

The bug that makes port 33 unusable is so hilariously trivial it's sad. Specifically, there is a typo on *one* line in *one* file that is the culprit. Even worse, it's just a constant that is off by 5 nibbles in said line. The file is rammap.a and the line is :

=INTRAM EQU (PORT2EOS)+155 a,D1[4321]*,C[15,..,5]* (16)

The "155" constant should be "160" . That's it. Without this, the PORT33EOS entry (see my posts in the thread "invalid card data at my hp48g for a detailed explanation of the PORTnEOS table) overlaps with the space used by the interrupt to save the contents of the registers. The result is that at best you get an "Invalid Card Data" error every time you turn the calc on, try to access the port, or perform a warm/cold-start. At worst, you could corrupt the contents of the port by attempting to store something to it. (this is unlikely though) For the original source of this information, see Jean-Yves Avenard's post on this subject : http://groups.google.com/groups?selm=357e5e4f.0%40isoit370.bbn.hp.com

Regards,

Jonathan

-----------------------------------------------------------------

Jonathan Busby - jdb@SNMAPOhouston.rr.com

Remove the random permutation of "NOSPAM" before replying.

                                          
Re: + = 128K (long)
Message #8 Posted by James M. Prange on 10 Oct 2003, 8:32 p.m.,
in response to message #7 by Jonathan Busby

Hi Jonathon,

Thanks for the corrections.

Quote:
Actually, the hardware supports up to 34 ports : port 0, port 1, and ports 2 - 33. But there is a bug in the OS that prevents port 33 from being used correctly.
Ok, then the 48GX can use up to 33 ports, except that I don't know of any commercially available card that makes 31 ports on the card available at any one time. Whether it's hardware or firmware that prevents port 33 from being used properly makes little difference to the user.

I wonder whether a work-around to the firmware error would be possible with an external library.

Quote:
Actually, that should be 31 ports or 3968KB for the Klotz card. ( see the Klotz 4MB card manual at http://www.uuhome.de/oklotz/hp4096ae.pdf ) Oh ye cursed inclusive subtraction off-by-one error, how I loathe thee. ;)
Having made that particular error all too often, I loathe it too. But have another look at the Klotz documentation. Because the card switches two *pairs* of 128KB banks, it only has 30 ports (3840KB) available at any one time. Well, at least that's what the documentation says; I don't actually have the card to experiment with.

I can't help wondering why it switches between two pairs of 128KB banks instead of two 128KB banks, but I suppose that there's a hardware reason.

Quote:
Specifically, there is a typo on *one* line in *one* file that is the culprit.
Quote:
The "155" constant should be "160" .
Well, I'd call that a "mistake", not a "typo". You'd think that HP could've made a 4MB card for testing purpose, but I guess they were confident that the code was written correctly....

Regards,
James

                                                
Re: + = 128K (long)
Message #9 Posted by Jonathan Busby on 11 Oct 2003, 11:41 a.m.,
in response to message #8 by James M. Prange

You said :

"I wonder whether a work-around to the firmware error would be possible with an external library"

The possibility exists, but you would need at least a 32K card in port 1 in order to override the interrupt handler.

"Having made that particular error all too often, I loathe it too. But have another look at the Klotz documentation. Because the card switches two *pairs* of 128KB banks, it only has 30 ports (3840KB) available at any one time. Well, at least that's what the documentation says; I don't actually have the card to experiment with."

Yes, I read that too, but it seems my brain decided to filter it out. In fact, the supposed "error" I pointed out in your post makes no sense. I don't know where I got a 32 where you only mentioned a 30 and a 31. Hmmmm... I feel like an idiot. :) The Jonathan "Reality Filter" syndrome strikes again.

"I can't help wondering why it switches between two pairs of 128KB banks instead of two 128KB banks, but I suppose that there's a hardware reason."

I don't know of any hardware reason. Multiplexing port 32 between physical banks 30 and 31 takes the same exact logic as multiplexing ports 30-31 between the physical bank pairs 28-29 and 30-31. Specifically, you need a 4-bit equality comparator and a 2-1 multiplexer, except in the case of multiplexing a pair of ports the output of the multiplexer would select the value of bit 1 of the bank address instead of bit 0 and one of the comparator's inputs would be 14 (decimal) instead of 15. Very simple. Don't know why it was done that way.

Regards,

Jonathan

-----------------------------------------------------------------

Jonathan Busby - jdb@SNMAPOhouston.rr.com

Edited: 12 Oct 2003, 6:34 p.m.

            
Re: + = 128K
Message #10 Posted by Andy on 8 Oct 2003, 6:57 p.m.,
in response to message #2 by Paul Brogger

The 48GX only has 128KB ram...

                  
... but...
Message #11 Posted by Andrés C. Rodríguez (Argentina) on 10 Oct 2003, 5:22 p.m.,
in response to message #10 by Andy

the 48 GX accepts expansion cards (memory or else) in two slots, while the 48 G (32K) or the 48 G+ (128K) are not expandable.


[ Return to Index | Top of Index ]

Go back to the main exhibit hall