> I still like this the best: > > LD HL,srcpntr > LD DE,destpntr > LD BC,bytestomove > LDIR Much too slow. Better is (if memory serves) a routine like this, which moves 8 bytes per loop faster than an LDIR. DI ; Disable interrupts mov (OLD_SP),SP ; save stack pointer mov SP,(source) mov HL,(dest) mov a,(octets) clc subb HL,SP exx mov HL,(source) mov DE,(dest) clc sbb HL,DE inc HL clc Loop: pop BC pop DE exx pop BC pop DE adc SP,HL push DE push BC exx push DE push BC adc SP,HL dec A jp nz,Loop ei The pushes, pops, and exx's take 28 cycles per loop. I think the ADC's are 13 cycles each; the dec and jp nz total 14 more. So 28+26+14 = 68 cycles to move 8 bytes, an average of 8.5 cycles/byte. If memory serves, that's about twice as fast as LDIR.