forked from MightyPork/crsn
				
			
							parent
							
								
									c8d01b6151
								
							
						
					
					
						commit
						af52270a29
					
				| @ -0,0 +1,44 @@ | ||||
| ( | ||||
|     ; using a coroutine as a generator | ||||
| 
 | ||||
|     (spawn r15 fibo) | ||||
| 
 | ||||
|     (ld r0 20) | ||||
|     (:next) | ||||
| 
 | ||||
|     (ld r1 @r15) ; Read a yielded value | ||||
|     (call printnum r1) | ||||
|     (lds @cout ", ") | ||||
| 
 | ||||
|     (dec r0) | ||||
|     (j.nz :next) | ||||
|     (ld @cout '\n') | ||||
|     (halt) | ||||
| 
 | ||||
|     (proc fibo | ||||
|         (ld r0 0) | ||||
|         (ld r1 1) | ||||
|         (:x) | ||||
|         (yield r1) | ||||
|         (add r2 r0 r1) | ||||
|         (ld r0 r1) | ||||
|         (ld r1 r2) | ||||
|         (j :x) | ||||
|     ) | ||||
| 
 | ||||
|     (proc printnum num | ||||
|         (mkbf r15) | ||||
|         (ld r1 num) | ||||
|         (tst r1 (<0? (mul r1 -1))) | ||||
|         (:next) | ||||
|             (mod r0 r1 10) | ||||
|             (add r0 '0') | ||||
|             (bfrpush @r15 r0) | ||||
|             (div r1 10 (z? | ||||
|                 (tst num (<0? (bfrpush @r15 '-'))) | ||||
|                 (lds @cout @r15) | ||||
|                 (del @r15) | ||||
|                 (ret))) | ||||
|             (j :next) | ||||
|     ) | ||||
| ) | ||||
					Loading…
					
					
				
		Reference in new issue