If the external function you are calling has more parameters that can be accomodated with the coroutineCallWith:with:... message you will need to use the coroutineCallWithArray: message. You can also use this message if you find it more convenient. Simply pass each parameter as an element of the array.
| thread | thread := [] fork. "Create a new suspended thread" (PlatformFunctions at: 'DosBeep') coroutineCallWithArray: #(440 3000) threadKey: thread.
| context thread | thread := [] fork. "Create a new suspended thread" context := CgDisplay default handle. (PlatformFunctions at: 'XBell') coroutineCallWithArray: #(context 50) threadKey: thread.