;============================== ; copy_main_aux ;============================== ; A = AUX page start (dest) ; Y = MAIN page start (src) ; X = num pages copy_main_aux: ; self modify sta cma_aux_smc+2 sty cma_main_smc+2 ; switch to read MAIN/WRITE AUX sta $C002 ; read MAIN sta $C005 ; write AUX copy_main_aux_outer_loop: ldy #$00 copy_main_aux_inner_loop: cma_main_smc: lda $BB00,Y cma_aux_smc: sta $AA00,Y dey bne copy_main_aux_inner_loop inc cma_main_smc+2 inc cma_aux_smc+2 dex bne copy_main_aux_outer_loop ; switch to read MAIN/WRITE MAIN sta $C002 ; read MAIN sta $C004 ; write MAIN rts ;============================== ; copy_aux_main ;============================== ; A = AUX page start (src) ; Y = MAIN page start (dest) ; X = num pages copy_aux_main: ; self modify sta cam_aux_smc+2 sty cam_main_smc+2 ; switch to read AUX/WRITE MAIN sta $C003 ; read AUX sta $C004 ; write MAIN copy_aux_main_outer_loop: ldy #$00 copy_aux_main_inner_loop: cam_aux_smc: lda $AA00,Y cam_main_smc: sta $BB00,Y dey bne copy_aux_main_inner_loop inc cam_main_smc+2 inc cam_aux_smc+2 dex bne copy_aux_main_outer_loop ; switch to read MAIN/WRITE MAIN sta $C002 ; read MAIN sta $C004 ; write MAIN rts