diff --git a/programs/demos/3dcube2/trunk/3DCUBE2.ASM b/programs/demos/3dcube2/trunk/3DCUBE2.ASM index f0fd4ce278..6c20583741 100644 --- a/programs/demos/3dcube2/trunk/3DCUBE2.ASM +++ b/programs/demos/3dcube2/trunk/3DCUBE2.ASM @@ -25,12 +25,31 @@ SCREEN_Y equ 200 include 'lang.inc' include '..\..\..\macros.inc' +;purge mov include 'ascl.inc' include 'ascgl.inc' START: +init_sin_cos: + finit + fldz + xor edi,edi + mov ecx,512 +isc_make: + fld st0 + fsincos + fmul [fixed_point_const] + fistp word [cos_table+edi] + fmul [fixed_point_const] + fistp word [sin_table+edi] + + fadd [inc_angle] + + add edi,2 + loop isc_make + fstp st0 +red: call draw_window - call init_sin_cos still: mov eax,11 @@ -76,9 +95,6 @@ main_loop: jmp still -red: - call draw_window - jmp still key: mov eax,2 mcall @@ -124,46 +140,37 @@ df_draw: mov ecx,3 mov edi,@@tx1 ;bp df_get_point: - xor bh,bh - mov bl,byte [esi] - shl bx,2 - mov ax,word [object_translated+bx] - mov word [edi],ax - mov ax,word [object_translated+bx+2] - mov word [edi+2],ax + movzx ebx, byte [esi] + movzx eax, word [object_translated + ebx*4] + stosd + movzx eax, word [object_translated + ebx*4 + 2] + stosd inc esi - add edi,4 dec ecx jnz df_get_point - mov ax,[@@ty1] - sub ax,[@@ty3] - mov bx,[@@tx2] - sub bx,[@@tx1] - imul bx - shl edx,16 - mov dx,ax - push edx - mov ax,[@@tx1] - sub ax,[@@tx3] - mov bx,[@@ty2] - sub bx,[@@ty1] - imul bx - shl edx,16 - mov dx,ax + mov eax,[@@ty1] + sub eax,[@@ty3] + mov ebx,[@@tx2] + sub ebx,[@@tx1] + imul ebx + push eax + mov eax,[@@tx1] + sub eax,[@@tx3] + mov ebx,[@@ty2] + sub ebx,[@@ty1] + imul ebx pop ebx - sub ebx,edx - or ebx,ebx + sub ebx,eax jge df_next - xor ah,ah - mov al,byte [si] + movzx eax, byte [esi] - mov [@@xcol],ax + mov [@@xcol], eax call filled_triangle df_next: - inc si + inc esi pop ecx dec ecx jnz df_draw @@ -178,7 +185,7 @@ clear_screen_buffer: mov ebx,scrbuf mov ecx,SCREEN_X*65536+SCREEN_Y mov edx,5*65536+22 - mov ax,7 + mov eax,7 mcall ;White background @@ -196,21 +203,22 @@ clear_screen_buffer: ;filled trangle procedure -@@tx1 dw 0 -@@ty1 dw 0 -@@tx2 dw 0 -@@ty2 dw 0 -@@tx3 dw 0 -@@ty3 dw 0 -@@xcol dw 0 +align 4 +@@tx1 dd 0 +@@ty1 dd 0 +@@tx2 dd 0 +@@ty2 dd 0 +@@tx3 dd 0 +@@ty3 dd 0 +@@xcol dd 0 -@@dx12 dw 0 -@@dx13 dw 0 -@@dx23 dw 0 +@@dx12 dd 0 +@@dx13 dd 0 +@@dx23 dd 0 filled_triangle: - mov ax,[@@xcol] ;trnsforming color + mov eax,[@@xcol] ;trnsforming color mov bl,al ;byte bbbggrrx mov dl,al ;to 3 byte mov dh,al ;bbbxxxxx ggxxxxxx rrxxxxxx @@ -234,185 +242,175 @@ no_bitup: shl eax,8 mov al,dl mov dword [@@rgb],eax - mov eax,0 ; for 16 bit instructions - mov ax,[@@ty1] - cmp ax,[@@ty3] + mov eax,[@@ty1] + cmp eax,[@@ty3] jb ft_check1 - xchg ax,[@@ty3] - mov [@@ty1],ax + xchg eax,[@@ty3] + mov [@@ty1],eax - mov ax,[@@tx1] - xchg ax,[@@tx3] - mov [@@tx1],ax + mov eax,[@@tx1] + xchg eax,[@@tx3] + mov [@@tx1],eax ft_check1: - mov ax,[@@ty2] - cmp ax,[@@ty3] + mov eax,[@@ty2] + cmp eax,[@@ty3] jb ft_check2 - xchg ax,[@@ty3] - mov [@@ty2],ax + xchg eax,[@@ty3] + mov [@@ty2],eax - mov ax,[@@tx2] - xchg ax,[@@tx3] - mov [@@tx2],ax + mov eax,[@@tx2] + xchg eax,[@@tx3] + mov [@@tx2],eax ft_check2: - mov ax,[@@ty1] - cmp ax,[@@ty2] + mov eax,[@@ty1] + cmp eax,[@@ty2] jb ft_check3 - xchg ax,[@@ty2] - mov [@@ty1],ax + xchg eax,[@@ty2] + mov [@@ty1],eax - mov ax,[@@tx1] - xchg ax,[@@tx2] - mov [@@tx1],ax + mov eax,[@@tx1] + xchg eax,[@@tx2] + mov [@@tx1],eax ft_check3: - mov bx,[@@ty2] - sub bx,[@@ty1] + mov ebx,[@@ty2] + sub ebx,[@@ty1] jnz ft_dx12_make - mov [@@dx12],word 0 + mov [@@dx12],dword 0 jmp ft_dx12_done ft_dx12_make: - mov ax,[@@tx2] - sub ax,[@@tx1] - shl ax,7 - cwd - idiv bx - mov [@@dx12],ax ; dx12 = (x2-x1)/(y2-y1) + mov eax,[@@tx2] + sub eax,[@@tx1] + shl eax,7 + cdq + idiv ebx + mov [@@dx12],eax ; dx12 = (x2-x1)/(y2-y1) ft_dx12_done: - mov bx,[@@ty3] - sub bx,[@@ty1] + mov ebx,[@@ty3] + sub ebx,[@@ty1] jnz ft_dx13_make - mov [@@dx13],word 0 + mov [@@dx13],dword 0 jmp ft_dx13_done ft_dx13_make: - mov ax,[@@tx3] - sub ax,[@@tx1] - shl ax,7 - cwd - idiv bx - mov [@@dx13],ax ; dx13 = (x3-x1)/(y3-y1) + mov eax,[@@tx3] + sub eax,[@@tx1] + shl eax,7 + cdq + idiv ebx + mov [@@dx13],eax ; dx13 = (x3-x1)/(y3-y1) ft_dx13_done: - mov bx,[@@ty3] - sub bx,[@@ty2] + mov ebx,[@@ty3] + sub ebx,[@@ty2] jnz ft_dx23_make - mov [@@dx23],word 0 + mov [@@dx23],dword 0 jmp ft_dx23_done ft_dx23_make: - mov ax,[@@tx3] - sub ax,[@@tx2] - shl ax,7 - cwd - idiv bx - mov [@@dx23],ax ; dx23 = (x3-x2)/(y3-y2) + mov eax,[@@tx3] + sub eax,[@@tx2] + shl eax,7 + cdq + idiv ebx + mov [@@dx23],eax ; dx23 = (x3-x2)/(y3-y2) ft_dx23_done: - mov ax,[@@tx1] - shl ax,7 - mov bx,ax + mov eax,[@@tx1] + shl eax,7 + mov ebx,eax - mov cx,[@@ty1] + mov ecx,[@@ty1] ft_loop1: pushad - mov [@@ly],cx - mov dx,bx - shr dx,7 - mov [@@lx2],dx - mov dx,ax - shr dx,7 - mov [@@lx1],dx - mov ax,[@@xcol] - mov [@@lcol],ax + mov [@@ly],ecx + mov edx,ebx + shr edx,7 + mov [@@lx2],edx + mov edx,eax + shr edx,7 + mov [@@lx1],edx + mov eax,[@@xcol] + mov [@@lcol],eax call horizontal_line popad - add ax,[@@dx13] - add bx,[@@dx12] - inc cx - cmp cx,[@@ty2] + add eax,[@@dx13] + add ebx,[@@dx12] + inc ecx + cmp ecx,[@@ty2] jb ft_loop1 - mov bx,[@@tx2] - shl bx,7 - mov cx,[@@ty2] + mov ebx,[@@tx2] + shl ebx,7 + mov ecx,[@@ty2] ft_loop2: pushad - mov [@@ly],cx - mov dx,bx - shr dx,7 - mov [@@lx2],dx - mov dx,ax - shr dx,7 - mov [@@lx1],dx - mov ax,[@@xcol] - mov [@@lcol],ax + mov [@@ly],ecx + mov edx,ebx + shr edx,7 + mov [@@lx2],edx + mov edx,eax + shr edx,7 + mov [@@lx1],edx + mov eax,[@@xcol] + mov [@@lcol],eax call horizontal_line popad - add ax,[@@dx13] - add bx,[@@dx23] + add eax,[@@dx13] + add ebx,[@@dx23] inc ecx - cmp cx,[@@ty3] + cmp ecx,[@@ty3] jb ft_loop2 ret ;horizontal line subproc -@@lx1 dw 0 -@@lx2 dw 0 -@@ly dw 0 -@@lcol dw 0 +align 4 +@@lx1 dd 0 +@@lx2 dd 0 +@@ly dd 0 +@@lcol dd 0 @@rgb dd 0 horizontal_line: - mov ecx,0 - mov cx,[@@lx1] - cmp cx,[@@lx2] + mov ecx,[@@lx1] + sub ecx,[@@lx2] ja x12 je ext ; ret - mov cx,[@@lx2] - sub cx,[@@lx1] + neg ecx mov edi,3 jmp xx x12: - mov cx,[@@lx1] - sub cx,[@@lx2] mov edi,-3 jmp xx ext: mov ecx,-1 ;1 ; sub ebp,3 xx: - mov eax,0 - mov ax,[@@ly] + mov eax,[@@ly] mov ebx,SCREEN_X ;320 mul ebx - mov ebp,0 - mov bp,[@@lx1] ;for correct 16 bit size - add eax,ebp - mov ebx,3 - mul ebx - mov ebp,eax - sub ebp,3 ;for delete white dots + add eax,[@@lx1] + lea ebp,[eax*3-3] ; for delete white dots add ecx,2 loo: @@ -456,12 +454,11 @@ rotate_points: mov edi,@@sin_x mov edx,3 rp_sin_cos: - mov bx,word [esi] - and bx,511 - shl bx,1 - mov ax,word [sin_table+bx] + mov ebx, [esi] + and ebx,511 + mov ax,word [sin_table+ebx*2] mov word [edi],ax - mov ax,word [cos_table+bx] + mov ax,word [cos_table+ebx*2] mov word [edi+2],ax add esi,2 @@ -591,8 +588,7 @@ y_n: mov [my],bx popad - mov ebx,0 ;? - mov bx,word [esi+4] + movzx ebx,word [esi+4] mov ax,[my] cmp ax,0 jng no_m @@ -601,20 +597,18 @@ y_n: no_m: add bx,256 ; Z factor (zoom) - mov eax,0 ;? - mov ax,word [esi] - shl ax,8 - cwd - idiv bx; bx - add ax,(SCREEN_X/2) ;160 ;X factor (center X) + movsx eax,word [esi] + shl eax,8 + cdq + idiv ebx + add eax,(SCREEN_X/2) ;160 ;X factor (center X) stosw - mov eax,0 ;? - mov ax,word [esi+2] - shl ax,8 - cwd - idiv bx - add ax,(SCREEN_Y/2) ;100 ;Y factor (center Y) + movsx eax,word [esi+2] + shl eax,8 + cdq + idiv ebx + add eax,(SCREEN_Y/2) ;100 ;Y factor (center Y) stosw add esi,6 @@ -622,32 +616,6 @@ no_m: jnz translate_points ret -init_sin_cos: - finit - fldz - fstp [temp] - xor edi,edi - mov ecx,512 -isc_make: - fld [temp] - fld st0 - fld st0 - fsin - fmul [fixed_point_const] - fistp word [sin_table+edi] - fcos - fmul [fixed_point_const] - fistp word [cos_table+edi] - - fadd [inc_angle] - fstp [temp] - - add edi,2 - loop isc_make - ret - -temp dd 0 - fixed_point_const dd 16384.0 inc_angle dd 0.01227184630309 ; pi/256 diff --git a/programs/games/rsquare/trunk/build_en.bat b/programs/games/rsquare/trunk/build_en.bat index 28d7c890c7..53e123467f 100644 --- a/programs/games/rsquare/trunk/build_en.bat +++ b/programs/games/rsquare/trunk/build_en.bat @@ -1,4 +1,4 @@ @echo lang fix en >lang.inc -@fasm 3dcube2.asm 3dcube2 +@fasm rsquare.asm rsquare @erase lang.inc @pause \ No newline at end of file diff --git a/programs/games/rsquare/trunk/build_ru.bat b/programs/games/rsquare/trunk/build_ru.bat index b02414d688..5c9f6f6923 100644 --- a/programs/games/rsquare/trunk/build_ru.bat +++ b/programs/games/rsquare/trunk/build_ru.bat @@ -1,4 +1,4 @@ @echo lang fix ru >lang.inc -@fasm 3dcube2.asm 3dcube2 +@fasm rsquare.asm rsquare @erase lang.inc @pause \ No newline at end of file diff --git a/programs/games/rsquare/trunk/RSQUARE.ASM b/programs/games/rsquare/trunk/rsquare.asm similarity index 100% rename from programs/games/rsquare/trunk/RSQUARE.ASM rename to programs/games/rsquare/trunk/rsquare.asm diff --git a/programs/network/arpstat/trunk/arpstat.asm b/programs/network/arpstat/trunk/arpstat.asm index e6cb79b4bf..c620e00271 100644 --- a/programs/network/arpstat/trunk/arpstat.asm +++ b/programs/network/arpstat/trunk/arpstat.asm @@ -17,6 +17,7 @@ use32 dd 0x00000000 ; reserved=no extended header include 'lang.inc' include '..\..\..\macros.inc' + purge mov ; decrease kpack'ed size START: ; start of execution call draw_window ; at first, draw the window @@ -54,15 +55,13 @@ still: ; Fill the table with blanks - mov edx, text + 160 + mov edi, text + 160 doBlank: mov esi, blank - mov edi, edx mov ecx, 40 rep movsb - add edx, 40 - cmp edx, text + 560 + cmp edi, text + 560 jne doBlank pop ecx ; The number of entries @@ -302,30 +301,21 @@ button: ; button mov eax,0xffffffff ; close this program mcall - jmp still - - writeDecimal: pusha and eax, 0xff - mov ecx, eax mov dl, 100 div dl - mov cl, ah + movzx ecx, ah add al, '0' mov [ebx], al inc ebx mov eax, ecx mov dl, 10 div dl - mov cl, ah - add al, '0' - mov [ebx], al - inc ebx - mov al, ah - add al, '0' - mov [ebx], al + add ax, '00' + mov [ebx], ax popa ret @@ -360,7 +350,7 @@ draw_window: newline: mcall add ebx,16 - add edx,40 + add edx,esi cmp [edx],byte 'x' jnz newline @@ -411,7 +401,7 @@ text: db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx ' db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx ' db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx ' - db 'x <- END MARKER, DONT DELETE ' + db 'x' ; <- END MARKER, DONT DELETE blank: @@ -424,9 +414,3 @@ hextable db '0123456789ABCDEF' I_END: - - - - - - diff --git a/programs/network/stackcfg/trunk/stackcfg.asm b/programs/network/stackcfg/trunk/stackcfg.asm index ddb8554da9..fba21908b1 100644 --- a/programs/network/stackcfg/trunk/stackcfg.asm +++ b/programs/network/stackcfg/trunk/stackcfg.asm @@ -26,8 +26,8 @@ include '..\..\..\macros.inc' START: ; start of execution - cmp [PARAMS], byte 0 - jne check_parameters + cmp [PARAMS], dword 'BOOT' + jz boot_set_settings no_params: @@ -45,7 +45,7 @@ still: jnz button key: ; key - mov al,2 ; just read it and ignore +; mov al,2 ; just read it and ignore mcall jmp still @@ -55,74 +55,23 @@ still: shr eax,8 - cmp eax,1 ; button id=1 ? + dec eax ; button id=1 ? jne noclose or eax,-1 ; close this program mcall noclose: - cmp eax,2 + dec eax je read_stack_setup - cmp eax,3 + dec eax jne no_apply_stack_setup call apply_stack_setup jmp still no_apply_stack_setup: - cmp eax,11 - jb no_set_interface - cmp eax,14 - jg no_set_interface - sub eax,11 - mov [interface],eax - call draw_window - jmp still - no_set_interface: - - cmp eax,21 - jb no_ip_sf - cmp eax,22 - jg no_ip_sf - sub eax,21 - not eax - and eax,1 - mov [assigned],eax - call draw_window - jmp still - no_ip_sf: - - cmp eax,7 ; GET IP - jne no_read_ip - mov [string_x],205 - mov [string_y],80 - mov [string_length],15 - call read_string - mov esi,string-1 - mov edi,ip_address - xor eax,eax - ip1: - inc esi - cmp [esi],byte '0' - jb ip2 - cmp [esi],byte '9' - jg ip2 - imul eax,10 - movzx ebx,byte [esi] - sub ebx,48 - add eax,ebx - jmp ip1 - ip2: - mov [edi],al - xor eax,eax - inc edi - cmp edi,ip_address+3 - jbe ip1 - call draw_window - jmp still - no_read_ip: - - cmp eax,5 ; GET COM PORT + dec eax ; GET COM PORT + dec eax jne no_read_comport mov [string_x],272 mov [string_y],40 @@ -152,11 +101,10 @@ no_apply_stack_setup: sub eax,48 add ebx,eax mov [com_add],ebx - call draw_window - jmp still + jmp red no_read_comport: - cmp eax,6 ; GET COM IRQ + dec eax ; GET COM IRQ jne no_read_comirq mov [string_x],284 mov [string_y],50 @@ -169,11 +117,38 @@ no_apply_stack_setup: gci1: sub eax,48 mov [com_irq],eax - call draw_window - jmp still + jmp red no_read_comirq: - cmp eax, 8 ; set gateway ip + dec eax ; GET IP + jne no_read_ip + mov [string_x],205 + mov [string_y],80 + mov [string_length],15 + call read_string + mov esi,string-1 + mov edi,ip_address + ip0: + xor eax,eax + ip1: + inc esi + cmp [esi],byte '0' + jb ip2 + cmp [esi],byte '9' + jg ip2 + imul eax,10 + movzx ebx,byte [esi] + sub ebx,48 + add eax,ebx + jmp ip1 + ip2: + stosb + cmp edi,ip_address+3 + jbe ip0 + jmp red + no_read_ip: + + dec eax ; set gateway ip jne no_set_gateway mov [string_x],205 @@ -182,6 +157,7 @@ no_apply_stack_setup: call read_string mov esi,string-1 mov edi,gateway_ip + gip0: xor eax,eax gip1: inc esi @@ -195,17 +171,14 @@ no_apply_stack_setup: add eax,ebx jmp gip1 gip2: - mov [edi],al - xor eax,eax - inc edi + stosb cmp edi,gateway_ip+3 - jbe gip1 - call draw_window - - jmp still + jbe gip0 + jmp red no_set_gateway: - cmp eax, 9 + + dec eax jne no_set_subnet mov [string_x],205 @@ -214,6 +187,7 @@ no_apply_stack_setup: call read_string mov esi,string-1 mov edi,subnet_mask + sip0: xor eax,eax sip1: inc esi @@ -227,17 +201,13 @@ no_apply_stack_setup: add eax,ebx jmp sip1 sip2: - mov [edi],al - xor eax,eax - inc edi + stosb cmp edi,subnet_mask+3 - jbe sip1 - call draw_window - - jmp still + jbe sip0 + jmp red no_set_subnet: - cmp eax, 10 + dec eax jne no_set_dns mov [string_x],205 @@ -246,6 +216,7 @@ no_apply_stack_setup: call read_string mov esi,string-1 mov edi,dns_ip + dip0: xor eax,eax dip1: inc esi @@ -259,20 +230,31 @@ no_apply_stack_setup: add eax,ebx jmp dip1 dip2: - mov [edi],al - xor eax,eax - inc edi + stosb cmp edi,dns_ip+3 - jbe dip1 - call draw_window - - jmp still + jbe dip0 + jmp red no_set_dns: + + dec eax + jb no_set_interface + cmp eax,14-11 + ja no_set_interface + mov [interface],eax + jmp red + no_set_interface: + + sub eax,21-11 + jb no_ip_sf + cmp eax,22-21 + ja no_ip_sf + xor eax,1 + mov [assigned],eax + jmp red + no_ip_sf: jmp still - - read_stack_setup: mov eax,52 @@ -318,11 +300,7 @@ read_stack_setup: shr eax,7 and eax,1 mov [assigned],eax - - call draw_window - - jmp still - + jmp red apply_stack_setup: @@ -363,7 +341,6 @@ apply_stack_setup: mcall ret - jmp still string_length dd 16 @@ -388,7 +365,7 @@ read_string: mcall cmp eax,2 jne read_done - mov eax,2 +; mov eax,2 mcall shr eax,8 cmp eax,13 @@ -419,11 +396,6 @@ read_string: read_done: - call print_text - - ret - - print_text: pusha @@ -607,27 +579,27 @@ draw_window: mcall ;mov eax,8 ; BUTTON 6 : SET IRQ mov ecx,49*65536+8 - mov edx,6 + inc edx mcall ;mov eax,8 ; BUTTON 7 : SET IP mov ecx,79*65536+8 - mov edx,7 + inc edx mcall ;mov eax,8 ; BUTTON 8 : SET gateway IP mov ebx,299*65536+8 mov ecx,89*65536+8 - mov edx,8 + inc edx mcall ;mov eax,8 ; BUTTON 9 : SET subnet mov ecx,99*65536+8 - mov edx,9 + inc edx mcall ;mov eax,8 ; BUTTON 10 : SET dns ip mov ecx,109*65536+8 - mov edx,10 + inc edx mcall mov ebx,31*65536+40 ; draw info text with function 4 @@ -655,13 +627,6 @@ draw_window: ;****************************************************************************** -check_parameters: - cmp [PARAMS], dword "BOOT" ; received BOOT parameter -> goto handler - je boot_set_settings - jmp no_params - -;****************************************************************************** - boot_set_settings: mov eax,52 @@ -723,5 +688,3 @@ assigned dd 0 ; get ip from server config dd 0 I_END: - -