A multiple purpose programmable device