Luc Pauwels

Infra-Red output converter

Rick Nungester
August 18, 1988

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 an HP 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
(Uploaded to UNIX notes 5/17/90.)
program read28s;
(********************************************************************)
(* Translation of HP-28S ".TXT" files produced by Rush Systems "Hook-uP"
(* product.  Rick 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 .txt" where .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.