forked from KolibriOS/kolibrios
1232 lines
18 KiB
NASM
1232 lines
18 KiB
NASM
|
;10.11.2009 staper@inbox.ru
|
|||
|
|
|||
|
use32
|
|||
|
org 0x0
|
|||
|
db 'MENUET01'
|
|||
|
dd 0x1, START, I_END, (I_END+600) and not 3, (I_END+600) and not 3, 0x0, 0x0
|
|||
|
|
|||
|
remote_ip db 010,010,010,002
|
|||
|
server_port dd 0x9876
|
|||
|
client_port dd 0x6789
|
|||
|
socknum dd ?
|
|||
|
|
|||
|
DEBUG equ 1
|
|||
|
|
|||
|
include 'macros.inc'
|
|||
|
include 'lang.inc'
|
|||
|
include 'debug.inc'
|
|||
|
|
|||
|
macro dbg_dec num
|
|||
|
{pushad
|
|||
|
newline
|
|||
|
debug_print_dec num
|
|||
|
popad}
|
|||
|
|
|||
|
OP_SOC equ 0 ; UDP only
|
|||
|
CL_SOC equ 1
|
|||
|
WR_SOC equ 4
|
|||
|
|
|||
|
macro free_socket {
|
|||
|
mcall 53,1,[socknum]
|
|||
|
if CL_SOC no equ 1
|
|||
|
mcall 53,CL_SOC,[socknum]
|
|||
|
endf
|
|||
|
btr [flags],11
|
|||
|
btr [flags],12}
|
|||
|
|
|||
|
|
|||
|
START:
|
|||
|
mcall 40,10100111b ;<3B><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>
|
|||
|
mcall 3
|
|||
|
mov [rsx1],ax
|
|||
|
shr eax,16
|
|||
|
mov [rsx2],ax
|
|||
|
call redraw_all
|
|||
|
jmp draw_pole
|
|||
|
|
|||
|
redraw_all:
|
|||
|
mcall 12,1
|
|||
|
mcall 0,100*65536+432,100*65536+280,0x34FFFFFF,,title
|
|||
|
mcall 38,1*65536+421,27*65536+27,0x00b0b0b0
|
|||
|
mov edi,10
|
|||
|
@@: add ecx,20*65536+20
|
|||
|
mcall
|
|||
|
dec edi
|
|||
|
jnz @b
|
|||
|
mcall ,1*65536+1,27*65536+226,;000000
|
|||
|
mov edi,21
|
|||
|
@@: add ebx,20*65536+20
|
|||
|
mcall
|
|||
|
dec edi
|
|||
|
jnz @b
|
|||
|
mcall 13,202*65536+19,27*65536+202,0xFFFFFF
|
|||
|
mcall 4,40*65536+12,0x80000000,text_user
|
|||
|
mcall ,350*65536+12,,text_cpu
|
|||
|
|
|||
|
mcall 8,120*65536+70,7*65536+15,3,0xFFFFFF ;auto_fill
|
|||
|
mcall ,230*65536+70,,2, ;new_game
|
|||
|
mov ecx,234*65536+15
|
|||
|
bt [flags],11
|
|||
|
jc @f
|
|||
|
mcall ,2*65536+70,,4, ;listen
|
|||
|
@@: bt [flags],12
|
|||
|
jc @f
|
|||
|
mcall ,74*65536+70,,5, ;connect
|
|||
|
@@: mcall ,146*65536+70,,6, ;disconnect
|
|||
|
mcall 4,135*65536+12,0x80000000,but_new
|
|||
|
mcall ,240*65536+12,,but_auto
|
|||
|
mcall ,15*65536+240,,but_lis_con
|
|||
|
|
|||
|
mcall 12,2
|
|||
|
ret
|
|||
|
|
|||
|
draw_pole:
|
|||
|
if DEBUG
|
|||
|
call SysMsgBoardNum ;show esp
|
|||
|
endf
|
|||
|
|
|||
|
mov esi,table1
|
|||
|
mov edi,90
|
|||
|
mov ebp,10
|
|||
|
mov ebx,1*65536+21
|
|||
|
mov ecx,27*65536+47
|
|||
|
call draw_bots
|
|||
|
|
|||
|
mov esi,table2
|
|||
|
mov edi,90
|
|||
|
mov ebp,10
|
|||
|
mov ebx,221*65536+241
|
|||
|
mov ecx,27*65536+47
|
|||
|
call draw_bots
|
|||
|
cmp [loc_kill],10
|
|||
|
jne @f
|
|||
|
mcall 4,69*65536+12,0x80ff0000,text_win
|
|||
|
bts [flags],5
|
|||
|
@@: cmp [rem_kill],10
|
|||
|
jne @f
|
|||
|
mcall 4,372*65536+12,0x80ff0000,text_win
|
|||
|
bts [flags],5
|
|||
|
@@:
|
|||
|
cmp [number_bots],10
|
|||
|
jne still
|
|||
|
bts [flags],0
|
|||
|
still:
|
|||
|
mcall 23,10
|
|||
|
test eax,eax
|
|||
|
jz listen
|
|||
|
; mcall 10
|
|||
|
|
|||
|
cmp eax,6
|
|||
|
je mouse
|
|||
|
; cmp eax,8
|
|||
|
; je still
|
|||
|
dec eax
|
|||
|
jnz @f
|
|||
|
call redraw_all
|
|||
|
jmp draw_pole
|
|||
|
@@: dec eax
|
|||
|
jz key
|
|||
|
dec eax
|
|||
|
jz button
|
|||
|
jmp still
|
|||
|
|
|||
|
listen:
|
|||
|
mcall 53,2,[socknum]
|
|||
|
test eax,eax
|
|||
|
jz still
|
|||
|
xor edx,edx
|
|||
|
call check_header
|
|||
|
jc still
|
|||
|
mcall 53,2,[socknum]
|
|||
|
test eax,eax
|
|||
|
jz still
|
|||
|
mcall 53,3,[socknum]
|
|||
|
push ebx
|
|||
|
mcall 53,2,[socknum]
|
|||
|
pop ebx
|
|||
|
if DEBUG
|
|||
|
debug_print_dec eax
|
|||
|
push eax
|
|||
|
movzx eax,bl
|
|||
|
debug_print_dec eax
|
|||
|
pop eax
|
|||
|
endf
|
|||
|
cmp bl,1 ;<3B><><EFBFBD><EFBFBD>祭<EFBFBD> ᮮ<>饭<EFBFBD><E9A5AD> <20><> <20><>ࢥ<EFBFBD><E0A2A5> <20> ࠭<><E0A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
|||
|
je .get_first
|
|||
|
cmp bl,2 ;<3B><>ࢥ<EFBFBD> <20><><EFBFBD><EFBFBD>稫 <20>⢥<EFBFBD>, <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD>騩 <20><><EFBFBD>冷<EFBFBD> 室<>
|
|||
|
je .set_first
|
|||
|
cmp bl,3 ;<3B>⬥<EFBFBD><E2ACA5> ᮥ<><E1AEA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
je .close_connect
|
|||
|
cmp bl,4 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>⪠ <20><><EFBFBD><EFBFBD>
|
|||
|
je .new_game
|
|||
|
cmp bl,5 ;<3B><><EFBFBD><EFBFBD>砭<EFBFBD><E7A0AD> <20><><EFBFBD><EFBFBD> (<28>먣<EFBFBD><EBA8A3><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
je .end_game
|
|||
|
cmp bl,6 ;poluchena koordinata ataki
|
|||
|
je .get_koord
|
|||
|
cmp bl,7 ;v otvet posyla'utsya ismen'ennue elementy v table2, max 12 byte = zagolovok 3 bytes + kol-vo elementov + el-ty (max 4*2 bytes)
|
|||
|
je .get_elem
|
|||
|
.free_cash:
|
|||
|
call check_header.free
|
|||
|
jmp still
|
|||
|
.get_first:
|
|||
|
; cmp eax,2
|
|||
|
; jne .free_cash
|
|||
|
mcall 53,2,[socknum]
|
|||
|
@@: mcall 53,3,[socknum]
|
|||
|
mov dl,bl
|
|||
|
shl edx,8
|
|||
|
mcall 53,2,[socknum]
|
|||
|
test eax,eax
|
|||
|
jnz @b
|
|||
|
shr edx,8
|
|||
|
cmp dx,[who_first]
|
|||
|
jge @f
|
|||
|
mov word [message+2],0x0002 ;I'm first
|
|||
|
mcall 53,WR_SOC,[socknum],4,message
|
|||
|
inc eax
|
|||
|
jz button.error
|
|||
|
bts [flags],13 ;moi hod
|
|||
|
jmp still
|
|||
|
@@: mov word [message+2],0x0102 ;He is first
|
|||
|
mcall 53,WR_SOC,[socknum],4,message
|
|||
|
inc eax
|
|||
|
jz button.error
|
|||
|
btr [flags],13
|
|||
|
jmp still
|
|||
|
.set_first:
|
|||
|
; cmp eax,1
|
|||
|
; jne .free_cash
|
|||
|
mcall 53,2,[socknum]
|
|||
|
@@: mcall 53,3,[socknum]
|
|||
|
dec bl
|
|||
|
jz @f
|
|||
|
btr [flags],13
|
|||
|
jmp still
|
|||
|
@@: bts [flags],13
|
|||
|
jmp still
|
|||
|
.close_connect:
|
|||
|
free_socket
|
|||
|
jmp still
|
|||
|
.new_game:
|
|||
|
mov esi,table2
|
|||
|
mov ecx,100/4
|
|||
|
@@: mov dword [esi],0
|
|||
|
add esi,4
|
|||
|
loop @b
|
|||
|
jmp still
|
|||
|
.end_game:
|
|||
|
mov [rem_kill],10
|
|||
|
bts [flags],13
|
|||
|
call redraw_all
|
|||
|
jmp draw_pole
|
|||
|
.buf dw 0xffff
|
|||
|
.get_koord:
|
|||
|
; cmp eax,1
|
|||
|
; jne .free_cash
|
|||
|
mcall 53,2,[socknum]
|
|||
|
; test eax,eax
|
|||
|
; jz still
|
|||
|
mcall 53,3,[socknum]
|
|||
|
movzx eax,bl
|
|||
|
cmp ax,[.buf]
|
|||
|
je still
|
|||
|
mov [.buf],ax
|
|||
|
mov esi,table1
|
|||
|
mov edi,table1
|
|||
|
mov bl, byte [edi+eax]
|
|||
|
add bl,2
|
|||
|
mov ecx,table1
|
|||
|
call if_bot_killed
|
|||
|
|
|||
|
movzx edx, byte [message+3]
|
|||
|
mov byte [message+3+1+edx*2],al
|
|||
|
mov byte [message+3+1+edx*2+1],bl
|
|||
|
inc byte [message+3]
|
|||
|
|
|||
|
mov [table1+eax],bl
|
|||
|
push ebx
|
|||
|
mov byte [message+2],7
|
|||
|
mov edi,5
|
|||
|
.@u: movzx edx,byte [message+3]
|
|||
|
lea edx,[edx*2+4]
|
|||
|
mcall 53,WR_SOC,[socknum],,message
|
|||
|
mcall 5,10
|
|||
|
dec edi
|
|||
|
jnz .@u
|
|||
|
inc eax
|
|||
|
jz button.error
|
|||
|
pop ebx
|
|||
|
bts [flags],13 ;ostavliaem hod za soboi
|
|||
|
cmp bl,3
|
|||
|
jb @f
|
|||
|
btr [flags],13 ;peredaem hod
|
|||
|
cmp bl,4
|
|||
|
jne @f
|
|||
|
inc [rem_kill]
|
|||
|
cmp [rem_kill],10
|
|||
|
jne draw_pole
|
|||
|
call redraw_all
|
|||
|
@@: jmp draw_pole
|
|||
|
.buf2 dw 0xffff
|
|||
|
.get_elem:
|
|||
|
mcall 53,2,[socknum]
|
|||
|
; test eax,eax
|
|||
|
; jz still
|
|||
|
mcall 53,3,[socknum]
|
|||
|
movzx edi,bl ;chislo elementov
|
|||
|
test edi,edi
|
|||
|
jz .free_cash
|
|||
|
@@: mcall 53,2,[socknum]
|
|||
|
mcall 53,3,[socknum]
|
|||
|
movzx eax,bl
|
|||
|
push eax
|
|||
|
mcall 53,2,[socknum]
|
|||
|
mcall 53,3,[socknum]
|
|||
|
pop eax
|
|||
|
cmp bl,byte [.buf2+1] ;<3B><EFBFBD>ઠ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
jne @f
|
|||
|
cmp al,byte [.buf2]
|
|||
|
je .free_cash
|
|||
|
@@: mov byte [.buf2],al
|
|||
|
mov byte [.buf2+1],bl
|
|||
|
jmp .00
|
|||
|
@@: mcall 53,3,[socknum]
|
|||
|
movzx eax,bl
|
|||
|
push eax
|
|||
|
mcall 53,2,[socknum]
|
|||
|
mcall 53,3,[socknum]
|
|||
|
pop eax
|
|||
|
.00 mov [table2+eax],bl
|
|||
|
dec edi
|
|||
|
jz @f
|
|||
|
mcall 53,2,[socknum]
|
|||
|
test eax,eax
|
|||
|
jnz @b
|
|||
|
@@: call check_header.free
|
|||
|
cmp byte [.buf2+1],2
|
|||
|
jbe @f
|
|||
|
bts [flags],13
|
|||
|
cmp byte [.buf2+1],4
|
|||
|
jb draw_pole
|
|||
|
inc [loc_kill]
|
|||
|
cmp [loc_kill],10
|
|||
|
jb draw_pole
|
|||
|
call redraw_all
|
|||
|
jmp draw_pole
|
|||
|
@@: btr [flags],13
|
|||
|
jmp draw_pole
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
check_header:
|
|||
|
mov esi,2
|
|||
|
@@: mcall 53,3,[socknum]
|
|||
|
mov dl,bl
|
|||
|
dec esi
|
|||
|
jz @f
|
|||
|
shl edx,8
|
|||
|
mcall 53,2,[socknum]
|
|||
|
test eax,eax
|
|||
|
jnz @b
|
|||
|
@@: xchg dh,dl
|
|||
|
cmp dx, word [message]
|
|||
|
jne .free
|
|||
|
if DEBUG
|
|||
|
newline
|
|||
|
debug_print 'XO packet:'
|
|||
|
endf
|
|||
|
clc
|
|||
|
ret
|
|||
|
.free:
|
|||
|
@@: mcall 53,3,[socknum]
|
|||
|
mcall 53,2,[socknum]
|
|||
|
test eax,eax
|
|||
|
jnz @b
|
|||
|
if DEBUG
|
|||
|
newline
|
|||
|
debug_print 'packet cleared'
|
|||
|
endf
|
|||
|
stc
|
|||
|
ret
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
key:
|
|||
|
mcall 2
|
|||
|
jmp still
|
|||
|
|
|||
|
close_prog:
|
|||
|
free_socket ;-1 <20>訡<EFBFBD><E8A8A1>
|
|||
|
mcall -1
|
|||
|
|
|||
|
button:
|
|||
|
mcall 17
|
|||
|
dec ah
|
|||
|
jz close_prog
|
|||
|
|
|||
|
dec ah
|
|||
|
jnz @f
|
|||
|
mov ecx,(344)/4
|
|||
|
mov esi,table1
|
|||
|
.@0: mov dword [esi],0
|
|||
|
add esi,4
|
|||
|
loop .@0
|
|||
|
mov word [listen.buf],0xffff
|
|||
|
mov word [listen.buf2],0xffff
|
|||
|
; mov [flags],1100b ;auto fill
|
|||
|
btr [flags],0
|
|||
|
btr [flags],2
|
|||
|
bts [flags],3
|
|||
|
mov [number_bots],0
|
|||
|
call set_bots
|
|||
|
bts [flags],0
|
|||
|
.a0: btr [flags],5
|
|||
|
bt [flags],12
|
|||
|
jc .a1
|
|||
|
bt [flags],11
|
|||
|
jnc .a2
|
|||
|
.a1: mov byte [message+3],4
|
|||
|
; mcall 53,WR_SOC,[sicknum],3,message
|
|||
|
.a2: call redraw_all
|
|||
|
jmp draw_pole
|
|||
|
@@: dec ah ;new game
|
|||
|
jnz @f
|
|||
|
.new_game:
|
|||
|
mov ecx,(344)/4
|
|||
|
mov esi,table1
|
|||
|
.@1: mov dword [esi],0
|
|||
|
add esi,4
|
|||
|
loop .@1
|
|||
|
mov word [listen.buf],0xffff
|
|||
|
mov word [listen.buf2],0xffff
|
|||
|
mov [number_bots],0
|
|||
|
; mov [flags],1100b
|
|||
|
btr [flags],0
|
|||
|
btr [flags],2
|
|||
|
btr [flags],3
|
|||
|
jmp .a0
|
|||
|
|
|||
|
@@: dec ah
|
|||
|
jnz @f
|
|||
|
bt [flags],11
|
|||
|
jc still
|
|||
|
bt [flags],12
|
|||
|
jc still
|
|||
|
mcall 53,OP_SOC,[client_port],[server_port],<dword [remote_ip]> ;listen
|
|||
|
if DEBUG
|
|||
|
push eax
|
|||
|
dbg_dec eax
|
|||
|
debug_print ':socket:listen...'
|
|||
|
pop eax
|
|||
|
endf
|
|||
|
mov [socknum],eax ;-1 <20>訡<EFBFBD><E8A8A1>
|
|||
|
inc eax
|
|||
|
jz .error
|
|||
|
bts [flags],11
|
|||
|
xor eax,eax
|
|||
|
or ax,-1
|
|||
|
call random
|
|||
|
mov [who_first],ax ;progi soediniaias' sveria'ut eto znachenie, u kogo bol'she, tot nachinaet pervyi
|
|||
|
bts [flags],14
|
|||
|
call redraw_all
|
|||
|
jmp draw_pole
|
|||
|
|
|||
|
@@: dec ah
|
|||
|
jnz @f
|
|||
|
bt [flags],11
|
|||
|
jc still
|
|||
|
bt [flags],12
|
|||
|
jc still
|
|||
|
mcall 53,OP_SOC,[server_port],[client_port],<dword [remote_ip]> ;connect
|
|||
|
if DEBUG
|
|||
|
push eax
|
|||
|
dbg_dec eax
|
|||
|
debug_print ':socket:connect...'
|
|||
|
pop eax
|
|||
|
endf
|
|||
|
mov [socknum],eax ;-1 <20>訡<EFBFBD><E8A8A1>
|
|||
|
inc eax
|
|||
|
jz .error
|
|||
|
bts [flags],12
|
|||
|
xor eax,eax
|
|||
|
or ax,-1
|
|||
|
call random
|
|||
|
mov esi,message+2
|
|||
|
mov byte [esi],1
|
|||
|
mov [esi+1],ax
|
|||
|
mcall 53,WR_SOC,[socknum],5,message ;-1 <20>訡<EFBFBD><E8A8A1>
|
|||
|
inc eax
|
|||
|
jz .error
|
|||
|
bts [flags],14
|
|||
|
call redraw_all
|
|||
|
jmp draw_pole
|
|||
|
|
|||
|
@@: free_socket ;-1 <20>訡<EFBFBD><E8A8A1> ;disconnect
|
|||
|
call redraw_all
|
|||
|
jmp draw_pole
|
|||
|
|
|||
|
.error:
|
|||
|
if DEBUG
|
|||
|
debug_print 'error on open/sent'
|
|||
|
endf
|
|||
|
jmp still
|
|||
|
|
|||
|
draw_bots:
|
|||
|
cmp byte [esi],1
|
|||
|
je .one
|
|||
|
cmp byte [esi],2
|
|||
|
je .two
|
|||
|
cmp byte [esi],3
|
|||
|
je .three
|
|||
|
cmp byte [esi],4
|
|||
|
jne .null
|
|||
|
bts [flags],4
|
|||
|
jmp .three
|
|||
|
|
|||
|
.end:
|
|||
|
inc esi
|
|||
|
dec ebp
|
|||
|
jnz draw_bots
|
|||
|
test edi,edi
|
|||
|
jz @f
|
|||
|
sub edi,10
|
|||
|
mov ebp,10
|
|||
|
add ebx,-200*65536-200
|
|||
|
add ecx,20*65536+20
|
|||
|
jmp draw_bots
|
|||
|
@@:
|
|||
|
ret
|
|||
|
|
|||
|
.one:
|
|||
|
push ebx ecx
|
|||
|
call .0
|
|||
|
mov edx,0x00aa66
|
|||
|
mcall 13
|
|||
|
pop ecx ebx
|
|||
|
.null:
|
|||
|
add ebx,20*65536+20
|
|||
|
jmp .end
|
|||
|
.two:
|
|||
|
push ebx ecx
|
|||
|
add ebx,8*65536-6
|
|||
|
add ecx,12*65536-12
|
|||
|
mcall 38,,,0x508cec
|
|||
|
add ecx,-6*65536+6
|
|||
|
mcall
|
|||
|
pop ecx ebx
|
|||
|
jmp .null
|
|||
|
.three:
|
|||
|
push ebx ecx
|
|||
|
call .0
|
|||
|
mov edx,0x00FF0000
|
|||
|
bt [flags],4
|
|||
|
jnc @f
|
|||
|
mov edx,0x00555555
|
|||
|
btr [flags],4
|
|||
|
@@: mcall 13
|
|||
|
pop ecx ebx
|
|||
|
xor edx,edx
|
|||
|
mcall 38
|
|||
|
add ecx,20*65536-20
|
|||
|
mcall
|
|||
|
add ecx,-20*65536+20
|
|||
|
jmp .null
|
|||
|
|
|||
|
.0:
|
|||
|
shr ebx,16
|
|||
|
inc bx
|
|||
|
shl ebx,16
|
|||
|
add ebx,19
|
|||
|
shr ecx,16
|
|||
|
inc cx
|
|||
|
shl ecx,16
|
|||
|
add ecx,19
|
|||
|
ret
|
|||
|
|
|||
|
mouse:
|
|||
|
bt [flags],5
|
|||
|
jc still
|
|||
|
mcall 37,2
|
|||
|
test eax,eax
|
|||
|
jz still
|
|||
|
cmp al,2
|
|||
|
jg still
|
|||
|
;1 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2 - <20>ࠢ<EFBFBD><E0A0A2>
|
|||
|
dec al
|
|||
|
jnz .mouse_1
|
|||
|
btr [flags],1
|
|||
|
jmp @f
|
|||
|
.mouse_1:
|
|||
|
bts [flags],1
|
|||
|
@@:
|
|||
|
mcall 37,1
|
|||
|
mov dx,ax
|
|||
|
shr eax,16
|
|||
|
cmp dx,27
|
|||
|
jbe still
|
|||
|
cmp dx,227
|
|||
|
jge still
|
|||
|
cmp ax,1
|
|||
|
jbe still
|
|||
|
cmp ax,201
|
|||
|
jge second_pole
|
|||
|
;<3B><>ࢮ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
bt [flags],0
|
|||
|
jc still
|
|||
|
sub ax,1
|
|||
|
push dx
|
|||
|
xor edx,edx
|
|||
|
mov cx,20
|
|||
|
div cx
|
|||
|
pop dx
|
|||
|
mov [oX],al
|
|||
|
push ax
|
|||
|
sub dx,27
|
|||
|
mov ax,dx
|
|||
|
xor dx,dx
|
|||
|
div cx
|
|||
|
mov [oY],al
|
|||
|
xor dx,dx
|
|||
|
mov cx,10
|
|||
|
mul cx
|
|||
|
pop dx
|
|||
|
add ax,dx
|
|||
|
cmp ax,100
|
|||
|
jg still
|
|||
|
|
|||
|
set_bot:
|
|||
|
mov esi,table1
|
|||
|
bt [flags],2
|
|||
|
jnc @f
|
|||
|
mov esi,table2
|
|||
|
@@: mov edi,esi
|
|||
|
add edi,100
|
|||
|
cmp [number_bots],6
|
|||
|
jnb .1paluba
|
|||
|
cmp [number_bots],3
|
|||
|
jnb .2paluba
|
|||
|
cmp [number_bots],0
|
|||
|
je .4paluba
|
|||
|
jmp .3paluba
|
|||
|
|
|||
|
.4paluba:
|
|||
|
bt [flags],1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>寠<EFBFBD>㡭<EFBFBD><E3A1AD>
|
|||
|
jnc @f
|
|||
|
cmp [oX],6
|
|||
|
jg _still
|
|||
|
jmp .41
|
|||
|
@@: cmp [oY],6
|
|||
|
jg _still
|
|||
|
.41: inc [number_bots]
|
|||
|
mov [edi],al
|
|||
|
bt [flags],1
|
|||
|
jc @f
|
|||
|
add al,10
|
|||
|
mov [edi+1],al
|
|||
|
add al,10
|
|||
|
mov [edi+2],al
|
|||
|
add al,10
|
|||
|
mov [edi+3],al
|
|||
|
jmp init_table
|
|||
|
@@: inc al
|
|||
|
mov [edi+1],al
|
|||
|
inc al
|
|||
|
mov [edi+2],al
|
|||
|
inc al
|
|||
|
mov [edi+3],al
|
|||
|
jmp init_table
|
|||
|
|
|||
|
|
|||
|
.3paluba: ;<3B><><EFBFBD>寠<EFBFBD>㡭<EFBFBD><E3A1AD>
|
|||
|
bt [flags],1
|
|||
|
jnc @f
|
|||
|
cmp [oX],7
|
|||
|
jg _still
|
|||
|
jmp .31
|
|||
|
@@: cmp [oY],7
|
|||
|
jg _still
|
|||
|
.31:
|
|||
|
call find_near
|
|||
|
|
|||
|
bt [flags],1
|
|||
|
jc @f
|
|||
|
add al,10
|
|||
|
call find_near
|
|||
|
add al,10
|
|||
|
call find_near
|
|||
|
sub al,20
|
|||
|
jmp .32
|
|||
|
@@: inc al
|
|||
|
call find_near
|
|||
|
inc al
|
|||
|
call find_near
|
|||
|
sub al,2
|
|||
|
.32:
|
|||
|
inc [number_bots]
|
|||
|
mov ecx,4
|
|||
|
mov dl,[number_bots]
|
|||
|
sub dl,2
|
|||
|
jz @f
|
|||
|
add ecx,3
|
|||
|
@@:
|
|||
|
mov [edi+ecx],al
|
|||
|
bt [flags],1
|
|||
|
jc @f
|
|||
|
add al,10
|
|||
|
mov [edi+ecx+1],al
|
|||
|
add al,10
|
|||
|
mov [edi+ecx+2],al
|
|||
|
jmp init_table
|
|||
|
@@: inc al
|
|||
|
mov [edi+ecx+1],al
|
|||
|
inc al
|
|||
|
mov [edi+ecx+2],al
|
|||
|
jmp init_table
|
|||
|
|
|||
|
|
|||
|
|
|||
|
.2paluba: ;<3B><><EFBFBD>寠<EFBFBD>㡭<EFBFBD><E3A1AD>
|
|||
|
bt [flags],1
|
|||
|
jnc @f
|
|||
|
cmp [oX],8
|
|||
|
jg _still
|
|||
|
jmp .21
|
|||
|
@@: cmp [oY],8
|
|||
|
jg _still
|
|||
|
.21:
|
|||
|
call find_near
|
|||
|
bt [flags],1
|
|||
|
jc @f
|
|||
|
add al,10
|
|||
|
call find_near
|
|||
|
sub al,10
|
|||
|
jmp .22
|
|||
|
@@: inc al
|
|||
|
call find_near
|
|||
|
dec al
|
|||
|
.22:
|
|||
|
inc [number_bots]
|
|||
|
mov ecx,8
|
|||
|
mov dl,[number_bots]
|
|||
|
sub dl,4
|
|||
|
jz @f
|
|||
|
add ecx,2
|
|||
|
dec dl
|
|||
|
jz @f
|
|||
|
add ecx,2
|
|||
|
@@: add ecx,2
|
|||
|
mov [edi+ecx],al
|
|||
|
bt [flags],1
|
|||
|
jc @f
|
|||
|
add al,10
|
|||
|
mov [edi+ecx+1],al
|
|||
|
jmp init_table
|
|||
|
@@: inc al
|
|||
|
mov [edi+ecx+1],al
|
|||
|
jmp init_table
|
|||
|
|
|||
|
|
|||
|
.1paluba: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡭<EFBFBD><E3A1AD>
|
|||
|
call find_near
|
|||
|
inc [number_bots]
|
|||
|
xor edx,edx
|
|||
|
movzx ecx,[number_bots]
|
|||
|
add ecx,9
|
|||
|
mov [edi+ecx],al
|
|||
|
jmp init_table
|
|||
|
|
|||
|
find_near:
|
|||
|
push ax
|
|||
|
call f_near ;0
|
|||
|
|
|||
|
cmp al,10
|
|||
|
jb @f
|
|||
|
sub al,10 ;-10
|
|||
|
call f_near
|
|||
|
|
|||
|
@@: cmp al,11
|
|||
|
jb @f
|
|||
|
|
|||
|
xor edx,edx
|
|||
|
mov ecx,10
|
|||
|
div cx
|
|||
|
mov ax,[esp]
|
|||
|
cmp dx,0
|
|||
|
je @f
|
|||
|
|
|||
|
sub al,11 ;-11
|
|||
|
call f_near
|
|||
|
|
|||
|
@@: cmp al,9
|
|||
|
jb @f
|
|||
|
|
|||
|
xor edx,edx
|
|||
|
mov ecx,10
|
|||
|
div cx
|
|||
|
mov ax,[esp]
|
|||
|
cmp dx,9
|
|||
|
je @f
|
|||
|
|
|||
|
sub al,9 ;-9
|
|||
|
call f_near
|
|||
|
|
|||
|
@@: cmp al,1
|
|||
|
jb @f
|
|||
|
|
|||
|
xor edx,edx
|
|||
|
mov ecx,10
|
|||
|
div cx
|
|||
|
mov ax,[esp]
|
|||
|
cmp dx,0
|
|||
|
je @f
|
|||
|
|
|||
|
dec al ;-1
|
|||
|
call f_near
|
|||
|
|
|||
|
@@: cmp al,99
|
|||
|
jg @f
|
|||
|
|
|||
|
xor edx,edx
|
|||
|
mov ecx,10
|
|||
|
div cx
|
|||
|
mov ax,[esp]
|
|||
|
cmp dx,9
|
|||
|
je @f
|
|||
|
|
|||
|
inc al ;+1
|
|||
|
call f_near
|
|||
|
|
|||
|
@@: cmp al,90
|
|||
|
jge @f
|
|||
|
add al,10 ;+10
|
|||
|
call f_near
|
|||
|
|
|||
|
@@: cmp al,91
|
|||
|
jge @f
|
|||
|
|
|||
|
xor edx,edx
|
|||
|
mov ecx,10
|
|||
|
div cx
|
|||
|
mov ax,[esp]
|
|||
|
cmp dx,0
|
|||
|
je @f
|
|||
|
|
|||
|
add al,9 ;+9
|
|||
|
call f_near
|
|||
|
|
|||
|
@@: cmp al,89
|
|||
|
jge @f
|
|||
|
|
|||
|
xor edx,edx
|
|||
|
mov ecx,10
|
|||
|
div cx
|
|||
|
mov ax,[esp]
|
|||
|
cmp dx,9
|
|||
|
je @f
|
|||
|
add al,11 ;+11
|
|||
|
call f_near
|
|||
|
|
|||
|
@@: pop ax
|
|||
|
clc
|
|||
|
ret
|
|||
|
|
|||
|
f_near:
|
|||
|
movzx edx, byte [smeshenie]
|
|||
|
@@: cmp al,[edi+edx]
|
|||
|
je .end
|
|||
|
dec dl
|
|||
|
jnz @b
|
|||
|
cmp al,[edi]
|
|||
|
je .end
|
|||
|
mov ax,[esp+4]
|
|||
|
ret
|
|||
|
.end: add esp,10
|
|||
|
jmp _still
|
|||
|
|
|||
|
|
|||
|
|
|||
|
init_table:
|
|||
|
; xor eax,eax
|
|||
|
movzx ecx, byte [number_bots]
|
|||
|
mov edx,3
|
|||
|
dec cl
|
|||
|
jz .i_t
|
|||
|
|
|||
|
mov al,2
|
|||
|
.2: add dl,3
|
|||
|
dec cl
|
|||
|
jz .i_t
|
|||
|
dec al
|
|||
|
jnz .2
|
|||
|
|
|||
|
mov al,3
|
|||
|
.3: add dl,2
|
|||
|
dec cl
|
|||
|
jz .i_t
|
|||
|
dec al
|
|||
|
jnz .3
|
|||
|
|
|||
|
mov al,4
|
|||
|
.4: inc dl
|
|||
|
dec cl
|
|||
|
jz .i_t
|
|||
|
dec al
|
|||
|
jnz .4
|
|||
|
|
|||
|
.i_t: mov [smeshenie],dl
|
|||
|
@@: movzx eax, byte [edi+edx]
|
|||
|
mov byte [esi+eax],1
|
|||
|
dec dl
|
|||
|
jnz @b
|
|||
|
movzx eax, byte [edi]
|
|||
|
mov byte [esi+eax],1
|
|||
|
bt [flags],3
|
|||
|
jc set_bots
|
|||
|
; mcall 12,1
|
|||
|
jmp draw_pole
|
|||
|
|
|||
|
|
|||
|
second_pole:
|
|||
|
bt [flags],0
|
|||
|
jnc still
|
|||
|
bt [flags],13
|
|||
|
jnc still
|
|||
|
cmp ax,221
|
|||
|
jbe still
|
|||
|
cmp ax,421
|
|||
|
jge still
|
|||
|
;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
sub ax,221
|
|||
|
push dx
|
|||
|
xor edx,edx
|
|||
|
mov cx,20
|
|||
|
div cx
|
|||
|
pop dx
|
|||
|
push ax
|
|||
|
sub dx,27
|
|||
|
mov ax,dx
|
|||
|
xor dx,dx
|
|||
|
div cx
|
|||
|
xor dx,dx
|
|||
|
mov cx,10
|
|||
|
mul cx
|
|||
|
pop dx
|
|||
|
add ax,dx
|
|||
|
cmp ax,100
|
|||
|
jg still
|
|||
|
|
|||
|
; mov edi,table1 ;nashe pole
|
|||
|
mov esi,table2 ;opponent
|
|||
|
cmp byte [esi+eax],2
|
|||
|
jge still
|
|||
|
add byte [esi+eax],2
|
|||
|
mov byte [message+3],al
|
|||
|
mov byte [message+2],6
|
|||
|
mov edi,5
|
|||
|
@@: mcall 5,10
|
|||
|
mcall 53,WR_SOC,[socknum],4,message
|
|||
|
dec edi
|
|||
|
jnz @b
|
|||
|
jmp draw_pole
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if_bot_killed:
|
|||
|
mov byte [message+3],0
|
|||
|
|
|||
|
push ebx
|
|||
|
add edi,100
|
|||
|
mov ebx,19
|
|||
|
@@: cmp al,[edi+ebx]
|
|||
|
je @f
|
|||
|
dec ebx
|
|||
|
jnz @b
|
|||
|
cmp al,[edi+ebx]
|
|||
|
jne .end
|
|||
|
@@:
|
|||
|
cmp ebx,16
|
|||
|
jnb .end_i
|
|||
|
|
|||
|
@@: cmp bl,10
|
|||
|
jb .2
|
|||
|
btc bx,0
|
|||
|
mov bl, [edi+ebx]
|
|||
|
cmp byte [ecx+ebx],3
|
|||
|
jne .end
|
|||
|
|
|||
|
inc byte [ecx+ebx]
|
|||
|
|
|||
|
movzx edx, byte [message+3]
|
|||
|
mov byte [message+3+1+edx*2],bl
|
|||
|
mov bl,[ecx+ebx]
|
|||
|
mov byte [message+3+1+edx*2+1],bl
|
|||
|
inc byte [message+3]
|
|||
|
|
|||
|
jmp .end_i
|
|||
|
|
|||
|
.2: cmp bl,4
|
|||
|
jb .3
|
|||
|
add edi,4
|
|||
|
cmp bl,7
|
|||
|
jb .3
|
|||
|
add edi,3
|
|||
|
.3: movzx edx, byte [edi]
|
|||
|
cmp dl,al
|
|||
|
je @f
|
|||
|
cmp byte [ecx+edx],3
|
|||
|
jne .end
|
|||
|
@@: mov dl,[edi+1]
|
|||
|
cmp dl,al
|
|||
|
je @f
|
|||
|
cmp byte [ecx+edx],3
|
|||
|
jne .end
|
|||
|
@@: mov dl,[edi+2]
|
|||
|
cmp dl,al
|
|||
|
je @f
|
|||
|
cmp byte [ecx+edx],3
|
|||
|
jne .end
|
|||
|
|
|||
|
@@: cmp bl,4
|
|||
|
jnb @f
|
|||
|
mov dl,[edi+3]
|
|||
|
cmp dl,al
|
|||
|
je @f
|
|||
|
cmp byte [ecx+edx],3
|
|||
|
jne .end
|
|||
|
|
|||
|
|
|||
|
@@: mov dl,[edi]
|
|||
|
cmp dl,al
|
|||
|
je @f
|
|||
|
|
|||
|
inc byte [ecx+edx]
|
|||
|
|
|||
|
push edx ebx
|
|||
|
movzx ebx, byte [message+3]
|
|||
|
mov byte [message+3+1+ebx*2],dl
|
|||
|
mov dl,[ecx+edx]
|
|||
|
mov byte [message+3+1+ebx*2+1],dl
|
|||
|
inc byte [message+3]
|
|||
|
pop ebx edx
|
|||
|
|
|||
|
|
|||
|
@@: mov dl,[edi+1]
|
|||
|
cmp dl,al
|
|||
|
je @f
|
|||
|
|
|||
|
inc byte [ecx+edx]
|
|||
|
|
|||
|
push edx ebx
|
|||
|
movzx ebx, byte [message+3]
|
|||
|
mov byte [message+3+1+ebx*2],dl
|
|||
|
mov dl,[ecx+edx]
|
|||
|
mov byte [message+3+1+ebx*2+1],dl
|
|||
|
inc byte [message+3]
|
|||
|
pop ebx edx
|
|||
|
|
|||
|
@@: mov dl,[edi+2]
|
|||
|
|
|||
|
cmp bl,4
|
|||
|
jnb .9
|
|||
|
cmp dl,al
|
|||
|
je @f
|
|||
|
|
|||
|
inc byte [ecx+edx]
|
|||
|
|
|||
|
push edx ebx
|
|||
|
movzx ebx, byte [message+3]
|
|||
|
mov byte [message+3+1+ebx*2],dl
|
|||
|
mov dl,[ecx+edx]
|
|||
|
mov byte [message+3+1+ebx*2+1],dl
|
|||
|
inc byte [message+3]
|
|||
|
pop ebx edx
|
|||
|
|
|||
|
@@: mov dl,[edi+3]
|
|||
|
.9: cmp dl,al
|
|||
|
je .end_i
|
|||
|
|
|||
|
inc byte [ecx+edx]
|
|||
|
|
|||
|
push edx ebx
|
|||
|
movzx ebx, byte [message+3]
|
|||
|
mov byte [message+3+1+ebx*2],dl
|
|||
|
mov dl,[ecx+edx]
|
|||
|
mov byte [message+3+1+ebx*2+1],dl
|
|||
|
inc byte [message+3]
|
|||
|
pop ebx edx
|
|||
|
|
|||
|
.end_i:
|
|||
|
pop ebx
|
|||
|
inc ebx
|
|||
|
; inc [rem_kill]
|
|||
|
ret
|
|||
|
.end: pop ebx
|
|||
|
ret
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
_still:
|
|||
|
bt [flags],3
|
|||
|
jnc still
|
|||
|
|
|||
|
set_bots:
|
|||
|
cmp [number_bots],10
|
|||
|
jne @f
|
|||
|
ret
|
|||
|
@@: xor edx,edx
|
|||
|
mov ecx,10
|
|||
|
cmp [number_bots],6
|
|||
|
jb @f
|
|||
|
push dword 10
|
|||
|
jmp .1
|
|||
|
@@: cmp [number_bots],3
|
|||
|
jb @f
|
|||
|
push dword 9
|
|||
|
jmp .1
|
|||
|
@@: cmp [number_bots],2
|
|||
|
jb @f
|
|||
|
push dword 8
|
|||
|
jmp .1
|
|||
|
@@: push dword 7
|
|||
|
.1:
|
|||
|
mov eax,[esp]
|
|||
|
call random
|
|||
|
mov [oX],al
|
|||
|
mul cl
|
|||
|
mov cl,al
|
|||
|
mov eax,[esp]
|
|||
|
call random
|
|||
|
mov [oY],al
|
|||
|
add cl,al
|
|||
|
|
|||
|
cmp cl,100
|
|||
|
jge .1
|
|||
|
|
|||
|
add esp,4
|
|||
|
mov eax,2
|
|||
|
call random
|
|||
|
cmp al,1
|
|||
|
jne @f
|
|||
|
bts [flags],1
|
|||
|
mov al,cl
|
|||
|
jmp set_bot
|
|||
|
@@: btr [flags],1
|
|||
|
mov al,cl
|
|||
|
jmp set_bot
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
align 4
|
|||
|
rsx1 dw ?;0x4321
|
|||
|
rsx2 dw ?;0x1234
|
|||
|
random: ; <20><> ASCL
|
|||
|
push ecx edx esi
|
|||
|
mov cx,ax
|
|||
|
mov ax,[rsx1]
|
|||
|
mov bx,[rsx2]
|
|||
|
mov si,ax
|
|||
|
mov di,bx
|
|||
|
mov dl,ah
|
|||
|
mov ah,al
|
|||
|
mov al,bh
|
|||
|
mov bh,bl
|
|||
|
xor bl,bl
|
|||
|
rcr dl,1
|
|||
|
rcr ax,1
|
|||
|
rcr bx,1
|
|||
|
add bx,di
|
|||
|
adc ax,si
|
|||
|
add bx,0x62e9
|
|||
|
adc ax,0x3619
|
|||
|
mov [rsx1],bx
|
|||
|
mov [rsx2],ax
|
|||
|
xor dx,dx
|
|||
|
cmp ax,0
|
|||
|
je nodiv
|
|||
|
cmp cx,0
|
|||
|
je nodiv
|
|||
|
div cx
|
|||
|
nodiv:
|
|||
|
mov ax,dx
|
|||
|
pop esi edx ecx
|
|||
|
and eax,0000ffffh
|
|||
|
ret
|
|||
|
|
|||
|
|
|||
|
if DEBUG
|
|||
|
SysMsgBoardNum: ;warning: destroys eax,ebx,ecx,esi
|
|||
|
mov ebx,esp
|
|||
|
mov ecx,8
|
|||
|
mov esi,(number_to_out+1)
|
|||
|
.1:
|
|||
|
mov eax,ebx
|
|||
|
and eax,0xF
|
|||
|
cmp al,10
|
|||
|
sbb al,69h
|
|||
|
das
|
|||
|
mov [esi+ecx],al
|
|||
|
shr ebx,4
|
|||
|
loop .1
|
|||
|
dec esi
|
|||
|
mcall 71,1,number_to_out
|
|||
|
ret
|
|||
|
|
|||
|
number_to_out db '0x00000000',13,10,0
|
|||
|
endf
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
text_cpu db 'CPU',0
|
|||
|
text_user db 'USER',0
|
|||
|
but_lis_con db 'Listen Connect Disconnect',0
|
|||
|
if lang eq ru
|
|||
|
title db '<27><><EFBFBD><EFBFBD> <20><><EFBFBD> 0.4',0
|
|||
|
but_auto db '<27><><EFBFBD><EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD>',0
|
|||
|
but_new db '<27><><EFBFBD><EFBFBD><EFBFBD>',0
|
|||
|
text_win db '<27>먣ࠫ!',0
|
|||
|
else
|
|||
|
title db 'Sea war 0.4',0
|
|||
|
but_auto db 'Auto fill',0
|
|||
|
but_new db 'New',0
|
|||
|
text_win db 'Won!',0
|
|||
|
endf
|
|||
|
|
|||
|
who_first dw 0
|
|||
|
|
|||
|
message db 'XO1234567890'
|
|||
|
|
|||
|
I_END:
|
|||
|
; t1,t3,t5: 0-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><E7A5AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>窠, 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2-"<22><EFBFBD><E0AEAC>", 3-"<22><><EFBFBD><EFBFBD><EFBFBD>", 4-"<22><>⮯<EFBFBD><E2AEAF><EFBFBD>"
|
|||
|
; t2,t4: ⠡<><E2A0A1><EFBFBD><EFBFBD> <20><>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⮢, 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 4 <20><><EFBFBD>⪨, 2x3, 3x2, 4x1
|
|||
|
align 16
|
|||
|
table1 rb 100 ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, local
|
|||
|
table3 rb 20
|
|||
|
table2 rb 100 ;<3B>ࠢ<EFBFBD><E0A0A2>, remote
|
|||
|
table4 rb 20
|
|||
|
rb 100
|
|||
|
rem_kill rb 1 ;remote
|
|||
|
loc_kill rb 1 ;local
|
|||
|
p_pov rb 1
|
|||
|
smeshenie rb 1
|
|||
|
number_bots rb 1
|
|||
|
oX rb 1
|
|||
|
oY rb 1
|
|||
|
tbl_ranen rb 4
|
|||
|
|
|||
|
flags rw 1
|
|||
|
;flags2 rw 1
|
|||
|
;<3B><><EFBFBD> 0: 0/1 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⠡<><E2A0A1><EFBFBD> /<2F><><EFBFBD><EFBFBD>
|
|||
|
;1: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD>⨪<EFBFBD><E2A8AA><EFBFBD>) /<2F>ࠢ<EFBFBD><E0A0A2> (<28><>ਧ<EFBFBD><E0A8A7>⠫<EFBFBD>)
|
|||
|
;2: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> /<2F>ࠢ<EFBFBD><E0A0A2>
|
|||
|
;3: <20><>筮<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> /<2F><>⮧<EFBFBD><E2AEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;4: <20> .three - <20><>⮯<EFBFBD><E2AEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࠡ<EFBFBD><E0A0A1>
|
|||
|
;5: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>祭<EFBFBD>
|
|||
|
;11: ogidat' server
|
|||
|
;12: server gdet otveta
|
|||
|
;13; 1 - <20><><EFBFBD> 室, 0 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|