Weird 293/754410 behaviour

I've been playing with an L293D to make a custom motor control shield (which in the end will probably cost me more than if I just bought one from Radioshack at this rate) but using this configuration:
and this code

int switchPin = 2;    // switch input
int motor1Pin1 = 3;    // pin 2 on L293D
int motor1Pin2 = 4;    // pin 7 on L293D
int enablePin = 9;    // pin 1 on L293D

void setup() {
  // set the switch as an input:
  pinMode(switchPin, INPUT); 

  // set all the other pins you're using as outputs:
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(enablePin, OUTPUT);

  // set enablePin high so that motor can turn on:
  digitalWrite(enablePin, HIGH);
}

void loop() {
  // if the switch is high, motor will turn on one direction:
  if (digitalRead(switchPin) == HIGH) {
    digitalWrite(motor1Pin1, LOW);   // set pin 2 on L293D low
    digitalWrite(motor1Pin2, HIGH);  // set pin 7 on L293D high
  }
  // if the switch is low, motor will turn in the opposite direction:
  else {
    digitalWrite(motor1Pin1, HIGH);  // set pin 2 on L293D high
    digitalWrite(motor1Pin2, LOW);   // set pin 7 on L293D low
  }
}

from

http://luckylarry.co.uk/arduino-projects/control-a-dc-motor-with-arduino-and-l293d-chip/
I can get the motor to work for a few minutes, then it quits (using the 293. Switching out the 754410 gets me squat.) The thing is, the motor seems to "want" to run after it quits, and it kind of jumps a little if you push the button after it quits, like it's trying to reverse, but stays locked up. Is it a logic problem or what? Has anyone else seen this and can it be solved?

Direction is a 2 pin affair with a native chip. Look at the datasheet for the truth table.