This file is a description of abilities how to upload a HP28C ROM image. This is not an instant to use or one click toolkit, the description of the ROM upload is for experts only! Here are some ROM dump utilities for uploading the HP28C ROM image to a PC. The only useful ability to do this, is to use the infrared output port. But here we have a problem, the used printer protocol format isn't compatible with standard PC redeye receivers. So you must have a special hardware for your PC or use a HP48 with the program INPRT to capture the data. Because PC redeye receivers for the HP redeye protocol are very rare and the HP48 is more common, I assume that you use a HP48 as receiver. The INPRT program has one big problem, it don't accept 0 characters, so it cannot used for binary transfers. 2nd the HP48 has only limited memory to hold the received data. So you must divide the upload into sessions, uploading 2KB per session is a good choice. After you captured the block with the HP48, transfer it to the PC. Read the INPRT instructions how to use the program, please. To get the ROM content you must have a PEEK program, here called PIG. PIG is program with a code object inside the a normal RPL secondary. This sort of programs can't be typed in normally, you need specially MCODE programs, that generate the finally secondary. Because these programs call internal unprotected functions by SYSEVAL, mostly every typo will cause a "Memory Lost". So I added a checksum program to verify the MCODE programs before executing. The CHK, MBAG and MPIG are programs from different authors posted on comp.sys.handhelds in the early 90'ies. I only made some minor changes to run them on the HP28C. Set your HP28C in HEX mode before typing in these programs! This is the checksum program. The number in [] behind the name is the checksum. To verify it, type 'CHK' CHK. CHK [6C50] << RCLF STD HEX 64 STWS 48 CF SWAP RCL ->STR 16 STWS DUP # 0 1 ROT SIZE FOR j OVER j j SUB NUM R->B XOR RL NEXT ->STR 3 OVER SIZE SUB ROT STOF SWAP DROP >> For making the PEEK aka PIG program you need a POKE aka BAG program. Here's the MCODE of it. After generating the BAG program you can delete MBAG. Don't forget to check the checksum before executing MBAG. MBAG [7615] << << SWAP OVER # 0 AND OR SWAP # D6471341301231 # D6461431471741 # D6631581631641 # C67E16514610D08 # D6031241961031 # C62412313111451 # 4FF4AC808461027E >> 'BAG' DUP PURGE STO # 301231000B102C96 # 4FF40 # 4FFF1 SYSEVAL >> This is the MCODE of the PIG program. After generating the PIG program you can delete MPIG. The PIG program needs a hxs object address in stack level 1 and returns the address content of 16 nibbles beginning from this address. A # 0 PIG returns # FC60000051FF8 . You get only 13 nibbles here, because the upper 3 nibbles are zero. The ROM content in DMP format with LSB first is "00000:8FF15000006CF000". MPIG [F844] << << RCWS SWAP 64 STWS # 0 OR SWAP STWS "ABCDEFGHIJKLMNOPQRSTUVWXYZ1" >> 'PIG' DUP PURGE STO # 3012310003B02C96 # 4FFB6 BAG # 1631641961031341 # 4FFC6 BAG # 3117451961031765 # 4FFD6 BAG # C808461241231 # 4FFE6 BAG >> This is an example using the PIG command to make a DUMP compatible output. The program needs two arguments for the dump area. A 0 4095 RDMP dumps the 1st 2KB of the ROM. But this program is very slow, especially the nibble reversing from the hxs string output of PIG to the print string costs many time. RDMP [FDE7] << HEX FOR i i R->B DUP # 100000 + ->STR 4 OVER SIZE SUB 58 CHR + SWAP PIG 1 16 START DUP 16 / ROT ROT # F AND ->STR DUP SIZE DUP SUB + SWAP NEXT DROP PR1 1 DISP 16 STEP >> But it would be much faster to print the PIG output directly with the PR1 command and then make the conversations, merging and so one on the PC. Finally you should have a file size of 128KB (131072) when you have a one byte per byte binary format or a file size of 256KB (262144) when you have a one nibble per byte binary format. You should do the final check with the CHAMPCHK.EXE program to verifies the internal checksums. Happy grabbing... Christoph Giesselink, Nov. 11, 2002