Data line is normally +12V
Start bit goes to 0V for 833uS (logic 1)
8 data bits - logic 1 = 0V
If odd number of zeros in byte then parity bit goes low (logic 1) to make even number (= even parity)
Stop bit goes +12V (logic 0)
Is each of these points correct?
RS-232-C swings both ways around 0 V. 0 V is an invalid state.
The descriptions online are confusing because they tend to use the wrong terms. In serial comms, there is not "high and low", the line states are referred to as mark and space. Originally "mark" and "space" referred to the holes in a paper tape attached to a teletype. It's important to get the right concepts, because serial communications can use different voltage levels and electrical signals, while keeping the same logical format. You could think of it as "Layer 1/Layer 0" in the OSI model: the format of marks and spaces is Layer 1, but the interpretation of those marks as voltages is at a lower level that could take multiple forms. RS-232-C, EIA-422, EIA-423, EIA-485, and current loop have the same marks but are electrically different. When you use "TTL UART", the voltage levels are different, but the marks and timing are still the same. That's why you can convert between TTL and RS-232 levels with ordinary transistors.
Data words are sent with logical 1 as a mark, 0 as a space. The start bit is always a space, and the stop bit(s) are always marks. In between words the idle state is mark. Each word starts with a start bit, then the bits of the data LSB first, (optional parity bit), and then 1 or 2 stop bits. The number of stop bits is not that important, because asynchronous serial comms idle in the same state (marking). The stop bits act as a minimum idle time between words. So if you send 2 stop bits, and the receiver expects 1, it will still understand.
Parity is sent with different modes, either even, odd, mark, space, or no parity. Mark or space parity always sends mark or space in the parity bit. Even (odd) parity sends a bit, so that the sum of the number of spaces in both the data and parity is even (odd). This means that a 7-bit word equal to 0x0 gets a different even parity than an 8-bit word with the same value. In practice the most common format is 8-N-1, so this isn't noticed.
The voltage levels assigned to a mark and space are a different issue and can be examined entirely separately from the above.
In RS-232-C, a mark is transmitted as -12 V and received from -2 to -25 V. A space is transmitted as +12 V and received from +2 to +25 V.
In EIA-423, a mark is transmitted as -5 V and received from -4 to -6 V. A space is transmitted as +5 V and received from +4 to +6 V.
In EIA-422, signals are balanced between two wires, with the common-mode voltage ignored, and the differential voltage (noninverted minus inverted) being transmitted as -5 V for a mark, +5 V for a space, and received from -.200 V to -12 V, and +.200 V to +12 V respectively.
TTL transmits a mark as Vcc and a space as Gnd. Converting between these different electrical standards just uses transceivers that know nothing about bits or baud rates. On the other side, when you program software, the only thing that matters is the marks and spaces.
Edit: mind your +s and -s