The demo presented here gives four variations of the Fibonacci test.
| Fibonacci in Spin - Fib(28) takes 28.69 seconds |
| Fibonacci in pure Forth - Fib(28) takes 6.48 seconds |
| Fibonacci with a CORE: helper word - Fib(28) takes 2.78 seconds |
| Fibonacci written entirely with PASM: - Fib(28) takes 0.86 seconds |
On this page you may have a look at:
| The serial terminal display of the test result. |
| The JDForth source code (FibTest.JD4) for the Fibonacci test. |
| The result of running the Propeller Tool on FibTest.spin. |
| The testbench code (FibDemo.spin) used to generate the terminal display. |
| The output file (FibTest.spin) generated by JDForth. |
Download the spin files.
(FibTest.spin and FibDemo.spin)
Screen shot of FibDemo.spin on a Propeller
connected to HyperTerminal.
JDForth source code - FibTest.JD4 
Propeller Tool compile of FibTest.spin
Propeller Tool testbench - FibDemo.spin 
JDForth output code - FibTest.spin
connected to HyperTerminal.

This screen shot was taken after compiling FibTest.spin in the
Propeller Tool.

Plenty of space left for the rest of your spin objects!

Plenty of space left for the rest of your spin objects!

CON
' This file was auto-generated by JDForth.
' See: www.JacobsDesign.com.au for more details.
kPSPSize = 64 'longs
kASPSize = 16 'longs
kRSPSize = 48 'longs
kTIBSize = 16 'bytes
PUB Start(emit, key) : okay
Stop
FirstWord := 0
CodeBase := @Forth
PSP0 := @ParStack[-1]
RSP0 := @AuxStack
ASP0 := @RetStack
Base := 10
PutC := emit
GetC := key
TIB := @TIBSpace
TIBSize := kTIBSize
okay := Cog := CogNew(@Kernel, @FirstWord) + 1
PUB Stop
if Cog
CogStop(Cog~ - 1)
PUB Push(val) ' Push a single value on the parameter stack
repeat while FirstWord
PSP0 += 4
long[PSP0] := Val
PUB Pop : val ' Pop a single value on the parameter stack
repeat while FirstWord
val := long[PSP0]
PSP0 -= 4
PUB Fib1(P1) ' 2 return values on parameter stack
PushAll(1, @P1)
FirstWord := @_Fib1
PUB Fib2(P1) ' 2 return values on parameter stack
PushAll(1, @P1)
FirstWord := @_Fib2
PUB Fib3(P1) ' 2 return values on parameter stack
PushAll(1, @P1)
FirstWord := @_Fib3
PUB FirstWordPtr : Ptr
Ptr := @FirstWord
PUB WaitForIdle
repeat while FirstWord
PRI PushAll(ctr, ptr)
repeat while FirstWord
LongMove(@ParStack, ptr, ctr)
PSP0 := @ParStack[ctr-1]
VAR
long TOS ' Single element to support TOS in COG memory
long ParStack[kPSPSize]
long AuxStack[kASPSize]
long RetStack[kRSPSize]
long TIBSpace[(kTIBSize+3)/4]
' WARNING: ANY edits below this point will most likely result in
' a non-working program. Items above this point may be
' edited with caution.
VAR
long Cog ' The cog identity of this object
word FirstWord ' The word to execute
word CodeBase ' Memory offset to bytecodes
word PSP0 ' Parameter Stack Address
word RSP0 ' Return Stack Address
word ASP0 ' Algorithm Stack Address
word Base ' Number base for .
word State ' Compiling or interpreting
word Handler ' Used by catch/throw
word PutC ' emit places chars into the word at address putc
word GetC ' key gets chars from the word at address getc
word ToIN ' We're processing this char in TIB
word NumIN ' This is the number of chars in TIB
word TIB ' Address of Terminal Input Buffer
word TIBSize ' Amount of space in TIB
DAT
Forth word $0000,$000D,$0025,$0026,$0027,$002C,$0031,$0038
word $003C,$0042,$0044,$0047,$0049,$004B,$0050,$0054
word $0057,$005C,$005E,$0061,$0064,$0066,$006D,$0072
word $0078,$007C,$007E,$007F,$0081,$0083,$0085,$008A
word $008C,$0090,$0095,$009A,$00A6,$0042,$01F1,$002C
word $004A,$0030,$0024,$000E,$004A,$0030,$0026,$003E
word $000C,$002C,$001E,$0016,$0040,$0042,$0010,$001E
word $0036,$0062,$001C,$0034,$0062,$003C,$000C
_Fib1 word $002C,$0010,$0062,$004E,$0002,$000C,$00AD,$002C
word $008A,$008C,$001C,$008C,$003C,$000C
_Fib2 word $002C,$0010,$008C,$004E,$0002,$000C,$00B5,$002C
word $00A6,$000C
_Fib3 word $002C,$0010,$00A8,$004E,$0002,$000C
DAT
long 0 'Make sure the rest is long aligned!
Kernel word $0019,$5C7C,$0000,$0000,$0000,$0000,$0000,$0000
word $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
word $0000,$0000,$0000,$0000,$0000,$0000,$0200,$0000
word $FFFF,$FFFF,$0804,$80FC,$0E04,$083C,$0E03,$A0FC
word $2604,$54FC,$1001,$A0BC,$1004,$80FC,$0008,$043C
word $1002,$80FC,$260B,$80BC,$0E13,$E4FC,$0402,$6CBC
word $0401,$043C,$03F0,$A0BC,$0401,$06BC,$001A,$5C68
word $0402,$80FC,$0E04,$A0FC,$4203,$54FC,$1001,$A0BC
word $1002,$80FC,$0008,$04BC,$1002,$80FC,$420B,$80BC
word $0E21,$E4FC,$0E04,$08BC,$0804,$84FC,$1002,$04BC
word $0402,$80FC,$1003,$80BC,$1208,$04BC,$0009,$5C3C
word $0A04,$80FC,$0405,$083C,$0408,$A0BC,$0402,$80FC
word $0027,$5C7C,$0405,$08BC,$0A04,$84FC,$0027,$5C7C
word $0804,$80FC,$0E04,$083C,$1002,$80FC,$0000,$5C7C
word $1007,$A0BC,$0E04,$08BC,$0804,$84FC,$0029,$5C7C
word $1202,$04BC,$0402,$80FC,$0804,$80FC,$0E04,$083C
word $0E09,$A0BC,$0044,$5C7C,$6E34,$5CFC,$0E08,$04BC
word $0E10,$2CFC,$0E10,$38FC,$0027,$5C7C,$1001,$A0FC
word $004C,$5C7C,$1000,$A0FC,$004C,$5C7C,$100C,$A0BC
word $0804,$80FC,$0E04,$083C,$0E08,$A0BC,$0027,$5C7C
word $1207,$A0BC,$0E04,$08BC,$1204,$083C,$0027,$5C7C
word $0804,$80FC,$0E04,$083C,$0027,$5C7C,$1004,$A0BC
word $0E02,$2CFC,$1007,$84BC,$0E08,$08BC,$0027,$5C7C
word $0C04,$84FC,$0027,$5C7C,$0A04,$80FC,$0E05,$083C
word $0025,$5C7C,$0804,$80FC,$0E04,$083C,$0E05,$08BC
word $0A04,$84FC,$0027,$5C7C,$1004,$08BC,$0A04,$80FC
word $1005,$083C,$0A04,$80FC,$0E05,$083C,$0804,$84FC
word $0025,$5C7C,$E008,$58FC,$1004,$08BC,$0804,$84FC
word $1007,$043C,$0025,$5C7C,$ED41,$58FC,$EC07,$54BC
word $1004,$08BC,$0804,$84FC,$0008,$A0BC,$0025,$5C7C
word $F407,$50BC,$0000,$0000,$0E00,$A0BC,$0027,$5C7C
word $0E01,$80FC,$0027,$5C7C,$0E01,$84FC,$0E01,$84FC
word $0027,$5C7C,$0E01,$2CFC,$0027,$5C7C,$0E01,$38FC
word $0027,$5C7C,$0F01,$58FD,$1004,$08BC,$1007,$80BC
word $0E08,$A0BC,$0026,$5C7C,$0F09,$58FD,$0086,$5C7C
word $1004,$08BC,$0E08,$C13C,$0E0C,$70BC,$0026,$5C7C
word $0E00,$867C,$0E04,$08BC,$0804,$84FC,$0402,$80D4
word $0027,$5C54,$1002,$04BC,$1010,$2CFC,$1010,$38FC
word $0408,$80BC,$0027,$5C7C,$1401,$A0FC,$1005,$08BC
word $1205,$A0BC,$1204,$84FC,$1209,$08BC,$100A,$80BC
word $1208,$863C,$1005,$083C,$0095,$5C54,$0402,$80FC
word $0A08,$84FC,$0027,$5C7C,$57E0,$58FD,$1207,$A0BC
word $1004,$08BC,$0804,$84FC,$0E04,$08BC,$1009,$F03C
word $0026,$5C7C,$1201,$A0FC,$1207,$C13C,$0031,$5C4C
word $0E01,$84FC,$0804,$80FC,$0E04,$083C,$0E01,$84FC
word $0027,$5C7C,$96B8,$5CFD,$0027,$5C7C,$0001,$0000
word $6E07,$C13D,$00CB,$5C4C,$0E01,$84FC,$0804,$80FC
word $0E04,$083C,$0E01,$84FC,$0A04,$80FC,$9605,$083D
word $96B8,$5CFD,$0A04,$80FC,$0E05,$083C,$0E04,$08BC
word $0804,$84FC,$96B8,$5CFD,$1005,$08BC,$0A04,$84FC
word $0E08,$80BC,$9605,$08BD,$0A04,$84FC,$0000,$5C7C

Home