Why not have multiple commands? I know it's not really the nicest way of doing things, but what you want to do comes under something called "overloading", a really painful to keep track of technique you can use in Object Oriented languages like C++ or Java which QB doesn't support.
So instead of having one PUT statement, you'd have two.
put x, y, colour
putw x, y
I've done that at times, and while it's not pretty, it gets the job done if you want, and even better, using shared variables, you can share information between subs. For example:
dim share shColour as integer
sub put (x,y,colour)
shColour = colour
pset(x,y),colour
end sub
sub putw(x,y)
pset (x,y),colour
end sub
Does that help at all?