home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / dev / m2 / CycloneModules.lha / modules / txt / DebugLib.mod < prev    next >
Text File  |  1996-09-18  |  3KB  |  143 lines

  1. (*$ StackChk-
  2.     OverflowChk-
  3.     RangeChk-
  4.     NilChk-
  5. *)
  6.  
  7. IMPLEMENTATION MODULE DebugLib;
  8.  
  9. IMPORT GD: GraphicsD;
  10. IMPORT GL: GraphicsL;
  11. IMPORT HW: Hardware;
  12. IMPORT Ascii;
  13. IMPORT EL: ExecL;
  14. IMPORT R:Reg;
  15. FROM SYSTEM IMPORT ASSEMBLE, ADDRESS, TAG, ADR, CAST;
  16.  
  17.  
  18. CONST
  19.    (* entry points to private functions of exec *)
  20.    LVORawPutChar= -516;
  21.    LVORawMayGetChar= -510;
  22.    LVORawIOInit= -504;  (* calling this sets internal serial-hw to 9600 *)
  23.  
  24.  
  25.  
  26. (*$ EntryExitCode- *)
  27. PROCEDURE KPutChar(char{R.D0}: LONGCARD);
  28. BEGIN
  29.    ASSEMBLE(
  30.     MOVE.L    A6,-(A7)
  31.     MOVEA.L EL(A4),A6
  32.     JSR    LVORawPutChar(A6)  (* This is a private *)
  33.     MOVEA.L (A7)+,A6
  34.     RTS
  35.     END);
  36. END KPutChar;
  37.  
  38.  
  39. PROCEDURE KPutStr(s: StrPtr);
  40. VAR
  41.    x{R.D7}: INTEGER;
  42. BEGIN
  43.    x:= 0;
  44.    WHILE s^[x] # 0C DO
  45.       KPutChar(ORD(s^[x]));
  46.       INC(x);
  47.    END;
  48. END KPutStr;
  49.  
  50.  
  51. (*$ EntryExitCode- *)
  52. PROCEDURE KPrintF(str{R.A0}: StrPtr; values{R.A1}: ADDRESS);
  53. BEGIN
  54.    ASSEMBLE(
  55.     MOVEM.L  A2/A6,-(A7)
  56.     LEA      KPutChar(PC),A2
  57.     MOVEA.L  EL(A4),A6
  58.     JSR      EL.RawDoFmt(A6)
  59.     MOVEM.L  (A7)+,A2/A6
  60.     RTS
  61.     END);
  62. END KPrintF;
  63.  
  64.  
  65. (*$ EntryExitCode- *)
  66. PROCEDURE KMayGetChar(): LONGINT;
  67. BEGIN
  68.    ASSEMBLE(
  69.     MOVE.L  A6,-(A7)
  70.     MOVEA.L EL(A4),A6
  71.     JSR     LVORawMayGetChar(A6)  (* This is a private *)
  72.     MOVEA.L (A7)+,A6
  73.     RTS
  74.     END);
  75. END KMayGetChar;
  76.  
  77.  
  78. PROCEDURE KGetChar(): LONGINT;
  79. VAR
  80.    c{R.D7}: LONGINT;
  81. BEGIN
  82.    c:= KMayGetChar();
  83.    WHILE c < 0 DO
  84.       c:= KMayGetChar();
  85.    END;
  86.    RETURN c;
  87. END KGetChar;
  88.  
  89.  
  90. (* Only for complete interface. Do not use *)
  91. PROCEDURE KCmpStr(s1{R.A0}, s2{R.A1}: StrPtr): LONGINT;
  92. VAR
  93.    x{R.D7}: INTEGER;
  94. BEGIN
  95.    x:= 0;
  96.    WHILE (s1^[x] # 0C) & (s1^[x] = s2^[x]) DO
  97.       INC(x);
  98.    END;
  99.  
  100.    RETURN ORD(s1^[x] # s2^[x]);
  101. END KCmpStr;
  102.  
  103.  
  104. (* Code is taken from InOut.ReadLongInt. No backspace handling. *)
  105. PROCEDURE KGetNum(): LONGINT;
  106. VAR
  107.   ch{R.D6}: CHAR;
  108.   d{R.D5}: INTEGER;
  109.   neg: BOOLEAN;
  110.   x{R.D7}: LONGINT;
  111. BEGIN
  112.   x := 0;
  113.   neg := FALSE;
  114.   ch:= CHAR(KGetChar());
  115.   WHILE ch#Ascii.cr DO
  116.      IF ch="-" THEN neg := TRUE;
  117.      ELSIF (ch>="0") AND (ch<="9") THEN
  118.        d := ORD(ch)-ORD("0");
  119.        IF (MAX(LONGINT)-d) DIV 10 >= x THEN x := 10*x+d END;
  120.      END;
  121.      ch:= CHAR(KGetChar());
  122.   END;
  123.   IF neg THEN x := -x END;
  124.   RETURN x;
  125. END KGetNum;
  126.  
  127.  
  128. (* Code from "Guru Book" p. 193 *)
  129. PROCEDURE SetSerial(Baud: LONGCARD);
  130. CONST
  131.    SerclkNtsc= 3579545;
  132.    SerclkPal= 3546895;
  133. BEGIN
  134.    IF GD.pal IN GL.graphicsBase^.displayFlags THEN
  135.       HW.custom.serper:= SerclkPal DIV Baud -1;
  136.    ELSE
  137.       HW.custom.serper:= SerclkNtsc DIV Baud -1;
  138.    END;
  139. END SetSerial;
  140.  
  141.  
  142. END DebugLib.
  143.