Welcome to the Sparky eZX BASIC Project Web Site

 This web site is updated every time there is a significant change to warrant news.

Contrary to unreliable sources elsewhere, the Sparky eZX BASIC project is alive and well and welcome to all who wish to contribute.  However, I have not been able to work on Sparky for over a year now and I hope to be able to complete this project eventually.  I would rather have some more people involved to help alleviate the burden.

WANTED

  • Spectrum or TS2068 Enthusiast that would like to see the next generation the ZX design can be pushed to.
  • Circuit Board Layout Designer that could accurately design a PC board to piggy-back on the eZ80 trainer board for use as the display card for the project.
  • FPGA Programmer (or equivalently experienced hobbyist) who has the ability to work with FPGA chps to create an advanced video interface/display chip.
  • eZ80 (or Z80) Assembly Programmer who is willing to help convert the 16 bit addressing code in the Spectrum ROM code into a 24 bit address space.  This means expanding the BASIC address space to the full 24 bit address space of the eZ80 chip.  Contact me for further details.  You have 1 megabyte of ROM code space to work with, so don't be shy.  I anticipate the math code will be the toughest to convert.

THANK YOU

I say Thank you to the following people for their help and contributions:

  • Andrew Owen - A fan of all things ZX Spectrum and has been given stewardship authority over Amstrad's Spectrum ROM code.  He's in charge of the open source SE BASIC project which is intended to improve the existing Spectrum ROM and yet maintain existing software compatibility.  Currently the project focuses on the 48K Spectrum, but also benefits the 128K series.  Go and check out his Spectrum SE hardware project as well.  Where he now has some pictures!

  • Geoff Wearmouth - For his absolutely magnificent work on the SEA Change ROM code.  This guy must live and breath Spectrum to be able to do this great work.  The goal of his project is to make the ROM code the way he believes Sinclair originally intended it to be with full streams support etc.

NEWS
Latest:  July 9, 2007

I've decided to code a hardware emulator before building a prototype.  I'm not interested in speed, but accuracy of the display output.  This will allow me to make quick changes to the OS without having to program the flash rom, dump the memory, and convert it for display.

I'll code it in Perl, as it is very forgiving and slow enough to follow what's happening in the OS.  Besides, it saves more time not having to compile/link over and over.

March 16, 2005
Work has been moving right along.  Since nobody is interested in helping out, the work is going slowly.  No matter, it's a fun project for one.

I have been lacking in updating the web site, although the project is progressing quite well.  The OS has reached 256K so far and still has room to grow.  The hardware design has changed a bit.  Whereas I thought to not implement bank selecting on a CPU capable of addressing 16 Megabytes of RAM, I have designed the memory bus a little uniquely.  The display hardware will be on it's own completely isolated 4 megabyte / 22 bit memory bus, and the CPU can access this memory by banking out the top 4 megabytes of RAM to draw to the display.

This configuration solves many problems:

  • It gives a means to allow the display and CPU to run at full speed without the need to stop the CPU when the display needs access to display memory.  However, only when the display RAM is banked out.  This is achieved by using a bi-directional tri-state buss between the CPU and display hardware.  This also allows for greater display resolutions and colors.

The OS buffers all drawing commands and does not actually draw them until the vertical blank interrupt is received.  It then draws all of the commands in the buffer and returns.  This is a crude form of display buss arbitration and it seems to work seamlessly.

October 30, 2004
I have had some ideas on how to implement display hardware without having to step on the CPU's toes.  The lack of the ability to hold the clock signal of the CPU high to mimic the Spectrum's method of display arbitration is out of the question for the eZ80 CPU, as it needs to run its clock constantly and gets very upset when it stops.  There is also the problem of no WAIT signal from the eZ80 CPU, and thus you can't just tri-state buffer the display RAM and hold WAIT until the display is finished with.  The only is to do one or a combination of the following:
  • Have BUSREQ asserted at the beginning of a scan line, but leave enough of a border (at least 10 clock cycles) to give the CPU time to finish accessing the address bus to tri-state it before the display hardware actually starts spitting out pixels.  This means a lot of timer triggered timers will need to be used for this to work.
  • Have dual-ported RAM be used for the display RAM.  Dual ported RAM is not easy to locate these days, but it may be worth the hassle of a larger PC board simply because this would allow the CPU to always be running without having to stop the bus for display writing and reading.
  • I could do the method the Motorola chip did and isolated the display memory from the CPU bus and read and write to the display via special registers.  This, however, may be slower and more complicated than necessary anyway.

If I can just get a working prototype ready, I'll be able to concentrate on getting the OS developed for it.

September 10, 2004
I have advertised for FPGA programmers to help in making a SVGA video generator for the project.  I noticed that the Opencores web site has available an extremely nice SVGA video core.  Perhaps it could be modified to make it eZ80 friendly and have Spectrum like display modes as well.  I'm not an FPGA expert, so I have no idea on how flexible they can be.  What's important for this is to not go overboard with display capability.  Preferably something that uses less than 1 megabyte of RAM and can be interfaced to an 8 bit data buss.

Even though the 50 MHz eZ80 is about 48 times faster than a 4 MHz Z80, it would be best to avoid complicated video output.  Perhaps 1024x768 should be the highest resolution.  This mainly to leave enough space for program code as the eZ80 only addresses 16 megabytes of memory.

August 1, 2004
After a long hiatus this project is back on line!  A lot has happened since November 2002.  Unfortunately, nothing has happened on this project.  However, I intend to bring this project to higher visibility to, hopefully, recruit more to be involved in it.

If you want to join this project, then please contact me.

I have decided to improve the hardware specifications in hopes of being able to use a programmable array device to generate video and perhaps be much like a ULA to the new design.  See the specifications page to learn more about the upgrades.

Click here to read the news archives