[Coco] Os9 Intercept
Bill Pierce
ooogalapasooo at aol.com
Tue Oct 30 18:05:48 EDT 2012
Bob, if you could find the code to turn off the buffering, that would be great. Both Sound Chaser and and a new project I'm working on are suffering from "too many flushes". I'm stuck in limbo on the new project because of the buffering and CWArea not liking each other too much. It seems to clear in regular and overlay windows, but with CWArea, sometimes it does, sometimes it don't.
I looked at the C manual and flush didn't tell me much but I did find this:
--------------------------------------------------------------------
Setbuf — fix file buffer
Synopsis
#include <stdio.h>
setbuf(FILE *fp, char *buffer);
Description
When the first character is written to or read from a file after it has been opened
by "fopen()", a buffer is obtained from the system if required and assigned to it.
Setbuf may be used to forestall this by assigning a user buffer to the file.
Setbuf must be used after the file has been opened and before any I/O has taken
place.
The buffer must be of sufficient size and a value for a manifest constant, BUFSIZ,
is defined in the header file for use in declarations.
If the "buffer" argument is NULL (0), the file becomes unbuffered and characters
are read or written singly.
NOTE that the standard error output is unbuffered and the standard output is
buffered.
--------------------------------------------------------------------
Could this be what you are refering to?
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
-----Original Message-----
From: Bob Devries <devries.bob at gmail.com>
To: CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
Sent: Tue, Oct 30, 2012 5:19 pm
Subject: Re: [Coco] Os9 Intercept
Hi all,
Regarding the use of fflush() in C, it would be good to study pages 4-11 and
4-12 of the C manual. I seem to remember also being able to set a bit to
make the output unbuffered, but I'll need to study some of my code to see
what I did.
Regards, Bob Devries
Dalby, QLD, Australia
----- Original Message -----
From: "Retro Canada" <retrocanada76 at gmail.com>
To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
Sent: Wednesday, October 31, 2012 12:33 AM
Subject: Re: [Coco] Os9 Intercept
> I'm am using I$Write on stdout path in C with no luck either. I have
> to fflush every time too. So I believe is not a C problem.
>
> #define _IWRITE(a,x,y) { reg.rg_a = a;reg.rg_x = x;reg.rg_y =
> y;_os9(I_WRITE,®); }
>
>
> On Tue, Oct 30, 2012 at 10:16 AM, Bill Pierce <ooogalapasooo at aol.com>
> wrote:
>>
>> 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
>
>
>
> --
> Panasonic FSA1-WSX
> Commodore 64
> Commodore 64C
> Commodore 128
> Apple //c
> TRS-Color Computer 3
> TI-99/4A
> ..and more coming!
>
> --
> 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