( Addressed devices. Abstractions to read and write to devices that allow addressed access. At all times, we have one active "fetch" device and one active "store" device, A@ and A!. Those words have the same signature as C@ and C!, and in fact, initially default to proxy of those words. ) : ADEVMEM+ 0x55 RAM+ @ + ; : A@* 0 ADEVMEM+ ; : A!* 2 ADEVMEM+ ; : ADEV$ H@ 0x55 RAM+ ! 4 ALLOT ['] C@ A@* ! ['] C! A!* ! ; : A@ A@* @ EXECUTE ; : A! A!* @ EXECUTE ; ( Same as MOVE, but with A@ and A! ) ( src dst u -- ) : AMOVE ( u ) 0 DO SWAP DUP I + A@ ( dst src x ) ROT SWAP OVER I + ( src dst x dst ) A! ( src dst ) LOOP 2DROP ;