CompuServe Messages

SDP Data

#: 89928 S11/HardwareForum unknown
    18-Oct-87 03:56:15
Sb: #89782-SDP Data
Fm: John Draper 76703,4322
To: John Freeman 72437,2057

This message turned up in search, but its forum couldn’t be identified from the original transcript, so it may not be linked into its thread.

The operation you speak of, being a BYTE oriented move, would be improved by making it a WORD or LONG operation, regardless of processor. Comparing a MOVEM with repetetive MOVE.L shows a large gain in speed on a 68000. Not too sure what the difference would be, if any, on a 68010 using the DBRA. As for actually writing the routine, it isn't such a tough one. Say I have (through saving the registers I need with a MOVEM, to be restored after the operation) 8 registers available. Also suppose i know that the transfer is always 512 bytes (this is a rela life case), and that the source block is always longword aligned. First, I check the alignment of the destination. If it is even, I can simply set up a counter for the DBRA, then… MOVEM.L source,reglist MOVEM.L reglist,dest ADD #8,source ADD #8,dest DBRA back to the label I forgot to put in. If the alignment needs work, I simply transfer 1 byte, transfer a large block, (getting as close as I can within the 8 bytes at a time limitation), transfer a smale even number, then 1 nore byte to make it work out even. If the destination is always even, this techniques will increase the transfer rate by a large amount. The hard disk driver I am working on improved by about 8 or 9K per second using it, and on pure memory moves, a much greater speed increase woud be realized.