Show HN: 8086/8088 assembler that runs over 8088 hardware with modern syntax
github.com
github.com
For a more "authentic" 8088 experience, you could use the assembler that came with MS-DOS 1.25, written by Tim Paterson:
https://github.com/microsoft/MS-DOS/blob/master/v1.25/source...
I'm not, it's just not worth the effort.
> in the 8086/8088 era, it's huge; the first IBM PC in its minimum configuration had only 16K RAM.
It's really not needed today.
> For a more "authentic" 8088 experience, you could use the assembler that came with MS-DOS 1.25, written by Tim Paterson
The author here wanted just his own .asm sources to assemble natively, and not using nasm, and if I understand correctly they indeed depend on the features not present in the old assembler, he writes:
"nasm doesn't run over 8086/8088 processors, and I couldn't find a compatible assembler!"
It's not that he couldn't find any assembler, but that he couldn't find one that understands the features from nasm he used.
http://www.os2museum.com/wp/dos/dos-1-0-and-1-1/
It should be noted that DOS would theoretically be able to run on the base PC model with 16KB RAM. However, this was not an option in practice: The PC’s BIOS loaded the boot sector (from a floppy) at address 7C00h, which is 31KB, meaning that it was not possible to boot DOS on a PC with less than 32KB memory.
The minimum configuration of the first IBM PC isn't really a guide to a anything about the 8088/8086 era except the low end at the very beginning. Maxing out the 640K limit was common for 8088/8086 PC clones by the end of the era, and 30KB binaries for programming tools wouldn't be outlandish.
https://www.digitalmars.com/download/freecompiler.html
Source code to the compiler/libraries is also free:
https://blogs.mentor.com/embedded/blog/2017/04/01/announcing...
Bingo. I love programming for early DOS systems (86, 286, 386) but it's difficult to find a tool-chain that runs on Linux and is able to produce DOS compatible binaries. I think OpenWatcom might but I could not get it to work correctly.
Definitely going to give this a try.
I've tried
25.07.1988 15:39 54,272 C88.EXE
from c88v31_1.zip (disk 1 on http://www.desmet-c.com/ver_31h.shtml ) with int f( int x, int y ) { return x * y; }
int main( void ) { return f( 3, 4 ); }
and it didn't complain? What's then that that didn't work?(Also, I used Borland's C compiler for these platforms, and there is an official version now available for free, but it's a little annoying to download).
struct label *define_label(char* name, int value)
{ ..
then C88 compiles without errors. On the page about the compiler the author of the page writes that he had to fix the standard libraries, but the compiler (C88) is definitely made to work with ANSI C "draft" which matches my experiment.And I surely understand it was "good enough" a solution for you to do what you did.