Mike B.
unread,Dec 18, 2011, 4:58:14 AM12/18/11You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
If someone has a similar problem – this is my workaround:
The linkage statement only works with code, not with data!
Therefore I’ve created a function which is build with the __asm and
byte directive and use it as data buffer. As the transputer has no
memory protection this approach is possible.
#pragma IMS_linkage("internal%memory")
void Z( void ) {
__asm {
byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
….
}
}
.lnk
#mainentry C.ENTRY
#reference information%module
#section internal%memory
centry.lib
libc.lib
With such a buffer you can significant faster clear memory blocks
(perhaps the 5 cycle BOZO vram) as with every other approach I’ve
tried. This includes also some foolhardy specifics.
It looks that the transputer can’t overlap internal reads and external
writes (which can be realized with a simple write buffer). So you
still lose one cycle for the internal read for every word but this is
even better than a full 5 cycle for an external read which is used by
the memset() or overlapped move implementation.
Merry Christmas and a happy New Year!
Mike