[Coco] Os9 Intercept

Lothan lothan at newsguy.com
Tue Oct 30 12:49:55 EDT 2012


You have a few ways to tackle this.

If you are using the high-level I/O function calls (puts, printf, etc.) on a 
file descriptor, you can effectively disable buffering by setting a flag in 
the FILE structure. This may not even be documented anywhere and it's been 
years since I've played with it so I don't remember the details. If you poke 
around the FILE structure members, I think the one you want to set should be 
fairly obvious and you'll need to set it immediately after you open the path 
and before you perform any I/O on that path. If I remember correctly, the 
standard paths (stdin, stdout, stderr) are unbuffered by default but any 
paths you open with a call to fopen() or fcreat() are buffered... assuming 
I'm remembering correctly.

In my opinion, the best alternative is to avoid using the high-level I/O 
function calls and go straight to the low-level I/O function calls: read(), 
readln(), write(), and writeln() are implemented in assembly and are 
straight calls to I$Read, I$ReadLn, I$Write, and I$WritLn without any 
overhead or fancy-schmancy finagling or buffering.

-----Original Message----- 
From: Bill Pierce
Sent: Tuesday, October 30, 2012 10:16 AM
To: coco at maltedmedia.com
Subject: Re: [Coco] Os9 Intercept


Thanx guys
I just set my intercept back to the break catcher on return from the sub and 
that seems to get me out of a loop I was getting into.

Now if I can just convince "C" that I want everything I send to stdout 
printed on the screen without flush after every printf, I would be happy. 
The "C" print routines really suck. The CWArea prints are really screwed. As 
long as I stay in one area, I'm fine. As soon as I start to change areas, 
print, change again  and print again, "C" seems to buffer everything and 
dump it in the 2nd area. Flush seems to do no good. It's worse when the area 
is only 2-3 lines long and I don't want CRs scrolling it. CRs seem to make 
it flush, but when you're dealing with a 2 line work area and have 2 lines 
of info, you don't want to scroll it off the screen. Everything seems to 
work fine in overlays, it's just the cwarea that seems to not want to flush.

Bill P

Music from the Tandy/Radio Shack Color Computer 2 & 3
https://sites.google.com/site/dabarnstudio/
Bill Pierce
ooogalapasooo at aol.com




-----Original Message-----
From: Gene Heskett <gheskett at wdtv.com>
To: coco <coco at maltedmedia.com>
Sent: Tue, Oct 30, 2012 9:45 am
Subject: Re: [Coco] Os9 Intercept


On Tuesday 30 October 2012 09:38:48 Bill Pierce did opine:

> Thanks Aaron, I think that's what I need. The real problem is there's
> already an intercept running on the program that catches the BREAK key.
> Then my ML sub to connect to DW (inline, same program) sets up the
> intercept when it runs. I need to be able to read the intercept &
> vector data address BEFORE it makes the call, then I can restore it
> afterwards.
>
> New question.. when you set the intercept.. do the calls stack, or does
> it just wipe the old intercept and create a new one? Example:
>
> set intercept 1...
> program code..
>
> set intercept 2
> program code..
>
> signal
> jmp intercept 2..
> jmp intercept 1..
> return (RTI)
>
> If it doesn't stack like this, then I can just reset the first intercept
> and it should be fine.
>
> thnx
> Bill P
>
Since the size of the PD area is fixed, its my understanding that only the
last intercept set by the F$Icpt call will be executed when the signal
comes in.  IOW they do not stack.  OTOH, since they don't stack, I also
don't believe there is a limit other than your imagination. :)

> Music from the Tandy/Radio Shack Color Computer 2 & 3
> https://sites.google.com/site/dabarnstudio/
> Bill Pierce
> ooogalapasooo at aol.com
>
>
>
>
> -----Original Message-----
> From: Aaron Wolfe <aawolfe at gmail.com>
> To: CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
> Sent: Tue, Oct 30, 2012 4:47 am
> Subject: Re: [Coco] Os9 Intercept
>
>
> You can get the current intercept settings for a process from it's
> process descriptor.  F$GPrDsc is one way, I think that works in user
> mode.  There may be others, I am no OS9 expert.  In the PD your
> intercept info is at +$36 but if you're using os9 defs you can use the
> pretty names:
>
> P$Signal       RMB       1                   Signal Code $36
> P$SigVec       RMB       2                   Signal Intercept Vector
> P$SigDat       RMB       2                   Signal Intercept Data
> Address
>
> hth
> -Aaron
>
> On Tue, Oct 30, 2012 at 12:42 AM, Bill Pierce <ooogalapasooo at aol.com>
wrote:
> > Hi Guys,
> > In OS9, how do you reset an Intercept back to default after a program
> > has set
>
> it?
>
> > I have a program that runs a function that uses a signal intercept.
> > When the
>
> function is called, the F$Icpt is set. The program will be continuously
> running, but the intercept will no longer be needed until the same
> function is called again. The lines that set the intercept can be
> jumped over each time, but the intercept itself does not need to in
> operation unless within that function, as it interferes with the rest
> of the program. So, how would I go about resetting the intercept
> address to what it was before the change. I searched through both the
> "C" User's guide and the OS9 Tech Reference manual and only found
> reference to setting the intercept.
>
> > So, is there some way to call before the intercept is set to get the
> > current
>
> intercept address saved before I set the intercept?
>
> > Thnx
> > Bill P
> >
> > Music from the Tandy/Radio Shack Color Computer 2 & 3
> > https://sites.google.com/site/dabarnstudio/
> > Bill Pierce
> > ooogalapasooo at aol.com
> >
> >
> > --
> > Coco mailing list
> > Coco at maltedmedia.com
> > http://five.pairlist.net/mailman/listinfo/coco
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco
>
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco


Cheers, Gene
-- 
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
My web page: <http://coyoteden.dyndns-free.com:85/gene> is up!
The word "Windows" is a word out of an old dialect of the Apaches.  It
means: "White man staring through glass-screen onto an hourglass..."

--
Coco mailing list
Coco at maltedmedia.com
http://five.pairlist.net/mailman/listinfo/coco



--
Coco mailing list
Coco at maltedmedia.com
http://five.pairlist.net/mailman/listinfo/coco 




More information about the Coco mailing list