Regarding saving, a common implementation is as follows:
X bytes Save Area 1
Y bytes Cecksum 1
X bytes Save Area 2
Y bytes Checksum 2
X bytes Save Area 3
Y bytes Checksum 3
X bytes Save Area 4
Y bytes Checksum 4
1 byte Save Index
The Save Index is composed of 8 bits, 2 bits per save, for a total of 4, each representing what is contained in each Save Area. The 2 bits allow for 4 possible states 0, 1, 2, 3.
0 Indicates there is no save there.
1 indicates the associated save is for Save Game 1.
2 indicates the associated save is for Save Game 2.
3 indicates the associated save is for Save Game 3.
A game out of the factory has the save index set to [0, 0, 0, 0]. Once Save Game 1 is saved the first time, it is written to Save Area 1 with its checksum. Upon completion, the Save Index receives [1, 0, 0, 0]. If power is interrupted in the process of writing to Save Area 1, or prior to the Save Index being written, the Save Index still contains [0, 0, 0, 0] and thus there is no save.
A save later of Save Game 1 will now look for the first free Save Area, being Save Area 2, and write there. Then it will update the index to: [0, 1, 0, 0]. If power is interrupted in the process of writing to Save Area 2, or prior to the Save Index being written, the Save Index still contains [1, 0, 0, 0] and thus the save did not occur, but the previous save is still there untouched.
If now one wanted to save Save Game 2, the index would be set to [2, 1, 0, 0], and subsequently [0, 1, 2, 0], and so on.
This system allows for exactly 3 Save Games, interruptions will not leave a Save Game in an invalid state, and the last successful Save Game is still accessible. The Checksum prevents other errors. A scan on the save selection screen will modify the Save Index to erase saves that have a Checksum mismatch.
You'll note from the classic games that have 3 Save Games, there's generally no way to break the Save Game in crazy ways. The most you can normally do is abuse what is in memory upon reset from actions that were taken while writing the save.