main: SPAWNLBC testStub, q0 ; remote spawn MAPQC q1, q0, q0 PROCID q1 MOVE q20, q22 ; grab a remote capability ALLOCATEC 4, q10 ; allocate a dummy capability, do something to it MMS q30, q31 MOVE @q10, q30 MOVECL 0, q30 MOVECL 1, q31 MML q40, q41 MOVE @q22, q40 PRINTS "remote capability has this data..." MOVECL 0, q40 PRINTQ q41 MOVECL 1, q40 PRINTQ q41 MOVECL 2, q40 PRINTQ q41 PRINTS "side-effecting..." EXCH q50, q51, q52 MOVE @q22, q50 MOVECL 1, q50 MOVECL 42, q51 ; send the magic number! PRINTQ q52 ; should have the value 11 PRINTS "testing sequenced transactions" MOVECL 1, q40 PRINTQ q41 ; should have the value 42 HALT testStub: MOVE q0, q100 ; store caller in q100 MAPQC q1, q20, @q100 ; my q1 -> q20 of my caller ALLOCATEC 8, q99 ; allocate a dummy capability MOVE q99, q101 ; stall until it's allocated ALLOCATEC 8, q10 MMS q30, q31 MOVE @q10, q30 MOVECL 0, q30 MOVECL 10, q31 MOVECL 1, q30 MOVECL 11, q31 MOVECL 2, q30 MOVECL 12, q31 MML q40, q41 MOVE @q10, q40 PRINTS "sending a remote capability" MOVE @q10, q1 ; send the remote capability waitLoop: MOVECL 1, q40 SEQC q41, 42, q50 BRZ q50, waitLoop PRINTS "memory was side-effected" HALT