| IP2022 ⇒ Some ? push_call_reg_IP2022 ])
(λf.Some ? (set_alu m t s (f (alu m t s) call'))).
-(* push debole di CALL *)
-ndefinition pushweak_call_reg ≝
-λm:mcu_type.λt:memory_impl.λs:any_status m t.λcall':word16.
- match push_call_reg m t s call' with
- [ None ⇒ s | Some s' ⇒ s' ].
+(* pop forte di CALL *)
+ndefinition pop_call_reg ≝
+λm:mcu_type.
+ match m
+ return λm.Πt.any_status m t → option (ProdT word16 (any_status m t))
+ with
+ [ HC05 ⇒ λt:memory_impl.λs:any_status HC05 t.None ?
+ | HC08 ⇒ λt:memory_impl.λs:any_status HC08 t.None ?
+ | HCS08 ⇒ λt:memory_impl.λs:any_status HCS08 t.None ?
+ | RS08 ⇒ λt:memory_impl.λs:any_status RS08 t.None ?
+ | IP2022 ⇒ λt:memory_impl.λs:any_status IP2022 t.
+ match pop_call_reg_IP2022 (alu … s) with
+ [ pair val alu' ⇒ Some ? (pair … val (set_alu … s alu')) ]
+ ].
(* REGISTRO IP *)