<p>Let’s try to simulate a non-trivial circuit in Racket using the techniques proposed in <a href="/2021/03/14/simulating-digital-circuits-in-racket/index.html">the previous post</a>.</p> <p>Vermicel is a 32-bit RISC processor core that supports most of the base instruction set of the RISC-V specification (RV32I). It was initially designed and implemented in VHDL under the name…
<p>In the series <a href="/2020/11/08/my-first-domain-specific-language-with-racket/">My first domain-specific language with Racket</a>, I have created a simple hardware description language (HDL) called Tiny-HDL. The intent of the series was to illustrate the techniques for creating a domain-specific language in Racket, from parsing to code generation, with a focus on name resolution and semantic…
<p>This is the final step of my Racket DSL implementation roadmap. It consists in promoting Tiny-HDL as a standalone language with two flavors: a Lisp-like syntax and a custom syntax.</p>
<p><a href="http://sozi.baierouge.fr">Sozi</a> is a zooming presentation tool that I have been developing for five years in my spare time. Sozi is <a href="https://www.gnu.org/philosophy/free-sw.en.html">free software</a>. It has gathered some enthusiastic and faithful users, and I usually receive very positive feedback.</p> <p>However, people do not always realize that Sozi is mainly the work of…
<p>Racket offers a sophisticated module system that allows to organize a program into multiple files. In this step, we will show a solution to take advantage of Racket modules in a DSL.</p>
<p>The semantic checker for Tiny-HDL will be written in two steps. In the <em>name resolution</em> step, the checker introduces scopes in the abstract syntax tree, and uses them to map each named reference to the corresponding declaration.</p>
<p>In <a href="/2020/11/16/my-first-domain-specific-language-with-racket/step-1:-execution">step 1</a>, I have written the full adder example in Racket, following a few mapping rules to express the concepts of the Tiny-HDL language. The next step consists in writing a code generator that implements these mapping rules so that we can generate Racket code automatically.</p>
<p>In <a href="/2020/11/08/my-first-domain-specific-language-with-racket">the previous post</a>, I have sketched an informal specification of a small hardware description language called Tiny-HDL. Our goal is to <em>execute</em> circuit descriptions, written in Tiny-HDL, on the Racket platform. Which means that we need to implement a <em>compiler</em> from Tiny-HDL to Racket.</p> <p>As explained…
<p>For many years, I have felt an attraction to languages from the Lisp family, but I was held back by two concerns: my indecisiveness about which variant to learn, and the lack of a personal project to implement with it. Recently, I have started drafting the <a href="https://en.wikipedia.org/wiki/Hardware_description_language">Hardware Description Language (HDL)</a> of my dreams and I have…
<p>This post is the first of a series about « midi@3:14 », my home-made MIDI keyboard. In the following sections, you will read about the hardware design and assembly. The next posts will be dedicated to the firmware and companion software.</p>
<p><a href="http://elementary.io/">Elementary OS</a> is a Linux distribution that comes with its own desktop environment called Pantheon. The developers do not officially support installing Pantheon separately from the rest of the distribution. In fact, while Elementary OS Freya is based on Ubuntu 14.04, it requires <a href="https://launchpad.net/~elementary-os/+archive/ubuntu/os-patches/">newer…
<p>On the Nexus 7, I have always been surprised by the poor reactivity of hand-writing and drawing applications. Generally, there is a noticeable delay between the gestures of the finger (or stylus) and the progess of the lines being drawn. In some cases, it is difficult to draw small details rapidly: the resolution of the lines decreases with the speed of the gestures.</p> <p>I have created a…
<p>In January this year, Mozilla <a href="https://hacks.mozilla.org/2014/01/mozilla-launches-contribution-program-to-help-deliver-firefox-os-to-tablets/">launched the Tablet Contribution Program</a> to help test and improve Firefox OS on tablet devices. I volunteered as soon as the <a href="https://hacks.mozilla.org/2014/02/open-applications-tcp/">applications opened</a> and on the 1st of April, I…