Replaced all the slow 'loop' instructions.

This commit is contained in:
stainless
2001-09-07 23:13:03 +00:00
parent 7a8f06959a
commit 8d3423737e
5 changed files with 133 additions and 45 deletions

View File

@@ -661,7 +661,9 @@ NEWSYM getstring
.nz .nz
mov [edi],al mov [edi],al
inc edi inc edi
loop .nz ; loop .nz
dec ecx
jnz .nz
xor ebx,ebx xor ebx,ebx
.tryinputagain .tryinputagain
; input string ; input string
@@ -712,7 +714,9 @@ NEWSYM getstring
dec esi dec esi
mov [es:edi],al mov [es:edi],al
sub edi,2 sub edi,2
loop .okloop ; loop .okloop
dec ecx
jnz .okloop
inc bl inc bl
jmp .tryinputagain jmp .tryinputagain
.trybackspace .trybackspace
@@ -735,7 +739,9 @@ NEWSYM getstring
dec esi dec esi
mov [es:edi],al mov [es:edi],al
sub edi,2 sub edi,2
loop .okloop2 ; loop .okloop2
dec ecx
jnz .okloop2
.noloop .noloop
mov dl,[clearchar] mov dl,[clearchar]
mov byte[es:edi],dl mov byte[es:edi],dl
@@ -774,7 +780,9 @@ NEWSYM modify
sub byte[wx],4 sub byte[wx],4
add byte[wx2],4 add byte[wx2],4
pop ecx pop ecx
loop .loopa ; loop .loopa
dec ecx
jnz .loopa
push es push es
mov ax,[selcB800] mov ax,[selcB800]
mov es,ax mov es,ax
@@ -785,7 +793,9 @@ NEWSYM modify
.loopb .loopb
lodsb lodsb
stosw stosw
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
mov edi,12*160+29*2 mov edi,12*160+29*2
mov esi,.message2 mov esi,.message2
mov ecx,18 mov ecx,18
@@ -793,7 +803,9 @@ NEWSYM modify
.loopc .loopc
lodsb lodsb
stosw stosw
loop .loopc ; loop .loopc
dec ecx
jnz .loopc
mov edi,14*160+29*2 mov edi,14*160+29*2
mov esi,.message3 mov esi,.message3
mov ecx,18 mov ecx,18
@@ -801,7 +813,9 @@ NEWSYM modify
.loopd .loopd
lodsb lodsb
stosw stosw
loop .loopd ; loop .loopd
dec ecx
jnz .loopd
; set cursor to (10,50) ; set cursor to (10,50)
mov ah,02h mov ah,02h
mov bl,0 mov bl,0
@@ -947,7 +961,9 @@ NEWSYM SPCmodify
sub byte[wx],4 sub byte[wx],4
add byte[wx2],4 add byte[wx2],4
pop ecx pop ecx
loop .loopa ; loop .loopa
dec ecx
jnz .loopa
push es push es
mov ax,[selcB800] mov ax,[selcB800]
mov es,ax mov es,ax
@@ -958,7 +974,9 @@ NEWSYM SPCmodify
.loopb .loopb
lodsb lodsb
stosw stosw
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
mov edi,12*160+30*2 mov edi,12*160+30*2
mov esi,.message2 mov esi,.message2
mov ecx,18 mov ecx,18
@@ -966,7 +984,9 @@ NEWSYM SPCmodify
.loopc .loopc
lodsb lodsb
stosw stosw
loop .loopc ; loop .loopc
dec ecx
jnz .loopc
mov edi,14*160+30*2 mov edi,14*160+30*2
mov esi,.message3 mov esi,.message3
mov ecx,18 mov ecx,18
@@ -974,7 +994,9 @@ NEWSYM SPCmodify
.loopd .loopd
lodsb lodsb
stosw stosw
loop .loopd ; loop .loopd
dec ecx
jnz .loopd
; set cursor to (10,50) ; set cursor to (10,50)
mov ah,02h mov ah,02h
mov bl,0 mov bl,0
@@ -1117,7 +1139,9 @@ NEWSYM SPCbreakpoint
.loopb .loopb
lodsb lodsb
stosw stosw
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
; set cursor to (10,50) ; set cursor to (10,50)
mov ah,02h mov ah,02h
mov bl,0 mov bl,0
@@ -1242,7 +1266,9 @@ NEWSYM breakpoint
.loopb .loopb
lodsb lodsb
stosw stosw
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
; set cursor to (10,50) ; set cursor to (10,50)
mov ah,02h mov ah,02h
mov bl,0 mov bl,0
@@ -1345,7 +1371,9 @@ NEWSYM trace
.loopb .loopb
lodsb lodsb
stosw stosw
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
mov edi,12*160+52*2 mov edi,12*160+52*2
mov al,32 mov al,32
mov ah,79 mov ah,79
@@ -1434,7 +1462,9 @@ NEWSYM traceops
.loopb .loopb
lodsb lodsb
stosw stosw
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
xor eax,eax xor eax,eax
xor ebx,ebx xor ebx,ebx
xor ecx,ecx xor ecx,ecx
@@ -1528,7 +1558,9 @@ NEWSYM SPCbreakops
.loopb .loopb
lodsb lodsb
stosw stosw
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
xor eax,eax xor eax,eax
xor ebx,ebx xor ebx,ebx
xor ecx,ecx xor ecx,ecx
@@ -1624,7 +1656,9 @@ NEWSYM breakatsign
.loopb .loopb
lodsb lodsb
stosw stosw
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
xor eax,eax xor eax,eax
xor ebx,ebx xor ebx,ebx
xor ecx,ecx xor ecx,ecx
@@ -1726,7 +1760,9 @@ NEWSYM breakatsignlog
.loopb .loopb
lodsb lodsb
stosw stosw
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
pushad pushad
mov ax,ds mov ax,ds
@@ -2077,7 +2113,9 @@ NEWSYM breakops
.loopb .loopb
lodsb lodsb
stosw stosw
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
xor eax,eax xor eax,eax
xor ebx,ebx xor ebx,ebx
xor ecx,ecx xor ecx,ecx
@@ -3593,7 +3631,9 @@ SECTION .text
stosb stosb
pop ax pop ax
shl ax,4 shl ax,4
loop .loopa ; loop .loopa
dec ecx
jnz .loopa
pop ecx pop ecx
ret ret
@@ -3611,7 +3651,9 @@ SECTION .text
stosb stosb
pop ax pop ax
shl ax,4 shl ax,4
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
pop ecx pop ecx
ret ret
@@ -3808,7 +3850,9 @@ NEWSYM showdd
.loopa .loopa
lodsb lodsb
stosw stosw
loop .loopa ; loop .loopa
dec ecx
jnz .loopa
add edi,6 add edi,6
; check if exceeded limit ; check if exceeded limit
inc dx inc dx
@@ -4190,7 +4234,9 @@ NEWSYM nextspcopcode
stosb stosb
pop ax pop ax
shl ax,4 shl ax,4
loop .loopa ; loop .loopa
dec ecx
jnz .loopa
pop ecx pop ecx
sub ecx,2 sub ecx,2
ret ret
@@ -4209,7 +4255,9 @@ NEWSYM nextspcopcode
stosb stosb
pop ax pop ax
shl ax,4 shl ax,4
loop .loopb ; loop .loopb
dec ecx
jnz .loopb
pop ecx pop ecx
ret ret

View File

@@ -596,7 +596,9 @@ NEWSYM Get_Dir
.noslash .noslash
mov [eax],dl mov [eax],dl
inc eax inc eax
loop .loop ; loop .loop
dec ecx
jnz .loop
popad popad
push edx push edx
mov ah,19h mov ah,19h
@@ -999,7 +1001,9 @@ NEWSYM vidpastecopyscr ; GUI screen render
mov bx,[GUICPC+ebx*2] mov bx,[GUICPC+ebx*2]
mov [eax+edx*2],bx mov [eax+edx*2],bx
dec edx dec edx
loop .loop ; loop .loop
dec ecx
jnz .loop
.no16bconv .no16bconv
popad popad
jmp DosDrawScreenB jmp DosDrawScreenB

View File

@@ -178,7 +178,9 @@ NEWSYM GetCoords
jz .XAxis jz .XAxis
inc dword[JoyX] inc dword[JoyX]
inc dword[JoyY] inc dword[JoyY]
loop .loopa ; loop .loopa
dec ecx
jnz .loopa
mov byte [JoyExists], 0 mov byte [JoyExists], 0
mov dword[JoyX],0 mov dword[JoyX],0
mov dword[JoyY],0 mov dword[JoyY],0
@@ -191,7 +193,9 @@ NEWSYM GetCoords
nop nop
inc dword[JoyY] inc dword[JoyY]
nop nop
loop .YAxis ; loop .YAxis
dec ecx
jnz .YAxis
mov byte [JoyExists], 0 mov byte [JoyExists], 0
mov dword[JoyX],0 mov dword[JoyX],0
mov dword[JoyY],0 mov dword[JoyY],0
@@ -205,7 +209,9 @@ NEWSYM GetCoords
nop nop
inc dword[JoyX] inc dword[JoyX]
nop nop
loop .XAxis ; loop .XAxis
dec ecx
jnz .XAxis
mov byte [JoyExists], 0 mov byte [JoyExists], 0
mov dword[JoyX],0 mov dword[JoyX],0
mov dword[JoyY],0 mov dword[JoyY],0

View File

@@ -141,7 +141,9 @@ NEWSYM ModemSendChar
in al,dx in al,dx
test al,00100000b test al,00100000b
jnz .transokay jnz .transokay
loop .loop ; loop .loop
dec ecx
jnz .loop
xor al,al xor al,al
pop ebx pop ebx
pop edx pop edx

View File

@@ -259,13 +259,13 @@ NEWSYM DosDrawScreenB
ScreenShow: ScreenShow:
cmp byte[debugdisble],0 cmp byte[debugdisble],0
je .debug je .debug
cmp byte[cvidmode],2
je near copymodeq
.debug
cmp byte[cvidmode],0 cmp byte[cvidmode],0
je near copymodeq224 je near copymodeq224
cmp byte[cvidmode],1 cmp byte[cvidmode],1
je near copymodeq240 je near copymodeq240
cmp byte[cvidmode],2
je near copymodeq
.debug
cmp byte[cvidmode],3 cmp byte[cvidmode],3
je near copymodex je near copymodex
cmp byte[cvidmode],4 cmp byte[cvidmode],4
@@ -1620,7 +1620,9 @@ NEWSYM draweagle
mov [es:edi],eax mov [es:edi],eax
add edx,4 add edx,4
add edi,4 add edi,4
loop .copyloop ; loop .copyloop
dec ecx
jnz .copyloop
xor eax,eax xor eax,eax
; process EAGLE on the upper line ; process EAGLE on the upper line
@@ -1694,7 +1696,9 @@ NEWSYM draweagle
mov [es:edi],eax mov [es:edi],eax
add edx,4 add edx,4
add edi,4 add edi,4
loop .copyloop2 ; loop .copyloop2
dec ecx
jnz .copyloop2
xor eax,eax xor eax,eax
sub esi,256 ; move esi back to left side of the line sub esi,256 ; move esi back to left side of the line
@@ -2295,7 +2299,9 @@ NEWSYM ConvertToAFormat
or ebx,eax or ebx,eax
mov [esi],ebx mov [esi],ebx
add esi,4 add esi,4
loop .crgbloop2 ; loop .crgbloop2
dec ecx
jnz .crgbloop2
add esi,64 add esi,64
dec dl dec dl
jnz .crgbloop jnz .crgbloop
@@ -2314,6 +2320,8 @@ NEWSYM ConvertToAFormat
por mm0,mm1 por mm0,mm1
movq [esi],mm0 movq [esi],mm0
add esi,8 add esi,8
; loop .crgbloop2m
dec ecx
loop .crgbloop2m loop .crgbloop2m
add esi,64 add esi,64
dec dl dec dl
@@ -2339,7 +2347,9 @@ NEWSYM UnConvertToAFormat
or ebx,eax or ebx,eax
mov [esi],ebx mov [esi],ebx
add esi,4 add esi,4
loop .crgbloop2 ; loop .crgbloop2
dec ecx
jnz .crgbloop2
add esi,64 add esi,64
dec dl dec dl
jnz .crgbloop jnz .crgbloop
@@ -3871,6 +3881,8 @@ Process2xSaI:
.nextb .nextb
mov dword[ebx],0FFFFFFFFh mov dword[ebx],0FFFFFFFFh
add ebx,4 add ebx,4
; loop .nextb
dec ecx
loop .nextb loop .nextb
pop ebx pop ebx
jmp .returninterp jmp .returninterp
@@ -3935,7 +3947,9 @@ Process2xSaI:
movq [es:eax],mm0 movq [es:eax],mm0
add edx,8 add edx,8
add eax,8 add eax,8
loop .s2xsailoop ; loop .s2xsailoop
dec ecx
jnz .s2xsailoop
mov edx,[spritetablea] mov edx,[spritetablea]
add edx,512+1280 add edx,512+1280
add eax,128*2 add eax,128*2
@@ -3945,7 +3959,9 @@ Process2xSaI:
movq [es:eax],mm0 movq [es:eax],mm0
add edx,8 add edx,8
add eax,8 add eax,8
loop .s2xsailoop2 ; loop .s2xsailoop2
dec ecx
jnz .s2xsailoop2
jmp .dones2xsai jmp .dones2xsai
%endif %endif
@@ -3964,7 +3980,9 @@ Process2xSaI:
.loop .loop
mov dword[es:edi],0 mov dword[es:edi],0
add edi,4 add edi,4
loop .loop ; loop .loop
dec ecx
jnz .loop
emms emms
pop es pop es
ret ret
@@ -4682,7 +4700,9 @@ NEWSYM interpolate640x480x16b
add esi,2 add esi,2
add edi,4 add edi,4
add edx,4 add edx,4
loop .a ; loop .a
dec ecx
jnz .a
add esi,66 add esi,66
add edi,130*2 add edi,130*2
.loopb .loopb
@@ -4713,7 +4733,9 @@ NEWSYM interpolate640x480x16b
add esi,2 add esi,2
add edi,4 add edi,4
add edx,4 add edx,4
loop .c ; loop .c
dec ecx
jnz .c
add edi,130*2 add edi,130*2
mov edx,[spritetablea] mov edx,[spritetablea]
mov ecx,255 mov ecx,255
@@ -4722,7 +4744,9 @@ NEWSYM interpolate640x480x16b
mov [es:edi],eax mov [es:edi],eax
add edx,4 add edx,4
add edi,4 add edi,4
loop .d ; loop .d
dec ecx
jnz .d
inc dword[InterPtr] inc dword[InterPtr]
add esi,66 add esi,66
add edi,130*2 add edi,130*2
@@ -5708,7 +5732,9 @@ NEWSYM getcopyvesa2320x240x16b
mov [esi],ax mov [esi],ax
add edi,2 add edi,2
add esi,2 add esi,2
loop .loop ; loop .loop
dec ecx
jnz .loop
add edi,128 add edi,128
add esi,64 add esi,64
mov ecx,256 mov ecx,256
@@ -5737,7 +5763,9 @@ ConvertImageDatared10:
or ax,dx or ax,dx
mov [esi],ax mov [esi],ax
add esi,2 add esi,2
loop .loop ; loop .loop
dec ecx
jnz .loop
add esi,64 add esi,64
mov ecx,256 mov ecx,256
dec ebx dec ebx