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 ---------------------------