A method which controls programming of an electrically erasable and programmable nonvolatile semiconductor memory device including a plurality of bit lines, a plurality of word lines insulatively intersecting said bit lines, a memory cell array formed of electrically erasable and programmable memory cells coupled to said bit lines and said word lines and arranged in a matrix of rows and columns, an a plurality of program circuits including address buffers and row and column decoders which control selection of memory cells, application of write voltages to the selected memory cells and sensing of actual written states of said selected memory cells, comprising the steps of:
- storing control data at one of first and second predetermined logic levels which define whether or not write voltages are to be applied to respective of the memory cells selected by said program circuits;
- applying said write voltages to said respective memory cells selected by said program circuits in dependence on whether the control data corresponding to the respective of the memory cells is at said first pre-determined logic level or at said second predetermined logic level;
- sensing actual written states of only given memory cells for which control data of said first predetermined logic level are stores;
- modifying latest stored control data from said first predetermined logic level to said second predetermined logic level for memory cells in which successful writing of data has been sensed;
- maintaining said stored control data at said first predetermined logic level for memory cells in which it has been sensed that data has not been successfully written;
- and
- maintaining said stored control data at said second predetermined logic level upon storing control data at said second predetermined level.