module tbirdsdo title 'Output-Coded T-Bird Tail Lights State Machine' "TBIRDSDO device 'P16V8R'; " Input and output pins CLOCK, LEFT, RIGHT, HAZ, RESET pin 1, 2, 3, 4, 5; L3Z, L2Z, L1Z, R1Z, R2Z, R3Z pin 18..13 istype 'reg'; " Definitions QSTATE = [L3Z,L2Z,L1Z,R1Z,R2Z,R3Z]; " State variables IDLE = [ 0, 0, 0, 0, 0, 0]; " States L3 = [ 1, 1, 1, 0, 0, 0]; L2 = [ 0, 1, 1, 0, 0, 0]; L1 = [ 0, 0, 1, 0, 0, 0]; R1 = [ 0, 0, 0, 1, 0, 0]; R2 = [ 0, 0, 0, 1, 1, 0]; R3 = [ 0, 0, 0, 1, 1, 1]; LR3 = [ 1, 1, 1, 1, 1, 1]; equations QSTATE.CLK = CLOCK; state_diagram QSTATE state IDLE: IF RESET THEN IDLE ELSE IF (HAZ # LEFT & RIGHT) THEN LR3 ELSE IF LEFT THEN L1 ELSE IF RIGHT THEN R1 ELSE IDLE; state L1: IF RESET THEN IDLE ELSE IF HAZ THEN LR3 ELSE L2; state L2: IF RESET THEN IDLE ELSE IF HAZ THEN LR3 ELSE L3; state L3: GOTO IDLE; state R1: IF RESET THEN IDLE ELSE IF HAZ THEN LR3 ELSE R2; state R2: IF RESET THEN IDLE ELSE IF HAZ THEN LR3 ELSE R3; state R3: GOTO IDLE; state LR3: GOTO IDLE; end tbirdsdo