A non-volatile programmable semiconductor memory device