ripsaw8080, sorry but my asm and IBM PC architecture knowledge is very limited. This is exactly what DosBox executes (I have deleted the registers and flags values from these log lines):
...
01C2:00002B70 mov ds,ax
01C2:00002B72 mov ax,1605
01C2:00002B75 int 2F
01C2:0000122C pushf
01C2:0000122D test byte cs:[0FC0],03 cs:[0FC0]=3001
01C2:00001233 jne 00001243 ($+e) (down)
01C2:00001243 popf
01C2:00001244 jmp far word cs:[0C3F] cs:[0C3F]=15C0
F000:000015C0 callback 002E (DOS Int 2f)
F000:000015C4 iret
01C2:00002B77 mov cs:[2B5B],si cs:[2B5B]=0000
01C2:00002B7C mov cs:[2B5D],ds cs:[2B5D]=0000
01C2:00002B81 pop es
01C2:00002B82 pop ds
01C2:00002B83 ret
01C2:00002AB8 call 00002B84 ($+c9)
01C2:00002B84 cli
01C2:00002B85 push ds
01C2:00002B86 push es
01C2:00002B87 xor ax,ax
01C2:00002B89 call far word cs:[2B5B] cs:[2B5B]=0000
0000:00000000 pusha
0000:00000001 adc [bx+si],al ds:[0000]=0000
0000:00000003 lock or [bx+si],al ds:[0000]=0000
0000:00000004 or [bx+si],al ds:[0000]=0000
0000:00000006 jo 00000008 ($+0) (no jmp)
0000:00000008 or [bx+si],al ds:[0000]=0000
0000:0000000A jo 0000000C ($+0) (no jmp)
0000:0000000C or [bx+si],al ds:[0000]=0000
0000:0000000E jo 00000010 ($+0) (no jmp)
0000:00000010 or [bx+si],al ds:[0000]=0000
0000:00000012 jo 00000014 ($+0) (no jmp)
0000:00000014 pusha
0000:00000015 adc [bx+si],al ds:[0000]=0000
0000:00000017 lock pusha
0000:00000018 pusha
0000:00000019 adc [bx+si],al ds:[0000]=0000
0000:0000001B lock pusha
0000:0000001C pusha
0000:0000001D adc [bx+si],al ds:[0000]=0000
0000:0000001F lock movsw
0000:00000020 movsw
0000:00000021 inc byte [bx+si] ds:[0002]=0000
0000:00000023 lock arpl [bp+di],bx ss:[0311]=152A
0000:00000024 arpl [bp+di],bx ss:[0311]=152A
F000:00001060 callback 0003 (default)
F000:00001064 iret
And the last three lines repeat in a loop... Can you tell me something? Thanks a lot