DM41X INFRARED COMPATIBILITY WITH HP-48GX

Discussion around the SwissMicros DM41X calculator
dlachieze
Posts: 613
Joined: Thu May 04, 2017 12:20 pm
Location: France

Re: DM41X INFRARED COMPATIBILITY WITH HP-48GX

Post by dlachieze »

I’ve done some tests with a 41CV + Blinky module, a DM41X, a 82240B IR printer and a 48SX with the HP 82210A HP 41CV Emulator Application Card.

The detailed transfer procedure between a 41 and a 48 is described in the 82210A manual.

Here are the results:
  • Both the 41CV and the DM41X print correctly programs on the 82240B with PRP.
  • The 48SX receives correctly programs from the 41CV (PRP on the 41CV, INPRT on the 48SX). X^2 is received as X^2 on the 48SX.
  • The 48SX doesn’t receive anything from the DM41X, neither in FAST nor in SLOW mode (PRP on the DM41X, INPRT on the 48SX). Tested with different Printer Line Delay values on the DM41X: 0.5, 1.0, 1.5, 1.8, 1.9.
I’ve noticed that execution of PRP is much faster on the DM41X in SLOW mode than on the 41CV for the short CIRCLE program from the 82210A manual.

Edit: here are the results on the 48SX screen: lines 4&3 shows the reception of a program sent from the 41CV, lines 2&1 the same program from the DM41X.

https://filedn.eu/lX19LfzD8fuXueOxsXAcJ ... _INPRT.jpg
DM42: 00425 - DM41X: β00066 - WP43: 00042
ecsfang
Posts: 51
Joined: Sun Jan 26, 2020 5:21 pm
Location: Lund/Sweden

Re: DM41X INFRARED COMPATIBILITY WITH HP-48GX

Post by ecsfang »

Strange, I got the impression that 3E0_RTN managed to send from the DM41X to the 48 ...

And I guess that dlachieze have shown that Blinky send character 94 (^) where the DM41X sends a graphic string instead.

Maybe I have to dig out my old 48GX-cable, update it to USB and test as well ...

Would also be easy as well to make a test-program on the real 41 to send a small program (nothing special with PRP compared to just PRA some text - except maybe timing) and include a graphic string instead of char 94 and see how the 48 reacts to that.

Well, let's try to find some time to do that ... 😉

Cheers,
Thomas
[35/45/55/65/67/97/21/25/29C/31E/33E/38E/41C|CV|CX/71B/10C/11C/15C/16C/32SII/42S/28S/48GX/49G/35S/DM41X(#00456)]
(7397)[134]
User avatar
3E0_RTN
Posts: 9
Joined: Mon Jan 23, 2023 9:28 pm
Location: FRANCE

Re: DM41X INFRARED COMPATIBILITY WITH HP-48GX

Post by 3E0_RTN »

I typed the following program on the HP-41CV :
01 LBL'TEST2
02 y^x
03 x^2
04 ENTER^
05 Σ+
06 1/x
07 x<>y
08 x=y?
09 x≤y?
10 x>y?
11 x=0?
12 R^
13 RTN

I send it to the HP-48.

41CV Emulator Card result :
https://drive.google.com/file/d/1EE1FGd ... share_link

INPTR result :
https://drive.google.com/file/d/1l4vDyE ... share_link

Thanks.
KR.
Celestial Navigation
HP-67 Nav. Pac / HP-41CV Nav. Pac / HP-48GX Celestial Nav. Pac / HP-34C / HP-15C / DM-15L / MK-52 BRP-2 / TI-58C Marine Nav.
User avatar
3E0_RTN
Posts: 9
Joined: Mon Jan 23, 2023 9:28 pm
Location: FRANCE

Re: DM41X INFRARED COMPATIBILITY WITH HP-48GX

Post by 3E0_RTN »

dlachieze wrote:
Sat Jan 28, 2023 10:14 am
Here are the results:
  • Both the 41CV and the DM41X print correctly programs on the 82240B with PRP.
  • The 48SX receives correctly programs from the 41CV (PRP on the 41CV, INPRT on the 48SX). X^2 is received as X^2 on the 48SX.
  • The 48SX doesn’t receive anything from the DM41X, neither in FAST nor in SLOW mode (PRP on the DM41X, INPRT on the 48SX). Tested with different Printer Line Delay values on the DM41X: 0.5, 1.0, 1.5, 1.8, 1.9.
Daniel,
Thanks.
KR.
Celestial Navigation
HP-67 Nav. Pac / HP-41CV Nav. Pac / HP-48GX Celestial Nav. Pac / HP-34C / HP-15C / DM-15L / MK-52 BRP-2 / TI-58C Marine Nav.
User avatar
3E0_RTN
Posts: 9
Joined: Mon Jan 23, 2023 9:28 pm
Location: FRANCE

Re: DM41X INFRARED COMPATIBILITY WITH HP-48GX

Post by 3E0_RTN »

ecsfang wrote:
Sat Jan 28, 2023 6:05 pm
Strange, I got the impression that 3E0_RTN managed to send from the DM41X to the 48 ...
Thomas,
You're right.
I use the Nav. Pac on HP-67 and HP-41, and the Celestial Navigation Pac on HP-48GX (v. 2.0 or 2.5.1).
Some programs are running both on HP-41CV and HP-48GX.
Sometimes I use the HP-48 as a printer.
Now I can order a DM-41X or more. :lol:
I'm off course kidding.
KR.
Celestial Navigation
HP-67 Nav. Pac / HP-41CV Nav. Pac / HP-48GX Celestial Nav. Pac / HP-34C / HP-15C / DM-15L / MK-52 BRP-2 / TI-58C Marine Nav.
ecsfang
Posts: 51
Joined: Sun Jan 26, 2020 5:21 pm
Location: Lund/Sweden

Re: DM41X INFRARED COMPATIBILITY WITH HP-48GX

Post by ecsfang »

Hi again,

I found my old 48-cable, and managed to hook it up to my PC and downloaded the INPRT program to the 48GX.

Actually I managed to send data from the DM41X to the 48GX - but it was quite hard. I had to put them really close (~10mm) and align the beam until I got it right, after that I could transfer programs to the 48GX without any problems (in this short test).
I was using the default 1.8s/line setting and slow mode on the DM41X but I never tried to print any long programs.

I noticed (as expected) that the DM41X sends and the 48GX receives the up-arrow (char 94) as a graphic string. This is included in the received string and when printing it from the 48GX it looks ok on the printer. In the following screenshot I have dropped the integer (number of received objects?), and also sent a string ("HELLO") using PRA from the DM41X to the 48GX, so to the left is the screendump and to the right the print of the received object from the 48GX to my printer emulator):
hp48.png
hp48.png (1.89 KiB) Viewed 1132 times

I could also see in my printer-emulator that the graphics string is send exactly as the DM41X had done, i.e. the 48GX just receives the byte stream as it arrives.

It is more obvious in the second screenshot that the LBL is shown as an 'A' followed by a byte stream.
hp48-2.png
hp48-2.png (1.46 KiB) Viewed 1132 times
And printing the second object from the 48GX to the RedEye interface results in the following byte stream from the 48GX:

20.30.31.86.4C.42.4C.20.22.41.1B.07.00.08.04.7E.04.08.00.1B.07.00.08.04.7E.04.08.00.22.04.
01*LBL "A^^"
20.30.32.20.45.4E.54.45.52.1B.07.00.08.04.7E.04.08.00.04.
02 ENTER^
20.30.33.20.45.4E.44.04.
03 END

(First line is the received byte stream and followed by the output from my printer-emulator which replaces the graphics with '^'.)

So, yes, the HP48 can receive from the DM41X, but it is much less sensitive then the printer (at least the RedEye interface I have), but one need to edit the received string (if it contains up-arrows) using some binary editor (since the stream contains NULL-bytes - eg. I can't view the received string on the HP48 ("Error: Can't Edit Null Char.")). I guess one can write a simple program that "cleans" the received string from any graphics and replaces it with the wanted character - but I leave that as an exercise for anyone who is up for the challenge ... ;).

Cheers,
Thomas
[35/45/55/65/67/97/21/25/29C/31E/33E/38E/41C|CV|CX/71B/10C/11C/15C/16C/32SII/42S/28S/48GX/49G/35S/DM41X(#00456)]
(7397)[134]
User avatar
3E0_RTN
Posts: 9
Joined: Mon Jan 23, 2023 9:28 pm
Location: FRANCE

Re: DM41X INFRARED COMPATIBILITY WITH HP-48GX

Post by 3E0_RTN »

Hello,
FIXIT from Joe Horn and Mika Heiskanen should be ONE solution :
https://www.hpcalc.org/hp48/docs/faq/48faq-9.html
wrote: PURPOSE:
Converts a badly uploaded string into the original object.

THEORY:
A lot of folks upload HP48 objects poorly, such that when you download them, you just get strings full of garbage that look something like this:
"HPHP48-E#c&r$a%p@!*!..." [looks familiar, eh?]
That's because they uploaded it using XMODEM, or managed to screw it up some other way. The following FIXIT program takes such a string and extracts the actual HP48 object that they originally intended to upload (if at all possible).
Such object extraction can be done by hand, but it's too dangerous. FIXIT minimizes the danger of Memory Clear. It checks whether the extracted object is a valid one, and if not, drops it from the stack before the HP48 attempts to display it. All of the many bad downloads I've archived over the years are fixed by FIXIT, whereas about half of them cause a Memory Clear when extracted manually. No guarantees, however. Use at your own risk.
The actual extraction is done by a "Code object" written by Mika Heiskanen. The User RPL "shell" around this code object is what minimizes the danger of Memory Clear; it was written by Joe Horn.

INSTRUCTIONS:
BACKUP YOUR MEMORY, just in case the string contains a logic bomb.
Place the bad download on the stack (see "HPHP48-...") and run FIXIT.
However :
wrote: Possible results:
No error: the object was extracted successfully and is on level 1.
"Bad Argument Type" error: you didn't have a string on level 1.
"Bad Argument Value" error: the string wasn't of the proper form; it must be an "HPHP48-..." downloaded string.
"Invalid Definition" error: the object was mangled in transmission so badly that its end was lost; the object cannot be extracted.
"Undefined Result" error: there is no HP48 object in the string.
"Recover Memory? YES/NO": the string contained a bomb, and FIXIT detonated it. Press YES to sift through the shrapnel and rubble in a feeble attempt to resurrect the dead. Press NO to bury them.
The considered file :
wrote: FIXIT.ASC

%%HP: T(3)A(D)F(.);
"69A20FF7CE20000000402414442340C2A203B000840584054383D25403A20FF7
2500000000403535947440D9D20E16329C2A2DBBF13013216DF1406A1C42328D
BF193632B213034000407545146540D9D20E163292CF1EFFB1DBBF1EBFB150FA
193632B2130003030303034C000402414441340C2A203B000840584054383D25
469A20FF72500000000403535947440D9D20E16329C2A2DBBF13013216DF1406
A1C42328DBF193632B213034000407545146540D9D20E163292CF1EFFB1DBBF1
EBFB150FA193632B2131313131313134C000407545146540C2A203B000840584
054383D25469A20FF72500000000403535947440D9D20E16329C2A2DBBF13013
216DF1406A1C42328DBF193632B213034000407545146540D9D20E163292CF1E
FFB1DBBF1EBFB150FA193632B2130003030303034C00020849420C2A20570008
40584054383D254D9D20E163284E2050841607079784E20603416D6075627936
32B2130A0BA02D456C616E63686F6C697022416269702BB28000506494859445
50D9D20E16323CE2278BF168BC1ED2A2167E1AFE22D9D203CE2278BF19C2A274
3A2C58C1C2A2031000840584054383D2167E1AFE22D9D2078BF18B9C1DBBF1AA
F028DBF1CCD201200014713717917F137145142164808C5BF22D9D2033920200
0000000005150933A1B21305DF22B21305BF22D9D20339202000000000004150
933A1B21305DF223CE2278BF168BC1D8DC1167E1AFE22D9D203FBF1339202000
000000002770933A1B21305DF223CE2278BF19D1A1DBBF18DBF1E0CF1D5CE1AF
E22D9D208DBF1339202000000000000030933A1B21305DF22CB2A193632B2130
B21303D4F"
TBC
Celestial Navigation
HP-67 Nav. Pac / HP-41CV Nav. Pac / HP-48GX Celestial Nav. Pac / HP-34C / HP-15C / DM-15L / MK-52 BRP-2 / TI-58C Marine Nav.
ecsfang
Posts: 51
Joined: Sun Jan 26, 2020 5:21 pm
Location: Lund/Sweden

Re: DM41X INFRARED COMPATIBILITY WITH HP-48GX

Post by ecsfang »

FIXIT from Joe Horn and Mika Heiskanen should be ONE solution
Naw ... it doesn't work ... tried it on the received string :(
"Bad Argument Value" error: the string wasn't of the proper form; it must be an "HPHP48-..." downloaded string.
It might work with the MAWK library: https://www.hpcalc.org/details/2830

UNT (untab) in this library looked hopeful but didn't work as expected - probably stops at the null character, but the MAP function might work:
MAP
*************************************************************************
map
each character in s is replaced by the character in t that is
addressed by the code of the character.
t s -> t s'
table t must be size 256
s'[ i ] := t[s[ i ]]
Creating a table with all characters and make sure that s[0] is not NULL, MAP maybe can be used to replace the null characters.
But I have not tested it ...

(Edit: Fixed unintentional 'format'-string in last quote ... )

Edit: I tested with MAP, crated a charactertable with char 0 replaced with X and executed MAP on the received string and it worked!
Now I can edit the string without any problem. But I guess that the best way is to make a simple program that replaces any graphic (ESC'aped) byte stream in the string with another character, eg. with '^'.

So yes, with some "handpåläggning" (sorry for the swedish - "laying on of hands"?) it should be quite possible to transfer programs from the DM41X to the 48 ... ;)
[35/45/55/65/67/97/21/25/29C/31E/33E/38E/41C|CV|CX/71B/10C/11C/15C/16C/32SII/42S/28S/48GX/49G/35S/DM41X(#00456)]
(7397)[134]
Post Reply