[comp.sys.hp] Hand calc infrared to RS-232 converter

nungeste@hpspkla.HP.COM (Dick L. Nungester) (08/30/88)

Rush Systems provides an HP-17B/18C/19B/27S/28C/28S/41 Infra-Red output to
RS-232 converter for $72.95 as advertised in the EduCALC catalog.  It works
only on IBM-PC compatibles.  The product is called the Hook-uP (where the
"u" is a greek "mu").  A drawback of the Hook-uP is that its file output
uses the full 8-bit IBM-US symbol set.  There is no way to get readable
output of just 7-bit printable ASCII characters (making uploading of
programs to nets like this very labor intensive).  The following program
(written in Turbo PASCAL v. 3.0) provides the necessary conversion.  It
should be easy to translate to other languages if desired.  For more
information on the Hook-uP (which seems to work well with a Vectra) ask for
a catalog from EduCALC or write Rush Systems directly: 

EduCALC Mail Store             Rush Systems
27953 Cabot Rd.                P.O. Box 723
Laguna Niguel, CA 92677        Bethel, CT 06801


program read28s;
(********************************************************************)
(* Translation of HP-28S ".TXT" files produced by Rush Systems "Hook-uP"
(* product.  Dick Nungester, 08/18/88.  The Hook-uP translates from the
(* HP-28S character set to the IBM-US symbol set.  This translates the
(* resulting IBM-US symbol set to all printable ASCII (characters $20
(* through $7E), plus CR and LF.
(********************************************************************)
var
   ReadFile :file of char;
   I :integer;
   ch :char;
   str :string[10];

begin
   if ParamCount = 0 then begin
      writeln('usage: "read28s <filename>.txt" where <filename>.txt is a');
      writeln('file created by Rush Systems "Hook-uP" HP-28S translator.');
   end else begin
      Assign(ReadFile, ParamStr(1));
      Reset(ReadFile);
      for I := 1 to FileSize(ReadFile) do begin
         read(ReadFile, ch);

         case Ord(ch) of

            (* All 256 IBM-US characters are translated into ASCII *)
            (* characters $20..$7e (all printables) and CR, LF.  The *)
            (* displayable HP-28S characters LF, CR, and $20..$93 are *)
            (* as shown below.  All other 28S characters show "`?`". *)

            $0a, $0d, $20..$7e : str := ch;
                                       (* 28S LF, CR, printables *)
            $b1 : str := '`grid`';     (* 28S $7f *)
         (* $20 : str := ch; *)        (* 28S $80 *)
            $f6 : str := '/';          (* 28S $81 *)
         (* $2a : str := ch; *)        (* 28S $82 *)
            $fb : str := '`root`';     (* 28S $83 *)
            $9f : str := '`integral`'; (* 28S $84 *)
            $e4 : str := '`sigma`';    (* 28S $85 *)
            $10 : str := '`right`';    (* 28S $86 *)
            $e3 : str := '`pi`';       (* 28S $87 *)
            $eb : str := '`deriv`';    (* 28S $88 *)
            $f3 : str := '<=';         (* 28S $89 *)
            $f2 : str := '>=';         (* 28S $8a *)
         (* $23 : str := ch; *)        (* 28S $8b *)
            $e0 : str := '`alpha`';    (* 28S $8c *)
            $1a : str := '->';         (* 28S $8d *)
            $1b : str := '<-';         (* 28S $8e *)
            $e6 : str := '`mu`';       (* 28S $8f *)
            $c6 : str := '`lf`';       (* 28S $90 *)
            $f8 : str := '`degrees`';  (* 28S $91 *)
            $ae : str := '<<';         (* 28S $92 *)
            $af : str := '>>';         (* 28S $93 *)
            else str := '`?`';
         end; (* case *)

         write(str);
      end;
      close(ReadFile);
   end;
end.