HP Forums

Full Version: 48G Re-creation Project (fantasy)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4
Hi everyone,

I noticed there was a thread about emu48 now on Android.

Out of all the HP RPN calculators, somehow (I don't really know why) I still much prefer the 48G series, even though I have a bunch, including 42S, DM42, etc. (For a small handy one I like the 15C).

Since there isn't a modern reincarnation of the 48 series, the aging hardware of vintage models means eventually all the extant units will be defunct, at minimum the keyboards would stop working because the conductive inks on the contact sheets will flake off.

Trying to repair an old 48 is a headache. Taking them apart is not easy, but can be done. Reassembling them is even harder, especially aligning the LCD zebra strips.

Anyway, basically, I want to recreate the thing using modern technology. Unless Swiss Micros makes a 48 equivalent, but even if they do this little project may have intrinsic value.

I just want to start by asking opinions about this. Has anyone attempted it before?

Can we reproduce the computation using modern low power micro-controllers?

Is there source code for porting? (I am thinking maybe porting to Python).

There are numerous areas to consider. I'm just brainstorming right now. It sounds like a crazy and maybe even stupid thing to attempt but, heck, why not.

The case can be 3D printed. I am wondering about the keypad and the key contact method. And the type of plastic for reproducing the tactile feel that we like.

Maybe another way is to migrate usable components from a donor unit, onto a new PCB and chassis, with new CPU (use a faster ARM/Saturn emulator? Or even how about a modern FPGA "virtual" Saturn CPU at faster clock rate?)

Thoughts?
I've mentioned in a couple other threads that I want to do the same with a 48s(x).

Source is https://sourceforge.net/projects/x48.berlios/files/
I know it will compile on ARM with minimal changes as I got it to run on a Raspberry Pi running Linux.

There is another emulator series emu4x but IIRC its developed on windows so there might be Microsoft specific code that it hard to port, I've ran into that issue before.

There are plenty of arm microcontrollers out there such as the newer pic or nRF. I learned PIC back in the 90's but with Parallax's 8051 like code. I've done some 6502 assembly, 68k assembly and more recently have started messing with C for PIC and Arduino. Places like adafruit have some ARM dev boards that they have ported the arduino code to.

keyboard/keypad is easy enough. LCD might be a bit harder but there is a recent thread on eevblog about getting those custom made.

I think its perfectly doable.

I started copying the source into mplab x for a https://www.microchip.com/wwwproducts/en/ATSAMC21E18A but I think one of the adafruit feathers might be easier to start with.
My dream is about a modern version of HP48G with :
- OLED display
- FPGA CPU to hardware simulate SATURN
- Much more memory space
- 3D printed case, with LiPo batteries etc.

Just like those guys did with Pocket at Analogue :
https://www.analogue.co/pocket/

Can't be more happier about this project even if it's still a brainstorming.. Keep up the great ideas!
Interesting. Let me take a look later.

Oh, I forgot to mention, maybe it is obvious to fellow RPN geeks/enthusiasts but I intend to share everything public and open source, PCB designs, 3D models, whatever, so that we can all re-create this ourselves in the future when (not if) there are no more working vintage units of these calculators in the universe.

On a related tangent (LOL), this is an awesome video, original video training by HP on the 48 series (keypad layout and UI seem a bit different from my 48G. Maybe this is the S series?)

https://youtu.be/OTPruRVV-e8
(10-24-2019 09:59 PM)sunhp Wrote: [ -> ]My dream is about a modern version of HP48G with :
- OLED display
- FPGA CPU to hardware simulate SATURN
- Much more memory space
- 3D printed case, with LiPo batteries etc.

Just like those guys did with Pocket at Analogue :
https://www.analogue.co/pocket/

Can't be more happier about this project even if it's still a brainstorming.. Keep up the great ideas!

OLED sounds interesting but will use up more battery power. I want to keep it with AA or AAA batteries. But is an option too. The programming will have to accommodate higher resolution and multi-colors (imagine plotting) to justify the OLED.

Backlit e-ink and keypad is also another idea I had, but that probably goes to the NICE TO HAVE list. It would be cool for the keypad to physically light up for different functions when the shift keys are pressed (like some of the emulated smartphone apps).
Is there any recommended web space to upload files and just keep everything related in the same place?

Github? Or any other better one?
Here is another 48G emulator source code written in C :
https://www.hpcalc.org/details/5354

It works pretty well , render code is nicely separated from the emulator code and can be dropped pretty easily.
(10-24-2019 10:07 PM)sunhp Wrote: [ -> ]Here is another 48G emulator source code written in C :
https://www.hpcalc.org/details/5354

It works pretty well , render code is nicely separated from the emulator code and can be dropped pretty easily.

Wow super awesome!
Hello:

I agree with your sentiments - I too am nursing some old 48G's along.

Not sure I can help; haven't looked at the code yet.

I wonder if it could be ported to the Numworks hardware (keyboard isn't proportioned correctly, but a nice package)

Or - a Raspberry pi and readily available keyboard and display components.

or - perhaps using an existing HP48 keyboard and case - replacing the display (with a nice backlighted one!?)

just some random thoughts!

TomC

(10-24-2019 09:23 PM)lemontea Wrote: [ -> ]Hi everyone,

I noticed there was a thread about emu48 now on Android.

Out of all the HP RPN calculators, somehow (I don't really know why) I still much prefer the 48G series, even though I have a bunch, including 42S, DM42, etc. (For a small handy one I like the 15C).

Since there isn't a modern reincarnation of the 48 series, the aging hardware of vintage models means eventually all the extant units will be defunct, at minimum the keyboards would stop working because the conductive inks on the contact sheets will flake off.

Trying to repair an old 48 is a headache. Taking them apart is not easy, but can be done. Reassembling them is even harder, especially aligning the LCD zebra strips.

Anyway, basically, I want to recreate the thing using modern technology. Unless Swiss Micros makes a 48 equivalent, but even if they do this little project may have intrinsic value.

I just want to start by asking opinions about this. Has anyone attempted it before?

Can we reproduce the computation using modern low power micro-controllers?

Is there source code for porting? (I am thinking maybe porting to Python).

There are numerous areas to consider. I'm just brainstorming right now. It sounds like a crazy and maybe even stupid thing to attempt but, heck, why not.

The case can be 3D printed. I am wondering about the keypad and the key contact method. And the type of plastic for reproducing the tactile feel that we like.

Maybe another way is to migrate usable components from a donor unit, onto a new PCB and chassis, with new CPU (use a faster ARM/Saturn emulator? Or even how about a modern FPGA "virtual" Saturn CPU at faster clock rate?)

Thoughts?
Love the Very interesting ideas !! ;-)
(10-25-2019 09:18 PM)TomC Wrote: [ -> ]Hello:

I agree with your sentiments - I too am nursing some old 48G's along.

Not sure I can help; haven't looked at the code yet.

I wonder if it could be ported to the Numworks hardware (keyboard isn't proportioned correctly, but a nice package)

Or - a Raspberry pi and readily available keyboard and display components.


TomC

I know x48 will run on a Pi because I have ran it. But you have to wait for the Linux bootup, while not bad is still slower than just turning on a calculator.
So I think a first step is getting it to run either bare metal on a Pi or another ARM based micro without an OS first, then you can start on a keyboard and display.

Ahh, here it is on a Pi with the official Pi display
[Image: IMG-20170922-2242131.jpg]
Yes that is the problem. The Raspberry Pi is a small computer, so it has to boot up, etc.

This recreated 48 ought to function like a calculator. Instant on, instant off.

It ought to function like an HP 48 (haha).

The Pi can be used for proof of concept. Maybe use the GPIO pins to test things out for the actual implementation. We can test Python code, etc. or whatever it is that would run on the actual target CPU.

I am thinking this project should take on two forks, two projects really.

Project 1: 48 Resurrection
Project 2: 48 Recreation (re-creation)

Project 1 should focus on resurrecting dying/dead 48s. A lot has been going on here already over the years, but I haven't come across any practical solution for fabricating a new keyboard mechanism, when the connections aren't working anymore. Last night I was mulling over how to laser print a new contact sheet and somehow sprinkle conductive particles onto the laser toner, then heat it up so the particles stick to the toner. And then I fell asleep haha. Project 1, resurrection, would use as much of the original components as possible, and ideally not take parts from vintage donor machines, which reduces instead of maintains the working population of 48s.

Project 2 would be totally recreating a physical handheld 48 using zero vintage components.

Any suggestions for codenames for these two projects? :-D
Thats why I said the first step is a Pi which is already done.
Second step is an arm micro without an os, be it bare metal pi or PIC or Atmel or Arduino.
Thin flexible pcb like the keyboard is already available from pcb houses.
My 2 cents here:

Your definition of the project has me confused. On one hand you are talking about "recreating" on modern technology, then you jumped directly to Saturn emulation, but you want to recreate the computations in Python. First you need to define if you want "recreation" or "emulation". Emulation means you use HPs original ROM and you get full compatibility with the entire hpcalc.org repository. This is great... but it also means you are stuck with Saturn memory limits, low screen resolution, black and white... in other words, you can't add anything new.
The other option is recreate a similar interface, similar language from scratch, that can run in modern hardware AND take advantage of all other goodies that the new hardware will offer. You'll lose the full compatibility, even if it looks the same, code from hpcalc.org won't work without the Saturn emulation layer.
The good news for you is this other option already exists and it's called newRPL. It's open source, it will run baremetal on any ARM hardware that has an MMU without much effort. But... it won't be an HP48, it's a newRPL machine. It's different, modern and most 48 fans will feel at home with its interface, but it may not meet your goal of recreating an HP48.

As far as hardware, a Raspberry Pi is a bad choice for baremetal coding. Its Broadcom CPU has a weird way to boot, and needs proprietary drivers, which means you are stuck with Linux, can't go baremetal. It's a great board for people that code on top of Linux, though.
(10-26-2019 07:45 PM)Claudio L. Wrote: [ -> ]Your definition of the project has me confused. On one hand you are talking about "recreating" on modern technology, then you jumped directly to Saturn emulation, but you want to recreate the computations in Python. First you need to define if you want "recreation" or "emulation". Emulation means you use HPs original ROM and you get full compatibility with the entire hpcalc.org repository. This is great... but it also means you are stuck with Saturn memory limits, low screen resolution, black and white... in other words, you can't add anything new.

Indeed, for me it means a new 48G :

With modern hardware (OLED HD screen, USB3, great keyboard)
With emulated Saturn OR recreated SATURN over FPGA
Tribute to the greatest graphic calculator of all time.
100% Backward compatibility with the massive 48G's programs and games
Ultra fast
Grayscale compatible (instead of 50G's arm emulation)

(10-26-2019 07:45 PM)Claudio L. Wrote: [ -> ]The other option is recreate a similar interface, similar language from scratch, that can run in modern hardware AND take advantage of all other goodies that the new hardware will offer. You'll lose the full compatibility, even if it looks the same, code from hpcalc.org won't work without the Saturn emulation layer.
The good news for you is this other option already exists and it's called newRPL. It's open source, it will run baremetal on any ARM hardware that has an MMU without much effort. But... it won't be an HP48, it's a newRPL machine. It's different, modern and most 48 fans will feel at home with its interface, but it may not meet your goal of recreating an HP48.

For all this (bigger screen, colors, extended features etc) there is already HP prime doing the job.
(10-26-2019 10:11 PM)sunhp Wrote: [ -> ]Indeed, for me it means a new 48G :

With modern hardware (OLED HD screen, USB3, great keyboard)
With emulated Saturn OR recreated SATURN over FPGA
Tribute to the greatest graphic calculator of all time.
100% Backward compatibility with the massive 48G's programs and games
Ultra fast
Grayscale compatible (instead of 50G's arm emulation)

My point exactly... OLED HD to emulate 128 pixels wide black and white screen? It is confusing.
(10-27-2019 02:09 AM)Claudio L. Wrote: [ -> ]
(10-26-2019 10:11 PM)sunhp Wrote: [ -> ]Indeed, for me it means a new 48G :

With modern hardware (OLED HD screen, USB3, great keyboard)
With emulated Saturn OR recreated SATURN over FPGA
Tribute to the greatest graphic calculator of all time.
100% Backward compatibility with the massive 48G's programs and games
Ultra fast
Grayscale compatible (instead of 50G's arm emulation)

My point exactly... OLED HD to emulate 128 pixels wide black and white screen? It is confusing.

131.. ok 136 pixels wide ;-)
(10-27-2019 03:15 AM)sunhp Wrote: [ -> ]
(10-27-2019 02:09 AM)Claudio L. Wrote: [ -> ]My point exactly... OLED HD to emulate 128 pixels wide black and white screen? It is confusing.

131.. ok 136 pixels wide ;-)

Perhaps the 400x240 Sharp Memory LCD (model LS027B7DH01, as used on the SwissMicros DM42) could be used to simulate grayscale by dithering or half toning (since the memory LCD pixels are bi-level only). Each pixel of the HP 48 could be emulated by a 3x3 block of pixels on the 400x240 display. Four levels of grayscale could be emulated by setting 0, 3, 6 or 9 pixels of the 3x3 block.

Well maybe it had 5 levels, so maybe 0, 2, 4, 7, 9 pixels of a 3x3 block:

Code:
...  ...  .*.  ***  ***
...  .*.  .*.  .*.  ***
...  *..  *.*  ***  ***

Or something like that. (It helps if you squint.)
Interesting!
It seems pretty similar to the dm42's screen : https://www.swissmicros.com/dm42.php
(10-27-2019 11:04 AM)sunhp Wrote: [ -> ]Interesting!
It seems pretty similar to the dm42's screen : https://www.swissmicros.com/dm42.php

It is the DM42's screen! Smile
Pages: 1 2 3 4
Reference URL's