IMPLEMENTATION MODULE InitCompilerMods; (* * REPERTOIRE * Release 1.6 * By Charles Bradford and Cole Brecheen * (c) Copyright 1985-1990 PMI * Portland, Oregon * All rights reserved * (503) 236-1788 * * $Header: D:/logfiles/masters/initcomp.jpv 1.1 03 Dec 1990 22:49:22 coleb $ * *) IMPORT ErrorManager; IMPORT LowLevel; IMPORT Lib; IMPORT Storage; IMPORT SYSTEM; IMPORT VStorage; (* IMPORT StrEdit; IMPORT KbdInput; IMPORT IO; IMPORT ProcTrace; IMPORT SmartScreen; IMPORT M2Strings; *) VAR FormerTermProc: PROC; PROCEDURE NewTermProc; BEGIN ErrorManager.DoTermProcs(); FormerTermProc(); END NewTermProc; PROCEDURE DiagAvail( TheSize: CARDINAL ): BOOLEAN; BEGIN RETURN (Storage.Available(TheSize)); END DiagAvail; PROCEDURE DiagAlloc( VAR ThePtr: SYSTEM.ADDRESS; TheSize: CARDINAL ); BEGIN Storage.ALLOCATE( ThePtr, TheSize ); LowLevel.Fill( ThePtr, TheSize, 377C ); END DiagAlloc; PROCEDURE DiagDealloc( VAR ThePtr: SYSTEM.ADDRESS; TheSize: CARDINAL ); BEGIN LowLevel.Fill( ThePtr, TheSize, 377C ); Storage.DEALLOCATE( ThePtr, TheSize ); END DiagDealloc; PROCEDURE AssignProcs(); BEGIN (* VStorage.DosAvail := DiagAvail; VStorage.DosAlloc := DiagAlloc; VStorage.DosDealloc := DiagDealloc; *) Lib.Terminate( NewTermProc, FormerTermProc ); IF NewTermProc = FormerTermProc THEN ErrorManager.WARN( "InitJPI.AssignProcs executed twice; will cause inf loop on exit."); END; END AssignProcs; (* PROCEDURE AddToCallChain(); BEGIN INC( CallRow ); SmartScreen.WriteAt( 1, CallRow, ProcTrace.Get_Name() ); END AddToCallChain; PROCEDURE RemoveFromCallChain(); VAR TmpStr: ARRAY [0..31] OF CHAR; BEGIN StrEdit.AssignStr( ProcTrace.Get_Name(), TmpStr ); SmartScreen.ClearPart( 1, CallRow, M2Strings.Length(TmpStr), CallRow ); DEC( CallRow ); END RemoveFromCallChain; PROCEDURE ErrorBox( TheMessage: ARRAY OF CHAR ): BOOLEAN; VAR dumkey: CARDINAL; dummy: ARRAY [0..255] OF CHAR; BEGIN StrEdit.AssignStr( TheMessage, dummy ); StrEdit.Append( dummy, '. Press C to continue, anything else to abort.' ); IO.WrStr( dummy ); dumkey := KbdInput.KeyHit( KbdInput.AnyKeyNum ); RETURN KbdInput.CAPkey( dumkey ) # ORD('C'); END ErrorBox; *) BEGIN AssignProcs(); (* ErrorManager.AbortConfirmed := ErrorBox; CallRow := 0; ProcTrace.Install; ProcTrace.Entry := AddToCallChain; ProcTrace.Exit := RemoveFromCallChain; *) END InitCompilerMods.