diff --git a/library/SPY b/library/SPY
index 16b6cda5..095dd298 100644
--- a/library/SPY
+++ b/library/SPY
@@ -1,18 +1,15 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED " 4-Jan-2022 14:09:48" {DSK}<Users>kaplan>Local>medley3.5>my-medley>library>SPY.;2 63314  
+(FILECREATED "28-Jul-2023 20:13:45" {DSK}<home>larry>il>medley>library>SPY.;4 64149  
+
+      :EDIT-BY "lmm"
 
       :CHANGES-TO (VARS SPYCOMS)
-                  (FNS SPY.MAKE.TREE)
+                  (FNS \SPY.INTERRUPT SPY.BUFFER.ENTRY SPY.ADD.ENTRY)
 
-      :PREVIOUS-DATE "29-Apr-94 14:13:52" {DSK}<Users>kaplan>Local>medley3.5>my-medley>library>SPY.;1
-)
+      :PREVIOUS-DATE " 4-Jan-2022 14:09:48" {DSK}<home>larry>il>medley>library>SPY.;1)
 
 
-(* ; "
-Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corporation.
-")
-
 (PRETTYCOMPRINT SPYCOMS)
 
 (RPAQQ SPYCOMS
@@ -33,12 +30,13 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
              SPY.UPDATE.TITLE SPY.DELETE SPY.DRAWBOX SPY.BUFFER.ENTRY SPY.BUTTON SPY.END.ENTRY 
              SPY.START SPY.INIT \SPY.INTERRUPT SPY.DUMP.BUFFER SPY.START.ENTRY SPY.ADD.ENTRY 
              SPY.ORIGINAL SPY.OVERFLOW SPY.MERGE.CALLEES SPY.PRINT)
-        (COMS (INITVARS (SPY.BUTTON))
+        (COMS (INITVARS (\BACKGROUND)
+                     (SPY.BUTTON))
               (VARS SPY.OPEN SPY.CLOSED))
-        (VARIABLES SPY.POINTERS)
         (GLOBALVARS SPY.OVERFLOWED \PERIODIC.INTERRUPT SPY.TREE SPY.BUFFER.SIZE SPY.NEXT 
                SPY.BUFFER.THRESHOLD SPY.BUFFER SPY.FREQUENCY SPY.SHOW.THRESHOLD SPY.MAXLINES SPY.FONT
                )
+        (SPECVARS \BACKGROUND)
         (MACROS WITH-SPY WITH.SPY)
         (DECLARE%: DONTCOPY (RECORDS SPYRECORD SPYDATA))
         (INITRECORDS SPYRECORD)
@@ -836,8 +834,11 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
 )
 
 (SPY.BUFFER.ENTRY
-(LAMBDA (N) (* ; "Edited  9-Sep-87 18:27 by Masinter") (COND (SPY.POINTERS (AND (ILEQ (SETQ N (LLSH N 1)) SPY.BUFFER.SIZE) (\GETBASEPTR SPY.BUFFER N))) ((ILEQ N SPY.BUFFER.SIZE) (\VAG2 0 (\GETBASE SPY.BUFFER N)))))
-)
+  [LAMBDA (N)                                                (* ; "Edited 28-Jul-2023 08:16 by lmm")
+                                                          (* ; "Edited  9-Sep-87 18:27 by Masinter")
+    (AND (ILEQ (SETQ N (LLSH N 1))
+               SPY.BUFFER.SIZE)
+         (\GETBASEPTR SPY.BUFFER N])
 
 (SPY.BUTTON
 (LAMBDA (POS) (* gbn " 2-Jun-85 13:12") (PROG ((REG (if POS then (CREATEREGION (fetch XCOORD of POS) (fetch YCOORD of POS) (WIDTHIFWINDOW (BITMAPWIDTH SPY.CLOSED)) (HEIGHTIFWINDOW (BITMAPHEIGHT SPY.CLOSED))) else (GETBOXREGION (WIDTHIFWINDOW (BITMAPWIDTH SPY.CLOSED)) (HEIGHTIFWINDOW (BITMAPHEIGHT SPY.CLOSED)) NIL NIL NIL "Specify region for window %"Spy Control%"")))) (BITBLT SPY.CLOSED NIL NIL (SETQ SPY.BUTTON (CREATEW REG NIL NIL T))) (WINDOWPROP SPY.BUTTON (QUOTE BUTTONEVENTFN) (FUNCTION (LAMBDA (W) (AND (LASTMOUSESTATE UP) (SPY.TOGGLE)))))))
@@ -855,8 +856,34 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
 )
 
 (\SPY.INTERRUPT
-(LAMBDA NIL (* ; "Edited  9-Sep-87 18:32 by Masinter") (SETQ \PERIODIC.INTERRUPT) (* ; "turn off sampling while gathering sample") (PROG ((FRAME (fetch (FX CLINK) (\MYALINK)))) (COND ((IGEQ (if SPY.POINTERS then (LLSH SPY.NEXT 1) else SPY.NEXT) SPY.BUFFER.THRESHOLD) (COND (\INTERRUPTABLE (SPY.DUMP.BUFFER)) (T (* ; "this sample might overflow;  just don't do it") (RETURN))))) (SPY.START.ENTRY) SAMPLELOOP (SPY.ADD.ENTRY (fetch (FX FRAMENAME) FRAME)) (COND ((NOT (fetch (FX INVALIDP) (SETQ FRAME (fetch (FX CLINK) FRAME)))) (GO SAMPLELOOP)) (T (SPY.END.ENTRY)))) (SETQ \PERIODIC.INTERRUPT (QUOTE \SPY.INTERRUPT)))
-)
+  [LAMBDA NIL                                                (* ; "Edited 28-Jul-2023 08:59 by lmm")
+                                                          (* ; "Edited  9-Sep-87 18:32 by Masinter")
+    (DECLARE (SPECVARS \BACKGROUND))
+    [PROG [(FRAME (fetch (FX CLINK)
+                         (\MYALINK]
+          (IF \BACKGROUND
+              THEN (RETURN))
+          (SETQ \PERIODIC.INTERRUPT)                         (* ; 
+                                                           "turn off sampling while gathering sample")
+          [COND
+             ((IGEQ (LLSH SPY.NEXT 1)
+                    SPY.BUFFER.THRESHOLD)
+              (COND
+                 (\INTERRUPTABLE (SPY.DUMP.BUFFER))
+                 (T                                          (* ; 
+                                                      "this sample might overflow;  just don't do it")
+                    (RETURN]
+          (SPY.START.ENTRY)
+      SAMPLELOOP
+          (SPY.ADD.ENTRY (fetch (FX FRAMENAME)
+                                FRAME))
+          (COND
+             ([NOT (fetch (FX INVALIDP)
+                          (SETQ FRAME (fetch (FX CLINK)
+                                             FRAME]
+              (GO SAMPLELOOP))
+             (T (SPY.END.ENTRY]
+    (SETQ \PERIODIC.INTERRUPT '\SPY.INTERRUPT])
 
 (SPY.DUMP.BUFFER
   [LAMBDA NIL                                         (* ; "Edited 28-Apr-94 14:00 by sybalsky")
@@ -885,8 +912,15 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
 )
 
 (SPY.ADD.ENTRY
-(LAMBDA (NAME) (* ; "Edited  9-Sep-87 18:29 by Masinter") (COND (SPY.POINTERS (\PUTBASEPTR SPY.BUFFER (LLSH SPY.NEXT 1) NAME) (COND ((IGEQ (LLSH (add SPY.NEXT 1) 1) SPY.BUFFER.SIZE) (SPY.OVERFLOW)))) (T (OR (LITATOM NAME) (SETQ NAME (QUOTE *FORM*))) (\PUTBASE SPY.BUFFER SPY.NEXT (\LOLOC NAME)) (COND ((IGEQ (add SPY.NEXT 1) SPY.BUFFER.SIZE) (SPY.OVERFLOW))))))
-)
+  [LAMBDA (NAME)                                             (* ; "Edited 28-Jul-2023 08:17 by lmm")
+                                                          (* ; "Edited  9-Sep-87 18:29 by Masinter")
+    (\PUTBASEPTR SPY.BUFFER (LLSH SPY.NEXT 1)
+           NAME)
+    (COND
+       ((IGEQ (LLSH (add SPY.NEXT 1)
+                    1)
+              SPY.BUFFER.SIZE)
+        (SPY.OVERFLOW])
 
 (SPY.ORIGINAL
   [LAMBDA (TREES)                                     (* ; "Edited 28-Apr-94 14:00 by sybalsky")
@@ -951,6 +985,8 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
                            else (fetch (SPYRECORD NAME) of X])
 )
 
+(RPAQ? \BACKGROUND )
+
 (RPAQ? SPY.BUTTON )
 
 (RPAQQ SPY.OPEN #*(56 59)@@@@@@@@@@@@@@@@GLOLLC@@@@@@@@@@LFLFLC@@@@@@@@@@LFLFFF@@@@@@@@@@O@LFFF@@GLOL@@@@GLLFCL@@LFLF@@@@ANOLAH@@LFLF@@@@LFL@AH@@LFLF@@@@LFL@AH@@LFLF@@@@LFL@AH@@LFLF@@@@GLL@AH@@GLLF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IEGOOJ@@@@J@@HJ@@BOONHH@@BA@@@@HKOOOFNJHA@D@@HHBGOKNOEB@@@B@@@EDOMMBIGNJH@I@@@HBONJMEEKE@HA@@ECONMJB@KOOJCE@@@KOOJJHEAONHDJ@@KONJD@@@@AONIE@@GOMJH@@@BMOJEB@@FOB@@D@B@@AOEM@@GODDHA@@@AENMG@@KLH@@D@@@@BONM@@GM@HB@@@@BEFKG@@JJDBH@@@@@@INM@@ODA@DDD@@@BEOG@@@KJOMKB@@@AEEK@@JJEBNLIB@@DEOG@@DKNOKONHDDABFI@@BBKFOOMD@AAEFM@@IEIABEEOD@@@JJ@@EFLJKKGEB@EFEB@@J@@BOOHNHD@AEE@@EEEDONKEJ@EEBJ@@H@IOOOOOIEB@HD@@MDDOOOOMDHIEBJ@@BAOKOOOGONNJ@A@@HBKGOOOOOJKHBE@@DHLKMGMGOONJ@I@@@EMBOOJOOOKHBD@@BKDEOOJAOONJ@B@@BKIBOOHEOOOH@D@@HNDAONJBOJDDAA@@BO@DMGDEGOEB@A@@A@DBFJ@BL@@@@D@@@E@ICMAEOJDH@A@@B@@D@ADI@@@@BD@@HDA@JDBEFHH@@A@@@@@H@IDID@@B@D@@AA@A@@@B@A@@AA@@@@@D@@B@J@@A@A@@@@@H@@@D@@@@@J@@@A@@@D@AB@@@BA@@@@@@@@E@@@@@@D@@HH@@@B@@@@@@@B@@
@@ -958,13 +994,15 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
 
 (RPAQQ SPY.CLOSED #*(56 59)@@@@@@@@@@@@@@@@GLOLLC@@@@CHND@@LFLFLC@@@@FAHA@@LFLFFF@@@@FAH@@@O@LFFF@@GLOKNA@@GLLFCL@@LFFAH@@@ANOLAH@@LFFAHA@@LFL@AH@@LFFAH@@@LFL@AH@@LFFAHJ@@LFL@AH@@LFFAH@@@GLL@AH@@GLFAHB@@@@@@@@@@@@@@@D@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@IEGOOJ@@@@J@@HJ@@BOONHH@@BA@@@@HKOOOFNJHA@D@@HHBGOKNOEB@@@B@@@EDOMMBIGNJH@I@@@HBONJMEEKE@HA@@ECONMJB@KOOBCE@@@KOOJJHEAOOHDJ@@KONJD@@@@AONIE@@GOMJH@@@BMOJEB@@FOB@@D@B@@AOEM@@GODDHA@@@AENMG@@KLH@@D@@@@BONM@@GM@HB@@@@BEFKG@@JJDBH@@@@@@INM@@ODA@DDD@@@BEOG@@@KJOMKB@@@AEEK@@JJEBNLIB@@DEOG@@DKNOKONHDDABFI@@BBKFOOOD@AAEFM@@IEIABEGND@@@JJ@@EFLLDGGGB@EFEB@@J@@@@@IOHD@AEE@@EEAAEA@FI@EEBJ@@H@HDL@EAME@@HD@@MDEB@NHDJHDABJ@@BAB@@ABICF@J@A@@HB@KDDI@BLI@BE@@DID@A@@JHKDJ@I@@@D@DDDE@EBKEBD@@BAD@@@@A@OED@B@@BHAAAAA@CGNH@D@@H@D@@@@@MOE@AA@@BK@DDDDDGOJJ@A@@B@DA@B@CODFBBD@@EE@HBIAENK@@@A@@BLHBDDDON@@@BD@@KGDHJJIGJHB@@A@@BOBBECGOLB@B@D@@AAMLMKGOH@@@AA@@@GGONNON@H@A@A@@@IKKKKOLJ@@@@J@@@DFOKOO@D@@@BA@@@AEGMMD@A@@@@D@@HHBJMBLA@@@@@B@@
 )
-
-(DEFGLOBALVAR SPY.POINTERS T)
 (DECLARE%: DOEVAL@COMPILE DONTCOPY
 
 (GLOBALVARS SPY.OVERFLOWED \PERIODIC.INTERRUPT SPY.TREE SPY.BUFFER.SIZE SPY.NEXT SPY.BUFFER.THRESHOLD
        SPY.BUFFER SPY.FREQUENCY SPY.SHOW.THRESHOLD SPY.MAXLINES SPY.FONT)
 )
+(DECLARE%: DOEVAL@COMPILE DONTCOPY
+
+(SPECVARS \BACKGROUND)
+)
 (DECLARE%: EVAL@COMPILE 
 
 (PUTPROPS WITH-SPY MACRO [(FORM)
@@ -1014,19 +1052,18 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
 )
 
 (MOVD? 'NILL 'MODERNWINDOW)
-(PUTPROPS SPY COPYRIGHT ("Venue & Xerox Corporation" 1984 1985 1987 1988 1990 1991 1993 1994))
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (4753 7360 (SPYOBJ 4763 . 5052) (SPYOBJ.BUTTON 5054 . 5164) (SPYOBJ.SAVE 5166 . 5285) (
-SPYOBJ.COPY 5287 . 5349) (SPYOBJ.GET 5351 . 5480) (SPYOBJ.IMAGEBOX 5482 . 6006) (SPYOBJ.DISPLAY 6008
- . 6307) (SPYOBJ.LABEL 6309 . 6445) (SPYOBJ.HEIGHT 6447 . 6660) (SPYOBJ.COPYIN 6662 . 6705) (
-SPY.COPYBUTTON 6707 . 6799) (SPY.MERGEINFO 6801 . 7358)) (18202 59509 (SPY.FIND.TREE 18212 . 18621) (
-SPY.TOGGLE 18623 . 18813) (SPY.TREE 18815 . 19927) (SPY.LEGEND 19929 . 20279) (SPY.GRAPH.EDITOR 20281
- . 29846) (SPY.END 29848 . 30090) (SPY.MAKEGRAPHNODES 30092 . 32192) (SPY.MAX 32194 . 33077) (
-SPY.MERGE 33079 . 34510) (SPY.MERGE1 34512 . 40995) (SPY.MERGETREE 40997 . 43927) (SPY.NEXT.TREE 43929
- . 44603) (SPY.SUM 44605 . 45294) (SPY.TITLE 45296 . 45513) (SPY.MAKE.TREE 45515 . 47540) (
-SPY.UPDATE.TITLE 47542 . 50118) (SPY.DELETE 50120 . 50655) (SPY.DRAWBOX 50657 . 51182) (
-SPY.BUFFER.ENTRY 51184 . 51422) (SPY.BUTTON 51424 . 51993) (SPY.END.ENTRY 51995 . 52075) (SPY.START 
-52077 . 52361) (SPY.INIT 52363 . 52598) (\SPY.INTERRUPT 52600 . 53236) (SPY.DUMP.BUFFER 53238 . 54698)
- (SPY.START.ENTRY 54700 . 54828) (SPY.ADD.ENTRY 54830 . 55212) (SPY.ORIGINAL 55214 . 56041) (
-SPY.OVERFLOW 56043 . 56144) (SPY.MERGE.CALLEES 56146 . 59182) (SPY.PRINT 59184 . 59507)))))
+  (FILEMAP (NIL (4707 7314 (SPYOBJ 4717 . 5006) (SPYOBJ.BUTTON 5008 . 5118) (SPYOBJ.SAVE 5120 . 5239) (
+SPYOBJ.COPY 5241 . 5303) (SPYOBJ.GET 5305 . 5434) (SPYOBJ.IMAGEBOX 5436 . 5960) (SPYOBJ.DISPLAY 5962
+ . 6261) (SPYOBJ.LABEL 6263 . 6399) (SPYOBJ.HEIGHT 6401 . 6614) (SPYOBJ.COPYIN 6616 . 6659) (
+SPY.COPYBUTTON 6661 . 6753) (SPY.MERGEINFO 6755 . 7312)) (18156 60387 (SPY.FIND.TREE 18166 . 18575) (
+SPY.TOGGLE 18577 . 18767) (SPY.TREE 18769 . 19881) (SPY.LEGEND 19883 . 20233) (SPY.GRAPH.EDITOR 20235
+ . 29800) (SPY.END 29802 . 30044) (SPY.MAKEGRAPHNODES 30046 . 32146) (SPY.MAX 32148 . 33031) (
+SPY.MERGE 33033 . 34464) (SPY.MERGE1 34466 . 40949) (SPY.MERGETREE 40951 . 43881) (SPY.NEXT.TREE 43883
+ . 44557) (SPY.SUM 44559 . 45248) (SPY.TITLE 45250 . 45467) (SPY.MAKE.TREE 45469 . 47494) (
+SPY.UPDATE.TITLE 47496 . 50072) (SPY.DELETE 50074 . 50609) (SPY.DRAWBOX 50611 . 51136) (
+SPY.BUFFER.ENTRY 51138 . 51481) (SPY.BUTTON 51483 . 52052) (SPY.END.ENTRY 52054 . 52134) (SPY.START 
+52136 . 52420) (SPY.INIT 52422 . 52657) (\SPY.INTERRUPT 52659 . 54064) (SPY.DUMP.BUFFER 54066 . 55526)
+ (SPY.START.ENTRY 55528 . 55656) (SPY.ADD.ENTRY 55658 . 56090) (SPY.ORIGINAL 56092 . 56919) (
+SPY.OVERFLOW 56921 . 57022) (SPY.MERGE.CALLEES 57024 . 60060) (SPY.PRINT 60062 . 60385)))))
 STOP
diff --git a/library/SPY.LCOM b/library/SPY.LCOM
index 7bea1f1f..cff2cb33 100644
Binary files a/library/SPY.LCOM and b/library/SPY.LCOM differ
diff --git a/lispusers/BACKGROUND-YIELD b/lispusers/BACKGROUND-YIELD
index c028b822..00d4ded4 100644
--- a/lispusers/BACKGROUND-YIELD
+++ b/lispusers/BACKGROUND-YIELD
@@ -1,21 +1,23 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED "14-Nov-2021 22:05:58" {DSK}<home>larry>medley>lispusers>BACKGROUND-YIELD.;2 1597   
+(FILECREATED "28-Jul-2023 09:49:24" {DSK}<home>larry>il>medley>lispusers>BACKGROUND-YIELD.;2 1770   
 
-      changes to%:  (VARS BACKGROUND-YIELD)
+      :EDIT-BY "lmm"
 
-      previous date%: "20-Sep-2021 11:37:28" {DSK}<home>larry>medley>lispusers>BACKGROUND-YIELD.;1)
+      :CHANGES-TO (FNS BACKGROUND-YIELD)
+
+      :PREVIOUS-DATE "14-Nov-2021 22:05:58" {DSK}<home>larry>il>medley>lispusers>BACKGROUND-YIELD.;1
+)
 
 
 (PRETTYCOMPRINT BACKGROUND-YIELDCOMS)
 
 (RPAQQ BACKGROUND-YIELDCOMS (
-                                 (* ;; 
-                               " Add a call to BACKGROUNDFNS to yield when not otherwise busy")
+                             (* ;; " Add a call to BACKGROUNDFNS to yield when not otherwise busy")
 
-                                 (FNS BACKGROUND-YIELD INIT-YIELD)
-                                 (DECLARE%: DONTEVAL@LOAD DOCOPY (P (INIT-YIELD T)))
-                                 (VARS BACKGROUND-YIELD)))
+                             (FNS BACKGROUND-YIELD INIT-YIELD)
+                             (DECLARE%: DONTEVAL@LOAD DOCOPY (P (INIT-YIELD T)))
+                             (VARS BACKGROUND-YIELD)))
 
 
 
@@ -24,10 +26,13 @@
 (DEFINEQ
 
 (BACKGROUND-YIELD
-  [LAMBDA NIL                                          (* ; "Edited 20-Sep-2021 11:37 by larry")
-    (IF (FIXP BACKGROUND-YIELD)
-        THEN (SUBRCALL YIELD BACKGROUND-YIELD)
-              (SUBRCALL CAUSE-INTERRUPT])
+  [LAMBDA NIL                                                (* ; "Edited 28-Jul-2023 09:11 by lmm")
+                                                           (* ; "Edited 20-Sep-2021 11:37 by larry")
+    (LET ((\BACKGROUND T))
+         (DECLARE (SPECVARS \BACKGROUND))
+         (IF (FIXP BACKGROUND-YIELD)
+             THEN (SUBRCALL YIELD BACKGROUND-YIELD)
+                  (SUBRCALL CAUSE-INTERRUPT])
 
 (INIT-YIELD
   [LAMBDA (ONP)                                        (* ; "Edited 19-Sep-2021 13:32 by larry")
@@ -46,5 +51,5 @@
 
 (RPAQQ BACKGROUND-YIELD 833333)
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (833 1482 (BACKGROUND-YIELD 843 . 1098) (INIT-YIELD 1100 . 1480)))))
+  (FILEMAP (NIL (806 1655 (BACKGROUND-YIELD 816 . 1271) (INIT-YIELD 1273 . 1653)))))
 STOP
diff --git a/lispusers/BACKGROUND-YIELD.LCOM b/lispusers/BACKGROUND-YIELD.LCOM
index d73bd823..3e46012b 100644
Binary files a/lispusers/BACKGROUND-YIELD.LCOM and b/lispusers/BACKGROUND-YIELD.LCOM differ
diff --git a/sources/PROC b/sources/PROC
index af933e05..e4be1032 100644
--- a/sources/PROC
+++ b/sources/PROC
@@ -1,18 +1,14 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
-(FILECREATED "17-Jun-99 21:58:52" {DSK}<project>medley3.5>sources>PROC.;2 173526 
 
-      changes to%:  (RECORDS MONITORLOCK)
+(FILECREATED "29-Jul-2023 11:47:41" {DSK}<home>larry>il>medley>sources>PROC.;7 176222 
 
-      previous date%: "31-Jan-98 18:03:02" {DSK}<project>medley3.5>sources>PROC.;1)
+      :EDIT-BY "lmm"
 
+      :CHANGES-TO (VARS PROCCOMS)
+                  (FNS \BACKGROUND.PROCESS)
+
+      :PREVIOUS-DATE "28-Jul-2023 21:06:03" {DSK}<home>larry>il>medley>sources>PROC.;6)
 
-(* ; "
-Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1990, 1991, 1992, 1993, 1998, 1999 by Venue & Xerox Corporation.  All rights reserved.
-The following program was created in 1982 but has not been published
-within the meaning of the copyright law, is furnished under license,
-and may not be used, copied and/or disclosed except in accordance
-with the terms of said license.
-")
 
 (PRETTYCOMPRINT PROCCOMS)
 
@@ -22,7 +18,7 @@ with the terms of said license.
                      (CONSTANTS \PSTAT.WAITING \PSTAT.RUNNING \PSTAT.DELETED))
               (INITRECORDS PROCESS PROCESSQUEUE)
               (SYSRECORDS PROCESS PROCESSQUEUE))
-        [COMS                                                (* ; "User entries")
+        [COMS                                                (* ; "User entries")
               (FNS PROCESSWORLD ADD.PROCESS DEL.PROCESS PROCESS.RETURN FIND.PROCESS MAP.PROCESSES 
                    PROCESSP RELPROCESSP RESTART.PROCESS WAKE.PROCESS SUSPEND.PROCESS PROCESS.RESULT 
                    PROCESS-STATUS PROCESS.FINISHEDP)
@@ -37,27 +33,27 @@ with the terms of said license.
               (GLOBALVARS TTY.PROCESS.DEFAULT \TTY.PROCESS.EVENT \PROCESS.NAME.TABLE)
               (FNS PROCESSPROP PROCESS.NAME PROCESS.WINDOW)
               (PROP ARGNAMES PROCESSPROP ADD.PROCESS)
-              (COMS                                          (* ; "Temporary")
+              (COMS                                          (* ; "Temporary")
                     (P (MOVD? 'PROCESS.RETURN 'KILL.ME NIL T]
         (COMS (FNS DISMISS BLOCK WAITFORINPUT \WAITFORSYSBUFP)
-                                                             (* ; "Used to be a GLOBALRESOURCES")
+                                                             (* ; "Used to be a GLOBALRESOURCES")
               (DECLARE%: DONTCOPY (RESOURCES \DISMISSTIMER))
               (INITRESOURCES \DISMISSTIMER))
         (COMS (FNS EVAL.AS.PROCESS EVAL.IN.TTY.PROCESS)
               
-              (* ;; "The PROCESS.WAIT macro is an augmentation to BLOCK, waiting for a condition to come true, or a timeout, or a wakeup")
+              (* ;; "The PROCESS.WAIT macro is an augmentation to BLOCK, waiting for a condition to come true, or a timeout, or a wakeup")
 
               (MACROS PROCESS.WAIT)
               (FNS PROCESS.READ PROCESS.EVALV PROCESS.EVAL \PROCESS.EVAL1 PROCESS.APPLY 
                    \PROCESS.APPLY1)
-                                                             (* ; 
-                          "Standard values for WAKEREASON -- PSTAT.TIMEDOUT is the only public one")
+                                                             (* ; 
+                            "Standard values for WAKEREASON -- PSTAT.TIMEDOUT is the only public one")
               (VARS (PSTAT.WAKEUP "default WakeUp")
                     (PSTAT.TIMEDOUT "{time interval expired}")
                     (PSTAT.QUIT "Quit")
                     (\PSTAT.NORESULT "{no result yet}"))
               (GLOBALVARS PSTAT.WAKEUP PSTAT.TIMEDOUT PSTAT.QUIT \PSTAT.NORESULT))
-        (COMS                                                (* ; "Event stuff")
+        (COMS                                                (* ; "Event stuff")
               (DECLARE%: DONTCOPY (RECORDS EVENT))
               (INITRECORDS EVENT)
               (SYSRECORDS EVENT)
@@ -66,7 +62,7 @@ with the terms of said license.
               (MACROS AWAIT.CONDITION)
               (INITVARS (\PROCESS.AFTEREXIT.EVENT))
               (GLOBALVARS \PROCESS.AFTEREXIT.EVENT))
-        (COMS                                                (* ; "Monitor stuff")
+        (COMS                                                (* ; "Monitor stuff")
               (DECLARE%: DONTCOPY (RECORDS MONITORLOCK)
                      (MACROS .RELEASE.LOCK.))
               (INITRECORDS MONITORLOCK)
@@ -74,7 +70,11 @@ with the terms of said license.
               (FNS OBTAIN.MONITORLOCK CREATE.MONITORLOCK RELEASE.MONITORLOCK SI::MONITOR-UNWIND 
                    MONITOR.AWAIT.EVENT \MONITORLOCK.DEFPRINT)
               (MACROS WITH.MONITOR WITH.FAST.MONITOR))
-        (COMS (FNS \MAKE.PROCESS0 \MAKE.PROCESS1 \PROCESS.MOVEFRAME \RELEASE.PROCESS \UNWIND.PROCESS
+        (COMS (EXPORT (SPECVARS \BACKGROUND)
+                     (GLOBALVARS \IGNORE.BACKGROUND))
+              (INITVARS (\BACKGROUND NIL)
+                     (\IGNORE.BACKGROUND T))
+              (FNS \MAKE.PROCESS0 \MAKE.PROCESS1 \PROCESS.MOVEFRAME \RELEASE.PROCESS \UNWIND.PROCESS
                    \MAYBEBLOCK \BACKGROUND.PROCESS \MOUSE.PROCESS \TIMER.PROCESS 
                    \PROCESS.RELEASE.LOCKS \SET.PROCESS.NAME \PROCESS.DEFPRINT)
               (FNS \START.PROCESSES \PROCESS.GO.TO.SLEEP \PROC.RESUME \RUN.PROCESS \SUSPEND.PROCESS 
@@ -82,9 +82,9 @@ with the terms of said license.
               (DECLARE%: DONTCOPY (MACROS \RESCHEDULE)))
         (COMS (FNS \PROCESS.INIT \PROCESS.EVENTFN \PROCESS.BEFORE.LOGOUT \PROCESS.AFTER.EXIT 
                    \PROCESS.RESET.TIMERS \PROC.AFTER.WINDOWWORLD \TURN.ON.PROCESSES)
-                                                             (* ; "Redefinitions")
+                                                             (* ; "Redefinitions")
               (FNS \PROC.CODEFORTFRAME \PROC.REPEATEDLYEVALQT))
-        (COMS                                                (* ; "switching stacks")
+        (COMS                                                (* ; "switching stacks")
               (FNS BREAK.PROCESS \SELECTPROCESS \PROCESS.MAKEFRAME \PROCESS.MAKEFRAME0))
         (INITVARS (%#MYHANDLE#)
                (%#SCHEDULER#)
@@ -117,7 +117,7 @@ with the terms of said license.
                             PROC.DEFAULT.PRIORITY \PROC.RUN.NEXT.FLG \SYSTEMTIMERVARS)
                      (MACROS ALIVEPROCP DEADPROCP \COERCE.TO.PROCESS)
                      (LOCALVARS . T)))
-        (COMS                                                (* ; "Debugging")
+        (COMS                                                (* ; "Debugging")
               (FNS \CHECK.PQUEUE)
               (FNS PPROC PPROCWINDOW PPROCREPAINTFN PPROCRESHAPEFN PPROCEXTENT PPROC1 
                    PROCESS.STATUS.WINDOW \PSW.SELECTED \PSWOP.SELECTED PROCESS.BACKTRACE 
@@ -139,8 +139,8 @@ with the terms of said license.
                (P (DEFPRINT 'PROCESS (FUNCTION \PROCESS.DEFPRINT))
                   (DEFPRINT 'EVENT (FUNCTION \EVENT.DEFPRINT))
                   (DEFPRINT 'MONITORLOCK (FUNCTION \MONITORLOCK.DEFPRINT))
-                                                             (* ; 
-                                          "\process.init must come last, since it does a HARDRESET")
+                                                             (* ; 
+                                            "\process.init must come last, since it does a HARDRESET")
                   (\PROCESS.INIT)))
         (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
                                                                              (NLAML)
@@ -149,80 +149,80 @@ with the terms of said license.
 (DECLARE%: DONTCOPY 
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE
 
-(DATATYPE PROCESS ((PROCFX0 WORD)                        (* ; 
-                                                       "= \STACKHI to make this look like a STACKP")
-                       (PROCFX WORD)                         (* ; 
-                                                  "Stack pointer to this context when it is asleep")
-                       (PROCSTATUS BYTE)                     (* ; "Running or waiting")
-                       (PROCNAME POINTER)                    (* ; 
-                                                        "Name for convenience in type-in reference")
-                       (PROCPRIORITY BYTE)                   (* ; 
-                                                        "Priority level, 0-4.  Not currently used.")
-                       (PROCQUEUE POINTER)                   (* ; 
-                                                          "Queue of processes at the same priority")
-                       (NIL BYTE)
-                       (NEXTPROCHANDLE POINTER)              (* ; "Pointer to next one")
-                       (PROCTIMERSET FLAG)                   (* ; 
-                                                 "True if PROCWAKEUPTIMER has an interesting value")
-                       (PROCBEINGDELETED FLAG)               (* ; 
-                            "True if proc was deleted, but hasn't been removed from \PROCESSES yet")
-                       (PROCDELETED FLAG)
-                       (PROCSYSTEMP FLAG)
-                       (PROCNEVERSTARTED FLAG)
-                       (NIL FLAG)
-                       (NIL FLAG)
-                       (NIL FLAG)
-                       (PROCWAKEUPTIMER POINTER)             (* ; 
-                                         "a largep recording the time this proc last went to sleep")
-                       (PROCTIMERLINK POINTER)               (* ; "For linking proc in timer queue")
-                       (PROCTIMERBOX POINTER)                (* ; 
-                    "Scratch box to use for PROCWAKEUPTIMER when user does not give one explicitly")
-                       (WAKEREASON POINTER)                  (* ; 
-   "Reason process is being run.  From WAKE.PROCESS or timer or event wakeup;  T from simple BLOCK")
-                       (PROCEVENTORLOCK POINTER)             (* ; 
-                                              "EVENT or MONITOR lock that this proc is waiting for")
-                       (PROCFORM POINTER)                    (* ; "Form to EVAL to start it going")
-                       (RESTARTABLE POINTER)                 (* ; 
-            "T = autorestart on error, HARDRESET = restart only on hard reset, NIL = never restart")
-                       (PROCWINDOW POINTER)                  (* ; 
-                                                           "Window this process lives in, if any")
-                       (PROCFINISHED POINTER)                (* ; 
-                       "True if proc finished.  Value is indication of how: NORMAL, DELETED, ERROR")
-                       (PROCRESULT POINTER)                  (* ; 
-                                                        "Value it returned if it finished normally")
-                       (PROCFINISHEVENT POINTER)             (* ; 
-                                                 "Optional EVENT to be notified when proc finishes")
-                       (PROCMAILBOX POINTER)                 (* ; "Message queue")
-                       (PROCDRIBBLEOUTPUT POINTER)           (* ; 
-                                                     "Binding for *DRIBBLE-OUTPUT* in this process")
-                       (PROCINFOHOOK POINTER)                (* ; 
-                                                "Optional user fn that displays info about process")
-                       (PROCTYPEAHEAD POINTER)               (* ; 
-                                                       "Buffer of typeahead destined for this proc")
-                       (PROCREMOTEINFO POINTER)              (* ; "For Enterprise")
-                       (PROCUSERDATA POINTER)                (* ; "For PROCESSPROP")
-                       (PROCEVENTLINK POINTER)               (* ; "Used to maintain EVENT queues")
-                       (PROCAFTEREXIT POINTER)               (* ; 
-                                 "What to do with this process when coming back from a LOGOUT, etc")
-                       (PROCBEFOREEXIT POINTER)              (* ; "If DON'T, can't logout")
-                       (PROCOWNEDLOCKS POINTER)              (* ; 
-                                                           "Pointer to first lock I currently own")
-                       (PROCEVAPPLYRESULT POINTER)           (* ; 
-                                    "For PROCESS.EVAL and PROCESS.APPLY when WAITFORRESULT is true")
-                       (PROCTTYENTRYFN POINTER)              (* ; 
-                                          "Is applied to a process when it becomes the tty process")
-                       (PROCTTYEXITFN POINTER)               (* ; 
-                                     "Is applied to a process when it ceases to be the tty process")
-                       (PROCHARDRESETINFO POINTER)           (* ; 
-                                         "HARDRESET stores info about unwind-protect cleanups here")
-                       (PROCRESTARTFORM POINTER)             (* ; 
-                                                     "use this instead of PROCFORM when restarting")
-                       (PROCOLDTTYPROC POINTER)              (* ; 
-                                                          "Process that had the tty when we got it")
-                       (NIL POINTER)                         (* ; "For expansion")
-                       )
-                      PROCTIMERBOX _ (CREATECELL \FIXP)
-                      PROCFX0 _ \STACKHI)
+(DATATYPE PROCESS ((PROCFX0 WORD)                            (* ; 
+                                                         "= \STACKHI to make this look like a STACKP")
+                   (PROCFX WORD)                             (* ; 
+                                                    "Stack pointer to this context when it is asleep")
+                   (PROCSTATUS BYTE)                         (* ; "Running or waiting")
+                   (PROCNAME POINTER)                        (* ; 
+                                                          "Name for convenience in type-in reference")
+                   (PROCPRIORITY BYTE)                       (* ; 
+                                                          "Priority level, 0-4.  Not currently used.")
+                   (PROCQUEUE POINTER)                       (* ; 
+                                                            "Queue of processes at the same priority")
+                   (NIL BYTE)
+                   (NEXTPROCHANDLE POINTER)                  (* ; "Pointer to next one")
+                   (PROCTIMERSET FLAG)                       (* ; 
+                                                   "True if PROCWAKEUPTIMER has an interesting value")
+                   (PROCBEINGDELETED FLAG)                   (* ; 
+                              "True if proc was deleted, but hasn't been removed from \PROCESSES yet")
+                   (PROCDELETED FLAG)
+                   (PROCSYSTEMP FLAG)
+                   (PROCNEVERSTARTED FLAG)
+                   (NIL FLAG)
+                   (NIL FLAG)
+                   (NIL FLAG)
+                   (PROCWAKEUPTIMER POINTER)                 (* ; 
+                                           "a largep recording the time this proc last went to sleep")
+                   (PROCTIMERLINK POINTER)                   (* ; "For linking proc in timer queue")
+                   (PROCTIMERBOX POINTER)                    (* ; 
+                      "Scratch box to use for PROCWAKEUPTIMER when user does not give one explicitly")
+                   (WAKEREASON POINTER)                      (* ; 
+     "Reason process is being run.  From WAKE.PROCESS or timer or event wakeup;  T from simple BLOCK")
+                   (PROCEVENTORLOCK POINTER)                 (* ; 
+                                                "EVENT or MONITOR lock that this proc is waiting for")
+                   (PROCFORM POINTER)                        (* ; "Form to EVAL to start it going")
+                   (RESTARTABLE POINTER)                     (* ; 
+              "T = autorestart on error, HARDRESET = restart only on hard reset, NIL = never restart")
+                   (PROCWINDOW POINTER)                      (* ; 
+                                                             "Window this process lives in, if any")
+                   (PROCFINISHED POINTER)                    (* ; 
+                         "True if proc finished.  Value is indication of how: NORMAL, DELETED, ERROR")
+                   (PROCRESULT POINTER)                      (* ; 
+                                                          "Value it returned if it finished normally")
+                   (PROCFINISHEVENT POINTER)                 (* ; 
+                                                   "Optional EVENT to be notified when proc finishes")
+                   (PROCMAILBOX POINTER)                     (* ; "Message queue")
+                   (PROCDRIBBLEOUTPUT POINTER)               (* ; 
+                                                       "Binding for *DRIBBLE-OUTPUT* in this process")
+                   (PROCINFOHOOK POINTER)                    (* ; 
+                                                  "Optional user fn that displays info about process")
+                   (PROCTYPEAHEAD POINTER)                   (* ; 
+                                                         "Buffer of typeahead destined for this proc")
+                   (PROCREMOTEINFO POINTER)                  (* ; "For Enterprise")
+                   (PROCUSERDATA POINTER)                    (* ; "For PROCESSPROP")
+                   (PROCEVENTLINK POINTER)                   (* ; "Used to maintain EVENT queues")
+                   (PROCAFTEREXIT POINTER)                   (* ; 
+                                   "What to do with this process when coming back from a LOGOUT, etc")
+                   (PROCBEFOREEXIT POINTER)                  (* ; "If DON'T, can't logout")
+                   (PROCOWNEDLOCKS POINTER)                  (* ; 
+                                                             "Pointer to first lock I currently own")
+                   (PROCEVAPPLYRESULT POINTER)               (* ; 
+                                      "For PROCESS.EVAL and PROCESS.APPLY when WAITFORRESULT is true")
+                   (PROCTTYENTRYFN POINTER)                  (* ; 
+                                            "Is applied to a process when it becomes the tty process")
+                   (PROCTTYEXITFN POINTER)                   (* ; 
+                                       "Is applied to a process when it ceases to be the tty process")
+                   (PROCHARDRESETINFO POINTER)               (* ; 
+                                           "HARDRESET stores info about unwind-protect cleanups here")
+                   (PROCRESTARTFORM POINTER)                 (* ; 
+                                                       "use this instead of PROCFORM when restarting")
+                   (PROCOLDTTYPROC POINTER)                  (* ; 
+                                                            "Process that had the tty when we got it")
+                   (NIL POINTER)                             (* ; "For expansion")
+                   )
+                  PROCTIMERBOX _ (CREATECELL \FIXP)
+                  PROCFX0 _ \STACKHI)
 )
 
 (/DECLAREDATATYPE 'PROCESS
@@ -281,15 +281,15 @@ with the terms of said license.
 
 (DECLARE%: EVAL@COMPILE
 
-(DATATYPE PROCESSQUEUE ((PQPRIORITY BYTE)                (* ; 
-                                                        "Priority for the processes in thie queue.")
-                            (PQHIGHER POINTER)               (* ; "Next higher-prioirty queue")
-                            (PQLOWER POINTER)                (* ; "Next lower")
-                            (PQNEXT POINTER)                 (* ; 
-                                       "The process currently running or runnable at this priority")
-                            (PQLAST POINTER)                 (* ; 
-                                              "The proc previous to it.  PQNEXT might be redundant")
-                            ))
+(DATATYPE PROCESSQUEUE ((PQPRIORITY BYTE)                    (* ; 
+                                                          "Priority for the processes in thie queue.")
+                        (PQHIGHER POINTER)                   (* ; "Next higher-prioirty queue")
+                        (PQLOWER POINTER)                    (* ; "Next lower")
+                        (PQNEXT POINTER)                     (* ; 
+                                         "The process currently running or runnable at this priority")
+                        (PQLAST POINTER)                     (* ; 
+                                                "The proc previous to it.  PQNEXT might be redundant")
+                        ))
 )
 
 (/DECLAREDATATYPE 'PROCESSQUEUE '(BYTE POINTER POINTER POINTER POINTER)
@@ -374,55 +374,55 @@ with the terms of said license.
 (ADDTOVAR SYSTEMRECLST
 
 (DATATYPE PROCESS ((PROCFX0 WORD)
-                       (PROCFX WORD)
-                       (PROCSTATUS BYTE)
-                       (PROCNAME POINTER)
-                       (PROCPRIORITY BYTE)
-                       (PROCQUEUE POINTER)
-                       (NIL BYTE)
-                       (NEXTPROCHANDLE POINTER)
-                       (PROCTIMERSET FLAG)
-                       (PROCBEINGDELETED FLAG)
-                       (PROCDELETED FLAG)
-                       (PROCSYSTEMP FLAG)
-                       (PROCNEVERSTARTED FLAG)
-                       (NIL FLAG)
-                       (NIL FLAG)
-                       (NIL FLAG)
-                       (PROCWAKEUPTIMER POINTER)
-                       (PROCTIMERLINK POINTER)
-                       (PROCTIMERBOX POINTER)
-                       (WAKEREASON POINTER)
-                       (PROCEVENTORLOCK POINTER)
-                       (PROCFORM POINTER)
-                       (RESTARTABLE POINTER)
-                       (PROCWINDOW POINTER)
-                       (PROCFINISHED POINTER)
-                       (PROCRESULT POINTER)
-                       (PROCFINISHEVENT POINTER)
-                       (PROCMAILBOX POINTER)
-                       (PROCDRIBBLEOUTPUT POINTER)
-                       (PROCINFOHOOK POINTER)
-                       (PROCTYPEAHEAD POINTER)
-                       (PROCREMOTEINFO POINTER)
-                       (PROCUSERDATA POINTER)
-                       (PROCEVENTLINK POINTER)
-                       (PROCAFTEREXIT POINTER)
-                       (PROCBEFOREEXIT POINTER)
-                       (PROCOWNEDLOCKS POINTER)
-                       (PROCEVAPPLYRESULT POINTER)
-                       (PROCTTYENTRYFN POINTER)
-                       (PROCTTYEXITFN POINTER)
-                       (PROCHARDRESETINFO POINTER)
-                       (PROCRESTARTFORM POINTER)
-                       (PROCOLDTTYPROC POINTER)
-                       (NIL POINTER)))
+                   (PROCFX WORD)
+                   (PROCSTATUS BYTE)
+                   (PROCNAME POINTER)
+                   (PROCPRIORITY BYTE)
+                   (PROCQUEUE POINTER)
+                   (NIL BYTE)
+                   (NEXTPROCHANDLE POINTER)
+                   (PROCTIMERSET FLAG)
+                   (PROCBEINGDELETED FLAG)
+                   (PROCDELETED FLAG)
+                   (PROCSYSTEMP FLAG)
+                   (PROCNEVERSTARTED FLAG)
+                   (NIL FLAG)
+                   (NIL FLAG)
+                   (NIL FLAG)
+                   (PROCWAKEUPTIMER POINTER)
+                   (PROCTIMERLINK POINTER)
+                   (PROCTIMERBOX POINTER)
+                   (WAKEREASON POINTER)
+                   (PROCEVENTORLOCK POINTER)
+                   (PROCFORM POINTER)
+                   (RESTARTABLE POINTER)
+                   (PROCWINDOW POINTER)
+                   (PROCFINISHED POINTER)
+                   (PROCRESULT POINTER)
+                   (PROCFINISHEVENT POINTER)
+                   (PROCMAILBOX POINTER)
+                   (PROCDRIBBLEOUTPUT POINTER)
+                   (PROCINFOHOOK POINTER)
+                   (PROCTYPEAHEAD POINTER)
+                   (PROCREMOTEINFO POINTER)
+                   (PROCUSERDATA POINTER)
+                   (PROCEVENTLINK POINTER)
+                   (PROCAFTEREXIT POINTER)
+                   (PROCBEFOREEXIT POINTER)
+                   (PROCOWNEDLOCKS POINTER)
+                   (PROCEVAPPLYRESULT POINTER)
+                   (PROCTTYENTRYFN POINTER)
+                   (PROCTTYEXITFN POINTER)
+                   (PROCHARDRESETINFO POINTER)
+                   (PROCRESTARTFORM POINTER)
+                   (PROCOLDTTYPROC POINTER)
+                   (NIL POINTER)))
 
 (DATATYPE PROCESSQUEUE ((PQPRIORITY BYTE)
-                            (PQHIGHER POINTER)
-                            (PQLOWER POINTER)
-                            (PQNEXT POINTER)
-                            (PQLAST POINTER)))
+                        (PQHIGHER POINTER)
+                        (PQLOWER POINTER)
+                        (PQNEXT POINTER)
+                        (PQLAST POINTER)))
 )
 
 
@@ -1064,7 +1064,7 @@ with the terms of said license.
 (RPAQ? \TTY.PROCESS )
 
 (RPAQ? \PROCESS.NAME.TABLE (HASHARRAY 30 NIL (FUNCTION STRING-EQUAL-HASHBITS)
-                                      (FUNCTION STRING-EQUAL)))
+                                  (FUNCTION STRING-EQUAL)))
 (DECLARE%: DOEVAL@COMPILE DONTCOPY
 
 (GLOBALVARS TTY.PROCESS.DEFAULT \TTY.PROCESS.EVENT \PROCESS.NAME.TABLE)
@@ -1302,14 +1302,12 @@ with the terms of said license.
 
 (DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS PROCESS.WAIT  MACRO
-   [(WAITCOND TIMEOUT)
-    (bind ($$TIMEOUT _ (AND TIMEOUT (SETUPTIMER TIMEOUT))) until (AND $$TIMEOUT (
-                                                                                        TIMEREXPIRED?
-                                                                                         $$TIMEOUT))
-       do (if (SETQ $$VAL WAITCOND)
-                  then (RETURN $$VAL)
-                else (BLOCK])
+(PUTPROPS PROCESS.WAIT MACRO [(WAITCOND TIMEOUT)
+                              (bind ($$TIMEOUT _ (AND TIMEOUT (SETUPTIMER TIMEOUT)))
+                                 until (AND $$TIMEOUT (TIMEREXPIRED? $$TIMEOUT))
+                                 do (if (SETQ $$VAL WAITCOND)
+                                        then (RETURN $$VAL)
+                                      else (BLOCK])
 )
 (DEFINEQ
 
@@ -1452,20 +1450,19 @@ with the terms of said license.
 (DECLARE%: DONTCOPY 
 (DECLARE%: EVAL@COMPILE
 
-(DATATYPE EVENT ((EVENTWAKEUPPENDING FLAG)               (* ; 
-                                        "True if this event was signaled with nobody waiting on it")
-                     (NIL BITS 3)
-                     (EVENTQUEUETAIL POINTER)                (* ; 
-                                                    "Pointer to last process waiting on this event")
-                     (EVENTNAME POINTER)                     (* ; 
-                                         "Optional name of EVENT for status window, debugging, etc")
-                     )
-                    (ACCESSFNS EVENT ((EVLOCKQUEUETAIL (ffetch EVENTQUEUETAIL of DATUM)
-                                             (freplace EVENTQUEUETAIL of DATUM with
-                                                                                       NEWVALUE)))
-                                                             (* ; 
-                                                          "Used by both EVENT and MONITORLOCK data")
-                           ))
+(DATATYPE EVENT ((EVENTWAKEUPPENDING FLAG)                   (* ; 
+                                          "True if this event was signaled with nobody waiting on it")
+                 (NIL BITS 3)
+                 (EVENTQUEUETAIL POINTER)                    (* ; 
+                                                      "Pointer to last process waiting on this event")
+                 (EVENTNAME POINTER)                         (* ; 
+                                           "Optional name of EVENT for status window, debugging, etc")
+                 )
+                (ACCESSFNS EVENT ((EVLOCKQUEUETAIL (ffetch EVENTQUEUETAIL of DATUM)
+                                         (freplace EVENTQUEUETAIL of DATUM with NEWVALUE)))
+                                                             (* ; 
+                                                            "Used by both EVENT and MONITORLOCK data")
+                       ))
 )
 
 (/DECLAREDATATYPE 'EVENT '(FLAG (BITS 3)
@@ -1487,9 +1484,9 @@ with the terms of said license.
 (ADDTOVAR SYSTEMRECLST
 
 (DATATYPE EVENT ((EVENTWAKEUPPENDING FLAG)
-                     (NIL BITS 3)
-                     (EVENTQUEUETAIL POINTER)
-                     (EVENTNAME POINTER)))
+                 (NIL BITS 3)
+                 (EVENTQUEUETAIL POINTER)
+                 (EVENTNAME POINTER)))
 )
 (DEFINEQ
 
@@ -1593,17 +1590,17 @@ with the terms of said license.
 )
 (DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS AWAIT.CONDITION  MACRO
-   [(CONDITION EVNT TIMEOUT TIMERP)
-    (PROG [($$TIMER TIMEOUT)
-           ($$EV (\DTEST EVNT 'EVENT]
-          (DECLARE (LOCALVARS $$TIMER $$EV))
-      LP  (RETURN (OR CONDITION (COND
-                                   ((NEQ (\PROCESS.GO.TO.SLEEP $$EV $$TIMER TIMERP)
-                                         $$EV)
-                                    NIL)
-                                   (T (AND $$TIMER (SETQ $$TIMER T))
-                                      (GO LP])
+(PUTPROPS AWAIT.CONDITION MACRO [(CONDITION EVNT TIMEOUT TIMERP)
+                                 (PROG [($$TIMER TIMEOUT)
+                                        ($$EV (\DTEST EVNT 'EVENT]
+                                       (DECLARE (LOCALVARS $$TIMER $$EV))
+                                   LP  (RETURN (OR CONDITION (COND
+                                                                ((NEQ (\PROCESS.GO.TO.SLEEP $$EV 
+                                                                             $$TIMER TIMERP)
+                                                                      $$EV)
+                                                                 NIL)
+                                                                (T (AND $$TIMER (SETQ $$TIMER T))
+                                                                   (GO LP])
 )
 
 (RPAQ? \PROCESS.AFTEREXIT.EVENT )
@@ -1620,17 +1617,16 @@ with the terms of said license.
 (DECLARE%: EVAL@COMPILE
 
 (DATATYPE MONITORLOCK ((NIL FLAG)
-                           (MLOCKPERPROCESS FLAG)            (* ; 
-           "Monitor's use by anybody in process lets everyone in that proc use it, the normal case")
-                           (NIL BITS 2)
-                           (MLOCKQUEUETAIL POINTER)          (* ; 
-                                             "Last process waiting for monitor to become available")
-                           (MLOCKOWNER POINTER)              (* ; "Process owning it")
-                           (MLOCKNAME POINTER)               (* ; 
-                                                           "optional name, for debugging, etc")
-                           (MLOCKLINK POINTER)               (* ; 
-                                                           "Link to next lock owned by my owner")
-                           ))
+                       (MLOCKPERPROCESS FLAG)                (* ; 
+             "Monitor's use by anybody in process lets everyone in that proc use it, the normal case")
+                       (NIL BITS 2)
+                       (MLOCKQUEUETAIL POINTER)              (* ; 
+                                               "Last process waiting for monitor to become available")
+                       (MLOCKOWNER POINTER)                  (* ; "Process owning it")
+                       (MLOCKNAME POINTER)                   (* ; "optional name, for debugging, etc")
+                       (MLOCKLINK POINTER)                   (* ; 
+                                                             "Link to next lock owned by my owner")
+                       ))
 )
 
 (/DECLAREDATATYPE 'MONITORLOCK '(FLAG FLAG (BITS 2)
@@ -1646,46 +1642,48 @@ with the terms of said license.
 
 (DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS .RELEASE.LOCK.  MACRO
-   [(LOCK EVENIFNOTMINE)
-    (UNINTERRUPTABLY
-        [PROG ((OWNER (ffetch MLOCKOWNER of LOCK))
-               TAIL PREV NEXTPROC)
-              (COND
-                 ((OR (NULL OWNER)
-                      (AND (NEQ OWNER (THIS.PROCESS))
-                           (NOT EVENIFNOTMINE)))
-                  (RETURN)))
-              (freplace MLOCKOWNER of LOCK with NIL)
-                                                             (* ; 
-                                                      "Now remove LOCK from my list of owned locks")
-              [COND
-                 ((EQ (SETQ PREV (fetch PROCOWNEDLOCKS of OWNER))
-                      LOCK)
-                  (replace PROCOWNEDLOCKS of OWNER with (ffetch MLOCKLINK
-                                                                       of LOCK)))
-                 (T (do (COND
-                               ((NULL PREV)
-                                (RETURN (\MP.ERROR \MP.PROCERROR 
-                                               "Lock not found among owner's owned locks" LOCK)))
-                               [(EQ (fetch MLOCKLINK of PREV)
-                                    LOCK)
-                                (RETURN (replace MLOCKLINK of PREV
-                                           with (ffetch MLOCKLINK of LOCK]
-                               (T (SETQ PREV (fetch MLOCKLINK of PREV]
-              (freplace MLOCKLINK of LOCK with NIL)
-              (COND
-                 ((SETQ TAIL (ffetch MLOCKQUEUETAIL of LOCK))
-                  (SETQ NEXTPROC (fetch PROCEVENTLINK of TAIL))
-                  [COND
-                     ((EQ NEXTPROC TAIL)                     (* ; "Only one process in queue")
-                      (freplace MLOCKQUEUETAIL of LOCK with NIL))
-                     (T (replace PROCEVENTLINK of TAIL with (fetch PROCEVENTLINK
-                                                                           of NEXTPROC]
-                  (replace PROCEVENTLINK of NEXTPROC with (replace PROCEVENTORLOCK
-                                                                         of NEXTPROC with
-                                                                                         NIL))
-                  (\RUN.PROCESS NEXTPROC LOCK])])
+(PUTPROPS .RELEASE.LOCK. MACRO [(LOCK EVENIFNOTMINE)
+                                (UNINTERRUPTABLY
+                                    [PROG ((OWNER (ffetch MLOCKOWNER of LOCK))
+                                           TAIL PREV NEXTPROC)
+                                          (COND
+                                             ((OR (NULL OWNER)
+                                                  (AND (NEQ OWNER (THIS.PROCESS))
+                                                       (NOT EVENIFNOTMINE)))
+                                              (RETURN)))
+                                          (freplace MLOCKOWNER of LOCK with NIL)
+                                                             (* ; 
+                                                        "Now remove LOCK from my list of owned locks")
+                                          [COND
+                                             ((EQ (SETQ PREV (fetch PROCOWNEDLOCKS of OWNER))
+                                                  LOCK)
+                                              (replace PROCOWNEDLOCKS of OWNER
+                                                 with (ffetch MLOCKLINK of LOCK)))
+                                             (T (do (COND
+                                                       ((NULL PREV)
+                                                        (RETURN (\MP.ERROR \MP.PROCERROR 
+                                                           "Lock not found among owner's owned locks"
+                                                                       LOCK)))
+                                                       [(EQ (fetch MLOCKLINK of PREV)
+                                                            LOCK)
+                                                        (RETURN (replace MLOCKLINK of PREV
+                                                                   with (ffetch MLOCKLINK
+                                                                           of LOCK]
+                                                       (T (SETQ PREV (fetch MLOCKLINK of PREV]
+                                          (freplace MLOCKLINK of LOCK with NIL)
+                                          (COND
+                                             ((SETQ TAIL (ffetch MLOCKQUEUETAIL of LOCK))
+                                              (SETQ NEXTPROC (fetch PROCEVENTLINK of TAIL))
+                                              [COND
+                                                 ((EQ NEXTPROC TAIL)
+                                                             (* ; "Only one process in queue")
+                                                  (freplace MLOCKQUEUETAIL of LOCK with NIL))
+                                                 (T (replace PROCEVENTLINK of TAIL
+                                                       with (fetch PROCEVENTLINK of NEXTPROC]
+                                              (replace PROCEVENTLINK of NEXTPROC
+                                                 with (replace PROCEVENTORLOCK of NEXTPROC
+                                                         with NIL))
+                                              (\RUN.PROCESS NEXTPROC LOCK])])
 )
 )
 
@@ -1702,12 +1700,12 @@ with the terms of said license.
 (ADDTOVAR SYSTEMRECLST
 
 (DATATYPE MONITORLOCK ((NIL FLAG)
-                           (MLOCKPERPROCESS FLAG)
-                           (NIL BITS 2)
-                           (MLOCKQUEUETAIL POINTER)
-                           (MLOCKOWNER POINTER)
-                           (MLOCKNAME POINTER)
-                           (MLOCKLINK POINTER)))
+                       (MLOCKPERPROCESS FLAG)
+                       (NIL BITS 2)
+                       (MLOCKQUEUETAIL POINTER)
+                       (MLOCKOWNER POINTER)
+                       (MLOCKNAME POINTER)
+                       (MLOCKLINK POINTER)))
 )
 (DEFINEQ
 
@@ -1804,23 +1802,36 @@ with the terms of said license.
 )
 (DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS WITH.MONITOR  MACRO
-   [(LOCK . FORMS)
-    (LET (SI::*LOCKED-MONITOR* SI::*RESETFORMS*)
-         (DECLARE (CL:SPECIAL SI::*LOCKED-MONITOR* SI::*RESETFORMS*))
-         (CL:UNWIND-PROTECT
-             (PROGN (OBTAIN.MONITORLOCK LOCK NIL 'WITH.MONITOR) . FORMS)
-             (SI::MONITOR-UNWIND))])
+(PUTPROPS WITH.MONITOR MACRO [(LOCK . FORMS)
+                              (LET (SI::*LOCKED-MONITOR* SI::*RESETFORMS*)
+                                   (DECLARE (CL:SPECIAL SI::*LOCKED-MONITOR* SI::*RESETFORMS*))
+                                   (CL:UNWIND-PROTECT
+                                       (PROGN (OBTAIN.MONITORLOCK LOCK NIL 'WITH.MONITOR) . FORMS)
+                                       (SI::MONITOR-UNWIND))])
 
-(PUTPROPS WITH.FAST.MONITOR  MACRO
-   [(LOCK . FORMS)
-    (UNINTERRUPTABLY
-        ([LAMBDA (UNLOCK)
-           (PROG1 (PROGN . FORMS)
-               (AND (NEQ UNLOCK T)
-                    (RELEASE.MONITORLOCK UNLOCK)))]
-         (OBTAIN.MONITORLOCK LOCK)))])
+(PUTPROPS WITH.FAST.MONITOR MACRO [(LOCK . FORMS)
+                                   (UNINTERRUPTABLY
+                                       ([LAMBDA (UNLOCK)
+                                          (PROG1 (PROGN . FORMS)
+                                              (AND (NEQ UNLOCK T)
+                                                   (RELEASE.MONITORLOCK UNLOCK)))]
+                                        (OBTAIN.MONITORLOCK LOCK)))])
 )
+(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: DOEVAL@COMPILE DONTCOPY
+
+(SPECVARS \BACKGROUND)
+)
+(DECLARE%: DOEVAL@COMPILE DONTCOPY
+
+(GLOBALVARS \IGNORE.BACKGROUND)
+)
+
+(* "END EXPORTED DEFINITIONS")
+
+
+(RPAQ? \BACKGROUND NIL)
+
+(RPAQ? \IGNORE.BACKGROUND T)
 (DEFINEQ
 
 (\MAKE.PROCESS0
@@ -2096,9 +2107,13 @@ with the terms of said license.
        (\INTERRUPTABLE (BLOCK])
 
 (\BACKGROUND.PROCESS
-  [LAMBDA NIL                                            (* bvm%: "24-JUL-83 15:35")
-    (PROG NIL
-      LP  (for FN in BACKGROUNDFNS do (SPREADAPPLY* FN))
+  [LAMBDA NIL                                                (* ; "Edited 28-Jul-2023 21:01 by lmm")
+                                                             (* bvm%: "24-JUL-83 15:35")
+    (PROG ((\BACKGROUND \IGNORE.BACKGROUND))
+          (DECLARE (SPECVARS \BACKGROUND)
+                 (GLOBALVARS \IGNORE.BACKGROUND))
+      LP  (SETQ \BACKGROUND \IGNORE.BACKGROUND)
+          (for FN in BACKGROUNDFNS do (SPREADAPPLY* FN))
           (BLOCK)
           (GO LP])
 
@@ -2460,51 +2475,53 @@ with the terms of said license.
 (DECLARE%: DONTCOPY 
 (DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS \RESCHEDULE  MACRO
-   [LAMBDA (OLDPROC)
+(PUTPROPS \RESCHEDULE MACRO [LAMBDA (OLDPROC)
 
-     (* ;; "Causes process switch, saving current context in OLDPROC's handle, or nowhere if OLDPROC is NIL.  Must be called uninterruptably!")
+                              (* ;; "Causes process switch, saving current context in OLDPROC's handle, or nowhere if OLDPROC is NIL.  Must be called uninterruptably!")
 
-     (PROG (PQUEUE PROC)
-       TOP 
+                              (PROG (PQUEUE PROC)
+                                TOP 
 
-      (* ;; "Maybe check for events here?")
+                               (* ;; "Maybe check for events here?")
 
-           (SETQ PQUEUE \HIGHEST.PRIORITY.QUEUE)
-       LP  (COND
-              ((SETQ PROC (fetch PQNEXT of PQUEUE))
-               [COND
-                  ((NEQ PROC OLDPROC)                        (* ; 
-               "Yes, there is a process switch required here.  Below is roughly the body of RESUME")
-                   (LET ((TOFX (fetch PROCFX of PROC))
-                         FROMFX)
-                        (COND
-                           ((fetch (FX INVALIDP) of TOFX)
-                            (\MP.ERROR \MP.STACKRELEASED "Process's stack has been released!" PROC)))
-                        (SETQ \RUNNING.PROCESS PROC)
-                        (replace PROCFX of PROC with 0)
-                        (\PROC.RESUME TOFX (COND
-                                              (OLDPROC (SETQ FROMFX (fetch PROCFX of OLDPROC)
-                                                        )
-                                                     (COND
-                                                        ((NOT (fetch (FX INVALIDP) of FROMFX)
-                                                              )
-                                                             (* ; 
-                     "Release stack pointer of OLDPROC if it hasn't been yet.  should never happen")
-                                                         (\DECUSECOUNT FROMFX)))
-                                                     (replace PROCFX of OLDPROC with
-                                                                                        (\MYALINK))
-                                                     NIL)
-                                              (T             (* ; 
-                                                   "no OLDPROC to resume later, so jettison caller")
-                                                 (\MYALINK]
-               (RETURN (fetch WAKEREASON of PROC)))
-              ((SETQ PQUEUE (fetch PQLOWER of PQUEUE))
-               (GO LP))
-              (T                                             (* ; 
-                                                           "nobody runnable, wait for events")
-                 (\MP.ERROR \MP.PROCERROR "No runnable process!!" OLDPROC)
-                 (GO TOP])
+                                    (SETQ PQUEUE \HIGHEST.PRIORITY.QUEUE)
+                                LP  (COND
+                                       ((SETQ PROC (fetch PQNEXT of PQUEUE))
+                                        [COND
+                                           ((NEQ PROC OLDPROC)
+                                                             (* ; 
+                 "Yes, there is a process switch required here.  Below is roughly the body of RESUME")
+                                            (LET ((TOFX (fetch PROCFX of PROC))
+                                                  FROMFX)
+                                                 (COND
+                                                    ((fetch (FX INVALIDP) of TOFX)
+                                                     (\MP.ERROR \MP.STACKRELEASED 
+                                                            "Process's stack has been released!" PROC
+                                                            )))
+                                                 (SETQ \RUNNING.PROCESS PROC)
+                                                 (replace PROCFX of PROC with 0)
+                                                 (\PROC.RESUME
+                                                  TOFX
+                                                  (COND
+                                                     (OLDPROC (SETQ FROMFX (fetch PROCFX of OLDPROC))
+                                                            (COND
+                                                               ((NOT (fetch (FX INVALIDP)
+                                                                        of FROMFX))
+                                                             (* ; 
+                       "Release stack pointer of OLDPROC if it hasn't been yet.  should never happen")
+                                                                (\DECUSECOUNT FROMFX)))
+                                                            (replace PROCFX of OLDPROC with (\MYALINK
+                                                                                             ))
+                                                            NIL)
+                                                     (T      (* ; 
+                                                     "no OLDPROC to resume later, so jettison caller")
+                                                        (\MYALINK]
+                                        (RETURN (fetch WAKEREASON of PROC)))
+                                       ((SETQ PQUEUE (fetch PQLOWER of PQUEUE))
+                                        (GO LP))
+                                       (T                    (* ; "nobody runnable, wait for events")
+                                          (\MP.ERROR \MP.PROCERROR "No runnable process!!" OLDPROC)
+                                          (GO TOP])
 )
 )
 (DEFINEQ
@@ -2848,22 +2865,19 @@ with the terms of said license.
 (DECLARE%: DONTCOPY 
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS THIS.PROCESS  MACRO
-   (NIL \RUNNING.PROCESS))
+(PUTPROPS THIS.PROCESS MACRO (NIL \RUNNING.PROCESS))
 
-(PUTPROPS TTY.PROCESS  MACRO
-   [X (COND
-         ((CAR X)
-          'IGNOREMACRO)
-         (T '\TTY.PROCESS])
+(PUTPROPS TTY.PROCESS MACRO [X (COND
+                                  ((CAR X)
+                                   'IGNOREMACRO)
+                                  (T '\TTY.PROCESS])
 
-(PUTPROPS TTY.PROCESSP  MACRO
-   [X (COND
-         ((CAR X)
-          'IGNOREMACRO)
-         (T '(OR (NULL (THIS.PROCESS))
-                 (EQ (THIS.PROCESS)
-                     (TTY.PROCESS])
+(PUTPROPS TTY.PROCESSP MACRO [X (COND
+                                   ((CAR X)
+                                    'IGNOREMACRO)
+                                   (T '(OR (NULL (THIS.PROCESS))
+                                           (EQ (THIS.PROCESS)
+                                               (TTY.PROCESS])
 )
 (DECLARE%: DOEVAL@COMPILE DONTCOPY
 
@@ -2887,21 +2901,18 @@ with the terms of said license.
 
 (DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS ALIVEPROCP  MACRO
-   ((p)
-    (NOT (DEADPROCP p))))
+(PUTPROPS ALIVEPROCP MACRO ((p)
+                            (NOT (DEADPROCP p))))
 
-(PUTPROPS DEADPROCP  MACRO
-   ((p)
-    (fetch PROCDELETED of p)))
+(PUTPROPS DEADPROCP MACRO ((p)
+                           (fetch PROCDELETED of p)))
 
-(PUTPROPS \COERCE.TO.PROCESS  MACRO
-   [OPENLAMBDA (P ERRORFLG)
-     (COND
-        ((AND (type? PROCESS P)
-              (NOT (fetch PROCDELETED of P)))
-         P)
-        (T (FIND.PROCESS P ERRORFLG])
+(PUTPROPS \COERCE.TO.PROCESS MACRO [OPENLAMBDA (P ERRORFLG)
+                                     (COND
+                                        ((AND (type? PROCESS P)
+                                              (NOT (fetch PROCDELETED of P)))
+                                         P)
+                                        (T (FIND.PROCESS P ERRORFLG])
 )
 
 (DECLARE%: DOEVAL@COMPILE DONTCOPY
@@ -3319,7 +3330,7 @@ with the terms of said license.
 (RPAQ? PROCBACKTRACEHEIGHT 320)
 
 (ADDTOVAR BackgroundMenuCommands ("PSW" '(PROCESS.STATUS.WINDOW)
-                                            "Puts up a Process Status Window"))
+                                        "Puts up a Process Status Window"))
 
 (SETQQ BackgroundMenu)
 (DECLARE%: EVAL@COMPILE DONTCOPY 
@@ -3350,8 +3361,8 @@ with the terms of said license.
 
 (DEFPRINT 'MONITORLOCK (FUNCTION \MONITORLOCK.DEFPRINT))
 
-                                                             (* ; 
-                                          "\process.init must come last, since it does a HARDRESET")
+                                                             (* ; 
+                                            "\process.init must come last, since it does a HARDRESET")
 
 (\PROCESS.INIT)
 )
@@ -3363,42 +3374,40 @@ with the terms of said license.
 
 (ADDTOVAR LAMA PROCESSPROP ADD.PROCESS)
 )
-(PUTPROPS PROC COPYRIGHT ("Venue & Xerox Corporation" T 1982 1983 1984 1985 1986 1987 1988 1990 1991 
-1992 1993 1998 1999))
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (22392 42659 (PROCESSWORLD 22402 . 31747) (ADD.PROCESS 31749 . 35906) (DEL.PROCESS 35908
- . 36855) (PROCESS.RETURN 36857 . 37004) (FIND.PROCESS 37006 . 37640) (MAP.PROCESSES 37642 . 37968) (
-PROCESSP 37970 . 38138) (RELPROCESSP 38140 . 38322) (RESTART.PROCESS 38324 . 38893) (WAKE.PROCESS 
-38895 . 39625) (SUSPEND.PROCESS 39627 . 40014) (PROCESS.RESULT 40016 . 40994) (PROCESS-STATUS 40996 . 
-42391) (PROCESS.FINISHEDP 42393 . 42657)) (42660 55867 (THIS.PROCESS 42670 . 42803) (TTY.PROCESS 42805
- . 49632) (TTY.PROCESSP 49634 . 49850) (PROCESS.TTY 49852 . 50202) (GIVE.TTY.PROCESS 50204 . 51014) (
-ALLOW.BUTTON.EVENTS 51016 . 51260) (SPAWN.MOUSE 51262 . 53475) (\WAIT.FOR.TTY 53477 . 53667) (
-WAIT.FOR.TTY 53669 . 55865)) (55868 58486 (RESET 55878 . 56710) (ERROR! 56712 . 58484)) (58851 64199 (
-PROCESSPROP 58861 . 63313) (PROCESS.NAME 63315 . 63620) (PROCESS.WINDOW 63622 . 64197)) (64401 69436 (
-DISMISS 64411 . 65226) (BLOCK 65228 . 67452) (WAITFORINPUT 67454 . 68683) (\WAITFORSYSBUFP 68685 . 
-69434)) (69637 70134 (EVAL.AS.PROCESS 69647 . 69870) (EVAL.IN.TTY.PROCESS 69872 . 70132)) (70768 76552
- (PROCESS.READ 70778 . 71616) (PROCESS.EVALV 71618 . 72196) (PROCESS.EVAL 72198 . 73175) (
-\PROCESS.EVAL1 73177 . 74280) (PROCESS.APPLY 74282 . 75266) (\PROCESS.APPLY1 75268 . 76550)) (78718 
-84023 (CREATE.EVENT 78728 . 78890) (NOTIFY.EVENT 78892 . 80400) (AWAIT.EVENT 80402 . 81024) (
-\UNQUEUE.EVENT 81026 . 82501) (\ENQUEUE.EVENT/LOCK 82503 . 83796) (\EVENT.DEFPRINT 83798 . 84021)) (
-89263 94254 (OBTAIN.MONITORLOCK 89273 . 92137) (CREATE.MONITORLOCK 92139 . 92358) (RELEASE.MONITORLOCK
- 92360 . 92694) (SI::MONITOR-UNWIND 92696 . 93282) (MONITOR.AWAIT.EVENT 93284 . 94018) (
-\MONITORLOCK.DEFPRINT 94020 . 94252)) (94863 117339 (\MAKE.PROCESS0 94873 . 102072) (\MAKE.PROCESS1 
-102074 . 103638) (\PROCESS.MOVEFRAME 103640 . 108189) (\RELEASE.PROCESS 108191 . 111241) (
-\UNWIND.PROCESS 111243 . 111569) (\MAYBEBLOCK 111571 . 111726) (\BACKGROUND.PROCESS 111728 . 111969) (
-\MOUSE.PROCESS 111971 . 114520) (\TIMER.PROCESS 114522 . 115078) (\PROCESS.RELEASE.LOCKS 115080 . 
-115494) (\SET.PROCESS.NAME 115496 . 117032) (\PROCESS.DEFPRINT 117034 . 117337)) (117340 131695 (
-\START.PROCESSES 117350 . 117523) (\PROCESS.GO.TO.SLEEP 117525 . 121279) (\PROC.RESUME 121281 . 121655
-) (\RUN.PROCESS 121657 . 124993) (\SUSPEND.PROCESS 124995 . 128056) (\UNQUEUE.TIMER 128058 . 128757) (
-\ENQUEUE.TIMER 128759 . 130666) (\GET.PRIORITY.QUEUE 130668 . 131693)) (134377 141599 (\PROCESS.INIT 
-134387 . 135013) (\PROCESS.EVENTFN 135015 . 136751) (\PROCESS.BEFORE.LOGOUT 136753 . 138272) (
-\PROCESS.AFTER.EXIT 138274 . 138582) (\PROCESS.RESET.TIMERS 138584 . 140113) (\PROC.AFTER.WINDOWWORLD 
-140115 . 140800) (\TURN.ON.PROCESSES 140802 . 141597)) (141630 142859 (\PROC.CODEFORTFRAME 141640 . 
-142461) (\PROC.REPEATEDLYEVALQT 142463 . 142857)) (142893 149625 (BREAK.PROCESS 142903 . 143219) (
-\SELECTPROCESS 143221 . 145661) (\PROCESS.MAKEFRAME 145663 . 147714) (\PROCESS.MAKEFRAME0 147716 . 
-149623)) (151838 153761 (\CHECK.PQUEUE 151848 . 153759)) (153762 172091 (PPROC 153772 . 155053) (
-PPROCWINDOW 155055 . 155546) (PPROCREPAINTFN 155548 . 156262) (PPROCRESHAPEFN 156264 . 156527) (
-PPROCEXTENT 156529 . 157013) (PPROC1 157015 . 159033) (PROCESS.STATUS.WINDOW 159035 . 163117) (
-\PSW.SELECTED 163119 . 163413) (\PSWOP.SELECTED 163415 . 167315) (PROCESS.BACKTRACE 167317 . 170508) (
-\INVALIDATE.PROCESS.WINDOW 170510 . 171244) (\UPDATE.PROCESS.WINDOW 171246 . 172089)))))
+  (FILEMAP (NIL (22096 42363 (PROCESSWORLD 22106 . 31451) (ADD.PROCESS 31453 . 35610) (DEL.PROCESS 35612
+ . 36559) (PROCESS.RETURN 36561 . 36708) (FIND.PROCESS 36710 . 37344) (MAP.PROCESSES 37346 . 37672) (
+PROCESSP 37674 . 37842) (RELPROCESSP 37844 . 38026) (RESTART.PROCESS 38028 . 38597) (WAKE.PROCESS 
+38599 . 39329) (SUSPEND.PROCESS 39331 . 39718) (PROCESS.RESULT 39720 . 40698) (PROCESS-STATUS 40700 . 
+42095) (PROCESS.FINISHEDP 42097 . 42361)) (42364 55571 (THIS.PROCESS 42374 . 42507) (TTY.PROCESS 42509
+ . 49336) (TTY.PROCESSP 49338 . 49554) (PROCESS.TTY 49556 . 49906) (GIVE.TTY.PROCESS 49908 . 50718) (
+ALLOW.BUTTON.EVENTS 50720 . 50964) (SPAWN.MOUSE 50966 . 53179) (\WAIT.FOR.TTY 53181 . 53371) (
+WAIT.FOR.TTY 53373 . 55569)) (55572 58190 (RESET 55582 . 56414) (ERROR! 56416 . 58188)) (58551 63899 (
+PROCESSPROP 58561 . 63013) (PROCESS.NAME 63015 . 63320) (PROCESS.WINDOW 63322 . 63897)) (64101 69136 (
+DISMISS 64111 . 64926) (BLOCK 64928 . 67152) (WAITFORINPUT 67154 . 68383) (\WAITFORSYSBUFP 68385 . 
+69134)) (69337 69834 (EVAL.AS.PROCESS 69347 . 69570) (EVAL.IN.TTY.PROCESS 69572 . 69832)) (70423 76207
+ (PROCESS.READ 70433 . 71271) (PROCESS.EVALV 71273 . 71851) (PROCESS.EVAL 71853 . 72830) (
+\PROCESS.EVAL1 72832 . 73935) (PROCESS.APPLY 73937 . 74921) (\PROCESS.APPLY1 74923 . 76205)) (78266 
+83571 (CREATE.EVENT 78276 . 78438) (NOTIFY.EVENT 78440 . 79948) (AWAIT.EVENT 79950 . 80572) (
+\UNQUEUE.EVENT 80574 . 82049) (\ENQUEUE.EVENT/LOCK 82051 . 83344) (\EVENT.DEFPRINT 83346 . 83569)) (
+90015 95006 (OBTAIN.MONITORLOCK 90025 . 92889) (CREATE.MONITORLOCK 92891 . 93110) (RELEASE.MONITORLOCK
+ 93112 . 93446) (SI::MONITOR-UNWIND 93448 . 94034) (MONITOR.AWAIT.EVENT 94036 . 94770) (
+\MONITORLOCK.DEFPRINT 94772 . 95004)) (96210 118970 (\MAKE.PROCESS0 96220 . 103419) (\MAKE.PROCESS1 
+103421 . 104985) (\PROCESS.MOVEFRAME 104987 . 109536) (\RELEASE.PROCESS 109538 . 112588) (
+\UNWIND.PROCESS 112590 . 112916) (\MAYBEBLOCK 112918 . 113073) (\BACKGROUND.PROCESS 113075 . 113600) (
+\MOUSE.PROCESS 113602 . 116151) (\TIMER.PROCESS 116153 . 116709) (\PROCESS.RELEASE.LOCKS 116711 . 
+117125) (\SET.PROCESS.NAME 117127 . 118663) (\PROCESS.DEFPRINT 118665 . 118968)) (118971 133326 (
+\START.PROCESSES 118981 . 119154) (\PROCESS.GO.TO.SLEEP 119156 . 122910) (\PROC.RESUME 122912 . 123286
+) (\RUN.PROCESS 123288 . 126624) (\SUSPEND.PROCESS 126626 . 129687) (\UNQUEUE.TIMER 129689 . 130388) (
+\ENQUEUE.TIMER 130390 . 132297) (\GET.PRIORITY.QUEUE 132299 . 133324)) (136771 143993 (\PROCESS.INIT 
+136781 . 137407) (\PROCESS.EVENTFN 137409 . 139145) (\PROCESS.BEFORE.LOGOUT 139147 . 140666) (
+\PROCESS.AFTER.EXIT 140668 . 140976) (\PROCESS.RESET.TIMERS 140978 . 142507) (\PROC.AFTER.WINDOWWORLD 
+142509 . 143194) (\TURN.ON.PROCESSES 143196 . 143991)) (144024 145253 (\PROC.CODEFORTFRAME 144034 . 
+144855) (\PROC.REPEATEDLYEVALQT 144857 . 145251)) (145287 152019 (BREAK.PROCESS 145297 . 145613) (
+\SELECTPROCESS 145615 . 148055) (\PROCESS.MAKEFRAME 148057 . 150108) (\PROCESS.MAKEFRAME0 150110 . 
+152017)) (154660 156583 (\CHECK.PQUEUE 154670 . 156581)) (156584 174913 (PPROC 156594 . 157875) (
+PPROCWINDOW 157877 . 158368) (PPROCREPAINTFN 158370 . 159084) (PPROCRESHAPEFN 159086 . 159349) (
+PPROCEXTENT 159351 . 159835) (PPROC1 159837 . 161855) (PROCESS.STATUS.WINDOW 161857 . 165939) (
+\PSW.SELECTED 165941 . 166235) (\PSWOP.SELECTED 166237 . 170137) (PROCESS.BACKTRACE 170139 . 173330) (
+\INVALIDATE.PROCESS.WINDOW 173332 . 174066) (\UPDATE.PROCESS.WINDOW 174068 . 174911)))))
 STOP
diff --git a/sources/PROC.LCOM b/sources/PROC.LCOM
index b2b5ab2a..7cf2dc73 100644
Binary files a/sources/PROC.LCOM and b/sources/PROC.LCOM differ
