[comp.os.msdos.programmer] Find the bug!

37KGLLQ@CMUVM.BITNET (Tony Papadimitriou) (08/24/90)

Hello all,

While writing a program I came across what may indicate a bug in one of
several places.  If the following program is run under MS-DOS 4.01 an
unexpected output is displayed.  If, however, it is run under DesqView 386
ver. 2.25 (running on top of DOS 4.01) the program works as expected.

So, where is the bug?  Is it in my code, in DOS 4.01, in Phoenix 386 BIOS
PLUS ver. 1.10.00, or in DesqView 386 2.25 ???

This is only part of a much larger program.  I have kept the model the same.
I used Borland's TASM and TLINK to produce the .EXE file.

------------------------ Cut Here ---------------------------
           IDEAL
           MODEL   COMPACT

           DATASEG
buffer     db      256 dup(?)

           CODESEG

proc       I_write
           mov     ax,@data
           mov     ds,ax
           mov     es,ax
           mov     di,offset buffer
           mov     cx,256
           mov     al,0
@@1:       stosb
           inc     al
           loop    @@1
; Under DOS not all 256 characters are written, but
; under DesqView 386 2.25 all 256 are written as expected.
           mov     ax,4000h
           mov     bx,1
           mov     dx,offset buffer
           mov     cx,256
           int     21h                 ; This is where the problem occurs
@@exit:    mov     ax,4c00h
           int     21h
endp       I_write
           end
------------------------ Cut Here ---------------------------