[comp.os.vms] Reply to request re DRV-11J and AVX-11

mcglinchey@charon.DEC.COM (Jim McGlinchey (HZO) DTN 264-7378) (10/08/87)

>>	We intend ed to use the two interfaces DRV11-J and AXV11-C in a
>>	uVAX II under uVMS for registration of processdatas. Because there is
>>	no system support to this devices, we have to write "device drivers"
>>	by ourselves but we have no in doing this. For processing also single
>>	bytes we think it is very time intensive to use the functions of the
>>	queue I/O-system.

		A QIO costs you about a millisecond of overhead
		in a MicroVAX. The trick is to avoid doing
		single-character or single-word QIO's, and 
		design a QIO command which will do many
		byte/word I/O's for you.

		If you plan to use interrupts, you'll have to
		write a device driver. No other solution is
		possible. If you do not wish to use interrupts,
		then you can map to the I/O page and directly 
		access the device registers. The method to use
		is documented in the VMS Guide to Writing a Device
		Driver Manual, in one of the chapters at the end.	

		It is my opinion, based on many years of experience
		doing device interfacing to PDP-11's and VAXen, that
		you're going to write a device driver. You may not
		want to, and you may be able to avoid it for a while,
		but eventually you WILL write one. The best way to
		start in teh VAX world is to:

		1. Read the "Guide to Writing a VMS Device Driver
		   Manual"

		2. Have available, and be ready to read, the
		   VMS Internals and Data Structures book.


		Start by using the Connect-to-Interrupt Driver
		(CONINTERR.EXE). It suse is documented in the
		"Guide to..." Manual. It is a real VMS device
		driver, to which you add the code specific for
		your device.

>> If someone has experiences which are helpful in our problems, please
>> send us a mail.

		I have recently answered a question like this
		on info_vax. I have appended a copy of my reply.
 
>> Is there any way to write a device driver without the use of
>> queue I/O system services, in favour like a procedure which can be
>> referenced by every high level language?

		A device driver IS a part of the queue I/O system
		service, and therefore what you ask is impossible.
		You can, however, directly map to the I/O page,
		as I have just described.
 
>> Is it necessary to make the system know the address of the
>> devices CSR-registers and if, how to do this?

		Yes. It is necessary, and is part of the
		laoding procedure for a device driver.
		Look at the SYSGEN/CONNECT command.
 
>> How to use the neccessary "modes" and "priority levels"?

		This scares me a bit. You must know about 
		VMS IPLs (priority levels) before you attempt
		to do ANYTHING which accesses the I/O page,
		or deals with bus devices. Again, consult the
		VMS "Guide to..." manual, the VMS Internals
		Book, and the VAX Architecture Handbook.
 
====================================================================
	| I answered the following via direct mail. I am posting|
	| it here as a supplement to my reply.			|

	re DRV-11J:

	You can use the DRV-11J in two ways: with and without
	interrupts. This is an important decision, as the 
	complexity of the solution grows wildly if you wish
	to use interrupts. Unfortunately, if you're driving
	a PUMA robot with it, you'll want to use interrupts.

	As for documentation of the board, notice that the DRV-11J
	is really a pair of Intel 9519 chips surrounded by a
	bunch of TTL chips and connectors. The 9519's do all the
	business of the DRV-11J and the other chips are along for
	the ride. Get yourself the Intel 9519 chip manual from your
	friendly neighborhood Intel rep, and you 'll have more 
	information on the board than DEC supplies.

	The mechanism to drive it is a device driver. No DRV-11J
	driver exists for VMS, so you'll have to write your own.
	I would suggest starting with VMS connect-to-interrupt
	driver. You're still going to write a device driver, 
	the the C-to-I driver contains most of the grim stuff,
	and you're just going to write the part which activates
	your board and handles its interrupts.

	Good. Luck, and let me know how it goes.

	Jim McGlinchey