; FIXME: should be able to drop pages back where we picked them up ;============================== ; Take Blue Page ;============================== ; A should be page to take (i.e. MECHE_PAGE or similar) take_blue_page: pha jsr drop_current_page pla pha eor BLUE_PAGES_TAKEN ; toggle the taken flag sta BLUE_PAGES_TAKEN pla ora #HOLDING_BLUE_PAGE ; put it in hand sta HOLDING_PAGE rts ;============================== ; Take Red Page ;============================== ; A should be page to take (i.e. MECHE_PAGE or similar) take_red_page: pha jsr drop_current_page pla pha eor RED_PAGES_TAKEN sta RED_PAGES_TAKEN pla ora #HOLDING_RED_PAGE sta HOLDING_PAGE rts ;============================== ; Take White Page ;============================== take_white_page: pha jsr drop_current_page pla pha lda #1 sta WHITE_PAGE_TAKEN pla ora #HOLDING_WHITE_PAGE sta HOLDING_PAGE rts ;============================== ; Drop current page ;============================== ; clicked on a page while holding another drop_current_page: lda HOLDING_PAGE and #$c0 cmp #HOLDING_RED_PAGE beq drop_red_page cmp #HOLDING_BLUE_PAGE beq drop_blue_page cmp #HOLDING_WHITE_PAGE beq drop_white_page ; there was no page? rts drop_white_page: lda #0 sta WHITE_PAGE_TAKEN rts drop_red_page: lda HOLDING_PAGE and #$3f eor RED_PAGES_TAKEN sta RED_PAGES_TAKEN rts drop_blue_page: lda HOLDING_PAGE and #$3f eor BLUE_PAGES_TAKEN sta BLUE_PAGES_TAKEN rts