News About Docs Src Emulation Description Language
(Savoury SnaX) 04 Sep 2017

New Job, Major changes coming

So, it’s been 6 years since I’ve updated this blog. Work has continued in the background (either directly, or on other projects). However, a little while ago, I accepted a new job. This new job involves working on some very interesting compiler technology, and as a result I’ve spent the last month or so making some significant usability improvements to EDL, mostly to refresh my memory on the project, and learn some more llvm features (debug information).

I thought I would use this post to document the significant changes (until such point as I can update the documentation) :

First off, I’ve switched over to using cmake as the project/makefile generator. I often switch between linux and windows platforms, and maintaining both vcprojects and makefiles was becoming silly. This change is still a little bit incomplete, openal dependencies are not setup, so examples build without sound.

Next up, the compiler now generates reasonable error messages :

Old Style Error :

Undeclared mapping : rrbS
Compilation Failed

Which gives almost no clues as to which file failed, where in the file it failed etc.

New Style Error :

Error: Undeclared mapping : rrbS [../../../chips/Accurate/z80.edl:3828]
  3825 | }
  3826 |}
  3827 |
  3828 |INSTRUCTION ED "OUT (C),%M0"  %01:rrbS:%001
       !                                  ^^^^

I’m sure you will agree, this is a vast improvment.

Work has started on generating debug information for the objects generated by the compiler. This is one of the main reasons I have switched to using LLVM trunk (6.0.0.0), as this generates Visual Studio compatabile codeview information. Debug information is far from complete, only line information is generated (and only for certain constructs). However this is an area I expect to improve in the next few months.

On the language front, additional constructs have been added that allow you to define connections between chips (like a netlist), the motivation for this is to be able to reduce the amount of C driver work required. The best place to see this is examples/EDLSpectrum, this is a full description of the Sinclair 48K spectrum, however IO contention is not implemented properly yet. Memory contention is however, and its all defined entirely in edl, the driver only contains the keyboard/debugger/logic analyser/video output.


(Savoury SnaX) 08 Dec 2012

Konix

Well it has been nearly a full year since the last post. For most of this year I have been working on other projects (FPGAs and work), however just recently I have been updating EDL adding in multiply/divide/modulus support. The reason for this is I have been working behind the scenes on emulating the Konix Multisystem (you can see the progress on http://www.konixmultisystem.co.uk/).

There is still a long way to go, and I have plenty of work to do on it, but I thought it time I posted my involvement. Obviously EDL is heavily involved in the emulator, although in its current incarnation it is not trying to be cycle accurate.