[comp.sys.amiga.tech] Suggestion for 1.4

cg@myrias.UUCP (Chris Gray) (06/10/88)

Oh yes, ideas for 1.4 (or 1.5):

How about some tooltypes in the CLI icon that will control the appearance of
the new CLI window opened? E.g. size, position, title, FgPen, BgPen, etc.?

How about a standard "intuiTools" library, containing a set of tools to help
use Intuition. E.g. a CBM standard file requester, a general palette editor
(I'll send you source to this if you want), routines to simplify menu
creation, etc. Make it the usual AmigaDOS shareable library.

How about a shareable library with IFF tools? Reader, writer, ILBM stuff, etc.
If the library can handle arbitrary streams, this could make clipboard support
a snap.

How about some simple way to put scroll arrows inside scroll bars?

And now the blue sky: I've heard a weak rumor that 1.4 will be able to use the
68851 MMU to provide protected address spaces. Any form of this, even if it's
not the default, would be great. I've heard people that can be classed as
"Unix fiends" say that they would prefer a protected AmigaDOS to UNIX on the
Amiga. I think that this IS doable. Lots of programs wouldn't work, either
because they reach outside their own address space, or because they don't use
MEMF_PUBLIC when they should. That's fine, let them run unprotected. A new
hunk type here could help, along with a little program to change hunk types to
the new "run me protected" forms. How much would an A2000 with the 68020 and
4Meg of RAM, an ethernet card, and the new hi-res monochrome monitor cost? If
running a protected AmigaDOS, I suspect it would outperform a Sun 3/50. Note
that no disk drive is needed, but I think a single floppy would be desireable.
-- 
Chris Gray		Myrias Research, Edmonton	+1 403 428 1616
	{uunet!mnetor,ubc-vision,watmath,vax135}!alberta!myrias!cg

blandy@marduk.cs.cornell.edu (Jim Blandy) (06/10/88)

In article <611@myrias.UUCP> cg@suncg.UUCP (Chris Gray) writes:
>And now the blue sky: I've heard a weak rumor that 1.4 will be able to use the
>68851 MMU to provide protected address spaces. Any form of this, even if it's
>not the default, would be great.     [ stuff ]

Do we REALLY want protected address spaces?

It seems to me that a lot of the most interesting ideas out here
(ARexx, something about Message Brokers, etc) involve fiddling with
other people's address space.  It's one thing to insist that messages
and message ports be public; that's easy.  But everything a message
refers to needs to be public as well, so the receiver can access it.
And gee, libraries need to be public, and if a program patches itself
into library vectors then it would need to be public (assuming we
don't add lots of deprotection baggage to library calls), and...

I strongly agree that one haywire program shouldn't crash the system.
You should be able to crash as much as you like, in any way you like,
without disturbing other tasks (well, I don't LIKE crashing... :-).

But boy, do we get a lot of mileage out of our open address spaces..
While memory protection would be nice, it seems that a lot of the
power and simplicity of the Amiga would become restricted.  I'm not
talking about combatibility with old programs; I'm asking - do we want
to give up the advantages of an open address space?

Or is there a neat way to get around these problems (wouldn't that be
superb) that I'm missing?
--
Jim Blandy - blandy@crnlcs.bitnet
"insects were insects when man was just a burbling whatsit."  - archie
My opinions are my own, not Cornell's.

cunniff@hpfcdc.HP.COM (Ross Cunniff) (06/11/88)

In article <18191@cornell.UUCP>, blandy@marduk.cs.cornell.edu (Jim Blandy)
writes:
>In article <611@myrias.UUCP> cg@suncg.UUCP (Chris Gray) writes:
>>And now the blue sky: I've heard a weak rumor that 1.4 will be able to use the
>>68851 MMU to provide protected address spaces. Any form of this, even if it's
>>not the default, would be great.     [ stuff ]

>Do we REALLY want protected address spaces?

>It seems to me that a lot of the most interesting ideas out here
>(ARexx, something about Message Brokers, etc) involve fiddling with
>other people's address space.  It's one thing to insist that messages
>and message ports be public; that's easy.  But everything a message
>refers to needs to be public as well, so the receiver can access it.
>And gee, libraries need to be public, and if a program patches itself
>into library vectors then it would need to be public (assuming we
>don't add lots of deprotection baggage to library calls), and...

>Or is there a neat way to get around these problems (wouldn't that be
>superb) that I'm missing?

Instead of making the address space of processes completely hidden
from each other, would it be possible to mark them as read-only to
other processes?  I don't really care if a program is peeking around
at messages that I'm passing (or even looking at my text or data or
whatever);  I just don't want to be scribbled on without my permission.

>Jim Blandy - blandy@crnlcs.bitnet

					Ross Cunniff
					Hewlett-Packard HP-UX DCE lab
					...{ucbvax,hplabs}!hpda!cunniff
					cunniff%hpda@hplabs.ARPA

ewiles@netxcom.UUCP (Edwin Wiles) (06/12/88)

In article <18191@cornell.UUCP> blandy@crnlcs (Jim Blandy) writes:
>In article <611@myrias.UUCP> cg@suncg.UUCP (Chris Gray) writes:
>>And now the blue sky: I've heard a weak rumor that 1.4 will be able to use the
>>68851 MMU to provide protected address spaces. Any form of this, even if it's
>>not the default, would be great.     [ stuff ]
>
>Do we REALLY want protected address spaces?
>
>It seems to me that a lot of the most interesting ideas out here
>(ARexx, something about Message Brokers, etc) involve fiddling with
>other people's address space.
...
>I strongly agree that one haywire program shouldn't crash the system.
>You should be able to crash as much as you like, in any way you like,
>without disturbing other tasks (well, I don't LIKE crashing... :-).
...
>Or is there a neat way to get around these problems (wouldn't that be
>superb) that I'm missing?

I think so.  The only reason for crashing a system is if you cannot guarantee
that the operating system, and its associated *critical* information, is
uncontaminated.  Thus, the only part of memory that must be protected, is
that which is used by the OS.  (Anything else is on it's own.)  Even better
would be a mechanism where you can tell the OS/MMU to protect a program and
its data, or can tell it to leave it open.

Is this possible?

-- 
...!hadron\   "Who?... Me?... WHAT opinions?!?" | Edwin Wiles
  ...!sundc\   Schedule: (n.) An ever changing	| NetExpress Comm., Inc.
   ...!pyrdc\			  nightmare.	| 1953 Gallows Rd. Suite 300
    ...!uunet!netxcom!ewiles			| Vienna, VA 22180

cmcmanis%pepper@Sun.COM (Chuck McManis) (06/15/88)

In article <62300007@hobbiton> choinski@hobbiton.prime.com writes:
> The reason I gripe about this [forced reboots] is because of the 
> immense start-up time involved to re-boot.
>Burton Choinski                                             Prime Computer Inc.

Well there are many ways to streamline the time it takes to reboot your
system, many can improve system booting performance 100 - 200 % ! Some
suggestions :
  o Make your boot floppy special - Format a new blank floppy (NOICONS) and
	then make (but don't copy) the following directories on to it :
		s, c, libs, devs, l. 
	Then copy startup-sequence, devs:system-configuration, c:assign, 
	c:stack, c:run, and any other commands in c: that you use in the 
	startup script. Then copy any handlers you mount (AUX, PIPE, etc)
	into the l: directory. Then copy the rest of c: the libs: directory
	and then devs: the rest of s: the rest of l: all of fonts, system
	etc. What this does is move all of the files that you access 
	intially to the same couple of cylinders. That cuts down the 
	grind, grind, grind considerably.

  o If you are using ARP compress your assigns by doing multiple assigns 
    at once :
	assign lc: sys:lc foo: mydir dpaint: :dpaint t: ram:t

  o If you have a hard disk do the minimum stuff you need to on the floppy
    and then transfer control to the hard disk startup sequence. Similarly
    if you have a recoverable ram disk and you know it has recovered 
    successfully.

  o If you are using a shell that allows resident commands such as MetaCompCo's
    or have Jim Goodnow's REZ command, then make frequently used commands 
    resident such as assign, path, if.

Doing these things will really make a difference in reboot time.

--Chuck McManis
uucp: {anywhere}!sun!cmcmanis   BIX: cmcmanis  ARPAnet: cmcmanis@sun.com
These opinions are my own and no one elses, but you knew that didn't you.

fgd3@jc3b21.UUCP (Fabbian G. Dufoe) (06/16/88)

In article <56624@sun.uucp>, cmcmanis%pepper@Sun.COM (Chuck McManis) makes
several suggestions for streamlining the boot process:
>   o Make your boot floppy special...
>   o If you are using ARP compress your assigns... 
>   o If you have a hard disk do the minimum stuff on the floppy...
>   o If you are using a shell that allows resident commands... use them 

     Another real simple trick is to change your Startup-Sequence file so
it first copies frequently used commands to ram:, then executes the
commands from ram:.  For example:
     copy assign ram:
     ram:assign c: MyDisk:c
     ram:assign l: Mydisk:l

--Fabbian Dufoe
  350 Ling-A-Mor Terrace South
  St. Petersburg, Florida  33705
  813-823-2350

UUCP: ...gatech!codas!usfvax2!jc3b21!fgd3 

dpvc@ur-tut (Davide P. Cervone) (06/17/88)

In article <256@laic.UUCP> darin@laic.UUCP (Darin Johnson) writes:
>wIconify comes up with its own menus in the Workbench menubar.  Does anyone
>know how this was done?  

Yup.  I wrote it.

>Does it involve patching into the workbench image,

Yuk! No!  I may be desperate, but not that desperate!

>or is there a simpler (undocumented or poorly documented) hook to do
>this?

The method used is simple, reasonably effective, and almost "safe".  It's
still illegal, so it's not really safe, and there are still things that
can break it, but not many, and they would be illegel themselves.

How does it work?  Well, finding the WB menu strip is easy once you have
the pointer to the WB window (which is not THAT hard to find).  Once you
have the menu strip, you can ClearMenuStrip(), chance the menu pointers
(like add additional items), and SetMenuStrip() the monified menu.  At his
point, the new menu items appear when you hold down the menu button. That's
the easy part.

Now you have to intercept the MENUPICK events that the WB would get.  This 
is the trick.  To do it, you patch into the UserPort of the WB window.  This isthe illegal part.  Those of you who have seen my old MonIDCMP program, don't
worry, I do NOT use that method of trapping IntuiMessages.  I have a more 
robust method now that allows multiple evesdroppers on any message port.
(I have a new version of MonIDCMP that uses it).  I won;t go into the
details of patching into the port here (I can send the new MonIDCMP code
to anyone who is interested).  

The basic idea is to create a new port structure, and intertwine it with 
the WB port:  link the head pointer of one to the tail pointer of the other.  
Messages posted to the one will actually arrive at the other.  New messags
sent to the WB port will not be available to the WB until after you read them
from your new port and then re-post them to the port.  This lets you "see" all
the messages before WB gets them.  You don't have to worry about priority and
timing like the old MonIDCMP method.

Once you have access to the WB IntuiMessage stream, all you have to do is 
look for MENUPICK events, and when you find one, look for the items that
were chosen.  If the item is one of your menus, then do what you have to do
and remove it from the list of items chosen.  Otherwise, pass it on to the
WB.

Note that you never REPLY to these messages, you simple read them from your 
port and re-post them as they are.  When the WB replies to the message, it is
returned to Intuition (not to you).

I hope this gives someone some ideas of how to do this.  it sounds like a neat
approach to "pop-up" programs.  I'd do it myself, but I'm already behind in my project list.

>If so, I could write such a menu package, but without being able
>to use workbench menus, it would be a kludge (such as having to click in
>a mini window first - but then browser allows this sort of thing).

Well, the approach I described is still a kludge, but it's a proven one 
(wIconify uses it).  It's still illegal, though, and may break in a future
release of Intuition.  Provided that GetMsg and PutMsg check for end-of-
message-list in the same way they do now, however, it should continue to work.

>Darin Johnson (...pyramid.arpa!leadsv!laic!darin)
>              (...ucbvax!sun!sunncal!leadsv!laic!darin)

I hope this was interesting to someone!

Davide P. Cervone
dpvc@tut.cc.rochester.edu
dpvc@ur-tut.UUCP
DPVC@UORDBV.BITNET

P.S., I'm interested in how awful people think this kind of sneakiness is.  
Will you give up using wIcoinfy now that you know it "cheats"?

Has anyone figured out how it gets rid of the windows yet?

cunniff@hpfcdc.HP.COM (Ross Cunniff) (08/10/88)

This thought just struck me, after struggling with DeadKeyConvert for
the n'th time:

	Why not add the feature to Intuition that, when both
	RAWKEY and VANILLAKEY are specified in an IDCMP port's
	flags, VANILLAKEY events are sent for those keys which
	have mappings and RAWKEY events are sent for all other
	keys?

For those of us who just want to grab the HELP and arrow keys as
well as standard keyboard keys, this would be a great timesaver
in programming (I'll bet that the number of programs that do
incorrect key mapping will decrease, as well).

				Ross Cunniff
				Hewlett-Packard Colorado Language Lab
				...{ucbvax,hplabs}!hpda!cunniff
				cunniff%hpda@hplabs.ARPA