[comp.sys.m6809] Level 2 Windows BUGS!

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] "