@opcode(<EOL><NUM_LIT>, <EOL><NUM_LIT>, <EOL>)<EOL><INDENT>def instruction_PSH(self, opcode, m, register):<DEDENT>
assert register in (self.system_stack_pointer, self.user_stack_pointer)<EOL>def push(register_str, stack_pointer):<EOL><INDENT>register_obj = self.register_str2object[register_str]<EOL>data = register_obj.value<EOL><INDENT>log.debug("<STR_LIT>", register_obj.name, data)<EOL><DEDENT>if register_obj.WIDTH == <NUM_LIT:8>:<EOL><INDENT>self.push_byte(register, data)<EOL><DEDENT>else:<EOL><INDENT>assert register_obj.WIDTH == <NUM_LIT:16><EOL>self.push_word(register, data)<EOL>
All, some, or none of the processor registers are pushed onto stack
(with the exception of stack pointer itself).

A single register may be placed on the stack with the condition codes
set by doing an autodecrement store onto the stack (example: STX ,--S).

source code forms: b7 b6 b5 b4 b3 b2 b1 b0 PC U Y X DP B A CC push order
->

CC bits "HNZVC": -----