Wow! It's been a long time since my last post... all these
summer chores leave little spare time, and I admit not having written a single line of code

Anyway, the wheels inside my head keep turning, and digesting all your interesting contributions.
Certainly, I was meaning a WIMP interface -- the use of characters or a bitmapped display is irrelevant to me.
Discoverability is the key (sometimes sadly forgotten in today's GUIs) but I agree about
scriptability being very useful. The concept of separating the actual (CLI) application from the GUI/WIMP interface component sounds a bit scary to me, but
if properly done should be the most versatile way. While no actual code for this (or any of the WIMP interface) exists in minimOS so far, it has been already considered, and in due time will be implemented.
Elective features should also be another key of my system... about the mouse, I miss very much the
mouse-emulation keys of the Atari ST. Thus, if in a mixed (CLI/WIMP) environment some app "needs" a mouse but the actual device is not available, the user could still get the work done, if not in the most convenient way. Of course, the classic
keyboard shortcuts make things quite faster and don't get in the way in any case. I however prefer the use of something like Ctrl+Alt (or some 'meta' key, if available) in order not to disturb control characters.
My apologies if I sounded too "radical" against CLIs... while WIMP is a desireable feature to me, it shouldn't be mandatory -- but neither the other way. And CLI makes things much simpler (or even
possible) when on limited resources. But even if no 'screen layout' is needed (think about running thru some kind of serial link) a
rudimentary "windowing" system could be very interesting for implementing
interactive multitasking apps (instead of a single interactive task plus several background
daemons).
In order to keep compatibility between simple CLI apps and WIMP/GUI environments, any
interactive app should ask my OS for a
port number to be used in subsequent I/O calls, and "release" that port upon exit. That's actually what would become the
window_open function, this time called with a NIL set of parameters -- no window size, no position. A WIMP system should then open a default sized "terminal" window for user interaction. On the other hand, systems without an "addressable" screen would only accept those
NIL-sized calls, rejecting calls with specified size/position from more graphical apps (although the smarter ones might switch into a "terminal mode" by means of a second call with the NIL parameters)
Although the simplest implementations may return as port number a reference to the
physical device (e.g. serial link, say in the 128...255 range), several
window numbers could be served sequentially to requesting apps. The idea is to have a FIFO (probably less than 2 Kb would do) for each "window". A global variable keeps track of the
active window; if an I/O operation is performed on such window, direct access to the default physical device is granted; otherwise, the output character is stored in that window's FIFO (or no character is received, if an
input operation). Upon a specified "window switch
event" (some key combo or escape sequence) a "title" (probably a PID or other process reference) is printed and then the corresponding FIFO is flushed. Might work
Anyway, all this is
elective as well: I don't think my system would prevent any app writing to a certain "physical" port under its sole responsability -- even to a foreign-owned window! BTW, I don't think a
rugged OS is necessarily a good thing... what we need is
bug-free apps: if during development, a
diminutive error crashes the whole system, that developer may become
particularly careful in the future, possibly
improving the quality of the developed apps...
Thanks again for reading and commenting!
