Here's an old response from a developper regarding how it used to work in version 6:

"We use subset C if the input data is all-numeric.

If the input data begins with at least four digits, we start encoding in subset C; otherwise we start encoding in subset
B. For the rest of the input data we dynamically switch between subset B and C, depending on whether we see another
range of digits. Note that we never use subset A, so our implementation of Code 128 does not allow you to encode control
characters or special characters."

However, I would greatly recommend that you upgrade to version 7 of PSM. In version 7, with the new barcode plugin, all three subsets of Barcode 128 can be used, so you can use whichever one that you need whenever you want. This would probably be the best thing to do if you want to have full control over your barcode.

Raphaƫl Lalonde Lefebvre