Sten must be right. From LC60 SCI module docs:
TE also can be used to queue an idle character by writing TE = 0 then TE = 1 while a transmission is in progress.Refer to Section 12.3.2.1, “Send Break and Queued Idle,” for more details
S12X SCI behaves exactly the same, though TE bit isn't documented equally well. It's interesting what transmission is in progress when we set TE=1 for the first time :smileyhappy:, but it seems that any TE rising edge makes SCI sending idle character.
BasePointer, regarding reading SCIS1. Your while(!SCIS1_TC) is OK for reading SCIS1 register, but it comes after you first time write to SCID register. Maybe you read it somewhere earlier then in the test() routine?
[SCID=?] followed by [while( !SCIS1_TC) ;] should be OK, provided you read SCIS1 with SCIS1_TDRE set at least once before. You should clear TDRE before writing to SCID, and the only way to do that is reading TDRE==1 and writing then SCID. You say the result is the same if you read SCIS1 before SCID or not. You also said previously that you see no TX output with BDM not connected. Did you recheck if you see now TX output with no BDM connected?
Regarding unwanted idle character and delay between TXCS and TX. After writing TE=1, you should delay setting TXCS for idle character time. Try 1) setting baudrate divider to min value of 1, 2) enabling TE=1, 3) waiting for full character time at fastest baudrate, 4) setting baudrate divider to value you want (128). At least this works on S12XD.