The spinx512 board for FUZIX

A place to discuss everything Dragon related that doesn't fall into the other categories.
User avatar
tormod
Posts: 416
Joined: Sat Apr 27, 2013 12:06 pm
Location: Switzerland
Contact:

The spinx512 board for FUZIX

Post by tormod »

An update on my latest adventures in FUZIX land. Since FUZIX is pretty disk heavy, with large binaries, even DriveWire is getting a bit slow. For example, launching a simple command like "ls" (like "dir" in os9) currently means loading 22 KB from disk for the command itself. Of course, "ls" could need a diet :) But to get a much more responsive system, some new hardware could be needed.
The spinx512 board. One CPLD for memory banking and address decoding, the other for the SPI interface.
The spinx512 board. One CPLD for memory banking and address decoding, the other for the SPI interface.
spinx512.jpg (107.33 KiB) Viewed 9621 times
I have therefore combined a memory extension with a generic SPI interface including a SD card slot (SD cards can be accessed over SPI directly). The SPI interface is based on Daryl Rictor's elegant "65spi" CPLD design, with André Fachat's modifications. It is basically a shift register for sending and receiving the data plus a few control registers. Using an external clock (I have a 50 MHz oscillator on my board, using a 1:16 clock divider) the SPI data rate is so fast that on block transfers the Dragon can just read or write the data as fast as it can without any polling (see also driver code, mainly written by Alan Cox).

This being a generic SPI master interface it is not only about fast disk storage but it opens up for a whole range of SPI peripherals so this can get interesting...

For the memory extension, I was using 128KB in the wire monster prototype, which makes a quite useable FUZIX system, but for the PCB design I opted for 512KB SRAM chips just to be sure. As if anyone would need half a megabyte on a computer :-p The memory layout follows the "nx32" fixed-bank model that I support in FUZIX, n being 16 here. Hence the "spinx" name of course, which otherwise could look like a misspelling :)

So I guess this is the fastest unix-ish system ever run on a Dragon 32 :) Maybe with the most memory too. It would require a video to really show it off, but for now I can offer these screenshots.
FUZIX kernel booting
FUZIX kernel booting
booting-1.jpg (109.81 KiB) Viewed 9621 times
Running date 10 times
Running date 10 times
date10times.jpg (111.63 KiB) Viewed 9621 times
Running ls 10 times
Running ls 10 times
ls10times.jpg (99.97 KiB) Viewed 9621 times
User avatar
robcfg
Posts: 1529
Joined: Sat Apr 04, 2009 10:16 pm
Location: Stockholm, Sweden
Contact:

Re: The spinx512 board for FUZIX

Post by robcfg »

Wow! That's a whole new level for the Dragon!

Are you planning on doing a batch of these boards?
tjewell
Posts: 346
Joined: Mon Oct 19, 2009 4:58 pm
Location: Cambridge, England

Re: The spinx512 board for FUZIX

Post by tjewell »

Oh wow, this is exciting - I'm positively vibrating at the idea of running a unix-ish on the Dragon! I did work on 386BSD back in 1992 (somewhere there's an 8bit scsi driver with my name on it), but I never dreamt I'd see something like this running on the Dragon. Definitely interested in one of these boards if you make more!

Tony
User avatar
tormod
Posts: 416
Joined: Sat Apr 27, 2013 12:06 pm
Location: Switzerland
Contact:

Re: The spinx512 board for FUZIX

Post by tormod »

robcfg wrote:Are you planning on doing a batch of these boards?
Sure! I would love to see more people developing on FUZIX for Dragon, and over time, even using it :) I have at the moment just a small number of boards at hand, and will prioritize anyone serious about getting their hands dirty with development, just let me know.
User avatar
robcfg
Posts: 1529
Joined: Sat Apr 04, 2009 10:16 pm
Location: Stockholm, Sweden
Contact:

Re: The spinx512 board for FUZIX

Post by robcfg »

Does Fuzix have a C compiler or is right now cross-dev the only option?
User avatar
tormod
Posts: 416
Joined: Sat Apr 27, 2013 12:06 pm
Location: Switzerland
Contact:

Re: The spinx512 board for FUZIX

Post by tormod »

There is only as09 and cpp so far... Currently we build the kernel and all applications with gcc-6809 (and lwtools) so it is cross-dev. It is very easy to set up on a Debian or Ubuntu machine.
User avatar
robcfg
Posts: 1529
Joined: Sat Apr 04, 2009 10:16 pm
Location: Stockholm, Sweden
Contact:

Re: The spinx512 board for FUZIX

Post by robcfg »

Can you point to some instruction on how to setup gcc-6809?

I've tried it a couple of times but couldn't get it working...
User avatar
tormod
Posts: 416
Joined: Sat Apr 27, 2013 12:06 pm
Location: Switzerland
Contact:

Re: The spinx512 board for FUZIX

Post by tormod »

William's instructions on his patch are quite precise, but yes it is not the easiest thing to build. I have pre-built packages for Debian/Ubuntu here: http://toolshed.sourceforge.net/gcc/
Alastair
Posts: 669
Joined: Fri Jul 18, 2008 11:33 pm

Re: The spinx512 board for FUZIX

Post by Alastair »

The board looks amazing, though looking at the screen-shots I reckon a real time clock with battery back-up wouldn't go amiss.

I have one question, is this board for the exclusive use of FUZIX or can it be used with other systems (OS-9, NitrOS9, Flex, DragonDOS, etc.)?
User avatar
tormod
Posts: 416
Joined: Sat Apr 27, 2013 12:06 pm
Location: Switzerland
Contact:

Re: The spinx512 board for FUZIX

Post by tormod »

The way the memory extension works is similar to my +32K board, just with bank selection added. When mapped in, the selected bank overlays $8000-$FEFF. The FUZIX dragon-nx32 port was written with such a design in mind. For other operating systems, it can surely be used as a RAM disk if someone writes drivers for this.

The SPI interface works independently of the memory extension, and can even be used from BASIC with PEEK and POKE (at the resulting speed). Reading files from a filesystem on an SD card is relatively complex, but e.g. reading or writing to a serial flash memory isn't too difficult. Or an SPI RTC module :)

Of course, FUZIX has also DriveWire support, so getting the time from a computer or uDW is also possible. IIRC Brett added this to his CoCo3 port.
Post Reply