[Coco] USRx() and adding more parameters?

Sean Conner sean at conman.org
Wed Nov 5 14:24:21 EST 2025


It was thus said that the Great Bill Gunshannon via Coco once stated:
> 
> On 11/5/2025 1:13 PM, Sean Conner via Coco wrote:
> >It was thus said that the Great Allen Huffman via Coco once stated:
> >>The BASIC ROM has the USR function:
> >>
> >>DEF USR0=&H3F00
> >>
> >>A=USR0(42)
> >>
> >>It accepts one parameter.
> >>
> >>Since it jumps from BASIC into the USR assembly, couldn’t that code just
> >>parse a “,” and more numbers, allowing it to accept whatever needed 
> >>to be
> >>passed in?
> >>
> >>A=USR0(1,2,3,4)
> >
> >   Attached is another proof-of-concept.  This implements a USRn function
> >that draws a pattern (8x8, based on early Mac background patterns) on the
> >screen in a given area, and cycles through 38 such patterns when you hit a
> >key.  It works best in PMODEs 0, 2 or 4.  The critical line is:
> >
> >	110 X=USR0(P),(65,49)-(190,142)
> >
> >The first parameter is the pattern #, then a comma, then the upper left
> >corner, then the lower right corner of the area to draw the pattern, using
> >the code BASIC uses to parse the LINE command.  Looks weird, but it works.
> 
> Wouldn't it just be easier to pass an address as that  one argument and 
> have it point to a block containing as many parameters as you want?

  Easier for who?  The implementor?  Or the user?  Here, I can type this at
the BASIC prompt and have it work:

	X=USR0(3),(20,40)-(100,120)

or even

	X=USR0(3),(X,Y)-(X+15,Y+30)

  Otherwise, the code that doesn't do the extra parsing looks like:

	110 POKE32736,20:POKE32737,40:POKE32738,100:POKE32739,120:X=USR0(32736)

or:

	101 X1=32736:Y1=X1+1:X2=X1+2:Y2=X1+3
	110 POKEX1,20:POKEY1,40:POKEX2=100:POKEY2=120:X=USR0(X1)

  Also, the amount of code I added to support this wasn't much---it was just
two additional ROM calls:

	call	$B26D	; skip past comma
	call	$938F	; parse (x,y)-(x,y)
			; results in HORBEG,VERBEG,HOREND,VEREND
			; in the direct page

  Technically, these two calls are undocumented, but at this point, I don't
think Microsoft is going to release a new version of Color BASIC or Extended
Color BASIC, making this type of thing easier to do now.

  -spc


More information about the Coco mailing list