VERSION 3.0.0
.data
.end
;
CODE main
	PUTR1 main.1
	FORKEP R1
main.1:
	PUTR1 prime
	PUT 3, R2
	FALLOC R1,R2, R10 ; prime frame
	PUTR1 main.res
	PUT 1, R2
	FALLOC R1,R2, R11 ; main.res frame
	PUTR1 main.2
	FORKSP R1
main.2:
	INPUT 0, R1
	STORE R1, R10|4
	STORE R11, R10|5
	PUTR1 4
	STORE R1, R10|6
	FFREE
	STOP
;
CODE main.res
	LOAD RFP|4, R20
	OUTPUT R20, 1
	PUTR1 10
	OUTPUTC R1, 1
	FFREE
	STOP
;
CODE prime
	LOAD RFP|4, R20 ; n to check
	LOAD RFP|5, R21 ; res fp
	LOAD RFP|6, R22 ; res fp offset
	PUT 2, R10 ; k
	PUTR1 prime.loop
	FORKEP R1
prime.loop:
	; check for factor
	MOD R20, R10, R2
	NOT R2, R3
	; got a prime?
	PUTR1 prime.rfalse
	FORKSP R3, R1
	; didn't get a prime?
	PUTR1 prime.notfactor
	FORKEP R2, R1
prime.notfactor:
	PUTR1 1
	ADD R10, R1, R10
	; loop test
	LT R10, R20, R2
	NOT R2, R3
	PUTR1 prime.loop
	FORKEP R2, R1
	; fell out of loop?
	PUTR1 prime.rtrue
	FORKSP R3, R1
prime.rtrue:
	PUTR1 1
	STORE R1, R21|R22
	FFREE
	STOP
prime.rfalse:
	STORE R0, R21|R22
	FFREE
	STOP
