[Coco] Nitros9 and Set Status Call SS.AScrn

L. Curtis Boyle curtisboyle at sasktel.net
Wed Apr 10 12:47:10 EDT 2019


Well… technically, if you change the high bit on a /Wx descriptor’s TYPE byte, you can “make it” a VDG screen. But everything else Bill says applies. SS.AScrn and SS.Dscrn are uniquely VDGINT (now CoVDG) based calls. They were meant for arcade games that needed to directly access the screen, and I think were put into the VDG driver because the old level 1 graphics screens also allowed direct screen writes. CoWin (formerly GrfInt/WindInt) and GRFDRV was meant for more API (system call) based graphics. Personally, I think the direct screen modes should have been in the latter, so that you could combine the two (do drawing, fonts, etc. through the “normal” system, but allow direct screen access at the same time. Bill Nobel did add a system call to help facilitate this into NitrOS-9 back in it’s commercial days, that is still there - the SS.ScInf GetStat call, which returns the # of 8K blocks the screen uses, what MMU block # the screen starts at (graphics screens are always contiguous blocks, so getting the size and the start block # lets you know which blocks are used), and even the current working area X/Y start/sizes (so you can do direct screen writes even within a window vs the whole screen). You still have to map those blocks in using existing calls.

L. Curtis Boyle
curtisboyle at sasktel.net

TRS-80 Color Computer Games website
http://www.lcurtisboyle.com/nitros9/coco_game_list.html



> On Apr 10, 2019, at 3:25 AM, Bill Pierce via Coco <coco at maltedmedia.com> wrote:
> 
> Walter, I don't think you were paying attention in class... LOL The SS.AScrn call CANNOT be used on a CoWin or CoGrf screen (i.e. /Wx). It has to be a CoVDG screen (i. e. /Vx). So yes, that would be an illegal service request to CoWin or CoGrf.
> And yes, the path would be the window path.
> 
> 
> 
> -----Original Message-----
> From: Walter Zambotti <zambotti at iinet.net.au <mailto:zambotti at iinet.net.au>>
> To: 'CoCoList for Color Computer Enthusiasts' <coco at maltedmedia.com <mailto:coco at maltedmedia.com>>
> Sent: Wed, Apr 10, 2019 2:00 am
> Subject: Re: [Coco] Nitros9 and Set Status Call SS.AScrn
> 
> Robert/Bill.
> 
> What kind of path will it need because at the moment I'm doing this
> 
> struct registers regs;
> int wpath;
> 
> wpath = open("/w", 3);
> regs.rg_a = wpath;
> regs.rg_b = SS_ASCRN;
> regs.rg_x = 4;
> 
> if (_os9(I_SETSTT, ®s) == -1)
> {
>   printf ("Bad SS.AScrn Err = %d\n", regs.rg_b);
> }
> 
> And that always returns an error of #208.  Illegal service request.
> 
> I get this error with Basic09 when trying to use SET/GET_Stat if I forget to leave some free mem for basic09.
> 
> But I'm doing this from C!
> 
> And I know the open "/w" has worked because I can then do a dwset and a window does appear!
> 
> But if the SS.AScrn is working then I shouldn't need to do a dwset!
> 
> Walter
> 



More information about the Coco mailing list