24

I am writing a Spectrum emulator, however I am finding it difficult to find official or reliable information about the ULA, its functioning and its pins.

Are there official sources documenting its inner workings?

user3840170
  • 23,072
  • 4
  • 91
  • 150
Sklivvz
  • 1,233
  • 12
  • 19
  • There isn't much documentation about it. I'm not a spectrum guy, but from what I can tell, it's a completely custom ASIC, and isn't documented very well. Also, Google is your friend, my friend – Shahe Ansar Apr 19 '16 at 20:50
  • 2
    Downvoter, please explain why you don't like, it's better to discuss in these early times. – Sklivvz Apr 19 '16 at 20:59
  • @ShaheAnsar: is actually the opposite: it's not a completely custom ASIC, but an uncommited logic array, and it's documented pretty well. – mcleod_ideafix Apr 19 '16 at 23:14
  • @mcleod_ideafix Interesting... – Shahe Ansar Apr 21 '16 at 21:44
  • What about the Zx Spectrum Complete Disassembly? I still have my copy :) – Fandango68 Apr 24 '17 at 06:47
  • Since your'e writing emulator you might be interested in MC timing precision take a look in here How to obtain CPU and other hardware specs for emulator development and the 2 linked SO answers of mine In one of them you find my ISET for Z80 which is MC microcode based and passes ZEXAL with 100% – Spektre Sep 20 '17 at 12:04
  • Unfortunately for you, most emulator authors make do with the World of Spectrum technical references (http://www.worldofspectrum.org/faq/reference/) and possibly the No$Fun Sinclair ZX Specifications (http://problemkaputt.de/zxdocs.htm), as both contain enough information to make software unaware that it is within an emulated environment, which is traditionally as far as emulators go. pndc's answer of long ago covers the gap; this comment is mainly for the benefit of potential future emulator authors less minded to reproduce the analogue side and/or the original digital implementation. – Tommy Sep 20 '17 at 13:20

3 Answers3

32

Buy, and study carefully, The ZX Spectrum ULA. The book is the result of opening the chip and reverse-engineering it down to the transistor level.

pndc
  • 11,222
  • 3
  • 41
  • 64
14

For your reference, this is the datapath I inferred after reading Chris book. It's the ULA datapath I've used in the ZX-UNO clone. Coloured blocks will help you differentiate what parts are from the original ULA, Timex additions, and ULAplus additions.

Datapath Flow Chart

Chenmunka
  • 8,141
  • 3
  • 39
  • 65
mcleod_ideafix
  • 18,784
  • 2
  • 70
  • 102
  • This is great, but not an answer by itself. Is there a website that presents this and other details? – Nick Westgate Nov 16 '16 at 21:04
  • Based on this datapath, I wrote a complete Verilog description of the ULA. It is available at the repository of the ZX-UNO project ( www.zxuno.com ) . An earlier version of it is also available at Opencores ( http://opencores.org/project,zx_ula ) . All in all, the definitive reference is the above mentioned book by Chris Smith. – mcleod_ideafix Nov 17 '16 at 10:26
4

Based on the Book title from the accepted answer I found this:

Which leads to this repository:

which is directly accessible without the need to buy or register anything

Look for ula.v file which is code representing ULA chip by FPGA.

Spektre
  • 7,278
  • 16
  • 33