When you get cold air from the vent when set to hot on an overheating engine, it is because there is no water in the system to get the heat from.
1. Get a timing light, and check your timing. If the timing is too far advanced, it will cause extra heat to build up in the engine, and may be too much for a marginally performing system to get rid of.
2. REMOVE the thermostat, make a temporary gasket for the neck, put it back together, fill the coolant system back up (start the engine and make sure all air pockets are burped out), and drive it for about 5 min. or so. watch your temp. does it heat up or even overheat? If it does not, I would say bad thermostat.
My money is on the thermostat being stuck closed or at least partially closed.