home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 12 / dc / dckonv.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-09-21  |  2.2 KB  |  66 lines

  1. (* ----------------------------------------------------------------------- *)
  2. (*                                 DCKONV.PAS                              *)
  3. (*             hier wird ein bischen hin- und herkonvertiert               *)
  4. (* ----------------------------------------------------------------------- *)
  5. PROCEDURE To_Upper (VAR Str: lines);          (* String in Grossbuchstaben *)
  6. VAR  Aux: lines;  i: INTEGER;
  7. BEGIN
  8.   Aux := '';
  9.   FOR i := 1 TO Length(Str) DO  Aux := Concat(Aux, UpCase(Str[i]));
  10.   Str := Aux;
  11. END;
  12.  
  13. PROCEDURE Bin_to_Int (bin: dc_word; left,right: INTEGER; VAR value: INTEGER);
  14. VAR  i: INTEGER;
  15. BEGIN
  16.   value := Ord(bin[left])-Ord('0');
  17.   FOR i := Succ(left) TO right DO value := 2*value + (Ord(bin[i])-Ord('0'));
  18. END;
  19.  
  20. PROCEDURE Int_to_Bin (value, left, rigth: INTEGER; VAR bin: dc_word);
  21. VAR  i: INTEGER;
  22. BEGIN
  23.   FOR i := rigth DOWNTO left DO BEGIN
  24.     IF (value MOD 2) = 0 THEN bin[i] := '0'  ELSE  bin[i] := '1';
  25.     value := value DIV 2;
  26.   END;
  27. END;
  28.  
  29. FUNCTION Legal (n: INTEGER): BOOLEAN;     (* Argument n im Adressbereich ? *)
  30. BEGIN
  31.   IF (n > -1) AND (n <= mem_size) THEN Legal := TRUE  ELSE  Legal := FALSE;
  32. END;
  33.  
  34. PROCEDURE Load_Int (i: INTEGER; VAR reg: dc_word);
  35. BEGIN
  36.  IF i < 0 THEN BEGIN
  37.      Int_to_Bin(i+sign_val,Succ(sign_bit),word_size,reg);
  38.      reg[sign_bit] := '1';
  39.    END
  40.  ELSE BEGIN
  41.    Int_to_Bin(i,Succ(sign_bit),word_size,reg); reg[sign_bit] := '0';
  42.  END;
  43. END;
  44.  
  45. FUNCTION is_Minus (VAR reg: dc_word): BOOLEAN;
  46. BEGIN  is_Minus := reg[sign_bit] = '1';  END;
  47.  
  48. PROCEDURE Increment (VAR value: INTEGER);
  49. BEGIN  value := Succ(value) MOD Succ(mem_size);  END;
  50.  
  51. PROCEDURE Decrement (VAR value: INTEGER);
  52. BEGIN  value := Pred(value);  IF value < 0 THEN value := mem_size;  END;
  53.  
  54. PROCEDURE Copy_Bits (VAR source, dest: dc_word; left, right: INTEGER);
  55. VAR  i: INTEGER;
  56. BEGIN  FOR i:= left TO right DO dest[i] := source[i];  END;
  57.  
  58. FUNCTION Int_Val (VAR reg: dc_word): INTEGER;
  59. VAR  value: INTEGER;
  60. BEGIN
  61.   Bin_to_Int(reg,Succ(sign_bit),word_size,value);
  62.   IF is_Minus(reg) THEN Int_Val := value - sign_val  ELSE  Int_Val := value;
  63. END;
  64. (* ----------------------------------------------------------------------- *)
  65. (*                                 DCKONV.PAS                              *)
  66.