State 0
  State 0 is to synchronize on the preamble. It is initiated with DCC_subst set to 0.
  
  | Condition | Action | Process | Next state |  
  | receive 0 bit | if DCC_subst < 20 set DCC_subst to 0 ELSE set DCC_subst to 8 and go to state 1 | 
	dca02 -> dca03 | 
	0 1 |  
  | receive 1 bit | increment DCC_subst | dca04 | 0 |  
   
  State 1
  State 1 verifies the second half of a "0" bit
  
  | Condition | Action | Process | Next state |  
  | receive 0 bit | if DCC_subst == 0 go to state 4, else go to state 2 for next bit | dca07 | 2 / 4 |  
  | receive 1 bit | set DCC_subst to 0, go to state 0 | dca01 | 0 |  
   
  State 2
  State 2 processes the first half of a bit
  
  | Condition | Action | Process | Next state |  
  | receive 0 bit | assemble "0" bit, decrement DCC_subst, go to state 1 to verify | dca05 | 1 |  
  | receive 1 bit | assemble "1" bit, decrement DCC_subst, go to state 3 to verify | dca06 | 3 |  
   
  State 3
  State 3 verifies the second half of a "1" bit
  
  | Condition | Action | Process | Next state |  
  | receive 0 bit | set DCC_subst to 0, go to state 0 | dca01 | 0 |  
  | receive 1 bit | if DCC_subst == 0 go to state 4, else go to state 2 for next bit | dca07 | 2 / 4 |  
   
  State 4
  State 4 looks for EOM or start another byte
  
  | Condition | Action | Process | Next state |  
  | receive 0 bit | set DCC_subst to 8, go to state 1 | dca03 | 1 |  
  | receive 1 bit | set EOM, check checksum if used / set DCC_subst to 0 go to state 0 | dca00 -> dca01 | 0 |  
   
 | 
  
  | Proc | Condition | Action |  
  | dca00 |   | set EOM, check checksum if enabled. Fallthrough to dca01 |  
  | dca01 |   | set DCC_subst to 0, go to state 0 |  
  | dca02 | DCC_subst < 20 ELSE | set DCC_subst to 0, stay in state 0
	 fall through to dca03 |  
  | dca03 |   | set DCC_subst to 8, go to state 1 to verify |  
  | dca04 |   | increment DCC_subst, stay in state 0 |  
  | dca05 |   | assemble 0, decrement DCC_subst, go to state 1 to verify |  
  | dca06 |   | assemble 1, decrement DCC_subst, go to state 3 to verify |  
  | dca07 | DCC_subst == 0 ELSE | process byte, go to state 4
	 go to state 2 for next bit |  
   
 |