knudsen@ihwpt.UUCP (04/22/87)
Has anyone else had the Disappearing Windows Problem? Coco3 OS9 L2 has at least two related problems here. The first is that if a process (like a BASIC09 program) creates a temporary window, selects it, writes/draws some stuff in it, but then closes the path to it and tries to re-select its original (stdout) window, the process hangs up and the temporary window stays on the screen. The original (device) window is lost forever, tho it still "exists" in OS9's mind (it won't let you modify its parameters, for example). The second "select" just doesn't work. The other bug is that the above device window is "forgotten" by whatever handles the CLEAR key. As you cycle thru your current windows by punching CLEAR, that window is omitted. (The temporary window may remain on the CLEAR cycle, if it was INIZed and your lost process has not CLOSED its path to it.) By "select" I mean using the BASIC09 RUN GFX2(path,"select") call, which I presume just sends the 1B SELECT pair of bytes. Supposedly you can switch the screen to any window just by sending that byte pair to it. Unfortunately, you can't send anything to a window that has a shell running in it, so there is NO way to recover the lost window above. PROCS shows BASIC09 and its Shell still alive & well, but with the window removed from the CLEAR-key list there's no way to talk to them, or even kill them (damned immortal Shells must be EX'ed to death from inside). I found these bugs when trying the BASIC09 example code on page 5-90 of the manual, if memory serves. I suspect they left something out of the program which is causing the trouble. Any theories? Patches? Is INIZ the only thing that determines which windows get on the CLEAR-key cycle list? How do windows (officially) get kicked off the list? PS: Experimenting on this is expensive in re-boot time. Helps to create lots of windows before starting tests. This shakes my faith in wonderful Level 2! Next I'll find that Tammy Bakker was playing around too... mike k -- Mike J Knudsen ...ihnp4!ihwpt!knudsen Bell Labs(AT&T) Delphi: RAGTIMER CIS: <memory failure, too many digits> " ~E(x):[is_lunch(x) && cost(x)==0] "