uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

fib.tal (795B)


      1 ( Fibonacci: Numbers made of the two numbers before it )
      2 
      3 |100
      4 
      5 @on-reset ( -> )
      6 	#0019 #0001
      7 	&>l ( -- )
      8 		( index ) DUP2 <pdec>
      9 		#2018 DEO
     10 		( recursive ) DUP2 fib <pdec>
     11 		#2018 DEO
     12 		( tail-recursive ) DUP2 #0000 #0001 ROT2 fibrec <pdec>
     13 		( lb ) #0a18 DEO
     14 		POP2 POP2 INC2 GTH2k ?&>l
     15 	POP2 POP2
     16 	( end ) #800f DEO
     17 	BRK
     18 
     19 (
     20 @|recursive )
     21 
     22 @fib ( num* -- numfib* )
     23 	#0001 GTH2k ?{ POP2 JMP2r }
     24 	SUB2k fib STH2
     25 	INC2 SUB2 fib STH2r ADD2 JMP2r
     26 
     27 (
     28 @|tail-recursive )
     29 
     30 @fibrec ( a* b* num* -- a* b* numfib* )
     31 	#0001 NEQ2k ?{ POP2 POP2 DUP2 JMP2r }
     32 	SUB2 STH2
     33 	SWP2 OVR2 ADD2 STH2r !fibrec
     34 
     35 (
     36 @|stdlib )
     37 
     38 @<pdec> ( short* -- )
     39 	[ LIT2r ff00 ]
     40 	&>read ( -- )
     41 		#000a DIV2k STH2k MUL2 SUB2 STH2r INCr ORAk ?&>read
     42 	POP2
     43 	&>write ( -- )
     44 		NIP #30 ADD #18 DEO
     45 		OVRr ADDr STHkr ?&>write
     46 	POP2r JMP2r
     47