[Coco] GFX2("DEFBUFF"
coco at jechar.ca
coco at jechar.ca
Sat Feb 27 18:33:37 EST 2021
The error I get the second time I run the program.
Error #194 - Bad/Undefined buffer number.
On 2021-02-27 17:53, coco at jechar.ca wrote:
> I dont get what that URL part is about so I tried this
> It compiles but gives the wrong answer the first time it is run
> and produces an error the second time it is run. Maybe you can
> see what I am doing wrong.
>
> PROCEDURE buffy
>
> (* Test Program for
> (* BASIC09 to get group 4, buffer 1 as an example.
> (*
>
> DIM gpptr,gpsize:INTEGER
>
> gpptr = 0
> gpsize = 0
>
> RUN GFX2("DEFBUFF",4,1,128)
> RUN GetGPAddress(gpptr,gpsize)
> PRINT "The ADDRESS of group 4, buffer 1 is:";
> PRINT gpptr
> PRINT "The SIZE of group 4, buffer 1 is:";
> PRINT gpsize
>
> END
> PROCEDURE GetGPAddress
> PARAM gpptr,gpsize:INTEGER
> TYPE registers=cc,a,b,dp:BYTE;x,y,u:INTEGER
> DIM regs:registers
> (* Std Out
> regs.a=1
> regs.b=$84
> (* group & buffer #’s
> regs.x=$0401
> (* Map it in (regs.y=0 to map it back out again)
> regs.y=1
> RUN SYSCALL($8d,regs)
> gpptr=regs.x
> gpsize=regs.y
>
> END
>
>
> On 2021-02-25 21:43, L. Curtis Boyle wrote:
>> On Feb 25, 2021, at 8:25 PM, coco at jechar.ca wrote:
>>>
>>>
>>> If you have defined a graphics buffer with DEFBUFF is there some
>>> way to determine it's actual address in your process space
>>> so that you can poke values directly to the buffer.
>>>
>>> Charlie.
>>>
>> Defbuff doesn’t map the buffer in; it merely allocates it from the
>> computer's memory and lets you define the group/buffer #’s, and the
>> size of the buffer itself. To map it in (and map it out), use the
>> GetStat call SS.MpGPB.
>>
>> An example in BASIC09 to get group 4, buffer 1 as an example (set up
>> as a callable module: Call with RUN GetGPAddress(buffptr,buffsize):
>> PROCEDURE GetGPAddress
>> PARAM gpptr,gpsize:INTEGER
>> TYPE registers=cc,a,b,dp:BYTE;x,y,u:INTEGER
>> DIM regs:registers
>> (* Std Out
>> regs.a=1
>> regs.b=$84
>> (* group & buffer #’s
>> regs.x+$0401
>> (* Map it in (regs.y=0 to map it back out again)
>> regs.y=1
>> RUN SYSCALL($8d,regs)
>> IF LAND(regs.cc <http://regs.cc/>,1)=1 THEN
>> PRINT “ERROR #”;regs.b
>> gpptr=0
>> gpsize=0
>> ELSE
>
>> gpptr=regs.x
>> gpsize=regs.y
>> ENDIF
>> END
>>
>>
>>
>> L. Curtis Boyle
>> curtisboyle at sasktel.net
>>
>> TRS-80 Color Computer Games website
>> http://www.lcurtisboyle.com/nitros9/coco_game_list.html
>>
>> NitrOS-9 Ease of Use (EOU) Project
>> http://www.lcurtisboyle.com/nitros9/nitros9.html
More information about the Coco
mailing list