-- JaMInterrupt.mesa -- Written by John Warnock, April 10, 1979 -- Last changed by Doug Wyatt, December 8, 1980 5:46 PM DIRECTORY JaMInterruptDefs, JaMExecDefs USING [SetWakeUp], FrameDefs USING [GlobalFrame, MakeCodeResident], Inline USING [BITOR, BITSHIFT], KeyDefs USING [Keys], Process USING [Detach, DisableTimeout, GetPriority, SetPriority], ProcessDefs USING [CV, DIW, InterruptLevel]; JaMInterrupt: MONITOR IMPORTS JaMExecDefs,FrameDefs,Inline,Process EXPORTS JaMInterruptDefs = BEGIN level: ProcessDefs.InterruptLevel = 11; Keywakeup: CONDITION; DCBHead: POINTER TO CARDINAL = LOOPHOLE[420B]; dcbChain: CARDINAL _ 0; displayOn: BOOLEAN_TRUE; prevwakeup: BOOLEAN_FALSE; prevtoggle: BOOLEAN_FALSE; JaMBreak: ENTRY PROCEDURE = BEGIN wakeup,toggle: BOOLEAN; Process.SetPriority[Process.GetPriority[]+1]; DO WAIT Keywakeup; -- RightShift-Swat means break wakeup_(KeyDefs.Keys.Spare3=down AND KeyDefs.Keys.RightShift=down); IF wakeup AND ~prevwakeup THEN JaMExecDefs.SetWakeUp[TRUE]; prevwakeup_wakeup; -- RightShift-Spare2 means toggle display toggle_(KeyDefs.Keys.Spare2=down AND KeyDefs.Keys.RightShift=down); IF toggle AND ~prevtoggle THEN displayOn_~displayOn; prevtoggle_toggle; -- fix display state IF displayOn#(dcbChain=0) THEN BEGIN IF dcbChain=0 THEN BEGIN --turn off display dcbChain _ DCBHead^; DCBHead^ _ 0; END ELSE BEGIN --turn on display DCBHead^ _ dcbChain; dcbChain _ 0; END; END ENDLOOP; END; SetDisplayOn: PUBLIC ENTRY PROCEDURE[on: BOOLEAN] = BEGIN displayOn_on END; InitJaMBreak: PUBLIC PROCEDURE = BEGIN FrameDefs.MakeCodeResident[FrameDefs.GlobalFrame[JaMBreak]]; Process.DisableTimeout[@Keywakeup]; ProcessDefs.CV[level] _ @Keywakeup; ProcessDefs.DIW^ _ Inline.BITOR[ProcessDefs.DIW^,Inline.BITSHIFT[1,level]]; Process.Detach[FORK JaMBreak[]]; END; END. DKW March 25, 1980 1:34 PM added SetDisplayState DKW April 7, 1980 9:44 AM pressing the interrupt key combination now causes just one wakeup DKW September 29, 1980 12:00 PM WakeUp[] changed to SetWakeUp[TRUE] DKW December 8, 1980 5:46 PM uses new interfaces Inline, Process (635)\731b8B751b13B66b12B