Prev: EEBB Up: Map Next: EF06
EED7: do RS232 parity bit
Used by the routine at EEBB.
enters with RS232 bit count = 0
EED7 A9 20 LDA #%00100000 mask 00x0 0000, parity enable bit
EED9 2C 94 02 BIT $0294 test the pseudo 6551 command register
EEDC F0 14 BEQ $EEF2 if parity disabled go ??
EEDE 30 1C BMI $EEFC if fixed mark or space parity go ??
EEE0 70 14 BVS $EEF6 if even parity go ??
else odd parity
EEE2 A5 BD LDA $BD get RS232 parity byte
EEE4 D0 01 BNE $EEE7 if parity not zero leave parity bit = 0
EEE6 CA DEX make parity bit = 1
EEE7 C6 B4 DEC $B4 decrement RS232 bit count, 1 stop bit
EEE9 AD 93 02 LDA $0293 get pseudo 6551 control register
EEEC 10 E3 BPL $EED1 if 1 stop bit save parity bit and exit
else two stop bits ..
EEEE C6 B4 DEC $B4 decrement RS232 bit count, 2 stop bits
EEF0 D0 DF BNE $EED1 save bit and exit, branch always
parity is disabled so the parity bit becomes the first, and possibly only, stop bit. to do this increment the bit count which effectively decrements the stop bit count.
EEF2 E6 B4 INC $B4 increment RS232 bit count, = -1 stop bit
EEF4 D0 F0 BNE $EEE6 set stop bit = 1 and exit
do even parity
EEF6 A5 BD LDA $BD get RS232 parity byte
EEF8 F0 ED BEQ $EEE7 if parity zero leave parity bit = 0
EEFA D0 EA BNE $EEE6 else make parity bit = 1, branch always
fixed mark or space parity
EEFC 70 E9 BVS $EEE7 if fixed space parity leave parity bit = 0
EEFE 50 E6 BVC $EEE6 else fixed mark parity make parity bit = 1, branch always
This entry point is used by the routine at EEBB.
decrement stop bit count, set stop bit = 1 and exit. $FF is one stop bit, $FE is two stop bits
EF00 E6 B4 INC $B4 decrement RS232 bit count
EF02 A2 FF LDX #$FF set stop bit = 1
EF04 D0 CB BNE $EED1 save stop bit and exit, branch always
Prev: EEBB Up: Map Next: EF06