home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 06 / tricks / knoten.mod < prev    next >
Text File  |  1990-03-08  |  4KB  |  152 lines

  1. (* ------------------------------------------------------ *)
  2. (*                   KNOTEN.MOD                           *)
  3. (*      (c) 1990 Michael Gundlach & TOOLBOX               *)
  4. (* ------------------------------------------------------ *)
  5. MODULE Knotentest;
  6.  
  7. FROM SYSTEM IMPORT ASSEMBLER;
  8. FROM System IMPORT GetArg, Terminate;
  9. FROM InOut  IMPORT WriteString, WriteLn, WriteHex;
  10.  
  11. VAR
  12.   a, b, c, d : CARDINAL;
  13.   s          : ARRAY [0..4] OF CHAR;
  14.   t          : CARDINAL;
  15.  
  16.   PROCEDURE HexNachCard(s : ARRAY OF CHAR) : CARDINAL;
  17.   VAR
  18.     i, t : CARDINAL;
  19.   BEGIN
  20.     t := 0;
  21.     FOR i := 0 TO 3 DO
  22.       t := t * 16;
  23.       CASE s[i] OF
  24.         "0".."9" : INC(t, ORD(s[i]) - ORD("0"))      |
  25.         "a".."f" : INC(t, ORD(s[i]) - ORD("a") + 10) |
  26.         "A".."F" : INC(t, ORD(s[i]) - ORD("A") + 10);
  27.       ELSE
  28.         Fehler;
  29.       END;
  30.     END;
  31.     RETURN t;
  32.   END HexNachCard;
  33.  
  34.   PROCEDURE Fehler;
  35.   BEGIN
  36.     WriteLn;
  37.     WriteString('Knotentest: Fehler! - Hilfe: "KNOTEN -?"');
  38.     WriteLn;
  39.     Terminate(1);
  40.   END Fehler;
  41.  
  42.   PROCEDURE  Testt(t : CARDINAL);
  43.   BEGIN
  44.     IF t <> 4 THEN
  45.       Fehler;
  46.     END;
  47.   END Testt;
  48.  
  49.   PROCEDURE Ausgabe(h1, h2 : CARDINAL);
  50.   BEGIN
  51.     WriteString("...");
  52.     WriteHex(4096, 4);
  53.     WriteHex(h1, 4);
  54.     WriteHex(h2, 4);
  55.     WriteLn;
  56.   END Ausgabe;
  57.  
  58.   PROCEDURE Knoten(VAR h1, h2 : CARDINAL);
  59.   VAR
  60.     i, j : CARDINAL;
  61.   BEGIN
  62.     ASM
  63.       MOV AH, 0EEH
  64.       INT 21H
  65.       MOV i, BX
  66.       MOV j, AX
  67.     END;
  68.     h1 := i;
  69.     h2 := j;
  70.   END Knoten;
  71.  
  72.   BEGIN
  73.     WriteString("Wie heißt der Knoten von DRI und MI ");
  74.     GetArg(s, t);
  75.     IF (t=2) AND ((s[0]="-") OR (s[0]="/")) THEN
  76.       CASE s[1] OF
  77.         "?" :
  78.  
  79.    WriteLn;WriteLn;
  80.    WriteString("Knotentest, Version 3, 30.1.90 ");
  81.    WriteString("- (c) by DRI und MI");
  82.    WriteLn;WriteLn;
  83.    WriteString("...gibt die Nummer des Novell");
  84.    WriteString("-Netzknotens der aufrufenden Station aus.");
  85.    WriteLn;WriteLn;
  86.    WriteString("KNOTEN ( [-t] hex1 hex2 | -[?|a|n] )");
  87.    WriteLn;
  88.    WriteString("   hex1, hex2: die letzten acht");
  89.    WriteString(" Stellen des Knotens");
  90.    WriteLn;
  91.    WriteString("               (für ");
  92.    WriteString("Überprüfungszwecke)");
  93.    WriteLn;
  94.    WriteString("   -a | /a:    endet immer mit");
  95.    WriteString(" errorlevel = 0");
  96.    WriteLn;
  97.    WriteString("   -n | /n:    zeigt nur die");
  98.    WriteString(" Knotennummer");
  99.    WriteLn;
  100.    WriteString("   -? | /?:    dieser ");
  101.    WriteString("Hilfsbildschirm");
  102.    WriteLn;WriteLn|
  103.  
  104.         "a","A":
  105.  
  106.    WriteString("...verrat ich nicht!");
  107.    WriteLn;
  108.    Terminate(0);|
  109.  
  110.         "n","N":
  111.               Knoten(c,d);
  112.               Ausgabe(c,d);
  113.               Terminate(0)|
  114.         "t","T":
  115.               GetArg(s,t);
  116.               Testt(t);
  117.               a:=HexNachCard(s);
  118.               GetArg(s,t);
  119.               Testt(t);
  120.               b:=HexNachCard(s);
  121.               Knoten(c,d);
  122.               IF (a=c) AND (b=d) THEN
  123.                  WriteString("...ausloggen darfst Du ");
  124.                  WriteString("dich hier nie!");
  125.                  WriteLn;
  126.                  Terminate(255);
  127.               ELSE
  128.                  Ausgabe(c,d);
  129.               END;
  130.       ELSE
  131.           Fehler;
  132.       END;
  133.       Terminate(0);
  134.   ELSE
  135.       Testt(t);
  136.       a:=HexNachCard(s);
  137.       GetArg(s,t);
  138.       Testt(t);
  139.       b:=HexNachCard(s);
  140.       Knoten(c,d);
  141.       IF (a=c) AND (b=d) THEN
  142.          WriteString("ausloggen darfst Du dich hier nie!");
  143.          WriteLn;
  144.          Terminate(255);
  145.       ELSE
  146.          Ausgabe(c,d);
  147.       END;
  148.   END;
  149. END Knotentest.
  150. (* ------------------------------------------------------ *)
  151. (*                Ende von KNOTEN.MOD                     *)
  152.