home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 12 / tricks / bin_out.mod next >
Encoding:
Text File  |  1989-09-08  |  1.8 KB  |  54 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    BIN_OUT.MOD                         *)
  3. (*        Spracherweiterung zu TopSpeed Modula2           *)
  4. (*                                                        *)
  5. (*  Die beiden Prozeduren sollten in das Modul IO aufge-  *)
  6. (*  nommen werden und erlauben die bitweise Ausgabe von   *)
  7. (*  16- oder 32-Bit-Zahlen.                               *)
  8. (*  Achtung: Im Implementation-File IO.MOD müssen zu-     *)
  9. (*  sätzlich Insert und Concat aus Str importiert werden  *)
  10. (*       (c) 1989  Hans-Christian Steeg & TOOLBOX         *)
  11. (* ------------------------------------------------------ *)
  12. PROCEDURE WrBin(V : CARDINAL; Length : INTEGER);
  13. VAR
  14.   localstr : ARRAY[0..15] OF CHAR;
  15.      i : CARDINAL;
  16. BEGIN
  17.   FOR i:= 0 TO 15 DO
  18.     IF i IN BITSET(V) THEN
  19.       Insert(localstr, '1', 0)
  20.     ELSE
  21.       Insert(localstr, '0', 0)
  22.     END
  23.   END;
  24.   WrStrAdj(localstr, Length)
  25. END WrBin;
  26.  
  27. PROCEDURE WrLngBin(V : LONGCARD; Length : INTEGER);
  28. VAR
  29.   localstr_hi, localstr_lo : ARRAY[0..15] OF CHAR;
  30.           localstr : ARRAY[0..31] OF CHAR;
  31.              V_hi,V_lo : CARDINAL;
  32.                  i : CARDINAL;
  33. BEGIN
  34.   V_hi := VAL(CARDINAL, V DIV 65536);
  35.   FOR i := 0 TO 15 DO
  36.     IF i IN BITSET(V_hi) THEN
  37.       Insert(localstr_hi, '1', 0)
  38.     ELSE
  39.       Insert(localstr_hi, '0', 0)
  40.     END
  41.   END;
  42.   V_lo := VAL(CARDINAL, V MOD 65536);
  43.   FOR i := 0 TO 15 DO
  44.     IF i IN BITSET(V_lo) THEN
  45.       Insert(localstr_lo, '1', 0)
  46.     ELSE
  47.       Insert (localstr_lo, '0', 0)
  48.     END
  49.   END;
  50.   Concat(localstr, localstr_hi, localstr_lo);
  51.   WrStrAdj(localstr, Length)
  52. END WrLngBin;
  53. (* ------------------------------------------------------ *)
  54. (*                Ende von BIN_OUT.MOD                    *)