[comp.sys.m6809] Assembling Device Drivers/Descriptors

ag@floyd.ATT.COM (03/10/89)

Does anyone know how to use RMA to assemble device drivers and descriptors?
I tried defining the type of module in PSECT, and after linking, the module
header doesn't seem to conform with other device drivers.  For instance,
the mode byte at $0D isn't there - instead, the device driver name begins
there!

I didn't even try to do a device descriptor with the assembler yet.  Also,
I can't seem to find any labels in the V.XXX format in os9defs or anywhere.
Anyone know where they are?

Finally, I ended up using debug, save, and verify to get a device driver
and device descriptor in what seemed to be the proper format.  When I
tried to iniz the device, all I got was Error #237 - Out of RAM  (not
the more familiar error, 207)

I thought that buying the os9 developer's kit would allow me to write
device drivers and descriptors.  I hope I wasn't wrong....

P.S.  Please don't tell me to go buy ASM.  I've spent far too much already.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
         ________
        /_______/|       __________________________
        |       ||----->/                         /     Ag Primatic
        |       ||<----/_________________________/      ag@floyd.ATT.com
        |_______|/    / / / /   / /   / / /   / /
       /oooooooo/    /_________________________/
      /oooooooo/
      ---------
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

ag@floyd.ATT.COM (03/17/89)

(My apologies to Pete Lyall and Mike Knudsen for posting parts of
something I just e-mailed to them...)

I finally got asm last night.  And I'm $40 poorer.  But now I have a better
chance of doing device drivers.

Still getting error #257, or out of system-space RAM.  Don't know why or
how, but adjusting the size of my stack doesn't seem to have any effect
on the error.  I tried putting some printing code in my device driver
init section to see when the error #257 occurs.  Didn't even get to it.
It seems to happen when the system does the I$Attach call, before it
even does the init part of my device driver.

Somehow, I don't have any more room in my system memory.  Mfree says
I've got 176k left.  I'm guessing the system memory limitation is 64K,
same as any other process.

Any suggestions, anyone?

Ag Primatic
ag@floyd.ATT.com

donp@bucket.UUCP (Don Park) (03/24/89)

A way to fix that problem of running out of space might be
simply because your not giving the assembler more space to
work with via a #k command.. 

But I have a problem of my own:
I have a radio shack delux rs-232 cart a non-upgraded
MPI (Not sure if it was pre-upgraded when I got it)
and a problem talking at rates above 300. 
At something like 1200, I can get the AT echoed back
but the OK comes in too fast, I'm not sure if its the 232 cart,
the MPI or what. I can talk at 2400 under Rs-Dos but zip-o
with Os9, I'm using the standard ACIA drivers.

Any iders?
thanx
Don

pete@wlbr.EATON.COM (Pete Lyall) (03/25/89)

Sounds like you need the IRQ hack to get your RS-232 I/O
up to snuff:

====================== Cut here ======================


			IRQ HACK INSTRUCTIONS
			   by Pete Lyall

Maybe you've heard of the IRQ hack that you can perform to the
Deluxe RS-232 pack, so that IRQ interrupts are not 'lost', but
didn't know how to do it. Here's the information you need:

Basically, you are connecting the IRQ pin of the 6551 to the IRQ
pin of the 6809..

On the pak:

Locate the little blue jumper wire near the edge connector. One
of the solder pads it is connected to has the label '1' near it.
Desolder both ends of this jumper, and solder one end of a long
wire (1-2 feet - enough to comfortably reach the back of the
coco) to the solder pad near the '1' label. Burn (with the tip of
the soldering iron) or file a small hole in the side of the pak
so that the wire can be passed through it without being pinched.
Attach a miniature phone plug (male) to the end of the wire.

On the Coco3:

Locate the resistor that does the pullup of the IRQ line (CPU pin
3) to the 5vdc. It is R2, and I believe it is the second from the
left in a cluster of resistors to the right-rear of the 6809 chip
(as seen from the keyboard). Solder a wire to the end of that
resistor that is closest to the keyboard (the side that also ties
to CPU pin 3). Carefully route this wire to the back of the
machine, and mount a miniature female phone jack there.

Poof. That's all there is to it. No software changes are required
- the existing ACIAPAK driver will work (better!) as is. If you
run multiple paks (or other interrupt devices that could benefit
from the IRQ hack), just tie them all together at the male plug
that will plug into the coco3.

If you wish to perform this procedure for the coco2, the majority
of the work is the same, except that the resistor that you should
connect to inside the coco is R14. As verification, ensure that
one side of this resistor ties directly to pin 3 of the 6809,
and tack the wire onto this side.

-- 
Pete Lyall                                           Contel Corp.(818) 706-5693
Compuserve: 76703,4230 (OS9 Sysop)  OS9_Net: (805)-985-0632 (24hr 300/1200/2400)
Internet: pete@wlbr.eaton.com           UUCP: {hacgate,jplgodo,voder}!wlbr!pete 

koonce@brahms.berkeley.edu (tim koonce) (03/25/89)

You say you can't communicate at anything higher than 300 baud?

First, the obvious questions:
  - What program are you using?
Because of multi-tasking overhead, writing programs that work well under OS9
Level 2, especially with the CoCo 3 ACIAPAK driver, requires a bit of care.
Home-grown programs aren't really recommended unless you have a pretty good
idea of what you're doing.
  - Have you installed the IRQ hack?
The GIME in the CoCo3 isn't too clever about handling interrupts.  Wiring the
interrupt line from the ACIA chip directly to the CPU gets around this.
For that matter, some people have discovered that the interrupt lines inside
the RS232 pak aren't correctly wired.  Since most RSDOS terminal programs
use polling rather than interrupts, it rarely shows up there.
  - How old is the RS232 pak?
Some older RS232 paks used a version of the 6551 ACIA which wouldn't
work well at the 2mhz clock speed.  Some people have solved a lot of
problems by simply replacing the 6551.

Hope this helps.

					- Tim Koonce