home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / sys / hp48 / 5693 < prev    next >
Encoding:
Internet Message Format  |  1992-11-11  |  5.7 KB

  1. Path: sparky!uunet!ogicse!hp-cv!hp-pcd!hpcvra!rnews!hpcvbbs!akcs.joehorn
  2. From: akcs.joehorn@hpcvbbs.cv.hp.com (Joseph K. Horn)
  3. Newsgroups: comp.sys.hp48
  4. Subject: Re: Needed ASC De/Compressor
  5. Message-ID: <2b01faf3.2123.1comp.sys.hp48.1@hpcvbbs.cv.hp.com>
  6. Date: 12 Nov 92 06:40:02 GMT
  7. Article-I.D.: hpcvbbs.2b01faf3.2123.1comp.sys.hp48.1
  8. References: <dwellman.0e2q@amiganet.chi.il.us>
  9. Lines: 137
  10.  
  11.  
  12.                   ASCII Encoding HP 48SX Objects
  13.                           by Bill Wickes
  14.  
  15. Sending an HP 48SX object via electronic mail can be difficult if the
  16. object does not have an ASCII form, such as is the case for library
  17. objects.  There are various encoding schemes available on different
  18. computer systems, but these require that the sender and receiver have
  19. similar computers, or at least compatible encode/decode schemes.  The
  20. programs listed below perform the encoding and decoding on the HP 48SX
  21. itself, which has the advantage of being completely independent of any
  22. computer.
  23.  
  24. The programs are nominally called \->ASC and ASC\->.  The former takes
  25. an object from the stack and converts it to a string, in which each
  26. nibble of the object and its checksum is converted to a character 0-9 or
  27. A-F.  (The object must be in RAM, otherwise a "ROM Object" error is
  28. returned.) For sake of easy inclusion in email letters, the string is
  29. broken up by linefeed characters after every 64 characters.
  30.  
  31. ASC\-> is the inverse of \->ASC: it takes a string created by \->ASC and
  32. converts it back into an object.  When you transmit the encoded strings,
  33. be sure not to change the string; ASC\-> uses the checksum encoded in
  34. the string to verify that the decoding is correct.  An "Invalid String"
  35. error is returned if the result object does not match the original
  36. object encoded by \->ASC.  When you upload a string to your computer,
  37. use HP 48 translate mode 3 so that the HP 48 will convert any CR/LF's
  38. back to LF's when the string is later downloaded.
  39.  
  40. Two versions of ASC\-> are included here.  The first (P1) is in HP 48
  41. user language, using SYSEVALs to execute system objects.  P2 is a string
  42. that the setup program uses P1 to decode into an executable ASC\->
  43. --then P1 is discarded.  The second version is more compact than the
  44. first, and also uneditable and therefore safer (but it can't be
  45. transmitted in ASCII form, which helps to make the point of this
  46. exercise).
  47.  
  48. Here are the programs, contained in a directory:
  49.  
  50. (start)
  51. %%HP: T(3)A(D)F(.);
  52. DIR
  53. P1              @ ASC\-> Version 1.
  54. \<<
  55.   IF DUP TYPE 2 \=/
  56.   THEN "Not A String" DOERR
  57.   END RCWS \-> ws
  58.   \<< 16 STWS
  59.     #0 NEWOB SWAP DUP SIZE
  60.     IF DUP 4 <
  61.     THEN DROP SWAP DROP "Invalid String" DOERR
  62.     END 
  63.     DUP 65 / IP - 4 - # 18CEAh SYSEVAL 
  64.     "" OVER # 61C1Ch SYSEVAL
  65.     SWAP # 6641F8000AF02DCCh
  66.     # 130480679BF8CC0h # 518Ah SYSEVAL
  67.     # 19610313418D7EA4h # 518Ah SYSEVAL
  68.     # 7134147114103123h # 518Ah SYSEVAL
  69.     # 5F6A971131607414h # 518Ah SYSEVAL
  70.     # 12EA1717EA3F130Ch # 518Ah SYSEVAL
  71.     # 280826B3012808F4h # 518Ah SYSEVAL
  72.     # 6B7028080BEE9091h # 518Ah SYSEVAL
  73.     # BE5DC1710610C512h # 518Ah SYSEVAL
  74.     # 705D00003431A078h # 518Ah SYSEVAL
  75.     # 3D8FA26058961431h # 518Ah SYSEVAL
  76.     # 312B0514h # 518Ah SYSEVAL 
  77.     # 18F23h SYSEVAL 
  78.     DUP BYTES DROP 4 ROLL
  79.     IF ==
  80.     THEN SWAP DROP
  81.     ELSE DROP "Invalid String" DOERR
  82.     END ws STWS
  83.   \>>
  84. \>>
  85.  
  86. P2       @ ASC\->  Version 2.  To be converted by ASC\-> version 1.
  87.  
  88. "D9D20D29512BF81D0040D9D20E4A209000000007566074726636508813011920
  89. 140007FE30B9F060ED3071040CA1304EC3039916D9D2085230B9F06C2A201200
  90. 094E66716C696460235472796E676933A1B21300ED30FD5502C230C1C1632230
  91. CCD20FA0008F14660CC8FB97608403104AE7D814313016913213014117414317
  92. 414706131179A6F5C031F3AE7171AE214F8082103B6280821909EEB0808207B6
  93. 215C0160171CD5EB870A13430000D50713416985062AF8D341508813044950B9
  94. F06BBF06EFC36B9F0644230C2A201200094E66716C696460235472796E676933
  95. A1B2130B21300373"
  96.  
  97. P3       @\->ASC.     To be converted by ASC\->.
  98. "D9D20D2951881304495032230FD5502C230A752688130ADB467FE30322306AC3
  99. 0CB916E0E30CBD30F6E30C1C1632230CCD20DC0008F14660CC8FB97608403104
  100. AE7D8143130169174147061741431311534AC6B4415141534946908D9B026155
  101. 4A6F53131F3AE731A014C161AE215F08082103A6280821939EEC08082170A621
  102. 4C161170CD56B870A18503430000D5071351796A9F8D2D02639916D9D2085230
  103. C2A209100025F4D402F426A6563647933A1B2130A2116B213033C0"
  104.  
  105. SETUP             @Automatic setup program
  106. \<< P2 P1 'ASC\->' STO
  107.     P3 ASC\-> '\->ASC' STO
  108.     { P1 P2 P3 SETUP } PURGE
  109. \>>
  110.  
  111. END
  112. (end)
  113.  
  114. Installation instructions:
  115.  
  116. 1.  Edit the above text between (start) and (end) into a text file named
  117. CONV (for example).  Be sure that you leave the strings exactly as
  118. entered above, with no extra spaces or other invisible characters at the
  119. beginnings or ends of the lines.
  120. 2.  Set the HP 48SX into ASCII transfer mode.
  121. 3.  Using Kermit, download CONV text file to the 48, verify its checksum
  122. (6C8Ah).
  123. 4.  Execute CONV to make it the current directory.
  124. 5.  Execute SETUP.
  125. 6.  The directory CONV now contains ASC\-> and \->ASC, ready to use.
  126.  
  127. To archive the decoded versions of ASC\-> and \->ASC back on your
  128. computer, be sure to set the HP 48SX in binary transfer mode before
  129. uploading.
  130.  
  131. Disclaimers:
  132.  
  133. * Use the programs at your own risk.  Any time you delve into the
  134. SYSEVAL world, there are increased dangers.  Archive your 48 memory
  135. before experimenting with these programs!  Also, verify the checksums of
  136. objects defined above to make sure they have been downloaded correctly,
  137. before executing ASC\->.
  138.  
  139. * I will not answer questions about how the programs work.  This is not
  140. because of any great secrecy, but rather because it's hard to give any
  141. answer that doesn't lead to more questions, and more, and more...
  142.  
  143. * 48 hackers are welcome to mine any nuggets they can from the programs,
  144. and from the fact that \->ASC is a convenient way to decompile an
  145. object.
  146.  
  147. Bill Wickes
  148.