[comp.unix.amiga] Standards for /dev/amiga and Co.

rhealey@digibd.com (Rob Healey) (05/20/91)

	First, for the many Dorephores and pedants out there who have gotten
	ruffled feathers over my use of the word Amix in place of the
	rather wordy Amiga System V Release 4.0 Version 1.x UNIX I
	shall use the phrase "Amiga UNIX" from now on despite bitter
	protests from my fingers. B^).

	Now, up on my philosophical soap box I go:

	I realized today that our AmigaDOS brethern, and sisteren, have
	one very important advantage over us poor Amiga UNIX souls:

	Standard methods, API if you wish, of accessing and controlling
	Amiga hardware so nasty interference doesn't take place betwix'd
	tasks.

	What we need is a standard set of library functions, maybe in
	/usr/lib/libamiga.{so,a} for controlled and simplified access
	to /dev/amiga. If there isn't a standard put out by C= then
	all of us will end up creating oodles of different "standards"
	and that will require grand reunification at some painful point
	in the future. 2.0 seems to be a good place to start a standard
	for safe access to /dev/amiga by multiple programs.

	Some thoughts:

	1) Sound, speech and video "servers" would sit in user, kernel
	   or a mix of both modes and listen on IPC ports for requests
	   to do something. They would prevent processes from stomping
	   on each other when it comes to /dev/amiga access. If a user
	   didn't need to use /dev/amiga toys then they wouldn't
	   start up the servers and take the performance hit caused by
	   the servers real time nature. Maybe the real time/configurable
	   scheduler in Amiga UNIX could be used here too?

	2) A library would provide the way to access /dev/amiga features,
	   a program wouldn't be aware that the lib was mmap'ing
	   /dev/amiga and doing the necessary bookkeeping. From the
	   program point of view this would all look like neat little
	   function calls.

	3) It would probably be best to implement all this on top of
	   /dev/amiga so that no more kernel or system hooks are
	   needed. Maybe a "super server" could do the mmap call
	   on /dev/amiga and then take IPC requests from the
	   Amiga library code.

	4) We should avoid trying to create an AmigaDOS compatability
	   library since this would probably create a complex monster
	   that's a bugger to maintain. Rather, a basic set of functions
	   should be drawn up and put into the library. Obviously
	   graphics and sound are the two main catagorys. Under sound
	   we have music, noise and speech. Under graphics, the
	   various modes and graphic operations. Initially, create
	   the most basic functions that can be used to build
	   complex stuff. Maybe make it, "object oriented". If we
	   can define the basics for 2.0, then later releases can
	   add increasingly higher level functionality.

	   So, what do people think? Should we create some common
	   interface to /dev/amiga so a buzillion uncompatable
	   programming interfaces to /dev/amiga don't arise?

	   Can C= take the lead? Maybe provide guide lines and a
	   very basic library, for starters, in 2.0 Amiga UNIX?
	   Later versions of the OS could slowly build on the
	   basic library routines.

	   X provides some graphic solutions to problems but it
	   seems like a less bulky way of accessing Amiga hardware
	   should be available. Plus, there's no sound, music or
	   speech capability in X.

	   So, what can we do NOW to avoid a nasty, obfusicated,
	   uncooperating mass of Amiga specific code in the future??

	   Pondering yet more Amiga mysterys,

		-Rob
-- 

Rob Healey                                          rhealey@digibd.com
Digi International (DigiBoard)
Eden Prairie, MN                                    (612) 943-9020

bdb@becker.UUCP (Bruce D. Becker) (05/24/91)

In article <1991May20.050025.29148@digibd.com> rhealey@digibd.com (Rob Healey) writes:
|
|	What we need is a standard set of library functions, maybe in
|	/usr/lib/libamiga.{so,a} for controlled and simplified access
|	to /dev/amiga. If there isn't a standard put out by C= then
|	all of us will end up creating oodles of different "standards"
|	and that will require grand reunification at some painful point
|	in the future. 2.0 seems to be a good place to start a standard
|	for safe access to /dev/amiga by multiple programs.
|
|	Some thoughts:
|[...]
|	4) We should avoid trying to create an AmigaDOS compatability
|	   library since this would probably create a complex monster
|	   that's a bugger to maintain. Rather, a basic set of functions
|	   should be drawn up and put into the library. Obviously
|	   graphics and sound are the two main catagorys. Under sound
|	   we have music, noise and speech. Under graphics, the
|	   various modes and graphic operations. Initially, create
|	   the most basic functions that can be used to build
|	   complex stuff. Maybe make it, "object oriented". If we
|	   can define the basics for 2.0, then later releases can
|	   add increasingly higher level functionality.

	On the other hand, it sure would be nice to have
	a reasonable porting base for AmigaDos application
	code. DpaintIII under Unix would be pretty interesting...

	Also, a lot of problems you discuss are already
	handled well by AmigaDos system constructs. The
	implementation of Resources would be very useful
	for example. I do agree however, that cloning
	Intuition will be, uh, daunting...


|	   Can C= take the lead? Maybe provide guide lines and a
|	   very basic library, for starters, in 2.0 Amiga UNIX?
|	   Later versions of the OS could slowly build on the
|	   basic library routines.

	Well I assume they're busy working on MS-DOS
	and AmigaDos file systems, etc. etc. - right,
	guys?  Or do we PD types have to do that stuff
	ourselves too?...

|	   X provides some graphic solutions to problems but it
|	   seems like a less bulky way of accessing Amiga hardware
|	   should be available. Plus, there's no sound, music or
|	   speech capability in X.

	"MGR" is a PD window system from Bell labs -
	it's available on a lot of systems. It seems
	to have a great deal of functionality - its
	method uses the concept of an extended console
	driver with escape codes to handle the window
	stuff, rather similar in part to AmigDos CON:
	device. It's easily connected too, just the
	ticket for porting to AmigaDos and using the
	serial port...


-- 
  ,u,	 Bruce Becker	Toronto, Ontario
a /i/	 Internet: bdb@becker.UUCP, bruce@gpu.utcs.toronto.edu
 `\o\-e	 UUCP: ...!utai!mnetor!becker!bdb
 _< /_	<--- net.gumby having a vowel movement

logan@netxcom.netx.com (Jim Logan) (05/25/91)

In article <1991May20.050025.29148@digibd.com> rhealey@digibd.com (Rob Healey)
writes:
# 
# 	Some thoughts:
# 
# 	1) Sound, speech and video "servers" would sit in user, kernel
# 	   or a mix of both modes and listen on IPC ports for requests
# 	   to do something. They would prevent processes from stomping
# 	   on each other when it comes to /dev/amiga access. If a user
# 	   didn't need to use /dev/amiga toys then they wouldn't
# 	   start up the servers and take the performance hit caused by
# 	   the servers real time nature. Maybe the real time/configurable
# 	   scheduler in Amiga UNIX could be used here too?

Actually, that was my next project after porting g++.  I wanted to
make some noise on my Amiga, and since Commodore won't let me
install a device driver of my own making, I was going to make a
daemon.  I was kindof thinking of taking NeXT's approach to
device drivers.

# 	2) A library would provide the way to access /dev/amiga features,
# 	   a program wouldn't be aware that the lib was mmap'ing
# 	   /dev/amiga and doing the necessary bookkeeping. From the
# 	   program point of view this would all look like neat little
# 	   function calls.

Agreed.

# 	3) It would probably be best to implement all this on top of
# 	   /dev/amiga so that no more kernel or system hooks are
# 	   needed. Maybe a "super server" could do the mmap call
# 	   on /dev/amiga and then take IPC requests from the
# 	   Amiga library code.

Pretty much what I had in mind.

# 	4) We should avoid trying to create an AmigaDOS compatability
# 	   library since this would probably create a complex monster
# 	   that's a bugger to maintain.

I don't have much interest in AmigaDOS compatibility, unless I
can run commercial software, al la Apple's Finder-under-A/UX.
THAT I would pay money for!  (Are you listening, Commodore?)

# 	   So, what do people think? Should we create some common
# 	   interface to /dev/amiga so a buzillion uncompatable
# 	   programming interfaces to /dev/amiga don't arise?
# 
# 	   Can C= take the lead? Maybe provide guide lines and a
# 	   very basic library, for starters, in 2.0 Amiga UNIX?
# 	   Later versions of the OS could slowly build on the
# 	   basic library routines.

Even if Commodore doesn't want to help with something like that,
I am interested in doing the design AND implementation with input
from others.

# 	   So, what can we do NOW to avoid a nasty, obfusicated,
# 	   uncooperating mass of Amiga specific code in the future??

Let's define what low-level functionality we want and how it
should work via a mailing list.  My machine isn't fit to handle
the list and Usenet News, until /dev/ser is fixed.  Can anyone
else start a mailing list for this?   

			-Jim

ahh@moji.uucp (Andy Heffernan) (05/26/91)

In article <104379@becker.UUCP> bdb@becker.UUCP (Bruce D. Becker) writes:
>In article <1991May20.050025.29148@digibd.com> rhealey@digibd.com (Rob Healey) writes:
[...]
>|	   X provides some graphic solutions to problems but it
>|	   seems like a less bulky way of accessing Amiga hardware
>|	   should be available. Plus, there's no sound, music or
>|	   speech capability in X.
>
>	"MGR" is a PD window system from Bell labs -
>	it's available on a lot of systems. It seems

Minor correction -- MGR is from Bellcore, not Bell Labs.

-- 
$BJ8;z(J		Andy Heffernan
This is Unix ( )-	ahh@moji.uucp (uunet!glyph!moji!ahh)
This is your brain on Unix (o)-
Any questions?