I am off on another tangent here, so bare with me!.........
This is my understanding, too. The motor itself stores the positions. It (the motor itself) usually comes with a "built-in list" or table of sat positions, but you override these positions in it's (the motor's) memory as you go and set up each individual sat with NEW DiSEqC 1.2 coordinates as you need to.
If you have to reset the motor for some reason, let's say it bumps up against the eaves on your house and faults out due to an overcurrent limit. If you reset the motor in such a case, all the location settings for each satellite will be erased and restored to the factory default position list that was preset from the factory.
I think that the motors come with something like 50 or 60 positions. I don't know if there is a preset position for each, or if they are set to zero or what. But yes, each time you save in DiseqC-1.2 mode, it saves the current position in one of those 50 or 60 sat numbers in the motor, and all the program does, is tell the motor to go to saved location 28 or something like that. I'm not sure about the reset thing. Seems like different motors have different levels of resets, some of which would probably wipe out the saved values as you say. In other instances, it might end up in a situation whereby the positions are all shifted, or out of sync, in which case there is a resync command (or recalculate as you mentioned) whereby you can recover your positions relative to what levels of reset do what. But all this is probably motor specific.
If you adopt the practice of using USALS to operate your motor, which I highly recommend, then you will not overwrite the factory motor positioning program within the motor at any time.
USALS, which is nothing more than a math program, will take your latitude and longitude coordinates and the orbital position (degree) of the sat and calculate the position of that sat and send a DiSEqC command to the motor and tell the motor to MOVE to a specific location that is already stored in its memory, somewhere.
USALS is really telling the motor to move a calculated number of steps or degrees, not to some stored location.
Also, this number of degrees is relative to the position that the motor understands as it's 0.0 , true south position. This CAN be messed up inside the motor. Ie, the motor can get in a situation where it thinks that it's zero is at the wrong place. In that case, USALS will be off, and you either have to calibrate the 0.0 position, or lie to the receiver about what your longitude is. Typically a full reset with this condition will reset the 0.0 position to wherever the motor is currently located, so you have to be careful to manually move the motor to the true 0.0 position (use scale on motor) before doing the reset.
...
.....
It (the motor) has it's own encoder and knows how many steps or revolutions it is between one sat position and another. It knows where HOME is and how far it can travel in each direction by counting the steps (or digital pulses).
This HOME analogy is what I was referring to above relative to motors forgetting where 0.0 or home is. That messes up USALS, but doesn't seem to mess up DiseqC-1.2 as much, although it seems like it should.
It is pretty simple, but it only operates in two ways.
1] Utilize the resident or stored positions within the motor and send a proper command to the motor so that the motor will position itself where you desire it to. (USALS)
or
2] Drive the motor to a new, unrecorded position and tell the motor to "recalculate and save" ...
...
This may be different on different motors, but I don't think you should do a recalculate before a save after driving to a new position. Recalculate, as I mentioned, is for when all the sats get shifted, out of sync in analog terminology. In that situation, you go to a sat, then do a recalculate or resync command, and move that one sat back into the proper place, and the motor will then shift ALL of the sats by that same amount to get everything back correctly. Similar to the motor's 0.0 position getting corrupted in USALS.
USALS: Hopping into a cab in NYC and telling the driver to take me to a specific hotel. He knows the way!
I would have said hopping into a cab and telling the driver to go up the road 5.35 miles. Pretty much the same thing, except it's telling him to go an amount, not to a location.
DiSEqC 1.2: Hopping into a cab in NYC with a map and trying to figure out where I want to be and telling the cab driver how to get there, according to my own directions. Then, expecting him to remember the same route the next time I visit.
I would have given more the response you gave for USALS above, ie you're telling the cab driver to go to a location he knows the way to, because you've told him before.
Again, pretty much the same.
Overall, I agree, that USALS is easier, and you may avoid losing everything if you have to do a full reset, but I've done full hardware resets, and I don't remember it wiping out the stored DiseqC-1.2 values, but it may have.
However as mentioned, USALS gets out of whack whenever the motor forgets where home is, and that has happened to me on several occasions. My motor came from the factory with the HOME 0.0 position in the wrong place, so I quickly started using DiseqC, and I prefer it.
I generally use USALS to get close to the right place, then switch to DiseqC-1.2 and save that position. When my motor forgets where home is, DiseqC-1.2 still usually takes me to the sat, but USALS won't, although sometimes both are affected. When DiseqC-1.2 fails to take me to sats, that is where the quandary starts. Ie the temptation is to just peak and save a new location, however if all the sat positions have moved, it's better to do a recalulate command which will fix ALL the sats, but I'm usually too lazy to check to see if everything is off, so I just save a new position for that one sat. Then later when I do a recalculate, everything else will be OK, but the ones I've re-saved will be off, and need to be resaved again.
That's the main reason for my reply, ie the first thing you said about recalculate and save. Ie you recalculate if all sats are off, and save only if only one sat is off, or if entering a new sat.
Sorry it took so long to get to my point.