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

