D 2017-08-31T06:04:53.712 L PL/2DX N text/x-markdown U kc5tja W 1732 # PL/2DX ## Why? I'm [designing a computer](http://chiselapp.com/user/kc5tja/repository/kestrel-2dx/index) around the RV64I instruction set architecture. While this architecture is supported by GCC, so far I've not been successful in using it to produce flat binary images suitable for use in my computer's bootstrap ROM. So, I decided to try and tackle making a purpose-built, systems programming language suited just for writing my bootstrap ROM images. Using this, I hope to implement an ELF reader that is capable of supporting the ELF images that GCC produces, thus letting me bootstrap the rest of my run-time environment. ## Inspirations Some languages of note will inform how I design the language. * [PL/I](https://en.wikipedia.org/wiki/PL/I) * [Oberon](https://en.wikipedia.org/wiki/Oberon_(programming_language\)) * C (especially circa Unix 6th Edition, back when C was *simple*) ## Why Lisp-Flavored? Laziness. I could write my own lexer and parser, but I really don't have the patience for that anymore. I'm using [Shen Lisp](http://shenlanguage.org)'s reader to do all that work for me, thus letting me focus more on the code generator. Besides, if syntax really does become an issue, I could conceivably also make use of Shen's built-in support for parsing to define an infix syntax. *Or,* maybe *you* can, and submit a patch. ;) # Mission * Compile high(ish) level code into an assembly language listing suitable for the Kestrel-2DX's development toolchain. * Let me write a reasonable BIOS-like implementation in space competitive with hand-written assembly language. (I have 32KiB of ROM space available to me, so *tight* code is more important than *speedy* code.) Z cb6eec6298e3a59c2183df24ca375706