| rr Berlin, Germany, 26.12.2020, 01:01 |
(My) fork of 8086 Assembler for DOS (Announce) |
Hi!
Because we don't have enough "toolchains" available already, I found another one to create DOS software. --- |
|
| rr Berlin, Germany, 02.03.2022, 21:54 @ rr |
(My) fork of 8086 Assembler for DOS |
> Although this is a self-hosting assembler, it still lacks features and has > bugs. I started squashing at > https://github.com/bttrx/8086-assembler and also wrote a small > Readme. I killed this project a few days ago. Too many bugs, too little outcome. --- |
|
| RayeR CZ, 30.12.2020, 05:18 @ DosWorld |
(My) fork of 8086 Assembler for DOS |
OK, now I understand. But I never needed to do anything special with object files in DOS, I just used TASM + TLINK in the past then rather used NASM. Also in DJGPP that use COFF I don't remember I would need do other magic than standard linking. But good to know there are such mixing/linking possibilities... --- |
|
| marcov 29.12.2020, 19:14 @ DosWorld |
(My) fork of 8086 Assembler for DOS |
> I want consume obj produced with SPHNIX C-- (imho, best for small and > highspeed libraries) and i want produce output files could be used with TP > (etc). 16-bit Free Pascal? |
|
| rr Berlin, Germany, 29.12.2020, 01:55 @ rr |
(My) fork of 8086 Assembler for DOS |
> I released an updated version, which adds support for missing Jcc, LOOPcc,
> and REPcc aliases. Just because it was easy to do so. --- |
|
| DosWorld 28.12.2020, 14:00 (edited by DosWorld, 28.12.2020, 14:47) @ RayeR |
(My) fork of 8086 Assembler for DOS |
> OK, thanks for example. > So only the object file in OMF format can be linked directly by TP without > external tools and C-- supports this format. And how about OBJ files > produced by TurboC and TurboAssembler? Those are also OMF or different > format that cannot be used this way? Yes, this is the same obj/omf. In DOS was available only one obj format - omf. All 99% of commercial compilers and linkers in 80x and 90x understand obj in omf format. It was a industrial standart - the same as coff (for obj) now. Yes, TC and TASM produce same obj/omf format and for linking uses TLINK - this is obj/omf linker. Microsoft has the same toolchain - MASM + LINK and they also work with obj/omf. Yes, if i am not wrong Turbo C had "pascal" (and "far") keywords - so they could be linked with TP. TASM could be linked with TP/TC with zero problem - this is native case. Dinosaurs Small C + Small Assembler also uses obj/omf. Also, imho, many OS/2 compilers also work with obj/omf (omf have extensions for 32bit segments, but this is not the same as coff). So, if you want create near to professional grade compiler - you must work with obj/omf. If you want deliver libraries - you must do it with obj/lib in omf format. Only DJGPP can don't understand OFM format (not sure, IMHO), but this is for me "alien" technology (came to microcomputers from mainframes in later times). (May be "alien" is wrong word?) --- |
|
| RayeR CZ, 28.12.2020, 01:09 @ DosWorld |
(My) fork of 8086 Assembler for DOS |
OK, thanks for example. So only the object file in OMF format can be linked directly by TP without external tools and C-- supports this format. And how about OBJ files produced by TurboC and TurboAssembler? Those are also OMF or different format that cannot be used this way? --- |
|
| DosWorld 27.12.2020, 22:11 (edited by DosWorld, 27.12.2020, 23:28) @ RayeR |
(My) fork of 8086 Assembler for DOS |
> Aha, I wouldn't imagine possibility of mixing TP and C-- code (no problems
> with call conventions?).
No problems.
> Can you describe it a bit more detailed?
Here is Michael Schreker C--.
this function return length of string k:
("d" parameter is not need, i just put it for proof params order)
--- |
|
| rr Berlin, Germany, 27.12.2020, 13:22 @ Japheth |
(My) fork of 8086 Assembler for DOS |
> missing features (so far):
> - no ORG directive (so no device driver development possible?)
With some "handcrafting" I was able to rebuild my little PAUSE.SYS using --- |
|
| rr Berlin, Germany, 27.12.2020, 08:49 @ DosWorld |
(My) fork of 8086 Assembler for DOS |
> I want consume obj produced with SPHNIX C-- (imho, best for small and > highspeed libraries) and i want produce output files could be used with TP > (etc). So, it need not for compiling project, it need for compiler > developers. If SPHiNX C-- produces OMF .OBJ files, you can link them directly with TP. You just need to declare functions/procedures as external to TP and use the {$L file.obj} syntax. http://www.retroarchive.org/swag/MISC/0109.PAS.html http://swag.outpostbbs.net/FAQ/0007.PAS.html TP comes with a sample too. I think, it's called BGILINK. --- |
|
| RayeR CZ, 27.12.2020, 03:57 @ DosWorld |
(My) fork of 8086 Assembler for DOS |
Aha, I wouldn't imagine possibility of mixing TP and C-- code (no problems with call conventions?). Can you describe it a bit more detailed? So you have some low level C routine, compile it to OMF with C-- and then how it is integrted to TP? I know only TPU (TP units). So you need to make TP produce also OMF and then link together with some OMF linker to target EXE? --- |
|
| rr Berlin, Germany, 27.12.2020, 01:05 @ rr |
(My) fork of 8086 Assembler for DOS |
I released an updated version, which adds support for missing Jcc, LOOPcc, and REPcc aliases. Just because it was easy to do so. --- |
|
| DosWorld 27.12.2020, 00:03 (edited by DosWorld, 27.12.2020, 00:22) @ RayeR |
(My) fork of 8086 Assembler for DOS |
> BTW just for a curiosity why are you needing that OMF? I could see here
> ..ehm.. a bit obsession with OMF in many threads in the past but I missed
> any real usage - who needs it for compiling what projects?
I want consume obj produced with SPHNIX C-- (imho, best for small and highspeed libraries) and i want produce output files could be used with TP (etc). So, it need not for compiling project, it need for compiler developers.
Known alternatives - TPU is not well-described, a.out/coff good for no-segments memory models (16/32 bit). --- |
|
| rr Berlin, Germany, 26.12.2020, 23:26 @ Japheth |
(My) fork of 8086 Assembler for DOS |
> A :END label to skip the assemble code would be better, since the "exit" > terminates batch processing. And one problem that remains is that the > assembler cannot be told to be silent. While trying to implement the END pseudo-op, I was unsatisfied with the screen output, so I reworked it completely and released a new version. Nothing else has changed. --- |
|
| rr Berlin, Germany, 26.12.2020, 23:22 @ Japheth |
ASM's symbol handling needs work |
> Neither duplicate symbols nor non-existant symbols are recognized
> currently.
Added to the "Known Bugs" section. Thanks for reporting. --- |
|
| rr Berlin, Germany, 26.12.2020, 23:22 @ Japheth |
(My) fork of 8086 Assembler for DOS |
> bugs: > - LDS opcode rejects any type of operands that I was able to imagine Added to the "Known Bugs" section. --- |
|
| RayeR CZ, 26.12.2020, 22:48 @ DosWorld |
(My) fork of 8086 Assembler for DOS |
> IMHO, all of assemblers have one big problem ("big problem" - this is from
> my point of view) - they does not generate obj/omf. What about obj in this
> assembler? Second "problem" - they all limited to .com file. --- |
|
| rr Berlin, Germany, 26.12.2020, 19:23 @ Japheth |
ASM's symbol handling needs work |
> Neither duplicate symbols nor non-existant symbols are recognized
> currently.
Oops! --- |
|
| Japheth Germany (South), 26.12.2020, 19:18 @ rr |
ASM's symbol handling needs work |
There are problems with symbols. The following code snippets are accepted without errors:
--- |
|
| Japheth Germany (South), 26.12.2020, 18:14 (edited by Japheth, 26.12.2020, 18:31) @ rr |
(My) fork of 8086 Assembler for DOS |
> > - no END directive (important, since it allows "self-compiling" .BAT
> > files)
>
> What do you mean?
Here's an example, named TEST.BAT:
--- |
|
| rr Berlin, Germany, 26.12.2020, 17:33 @ Japheth |
(My) fork of 8086 Assembler for DOS |
> > So, don't ask for Pentium instructions support. --- |
|
| Japheth Germany (South), 26.12.2020, 17:25 @ DosWorld |
(My) fork of 8086 Assembler for DOS |
> IMHO, all of assemblers have one big problem ("big problem" - this is from > my point of view) - they does not generate obj/omf. The "all" is surely NOT true - there are quite a few who understand OMF format quite well (nasm, jwasm, ...). OMF looks pretty "legacy" these days, of course, but it's actually the only sufficiently standardized segmented object format that exists AFAIK. --- |
|
| Japheth Germany (South), 26.12.2020, 17:18 @ rr |
(My) fork of 8086 Assembler for DOS |
> but I see this as a chance to
> me to recap my knowledge about assembly language programming, learn a
> little about "compiler" design
Good.
> So, don't ask for Pentium instructions support. --- |
|
| rr Berlin, Germany, 26.12.2020, 16:31 @ DosWorld |
(My) fork of 8086 Assembler for DOS |
> > Its very creative name is "8086 Assembler for DOS". It was written by > > Stephen Duffy in 2001. He first released the source code > > IMHO, all of assemblers have one big problem ("big problem" - this is from > my point of view) - they does not generate obj/omf. What about obj in this > assembler? Second "problem" - they all limited to .com file. https://github.com/bttrx/8086-assembler#limitations clearly says "No support for .EXE or .OBJ files." > PS: I am make fork - msa2, add missed opcodes, made code "compilable" by > modern GCC (you can use msa2 in linux/windows) and made code-refactoring, > but stop at obj generatation. This is a reason, why i don't anonce msa2. > FIXUP record explode my already-damaged-brain :( (Hope, with time, i am win > this challenge and complete this work) That might be the reason, why other "hobby" assemblers also do not support .OBJ files. --- |
|
| DosWorld 26.12.2020, 16:01 (edited by DosWorld, 26.12.2020, 16:34) @ rr |
(My) fork of 8086 Assembler for DOS |
> Its very creative name is "8086 Assembler for DOS". It was written by
> Stephen Duffy in 2001. He first released the source code
IMHO, all of assemblers have one big problem ("big problem" - this is from my point of view) - they does not generate obj/omf. What about obj in this assembler? Second "problem" - they all limited to .com file. --- |
Thread view
Mix view
Its very creative name is "8086 Assembler for DOS". It was written by Stephen Duffy in 2001. He first released the source code on
Feel free to try it!
Cheers,
Robert
(
Looks like this assembler is only for the pros.
Something more to work on.