16 bit code messing with XP doskey macros

Started by skywalker, August 29, 2005, 10:24:12 PM

Previous topic - Next topic

skywalker

I'd like to fix this so it doesn't blow out my doskey macros loaded in WinXP.
After it's run from in a DOS box, the macros don't work anymore.
It's a snowstorm where the snow "falls up."


Thanks.

start:       
        jmp  begin

eoh          db           ' SNOW STORM '


begin:
        mov     ax,13h  ; video mode
        int     10h
        mov     bl,2    ; foreground color, bright red = 4
        push    0a000h
        pop     es
        mov     bh,14   ; this contains count of chars to be put onscreen
                        ; (this matches what is in eoh)
        mov     di,30508
        mov     si,offset eoh

nogeenchar:
       
        mov     cl,ds:[si]
        inc     si
        push    si
        push    di
        push    bx
        push    ds
        push    0f000h
        pop     ds
        mov     si,0fa6eh
        shl     cx,3
        add     si,cx
        mov     cx,08

nogeenrow:
       
        lodsb
        mov     ah,al
        mov     dl,10000000b

nogeenpixel:
       
        mov     al,ah
        and     al,dl
        jz      nietneerzetten
        mov     al,bl
        stosb
        dec     di

nietneerzetten:
       
        inc     di
        shr     dl,1
        jnz     nogeenpixel
        add     di,312
        dec     cx
        jnz     nogeenrow
        pop     ds
        pop     bx
        pop     di
        pop     si
        add     di,8
        dec     bh
        jnz     nogeenchar
        xor     ax,ax
        push    ax

claudia:
        pop     ax
        inc     ax
        push    ax
        sub     di,bx
        add     di,ax
        add     di,cx
        and     di,0000001000000000b
        shr     di,9
        push    di
        mov     si,319  ;<----  ; Hier wordt de 'displacement' ingesteld
        mov     cl,3            ; eax =  n

sneeuwvlokje:                   ; ebx =  n
        add     ax,bp           ; ecx =  n
        add     ax,bx           ; edx =  n
        sub     ax,di           ; esi =  n <- die moet aangepast worden
        mov     bx,di           ; edi =  n
        or      bx,ax           ; ebp =  n
        not     ax              ; fs  =
        add     bx,dx           ; gs  =
        xor     ax,bx           ; ds  =
        add     al,ah           ; es  =
        mov     bp,ax
        test    bp,1
        jnz     pleuris
        not     bp
        shr     bp,1
pleuris:
        cmp     ax,319
        jna     gassen
        sub     ax,319
        jmp     pleuris
gassen:
        add     ax,63680
        mov     di,ax
        mov     ax,0a000h
        mov     es,ax
        mov     al,15
        stosb
        dec     cl
        jnz     sneeuwvlokje

        mov     cx,64000-319
        push    0a000h
        pop     es
        push    es
        pop     ds
        mov     ax,15
        pop     di

volgendepixel:
        mov     dl,ds:[si]      ;bx was si
        mov     bx,-319
        add     bx,di
        cmp     dl,15
        jne     klaar

nogeenrandommer:
        add     dx,cx
        xor     dx,di
        add     dl,dh
        and     dl,00000011b
        cmp     dl,3
        je      drie
        cmp     dl,2
        je      twee
        cmp     dl,1
        jne     nogeenrandommer
een:
        call    piaf
witte1:
        dec     bx
        call    piaf
witte2:
        dec     bx
        call    paf
        jne     klaar
        jmp     plop
twee:
        dec     bx
        call    piaf
witte3:
        inc     bx
        call    piaf
witte4:
        dec     bx
        dec     bx
        call    paf
        jne     klaar
        jmp     plop
drie:
        dec     bx
        dec     bx
        call    piaf
witte5:
        inc     bx
        call    piaf
witte6:
        inc     bx
        call    paf
        jne     klaar
        jmp     plop

ploep: 
        pop     bp

plop:   
        mov     ds:[si],ah
        mov     ds:[si-bx],al
klaar: 
        inc     si
        dec     cx
        jnz     volgendepixel
        in      al,60h
        cmp     al,01h


        jne     claudia
        mov     ax,03h
        int     10h
        pop     ax
        push    cs
        pop     ds
        ret

piaf   proc
        call    paf
        je      ploep
        ret
endp

paf   proc
        mov     dl,ds:[si-bx]
        cmp     dl,00
        ret
endp

end start

skywalker

Quote from: skywalker on August 29, 2005, 10:24:12 PM
I'd like to fix this so it doesn't blow out my doskey macros loaded in WinXP.
After it's run from in a DOS box, the macros don't work anymore.

Problem solved by going to full screen.