Retro (and new) Benchmarks on my Ruby816 board
Retro (and new) Benchmarks on my Ruby816 board
For no real reasons I decided to run some benchmarks on my somewhat retro Ruby816 SBC computer. It’s a 65C816 CPU running in 8-bit mode with various BASICs and in 16-bit mode running a 32-bit VM to support BCPL. It runs at 16Mhz and has 512KB of RAM (only 64KB accessible in 8-bit mode though)
I was mostly interested in how much faster BCPL was. The result was that it is faster, but not always (bother).
I put together a blog post on my own site about it all, but I’ll put the results table here:
It wasn’t always easy to do some of them in floating point in BCPL, and I gave-up with the Byte Sieve one, but do note that 2 were slower in BCPL than in BBC Basic4…
There is a link to the source code on my blog posting for anyone who cares to look.
Which is here:
https://projects.drogon.net/retro-basic ... enchmarks/
Cheers,
-Gordon
I was mostly interested in how much faster BCPL was. The result was that it is faster, but not always (bother).
I put together a blog post on my own site about it all, but I’ll put the results table here:
It wasn’t always easy to do some of them in floating point in BCPL, and I gave-up with the Byte Sieve one, but do note that 2 were slower in BCPL than in BBC Basic4…
There is a link to the source code on my blog posting for anyone who cares to look.
Which is here:
https://projects.drogon.net/retro-basic ... enchmarks/
Cheers,
-Gordon
--
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/
-
leepivonka
- Posts: 168
- Joined: 15 Apr 2016
Re: Retro (and new) Benchmarks on my Ruby816 board
Here are some FORTH entries for the list.
These were run on a 65816 simulator with a cycle counter that FORTH can read. The times reported are # of cycles divided by 16000000 to get seconds.
There is no math coprocessor used - the floating-point operations are all coded in 65816 using a 32 bit mantissa.
The FORTH is subroutine threaded with a cell size of 16bits.
Attached are the console log files, edited to include annotations on the disassemblys of the FORTH words.
These were run on a 65816 simulator with a cycle counter that FORTH can read. The times reported are # of cycles divided by 16000000 to get seconds.
There is no math coprocessor used - the floating-point operations are all coded in 65816 using a 32 bit mantissa.
The FORTH is subroutine threaded with a cell size of 16bits.
Code: Select all
BBC Basic 4 Forth FP Forth Int BCPL Fp BCPL Int
R/F1 0.06 .043 .0012 .023 .023
R/F2 0.26 .052 .0013 .188 .022
R/F3 0.68 .288 .093 .551 .159
R/F4 0.68 .140 .010 .577 .167
R/F5 0.72 .141 .011 .595 .182
R/F6 1.17 .345 .018 .709 .295
R/F7 1.86 .527 .035 .798 .385
R/F8 3.35 1.830 1.784 1.377 1.248
byte sieve 5.07 1.232 .080 .647
noels retro lab 1.90 .772 .035 2.837 .363
prime cruncher 46.18 22.611 .157 53.980 6.252
mandelbrot 46.70 13.467 2.170 26.000 10.400
- Attachments
-
- 0Logs.zip
- (41 KiB) Downloaded 55 times
Last edited by leepivonka on Tue Apr 18, 2023 4:13 am, edited 1 time in total.
- GARTHWILSON
- Forum Moderator
- Posts: 8773
- Joined: 30 Aug 2002
- Location: Southern California
- Contact:
Re: Retro (and new) Benchmarks on my Ruby816 board
drogon wrote:
It’s a 65C816 CPU running in 8-bit mode with various BASICs and in 16-bit mode running a 32-bit VM to support BCPL. It runs at 16Mhz and has 512KB of RAM (only 64KB accessible in 8-bit mode though)
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
-
leepivonka
- Posts: 168
- Joined: 15 Apr 2016
Re: Retro (and new) Benchmarks on my Ruby816 board
I think Drogon means that the BASICs are written for 6502.
Without using the new 65816 instructions or addressing modes, code can only address bank 0 (64KBytes).
Using the new 65816 instructions & addressing modes, both emulation & native mode code can address all 16MBytes.
Without using the new 65816 instructions or addressing modes, code can only address bank 0 (64KBytes).
Using the new 65816 instructions & addressing modes, both emulation & native mode code can address all 16MBytes.
- GARTHWILSON
- Forum Moderator
- Posts: 8773
- Joined: 30 Aug 2002
- Location: Southern California
- Contact:
Re: Retro (and new) Benchmarks on my Ruby816 board
You're right. No need to even go into native mode.
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
Re: Retro (and new) Benchmarks on my Ruby816 board
GARTHWILSON wrote:
You're right. No need to even go into native mode.
Cheers,
-Gordon
--
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/
- BigDumbDinosaur
- Posts: 9426
- Joined: 28 May 2009
- Location: Midwestern USA (JB Pritzker’s dystopia)
- Contact:
Re: Retro (and new) Benchmarks on my Ruby816 board
Register sizes are not “modes.” Modes are emulation and native. The 65C816 has the same personality in native mode regardless of register sizes.
Note that in emulation mode, it is still possible to use the B-accumulator as a data store via the XBA instruction. Also, TCD, TDC, TCS and TSC result in a 16-bit transfer in emulation mode, although manipulating the stack pointer in this fashion won’t affect the most significant byte.
Note that in emulation mode, it is still possible to use the B-accumulator as a data store via the XBA instruction. Also, TCD, TDC, TCS and TSC result in a 16-bit transfer in emulation mode, although manipulating the stack pointer in this fashion won’t affect the most significant byte.
x86? We ain't got no x86. We don't NEED no stinking x86!
Re: Retro (and new) Benchmarks on my Ruby816 board
Just in case one had the time and energy and motivation, there's Acorn's BAS128 and John Kortink's 816 port of Acorn's Basic (4r32 plus fixes, I think) both of which arrange to make memory accesses into a separate 64k space. Unless perhaps John's allows for more than 64k. And then there's the (probably previously mentioned) port of Acorn's '816 Basic for the Communicator.
Re: Retro (and new) Benchmarks on my Ruby816 board
BigEd wrote:
Just in case one had the time and energy and motivation, there's Acorn's BAS128 and John Kortink's 816 port of Acorn's Basic (4r32 plus fixes, I think) both of which arrange to make memory accesses into a separate 64k space. Unless perhaps John's allows for more than 64k. And then there's the (probably previously mentioned) port of Acorn's '816 Basic for the Communicator.
and I've not been able to find JKs sources online..
There was someone else working on an '816 Basic for the Foenix project but I think that stalled at some point, so maybe one day we'll get a nice portable BASIC for the '816, so who knows.
-Gordon
--
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/
Re: Retro (and new) Benchmarks on my Ruby816 board
The Foenix 816 Basic is here: https://github.com/pweingar/BASIC816
There's also the 816 Basic for the Acorn Communicator: https://github.com/dominicbeesley/CommunicatorBasic100
The Communicator Basic might be a good choice for Ruby! (I've looked briefly at it, thinking about porting it to the Foenix C256.)
There's also the 816 Basic for the Acorn Communicator: https://github.com/dominicbeesley/CommunicatorBasic100
The Communicator Basic might be a good choice for Ruby! (I've looked briefly at it, thinking about porting it to the Foenix C256.)
Re: Retro (and new) Benchmarks on my Ruby816 board
rwiker wrote:
The Foenix 816 Basic is here: https://github.com/pweingar/BASIC816
Quote:
Current Status
The BASIC interpreter is in a very primitive (and unstable) state at the moment.
The BASIC interpreter is in a very primitive (and unstable) state at the moment.
rwiker wrote:
There's also the 816 Basic for the Acorn Communicator: https://github.com/dominicbeesley/CommunicatorBasic100
The Communicator Basic might be a good choice for Ruby! (I've looked briefly at it, thinking about porting it to the Foenix C256.)
The Communicator Basic might be a good choice for Ruby! (I've looked briefly at it, thinking about porting it to the Foenix C256.)
-Gordon
--
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/
Re: Retro (and new) Benchmarks on my Ruby816 board
BigEd wrote:
Just in case one had the time and energy and motivation, there's Acorn's BAS128 and John Kortink's 816 port of Acorn's Basic (4r32 plus fixes, I think) both of which arrange to make memory accesses into a separate 64k space. Unless perhaps John's allows for more than 64k.
Re: Retro (and new) Benchmarks on my Ruby816 board
FWIW, I started this gitlab.com/retroabandon/bascode repo quite a while back for, among other things, that infamous mandel.bas program of yours (drogon) on various computers and benchmark results of it. I've not done anything there in ages, but litwr has reguarly been committing updates, incuding some of Chromatix's floating point tests.
If anybody else feels they can contribute and wants access to throw stuff in there, just send me a PM.
If anybody else feels they can contribute and wants access to throw stuff in there, just send me a PM.
Curt J. Sampson - github.com/0cjs