Page Last Altered:

**Submitted by Steve Fewell**

**Routine**: popi0

**Name**: Pop Integer from the BASIC Stack into the Zero page location
pointed to by X

**Starting Address**: &BD08 (or BD06 to pop Integer to location &37-&3A)

**Entry criteria**: X contains the first byte of a 4-byte zero page memory
location where the Integer from the Stack will be saved.

**Exit**: The 4-byte zero page memory location pointed to by X (i.e. ?X,
?X+1, ?X+2 and ?X+3) contains the most recent Integer number on the BASIC
Stack. The Basic Stack Pointer is moved up.

**Description**:

If called at address &BD06, then set X to #&37 (this will the starting byte of the

4-byte location that the Integer value on the stack will be retrived to.

Loads the Zero page location pointed to by X with the 32-bit Integer pointed to
by the BASIC Stack Pointer. Then move the Stack
Pointer up 4 bytes so that is points to the previous item pushed onto the stack.

**Disassembly for the Pop Integer from the BASIC Stack (Zp) routine**

BD06 | 7 | 162 055 | A2 37 | LDX#&37 |

BD08 | 160 003 | A0 03 | LDY#&03 | |

BD0A | 177 004 | B1 04 | LDA (&04),Y | |

BD0C | 149 003 | 95 03 | STA &03,X | |

BD0E | 136 | 88 | DEY | |

BD0F | 177 004 | B1 04 | LDA (&04),Y | |

BD11 | 149 002 | 95 02 | STA &02,X | |

BD13 | 136 | 88 | DEY | |

BD14 | 177 004 | B1 04 | LDA (&04),Y | |

BD16 | 149 001 | 95 01 | STA &01,X | |

BD18 | 178 004 | B2 04 | LDA (&04) | |

BD1A | 149 000 | 95 00 | STA &00,X | |

BD1C | 128 220 | 80 DC | BRA -36 --> &BCFA Move SP up 4 bytes |