QDot 8086 is a mid-level programming language targeting the original IBM-PC architecture written as a set of macros for NASM — the Netwide Assembler. The idea behind it is to make it easy to write small, fast, correct and maintainable code in a language almost as expressive as C but without giving up all control Assembly language grants to programmers. It features support to functions of an arbitrary number of parameters and multiple return values, global and function-local variables, loop and conditional flow-control constructs, evaluation of arbitrarily complex stack-based expressions, symbol importing and primitive debugging. In order to accomplish this, NASM’s powerful preprocessing and assembling capabilities are used to achieve a machinery that very closely resembles a compiler. QDot has also a companion standard library that is fully BIOS-based, thus OS-independent, which provides array processing, keyboard, video, disk and speaker I/O, timing, low-level debugging, math functions, user interface procedures and last but not least a versatile metamorphic boot-loader, that makes it simple to build a binary that is simultaneously a valid DOS executable and a bootable image — a property known as run-within-OS-or-bootstrap-itself-without-OS. There are already a couple of programs implemented in QDot as a proof of concept: Terminal Matrix 8086 and DeciMatrix 8086. QDot currently supports only the tiny memory model (.COM binaries — whose code, data and stack fit all within 64kb segment boundaries).
DocumentationDocumentation is available at QDot's homepage
- IRC general channel
released on 6 August 2015
|License||Verified by||Verified on||Notes|
|GPLv3orlater||Bruno Félix Rezende Ribeiro (oitofelix)||12 August 2015|
|Creative Commons Attribution Share-Alike 4.0||Bruno Félix Rezende Ribeiro (oitofelix)||12 August 2015|
Leaders and contributors
|Bruno Félix Rezende Ribeiro (Ofelix)||Author|
Resources and communication
|Developers||VCS Repository Webview||http://github.com/oitofelix/qdot-8086/|
|Required to use||NASM|
This entry (in part or in whole) was last reviewed on 12 August 2015.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the page “GNU Free Documentation License”.
The copyright and license notices on this page only apply to the text on this page. Any software or copyright-licenses or other similar notices described in this text has its own copyright notice and license, which can usually be found in the distribution or license text itself.