INITCOMP.MOD 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. IMPLEMENTATION MODULE InitCompilerMods;
  2. (*
  3. * REPERTOIRE
  4. * Release 1.6
  5. * By Charles Bradford and Cole Brecheen
  6. * (c) Copyright 1985-1990 PMI
  7. * Portland, Oregon
  8. * All rights reserved
  9. * (503) 236-1788
  10. *
  11. * $Header: D:/logfiles/masters/initcomp.jpv 1.1 03 Dec 1990 22:49:22 coleb $
  12. *
  13. *)
  14. IMPORT ErrorManager;
  15. IMPORT LowLevel;
  16. IMPORT Lib;
  17. IMPORT Storage;
  18. IMPORT SYSTEM;
  19. IMPORT VStorage;
  20. (*
  21. IMPORT StrEdit;
  22. IMPORT KbdInput;
  23. IMPORT IO;
  24. IMPORT ProcTrace;
  25. IMPORT SmartScreen;
  26. IMPORT M2Strings;
  27. *)
  28. VAR
  29. FormerTermProc: PROC;
  30. PROCEDURE NewTermProc;
  31. BEGIN
  32. ErrorManager.DoTermProcs();
  33. FormerTermProc();
  34. END NewTermProc;
  35. PROCEDURE DiagAvail( TheSize: CARDINAL ): BOOLEAN;
  36. BEGIN
  37. RETURN (Storage.Available(TheSize));
  38. END DiagAvail;
  39. PROCEDURE DiagAlloc( VAR ThePtr: SYSTEM.ADDRESS; TheSize: CARDINAL );
  40. BEGIN
  41. Storage.ALLOCATE( ThePtr, TheSize );
  42. LowLevel.Fill( ThePtr, TheSize, 377C );
  43. END DiagAlloc;
  44. PROCEDURE DiagDealloc( VAR ThePtr: SYSTEM.ADDRESS; TheSize: CARDINAL );
  45. BEGIN
  46. LowLevel.Fill( ThePtr, TheSize, 377C );
  47. Storage.DEALLOCATE( ThePtr, TheSize );
  48. END DiagDealloc;
  49. PROCEDURE AssignProcs();
  50. BEGIN
  51. (* VStorage.DosAvail := DiagAvail;
  52. VStorage.DosAlloc := DiagAlloc;
  53. VStorage.DosDealloc := DiagDealloc; *)
  54. Lib.Terminate( NewTermProc, FormerTermProc );
  55. IF NewTermProc = FormerTermProc THEN
  56. ErrorManager.WARN(
  57. "InitJPI.AssignProcs executed twice; will cause inf loop on exit.");
  58. END;
  59. END AssignProcs;
  60. (*
  61. PROCEDURE AddToCallChain();
  62. BEGIN
  63. INC( CallRow );
  64. SmartScreen.WriteAt( 1, CallRow, ProcTrace.Get_Name() );
  65. END AddToCallChain;
  66. PROCEDURE RemoveFromCallChain();
  67. VAR
  68. TmpStr: ARRAY [0..31] OF CHAR;
  69. BEGIN
  70. StrEdit.AssignStr( ProcTrace.Get_Name(), TmpStr );
  71. SmartScreen.ClearPart( 1, CallRow, M2Strings.Length(TmpStr), CallRow );
  72. DEC( CallRow );
  73. END RemoveFromCallChain;
  74. PROCEDURE ErrorBox( TheMessage: ARRAY OF CHAR ): BOOLEAN;
  75. VAR
  76. dumkey: CARDINAL;
  77. dummy: ARRAY [0..255] OF CHAR;
  78. BEGIN
  79. StrEdit.AssignStr( TheMessage, dummy );
  80. StrEdit.Append( dummy, '. Press C to continue, anything else to abort.' );
  81. IO.WrStr( dummy );
  82. dumkey := KbdInput.KeyHit( KbdInput.AnyKeyNum );
  83. RETURN KbdInput.CAPkey( dumkey ) # ORD('C');
  84. END ErrorBox;
  85. *)
  86. BEGIN
  87. AssignProcs();
  88. (*
  89. ErrorManager.AbortConfirmed := ErrorBox;
  90. CallRow := 0;
  91. ProcTrace.Install;
  92. ProcTrace.Entry := AddToCallChain;
  93. ProcTrace.Exit := RemoveFromCallChain;
  94. *)
  95. END InitCompilerMods.
  96.