home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------------------------- *)
- (* DCKONV.PAS *)
- (* hier wird ein bischen hin- und herkonvertiert *)
- (* ----------------------------------------------------------------------- *)
- PROCEDURE To_Upper (VAR Str: lines); (* String in Grossbuchstaben *)
- VAR Aux: lines; i: INTEGER;
- BEGIN
- Aux := '';
- FOR i := 1 TO Length(Str) DO Aux := Concat(Aux, UpCase(Str[i]));
- Str := Aux;
- END;
-
- PROCEDURE Bin_to_Int (bin: dc_word; left,right: INTEGER; VAR value: INTEGER);
- VAR i: INTEGER;
- BEGIN
- value := Ord(bin[left])-Ord('0');
- FOR i := Succ(left) TO right DO value := 2*value + (Ord(bin[i])-Ord('0'));
- END;
-
- PROCEDURE Int_to_Bin (value, left, rigth: INTEGER; VAR bin: dc_word);
- VAR i: INTEGER;
- BEGIN
- FOR i := rigth DOWNTO left DO BEGIN
- IF (value MOD 2) = 0 THEN bin[i] := '0' ELSE bin[i] := '1';
- value := value DIV 2;
- END;
- END;
-
- FUNCTION Legal (n: INTEGER): BOOLEAN; (* Argument n im Adressbereich ? *)
- BEGIN
- IF (n > -1) AND (n <= mem_size) THEN Legal := TRUE ELSE Legal := FALSE;
- END;
-
- PROCEDURE Load_Int (i: INTEGER; VAR reg: dc_word);
- BEGIN
- IF i < 0 THEN BEGIN
- Int_to_Bin(i+sign_val,Succ(sign_bit),word_size,reg);
- reg[sign_bit] := '1';
- END
- ELSE BEGIN
- Int_to_Bin(i,Succ(sign_bit),word_size,reg); reg[sign_bit] := '0';
- END;
- END;
-
- FUNCTION is_Minus (VAR reg: dc_word): BOOLEAN;
- BEGIN is_Minus := reg[sign_bit] = '1'; END;
-
- PROCEDURE Increment (VAR value: INTEGER);
- BEGIN value := Succ(value) MOD Succ(mem_size); END;
-
- PROCEDURE Decrement (VAR value: INTEGER);
- BEGIN value := Pred(value); IF value < 0 THEN value := mem_size; END;
-
- PROCEDURE Copy_Bits (VAR source, dest: dc_word; left, right: INTEGER);
- VAR i: INTEGER;
- BEGIN FOR i:= left TO right DO dest[i] := source[i]; END;
-
- FUNCTION Int_Val (VAR reg: dc_word): INTEGER;
- VAR value: INTEGER;
- BEGIN
- Bin_to_Int(reg,Succ(sign_bit),word_size,value);
- IF is_Minus(reg) THEN Int_Val := value - sign_val ELSE Int_Val := value;
- END;
- (* ----------------------------------------------------------------------- *)
- (* DCKONV.PAS *)
-