Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the board
Thread view  Mix view  Order
Rugxulo

Homepage

Usono,
29.04.2026, 05:41
 

testing speed of DOS assemblers under djl's 8086 DOS emulator (Emulation)

I'm on the wrong machine right now, so I don't have precise benchmarks. And I tested the emulator under OpenBSD (i386) on a jump drive. Note that I'm more interested in estimated 8086 speed. Obviously "native" speed is less noticeable.

In order of fastest to slowest assemblers I tested:

* A86 (super fast) -- 5 secs
* as86 (from bcc/dev86) -- 50 secs.
* a72 / ra -- 1min20 or 1min40
* wasmr or jwasmr -- 4min
* mininasm or tinyasm -- 5min
* nasm16 -- 6min

In other words, I wanted to know what would be ultra slow on a real 8086, for academic curiosity.

I also tested a few compilers and interpreters. Unsurprisingly, things like AWK and REXX are pretty slow compared to native compiled code (e.g. Turbo Pascal).

* https://github.com/davidly/ntvdm

AFAIK, this is only 8086 / MS-DOS 3.3 emulation but "mostly" easy to use via cmdline. (No extra data files needed.)

Oso2k

29.04.2026, 16:56

@ Rugxulo

testing speed of DOS assemblers under djl's 8086 DOS emulator

> I'm on the wrong machine right now, so I don't have precise benchmarks. And
> I tested the emulator under OpenBSD (i386) on a jump drive. Note that I'm
> more interested in estimated 8086 speed. Obviously "native" speed is less
> noticeable.
>
> In order of fastest to slowest assemblers I tested:
>
> * A86 (super fast) -- 5 secs
> * as86 (from bcc/dev86) -- 50 secs.
> * a72 / ra -- 1min20 or 1min40
> * wasmr or jwasmr -- 4min
> * mininasm or tinyasm -- 5min
> * nasm16 -- 6min
>
> In other words, I wanted to know what would be ultra slow on a real 8086,
> for academic curiosity.
>
> I also tested a few compilers and interpreters. Unsurprisingly, things like
> AWK and REXX are pretty slow compared to native compiled code (e.g. Turbo
> Pascal).
>
> * https://github.com/davidly/ntvdm
>
> AFAIK, this is only 8086 / MS-DOS 3.3 emulation but "mostly" easy to use
> via cmdline. (No extra data files needed.)


These are times to do what exactly?

Rugxulo

Homepage

Usono,
30.04.2026, 02:45

@ Oso2k

testing speed of DOS assemblers under djl's 8086 DOS emulator

> These are times to do what exactly?

Estimated 8086 timings for reassembling PSR Invaders.

In other words, NASM16 (or even MININASM) is too slow for reassembling the whole source file at once (2000 lines) on an actual 8086. Although many programmers shun splitting everything into separate .OBJ files for LINK, realistically that's what most projects would require (unless you're just super patient). In theory, I would like to profile NASM16 and fix it.

In lieu of common NASM syntax, you can use other assemblers, but they have their own tradeoffs.

Rugxulo

Homepage

Usono,
01.05.2026, 13:11

@ Rugxulo

testing speed of DOS assemblers under djl's 8086 DOS emulator

> ntvdm -u -c -r:. -p -e:rxlib=src\\ utils\\rexx8086 src\\inva86.rex
> brexx 2.1.0 Aug 05 2024
> line 300
> line 600
> line 900
> line 1200
> line 1500
> line 1800
> line 2100
> line 2400
> line 2700
> Elapsed: 4.76 secs.
>
> elapsed ms: 4,876
> 8086 cycles: 1,862,335,225
> clock rate: unbounded
> approx ms at 4.77Mhz: 390,426 == 0 days, 0 hours, 6 min, 30 sec, 426 ms
> app exit code: 0
>
> ntvdm -u -c -r:. -p utils\\a86 +ESP0 inv.a86 inv-a86
> A86 macro assembler, V4.05 Copyright 2000 Eric Isaacson
> Source:
> inv.a86 [inv.inc]
> Object: inv-a86.COM
>
> elapsed ms: 94
> 8086 cycles: 25,757,126
> clock rate: unbounded
> approx ms at 4.77Mhz: 5,399 == 0 days, 0 hours, 0 min, 5 sec, 399 ms
> app exit code: 0

Compare that to AS86 (from BCC/Dev86):

> ntvdm -u -c -r:. -p -e:rxlib=src\\ utils\\rexx8086 src\\invwords.rex
> brexx 2.1.0 Aug 05 2024
> INVADERS.ASM -> inv-jwas.asm
> line 300
> line 600
> line 900
> line 1200
> line 1500
> line 1800
> line 2100
> line 2400
> line 2700
> Elapsed: 15.55 secs.
>
> elapsed ms: 15,678
> 8086 cycles: 5,967,940,056
> clock rate: unbounded
> approx ms at 4.77Mhz: 1,251,140 == 0 days, 0 hours, 20 min, 51 sec, 140 ms
> app exit code: 0
> ntvdm -u -c -r:. -p -e:rxlib=src\\ utils\\rexx8086 src\\fixsizes.rex
> brexx 2.1.0 Aug 05 2024
> inv-jwas.asm -> fixsizes.tmp
>
> elapsed ms: 6,156
> 8086 cycles: 2,318,155,131
> clock rate: unbounded
> approx ms at 4.77Mhz: 485,986 == 0 days, 0 hours, 8 min, 5 sec, 986 ms
> app exit code: 0
> ntvdm -u -c -r:. -p -e:rxlib=src\\ utils\\rexx8086 src\\as86fix.rex
> brexx 2.1.0 Aug 05 2024
> fixsizes.tmp -> inv-as86.asm
>
> elapsed ms: 13,442
> 8086 cycles: 5,039,209,375
> clock rate: unbounded
> approx ms at 4.77Mhz: 1,056,438 == 0 days, 0 hours, 17 min, 36 sec, 438 ms
> app exit code: 0
>
> ntvdm -u -c -r:. -p utils\\as86 inv-as86.asm -b inv-as86.com -s inv-as86.sym
>
> elapsed ms: 611
> 8086 cycles: 239,615,402
> clock rate: unbounded
> approx ms at 4.77Mhz: 50,233 == 0 days, 0 hours, 0 min, 50 sec, 233 ms
> app exit code: 0

Compare that to A72 (aka RA):

> ntvdm -u -c -r:. utils\\sed -f src\\turbowrd.fix src\\invwords.p >INVWORDS.PAS
> ntvdm -u -c -r:. utils\\sed -f src\\turbowrd.fix src\\fixsizes.p >FIXSIZES.PAS
> ntvdm -u -c -r:. utils\\tpc /e. invwords
> Turbo Pascal Version 5.5 Copyright (c) 1983,89 Borland International
> INVWORDS.PAS(239)
> 239 lines, 7904 bytes code, 1282 bytes data.
> ntvdm -u -c -r:. utils\\tpc /e. fixsizes
> Turbo Pascal Version 5.5 Copyright (c) 1983,89 Borland International
> FIXSIZES.PAS(151)
> 151 lines, 6768 bytes code, 1312 bytes data.
> ntvdm -u -c -r:. -p invwords INVADERS.ASM inv-jwas.asm
> line 300
> line 600
> line 900
> line 1200
> line 1500
> line 1800
> line 2100
> line 2400
> line 2700
>
> elapsed ms: 538
> 8086 cycles: 226,380,542
> clock rate: unbounded
> approx ms at 4.77Mhz: 47,459 == 0 days, 0 hours, 0 min, 47 sec, 459 ms
> app exit code: 0
>
> ntvdm -u -c -r:. -p fixsizes inv-jwas.asm fixsizes.tmp
>
> elapsed ms: 262
> 8086 cycles: 100,555,448
> clock rate: unbounded
> approx ms at 4.77Mhz: 21,080 == 0 days, 0 hours, 0 min, 21 sec, 80 ms
> app exit code: 0
>
> ntvdm -u -c -r:. utils\\sed -f src\\a72.fix fixsizes.tmp >INV-A72.ASM
> ntvdm -u -c -r:. -p utils\\ra inv-a72 /a
> R-ASSEMBLER VERSION 1.05C
> IN: INV-A72.ASM
> PASS 1
> PASS 2
> OUT: INV-A72.COM
>
> elapsed ms: 1,591
> 8086 cycles: 513,238,557
> clock rate: unbounded
> approx ms at 4.77Mhz: 107,597 == 0 days, 0 hours, 1 min, 47 sec, 597 ms
> app exit code: 0

Rugxulo

Homepage

Usono,
01.05.2026, 13:23

@ Rugxulo

testing speed of DOS assemblers under djl's 8086 DOS emulator

> ntvdm -u -c -r:. utils\\tpc /e. src\\invwat2
> Turbo Pascal Version 5.5 Copyright (c) 1983,89 Borland International
> SRC\INVWAT2.PAS(189)
> 189 lines, 7168 bytes code, 1414 bytes data.
> ntvdm -u -c -r:. -p invwat2
> line 300
> line 600
> line 900
> line 1200
> line 1500
> line 1800
> line 2100
> line 2400
> line 2700
>
> elapsed ms: 463
> 8086 cycles: 208,996,655
> clock rate: unbounded
> approx ms at 4.77Mhz: 43,814 == 0 days, 0 hours, 0 min, 43 sec, 814 ms
> app exit code: 0
>
> ntvdm -u -c -r:. -p utils\\wasmr /zq inv-wat.asm
>
> elapsed ms: 3,538
> 8086 cycles: 1,311,688,028
> clock rate: unbounded
> approx ms at 4.77Mhz: 274,987 == 0 days, 0 hours, 4 min, 34 sec, 987 ms
> app exit code: 0
> ntvdm -u -c -r:. utils\\warplink /c inv-wat

Compare that to MiniNasm and NASM16:

> ntvdm -u -c -r:. -p -e:rxlib=src\\ utils\\rexx8086 src\\invwords.rex
> brexx 2.1.0 Aug 05 2024
> INVADERS.ASM -> inv-jwas.asm
> line 300
> line 600
> line 900
> line 1200
> line 1500
> line 1800
> line 2100
> line 2400
> line 2700
> Elapsed: 15.67 secs.
>
> elapsed ms: 15,795
> 8086 cycles: 5,967,940,376
> clock rate: unbounded
> approx ms at 4.77Mhz: 1,251,140 == 0 days, 0 hours, 20 min, 51 sec, 140 ms
> app exit code: 0
> ntvdm -u -c -r:. -p -e:rxlib=src\\ utils\\rexx8086 src\\fixsizes.rex
> brexx 2.1.0 Aug 05 2024
> inv-jwas.asm -> fixsizes.tmp
>
> Elapsed: 6.02 secs.
>
> elapsed ms: 6,137
> 8086 cycles: 2,318,155,483
> clock rate: unbounded
> approx ms at 4.77Mhz: 485,986 == 0 days, 0 hours, 8 min, 5 sec, 986 ms
> app exit code: 0
> ntvdm -u -c -r:. -p -e:rxlib=src\\ utils\\rexx8086 src\\nasmfix.rex
> brexx 2.1.0 Aug 05 2024
> fixsizes.tmp -> inv-nasm.asm
>
> Elapsed: 4.10 secs.
>
> elapsed ms: 4,206
> 8086 cycles: 1,639,521,877
> clock rate: unbounded
> approx ms at 4.77Mhz: 343,715 == 0 days, 0 hours, 5 min, 43 sec, 715 ms
> app exit code: 0
>
> ntvdm -u -c -r:. -p utils\\nasm16 -O3 -a inv-nasm.asm -o inv-nasm.com
>
> elapsed ms: 5,393
> 8086 cycles: 2,017,452,419
> clock rate: unbounded
> approx ms at 4.77Mhz: 422,945 == 0 days, 0 hours, 7 min, 2 sec, 945 ms
> app exit code: 0
>
> ntvdm -u -c -r:. -p utils\\mininasm -O3 inv-nasm.asm -o inv-mini.com
>
> elapsed ms: 4,499
> 8086 cycles: 1,704,620,312
> clock rate: unbounded
> approx ms at 4.77Mhz: 357,362 == 0 days, 0 hours, 5 min, 57 sec, 362 ms
> app exit code: 0

bocke

02.05.2026, 00:40

@ Rugxulo

testing speed of DOS assemblers under djl's 8086 DOS emulator

> I'm on the wrong machine right now, so I don't have precise benchmarks. And
> I tested the emulator under OpenBSD (i386) on a jump drive. Note that I'm
> more interested in estimated 8086 speed. Obviously "native" speed is less
> noticeable.
>

I am also interested in those benchmarks. But don't really have a machine to test it. Beside maybe HP 200 LX, but that's 80186 class machine.

It does have some sense that a86 is faster. It's likely written in assembly. The other assemblers you compared against are written in C.

I am thinking aloud: you might get better result with those by trying to compile them with a different compiler if the source is not too modern. Or with modern DOS compilers with optimization options (GCC-IA16?). That might make them faster.

rr

Homepage E-mail

Berlin, Germany,
02.05.2026, 16:00

@ bocke

testing speed of DOS assemblers under djl's 8086 DOS emulator

> It does have some sense that a86 is faster. It's likely written in
> assembly. The other assemblers you compared against are written in C.

a72 / ra is written in itself (assembler).

> I am thinking aloud: you might get better result with those by trying to
> compile them with a different compiler if the source is not too modern. Or
> with modern DOS compilers with optimization options (GCC-IA16?). That might
> make them faster.

It is very unlikely, that this will bring nasm16 down from 6 minutes (= 360 seconds) to 5 seconds. That would be 72 times faster.

---
Forum admin

bocke

02.05.2026, 20:52

@ rr

testing speed of DOS assemblers under djl's 8086 DOS emulator

> a72 / ra is written in
> itself (assembler).
>

I stand corrected. :)

Well a86 has been in development since mid 80s. It does make sense to be better optimizied.

> It is very unlikely, that this will bring nasm16 down from 6 minutes (= 360
> seconds) to 5 seconds. That would be 72 times faster.

I never claimed it would. :)

I just said that it might increase the speed. How much? I don't know if it will even be noticable. But it's worth exploring as there is some potential for optimization there.

To be honest a minute or two is not that bad. 6 minutes is a lot. But 3-4 minutes is also an improvement from 6.

That's what I was going for.

Khusraw

E-mail

Bucharest, Romania,
03.05.2026, 12:56

@ Rugxulo

testing speed of DOS assemblers under djl's 8086 DOS emulator

> I'm on the wrong machine right now, so I don't have precise benchmarks. And
> I tested the emulator under OpenBSD (i386) on a jump drive. Note that I'm
> more interested in estimated 8086 speed. Obviously "native" speed is less
> noticeable.
>
> In order of fastest to slowest assemblers I tested:
>
> * A86 (super fast) -- 5 secs
> * as86 (from bcc/dev86) -- 50 secs.
> * a72 / ra -- 1min20 or 1min40
> * wasmr or jwasmr -- 4min
> * mininasm or tinyasm -- 5min
> * nasm16 -- 6min

Could you please test the speed of the one at the link below too? I'm asking because, unfortunately, at present I can't do it myself.

https://github.com/tinashh2000/asmpp

---
Glory to God for all things

bocke

07.05.2026, 13:33

@ bocke

testing speed of DOS assemblers under djl's 8086 DOS emulator

> I am also interested in those benchmarks. But don't really have a machine
> to test it. Beside maybe HP 200 LX, but that's 80186 class machine.
>

I didn't write the reason. I am considering getting Atari Portfolio. 80c88 with 128KB of which ~32kb is by default used as a ram disk so available memory is a bit more than 64kb realistically.

A86 was the only assembler I've seen used on the platform itself (searching posts on PoFo and PoFo file archives). It seems it's fast and uses a little memory.

The README advertises that it's very speedy (noticeably faster than MASM). According to Rugxulo's testing that seems to be true. The biggest problem is that it's shareware with some specific terms of unregistered use.

RayeR

Homepage

CZ,
07.05.2026, 15:38

@ bocke

testing speed of DOS assemblers under djl's 8086 DOS emulator

> I didn't write the reason. I am considering getting Atari Portfolio. 80c88
> with 128KB of which ~32kb is by default used as a ram disk so available
> memory is a bit more than 64kb realistically.

Yes I rember that I also used a86 on atari portfolio but as my source file grew to some 10-20kB it became anoyingly slow...

---
DOS gives me freedom to unlimited HW access.

Rugxulo

Homepage

Usono,
08.05.2026, 04:39
(edited by Rugxulo, 08.05.2026, 04:49)

@ Khusraw

testing speed of DOS assemblers under djl's 8086 DOS emulator

> > I tested the emulator under OpenBSD (i386) on a jump drive. Note that
> I'm more interested in estimated 8086 speed.
> >
> > In order of fastest to slowest assemblers I tested:
>
> Could you please test the speed of the one at the link below too? I'm
> asking because, unfortunately, at present I can't do it myself.
>
> https://github.com/tinashh2000/asmpp

Okay, I did grab AP.EXE 24.02 the other day and finally tested it more yesterday.

It does work on native DOS, but ... djl's NTVDM doesn't handle it. He admits he has some gaps in emulation and only tested common instructions emitted by compilers. So under the emulator I can't even get a help screen. (Anything out of the ordinary could be suspect, and writing in pure assembly definitely brings out atypical uses.)

Just to be clear, here's what I do (in native FreeDOS):


rexx invwords.rex
rexx fixsizes.rex
sed -e "/^ *A[sS][sS]/d" -e "/DS:/s///" fixsizes.tmp >inv.app
ap.exe /jo inv
crc32 inv.com
REM ... should say 9A476DE7 , same as JWasm or WASM ...


EDIT: Under DOSBox-X (fast 486), it does assemble in under 5 seconds.

bocke

08.05.2026, 14:49

@ Rugxulo

testing speed of DOS assemblers under djl's 8086 DOS emulator

I am really curious how you convert the source syntax. AFAIK, all the assemblers have their unique quirks and syntax can differ.

bocke

08.05.2026, 15:22

@ RayeR

testing speed of DOS assemblers under djl's 8086 DOS emulator

> > I didn't write the reason. I am considering getting Atari Portfolio.
> 80c88
> > with 128KB of which ~32kb is by default used as a ram disk so available
> > memory is a bit more than 64kb realistically.
>
> Yes I rember that I also used a86 on atari portfolio but as my source file
> grew to some 10-20kB it became anoyingly slow...

Oh, thanx for the info.

I actually found your old PoFo site. Seems to be from around ~2000. Very informative.

Also, although the directory script doesn't work anymore, all the files are still there. I used IA web archive to find direct links of the files.

Rugxulo

Homepage

Usono,
09.05.2026, 09:58

@ bocke

testing speed of DOS assemblers under djl's 8086 DOS emulator

> I am really curious how you convert the source syntax. AFAIK, all the
> assemblers have their unique quirks and syntax can differ.

I'm not using a formal grammar parser generator or anything complex like that. Usually it's just me editing a Sed script.
(I also often went out of my way to avoid any dependency on Sed at all by using normal programming languages like Pascal or REXX.)


@echo off
REM ASM++ (African Assembler) 24.02

::#--- fix1.sed begins ---
:: /^$/d
:: /^;/d
:: s/ *;.*//
:: s/^ *//
:: /^A[sS][sS][uU][mM][eE]/d
:: /^D[BW] /b
:: / D[BWD] /{
:: h
:: s/^\([A-Z][^ ]*\)[ ] *DB .*/s, \\[\1\\], byte\&,/w fix2.sed
:: g
:: b
:: }
:: /^[A-Z][^ ]*:/{
:: s//&\n/
:: P
:: D
:: }
:: s/^ *//
:: /^LEA /{
:: s/LEA \(.*\),/MOV \1,OFFSET /
:: b
:: }
:: /^MOV /{
:: /,O[fF]/{
:: s/\[0\]//
:: b
:: }
:: /Word Ptr /s///
:: /40:/s///
:: }
:: /[+]BX/s//][BX/
:: /\[[0-9]\]/s/\([A-Z][a-zA-Z][a-zA-Z][a-zA-Z0-9]*\)\(\[[0-9]\]\)/[\1]\2/
:: s/^\([ID][NE]C\)[ ] *\([A-Z][A-Za-z][A-Za-z][^ ]*\)/\1 [\2]/
:: /,/{
:: s/\([A-Z][a-zA-Z][a-zA-Z][a-zA-Z0-9]*\),/[\1],/
:: s/,\([A-Z][a-zA-Z][a-zA-Z][^ ]*\)/,[\1]/
:: }
:: /^RemoveNewInt9[ ] *PROC/,/^DrawBunkers[ ] *PROC/s/\[\([^0]\)/[cs:\1/
::#--- fix1.sed ends ---

if not exist invaders.asm goto end
if not exist %0 %0.bat %1

if "%SED%"=="" set SED=sed

echo.
echo %%SED%% = '%SED%'
echo.

%SED% -n -e "/\.sed begins ---/,/ ends ---$/s/^::[ ] *//w fix1.sed" %0
if not exist fix1.sed goto end
%SED% -f fix1.sed invaders.asm | %SED% -e "/\[/!b" -f fix2.sed >invap.app

ap.exe /jo invap
if not exist invap.com goto end

echo.
echo invap.com       9A476DE7
crc32 invap.com
echo.

if "%1"=="notclean" goto end
del fix?.sed >NUL
del invap.app >NUL

:end
if "%SED%"=="sed" set SED=

Rugxulo

Homepage

Usono,
10.05.2026, 05:38

@ bocke

testing speed of DOS assemblers under djl's 8086 DOS emulator

> > I am also interested in those benchmarks. But don't really have a
> machine
> > to test it. Beside maybe HP 200 LX, but that's 80186 class machine.
>
> I didn't write the reason. I am considering getting Atari Portfolio. 80c88
> with 128KB of which ~32kb is by default used as a ram disk so available
> memory is a bit more than 64kb realistically.

Under DOSBox-X, by default it only works with "cputype" of 386 or above (e.g. auto). Trying "8086" doesn't work. I also tested 8086tinyplus (Win32), but it hangs.

I went back to find a quick fix by hacking the source code, so I made a quick diff. Now AP.EXE runs at least under "80186" cputype (DOSBox-X) or 8086tinyplus (quasi 186). But DOSBox-X "8086" still doesn't like it, dunno.

8086tinyplus runs my .BAT (Sed script(s) plus AP.EXE) in 99 secs. For testing the assembler speed itself, it assembles Sed's modified assembly output of PSR Invaders in 12 secs (using default 4.77 Mhz speed, which is probably not 100% accurate).

Feel free to apply this patch, reassemble (N.B. use "/jo"), and benchmark yourself. EDIT: You'll probably need "patch -p1 -l -i ap186.dif" (N.B. "-l" to ignore whitespace/tab differences).


diff -rU1 asmpp.old/ap.asm asmpp/ap.asm
--- asmpp.old/ap.asm    2024-02-07 02:11:12 +0000
+++ asmpp/ap.asm        2026-05-09 21:12:06 +0000
@@ -2,3 +2,3 @@
 .RADIX 10
-;.8086
+.8086
 
Binary files asmpp.old/ap.exe and asmpp/ap.exe differ
diff -rU1 asmpp.old/asm16.asm asmpp/asm16.asm
--- asmpp.old/asm16.asm 2024-02-07 02:11:12 +0000
+++ asmpp/asm16.asm     2026-05-09 21:25:16 +0000
@@ -38,4 +38,6 @@
         CMP     AL,3
-        JZ      AssembleDoneIPOK
+        JZ      AssembleDoneIPOK2
         JMP     ProgIPOverflow
+AssembleDoneIPOK2:
+        JMP     AssembleDoneIPOK
 
@@ -112,10 +114,13 @@
         CMP     BYTE [AddrMode],4
-        JB      AssembleProgIPOverflow
+        JB      AssembleProgIPOverflow2
         ADD     WORD [ProgIP][4],1
         ADC     WORD [ProgIP][6],0
-        JC      AssembleProgIPOverflow
+        JC      AssembleProgIPOverflow2
         JMP     AssembleDoneIPOK
+AssembleProgIPOverflow2:
+        JMP     AssembleProgIPOverflow
+
 AssUpdateEIP:
         CMP     BYTE [AddrMode],1
-        JZ      AssembleProgIPOverflow
+        JZ      AssembleProgIPOverflow2
         ADD     WORD [ProgIP][2],1
@@ -123,2 +128,4 @@
         JMP     AssembleDoneIPOK
+AssembleExtraChars2:
+        JMP     AssembleExtraChars
 
@@ -127,3 +134,3 @@
         CMP     AL,EndOfLine
-        JNZ     AssembleExtraChars
+        JNZ     AssembleExtraChars2
 AssembleFile:
diff -rU1 asmpp.old/direcw16.asm asmpp/direcw16.asm
--- asmpp.old/direcw16.asm      2024-02-07 02:11:12 +0000
+++ asmpp/direcw16.asm  2026-05-09 21:26:40 +0000
@@ -749,4 +749,6 @@
         CALL    GetStrFile
+        .386
         CMP     DI,OFFSET StrBuffer
         JZ      IncludeInvalidFile
+        .8086
         XOR     AL,AL
@@ -804,4 +806,6 @@
         CALL    GetStrFile
+        .386
         CMP     DI,OFFSET StrBuffer
         JZ      OptionStubInvalidFile
+        .8086
         MOV     AL,0
@@ -1115,2 +1119,2 @@
 
-DirectivesWEnd:
\ No newline at end of file
+DirectivesWEnd:
diff -rU1 asmpp.old/nstrctns/sseavx/avxkrrm.asm asmpp/nstrctns/sseavx/avxkrrm.asm
--- asmpp.old/nstrctns/sseavx/avxkrrm.asm       2024-02-07 02:11:12 +0000
+++ asmpp/nstrctns/sseavx/avxkrrm.asm   2026-05-09 21:26:14 +0000
@@ -175,4 +175,6 @@
 
+.386
                CMP BYTE [NextChar], Comma
-               JZ      AVX_GetParams_Comma
+               JZ AVX_GetParams_Comma
+.8086
 
@@ -196,4 +198,6 @@
 
+.386
                CMP AL, OpenCBracket
                JZ      AVX_GetParams_CurlyBracket
+.8086
                CMP     AL, Keyword
@@ -209,4 +213,6 @@
 CALL _PrintChar, WORD ('_')
+.386
     CMP AL,EndOfLine
     JZ  AVX_GetParams_Done_1
+.8086
 CALL _PrintChar, WORD ('=')
@@ -352,4 +358,6 @@
 ;              JZ AVX_GetParams_Curly_Len4
+.386
                CMP CX, 1
                JZ AVX_GetParams_Curly_Len1
+.8086
 

Khusraw

E-mail

Bucharest, Romania,
12.05.2026, 12:29
(edited by Khusraw, 12.05.2026, 13:00)

@ Rugxulo

testing speed of DOS assemblers under djl's 8086 DOS emulator

> Okay, I did grab AP.EXE 24.02 the other day and finally tested it
> more yesterday.

Thank you very much!

> It does work on native DOS, but ... djl's NTVDM doesn't handle it. He
> admits he has some gaps in emulation and only tested common instructions
> emitted by compilers. So under the emulator I can't even get a help screen.
> (Anything out of the ordinary could be suspect, and writing in pure
> assembly definitely brings out atypical uses.)

I found some spare time to build David Lee's NTVDM and run the test myself. The problem you noted doesn't lie with the emulator (which, BTW, seems to be a really good piece of software), but with the assembler (which, besides using a PUSH immediate right at the beginning, also uses NEAR conditional jumps, a 386+ instruction, as you know). Anyway, what I was actually interested in was finding a CC0 or equivalent and simple 8086 DOS emulator, and so far, I'm satisfied with what I've seen from this NTVDM.

---
Glory to God for all things

bocke

16.05.2026, 00:27
(edited by Rugxulo, 16.05.2026, 05:05)

@ Rugxulo

testing speed of DOS assemblers under djl's 8086 DOS emulator

> I'm not using a formal grammar parser generator or anything complex like
> that. Usually it's just me editing a Sed script.
> (I also often went out of my way to avoid any dependency on Sed at all by
> using normal programming languages like Pascal or REXX.)

This is actually pretty good use of SED. Kudos to you. ;-)

And thanx for posting it publically.

Rugxulo

Homepage

Usono,
16.05.2026, 05:05

@ bocke

testing speed of DOS assemblers under djl's 8086 DOS emulator

Previously I seemed to omit to test two others, but today I did.

Wolfware (wasm.com) takes (estimated 8086 speed) 42 seconds under djl's ntvdm under OpenBSD. It's actually 20% slower than that if I don't remove comments and most leading line whitespace first. That's something I've not always cared about because I don't normally test under slow emulators. Just FYI.

MASM 5.10 from the MS-DOS 4 release takes 55 seconds. The link time is negligible.

Back to the board
Thread view  Mix view  Order
23359 Postings in 2199 Threads, 406 registered users (0 online)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum