Preface: I don't have any MAX232 ICs handy, and only need unidirectional communication (from TTL to RS232). It's just a quick test to see if an old GPS OEM board still works. I don't have any MOSFETs on hand either - just some basic BJTs, as shown in the schematic. I'm using a dual supply instead of parasitic voltages from the serial port.
Here's the translation I was after:
TTL_Tx --> RS232_Rx
0V ~ +12V
5V ~ -12V
I thought this would work (and it does in LTSpice).
Q1 - Turns Q2 on when the TTL input is high, providing a path for current to flow
Q2 - Provides a translation of 5V->12V and 0V->-12V at its collector
Q3 - Inverts Q2's collector signal for the final output
Of course, this actually works fine. The serial port is happy and the values are in spec. But I'm still trying to figure out why the circuit doesn't behave as I expected.