Let A & B be two categories, the join A*B is created by stipulating its class of object is the disjoint union of the objects of A & B, the morphisms remain the 'same', but we throw in an extra morphism for every object a in A, and b in B.

that is:

A*B[a,a']=A[a,a'] if a,a' are in A

A*B[b,b']=B[b,b'] if b,b' are in B

A*B[a,b]=1 if a is in A, and b in B

A*B[b,a]=0 if b is in B, and a in A

it seems like a pretty ad-hoc construction (its obviously based on a construction coming from algebraic topology), is there a more categorical way of defining this?