fun window_restore(var inst : InstOp) {
    inst.delta = (-1)?cvt(char);
    CWP = ((CWP?cvt(ulong) + 8  - 1) % 8 )?bits(5);
    if(CANRESTORE?cvt(ulong) > 0) {
	CANSAVE = (CANSAVE?cvt(ulong) + 1)?cvt(cwp_t);
	CANRESTORE = (CANRESTORE?cvt(ulong) - 1)?cvt(cwp_t);
    } else { is_trap = true; }
}