title 'bank & move module for CP/M3 linked BIOS' cseg public ?move,?xmove,?bank extrn @cbnk maclib z80 maclib ports ?xmove: ; ALTOS can't perform interbank moves ret ?move: xchg ; we are passed source in DE and dest in HL ldir ; use Z80 block move instruction xchg ; need next addresses in same regs ret ; by exiting through bank select ?bank: push b ; save register b for temp ral ! ral ! ral ! ani 18h ; isolate bank in proper bit position mov b,a ; save in reg B in p$bankselect ; get old memory control byte ani 0E7h ! ora b ; mask out old and merge in new out p$bankselect ; put new memory control byte pop b ; restore register b ret ; 128 bytes at a time end